| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676 | (function () {var inlite = (function () {  'use strict';  var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');  var global$1 = tinymce.util.Tools.resolve('tinymce.Env');  var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');  var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');  var flatten = function (arr) {    return arr.reduce(function (results, item) {      return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item);    }, []);  };  var $_3r98o9174jh8lz7kx = { flatten: flatten };  var result = function (id, rect) {    return {      id: id,      rect: rect    };  };  var match = function (editor, matchers) {    for (var i = 0; i < matchers.length; i++) {      var f = matchers[i];      var result_1 = f(editor);      if (result_1) {        return result_1;      }    }    return null;  };  var $_fb7717176jh8lz7l0 = {    match: match,    result: result  };  var fromClientRect = function (clientRect) {    return {      x: clientRect.left,      y: clientRect.top,      w: clientRect.width,      h: clientRect.height    };  };  var toClientRect = function (geomRect) {    return {      left: geomRect.x,      top: geomRect.y,      width: geomRect.w,      height: geomRect.h,      right: geomRect.x + geomRect.w,      bottom: geomRect.y + geomRect.h    };  };  var $_1loe4y178jh8lz7l4 = {    fromClientRect: fromClientRect,    toClientRect: toClientRect  };  var toAbsolute = function (rect) {    var vp = global$2.DOM.getViewPort();    return {      x: rect.x + vp.x,      y: rect.y + vp.y,      w: rect.w,      h: rect.h    };  };  var measureElement = function (elm) {    var clientRect = elm.getBoundingClientRect();    return toAbsolute({      x: clientRect.left,      y: clientRect.top,      w: Math.max(elm.clientWidth, elm.offsetWidth),      h: Math.max(elm.clientHeight, elm.offsetHeight)    });  };  var getElementRect = function (editor, elm) {    return measureElement(elm);  };  var getPageAreaRect = function (editor) {    return measureElement(editor.getElement().ownerDocument.body);  };  var getContentAreaRect = function (editor) {    return measureElement(editor.getContentAreaContainer() || editor.getBody());  };  var getSelectionRect = function (editor) {    var clientRect = editor.selection.getBoundingClientRect();    return clientRect ? toAbsolute($_1loe4y178jh8lz7l4.fromClientRect(clientRect)) : null;  };  var $_82t0yo177jh8lz7l1 = {    getElementRect: getElementRect,    getPageAreaRect: getPageAreaRect,    getContentAreaRect: getContentAreaRect,    getSelectionRect: getSelectionRect  };  var element = function (element, predicateIds) {    return function (editor) {      for (var i = 0; i < predicateIds.length; i++) {        if (predicateIds[i].predicate(element)) {          var result = $_fb7717176jh8lz7l0.result(predicateIds[i].id, $_82t0yo177jh8lz7l1.getElementRect(editor, element));          return result;        }      }      return null;    };  };  var parent = function (elements, predicateIds) {    return function (editor) {      for (var i = 0; i < elements.length; i++) {        for (var x = 0; x < predicateIds.length; x++) {          if (predicateIds[x].predicate(elements[i])) {            return $_fb7717176jh8lz7l0.result(predicateIds[x].id, $_82t0yo177jh8lz7l1.getElementRect(editor, elements[i]));          }        }      }      return null;    };  };  var $_qzsc7175jh8lz7ky = {    element: element,    parent: parent  };  var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');  var create = function (id, predicate) {    return {      id: id,      predicate: predicate    };  };  var fromContextToolbars = function (toolbars) {    return global$4.map(toolbars, function (toolbar) {      return create(toolbar.id, toolbar.predicate);    });  };  var $_56g1zb179jh8lz7l5 = {    create: create,    fromContextToolbars: fromContextToolbars  };  var textSelection = function (id) {    return function (editor) {      if (!editor.selection.isCollapsed()) {        var result = $_fb7717176jh8lz7l0.result(id, $_82t0yo177jh8lz7l1.getSelectionRect(editor));        return result;      }      return null;    };  };  var emptyTextBlock = function (elements, id) {    return function (editor) {      var i;      var textBlockElementsMap = editor.schema.getTextBlockElements();      for (i = 0; i < elements.length; i++) {        if (elements[i].nodeName === 'TABLE') {          return null;        }      }      for (i = 0; i < elements.length; i++) {        if (elements[i].nodeName in textBlockElementsMap) {          if (editor.dom.isEmpty(elements[i])) {            return $_fb7717176jh8lz7l0.result(id, $_82t0yo177jh8lz7l1.getSelectionRect(editor));          }          return null;        }      }      return null;    };  };  var $_fqowya17bjh8lz7l6 = {    textSelection: textSelection,    emptyTextBlock: emptyTextBlock  };  var fireSkinLoaded = function (editor) {    editor.fire('SkinLoaded');  };  var fireBeforeRenderUI = function (editor) {    return editor.fire('BeforeRenderUI');  };  var $_dincot17djh8lz7l9 = {    fireSkinLoaded: fireSkinLoaded,    fireBeforeRenderUI: fireBeforeRenderUI  };  var global$5 = tinymce.util.Tools.resolve('tinymce.EditorManager');  var isType = function (type) {    return function (value) {      return typeof value === type;    };  };  var isArray = function (value) {    return Array.isArray(value);  };  var isNull = function (value) {    return value === null;  };  var isObject = function (predicate) {    return function (value) {      return !isNull(value) && !isArray(value) && predicate(value);    };  };  var isString = function (value) {    return isType('string')(value);  };  var isNumber = function (value) {    return isType('number')(value);  };  var isFunction = function (value) {    return isType('function')(value);  };  var isBoolean = function (value) {    return isType('boolean')(value);  };  var $_795vzu17hjh8lz7lf = {    isString: isString,    isNumber: isNumber,    isBoolean: isBoolean,    isFunction: isFunction,    isObject: isObject(isType('object')),    isNull: isNull,    isArray: isArray  };  var validDefaultOrDie = function (value, predicate) {    if (predicate(value)) {      return true;    }    throw new Error('Default value doesn\'t match requested type.');  };  var getByTypeOr = function (predicate) {    return function (editor, name, defaultValue) {      var settings = editor.settings;      validDefaultOrDie(defaultValue, predicate);      return name in settings && predicate(settings[name]) ? settings[name] : defaultValue;    };  };  var splitNoEmpty = function (str, delim) {    return str.split(delim).filter(function (item) {      return item.length > 0;    });  };  var itemsToArray = function (value, defaultValue) {    var stringToItemsArray = function (value) {      return typeof value === 'string' ? splitNoEmpty(value, /[ ,]/) : value;    };    var boolToItemsArray = function (value, defaultValue) {      return value === false ? [] : defaultValue;    };    if ($_795vzu17hjh8lz7lf.isArray(value)) {      return value;    } else if ($_795vzu17hjh8lz7lf.isString(value)) {      return stringToItemsArray(value);    } else if ($_795vzu17hjh8lz7lf.isBoolean(value)) {      return boolToItemsArray(value, defaultValue);    }    return defaultValue;  };  var getToolbarItemsOr = function (predicate) {    return function (editor, name, defaultValue) {      var value = name in editor.settings ? editor.settings[name] : defaultValue;      validDefaultOrDie(defaultValue, predicate);      return itemsToArray(value, defaultValue);    };  };  var $_4mwpdv17gjh8lz7ld = {    getStringOr: getByTypeOr($_795vzu17hjh8lz7lf.isString),    getBoolOr: getByTypeOr($_795vzu17hjh8lz7lf.isBoolean),    getNumberOr: getByTypeOr($_795vzu17hjh8lz7lf.isNumber),    getHandlerOr: getByTypeOr($_795vzu17hjh8lz7lf.isFunction),    getToolbarItemsOr: getToolbarItemsOr($_795vzu17hjh8lz7lf.isArray)  };  var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');  var result$1 = function (rect, position) {    return {      rect: rect,      position: position    };  };  var moveTo = function (rect, toRect) {    return {      x: toRect.x,      y: toRect.y,      w: rect.w,      h: rect.h    };  };  var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) {    var relPos, relRect, outputPanelRect;    var paddedContentRect = {      x: contentAreaRect.x,      y: contentAreaRect.y,      w: contentAreaRect.w + (contentAreaRect.w < panelRect.w + targetRect.w ? panelRect.w : 0),      h: contentAreaRect.h + (contentAreaRect.h < panelRect.h + targetRect.h ? panelRect.h : 0)    };    relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions1);    targetRect = global$6.clamp(targetRect, paddedContentRect);    if (relPos) {      relRect = global$6.relativePosition(panelRect, targetRect, relPos);      outputPanelRect = moveTo(panelRect, relRect);      return result$1(outputPanelRect, relPos);    }    targetRect = global$6.intersect(paddedContentRect, targetRect);    if (targetRect) {      relPos = global$6.findBestRelativePosition(panelRect, targetRect, paddedContentRect, testPositions2);      if (relPos) {        relRect = global$6.relativePosition(panelRect, targetRect, relPos);        outputPanelRect = moveTo(panelRect, relRect);        return result$1(outputPanelRect, relPos);      }      outputPanelRect = moveTo(panelRect, targetRect);      return result$1(outputPanelRect, relPos);    }    return null;  };  var calcInsert = function (targetRect, contentAreaRect, panelRect) {    return calcByPositions([      'cr-cl',      'cl-cr'    ], [      'bc-tc',      'bl-tl',      'br-tr'    ], targetRect, contentAreaRect, panelRect);  };  var calc = function (targetRect, contentAreaRect, panelRect) {    return calcByPositions([      'tc-bc',      'bc-tc',      'tl-bl',      'bl-tl',      'tr-br',      'br-tr',      'cr-cl',      'cl-cr'    ], [      'bc-tc',      'bl-tl',      'br-tr',      'cr-cl'    ], targetRect, contentAreaRect, panelRect);  };  var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) {    var userConstrainedPanelRect;    if (typeof handler === 'function') {      userConstrainedPanelRect = handler({        elementRect: $_1loe4y178jh8lz7l4.toClientRect(targetRect),        contentAreaRect: $_1loe4y178jh8lz7l4.toClientRect(contentAreaRect),        panelRect: $_1loe4y178jh8lz7l4.toClientRect(panelRect)      });      return $_1loe4y178jh8lz7l4.fromClientRect(userConstrainedPanelRect);    }    return panelRect;  };  var defaultHandler = function (rects) {    return rects.panelRect;  };  var $_7c1jsb17ijh8lz7lh = {    calcInsert: calcInsert,    calc: calc,    userConstrain: userConstrain,    defaultHandler: defaultHandler  };  var toAbsoluteUrl = function (editor, url) {    return editor.documentBaseURI.toAbsolute(url);  };  var urlFromName = function (name) {    var prefix = global$5.baseURL + '/skins/';    return name ? prefix + name : prefix + 'lightgray';  };  var getTextSelectionToolbarItems = function (editor) {    return $_4mwpdv17gjh8lz7ld.getToolbarItemsOr(editor, 'selection_toolbar', [      'bold',      'italic',      '|',      'quicklink',      'h2',      'h3',      'blockquote'    ]);  };  var getInsertToolbarItems = function (editor) {    return $_4mwpdv17gjh8lz7ld.getToolbarItemsOr(editor, 'insert_toolbar', [      'quickimage',      'quicktable'    ]);  };  var getPositionHandler = function (editor) {    return $_4mwpdv17gjh8lz7ld.getHandlerOr(editor, 'inline_toolbar_position_handler', $_7c1jsb17ijh8lz7lh.defaultHandler);  };  var getSkinUrl = function (editor) {    var settings = editor.settings;    return settings.skin_url ? toAbsoluteUrl(editor, settings.skin_url) : urlFromName(settings.skin);  };  var isSkinDisabled = function (editor) {    return editor.settings.skin === false;  };  var $_frnzmx17ejh8lz7lb = {    getTextSelectionToolbarItems: getTextSelectionToolbarItems,    getInsertToolbarItems: getInsertToolbarItems,    getPositionHandler: getPositionHandler,    getSkinUrl: getSkinUrl,    isSkinDisabled: isSkinDisabled  };  var fireSkinLoaded$1 = function (editor, callback) {    var done = function () {      editor._skinLoaded = true;      $_dincot17djh8lz7l9.fireSkinLoaded(editor);      callback();    };    if (editor.initialized) {      done();    } else {      editor.on('init', done);    }  };  var load = function (editor, callback) {    var skinUrl = $_frnzmx17ejh8lz7lb.getSkinUrl(editor);    var done = function () {      fireSkinLoaded$1(editor, callback);    };    if ($_frnzmx17ejh8lz7lb.isSkinDisabled(editor)) {      done();    } else {      global$2.DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done);      editor.contentCSS.push(skinUrl + '/content.inline.min.css');    }  };  var $_a37m1717cjh8lz7l8 = { load: load };  var getSelectionElements = function (editor) {    var node = editor.selection.getNode();    var elms = editor.dom.getParents(node, '*');    return elms;  };  var createToolbar = function (editor, selector, id, items) {    var selectorPredicate = function (elm) {      return editor.dom.is(elm, selector);    };    return {      predicate: selectorPredicate,      id: id,      items: items    };  };  var getToolbars = function (editor) {    var contextToolbars = editor.contextToolbars;    return $_3r98o9174jh8lz7kx.flatten([      contextToolbars ? contextToolbars : [],      createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright')    ]);  };  var findMatchResult = function (editor, toolbars) {    var result, elements, contextToolbarsPredicateIds;    elements = getSelectionElements(editor);    contextToolbarsPredicateIds = $_56g1zb179jh8lz7l5.fromContextToolbars(toolbars);    result = $_fb7717176jh8lz7l0.match(editor, [      $_qzsc7175jh8lz7ky.element(elements[0], contextToolbarsPredicateIds),      $_fqowya17bjh8lz7l6.textSelection('text'),      $_fqowya17bjh8lz7l6.emptyTextBlock(elements, 'insert'),      $_qzsc7175jh8lz7ky.parent(elements, contextToolbarsPredicateIds)    ]);    return result && result.rect ? result : null;  };  var editorHasFocus = function (editor) {    return document.activeElement === editor.getBody();  };  var togglePanel = function (editor, panel) {    var toggle = function () {      var toolbars = getToolbars(editor);      var result = findMatchResult(editor, toolbars);      if (result) {        panel.show(editor, result.id, result.rect, toolbars);      } else {        panel.hide();      }    };    return function () {      if (!editor.removed && editorHasFocus(editor)) {        toggle();      }    };  };  var repositionPanel = function (editor, panel) {    return function () {      var toolbars = getToolbars(editor);      var result = findMatchResult(editor, toolbars);      if (result) {        panel.reposition(editor, result.id, result.rect);      }    };  };  var ignoreWhenFormIsVisible = function (editor, panel, f) {    return function () {      if (!editor.removed && !panel.inForm()) {        f();      }    };  };  var bindContextualToolbarsEvents = function (editor, panel) {    var throttledTogglePanel = global$3.throttle(togglePanel(editor, panel), 0);    var throttledTogglePanelWhenNotInForm = global$3.throttle(ignoreWhenFormIsVisible(editor, panel, togglePanel(editor, panel)), 0);    var reposition = repositionPanel(editor, panel);    editor.on('blur hide ObjectResizeStart', panel.hide);    editor.on('click', throttledTogglePanel);    editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm);    editor.on('ResizeEditor keyup', throttledTogglePanel);    editor.on('ResizeWindow', reposition);    global$2.DOM.bind(global$1.container, 'scroll', reposition);    editor.on('remove', function () {      global$2.DOM.unbind(global$1.container, 'scroll', reposition);      panel.remove();    });    editor.shortcuts.add('Alt+F10,F10', '', panel.focus);  };  var overrideLinkShortcut = function (editor, panel) {    editor.shortcuts.remove('meta+k');    editor.shortcuts.add('meta+k', '', function () {      var toolbars = getToolbars(editor);      var result = $_fb7717176jh8lz7l0.match(editor, [$_fqowya17bjh8lz7l6.textSelection('quicklink')]);      if (result) {        panel.show(editor, result.id, result.rect, toolbars);      }    });  };  var renderInlineUI = function (editor, panel) {    $_a37m1717cjh8lz7l8.load(editor, function () {      bindContextualToolbarsEvents(editor, panel);      overrideLinkShortcut(editor, panel);    });    return {};  };  var fail = function (message) {    throw new Error(message);  };  var renderUI = function (editor, panel) {    return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.');  };  var $_fduguf170jh8lz7ks = { renderUI: renderUI };  var noop = function () {    var x = [];    for (var _i = 0; _i < arguments.length; _i++) {      x[_i] = arguments[_i];    }  };  var noarg = function (f) {    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      return f();    };  };  var compose = function (fa, fb) {    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      return fa(fb.apply(null, arguments));    };  };  var constant = function (value) {    return function () {      return value;    };  };  var identity = function (x) {    return x;  };  var tripleEquals = function (a, b) {    return a === b;  };  var curry = function (f) {    var x = [];    for (var _i = 1; _i < arguments.length; _i++) {      x[_i - 1] = arguments[_i];    }    var args = new Array(arguments.length - 1);    for (var i = 1; i < arguments.length; i++)      args[i - 1] = arguments[i];    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      var newArgs = new Array(arguments.length);      for (var j = 0; j < newArgs.length; j++)        newArgs[j] = arguments[j];      var all = args.concat(newArgs);      return f.apply(null, all);    };  };  var not = function (f) {    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      return !f.apply(null, arguments);    };  };  var die = function (msg) {    return function () {      throw new Error(msg);    };  };  var apply = function (f) {    return f();  };  var call = function (f) {    f();  };  var never = constant(false);  var always = constant(true);  var $_2jrs7h17njh8lz7m6 = {    noop: noop,    noarg: noarg,    compose: compose,    constant: constant,    identity: identity,    tripleEquals: tripleEquals,    curry: curry,    not: not,    die: die,    apply: apply,    call: call,    never: never,    always: always  };  var never$1 = $_2jrs7h17njh8lz7m6.never;  var always$1 = $_2jrs7h17njh8lz7m6.always;  var none = function () {    return NONE;  };  var NONE = function () {    var eq = function (o) {      return o.isNone();    };    var call = function (thunk) {      return thunk();    };    var id = function (n) {      return n;    };    var noop = function () {    };    var me = {      fold: function (n, s) {        return n();      },      is: never$1,      isSome: never$1,      isNone: always$1,      getOr: id,      getOrThunk: call,      getOrDie: function (msg) {        throw new Error(msg || 'error: getOrDie called on none.');      },      or: id,      orThunk: call,      map: none,      ap: none,      each: noop,      bind: none,      flatten: none,      exists: never$1,      forall: always$1,      filter: none,      equals: eq,      equals_: eq,      toArray: function () {        return [];      },      toString: $_2jrs7h17njh8lz7m6.constant('none()')    };    if (Object.freeze)      Object.freeze(me);    return me;  }();  var some = function (a) {    var constant_a = function () {      return a;    };    var self = function () {      return me;    };    var map = function (f) {      return some(f(a));    };    var bind = function (f) {      return f(a);    };    var me = {      fold: function (n, s) {        return s(a);      },      is: function (v) {        return a === v;      },      isSome: always$1,      isNone: never$1,      getOr: constant_a,      getOrThunk: constant_a,      getOrDie: constant_a,      or: self,      orThunk: self,      map: map,      ap: function (optfab) {        return optfab.fold(none, function (fab) {          return some(fab(a));        });      },      each: function (f) {        f(a);      },      bind: bind,      flatten: constant_a,      exists: bind,      forall: bind,      filter: function (f) {        return f(a) ? me : NONE;      },      equals: function (o) {        return o.is(a);      },      equals_: function (o, elementEq) {        return o.fold(never$1, function (b) {          return elementEq(a, b);        });      },      toArray: function () {        return [a];      },      toString: function () {        return 'some(' + a + ')';      }    };    return me;  };  var from = function (value) {    return value === null || value === undefined ? NONE : some(value);  };  var Option = {    some: some,    none: none,    from: from  };  var typeOf = function (x) {    if (x === null)      return 'null';    var t = typeof x;    if (t === 'object' && Array.prototype.isPrototypeOf(x))      return 'array';    if (t === 'object' && String.prototype.isPrototypeOf(x))      return 'string';    return t;  };  var isType$1 = function (type) {    return function (value) {      return typeOf(value) === type;    };  };  var $_55hqur17ojh8lz7m9 = {    isString: isType$1('string'),    isObject: isType$1('object'),    isArray: isType$1('array'),    isNull: isType$1('null'),    isBoolean: isType$1('boolean'),    isUndefined: isType$1('undefined'),    isFunction: isType$1('function'),    isNumber: isType$1('number')  };  var rawIndexOf = function () {    var pIndexOf = Array.prototype.indexOf;    var fastIndex = function (xs, x) {      return pIndexOf.call(xs, x);    };    var slowIndex = function (xs, x) {      return slowIndexOf(xs, x);    };    return pIndexOf === undefined ? slowIndex : fastIndex;  }();  var indexOf = function (xs, x) {    var r = rawIndexOf(xs, x);    return r === -1 ? Option.none() : Option.some(r);  };  var contains = function (xs, x) {    return rawIndexOf(xs, x) > -1;  };  var exists = function (xs, pred) {    return findIndex(xs, pred).isSome();  };  var range = function (num, f) {    var r = [];    for (var i = 0; i < num; i++) {      r.push(f(i));    }    return r;  };  var chunk = function (array, size) {    var r = [];    for (var i = 0; i < array.length; i += size) {      var s = array.slice(i, i + size);      r.push(s);    }    return r;  };  var map = function (xs, f) {    var len = xs.length;    var r = new Array(len);    for (var i = 0; i < len; i++) {      var x = xs[i];      r[i] = f(x, i, xs);    }    return r;  };  var each = function (xs, f) {    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      f(x, i, xs);    }  };  var eachr = function (xs, f) {    for (var i = xs.length - 1; i >= 0; i--) {      var x = xs[i];      f(x, i, xs);    }  };  var partition = function (xs, pred) {    var pass = [];    var fail = [];    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      var arr = pred(x, i, xs) ? pass : fail;      arr.push(x);    }    return {      pass: pass,      fail: fail    };  };  var filter = function (xs, pred) {    var r = [];    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      if (pred(x, i, xs)) {        r.push(x);      }    }    return r;  };  var groupBy = function (xs, f) {    if (xs.length === 0) {      return [];    } else {      var wasType = f(xs[0]);      var r = [];      var group = [];      for (var i = 0, len = xs.length; i < len; i++) {        var x = xs[i];        var type = f(x);        if (type !== wasType) {          r.push(group);          group = [];        }        wasType = type;        group.push(x);      }      if (group.length !== 0) {        r.push(group);      }      return r;    }  };  var foldr = function (xs, f, acc) {    eachr(xs, function (x) {      acc = f(acc, x);    });    return acc;  };  var foldl = function (xs, f, acc) {    each(xs, function (x) {      acc = f(acc, x);    });    return acc;  };  var find = function (xs, pred) {    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      if (pred(x, i, xs)) {        return Option.some(x);      }    }    return Option.none();  };  var findIndex = function (xs, pred) {    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      if (pred(x, i, xs)) {        return Option.some(i);      }    }    return Option.none();  };  var slowIndexOf = function (xs, x) {    for (var i = 0, len = xs.length; i < len; ++i) {      if (xs[i] === x) {        return i;      }    }    return -1;  };  var push = Array.prototype.push;  var flatten$1 = function (xs) {    var r = [];    for (var i = 0, len = xs.length; i < len; ++i) {      if (!Array.prototype.isPrototypeOf(xs[i]))        throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);      push.apply(r, xs[i]);    }    return r;  };  var bind = function (xs, f) {    var output = map(xs, f);    return flatten$1(output);  };  var forall = function (xs, pred) {    for (var i = 0, len = xs.length; i < len; ++i) {      var x = xs[i];      if (pred(x, i, xs) !== true) {        return false;      }    }    return true;  };  var equal = function (a1, a2) {    return a1.length === a2.length && forall(a1, function (x, i) {      return x === a2[i];    });  };  var slice = Array.prototype.slice;  var reverse = function (xs) {    var r = slice.call(xs, 0);    r.reverse();    return r;  };  var difference = function (a1, a2) {    return filter(a1, function (x) {      return !contains(a2, x);    });  };  var mapToObject = function (xs, f) {    var r = {};    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      r[String(x)] = f(x, i);    }    return r;  };  var pure = function (x) {    return [x];  };  var sort = function (xs, comparator) {    var copy = slice.call(xs, 0);    copy.sort(comparator);    return copy;  };  var head = function (xs) {    return xs.length === 0 ? Option.none() : Option.some(xs[0]);  };  var last = function (xs) {    return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);  };  var from$1 = $_55hqur17ojh8lz7m9.isFunction(Array.from) ? Array.from : function (x) {    return slice.call(x);  };  var $_qgcal17ljh8lz7ly = {    map: map,    each: each,    eachr: eachr,    partition: partition,    filter: filter,    groupBy: groupBy,    indexOf: indexOf,    foldr: foldr,    foldl: foldl,    find: find,    findIndex: findIndex,    flatten: flatten$1,    bind: bind,    forall: forall,    exists: exists,    contains: contains,    equal: equal,    reverse: reverse,    chunk: chunk,    difference: difference,    mapToObject: mapToObject,    pure: pure,    sort: sort,    range: range,    head: head,    last: last,    from: from$1  };  var count = 0;  var funcs = {    id: function () {      return 'mceu_' + count++;    },    create: function (name, attrs, children) {      var elm = document.createElement(name);      global$2.DOM.setAttribs(elm, attrs);      if (typeof children === 'string') {        elm.innerHTML = children;      } else {        global$4.each(children, function (child) {          if (child.nodeType) {            elm.appendChild(child);          }        });      }      return elm;    },    createFragment: function (html) {      return global$2.DOM.createFragment(html);    },    getWindowSize: function () {      return global$2.DOM.getViewPort();    },    getSize: function (elm) {      var width, height;      if (elm.getBoundingClientRect) {        var rect = elm.getBoundingClientRect();        width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);        height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);      } else {        width = elm.offsetWidth;        height = elm.offsetHeight;      }      return {        width: width,        height: height      };    },    getPos: function (elm, root) {      return global$2.DOM.getPos(elm, root || funcs.getContainer());    },    getContainer: function () {      return global$1.container ? global$1.container : document.body;    },    getViewPort: function (win) {      return global$2.DOM.getViewPort(win);    },    get: function (id) {      return document.getElementById(id);    },    addClass: function (elm, cls) {      return global$2.DOM.addClass(elm, cls);    },    removeClass: function (elm, cls) {      return global$2.DOM.removeClass(elm, cls);    },    hasClass: function (elm, cls) {      return global$2.DOM.hasClass(elm, cls);    },    toggleClass: function (elm, cls, state) {      return global$2.DOM.toggleClass(elm, cls, state);    },    css: function (elm, name, value) {      return global$2.DOM.setStyle(elm, name, value);    },    getRuntimeStyle: function (elm, name) {      return global$2.DOM.getStyle(elm, name, true);    },    on: function (target, name, callback, scope) {      return global$2.DOM.bind(target, name, callback, scope);    },    off: function (target, name, callback) {      return global$2.DOM.unbind(target, name, callback);    },    fire: function (target, name, args) {      return global$2.DOM.fire(target, name, args);    },    innerHtml: function (elm, html) {      global$2.DOM.setHTML(elm, html);    }  };  var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');  var global$8 = tinymce.util.Tools.resolve('tinymce.util.Class');  var global$9 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');  var $_889epm17vjh8lz7n9 = {    parseBox: function (value) {      var len;      var radix = 10;      if (!value) {        return;      }      if (typeof value === 'number') {        value = value || 0;        return {          top: value,          left: value,          bottom: value,          right: value        };      }      value = value.split(' ');      len = value.length;      if (len === 1) {        value[1] = value[2] = value[3] = value[0];      } else if (len === 2) {        value[2] = value[0];        value[3] = value[1];      } else if (len === 3) {        value[3] = value[1];      }      return {        top: parseInt(value[0], radix) || 0,        right: parseInt(value[1], radix) || 0,        bottom: parseInt(value[2], radix) || 0,        left: parseInt(value[3], radix) || 0      };    },    measureBox: function (elm, prefix) {      function getStyle(name) {        var defaultView = elm.ownerDocument.defaultView;        if (defaultView) {          var computedStyle = defaultView.getComputedStyle(elm, null);          if (computedStyle) {            name = name.replace(/[A-Z]/g, function (a) {              return '-' + a;            });            return computedStyle.getPropertyValue(name);          } else {            return null;          }        }        return elm.currentStyle[name];      }      function getSide(name) {        var val = parseFloat(getStyle(name));        return isNaN(val) ? 0 : val;      }      return {        top: getSide(prefix + 'TopWidth'),        right: getSide(prefix + 'RightWidth'),        bottom: getSide(prefix + 'BottomWidth'),        left: getSide(prefix + 'LeftWidth')      };    }  };  function noop$1() {  }  function ClassList(onchange) {    this.cls = [];    this.cls._map = {};    this.onchange = onchange || noop$1;    this.prefix = '';  }  global$4.extend(ClassList.prototype, {    add: function (cls) {      if (cls && !this.contains(cls)) {        this.cls._map[cls] = true;        this.cls.push(cls);        this._change();      }      return this;    },    remove: function (cls) {      if (this.contains(cls)) {        var i = void 0;        for (i = 0; i < this.cls.length; i++) {          if (this.cls[i] === cls) {            break;          }        }        this.cls.splice(i, 1);        delete this.cls._map[cls];        this._change();      }      return this;    },    toggle: function (cls, state) {      var curState = this.contains(cls);      if (curState !== state) {        if (curState) {          this.remove(cls);        } else {          this.add(cls);        }        this._change();      }      return this;    },    contains: function (cls) {      return !!this.cls._map[cls];    },    _change: function () {      delete this.clsValue;      this.onchange.call(this);    }  });  ClassList.prototype.toString = function () {    var value;    if (this.clsValue) {      return this.clsValue;    }    value = '';    for (var i = 0; i < this.cls.length; i++) {      if (i > 0) {        value += ' ';      }      value += this.prefix + this.cls[i];    }    return value;  };  function unique(array) {    var uniqueItems = [];    var i = array.length, item;    while (i--) {      item = array[i];      if (!item.__checked) {        uniqueItems.push(item);        item.__checked = 1;      }    }    i = uniqueItems.length;    while (i--) {      delete uniqueItems[i].__checked;    }    return uniqueItems;  }  var expression = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;  var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;  var whiteSpace = /^\s*|\s*$/g;  var Collection;  var Selector = global$8.extend({    init: function (selector) {      var match = this.match;      function compileNameFilter(name) {        if (name) {          name = name.toLowerCase();          return function (item) {            return name === '*' || item.type === name;          };        }      }      function compileIdFilter(id) {        if (id) {          return function (item) {            return item._name === id;          };        }      }      function compileClassesFilter(classes) {        if (classes) {          classes = classes.split('.');          return function (item) {            var i = classes.length;            while (i--) {              if (!item.classes.contains(classes[i])) {                return false;              }            }            return true;          };        }      }      function compileAttrFilter(name, cmp, check) {        if (name) {          return function (item) {            var value = item[name] ? item[name]() : '';            return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;          };        }      }      function compilePsuedoFilter(name) {        var notSelectors;        if (name) {          name = /(?:not\((.+)\))|(.+)/i.exec(name);          if (!name[1]) {            name = name[2];            return function (item, index, length) {              return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;            };          }          notSelectors = parseChunks(name[1], []);          return function (item) {            return !match(item, notSelectors);          };        }      }      function compile(selector, filters, direct) {        var parts;        function add(filter) {          if (filter) {            filters.push(filter);          }        }        parts = expression.exec(selector.replace(whiteSpace, ''));        add(compileNameFilter(parts[1]));        add(compileIdFilter(parts[2]));        add(compileClassesFilter(parts[3]));        add(compileAttrFilter(parts[4], parts[5], parts[6]));        add(compilePsuedoFilter(parts[7]));        filters.pseudo = !!parts[7];        filters.direct = direct;        return filters;      }      function parseChunks(selector, selectors) {        var parts = [];        var extra, matches, i;        do {          chunker.exec('');          matches = chunker.exec(selector);          if (matches) {            selector = matches[3];            parts.push(matches[1]);            if (matches[2]) {              extra = matches[3];              break;            }          }        } while (matches);        if (extra) {          parseChunks(extra, selectors);        }        selector = [];        for (i = 0; i < parts.length; i++) {          if (parts[i] !== '>') {            selector.push(compile(parts[i], [], parts[i - 1] === '>'));          }        }        selectors.push(selector);        return selectors;      }      this._selectors = parseChunks(selector, []);    },    match: function (control, selectors) {      var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;      selectors = selectors || this._selectors;      for (i = 0, l = selectors.length; i < l; i++) {        selector = selectors[i];        sl = selector.length;        item = control;        count = 0;        for (si = sl - 1; si >= 0; si--) {          filters = selector[si];          while (item) {            if (filters.pseudo) {              siblings = item.parent().items();              index = length = siblings.length;              while (index--) {                if (siblings[index] === item) {                  break;                }              }            }            for (fi = 0, fl = filters.length; fi < fl; fi++) {              if (!filters[fi](item, index, length)) {                fi = fl + 1;                break;              }            }            if (fi === fl) {              count++;              break;            } else {              if (si === sl - 1) {                break;              }            }            item = item.parent();          }        }        if (count === sl) {          return true;        }      }      return false;    },    find: function (container) {      var matches = [], i, l;      var selectors = this._selectors;      function collect(items, selector, index) {        var i, l, fi, fl, item;        var filters = selector[index];        for (i = 0, l = items.length; i < l; i++) {          item = items[i];          for (fi = 0, fl = filters.length; fi < fl; fi++) {            if (!filters[fi](item, i, l)) {              fi = fl + 1;              break;            }          }          if (fi === fl) {            if (index === selector.length - 1) {              matches.push(item);            } else {              if (item.items) {                collect(item.items(), selector, index + 1);              }            }          } else if (filters.direct) {            return;          }          if (item.items) {            collect(item.items(), selector, index);          }        }      }      if (container.items) {        for (i = 0, l = selectors.length; i < l; i++) {          collect(container.items(), selectors[i], 0);        }        if (l > 1) {          matches = unique(matches);        }      }      if (!Collection) {        Collection = Selector.Collection;      }      return new Collection(matches);    }  });  var Collection$1;  var proto;  var push$1 = Array.prototype.push;  var slice$1 = Array.prototype.slice;  proto = {    length: 0,    init: function (items) {      if (items) {        this.add(items);      }    },    add: function (items) {      var self = this;      if (!global$4.isArray(items)) {        if (items instanceof Collection$1) {          self.add(items.toArray());        } else {          push$1.call(self, items);        }      } else {        push$1.apply(self, items);      }      return self;    },    set: function (items) {      var self = this;      var len = self.length;      var i;      self.length = 0;      self.add(items);      for (i = self.length; i < len; i++) {        delete self[i];      }      return self;    },    filter: function (selector) {      var self = this;      var i, l;      var matches = [];      var item, match;      if (typeof selector === 'string') {        selector = new Selector(selector);        match = function (item) {          return selector.match(item);        };      } else {        match = selector;      }      for (i = 0, l = self.length; i < l; i++) {        item = self[i];        if (match(item)) {          matches.push(item);        }      }      return new Collection$1(matches);    },    slice: function () {      return new Collection$1(slice$1.apply(this, arguments));    },    eq: function (index) {      return index === -1 ? this.slice(index) : this.slice(index, +index + 1);    },    each: function (callback) {      global$4.each(this, callback);      return this;    },    toArray: function () {      return global$4.toArray(this);    },    indexOf: function (ctrl) {      var self = this;      var i = self.length;      while (i--) {        if (self[i] === ctrl) {          break;        }      }      return i;    },    reverse: function () {      return new Collection$1(global$4.toArray(this).reverse());    },    hasClass: function (cls) {      return this[0] ? this[0].classes.contains(cls) : false;    },    prop: function (name, value) {      var self = this;      var item;      if (value !== undefined) {        self.each(function (item) {          if (item[name]) {            item[name](value);          }        });        return self;      }      item = self[0];      if (item && item[name]) {        return item[name]();      }    },    exec: function (name) {      var self = this, args = global$4.toArray(arguments).slice(1);      self.each(function (item) {        if (item[name]) {          item[name].apply(item, args);        }      });      return self;    },    remove: function () {      var i = this.length;      while (i--) {        this[i].remove();      }      return this;    },    addClass: function (cls) {      return this.each(function (item) {        item.classes.add(cls);      });    },    removeClass: function (cls) {      return this.each(function (item) {        item.classes.remove(cls);      });    }  };  global$4.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {    proto[name] = function () {      var args = global$4.toArray(arguments);      this.each(function (ctrl) {        if (name in ctrl) {          ctrl[name].apply(ctrl, args);        }      });      return this;    };  });  global$4.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {    proto[name] = function (value) {      return this.prop(name, value);    };  });  Collection$1 = global$8.extend(proto);  Selector.Collection = Collection$1;  var Collection$2 = Collection$1;  var Binding = function (settings) {    this.create = settings.create;  };  Binding.create = function (model, name) {    return new Binding({      create: function (otherModel, otherName) {        var bindings;        var fromSelfToOther = function (e) {          otherModel.set(otherName, e.value);        };        var fromOtherToSelf = function (e) {          model.set(name, e.value);        };        otherModel.on('change:' + otherName, fromOtherToSelf);        model.on('change:' + name, fromSelfToOther);        bindings = otherModel._bindings;        if (!bindings) {          bindings = otherModel._bindings = [];          otherModel.on('destroy', function () {            var i = bindings.length;            while (i--) {              bindings[i]();            }          });        }        bindings.push(function () {          model.off('change:' + name, fromSelfToOther);        });        return model.get(name);      }    });  };  var global$10 = tinymce.util.Tools.resolve('tinymce.util.Observable');  function isNode(node) {    return node.nodeType > 0;  }  function isEqual(a, b) {    var k, checked;    if (a === b) {      return true;    }    if (a === null || b === null) {      return a === b;    }    if (typeof a !== 'object' || typeof b !== 'object') {      return a === b;    }    if (global$4.isArray(b)) {      if (a.length !== b.length) {        return false;      }      k = a.length;      while (k--) {        if (!isEqual(a[k], b[k])) {          return false;        }      }    }    if (isNode(a) || isNode(b)) {      return a === b;    }    checked = {};    for (k in b) {      if (!isEqual(a[k], b[k])) {        return false;      }      checked[k] = true;    }    for (k in a) {      if (!checked[k] && !isEqual(a[k], b[k])) {        return false;      }    }    return true;  }  var ObservableObject = global$8.extend({    Mixins: [global$10],    init: function (data) {      var name, value;      data = data || {};      for (name in data) {        value = data[name];        if (value instanceof Binding) {          data[name] = value.create(this, name);        }      }      this.data = data;    },    set: function (name, value) {      var key, args;      var oldValue = this.data[name];      if (value instanceof Binding) {        value = value.create(this, name);      }      if (typeof name === 'object') {        for (key in name) {          this.set(key, name[key]);        }        return this;      }      if (!isEqual(oldValue, value)) {        this.data[name] = value;        args = {          target: this,          name: name,          value: value,          oldValue: oldValue        };        this.fire('change:' + name, args);        this.fire('change', args);      }      return this;    },    get: function (name) {      return this.data[name];    },    has: function (name) {      return name in this.data;    },    bind: function (name) {      return Binding.create(this, name);    },    destroy: function () {      this.fire('destroy');    }  });  var dirtyCtrls = {};  var animationFrameRequested;  var $_dipgfl182jh8lz7nt = {    add: function (ctrl) {      var parent = ctrl.parent();      if (parent) {        if (!parent._layout || parent._layout.isNative()) {          return;        }        if (!dirtyCtrls[parent._id]) {          dirtyCtrls[parent._id] = parent;        }        if (!animationFrameRequested) {          animationFrameRequested = true;          global$3.requestAnimationFrame(function () {            var id, ctrl;            animationFrameRequested = false;            for (id in dirtyCtrls) {              ctrl = dirtyCtrls[id];              if (ctrl.state.get('rendered')) {                ctrl.reflow();              }            }            dirtyCtrls = {};          }, document.body);        }      }    },    remove: function (ctrl) {      if (dirtyCtrls[ctrl._id]) {        delete dirtyCtrls[ctrl._id];      }    }  };  var getUiContainerDelta = function (ctrl) {    var uiContainer = getUiContainer(ctrl);    if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') {      var containerPos = global$2.DOM.getPos(uiContainer);      var dx = uiContainer.scrollLeft - containerPos.x;      var dy = uiContainer.scrollTop - containerPos.y;      return Option.some({        x: dx,        y: dy      });    } else {      return Option.none();    }  };  var setUiContainer = function (editor, ctrl) {    var uiContainer = global$2.DOM.select(editor.settings.ui_container)[0];    ctrl.getRoot().uiContainer = uiContainer;  };  var getUiContainer = function (ctrl) {    return ctrl ? ctrl.getRoot().uiContainer : null;  };  var inheritUiContainer = function (fromCtrl, toCtrl) {    return toCtrl.uiContainer = getUiContainer(fromCtrl);  };  var $_exab1j183jh8lz7nu = {    getUiContainerDelta: getUiContainerDelta,    setUiContainer: setUiContainer,    getUiContainer: getUiContainer,    inheritUiContainer: inheritUiContainer  };  var hasMouseWheelEventSupport = 'onmousewheel' in document;  var hasWheelEventSupport = false;  var classPrefix = 'mce-';  var Control;  var idCounter = 0;  var proto$1 = {    Statics: { classPrefix: classPrefix },    isRtl: function () {      return Control.rtl;    },    classPrefix: classPrefix,    init: function (settings) {      var self = this;      var classes, defaultClasses;      function applyClasses(classes) {        var i;        classes = classes.split(' ');        for (i = 0; i < classes.length; i++) {          self.classes.add(classes[i]);        }      }      self.settings = settings = global$4.extend({}, self.Defaults, settings);      self._id = settings.id || 'mceu_' + idCounter++;      self._aria = { role: settings.role };      self._elmCache = {};      self.$ = global$7;      self.state = new ObservableObject({        visible: true,        active: false,        disabled: false,        value: ''      });      self.data = new ObservableObject(settings.data);      self.classes = new ClassList(function () {        if (self.state.get('rendered')) {          self.getEl().className = this.toString();        }      });      self.classes.prefix = self.classPrefix;      classes = settings.classes;      if (classes) {        if (self.Defaults) {          defaultClasses = self.Defaults.classes;          if (defaultClasses && classes !== defaultClasses) {            applyClasses(defaultClasses);          }        }        applyClasses(classes);      }      global$4.each('title text name visible disabled active value'.split(' '), function (name) {        if (name in settings) {          self[name](settings[name]);        }      });      self.on('click', function () {        if (self.disabled()) {          return false;        }      });      self.settings = settings;      self.borderBox = $_889epm17vjh8lz7n9.parseBox(settings.border);      self.paddingBox = $_889epm17vjh8lz7n9.parseBox(settings.padding);      self.marginBox = $_889epm17vjh8lz7n9.parseBox(settings.margin);      if (settings.hidden) {        self.hide();      }    },    Properties: 'parent,name',    getContainerElm: function () {      var uiContainer = $_exab1j183jh8lz7nu.getUiContainer(this);      return uiContainer ? uiContainer : funcs.getContainer();    },    getParentCtrl: function (elm) {      var ctrl;      var lookup = this.getRoot().controlIdLookup;      while (elm && lookup) {        ctrl = lookup[elm.id];        if (ctrl) {          break;        }        elm = elm.parentNode;      }      return ctrl;    },    initLayoutRect: function () {      var self = this;      var settings = self.settings;      var borderBox, layoutRect;      var elm = self.getEl();      var width, height, minWidth, minHeight, autoResize;      var startMinWidth, startMinHeight, initialSize;      borderBox = self.borderBox = self.borderBox || $_889epm17vjh8lz7n9.measureBox(elm, 'border');      self.paddingBox = self.paddingBox || $_889epm17vjh8lz7n9.measureBox(elm, 'padding');      self.marginBox = self.marginBox || $_889epm17vjh8lz7n9.measureBox(elm, 'margin');      initialSize = funcs.getSize(elm);      startMinWidth = settings.minWidth;      startMinHeight = settings.minHeight;      minWidth = startMinWidth || initialSize.width;      minHeight = startMinHeight || initialSize.height;      width = settings.width;      height = settings.height;      autoResize = settings.autoResize;      autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;      width = width || minWidth;      height = height || minHeight;      var deltaW = borderBox.left + borderBox.right;      var deltaH = borderBox.top + borderBox.bottom;      var maxW = settings.maxWidth || 65535;      var maxH = settings.maxHeight || 65535;      self._layoutRect = layoutRect = {        x: settings.x || 0,        y: settings.y || 0,        w: width,        h: height,        deltaW: deltaW,        deltaH: deltaH,        contentW: width - deltaW,        contentH: height - deltaH,        innerW: width - deltaW,        innerH: height - deltaH,        startMinWidth: startMinWidth || 0,        startMinHeight: startMinHeight || 0,        minW: Math.min(minWidth, maxW),        minH: Math.min(minHeight, maxH),        maxW: maxW,        maxH: maxH,        autoResize: autoResize,        scrollW: 0      };      self._lastLayoutRect = {};      return layoutRect;    },    layoutRect: function (newRect) {      var self = this;      var curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;      if (!curRect) {        curRect = self.initLayoutRect();      }      if (newRect) {        deltaWidth = curRect.deltaW;        deltaHeight = curRect.deltaH;        if (newRect.x !== undefined) {          curRect.x = newRect.x;        }        if (newRect.y !== undefined) {          curRect.y = newRect.y;        }        if (newRect.minW !== undefined) {          curRect.minW = newRect.minW;        }        if (newRect.minH !== undefined) {          curRect.minH = newRect.minH;        }        size = newRect.w;        if (size !== undefined) {          size = size < curRect.minW ? curRect.minW : size;          size = size > curRect.maxW ? curRect.maxW : size;          curRect.w = size;          curRect.innerW = size - deltaWidth;        }        size = newRect.h;        if (size !== undefined) {          size = size < curRect.minH ? curRect.minH : size;          size = size > curRect.maxH ? curRect.maxH : size;          curRect.h = size;          curRect.innerH = size - deltaHeight;        }        size = newRect.innerW;        if (size !== undefined) {          size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;          size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;          curRect.innerW = size;          curRect.w = size + deltaWidth;        }        size = newRect.innerH;        if (size !== undefined) {          size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;          size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;          curRect.innerH = size;          curRect.h = size + deltaHeight;        }        if (newRect.contentW !== undefined) {          curRect.contentW = newRect.contentW;        }        if (newRect.contentH !== undefined) {          curRect.contentH = newRect.contentH;        }        lastLayoutRect = self._lastLayoutRect;        if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {          repaintControls = Control.repaintControls;          if (repaintControls) {            if (repaintControls.map && !repaintControls.map[self._id]) {              repaintControls.push(self);              repaintControls.map[self._id] = true;            }          }          lastLayoutRect.x = curRect.x;          lastLayoutRect.y = curRect.y;          lastLayoutRect.w = curRect.w;          lastLayoutRect.h = curRect.h;        }        return self;      }      return curRect;    },    repaint: function () {      var self = this;      var style, bodyStyle, bodyElm, rect, borderBox;      var borderW, borderH, lastRepaintRect, round, value;      round = !document.createRange ? Math.round : function (value) {        return value;      };      style = self.getEl().style;      rect = self._layoutRect;      lastRepaintRect = self._lastRepaintRect || {};      borderBox = self.borderBox;      borderW = borderBox.left + borderBox.right;      borderH = borderBox.top + borderBox.bottom;      if (rect.x !== lastRepaintRect.x) {        style.left = round(rect.x) + 'px';        lastRepaintRect.x = rect.x;      }      if (rect.y !== lastRepaintRect.y) {        style.top = round(rect.y) + 'px';        lastRepaintRect.y = rect.y;      }      if (rect.w !== lastRepaintRect.w) {        value = round(rect.w - borderW);        style.width = (value >= 0 ? value : 0) + 'px';        lastRepaintRect.w = rect.w;      }      if (rect.h !== lastRepaintRect.h) {        value = round(rect.h - borderH);        style.height = (value >= 0 ? value : 0) + 'px';        lastRepaintRect.h = rect.h;      }      if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {        value = round(rect.innerW);        bodyElm = self.getEl('body');        if (bodyElm) {          bodyStyle = bodyElm.style;          bodyStyle.width = (value >= 0 ? value : 0) + 'px';        }        lastRepaintRect.innerW = rect.innerW;      }      if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {        value = round(rect.innerH);        bodyElm = bodyElm || self.getEl('body');        if (bodyElm) {          bodyStyle = bodyStyle || bodyElm.style;          bodyStyle.height = (value >= 0 ? value : 0) + 'px';        }        lastRepaintRect.innerH = rect.innerH;      }      self._lastRepaintRect = lastRepaintRect;      self.fire('repaint', {}, false);    },    updateLayoutRect: function () {      var self = this;      self.parent()._lastRect = null;      funcs.css(self.getEl(), {        width: '',        height: ''      });      self._layoutRect = self._lastRepaintRect = self._lastLayoutRect = null;      self.initLayoutRect();    },    on: function (name, callback) {      var self = this;      function resolveCallbackName(name) {        var callback, scope;        if (typeof name !== 'string') {          return name;        }        return function (e) {          if (!callback) {            self.parentsAndSelf().each(function (ctrl) {              var callbacks = ctrl.settings.callbacks;              if (callbacks && (callback = callbacks[name])) {                scope = ctrl;                return false;              }            });          }          if (!callback) {            e.action = name;            this.fire('execute', e);            return;          }          return callback.call(scope, e);        };      }      getEventDispatcher(self).on(name, resolveCallbackName(callback));      return self;    },    off: function (name, callback) {      getEventDispatcher(this).off(name, callback);      return this;    },    fire: function (name, args, bubble) {      var self = this;      args = args || {};      if (!args.control) {        args.control = self;      }      args = getEventDispatcher(self).fire(name, args);      if (bubble !== false && self.parent) {        var parent_1 = self.parent();        while (parent_1 && !args.isPropagationStopped()) {          parent_1.fire(name, args, false);          parent_1 = parent_1.parent();        }      }      return args;    },    hasEventListeners: function (name) {      return getEventDispatcher(this).has(name);    },    parents: function (selector) {      var self = this;      var ctrl, parents = new Collection$2();      for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {        parents.add(ctrl);      }      if (selector) {        parents = parents.filter(selector);      }      return parents;    },    parentsAndSelf: function (selector) {      return new Collection$2(this).add(this.parents(selector));    },    next: function () {      var parentControls = this.parent().items();      return parentControls[parentControls.indexOf(this) + 1];    },    prev: function () {      var parentControls = this.parent().items();      return parentControls[parentControls.indexOf(this) - 1];    },    innerHtml: function (html) {      this.$el.html(html);      return this;    },    getEl: function (suffix) {      var id = suffix ? this._id + '-' + suffix : this._id;      if (!this._elmCache[id]) {        this._elmCache[id] = global$7('#' + id)[0];      }      return this._elmCache[id];    },    show: function () {      return this.visible(true);    },    hide: function () {      return this.visible(false);    },    focus: function () {      try {        this.getEl().focus();      } catch (ex) {      }      return this;    },    blur: function () {      this.getEl().blur();      return this;    },    aria: function (name, value) {      var self = this, elm = self.getEl(self.ariaTarget);      if (typeof value === 'undefined') {        return self._aria[name];      }      self._aria[name] = value;      if (self.state.get('rendered')) {        elm.setAttribute(name === 'role' ? name : 'aria-' + name, value);      }      return self;    },    encode: function (text, translate) {      if (translate !== false) {        text = this.translate(text);      }      return (text || '').replace(/[&<>"]/g, function (match) {        return '&#' + match.charCodeAt(0) + ';';      });    },    translate: function (text) {      return Control.translate ? Control.translate(text) : text;    },    before: function (items) {      var self = this, parent = self.parent();      if (parent) {        parent.insert(items, parent.items().indexOf(self), true);      }      return self;    },    after: function (items) {      var self = this, parent = self.parent();      if (parent) {        parent.insert(items, parent.items().indexOf(self));      }      return self;    },    remove: function () {      var self = this;      var elm = self.getEl();      var parent = self.parent();      var newItems, i;      if (self.items) {        var controls = self.items().toArray();        i = controls.length;        while (i--) {          controls[i].remove();        }      }      if (parent && parent.items) {        newItems = [];        parent.items().each(function (item) {          if (item !== self) {            newItems.push(item);          }        });        parent.items().set(newItems);        parent._lastRect = null;      }      if (self._eventsRoot && self._eventsRoot === self) {        global$7(elm).off();      }      var lookup = self.getRoot().controlIdLookup;      if (lookup) {        delete lookup[self._id];      }      if (elm && elm.parentNode) {        elm.parentNode.removeChild(elm);      }      self.state.set('rendered', false);      self.state.destroy();      self.fire('remove');      return self;    },    renderBefore: function (elm) {      global$7(elm).before(this.renderHtml());      this.postRender();      return this;    },    renderTo: function (elm) {      global$7(elm || this.getContainerElm()).append(this.renderHtml());      this.postRender();      return this;    },    preRender: function () {    },    render: function () {    },    renderHtml: function () {      return '<div id="' + this._id + '" class="' + this.classes + '"></div>';    },    postRender: function () {      var self = this;      var settings = self.settings;      var elm, box, parent, name, parentEventsRoot;      self.$el = global$7(self.getEl());      self.state.set('rendered', true);      for (name in settings) {        if (name.indexOf('on') === 0) {          self.on(name.substr(2), settings[name]);        }      }      if (self._eventsRoot) {        for (parent = self.parent(); !parentEventsRoot && parent; parent = parent.parent()) {          parentEventsRoot = parent._eventsRoot;        }        if (parentEventsRoot) {          for (name in parentEventsRoot._nativeEvents) {            self._nativeEvents[name] = true;          }        }      }      bindPendingEvents(self);      if (settings.style) {        elm = self.getEl();        if (elm) {          elm.setAttribute('style', settings.style);          elm.style.cssText = settings.style;        }      }      if (self.settings.border) {        box = self.borderBox;        self.$el.css({          'border-top-width': box.top,          'border-right-width': box.right,          'border-bottom-width': box.bottom,          'border-left-width': box.left        });      }      var root = self.getRoot();      if (!root.controlIdLookup) {        root.controlIdLookup = {};      }      root.controlIdLookup[self._id] = self;      for (var key in self._aria) {        self.aria(key, self._aria[key]);      }      if (self.state.get('visible') === false) {        self.getEl().style.display = 'none';      }      self.bindStates();      self.state.on('change:visible', function (e) {        var state = e.value;        var parentCtrl;        if (self.state.get('rendered')) {          self.getEl().style.display = state === false ? 'none' : '';          self.getEl().getBoundingClientRect();        }        parentCtrl = self.parent();        if (parentCtrl) {          parentCtrl._lastRect = null;        }        self.fire(state ? 'show' : 'hide');        $_dipgfl182jh8lz7nt.add(self);      });      self.fire('postrender', {}, false);    },    bindStates: function () {    },    scrollIntoView: function (align) {      function getOffset(elm, rootElm) {        var x, y, parent = elm;        x = y = 0;        while (parent && parent !== rootElm && parent.nodeType) {          x += parent.offsetLeft || 0;          y += parent.offsetTop || 0;          parent = parent.offsetParent;        }        return {          x: x,          y: y        };      }      var elm = this.getEl(), parentElm = elm.parentNode;      var x, y, width, height, parentWidth, parentHeight;      var pos = getOffset(elm, parentElm);      x = pos.x;      y = pos.y;      width = elm.offsetWidth;      height = elm.offsetHeight;      parentWidth = parentElm.clientWidth;      parentHeight = parentElm.clientHeight;      if (align === 'end') {        x -= parentWidth - width;        y -= parentHeight - height;      } else if (align === 'center') {        x -= parentWidth / 2 - width / 2;        y -= parentHeight / 2 - height / 2;      }      parentElm.scrollLeft = x;      parentElm.scrollTop = y;      return this;    },    getRoot: function () {      var ctrl = this, rootControl;      var parents = [];      while (ctrl) {        if (ctrl.rootControl) {          rootControl = ctrl.rootControl;          break;        }        parents.push(ctrl);        rootControl = ctrl;        ctrl = ctrl.parent();      }      if (!rootControl) {        rootControl = this;      }      var i = parents.length;      while (i--) {        parents[i].rootControl = rootControl;      }      return rootControl;    },    reflow: function () {      $_dipgfl182jh8lz7nt.remove(this);      var parent = this.parent();      if (parent && parent._layout && !parent._layout.isNative()) {        parent.reflow();      }      return this;    }  };  global$4.each('text title visible disabled active value'.split(' '), function (name) {    proto$1[name] = function (value) {      if (arguments.length === 0) {        return this.state.get(name);      }      if (typeof value !== 'undefined') {        this.state.set(name, value);      }      return this;    };  });  Control = global$8.extend(proto$1);  function getEventDispatcher(obj) {    if (!obj._eventDispatcher) {      obj._eventDispatcher = new global$9({        scope: obj,        toggleEvent: function (name, state) {          if (state && global$9.isNative(name)) {            if (!obj._nativeEvents) {              obj._nativeEvents = {};            }            obj._nativeEvents[name] = true;            if (obj.state.get('rendered')) {              bindPendingEvents(obj);            }          }        }      });    }    return obj._eventDispatcher;  }  function bindPendingEvents(eventCtrl) {    var i, l, parents, eventRootCtrl, nativeEvents, name;    function delegate(e) {      var control = eventCtrl.getParentCtrl(e.target);      if (control) {        control.fire(e.type, e);      }    }    function mouseLeaveHandler() {      var ctrl = eventRootCtrl._lastHoverCtrl;      if (ctrl) {        ctrl.fire('mouseleave', { target: ctrl.getEl() });        ctrl.parents().each(function (ctrl) {          ctrl.fire('mouseleave', { target: ctrl.getEl() });        });        eventRootCtrl._lastHoverCtrl = null;      }    }    function mouseEnterHandler(e) {      var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;      if (ctrl !== lastCtrl) {        eventRootCtrl._lastHoverCtrl = ctrl;        parents = ctrl.parents().toArray().reverse();        parents.push(ctrl);        if (lastCtrl) {          lastParents = lastCtrl.parents().toArray().reverse();          lastParents.push(lastCtrl);          for (idx = 0; idx < lastParents.length; idx++) {            if (parents[idx] !== lastParents[idx]) {              break;            }          }          for (i = lastParents.length - 1; i >= idx; i--) {            lastCtrl = lastParents[i];            lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });          }        }        for (i = idx; i < parents.length; i++) {          ctrl = parents[i];          ctrl.fire('mouseenter', { target: ctrl.getEl() });        }      }    }    function fixWheelEvent(e) {      e.preventDefault();      if (e.type === 'mousewheel') {        e.deltaY = -1 / 40 * e.wheelDelta;        if (e.wheelDeltaX) {          e.deltaX = -1 / 40 * e.wheelDeltaX;        }      } else {        e.deltaX = 0;        e.deltaY = e.detail;      }      e = eventCtrl.fire('wheel', e);    }    nativeEvents = eventCtrl._nativeEvents;    if (nativeEvents) {      parents = eventCtrl.parents().toArray();      parents.unshift(eventCtrl);      for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {        eventRootCtrl = parents[i]._eventsRoot;      }      if (!eventRootCtrl) {        eventRootCtrl = parents[parents.length - 1] || eventCtrl;      }      eventCtrl._eventsRoot = eventRootCtrl;      for (l = i, i = 0; i < l; i++) {        parents[i]._eventsRoot = eventRootCtrl;      }      var eventRootDelegates = eventRootCtrl._delegates;      if (!eventRootDelegates) {        eventRootDelegates = eventRootCtrl._delegates = {};      }      for (name in nativeEvents) {        if (!nativeEvents) {          return false;        }        if (name === 'wheel' && !hasWheelEventSupport) {          if (hasMouseWheelEventSupport) {            global$7(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);          } else {            global$7(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);          }          continue;        }        if (name === 'mouseenter' || name === 'mouseleave') {          if (!eventRootCtrl._hasMouseEnter) {            global$7(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);            eventRootCtrl._hasMouseEnter = 1;          }        } else if (!eventRootDelegates[name]) {          global$7(eventRootCtrl.getEl()).on(name, delegate);          eventRootDelegates[name] = true;        }        nativeEvents[name] = false;      }    }  }  var Control$1 = Control;  var isStatic = function (elm) {    return funcs.getRuntimeStyle(elm, 'position') === 'static';  };  var isFixed = function (ctrl) {    return ctrl.state.get('fixed');  };  function calculateRelativePosition(ctrl, targetElm, rel) {    var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;    viewport = getWindowViewPort();    pos = funcs.getPos(targetElm, $_exab1j183jh8lz7nu.getUiContainer(ctrl));    x = pos.x;    y = pos.y;    if (isFixed(ctrl) && isStatic(document.body)) {      x -= viewport.x;      y -= viewport.y;    }    ctrlElm = ctrl.getEl();    size = funcs.getSize(ctrlElm);    selfW = size.width;    selfH = size.height;    size = funcs.getSize(targetElm);    targetW = size.width;    targetH = size.height;    rel = (rel || '').split('');    if (rel[0] === 'b') {      y += targetH;    }    if (rel[1] === 'r') {      x += targetW;    }    if (rel[0] === 'c') {      y += Math.round(targetH / 2);    }    if (rel[1] === 'c') {      x += Math.round(targetW / 2);    }    if (rel[3] === 'b') {      y -= selfH;    }    if (rel[4] === 'r') {      x -= selfW;    }    if (rel[3] === 'c') {      y -= Math.round(selfH / 2);    }    if (rel[4] === 'c') {      x -= Math.round(selfW / 2);    }    return {      x: x,      y: y,      w: selfW,      h: selfH    };  }  var getUiContainerViewPort = function (customUiContainer) {    return {      x: 0,      y: 0,      w: customUiContainer.scrollWidth - 1,      h: customUiContainer.scrollHeight - 1    };  };  var getWindowViewPort = function () {    var win = window;    var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);    var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);    var w = win.innerWidth || document.documentElement.clientWidth;    var h = win.innerHeight || document.documentElement.clientHeight;    return {      x: x,      y: y,      w: x + w,      h: y + h    };  };  var getViewPortRect = function (ctrl) {    var customUiContainer = $_exab1j183jh8lz7nu.getUiContainer(ctrl);    return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();  };  var $_ben1dh184jh8lz7ny = {    testMoveRel: function (elm, rels) {      var viewPortRect = getViewPortRect(this);      for (var i = 0; i < rels.length; i++) {        var pos = calculateRelativePosition(this, elm, rels[i]);        if (isFixed(this)) {          if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {            return rels[i];          }        } else {          if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h) {            return rels[i];          }        }      }      return rels[0];    },    moveRel: function (elm, rel) {      if (typeof rel !== 'string') {        rel = this.testMoveRel(elm, rel);      }      var pos = calculateRelativePosition(this, elm, rel);      return this.moveTo(pos.x, pos.y);    },    moveBy: function (dx, dy) {      var self = this, rect = self.layoutRect();      self.moveTo(rect.x + dx, rect.y + dy);      return self;    },    moveTo: function (x, y) {      var self = this;      function constrain(value, max, size) {        if (value < 0) {          return 0;        }        if (value + size > max) {          value = max - size;          return value < 0 ? 0 : value;        }        return value;      }      if (self.settings.constrainToViewport) {        var viewPortRect = getViewPortRect(this);        var layoutRect = self.layoutRect();        x = constrain(x, viewPortRect.w, layoutRect.w);        y = constrain(y, viewPortRect.h, layoutRect.h);      }      var uiContainer = $_exab1j183jh8lz7nu.getUiContainer(self);      if (uiContainer && isStatic(uiContainer) && !isFixed(self)) {        x -= uiContainer.scrollLeft;        y -= uiContainer.scrollTop;      }      if (uiContainer) {        x += 1;        y += 1;      }      if (self.state.get('rendered')) {        self.layoutRect({          x: x,          y: y        }).repaint();      } else {        self.settings.x = x;        self.settings.y = y;      }      self.fire('move', {        x: x,        y: y      });      return self;    }  };  var Tooltip = Control$1.extend({    Mixins: [$_ben1dh184jh8lz7ny],    Defaults: { classes: 'widget tooltip tooltip-n' },    renderHtml: function () {      var self = this, prefix = self.classPrefix;      return '<div id="' + self._id + '" class="' + self.classes + '" role="presentation">' + '<div class="' + prefix + 'tooltip-arrow"></div>' + '<div class="' + prefix + 'tooltip-inner">' + self.encode(self.state.get('text')) + '</div>' + '</div>';    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.getEl().lastChild.innerHTML = self.encode(e.value);      });      return self._super();    },    repaint: function () {      var self = this;      var style, rect;      style = self.getEl().style;      rect = self._layoutRect;      style.left = rect.x + 'px';      style.top = rect.y + 'px';      style.zIndex = 65535 + 65535;    }  });  var Widget = Control$1.extend({    init: function (settings) {      var self = this;      self._super(settings);      settings = self.settings;      self.canFocus = true;      if (settings.tooltip && Widget.tooltips !== false) {        self.on('mouseenter', function (e) {          var tooltip = self.tooltip().moveTo(-65535);          if (e.control === self) {            var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [              'bc-tc',              'bc-tl',              'bc-tr'            ]);            tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');            tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');            tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');            tooltip.moveRel(self.getEl(), rel);          } else {            tooltip.hide();          }        });        self.on('mouseleave mousedown click', function () {          self.tooltip().remove();          self._tooltip = null;        });      }      self.aria('label', settings.ariaLabel || settings.tooltip);    },    tooltip: function () {      if (!this._tooltip) {        this._tooltip = new Tooltip({ type: 'tooltip' });        $_exab1j183jh8lz7nu.inheritUiContainer(this, this._tooltip);        this._tooltip.renderTo();      }      return this._tooltip;    },    postRender: function () {      var self = this, settings = self.settings;      self._super();      if (!self.parent() && (settings.width || settings.height)) {        self.initLayoutRect();        self.repaint();      }      if (settings.autofocus) {        self.focus();      }    },    bindStates: function () {      var self = this;      function disable(state) {        self.aria('disabled', state);        self.classes.toggle('disabled', state);      }      function active(state) {        self.aria('pressed', state);        self.classes.toggle('active', state);      }      self.state.on('change:disabled', function (e) {        disable(e.value);      });      self.state.on('change:active', function (e) {        active(e.value);      });      if (self.state.get('disabled')) {        disable(true);      }      if (self.state.get('active')) {        active(true);      }      return self._super();    },    remove: function () {      this._super();      if (this._tooltip) {        this._tooltip.remove();        this._tooltip = null;      }    }  });  var Progress = Widget.extend({    Defaults: { value: 0 },    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('progress');      if (!self.settings.filter) {        self.settings.filter = function (value) {          return Math.round(value);        };      }    },    renderHtml: function () {      var self = this, id = self._id, prefix = this.classPrefix;      return '<div id="' + id + '" class="' + self.classes + '">' + '<div class="' + prefix + 'bar-container">' + '<div class="' + prefix + 'bar"></div>' + '</div>' + '<div class="' + prefix + 'text">0%</div>' + '</div>';    },    postRender: function () {      var self = this;      self._super();      self.value(self.settings.value);      return self;    },    bindStates: function () {      var self = this;      function setValue(value) {        value = self.settings.filter(value);        self.getEl().lastChild.innerHTML = value + '%';        self.getEl().firstChild.firstChild.style.width = value + '%';      }      self.state.on('change:value', function (e) {        setValue(e.value);      });      setValue(self.state.get('value'));      return self._super();    }  });  var updateLiveRegion = function (ctx, text) {    ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');  };  var Notification = Control$1.extend({    Mixins: [$_ben1dh184jh8lz7ny],    Defaults: { classes: 'widget notification' },    init: function (settings) {      var self = this;      self._super(settings);      self.maxWidth = settings.maxWidth;      if (settings.text) {        self.text(settings.text);      }      if (settings.icon) {        self.icon = settings.icon;      }      if (settings.color) {        self.color = settings.color;      }      if (settings.type) {        self.classes.add('notification-' + settings.type);      }      if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {        self.closeButton = false;      } else {        self.classes.add('has-close');        self.closeButton = true;      }      if (settings.progressBar) {        self.progressBar = new Progress();      }      self.on('click', function (e) {        if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {          self.close();        }      });    },    renderHtml: function () {      var self = this;      var prefix = self.classPrefix;      var icon = '', closeButton = '', progressBar = '', notificationStyle = '';      if (self.icon) {        icon = '<i class="' + prefix + 'ico' + ' ' + prefix + 'i-' + self.icon + '"></i>';      }      notificationStyle = ' style="max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';"' : '"');      if (self.closeButton) {        closeButton = '<button type="button" class="' + prefix + 'close" aria-hidden="true">\xD7</button>';      }      if (self.progressBar) {        progressBar = self.progressBar.renderHtml();      }      return '<div id="' + self._id + '" class="' + self.classes + '"' + notificationStyle + ' role="presentation">' + icon + '<div class="' + prefix + 'notification-inner">' + self.state.get('text') + '</div>' + progressBar + closeButton + '<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;"' + ' aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div>' + '</div>';    },    postRender: function () {      var self = this;      global$3.setTimeout(function () {        self.$el.addClass(self.classPrefix + 'in');        updateLiveRegion(self, self.state.get('text'));      }, 100);      return self._super();    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.getEl().firstChild.innerHTML = e.value;        updateLiveRegion(self, e.value);      });      if (self.progressBar) {        self.progressBar.bindStates();        self.progressBar.state.on('change:value', function (e) {          updateLiveRegion(self, self.state.get('text'));        });      }      return self._super();    },    close: function () {      var self = this;      if (!self.fire('close').isDefaultPrevented()) {        self.remove();      }      return self;    },    repaint: function () {      var self = this;      var style, rect;      style = self.getEl().style;      rect = self._layoutRect;      style.left = rect.x + 'px';      style.top = rect.y + 'px';      style.zIndex = 65535 - 1;    }  });  function NotificationManagerImpl (editor) {    var getEditorContainer = function (editor) {      return editor.inline ? editor.getElement() : editor.getContentAreaContainer();    };    var getContainerWidth = function () {      var container = getEditorContainer(editor);      return funcs.getSize(container).width;    };    var prePositionNotifications = function (notifications) {      $_qgcal17ljh8lz7ly.each(notifications, function (notification) {        notification.moveTo(0, 0);      });    };    var positionNotifications = function (notifications) {      if (notifications.length > 0) {        var firstItem = notifications.slice(0, 1)[0];        var container = getEditorContainer(editor);        firstItem.moveRel(container, 'tc-tc');        $_qgcal17ljh8lz7ly.each(notifications, function (notification, index) {          if (index > 0) {            notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');          }        });      }    };    var reposition = function (notifications) {      prePositionNotifications(notifications);      positionNotifications(notifications);    };    var open = function (args, closeCallback) {      var extendedArgs = global$4.extend(args, { maxWidth: getContainerWidth() });      var notif = new Notification(extendedArgs);      notif.args = extendedArgs;      if (extendedArgs.timeout > 0) {        notif.timer = setTimeout(function () {          notif.close();          closeCallback();        }, extendedArgs.timeout);      }      notif.on('close', function () {        closeCallback();      });      notif.renderTo();      return notif;    };    var close = function (notification) {      notification.close();    };    var getArgs = function (notification) {      return notification.args;    };    return {      open: open,      close: close,      reposition: reposition,      getArgs: getArgs    };  }  function getDocumentSize(doc) {    var documentElement, body, scrollWidth, clientWidth;    var offsetWidth, scrollHeight, clientHeight, offsetHeight;    var max = Math.max;    documentElement = doc.documentElement;    body = doc.body;    scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);    clientWidth = max(documentElement.clientWidth, body.clientWidth);    offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);    scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);    clientHeight = max(documentElement.clientHeight, body.clientHeight);    offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);    return {      width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,      height: scrollHeight < offsetHeight ? clientHeight : scrollHeight    };  }  function updateWithTouchData(e) {    var keys, i;    if (e.changedTouches) {      keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');      for (i = 0; i < keys.length; i++) {        e[keys[i]] = e.changedTouches[0][keys[i]];      }    }  }  function DragHelper (id, settings) {    var $eventOverlay;    var doc = settings.document || document;    var downButton;    var start, stop, drag, startX, startY;    settings = settings || {};    var handleElement = doc.getElementById(settings.handle || id);    start = function (e) {      var docSize = getDocumentSize(doc);      var handleElm, cursor;      updateWithTouchData(e);      e.preventDefault();      downButton = e.button;      handleElm = handleElement;      startX = e.screenX;      startY = e.screenY;      if (window.getComputedStyle) {        cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');      } else {        cursor = handleElm.runtimeStyle.cursor;      }      $eventOverlay = global$7('<div></div>').css({        position: 'absolute',        top: 0,        left: 0,        width: docSize.width,        height: docSize.height,        zIndex: 2147483647,        opacity: 0.0001,        cursor: cursor      }).appendTo(doc.body);      global$7(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop);      settings.start(e);    };    drag = function (e) {      updateWithTouchData(e);      if (e.button !== downButton) {        return stop(e);      }      e.deltaX = e.screenX - startX;      e.deltaY = e.screenY - startY;      e.preventDefault();      settings.drag(e);    };    stop = function (e) {      updateWithTouchData(e);      global$7(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop);      $eventOverlay.remove();      if (settings.stop) {        settings.stop(e);      }    };    this.destroy = function () {      global$7(handleElement).off();    };    global$7(handleElement).on('mousedown touchstart', start);  }  var global$11 = tinymce.util.Tools.resolve('tinymce.ui.Factory');  var hasTabstopData = function (elm) {    return elm.getAttribute('data-mce-tabstop') ? true : false;  };  function KeyboardNavigation (settings) {    var root = settings.root;    var focusedElement, focusedControl;    function isElement(node) {      return node && node.nodeType === 1;    }    try {      focusedElement = document.activeElement;    } catch (ex) {      focusedElement = document.body;    }    focusedControl = root.getParentCtrl(focusedElement);    function getRole(elm) {      elm = elm || focusedElement;      if (isElement(elm)) {        return elm.getAttribute('role');      }      return null;    }    function getParentRole(elm) {      var role, parent = elm || focusedElement;      while (parent = parent.parentNode) {        if (role = getRole(parent)) {          return role;        }      }    }    function getAriaProp(name) {      var elm = focusedElement;      if (isElement(elm)) {        return elm.getAttribute('aria-' + name);      }    }    function isTextInputElement(elm) {      var tagName = elm.tagName.toUpperCase();      return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';    }    function canFocus(elm) {      if (isTextInputElement(elm) && !elm.hidden) {        return true;      }      if (hasTabstopData(elm)) {        return true;      }      if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {        return true;      }      return false;    }    function getFocusElements(elm) {      var elements = [];      function collect(elm) {        if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {          return;        }        if (canFocus(elm)) {          elements.push(elm);        }        for (var i = 0; i < elm.childNodes.length; i++) {          collect(elm.childNodes[i]);        }      }      collect(elm || root.getEl());      return elements;    }    function getNavigationRoot(targetControl) {      var navigationRoot, controls;      targetControl = targetControl || focusedControl;      controls = targetControl.parents().toArray();      controls.unshift(targetControl);      for (var i = 0; i < controls.length; i++) {        navigationRoot = controls[i];        if (navigationRoot.settings.ariaRoot) {          break;        }      }      return navigationRoot;    }    function focusFirst(targetControl) {      var navigationRoot = getNavigationRoot(targetControl);      var focusElements = getFocusElements(navigationRoot.getEl());      if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {        moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);      } else {        moveFocusToIndex(0, focusElements);      }    }    function moveFocusToIndex(idx, elements) {      if (idx < 0) {        idx = elements.length - 1;      } else if (idx >= elements.length) {        idx = 0;      }      if (elements[idx]) {        elements[idx].focus();      }      return idx;    }    function moveFocus(dir, elements) {      var idx = -1;      var navigationRoot = getNavigationRoot();      elements = elements || getFocusElements(navigationRoot.getEl());      for (var i = 0; i < elements.length; i++) {        if (elements[i] === focusedElement) {          idx = i;        }      }      idx += dir;      navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);    }    function left() {      var parentRole = getParentRole();      if (parentRole === 'tablist') {        moveFocus(-1, getFocusElements(focusedElement.parentNode));      } else if (focusedControl.parent().submenu) {        cancel();      } else {        moveFocus(-1);      }    }    function right() {      var role = getRole(), parentRole = getParentRole();      if (parentRole === 'tablist') {        moveFocus(1, getFocusElements(focusedElement.parentNode));      } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {        enter();      } else {        moveFocus(1);      }    }    function up() {      moveFocus(-1);    }    function down() {      var role = getRole(), parentRole = getParentRole();      if (role === 'menuitem' && parentRole === 'menubar') {        enter();      } else if (role === 'button' && getAriaProp('haspopup')) {        enter({ key: 'down' });      } else {        moveFocus(1);      }    }    function tab(e) {      var parentRole = getParentRole();      if (parentRole === 'tablist') {        var elm = getFocusElements(focusedControl.getEl('body'))[0];        if (elm) {          elm.focus();        }      } else {        moveFocus(e.shiftKey ? -1 : 1);      }    }    function cancel() {      focusedControl.fire('cancel');    }    function enter(aria) {      aria = aria || {};      focusedControl.fire('click', {        target: focusedElement,        aria: aria      });    }    root.on('keydown', function (e) {      function handleNonTabOrEscEvent(e, handler) {        if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {          return;        }        if (getRole(focusedElement) === 'slider') {          return;        }        if (handler(e) !== false) {          e.preventDefault();        }      }      if (e.isDefaultPrevented()) {        return;      }      switch (e.keyCode) {      case 37:        handleNonTabOrEscEvent(e, left);        break;      case 39:        handleNonTabOrEscEvent(e, right);        break;      case 38:        handleNonTabOrEscEvent(e, up);        break;      case 40:        handleNonTabOrEscEvent(e, down);        break;      case 27:        cancel();        break;      case 14:      case 13:      case 32:        handleNonTabOrEscEvent(e, enter);        break;      case 9:        tab(e);        e.preventDefault();        break;      }    });    root.on('focusin', function (e) {      focusedElement = e.target;      focusedControl = e.control;    });    return { focusFirst: focusFirst };  }  var selectorCache = {};  var Container = Control$1.extend({    init: function (settings) {      var self = this;      self._super(settings);      settings = self.settings;      if (settings.fixed) {        self.state.set('fixed', true);      }      self._items = new Collection$2();      if (self.isRtl()) {        self.classes.add('rtl');      }      self.bodyClasses = new ClassList(function () {        if (self.state.get('rendered')) {          self.getEl('body').className = this.toString();        }      });      self.bodyClasses.prefix = self.classPrefix;      self.classes.add('container');      self.bodyClasses.add('container-body');      if (settings.containerCls) {        self.classes.add(settings.containerCls);      }      self._layout = global$11.create((settings.layout || '') + 'layout');      if (self.settings.items) {        self.add(self.settings.items);      } else {        self.add(self.render());      }      self._hasBody = true;    },    items: function () {      return this._items;    },    find: function (selector) {      selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);      return selector.find(this);    },    add: function (items) {      var self = this;      self.items().add(self.create(items)).parent(self);      return self;    },    focus: function (keyboard) {      var self = this;      var focusCtrl, keyboardNav, items;      if (keyboard) {        keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;        if (keyboardNav) {          keyboardNav.focusFirst(self);          return;        }      }      items = self.find('*');      if (self.statusbar) {        items.add(self.statusbar.items());      }      items.each(function (ctrl) {        if (ctrl.settings.autofocus) {          focusCtrl = null;          return false;        }        if (ctrl.canFocus) {          focusCtrl = focusCtrl || ctrl;        }      });      if (focusCtrl) {        focusCtrl.focus();      }      return self;    },    replace: function (oldItem, newItem) {      var ctrlElm;      var items = this.items();      var i = items.length;      while (i--) {        if (items[i] === oldItem) {          items[i] = newItem;          break;        }      }      if (i >= 0) {        ctrlElm = newItem.getEl();        if (ctrlElm) {          ctrlElm.parentNode.removeChild(ctrlElm);        }        ctrlElm = oldItem.getEl();        if (ctrlElm) {          ctrlElm.parentNode.removeChild(ctrlElm);        }      }      newItem.parent(this);    },    create: function (items) {      var self = this;      var settings;      var ctrlItems = [];      if (!global$4.isArray(items)) {        items = [items];      }      global$4.each(items, function (item) {        if (item) {          if (!(item instanceof Control$1)) {            if (typeof item === 'string') {              item = { type: item };            }            settings = global$4.extend({}, self.settings.defaults, item);            item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);            item = global$11.create(settings);          }          ctrlItems.push(item);        }      });      return ctrlItems;    },    renderNew: function () {      var self = this;      self.items().each(function (ctrl, index) {        var containerElm;        ctrl.parent(self);        if (!ctrl.state.get('rendered')) {          containerElm = self.getEl('body');          if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {            global$7(containerElm.childNodes[index]).before(ctrl.renderHtml());          } else {            global$7(containerElm).append(ctrl.renderHtml());          }          ctrl.postRender();          $_dipgfl182jh8lz7nt.add(ctrl);        }      });      self._layout.applyClasses(self.items().filter(':visible'));      self._lastRect = null;      return self;    },    append: function (items) {      return this.add(items).renderNew();    },    prepend: function (items) {      var self = this;      self.items().set(self.create(items).concat(self.items().toArray()));      return self.renderNew();    },    insert: function (items, index, before) {      var self = this;      var curItems, beforeItems, afterItems;      items = self.create(items);      curItems = self.items();      if (!before && index < curItems.length - 1) {        index += 1;      }      if (index >= 0 && index < curItems.length) {        beforeItems = curItems.slice(0, index).toArray();        afterItems = curItems.slice(index).toArray();        curItems.set(beforeItems.concat(items, afterItems));      }      return self.renderNew();    },    fromJSON: function (data) {      var self = this;      for (var name_1 in data) {        self.find('#' + name_1).value(data[name_1]);      }      return self;    },    toJSON: function () {      var self = this, data = {};      self.find('*').each(function (ctrl) {        var name = ctrl.name(), value = ctrl.value();        if (name && typeof value !== 'undefined') {          data[name] = value;        }      });      return data;    },    renderHtml: function () {      var self = this, layout = self._layout, role = this.settings.role;      self.preRender();      layout.preRender(self);      return '<div id="' + self._id + '" class="' + self.classes + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';    },    postRender: function () {      var self = this;      var box;      self.items().exec('postRender');      self._super();      self._layout.postRender(self);      self.state.set('rendered', true);      if (self.settings.style) {        self.$el.css(self.settings.style);      }      if (self.settings.border) {        box = self.borderBox;        self.$el.css({          'border-top-width': box.top,          'border-right-width': box.right,          'border-bottom-width': box.bottom,          'border-left-width': box.left        });      }      if (!self.parent()) {        self.keyboardNav = KeyboardNavigation({ root: self });      }      return self;    },    initLayoutRect: function () {      var self = this, layoutRect = self._super();      self._layout.recalc(self);      return layoutRect;    },    recalc: function () {      var self = this;      var rect = self._layoutRect;      var lastRect = self._lastRect;      if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {        self._layout.recalc(self);        rect = self.layoutRect();        self._lastRect = {          x: rect.x,          y: rect.y,          w: rect.w,          h: rect.h        };        return true;      }    },    reflow: function () {      var i;      $_dipgfl182jh8lz7nt.remove(this);      if (this.visible()) {        Control$1.repaintControls = [];        Control$1.repaintControls.map = {};        this.recalc();        i = Control$1.repaintControls.length;        while (i--) {          Control$1.repaintControls[i].repaint();        }        if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {          this.repaint();        }        Control$1.repaintControls = [];      }      return this;    }  });  var $_1ecd7e18gjh8lz7pl = {    init: function () {      var self = this;      self.on('repaint', self.renderScroll);    },    renderScroll: function () {      var self = this, margin = 2;      function repaintScroll() {        var hasScrollH, hasScrollV, bodyElm;        function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {          var containerElm, scrollBarElm, scrollThumbElm;          var containerSize, scrollSize, ratio, rect;          var posNameLower, sizeNameLower;          scrollBarElm = self.getEl('scroll' + axisName);          if (scrollBarElm) {            posNameLower = posName.toLowerCase();            sizeNameLower = sizeName.toLowerCase();            global$7(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);            if (!hasScroll) {              global$7(scrollBarElm).css('display', 'none');              return;            }            global$7(scrollBarElm).css('display', 'block');            containerElm = self.getEl('body');            scrollThumbElm = self.getEl('scroll' + axisName + 't');            containerSize = containerElm['client' + sizeName] - margin * 2;            containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;            scrollSize = containerElm['scroll' + sizeName];            ratio = containerSize / scrollSize;            rect = {};            rect[posNameLower] = containerElm['offset' + posName] + margin;            rect[sizeNameLower] = containerSize;            global$7(scrollBarElm).css(rect);            rect = {};            rect[posNameLower] = containerElm['scroll' + posName] * ratio;            rect[sizeNameLower] = containerSize * ratio;            global$7(scrollThumbElm).css(rect);          }        }        bodyElm = self.getEl('body');        hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;        hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;        repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');        repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');      }      function addScroll() {        function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {          var scrollStart;          var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;          global$7(self.getEl()).append('<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' + '<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' + '</div>');          self.draghelper = new DragHelper(axisId + 't', {            start: function () {              scrollStart = self.getEl('body')['scroll' + posName];              global$7('#' + axisId).addClass(prefix + 'active');            },            drag: function (e) {              var ratio, hasScrollH, hasScrollV, containerSize;              var layoutRect = self.layoutRect();              hasScrollH = layoutRect.contentW > layoutRect.innerW;              hasScrollV = layoutRect.contentH > layoutRect.innerH;              containerSize = self.getEl('body')['client' + sizeName] - margin * 2;              containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;              ratio = containerSize / self.getEl('body')['scroll' + sizeName];              self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;            },            stop: function () {              global$7('#' + axisId).removeClass(prefix + 'active');            }          });        }        self.classes.add('scroll');        addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');        addScrollAxis('h', 'Left', 'Width', 'X', 'Height');      }      if (self.settings.autoScroll) {        if (!self._hasScroll) {          self._hasScroll = true;          addScroll();          self.on('wheel', function (e) {            var bodyEl = self.getEl('body');            bodyEl.scrollLeft += (e.deltaX || 0) * 10;            bodyEl.scrollTop += e.deltaY * 10;            repaintScroll();          });          global$7(self.getEl('body')).on('scroll', repaintScroll);        }        repaintScroll();      }    }  };  var Panel = Container.extend({    Defaults: {      layout: 'fit',      containerCls: 'panel'    },    Mixins: [$_1ecd7e18gjh8lz7pl],    renderHtml: function () {      var self = this;      var layout = self._layout;      var innerHtml = self.settings.html;      self.preRender();      layout.preRender(self);      if (typeof innerHtml === 'undefined') {        innerHtml = '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>';      } else {        if (typeof innerHtml === 'function') {          innerHtml = innerHtml.call(self);        }        self._hasBody = false;      }      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1" role="group">' + (self._preBodyHtml || '') + innerHtml + '</div>';    }  });  var $_1a5lul18hjh8lz7pp = {    resizeToContent: function () {      this._layoutRect.autoResize = true;      this._lastRect = null;      this.reflow();    },    resizeTo: function (w, h) {      if (w <= 1 || h <= 1) {        var rect = funcs.getWindowSize();        w = w <= 1 ? w * rect.w : w;        h = h <= 1 ? h * rect.h : h;      }      this._layoutRect.autoResize = false;      return this.layoutRect({        minW: w,        minH: h,        w: w,        h: h      }).reflow();    },    resizeBy: function (dw, dh) {      var self = this, rect = self.layoutRect();      return self.resizeTo(rect.w + dw, rect.h + dh);    }  };  var documentClickHandler;  var documentScrollHandler;  var windowResizeHandler;  var visiblePanels = [];  var zOrder = [];  var hasModal;  function isChildOf(ctrl, parent) {    while (ctrl) {      if (ctrl === parent) {        return true;      }      ctrl = ctrl.parent();    }  }  function skipOrHidePanels(e) {    var i = visiblePanels.length;    while (i--) {      var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);      if (panel.settings.autohide) {        if (clickCtrl) {          if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {            continue;          }        }        e = panel.fire('autohide', { target: e.target });        if (!e.isDefaultPrevented()) {          panel.hide();        }      }    }  }  function bindDocumentClickHandler() {    if (!documentClickHandler) {      documentClickHandler = function (e) {        if (e.button === 2) {          return;        }        skipOrHidePanels(e);      };      global$7(document).on('click touchstart', documentClickHandler);    }  }  function bindDocumentScrollHandler() {    if (!documentScrollHandler) {      documentScrollHandler = function () {        var i;        i = visiblePanels.length;        while (i--) {          repositionPanel$1(visiblePanels[i]);        }      };      global$7(window).on('scroll', documentScrollHandler);    }  }  function bindWindowResizeHandler() {    if (!windowResizeHandler) {      var docElm_1 = document.documentElement;      var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;      windowResizeHandler = function () {        if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {          clientWidth_1 = docElm_1.clientWidth;          clientHeight_1 = docElm_1.clientHeight;          FloatPanel.hideAll();        }      };      global$7(window).on('resize', windowResizeHandler);    }  }  function repositionPanel$1(panel) {    var scrollY = funcs.getViewPort().y;    function toggleFixedChildPanels(fixed, deltaY) {      var parent;      for (var i = 0; i < visiblePanels.length; i++) {        if (visiblePanels[i] !== panel) {          parent = visiblePanels[i].parent();          while (parent && (parent = parent.parent())) {            if (parent === panel) {              visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();            }          }        }      }    }    if (panel.settings.autofix) {      if (!panel.state.get('fixed')) {        panel._autoFixY = panel.layoutRect().y;        if (panel._autoFixY < scrollY) {          panel.fixed(true).layoutRect({ y: 0 }).repaint();          toggleFixedChildPanels(true, scrollY - panel._autoFixY);        }      } else {        if (panel._autoFixY > scrollY) {          panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();          toggleFixedChildPanels(false, panel._autoFixY - scrollY);        }      }    }  }  function addRemove(add, ctrl) {    var i, zIndex = FloatPanel.zIndex || 65535, topModal;    if (add) {      zOrder.push(ctrl);    } else {      i = zOrder.length;      while (i--) {        if (zOrder[i] === ctrl) {          zOrder.splice(i, 1);        }      }    }    if (zOrder.length) {      for (i = 0; i < zOrder.length; i++) {        if (zOrder[i].modal) {          zIndex++;          topModal = zOrder[i];        }        zOrder[i].getEl().style.zIndex = zIndex;        zOrder[i].zIndex = zIndex;        zIndex++;      }    }    var modalBlockEl = global$7('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];    if (topModal) {      global$7(modalBlockEl).css('z-index', topModal.zIndex - 1);    } else if (modalBlockEl) {      modalBlockEl.parentNode.removeChild(modalBlockEl);      hasModal = false;    }    FloatPanel.currentZIndex = zIndex;  }  var FloatPanel = Panel.extend({    Mixins: [      $_ben1dh184jh8lz7ny,      $_1a5lul18hjh8lz7pp    ],    init: function (settings) {      var self = this;      self._super(settings);      self._eventsRoot = self;      self.classes.add('floatpanel');      if (settings.autohide) {        bindDocumentClickHandler();        bindWindowResizeHandler();        visiblePanels.push(self);      }      if (settings.autofix) {        bindDocumentScrollHandler();        self.on('move', function () {          repositionPanel$1(this);        });      }      self.on('postrender show', function (e) {        if (e.control === self) {          var $modalBlockEl_1;          var prefix_1 = self.classPrefix;          if (self.modal && !hasModal) {            $modalBlockEl_1 = global$7('#' + prefix_1 + 'modal-block', self.getContainerElm());            if (!$modalBlockEl_1[0]) {              $modalBlockEl_1 = global$7('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self.getContainerElm());            }            global$3.setTimeout(function () {              $modalBlockEl_1.addClass(prefix_1 + 'in');              global$7(self.getEl()).addClass(prefix_1 + 'in');            });            hasModal = true;          }          addRemove(true, self);        }      });      self.on('show', function () {        self.parents().each(function (ctrl) {          if (ctrl.state.get('fixed')) {            self.fixed(true);            return false;          }        });      });      if (settings.popover) {        self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';        self.classes.add('popover').add('bottom').add(self.isRtl() ? 'end' : 'start');      }      self.aria('label', settings.ariaLabel);      self.aria('labelledby', self._id);      self.aria('describedby', self.describedBy || self._id + '-none');    },    fixed: function (state) {      var self = this;      if (self.state.get('fixed') !== state) {        if (self.state.get('rendered')) {          var viewport = funcs.getViewPort();          if (state) {            self.layoutRect().y -= viewport.y;          } else {            self.layoutRect().y += viewport.y;          }        }        self.classes.toggle('fixed', state);        self.state.set('fixed', state);      }      return self;    },    show: function () {      var self = this;      var i;      var state = self._super();      i = visiblePanels.length;      while (i--) {        if (visiblePanels[i] === self) {          break;        }      }      if (i === -1) {        visiblePanels.push(self);      }      return state;    },    hide: function () {      removeVisiblePanel(this);      addRemove(false, this);      return this._super();    },    hideAll: function () {      FloatPanel.hideAll();    },    close: function () {      var self = this;      if (!self.fire('close').isDefaultPrevented()) {        self.remove();        addRemove(false, self);      }      return self;    },    remove: function () {      removeVisiblePanel(this);      this._super();    },    postRender: function () {      var self = this;      if (self.settings.bodyRole) {        this.getEl('body').setAttribute('role', self.settings.bodyRole);      }      return self._super();    }  });  FloatPanel.hideAll = function () {    var i = visiblePanels.length;    while (i--) {      var panel = visiblePanels[i];      if (panel && panel.settings.autohide) {        panel.hide();        visiblePanels.splice(i, 1);      }    }  };  function removeVisiblePanel(panel) {    var i;    i = visiblePanels.length;    while (i--) {      if (visiblePanels[i] === panel) {        visiblePanels.splice(i, 1);      }    }    i = zOrder.length;    while (i--) {      if (zOrder[i] === panel) {        zOrder.splice(i, 1);      }    }  }  var windows = [];  var oldMetaValue = '';  function toggleFullScreenState(state) {    var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';    var viewport = global$7('meta[name=viewport]')[0], contentValue;    if (global$1.overrideViewPort === false) {      return;    }    if (!viewport) {      viewport = document.createElement('meta');      viewport.setAttribute('name', 'viewport');      document.getElementsByTagName('head')[0].appendChild(viewport);    }    contentValue = viewport.getAttribute('content');    if (contentValue && typeof oldMetaValue !== 'undefined') {      oldMetaValue = contentValue;    }    viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);  }  function toggleBodyFullScreenClasses(classPrefix, state) {    if (checkFullscreenWindows() && state === false) {      global$7([        document.documentElement,        document.body      ]).removeClass(classPrefix + 'fullscreen');    }  }  function checkFullscreenWindows() {    for (var i = 0; i < windows.length; i++) {      if (windows[i]._fullscreen) {        return true;      }    }    return false;  }  function handleWindowResize() {    if (!global$1.desktop) {      var lastSize_1 = {        w: window.innerWidth,        h: window.innerHeight      };      global$3.setInterval(function () {        var w = window.innerWidth, h = window.innerHeight;        if (lastSize_1.w !== w || lastSize_1.h !== h) {          lastSize_1 = {            w: w,            h: h          };          global$7(window).trigger('resize');        }      }, 100);    }    function reposition() {      var i;      var rect = funcs.getWindowSize();      var layoutRect;      for (i = 0; i < windows.length; i++) {        layoutRect = windows[i].layoutRect();        windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));      }    }    global$7(window).on('resize', reposition);  }  var Window = FloatPanel.extend({    modal: true,    Defaults: {      border: 1,      layout: 'flex',      containerCls: 'panel',      role: 'dialog',      callbacks: {        submit: function () {          this.fire('submit', { data: this.toJSON() });        },        close: function () {          this.close();        }      }    },    init: function (settings) {      var self = this;      self._super(settings);      if (self.isRtl()) {        self.classes.add('rtl');      }      self.classes.add('window');      self.bodyClasses.add('window-body');      self.state.set('fixed', true);      if (settings.buttons) {        self.statusbar = new Panel({          layout: 'flex',          border: '1 0 0 0',          spacing: 3,          padding: 10,          align: 'center',          pack: self.isRtl() ? 'start' : 'end',          defaults: { type: 'button' },          items: settings.buttons        });        self.statusbar.classes.add('foot');        self.statusbar.parent(self);      }      self.on('click', function (e) {        var closeClass = self.classPrefix + 'close';        if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {          self.close();        }      });      self.on('cancel', function () {        self.close();      });      self.on('move', function (e) {        if (e.control === self) {          FloatPanel.hideAll();        }      });      self.aria('describedby', self.describedBy || self._id + '-none');      self.aria('label', settings.title);      self._fullscreen = false;    },    recalc: function () {      var self = this;      var statusbar = self.statusbar;      var layoutRect, width, x, needsRecalc;      if (self._fullscreen) {        self.layoutRect(funcs.getWindowSize());        self.layoutRect().contentH = self.layoutRect().innerH;      }      self._super();      layoutRect = self.layoutRect();      if (self.settings.title && !self._fullscreen) {        width = layoutRect.headerW;        if (width > layoutRect.w) {          x = layoutRect.x - Math.max(0, width / 2);          self.layoutRect({            w: width,            x: x          });          needsRecalc = true;        }      }      if (statusbar) {        statusbar.layoutRect({ w: self.layoutRect().innerW }).recalc();        width = statusbar.layoutRect().minW + layoutRect.deltaW;        if (width > layoutRect.w) {          x = layoutRect.x - Math.max(0, width - layoutRect.w);          self.layoutRect({            w: width,            x: x          });          needsRecalc = true;        }      }      if (needsRecalc) {        self.recalc();      }    },    initLayoutRect: function () {      var self = this;      var layoutRect = self._super();      var deltaH = 0, headEl;      if (self.settings.title && !self._fullscreen) {        headEl = self.getEl('head');        var size = funcs.getSize(headEl);        layoutRect.headerW = size.width;        layoutRect.headerH = size.height;        deltaH += layoutRect.headerH;      }      if (self.statusbar) {        deltaH += self.statusbar.layoutRect().h;      }      layoutRect.deltaH += deltaH;      layoutRect.minH += deltaH;      layoutRect.h += deltaH;      var rect = funcs.getWindowSize();      layoutRect.x = self.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);      layoutRect.y = self.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);      return layoutRect;    },    renderHtml: function () {      var self = this, layout = self._layout, id = self._id, prefix = self.classPrefix;      var settings = self.settings;      var headerHtml = '', footerHtml = '', html = settings.html;      self.preRender();      layout.preRender(self);      if (settings.title) {        headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';      }      if (settings.url) {        html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';      }      if (typeof html === 'undefined') {        html = layout.renderHtml(self);      }      if (self.statusbar) {        footerHtml = self.statusbar.renderHtml();      }      return '<div id="' + id + '" class="' + self.classes + '" hidefocus="1">' + '<div class="' + self.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';    },    fullscreen: function (state) {      var self = this;      var documentElement = document.documentElement;      var slowRendering;      var prefix = self.classPrefix;      var layoutRect;      if (state !== self._fullscreen) {        global$7(window).on('resize', function () {          var time;          if (self._fullscreen) {            if (!slowRendering) {              time = new Date().getTime();              var rect = funcs.getWindowSize();              self.moveTo(0, 0).resizeTo(rect.w, rect.h);              if (new Date().getTime() - time > 50) {                slowRendering = true;              }            } else {              if (!self._timer) {                self._timer = global$3.setTimeout(function () {                  var rect = funcs.getWindowSize();                  self.moveTo(0, 0).resizeTo(rect.w, rect.h);                  self._timer = 0;                }, 50);              }            }          }        });        layoutRect = self.layoutRect();        self._fullscreen = state;        if (!state) {          self.borderBox = $_889epm17vjh8lz7n9.parseBox(self.settings.border);          self.getEl('head').style.display = '';          layoutRect.deltaH += layoutRect.headerH;          global$7([            documentElement,            document.body          ]).removeClass(prefix + 'fullscreen');          self.classes.remove('fullscreen');          self.moveTo(self._initial.x, self._initial.y).resizeTo(self._initial.w, self._initial.h);        } else {          self._initial = {            x: layoutRect.x,            y: layoutRect.y,            w: layoutRect.w,            h: layoutRect.h          };          self.borderBox = $_889epm17vjh8lz7n9.parseBox('0');          self.getEl('head').style.display = 'none';          layoutRect.deltaH -= layoutRect.headerH + 2;          global$7([            documentElement,            document.body          ]).addClass(prefix + 'fullscreen');          self.classes.add('fullscreen');          var rect = funcs.getWindowSize();          self.moveTo(0, 0).resizeTo(rect.w, rect.h);        }      }      return self.reflow();    },    postRender: function () {      var self = this;      var startPos;      setTimeout(function () {        self.classes.add('in');        self.fire('open');      }, 0);      self._super();      if (self.statusbar) {        self.statusbar.postRender();      }      self.focus();      this.dragHelper = new DragHelper(self._id + '-dragh', {        start: function () {          startPos = {            x: self.layoutRect().x,            y: self.layoutRect().y          };        },        drag: function (e) {          self.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);        }      });      self.on('submit', function (e) {        if (!e.isDefaultPrevented()) {          self.close();        }      });      windows.push(self);      toggleFullScreenState(true);    },    submit: function () {      return this.fire('submit', { data: this.toJSON() });    },    remove: function () {      var self = this;      var i;      self.dragHelper.destroy();      self._super();      if (self.statusbar) {        this.statusbar.remove();      }      toggleBodyFullScreenClasses(self.classPrefix, false);      i = windows.length;      while (i--) {        if (windows[i] === self) {          windows.splice(i, 1);        }      }      toggleFullScreenState(windows.length > 0);    },    getContentWindow: function () {      var ifr = this.getEl().getElementsByTagName('iframe')[0];      return ifr ? ifr.contentWindow : null;    }  });  handleWindowResize();  var MessageBox = Window.extend({    init: function (settings) {      settings = {        border: 1,        padding: 20,        layout: 'flex',        pack: 'center',        align: 'center',        containerCls: 'panel',        autoScroll: true,        buttons: {          type: 'button',          text: 'Ok',          action: 'ok'        },        items: {          type: 'label',          multiline: true,          maxWidth: 500,          maxHeight: 200        }      };      this._super(settings);    },    Statics: {      OK: 1,      OK_CANCEL: 2,      YES_NO: 3,      YES_NO_CANCEL: 4,      msgBox: function (settings) {        var buttons;        var callback = settings.callback || function () {        };        function createButton(text, status, primary) {          return {            type: 'button',            text: text,            subtype: primary ? 'primary' : '',            onClick: function (e) {              e.control.parents()[1].close();              callback(status);            }          };        }        switch (settings.buttons) {        case MessageBox.OK_CANCEL:          buttons = [            createButton('Ok', true, true),            createButton('Cancel', false)          ];          break;        case MessageBox.YES_NO:        case MessageBox.YES_NO_CANCEL:          buttons = [            createButton('Yes', 1, true),            createButton('No', 0)          ];          if (settings.buttons === MessageBox.YES_NO_CANCEL) {            buttons.push(createButton('Cancel', -1));          }          break;        default:          buttons = [createButton('Ok', true, true)];          break;        }        return new Window({          padding: 20,          x: settings.x,          y: settings.y,          minWidth: 300,          minHeight: 100,          layout: 'flex',          pack: 'center',          align: 'center',          buttons: buttons,          title: settings.title,          role: 'alertdialog',          items: {            type: 'label',            multiline: true,            maxWidth: 500,            maxHeight: 200,            text: settings.text          },          onPostRender: function () {            this.aria('describedby', this.items()[0]._id);          },          onClose: settings.onClose,          onCancel: function () {            callback(false);          }        }).renderTo(document.body).reflow();      },      alert: function (settings, callback) {        if (typeof settings === 'string') {          settings = { text: settings };        }        settings.callback = callback;        return MessageBox.msgBox(settings);      },      confirm: function (settings, callback) {        if (typeof settings === 'string') {          settings = { text: settings };        }        settings.callback = callback;        settings.buttons = MessageBox.OK_CANCEL;        return MessageBox.msgBox(settings);      }    }  });  function WindowManagerImpl (editor) {    var open = function (args, params, closeCallback) {      var win;      args.title = args.title || ' ';      args.url = args.url || args.file;      if (args.url) {        args.width = parseInt(args.width || 320, 10);        args.height = parseInt(args.height || 240, 10);      }      if (args.body) {        args.items = {          defaults: args.defaults,          type: args.bodyType || 'form',          items: args.body,          data: args.data,          callbacks: args.commands        };      }      if (!args.url && !args.buttons) {        args.buttons = [          {            text: 'Ok',            subtype: 'primary',            onclick: function () {              win.find('form')[0].submit();            }          },          {            text: 'Cancel',            onclick: function () {              win.close();            }          }        ];      }      win = new Window(args);      win.on('close', function () {        closeCallback(win);      });      if (args.data) {        win.on('postRender', function () {          this.find('*').each(function (ctrl) {            var name = ctrl.name();            if (name in args.data) {              ctrl.value(args.data[name]);            }          });        });      }      win.features = args || {};      win.params = params || {};      win = win.renderTo(document.body).reflow();      return win;    };    var alert = function (message, choiceCallback, closeCallback) {      var win;      win = MessageBox.alert(message, function () {        choiceCallback();      });      win.on('close', function () {        closeCallback(win);      });      return win;    };    var confirm = function (message, choiceCallback, closeCallback) {      var win;      win = MessageBox.confirm(message, function (state) {        choiceCallback(state);      });      win.on('close', function () {        closeCallback(win);      });      return win;    };    var close = function (window) {      window.close();    };    var getParams = function (window) {      return window.params;    };    var setParams = function (window, params) {      window.params = params;    };    return {      open: open,      alert: alert,      confirm: confirm,      close: close,      getParams: getParams,      setParams: setParams    };  }  var get = function (editor, panel) {    var renderUI = function () {      return $_fduguf170jh8lz7ks.renderUI(editor, panel);    };    return {      renderUI: renderUI,      getNotificationManagerImpl: function () {        return NotificationManagerImpl(editor);      },      getWindowManagerImpl: function () {        return WindowManagerImpl(editor);      }    };  };  var $_952h616zjh8lz7kr = { get: get };  var global$12 = typeof window !== 'undefined' ? window : Function('return this;')();  var path = function (parts, scope) {    var o = scope !== undefined && scope !== null ? scope : global$12;    for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)      o = o[parts[i]];    return o;  };  var resolve = function (p, scope) {    var parts = p.split('.');    return path(parts, scope);  };  var step = function (o, part) {    if (o[part] === undefined || o[part] === null)      o[part] = {};    return o[part];  };  var forge = function (parts, target) {    var o = target !== undefined ? target : global$12;    for (var i = 0; i < parts.length; ++i)      o = step(o, parts[i]);    return o;  };  var namespace = function (name, target) {    var parts = name.split('.');    return forge(parts, target);  };  var $_3zfq6518njh8lz7q1 = {    path: path,    resolve: resolve,    forge: forge,    namespace: namespace  };  var unsafe = function (name, scope) {    return $_3zfq6518njh8lz7q1.resolve(name, scope);  };  var getOrDie = function (name, scope) {    var actual = unsafe(name, scope);    if (actual === undefined || actual === null)      throw name + ' not available on this browser';    return actual;  };  var $_791eis18mjh8lz7py = { getOrDie: getOrDie };  function FileReader () {    var f = $_791eis18mjh8lz7py.getOrDie('FileReader');    return new f();  }  var global$13 = tinymce.util.Tools.resolve('tinymce.util.Promise');  var blobToBase64 = function (blob) {    return new global$13(function (resolve) {      var reader = new FileReader();      reader.onloadend = function () {        resolve(reader.result.split(',')[1]);      };      reader.readAsDataURL(blob);    });  };  var $_cxmuw818kjh8lz7pu = { blobToBase64: blobToBase64 };  var pickFile = function () {    return new global$13(function (resolve) {      var fileInput;      fileInput = document.createElement('input');      fileInput.type = 'file';      fileInput.style.position = 'fixed';      fileInput.style.left = 0;      fileInput.style.top = 0;      fileInput.style.opacity = 0.001;      document.body.appendChild(fileInput);      fileInput.onchange = function (e) {        resolve(Array.prototype.slice.call(e.target.files));      };      fileInput.click();      fileInput.parentNode.removeChild(fileInput);    });  };  var $_8djtgr18qjh8lz7q4 = { pickFile: pickFile };  var count$1 = 0;  var seed = function () {    var rnd = function () {      return Math.round(Math.random() * 4294967295).toString(36);    };    return 's' + Date.now().toString(36) + rnd() + rnd() + rnd();  };  var uuid = function (prefix) {    return prefix + count$1++ + seed();  };  var $_bp4qdf18sjh8lz7q8 = { uuid: uuid };  var create$1 = function (dom, rng) {    var bookmark = {};    function setupEndPoint(start) {      var offsetNode, container, offset;      container = rng[start ? 'startContainer' : 'endContainer'];      offset = rng[start ? 'startOffset' : 'endOffset'];      if (container.nodeType === 1) {        offsetNode = dom.create('span', { 'data-mce-type': 'bookmark' });        if (container.hasChildNodes()) {          offset = Math.min(offset, container.childNodes.length - 1);          if (start) {            container.insertBefore(offsetNode, container.childNodes[offset]);          } else {            dom.insertAfter(offsetNode, container.childNodes[offset]);          }        } else {          container.appendChild(offsetNode);        }        container = offsetNode;        offset = 0;      }      bookmark[start ? 'startContainer' : 'endContainer'] = container;      bookmark[start ? 'startOffset' : 'endOffset'] = offset;    }    setupEndPoint(true);    if (!rng.collapsed) {      setupEndPoint();    }    return bookmark;  };  var resolve$1 = function (dom, bookmark) {    function restoreEndPoint(start) {      var container, offset, node;      function nodeIndex(container) {        var node = container.parentNode.firstChild, idx = 0;        while (node) {          if (node === container) {            return idx;          }          if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {            idx++;          }          node = node.nextSibling;        }        return -1;      }      container = node = bookmark[start ? 'startContainer' : 'endContainer'];      offset = bookmark[start ? 'startOffset' : 'endOffset'];      if (!container) {        return;      }      if (container.nodeType === 1) {        offset = nodeIndex(container);        container = container.parentNode;        dom.remove(node);      }      bookmark[start ? 'startContainer' : 'endContainer'] = container;      bookmark[start ? 'startOffset' : 'endOffset'] = offset;    }    restoreEndPoint(true);    restoreEndPoint();    var rng = dom.createRng();    rng.setStart(bookmark.startContainer, bookmark.startOffset);    if (bookmark.endContainer) {      rng.setEnd(bookmark.endContainer, bookmark.endOffset);    }    return rng;  };  var $_8zzspk18ujh8lz7qb = {    create: create$1,    resolve: resolve$1  };  var global$14 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');  var global$15 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');  var getSelectedElements = function (rootElm, startNode, endNode) {    var walker, node;    var elms = [];    walker = new global$14(startNode, rootElm);    for (node = startNode; node; node = walker.next()) {      if (node.nodeType === 1) {        elms.push(node);      }      if (node === endNode) {        break;      }    }    return elms;  };  var unwrapElements = function (editor, elms) {    var bookmark, dom, selection;    dom = editor.dom;    selection = editor.selection;    bookmark = $_8zzspk18ujh8lz7qb.create(dom, selection.getRng());    global$4.each(elms, function (elm) {      editor.dom.remove(elm, true);    });    selection.setRng($_8zzspk18ujh8lz7qb.resolve(dom, bookmark));  };  var isLink = function (elm) {    return elm.nodeName === 'A' && elm.hasAttribute('href');  };  var getParentAnchorOrSelf = function (dom, elm) {    var anchorElm = dom.getParent(elm, isLink);    return anchorElm ? anchorElm : elm;  };  var getSelectedAnchors = function (editor) {    var startElm, endElm, rootElm, anchorElms, selection, dom, rng;    selection = editor.selection;    dom = editor.dom;    rng = selection.getRng();    startElm = getParentAnchorOrSelf(dom, global$15.getNode(rng.startContainer, rng.startOffset));    endElm = global$15.getNode(rng.endContainer, rng.endOffset);    rootElm = editor.getBody();    anchorElms = global$4.grep(getSelectedElements(rootElm, startElm, endElm), isLink);    return anchorElms;  };  var unlinkSelection = function (editor) {    unwrapElements(editor, getSelectedAnchors(editor));  };  var $_5urhtf18tjh8lz7q9 = { unlinkSelection: unlinkSelection };  var createTableHtml = function (cols, rows) {    var x, y, html;    html = '<table data-mce-id="mce" style="width: 100%">';    html += '<tbody>';    for (y = 0; y < rows; y++) {      html += '<tr>';      for (x = 0; x < cols; x++) {        html += '<td><br></td>';      }      html += '</tr>';    }    html += '</tbody>';    html += '</table>';    return html;  };  var getInsertedElement = function (editor) {    var elms = editor.dom.select('*[data-mce-id]');    return elms[0];  };  var insertTableHtml = function (editor, cols, rows) {    editor.undoManager.transact(function () {      var tableElm, cellElm;      editor.insertContent(createTableHtml(cols, rows));      tableElm = getInsertedElement(editor);      tableElm.removeAttribute('data-mce-id');      cellElm = editor.dom.select('td,th', tableElm);      editor.selection.setCursorLocation(cellElm[0], 0);    });  };  var insertTable = function (editor, cols, rows) {    editor.plugins.table ? editor.plugins.table.insertTable(cols, rows) : insertTableHtml(editor, cols, rows);  };  var formatBlock = function (editor, formatName) {    editor.execCommand('FormatBlock', false, formatName);  };  var insertBlob = function (editor, base64, blob) {    var blobCache, blobInfo;    blobCache = editor.editorUpload.blobCache;    blobInfo = blobCache.create($_bp4qdf18sjh8lz7q8.uuid('mceu'), blob, base64);    blobCache.add(blobInfo);    editor.insertContent(editor.dom.createHTML('img', { src: blobInfo.blobUri() }));  };  var collapseSelectionToEnd = function (editor) {    editor.selection.collapse(false);  };  var unlink = function (editor) {    editor.focus();    $_5urhtf18tjh8lz7q9.unlinkSelection(editor);    collapseSelectionToEnd(editor);  };  var changeHref = function (editor, elm, url) {    editor.focus();    editor.dom.setAttrib(elm, 'href', url);    collapseSelectionToEnd(editor);  };  var insertLink = function (editor, url) {    editor.execCommand('mceInsertLink', false, { href: url });    collapseSelectionToEnd(editor);  };  var updateOrInsertLink = function (editor, url) {    var elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]');    elm ? changeHref(editor, elm, url) : insertLink(editor, url);  };  var createLink = function (editor, url) {    url.trim().length === 0 ? unlink(editor) : updateOrInsertLink(editor, url);  };  var $_3usbxv18rjh8lz7q5 = {    insertTable: insertTable,    formatBlock: formatBlock,    insertBlob: insertBlob,    createLink: createLink,    unlink: unlink  };  var addHeaderButtons = function (editor) {    var formatBlock = function (name) {      return function () {        $_3usbxv18rjh8lz7q5.formatBlock(editor, name);      };    };    for (var i = 1; i < 6; i++) {      var name_1 = 'h' + i;      editor.addButton(name_1, {        text: name_1.toUpperCase(),        tooltip: 'Heading ' + i,        stateSelector: name_1,        onclick: formatBlock(name_1),        onPostRender: function () {          var span = this.getEl().firstChild.firstChild;          span.style.fontWeight = 'bold';        }      });    }  };  var addToEditor = function (editor, panel) {    editor.addButton('quicklink', {      icon: 'link',      tooltip: 'Insert/Edit link',      stateSelector: 'a[href]',      onclick: function () {        panel.showForm(editor, 'quicklink');      }    });    editor.addButton('quickimage', {      icon: 'image',      tooltip: 'Insert image',      onclick: function () {        $_8djtgr18qjh8lz7q4.pickFile().then(function (files) {          var blob = files[0];          $_cxmuw818kjh8lz7pu.blobToBase64(blob).then(function (base64) {            $_3usbxv18rjh8lz7q5.insertBlob(editor, base64, blob);          });        });      }    });    editor.addButton('quicktable', {      icon: 'table',      tooltip: 'Insert table',      onclick: function () {        panel.hide();        $_3usbxv18rjh8lz7q5.insertTable(editor, 2, 2);      }    });    addHeaderButtons(editor);  };  var $_67na6j18jjh8lz7pt = { addToEditor: addToEditor };  var getUiContainerDelta$1 = function () {    var uiContainer = global$1.container;    if (uiContainer && global$2.DOM.getStyle(uiContainer, 'position', true) !== 'static') {      var containerPos = global$2.DOM.getPos(uiContainer);      var dx = containerPos.x - uiContainer.scrollLeft;      var dy = containerPos.y - uiContainer.scrollTop;      return Option.some({        x: dx,        y: dy      });    } else {      return Option.none();    }  };  var $_4oiq8718yjh8lz7qi = { getUiContainerDelta: getUiContainerDelta$1 };  var isDomainLike = function (href) {    return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim());  };  var isAbsolute = function (href) {    return /^https?:\/\//.test(href.trim());  };  var $_g5hvgx190jh8lz7r0 = {    isDomainLike: isDomainLike,    isAbsolute: isAbsolute  };  var focusFirstTextBox = function (form) {    form.find('textbox').eq(0).each(function (ctrl) {      ctrl.focus();    });  };  var createForm = function (name, spec) {    var form = global$11.create(global$4.extend({      type: 'form',      layout: 'flex',      direction: 'row',      padding: 5,      name: name,      spacing: 3    }, spec));    form.on('show', function () {      focusFirstTextBox(form);    });    return form;  };  var toggleVisibility = function (ctrl, state) {    return state ? ctrl.show() : ctrl.hide();  };  var askAboutPrefix = function (editor, href) {    return new global$13(function (resolve) {      editor.windowManager.confirm('The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (result) {        var output = result === true ? 'http://' + href : href;        resolve(output);      });    });  };  var convertLinkToAbsolute = function (editor, href) {    return !$_g5hvgx190jh8lz7r0.isAbsolute(href) && $_g5hvgx190jh8lz7r0.isDomainLike(href) ? askAboutPrefix(editor, href) : global$13.resolve(href);  };  var createQuickLinkForm = function (editor, hide) {    var attachState = {};    var unlink = function () {      editor.focus();      $_3usbxv18rjh8lz7q5.unlink(editor);      hide();    };    var onChangeHandler = function (e) {      var meta = e.meta;      if (meta && meta.attach) {        attachState = {          href: this.value(),          attach: meta.attach        };      }    };    var onShowHandler = function (e) {      if (e.control === this) {        var elm = void 0, linkurl = '';        elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]');        if (elm) {          linkurl = editor.dom.getAttrib(elm, 'href');        }        this.fromJSON({ linkurl: linkurl });        toggleVisibility(this.find('#unlink'), elm);        this.find('#linkurl')[0].focus();      }    };    return createForm('quicklink', {      items: [        {          type: 'button',          name: 'unlink',          icon: 'unlink',          onclick: unlink,          tooltip: 'Remove link'        },        {          type: 'filepicker',          name: 'linkurl',          placeholder: 'Paste or type a link',          filetype: 'file',          onchange: onChangeHandler        },        {          type: 'button',          icon: 'checkmark',          subtype: 'primary',          tooltip: 'Ok',          onclick: 'submit'        }      ],      onshow: onShowHandler,      onsubmit: function (e) {        convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) {          editor.undoManager.transact(function () {            if (url === attachState.href) {              attachState.attach();              attachState = {};            }            $_3usbxv18rjh8lz7q5.createLink(editor, url);          });          hide();        });      }    });  };  var $_fopz0018zjh8lz7qx = { createQuickLinkForm: createQuickLinkForm };  var getSelectorStateResult = function (itemName, item) {    var result = function (selector, handler) {      return {        selector: selector,        handler: handler      };    };    var activeHandler = function (state) {      item.active(state);    };    var disabledHandler = function (state) {      item.disabled(state);    };    if (item.settings.stateSelector) {      return result(item.settings.stateSelector, activeHandler);    }    if (item.settings.disabledStateSelector) {      return result(item.settings.disabledStateSelector, disabledHandler);    }    return null;  };  var bindSelectorChanged = function (editor, itemName, item) {    return function () {      var result = getSelectorStateResult(itemName, item);      if (result !== null) {        editor.selection.selectorChanged(result.selector, result.handler);      }    };  };  var itemsToArray$1 = function (items) {    if ($_795vzu17hjh8lz7lf.isArray(items)) {      return items;    } else if ($_795vzu17hjh8lz7lf.isString(items)) {      return items.split(/[ ,]/);    }    return [];  };  var create$2 = function (editor, name, items) {    var toolbarItems = [];    var buttonGroup;    if (!items) {      return;    }    global$4.each(itemsToArray$1(items), function (item) {      if (item === '|') {        buttonGroup = null;      } else {        if (editor.buttons[item]) {          if (!buttonGroup) {            buttonGroup = {              type: 'buttongroup',              items: []            };            toolbarItems.push(buttonGroup);          }          var button = editor.buttons[item];          if ($_795vzu17hjh8lz7lf.isFunction(button)) {            button = button();          }          button.type = button.type || 'button';          button = global$11.create(button);          button.on('postRender', bindSelectorChanged(editor, item, button));          buttonGroup.items.push(button);        }      }    });    return global$11.create({      type: 'toolbar',      layout: 'flow',      name: name,      items: toolbarItems    });  };  var $_5zu088191jh8lz7r1 = { create: create$2 };  var create$3 = function () {    var panel, currentRect;    var createToolbars = function (editor, toolbars) {      return global$4.map(toolbars, function (toolbar) {        return $_5zu088191jh8lz7r1.create(editor, toolbar.id, toolbar.items);      });    };    var hasToolbarItems = function (toolbar) {      return toolbar.items().length > 0;    };    var create = function (editor, toolbars) {      var items = createToolbars(editor, toolbars).concat([        $_5zu088191jh8lz7r1.create(editor, 'text', $_frnzmx17ejh8lz7lb.getTextSelectionToolbarItems(editor)),        $_5zu088191jh8lz7r1.create(editor, 'insert', $_frnzmx17ejh8lz7lb.getInsertToolbarItems(editor)),        $_fopz0018zjh8lz7qx.createQuickLinkForm(editor, hide)      ]);      return global$11.create({        type: 'floatpanel',        role: 'dialog',        classes: 'tinymce tinymce-inline arrow',        ariaLabel: 'Inline toolbar',        layout: 'flex',        direction: 'column',        align: 'stretch',        autohide: false,        autofix: true,        fixed: true,        border: 1,        items: global$4.grep(items, hasToolbarItems),        oncancel: function () {          editor.focus();        }      });    };    var showPanel = function (panel) {      if (panel) {        panel.show();      }    };    var movePanelTo = function (panel, pos) {      panel.moveTo(pos.x, pos.y);    };    var togglePositionClass = function (panel, relPos) {      relPos = relPos ? relPos.substr(0, 2) : '';      global$4.each({        t: 'down',        b: 'up',        c: 'center'      }, function (cls, pos) {        panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1));      });      if (relPos === 'cr') {        panel.classes.toggle('arrow-left', true);        panel.classes.toggle('arrow-right', false);      } else if (relPos === 'cl') {        panel.classes.toggle('arrow-left', true);        panel.classes.toggle('arrow-right', true);      } else {        global$4.each({          l: 'left',          r: 'right'        }, function (cls, pos) {          panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1));        });      }    };    var showToolbar = function (panel, id) {      var toolbars = panel.items().filter('#' + id);      if (toolbars.length > 0) {        toolbars[0].show();        panel.reflow();        return true;      }      return false;    };    var repositionPanelAt = function (panel, id, editor, targetRect) {      var contentAreaRect, panelRect, result, userConstainHandler;      userConstainHandler = $_frnzmx17ejh8lz7lb.getPositionHandler(editor);      contentAreaRect = $_82t0yo177jh8lz7l1.getContentAreaRect(editor);      panelRect = global$2.DOM.getRect(panel.getEl());      if (id === 'insert') {        result = $_7c1jsb17ijh8lz7lh.calcInsert(targetRect, contentAreaRect, panelRect);      } else {        result = $_7c1jsb17ijh8lz7lh.calc(targetRect, contentAreaRect, panelRect);      }      if (result) {        var delta = $_4oiq8718yjh8lz7qi.getUiContainerDelta().getOr({          x: 0,          y: 0        });        var transposedPanelRect = {          x: result.rect.x - delta.x,          y: result.rect.y - delta.y,          w: result.rect.w,          h: result.rect.h        };        currentRect = targetRect;        movePanelTo(panel, $_7c1jsb17ijh8lz7lh.userConstrain(userConstainHandler, targetRect, contentAreaRect, transposedPanelRect));        togglePositionClass(panel, result.position);        return true;      } else {        return false;      }    };    var showPanelAt = function (panel, id, editor, targetRect) {      showPanel(panel);      panel.items().hide();      if (!showToolbar(panel, id)) {        hide();        return;      }      if (repositionPanelAt(panel, id, editor, targetRect) === false) {        hide();      }    };    var hasFormVisible = function () {      return panel.items().filter('form:visible').length > 0;    };    var showForm = function (editor, id) {      if (panel) {        panel.items().hide();        if (!showToolbar(panel, id)) {          hide();          return;        }        var contentAreaRect = void 0, panelRect = void 0, result = void 0, userConstainHandler = void 0;        showPanel(panel);        panel.items().hide();        showToolbar(panel, id);        userConstainHandler = $_frnzmx17ejh8lz7lb.getPositionHandler(editor);        contentAreaRect = $_82t0yo177jh8lz7l1.getContentAreaRect(editor);        panelRect = global$2.DOM.getRect(panel.getEl());        result = $_7c1jsb17ijh8lz7lh.calc(currentRect, contentAreaRect, panelRect);        if (result) {          panelRect = result.rect;          movePanelTo(panel, $_7c1jsb17ijh8lz7lh.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect));          togglePositionClass(panel, result.position);        }      }    };    var show = function (editor, id, targetRect, toolbars) {      if (!panel) {        $_dincot17djh8lz7l9.fireBeforeRenderUI(editor);        panel = create(editor, toolbars);        panel.renderTo().reflow().moveTo(targetRect.x, targetRect.y);        editor.nodeChanged();      }      showPanelAt(panel, id, editor, targetRect);    };    var reposition = function (editor, id, targetRect) {      if (panel) {        repositionPanelAt(panel, id, editor, targetRect);      }    };    var hide = function () {      if (panel) {        panel.hide();      }    };    var focus = function () {      if (panel) {        panel.find('toolbar:visible').eq(0).each(function (item) {          item.focus(true);        });      }    };    var remove = function () {      if (panel) {        panel.remove();        panel = null;      }    };    var inForm = function () {      return panel && panel.visible() && hasFormVisible();    };    return {      show: show,      showForm: showForm,      reposition: reposition,      inForm: inForm,      hide: hide,      focus: focus,      remove: remove    };  };  var Layout$1 = global$8.extend({    Defaults: {      firstControlClass: 'first',      lastControlClass: 'last'    },    init: function (settings) {      this.settings = global$4.extend({}, this.Defaults, settings);    },    preRender: function (container) {      container.bodyClasses.add(this.settings.containerClass);    },    applyClasses: function (items) {      var self = this;      var settings = self.settings;      var firstClass, lastClass, firstItem, lastItem;      firstClass = settings.firstControlClass;      lastClass = settings.lastControlClass;      items.each(function (item) {        item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);        if (item.visible()) {          if (!firstItem) {            firstItem = item;          }          lastItem = item;        }      });      if (firstItem) {        firstItem.classes.add(firstClass);      }      if (lastItem) {        lastItem.classes.add(lastClass);      }    },    renderHtml: function (container) {      var self = this;      var html = '';      self.applyClasses(container.items());      container.items().each(function (item) {        html += item.renderHtml();      });      return html;    },    recalc: function () {    },    postRender: function () {    },    isNative: function () {      return false;    }  });  var AbsoluteLayout = Layout$1.extend({    Defaults: {      containerClass: 'abs-layout',      controlClass: 'abs-layout-item'    },    recalc: function (container) {      container.items().filter(':visible').each(function (ctrl) {        var settings = ctrl.settings;        ctrl.layoutRect({          x: settings.x,          y: settings.y,          w: settings.w,          h: settings.h        });        if (ctrl.recalc) {          ctrl.recalc();        }      });    },    renderHtml: function (container) {      return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);    }  });  var Button = Widget.extend({    Defaults: {      classes: 'widget btn',      role: 'button'    },    init: function (settings) {      var self = this;      var size;      self._super(settings);      settings = self.settings;      size = self.settings.size;      self.on('click mousedown', function (e) {        e.preventDefault();      });      self.on('touchstart', function (e) {        self.fire('click', e);        e.preventDefault();      });      if (settings.subtype) {        self.classes.add(settings.subtype);      }      if (size) {        self.classes.add('btn-' + size);      }      if (settings.icon) {        self.icon(settings.icon);      }    },    icon: function (icon) {      if (!arguments.length) {        return this.state.get('icon');      }      this.state.set('icon', icon);      return this;    },    repaint: function () {      var btnElm = this.getEl().firstChild;      var btnStyle;      if (btnElm) {        btnStyle = btnElm.style;        btnStyle.width = btnStyle.height = '100%';      }      this._super();    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      var icon = self.state.get('icon'), image;      var text = self.state.get('text');      var textHtml = '';      var ariaPressed;      var settings = self.settings;      image = settings.image;      if (image) {        icon = 'none';        if (typeof image !== 'string') {          image = window.getSelection ? image[0] : image[1];        }        image = ' style="background-image: url(\'' + image + '\')"';      } else {        image = '';      }      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';    },    bindStates: function () {      var self = this, $ = self.$, textCls = self.classPrefix + 'txt';      function setButtonText(text) {        var $span = $('span.' + textCls, self.getEl());        if (text) {          if (!$span[0]) {            $('button:first', self.getEl()).append('<span class="' + textCls + '"></span>');            $span = $('span.' + textCls, self.getEl());          }          $span.html(self.encode(text));        } else {          $span.remove();        }        self.classes.toggle('btn-has-text', !!text);      }      self.state.on('change:text', function (e) {        setButtonText(e.value);      });      self.state.on('change:icon', function (e) {        var icon = e.value;        var prefix = self.classPrefix;        self.settings.icon = icon;        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';        var btnElm = self.getEl().firstChild;        var iconElm = btnElm.getElementsByTagName('i')[0];        if (icon) {          if (!iconElm || iconElm !== btnElm.firstChild) {            iconElm = document.createElement('i');            btnElm.insertBefore(iconElm, btnElm.firstChild);          }          iconElm.className = icon;        } else if (iconElm) {          btnElm.removeChild(iconElm);        }        setButtonText(self.state.get('text'));      });      return self._super();    }  });  var BrowseButton = Button.extend({    init: function (settings) {      var self = this;      settings = global$4.extend({        text: 'Browse...',        multiple: false,        accept: null      }, settings);      self._super(settings);      self.classes.add('browsebutton');      if (settings.multiple) {        self.classes.add('multiple');      }    },    postRender: function () {      var self = this;      var input = funcs.create('input', {        type: 'file',        id: self._id + '-browse',        accept: self.settings.accept      });      self._super();      global$7(input).on('change', function (e) {        var files = e.target.files;        self.value = function () {          if (!files.length) {            return null;          } else if (self.settings.multiple) {            return files;          } else {            return files[0];          }        };        e.preventDefault();        if (files.length) {          self.fire('change', e);        }      });      global$7(input).on('click', function (e) {        e.stopPropagation();      });      global$7(self.getEl('button')).on('click', function (e) {        e.stopPropagation();        input.click();      });      self.getEl().appendChild(input);    },    remove: function () {      global$7(this.getEl('button')).off();      global$7(this.getEl('input')).off();      this._super();    }  });  var ButtonGroup = Container.extend({    Defaults: {      defaultType: 'button',      role: 'group'    },    renderHtml: function () {      var self = this, layout = self._layout;      self.classes.add('btn-group');      self.preRender();      layout.preRender(self);      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';    }  });  var Checkbox = Widget.extend({    Defaults: {      classes: 'checkbox',      role: 'checkbox',      checked: false    },    init: function (settings) {      var self = this;      self._super(settings);      self.on('click mousedown', function (e) {        e.preventDefault();      });      self.on('click', function (e) {        e.preventDefault();        if (!self.disabled()) {          self.checked(!self.checked());        }      });      self.checked(self.settings.checked);    },    checked: function (state) {      if (!arguments.length) {        return this.state.get('checked');      }      this.state.set('checked', state);      return this;    },    value: function (state) {      if (!arguments.length) {        return this.checked();      }      return this.checked(state);    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      return '<div id="' + id + '" class="' + self.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self.state.get('text')) + '</span>' + '</div>';    },    bindStates: function () {      var self = this;      function checked(state) {        self.classes.toggle('checked', state);        self.aria('checked', state);      }      self.state.on('change:text', function (e) {        self.getEl('al').firstChild.data = self.translate(e.value);      });      self.state.on('change:checked change:value', function (e) {        self.fire('change');        checked(e.value);      });      self.state.on('change:icon', function (e) {        var icon = e.value;        var prefix = self.classPrefix;        if (typeof icon === 'undefined') {          return self.settings.icon;        }        self.settings.icon = icon;        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';        var btnElm = self.getEl().firstChild;        var iconElm = btnElm.getElementsByTagName('i')[0];        if (icon) {          if (!iconElm || iconElm !== btnElm.firstChild) {            iconElm = document.createElement('i');            btnElm.insertBefore(iconElm, btnElm.firstChild);          }          iconElm.className = icon;        } else if (iconElm) {          btnElm.removeChild(iconElm);        }      });      if (self.state.get('checked')) {        checked(true);      }      return self._super();    }  });  var global$16 = tinymce.util.Tools.resolve('tinymce.util.VK');  var ComboBox = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      settings = self.settings;      self.classes.add('combobox');      self.subinput = true;      self.ariaTarget = 'inp';      settings.menu = settings.menu || settings.values;      if (settings.menu) {        settings.icon = 'caret';      }      self.on('click', function (e) {        var elm = e.target;        var root = self.getEl();        if (!global$7.contains(root, elm) && elm !== root) {          return;        }        while (elm && elm !== root) {          if (elm.id && elm.id.indexOf('-open') !== -1) {            self.fire('action');            if (settings.menu) {              self.showMenu();              if (e.aria) {                self.menu.items()[0].focus();              }            }          }          elm = elm.parentNode;        }      });      self.on('keydown', function (e) {        var rootControl;        if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {          e.preventDefault();          self.parents().reverse().each(function (ctrl) {            if (ctrl.toJSON) {              rootControl = ctrl;              return false;            }          });          self.fire('submit', { data: rootControl.toJSON() });        }      });      self.on('keyup', function (e) {        if (e.target.nodeName === 'INPUT') {          var oldValue = self.state.get('value');          var newValue = e.target.value;          if (newValue !== oldValue) {            self.state.set('value', newValue);            self.fire('autocomplete', e);          }        }      });      self.on('mouseover', function (e) {        var tooltip = self.tooltip().moveTo(-65535);        if (self.statusLevel() && e.target.className.indexOf(self.classPrefix + 'status') !== -1) {          var statusMessage = self.statusMessage() || 'Ok';          var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [            'bc-tc',            'bc-tl',            'bc-tr'          ]);          tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');          tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');          tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');          tooltip.moveRel(e.target, rel);        }      });    },    statusLevel: function (value) {      if (arguments.length > 0) {        this.state.set('statusLevel', value);      }      return this.state.get('statusLevel');    },    statusMessage: function (value) {      if (arguments.length > 0) {        this.state.set('statusMessage', value);      }      return this.state.get('statusMessage');    },    showMenu: function () {      var self = this;      var settings = self.settings;      var menu;      if (!self.menu) {        menu = settings.menu || [];        if (menu.length) {          menu = {            type: 'menu',            items: menu          };        } else {          menu.type = menu.type || 'menu';        }        self.menu = global$11.create(menu).parent(self).renderTo(self.getContainerElm());        self.fire('createmenu');        self.menu.reflow();        self.menu.on('cancel', function (e) {          if (e.control === self.menu) {            self.focus();          }        });        self.menu.on('show hide', function (e) {          e.control.items().each(function (ctrl) {            ctrl.active(ctrl.value() === self.value());          });        }).fire('show');        self.menu.on('select', function (e) {          self.value(e.control.value());        });        self.on('focusin', function (e) {          if (e.target.tagName.toUpperCase() === 'INPUT') {            self.menu.hide();          }        });        self.aria('expanded', true);      }      self.menu.show();      self.menu.layoutRect({ w: self.layoutRect().w });      self.menu.moveRel(self.getEl(), self.isRtl() ? [        'br-tr',        'tr-br'      ] : [        'bl-tl',        'tl-bl'      ]);    },    focus: function () {      this.getEl('inp').focus();    },    repaint: function () {      var self = this, elm = self.getEl(), openElm = self.getEl('open'), rect = self.layoutRect();      var width, lineHeight, innerPadding = 0;      var inputElm = elm.firstChild;      if (self.statusLevel() && self.statusLevel() !== 'none') {        innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);      }      if (openElm) {        width = rect.w - funcs.getSize(openElm).width - 10;      } else {        width = rect.w - 10;      }      var doc = document;      if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {        lineHeight = self.layoutRect().h - 2 + 'px';      }      global$7(inputElm).css({        width: width - innerPadding,        lineHeight: lineHeight      });      self._super();      return self;    },    postRender: function () {      var self = this;      global$7(this.getEl('inp')).on('change', function (e) {        self.state.set('value', e.target.value);        self.fire('change', e);      });      return self._super();    },    renderHtml: function () {      var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;      var value = self.state.get('value') || '';      var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';      if ('spellcheck' in settings) {        extraAttrs += ' spellcheck="' + settings.spellcheck + '"';      }      if (settings.maxLength) {        extraAttrs += ' maxlength="' + settings.maxLength + '"';      }      if (settings.size) {        extraAttrs += ' size="' + settings.size + '"';      }      if (settings.subtype) {        extraAttrs += ' type="' + settings.subtype + '"';      }      statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';      if (self.disabled()) {        extraAttrs += ' disabled="disabled"';      }      icon = settings.icon;      if (icon && icon !== 'caret') {        icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;      }      text = self.state.get('text');      if (icon || text) {        openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';        self.classes.add('has-open');      }      return '<div id="' + id + '" class="' + self.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';    },    value: function (value) {      if (arguments.length) {        this.state.set('value', value);        return this;      }      if (this.state.get('rendered')) {        this.state.set('value', this.getEl('inp').value);      }      return this.state.get('value');    },    showAutoComplete: function (items, term) {      var self = this;      if (items.length === 0) {        self.hideMenu();        return;      }      var insert = function (value, title) {        return function () {          self.fire('selectitem', {            title: title,            value: value          });        };      };      if (self.menu) {        self.menu.items().remove();      } else {        self.menu = global$11.create({          type: 'menu',          classes: 'combobox-menu',          layout: 'flow'        }).parent(self).renderTo();      }      global$4.each(items, function (item) {        self.menu.add({          text: item.title,          url: item.previewUrl,          match: term,          classes: 'menu-item-ellipsis',          onclick: insert(item.value, item.title)        });      });      self.menu.renderNew();      self.hideMenu();      self.menu.on('cancel', function (e) {        if (e.control.parent() === self.menu) {          e.stopPropagation();          self.focus();          self.hideMenu();        }      });      self.menu.on('select', function () {        self.focus();      });      var maxW = self.layoutRect().w;      self.menu.layoutRect({        w: maxW,        minW: 0,        maxW: maxW      });      self.menu.repaint();      self.menu.reflow();      self.menu.show();      self.menu.moveRel(self.getEl(), self.isRtl() ? [        'br-tr',        'tr-br'      ] : [        'bl-tl',        'tl-bl'      ]);    },    hideMenu: function () {      if (this.menu) {        this.menu.hide();      }    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        if (self.getEl('inp').value !== e.value) {          self.getEl('inp').value = e.value;        }      });      self.state.on('change:disabled', function (e) {        self.getEl('inp').disabled = e.value;      });      self.state.on('change:statusLevel', function (e) {        var statusIconElm = self.getEl('status');        var prefix = self.classPrefix, value = e.value;        funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');        funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');        funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');        funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');        self.classes.toggle('has-status', value !== 'none');        self.repaint();      });      funcs.on(self.getEl('status'), 'mouseleave', function () {        self.tooltip().hide();      });      self.on('cancel', function (e) {        if (self.menu && self.menu.visible()) {          e.stopPropagation();          self.hideMenu();        }      });      var focusIdx = function (idx, menu) {        if (menu && menu.items().length > 0) {          menu.items().eq(idx)[0].focus();        }      };      self.on('keydown', function (e) {        var keyCode = e.keyCode;        if (e.target.nodeName === 'INPUT') {          if (keyCode === global$16.DOWN) {            e.preventDefault();            self.fire('autocomplete');            focusIdx(0, self.menu);          } else if (keyCode === global$16.UP) {            e.preventDefault();            focusIdx(-1, self.menu);          }        }      });      return self._super();    },    remove: function () {      global$7(this.getEl('inp')).off();      if (this.menu) {        this.menu.remove();      }      this._super();    }  });  var ColorBox = ComboBox.extend({    init: function (settings) {      var self = this;      settings.spellcheck = false;      if (settings.onaction) {        settings.icon = 'none';      }      self._super(settings);      self.classes.add('colorbox');      self.on('change keyup postrender', function () {        self.repaintColor(self.value());      });    },    repaintColor: function (value) {      var openElm = this.getEl('open');      var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;      if (elm) {        try {          elm.style.background = value;        } catch (ex) {        }      }    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        if (self.state.get('rendered')) {          self.repaintColor(e.value);        }      });      return self._super();    }  });  var PanelButton = Button.extend({    showPanel: function () {      var self = this, settings = self.settings;      self.classes.add('opened');      if (!self.panel) {        var panelSettings = settings.panel;        if (panelSettings.type) {          panelSettings = {            layout: 'grid',            items: panelSettings          };        }        panelSettings.role = panelSettings.role || 'dialog';        panelSettings.popover = true;        panelSettings.autohide = true;        panelSettings.ariaRoot = true;        self.panel = new FloatPanel(panelSettings).on('hide', function () {          self.classes.remove('opened');        }).on('cancel', function (e) {          e.stopPropagation();          self.focus();          self.hidePanel();        }).parent(self).renderTo(self.getContainerElm());        self.panel.fire('show');        self.panel.reflow();      } else {        self.panel.show();      }      var rtlRels = [        'bc-tc',        'bc-tl',        'bc-tr'      ];      var ltrRels = [        'bc-tc',        'bc-tr',        'bc-tl',        'tc-bc',        'tc-br',        'tc-bl'      ];      var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));      self.panel.classes.toggle('start', rel.substr(-1) === 'l');      self.panel.classes.toggle('end', rel.substr(-1) === 'r');      var isTop = rel.substr(0, 1) === 't';      self.panel.classes.toggle('bottom', !isTop);      self.panel.classes.toggle('top', isTop);      self.panel.moveRel(self.getEl(), rel);    },    hidePanel: function () {      var self = this;      if (self.panel) {        self.panel.hide();      }    },    postRender: function () {      var self = this;      self.aria('haspopup', true);      self.on('click', function (e) {        if (e.control === self) {          if (self.panel && self.panel.visible()) {            self.hidePanel();          } else {            self.showPanel();            self.panel.focus(!!e.aria);          }        }      });      return self._super();    },    remove: function () {      if (this.panel) {        this.panel.remove();        this.panel = null;      }      return this._super();    }  });  var DOM = global$2.DOM;  var ColorButton = PanelButton.extend({    init: function (settings) {      this._super(settings);      this.classes.add('splitbtn');      this.classes.add('colorbutton');    },    color: function (color) {      if (color) {        this._color = color;        this.getEl('preview').style.backgroundColor = color;        return this;      }      return this._color;    },    resetColor: function () {      this._color = null;      this.getEl('preview').style.backgroundColor = null;      return this;    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');      var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';      var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';      var textHtml = '';      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      return '<div id="' + id + '" class="' + self.classes + '" role="button" tabindex="-1" aria-haspopup="true">' + '<button role="presentation" hidefocus="1" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + '<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';    },    postRender: function () {      var self = this, onClickHandler = self.settings.onclick;      self.on('click', function (e) {        if (e.aria && e.aria.key === 'down') {          return;        }        if (e.control === self && !DOM.getParent(e.target, '.' + self.classPrefix + 'open')) {          e.stopImmediatePropagation();          onClickHandler.call(self, e);        }      });      delete self.settings.onclick;      return self._super();    }  });  var global$17 = tinymce.util.Tools.resolve('tinymce.util.Color');  var ColorPicker = Widget.extend({    Defaults: { classes: 'widget colorpicker' },    init: function (settings) {      this._super(settings);    },    postRender: function () {      var self = this;      var color = self.color();      var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;      hueRootElm = self.getEl('h');      huePointElm = self.getEl('hp');      svRootElm = self.getEl('sv');      svPointElm = self.getEl('svp');      function getPos(elm, event) {        var pos = funcs.getPos(elm);        var x, y;        x = event.pageX - pos.x;        y = event.pageY - pos.y;        x = Math.max(0, Math.min(x / elm.clientWidth, 1));        y = Math.max(0, Math.min(y / elm.clientHeight, 1));        return {          x: x,          y: y        };      }      function updateColor(hsv, hueUpdate) {        var hue = (360 - hsv.h) / 360;        funcs.css(huePointElm, { top: hue * 100 + '%' });        if (!hueUpdate) {          funcs.css(svPointElm, {            left: hsv.s + '%',            top: 100 - hsv.v + '%'          });        }        svRootElm.style.background = global$17({          s: 100,          v: 100,          h: hsv.h        }).toHex();        self.color().parse({          s: hsv.s,          v: hsv.v,          h: hsv.h        });      }      function updateSaturationAndValue(e) {        var pos;        pos = getPos(svRootElm, e);        hsv.s = pos.x * 100;        hsv.v = (1 - pos.y) * 100;        updateColor(hsv);        self.fire('change');      }      function updateHue(e) {        var pos;        pos = getPos(hueRootElm, e);        hsv = color.toHsv();        hsv.h = (1 - pos.y) * 360;        updateColor(hsv, true);        self.fire('change');      }      self._repaint = function () {        hsv = color.toHsv();        updateColor(hsv);      };      self._super();      self._svdraghelper = new DragHelper(self._id + '-sv', {        start: updateSaturationAndValue,        drag: updateSaturationAndValue      });      self._hdraghelper = new DragHelper(self._id + '-h', {        start: updateHue,        drag: updateHue      });      self._repaint();    },    rgb: function () {      return this.color().toRgb();    },    value: function (value) {      var self = this;      if (arguments.length) {        self.color().parse(value);        if (self._rendered) {          self._repaint();        }      } else {        return self.color().toHex();      }    },    color: function () {      if (!this._color) {        this._color = global$17();      }      return this._color;    },    renderHtml: function () {      var self = this;      var id = self._id;      var prefix = self.classPrefix;      var hueHtml;      var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';      function getOldIeFallbackHtml() {        var i, l, html = '', gradientPrefix, stopsList;        gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';        stopsList = stops.split(',');        for (i = 0, l = stopsList.length - 1; i < l; i++) {          html += '<div class="' + prefix + 'colorpicker-h-chunk" style="' + 'height:' + 100 / l + '%;' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' + '-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' + '"></div>';        }        return html;      }      var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';      hueHtml = '<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' + getOldIeFallbackHtml() + '<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' + '</div>';      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' + '<div class="' + prefix + 'colorpicker-overlay1">' + '<div class="' + prefix + 'colorpicker-overlay2">' + '<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' + '<div class="' + prefix + 'colorpicker-selector2"></div>' + '</div>' + '</div>' + '</div>' + '</div>' + hueHtml + '</div>';    }  });  var DropZone = Widget.extend({    init: function (settings) {      var self = this;      settings = global$4.extend({        height: 100,        text: 'Drop an image here',        multiple: false,        accept: null      }, settings);      self._super(settings);      self.classes.add('dropzone');      if (settings.multiple) {        self.classes.add('multiple');      }    },    renderHtml: function () {      var self = this;      var attrs, elm;      var cfg = self.settings;      attrs = {        id: self._id,        hidefocus: '1'      };      elm = funcs.create('div', attrs, '<span>' + this.translate(cfg.text) + '</span>');      if (cfg.height) {        funcs.css(elm, 'height', cfg.height + 'px');      }      if (cfg.width) {        funcs.css(elm, 'width', cfg.width + 'px');      }      elm.className = self.classes;      return elm.outerHTML;    },    postRender: function () {      var self = this;      var toggleDragClass = function (e) {        e.preventDefault();        self.classes.toggle('dragenter');        self.getEl().className = self.classes;      };      var filter = function (files) {        var accept = self.settings.accept;        if (typeof accept !== 'string') {          return files;        }        var re = new RegExp('(' + accept.split(/\s*,\s*/).join('|') + ')$', 'i');        return global$4.grep(files, function (file) {          return re.test(file.name);        });      };      self._super();      self.$el.on('dragover', function (e) {        e.preventDefault();      });      self.$el.on('dragenter', toggleDragClass);      self.$el.on('dragleave', toggleDragClass);      self.$el.on('drop', function (e) {        e.preventDefault();        if (self.state.get('disabled')) {          return;        }        var files = filter(e.dataTransfer.files);        self.value = function () {          if (!files.length) {            return null;          } else if (self.settings.multiple) {            return files;          } else {            return files[0];          }        };        if (files.length) {          self.fire('change', e);        }      });    },    remove: function () {      this.$el.off();      this._super();    }  });  var Path = Widget.extend({    init: function (settings) {      var self = this;      if (!settings.delimiter) {        settings.delimiter = '\xBB';      }      self._super(settings);      self.classes.add('path');      self.canFocus = true;      self.on('click', function (e) {        var index;        var target = e.target;        if (index = target.getAttribute('data-index')) {          self.fire('select', {            value: self.row()[index],            index: index          });        }      });      self.row(self.settings.row);    },    focus: function () {      var self = this;      self.getEl().firstChild.focus();      return self;    },    row: function (row) {      if (!arguments.length) {        return this.state.get('row');      }      this.state.set('row', row);      return this;    },    renderHtml: function () {      var self = this;      return '<div id="' + self._id + '" class="' + self.classes + '">' + self._getDataPathHtml(self.state.get('row')) + '</div>';    },    bindStates: function () {      var self = this;      self.state.on('change:row', function (e) {        self.innerHtml(self._getDataPathHtml(e.value));      });      return self._super();    },    _getDataPathHtml: function (data) {      var self = this;      var parts = data || [];      var i, l, html = '';      var prefix = self.classPrefix;      for (i = 0, l = parts.length; i < l; i++) {        html += (i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') + '<div role="button" class="' + prefix + 'path-item' + (i === l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' + i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + (i + 1) + '">' + parts[i].name + '</div>';      }      if (!html) {        html = '<div class="' + prefix + 'path-item">\xA0</div>';      }      return html;    }  });  var ElementPath = Path.extend({    postRender: function () {      var self = this, editor = self.settings.editor;      function isHidden(elm) {        if (elm.nodeType === 1) {          if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {            return true;          }          if (elm.getAttribute('data-mce-type') === 'bookmark') {            return true;          }        }        return false;      }      if (editor.settings.elementpath !== false) {        self.on('select', function (e) {          editor.focus();          editor.selection.select(this.row()[e.index].element);          editor.nodeChanged();        });        editor.on('nodeChange', function (e) {          var outParents = [];          var parents = e.parents;          var i = parents.length;          while (i--) {            if (parents[i].nodeType === 1 && !isHidden(parents[i])) {              var args = editor.fire('ResolveName', {                name: parents[i].nodeName.toLowerCase(),                target: parents[i]              });              if (!args.isDefaultPrevented()) {                outParents.push({                  name: args.name,                  element: parents[i]                });              }              if (args.isPropagationStopped()) {                break;              }            }          }          self.row(outParents);        });      }      return self._super();    }  });  var FormItem = Container.extend({    Defaults: {      layout: 'flex',      align: 'center',      defaults: { flex: 1 }    },    renderHtml: function () {      var self = this, layout = self._layout, prefix = self.classPrefix;      self.classes.add('formitem');      layout.preRender(self);      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<div id="' + self._id + '-title" class="' + prefix + 'title">' + self.settings.title + '</div>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';    }  });  var Form = Container.extend({    Defaults: {      containerCls: 'form',      layout: 'flex',      direction: 'column',      align: 'stretch',      flex: 1,      padding: 15,      labelGap: 30,      spacing: 10,      callbacks: {        submit: function () {          this.submit();        }      }    },    preRender: function () {      var self = this, items = self.items();      if (!self.settings.formItemDefaults) {        self.settings.formItemDefaults = {          layout: 'flex',          autoResize: 'overflow',          defaults: { flex: 1 }        };      }      items.each(function (ctrl) {        var formItem;        var label = ctrl.settings.label;        if (label) {          formItem = new FormItem(global$4.extend({            items: {              type: 'label',              id: ctrl._id + '-l',              text: label,              flex: 0,              forId: ctrl._id,              disabled: ctrl.disabled()            }          }, self.settings.formItemDefaults));          formItem.type = 'formitem';          ctrl.aria('labelledby', ctrl._id + '-l');          if (typeof ctrl.settings.flex === 'undefined') {            ctrl.settings.flex = 1;          }          self.replace(ctrl, formItem);          formItem.add(ctrl);        }      });    },    submit: function () {      return this.fire('submit', { data: this.toJSON() });    },    postRender: function () {      var self = this;      self._super();      self.fromJSON(self.settings.data);    },    bindStates: function () {      var self = this;      self._super();      function recalcLabels() {        var maxLabelWidth = 0;        var labels = [];        var i, labelGap, items;        if (self.settings.labelGapCalc === false) {          return;        }        if (self.settings.labelGapCalc === 'children') {          items = self.find('formitem');        } else {          items = self.items();        }        items.filter('formitem').each(function (item) {          var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;          maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;          labels.push(labelCtrl);        });        labelGap = self.settings.labelGap || 0;        i = labels.length;        while (i--) {          labels[i].settings.minWidth = maxLabelWidth + labelGap;        }      }      self.on('show', recalcLabels);      recalcLabels();    }  });  var FieldSet = Form.extend({    Defaults: {      containerCls: 'fieldset',      layout: 'flex',      direction: 'column',      align: 'stretch',      flex: 1,      padding: '25 15 5 15',      labelGap: 30,      spacing: 10,      border: 1    },    renderHtml: function () {      var self = this, layout = self._layout, prefix = self.classPrefix;      self.preRender();      layout.preRender(self);      return '<fieldset id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' + self.settings.title + '</legend>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</fieldset>';    }  });  var unique$1 = 0;  var generate = function (prefix) {    var date = new Date();    var time = date.getTime();    var random = Math.floor(Math.random() * 1000000000);    unique$1++;    return prefix + '_' + random + unique$1 + String(time);  };  var $_9budsn19ojh8lz7t7 = { generate: generate };  var fromHtml = function (html, scope) {    var doc = scope || document;    var div = doc.createElement('div');    div.innerHTML = html;    if (!div.hasChildNodes() || div.childNodes.length > 1) {      console.error('HTML does not have a single root node', html);      throw 'HTML must have a single root node';    }    return fromDom(div.childNodes[0]);  };  var fromTag = function (tag, scope) {    var doc = scope || document;    var node = doc.createElement(tag);    return fromDom(node);  };  var fromText = function (text, scope) {    var doc = scope || document;    var node = doc.createTextNode(text);    return fromDom(node);  };  var fromDom = function (node) {    if (node === null || node === undefined)      throw new Error('Node cannot be null or undefined');    return { dom: $_2jrs7h17njh8lz7m6.constant(node) };  };  var fromPoint = function (doc, x, y) {    return Option.from(doc.dom().elementFromPoint(x, y)).map(fromDom);  };  var $_b0tm8x19pjh8lz7t9 = {    fromHtml: fromHtml,    fromTag: fromTag,    fromText: fromText,    fromDom: fromDom,    fromPoint: fromPoint  };  var cached = function (f) {    var called = false;    var r;    return function () {      if (!called) {        called = true;        r = f.apply(null, arguments);      }      return r;    };  };  var $_1wqnm519tjh8lz7tm = { cached: cached };  var $_e8p44419vjh8lz7to = {    ATTRIBUTE: 2,    CDATA_SECTION: 4,    COMMENT: 8,    DOCUMENT: 9,    DOCUMENT_TYPE: 10,    DOCUMENT_FRAGMENT: 11,    ELEMENT: 1,    TEXT: 3,    PROCESSING_INSTRUCTION: 7,    ENTITY_REFERENCE: 5,    ENTITY: 6,    NOTATION: 12  };  var name = function (element) {    var r = element.dom().nodeName;    return r.toLowerCase();  };  var type = function (element) {    return element.dom().nodeType;  };  var value = function (element) {    return element.dom().nodeValue;  };  var isType$2 = function (t) {    return function (element) {      return type(element) === t;    };  };  var isComment = function (element) {    return type(element) === $_e8p44419vjh8lz7to.COMMENT || name(element) === '#comment';  };  var isElement = isType$2($_e8p44419vjh8lz7to.ELEMENT);  var isText = isType$2($_e8p44419vjh8lz7to.TEXT);  var isDocument = isType$2($_e8p44419vjh8lz7to.DOCUMENT);  var $_eoy6dw19ujh8lz7tn = {    name: name,    type: type,    value: value,    isElement: isElement,    isText: isText,    isDocument: isDocument,    isComment: isComment  };  var inBody = function (element) {    var dom = $_eoy6dw19ujh8lz7tn.isText(element) ? element.dom().parentNode : element.dom();    return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);  };  var body = $_1wqnm519tjh8lz7tm.cached(function () {    return getBody($_b0tm8x19pjh8lz7t9.fromDom(document));  });  var getBody = function (doc) {    var body = doc.dom().body;    if (body === null || body === undefined)      throw 'Body is not available yet';    return $_b0tm8x19pjh8lz7t9.fromDom(body);  };  var $_17whhl19sjh8lz7tj = {    body: body,    getBody: getBody,    inBody: inBody  };  function Immutable () {    var fields = [];    for (var _i = 0; _i < arguments.length; _i++) {      fields[_i] = arguments[_i];    }    return function () {      var values = [];      for (var _i = 0; _i < arguments.length; _i++) {        values[_i] = arguments[_i];      }      if (fields.length !== values.length) {        throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');      }      var struct = {};      $_qgcal17ljh8lz7ly.each(fields, function (name, i) {        struct[name] = $_2jrs7h17njh8lz7m6.constant(values[i]);      });      return struct;    };  }  var keys = function () {    var fastKeys = Object.keys;    var slowKeys = function (o) {      var r = [];      for (var i in o) {        if (o.hasOwnProperty(i)) {          r.push(i);        }      }      return r;    };    return fastKeys === undefined ? slowKeys : fastKeys;  }();  var each$1 = function (obj, f) {    var props = keys(obj);    for (var k = 0, len = props.length; k < len; k++) {      var i = props[k];      var x = obj[i];      f(x, i, obj);    }  };  var objectMap = function (obj, f) {    return tupleMap(obj, function (x, i, obj) {      return {        k: i,        v: f(x, i, obj)      };    });  };  var tupleMap = function (obj, f) {    var r = {};    each$1(obj, function (x, i) {      var tuple = f(x, i, obj);      r[tuple.k] = tuple.v;    });    return r;  };  var bifilter = function (obj, pred) {    var t = {};    var f = {};    each$1(obj, function (x, i) {      var branch = pred(x, i) ? t : f;      branch[i] = x;    });    return {      t: t,      f: f    };  };  var mapToArray = function (obj, f) {    var r = [];    each$1(obj, function (value, name) {      r.push(f(value, name));    });    return r;  };  var find$1 = function (obj, pred) {    var props = keys(obj);    for (var k = 0, len = props.length; k < len; k++) {      var i = props[k];      var x = obj[i];      if (pred(x, i, obj)) {        return Option.some(x);      }    }    return Option.none();  };  var values = function (obj) {    return mapToArray(obj, function (v) {      return v;    });  };  var size = function (obj) {    return values(obj).length;  };  var $_3d51zb1a0jh8lz7ug = {    bifilter: bifilter,    each: each$1,    map: objectMap,    mapToArray: mapToArray,    tupleMap: tupleMap,    find: find$1,    keys: keys,    values: values,    size: size  };  var sort$1 = function (arr) {    return arr.slice(0).sort();  };  var reqMessage = function (required, keys) {    throw new Error('All required keys (' + sort$1(required).join(', ') + ') were not specified. Specified keys were: ' + sort$1(keys).join(', ') + '.');  };  var unsuppMessage = function (unsupported) {    throw new Error('Unsupported keys for object: ' + sort$1(unsupported).join(', '));  };  var validateStrArr = function (label, array) {    if (!$_55hqur17ojh8lz7m9.isArray(array))      throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.');    $_qgcal17ljh8lz7ly.each(array, function (a) {      if (!$_55hqur17ojh8lz7m9.isString(a))        throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.');    });  };  var invalidTypeMessage = function (incorrect, type) {    throw new Error('All values need to be of type: ' + type + '. Keys (' + sort$1(incorrect).join(', ') + ') were not.');  };  var checkDupes = function (everything) {    var sorted = sort$1(everything);    var dupe = $_qgcal17ljh8lz7ly.find(sorted, function (s, i) {      return i < sorted.length - 1 && s === sorted[i + 1];    });    dupe.each(function (d) {      throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].');    });  };  var $_6f9omp1a1jh8lz7ui = {    sort: sort$1,    reqMessage: reqMessage,    unsuppMessage: unsuppMessage,    validateStrArr: validateStrArr,    invalidTypeMessage: invalidTypeMessage,    checkDupes: checkDupes  };  function MixedBag (required, optional) {    var everything = required.concat(optional);    if (everything.length === 0)      throw new Error('You must specify at least one required or optional field.');    $_6f9omp1a1jh8lz7ui.validateStrArr('required', required);    $_6f9omp1a1jh8lz7ui.validateStrArr('optional', optional);    $_6f9omp1a1jh8lz7ui.checkDupes(everything);    return function (obj) {      var keys = $_3d51zb1a0jh8lz7ug.keys(obj);      var allReqd = $_qgcal17ljh8lz7ly.forall(required, function (req) {        return $_qgcal17ljh8lz7ly.contains(keys, req);      });      if (!allReqd)        $_6f9omp1a1jh8lz7ui.reqMessage(required, keys);      var unsupported = $_qgcal17ljh8lz7ly.filter(keys, function (key) {        return !$_qgcal17ljh8lz7ly.contains(everything, key);      });      if (unsupported.length > 0)        $_6f9omp1a1jh8lz7ui.unsuppMessage(unsupported);      var r = {};      $_qgcal17ljh8lz7ly.each(required, function (req) {        r[req] = $_2jrs7h17njh8lz7m6.constant(obj[req]);      });      $_qgcal17ljh8lz7ly.each(optional, function (opt) {        r[opt] = $_2jrs7h17njh8lz7m6.constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none());      });      return r;    };  }  var $_5b3y8019xjh8lz7u2 = {    immutable: Immutable,    immutableBag: MixedBag  };  var toArray = function (target, f) {    var r = [];    var recurse = function (e) {      r.push(e);      return f(e);    };    var cur = f(target);    do {      cur = cur.bind(recurse);    } while (cur.isSome());    return r;  };  var $_8wc96i1a2jh8lz7uk = { toArray: toArray };  var node = function () {    var f = $_791eis18mjh8lz7py.getOrDie('Node');    return f;  };  var compareDocumentPosition = function (a, b, match) {    return (a.compareDocumentPosition(b) & match) !== 0;  };  var documentPositionPreceding = function (a, b) {    return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);  };  var documentPositionContainedBy = function (a, b) {    return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);  };  var $_ect2cb1a4jh8lz7ux = {    documentPositionPreceding: documentPositionPreceding,    documentPositionContainedBy: documentPositionContainedBy  };  var firstMatch = function (regexes, s) {    for (var i = 0; i < regexes.length; i++) {      var x = regexes[i];      if (x.test(s))        return x;    }    return undefined;  };  var find$2 = function (regexes, agent) {    var r = firstMatch(regexes, agent);    if (!r)      return {        major: 0,        minor: 0      };    var group = function (i) {      return Number(agent.replace(r, '$' + i));    };    return nu(group(1), group(2));  };  var detect = function (versionRegexes, agent) {    var cleanedAgent = String(agent).toLowerCase();    if (versionRegexes.length === 0)      return unknown();    return find$2(versionRegexes, cleanedAgent);  };  var unknown = function () {    return nu(0, 0);  };  var nu = function (major, minor) {    return {      major: major,      minor: minor    };  };  var $_e2rcnb1a8jh8lz7v7 = {    nu: nu,    detect: detect,    unknown: unknown  };  var edge = 'Edge';  var chrome = 'Chrome';  var ie = 'IE';  var opera = 'Opera';  var firefox = 'Firefox';  var safari = 'Safari';  var isBrowser = function (name, current) {    return function () {      return current === name;    };  };  var unknown$1 = function () {    return nu$1({      current: undefined,      version: $_e2rcnb1a8jh8lz7v7.unknown()    });  };  var nu$1 = function (info) {    var current = info.current;    var version = info.version;    return {      current: current,      version: version,      isEdge: isBrowser(edge, current),      isChrome: isBrowser(chrome, current),      isIE: isBrowser(ie, current),      isOpera: isBrowser(opera, current),      isFirefox: isBrowser(firefox, current),      isSafari: isBrowser(safari, current)    };  };  var $_2yklpp1a7jh8lz7v3 = {    unknown: unknown$1,    nu: nu$1,    edge: $_2jrs7h17njh8lz7m6.constant(edge),    chrome: $_2jrs7h17njh8lz7m6.constant(chrome),    ie: $_2jrs7h17njh8lz7m6.constant(ie),    opera: $_2jrs7h17njh8lz7m6.constant(opera),    firefox: $_2jrs7h17njh8lz7m6.constant(firefox),    safari: $_2jrs7h17njh8lz7m6.constant(safari)  };  var windows$1 = 'Windows';  var ios = 'iOS';  var android = 'Android';  var linux = 'Linux';  var osx = 'OSX';  var solaris = 'Solaris';  var freebsd = 'FreeBSD';  var isOS = function (name, current) {    return function () {      return current === name;    };  };  var unknown$2 = function () {    return nu$2({      current: undefined,      version: $_e2rcnb1a8jh8lz7v7.unknown()    });  };  var nu$2 = function (info) {    var current = info.current;    var version = info.version;    return {      current: current,      version: version,      isWindows: isOS(windows$1, current),      isiOS: isOS(ios, current),      isAndroid: isOS(android, current),      isOSX: isOS(osx, current),      isLinux: isOS(linux, current),      isSolaris: isOS(solaris, current),      isFreeBSD: isOS(freebsd, current)    };  };  var $_dm2ktf1a9jh8lz7v8 = {    unknown: unknown$2,    nu: nu$2,    windows: $_2jrs7h17njh8lz7m6.constant(windows$1),    ios: $_2jrs7h17njh8lz7m6.constant(ios),    android: $_2jrs7h17njh8lz7m6.constant(android),    linux: $_2jrs7h17njh8lz7m6.constant(linux),    osx: $_2jrs7h17njh8lz7m6.constant(osx),    solaris: $_2jrs7h17njh8lz7m6.constant(solaris),    freebsd: $_2jrs7h17njh8lz7m6.constant(freebsd)  };  function DeviceType (os, browser, userAgent) {    var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;    var isiPhone = os.isiOS() && !isiPad;    var isAndroid3 = os.isAndroid() && os.version.major === 3;    var isAndroid4 = os.isAndroid() && os.version.major === 4;    var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;    var isTouch = os.isiOS() || os.isAndroid();    var isPhone = isTouch && !isTablet;    var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;    return {      isiPad: $_2jrs7h17njh8lz7m6.constant(isiPad),      isiPhone: $_2jrs7h17njh8lz7m6.constant(isiPhone),      isTablet: $_2jrs7h17njh8lz7m6.constant(isTablet),      isPhone: $_2jrs7h17njh8lz7m6.constant(isPhone),      isTouch: $_2jrs7h17njh8lz7m6.constant(isTouch),      isAndroid: os.isAndroid,      isiOS: os.isiOS,      isWebView: $_2jrs7h17njh8lz7m6.constant(iOSwebview)    };  }  var detect$1 = function (candidates, userAgent) {    var agent = String(userAgent).toLowerCase();    return $_qgcal17ljh8lz7ly.find(candidates, function (candidate) {      return candidate.search(agent);    });  };  var detectBrowser = function (browsers, userAgent) {    return detect$1(browsers, userAgent).map(function (browser) {      var version = $_e2rcnb1a8jh8lz7v7.detect(browser.versionRegexes, userAgent);      return {        current: browser.name,        version: version      };    });  };  var detectOs = function (oses, userAgent) {    return detect$1(oses, userAgent).map(function (os) {      var version = $_e2rcnb1a8jh8lz7v7.detect(os.versionRegexes, userAgent);      return {        current: os.name,        version: version      };    });  };  var $_5wiael1abjh8lz7vg = {    detectBrowser: detectBrowser,    detectOs: detectOs  };  var addToStart = function (str, prefix) {    return prefix + str;  };  var addToEnd = function (str, suffix) {    return str + suffix;  };  var removeFromStart = function (str, numChars) {    return str.substring(numChars);  };  var removeFromEnd = function (str, numChars) {    return str.substring(0, str.length - numChars);  };  var $_8xrn431aejh8lz7vt = {    addToStart: addToStart,    addToEnd: addToEnd,    removeFromStart: removeFromStart,    removeFromEnd: removeFromEnd  };  var first = function (str, count) {    return str.substr(0, count);  };  var last$1 = function (str, count) {    return str.substr(str.length - count, str.length);  };  var head$1 = function (str) {    return str === '' ? Option.none() : Option.some(str.substr(0, 1));  };  var tail = function (str) {    return str === '' ? Option.none() : Option.some(str.substring(1));  };  var $_4s9mv21afjh8lz7vu = {    first: first,    last: last$1,    head: head$1,    tail: tail  };  var checkRange = function (str, substr, start) {    if (substr === '')      return true;    if (str.length < substr.length)      return false;    var x = str.substr(start, start + substr.length);    return x === substr;  };  var supplant = function (str, obj) {    var isStringOrNumber = function (a) {      var t = typeof a;      return t === 'string' || t === 'number';    };    return str.replace(/\${([^{}]*)}/g, function (a, b) {      var value = obj[b];      return isStringOrNumber(value) ? value : a;    });  };  var removeLeading = function (str, prefix) {    return startsWith(str, prefix) ? $_8xrn431aejh8lz7vt.removeFromStart(str, prefix.length) : str;  };  var removeTrailing = function (str, prefix) {    return endsWith(str, prefix) ? $_8xrn431aejh8lz7vt.removeFromEnd(str, prefix.length) : str;  };  var ensureLeading = function (str, prefix) {    return startsWith(str, prefix) ? str : $_8xrn431aejh8lz7vt.addToStart(str, prefix);  };  var ensureTrailing = function (str, prefix) {    return endsWith(str, prefix) ? str : $_8xrn431aejh8lz7vt.addToEnd(str, prefix);  };  var contains$1 = function (str, substr) {    return str.indexOf(substr) !== -1;  };  var capitalize = function (str) {    return $_4s9mv21afjh8lz7vu.head(str).bind(function (head) {      return $_4s9mv21afjh8lz7vu.tail(str).map(function (tail) {        return head.toUpperCase() + tail;      });    }).getOr(str);  };  var startsWith = function (str, prefix) {    return checkRange(str, prefix, 0);  };  var endsWith = function (str, suffix) {    return checkRange(str, suffix, str.length - suffix.length);  };  var trim = function (str) {    return str.replace(/^\s+|\s+$/g, '');  };  var lTrim = function (str) {    return str.replace(/^\s+/g, '');  };  var rTrim = function (str) {    return str.replace(/\s+$/g, '');  };  var $_7m3qef1adjh8lz7vq = {    supplant: supplant,    startsWith: startsWith,    removeLeading: removeLeading,    removeTrailing: removeTrailing,    ensureLeading: ensureLeading,    ensureTrailing: ensureTrailing,    endsWith: endsWith,    contains: contains$1,    trim: trim,    lTrim: lTrim,    rTrim: rTrim,    capitalize: capitalize  };  var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;  var checkContains = function (target) {    return function (uastring) {      return $_7m3qef1adjh8lz7vq.contains(uastring, target);    };  };  var browsers = [    {      name: 'Edge',      versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],      search: function (uastring) {        var monstrosity = $_7m3qef1adjh8lz7vq.contains(uastring, 'edge/') && $_7m3qef1adjh8lz7vq.contains(uastring, 'chrome') && $_7m3qef1adjh8lz7vq.contains(uastring, 'safari') && $_7m3qef1adjh8lz7vq.contains(uastring, 'applewebkit');        return monstrosity;      }    },    {      name: 'Chrome',      versionRegexes: [        /.*?chrome\/([0-9]+)\.([0-9]+).*/,        normalVersionRegex      ],      search: function (uastring) {        return $_7m3qef1adjh8lz7vq.contains(uastring, 'chrome') && !$_7m3qef1adjh8lz7vq.contains(uastring, 'chromeframe');      }    },    {      name: 'IE',      versionRegexes: [        /.*?msie\ ?([0-9]+)\.([0-9]+).*/,        /.*?rv:([0-9]+)\.([0-9]+).*/      ],      search: function (uastring) {        return $_7m3qef1adjh8lz7vq.contains(uastring, 'msie') || $_7m3qef1adjh8lz7vq.contains(uastring, 'trident');      }    },    {      name: 'Opera',      versionRegexes: [        normalVersionRegex,        /.*?opera\/([0-9]+)\.([0-9]+).*/      ],      search: checkContains('opera')    },    {      name: 'Firefox',      versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],      search: checkContains('firefox')    },    {      name: 'Safari',      versionRegexes: [        normalVersionRegex,        /.*?cpu os ([0-9]+)_([0-9]+).*/      ],      search: function (uastring) {        return ($_7m3qef1adjh8lz7vq.contains(uastring, 'safari') || $_7m3qef1adjh8lz7vq.contains(uastring, 'mobile/')) && $_7m3qef1adjh8lz7vq.contains(uastring, 'applewebkit');      }    }  ];  var oses = [    {      name: 'Windows',      search: checkContains('win'),      versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]    },    {      name: 'iOS',      search: function (uastring) {        return $_7m3qef1adjh8lz7vq.contains(uastring, 'iphone') || $_7m3qef1adjh8lz7vq.contains(uastring, 'ipad');      },      versionRegexes: [        /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,        /.*cpu os ([0-9]+)_([0-9]+).*/,        /.*cpu iphone os ([0-9]+)_([0-9]+).*/      ]    },    {      name: 'Android',      search: checkContains('android'),      versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]    },    {      name: 'OSX',      search: checkContains('os x'),      versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]    },    {      name: 'Linux',      search: checkContains('linux'),      versionRegexes: []    },    {      name: 'Solaris',      search: checkContains('sunos'),      versionRegexes: []    },    {      name: 'FreeBSD',      search: checkContains('freebsd'),      versionRegexes: []    }  ];  var $_cf2rxn1acjh8lz7vk = {    browsers: $_2jrs7h17njh8lz7m6.constant(browsers),    oses: $_2jrs7h17njh8lz7m6.constant(oses)  };  var detect$2 = function (userAgent) {    var browsers = $_cf2rxn1acjh8lz7vk.browsers();    var oses = $_cf2rxn1acjh8lz7vk.oses();    var browser = $_5wiael1abjh8lz7vg.detectBrowser(browsers, userAgent).fold($_2yklpp1a7jh8lz7v3.unknown, $_2yklpp1a7jh8lz7v3.nu);    var os = $_5wiael1abjh8lz7vg.detectOs(oses, userAgent).fold($_dm2ktf1a9jh8lz7v8.unknown, $_dm2ktf1a9jh8lz7v8.nu);    var deviceType = DeviceType(os, browser, userAgent);    return {      browser: browser,      os: os,      deviceType: deviceType    };  };  var $_bh9rhh1a6jh8lz7v2 = { detect: detect$2 };  var detect$3 = $_1wqnm519tjh8lz7tm.cached(function () {    var userAgent = navigator.userAgent;    return $_bh9rhh1a6jh8lz7v2.detect(userAgent);  });  var $_27unow1a5jh8lz7uy = { detect: detect$3 };  var ELEMENT = $_e8p44419vjh8lz7to.ELEMENT;  var DOCUMENT = $_e8p44419vjh8lz7to.DOCUMENT;  var is = function (element, selector) {    var elem = element.dom();    if (elem.nodeType !== ELEMENT)      return false;    else if (elem.matches !== undefined)      return elem.matches(selector);    else if (elem.msMatchesSelector !== undefined)      return elem.msMatchesSelector(selector);    else if (elem.webkitMatchesSelector !== undefined)      return elem.webkitMatchesSelector(selector);    else if (elem.mozMatchesSelector !== undefined)      return elem.mozMatchesSelector(selector);    else      throw new Error('Browser lacks native selectors');  };  var bypassSelector = function (dom) {    return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;  };  var all = function (selector, scope) {    var base = scope === undefined ? document : scope.dom();    return bypassSelector(base) ? [] : $_qgcal17ljh8lz7ly.map(base.querySelectorAll(selector), $_b0tm8x19pjh8lz7t9.fromDom);  };  var one = function (selector, scope) {    var base = scope === undefined ? document : scope.dom();    return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map($_b0tm8x19pjh8lz7t9.fromDom);  };  var $_98pv661agjh8lz7vv = {    all: all,    is: is,    one: one  };  var eq = function (e1, e2) {    return e1.dom() === e2.dom();  };  var isEqualNode = function (e1, e2) {    return e1.dom().isEqualNode(e2.dom());  };  var member = function (element, elements) {    return $_qgcal17ljh8lz7ly.exists(elements, $_2jrs7h17njh8lz7m6.curry(eq, element));  };  var regularContains = function (e1, e2) {    var d1 = e1.dom(), d2 = e2.dom();    return d1 === d2 ? false : d1.contains(d2);  };  var ieContains = function (e1, e2) {    return $_ect2cb1a4jh8lz7ux.documentPositionContainedBy(e1.dom(), e2.dom());  };  var browser = $_27unow1a5jh8lz7uy.detect().browser;  var contains$2 = browser.isIE() ? ieContains : regularContains;  var $_5p2qqs1a3jh8lz7um = {    eq: eq,    isEqualNode: isEqualNode,    member: member,    contains: contains$2,    is: $_98pv661agjh8lz7vv.is  };  var owner = function (element) {    return $_b0tm8x19pjh8lz7t9.fromDom(element.dom().ownerDocument);  };  var documentElement = function (element) {    var doc = owner(element);    return $_b0tm8x19pjh8lz7t9.fromDom(doc.dom().documentElement);  };  var defaultView = function (element) {    var el = element.dom();    var defaultView = el.ownerDocument.defaultView;    return $_b0tm8x19pjh8lz7t9.fromDom(defaultView);  };  var parent$1 = function (element) {    var dom = element.dom();    return Option.from(dom.parentNode).map($_b0tm8x19pjh8lz7t9.fromDom);  };  var findIndex$1 = function (element) {    return parent$1(element).bind(function (p) {      var kin = children(p);      return $_qgcal17ljh8lz7ly.findIndex(kin, function (elem) {        return $_5p2qqs1a3jh8lz7um.eq(element, elem);      });    });  };  var parents = function (element, isRoot) {    var stop = $_55hqur17ojh8lz7m9.isFunction(isRoot) ? isRoot : $_2jrs7h17njh8lz7m6.constant(false);    var dom = element.dom();    var ret = [];    while (dom.parentNode !== null && dom.parentNode !== undefined) {      var rawParent = dom.parentNode;      var parent = $_b0tm8x19pjh8lz7t9.fromDom(rawParent);      ret.push(parent);      if (stop(parent) === true)        break;      else        dom = rawParent;    }    return ret;  };  var siblings = function (element) {    var filterSelf = function (elements) {      return $_qgcal17ljh8lz7ly.filter(elements, function (x) {        return !$_5p2qqs1a3jh8lz7um.eq(element, x);      });    };    return parent$1(element).map(children).map(filterSelf).getOr([]);  };  var offsetParent = function (element) {    var dom = element.dom();    return Option.from(dom.offsetParent).map($_b0tm8x19pjh8lz7t9.fromDom);  };  var prevSibling = function (element) {    var dom = element.dom();    return Option.from(dom.previousSibling).map($_b0tm8x19pjh8lz7t9.fromDom);  };  var nextSibling = function (element) {    var dom = element.dom();    return Option.from(dom.nextSibling).map($_b0tm8x19pjh8lz7t9.fromDom);  };  var prevSiblings = function (element) {    return $_qgcal17ljh8lz7ly.reverse($_8wc96i1a2jh8lz7uk.toArray(element, prevSibling));  };  var nextSiblings = function (element) {    return $_8wc96i1a2jh8lz7uk.toArray(element, nextSibling);  };  var children = function (element) {    var dom = element.dom();    return $_qgcal17ljh8lz7ly.map(dom.childNodes, $_b0tm8x19pjh8lz7t9.fromDom);  };  var child = function (element, index) {    var children = element.dom().childNodes;    return Option.from(children[index]).map($_b0tm8x19pjh8lz7t9.fromDom);  };  var firstChild = function (element) {    return child(element, 0);  };  var lastChild = function (element) {    return child(element, element.dom().childNodes.length - 1);  };  var childNodesCount = function (element) {    return element.dom().childNodes.length;  };  var hasChildNodes = function (element) {    return element.dom().hasChildNodes();  };  var spot = $_5b3y8019xjh8lz7u2.immutable('element', 'offset');  var leaf = function (element, offset) {    var cs = children(element);    return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);  };  var $_afjmme19wjh8lz7tp = {    owner: owner,    defaultView: defaultView,    documentElement: documentElement,    parent: parent$1,    findIndex: findIndex$1,    parents: parents,    siblings: siblings,    prevSibling: prevSibling,    offsetParent: offsetParent,    prevSiblings: prevSiblings,    nextSibling: nextSibling,    nextSiblings: nextSiblings,    children: children,    child: child,    firstChild: firstChild,    lastChild: lastChild,    childNodesCount: childNodesCount,    hasChildNodes: hasChildNodes,    leaf: leaf  };  var all$1 = function (predicate) {    return descendants($_17whhl19sjh8lz7tj.body(), predicate);  };  var ancestors = function (scope, predicate, isRoot) {    return $_qgcal17ljh8lz7ly.filter($_afjmme19wjh8lz7tp.parents(scope, isRoot), predicate);  };  var siblings$1 = function (scope, predicate) {    return $_qgcal17ljh8lz7ly.filter($_afjmme19wjh8lz7tp.siblings(scope), predicate);  };  var children$1 = function (scope, predicate) {    return $_qgcal17ljh8lz7ly.filter($_afjmme19wjh8lz7tp.children(scope), predicate);  };  var descendants = function (scope, predicate) {    var result = [];    $_qgcal17ljh8lz7ly.each($_afjmme19wjh8lz7tp.children(scope), function (x) {      if (predicate(x)) {        result = result.concat([x]);      }      result = result.concat(descendants(x, predicate));    });    return result;  };  var $_f3odoh19rjh8lz7tf = {    all: all$1,    ancestors: ancestors,    siblings: siblings$1,    children: children$1,    descendants: descendants  };  var all$2 = function (selector) {    return $_98pv661agjh8lz7vv.all(selector);  };  var ancestors$1 = function (scope, selector, isRoot) {    return $_f3odoh19rjh8lz7tf.ancestors(scope, function (e) {      return $_98pv661agjh8lz7vv.is(e, selector);    }, isRoot);  };  var siblings$2 = function (scope, selector) {    return $_f3odoh19rjh8lz7tf.siblings(scope, function (e) {      return $_98pv661agjh8lz7vv.is(e, selector);    });  };  var children$2 = function (scope, selector) {    return $_f3odoh19rjh8lz7tf.children(scope, function (e) {      return $_98pv661agjh8lz7vv.is(e, selector);    });  };  var descendants$1 = function (scope, selector) {    return $_98pv661agjh8lz7vv.all(selector, scope);  };  var $_au86hf19qjh8lz7te = {    all: all$2,    ancestors: ancestors$1,    siblings: siblings$2,    children: children$2,    descendants: descendants$1  };  var trim$1 = global$4.trim;  var hasContentEditableState = function (value) {    return function (node) {      if (node && node.nodeType === 1) {        if (node.contentEditable === value) {          return true;        }        if (node.getAttribute('data-mce-contenteditable') === value) {          return true;        }      }      return false;    };  };  var isContentEditableTrue = hasContentEditableState('true');  var isContentEditableFalse = hasContentEditableState('false');  var create$4 = function (type, title, url, level, attach) {    return {      type: type,      title: title,      url: url,      level: level,      attach: attach    };  };  var isChildOfContentEditableTrue = function (node) {    while (node = node.parentNode) {      var value = node.contentEditable;      if (value && value !== 'inherit') {        return isContentEditableTrue(node);      }    }    return false;  };  var select = function (selector, root) {    return $_qgcal17ljh8lz7ly.map($_au86hf19qjh8lz7te.descendants($_b0tm8x19pjh8lz7t9.fromDom(root), selector), function (element) {      return element.dom();    });  };  var getElementText = function (elm) {    return elm.innerText || elm.textContent;  };  var getOrGenerateId = function (elm) {    return elm.id ? elm.id : $_9budsn19ojh8lz7t7.generate('h');  };  var isAnchor = function (elm) {    return elm && elm.nodeName === 'A' && (elm.id || elm.name);  };  var isValidAnchor = function (elm) {    return isAnchor(elm) && isEditable(elm);  };  var isHeader = function (elm) {    return elm && /^(H[1-6])$/.test(elm.nodeName);  };  var isEditable = function (elm) {    return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);  };  var isValidHeader = function (elm) {    return isHeader(elm) && isEditable(elm);  };  var getLevel = function (elm) {    return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;  };  var headerTarget = function (elm) {    var headerId = getOrGenerateId(elm);    var attach = function () {      elm.id = headerId;    };    return create$4('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);  };  var anchorTarget = function (elm) {    var anchorId = elm.id || elm.name;    var anchorText = getElementText(elm);    return create$4('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, $_2jrs7h17njh8lz7m6.noop);  };  var getHeaderTargets = function (elms) {    return $_qgcal17ljh8lz7ly.map($_qgcal17ljh8lz7ly.filter(elms, isValidHeader), headerTarget);  };  var getAnchorTargets = function (elms) {    return $_qgcal17ljh8lz7ly.map($_qgcal17ljh8lz7ly.filter(elms, isValidAnchor), anchorTarget);  };  var getTargetElements = function (elm) {    var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);    return elms;  };  var hasTitle = function (target) {    return trim$1(target.title).length > 0;  };  var find$3 = function (elm) {    var elms = getTargetElements(elm);    return $_qgcal17ljh8lz7ly.filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);  };  var $_9hzj4219njh8lz7sx = { find: find$3 };  var getActiveEditor = function () {    return window.tinymce ? window.tinymce.activeEditor : global$5.activeEditor;  };  var history = {};  var HISTORY_LENGTH = 5;  var clearHistory = function () {    history = {};  };  var toMenuItem = function (target) {    return {      title: target.title,      value: {        title: { raw: target.title },        url: target.url,        attach: target.attach      }    };  };  var toMenuItems = function (targets) {    return global$4.map(targets, toMenuItem);  };  var staticMenuItem = function (title, url) {    return {      title: title,      value: {        title: title,        url: url,        attach: $_2jrs7h17njh8lz7m6.noop      }    };  };  var isUniqueUrl = function (url, targets) {    var foundTarget = $_qgcal17ljh8lz7ly.exists(targets, function (target) {      return target.url === url;    });    return !foundTarget;  };  var getSetting = function (editorSettings, name, defaultValue) {    var value = name in editorSettings ? editorSettings[name] : defaultValue;    return value === false ? null : value;  };  var createMenuItems = function (term, targets, fileType, editorSettings) {    var separator = { title: '-' };    var fromHistoryMenuItems = function (history) {      var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];      var uniqueHistory = $_qgcal17ljh8lz7ly.filter(historyItems, function (url) {        return isUniqueUrl(url, targets);      });      return global$4.map(uniqueHistory, function (url) {        return {          title: url,          value: {            title: url,            url: url,            attach: $_2jrs7h17njh8lz7m6.noop          }        };      });    };    var fromMenuItems = function (type) {      var filteredTargets = $_qgcal17ljh8lz7ly.filter(targets, function (target) {        return target.type === type;      });      return toMenuItems(filteredTargets);    };    var anchorMenuItems = function () {      var anchorMenuItems = fromMenuItems('anchor');      var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');      var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');      if (topAnchor !== null) {        anchorMenuItems.unshift(staticMenuItem('<top>', topAnchor));      }      if (bottomAchor !== null) {        anchorMenuItems.push(staticMenuItem('<bottom>', bottomAchor));      }      return anchorMenuItems;    };    var join = function (items) {      return $_qgcal17ljh8lz7ly.foldl(items, function (a, b) {        var bothEmpty = a.length === 0 || b.length === 0;        return bothEmpty ? a.concat(b) : a.concat(separator, b);      }, []);    };    if (editorSettings.typeahead_urls === false) {      return [];    }    return fileType === 'file' ? join([      filterByQuery(term, fromHistoryMenuItems(history)),      filterByQuery(term, fromMenuItems('header')),      filterByQuery(term, anchorMenuItems())    ]) : filterByQuery(term, fromHistoryMenuItems(history));  };  var addToHistory = function (url, fileType) {    var items = history[fileType];    if (!/^https?/.test(url)) {      return;    }    if (items) {      if ($_qgcal17ljh8lz7ly.indexOf(items, url).isNone()) {        history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);      }    } else {      history[fileType] = [url];    }  };  var filterByQuery = function (term, menuItems) {    var lowerCaseTerm = term.toLowerCase();    var result = global$4.grep(menuItems, function (item) {      return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;    });    return result.length === 1 && result[0].title === term ? [] : result;  };  var getTitle = function (linkDetails) {    var title = linkDetails.title;    return title.raw ? title.raw : title;  };  var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {    var autocomplete = function (term) {      var linkTargets = $_9hzj4219njh8lz7sx.find(bodyElm);      var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);      ctrl.showAutoComplete(menuItems, term);    };    ctrl.on('autocomplete', function () {      autocomplete(ctrl.value());    });    ctrl.on('selectitem', function (e) {      var linkDetails = e.value;      ctrl.value(linkDetails.url);      var title = getTitle(linkDetails);      if (fileType === 'image') {        ctrl.fire('change', {          meta: {            alt: title,            attach: linkDetails.attach          }        });      } else {        ctrl.fire('change', {          meta: {            text: title,            attach: linkDetails.attach          }        });      }      ctrl.focus();    });    ctrl.on('click', function (e) {      if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {        autocomplete('');      }    });    ctrl.on('PostRender', function () {      ctrl.getRoot().on('submit', function (e) {        if (!e.isDefaultPrevented()) {          addToHistory(ctrl.value(), fileType);        }      });    });  };  var statusToUiState = function (result) {    var status = result.status, message = result.message;    if (status === 'valid') {      return {        status: 'ok',        message: message      };    } else if (status === 'unknown') {      return {        status: 'warn',        message: message      };    } else if (status === 'invalid') {      return {        status: 'warn',        message: message      };    } else {      return {        status: 'none',        message: ''      };    }  };  var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {    var validatorHandler = editorSettings.filepicker_validator_handler;    if (validatorHandler) {      var validateUrl_1 = function (url) {        if (url.length === 0) {          ctrl.statusLevel('none');          return;        }        validatorHandler({          url: url,          type: fileType        }, function (result) {          var uiState = statusToUiState(result);          ctrl.statusMessage(uiState.message);          ctrl.statusLevel(uiState.status);        });      };      ctrl.state.on('change:value', function (e) {        validateUrl_1(e.value);      });    }  };  var FilePicker = ComboBox.extend({    Statics: { clearHistory: clearHistory },    init: function (settings) {      var self = this, editor = getActiveEditor(), editorSettings = editor.settings;      var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;      var fileType = settings.filetype;      settings.spellcheck = false;      fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;      if (fileBrowserCallbackTypes) {        fileBrowserCallbackTypes = global$4.makeMap(fileBrowserCallbackTypes, /[, ]/);      }      if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {        fileBrowserCallback = editorSettings.file_picker_callback;        if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {          actionCallback = function () {            var meta = self.fire('beforecall').meta;            meta = global$4.extend({ filetype: fileType }, meta);            fileBrowserCallback.call(editor, function (value, meta) {              self.value(value).fire('change', { meta: meta });            }, self.value(), meta);          };        } else {          fileBrowserCallback = editorSettings.file_browser_callback;          if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {            actionCallback = function () {              fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);            };          }        }      }      if (actionCallback) {        settings.icon = 'browse';        settings.onaction = actionCallback;      }      self._super(settings);      self.classes.add('filepicker');      setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);      setupLinkValidatorHandler(self, editorSettings, fileType);    }  });  var FitLayout = AbsoluteLayout.extend({    recalc: function (container) {      var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;      container.items().filter(':visible').each(function (ctrl) {        ctrl.layoutRect({          x: paddingBox.left,          y: paddingBox.top,          w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,          h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom        });        if (ctrl.recalc) {          ctrl.recalc();        }      });    }  });  var FlexLayout = AbsoluteLayout.extend({    recalc: function (container) {      var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;      var ctrl, ctrlLayoutRect, ctrlSettings, flex;      var maxSizeItems = [];      var size, maxSize, ratio, rect, pos, maxAlignEndPos;      var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;      var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;      var alignDeltaSizeName, alignContentSizeName;      var max = Math.max, min = Math.min;      items = container.items().filter(':visible');      contLayoutRect = container.layoutRect();      contPaddingBox = container.paddingBox;      contSettings = container.settings;      direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;      align = contSettings.align;      pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;      spacing = contSettings.spacing || 0;      if (direction === 'row-reversed' || direction === 'column-reverse') {        items = items.set(items.toArray().reverse());        direction = direction.split('-')[0];      }      if (direction === 'column') {        posName = 'y';        sizeName = 'h';        minSizeName = 'minH';        maxSizeName = 'maxH';        innerSizeName = 'innerH';        beforeName = 'top';        deltaSizeName = 'deltaH';        contentSizeName = 'contentH';        alignBeforeName = 'left';        alignSizeName = 'w';        alignAxisName = 'x';        alignInnerSizeName = 'innerW';        alignMinSizeName = 'minW';        alignAfterName = 'right';        alignDeltaSizeName = 'deltaW';        alignContentSizeName = 'contentW';      } else {        posName = 'x';        sizeName = 'w';        minSizeName = 'minW';        maxSizeName = 'maxW';        innerSizeName = 'innerW';        beforeName = 'left';        deltaSizeName = 'deltaW';        contentSizeName = 'contentW';        alignBeforeName = 'top';        alignSizeName = 'h';        alignAxisName = 'y';        alignInnerSizeName = 'innerH';        alignMinSizeName = 'minH';        alignAfterName = 'bottom';        alignDeltaSizeName = 'deltaH';        alignContentSizeName = 'contentH';      }      availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];      maxAlignEndPos = totalFlex = 0;      for (i = 0, l = items.length; i < l; i++) {        ctrl = items[i];        ctrlLayoutRect = ctrl.layoutRect();        ctrlSettings = ctrl.settings;        flex = ctrlSettings.flex;        availableSpace -= i < l - 1 ? spacing : 0;        if (flex > 0) {          totalFlex += flex;          if (ctrlLayoutRect[maxSizeName]) {            maxSizeItems.push(ctrl);          }          ctrlLayoutRect.flex = flex;        }        availableSpace -= ctrlLayoutRect[minSizeName];        size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];        if (size > maxAlignEndPos) {          maxAlignEndPos = size;        }      }      rect = {};      if (availableSpace < 0) {        rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];      } else {        rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];      }      rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];      rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;      rect[alignContentSizeName] = maxAlignEndPos;      rect.minW = min(rect.minW, contLayoutRect.maxW);      rect.minH = min(rect.minH, contLayoutRect.maxH);      rect.minW = max(rect.minW, contLayoutRect.startMinWidth);      rect.minH = max(rect.minH, contLayoutRect.startMinHeight);      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {        rect.w = rect.minW;        rect.h = rect.minH;        container.layoutRect(rect);        this.recalc(container);        if (container._lastRect === null) {          var parentCtrl = container.parent();          if (parentCtrl) {            parentCtrl._lastRect = null;            parentCtrl.recalc();          }        }        return;      }      ratio = availableSpace / totalFlex;      for (i = 0, l = maxSizeItems.length; i < l; i++) {        ctrl = maxSizeItems[i];        ctrlLayoutRect = ctrl.layoutRect();        maxSize = ctrlLayoutRect[maxSizeName];        size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;        if (size > maxSize) {          availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];          totalFlex -= ctrlLayoutRect.flex;          ctrlLayoutRect.flex = 0;          ctrlLayoutRect.maxFlexSize = maxSize;        } else {          ctrlLayoutRect.maxFlexSize = 0;        }      }      ratio = availableSpace / totalFlex;      pos = contPaddingBox[beforeName];      rect = {};      if (totalFlex === 0) {        if (pack === 'end') {          pos = availableSpace + contPaddingBox[beforeName];        } else if (pack === 'center') {          pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];          if (pos < 0) {            pos = contPaddingBox[beforeName];          }        } else if (pack === 'justify') {          pos = contPaddingBox[beforeName];          spacing = Math.floor(availableSpace / (items.length - 1));        }      }      rect[alignAxisName] = contPaddingBox[alignBeforeName];      for (i = 0, l = items.length; i < l; i++) {        ctrl = items[i];        ctrlLayoutRect = ctrl.layoutRect();        size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];        if (align === 'center') {          rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);        } else if (align === 'stretch') {          rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);          rect[alignAxisName] = contPaddingBox[alignBeforeName];        } else if (align === 'end') {          rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;        }        if (ctrlLayoutRect.flex > 0) {          size += ctrlLayoutRect.flex * ratio;        }        rect[sizeName] = size;        rect[posName] = pos;        ctrl.layoutRect(rect);        if (ctrl.recalc) {          ctrl.recalc();        }        pos += size + spacing;      }    }  });  var FlowLayout = Layout$1.extend({    Defaults: {      containerClass: 'flow-layout',      controlClass: 'flow-layout-item',      endClass: 'break'    },    recalc: function (container) {      container.items().filter(':visible').each(function (ctrl) {        if (ctrl.recalc) {          ctrl.recalc();        }      });    },    isNative: function () {      return true;    }  });  function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {    return is(scope, a) ? Option.some(scope) : $_55hqur17ojh8lz7m9.isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);  }  var first$1 = function (predicate) {    return descendant($_17whhl19sjh8lz7tj.body(), predicate);  };  var ancestor = function (scope, predicate, isRoot) {    var element = scope.dom();    var stop = $_55hqur17ojh8lz7m9.isFunction(isRoot) ? isRoot : $_2jrs7h17njh8lz7m6.constant(false);    while (element.parentNode) {      element = element.parentNode;      var el = $_b0tm8x19pjh8lz7t9.fromDom(element);      if (predicate(el))        return Option.some(el);      else if (stop(el))        break;    }    return Option.none();  };  var closest = function (scope, predicate, isRoot) {    var is = function (scope) {      return predicate(scope);    };    return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);  };  var sibling = function (scope, predicate) {    var element = scope.dom();    if (!element.parentNode)      return Option.none();    return child$1($_b0tm8x19pjh8lz7t9.fromDom(element.parentNode), function (x) {      return !$_5p2qqs1a3jh8lz7um.eq(scope, x) && predicate(x);    });  };  var child$1 = function (scope, predicate) {    var result = $_qgcal17ljh8lz7ly.find(scope.dom().childNodes, $_2jrs7h17njh8lz7m6.compose(predicate, $_b0tm8x19pjh8lz7t9.fromDom));    return result.map($_b0tm8x19pjh8lz7t9.fromDom);  };  var descendant = function (scope, predicate) {    var descend = function (element) {      for (var i = 0; i < element.childNodes.length; i++) {        if (predicate($_b0tm8x19pjh8lz7t9.fromDom(element.childNodes[i])))          return Option.some($_b0tm8x19pjh8lz7t9.fromDom(element.childNodes[i]));        var res = descend(element.childNodes[i]);        if (res.isSome())          return res;      }      return Option.none();    };    return descend(scope.dom());  };  var $_14ffds1amjh8lz7wr = {    first: first$1,    ancestor: ancestor,    closest: closest,    sibling: sibling,    child: child$1,    descendant: descendant  };  var first$2 = function (selector) {    return $_98pv661agjh8lz7vv.one(selector);  };  var ancestor$1 = function (scope, selector, isRoot) {    return $_14ffds1amjh8lz7wr.ancestor(scope, function (e) {      return $_98pv661agjh8lz7vv.is(e, selector);    }, isRoot);  };  var sibling$1 = function (scope, selector) {    return $_14ffds1amjh8lz7wr.sibling(scope, function (e) {      return $_98pv661agjh8lz7vv.is(e, selector);    });  };  var child$2 = function (scope, selector) {    return $_14ffds1amjh8lz7wr.child(scope, function (e) {      return $_98pv661agjh8lz7vv.is(e, selector);    });  };  var descendant$1 = function (scope, selector) {    return $_98pv661agjh8lz7vv.one(selector, scope);  };  var closest$1 = function (scope, selector, isRoot) {    return ClosestOrAncestor($_98pv661agjh8lz7vv.is, ancestor$1, scope, selector, isRoot);  };  var $_72mqss1aljh8lz7wp = {    first: first$2,    ancestor: ancestor$1,    sibling: sibling$1,    child: child$2,    descendant: descendant$1,    closest: closest$1  };  var toggleFormat = function (editor, fmt) {    return function () {      editor.execCommand('mceToggleFormat', false, fmt);    };  };  var addFormatChangedListener = function (editor, name, changed) {    var handler = function (state) {      changed(state, name);    };    if (editor.formatter) {      editor.formatter.formatChanged(name, handler);    } else {      editor.on('init', function () {        editor.formatter.formatChanged(name, handler);      });    }  };  var postRenderFormatToggle = function (editor, name) {    return function (e) {      addFormatChangedListener(editor, name, function (state) {        e.control.active(state);      });    };  };  var register = function (editor) {    var alignFormats = [      'alignleft',      'aligncenter',      'alignright',      'alignjustify'    ];    var defaultAlign = 'alignleft';    var alignMenuItems = [      {        text: 'Left',        icon: 'alignleft',        onclick: toggleFormat(editor, 'alignleft')      },      {        text: 'Center',        icon: 'aligncenter',        onclick: toggleFormat(editor, 'aligncenter')      },      {        text: 'Right',        icon: 'alignright',        onclick: toggleFormat(editor, 'alignright')      },      {        text: 'Justify',        icon: 'alignjustify',        onclick: toggleFormat(editor, 'alignjustify')      }    ];    editor.addMenuItem('align', {      text: 'Align',      menu: alignMenuItems    });    editor.addButton('align', {      type: 'menubutton',      icon: defaultAlign,      menu: alignMenuItems,      onShowMenu: function (e) {        var menu = e.control.menu;        global$4.each(alignFormats, function (formatName, idx) {          menu.items().eq(idx).each(function (item) {            return item.active(editor.formatter.match(formatName));          });        });      },      onPostRender: function (e) {        var ctrl = e.control;        global$4.each(alignFormats, function (formatName, idx) {          addFormatChangedListener(editor, formatName, function (state) {            ctrl.icon(defaultAlign);            if (state) {              ctrl.icon(formatName);            }          });        });      }    });    global$4.each({      alignleft: [        'Align left',        'JustifyLeft'      ],      aligncenter: [        'Align center',        'JustifyCenter'      ],      alignright: [        'Align right',        'JustifyRight'      ],      alignjustify: [        'Justify',        'JustifyFull'      ],      alignnone: [        'No alignment',        'JustifyNone'      ]    }, function (item, name) {      editor.addButton(name, {        active: false,        tooltip: item[0],        cmd: item[1],        onPostRender: postRenderFormatToggle(editor, name)      });    });  };  var $_9eh8yg1aojh8lz7xc = { register: register };  var getFirstFont = function (fontFamily) {    return fontFamily ? fontFamily.split(',')[0] : '';  };  var findMatchingValue = function (items, fontFamily) {    var font = fontFamily ? fontFamily.toLowerCase() : '';    var value;    global$4.each(items, function (item) {      if (item.value.toLowerCase() === font) {        value = item.value;      }    });    global$4.each(items, function (item) {      if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {        value = item.value;      }    });    return value;  };  var createFontNameListBoxChangeHandler = function (editor, items) {    return function () {      var self = this;      editor.on('init nodeChange', function (e) {        var fontFamily = editor.queryCommandValue('FontName');        var match = findMatchingValue(items, fontFamily);        self.value(match ? match : null);        if (!match && fontFamily) {          self.text(getFirstFont(fontFamily));        }      });    };  };  var createFormats = function (formats) {    formats = formats.replace(/;$/, '').split(';');    var i = formats.length;    while (i--) {      formats[i] = formats[i].split('=');    }    return formats;  };  var getFontItems = function (editor) {    var defaultFontsFormats = 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats';    var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);    return global$4.map(fonts, function (font) {      return {        text: { raw: font[0] },        value: font[1],        textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''      };    });  };  var registerButtons = function (editor) {    editor.addButton('fontselect', function () {      var items = getFontItems(editor);      return {        type: 'listbox',        text: 'Font Family',        tooltip: 'Font Family',        values: items,        fixedWidth: true,        onPostRender: createFontNameListBoxChangeHandler(editor, items),        onselect: function (e) {          if (e.control.settings.value) {            editor.execCommand('FontName', false, e.control.settings.value);          }        }      };    });  };  var register$1 = function (editor) {    registerButtons(editor);  };  var $_3gzdqt1aqjh8lz7xh = { register: register$1 };  var round = function (number, precision) {    var factor = Math.pow(10, precision);    return Math.round(number * factor) / factor;  };  var toPt = function (fontSize, precision) {    if (/[0-9.]+px$/.test(fontSize)) {      return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';    }    return fontSize;  };  var findMatchingValue$1 = function (items, pt, px) {    var value;    global$4.each(items, function (item) {      if (item.value === px) {        value = px;      } else if (item.value === pt) {        value = pt;      }    });    return value;  };  var createFontSizeListBoxChangeHandler = function (editor, items) {    return function () {      var self = this;      editor.on('init nodeChange', function (e) {        var px, pt, precision, match;        px = editor.queryCommandValue('FontSize');        if (px) {          for (precision = 3; !match && precision >= 0; precision--) {            pt = toPt(px, precision);            match = findMatchingValue$1(items, pt, px);          }        }        self.value(match ? match : null);        if (!match) {          self.text(pt);        }      });    };  };  var getFontSizeItems = function (editor) {    var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';    var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;    return global$4.map(fontsizeFormats.split(' '), function (item) {      var text = item, value = item;      var values = item.split('=');      if (values.length > 1) {        text = values[0];        value = values[1];      }      return {        text: text,        value: value      };    });  };  var registerButtons$1 = function (editor) {    editor.addButton('fontsizeselect', function () {      var items = getFontSizeItems(editor);      return {        type: 'listbox',        text: 'Font Sizes',        tooltip: 'Font Sizes',        values: items,        fixedWidth: true,        onPostRender: createFontSizeListBoxChangeHandler(editor, items),        onclick: function (e) {          if (e.control.settings.value) {            editor.execCommand('FontSize', false, e.control.settings.value);          }        }      };    });  };  var register$2 = function (editor) {    registerButtons$1(editor);  };  var $_nl711arjh8lz7xk = { register: register$2 };  var hideMenuObjects = function (editor, menu) {    var count = menu.length;    global$4.each(menu, function (item) {      if (item.menu) {        item.hidden = hideMenuObjects(editor, item.menu) === 0;      }      var formatName = item.format;      if (formatName) {        item.hidden = !editor.formatter.canApply(formatName);      }      if (item.hidden) {        count--;      }    });    return count;  };  var hideFormatMenuItems = function (editor, menu) {    var count = menu.items().length;    menu.items().each(function (item) {      if (item.menu) {        item.visible(hideFormatMenuItems(editor, item.menu) > 0);      }      if (!item.menu && item.settings.menu) {        item.visible(hideMenuObjects(editor, item.settings.menu) > 0);      }      var formatName = item.settings.format;      if (formatName) {        item.visible(editor.formatter.canApply(formatName));      }      if (!item.visible()) {        count--;      }    });    return count;  };  var createFormatMenu = function (editor) {    var count = 0;    var newFormats = [];    var defaultStyleFormats = [      {        title: 'Headings',        items: [          {            title: 'Heading 1',            format: 'h1'          },          {            title: 'Heading 2',            format: 'h2'          },          {            title: 'Heading 3',            format: 'h3'          },          {            title: 'Heading 4',            format: 'h4'          },          {            title: 'Heading 5',            format: 'h5'          },          {            title: 'Heading 6',            format: 'h6'          }        ]      },      {        title: 'Inline',        items: [          {            title: 'Bold',            icon: 'bold',            format: 'bold'          },          {            title: 'Italic',            icon: 'italic',            format: 'italic'          },          {            title: 'Underline',            icon: 'underline',            format: 'underline'          },          {            title: 'Strikethrough',            icon: 'strikethrough',            format: 'strikethrough'          },          {            title: 'Superscript',            icon: 'superscript',            format: 'superscript'          },          {            title: 'Subscript',            icon: 'subscript',            format: 'subscript'          },          {            title: 'Code',            icon: 'code',            format: 'code'          }        ]      },      {        title: 'Blocks',        items: [          {            title: 'Paragraph',            format: 'p'          },          {            title: 'Blockquote',            format: 'blockquote'          },          {            title: 'Div',            format: 'div'          },          {            title: 'Pre',            format: 'pre'          }        ]      },      {        title: 'Alignment',        items: [          {            title: 'Left',            icon: 'alignleft',            format: 'alignleft'          },          {            title: 'Center',            icon: 'aligncenter',            format: 'aligncenter'          },          {            title: 'Right',            icon: 'alignright',            format: 'alignright'          },          {            title: 'Justify',            icon: 'alignjustify',            format: 'alignjustify'          }        ]      }    ];    var createMenu = function (formats) {      var menu = [];      if (!formats) {        return;      }      global$4.each(formats, function (format) {        var menuItem = {          text: format.title,          icon: format.icon        };        if (format.items) {          menuItem.menu = createMenu(format.items);        } else {          var formatName = format.format || 'custom' + count++;          if (!format.format) {            format.name = formatName;            newFormats.push(format);          }          menuItem.format = formatName;          menuItem.cmd = format.cmd;        }        menu.push(menuItem);      });      return menu;    };    var createStylesMenu = function () {      var menu;      if (editor.settings.style_formats_merge) {        if (editor.settings.style_formats) {          menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));        } else {          menu = createMenu(defaultStyleFormats);        }      } else {        menu = createMenu(editor.settings.style_formats || defaultStyleFormats);      }      return menu;    };    editor.on('init', function () {      global$4.each(newFormats, function (format) {        editor.formatter.register(format.name, format);      });    });    return {      type: 'menu',      items: createStylesMenu(),      onPostRender: function (e) {        editor.fire('renderFormatsMenu', { control: e.control });      },      itemDefaults: {        preview: true,        textStyle: function () {          if (this.settings.format) {            return editor.formatter.getCssText(this.settings.format);          }        },        onPostRender: function () {          var self = this;          self.parent().on('show', function () {            var formatName, command;            formatName = self.settings.format;            if (formatName) {              self.disabled(!editor.formatter.canApply(formatName));              self.active(editor.formatter.match(formatName));            }            command = self.settings.cmd;            if (command) {              self.active(editor.queryCommandState(command));            }          });        },        onclick: function () {          if (this.settings.format) {            toggleFormat(editor, this.settings.format)();          }          if (this.settings.cmd) {            editor.execCommand(this.settings.cmd);          }        }      }    };  };  var registerMenuItems = function (editor, formatMenu) {    editor.addMenuItem('formats', {      text: 'Formats',      menu: formatMenu    });  };  var registerButtons$2 = function (editor, formatMenu) {    editor.addButton('styleselect', {      type: 'menubutton',      text: 'Formats',      menu: formatMenu,      onShowMenu: function () {        if (editor.settings.style_formats_autohide) {          hideFormatMenuItems(editor, this.menu);        }      }    });  };  var register$3 = function (editor) {    var formatMenu = createFormatMenu(editor);    registerMenuItems(editor, formatMenu);    registerButtons$2(editor, formatMenu);  };  var $_5p34i51asjh8lz7xo = { register: register$3 };  var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';  var createFormats$1 = function (formats) {    formats = formats.replace(/;$/, '').split(';');    var i = formats.length;    while (i--) {      formats[i] = formats[i].split('=');    }    return formats;  };  var createListBoxChangeHandler = function (editor, items, formatName) {    return function () {      var self = this;      editor.on('nodeChange', function (e) {        var formatter = editor.formatter;        var value = null;        global$4.each(e.parents, function (node) {          global$4.each(items, function (item) {            if (formatName) {              if (formatter.matchNode(node, formatName, { value: item.value })) {                value = item.value;              }            } else {              if (formatter.matchNode(node, item.value)) {                value = item.value;              }            }            if (value) {              return false;            }          });          if (value) {            return false;          }        });        self.value(value);      });    };  };  var lazyFormatSelectBoxItems = function (editor, blocks) {    return function () {      var items = [];      global$4.each(blocks, function (block) {        items.push({          text: block[0],          value: block[1],          textStyle: function () {            return editor.formatter.getCssText(block[1]);          }        });      });      return {        type: 'listbox',        text: blocks[0][0],        values: items,        fixedWidth: true,        onselect: function (e) {          if (e.control) {            var fmt = e.control.value();            toggleFormat(editor, fmt)();          }        },        onPostRender: createListBoxChangeHandler(editor, items)      };    };  };  var buildMenuItems = function (editor, blocks) {    return global$4.map(blocks, function (block) {      return {        text: block[0],        onclick: toggleFormat(editor, block[1]),        textStyle: function () {          return editor.formatter.getCssText(block[1]);        }      };    });  };  var register$4 = function (editor) {    var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);    editor.addMenuItem('blockformats', {      text: 'Blocks',      menu: buildMenuItems(editor, blocks)    });    editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));  };  var $_ei68w91atjh8lz7xt = { register: register$4 };  var createCustomMenuItems = function (editor, names) {    var items, nameList;    if (typeof names === 'string') {      nameList = names.split(' ');    } else if (global$4.isArray(names)) {      return $_qgcal17ljh8lz7ly.flatten(global$4.map(names, function (names) {        return createCustomMenuItems(editor, names);      }));    }    items = global$4.grep(nameList, function (name) {      return name === '|' || name in editor.menuItems;    });    return global$4.map(items, function (name) {      return name === '|' ? { text: '-' } : editor.menuItems[name];    });  };  var isSeparator = function (menuItem) {    return menuItem && menuItem.text === '-';  };  var trimMenuItems = function (menuItems) {    var menuItems2 = $_qgcal17ljh8lz7ly.filter(menuItems, function (menuItem, i, menuItems) {      return !isSeparator(menuItem) || !isSeparator(menuItems[i - 1]);    });    return $_qgcal17ljh8lz7ly.filter(menuItems2, function (menuItem, i, menuItems) {      return !isSeparator(menuItem) || i > 0 && i < menuItems.length - 1;    });  };  var createContextMenuItems = function (editor, context) {    var outputMenuItems = [{ text: '-' }];    var menuItems = global$4.grep(editor.menuItems, function (menuItem) {      return menuItem.context === context;    });    global$4.each(menuItems, function (menuItem) {      if (menuItem.separator === 'before') {        outputMenuItems.push({ text: '|' });      }      if (menuItem.prependToContext) {        outputMenuItems.unshift(menuItem);      } else {        outputMenuItems.push(menuItem);      }      if (menuItem.separator === 'after') {        outputMenuItems.push({ text: '|' });      }    });    return outputMenuItems;  };  var createInsertMenu = function (editor) {    var insertButtonItems = editor.settings.insert_button_items;    if (insertButtonItems) {      return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));    } else {      return trimMenuItems(createContextMenuItems(editor, 'insert'));    }  };  var registerButtons$3 = function (editor) {    editor.addButton('insert', {      type: 'menubutton',      icon: 'insert',      menu: [],      oncreatemenu: function () {        this.menu.add(createInsertMenu(editor));        this.menu.renderNew();      }    });  };  var register$5 = function (editor) {    registerButtons$3(editor);  };  var $_2kqzcs1aujh8lz7xw = { register: register$5 };  var registerFormatButtons = function (editor) {    global$4.each({      bold: 'Bold',      italic: 'Italic',      underline: 'Underline',      strikethrough: 'Strikethrough',      subscript: 'Subscript',      superscript: 'Superscript'    }, function (text, name) {      editor.addButton(name, {        active: false,        tooltip: text,        onPostRender: postRenderFormatToggle(editor, name),        onclick: toggleFormat(editor, name)      });    });  };  var registerCommandButtons = function (editor) {    global$4.each({      outdent: [        'Decrease indent',        'Outdent'      ],      indent: [        'Increase indent',        'Indent'      ],      cut: [        'Cut',        'Cut'      ],      copy: [        'Copy',        'Copy'      ],      paste: [        'Paste',        'Paste'      ],      help: [        'Help',        'mceHelp'      ],      selectall: [        'Select all',        'SelectAll'      ],      visualaid: [        'Visual aids',        'mceToggleVisualAid'      ],      newdocument: [        'New document',        'mceNewDocument'      ],      removeformat: [        'Clear formatting',        'RemoveFormat'      ],      remove: [        'Remove',        'Delete'      ]    }, function (item, name) {      editor.addButton(name, {        tooltip: item[0],        cmd: item[1]      });    });  };  var registerCommandToggleButtons = function (editor) {    global$4.each({      blockquote: [        'Blockquote',        'mceBlockQuote'      ],      subscript: [        'Subscript',        'Subscript'      ],      superscript: [        'Superscript',        'Superscript'      ]    }, function (item, name) {      editor.addButton(name, {        active: false,        tooltip: item[0],        cmd: item[1],        onPostRender: postRenderFormatToggle(editor, name)      });    });  };  var registerButtons$4 = function (editor) {    registerFormatButtons(editor);    registerCommandButtons(editor);    registerCommandToggleButtons(editor);  };  var registerMenuItems$1 = function (editor) {    global$4.each({      bold: [        'Bold',        'Bold',        'Meta+B'      ],      italic: [        'Italic',        'Italic',        'Meta+I'      ],      underline: [        'Underline',        'Underline',        'Meta+U'      ],      strikethrough: [        'Strikethrough',        'Strikethrough'      ],      subscript: [        'Subscript',        'Subscript'      ],      superscript: [        'Superscript',        'Superscript'      ],      removeformat: [        'Clear formatting',        'RemoveFormat'      ],      newdocument: [        'New document',        'mceNewDocument'      ],      cut: [        'Cut',        'Cut',        'Meta+X'      ],      copy: [        'Copy',        'Copy',        'Meta+C'      ],      paste: [        'Paste',        'Paste',        'Meta+V'      ],      selectall: [        'Select all',        'SelectAll',        'Meta+A'      ]    }, function (item, name) {      editor.addMenuItem(name, {        text: item[0],        icon: name,        shortcut: item[2],        cmd: item[1]      });    });    editor.addMenuItem('codeformat', {      text: 'Code',      icon: 'code',      onclick: toggleFormat(editor, 'code')    });  };  var register$6 = function (editor) {    registerButtons$4(editor);    registerMenuItems$1(editor);  };  var $_b1l3y31avjh8lz7y1 = { register: register$6 };  var toggleUndoRedoState = function (editor, type) {    return function () {      var self = this;      var checkState = function () {        var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';        return editor.undoManager ? editor.undoManager[typeFn]() : false;      };      self.disabled(!checkState());      editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {        self.disabled(editor.readonly || !checkState());      });    };  };  var registerMenuItems$2 = function (editor) {    editor.addMenuItem('undo', {      text: 'Undo',      icon: 'undo',      shortcut: 'Meta+Z',      onPostRender: toggleUndoRedoState(editor, 'undo'),      cmd: 'undo'    });    editor.addMenuItem('redo', {      text: 'Redo',      icon: 'redo',      shortcut: 'Meta+Y',      onPostRender: toggleUndoRedoState(editor, 'redo'),      cmd: 'redo'    });  };  var registerButtons$5 = function (editor) {    editor.addButton('undo', {      tooltip: 'Undo',      onPostRender: toggleUndoRedoState(editor, 'undo'),      cmd: 'undo'    });    editor.addButton('redo', {      tooltip: 'Redo',      onPostRender: toggleUndoRedoState(editor, 'redo'),      cmd: 'redo'    });  };  var register$7 = function (editor) {    registerMenuItems$2(editor);    registerButtons$5(editor);  };  var $_altety1awjh8lz7y3 = { register: register$7 };  var toggleVisualAidState = function (editor) {    return function () {      var self = this;      editor.on('VisualAid', function (e) {        self.active(e.hasVisual);      });      self.active(editor.hasVisual);    };  };  var registerMenuItems$3 = function (editor) {    editor.addMenuItem('visualaid', {      text: 'Visual aids',      selectable: true,      onPostRender: toggleVisualAidState(editor),      cmd: 'mceToggleVisualAid'    });  };  var register$8 = function (editor) {    registerMenuItems$3(editor);  };  var $_8qrp151axjh8lz7y4 = { register: register$8 };  var setupEnvironment = function () {    Widget.tooltips = !global$1.iOS;    Control$1.translate = function (text) {      return global$5.translate(text);    };  };  var setupUiContainer = function (editor) {    if (editor.settings.ui_container) {      global$1.container = $_72mqss1aljh8lz7wp.descendant($_b0tm8x19pjh8lz7t9.fromDom(document.body), editor.settings.ui_container).fold($_2jrs7h17njh8lz7m6.constant(null), function (elm) {        return elm.dom();      });    }  };  var setupRtlMode = function (editor) {    if (editor.rtl) {      Control$1.rtl = true;    }  };  var setupHideFloatPanels = function (editor) {    editor.on('mousedown', function () {      FloatPanel.hideAll();    });  };  var setup = function (editor) {    setupRtlMode(editor);    setupHideFloatPanels(editor);    setupUiContainer(editor);    setupEnvironment();    $_ei68w91atjh8lz7xt.register(editor);    $_9eh8yg1aojh8lz7xc.register(editor);    $_b1l3y31avjh8lz7y1.register(editor);    $_altety1awjh8lz7y3.register(editor);    $_nl711arjh8lz7xk.register(editor);    $_3gzdqt1aqjh8lz7xh.register(editor);    $_5p34i51asjh8lz7xo.register(editor);    $_8qrp151axjh8lz7y4.register(editor);    $_2kqzcs1aujh8lz7xw.register(editor);  };  var $_e9ct9h1akjh8lz7wa = { setup: setup };  var GridLayout = AbsoluteLayout.extend({    recalc: function (container) {      var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;      var colWidths = [];      var rowHeights = [];      var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;      settings = container.settings;      items = container.items().filter(':visible');      contLayoutRect = container.layoutRect();      cols = settings.columns || Math.ceil(Math.sqrt(items.length));      rows = Math.ceil(items.length / cols);      spacingH = settings.spacingH || settings.spacing || 0;      spacingV = settings.spacingV || settings.spacing || 0;      alignH = settings.alignH || settings.align;      alignV = settings.alignV || settings.align;      contPaddingBox = container.paddingBox;      reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();      if (alignH && typeof alignH === 'string') {        alignH = [alignH];      }      if (alignV && typeof alignV === 'string') {        alignV = [alignV];      }      for (x = 0; x < cols; x++) {        colWidths.push(0);      }      for (y = 0; y < rows; y++) {        rowHeights.push(0);      }      for (y = 0; y < rows; y++) {        for (x = 0; x < cols; x++) {          ctrl = items[y * cols + x];          if (!ctrl) {            break;          }          ctrlLayoutRect = ctrl.layoutRect();          ctrlMinWidth = ctrlLayoutRect.minW;          ctrlMinHeight = ctrlLayoutRect.minH;          colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];          rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];        }      }      availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;      for (maxX = 0, x = 0; x < cols; x++) {        maxX += colWidths[x] + (x > 0 ? spacingH : 0);        availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];      }      availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;      for (maxY = 0, y = 0; y < rows; y++) {        maxY += rowHeights[y] + (y > 0 ? spacingV : 0);        availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];      }      maxX += contPaddingBox.left + contPaddingBox.right;      maxY += contPaddingBox.top + contPaddingBox.bottom;      rect = {};      rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);      rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);      rect.contentW = rect.minW - contLayoutRect.deltaW;      rect.contentH = rect.minH - contLayoutRect.deltaH;      rect.minW = Math.min(rect.minW, contLayoutRect.maxW);      rect.minH = Math.min(rect.minH, contLayoutRect.maxH);      rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);      rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {        rect.w = rect.minW;        rect.h = rect.minH;        container.layoutRect(rect);        this.recalc(container);        if (container._lastRect === null) {          var parentCtrl = container.parent();          if (parentCtrl) {            parentCtrl._lastRect = null;            parentCtrl.recalc();          }        }        return;      }      if (contLayoutRect.autoResize) {        rect = container.layoutRect(rect);        rect.contentW = rect.minW - contLayoutRect.deltaW;        rect.contentH = rect.minH - contLayoutRect.deltaH;      }      var flexV;      if (settings.packV === 'start') {        flexV = 0;      } else {        flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;      }      var totalFlex = 0;      var flexWidths = settings.flexWidths;      if (flexWidths) {        for (x = 0; x < flexWidths.length; x++) {          totalFlex += flexWidths[x];        }      } else {        totalFlex = cols;      }      var ratio = availableWidth / totalFlex;      for (x = 0; x < cols; x++) {        colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;      }      posY = contPaddingBox.top;      for (y = 0; y < rows; y++) {        posX = contPaddingBox.left;        height = rowHeights[y] + flexV;        for (x = 0; x < cols; x++) {          if (reverseRows) {            idx = y * cols + cols - 1 - x;          } else {            idx = y * cols + x;          }          ctrl = items[idx];          if (!ctrl) {            break;          }          ctrlSettings = ctrl.settings;          ctrlLayoutRect = ctrl.layoutRect();          width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);          ctrlLayoutRect.x = posX;          ctrlLayoutRect.y = posY;          align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);          if (align === 'center') {            ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;          } else if (align === 'right') {            ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;          } else if (align === 'stretch') {            ctrlLayoutRect.w = width;          }          align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);          if (align === 'center') {            ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;          } else if (align === 'bottom') {            ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;          } else if (align === 'stretch') {            ctrlLayoutRect.h = height;          }          ctrl.layoutRect(ctrlLayoutRect);          posX += width + spacingH;          if (ctrl.recalc) {            ctrl.recalc();          }        }        posY += height + spacingV;      }    }  });  var Iframe = Widget.extend({    renderHtml: function () {      var self = this;      self.classes.add('iframe');      self.canFocus = false;      return '<iframe id="' + self._id + '" class="' + self.classes + '" tabindex="-1" src="' + (self.settings.url || 'javascript:\'\'') + '" frameborder="0"></iframe>';    },    src: function (src) {      this.getEl().src = src;    },    html: function (html, callback) {      var self = this, body = this.getEl().contentWindow.document.body;      if (!body) {        global$3.setTimeout(function () {          self.html(html);        });      } else {        body.innerHTML = html;        if (callback) {          callback();        }      }      return this;    }  });  var InfoBox = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('widget').add('infobox');      self.canFocus = false;    },    severity: function (level) {      this.classes.remove('error');      this.classes.remove('warning');      this.classes.remove('success');      this.classes.add(level);    },    help: function (state) {      this.state.set('help', state);    },    renderHtml: function () {      var self = this, prefix = self.classPrefix;      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + self.encode(self.state.get('text')) + '<button role="button" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-help"></i>' + '</button>' + '</div>' + '</div>';    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.getEl('body').firstChild.data = self.encode(e.value);        if (self.state.get('rendered')) {          self.updateLayoutRect();        }      });      self.state.on('change:help', function (e) {        self.classes.toggle('has-help', e.value);        if (self.state.get('rendered')) {          self.updateLayoutRect();        }      });      return self._super();    }  });  var Label = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('widget').add('label');      self.canFocus = false;      if (settings.multiline) {        self.classes.add('autoscroll');      }      if (settings.strong) {        self.classes.add('strong');      }    },    initLayoutRect: function () {      var self = this, layoutRect = self._super();      if (self.settings.multiline) {        var size = funcs.getSize(self.getEl());        if (size.width > layoutRect.maxW) {          layoutRect.minW = layoutRect.maxW;          self.classes.add('multiline');        }        self.getEl().style.width = layoutRect.minW + 'px';        layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);      }      return layoutRect;    },    repaint: function () {      var self = this;      if (!self.settings.multiline) {        self.getEl().style.lineHeight = self.layoutRect().h + 'px';      }      return self._super();    },    severity: function (level) {      this.classes.remove('error');      this.classes.remove('warning');      this.classes.remove('success');      this.classes.add(level);    },    renderHtml: function () {      var self = this;      var targetCtrl, forName, forId = self.settings.forId;      var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));      if (!forId && (forName = self.settings.forName)) {        targetCtrl = self.getRoot().find('#' + forName)[0];        if (targetCtrl) {          forId = targetCtrl._id;        }      }      if (forId) {        return '<label id="' + self._id + '" class="' + self.classes + '"' + (forId ? ' for="' + forId + '"' : '') + '>' + text + '</label>';      }      return '<span id="' + self._id + '" class="' + self.classes + '">' + text + '</span>';    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.innerHtml(self.encode(e.value));        if (self.state.get('rendered')) {          self.updateLayoutRect();        }      });      return self._super();    }  });  var Toolbar$1 = Container.extend({    Defaults: {      role: 'toolbar',      layout: 'flow'    },    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('toolbar');    },    postRender: function () {      var self = this;      self.items().each(function (ctrl) {        ctrl.classes.add('toolbar-item');      });      return self._super();    }  });  var MenuBar = Toolbar$1.extend({    Defaults: {      role: 'menubar',      containerCls: 'menubar',      ariaRoot: true,      defaults: { type: 'menubutton' }    }  });  function isChildOf$1(node, parent) {    while (node) {      if (parent === node) {        return true;      }      node = node.parentNode;    }    return false;  }  var MenuButton = Button.extend({    init: function (settings) {      var self = this;      self._renderOpen = true;      self._super(settings);      settings = self.settings;      self.classes.add('menubtn');      if (settings.fixedWidth) {        self.classes.add('fixed-width');      }      self.aria('haspopup', true);      self.state.set('menu', settings.menu || self.render());    },    showMenu: function (toggle) {      var self = this;      var menu;      if (self.menu && self.menu.visible() && toggle !== false) {        return self.hideMenu();      }      if (!self.menu) {        menu = self.state.get('menu') || [];        self.classes.add('opened');        if (menu.length) {          menu = {            type: 'menu',            animate: true,            items: menu          };        } else {          menu.type = menu.type || 'menu';          menu.animate = true;        }        if (!menu.renderTo) {          self.menu = global$11.create(menu).parent(self).renderTo();        } else {          self.menu = menu.parent(self).show().renderTo();        }        self.fire('createmenu');        self.menu.reflow();        self.menu.on('cancel', function (e) {          if (e.control.parent() === self.menu) {            e.stopPropagation();            self.focus();            self.hideMenu();          }        });        self.menu.on('select', function () {          self.focus();        });        self.menu.on('show hide', function (e) {          if (e.control === self.menu) {            self.activeMenu(e.type === 'show');            self.classes.toggle('opened', e.type === 'show');          }          self.aria('expanded', e.type === 'show');        }).fire('show');      }      self.menu.show();      self.menu.layoutRect({ w: self.layoutRect().w });      self.menu.repaint();      self.menu.moveRel(self.getEl(), self.isRtl() ? [        'br-tr',        'tr-br'      ] : [        'bl-tl',        'tl-bl'      ]);      self.fire('showmenu');    },    hideMenu: function () {      var self = this;      if (self.menu) {        self.menu.items().each(function (item) {          if (item.hideMenu) {            item.hideMenu();          }        });        self.menu.hide();      }    },    activeMenu: function (state) {      this.classes.toggle('active', state);    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      var icon = self.settings.icon, image;      var text = self.state.get('text');      var textHtml = '';      image = self.settings.image;      if (image) {        icon = 'none';        if (typeof image !== 'string') {          image = window.getSelection ? image[0] : image[1];        }        image = ' style="background-image: url(\'' + image + '\')"';      } else {        image = '';      }      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';      self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';    },    postRender: function () {      var self = this;      self.on('click', function (e) {        if (e.control === self && isChildOf$1(e.target, self.getEl())) {          self.focus();          self.showMenu(!e.aria);          if (e.aria) {            self.menu.items().filter(':visible')[0].focus();          }        }      });      self.on('mouseenter', function (e) {        var overCtrl = e.control;        var parent = self.parent();        var hasVisibleSiblingMenu;        if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() === parent) {          parent.items().filter('MenuButton').each(function (ctrl) {            if (ctrl.hideMenu && ctrl !== overCtrl) {              if (ctrl.menu && ctrl.menu.visible()) {                hasVisibleSiblingMenu = true;              }              ctrl.hideMenu();            }          });          if (hasVisibleSiblingMenu) {            overCtrl.focus();            overCtrl.showMenu();          }        }      });      return self._super();    },    bindStates: function () {      var self = this;      self.state.on('change:menu', function () {        if (self.menu) {          self.menu.remove();        }        self.menu = null;      });      return self._super();    },    remove: function () {      this._super();      if (this.menu) {        this.menu.remove();      }    }  });  function Throbber (elm, inline) {    var self = this;    var state;    var classPrefix = Control$1.classPrefix;    var timer;    self.show = function (time, callback) {      function render() {        if (state) {          global$7(elm).append('<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>');          if (callback) {            callback();          }        }      }      self.hide();      state = true;      if (time) {        timer = global$3.setTimeout(render, time);      } else {        render();      }      return self;    };    self.hide = function () {      var child = elm.lastChild;      global$3.clearTimeout(timer);      if (child && child.className.indexOf('throbber') !== -1) {        child.parentNode.removeChild(child);      }      state = false;      return self;    };  }  var Menu = FloatPanel.extend({    Defaults: {      defaultType: 'menuitem',      border: 1,      layout: 'stack',      role: 'application',      bodyRole: 'menu',      ariaRoot: true    },    init: function (settings) {      var self = this;      settings.autohide = true;      settings.constrainToViewport = true;      if (typeof settings.items === 'function') {        settings.itemsFactory = settings.items;        settings.items = [];      }      if (settings.itemDefaults) {        var items = settings.items;        var i = items.length;        while (i--) {          items[i] = global$4.extend({}, settings.itemDefaults, items[i]);        }      }      self._super(settings);      self.classes.add('menu');      if (settings.animate && global$1.ie !== 11) {        self.classes.add('animate');      }    },    repaint: function () {      this.classes.toggle('menu-align', true);      this._super();      this.getEl().style.height = '';      this.getEl('body').style.height = '';      return this;    },    cancel: function () {      var self = this;      self.hideAll();      self.fire('select');    },    load: function () {      var self = this;      var time, factory;      function hideThrobber() {        if (self.throbber) {          self.throbber.hide();          self.throbber = null;        }      }      factory = self.settings.itemsFactory;      if (!factory) {        return;      }      if (!self.throbber) {        self.throbber = new Throbber(self.getEl('body'), true);        if (self.items().length === 0) {          self.throbber.show();          self.fire('loading');        } else {          self.throbber.show(100, function () {            self.items().remove();            self.fire('loading');          });        }        self.on('hide close', hideThrobber);      }      self.requestTime = time = new Date().getTime();      self.settings.itemsFactory(function (items) {        if (items.length === 0) {          self.hide();          return;        }        if (self.requestTime !== time) {          return;        }        self.getEl().style.width = '';        self.getEl('body').style.width = '';        hideThrobber();        self.items().remove();        self.getEl('body').innerHTML = '';        self.add(items);        self.renderNew();        self.fire('loaded');      });    },    hideAll: function () {      var self = this;      this.find('menuitem').exec('hideMenu');      return self._super();    },    preRender: function () {      var self = this;      self.items().each(function (ctrl) {        var settings = ctrl.settings;        if (settings.icon || settings.image || settings.selectable) {          self._hasIcons = true;          return false;        }      });      if (self.settings.itemsFactory) {        self.on('postrender', function () {          if (self.settings.itemsFactory) {            self.load();          }        });      }      self.on('show hide', function (e) {        if (e.control === self) {          if (e.type === 'show') {            global$3.setTimeout(function () {              self.classes.add('in');            }, 0);          } else {            self.classes.remove('in');          }        }      });      return self._super();    }  });  var ListBox = MenuButton.extend({    init: function (settings) {      var self = this;      var values, selected, selectedText, lastItemCtrl;      function setSelected(menuValues) {        for (var i = 0; i < menuValues.length; i++) {          selected = menuValues[i].selected || settings.value === menuValues[i].value;          if (selected) {            selectedText = selectedText || menuValues[i].text;            self.state.set('value', menuValues[i].value);            return true;          }          if (menuValues[i].menu) {            if (setSelected(menuValues[i].menu)) {              return true;            }          }        }      }      self._super(settings);      settings = self.settings;      self._values = values = settings.values;      if (values) {        if (typeof settings.value !== 'undefined') {          setSelected(values);        }        if (!selected && values.length > 0) {          selectedText = values[0].text;          self.state.set('value', values[0].value);        }        self.state.set('menu', values);      }      self.state.set('text', settings.text || selectedText);      self.classes.add('listbox');      self.on('select', function (e) {        var ctrl = e.control;        if (lastItemCtrl) {          e.lastControl = lastItemCtrl;        }        if (settings.multiple) {          ctrl.active(!ctrl.active());        } else {          self.value(e.control.value());        }        lastItemCtrl = ctrl;      });    },    value: function (value) {      if (arguments.length === 0) {        return this.state.get('value');      }      if (typeof value === 'undefined') {        return this;      }      if (this.settings.values) {        var matchingValues = global$4.grep(this.settings.values, function (a) {          return a.value === value;        });        if (matchingValues.length > 0) {          this.state.set('value', value);        } else if (value === null) {          this.state.set('value', null);        }      } else {        this.state.set('value', value);      }      return this;    },    bindStates: function () {      var self = this;      function activateMenuItemsByValue(menu, value) {        if (menu instanceof Menu) {          menu.items().each(function (ctrl) {            if (!ctrl.hasMenus()) {              ctrl.active(ctrl.value() === value);            }          });        }      }      function getSelectedItem(menuValues, value) {        var selectedItem;        if (!menuValues) {          return;        }        for (var i = 0; i < menuValues.length; i++) {          if (menuValues[i].value === value) {            return menuValues[i];          }          if (menuValues[i].menu) {            selectedItem = getSelectedItem(menuValues[i].menu, value);            if (selectedItem) {              return selectedItem;            }          }        }      }      self.on('show', function (e) {        activateMenuItemsByValue(e.control, self.value());      });      self.state.on('change:value', function (e) {        var selectedItem = getSelectedItem(self.state.get('menu'), e.value);        if (selectedItem) {          self.text(selectedItem.text);        } else {          self.text(self.settings.text);        }      });      return self._super();    }  });  var toggleTextStyle = function (ctrl, state) {    var textStyle = ctrl._textStyle;    if (textStyle) {      var textElm = ctrl.getEl('text');      textElm.setAttribute('style', textStyle);      if (state) {        textElm.style.color = '';        textElm.style.backgroundColor = '';      }    }  };  var MenuItem = Widget.extend({    Defaults: {      border: 0,      role: 'menuitem'    },    init: function (settings) {      var self = this;      var text;      self._super(settings);      settings = self.settings;      self.classes.add('menu-item');      if (settings.menu) {        self.classes.add('menu-item-expand');      }      if (settings.preview) {        self.classes.add('menu-item-preview');      }      text = self.state.get('text');      if (text === '-' || text === '|') {        self.classes.add('menu-item-sep');        self.aria('role', 'separator');        self.state.set('text', '-');      }      if (settings.selectable) {        self.aria('role', 'menuitemcheckbox');        self.classes.add('menu-item-checkbox');        settings.icon = 'selected';      }      if (!settings.preview && !settings.selectable) {        self.classes.add('menu-item-normal');      }      self.on('mousedown', function (e) {        e.preventDefault();      });      if (settings.menu && !settings.ariaHideMenu) {        self.aria('haspopup', true);      }    },    hasMenus: function () {      return !!this.settings.menu;    },    showMenu: function () {      var self = this;      var settings = self.settings;      var menu;      var parent = self.parent();      parent.items().each(function (ctrl) {        if (ctrl !== self) {          ctrl.hideMenu();        }      });      if (settings.menu) {        menu = self.menu;        if (!menu) {          menu = settings.menu;          if (menu.length) {            menu = {              type: 'menu',              items: menu            };          } else {            menu.type = menu.type || 'menu';          }          if (parent.settings.itemDefaults) {            menu.itemDefaults = parent.settings.itemDefaults;          }          menu = self.menu = global$11.create(menu).parent(self).renderTo();          menu.reflow();          menu.on('cancel', function (e) {            e.stopPropagation();            self.focus();            menu.hide();          });          menu.on('show hide', function (e) {            if (e.control.items) {              e.control.items().each(function (ctrl) {                ctrl.active(ctrl.settings.selected);              });            }          }).fire('show');          menu.on('hide', function (e) {            if (e.control === menu) {              self.classes.remove('selected');            }          });          menu.submenu = true;        } else {          menu.show();        }        menu._parentMenu = parent;        menu.classes.add('menu-sub');        var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [          'tl-tr',          'bl-br',          'tr-tl',          'br-bl'        ] : [          'tr-tl',          'br-bl',          'tl-tr',          'bl-br'        ]);        menu.moveRel(self.getEl(), rel);        menu.rel = rel;        rel = 'menu-sub-' + rel;        menu.classes.remove(menu._lastRel).add(rel);        menu._lastRel = rel;        self.classes.add('selected');        self.aria('expanded', true);      }    },    hideMenu: function () {      var self = this;      if (self.menu) {        self.menu.items().each(function (item) {          if (item.hideMenu) {            item.hideMenu();          }        });        self.menu.hide();        self.aria('expanded', false);      }      return self;    },    renderHtml: function () {      var self = this;      var id = self._id;      var settings = self.settings;      var prefix = self.classPrefix;      var text = self.state.get('text');      var icon = self.settings.icon, image = '', shortcut = settings.shortcut;      var url = self.encode(settings.url), iconHtml = '';      function convertShortcut(shortcut) {        var i, value, replace = {};        if (global$1.mac) {          replace = {            alt: '⌥',            ctrl: '⌘',            shift: '⇧',            meta: '⌘'          };        } else {          replace = { meta: 'Ctrl' };        }        shortcut = shortcut.split('+');        for (i = 0; i < shortcut.length; i++) {          value = replace[shortcut[i].toLowerCase()];          if (value) {            shortcut[i] = value;          }        }        return shortcut.join('+');      }      function escapeRegExp(str) {        return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');      }      function markMatches(text) {        var match = settings.match || '';        return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {          return '!mce~match[' + match + ']mce~match!';        }) : text;      }      function boldMatches(text) {        return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '<b>').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '</b>');      }      if (icon) {        self.parent().classes.add('menu-has-icons');      }      if (settings.image) {        image = ' style="background-image: url(\'' + settings.image + '\')"';      }      if (shortcut) {        shortcut = convertShortcut(shortcut);      }      icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');      iconHtml = text !== '-' ? '<i class="' + icon + '"' + image + '></i>\xA0' : '';      text = boldMatches(self.encode(markMatches(text)));      url = boldMatches(self.encode(markMatches(url)));      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1">' + iconHtml + (text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') + (shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') + (settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') + (url ? '<div class="' + prefix + 'menu-item-link">' + url + '</div>' : '') + '</div>';    },    postRender: function () {      var self = this, settings = self.settings;      var textStyle = settings.textStyle;      if (typeof textStyle === 'function') {        textStyle = textStyle.call(this);      }      if (textStyle) {        var textElm = self.getEl('text');        if (textElm) {          textElm.setAttribute('style', textStyle);          self._textStyle = textStyle;        }      }      self.on('mouseenter click', function (e) {        if (e.control === self) {          if (!settings.menu && e.type === 'click') {            self.fire('select');            global$3.requestAnimationFrame(function () {              self.parent().hideAll();            });          } else {            self.showMenu();            if (e.aria) {              self.menu.focus(true);            }          }        }      });      self._super();      return self;    },    hover: function () {      var self = this;      self.parent().items().each(function (ctrl) {        ctrl.classes.remove('selected');      });      self.classes.toggle('selected', true);      return self;    },    active: function (state) {      toggleTextStyle(this, state);      if (typeof state !== 'undefined') {        this.aria('checked', state);      }      return this._super(state);    },    remove: function () {      this._super();      if (this.menu) {        this.menu.remove();      }    }  });  var Radio = Checkbox.extend({    Defaults: {      classes: 'radio',      role: 'radio'    }  });  var ResizeHandle = Widget.extend({    renderHtml: function () {      var self = this, prefix = self.classPrefix;      self.classes.add('resizehandle');      if (self.settings.direction === 'both') {        self.classes.add('resizehandle-both');      }      self.canFocus = false;      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' + '</div>';    },    postRender: function () {      var self = this;      self._super();      self.resizeDragHelper = new DragHelper(this._id, {        start: function () {          self.fire('ResizeStart');        },        drag: function (e) {          if (self.settings.direction !== 'both') {            e.deltaX = 0;          }          self.fire('Resize', e);        },        stop: function () {          self.fire('ResizeEnd');        }      });    },    remove: function () {      if (this.resizeDragHelper) {        this.resizeDragHelper.destroy();      }      return this._super();    }  });  function createOptions(options) {    var strOptions = '';    if (options) {      for (var i = 0; i < options.length; i++) {        strOptions += '<option value="' + options[i] + '">' + options[i] + '</option>';      }    }    return strOptions;  }  var SelectBox = Widget.extend({    Defaults: {      classes: 'selectbox',      role: 'selectbox',      options: []    },    init: function (settings) {      var self = this;      self._super(settings);      if (self.settings.size) {        self.size = self.settings.size;      }      if (self.settings.options) {        self._options = self.settings.options;      }      self.on('keydown', function (e) {        var rootControl;        if (e.keyCode === 13) {          e.preventDefault();          self.parents().reverse().each(function (ctrl) {            if (ctrl.toJSON) {              rootControl = ctrl;              return false;            }          });          self.fire('submit', { data: rootControl.toJSON() });        }      });    },    options: function (state) {      if (!arguments.length) {        return this.state.get('options');      }      this.state.set('options', state);      return this;    },    renderHtml: function () {      var self = this;      var options, size = '';      options = createOptions(self._options);      if (self.size) {        size = ' size = "' + self.size + '"';      }      return '<select id="' + self._id + '" class="' + self.classes + '"' + size + '>' + options + '</select>';    },    bindStates: function () {      var self = this;      self.state.on('change:options', function (e) {        self.getEl().innerHTML = createOptions(e.value);      });      return self._super();    }  });  function constrain(value, minVal, maxVal) {    if (value < minVal) {      value = minVal;    }    if (value > maxVal) {      value = maxVal;    }    return value;  }  function setAriaProp(el, name, value) {    el.setAttribute('aria-' + name, value);  }  function updateSliderHandle(ctrl, value) {    var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;    if (ctrl.settings.orientation === 'v') {      stylePosName = 'top';      sizeName = 'height';      shortSizeName = 'h';    } else {      stylePosName = 'left';      sizeName = 'width';      shortSizeName = 'w';    }    handleEl = ctrl.getEl('handle');    maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];    styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';    handleEl.style[stylePosName] = styleValue;    handleEl.style.height = ctrl.layoutRect().h + 'px';    setAriaProp(handleEl, 'valuenow', value);    setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));    setAriaProp(handleEl, 'valuemin', ctrl._minValue);    setAriaProp(handleEl, 'valuemax', ctrl._maxValue);  }  var Slider = Widget.extend({    init: function (settings) {      var self = this;      if (!settings.previewFilter) {        settings.previewFilter = function (value) {          return Math.round(value * 100) / 100;        };      }      self._super(settings);      self.classes.add('slider');      if (settings.orientation === 'v') {        self.classes.add('vertical');      }      self._minValue = $_55hqur17ojh8lz7m9.isNumber(settings.minValue) ? settings.minValue : 0;      self._maxValue = $_55hqur17ojh8lz7m9.isNumber(settings.maxValue) ? settings.maxValue : 100;      self._initValue = self.state.get('value');    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-handle" class="' + prefix + 'slider-handle" role="slider" tabindex="-1"></div>' + '</div>';    },    reset: function () {      this.value(this._initValue).repaint();    },    postRender: function () {      var self = this;      var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;      function toFraction(min, max, val) {        return (val + min) / (max - min);      }      function fromFraction(min, max, val) {        return val * (max - min) - min;      }      function handleKeyboard(minValue, maxValue) {        function alter(delta) {          var value;          value = self.value();          value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);          value = constrain(value, minValue, maxValue);          self.value(value);          self.fire('dragstart', { value: value });          self.fire('drag', { value: value });          self.fire('dragend', { value: value });        }        self.on('keydown', function (e) {          switch (e.keyCode) {          case 37:          case 38:            alter(-1);            break;          case 39:          case 40:            alter(1);            break;          }        });      }      function handleDrag(minValue, maxValue, handleEl) {        var startPos, startHandlePos, maxHandlePos, handlePos, value;        self._dragHelper = new DragHelper(self._id, {          handle: self._id + '-handle',          start: function (e) {            startPos = e[screenCordName];            startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);            maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];            self.fire('dragstart', { value: value });          },          drag: function (e) {            var delta = e[screenCordName] - startPos;            handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);            handleEl.style[stylePosName] = handlePos + 'px';            value = minValue + handlePos / maxHandlePos * (maxValue - minValue);            self.value(value);            self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');            self.fire('drag', { value: value });          },          stop: function () {            self.tooltip().hide();            self.fire('dragend', { value: value });          }        });      }      minValue = self._minValue;      maxValue = self._maxValue;      if (self.settings.orientation === 'v') {        screenCordName = 'screenY';        stylePosName = 'top';        sizeName = 'height';        shortSizeName = 'h';      } else {        screenCordName = 'screenX';        stylePosName = 'left';        sizeName = 'width';        shortSizeName = 'w';      }      self._super();      handleKeyboard(minValue, maxValue);      handleDrag(minValue, maxValue, self.getEl('handle'));    },    repaint: function () {      this._super();      updateSliderHandle(this, this.value());    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        updateSliderHandle(self, e.value);      });      return self._super();    }  });  var Spacer = Widget.extend({    renderHtml: function () {      var self = this;      self.classes.add('spacer');      self.canFocus = false;      return '<div id="' + self._id + '" class="' + self.classes + '"></div>';    }  });  var SplitButton = MenuButton.extend({    Defaults: {      classes: 'widget btn splitbtn',      role: 'button'    },    repaint: function () {      var self = this;      var elm = self.getEl();      var rect = self.layoutRect();      var mainButtonElm, menuButtonElm;      self._super();      mainButtonElm = elm.firstChild;      menuButtonElm = elm.lastChild;      global$7(mainButtonElm).css({        width: rect.w - funcs.getSize(menuButtonElm).width,        height: rect.h - 2      });      global$7(menuButtonElm).css({ height: rect.h - 2 });      return self;    },    activeMenu: function (state) {      var self = this;      global$7(self.getEl().lastChild).toggleClass(self.classPrefix + 'active', state);    },    renderHtml: function () {      var self = this;      var id = self._id;      var prefix = self.classPrefix;      var image;      var icon = self.state.get('icon');      var text = self.state.get('text');      var settings = self.settings;      var textHtml = '', ariaPressed;      image = settings.image;      if (image) {        icon = 'none';        if (typeof image !== 'string') {          image = window.getSelection ? image[0] : image[1];        }        image = ' style="background-image: url(\'' + image + '\')"';      } else {        image = '';      }      icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';      return '<div id="' + id + '" class="' + self.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self._menuBtnText ? (icon ? '\xA0' : '') + self._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';    },    postRender: function () {      var self = this, onClickHandler = self.settings.onclick;      self.on('click', function (e) {        var node = e.target;        if (e.control === this) {          while (node) {            if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {              e.stopImmediatePropagation();              if (onClickHandler) {                onClickHandler.call(this, e);              }              return;            }            node = node.parentNode;          }        }      });      delete self.settings.onclick;      return self._super();    }  });  var StackLayout = FlowLayout.extend({    Defaults: {      containerClass: 'stack-layout',      controlClass: 'stack-layout-item',      endClass: 'break'    },    isNative: function () {      return true;    }  });  var TabPanel = Panel.extend({    Defaults: {      layout: 'absolute',      defaults: { type: 'panel' }    },    activateTab: function (idx) {      var activeTabElm;      if (this.activeTabId) {        activeTabElm = this.getEl(this.activeTabId);        global$7(activeTabElm).removeClass(this.classPrefix + 'active');        activeTabElm.setAttribute('aria-selected', 'false');      }      this.activeTabId = 't' + idx;      activeTabElm = this.getEl('t' + idx);      activeTabElm.setAttribute('aria-selected', 'true');      global$7(activeTabElm).addClass(this.classPrefix + 'active');      this.items()[idx].show().fire('showtab');      this.reflow();      this.items().each(function (item, i) {        if (idx !== i) {          item.hide();        }      });    },    renderHtml: function () {      var self = this;      var layout = self._layout;      var tabsHtml = '';      var prefix = self.classPrefix;      self.preRender();      layout.preRender(self);      self.items().each(function (ctrl, i) {        var id = self._id + '-t' + i;        ctrl.aria('role', 'tabpanel');        ctrl.aria('labelledby', id);        tabsHtml += '<div id="' + id + '" class="' + prefix + 'tab" ' + 'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' + self.encode(ctrl.settings.title) + '</div>';      });      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + '<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' + tabsHtml + '</div>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>' + '</div>';    },    postRender: function () {      var self = this;      self._super();      self.settings.activeTab = self.settings.activeTab || 0;      self.activateTab(self.settings.activeTab);      this.on('click', function (e) {        var targetParent = e.target.parentNode;        if (targetParent && targetParent.id === self._id + '-head') {          var i = targetParent.childNodes.length;          while (i--) {            if (targetParent.childNodes[i] === e.target) {              self.activateTab(i);            }          }        }      });    },    initLayoutRect: function () {      var self = this;      var rect, minW, minH;      minW = funcs.getSize(self.getEl('head')).width;      minW = minW < 0 ? 0 : minW;      minH = 0;      self.items().each(function (item) {        minW = Math.max(minW, item.layoutRect().minW);        minH = Math.max(minH, item.layoutRect().minH);      });      self.items().each(function (ctrl) {        ctrl.settings.x = 0;        ctrl.settings.y = 0;        ctrl.settings.w = minW;        ctrl.settings.h = minH;        ctrl.layoutRect({          x: 0,          y: 0,          w: minW,          h: minH        });      });      var headH = funcs.getSize(self.getEl('head')).height;      self.settings.minWidth = minW;      self.settings.minHeight = minH + headH;      rect = self._super();      rect.deltaH += headH;      rect.innerH = rect.h - rect.deltaH;      return rect;    }  });  var TextBox = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('textbox');      if (settings.multiline) {        self.classes.add('multiline');      } else {        self.on('keydown', function (e) {          var rootControl;          if (e.keyCode === 13) {            e.preventDefault();            self.parents().reverse().each(function (ctrl) {              if (ctrl.toJSON) {                rootControl = ctrl;                return false;              }            });            self.fire('submit', { data: rootControl.toJSON() });          }        });        self.on('keyup', function (e) {          self.state.set('value', e.target.value);        });      }    },    repaint: function () {      var self = this;      var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;      style = self.getEl().style;      rect = self._layoutRect;      lastRepaintRect = self._lastRepaintRect || {};      var doc = document;      if (!self.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {        style.lineHeight = rect.h - borderH + 'px';      }      borderBox = self.borderBox;      borderW = borderBox.left + borderBox.right + 8;      borderH = borderBox.top + borderBox.bottom + (self.settings.multiline ? 8 : 0);      if (rect.x !== lastRepaintRect.x) {        style.left = rect.x + 'px';        lastRepaintRect.x = rect.x;      }      if (rect.y !== lastRepaintRect.y) {        style.top = rect.y + 'px';        lastRepaintRect.y = rect.y;      }      if (rect.w !== lastRepaintRect.w) {        style.width = rect.w - borderW + 'px';        lastRepaintRect.w = rect.w;      }      if (rect.h !== lastRepaintRect.h) {        style.height = rect.h - borderH + 'px';        lastRepaintRect.h = rect.h;      }      self._lastRepaintRect = lastRepaintRect;      self.fire('repaint', {}, false);      return self;    },    renderHtml: function () {      var self = this;      var settings = self.settings;      var attrs, elm;      attrs = {        id: self._id,        hidefocus: '1'      };      global$4.each([        'rows',        'spellcheck',        'maxLength',        'size',        'readonly',        'min',        'max',        'step',        'list',        'pattern',        'placeholder',        'required',        'multiple'      ], function (name) {        attrs[name] = settings[name];      });      if (self.disabled()) {        attrs.disabled = 'disabled';      }      if (settings.subtype) {        attrs.type = settings.subtype;      }      elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);      elm.value = self.state.get('value');      elm.className = self.classes.toString();      return elm.outerHTML;    },    value: function (value) {      if (arguments.length) {        this.state.set('value', value);        return this;      }      if (this.state.get('rendered')) {        this.state.set('value', this.getEl().value);      }      return this.state.get('value');    },    postRender: function () {      var self = this;      self.getEl().value = self.state.get('value');      self._super();      self.$el.on('change', function (e) {        self.state.set('value', e.target.value);        self.fire('change', e);      });    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        if (self.getEl().value !== e.value) {          self.getEl().value = e.value;        }      });      self.state.on('change:disabled', function (e) {        self.getEl().disabled = e.value;      });      return self._super();    },    remove: function () {      this.$el.off();      this._super();    }  });  var getApi = function () {    return {      Selector: Selector,      Collection: Collection$2,      ReflowQueue: $_dipgfl182jh8lz7nt,      Control: Control$1,      Factory: global$11,      KeyboardNavigation: KeyboardNavigation,      Container: Container,      DragHelper: DragHelper,      Scrollable: $_1ecd7e18gjh8lz7pl,      Panel: Panel,      Movable: $_ben1dh184jh8lz7ny,      Resizable: $_1a5lul18hjh8lz7pp,      FloatPanel: FloatPanel,      Window: Window,      MessageBox: MessageBox,      Tooltip: Tooltip,      Widget: Widget,      Progress: Progress,      Notification: Notification,      Layout: Layout$1,      AbsoluteLayout: AbsoluteLayout,      Button: Button,      ButtonGroup: ButtonGroup,      Checkbox: Checkbox,      ComboBox: ComboBox,      ColorBox: ColorBox,      PanelButton: PanelButton,      ColorButton: ColorButton,      ColorPicker: ColorPicker,      Path: Path,      ElementPath: ElementPath,      FormItem: FormItem,      Form: Form,      FieldSet: FieldSet,      FilePicker: FilePicker,      FitLayout: FitLayout,      FlexLayout: FlexLayout,      FlowLayout: FlowLayout,      FormatControls: $_e9ct9h1akjh8lz7wa,      GridLayout: GridLayout,      Iframe: Iframe,      InfoBox: InfoBox,      Label: Label,      Toolbar: Toolbar$1,      MenuBar: MenuBar,      MenuButton: MenuButton,      MenuItem: MenuItem,      Throbber: Throbber,      Menu: Menu,      ListBox: ListBox,      Radio: Radio,      ResizeHandle: ResizeHandle,      SelectBox: SelectBox,      Slider: Slider,      Spacer: Spacer,      SplitButton: SplitButton,      StackLayout: StackLayout,      TabPanel: TabPanel,      TextBox: TextBox,      DropZone: DropZone,      BrowseButton: BrowseButton    };  };  var appendTo = function (target) {    if (target.ui) {      global$4.each(getApi(), function (ref, key) {        target.ui[key] = ref;      });    } else {      target.ui = getApi();    }  };  var registerToFactory = function () {    global$4.each(getApi(), function (ref, key) {      global$11.add(key, ref);    });  };  var Api = {    appendTo: appendTo,    registerToFactory: registerToFactory  };  Api.registerToFactory();  Api.appendTo(window.tinymce ? window.tinymce : {});  global.add('inlite', function (editor) {    var panel = create$3();    $_e9ct9h1akjh8lz7wa.setup(editor);    $_67na6j18jjh8lz7pt.addToEditor(editor, panel);    return $_952h616zjh8lz7kr.get(editor, panel);  });  function Theme () {  }  return Theme;}());})();
 |