{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/js/tinymce/tinymce.js","webpack:///./src/common/components/loading.vue?5773","webpack:///./src/assets/js/tinymce/plugins/code/plugin.js","webpack:///./src/common/cookie.js","webpack:///./src/common/cache.js","webpack:///./src/common/directives/datepicker.js","webpack:///./src/template/header.vue?527a","webpack:///./src/assets/js/tinymce/plugins/link/plugin.js","webpack:///./src/assets/images/logo_cna_circulo.png","webpack:///./src/assets/js/tinymce/plugins/paste/plugin.js","webpack:///./src/common/api.js","webpack:///./src/assets/js/tinymce/plugins/media/plugin.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/assets/js/tinymce/plugins/advlist/plugin.js","webpack:///./src/assets/images/logo_shoppingcolor.png","webpack:///./src/assets/js/tinymce/plugins/preview/plugin.js","webpack:///./src/App.vue","webpack:///./src/App.vue?bff9","webpack:///./src/views/home/index.vue","webpack:///src/views/home/index.vue","webpack:///./src/views/home/index.vue?f1d2","webpack:///./src/views/home/index.vue?f631","webpack:///./src/views/authorized/index.vue","webpack:///src/views/authorized/index.vue","webpack:///./src/views/authorized/index.vue?0b32","webpack:///./src/views/authorized/index.vue?716e","webpack:///./src/views/acessonegado/index.vue","webpack:///src/views/acessonegado/index.vue","webpack:///./src/views/acessonegado/index.vue?1a70","webpack:///./src/views/acessonegado/index.vue?0bad","webpack:///./src/views/perfil/index.vue","webpack:///./src/views/perfil/novasenha.vue","webpack:///src/views/perfil/novasenha.vue","webpack:///./src/views/perfil/novasenha.vue?38f2","webpack:///./src/views/perfil/novasenha.vue?0d12","webpack:///src/views/perfil/index.vue","webpack:///./src/views/perfil/index.vue?742f","webpack:///./src/views/perfil/index.vue?d713","webpack:///./src/views/confirmarcadastro/index.vue","webpack:///src/views/confirmarcadastro/index.vue","webpack:///./src/views/confirmarcadastro/index.vue?9d09","webpack:///./src/views/confirmarcadastro/index.vue?343b","webpack:///./src/views/redefinirsenha/index.vue","webpack:///src/views/redefinirsenha/index.vue","webpack:///./src/views/redefinirsenha/index.vue?5d53","webpack:///./src/views/redefinirsenha/index.vue?35c7","webpack:///./src/views/cadastro/index.vue","webpack:///./src/common/components/loading.vue","webpack:///src/common/components/loading.vue","webpack:///./src/common/components/loading.vue?ef88","webpack:///./src/common/components/loading.vue?b5e0","webpack:///./src/template/header.vue","webpack:///src/template/header.vue","webpack:///./src/template/header.vue?b586","webpack:///./src/template/header.vue?5129","webpack:///./src/views/cadastro/acesso.vue","webpack:///src/views/cadastro/acesso.vue","webpack:///./src/views/cadastro/acesso.vue?4d26","webpack:///./src/views/cadastro/acesso.vue?5c87","webpack:///./src/views/cadastro/dados-pessoais.vue","webpack:///src/views/cadastro/dados-pessoais.vue","webpack:///./src/views/cadastro/dados-pessoais.vue?55c3","webpack:///./src/views/cadastro/dados-pessoais.vue?ef07","webpack:///./src/views/cadastro/finalizar.vue","webpack:///src/views/cadastro/finalizar.vue","webpack:///./src/views/cadastro/finalizar.vue?c7e3","webpack:///./src/views/cadastro/finalizar.vue?383d","webpack:///./src/views/cadastro/identificacao.vue","webpack:///src/views/cadastro/identificacao.vue","webpack:///./src/views/cadastro/identificacao.vue?f544","webpack:///./src/views/cadastro/identificacao.vue?baeb","webpack:///./src/views/cadastro/senha.vue","webpack:///src/views/cadastro/senha.vue","webpack:///./src/views/cadastro/senha.vue?81b8","webpack:///./src/views/cadastro/senha.vue?85f4","webpack:///src/views/cadastro/index.vue","webpack:///./src/views/cadastro/index.vue?dbae","webpack:///./src/views/cadastro/index.vue?bbd6","webpack:///./src/views/novocadastro/index.vue","webpack:///src/views/novocadastro/index.vue","webpack:///./src/views/novocadastro/index.vue?f15a","webpack:///./src/views/novocadastro/index.vue?bf1c","webpack:///./src/template/index.vue","webpack:///src/template/index.vue","webpack:///./src/template/index.vue?c05d","webpack:///./src/template/index.vue?465b","webpack:///./src/views/esquecisenha/index.vue","webpack:///src/views/esquecisenha/index.vue","webpack:///./src/views/esquecisenha/index.vue?f7e1","webpack:///./src/views/esquecisenha/index.vue?b304","webpack:///./src/views/esquecisenha/trocarsenha.vue","webpack:///src/views/esquecisenha/trocarsenha.vue","webpack:///./src/views/esquecisenha/trocarsenha.vue?c3c8","webpack:///./src/views/esquecisenha/trocarsenha.vue?70e9","webpack:///./src/router/generated.js","webpack:///./src/router/index.js","webpack:///./src/common/directives/select.js","webpack:///./src/common/directives/canaccess.js","webpack:///./src/main.js","webpack:///./src/common/components/pagination.vue","webpack:///src/common/components/pagination.vue","webpack:///./src/common/components/pagination.vue?71d4","webpack:///./src/common/components/pagination.vue?1013","webpack:///./src/common/base.js","webpack:///./src/assets/js/tinymce/plugins/lists/plugin.js","webpack:///./src/common/auth.js","webpack:///./src/common/global.js","webpack:///./src/views/perfil/index.vue?44cc","webpack:///./src/assets/images/logo_shoppingcna.png","webpack:///./src/assets/images/cna-logo-white.svg","webpack:///./src/assets/js/tinymce/plugins/image/plugin.js","webpack:///./src/assets/images/CNANET.svg","webpack:///./src/assets/js/tinymce/themes/modern/theme.js","webpack:///./src/assets/images/logo_meu_CNA.png","webpack:///./src/assets/logo.png","webpack:///./src/views/redefinirsenha/index.vue?f39e","webpack:///./src/common/directives/htmleditor.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","opera","webkit","ie","ie11","ie12","gecko","mac","iDevice","android","fileApi","phone","tablet","windowsPhone","noop","x","_i","arguments","compose","fa","fb","constant","identity","curry","f","args","Array","newArgs","all","concat","die","msg","Error","never","always","never$1","always$1","none","NONE","eq","isNone","call$$1","thunk","id","noop$$1","nul","undef","me","fold","is","isSome","getOr","getOrThunk","getOrDie","getOrNull","getOrUndefined","or","orThunk","map","ap","each","flatten","exists","forall","filter","equals","equals_","toArray","toString","freeze","some","a","constant_a","self","v","optfab","fab","elementEq","b","from","undefined","Option","typeOf","_typeof","isPrototypeOf","String","isType","type","isString","isObject","isArray","isNull","isBoolean","isFunction","isNumber","rawIndexOf","pIndexOf","indexOf","fastIndex","xs","slowIndex","slowIndexOf","contains","pred","findIndex","len","eachr","partition","pass","fail","arr","foldr","acc","foldl","find","output","reverse","difference","a1","a2","mapToObject","sort","comparator","copy","head","last","from$1","Global","Function","path","parts","scope","resolve","split","unsafe","actual","$_89i3w1cjkmcwk2c","url","createObjectURL","blob","revokeObjectURL","u","$_ci16mbjkmcwk2b","nav","navigator","userAgent","matchMediaQuery","query","matchMedia","matches","test","appName","exec","requestAnimationFramePromise","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document$1","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains$1","contentEditable","parseInt","match","$_cvvl9iajkmcwk25","iOS","transparentSrc","caretAfter","range","getSelection","documentMode","document","ceFalse","cacheSuffix","container","overrideViewPort","experimentalShadowDom","canHaveCSP","desktop","promise","fn","thisArg","Promise","this","TypeError","_state","_value","_deferreds","doResolve","reject","asap","immediateFn","setImmediate","setTimeout","handle","deferred","cb","onFulfilled","onRejected","ret","e","newValue","then","finale","Handler","done","reason","ex","catch","remaining","res","val","constructor","race","values","promiseObj","requestAnimationFrame$$1","callback","element","requestAnimationFrameFunc","requestAnimationFrame","vendors","featurefill","wrappedSetTimeout","time","wrappedSetInterval","setInterval","wrappedClearTimeout","clearTimeout","wrappedClearInterval","clearInterval","debounce","timer","func","stop","$_3l01gcijkmcwk99","body","setEditorTimeout","editor","removed","setEditorInterval","throttle","eventExpandoPrefix","mouseEventRe","deprecated","keyLocation","layerX","layerY","returnValue","webkitMovementX","webkitMovementY","keyIdentifier","hasIsDefaultPrevented","event$$1","isDefaultPrevented","returnTrue","returnFalse","addEvent","target","name$$1","capture","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","getTargetFromShadowDom","defaultTarget","composedPath","fix","originalEvent","srcElement","pageX","clientX","eventDoc","ownerDocument","doc","documentElement","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","preventDefault","stopPropagation","isPropagationStopped","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","metaKey","bindOnReady","win","eventUtils","domLoaded","isDocReady","readyState","readyHandler","waitForDomLoaded","tryScroll","doScroll","top","EventUtils","count","expando","hasFocusIn","hasMouseEnterLeave","mouseEnterLeave","self$$1","events","Date","mouseenter","mouseleave","executeHandlers","evt","callbackList","names","fakeName","nativeHandler","defaultNativeHandler","event","nodeType","current","related","currentTarget","relatedTarget","parentNode","unbind","ci","eventMap","fire","defaultView","parentWindow","clean","children","getElementsByTagName","destroy","cancel","Event","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","push$1","slice$1","indexOf$1","elem","booleans","whitespace","identifier","attributes","pseudos","rtrim","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","childNodes","els","Sizzle","selector","context","results","seed","groups","old","nid","newContext","newSelector","getElementById","getElementsByClassName","qsa","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","markFunction","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","hasCompare","parent$$1","getTop","getById","attrId","tag","tmp","className","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","bp","unshift","expr","elements","matchesSelector","attr","attrHandle","getAttributeNode","specified","error","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","dir","first","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","input","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","parent","header","button","length$$1","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","filters","parseOnly","soFar","preFilters","cached","token","compiled","isArray$1","obj","array","each$1","map$1","out","item","index","filter$1","indexOf$2","reduce","collection","iteratee","accumulator","findIndex$1","predicate","find$1","last$1","$_9g1fibmjkmcwkbu","whiteSpaceRegExp","trim","str","makeMap","items","delim","prop","sp","cn","scn","de","createNS","onCreate","extend","static","ext","walk","resolve$1","explode","_addCacheSuffix","$_4ujg4tljkmcwkbk","grep","inArray","push$2","slice$2","rquickExpr$1","Event$$1","skipUniques","isDefined","isString$1","isWindow","createFragment","html","fragDoc","frag","createElement","createDocumentFragment","innerHTML","appendChild","domManipulate","targetNodes","sourceItem","getElementDocument","DomQuery","makeArray","hasClass","wrap","wrapper","lastParent","newWrapper","cloneNode","insertBefore","numericCssMap","booleanMap","propFix","for","class","readonly","cssFix","float","attrHooks","cssHooks","init","whiteSpaceRegExp$1","trim$1","each$2","charAt","add","nodes","unique","hook","set","removeAttr","css","elm","camel","toUpperCase","dashed","style","removeProperty","currentStyle","getComputedStyle","getPropertyValue","remove","removeChild","append","host","prepend","before","after","appendTo","prependTo","replaceWith","content","wrapAll","wrapInner","contents","unwrap","clone","addClass","toggleClass","removeClass","state","existingClassName","classState","on","off","trigger","show","hide","closest","offset","docElm","pos","y","getBoundingClientRect","left","el","until","sibling","siblingName","firstSibling","parents","next","prev","contentDocument","contentWindow","parentsUntil","nextUntil","prevUntil","overrideDefaults","defaults","sub","appendHooks","targetHooks","hooks","maxlength","maxLength","size","cssText","opacity","zoom","called","firstMatch","regexes","find$2","agent","major","minor","group","Number","nu","detect","versionRegexes","cleanedAgent","unknown","$_2kio3msjkmcwkcv","edge","chrome","ie$1","opera$1","firefox","safari","isBrowser","unknown$1","nu$1","version","info","isEdge","isChrome","isIE","isOpera","isFirefox","isSafari","$_ei4lq0rjkmcwkcq","windows","ios","android$1","linux","osx","solaris","freebsd","isOS","unknown$2","nu$2","isWindows","isiOS","isAndroid","isOSX","isLinux","isSolaris","isFreeBSD","$_85w4ndtjkmcwkcx","DeviceType","os","browser","isiPad","isiPhone","isAndroid3","isAndroid4","isTablet","isTouch","isPhone","iOSwebview","isWebView","detect$1","candidates","candidate","search","detectBrowser","browsers","detectOs","oses","$_6qxoukvjkmcwkd5","contains$2","substr","trim$2","normalVersionRegex","checkContains","uastring","monstrosity","$_6vxr68wjkmcwkdc","detect$2","deviceType","$_c5ox8vqjkmcwkco","detect$3","$_b1ykk4ojkmcwkcj","fromHtml","div","hasChildNodes","console","fromDom","fromTag","fromText","createTextNode","dom","fromPoint","elementFromPoint","Element$$1","$_c8e5uh12jkmcwke2","ATTRIBUTE","Node","ATTRIBUTE_NODE","CDATA_SECTION","CDATA_SECTION_NODE","COMMENT","COMMENT_NODE","DOCUMENT","DOCUMENT_NODE","DOCUMENT_TYPE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT","DOCUMENT_FRAGMENT_NODE","ELEMENT","ELEMENT_NODE","TEXT","TEXT_NODE","PROCESSING_INSTRUCTION","PROCESSING_INSTRUCTION_NODE","ENTITY_REFERENCE","ENTITY_REFERENCE_NODE","ENTITY","ENTITY_NODE","NOTATION","NOTATION_NODE","isType$1","isComment","isElement","isText","isDocument","$_2xwdjv11jkmcwke0","each$3","props","k","map$2","tupleMap","tuple","bifilter","branch","rawSet","setAll","attrs","hasAttribute","hasNone","transferOne","source","destination","transfer","$_29helg15jkmcwkf0","inBody","getBody","$_g4uup916jkmcwkfg","isSupported","$_crv2n17jkmcwkfl","internalSet","setProperty","internalRemove","set$1","setAll$1","setOptions","get$1","styles","getUnsafeProperty","getRaw","raw","getAllRaw","ruleName","isValidValue","remove$1","preserve","oldStyles","restore","sourceDom","targetDom","reflow","offsetWidth","transferOne$1","transfer$1","$_4enzit13jkmcwke5","Immutable","fields","struct","toArray$1","recurse","$_ea405s1djkmcwkgi","documentPositionPreceding","DOCUMENT_POSITION_PRECEDING","documentPositionContainedBy","DOCUMENT_POSITION_CONTAINED_BY","$_ggq6431fjkmcwkgt","is$1","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","one","querySelector","$_4jv6d81gjkmcwkgv","e1","e2","isEqualNode","member","regularContains","d1","d2","ieContains","contains$3","$_e4hu6h1ejkmcwkgj","owner","findIndex$2","kin","isRoot","rawParent","siblings","filterSelf","offsetParent","prevSibling","previousSibling","prevSiblings","nextSiblings","child","childNodesCount","spot","leaf","cs","$_ca6pc118jkmcwkfs","browser$1","firstElement","getTableCaptionDeltaY","caption","bodyTop","offsetTop","captionTop","captionHeight","offsetHeight","getPos","rootElm","offsetLeft","$_5o0xi0njkmcwkbz","nu$3","baseFn","callbacks","map$$1","nCallback","isReady","run","cbs","pure$1","LazyValue","pure","bounce","nu$4","aFutureB","anonBind","futureB","toLazy","pure$2","Future","par","asyncValues","asyncValue","par$1","futures","value$1","opt","onValue","toOption","isValue","isError","message","onError","Result","StyleSheetLoader","document$$1","settings","maxLoadTime","idCount","loadedStates","appendToHead","load","loadedCallback","errorCallback","link","startTime","passed","status","failed","isOldWebKit","webKitChunks","wait","testCallback","waitCallback","getTime","waitForWebKitLinkLoaded","styleSheet","styleSheets","ownerNode","owningElement","waitForGeckoLinkLoaded","cssRules","sheet","rel","async","defer","onload","onerror","loadF","unbox","loadAll","urls","success","failure","TreeWalker","startNode","rootNode","findSibling","startName","shallow","findPreviousNode","prev2","namedEntities","baseEntities","reverseEntities","blocks","voids","tableCells","tableSections","textBlocks","headings","listItems","lists","wsElements","lazyLookup","lookup","isHeading","isBlock","isInline","isBr","isTextBlock","isList","isListItem","isVoid","isTableSection","isTableCell","isWsPreserveElement","isNodeType","isElement$1","matchNodeNames","matchStyleValues","cssValue","computed","hasPropValue","propName","propValue","attrName","attrValue","hasAttributeValue","isBogus","isBogusAll","isTable","tagName","hasContentEditableState","isText$1","isComment$1","isDocument$1","isBr$1","isContentEditableTrue","isContentEditableFalse","$_bjermr1rjkmcwkij","surroundedBySpans","previousIsSpan","nextIsSpan","isBookmarkNode","trimNode","trimmedLength","$_br9sxm1pjkmcwki4","makeMap$1","attrsCharsRegExp","textCharsRegExp","rawCharsRegExp","entityRegExp","asciiMap","128","130","131","132","133","134","135","136","137","138","139","140","142","145","146","147","148","149","150","151","152","153","154","155","156","158","159","'","nativeDecode","buildEntitiesLookup","radix","chr","entity","encodeRaw","encodeAllRaw","encodeNumeric","charCodeAt","encodeNamed","entities","getEncodeFunc","entitiesMap","encodeNamedAndNumeric","encodeCustomNamed","nameMap","named","numeric","decode","$_33qwr1sjkmcwkip","mapCache","dummyObj","makeMap$2","each$4","extend$1","explode$1","inArray$1","compileSchema","globalAttributes","blockContent","phrasingContent","flowContent","html4BlockContent","html4PhrasingContent","schema","ni","attributesOrder","arrayToMap","addAttrs","schemaItem","table","script","compileElementMap","Schema","validStyles","invalidStyles","schemaItems","whiteSpaceElementsMap","selfClosingElementsMap","shortEndedElementsMap","boolAttrMap","validClasses","blockElementsMap","nonEmptyElementsMap","moveCaretBeforeOnEnterElementsMap","textBlockElementsMap","textInlineElementsMap","patternElements","customElementsMap","specialElements","createLookupTable","option","defaultValue","extendWith","verify_html","valid_elements","valid_styles","invalid_styles","valid_classes","special","patternToRegExp","addValidElements","validElements","ei","ai","al","attrData","elementName","attrType","prefix","outputName","globalAttributesOrder","elementRuleRegExp","attrRuleRegExp","hasPatternsRegExp","paddEmpty","removeEmpty","removeEmptyAttrs","attributesRequired","required","attributesDefault","attributesForced","forcedValue","validValues","attributePatterns","setValidElements","addCustomElements","customElements","customElementRegExp","text_block_elements","block_elements","rule","inline","cloneName","customRule","elmName","addValidChildren","validChildren","childRuleRegExp","getElementRule","custom_elements","valid_children","extended_valid_elements","dd","dt","li","td","th","tr","tbody","thead","tfoot","legend","area","param","parentsRequired","invalid_elements","getValidStyles","getInvalidStyles","getValidClasses","getBoolAttrs","getBlockElements","getTextBlockElements","getTextInlineElements","getShortEndedElements","getSelfClosingElements","getNonEmptyElements","getMoveCaretBeforeOnEnterElements","getWhiteSpaceElements","getSpecialElements","isValidChild","isValid","attrPatterns","getCustomElements","toHex","g","hex","Styles","encodingItems","rgbRegExp","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","invisibleChar","color","parse","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","suffix","noJoin","right","bottom","box","canCompress","compress2","encode","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","scriptUrl","allow_svg_data_urls","lastIndex","border","serialize","serializeStyles","styleList","styleMap","each$5","grep$1","simpleSelectorRe","whiteSpaceRegExp$2","setupAttrHooks","getContext","keepValues","keep_values","keepUrlHook","$elm","src","updateInternalStyleAttr","rawValue","findNodeIndex","normalized","lastNodeType","DOMUtils","_this","addedStyles","files","counter","stdMode","boxModel","styleSheetLoader","boundEvents","ownEvents","proxy","$","getRoot","getElementsByName","$$","getAttrib","defaultVal","getAttribs","setAttrib","originalValue","onSetAttrib","attrElm","deep","clone_1","root_element","getViewPort","argWin","actWin","pageXOffset","pageYOffset","w","innerWidth","clientWidth","h","innerHeight","clientHeight","setStyle","update_styles","setStyles","stylesArg","getStyle","getSize","getRect","elms","getParents","collect","selectorVal","getParent","_findSib","getNext","getPrev","setAttribs","setHTML","canHaveHTML","parentElm","newElm","createHTML","outHtml","keepChildren","$node","removeAllAttribs","removeAttributeNode","parseStyle","serializeStyle","addStyle","styleElm","DOM","loadCSS","cls","isHidden","uniqueId","getOuterHTML","outerHTML","setOuterHTML","insertAfter","reference","referenceNode","oldElm","replaceChild","rename","attrNode","findCommonAncestor","pe","ps","rgbVal","isEmpty","walker","brCount","bogusVal","createRng","createRange","splitElm","replacementElm","bef","aft","pa","setStart","setEnd","extractContents","getContentEditable","getContentEditableParent","isChildOf","dumpRng","startContainer","startOffset","endContainer","endOffset","DOMUtils$1","each$6","grep$2","isFunction$1","ScriptLoader","QUEUED","LOADING","LOADED","FAILED","states","queue","scriptLoadedCallbacks","queueLoadedCallbacks","loading","loadScript","onreadystatechange","log","isDone","markDone","loadQueue","loadScripts","scripts","failures","execCallbacks","loadingScripts","notifyCallbacks","each$7","AddOnManager","_listeners","instance","dependencies","requireLangPack","languages","language","languageLoad","addOn","listener","createUrl","baseUrl","dep","resource","addComponents","pluginName","pluginUrl","loadDependencies","addOnUrl","deps","newUrl","urlString","baseURL","substring","lastIndexOf","waitFor","PluginManager","ThemeManager","marker","appendAt","wrap$1","$_f4qt4v1yjkmcwkl2","before$1","after$1","prepend$1","append$1","$_1ev7t1xjkmcwkky","rogue","remove$2","$_eualm21wjkmcwkku","first$1","rate","last$3","Cell","initial","Toggler","turnOff","turnOn","active","toggle","isOn","read","remove$3","$_4m1njo26jkmcwkme","supports","classList","get$2","add$1","clazz","remove$4","$_ewhsr825jkmcwkm2","add$2","cleanClass","remove$5","toggle$1","toggler","hasClasslist","has$1","$_ftm4v023jkmcwklz","all$1","descendants","ancestors","siblings$1","children$1","$_733l9k28jkmcwkmj","all$2","ancestors$1","siblings$2","children$2","descendants$1","$_2gqm0n27jkmcwkmi","ClosestOrAncestor","ancestor","first$2","descendant","sibling$1","child$1","descend","$_253nd92ajkmcwkmp","first$3","ancestor$1","sibling$2","child$2","descendant$1","closest$1","$_4ki4d929jkmcwkmn","annotation","dataAnnotation","dataAnnotationId","identify","annotationName","rng","selection","getRng","an","newStart","getAttr","uid","findMarkers","isAnnotation","findAll","markers","directory","nodesAlready","setup","registry","changeCallbacks","initData","listeners","previous","withCallbacks","updateCallbacks","callbackMap","outputData","fireCallbacks","fireNoAnnotation","onNodeChange","annotations","_a","addListener","setup$1","identifyParserNode","span","optAnnotation","serializer","addNodeFilter","spans","persistent","create$1","register","generate","date","floor","add$3","classes","remove$6","toggle$2","hasAll","hasAny","getNative","get$3","$_dw1myr2hjkmcwko1","clone$1","original","shallowAs","copy$1","cloneChildren","mutate","$_44uvy22ijkmcwko5","slice$3","constant$1","negate","compose$2","and","curry$1","tempArgs","noop$1","$_fl2rax2ljkmcwkot","ZWSP","isZwsp","trim$3","$_cadvcr2pjkmcwkph","isElement$2","isText$2","isCaretContainerBlock","isCaretContainerInline","isCaretContainer","hasContent","insertInline","textNode","endsWithCaretContainer","splitText","startsWithCaretContainer","isBeforeInline","isAfterInline","createBogusBr","br","insertBlock","blockName","blockNode","trimBogusBr","brs","lastBr","showCaretContainerBlock","caretContainer","isRangeInCaretContainerBlock","isContentEditableTrue$1","isContentEditableFalse$1","isBr$2","isText$3","isInvalidTextElement","isAtomicInline","isTable$1","isCaretContainer$1","isCaretCandidate","isNonUiContentEditableFalse","isUnselectable","isInEditable","isAtomicContentEditableFalse","isAtomic","isEditableCaretCandidate","round","clone$2","rect","width","height","collapse","toStart","isEqual","rect1","rect2","isValidOverflow","overflowY","min","isAbove","isBelow","containsXY","overflowX","outer","inner","getOverflow","getSelectedNode","getNode","extendingChars","isExtendingChar","ch","liftN","isElement$3","isCaretCandidate$1","isBlock$1","isFloated","isValidElementCaretCandidate","isNotPre","isText$4","isBr$3","resolveIndex","isWhiteSpace","isRange","isHiddenWhiteSpaceRange","range$$1","getBrClientRect","brNode","clientRect","nbsp","getBoundingClientRectWebKitText","sc","ec","so","eo","newRng","cloneRange","setEndAfter","isZeroRect","clientRects","getClientRects","collapseAndInflateWidth","newClientRect","getCaretPositionClientRects","caretPosition","beforeNode","addUniqueAndValidRect","addCharacterOffset","isAtEnd","CaretPosition","isAtStart","toRange","isVisible","isEqual$$1","getNode$$1","fromRangeStart","fromRangeEnd","pos1","pos2","isTextPosition","isElementPosition","HDirection","CaretPosition$1","isText$5","isBogus$1","nodeIndex$1","normalizedParent","getChildNodes","normalizedTextOffset","equal$1","normalizedNodeIndex","numTextFragments","createPathItem","create$2","outputOffset","resolvePathItem","findTextPosition","dataLen","targetOffset","resolve$2","isContentEditableFalse$2","getNormalizedTextOffset","trimmedOffset","getPoint","point","max","getLocation","bookmark","isCollapsed","end","trimEmptyTextNode","findIndex$3","moveEndPoint","normalizeTableCellSelection","findAdjacentContentEditableFalseElm","getOffsetBookmark","getCaretBookmark","getRangeBookmark","createBookmarkSpan","filled","getPersistentBookmark","collapsed","rng2","endBookmarkNode","insertNode","startBookmarkNode","moveToBookmark","keep","getBookmark","$_aw3zi52jjkmcwkoa","getUndoBookmark","CARET_ID","isCaretNode","getParentCaretContainer","isElement$4","isText$6","removeNode","getNodeValue","setNodeValue","trimCount","trimmedText","removeUnchanged","remove$7","removeTextAndReposition","removeElementAndReposition","newPosition","removeTextCaretContainer","removeElementCaretContainer","removeAndReposition","caretContainerNode","$_xl2r331jkmcwkri","isContentEditableTrue$2","isContentEditableFalse$3","showCaret","direction","scrollIntoView","_selectionOverrides","getNodeRange","selectNode","renderCaretAtRange","normalizedRange","normalizeRange","caretPositionNode","caretPositionBeforeNode","ceRoot","renderRangeCaret","caretRange","BreakType","isContentEditableFalse$4","isText$7","isElement$5","isBr$4","isCaretCandidate$2","isAtomic$1","isEditableCaretCandidate$1","nodeAtIndex","getCaretCandidatePosition","isForwards","isBackwards","isBrBeforeBlock","findCaretPosition","isInSameBlock","startPos","nextNode","innerNode","rootContentEditableFalseElm","findNode","CaretWalker","Forwards","Backwards","flip","positions","walk$1","caretWalker","getBreakType","currentPos","nextPos","Br","Block","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","newPos","lastPos","lastRect","newRect","lastDist","abs","newDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","getPositionsAbove","getPositionsBelow","getFirstLinePositions","$_1m3f3j2yjkmcwkqg","firstPositionIn","getLastLinePositions","lastPositionIn","deflate","delta","getCorners","getYAxisValue","tds","cell","findClosestCorner","corners","newCorner","oldCorner","oldDist","sqrt","getClosestCell","isTargetCorner","cells","corner","getBottomValue","getTopValue","isAbove$1","isBelow$1","getClosestCellAbove","getClosestCellBelow","findClosestPositionInAboveCell","findClosestPositionInBelowCell","getPos$1","fireScrollIntoViewEvent","alignToTop","scrollEvent","scrollElementIntoView","viewPort","viewPortY","viewPortH","offsetY","scrollContainer","getScrollContainer","getWin","scrollTo","getViewPortRect","scrollBy","dx","dy","scrollRangeIntoView","rngRect","bodyRect","overflow","margin","$_a6610x37jkmcwkt5","getBodySetting","getParam","bodyObj","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre","getForcedRootBlock","block","getForcedRootBlockAttrs","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","getFontStyleValues","getFontSizeClasses","$_2ycm1438jkmcwkta","browser$2","isFakeCaretTableBrowser","moveToRange","setRng","isAtTableCellLine","lineInfo","breakPos","isAtFirstTableCellLine","isAtLastTableCellLine","isCaretAtStartOrEndOfTable","caretPos","positionIn","navigateHorizontally","getClosestAbovePosition","getClosestBelowPosition","getTable","renderBlock","down","forcedRootBlock","undoManager","transact","moveCaret","last$$1","navigateVertically","moveH","moveV","isContentEditableFalse$5","isTableCell$1","getAbsoluteClientRect","scrollX","scrollY","rootRect","trimInlineCaretContainers","contentEditableFalseNodes","deleteData","FakeCaret","cursorInterval","lastVisualCaret","caret","caretState","startBlink","reposition","getCss","isFakeCaretTarget","isContentEditableFalse$6","isBlockLike","isCaretContainer$2","isCaretContainerBlock$1","curry$2","isElement$6","isCaretCandidate$3","skipCaretContainers","predicateFn","getParentBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","setStartBefore","setEndBefore","setStartAfter","isNodesInSameBlock","node1","node2","lean","before$2","after$2","leanLeft","leanRight","isNextToContentEditableFalse","isNextToTable","getRelativeCefElm","getNormalizedRangeEndPoint","isBeforeContentEditableFalse","isAfterContentEditableFalse","isBeforeTable","isAfterTable","walkToPositionIn","position","fromPosition","afterElement","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","to","isAtBr","shouldSkipPosition","navigate","nextPosition","prevPosition","isStringPathBookmark","isRangeBookmark","isIdBookmark","isIndexBookmark","isPathBookmark","addBogus","resolveCaretPositionBookmark","insertZwsp","tryFindRangePosition","padEmptyCaretContainer","setEndPoint","isValidTextNode","restoreEndPoint","appendData","alt","o1","o2","resolvePaths","resolveId","endPos","spos","epos","resolveIndex$1","resolve$3","$_1fx23n2wjkmcwkq6","getBookmark$1","isBookmarkNode$1","$_e4btcc2vjkmcwkq3","isInlineBlock","moveStart","isWhiteSpaceNode","getNonWhiteSpaceSibling","inc","isTextBlock$1","ed","replaceVars","vars","isEq","str1","normalizeStyleValue","getTextDecoration","decoration","getParents$1","$_dli08w3ajkmcwktg","isBookmarkNode$2","getParents$2","isWhiteSpaceNode$1","isTextBlock$2","findLeaf","excludeTrailingWhitespace","isBogusBr","findParentContentEditable","findSpace","findWordEndPoint","lastTextNode","findSelectorEndPoint","format","curFormat","findBlockEndPoint","scopeRoot","findParentContainer","block_expand","expandRng","endPoint","expand","$_97afwh2ujkmcwkpw","each$8","getEndChild","walk$2","startPoint","exclude","collectSiblings","endNode","findEndPoint","walkBoundary","$_cuckrv3bjkmcwktk","zeroWidth","NodeValue","getOption","getOptionIE10","getOptionSafe","api","get$4","set$2","$_ckzc193ejkmcwktu","isZeroWidth","wrapName","__rest","getOwnPropertySymbols","applyWordGrab","annotate","decorate","_b","newWrappers","master","_c","_d","_e","finishWrapper","getOrOpenWrapper","processElements","processElement","ctx","processNodes","annotateWithBookmark","initialRng","Annotator","changes","annotationChanged","getAll","hasOnlyOneChild","isPaddingNode","isPaddedEmptyBlock","blockElements","isEmptyFragmentElement","nonEmptyElements","isListFragment","fragment","cleanupDomFragment","domFragment","toDomFragment","listItems$1","isPadding","isListItemPadded","isEmptyOrPadded","trimListItems","getParentLi","parentBlock","isParentBlockLi","getSplit","beforeRng","afterRng","cloneContents","findFirstIn","newCaretPos","findLastOf","insertMiddle","insertAtCaret","liTarget","liElms","BEGINNING","END","isAt","$_e6q31u3jjkmcwkvd","each$9","ElementUtils","attribs","compareObjects","obj1","obj2","getLastChildren","rawNode","removeTrailingBr","allBrs","fillWithPaddingBr","isPaddingContents","isPaddedElement","trimBlockTrailingBr","lastChildPrevSibling","$_zygeg3ljkmcwkvo","makeMap$3","Writer","indent","indentBefore","indentAfter","htmlOutput","indent_before","indent_after","entity_encoding","element_format","cdata","comment","pi","doctype","getContent","HtmlSerializer","writer","validate","handlers","3","8","7","10","4","11","sortedAttrs","elementRule","handler","shortEnded","createRange$1","normalizeBlockSelectionRange","commonAncestorContainer","newEndPos","normalize","$_bx30le3ojkmcwkw9","isTableCell$2","validInsertion","setContent","trimBrsFromTableCell","insertHtmlAtCaret","details","parser","bookmarkHtml","merge","textInlineElements","trimOrPaddLeftRight","hasSiblingText","trimNbspAfterDeleteAndPaddValue","reduceInlineTextElements","root_1","elementUtils_1","testNode","markFragmentElements","umarkFragmentElements","isPartOfFragment","canHaveChildren","moveSelectionToMarker","parentEditableFalseElm","nextRng","getContentEditableFalseParent","findNextCaretRng","paste","caretElement","parentElement","getDoc","execCommand","parserArgs","insert","showBlockCaretContainer","invalid","getStart","addVisual","processValue","insertAtCaret$1","$_g2yj883ijkmcwkv2","sectionResult","detection","mobilePlugins","defaultMobileSettings","theme","normalizePlugins","plugins","pluginNames","trimmedPlugins","filterMobilePlugins","extractSections","keys$$1","getSection","sections","sectionSettings","hasSection","getDefaultSettings","documentBaseUrl","delta_width","delta_height","popup_css","document_base_url","add_form_submit_trigger","submit_patch","add_unload_trigger","convert_urls","relative_urls","remove_script_host","object_resizing","visual","font_size_style_values","font_size_legacy_values","forced_root_block","hidden_input","render_ui","indentation","inline_styles","convert_fonts_to_spans","convertURL","ie7_compat","getExternalPlugins","overrideSettings","userDefinedExternalPlugins","external_plugins","combinePlugins","forcedPlugins","processPlugins","isTouchDevice","defaultOverrideSettings","forced_plugins","platformPlugins","combinedPlugins","isOnMobile","combineSettings","defaultSettings","extendedSettings","content_editable","getEditorSettings","getFiltered","getString","getParamObject","isArrayOf","strongRtl","hasStrongRtl","isInlineTarget","isRtl","findInlineParents","findRootInline","hasSameParentBlock","block1","block2","isAtZwsp","normalizePosition","normalizeForwards","normalizeBackwards","$_crqmqb3tjkmcwkxd","isBeforeRoot","getParentBlock$1","placeCaretInEmptyBody","setCursorLocation","paddEmptyBody","willDeleteLastPositionInElement","fromPos","firstPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","prevPos","$_8z75uj3sjkmcwkx3","any","ancestor$2","sibling$3","child$3","descendant$2","closest$2","$_6rijl23xjkmcwl24","hasWhitespacePreserveParent","rootElement","isWhitespace","isNamedAnchor","isContent","isBookmark","isBogus$2","isBogusAll$1","isEmptyNode","targetNode","isEmpty$1","$_1jnfso3wjkmcwl1v","BlockPosition","BlockBoundary","getBlockPosition","containerElm","isDifferentBlocks","blockBoundary","hasSameParent","parent1","parent2","isEditable","skipLastBr","blockPosition","lastPositionInBlock","readFromRange","fromBlockPos","toBlockPos","blockPos","read$1","$_2x2kic3rjkmcwkwi","dropLast","parentsUntil$1","parents$1","parentsAndSelf","$_cir6zl3zjkmcwl2j","getChildrenUntilBlockBoundary","extractChildren","trimBr","removeEmptyRoot","findParentInsertPoint","toBlock","getInsertionPoint","fromBlock","mergeBlockInto","children_1","mergeBlocks","$_ezyxdl3yjkmcwl27","backspaceDelete","$_1wrlyf3qjkmcwkwe","deleteRangeMergeBlocks","deleteContents","isRawNodeInTable","isSelectionInTable","isEverythingSelected","noPrevious","noNext","emptyEditor","deleteRange","backspaceDelete$1","$_egxtcx40jkmcwl2q","generate$1","cases","constructors","adt","acase","argLength","branches","branchKeys","allReqd","reqKey","label","params","Adt","isCompoundElement","DeleteAction","moveToElement","moveToPosition","isAtContentEditableBlockCaret","caretLocation","isDeleteFromCefDifferentBlocks","inSameBlock","deleteEmptyBlockOrMoveToCef","toCefElm","blockElm","findCefPosition","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","deleteAction","getContentEditableAction","read$2","needsReposition","beforeOrStartOf","afterOrEndOf","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPositionBackwardsFromElm","startPosition","findCaretPositionForwardsFromElm","findCaretPositionBackwards","findCaretPositionForward","findCaretPosition$1","findCaretPosOutsideElmAfterDelete","setSelection","eqRawNode","isBlock$2","paddEmptyBlock","deleteNormalized","afterDeletePosOpt","afterDeletePos","prevNode","deleteElement","normalizedAfterDeletePos","paddPos","$_4yq1i444jkmcwl3w","deleteElement$1","hideFakeCaret","backspaceDeleteCaret","deleteOffscreenSelection","backspaceDeleteRange","selectedElement","getContentEditableRoot","paddEmptyElement","backspaceDelete$2","$_1hyiiy41jkmcwl2z","isText$8","startsWithCaretContainer$1","endsWithCaretContainer$1","createZwsp","insertBefore$1","insertData","newNode","insertAfter$1","insertInline$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","renderCaret","$_efgx6546jkmcwl4n","evaluateUntil","fns","$_8hyv6o49jkmcwl58","Location","rescope","before$3","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","after$3","isValidLocation","getElement","readLocation","getName","outside","inside","isEq$1","location1","location2","betweenInlines","fromInline","toInline","skipNoMovement","fromLocation","toLocation","findLocationTraverse","findLocationSimple","findLocation","$_gau9ep48jkmcwl4x","prevLocation","nextLocation","hasSelectionModifyApi","getSel","modify","moveRel","moveByWord","$_dessn94bjkmcwl5p","setCaretPosition","isFeatureEnabled","inline_boundaries","setSelected","renderCaretLocation","findLocation$1","toggleInlines","selectedInlines","targetInlines","safeRemoveCaretContainer","composing","renderInsideInlineCaret","inlines","move","moveWord","setupSelectedState","moveNextWord","movePrevWord","$_dl6t9m4ajkmcwl5b","isFeatureEnabled$1","rangeFromPositions","hasOnlyTwoOrLessPositionsLeft","setCaretLocation","location$$1","deleteFromTo","ignore","nodeChanged","rescope$1","backspaceDeleteCollapsed","toPosition","backspaceDelete$3","$_dqvreg45jkmcwl4e","tableCellRng","tableSelection","removeTable","emptyCells","isRootFromElement","getClosestCell$1","getClosestTable","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableCells","getCellRangeFromStartTable","endCell","partialSelection","startCell","isWithinSameTable","getCellRng","getTableSelectionFromCellRng","getTableSelectionFromRng","getCellIndex","getSelectedCells","startIndex","endIndex","getAction","getActionFromCells","getActionFromRange","$_2x2sml4djkmcwl68","getRanges","ranges","rangeCount","getRangeAt","getSelectedNodes","hasMultipleRanges","$_admly54fjkmcwl6u","getCellsFromRanges","getCellsFromElement","selectedCells","getCellsFromElementOrRanges","rangeCells","getCellsFromEditor","$_7q5gk44ejkmcwl6p","deleteTableElement","deleteCellRange","action","deleteCaptionRange","emptyElement","deleteTableRange","startElm","getParentCaption","deleteRange$1","getParentCell","deleteBetweenCells","fromCell","toCell","isDeleteOfLastCharPos","fromCaption","emptyCaretCaption","validateCaretCaption","toCaption","deleteCaretInsideCaption","deleteCaretCells","deleteCaretCaption","deleteCaret","backspaceDelete$4","$_5lrlvq4cjkmcwl5t","nativeCommand","command","deleteCommand","forwardDeleteCommand","$_3ahn8y3pjkmcwkwc","getSpecifiedFontProp","getProperty","round$1","number","precision","factor","pow","toPt","fontSize","normalizeFontFamily","fontFamily","getComputedFontProp","getFontProp","$_3qs0f64hjkmcwl74","getFontSize","getFontFamily","findFirstCaretElement","isRangeAtStartOfNode","getCaretElement","fromFontSizeNumber","fontSizeNumber","fontSizes","fontClasses","fontNameAction","formatter","fontNameQuery","fontSizeAction","fontSizeQuery","isEq$2","rng1","$_axtxv74kjkmcwl84","findParent","hasParent","hasParentWithName","isTable$2","isTableCell$3","isCeFalseCaretContainer","hasBrBeforeAfter","isPrevNode","hasContentEditableFalseParent","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","normalize$1","normRng","$_21c07i4jjkmcwl7w","hasRightSideContent","scrollToBr","brElm","moveSelectionToBr","extraBr","insertBrAtCaret","isAfterLastNodeInContainer","containerBlock","containerBlockName","isControlKey","ctrlKey","insertBrBefore","insertBrAfter","hasBrAfter","isBeforeBr","isAnchorLink","isInsideAnchor","readInlineAnchorLocation","insertBrOutsideAnchor","anchorLocation","$_dc07up4ijkmcwl7n","cata","subject","onBefore","onOn","onAfter","situ","$_1s5vuk4njkmcwl8r","type$1","domRange","exact","range$1","exactFromRange","simRange","soffset","finish","foffset","getStart$1","startSitu","finishSitu","$_2v8ne64mjkmcwl8l","browser$3","clamp","normalizeRng","isOrContains","isRngInRoot","shouldStore","nativeRangeToSelectionRange","readRange","getBookmark$2","bookmarkToNativeRng","store","newBookmark","storeNative","$_39c3zs4ljkmcwl86","indentElement","useMargin","unit","indentStyleName","styleValue","indentUnit","indentValue","queryCommandState","getSelectedBlocks","each$10","extend$2","map$3","inArray$2","EditorCommands","commands","ui","customCommand","skip_focus","quirks","queryCommandValue","addCommands","commandList","addCommand","queryCommandSupported","addQueryStateHandler","addQueryValueHandler","hasCustomCommand","execNativeCommand","isFormatMatch","toggleFormat","storeSelection","restoreSelection","queryCommandEnabled","translate","notificationManager","open","align","listElm","listParent","hasVisual","anchor","editingHost","selectNodeContents","alignStates","matchNode","paddingLeft","getEnd","list","Undo","undo","Redo","redo","nativeEvents","Dispatcher","toggleEvent","bindings","beforeFire","once","extra","bindingName","hi","isNative","customEventRootDelegates","getEventDispatcher","_eventDispatcher","toggleNativeEvent","$_ed2ug44qjkmcwl97","bubble","hasEventListeners","firePreProcess","firePostProcess","fireRemove","fireSwitchMode","fireObjectResizeStart","fireObjectResized","$_q3ric4tjkmcwl9q","setEditorCommandState","cmd","toggleReadOnly","controlSelection","hideResizeRect","setMode","getMode","initialized","isReadOnly","DOM$1","getEventTarget","eventName","event_root","eventRoot","isListening","hidden","fireEvent","bindEventDelegate","eventRootElm","delegate","delegates","editorManager","activeEditor","editors","EditorObservable","bindPendingEventDelegates","_pendingNativeEvents","unbindAllNativeEvents","getContainer","EditorObservable$1","each$11","explode$2","keyCodeLookup","f9","f10","f11","modifierNames","Shortcuts","shortcuts","pendingPatterns","parseShortcut","shortcut","keyCode","charCode","access","ctrl","meta","createShortcut","desc","cmdFunc","subpatterns","hasModifier","altKey","isFunctionKey","matchShortcut","shiftKey","executeShortcutAction","any$1","ancestor$3","closest$3","sibling$4","child$4","descendant$3","$_szg1f4xjkmcwlad","focus$$1","blur$$1","blur","_doc","focusInside","$_468a0m4wjkmcwla6","getContentEditableHost","getCollapsedNode","getFocusInElement","normalizeSelection","focusBody","setActive","hasElementFocus","hasIframeFocus","iframeElement","hasInlineFocus","rawBody","hasFocus$1","focusEditor","refreshContentEditable","contentEditableHost","activateEditor","bookmarkRng","focus$1","skipFocus","$_e3v8sn4vjkmcwl9y","getProp","rawElm","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","getBoundingClientRect$1","isInsideElementContentArea","bodyElm","transpose","deltaX","deltaY","isXYInContentArea","targetElm","transposedPoint","fromDomSafe","isEditorAttachedToDom","rawContainer","getContentAreaContainer","$_8we2e850jkmcwlaw","NotificationManagerImpl","unimplemented","close","getArgs","NotificationManager","notifications","getImplementation","getNotificationManagerImpl","getTopNotification","progressBar","timeout","addNotification","notification","closeNotification","otherNotification","getNotifications","registerEvents","serviceMessage","service_message","icon","WindowManagerImpl","alert","confirm","getParams","setParams","WindowManager","getWindowManagerImpl","funcBind","fireOpenEvent","fireCloseEvent","addWindow","closeWindow","otherWindow","getTopWindow","getWindows","resolvePluginName","targetUrl","matchUrl","pluginUrlToMessage","plugin","displayNotification","displayError","_skinLoaded","uploadError","pluginLoadError","initError","console$$1","$_b9je0i54jkmcwlbe","PluginManager$1","XMLHttpRequest","Uploader","uploadStatus","pendingPromises","pathJoin","path1","path2","defaultHandler","blobInfo","progress","xhr","formData","withCredentials","credentials","upload","onprogress","loaded","total","json","JSON","responseText","basePath","FormData","filename","send","noUpload","handlerSuccess","handlerFailure","resolvePending","blobUri","uploadBlobInfo","openNotification","markPending","closeNotification_1","markUploaded","removeFailed","percent","isDefaultHandler","pendingUploadBlobInfo","uploadBlobs","blobInfos","isUploaded","isPending","Blob","properties","FileReader","Uint8Array","requestAnimationFrame$1","atob","base64","$_b0eesx5hjkmcwld6","blobUriToBlob","rejectWithError","responseType","response","parseDataUri","uri","decodeURIComponent","dataUriToBlob","uriToBlob","blobToDataUri","reader","onloadend","readAsDataURL","$_7eufcj5djkmcwlcv","imageToBlobInfo","blobCache","img","getByUri","dataUri","err","findFirst","cachedBlobInfo","getAllImages","ImageScanner","cachedPromises","images","promises","imageInfo","newPromise","count$1","rnd","now","uuid","$_8flfjw5jjkmcwldd","BlobCache","mimeToExt","mime","mimes","toBlobInfo","removeByUri","UploadStatus","PENDING","UPLOADED","blobUriStatuses","createStatus","resultUri","hasBlobUri","getResultUri","EditorUpload","uploader","imageScanner","aliveGuard","cacheInvalidator","replaceString","replaceImageUrl","replacementUrl","replaceUrlInUndoStack","level","fragments","replaceImageUri","images_reuse_filename","uploadImages","images_upload_url","images_upload_base_path","images_upload_credentials","images_upload_handler","scanForImages","imageInfos","filteredResult","uploadInfo","images_replace_blob_uris","uploadImagesAuto","automatic_uploads","isValidDataUriImage","imgElm","images_dataimg_filter","resultItem","replaceBlobUris","editorUpload","source_view","isBlockElement","isValidTarget","hasBlockParent","shouldRemoveTextNode","addRootBlocks","rootBlockNode","tempNode","wrapped","rootNodeName","forced_root_block_attrs","setup$2","$_5utnj35ljkmcwldh","getStartNode","getEndNode","getFirstChildren","getLastChildren$1","hasAllContentsSelected","moveEndPoint$1","hasAnyRanges","sel","NodeChange","lastRng","lastPath","isSameElementPath","currentPath","nativeRng","fakeRng","selectionChange","disable_nodechange","VDirection","getAbsolutePosition","getBodyPosition","getScrollPosition","getBodyScroll","inlineScroll","iframeScroll","getMousePosition","iframePosition","scrollPosition","calculatePosition","bodyPosition","mousePosition","calc","$_7vqqhl5qjkmcwlfd","isContentEditableFalse$7","isContentEditableTrue$4","isDraggable","isValidDropTarget","targetElement","dragElement","cloneElement","cloneElm","createGhost","clonedElm","ghostElm","padding","boxSizing","appendGhostToBody","moveGhost","maxX","maxY","removeElement","isLeftMouseButtonPressed","hasDraggableElement","applyRelPos","relX","start$1","ceElm","elmPos","screenX","screenY","scrollWidth","scrollHeight","relY","ghost","move$1","throttledPlaceCaretAt","placeCaretAt","movement","dragging","targetPos","getRawTarget","drop","targetClone_1","targetClone","insertContent","removeDragState","stop$$1","bindFakeDragEvents","pageDom","dragStartHandler","dragHandler","dropHandler","dragEndHandler","rootDocument","blockIeDrop","realTarget","$_amfo0m5pjkmcwlf7","getNodeClientRects","toArrayWithNode","findUntil","walkUntil","isAboveFn","isBeflowFn","targetClientRect","line","aboveLineNumber","lineNumber","isLineNumber","upUntil","Up","downUntil","Down","positionsUntil","walkFn","isBelowFn","getClientRect","isAboveLine","isLine","isContentEditableFalse$8","findNode$1","distanceToRectLeft","distanceToRectRight","isInside","findClosestClientRect","oldClientRect","oldDistance","newDistance","walkUntil$1","findLineNodeRects","targetNodeRect","checkPosFn","lineRects","getFakeCaretTargets","caretInfo","closestCaret","closestNodeRect","contentEditableFalseNodeRects","targetNodeRects","isXYWithinRange","$_95lcbc5ujkmcwlg1","setup$3","renderFocusCaret","$_8glegd5vjkmcwlg3","$_6bj5795wjkmcwlg6","BACKSPACE","DELETE","DOWN","ENTER","LEFT","RIGHT","SPACEBAR","TAB","UP","modifierPressed","metaKeyPressed","isContentEditableTrue$5","isContentEditableFalse$9","isAfterContentEditableFalse$1","isBeforeContentEditableFalse$1","getContentEditableRoot$1","SelectionOverrides","selectedContentEditableNode","fakeCaret","realSelectionId","isFakeSelectionElement","getRealSelectionElement","setRange","getRange","showCaret$$1","getNormalizedRangeEndPoint$$1","blockCaretContainer","contentEditableRoot","removeContentEditableSelection","handleTouchSelect","moved","setContentEditableSelection","hasNormalCaretPosition","isInSameBlock$$1","hasBetterMouseTarget","targetBlock","caretBlock","isPasteBin","isRangeInCaretContainer","clipboardData","realSelectionElement","clearData","setData","outerText","addCss","contentStyles","rootClass","isWithinCaretContainer","$realSelectionContainer","origTargetClone","removeAllRanges","addRange","isValidPrefixAttrName","trimComments","isInvalidUri","allow_html_data_urls","findEndTagIndex","tokenRegExp","shortEndedElements","SaxParser","fix_self_closing","endRegExp","attrList","textData","isInternalElement","removeInternalElements","fillAttrsMap","isShortEnded","isValidElement","attribsValue","validAttributesMap","validAttributePatterns","processHtml","anyAttributesRequired","selfClosing","attrRegExp","fixSelfClosing","stack","filteredUrlAttrs","scriptUriRegExp","processEndTag","valid","parseAttribute","val2","val3","attrRule","trimRegExp","unescape","self_closing_elements","remove_internals","allow_conditional_comments","findEndTag","SaxParser$1","trimHtml","tempAttrs","trimContentRegExp","trimInternal","endTagIndex","matchLength","bogusAllRegExp","getTempAttrs","trimExternal","$_2varuf5zjkmcwlgq","KEEP","INSERT","vDown","vUp","snake","diag","buildScript","start1","end1","start2","end2","middle","getMiddleSnake","i2","buildSnake","sum","$_3xze2m62jkmcwlh7","getOuterHtml","createFragment$1","insertAt","removeAt","applyDiff","read$3","write","currentFragments","$_cyedqm61jkmcwlh3","fromHtml$1","fromTags","tags","fromText$1","texts","fromDom$1","$_bos53z64jkmcwlhd","get$6","set$3","docDom","contentElements","getOuter","$_xg5463jkmcwlhb","undoLevelDocument","lazyTempDocument","implementation","createHTMLDocument","hasIframes","createFragmentedLevel","beforeBookmark","createCompleteLevel","createFromEditor","trimmedFragments","trimmed","applyToEditor","getLevelContent","getCleanLevelContent","hasEqualContent","level1","level2","hasEqualCleanedContent","isEq$3","$_3cqp0r5yjkmcwlgf","UndoManager","isFirstTypedCharacter","locks","isUnlocked","setTyping","typing","setDirty","addNonTypingUndoLevel","endTyping","beforeChange","isDirty","lastLevel","modKey","isInsertReplacementText","inputType","isInsertTextDataNull","addShortcut","currentLevel","custom_undo_redo_levels","clear","hasUndo","hasRedo","callback1","callback2","isEq$4","matchesUnInheritedFormatSelector","formatList","inherit","matchParents","matchName","matchItems","itemName","similar","onmatch","matchAll","startElement","matchedFormatNames","checkedMap","canApply","defaultBlock","$_axwnk168jkmcwlim","split$1","$_bnmynr69jkmcwlir","ZWSP$1","CARET_ID$1","importNode","getEmptyCaretContainers","isCaretContainerEmpty","findFirstTextNode","createCaretContainer","fill","trimZwspFromCaretContainer","removeCaretContainerNode","removeCaretContainer","insertCaretContainerNode","formatNode","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","applyCaretFormat","wordcharRegex","removeCaretFormat","hasContentAfter","expandedRng","newCaretContainer","disableCaretContainer","setup$4","replaceWithCaretFormat","innerMost","isFormatElement","inlineElements","postProcessHooks","filter$2","each$12","addPostProcessHook","postProcess","isPre","hasPreSibling","pre","joinPre","pre1","pre2","$_dp9y746ajkmcwlit","MCE_ATTR_RE","each$13","isEq$5","isTableCell$4","lastIdx","wrap$2","matchName$1","isColorFormatAndAnchor","links","find$4","removeNode$1","rootBlockElm","list_block","removeFormat","compareNode","stylesModified","remove_similar","valueOut","findFormatRoot","formatRoot","wrapAndSplit","lastClone","firstClone","formatRootParent","mixed","remove$8","splitToFormatRoot","process","lastContentEditable","removeRngStyle","textDecoration","ceFalseOverride","$_2vklhc6cjkmcwlj5","each$14","isElementNode","findElementSibling","mergeSiblingsNodes","tmpSibling","elementUtils","processChildElements","hasStyle","applyStyle","unwrapEmptySpan","processUnderlineAndColor","mergeUnderlineAndColor","mergeBackgroundColorAndFontSize","backgroundColor","mergeSubSup","mergeSiblings","merge_siblings","clearChildStyles","clear_child_styles","mergeWithChildren","mergeWithParents","merge_with_parents","$_ehzows6bjkmcwliw","each$15","isElementNode$1","applyFormat","setElementFormat","fmt","onformat","styleVal","applyNodeStyle","found","applyRngStyle","nodeSpecific","wrapElm","currentWrapElm","parentName","childCount","getChildCount","getChildElementNode","mergeStyles","curSelNode","$_bcenmc66jkmcwlhp","each$16","setup$5","formatChangeData","currentFormats","matchedFormats","addListeners","formats","formatChangeItems","formatChanged","formatChangeState","$_5j3j9s6djkmcwljg","get$7","valigntop","verticalAlign","valignmiddle","valignbottom","alignleft","preview","textAlign","aligncenter","display","marginLeft","marginRight","alignright","alignjustify","bold","fontWeight","italic","fontStyle","underline","strikethrough","forecolor","hilitecolor","fontname","fontsize","fontsize_class","blockquote","subscript","superscript","code","removeformat","$_8oc5be6fjkmcwljl","FormatRegistry","unregister","each$17","parsedSelectorToHtml","ancestry","sItem","getRequiredParent","elmRule","wrapInHtml","parentCandidate","parentRequired","ancestorName","siblingElm","selectorToHtml","parseSelector","parseSelectorItem","$0","$1","$2","$3","$4","getCssText","previewFrag","previewElm","parentFontSize","previewStyles","previewCss","preview_styles","removeVars","numValue","parseFloat","$_ga7lpr6gjkmcwlk1","toggle$3","$_1zpcor6hjkmcwlk7","setup$6","$_2ind0x6ijkmcwlk8","Formatter","hasOwnProperty$1","shallow$1","baseMerge","merger","objects","curObject","htmlParser","addAttributeFilter","internalName","cleanup","trimTrailingBr","brNode1","brNode2","$_ft0zjh6mjkmcwlkr","preProcess","impl","oldDoc","shouldFireEvent","no_events","$_27apc6njkmcwll3","removeAttrs","addFontToSpansFilter","domParser","face","addStrikeToSpanFilter","addFilters","register$1","$_2klegh6pjkmcwllk","whiteSpaceRegExp$3","typeLookup","walk$3","Node$2","selfAttrs","selfAttr","cloneAttrs","refNode","paddEmptyNode","brPreferred","padd_empty_with_br","isPaddedWithNbsp","hasOnlyChild","isPadded","isEmpty$2","whitespaceElements","isLineBreakNode","register$2","remove_trailing_brs","prevName","whiteSpaceElements","appendRel","addNoOpener","newRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","makeMap$4","each$18","explode$3","extend$3","DomParser","nodeFilters","attributeFilters","matchedNodes","matchedAttributes","root_name","fixInvalidChildren","newParent","currentNode","childNode","nonSplitableElements","textBlockElements","fixed","filterNode","getNodeFilters","getAttributeFilters","fi","fl","isInWhiteSpacePreservedElement","invalidChildren","rootBlockName","startWhiteSpaceRegExp","endWhiteSpaceRegExp","allWhiteSpaceRegExp","isAllWhiteSpaceRegExp","createNode","removeWhitespaceBefore","textNodeNext","textVal","cloneAndExcludeBlocks","attrFiltersLen","isRootContent","addTempAttr","postProcess$1","outArgs","getHtmlFromNode","getInner","parseHtml","serializeNode","htmlSerializer","toHtml","DomSerializer","addRules","rules","setRules","DomSerializer$1","domSerializer","BookmarkManager","BookmarkManager$1","isContentEditableFalse$10","isContentEditableTrue$6","getContentEditableRoot$2","ControlSelection","selectedElm","selectedElmGhost","resizeHelper","resizeHandles","selectedHandle","startX","startY","selectedElmX","selectedElmY","startW","startH","ratio","resizeStarted","startScrollWidth","startScrollHeight","editableDoc","nw","ne","se","sw","isImage","isEventOnImageOutsideRange","contextMenuSelectImage","getResizeTarget","isResizable","resizeGhostElement","proportional","resizeHelperX","resizeHelperY","resize_img_proportional","endGhostResize","setSizeProp","showResizeRect","targetWidth","targetHeight","unbindResizeHandleEvents","handleElm","startDrag","unSelectabe","updateResizeRect","controlElm","isChildOrEqual","disableGeckoResize","isWithinContentEditableFalse","delayedSelect","throttledUpdateResizeRect","hasCeProperty","findParent$1","findClosestIeRange","rects","createTextRange","moveToElementText","moveToPoint","moveOutOfContentEditableFalse","fromPoint$1","pointDoc","caretPositionFromPoint","offsetNode","caretRangeFromPoint","$_52q21w6wjkmcwlna","processRanges","$_8161126xjkmcwlnd","fromElements","$_a3l7fy70jkmcwloa","tableModel","tableRow","cellPosition","getSpan","isNaN","fillout","rowspan","colspan","rows","y2","x2","cellExists","skipCellsX","getWidth","row","findElementPos","extractRows","sx","sy","ey","newRows","subTable","createDomTable","tableElement","tableBody","modelRowsToDomRows","fromDom$2","tableElm","toDom","subsection","endElement","$_6wuzo771jkmcwlof","findParentListContainer","getFullySelectedListWrappers","listCont","wrap$3","innerElm","directListWrappers","commonAnchorContainer","getWrapElements","wrapElements","listWrappers","allWrappers","emptyFragment","getFragmentFromRange","getParentTable","getTableFragment","selectedTableCells","firstCell","lastCell","fullTableModel","sectionedTableModel","getSelectionFragment","read$4","$_2bm266zjkmcwlnj","tmpElm","contextual","htmlText","$_eu7sms6yjkmcwlnf","createContextualFragment","pasteHTML","$_b7rwud72jkmcwlow","getEndpointElement","real","getStart$2","skipEmptyTextNodes","forwards","orig","getNode$1","endElm","selectedBlocks","select$1","each$19","isNativeIeSelection","isAttachedToDom","isValidRange","Selection$1","bookmarkManager","selectedRange","explicitRange","selectorChangedData","getEnd$$1","compareEndPoints","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","ieRange","setBaseAndExtent","anchorNode","focusNode","setNode","getSelectedBlocks$$1","isForward","anchorRange","focusRange","anchorOffset","focusOffset","selectorChanged","currentSelectors","matchedSelectors","isContentEditableFalse$11","getSelectedNode$1","isAfterContentEditableFalse$2","isBeforeContentEditableFalse$2","getVisualCaretPosition","isMoveInsideSameBlock","moveToCeFalseHorizontally","getNextPosFn","peekCaretPosition","rangeIsInContainerBlock","isBeforeContentEditableFalseFn","moveToCeFalseVertically","walkerFn","linePositions","nextLinePositions","closestNextLineRect","caretClientRect","dist1","dist2","contentEditableFalseNode","caretPositions","createTextBlock","textBlock","exitPreBlock","newBlock","getNextVisualCaretPosition","getPrevVisualCaretPosition","getHorizontalRange","newRange","getVerticalRange","moveH$1","moveV$1","defaultPatterns","patterns","matchesEvent","match$1","execute","$_3olmgr77jkmcwlpj","executeKeydownOverride","setup$7","$_emza9w75jkmcwlp9","getParentInlines","hasOnlyOneChild$1","deleteLastPosition","parentInlines","isFormatElement$$1","deleteCaret$1","backspaceDelete$5","$_7tr96779jkmcwlpz","executeKeydownOverride$1","executeKeyupOverride","setup$8","$_4dsl7478jkmcwlpw","firstNonWhiteSpaceNodeSibling","moveToCaretPosition","tempElm","lastNode","getEditableRoot","editableRoot","getParentBlock$2","getParentBlockName","isListItemParentBlock","$_79nvm87ejkmcwlqu","hasFirstChild","hasParent$1","isListBlock","isNestedList","getContainerBlock","containerBlockParent","isFirstOrLastLi","insert$1","createNewBlock","newBlockName","tmpRng","$_5ckamj7djkmcwlqo","isEmptyAnchor","isTableCell$5","emptyBlock","containerAndSiblingName","canSplitBlock","trimInlineElementsOnLeftSideOfBlock","firstChilds","normalizeZwspOffset","includeZwspInRange","trimLeadingLineBreaks","getEditableRoot$1","setForcedBlockAttrs","forcedRootBlockName","wrapSelfAndSiblingsInDefaultBlock","addBrToBlockIfNeeded","insert$2","parentBlockName","clonedNode","isCaretAtStartOrEndOfBlock","normalizedOffset","insertNewBlockAfter","$_dr0y3j7cjkmcwlqe","shouldInsertBr","shouldBlockNewLine","$_g7oj6o7gjkmcwlr8","newLineAction","shouldBlockNewLine$1","isBrMode","requiredState","brMode","inListBlock","inBlock","inPreBlock","inSummaryBlock","shouldPutBrInPre$1","inBrContext","hasShiftKey","canInsertIntoEditableRoot","rootEditable","match$2","predicates","isMatch","getAction$1","$_47r1sh7fjkmcwlr1","insert$3","$_fs2ah67bjkmcwlq8","endTypingLevel","handleEnterKeyEvent","setup$9","$_ni5l67ajkmcwlq7","isValidInsertPoint","isAtStartOrEnd","insertNbspAtPosition","insertAtLocation","insertAtCaret$2","boundaryLocation","insertAtSelection","$_2cwo047ijkmcwlrj","executeKeydownOverride$2","setup$10","$_agfz917hjkmcwlrh","findBlockCaretContainer","removeIeControlRect","handleBlockContainer","setup$11","$_gfp1h7jjkmcwlrn","setup$12","$_ejk8vk74jkmcwlp8","Quirks","isGecko","isWebKit","mceInternalUrlPrefix","mceInternalDataType","setMceInternalContent","selectionHtml","internalContent","dataTransfer","escape","getMceInternalContent","getData","insertClipboardContents","internal","emptyEditorWhenDeleting","serializeRng","allContentsSelected","allRng","allSelection","selectAll","inputMethodFocus","removeHrOnBackspace","Range","body_1","selectControlElements","removeStylesWhenDeletingAcrossBlockElements","getAttributeApplyFunction","template","setAttributeNode","isSelectionAcrossElements","applyAttributes","disableBackspaceIntoATable","removeBlockQuoteOnBackSpace","setGeckoEditingOptions","setOpts","addBrAfterLastLinks","fixLinks","setDefaultBlockType","showBrokenImageIcon","restoreFocusOnKeyDown","bodyHeight","blockCmdArrowNavigation","disableAutoUrlDetect","tapLinksAndImages","blockFormSubmitInsideEditor","removeAppleInterchangeBrs","ieInternalDragAndDrop","isTextBlockNode","normalizeSelection$1","setup$13","detail","preventSummaryToggle","filterDetails","setup$14","DOM$2","appendStyle","createParser","autoFocus","auto_focus","destroyed","initEditor","execCallback","getStyleSheetLoader","initContentBody","skipWrite","contentCssText","visibility","orgVisibility","iframeHTML","bodyEl","content_document","content_window","bodyElement","hex_colors","force_hex_style_colors","class_filter","annotator","_nodeChangeDispatcher","browser_spellcheck","gecko_spellcheck","spellcheck","directionality","nowrap","whiteSpace","protect","startContent","contentCSS","content_style","$_fssayf58jkmcwlbz","DOM$3","relaxDomain","ifr","domain","hostname","bodyUuid","domainRelaxUrl","normalizeHeight","normalizedHeight","createIframeElement","title","customAttrs","iframe","frameBorder","allowTransparency","getIframeHtml","bodyId","bodyClass","documentBaseURI","getURI","createIframe","isDomainRelaxed","contentAreaContainer","iframeContainer","init$1","boxInfo","editorContainer","orgDisplay","$_9jv4e17njkmcwlsj","DOM$4","initPlugin","initializedPlugins","pluginInstance","Plugin","trimLegacyPrefix","initPlugins","initTheme","Theme","renderFromLoadedTheme","minHeight","re","min_height","renderUI","deltaWidth","deltaHeight","iframeHeight","renderFromThemeFunc","createThemeFalseResult","renderThemeFalseIframe","renderThemeFalse","renderThemeUi","init$2","rtl","rtl_ui","i18n","setCode","aria_label","getLang","content_css","toAbsolute","$_4z079955jkmcwlbj","DOM$5","hasSkipLoadPrefix","loadLanguage","scriptLoader","language_url","loadTheme","themeUrl","theme_url","loadPlugins","render","form","formElement","hasHiddenInput","formEventDelegate","_mceOldSubmit","triggerSave","windowManager","encoding","save","_beforeUnload","set_dirty","$_9u29xe4yjkmcwlai","add$4","sidebars","$_gcw4n27ojkmcwlsr","each$20","trim$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","URI","baseUri","base_uri","isProtocolRelative","protocol","toAbsPath","part","userInfo","port","setPath","toRelative","tu","uu","toRelPath","noHost","isSameOrigin","defaultPort","breakPoint","outPath","nb","noProtoHost","loc","pathname","defaultFormat","trimEmptyContents","emptyRegExp","getContentFromBody","getContent$1","traverse","findMatchingNodes","nodeMatches","attrMatches","filter$$1","filter$3","defaultFormat$1","isTreeNode","moveSelection","setEditorHtml","setContentString","padd","setContentTree","setContent$1","DOM$6","restoreOriginalStyles","safeDestroy","clearDomReferences","restoreForm","remove$9","is_removing","automatic","DOM$7","extend$4","each$21","resolve$4","ie$2","Editor","documentBaseURL","baseURI","language_load","loadedCSS","editorCommands","buttons","menuItems","cache_suffix","override_viewport","callbackLookup","lang_1","i18n_1","addButton","onclick","stateSelector","tooltip","addSidebar","addMenuItem","addContextToolbar","contextToolbars","focusedEditor","setProgressState","isNotDirty","oldState","urlconverter_callback","visual_table_class","visual_anchor_class","_scanForImages","documentFocusInHandler","beforeUnloadDelegate","EditorManager","isEditorUIElement","$_48zpgt7xjkmcwlum","isManualNodeChange","registerPageMouseUp","throttledStore","mouseUpPage","registerFocusOut","registerMouseUp","registerEditorEvents","register$3","$_d657g07yjkmcwlun","DOM$8","isEditorUIElement$1","isUIElement","customSelector","custom_ui_selector","getActiveElement","blurredEditor","unregisterDocumentEvents","setup$15","$_6zk6867wjkmcwluj","$_9pp0ut7zjkmcwlut","newCode","_dir","getCode","langData","getLangData","values_1","DOM$9","explode$4","each$22","extend$5","instanceCounter","boundGlobalEvents","legacyEditors","isValidLegacyKey","globalEventDelegate","toggleGlobalEvents","removeEditorFromList","targetEditor","oldEditors","purgeDestroyedEditor","majorVersion","minorVersion","releaseDate","preInit","tinymce","tinyMCEPreInit","srcScript","currentScript","base_url","pluginBaseUrls","plugin_base_urls","invalidInlineTargets","isInvalidInlineTarget","createId","findTargets","targets","types","forms","editor_deselector","editor_selector","provideResults","initEditors","initCount","createEditor","existingEditor","addI18n","EditorManager$1","RangeUtils","normalizedRng","compareRanges","getCaretRangeFromPoint","extendClass","initializing","RangeUtils$1","round$2","relativePosition","targetW","targetH","create$3","findBestRelativePosition","constrainRect","rels","inflate","intersect","cropRect","x1","y1","clamp$1","clampRect","fixedSize","underflowX1","underflowY1","overflowX2","overflowY2","cx2","cy2","fromClientRect","$_es7eh281jkmcwlv1","$_e5pe6n82jkmcwlv8","typeClass","lctype","controlType","ControlType","each$23","extend$6","Class$1","_super","Class","mixins","mixin","Mixins","dummy","createMethod","name_1","Methods","Properties","fieldName","Statics","Defaults","min$1","max$1","round$3","Color","rgb2hsv","minRGB","maxRGB","hsvToRgb","hue","saturation","brightness","side","chroma","toRgb","toHsv","quote","$_6nxmdo85jkmcwlvi","$_cygb5686jkmcwlvk","XHR","ready","success_scope","error_scope","overrideMimeType","content_type","crossDomain","setRequestHeader","requestheaders","extend$7","JSONRequest","sendRPC","ecb","scb","ty","method","localStorage$$1","create$4","storage","getItem","setItem","removeItem","configurable","localStorage","LocalStorage","publicApi","geom","Rect","util","Delay","Tools","VK","EventDispatcher","Observable","I18n","JSONP","Serializer","Selection","Entities","Factory","Env","FocusManager","isMac","Tinymce","exportToModuleLoaders","exportToWindowGlobal","tinyMCE","global","global$1","getMinWidth","getMinHeight","$_2agnwba2jkmcwo8k","$_gf01w3a4jkmcwo8n","minWidth","multiline","onSubmit","$_4xs1xna1jkmcwo8j","$_atmzsea0jkmcwo8i","$_f9f308a5jkmcwo8o","_get","_name","ca","cookie","_add","seconds","setTime","expires","toGMTString","_update","_remove","update","sessionStorage","_reset","Vue","directive","twoWay","binding","vnode","picker","Pikaday","field","onSelect","setVModelValue","previousMonth","nextMonth","months","weekdays","weekdaysShort","findVModelName","directives","expression","eval","assumeExternalTargets","editorSettings","link_assume_external_targets","hasContextToolbar","link_context_toolbar","getLinkList","link_list","hasDefaultLinkTarget","default_link_target","getDefaultLinkTarget","getTargetList","target_list","setTargetList","shouldShowTargetList","getRelList","rel_list","hasRelList","getLinkClassList","link_class_list","hasLinkClassList","shouldShowLinkTitle","link_title","allowUnsafeLinkTarget","$_7h5h1kfvjkmcwp8j","global$2","global$3","appendClickRemove","dispatchEvent","open$$1","createEvent","initMouseEvent","opener","$_50rjczfwjkmcwp8l","global$4","toggleTargetRules","isUnsafe","addTargetRules","removeTargetRules","trimCaretContainers","getAnchorElement","isImageFigure","getAnchorText","anchorElm","isLink","hasLinks","isOnlyTextSelected","attachState","linkAttrs","attach","linkImageFigure","unlink","unlinkImageFigure","fig","$_f96xu2g0jkmcwp91","global$5","global$6","createLinkList","linkList","buildListItems","inputList","itemCallback","startItems","appendItems","menuItem","menu","delayedConfirm","showDialog","initialText","onlyText","textListCtrl","linkListCtrl","relListCtrl","targetListCtrl","classListCtrl","linkTitleCtrl","linkListChangeHandler","textCtrl","lastControl","control","buildAnchorListControl","anchorList","onselect","updateText","urlChange","inp","onBeforeCall","toJSON","onchange","onPostRender","textStyle","filetype","autofocus","onkeyup","onpaste","onbeforecall","insertLink","removeLink","resultData","open$1","$_1hdbnpg2jkmcwp96","getLink","getSelectedLink","getHref","isContextMenuVisible","contextmenu","hasOnlyAltModifier","gotoLink","targetEl","openDialog","gotoSelectedLink","leftClickedOnAHref","setupGotoLinks","toggleActiveState","toggleViewLinkState","toggleVisibility","$_dlew49ftjkmcwp8f","$_3nvo42fsjkmcwp8b","$_aoohpyg5jkmcwp9f","setupButtons","onpostrender","setupMenuItems","prependToContext","setupContextToolbars","$_3wxsofg6jkmcwp9g","hasProPlugin","$_ee0gktiejkmcwpkb","clipboard","$_6khw6eigjkmcwpkp","firePastePreProcess","isWordHtml","wordContent","firePastePostProcess","firePastePlainTextToggle","firePaste","ieFake","$_d8ovv8ijjkmcwpku","shouldPlainTextInform","shouldBlockDrop","shouldPasteDataImages","shouldFilterDrop","getPreProcess","getPostProcess","getWebkitStyles","shouldRemoveWebKitStyles","shouldMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getRetainStyleProps","getWordValidElements","defaultValidElements","shouldConvertWordFakeLists","shouldUseDefaultFilters","$_5peev0ikjkmcwpkv","shouldInformUserAboutPlainText","userIsInformedState","togglePlainTextPaste","pasteFormat","$_7rw4pkiijkmcwpks","pasteHtml","pasteText","$_gh26txihjkmcwpkr","internalMimeType","internalMark","mark","unmark","isMarked","$_93gcj3irjkmcwpld","internalHtmlMime","isPlainText","toBRs","openContainer","rootTag","rootAttrs","toBlockElements","tagOpen","tagClose","paragraphs","stitch","convert","$_3nag2qisjkmcwple","global$7","global$8","global$9","ignoreElements","trimSpaces","s1","s2","createIdGenerator","isMsEdge","$_2u5gcyj0jkmcwplv","isWordContent","isNumericList","isBulletList","convertFakeListsToProperLists","currentListNode","prevListNode","txt","trimListStart","regExp","removeIgnoredNodes","_listIgnore","convertParagraphToLi","paragraphNode","listName","_listLevel","nodeText","filterStyles","outputStyles","filterWordContent","retainStyleProperties","spaces","$_759xt5ivjkmcwplk","processResult","cancelled","postProcessFilter","tempBody","postProcessArgs","filterContent","preProcessArgs","$_7a37nniujkmcwplh","isAbsoluteUrl","isImageUrl","createImage","pasteHtmlFn","createLink","linkSelection","insertImage","smartInsertContent","$_3wqigwj1jkmcwplz","pasteHtml$1","internalFlag","getDataTransferItems","legacyText","contentType","getClipboardContent","clipboardEvent","hasContentType","clipboardContent","mimeType","hasHtmlOrText","getBase64FromUri","extractFilename","pasteImage","Image","existingBlobInfo","isClipboardEvent","pasteImageData","processItems","hadImage","getAsFile","paste_data_images","isBrokenAndroidClipboardEvent","isKeyboardPasteEvent","registerEventHandlers","pasteBin","keyboardPastePlainTextState","keyboardPasteTimeStamp","insertClipboardContent","isKeyBoardPaste","plainTextMode","isPlainTextHtml","getHtml","isDefaultContent","removePasteBinOnKeyUp","getLastRng","clipboardTimer","clipboardDelay","getEl","registerEventsAndFilters","isPasteInsert","isWebKitFakeUrl","isDataUri","getPasteBinParent","isExternalPasteBin","delegatePasteEvents","pasteBinElm","pasteBinDefaultContent","isDefault","lastRngCell","pasteBinClone","pasteBinClones","dirtyWrappers","cleanWrapper","copyAndRemove","toElm","fromElm","PasteBin","Clipboard","hasWorkingClipboardApi","setHtml5Clipboard","setClipboardData","fallback","markedHtml","contenteditable","offscreenRange","cut","$_5k6lg4j3jkmcwpmg","global$10","getCaretRangeFromEvent","isPlainTextFileUrl","plainTextContent","setFocusedRange","draggingInternallyState","dropContent","content_1","$_eiqz0aj4jkmcwpmj","$_9alamfj6jkmcwpmm","addPreProcessFilter","filterFunc","addPostProcessFilter","removeExplorerBrElementsAfterBlocks","explorerBlocksRegExp","removeWebKitStyles","webKitStyles","webKitStylesSetting","dom_1","node_1","inputStyles","inputValue","currentValue","removeUnderlineAndFontInAnchor","$_ca6muwj7jkmcwpmo","stateChange","postRender","selectable","$_98erksj8jkmcwpmr","Api","endpoint","Resourse","EndPoint","defaultFilter","pageSize","pageIndex","isPaginate","byCache","hasDefaultFilters","lastAction","post","_post","put","_put","delete","_delete","dataItem","_dataItem","export","_export","_upload","folder","makeUri","axios","handleSuccess","handleError","model","_filters","assign","END_POINT_DEFAULT","configHeaders","accesstoken","Cache","ACCESS_TOKEN","headers","common","addCache","Auth","login","Data","DataList","stringify","Add","theString","regEx","$httpParamSerializer","entries","_ref","_ref2","_slicedToArray","use","VueAxios","getScripts","getAudioTemplateCallback","getVideoTemplateCallback","hasLiveEmbeds","shouldFilterHtml","getUrlResolver","hasAltSource","hasPoster","hasDimensions","$_6qt1nth3jkmcwpf2","getVideoScriptMatch","prefixes","$_5qpz66h7jkmcwpf7","trimPx","addPx","setSize","$_1gasfuh8jkmcwpf8","getMaxWidth","getMaxHeight","setMaxWidth","setMaxHeight","getEphoxEmbedIri","isEphoxEmbed","htmlToDataSax","source1","movie","videoScript","source2","poster","ephoxEmbedHtmlToData","htmlToData","$_1f89fyh4jkmcwpf3","guess","mp3","wav","mp4","webm","ogg","swf","fileEnd","$_e86s3ihcjkmcwpfk","setAttributes","updatedAttrs","normalizeHtml","updateHtmlSax","updateAll","hasImage","sourceCount","imgAttrs","isEphoxEmbed$1","updateEphoxEmbed","updateHtml","$_6s992lhdjkmcwpfn","urlPatterns","regex","allowFullscreen","getUrl","_loop_1","matchPattern","getFlashHtml","getAudioHtml","audioTemplateCallback","source2mime","getVideoHtml","videoTemplateCallback","source1mime","getScriptHtml","dataToHtml","dataIn","embed","$_65qpjdhbjkmcwpfc","embedPromise","rej","wrappedResolve","defaultPromise","loadedData","getEmbedHtml","embedHandler","isCached","$_74pv8fh9jkmcwpf9","doSyncSize","widthCtrl","heightCtrl","doSizeControls","constrained","doUpdateSize","isContrained","oldWidth","oldHeight","newWidth","newHeight","syncSize","updateSize","createUi","onChange","recalcSize","layout","spacing","ariaLabel","$_gd8vqohhjkmcwpg2","embedChange","errorMessage","dataEmbed","getSource","addEmbedHtml","fromJSON","selectPlaceholder","beforeObjects","afterObjects","handleInsert","submitForm","populateMeta","generalFormItems","advancedFormItems","reserialise","embedTextBox","flex","updateValueOnChange","forId","bodyType","$_3njyjoh0jkmcwpew","$_eg0prjgzjkmcwpeu","$_8o48izhijkmcwpg5","sanitize","blocked","$_f1oicehmjkmcwpge","createPlaceholderNode","placeHolder","retainAttributesAndInnerHtml","createPreviewIframeNode","previewWrapper","previewNode","shimNode","allowfullscreen","frameborder","sourceNode","innerHtml","isWithinEphoxEmbed","placeHolderConverter","$_f6hjinhljkmcwpga","boolAttrs","realElm","realElmName","$_b6ycdhhjjkmcwpg6","$_c1o1r8hnjkmcwpgg","selectedNode","objectType","$_8yods0hojkmcwpgh","$_ew8gthhpjkmcwpgk","webpackContext","req","webpackContextResolve","applyListFormat","$_55fky08fjkmcwo2a","$_cjqqqe8ejkmcwo28","getNumberStyles","getBulletStyles","$_2zo4iv8hjkmcwo2f","isChildOfBody","isTableCellNode","isListNode","getSelectedStyleType","$_djj0lo8ijkmcwo2g","styleValueToText","toMenuItems","$_cbyrf58jjkmcwo2h","listState","tableCellIndex","updateSelection","listStyleType","addSplitButton","onshow","addControl","$_d74fz58gjkmcwo2b","hasPlugin","getPreviewDialogWidth","getPreviewDialogHeight","getContentStyle","$_6hy26xjfjkmcwppy","getPreviewHtml","previewHtml","headHtml","contentStyle","body_id","body_class","preventClicksOnLinksScript","dirAttr","injectIframeContent","sandbox","encodeURIComponent","$_5s7etcjgjkmcwppz","dialogHtml","dialogWidth","dialogHeight","iframeElm","$_4mmnpbjdjkmcwppw","$_c197icjcjkmcwppv","$_eluyd4jijkmcwpq6","_vm","_self","staticRenderFns","component","staticClass","staticStyle","_v","$event","acessarShopping","acessarCNANet","methods","URL_SHOPPING_CNA","URL_CNA_NET","mounted","_m","logout","processTokenCallback","getCurrentUser","user","_id","loadfinished_key","confirmarCadastro","$route","confirmRegistration","username","_lastlocation","lastlocation_key","defaultErrorResult","_s","nome","ref","executeEdit","bloquearEscolaCNAStore","rawName","domProps","$set","email","emailAlternativo","cpF_CNPJFormatado","rG_IE","$$v","apelido","celular","telefoneComercial","telefone","dataNascimento","sexo","_q","cep","buscarCep","rua","textoPadrao","numero","complemento","bairro","cidade","uf","dialogAlteraSenha","userName","hideAll","dialogConfirmarSenha","confirmarSenha","senhaAtual","senha","confirmacao","onBack","alteraSenha","require","formValidate","showLoading","pessoaCNAId","Cookie","trocaSenhaPeloPerfil","hideLoading","$eventHub","$emit","errors","modal","$form","$refs","checkValidity","$attrs","components","novaSenha","foto","emailOld","userNameOld","isValidCPFCNPJ","defaultSuccessResult","which","_this2","_cep","logradouro","tipo","validaTamanho","_this3","_this4","_valid","_this5","cpF_CNPJ","emailJson","userNameJson","usuario","confirmarsenha","senhaAlterada","fecharJanela","$swal","onAfterClose","step","stepIdentificacaoFinished","goStep","stepDadosPessoaisFinished","stepAcessoFinished","stepSenhaFinished","stepFinalizarFinished","isloading","$on","beforeDestroy","$off","watch","currentUser","_l","metodoAcessoId","unico","loginExibicao","sendBack","confirmarMetodoAcesso","dialogCodigoAcesso","metodoAcesso","codigoValidacao","confirmarCodigoAcesso","buscarFormasAcesso","dataList","_reenvio","_data","pessoaCNAAcessoId","validado","confirmarDados","mask_rg","redirecionar","codigoAcesso","buscarPorCodigoAcesso","cpf","_codigo","codigo","criarSenhaManual","senhaPreConfigurada","senhaCriada","senhaCriadaConfirmacao","finalizaCadastro","passwordConfirmacao","codigoAcessoUtilizado","headerCna","cadastroAcesso","cadastroDadosPessoais","cadastroFinalizar","cadastroIdentificacao","cadastroSenha","_step","cadastroRealizado","modelSave","mudaPasso","buscarPorPessoa","enviarEmailRecuperacaoSenha","history","back","confirmaCodigoSolicitacao","routers","Router","childrens","routersgenerated","Home","Perfil","RedefinirSenha","ConfirmarCadastro","router","routes","Authorized","AcessoNegado","Cadastro","NovoCadastro","EsqueciSenha","TrocarSenha","redirect","Template","requiresAuth","beforeEach","_asyncToGenerator","regeneratorRuntime","_callee","_context","record","logged","abrupt","canAccess","_x","_x2","_x3","_addOption","_addItems","default","dataitem","cachekey","fromcache","notcache","can","BootstrapVue","VueTheMask","VueMask","money","vSelect","VueSweetalert2","config","productionTip","App","_config","toast","IsMobile","showConfirmButton","showCancelButton","cancelButtonText","$mount","navClass","ulClass","showPrevious","liClass","internalCurrentPage","previousText","ariaPrevious","changePage","num","showNext","lastPage","nextText","ariaNext","currentPage","options","immediate","_total","_pageSize","_from","_to","_arr","alwaysShowPrevNext","page","pagination","mask_data","mask_cpf","mask_tel","mask_cel","mask_cep","mask_ddd","mask_textoPadrao","decimal","thousands","masked","defaultPageChanged","defaultOrderBy","orderByType","orderFields","isOrderByDynamic","configNotification","$notify","duration","speed","failLoading","isTextNode","isListItemNode","isFirstChild","isLastChild","keepBookmarks","$_eyfb4cgljkmcwpc0","getNormalizedEndPoint","textNodeOffset","outRng","rangeStart","rangeEnd","$_8n62cfgkjkmcwpbw","createBookmark","setupEndPoint","resolveBookmark","$_aredwjgjjkmcwpbt","normalizeList","ul","normalizeLists","$_f0sxyjgmjkmcwpc3","getParentList","selectionStart","getClosestListRootElm","isParentListSelected","parentList","findSubLists","getSelectedSubLists","findParentListItemsNodes","listItemsElms","parentLi","getSelectedListItems","parentTableCell","$_g5359xgnjkmcwpc5","createNewTextBlock","contentNode","hasContentNode","$_givla1gqjkmcwpcb","splitList","bookmarks","removeAndKeepBookmarks","$_3aykwpgpjkmcwpc8","removeEmptyLi","outdent","ulParent","outdentSelection","listElements","$_80fi2gghjkmcwpbq","updateListStyle","updateListAttrs","updateListWithDetails","removeStyles","getEndPointNode","getSelectedTextBlocks","hasCompatibleStyle","sib","sibStyle","detailStyle","applyList","listItemName","listBlock","mergeWithAdjacentLists","removeList","emptyListItems","rootList","isValidLists","list1","list2","hasSameListStyle","targetStyle","hasSameClasses","elm1","elm2","shouldMerge","updateList","newList","toggleMultipleLists","hasListStyleDetail","toggleSingleList","toggleList","selectedSubLists","$_8bvl87gejkmcwpbi","findNextCaretContainer","nonEmptyBlocks","hasOnlyOneBlockChild","unwrapSingleBlockChild","moveChildren","mergeLiElements","listNode","mergeIntoEmptyLi","fromLi","toLi","mergeForward","mergeBackward","resolvedBookmark","backspaceDeleteFromListToListCaret","otherLi","selectionStartElm","removeBlock","backspaceDeleteIntoListCaret","otherLi_1","startListParent","$_17li1sgajkmcwpb9","$_4wrbe2g9jkmcwpb7","mergeLists","listStyle","indentSelection","$_fhzwh2gtjkmcwpco","queryListCommandState","isHandled","$_7snno4gsjkmcwpcf","shouldIndentOnTab","$_7hi6itgvjkmcwpcr","setupTabKey","$_fv3b7wgujkmcwpcq","indentPostRender","listItemBlocks","disable","$_e09q6ogwjkmcwpct","authorize_url","SSO_END_POINT","addclaims_authorize_url","endsession_url","redirect_uri","SSO_REDIRECT_LOGIN_URL","post_logout_redirect_uri","SSO_REDIRECT_LOGOUT_URL","client_id","SSO_CLIENT_ID","response_type","SSO_RESPONSE_TYPE","SSO_SCOPE","menu_key","permissoes_key","getToken","ID_TOKEN","getAccessToken","getState","ID_STATE","saveActualPage","_user","pessoacna","USER_INFO","itens","access_token","expires_in","id_token","claimsAddLoginSso","claim_type","claim_value","getPermissoes","_fromcache","getMenu","END_POINT_PORTAL_CORPORATIVO","CHAVE_IDENTIFICACAO_SISTEMA","URL_PORTAL_CORPORATIVO","URL_DOWNLOAD","image_dimensions","hasAdvTab","image_advtab","getPrependUrl","getClassList","hasDescription","image_description","hasImageTitle","image_title","hasImageCaption","image_caption","getImageList","hasUploadUrl","hasUploadHandler","getUploadUrl","getUploadHandler","getUploadBasePath","getUploadCredentials","$_gc1jdictjkmcwomd","$_db9o2scwjkmcwomp","parseIntAndGetMax","val1","getImageSize","removePixelSuffix","addPixelSuffix","mergeMargins","splitMargin","createImageList","imageList","waitLoadImage","selectImage","$_9v7cmwcujkmcwomi","getHspace","getVspace","marginTop","marginBottom","getBorder","borderWidth","hasCaption","wrapInFigure","figureElm","removeFigure","toggleCaption","normalizeStyle","normalizeCss","setHspace","pxValue","setVspace","setBorder","setBorderStyle","borderStyle","getBorderStyle","isFigure","defaultData","hspace","vspace","getStyleValue","figure","updateProp","oldData","newData","mergedCss","compressed","getSelectedImage","splitTextBlock","readImageDataFromSelection","insertImageAtCaret","insertedElm","syncSrcAttr","deleteImage","writeImageDataToSelection","insertOrUpdateImage","updateVSpaceHSpaceBorder","rootControl","updateStyle","makeTab","pack","packV","columns","maxWidth","$_4qd61kd3jkmcwonl","$_14kdtjdajkmcwoo8","onSrcChange","srcURL","prependURL","absoluteURLPattern","imageListCtrl","getGeneralItems","makeTab$1","$_bpqbuud9jkmcwoo5","$_e8tsx4dcjkmcwooe","uploadBlob","onFileInput","Throbber","throbber","finalize","dataUrl","activateTab","acceptExts","makeTab$2","accept","$_26ghgddbjkmcwooa","Dialog","altCtrl","$_cwg86qcrjkmcwom6","hasImageClass","toggleContentEditableState","toggleContentEditable","$_8m7aavdhjkmcwooq","$_2zobs0dijkmcwoos","isBrandingEnabled","hasMenubar","getMenubar","hasStatusbar","getToolbarSize","getFixedToolbarContainer","getInlineToolbarPositionHandler","getRemovedMenuItems","isSkinDisabled","skin","getResize","resize","getSkinUrl","skinUrl","skin_url","skinName","getIndexedToolbars","defaultToolbar","toolbars","toolbar","mainToolbar","getToolbars","fireSkinLoaded","fireResizeEditor","fireBeforeRenderUI","$_1jkxpltzjkmcwsg4","panel","addKeys","$_1mdekmu0jkmcwsg5","getUiContainerDelta","uiContainer","getUiContainer","containerPos","setUiContainer","ui_container","inheritUiContainer","fromCtrl","toCtrl","$_5kmlp5u4jkmcwsge","createToolbar","buttonGroup","toolbarItems","bindSelectorChanged","disabledStateSelector","createToolbars","addToolbar","ariaRoot","ariaRemember","$_5g1hacu7jkmcwsgn","toClientRect","geomRect","hideAllFloatingPanels","movePanelTo","moveTo","togglePositionClass","relPos","userConstrain","elementRect","contentAreaRect","panelRect","addContextualToolbars","getContextToolbars","getElementRect","shouldShow","relRect","testPositions","smallElementWidthThreshold","repositionHandler","findFrontMostMatch","bindScrollEvent","reposition_1","uiContainer_1","showContextToolbar","role","autohide","autofix","oncancel","renderTo","hideAllContextToolbars","$_44ggy0u1jkmcwsg7","defaultMenus","edit","view","tools","help","delimiterMenuNamePair","createMenuNameItemPair","hasItemName","namedMenuItems","namedMenuItem","isSeparator","cleanupMenu","removedMenuItems","menuItemsPass1","menuItemsPass2","createMenu","editorMenuItems","menus","menuButton","isUserDefined","separator","getDefaultMenubar","defaultMenuBar","createMenuButtons","menuButtons","menubar","enabledMenuNames","$_3ke8tlu8jkmcwsgq","resizeTo","containerSize","iframeSize","resizeBy","dw","dh","$_focm2tubjkmcwsh5","sidebar","callbackName","hidePanels","visible","deactivateButtons","findSidebar","showPanel","btnCtrl","isModernBrowser","hasSidebar","createSidebar","$_93h32bucjkmcwsh7","fireSkinLoaded$1","$_2tsyb2uejkmcwsha","switchMode","editArea","editAreaContainer","resizeHandleCtrl","startSize","skinUiCss","onResizeStart","onResize","linkHtml","brandingLabel","renderBefore","$_9mz4sntvjkmcwsft","funcs","getWindowSize","getRuntimeStyle","isStatic","isFixed","calculateRelativePosition","ctrlElm","selfW","selfH","viewport","getWindowViewPort","getUiContainerViewPort","customUiContainer","$_77p0ikukjkmcwsie","testMoveRel","viewPortRect","moveBy","layoutRect","constrain","constrainToViewport","repaint","global$11","$_79d0aauqjkmcwsj9","parseBox","measureBox","computedStyle","getSide","ClassList","_map","uniqueItems","__checked","_change","curState","clsValue","Collection","Collection$1","proto","chunker","Selector","compileNameFilter","compileIdFilter","compileClassesFilter","compileAttrFilter","cmp","compilePsuedoFilter","notSelectors","parseChunks","direct","_selectors","si","sl","Collection$2","Binding","otherModel","otherName","fromSelfToOther","fromOtherToSelf","_bindings","global$12","isNode","animationFrameRequested","Control","ObservableObject","oldValue","dirtyCtrls","$_921m08uxjkmcwsk2","_layout","hasMouseWheelEventSupport","hasWheelEventSupport","classPrefix","idCounter","proto$1","defaultClasses","applyClasses","_aria","_elmCache","borderBox","paddingBox","marginBox","getContainerElm","getParentCtrl","controlIdLookup","initLayoutRect","autoResize","startMinWidth","startMinHeight","initialSize","deltaW","deltaH","maxW","maxH","maxHeight","_layoutRect","contentW","contentH","innerW","innerH","minW","minH","scrollW","_lastLayoutRect","lastLayoutRect","repaintControls","curRect","bodyStyle","borderW","borderH","lastRepaintRect","_lastRepaintRect","_hasBody","updateLayoutRect","_lastRect","resolveCallbackName","parentControls","$el","aria","ariaTarget","newItems","controls","_eventsRoot","renderHtml","preRender","parentEventsRoot","_nativeEvents","bindPendingEvents","bindStates","parentCtrl","getOffset","parentWidth","parentHeight","eventCtrl","eventRootCtrl","mouseLeaveHandler","_lastHoverCtrl","mouseEnterHandler","lastParents","lastCtrl","fixWheelEvent","wheelDelta","wheelDeltaX","eventRootDelegates","_delegates","_hasMouseEnter","Control$1","hasTabstopData","KeyboardNavigation","focusedElement","focusedControl","getRole","getParentRole","getAriaProp","isTextInputElement","canFocus","getFocusElements","getNavigationRoot","targetControl","navigationRoot","focusFirst","focusElements","moveFocusToIndex","lastAriaIndex","moveFocus","parentRole","submenu","enter","up","tab","handleNonTabOrEscEvent","selectorCache","Container","_items","bodyClasses","containerCls","keyboard","focusCtrl","keyboardNav","statusbar","oldItem","newItem","ctrlItems","defaultType","renderNew","curItems","beforeItems","afterItems","recalc","getDocumentSize","updateWithTouchData","changedTouches","DragHelper","$eventOverlay","downButton","drag","handleElement","cursor","docSize","runtimeStyle","zIndex","documentClickHandler","documentScrollHandler","windowResizeHandler","hasModal","$_c9juz9uzjkmcwskb","renderScroll","repaintScroll","hasScrollH","hasScrollV","repaintAxis","axisName","posName","sizeName","contentSizeName","hasScroll","ax","scrollBarElm","scrollThumbElm","scrollSize","posNameLower","sizeNameLower","addScroll","addScrollAxis","deltaPosName","scrollStart","axisId","draghelper","autoScroll","_hasScroll","Panel","_preBodyHtml","$_4ci2x6v1jkmcwski","resizeToContent","visiblePanels","zOrder","skipOrHidePanels","clickCtrl","bindDocumentClickHandler","bindDocumentScrollHandler","repositionPanel","bindWindowResizeHandler","docElm_1","clientWidth_1","clientHeight_1","FloatPanel","scrollY$$1","toggleFixedChildPanels","_autoFixY","addRemove","topModal","modalBlockEl","currentZIndex","$modalBlockEl_1","prefix_1","popover","describedBy","removeVisiblePanel","bodyRole","isFixed$1","inlineToolbarContainer","render$1","fixedToolbarContainer","_fixed","bodyPos","scrollContainerPos","$_aqv3nuufjkmcwshc","$_575jhev2jkmcwskj","$_7k92xgtrjkmcwsfn","Tooltip","Widget","tooltips","_tooltip","Progress","setValue","updateLiveRegion","Notification","closeButton","notificationStyle","getEditorContainer","getContainerWidth","prePositionNotifications","positionNotifications","firstItem","closeCallback","extendedArgs","notif","oldMetaValue","toggleFullScreenState","contentValue","noScaleMetaValue","toggleBodyFullScreenClasses","checkFullscreenWindows","_fullscreen","handleWindowResize","lastSize_1","Window$$1","closeClass","needsRecalc","statusbar$$1","headerW","headEl","headerH","headerHtml","footerHtml","fullscreen","slowRendering","_timer","_initial","dragHelper","getContentWindow","MessageBox","OK","OK_CANCEL","YES_NO","YES_NO_CANCEL","msgBox","createButton","status$$1","primary","subtype","onClick","onClose","onCancel","features","alert$$1","choiceCallback","confirm$$1","close$$1","window$$1","$_f0tepxtqjkmcwsfm","Layout","firstControlClass","lastControlClass","containerClass","firstClass","lastClass","lastItem","controlClass","AbsoluteLayout","Button","btnStyle","btnElm","ariaPressed","textHtml","textCls","setButtonText","$span","iconElm","BrowseButton","multiple","click","ButtonGroup","Checkbox","global$13","ComboBox","subinput","showMenu","statusLevel","statusMessage","lineHeight","openElm","innerPadding","inputElm","openBtnHtml","extraAttrs","statusHtml","placeholder","showAutoComplete","term","previewUrl","hideMenu","statusIconElm","focusIdx","ColorBox","onaction","repaintColor","background","PanelButton","panelSettings","hidePanel","rtlRels","ltrRels","popoverAlign","isTop","ColorButton","_color","resetColor","onClickHandler","global$14","ColorPicker","hsv","hueRootElm","huePointElm","svRootElm","svPointElm","updateColor","hueUpdate","updateSaturationAndValue","updateHue","_repaint","_svdraghelper","_hdraghelper","rgb","_rendered","hueHtml","stops","getOldIeFallbackHtml","gradientPrefix","stopsList","gradientCssText","DropZone","cfg","hidefocus","toggleDragClass","Path","delimiter","_getDataPathHtml","ElementPath","elementpath","outParents","FormItem","Form","labelGap","formItemDefaults","formItem","recalcLabels","maxLabelWidth","labels","labelGapCalc","labelCtrl","labelWidth","FieldSet","unique$1","$_g9js5fw5jkmcwsoh","$_dg0wqww4jkmcwsog","$_9gi0tmw2jkmcwsob","$_9vmnzpwcjkmcwsph","$_22q3m2wfjkmcwsps","$_60zxbqwejkmcwspr","$_7ota5pwljkmcwsq4","$_fknyifwkjkmcwsq1","windows$1","$_4dmnqawmjkmcwsq6","$_21yllowojkmcwsqc","$_993j3rwpjkmcwsqg","$_4sbeluwjjkmcwsq0","$_g4vzapwijkmcwspx","$_3tbwnywtjkmcwsqr","$_622morwdjkmcwspi","$_adk4mbw6jkmcwsok","$_bf8vd5w1jkmcwso8","$_4ig9ruw0jkmcwso7","isChildOfContentEditableTrue","getElementText","getOrGenerateId","isAnchor","isValidAnchor","isHeader","isValidHeader","getLevel","headerTarget","headerId","anchorTarget","anchorId","anchorText","getHeaderTargets","getAnchorTargets","getTargetElements","hasTitle","find$3","$_cb7rvvvxjkmcwsnn","getActiveEditor","HISTORY_LENGTH","clearHistory","toMenuItem","staticMenuItem","isUniqueUrl","foundTarget","getSetting","createMenuItems","fileType","fromHistoryMenuItems","historyItems","uniqueHistory","fromMenuItems","filteredTargets","anchorMenuItems","topAnchor","bottomAchor","bothEmpty","typeahead_urls","filterByQuery","addToHistory","lowerCaseTerm","getTitle","linkDetails","setupAutoCompleteHandler","autocomplete","linkTargets","statusToUiState","setupLinkValidatorHandler","validatorHandler","filepicker_validator_handler","validateUrl_1","uiState","FilePicker","actionCallback","fileBrowserCallback","fileBrowserCallbackTypes","file_picker_types","file_browser_callback_types","file_picker_callback","file_browser_callback","FitLayout","contLayoutRect","FlexLayout","contPaddingBox","contSettings","totalFlex","availableSpace","ctrlLayoutRect","ctrlSettings","maxSize","maxAlignEndPos","minSizeName","maxSizeName","beforeName","innerSizeName","deltaSizeName","alignAxisName","alignInnerSizeName","alignSizeName","alignMinSizeName","alignBeforeName","alignAfterName","alignDeltaSizeName","alignContentSizeName","maxSizeItems","maxFlexSize","FlowLayout","endClass","$_13w0c1wzjkmcwsri","$_epq3p6wyjkmcwsrh","addFormatChangedListener","changed","postRenderFormatToggle","alignFormats","defaultAlign","alignMenuItems","onShowMenu","formatName","alignnone","$_ffg0cgx1jkmcwsrx","getFirstFont","findMatchingValue","font","createFontNameListBoxChangeHandler","createFormats","getFontItems","defaultFontsFormats","fonts","font_formats","registerButtons","fixedWidth","$_1be6fjx3jkmcwss1","findMatchingValue$1","pt","px","createFontSizeListBoxChangeHandler","getFontSizeItems","defaultFontsizeFormats","fontsizeFormats","fontsize_formats","registerButtons$1","$_fnu5cxx4jkmcwss4","hideMenuObjects","hideFormatMenuItems","createFormatMenu","newFormats","defaultStyleFormats","createStylesMenu","style_formats_merge","style_formats","itemDefaults","registerMenuItems","formatMenu","registerButtons$2","style_formats_autohide","$_cmdomhx5jkmcwss6","defaultBlocks","createFormats$1","createListBoxChangeHandler","lazyFormatSelectBoxItems","buildMenuItems","register$4","block_formats","$_cl4rffx6jkmcwssb","createCustomMenuItems","nameList","isSeparator$1","trimMenuItems","menuItems2","createContextMenuItems","outputMenuItems","createInsertMenu","insertButtonItems","insert_button_items","registerButtons$3","oncreatemenu","register$5","$_7ix8zax7jkmcwssd","registerFormatButtons","registerCommandButtons","selectall","visualaid","newdocument","registerCommandToggleButtons","registerButtons$4","registerMenuItems$1","register$6","$_gbsmm2x8jkmcwssh","toggleUndoRedoState","checkState","typeFn","registerMenuItems$2","registerButtons$5","register$7","$_1bdkmax9jkmcwssr","toggleVisualAidState","registerMenuItems$3","register$8","$_21pl3hxajkmcwsst","setupEnvironment","setupUiContainer","setupRtlMode","setupHideFloatPanels","$_drujjnwxjkmcwsrc","GridLayout","cols","posX","posY","spacingH","spacingV","alignH","alignV","ctrlMinWidth","ctrlMinHeight","availableWidth","availableHeight","reverseRows","colWidths","rowHeights","ceil","flexV","flexWidths","Iframe$1","InfoBox","severity","Label","strong","startMinH","targetCtrl","forName","Toolbar$1","MenuBar","isChildOf$1","MenuButton","_renderOpen","animate","activeMenu","hasVisibleSiblingMenu","overCtrl","Menu","itemsFactory","factory","hideThrobber","requestTime","_hasIcons","ListBox","selectedText","lastItemCtrl","menuValues","_values","matchingValues","activateMenuItemsByValue","hasMenus","getSelectedItem","selectedItem","toggleTextStyle","_textStyle","textElm","MenuItem","ariaHideMenu","_parentMenu","_lastRel","iconHtml","convertShortcut","escapeRegExp","markMatches","boldMatches","hover","Radio","ResizeHandle","resizeDragHelper","createOptions","strOptions","SelectBox","_options","minVal","maxVal","setAriaProp","updateSliderHandle","maxHandlePos","shortSizeName","stylePosName","handleEl","orientation","_minValue","_maxValue","previewFilter","Slider","minValue","maxValue","_initValue","screenCordName","toFraction","fromFraction","handleKeyboard","alter","handleDrag","startHandlePos","handlePos","_dragHelper","Spacer","SplitButton","mainButtonElm","menuButtonElm","_menuBtnText","StackLayout","TabPanel","activeTabElm","activeTabId","tabsHtml","activeTab","targetParent","headH","TextBox","getApi","ReflowQueue","Scrollable","Movable","Resizable","Window","FormatControls","Iframe","Toolbar","registerToFactory","inserted","_lastfileuploaded","_interval","_hascustomtag","_pluginWindowsCustomTag","onsubmit","description","hascustomtag","_defineProperty","media_live_embeds"],"mappings":"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O9hB,IAIbxU,KAAK2I,QAAU,WACb,OAAO2G,GAETtP,KAAK0hB,KAAO,SAAU+U,GAEpB,OADAnnB,EAAOinB,EAAYjnB,EAAM,aAAc,cAAemnB,GAC/CnnB,GAETtP,KAAK2hB,KAAO,SAAU8U,GAEpB,OADAnnB,EAAOinB,EAAYjnB,EAAM,YAAa,kBAAmBmnB,GAClDnnB,GAETtP,KAAK22B,MAAQ,SAAUF,GAErB,OADAnnB,EAAOonB,EAAiBpnB,EAAM,YAAa,kBAAmBmnB,GACvDnnB,GAIX,IAkSIsnB,GACAC,GACAC,GApSAC,GAAS,CACX,UACA,QACA,UACA,MACA,KACA,aACA,SACA,OACA,WACA,SACA,SACA,OACA,OACA,MACA,UACA,UACA,OACA,IACA,KACA,WACA,KACA,SACA,UACA,SACA,aACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,MACA,MACA,YACA,OACA,MACA,KACA,KACA,KACA,KACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,WAEEC,GAAQ,CACV,OACA,OACA,WACA,KACA,MACA,QACA,KACA,MACA,QACA,UACA,OACA,OACA,QACA,QACA,SACA,MACA,SAEEC,GAAa,CACf,KACA,MAEEC,GAAgB,CAClB,QACA,QACA,SAEEC,GAAa,CACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,UACA,MACA,OACA,aACA,SACA,MACA,WACA,SACA,SACA,UACA,UACA,SACA,QACA,MACA,UAEEC,GAAW,CACb,KACA,KACA,KACA,KACA,KACA,MAEEC,GAAY,CACd,KACA,KACA,MAEEC,GAAQ,CACV,KACA,KACA,MAEEC,GAAa,CACf,MACA,SACA,WACA,SAEEC,GAAa,SAAUrd,GACzB,IAAIsd,EACJ,OAAO,SAAUnoB,GAEf,OADAmoB,EAASA,GAAkBl8B,GAAY4e,EAAO/kB,GAAS,IAChDqiC,EAAO3mC,eAAe+5B,GAAmBt4B,KAAK+c,MAGrDooB,GAAYF,GAAWJ,IACvBO,GAAUH,GAAWT,IACrBa,GAAW,SAAUtoB,GACvB,OAAOub,GAAmBH,UAAUpb,KAAUq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","file":"js/app.c33bec71.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// 4.8.2 (2018-08-09)\n(function () {\n(function () {\n 'use strict';\n\n var noop = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n };\n\n var compose = function (fa, fb) {\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n return fa(fb.apply(null, arguments));\n };\n };\n var constant = function (value) {\n return function () {\n return value;\n };\n };\n var identity = function (x) {\n return x;\n };\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n var die = function (msg) {\n return function () {\n throw new Error(msg);\n };\n };\n\n\n var never = constant(false);\n var always = constant(true);\n\n var never$1 = never;\n var always$1 = always;\n var none = function () {\n return NONE;\n };\n var NONE = function () {\n var eq = function (o) {\n return o.isNone();\n };\n var call$$1 = function (thunk) {\n return thunk();\n };\n var id = function (n) {\n return n;\n };\n var noop$$1 = function () {\n };\n var nul = function () {\n return null;\n };\n var undef = function () {\n return undefined;\n };\n var me = {\n fold: function (n, s) {\n return n();\n },\n is: never$1,\n isSome: never$1,\n isNone: always$1,\n getOr: id,\n getOrThunk: call$$1,\n getOrDie: function (msg) {\n throw new Error(msg || 'error: getOrDie called on none.');\n },\n getOrNull: nul,\n getOrUndefined: undef,\n or: id,\n orThunk: call$$1,\n map: none,\n ap: none,\n each: noop$$1,\n bind: none,\n flatten: none,\n exists: never$1,\n forall: always$1,\n filter: none,\n equals: eq,\n equals_: eq,\n toArray: function () {\n return [];\n },\n toString: constant('none()')\n };\n if (Object.freeze)\n Object.freeze(me);\n return me;\n }();\n var some = function (a) {\n var constant_a = function () {\n return a;\n };\n var self = function () {\n return me;\n };\n var map = function (f) {\n return some(f(a));\n };\n var bind = function (f) {\n return f(a);\n };\n var me = {\n fold: function (n, s) {\n return s(a);\n },\n is: function (v) {\n return a === v;\n },\n isSome: always$1,\n isNone: never$1,\n getOr: constant_a,\n getOrThunk: constant_a,\n getOrDie: constant_a,\n getOrNull: constant_a,\n getOrUndefined: constant_a,\n or: self,\n orThunk: self,\n map: map,\n ap: function (optfab) {\n return optfab.fold(none, function (fab) {\n return some(fab(a));\n });\n },\n each: function (f) {\n f(a);\n },\n bind: bind,\n flatten: constant_a,\n exists: bind,\n forall: bind,\n filter: function (f) {\n return f(a) ? me : NONE;\n },\n equals: function (o) {\n return o.is(a);\n },\n equals_: function (o, elementEq) {\n return o.fold(never$1, function (b) {\n return elementEq(a, b);\n });\n },\n toArray: function () {\n return [a];\n },\n toString: function () {\n return 'some(' + a + ')';\n }\n };\n return me;\n };\n var from = function (value) {\n return value === null || value === undefined ? NONE : some(value);\n };\n var Option = {\n some: some,\n none: none,\n from: from\n };\n\n var typeOf = function (x) {\n if (x === null)\n return 'null';\n var t = typeof x;\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\n return 'array';\n if (t === 'object' && String.prototype.isPrototypeOf(x))\n return 'string';\n return t;\n };\n var isType = function (type) {\n return function (value) {\n return typeOf(value) === type;\n };\n };\n var isString = isType('string');\n var isObject = isType('object');\n var isArray = isType('array');\n var isNull = isType('null');\n var isBoolean = isType('boolean');\n\n var isFunction = isType('function');\n var isNumber = isType('number');\n\n var rawIndexOf = function () {\n var pIndexOf = Array.prototype.indexOf;\n var fastIndex = function (xs, x) {\n return pIndexOf.call(xs, x);\n };\n var slowIndex = function (xs, x) {\n return slowIndexOf(xs, x);\n };\n return pIndexOf === undefined ? slowIndex : fastIndex;\n }();\n var indexOf = function (xs, x) {\n var r = rawIndexOf(xs, x);\n return r === -1 ? Option.none() : Option.some(r);\n };\n var contains = function (xs, x) {\n return rawIndexOf(xs, x) > -1;\n };\n var exists = function (xs, pred) {\n return findIndex(xs, pred).isSome();\n };\n\n\n var map = function (xs, f) {\n var len = xs.length;\n var r = new Array(len);\n for (var i = 0; i < len; i++) {\n var x = xs[i];\n r[i] = f(x, i, xs);\n }\n return r;\n };\n var each = function (xs, f) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n f(x, i, xs);\n }\n };\n var eachr = function (xs, f) {\n for (var i = xs.length - 1; i >= 0; i--) {\n var x = xs[i];\n f(x, i, xs);\n }\n };\n var partition = function (xs, pred) {\n var pass = [];\n var fail = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n var arr = pred(x, i, xs) ? pass : fail;\n arr.push(x);\n }\n return {\n pass: pass,\n fail: fail\n };\n };\n var filter = function (xs, pred) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n r.push(x);\n }\n }\n return r;\n };\n\n var foldr = function (xs, f, acc) {\n eachr(xs, function (x) {\n acc = f(acc, x);\n });\n return acc;\n };\n var foldl = function (xs, f, acc) {\n each(xs, function (x) {\n acc = f(acc, x);\n });\n return acc;\n };\n var find = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(x);\n }\n }\n return Option.none();\n };\n var findIndex = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(i);\n }\n }\n return Option.none();\n };\n var slowIndexOf = function (xs, x) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (xs[i] === x) {\n return i;\n }\n }\n return -1;\n };\n var push = Array.prototype.push;\n var flatten = function (xs) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (!Array.prototype.isPrototypeOf(xs[i]))\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n push.apply(r, xs[i]);\n }\n return r;\n };\n var bind = function (xs, f) {\n var output = map(xs, f);\n return flatten(output);\n };\n var forall = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n var x = xs[i];\n if (pred(x, i, xs) !== true) {\n return false;\n }\n }\n return true;\n };\n\n var slice = Array.prototype.slice;\n var reverse = function (xs) {\n var r = slice.call(xs, 0);\n r.reverse();\n return r;\n };\n var difference = function (a1, a2) {\n return filter(a1, function (x) {\n return !contains(a2, x);\n });\n };\n var mapToObject = function (xs, f) {\n var r = {};\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n r[String(x)] = f(x, i);\n }\n return r;\n };\n\n var sort = function (xs, comparator) {\n var copy = slice.call(xs, 0);\n copy.sort(comparator);\n return copy;\n };\n var head = function (xs) {\n return xs.length === 0 ? Option.none() : Option.some(xs[0]);\n };\n var last = function (xs) {\n return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);\n };\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n return slice.call(x);\n };\n\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n o = o[parts[i]];\n return o;\n };\n var resolve = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n\n var unsafe = function (name, scope) {\n return resolve(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null)\n throw name + ' not available on this browser';\n return actual;\n };\n var $_89i3w1cjkmcwk2c = { getOrDie: getOrDie };\n\n var url = function () {\n return $_89i3w1cjkmcwk2c.getOrDie('URL');\n };\n var createObjectURL = function (blob) {\n return url().createObjectURL(blob);\n };\n var revokeObjectURL = function (u) {\n url().revokeObjectURL(u);\n };\n var $_ci16mbjkmcwk2b = {\n createObjectURL: createObjectURL,\n revokeObjectURL: revokeObjectURL\n };\n\n var nav = navigator;\n var userAgent = nav.userAgent;\n var opera;\n var webkit;\n var ie;\n var ie11;\n var ie12;\n var gecko;\n var mac;\n var iDevice;\n var android;\n var fileApi;\n var phone;\n var tablet;\n var windowsPhone;\n var matchMediaQuery = function (query) {\n return 'matchMedia' in window ? matchMedia(query).matches : false;\n };\n opera = false;\n android = /Android/.test(userAgent);\n webkit = /WebKit/.test(userAgent);\n ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName);\n ie = ie && /MSIE (\\w+)\\./.exec(userAgent)[1];\n ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false;\n ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false;\n ie = ie || ie11 || ie12;\n gecko = !webkit && !ie11 && /Gecko/.test(userAgent);\n mac = userAgent.indexOf('Mac') !== -1;\n iDevice = /(iPad|iPhone)/.test(userAgent);\n fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!$_ci16mbjkmcwk2b.createObjectURL;\n phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);\n tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);\n windowsPhone = userAgent.indexOf('Windows Phone') !== -1;\n if (ie12) {\n webkit = false;\n }\n var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\\/(\\d*)/)[1], 10) >= 534;\n var $_cvvl9iajkmcwk25 = {\n opera: opera,\n webkit: webkit,\n ie: ie,\n gecko: gecko,\n mac: mac,\n iOS: iDevice,\n android: android,\n contentEditable: contentEditable,\n transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',\n caretAfter: ie !== 8,\n range: window.getSelection && 'Range' in window,\n documentMode: ie && !ie12 ? document.documentMode || 7 : 10,\n fileApi: fileApi,\n ceFalse: ie === false || ie > 8,\n cacheSuffix: null,\n container: null,\n overrideViewPort: null,\n experimentalShadowDom: false,\n canHaveCSP: ie === false || ie > 11,\n desktop: !phone && !tablet,\n windowsPhone: windowsPhone\n };\n\n var promise = function () {\n function bind(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n }\n var isArray = Array.isArray || function (value) {\n return Object.prototype.toString.call(value) === '[object Array]';\n };\n var Promise = function (fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('not a function');\n }\n this._state = null;\n this._value = null;\n this._deferreds = [];\n doResolve(fn, bind(resolve, this), bind(reject, this));\n };\n var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) {\n setTimeout(fn, 1);\n };\n function handle(deferred) {\n var me = this;\n if (this._state === null) {\n this._deferreds.push(deferred);\n return;\n }\n asap(function () {\n var cb = me._state ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (me._state ? deferred.resolve : deferred.reject)(me._value);\n return;\n }\n var ret;\n try {\n ret = cb(me._value);\n } catch (e) {\n deferred.reject(e);\n return;\n }\n deferred.resolve(ret);\n });\n }\n function resolve(newValue) {\n try {\n if (newValue === this) {\n throw new TypeError('A promise cannot be resolved with itself.');\n }\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (typeof then === 'function') {\n doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n return;\n }\n }\n this._state = true;\n this._value = newValue;\n finale.call(this);\n } catch (e) {\n reject.call(this, e);\n }\n }\n function reject(newValue) {\n this._state = false;\n this._value = newValue;\n finale.call(this);\n }\n function finale() {\n for (var i = 0, len = this._deferreds.length; i < len; i++) {\n handle.call(this, this._deferreds[i]);\n }\n this._deferreds = null;\n }\n function Handler(onFulfilled, onRejected, resolve, reject) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n }\n function doResolve(fn, onFulfilled, onRejected) {\n var done = false;\n try {\n fn(function (value) {\n if (done) {\n return;\n }\n done = true;\n onFulfilled(value);\n }, function (reason) {\n if (done) {\n return;\n }\n done = true;\n onRejected(reason);\n });\n } catch (ex) {\n if (done) {\n return;\n }\n done = true;\n onRejected(ex);\n }\n }\n Promise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n Promise.prototype.then = function (onFulfilled, onRejected) {\n var me = this;\n return new Promise(function (resolve, reject) {\n handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n });\n };\n Promise.all = function () {\n var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n return new Promise(function (resolve, reject) {\n if (args.length === 0) {\n return resolve([]);\n }\n var remaining = args.length;\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n };\n Promise.resolve = function (value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n Promise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n };\n Promise.race = function (values) {\n return new Promise(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n };\n return Promise;\n };\n var promiseObj = window.Promise ? window.Promise : promise();\n\n var requestAnimationFramePromise;\n var requestAnimationFrame$$1 = function (callback, element) {\n var i, requestAnimationFrameFunc = window.requestAnimationFrame;\n var vendors = [\n 'ms',\n 'moz',\n 'webkit'\n ];\n var featurefill = function (callback) {\n window.setTimeout(callback, 0);\n };\n for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {\n requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame'];\n }\n if (!requestAnimationFrameFunc) {\n requestAnimationFrameFunc = featurefill;\n }\n requestAnimationFrameFunc(callback, element);\n };\n var wrappedSetTimeout = function (callback, time) {\n if (typeof time !== 'number') {\n time = 0;\n }\n return setTimeout(callback, time);\n };\n var wrappedSetInterval = function (callback, time) {\n if (typeof time !== 'number') {\n time = 1;\n }\n return setInterval(callback, time);\n };\n var wrappedClearTimeout = function (id) {\n return clearTimeout(id);\n };\n var wrappedClearInterval = function (id) {\n return clearInterval(id);\n };\n var debounce = function (callback, time) {\n var timer, func;\n func = function () {\n var args = arguments;\n clearTimeout(timer);\n timer = wrappedSetTimeout(function () {\n callback.apply(this, args);\n }, time);\n };\n func.stop = function () {\n clearTimeout(timer);\n };\n return func;\n };\n var $_3l01gcijkmcwk99 = {\n requestAnimationFrame: function (callback, element) {\n if (requestAnimationFramePromise) {\n requestAnimationFramePromise.then(callback);\n return;\n }\n requestAnimationFramePromise = new promiseObj(function (resolve) {\n if (!element) {\n element = document.body;\n }\n requestAnimationFrame$$1(resolve, element);\n }).then(callback);\n },\n setTimeout: wrappedSetTimeout,\n setInterval: wrappedSetInterval,\n setEditorTimeout: function (editor, callback, time) {\n return wrappedSetTimeout(function () {\n if (!editor.removed) {\n callback();\n }\n }, time);\n },\n setEditorInterval: function (editor, callback, time) {\n var timer;\n timer = wrappedSetInterval(function () {\n if (!editor.removed) {\n callback();\n } else {\n clearInterval(timer);\n }\n }, time);\n return timer;\n },\n debounce: debounce,\n throttle: debounce,\n clearInterval: wrappedClearInterval,\n clearTimeout: wrappedClearTimeout\n };\n\n var eventExpandoPrefix = 'mce-data-';\n var mouseEventRe = /^(?:mouse|contextmenu)|click/;\n var deprecated = {\n keyLocation: 1,\n layerX: 1,\n layerY: 1,\n returnValue: 1,\n webkitMovementX: 1,\n webkitMovementY: 1,\n keyIdentifier: 1\n };\n var hasIsDefaultPrevented = function (event$$1) {\n return event$$1.isDefaultPrevented === returnTrue || event$$1.isDefaultPrevented === returnFalse;\n };\n var returnFalse = function () {\n return false;\n };\n var returnTrue = function () {\n return true;\n };\n var addEvent = function (target, name$$1, callback, capture) {\n if (target.addEventListener) {\n target.addEventListener(name$$1, callback, capture || false);\n } else if (target.attachEvent) {\n target.attachEvent('on' + name$$1, callback);\n }\n };\n var removeEvent = function (target, name$$1, callback, capture) {\n if (target.removeEventListener) {\n target.removeEventListener(name$$1, callback, capture || false);\n } else if (target.detachEvent) {\n target.detachEvent('on' + name$$1, callback);\n }\n };\n var getTargetFromShadowDom = function (event$$1, defaultTarget) {\n if (event$$1.composedPath) {\n var composedPath = event$$1.composedPath();\n if (composedPath && composedPath.length > 0) {\n return composedPath[0];\n }\n }\n return defaultTarget;\n };\n var fix = function (originalEvent, data) {\n var name$$1;\n var event$$1 = data || {};\n for (name$$1 in originalEvent) {\n if (!deprecated[name$$1]) {\n event$$1[name$$1] = originalEvent[name$$1];\n }\n }\n if (!event$$1.target) {\n event$$1.target = event$$1.srcElement || document;\n }\n if ($_cvvl9iajkmcwk25.experimentalShadowDom) {\n event$$1.target = getTargetFromShadowDom(originalEvent, event$$1.target);\n }\n if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {\n var eventDoc = event$$1.target.ownerDocument || document;\n var doc = eventDoc.documentElement;\n var body = eventDoc.body;\n event$$1.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event$$1.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n event$$1.preventDefault = function () {\n event$$1.isDefaultPrevented = returnTrue;\n if (originalEvent) {\n if (originalEvent.preventDefault) {\n originalEvent.preventDefault();\n } else {\n originalEvent.returnValue = false;\n }\n }\n };\n event$$1.stopPropagation = function () {\n event$$1.isPropagationStopped = returnTrue;\n if (originalEvent) {\n if (originalEvent.stopPropagation) {\n originalEvent.stopPropagation();\n } else {\n originalEvent.cancelBubble = true;\n }\n }\n };\n event$$1.stopImmediatePropagation = function () {\n event$$1.isImmediatePropagationStopped = returnTrue;\n event$$1.stopPropagation();\n };\n if (hasIsDefaultPrevented(event$$1) === false) {\n event$$1.isDefaultPrevented = returnFalse;\n event$$1.isPropagationStopped = returnFalse;\n event$$1.isImmediatePropagationStopped = returnFalse;\n }\n if (typeof event$$1.metaKey === 'undefined') {\n event$$1.metaKey = false;\n }\n return event$$1;\n };\n var bindOnReady = function (win, callback, eventUtils) {\n var doc = win.document, event$$1 = { type: 'ready' };\n if (eventUtils.domLoaded) {\n callback(event$$1);\n return;\n }\n var isDocReady = function () {\n return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;\n };\n var readyHandler = function () {\n if (!eventUtils.domLoaded) {\n eventUtils.domLoaded = true;\n callback(event$$1);\n }\n };\n var waitForDomLoaded = function () {\n if (isDocReady()) {\n removeEvent(doc, 'readystatechange', waitForDomLoaded);\n readyHandler();\n }\n };\n var tryScroll = function () {\n try {\n doc.documentElement.doScroll('left');\n } catch (ex) {\n $_3l01gcijkmcwk99.setTimeout(tryScroll);\n return;\n }\n readyHandler();\n };\n if (doc.addEventListener && !($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11)) {\n if (isDocReady()) {\n readyHandler();\n } else {\n addEvent(win, 'DOMContentLoaded', readyHandler);\n }\n } else {\n addEvent(doc, 'readystatechange', waitForDomLoaded);\n if (doc.documentElement.doScroll && win.self === win.top) {\n tryScroll();\n }\n }\n addEvent(win, 'load', readyHandler);\n };\n var EventUtils = function () {\n var self$$1 = this;\n var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;\n expando = eventExpandoPrefix + (+new Date()).toString(32);\n hasMouseEnterLeave = 'onmouseenter' in document.documentElement;\n hasFocusIn = 'onfocusin' in document.documentElement;\n mouseEnterLeave = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n };\n count = 1;\n self$$1.domLoaded = false;\n self$$1.events = events;\n var executeHandlers = function (evt, id) {\n var callbackList, i, l, callback;\n var container = events[id];\n callbackList = container && container[evt.type];\n if (callbackList) {\n for (i = 0, l = callbackList.length; i < l; i++) {\n callback = callbackList[i];\n if (callback && callback.func.call(callback.scope, evt) === false) {\n evt.preventDefault();\n }\n if (evt.isImmediatePropagationStopped()) {\n return;\n }\n }\n }\n };\n self$$1.bind = function (target, names, callback, scope) {\n var id, callbackList, i, name$$1, fakeName, nativeHandler, capture;\n var win = window;\n var defaultNativeHandler = function (evt) {\n executeHandlers(fix(evt || win.event), id);\n };\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return;\n }\n if (!target[expando]) {\n id = count++;\n target[expando] = id;\n events[id] = {};\n } else {\n id = target[expando];\n }\n scope = scope || target;\n names = names.split(' ');\n i = names.length;\n while (i--) {\n name$$1 = names[i];\n nativeHandler = defaultNativeHandler;\n fakeName = capture = false;\n if (name$$1 === 'DOMContentLoaded') {\n name$$1 = 'ready';\n }\n if (self$$1.domLoaded && name$$1 === 'ready' && target.readyState === 'complete') {\n callback.call(scope, fix({ type: name$$1 }));\n continue;\n }\n if (!hasMouseEnterLeave) {\n fakeName = mouseEnterLeave[name$$1];\n if (fakeName) {\n nativeHandler = function (evt) {\n var current, related;\n current = evt.currentTarget;\n related = evt.relatedTarget;\n if (related && current.contains) {\n related = current.contains(related);\n } else {\n while (related && related !== current) {\n related = related.parentNode;\n }\n }\n if (!related) {\n evt = fix(evt || win.event);\n evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';\n evt.target = current;\n executeHandlers(evt, id);\n }\n };\n }\n }\n if (!hasFocusIn && (name$$1 === 'focusin' || name$$1 === 'focusout')) {\n capture = true;\n fakeName = name$$1 === 'focusin' ? 'focus' : 'blur';\n nativeHandler = function (evt) {\n evt = fix(evt || win.event);\n evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';\n executeHandlers(evt, id);\n };\n }\n callbackList = events[id][name$$1];\n if (!callbackList) {\n events[id][name$$1] = callbackList = [{\n func: callback,\n scope: scope\n }];\n callbackList.fakeName = fakeName;\n callbackList.capture = capture;\n callbackList.nativeHandler = nativeHandler;\n if (name$$1 === 'ready') {\n bindOnReady(target, nativeHandler, self$$1);\n } else {\n addEvent(target, fakeName || name$$1, nativeHandler, capture);\n }\n } else {\n if (name$$1 === 'ready' && self$$1.domLoaded) {\n callback({ type: name$$1 });\n } else {\n callbackList.push({\n func: callback,\n scope: scope\n });\n }\n }\n }\n target = callbackList = 0;\n return callback;\n };\n self$$1.unbind = function (target, names, callback) {\n var id, callbackList, i, ci, name$$1, eventMap;\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return self$$1;\n }\n id = target[expando];\n if (id) {\n eventMap = events[id];\n if (names) {\n names = names.split(' ');\n i = names.length;\n while (i--) {\n name$$1 = names[i];\n callbackList = eventMap[name$$1];\n if (callbackList) {\n if (callback) {\n ci = callbackList.length;\n while (ci--) {\n if (callbackList[ci].func === callback) {\n var nativeHandler = callbackList.nativeHandler;\n var fakeName = callbackList.fakeName, capture = callbackList.capture;\n callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));\n callbackList.nativeHandler = nativeHandler;\n callbackList.fakeName = fakeName;\n callbackList.capture = capture;\n eventMap[name$$1] = callbackList;\n }\n }\n }\n if (!callback || callbackList.length === 0) {\n delete eventMap[name$$1];\n removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\n }\n }\n }\n } else {\n for (name$$1 in eventMap) {\n callbackList = eventMap[name$$1];\n removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\n }\n eventMap = {};\n }\n for (name$$1 in eventMap) {\n return self$$1;\n }\n delete events[id];\n try {\n delete target[expando];\n } catch (ex) {\n target[expando] = null;\n }\n }\n return self$$1;\n };\n self$$1.fire = function (target, name$$1, args) {\n var id;\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return self$$1;\n }\n args = fix(null, args);\n args.type = name$$1;\n args.target = target;\n do {\n id = target[expando];\n if (id) {\n executeHandlers(args, id);\n }\n target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;\n } while (target && !args.isPropagationStopped());\n return self$$1;\n };\n self$$1.clean = function (target) {\n var i, children;\n var unbind = self$$1.unbind;\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return self$$1;\n }\n if (target[expando]) {\n unbind(target);\n }\n if (!target.getElementsByTagName) {\n target = target.document;\n }\n if (target && target.getElementsByTagName) {\n unbind(target);\n children = target.getElementsByTagName('*');\n i = children.length;\n while (i--) {\n target = children[i];\n if (target[expando]) {\n unbind(target);\n }\n }\n }\n return self$$1;\n };\n self$$1.destroy = function () {\n events = {};\n };\n self$$1.cancel = function (e) {\n if (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n return false;\n };\n };\n EventUtils.Event = new EventUtils();\n EventUtils.Event.bind(window, 'ready', function () {\n });\n\n var i;\n var support;\n var Expr;\n var getText;\n var isXML;\n var tokenize;\n var compile;\n var select;\n var outermostContext;\n var sortInput;\n var hasDuplicate;\n var setDocument;\n var document$1;\n var docElem;\n var documentIsHTML;\n var rbuggyQSA;\n var rbuggyMatches;\n var matches;\n var contains$1;\n var expando = 'sizzle' + -new Date();\n var preferredDoc = window.document;\n var dirruns = 0;\n var done = 0;\n var classCache = createCache();\n var tokenCache = createCache();\n var compilerCache = createCache();\n var sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n };\n var strundefined = typeof undefined;\n var MAX_NEGATIVE = 1 << 31;\n var hasOwn = {}.hasOwnProperty;\n var arr = [];\n var pop = arr.pop;\n var push_native = arr.push;\n var push$1 = arr.push;\n var slice$1 = arr.slice;\n var indexOf$1 = arr.indexOf || function (elem) {\n var i = 0, len = this.length;\n for (; i < len; i++) {\n if (this[i] === elem) {\n return i;\n }\n }\n return -1;\n };\n var booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped';\n var whitespace = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]';\n var identifier = '(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+';\n var attributes = '\\\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\"|(' + identifier + '))|)' + whitespace + '*\\\\]';\n var pseudos = ':(' + identifier + ')(?:\\\\((' + '(\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\")|' + '((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|' + attributes + ')*)|' + '.*' + ')\\\\)|)';\n var rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)' + whitespace + '+$', 'g');\n var rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*');\n var rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*');\n var rattributeQuotes = new RegExp('=' + whitespace + '*([^\\\\]\\'\"]*?)' + whitespace + '*\\\\]', 'g');\n var rpseudo = new RegExp(pseudos);\n var ridentifier = new RegExp('^' + identifier + '$');\n var matchExpr = {\n ID: new RegExp('^#(' + identifier + ')'),\n CLASS: new RegExp('^\\\\.(' + identifier + ')'),\n TAG: new RegExp('^(' + identifier + '|[*])'),\n ATTR: new RegExp('^' + attributes),\n PSEUDO: new RegExp('^' + pseudos),\n CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(' + whitespace + '*(even|odd|(([+-]|)(\\\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\\\d+)|))' + whitespace + '*\\\\)|)', 'i'),\n bool: new RegExp('^(?:' + booleans + ')$', 'i'),\n needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(' + whitespace + '*((?:-\\\\d)?\\\\d*)' + whitespace + '*\\\\)|)(?=[^-]|$)', 'i')\n };\n var rinputs = /^(?:input|select|textarea|button)$/i;\n var rheader = /^h\\d$/i;\n var rnative = /^[^{]+\\{\\s*\\[native \\w/;\n var rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/;\n var rsibling = /[+~]/;\n var rescape = /'|\\\\/g;\n var runescape = new RegExp('\\\\\\\\([\\\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig');\n var funescape = function (_, escaped, escapedWhitespace) {\n var high = '0x' + escaped - 65536;\n return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);\n };\n try {\n push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes);\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push$1 = {\n apply: arr.length ? function (target, els) {\n push_native.apply(target, slice$1.call(els));\n } : function (target, els) {\n var j = target.length, i = 0;\n while (target[j++] = els[i++]) {\n }\n target.length = j - 1;\n }\n };\n }\n var Sizzle = function (selector, context, results, seed) {\n var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;\n if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) {\n setDocument(context);\n }\n context = context || document$1;\n results = results || [];\n if (!selector || typeof selector !== 'string') {\n return results;\n }\n if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) {\n return [];\n }\n if (documentIsHTML && !seed) {\n if (match = rquickExpr.exec(selector)) {\n if (m = match[1]) {\n if (nodeType === 9) {\n elem = context.getElementById(m);\n if (elem && elem.parentNode) {\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n }\n } else {\n if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n }\n } else if (match[2]) {\n push$1.apply(results, context.getElementsByTagName(selector));\n return results;\n } else if ((m = match[3]) && support.getElementsByClassName) {\n push$1.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n nid = old = expando;\n newContext = context;\n newSelector = nodeType === 9 && selector;\n if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') {\n groups = tokenize(selector);\n if (old = context.getAttribute('id')) {\n nid = old.replace(rescape, '\\\\$&');\n } else {\n context.setAttribute('id', nid);\n }\n nid = '[id=\\'' + nid + '\\'] ';\n i = groups.length;\n while (i--) {\n groups[i] = nid + toSelector(groups[i]);\n }\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n newSelector = groups.join(',');\n }\n if (newSelector) {\n try {\n push$1.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n } finally {\n if (!old) {\n context.removeAttribute('id');\n }\n }\n }\n }\n }\n return select(selector.replace(rtrim, '$1'), context, results, seed);\n };\n function createCache() {\n var keys = [];\n function cache(key, value) {\n if (keys.push(key + ' ') > Expr.cacheLength) {\n delete cache[keys.shift()];\n }\n return cache[key + ' '] = value;\n }\n return cache;\n }\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n function siblingCheck(a, b) {\n var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);\n if (diff) {\n return diff;\n }\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n return a ? 1 : -1;\n }\n function createInputPseudo(type) {\n return function (elem) {\n var name$$1 = elem.nodeName.toLowerCase();\n return name$$1 === 'input' && elem.type === type;\n };\n }\n function createButtonPseudo(type) {\n return function (elem) {\n var name$$1 = elem.nodeName.toLowerCase();\n return (name$$1 === 'input' || name$$1 === 'button') && elem.type === type;\n };\n }\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length;\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== strundefined && context;\n }\n support = Sizzle.support = {};\n isXML = Sizzle.isXML = function (elem) {\n var documentElement = elem && (elem.ownerDocument || elem).documentElement;\n return documentElement ? documentElement.nodeName !== 'HTML' : false;\n };\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent$$1 = doc.defaultView;\n function getTop(win) {\n try {\n return win.top;\n } catch (ex) {\n }\n return null;\n }\n if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) {\n return document$1;\n }\n document$1 = doc;\n docElem = doc.documentElement;\n documentIsHTML = !isXML(doc);\n if (parent$$1 && parent$$1 !== getTop(parent$$1)) {\n if (parent$$1.addEventListener) {\n parent$$1.addEventListener('unload', function () {\n setDocument();\n }, false);\n } else if (parent$$1.attachEvent) {\n parent$$1.attachEvent('onunload', function () {\n setDocument();\n });\n }\n }\n support.attributes = true;\n support.getElementsByTagName = true;\n support.getElementsByClassName = rnative.test(doc.getElementsByClassName);\n support.getById = true;\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== strundefined && documentIsHTML) {\n var m = context.getElementById(id);\n return m && m.parentNode ? [m] : [];\n }\n };\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute('id') === attrId;\n };\n };\n Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== strundefined) {\n return context.getElementsByTagName(tag);\n }\n } : function (tag, context) {\n var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag);\n if (tag === '*') {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n return tmp;\n }\n return results;\n };\n Expr.find.CLASS = support.getElementsByClassName && function (className, context) {\n if (documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n rbuggyMatches = [];\n rbuggyQSA = [];\n support.disconnectedMatch = true;\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|'));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|'));\n hasCompare = rnative.test(docElem.compareDocumentPosition);\n contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n return false;\n };\n sortOrder = hasCompare ? function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) {\n return -1;\n }\n if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) {\n return 1;\n }\n return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];\n if (!aup || !bup) {\n return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\n } else if (aup === bup) {\n return siblingCheck(a, b);\n }\n cur = a;\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n cur = b;\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n }\n while (ap[i] === bp[i]) {\n i++;\n }\n return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;\n };\n return doc;\n };\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n Sizzle.matchesSelector = function (elem, expr) {\n if ((elem.ownerDocument || elem) !== document$1) {\n setDocument(elem);\n }\n expr = expr.replace(rattributeQuotes, '=\\'$1\\']');\n if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n }\n }\n return Sizzle(expr, document$1, null, [elem]).length > 0;\n };\n Sizzle.contains = function (context, elem) {\n if ((context.ownerDocument || context) !== document$1) {\n setDocument(context);\n }\n return contains$1(context, elem);\n };\n Sizzle.attr = function (elem, name$$1) {\n if ((elem.ownerDocument || elem) !== document$1) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name$$1.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name$$1.toLowerCase()) ? fn(elem, name$$1, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name$$1) : (val = elem.getAttributeNode(name$$1)) && val.specified ? val.value : null;\n };\n Sizzle.error = function (msg) {\n throw new Error('Syntax error, unrecognized expression: ' + msg);\n };\n Sizzle.uniqueSort = function (results) {\n var elem, duplicates = [], j = 0, i = 0;\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n }\n sortInput = null;\n return results;\n };\n getText = Sizzle.getText = function (elem) {\n var node, ret = '', i = 0, nodeType = elem.nodeType;\n if (!nodeType) {\n while (node = elem[i++]) {\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n if (typeof elem.textContent === 'string') {\n return elem.textContent;\n } else {\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n return ret;\n };\n Expr = Sizzle.selectors = {\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n '>': {\n dir: 'parentNode',\n first: true\n },\n ' ': { dir: 'parentNode' },\n '+': {\n dir: 'previousSibling',\n first: true\n },\n '~': { dir: 'previousSibling' }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape);\n match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape);\n if (match[2] === '~=') {\n match[3] = ' ' + match[3] + ' ';\n }\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === 'nth') {\n if (!match[3]) {\n Sizzle.error(match[0]);\n }\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd'));\n match[5] = +(match[7] + match[8] || match[3] === 'odd');\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n return match;\n },\n PSEUDO: function (match) {\n var excess, unquoted = !match[6] && match[2];\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n }\n if (match[3]) {\n match[2] = match[4] || match[5] || '';\n } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) {\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === '*' ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + ' '];\n return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || '');\n });\n },\n ATTR: function (name$$1, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name$$1);\n if (result == null) {\n return operator === '!=';\n }\n if (!operator) {\n return true;\n }\n result += '';\n return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false;\n };\n },\n CHILD: function (type, what, argument, first, last) {\n var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type';\n return first === 1 && last === 0 ? function (elem) {\n return !!elem.parentNode;\n } : function (elem, context, xml) {\n var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent$$1 = elem.parentNode, name$$1 = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType;\n if (parent$$1) {\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) {\n return false;\n }\n }\n start = dir = type === 'only' && !start && 'nextSibling';\n }\n return true;\n }\n start = [forward ? parent$$1.firstChild : parent$$1.lastChild];\n if (forward && useCache) {\n outerCache = parent$$1[expando] || (parent$$1[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = cache[0] === dirruns && cache[2];\n node = nodeIndex && parent$$1.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [\n dirruns,\n nodeIndex,\n diff\n ];\n break;\n }\n }\n } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) {\n diff = cache[1];\n } else {\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) && ++diff) {\n if (useCache) {\n (node[expando] || (node[expando] = {}))[type] = [\n dirruns,\n diff\n ];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo);\n if (fn[expando]) {\n return fn(argument);\n }\n if (fn.length > 1) {\n args = [\n pseudo,\n pseudo,\n '',\n argument\n ];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx, matched = fn(seed, argument), i = matched.length;\n while (i--) {\n idx = indexOf$1.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n not: markFunction(function (selector) {\n var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1'));\n return matcher[expando] ? markFunction(function (seed, matches, context, xml) {\n var elem, unmatched = matcher(seed, null, xml, []), i = seed.length;\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;\n };\n }),\n lang: markFunction(function (lang) {\n if (!ridentifier.test(lang || '')) {\n Sizzle.error('unsupported lang: ' + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + '-') === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === docElem;\n },\n focus: function (elem) {\n return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n enabled: function (elem) {\n return elem.disabled === false;\n },\n disabled: function (elem) {\n return elem.disabled === true;\n },\n checked: function (elem) {\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected;\n },\n selected: function (elem) {\n if (elem.parentNode) {\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n empty: function (elem) {\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n var name$$1 = elem.nodeName.toLowerCase();\n return name$$1 === 'input' && elem.type === 'button' || name$$1 === 'button';\n },\n text: function (elem) {\n var attr;\n return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text');\n },\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (matchIndexes, length$$1) {\n return [length$$1 - 1];\n }),\n eq: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n return [argument < 0 ? argument + length$$1 : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length$$1) {\n var i = 0;\n for (; i < length$$1; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length$$1) {\n var i = 1;\n for (; i < length$$1; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n var i = argument < 0 ? argument + length$$1 : argument;\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n var i = argument < 0 ? argument + length$$1 : argument;\n for (; ++i < length$$1;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq;\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n function setFilters() {\n }\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' '];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: match[0].replace(rtrim, ' ')\n });\n soFar = soFar.slice(matched.length);\n }\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);\n };\n function toSelector(tokens) {\n var i = 0, len = tokens.length, selector = '';\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++;\n return combinator.first ? function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n } : function (elem, context, xml) {\n var oldCache, outerCache, newCache = [\n dirruns,\n doneName\n ];\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n return newCache[2] = oldCache[2];\n } else {\n outerCache[dir] = newCache;\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0, len = contexts.length;\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n }\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push$1.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) {\n return indexOf$1.call(checkContext, elem) > -1;\n }, implicitRelative, true), matchers = [function (elem, context, xml) {\n return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n if (matcher[expando]) {\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) {\n var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;\n if (outermost) {\n outermostContext = context !== document$1 && context;\n }\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context, xml)) {\n results.push(elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n if (bySet) {\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n matchedCount += i;\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n setMatched = condense(setMatched);\n }\n push$1.apply(results, setMatched);\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n compile = Sizzle.compile = function (selector, match) {\n var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' '];\n if (!cached) {\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n cached.selector = selector;\n }\n return cached;\n };\n select = Sizzle.select = function (selector, context, results, seed) {\n var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n if (match.length === 1) {\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push$1.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n };\n support.sortStable = expando.split('').sort(sortOrder).join('') === expando;\n support.detectDuplicates = !!hasDuplicate;\n setDocument();\n support.sortDetached = true;\n\n var isArray$1 = Array.isArray;\n var toArray = function (obj) {\n var array = obj, i, l;\n if (!isArray$1(obj)) {\n array = [];\n for (i = 0, l = obj.length; i < l; i++) {\n array[i] = obj[i];\n }\n }\n return array;\n };\n var each$1 = function (o, cb, s) {\n var n, l;\n if (!o) {\n return 0;\n }\n s = s || o;\n if (o.length !== undefined) {\n for (n = 0, l = o.length; n < l; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n }\n }\n return 1;\n };\n var map$1 = function (array, callback) {\n var out = [];\n each$1(array, function (item, index) {\n out.push(callback(item, index, array));\n });\n return out;\n };\n var filter$1 = function (a, f) {\n var o = [];\n each$1(a, function (v, index) {\n if (!f || f(v, index, a)) {\n o.push(v);\n }\n });\n return o;\n };\n var indexOf$2 = function (a, v) {\n var i, l;\n if (a) {\n for (i = 0, l = a.length; i < l; i++) {\n if (a[i] === v) {\n return i;\n }\n }\n }\n return -1;\n };\n var reduce = function (collection, iteratee, accumulator, thisArg) {\n var i = 0;\n if (arguments.length < 3) {\n accumulator = collection[0];\n }\n for (; i < collection.length; i++) {\n accumulator = iteratee.call(thisArg, accumulator, collection[i], i);\n }\n return accumulator;\n };\n var findIndex$1 = function (array, predicate, thisArg) {\n var i, l;\n for (i = 0, l = array.length; i < l; i++) {\n if (predicate.call(thisArg, array[i], i, array)) {\n return i;\n }\n }\n return -1;\n };\n var find$1 = function (array, predicate, thisArg) {\n var idx = findIndex$1(array, predicate, thisArg);\n if (idx !== -1) {\n return array[idx];\n }\n return undefined;\n };\n var last$1 = function (collection) {\n return collection[collection.length - 1];\n };\n var $_9g1fibmjkmcwkbu = {\n isArray: isArray$1,\n toArray: toArray,\n each: each$1,\n map: map$1,\n filter: filter$1,\n indexOf: indexOf$2,\n reduce: reduce,\n findIndex: findIndex$1,\n find: find$1,\n last: last$1\n };\n\n var whiteSpaceRegExp = /^\\s*|\\s*$/g;\n var trim = function (str) {\n return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, '');\n };\n var is = function (obj, type) {\n if (!type) {\n return obj !== undefined;\n }\n if (type === 'array' && $_9g1fibmjkmcwkbu.isArray(obj)) {\n return true;\n }\n return typeof obj === type;\n };\n var makeMap = function (items, delim, map) {\n var i;\n items = items || [];\n delim = delim || ',';\n if (typeof items === 'string') {\n items = items.split(delim);\n }\n map = map || {};\n i = items.length;\n while (i--) {\n map[items[i]] = {};\n }\n return map;\n };\n var hasOwnProperty = function (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n };\n var create = function (s, p, root) {\n var self$$1 = this;\n var sp, ns, cn, scn, c, de = 0;\n s = /^((static) )?([\\w.]+)(:([\\w.]+))?/.exec(s);\n cn = s[3].match(/(^|\\.)(\\w+)$/i)[2];\n ns = self$$1.createNS(s[3].replace(/\\.\\w+$/, ''), root);\n if (ns[cn]) {\n return;\n }\n if (s[2] === 'static') {\n ns[cn] = p;\n if (this.onCreate) {\n this.onCreate(s[2], s[3], ns[cn]);\n }\n return;\n }\n if (!p[cn]) {\n p[cn] = function () {\n };\n de = 1;\n }\n ns[cn] = p[cn];\n self$$1.extend(ns[cn].prototype, p);\n if (s[5]) {\n sp = self$$1.resolve(s[5]).prototype;\n scn = s[5].match(/\\.(\\w+)$/i)[1];\n c = ns[cn];\n if (de) {\n ns[cn] = function () {\n return sp[scn].apply(this, arguments);\n };\n } else {\n ns[cn] = function () {\n this.parent = sp[scn];\n return c.apply(this, arguments);\n };\n }\n ns[cn].prototype[cn] = ns[cn];\n self$$1.each(sp, function (f, n) {\n ns[cn].prototype[n] = sp[n];\n });\n self$$1.each(p, function (f, n) {\n if (sp[n]) {\n ns[cn].prototype[n] = function () {\n this.parent = sp[n];\n return f.apply(this, arguments);\n };\n } else {\n if (n !== cn) {\n ns[cn].prototype[n] = f;\n }\n }\n });\n }\n self$$1.each(p.static, function (f, n) {\n ns[cn][n] = f;\n });\n };\n var extend = function (obj, ext) {\n var x = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n x[_i - 2] = arguments[_i];\n }\n var i, l, name$$1;\n var args = arguments;\n var value;\n for (i = 1, l = args.length; i < l; i++) {\n ext = args[i];\n for (name$$1 in ext) {\n if (ext.hasOwnProperty(name$$1)) {\n value = ext[name$$1];\n if (value !== undefined) {\n obj[name$$1] = value;\n }\n }\n }\n }\n return obj;\n };\n var walk = function (o, f, n, s) {\n s = s || this;\n if (o) {\n if (n) {\n o = o[n];\n }\n $_9g1fibmjkmcwkbu.each(o, function (o, i) {\n if (f.call(s, o, i, n) === false) {\n return false;\n }\n walk(o, f, n, s);\n });\n }\n };\n var createNS = function (n, o) {\n var i, v;\n o = o || window;\n n = n.split('.');\n for (i = 0; i < n.length; i++) {\n v = n[i];\n if (!o[v]) {\n o[v] = {};\n }\n o = o[v];\n }\n return o;\n };\n var resolve$1 = function (n, o) {\n var i, l;\n o = o || window;\n n = n.split('.');\n for (i = 0, l = n.length; i < l; i++) {\n o = o[n[i]];\n if (!o) {\n break;\n }\n }\n return o;\n };\n var explode = function (s, d) {\n if (!s || is(s, 'array')) {\n return s;\n }\n return $_9g1fibmjkmcwkbu.map(s.split(d || ','), trim);\n };\n var _addCacheSuffix = function (url) {\n var cacheSuffix = $_cvvl9iajkmcwk25.cacheSuffix;\n if (cacheSuffix) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;\n }\n return url;\n };\n var $_4ujg4tljkmcwkbk = {\n trim: trim,\n isArray: $_9g1fibmjkmcwkbu.isArray,\n is: is,\n toArray: $_9g1fibmjkmcwkbu.toArray,\n makeMap: makeMap,\n each: $_9g1fibmjkmcwkbu.each,\n map: $_9g1fibmjkmcwkbu.map,\n grep: $_9g1fibmjkmcwkbu.filter,\n inArray: $_9g1fibmjkmcwkbu.indexOf,\n hasOwn: hasOwnProperty,\n extend: extend,\n create: create,\n walk: walk,\n createNS: createNS,\n resolve: resolve$1,\n explode: explode,\n _addCacheSuffix: _addCacheSuffix\n };\n\n var doc = document;\n var push$2 = Array.prototype.push;\n var slice$2 = Array.prototype.slice;\n var rquickExpr$1 = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/;\n var Event$$1 = EventUtils.Event;\n var skipUniques = $_4ujg4tljkmcwkbk.makeMap('children,contents,next,prev');\n var isDefined = function (obj) {\n return typeof obj !== 'undefined';\n };\n var isString$1 = function (obj) {\n return typeof obj === 'string';\n };\n var isWindow = function (obj) {\n return obj && obj === obj.window;\n };\n var createFragment = function (html, fragDoc) {\n var frag, node, container;\n fragDoc = fragDoc || doc;\n container = fragDoc.createElement('div');\n frag = fragDoc.createDocumentFragment();\n container.innerHTML = html;\n while (node = container.firstChild) {\n frag.appendChild(node);\n }\n return frag;\n };\n var domManipulate = function (targetNodes, sourceItem, callback, reverse) {\n var i;\n if (isString$1(sourceItem)) {\n sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));\n } else if (sourceItem.length && !sourceItem.nodeType) {\n sourceItem = DomQuery.makeArray(sourceItem);\n if (reverse) {\n for (i = sourceItem.length - 1; i >= 0; i--) {\n domManipulate(targetNodes, sourceItem[i], callback, reverse);\n }\n } else {\n for (i = 0; i < sourceItem.length; i++) {\n domManipulate(targetNodes, sourceItem[i], callback, reverse);\n }\n }\n return targetNodes;\n }\n if (sourceItem.nodeType) {\n i = targetNodes.length;\n while (i--) {\n callback.call(targetNodes[i], sourceItem);\n }\n }\n return targetNodes;\n };\n var hasClass = function (node, className) {\n return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;\n };\n var wrap = function (elements, wrapper, all) {\n var lastParent, newWrapper;\n wrapper = DomQuery(wrapper)[0];\n elements.each(function () {\n var self$$1 = this;\n if (!all || lastParent !== self$$1.parentNode) {\n lastParent = self$$1.parentNode;\n newWrapper = wrapper.cloneNode(false);\n self$$1.parentNode.insertBefore(newWrapper, self$$1);\n newWrapper.appendChild(self$$1);\n } else {\n newWrapper.appendChild(self$$1);\n }\n });\n return elements;\n };\n var numericCssMap = $_4ujg4tljkmcwkbk.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');\n var booleanMap = $_4ujg4tljkmcwkbk.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');\n var propFix = {\n for: 'htmlFor',\n class: 'className',\n readonly: 'readOnly'\n };\n var cssFix = { float: 'cssFloat' };\n var attrHooks = {};\n var cssHooks = {};\n var DomQuery = function (selector, context) {\n return new DomQuery.fn.init(selector, context);\n };\n var inArray = function (item, array) {\n var i;\n if (array.indexOf) {\n return array.indexOf(item);\n }\n i = array.length;\n while (i--) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n };\n var whiteSpaceRegExp$1 = /^\\s*|\\s*$/g;\n var trim$1 = function (str) {\n return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');\n };\n var each$2 = function (obj, callback) {\n var length$$1, key, i, value;\n if (obj) {\n length$$1 = obj.length;\n if (length$$1 === undefined) {\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n value = obj[key];\n if (callback.call(value, key, value) === false) {\n break;\n }\n }\n }\n } else {\n for (i = 0; i < length$$1; i++) {\n value = obj[i];\n if (callback.call(value, i, value) === false) {\n break;\n }\n }\n }\n }\n return obj;\n };\n var grep = function (array, callback) {\n var out = [];\n each$2(array, function (i, item) {\n if (callback(item, i)) {\n out.push(item);\n }\n });\n return out;\n };\n var getElementDocument = function (element) {\n if (!element) {\n return doc;\n }\n if (element.nodeType === 9) {\n return element;\n }\n return element.ownerDocument;\n };\n DomQuery.fn = DomQuery.prototype = {\n constructor: DomQuery,\n selector: '',\n context: null,\n length: 0,\n init: function (selector, context) {\n var self$$1 = this;\n var match, node;\n if (!selector) {\n return self$$1;\n }\n if (selector.nodeType) {\n self$$1.context = self$$1[0] = selector;\n self$$1.length = 1;\n return self$$1;\n }\n if (context && context.nodeType) {\n self$$1.context = context;\n } else {\n if (context) {\n return DomQuery(selector).attr(context);\n }\n self$$1.context = context = document;\n }\n if (isString$1(selector)) {\n self$$1.selector = selector;\n if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) {\n match = [\n null,\n selector,\n null\n ];\n } else {\n match = rquickExpr$1.exec(selector);\n }\n if (match) {\n if (match[1]) {\n node = createFragment(selector, getElementDocument(context)).firstChild;\n while (node) {\n push$2.call(self$$1, node);\n node = node.nextSibling;\n }\n } else {\n node = getElementDocument(context).getElementById(match[2]);\n if (!node) {\n return self$$1;\n }\n if (node.id !== match[2]) {\n return self$$1.find(selector);\n }\n self$$1.length = 1;\n self$$1[0] = node;\n }\n } else {\n return DomQuery(context).find(selector);\n }\n } else {\n this.add(selector, false);\n }\n return self$$1;\n },\n toArray: function () {\n return $_4ujg4tljkmcwkbk.toArray(this);\n },\n add: function (items, sort) {\n var self$$1 = this;\n var nodes, i;\n if (isString$1(items)) {\n return self$$1.add(DomQuery(items));\n }\n if (sort !== false) {\n nodes = DomQuery.unique(self$$1.toArray().concat(DomQuery.makeArray(items)));\n self$$1.length = nodes.length;\n for (i = 0; i < nodes.length; i++) {\n self$$1[i] = nodes[i];\n }\n } else {\n push$2.apply(self$$1, DomQuery.makeArray(items));\n }\n return self$$1;\n },\n attr: function (name$$1, value) {\n var self$$1 = this;\n var hook;\n if (typeof name$$1 === 'object') {\n each$2(name$$1, function (name$$1, value) {\n self$$1.attr(name$$1, value);\n });\n } else if (isDefined(value)) {\n this.each(function () {\n var hook;\n if (this.nodeType === 1) {\n hook = attrHooks[name$$1];\n if (hook && hook.set) {\n hook.set(this, value);\n return;\n }\n if (value === null) {\n this.removeAttribute(name$$1, 2);\n } else {\n this.setAttribute(name$$1, value, 2);\n }\n }\n });\n } else {\n if (self$$1[0] && self$$1[0].nodeType === 1) {\n hook = attrHooks[name$$1];\n if (hook && hook.get) {\n return hook.get(self$$1[0], name$$1);\n }\n if (booleanMap[name$$1]) {\n return self$$1.prop(name$$1) ? name$$1 : undefined;\n }\n value = self$$1[0].getAttribute(name$$1, 2);\n if (value === null) {\n value = undefined;\n }\n }\n return value;\n }\n return self$$1;\n },\n removeAttr: function (name$$1) {\n return this.attr(name$$1, null);\n },\n prop: function (name$$1, value) {\n var self$$1 = this;\n name$$1 = propFix[name$$1] || name$$1;\n if (typeof name$$1 === 'object') {\n each$2(name$$1, function (name$$1, value) {\n self$$1.prop(name$$1, value);\n });\n } else if (isDefined(value)) {\n this.each(function () {\n if (this.nodeType === 1) {\n this[name$$1] = value;\n }\n });\n } else {\n if (self$$1[0] && self$$1[0].nodeType && name$$1 in self$$1[0]) {\n return self$$1[0][name$$1];\n }\n return value;\n }\n return self$$1;\n },\n css: function (name$$1, value) {\n var self$$1 = this;\n var elm, hook;\n var camel = function (name$$1) {\n return name$$1.replace(/-(\\D)/g, function (a, b) {\n return b.toUpperCase();\n });\n };\n var dashed = function (name$$1) {\n return name$$1.replace(/[A-Z]/g, function (a) {\n return '-' + a;\n });\n };\n if (typeof name$$1 === 'object') {\n each$2(name$$1, function (name$$1, value) {\n self$$1.css(name$$1, value);\n });\n } else {\n if (isDefined(value)) {\n name$$1 = camel(name$$1);\n if (typeof value === 'number' && !numericCssMap[name$$1]) {\n value = value.toString() + 'px';\n }\n self$$1.each(function () {\n var style = this.style;\n hook = cssHooks[name$$1];\n if (hook && hook.set) {\n hook.set(this, value);\n return;\n }\n try {\n this.style[cssFix[name$$1] || name$$1] = value;\n } catch (ex) {\n }\n if (value === null || value === '') {\n if (style.removeProperty) {\n style.removeProperty(dashed(name$$1));\n } else {\n style.removeAttribute(name$$1);\n }\n }\n });\n } else {\n elm = self$$1[0];\n hook = cssHooks[name$$1];\n if (hook && hook.get) {\n return hook.get(elm);\n }\n if (elm.ownerDocument.defaultView) {\n try {\n return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name$$1));\n } catch (ex) {\n return undefined;\n }\n } else if (elm.currentStyle) {\n return elm.currentStyle[camel(name$$1)];\n } else {\n return '';\n }\n }\n }\n return self$$1;\n },\n remove: function () {\n var self$$1 = this;\n var node, i = this.length;\n while (i--) {\n node = self$$1[i];\n Event$$1.clean(node);\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n return this;\n },\n empty: function () {\n var self$$1 = this;\n var node, i = this.length;\n while (i--) {\n node = self$$1[i];\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n }\n return this;\n },\n html: function (value) {\n var self$$1 = this;\n var i;\n if (isDefined(value)) {\n i = self$$1.length;\n try {\n while (i--) {\n self$$1[i].innerHTML = value;\n }\n } catch (ex) {\n DomQuery(self$$1[i]).empty().append(value);\n }\n return self$$1;\n }\n return self$$1[0] ? self$$1[0].innerHTML : '';\n },\n text: function (value) {\n var self$$1 = this;\n var i;\n if (isDefined(value)) {\n i = self$$1.length;\n while (i--) {\n if ('innerText' in self$$1[i]) {\n self$$1[i].innerText = value;\n } else {\n self$$1[0].textContent = value;\n }\n }\n return self$$1;\n }\n return self$$1[0] ? self$$1[0].innerText || self$$1[0].textContent : '';\n },\n append: function () {\n return domManipulate(this, arguments, function (node) {\n if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\n this.appendChild(node);\n }\n });\n },\n prepend: function () {\n return domManipulate(this, arguments, function (node) {\n if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\n this.insertBefore(node, this.firstChild);\n }\n }, true);\n },\n before: function () {\n var self$$1 = this;\n if (self$$1[0] && self$$1[0].parentNode) {\n return domManipulate(self$$1, arguments, function (node) {\n this.parentNode.insertBefore(node, this);\n });\n }\n return self$$1;\n },\n after: function () {\n var self$$1 = this;\n if (self$$1[0] && self$$1[0].parentNode) {\n return domManipulate(self$$1, arguments, function (node) {\n this.parentNode.insertBefore(node, this.nextSibling);\n }, true);\n }\n return self$$1;\n },\n appendTo: function (val) {\n DomQuery(val).append(this);\n return this;\n },\n prependTo: function (val) {\n DomQuery(val).prepend(this);\n return this;\n },\n replaceWith: function (content) {\n return this.before(content).remove();\n },\n wrap: function (content) {\n return wrap(this, content);\n },\n wrapAll: function (content) {\n return wrap(this, content, true);\n },\n wrapInner: function (content) {\n this.each(function () {\n DomQuery(this).contents().wrapAll(content);\n });\n return this;\n },\n unwrap: function () {\n return this.parent().each(function () {\n DomQuery(this).replaceWith(this.childNodes);\n });\n },\n clone: function () {\n var result = [];\n this.each(function () {\n result.push(this.cloneNode(true));\n });\n return DomQuery(result);\n },\n addClass: function (className) {\n return this.toggleClass(className, true);\n },\n removeClass: function (className) {\n return this.toggleClass(className, false);\n },\n toggleClass: function (className, state) {\n var self$$1 = this;\n if (typeof className !== 'string') {\n return self$$1;\n }\n if (className.indexOf(' ') !== -1) {\n each$2(className.split(' '), function () {\n self$$1.toggleClass(this, state);\n });\n } else {\n self$$1.each(function (index, node) {\n var existingClassName, classState;\n classState = hasClass(node, className);\n if (classState !== state) {\n existingClassName = node.className;\n if (classState) {\n node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' '));\n } else {\n node.className += existingClassName ? ' ' + className : className;\n }\n }\n });\n }\n return self$$1;\n },\n hasClass: function (className) {\n return hasClass(this[0], className);\n },\n each: function (callback) {\n return each$2(this, callback);\n },\n on: function (name$$1, callback) {\n return this.each(function () {\n Event$$1.bind(this, name$$1, callback);\n });\n },\n off: function (name$$1, callback) {\n return this.each(function () {\n Event$$1.unbind(this, name$$1, callback);\n });\n },\n trigger: function (name$$1) {\n return this.each(function () {\n if (typeof name$$1 === 'object') {\n Event$$1.fire(this, name$$1.type, name$$1);\n } else {\n Event$$1.fire(this, name$$1);\n }\n });\n },\n show: function () {\n return this.css('display', '');\n },\n hide: function () {\n return this.css('display', 'none');\n },\n slice: function () {\n return new DomQuery(slice$2.apply(this, arguments));\n },\n eq: function (index) {\n return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n find: function (selector) {\n var i, l;\n var ret = [];\n for (i = 0, l = this.length; i < l; i++) {\n DomQuery.find(selector, this[i], ret);\n }\n return DomQuery(ret);\n },\n filter: function (selector) {\n if (typeof selector === 'function') {\n return DomQuery(grep(this.toArray(), function (item, i) {\n return selector(i, item);\n }));\n }\n return DomQuery(DomQuery.filter(selector, this.toArray()));\n },\n closest: function (selector) {\n var result = [];\n if (selector instanceof DomQuery) {\n selector = selector[0];\n }\n this.each(function (i, node) {\n while (node) {\n if (typeof selector === 'string' && DomQuery(node).is(selector)) {\n result.push(node);\n break;\n } else if (node === selector) {\n result.push(node);\n break;\n }\n node = node.parentNode;\n }\n });\n return DomQuery(result);\n },\n offset: function (offset) {\n var elm, doc, docElm;\n var x = 0, y = 0, pos;\n if (!offset) {\n elm = this[0];\n if (elm) {\n doc = elm.ownerDocument;\n docElm = doc.documentElement;\n if (elm.getBoundingClientRect) {\n pos = elm.getBoundingClientRect();\n x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;\n y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;\n }\n }\n return {\n left: x,\n top: y\n };\n }\n return this.css(offset);\n },\n push: push$2,\n sort: [].sort,\n splice: [].splice\n };\n $_4ujg4tljkmcwkbk.extend(DomQuery, {\n extend: $_4ujg4tljkmcwkbk.extend,\n makeArray: function (object) {\n if (isWindow(object) || object.nodeType) {\n return [object];\n }\n return $_4ujg4tljkmcwkbk.toArray(object);\n },\n inArray: inArray,\n isArray: $_4ujg4tljkmcwkbk.isArray,\n each: each$2,\n trim: trim$1,\n grep: grep,\n find: Sizzle,\n expr: Sizzle.selectors,\n unique: Sizzle.uniqueSort,\n text: Sizzle.getText,\n contains: Sizzle.contains,\n filter: function (expr, elems, not) {\n var i = elems.length;\n if (not) {\n expr = ':not(' + expr + ')';\n }\n while (i--) {\n if (elems[i].nodeType !== 1) {\n elems.splice(i, 1);\n }\n }\n if (elems.length === 1) {\n elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];\n } else {\n elems = DomQuery.find.matches(expr, elems);\n }\n return elems;\n }\n });\n var dir = function (el, prop, until) {\n var matched = [];\n var cur = el[prop];\n if (typeof until !== 'string' && until instanceof DomQuery) {\n until = until[0];\n }\n while (cur && cur.nodeType !== 9) {\n if (until !== undefined) {\n if (cur === until) {\n break;\n }\n if (typeof until === 'string' && DomQuery(cur).is(until)) {\n break;\n }\n }\n if (cur.nodeType === 1) {\n matched.push(cur);\n }\n cur = cur[prop];\n }\n return matched;\n };\n var sibling = function (node, siblingName, nodeType, until) {\n var result = [];\n if (until instanceof DomQuery) {\n until = until[0];\n }\n for (; node; node = node[siblingName]) {\n if (nodeType && node.nodeType !== nodeType) {\n continue;\n }\n if (until !== undefined) {\n if (node === until) {\n break;\n }\n if (typeof until === 'string' && DomQuery(node).is(until)) {\n break;\n }\n }\n result.push(node);\n }\n return result;\n };\n var firstSibling = function (node, siblingName, nodeType) {\n for (node = node[siblingName]; node; node = node[siblingName]) {\n if (node.nodeType === nodeType) {\n return node;\n }\n }\n return null;\n };\n each$2({\n parent: function (node) {\n var parent$$1 = node.parentNode;\n return parent$$1 && parent$$1.nodeType !== 11 ? parent$$1 : null;\n },\n parents: function (node) {\n return dir(node, 'parentNode');\n },\n next: function (node) {\n return firstSibling(node, 'nextSibling', 1);\n },\n prev: function (node) {\n return firstSibling(node, 'previousSibling', 1);\n },\n children: function (node) {\n return sibling(node.firstChild, 'nextSibling', 1);\n },\n contents: function (node) {\n return $_4ujg4tljkmcwkbk.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes);\n }\n }, function (name$$1, fn) {\n DomQuery.fn[name$$1] = function (selector) {\n var self$$1 = this;\n var result = [];\n self$$1.each(function () {\n var nodes = fn.call(result, this, selector, result);\n if (nodes) {\n if (DomQuery.isArray(nodes)) {\n result.push.apply(result, nodes);\n } else {\n result.push(nodes);\n }\n }\n });\n if (this.length > 1) {\n if (!skipUniques[name$$1]) {\n result = DomQuery.unique(result);\n }\n if (name$$1.indexOf('parents') === 0) {\n result = result.reverse();\n }\n }\n result = DomQuery(result);\n if (selector) {\n return result.filter(selector);\n }\n return result;\n };\n });\n each$2({\n parentsUntil: function (node, until) {\n return dir(node, 'parentNode', until);\n },\n nextUntil: function (node, until) {\n return sibling(node, 'nextSibling', 1, until).slice(1);\n },\n prevUntil: function (node, until) {\n return sibling(node, 'previousSibling', 1, until).slice(1);\n }\n }, function (name$$1, fn) {\n DomQuery.fn[name$$1] = function (selector, filter) {\n var self$$1 = this;\n var result = [];\n self$$1.each(function () {\n var nodes = fn.call(result, this, selector, result);\n if (nodes) {\n if (DomQuery.isArray(nodes)) {\n result.push.apply(result, nodes);\n } else {\n result.push(nodes);\n }\n }\n });\n if (this.length > 1) {\n result = DomQuery.unique(result);\n if (name$$1.indexOf('parents') === 0 || name$$1 === 'prevUntil') {\n result = result.reverse();\n }\n }\n result = DomQuery(result);\n if (filter) {\n return result.filter(filter);\n }\n return result;\n };\n });\n DomQuery.fn.is = function (selector) {\n return !!selector && this.filter(selector).length > 0;\n };\n DomQuery.fn.init.prototype = DomQuery.fn;\n DomQuery.overrideDefaults = function (callback) {\n var defaults;\n var sub = function (selector, context) {\n defaults = defaults || callback();\n if (arguments.length === 0) {\n selector = defaults.element;\n }\n if (!context) {\n context = defaults.context;\n }\n return new sub.fn.init(selector, context);\n };\n DomQuery.extend(sub, this);\n return sub;\n };\n var appendHooks = function (targetHooks, prop, hooks) {\n each$2(hooks, function (name$$1, func) {\n targetHooks[name$$1] = targetHooks[name$$1] || {};\n targetHooks[name$$1][prop] = func;\n });\n };\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 8) {\n appendHooks(attrHooks, 'get', {\n maxlength: function (elm) {\n var value = elm.maxLength;\n if (value === 2147483647) {\n return undefined;\n }\n return value;\n },\n size: function (elm) {\n var value = elm.size;\n if (value === 20) {\n return undefined;\n }\n return value;\n },\n class: function (elm) {\n return elm.className;\n },\n style: function (elm) {\n var value = elm.style.cssText;\n if (value.length === 0) {\n return undefined;\n }\n return value;\n }\n });\n appendHooks(attrHooks, 'set', {\n class: function (elm, value) {\n elm.className = value;\n },\n style: function (elm, value) {\n elm.style.cssText = value;\n }\n });\n }\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 9) {\n cssFix.float = 'styleFloat';\n appendHooks(cssHooks, 'set', {\n opacity: function (elm, value) {\n var style = elm.style;\n if (value === null || value === '') {\n style.removeAttribute('filter');\n } else {\n style.zoom = 1;\n style.filter = 'alpha(opacity=' + value * 100 + ')';\n }\n }\n });\n }\n DomQuery.attrHooks = attrHooks;\n DomQuery.cssHooks = cssHooks;\n\n var cached = function (f) {\n var called = false;\n var r;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n r = f.apply(null, args);\n }\n return r;\n };\n };\n\n var firstMatch = function (regexes, s) {\n for (var i = 0; i < regexes.length; i++) {\n var x = regexes[i];\n if (x.test(s))\n return x;\n }\n return undefined;\n };\n var find$2 = function (regexes, agent) {\n var r = firstMatch(regexes, agent);\n if (!r)\n return {\n major: 0,\n minor: 0\n };\n var group = function (i) {\n return Number(agent.replace(r, '$' + i));\n };\n return nu(group(1), group(2));\n };\n var detect = function (versionRegexes, agent) {\n var cleanedAgent = String(agent).toLowerCase();\n if (versionRegexes.length === 0)\n return unknown();\n return find$2(versionRegexes, cleanedAgent);\n };\n var unknown = function () {\n return nu(0, 0);\n };\n var nu = function (major, minor) {\n return {\n major: major,\n minor: minor\n };\n };\n var $_2kio3msjkmcwkcv = {\n nu: nu,\n detect: detect,\n unknown: unknown\n };\n\n var edge = 'Edge';\n var chrome = 'Chrome';\n var ie$1 = 'IE';\n var opera$1 = 'Opera';\n var firefox = 'Firefox';\n var safari = 'Safari';\n var isBrowser = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$1 = function () {\n return nu$1({\n current: undefined,\n version: $_2kio3msjkmcwkcv.unknown()\n });\n };\n var nu$1 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isEdge: isBrowser(edge, current),\n isChrome: isBrowser(chrome, current),\n isIE: isBrowser(ie$1, current),\n isOpera: isBrowser(opera$1, current),\n isFirefox: isBrowser(firefox, current),\n isSafari: isBrowser(safari, current)\n };\n };\n var $_ei4lq0rjkmcwkcq = {\n unknown: unknown$1,\n nu: nu$1,\n edge: constant(edge),\n chrome: constant(chrome),\n ie: constant(ie$1),\n opera: constant(opera$1),\n firefox: constant(firefox),\n safari: constant(safari)\n };\n\n var windows = 'Windows';\n var ios = 'iOS';\n var android$1 = 'Android';\n var linux = 'Linux';\n var osx = 'OSX';\n var solaris = 'Solaris';\n var freebsd = 'FreeBSD';\n var isOS = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$2 = function () {\n return nu$2({\n current: undefined,\n version: $_2kio3msjkmcwkcv.unknown()\n });\n };\n var nu$2 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isWindows: isOS(windows, current),\n isiOS: isOS(ios, current),\n isAndroid: isOS(android$1, current),\n isOSX: isOS(osx, current),\n isLinux: isOS(linux, current),\n isSolaris: isOS(solaris, current),\n isFreeBSD: isOS(freebsd, current)\n };\n };\n var $_85w4ndtjkmcwkcx = {\n unknown: unknown$2,\n nu: nu$2,\n windows: constant(windows),\n ios: constant(ios),\n android: constant(android$1),\n linux: constant(linux),\n osx: constant(osx),\n solaris: constant(solaris),\n freebsd: constant(freebsd)\n };\n\n function DeviceType (os, browser, userAgent) {\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n var isiPhone = os.isiOS() && !isiPad;\n var isAndroid3 = os.isAndroid() && os.version.major === 3;\n var isAndroid4 = os.isAndroid() && os.version.major === 4;\n var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n var isTouch = os.isiOS() || os.isAndroid();\n var isPhone = isTouch && !isTablet;\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n return {\n isiPad: constant(isiPad),\n isiPhone: constant(isiPhone),\n isTablet: constant(isTablet),\n isPhone: constant(isPhone),\n isTouch: constant(isTouch),\n isAndroid: os.isAndroid,\n isiOS: os.isiOS,\n isWebView: constant(iOSwebview)\n };\n }\n\n var detect$1 = function (candidates, userAgent) {\n var agent = String(userAgent).toLowerCase();\n return find(candidates, function (candidate) {\n return candidate.search(agent);\n });\n };\n var detectBrowser = function (browsers, userAgent) {\n return detect$1(browsers, userAgent).map(function (browser) {\n var version = $_2kio3msjkmcwkcv.detect(browser.versionRegexes, userAgent);\n return {\n current: browser.name,\n version: version\n };\n });\n };\n var detectOs = function (oses, userAgent) {\n return detect$1(oses, userAgent).map(function (os) {\n var version = $_2kio3msjkmcwkcv.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version: version\n };\n });\n };\n var $_6qxoukvjkmcwkd5 = {\n detectBrowser: detectBrowser,\n detectOs: detectOs\n };\n\n var contains$2 = function (str, substr) {\n return str.indexOf(substr) !== -1;\n };\n\n\n\n var trim$2 = function (str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n };\n\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n var checkContains = function (target) {\n return function (uastring) {\n return contains$2(uastring, target);\n };\n };\n var browsers = [\n {\n name: 'Edge',\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n search: function (uastring) {\n var monstrosity = contains$2(uastring, 'edge/') && contains$2(uastring, 'chrome') && contains$2(uastring, 'safari') && contains$2(uastring, 'applewebkit');\n return monstrosity;\n }\n },\n {\n name: 'Chrome',\n versionRegexes: [\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n normalVersionRegex\n ],\n search: function (uastring) {\n return contains$2(uastring, 'chrome') && !contains$2(uastring, 'chromeframe');\n }\n },\n {\n name: 'IE',\n versionRegexes: [\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*?rv:([0-9]+)\\.([0-9]+).*/\n ],\n search: function (uastring) {\n return contains$2(uastring, 'msie') || contains$2(uastring, 'trident');\n }\n },\n {\n name: 'Opera',\n versionRegexes: [\n normalVersionRegex,\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n ],\n search: checkContains('opera')\n },\n {\n name: 'Firefox',\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n search: checkContains('firefox')\n },\n {\n name: 'Safari',\n versionRegexes: [\n normalVersionRegex,\n /.*?cpu os ([0-9]+)_([0-9]+).*/\n ],\n search: function (uastring) {\n return (contains$2(uastring, 'safari') || contains$2(uastring, 'mobile/')) && contains$2(uastring, 'applewebkit');\n }\n }\n ];\n var oses = [\n {\n name: 'Windows',\n search: checkContains('win'),\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'iOS',\n search: function (uastring) {\n return contains$2(uastring, 'iphone') || contains$2(uastring, 'ipad');\n },\n versionRegexes: [\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*cpu os ([0-9]+)_([0-9]+).*/,\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n ]\n },\n {\n name: 'Android',\n search: checkContains('android'),\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'OSX',\n search: checkContains('os x'),\n versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n },\n {\n name: 'Linux',\n search: checkContains('linux'),\n versionRegexes: []\n },\n {\n name: 'Solaris',\n search: checkContains('sunos'),\n versionRegexes: []\n },\n {\n name: 'FreeBSD',\n search: checkContains('freebsd'),\n versionRegexes: []\n }\n ];\n var $_6vxr68wjkmcwkdc = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n\n var detect$2 = function (userAgent) {\n var browsers = $_6vxr68wjkmcwkdc.browsers();\n var oses = $_6vxr68wjkmcwkdc.oses();\n var browser = $_6qxoukvjkmcwkd5.detectBrowser(browsers, userAgent).fold($_ei4lq0rjkmcwkcq.unknown, $_ei4lq0rjkmcwkcq.nu);\n var os = $_6qxoukvjkmcwkd5.detectOs(oses, userAgent).fold($_85w4ndtjkmcwkcx.unknown, $_85w4ndtjkmcwkcx.nu);\n var deviceType = DeviceType(os, browser, userAgent);\n return {\n browser: browser,\n os: os,\n deviceType: deviceType\n };\n };\n var $_c5ox8vqjkmcwkco = { detect: detect$2 };\n\n var detect$3 = cached(function () {\n var userAgent = navigator.userAgent;\n return $_c5ox8vqjkmcwkco.detect(userAgent);\n });\n var $_b1ykk4ojkmcwkcj = { detect: detect$3 };\n\n var fromHtml = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\n console.error('HTML does not have a single root node', html);\n throw 'HTML must have a single root node';\n }\n return fromDom(div.childNodes[0]);\n };\n var fromTag = function (tag, scope) {\n var doc = scope || document;\n var node = doc.createElement(tag);\n return fromDom(node);\n };\n var fromText = function (text, scope) {\n var doc = scope || document;\n var node = doc.createTextNode(text);\n return fromDom(node);\n };\n var fromDom = function (node) {\n if (node === null || node === undefined)\n throw new Error('Node cannot be null or undefined');\n return { dom: constant(node) };\n };\n var fromPoint = function (docElm, x, y) {\n var doc = docElm.dom();\n return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n };\n var Element$$1 = {\n fromHtml: fromHtml,\n fromTag: fromTag,\n fromText: fromText,\n fromDom: fromDom,\n fromPoint: fromPoint\n };\n\n var $_c8e5uh12jkmcwke2 = {\n ATTRIBUTE: Node.ATTRIBUTE_NODE,\n CDATA_SECTION: Node.CDATA_SECTION_NODE,\n COMMENT: Node.COMMENT_NODE,\n DOCUMENT: Node.DOCUMENT_NODE,\n DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,\n ELEMENT: Node.ELEMENT_NODE,\n TEXT: Node.TEXT_NODE,\n PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,\n ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,\n ENTITY: Node.ENTITY_NODE,\n NOTATION: Node.NOTATION_NODE\n };\n\n var name = function (element) {\n var r = element.dom().nodeName;\n return r.toLowerCase();\n };\n var type = function (element) {\n return element.dom().nodeType;\n };\n var value = function (element) {\n return element.dom().nodeValue;\n };\n var isType$1 = function (t) {\n return function (element) {\n return type(element) === t;\n };\n };\n var isComment = function (element) {\n return type(element) === $_c8e5uh12jkmcwke2.COMMENT || name(element) === '#comment';\n };\n var isElement = isType$1($_c8e5uh12jkmcwke2.ELEMENT);\n var isText = isType$1($_c8e5uh12jkmcwke2.TEXT);\n var isDocument = isType$1($_c8e5uh12jkmcwke2.DOCUMENT);\n var $_2xwdjv11jkmcwke0 = {\n name: name,\n type: type,\n value: value,\n isElement: isElement,\n isText: isText,\n isDocument: isDocument,\n isComment: isComment\n };\n\n var keys = Object.keys;\n var each$3 = function (obj, f) {\n var props = keys(obj);\n for (var k = 0, len = props.length; k < len; k++) {\n var i = props[k];\n var x = obj[i];\n f(x, i, obj);\n }\n };\n var map$2 = function (obj, f) {\n return tupleMap(obj, function (x, i, obj) {\n return {\n k: i,\n v: f(x, i, obj)\n };\n });\n };\n var tupleMap = function (obj, f) {\n var r = {};\n each$3(obj, function (x, i) {\n var tuple = f(x, i, obj);\n r[tuple.k] = tuple.v;\n });\n return r;\n };\n var bifilter = function (obj, pred) {\n var t = {};\n var f = {};\n each$3(obj, function (x, i) {\n var branch = pred(x, i) ? t : f;\n branch[i] = x;\n });\n return {\n t: t,\n f: f\n };\n };\n\n var rawSet = function (dom, key, value) {\n if (isString(value) || isBoolean(value) || isNumber(value)) {\n dom.setAttribute(key, value + '');\n } else {\n console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n throw new Error('Attribute value was not simple');\n }\n };\n var set = function (element, key, value) {\n rawSet(element.dom(), key, value);\n };\n var setAll = function (element, attrs) {\n var dom = element.dom();\n each$3(attrs, function (v, k) {\n rawSet(dom, k, v);\n });\n };\n var get = function (element, key) {\n var v = element.dom().getAttribute(key);\n return v === null ? undefined : v;\n };\n var has = function (element, key) {\n var dom = element.dom();\n return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n };\n var remove = function (element, key) {\n element.dom().removeAttribute(key);\n };\n var hasNone = function (element) {\n var attrs = element.dom().attributes;\n return attrs === undefined || attrs === null || attrs.length === 0;\n };\n var clone = function (element) {\n return foldl(element.dom().attributes, function (acc, attr) {\n acc[attr.name] = attr.value;\n return acc;\n }, {});\n };\n var transferOne = function (source, destination, attr) {\n if (has(source, attr) && !has(destination, attr))\n set(destination, attr, get(source, attr));\n };\n var transfer = function (source, destination, attrs) {\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\n return;\n each(attrs, function (attr) {\n transferOne(source, destination, attr);\n });\n };\n var $_29helg15jkmcwkf0 = {\n clone: clone,\n set: set,\n setAll: setAll,\n get: get,\n has: has,\n remove: remove,\n hasNone: hasNone,\n transfer: transfer\n };\n\n var inBody = function (element) {\n var dom = $_2xwdjv11jkmcwke0.isText(element) ? element.dom().parentNode : element.dom();\n return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\n };\n var body = cached(function () {\n return getBody(Element$$1.fromDom(document));\n });\n var getBody = function (doc) {\n var body = doc.dom().body;\n if (body === null || body === undefined)\n throw 'Body is not available yet';\n return Element$$1.fromDom(body);\n };\n var $_g4uup916jkmcwkfg = {\n body: body,\n getBody: getBody,\n inBody: inBody\n };\n\n var isSupported = function (dom) {\n return dom.style !== undefined;\n };\n var $_crv2n17jkmcwkfl = { isSupported: isSupported };\n\n var internalSet = function (dom, property, value) {\n if (!isString(value)) {\n console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n throw new Error('CSS value must be a string: ' + value);\n }\n if ($_crv2n17jkmcwkfl.isSupported(dom))\n dom.style.setProperty(property, value);\n };\n var internalRemove = function (dom, property) {\n if ($_crv2n17jkmcwkfl.isSupported(dom))\n dom.style.removeProperty(property);\n };\n var set$1 = function (element, property, value) {\n var dom = element.dom();\n internalSet(dom, property, value);\n };\n var setAll$1 = function (element, css) {\n var dom = element.dom();\n each$3(css, function (v, k) {\n internalSet(dom, k, v);\n });\n };\n var setOptions = function (element, css) {\n var dom = element.dom();\n each$3(css, function (v, k) {\n v.fold(function () {\n internalRemove(dom, k);\n }, function (value) {\n internalSet(dom, k, value);\n });\n });\n };\n var get$1 = function (element, property) {\n var dom = element.dom();\n var styles = window.getComputedStyle(dom);\n var r = styles.getPropertyValue(property);\n var v = r === '' && !$_g4uup916jkmcwkfg.inBody(element) ? getUnsafeProperty(dom, property) : r;\n return v === null ? undefined : v;\n };\n var getUnsafeProperty = function (dom, property) {\n return $_crv2n17jkmcwkfl.isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n };\n var getRaw = function (element, property) {\n var dom = element.dom();\n var raw = getUnsafeProperty(dom, property);\n return Option.from(raw).filter(function (r) {\n return r.length > 0;\n });\n };\n var getAllRaw = function (element) {\n var css = {};\n var dom = element.dom();\n if ($_crv2n17jkmcwkfl.isSupported(dom)) {\n for (var i = 0; i < dom.style.length; i++) {\n var ruleName = dom.style.item(i);\n css[ruleName] = dom.style[ruleName];\n }\n }\n return css;\n };\n var isValidValue = function (tag, property, value) {\n var element = Element$$1.fromTag(tag);\n set$1(element, property, value);\n var style = getRaw(element, property);\n return style.isSome();\n };\n var remove$1 = function (element, property) {\n var dom = element.dom();\n internalRemove(dom, property);\n if ($_29helg15jkmcwkf0.has(element, 'style') && trim$2($_29helg15jkmcwkf0.get(element, 'style')) === '') {\n $_29helg15jkmcwkf0.remove(element, 'style');\n }\n };\n var preserve = function (element, f) {\n var oldStyles = $_29helg15jkmcwkf0.get(element, 'style');\n var result = f(element);\n var restore = oldStyles === undefined ? $_29helg15jkmcwkf0.remove : $_29helg15jkmcwkf0.set;\n restore(element, 'style', oldStyles);\n return result;\n };\n var copy = function (source, target) {\n var sourceDom = source.dom();\n var targetDom = target.dom();\n if ($_crv2n17jkmcwkfl.isSupported(sourceDom) && $_crv2n17jkmcwkfl.isSupported(targetDom)) {\n targetDom.style.cssText = sourceDom.style.cssText;\n }\n };\n var reflow = function (e) {\n return e.dom().offsetWidth;\n };\n var transferOne$1 = function (source, destination, style) {\n getRaw(source, style).each(function (value) {\n if (getRaw(destination, style).isNone())\n set$1(destination, style, value);\n });\n };\n var transfer$1 = function (source, destination, styles) {\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\n return;\n each(styles, function (style) {\n transferOne$1(source, destination, style);\n });\n };\n var $_4enzit13jkmcwke5 = {\n copy: copy,\n set: set$1,\n preserve: preserve,\n setAll: setAll$1,\n setOptions: setOptions,\n remove: remove$1,\n get: get$1,\n getRaw: getRaw,\n getAllRaw: getAllRaw,\n isValidValue: isValidValue,\n reflow: reflow,\n transfer: transfer$1\n };\n\n var Immutable = function () {\n var fields = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fields[_i] = arguments[_i];\n }\n return function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n if (fields.length !== values.length) {\n throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n }\n var struct = {};\n each(fields, function (name, i) {\n struct[name] = constant(values[i]);\n });\n return struct;\n };\n };\n\n var toArray$1 = function (target, f) {\n var r = [];\n var recurse = function (e) {\n r.push(e);\n return f(e);\n };\n var cur = f(target);\n do {\n cur = cur.bind(recurse);\n } while (cur.isSome());\n return r;\n };\n var $_ea405s1djkmcwkgi = { toArray: toArray$1 };\n\n var node = function () {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Node');\n return f;\n };\n var compareDocumentPosition = function (a, b, match) {\n return (a.compareDocumentPosition(b) & match) !== 0;\n };\n var documentPositionPreceding = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n };\n var documentPositionContainedBy = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n };\n var $_ggq6431fjkmcwkgt = {\n documentPositionPreceding: documentPositionPreceding,\n documentPositionContainedBy: documentPositionContainedBy\n };\n\n var ELEMENT = $_c8e5uh12jkmcwke2.ELEMENT;\n var DOCUMENT = $_c8e5uh12jkmcwke2.DOCUMENT;\n var is$1 = function (element, selector) {\n var elem = element.dom();\n if (elem.nodeType !== ELEMENT)\n return false;\n else if (elem.matches !== undefined)\n return elem.matches(selector);\n else if (elem.msMatchesSelector !== undefined)\n return elem.msMatchesSelector(selector);\n else if (elem.webkitMatchesSelector !== undefined)\n return elem.webkitMatchesSelector(selector);\n else if (elem.mozMatchesSelector !== undefined)\n return elem.mozMatchesSelector(selector);\n else\n throw new Error('Browser lacks native selectors');\n };\n var bypassSelector = function (dom) {\n return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;\n };\n var all = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n };\n var one = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n };\n var $_4jv6d81gjkmcwkgv = {\n all: all,\n is: is$1,\n one: one\n };\n\n var eq = function (e1, e2) {\n return e1.dom() === e2.dom();\n };\n var isEqualNode = function (e1, e2) {\n return e1.dom().isEqualNode(e2.dom());\n };\n var member = function (element, elements) {\n return exists(elements, curry(eq, element));\n };\n var regularContains = function (e1, e2) {\n var d1 = e1.dom(), d2 = e2.dom();\n return d1 === d2 ? false : d1.contains(d2);\n };\n var ieContains = function (e1, e2) {\n return $_ggq6431fjkmcwkgt.documentPositionContainedBy(e1.dom(), e2.dom());\n };\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\n var contains$3 = browser.isIE() ? ieContains : regularContains;\n var $_e4hu6h1ejkmcwkgj = {\n eq: eq,\n isEqualNode: isEqualNode,\n member: member,\n contains: contains$3,\n is: $_4jv6d81gjkmcwkgv.is\n };\n\n var owner = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument);\n };\n var documentElement = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument.documentElement);\n };\n var defaultView = function (element) {\n var el = element.dom();\n var defaultView = el.ownerDocument.defaultView;\n return Element$$1.fromDom(defaultView);\n };\n var parent = function (element) {\n var dom = element.dom();\n return Option.from(dom.parentNode).map(Element$$1.fromDom);\n };\n var findIndex$2 = function (element) {\n return parent(element).bind(function (p) {\n var kin = children(p);\n return findIndex(kin, function (elem) {\n return $_e4hu6h1ejkmcwkgj.eq(element, elem);\n });\n });\n };\n var parents = function (element, isRoot) {\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n var dom = element.dom();\n var ret = [];\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\n var rawParent = dom.parentNode;\n var parent = Element$$1.fromDom(rawParent);\n ret.push(parent);\n if (stop(parent) === true)\n break;\n else\n dom = rawParent;\n }\n return ret;\n };\n var siblings = function (element) {\n var filterSelf = function (elements) {\n return filter(elements, function (x) {\n return !$_e4hu6h1ejkmcwkgj.eq(element, x);\n });\n };\n return parent(element).map(children).map(filterSelf).getOr([]);\n };\n var offsetParent = function (element) {\n var dom = element.dom();\n return Option.from(dom.offsetParent).map(Element$$1.fromDom);\n };\n var prevSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.previousSibling).map(Element$$1.fromDom);\n };\n var nextSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.nextSibling).map(Element$$1.fromDom);\n };\n var prevSiblings = function (element) {\n return reverse($_ea405s1djkmcwkgi.toArray(element, prevSibling));\n };\n var nextSiblings = function (element) {\n return $_ea405s1djkmcwkgi.toArray(element, nextSibling);\n };\n var children = function (element) {\n var dom = element.dom();\n return map(dom.childNodes, Element$$1.fromDom);\n };\n var child = function (element, index) {\n var children = element.dom().childNodes;\n return Option.from(children[index]).map(Element$$1.fromDom);\n };\n var firstChild = function (element) {\n return child(element, 0);\n };\n var lastChild = function (element) {\n return child(element, element.dom().childNodes.length - 1);\n };\n var childNodesCount = function (element) {\n return element.dom().childNodes.length;\n };\n var hasChildNodes = function (element) {\n return element.dom().hasChildNodes();\n };\n var spot = Immutable('element', 'offset');\n var leaf = function (element, offset) {\n var cs = children(element);\n return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\n };\n var $_ca6pc118jkmcwkfs = {\n owner: owner,\n defaultView: defaultView,\n documentElement: documentElement,\n parent: parent,\n findIndex: findIndex$2,\n parents: parents,\n siblings: siblings,\n prevSibling: prevSibling,\n offsetParent: offsetParent,\n prevSiblings: prevSiblings,\n nextSibling: nextSibling,\n nextSiblings: nextSiblings,\n children: children,\n child: child,\n firstChild: firstChild,\n lastChild: lastChild,\n childNodesCount: childNodesCount,\n hasChildNodes: hasChildNodes,\n leaf: leaf\n };\n\n var browser$1 = $_b1ykk4ojkmcwkcj.detect().browser;\n var firstElement = function (nodes) {\n return find(nodes, $_2xwdjv11jkmcwke0.isElement);\n };\n var getTableCaptionDeltaY = function (elm) {\n if (browser$1.isFirefox() && $_2xwdjv11jkmcwke0.name(elm) === 'table') {\n return firstElement($_ca6pc118jkmcwkfs.children(elm)).filter(function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\n }).bind(function (caption) {\n return firstElement($_ca6pc118jkmcwkfs.nextSiblings(caption)).map(function (body) {\n var bodyTop = body.dom().offsetTop;\n var captionTop = caption.dom().offsetTop;\n var captionHeight = caption.dom().offsetHeight;\n return bodyTop <= captionTop ? -captionHeight : 0;\n });\n }).getOr(0);\n } else {\n return 0;\n }\n };\n var getPos = function (body, elm, rootElm) {\n var x = 0, y = 0, offsetParent;\n var doc = body.ownerDocument;\n var pos;\n rootElm = rootElm ? rootElm : body;\n if (elm) {\n if (rootElm === body && elm.getBoundingClientRect && $_4enzit13jkmcwke5.get(Element$$1.fromDom(body), 'position') === 'static') {\n pos = elm.getBoundingClientRect();\n x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;\n y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;\n return {\n x: x,\n y: y\n };\n }\n offsetParent = elm;\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\n x += offsetParent.offsetLeft || 0;\n y += offsetParent.offsetTop || 0;\n offsetParent = offsetParent.offsetParent;\n }\n offsetParent = elm.parentNode;\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\n x -= offsetParent.scrollLeft || 0;\n y -= offsetParent.scrollTop || 0;\n offsetParent = offsetParent.parentNode;\n }\n y += getTableCaptionDeltaY(Element$$1.fromDom(elm));\n }\n return {\n x: x,\n y: y\n };\n };\n var $_5o0xi0njkmcwkbz = { getPos: getPos };\n\n var nu$3 = function (baseFn) {\n var data = Option.none();\n var callbacks = [];\n var map$$1 = function (f) {\n return nu$3(function (nCallback) {\n get(function (data) {\n nCallback(f(data));\n });\n });\n };\n var get = function (nCallback) {\n if (isReady())\n call(nCallback);\n else\n callbacks.push(nCallback);\n };\n var set = function (x) {\n data = Option.some(x);\n run(callbacks);\n callbacks = [];\n };\n var isReady = function () {\n return data.isSome();\n };\n var run = function (cbs) {\n each(cbs, call);\n };\n var call = function (cb) {\n data.each(function (x) {\n setTimeout(function () {\n cb(x);\n }, 0);\n });\n };\n baseFn(set);\n return {\n get: get,\n map: map$$1,\n isReady: isReady\n };\n };\n var pure$1 = function (a) {\n return nu$3(function (callback) {\n callback(a);\n });\n };\n var LazyValue = {\n nu: nu$3,\n pure: pure$1\n };\n\n var bounce = function (f) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var me = this;\n setTimeout(function () {\n f.apply(me, args);\n }, 0);\n };\n };\n\n var nu$4 = function (baseFn) {\n var get = function (callback) {\n baseFn(bounce(callback));\n };\n var map = function (fab) {\n return nu$4(function (callback) {\n get(function (a) {\n var value = fab(a);\n callback(value);\n });\n });\n };\n var bind = function (aFutureB) {\n return nu$4(function (callback) {\n get(function (a) {\n aFutureB(a).get(callback);\n });\n });\n };\n var anonBind = function (futureB) {\n return nu$4(function (callback) {\n get(function (a) {\n futureB.get(callback);\n });\n });\n };\n var toLazy = function () {\n return LazyValue.nu(get);\n };\n return {\n map: map,\n bind: bind,\n anonBind: anonBind,\n toLazy: toLazy,\n get: get\n };\n };\n var pure$2 = function (a) {\n return nu$4(function (callback) {\n callback(a);\n });\n };\n var Future = {\n nu: nu$4,\n pure: pure$2\n };\n\n var par = function (asyncValues, nu) {\n return nu(function (callback) {\n var r = [];\n var count = 0;\n var cb = function (i) {\n return function (value) {\n r[i] = value;\n count++;\n if (count >= asyncValues.length) {\n callback(r);\n }\n };\n };\n if (asyncValues.length === 0) {\n callback([]);\n } else {\n each(asyncValues, function (asyncValue, i) {\n asyncValue.get(cb(i));\n });\n }\n });\n };\n\n var par$1 = function (futures) {\n return par(futures, Future.nu);\n };\n\n var value$1 = function (o) {\n var is = function (v) {\n return o === v;\n };\n var or = function (opt) {\n return value$1(o);\n };\n var orThunk = function (f) {\n return value$1(o);\n };\n var map = function (f) {\n return value$1(f(o));\n };\n var each = function (f) {\n f(o);\n };\n var bind = function (f) {\n return f(o);\n };\n var fold = function (_, onValue) {\n return onValue(o);\n };\n var exists = function (f) {\n return f(o);\n };\n var forall = function (f) {\n return f(o);\n };\n var toOption = function () {\n return Option.some(o);\n };\n return {\n is: is,\n isValue: always,\n isError: never,\n getOr: constant(o),\n getOrThunk: constant(o),\n getOrDie: constant(o),\n or: or,\n orThunk: orThunk,\n fold: fold,\n map: map,\n each: each,\n bind: bind,\n exists: exists,\n forall: forall,\n toOption: toOption\n };\n };\n var error = function (message) {\n var getOrThunk = function (f) {\n return f();\n };\n var getOrDie = function () {\n return die(String(message))();\n };\n var or = function (opt) {\n return opt;\n };\n var orThunk = function (f) {\n return f();\n };\n var map = function (f) {\n return error(message);\n };\n var bind = function (f) {\n return error(message);\n };\n var fold = function (onError, _) {\n return onError(message);\n };\n return {\n is: never,\n isValue: never,\n isError: always,\n getOr: identity,\n getOrThunk: getOrThunk,\n getOrDie: getOrDie,\n or: or,\n orThunk: orThunk,\n fold: fold,\n map: map,\n each: noop,\n bind: bind,\n exists: never,\n forall: always,\n toOption: Option.none\n };\n };\n var Result = {\n value: value$1,\n error: error\n };\n\n function StyleSheetLoader(document$$1, settings) {\n var idCount = 0;\n var loadedStates = {};\n var maxLoadTime;\n settings = settings || {};\n maxLoadTime = settings.maxLoadTime || 5000;\n var appendToHead = function (node) {\n document$$1.getElementsByTagName('head')[0].appendChild(node);\n };\n var load = function (url, loadedCallback, errorCallback) {\n var link, style, startTime, state;\n var passed = function () {\n var callbacks = state.passed;\n var i = callbacks.length;\n while (i--) {\n callbacks[i]();\n }\n state.status = 2;\n state.passed = [];\n state.failed = [];\n };\n var failed = function () {\n var callbacks = state.failed;\n var i = callbacks.length;\n while (i--) {\n callbacks[i]();\n }\n state.status = 3;\n state.passed = [];\n state.failed = [];\n };\n var isOldWebKit = function () {\n var webKitChunks = navigator.userAgent.match(/WebKit\\/(\\d*)/);\n return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536);\n };\n var wait = function (testCallback, waitCallback) {\n if (!testCallback()) {\n if (new Date().getTime() - startTime < maxLoadTime) {\n $_3l01gcijkmcwk99.setTimeout(waitCallback);\n } else {\n failed();\n }\n }\n };\n var waitForWebKitLinkLoaded = function () {\n wait(function () {\n var styleSheets = document$$1.styleSheets;\n var styleSheet, i = styleSheets.length, owner;\n while (i--) {\n styleSheet = styleSheets[i];\n owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;\n if (owner && owner.id === link.id) {\n passed();\n return true;\n }\n }\n }, waitForWebKitLinkLoaded);\n };\n var waitForGeckoLinkLoaded = function () {\n wait(function () {\n try {\n var cssRules = style.sheet.cssRules;\n passed();\n return !!cssRules;\n } catch (ex) {\n }\n }, waitForGeckoLinkLoaded);\n };\n url = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\n if (!loadedStates[url]) {\n state = {\n passed: [],\n failed: []\n };\n loadedStates[url] = state;\n } else {\n state = loadedStates[url];\n }\n if (loadedCallback) {\n state.passed.push(loadedCallback);\n }\n if (errorCallback) {\n state.failed.push(errorCallback);\n }\n if (state.status === 1) {\n return;\n }\n if (state.status === 2) {\n passed();\n return;\n }\n if (state.status === 3) {\n failed();\n return;\n }\n state.status = 1;\n link = document$$1.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.id = 'u' + idCount++;\n link.async = false;\n link.defer = false;\n startTime = new Date().getTime();\n if ('onload' in link && !isOldWebKit()) {\n link.onload = waitForWebKitLinkLoaded;\n link.onerror = failed;\n } else {\n if (navigator.userAgent.indexOf('Firefox') > 0) {\n style = document$$1.createElement('style');\n style.textContent = '@import \"' + url + '\"';\n waitForGeckoLinkLoaded();\n appendToHead(style);\n return;\n }\n waitForWebKitLinkLoaded();\n }\n appendToHead(link);\n link.href = url;\n };\n var loadF = function (url) {\n return Future.nu(function (resolve) {\n load(url, compose(resolve, constant(Result.value(url))), compose(resolve, constant(Result.error(url))));\n });\n };\n var unbox = function (result) {\n return result.fold(identity, identity);\n };\n var loadAll = function (urls, success, failure) {\n par$1(map(urls, loadF)).get(function (result) {\n var parts = partition(result, function (r) {\n return r.isValue();\n });\n if (parts.fail.length > 0) {\n failure(parts.fail.map(unbox));\n } else {\n success(parts.pass.map(unbox));\n }\n });\n };\n return {\n load: load,\n loadAll: loadAll\n };\n }\n\n function TreeWalker (startNode, rootNode) {\n var node = startNode;\n var findSibling = function (node, startName, siblingName, shallow) {\n var sibling, parent;\n if (node) {\n if (!shallow && node[startName]) {\n return node[startName];\n }\n if (node !== rootNode) {\n sibling = node[siblingName];\n if (sibling) {\n return sibling;\n }\n for (parent = node.parentNode; parent && parent !== rootNode; parent = parent.parentNode) {\n sibling = parent[siblingName];\n if (sibling) {\n return sibling;\n }\n }\n }\n }\n };\n var findPreviousNode = function (node, startName, siblingName, shallow) {\n var sibling, parent, child;\n if (node) {\n sibling = node[siblingName];\n if (rootNode && sibling === rootNode) {\n return;\n }\n if (sibling) {\n if (!shallow) {\n for (child = sibling[startName]; child; child = child[startName]) {\n if (!child[startName]) {\n return child;\n }\n }\n }\n return sibling;\n }\n parent = node.parentNode;\n if (parent && parent !== rootNode) {\n return parent;\n }\n }\n };\n this.current = function () {\n return node;\n };\n this.next = function (shallow) {\n node = findSibling(node, 'firstChild', 'nextSibling', shallow);\n return node;\n };\n this.prev = function (shallow) {\n node = findSibling(node, 'lastChild', 'previousSibling', shallow);\n return node;\n };\n this.prev2 = function (shallow) {\n node = findPreviousNode(node, 'lastChild', 'previousSibling', shallow);\n return node;\n };\n }\n\n var blocks = [\n 'article',\n 'aside',\n 'details',\n 'div',\n 'dt',\n 'figcaption',\n 'footer',\n 'form',\n 'fieldset',\n 'header',\n 'hgroup',\n 'html',\n 'main',\n 'nav',\n 'section',\n 'summary',\n 'body',\n 'p',\n 'dl',\n 'multicol',\n 'dd',\n 'figure',\n 'address',\n 'center',\n 'blockquote',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'listing',\n 'xmp',\n 'pre',\n 'plaintext',\n 'menu',\n 'dir',\n 'ul',\n 'ol',\n 'li',\n 'hr',\n 'table',\n 'tbody',\n 'thead',\n 'tfoot',\n 'th',\n 'tr',\n 'td',\n 'caption'\n ];\n var voids = [\n 'area',\n 'base',\n 'basefont',\n 'br',\n 'col',\n 'frame',\n 'hr',\n 'img',\n 'input',\n 'isindex',\n 'link',\n 'meta',\n 'param',\n 'embed',\n 'source',\n 'wbr',\n 'track'\n ];\n var tableCells = [\n 'td',\n 'th'\n ];\n var tableSections = [\n 'thead',\n 'tbody',\n 'tfoot'\n ];\n var textBlocks = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n 'div',\n 'address',\n 'pre',\n 'form',\n 'blockquote',\n 'center',\n 'dir',\n 'fieldset',\n 'header',\n 'footer',\n 'article',\n 'section',\n 'hgroup',\n 'aside',\n 'nav',\n 'figure'\n ];\n var headings = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6'\n ];\n var listItems = [\n 'li',\n 'dd',\n 'dt'\n ];\n var lists = [\n 'ul',\n 'ol',\n 'dl'\n ];\n var wsElements = [\n 'pre',\n 'script',\n 'textarea',\n 'style'\n ];\n var lazyLookup = function (items) {\n var lookup;\n return function (node) {\n lookup = lookup ? lookup : mapToObject(items, constant(true));\n return lookup.hasOwnProperty($_2xwdjv11jkmcwke0.name(node));\n };\n };\n var isHeading = lazyLookup(headings);\n var isBlock = lazyLookup(blocks);\n var isInline = function (node) {\n return $_2xwdjv11jkmcwke0.isElement(node) && !isBlock(node);\n };\n var isBr = function (node) {\n return $_2xwdjv11jkmcwke0.isElement(node) && $_2xwdjv11jkmcwke0.name(node) === 'br';\n };\n var isTextBlock = lazyLookup(textBlocks);\n var isList = lazyLookup(lists);\n var isListItem = lazyLookup(listItems);\n var isVoid = lazyLookup(voids);\n var isTableSection = lazyLookup(tableSections);\n var isTableCell = lazyLookup(tableCells);\n var isWsPreserveElement = lazyLookup(wsElements);\n\n var isNodeType = function (type) {\n return function (node) {\n return !!node && node.nodeType === type;\n };\n };\n var isElement$1 = isNodeType(1);\n var matchNodeNames = function (names) {\n var items = names.toLowerCase().split(' ');\n return function (node) {\n var i, name;\n if (node && node.nodeType) {\n name = node.nodeName.toLowerCase();\n for (i = 0; i < items.length; i++) {\n if (name === items[i]) {\n return true;\n }\n }\n }\n return false;\n };\n };\n var matchStyleValues = function (name, values) {\n var items = values.toLowerCase().split(' ');\n return function (node) {\n var i, cssValue;\n if (isElement$1(node)) {\n for (i = 0; i < items.length; i++) {\n var computed = node.ownerDocument.defaultView.getComputedStyle(node, null);\n cssValue = computed ? computed.getPropertyValue(name) : null;\n if (cssValue === items[i]) {\n return true;\n }\n }\n }\n return false;\n };\n };\n var hasPropValue = function (propName, propValue) {\n return function (node) {\n return isElement$1(node) && node[propName] === propValue;\n };\n };\n var hasAttribute = function (attrName, attrValue) {\n return function (node) {\n return isElement$1(node) && node.hasAttribute(attrName);\n };\n };\n var hasAttributeValue = function (attrName, attrValue) {\n return function (node) {\n return isElement$1(node) && node.getAttribute(attrName) === attrValue;\n };\n };\n var isBogus = function (node) {\n return isElement$1(node) && node.hasAttribute('data-mce-bogus');\n };\n var isBogusAll = function (node) {\n return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all';\n };\n var isTable = function (node) {\n return isElement$1(node) && node.tagName === 'TABLE';\n };\n var hasContentEditableState = function (value) {\n return function (node) {\n if (isElement$1(node)) {\n if (node.contentEditable === value) {\n return true;\n }\n if (node.getAttribute('data-mce-contenteditable') === value) {\n return true;\n }\n }\n return false;\n };\n };\n var isText$1 = isNodeType(3);\n var isComment$1 = isNodeType(8);\n var isDocument$1 = isNodeType(9);\n var isBr$1 = matchNodeNames('br');\n var isContentEditableTrue = hasContentEditableState('true');\n var isContentEditableFalse = hasContentEditableState('false');\n var $_bjermr1rjkmcwkij = {\n isText: isText$1,\n isElement: isElement$1,\n isComment: isComment$1,\n isDocument: isDocument$1,\n isBr: isBr$1,\n isContentEditableTrue: isContentEditableTrue,\n isContentEditableFalse: isContentEditableFalse,\n matchNodeNames: matchNodeNames,\n hasPropValue: hasPropValue,\n hasAttribute: hasAttribute,\n hasAttributeValue: hasAttributeValue,\n matchStyleValues: matchStyleValues,\n isBogus: isBogus,\n isBogusAll: isBogusAll,\n isTable: isTable\n };\n\n var surroundedBySpans = function (node) {\n var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN';\n var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN';\n return previousIsSpan && nextIsSpan;\n };\n var isBookmarkNode = function (node) {\n return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n };\n var trimNode = function (dom, node) {\n var i, children = node.childNodes;\n if ($_bjermr1rjkmcwkij.isElement(node) && isBookmarkNode(node)) {\n return;\n }\n for (i = children.length - 1; i >= 0; i--) {\n trimNode(dom, children[i]);\n }\n if ($_bjermr1rjkmcwkij.isDocument(node) === false) {\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\n var trimmedLength = $_4ujg4tljkmcwkbk.trim(node.nodeValue).length;\n if (dom.isBlock(node.parentNode) || trimmedLength > 0) {\n return;\n }\n if (trimmedLength === 0 && surroundedBySpans(node)) {\n return;\n }\n } else if ($_bjermr1rjkmcwkij.isElement(node)) {\n children = node.childNodes;\n if (children.length === 1 && isBookmarkNode(children[0])) {\n node.parentNode.insertBefore(children[0], node);\n }\n if (children.length || isVoid(Element$$1.fromDom(node))) {\n return;\n }\n }\n dom.remove(node);\n }\n return node;\n };\n var $_br9sxm1pjkmcwki4 = { trimNode: trimNode };\n\n var makeMap$1 = $_4ujg4tljkmcwkbk.makeMap;\n var namedEntities;\n var baseEntities;\n var reverseEntities;\n var attrsCharsRegExp = /[&<>\\\"\\u0060\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var textCharsRegExp = /[<>&\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var rawCharsRegExp = /[<>&\\\"\\']/g;\n var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;\n var asciiMap = {\n 128: '\\u20AC',\n 130: '\\u201A',\n 131: '\\u0192',\n 132: '\\u201E',\n 133: '\\u2026',\n 134: '\\u2020',\n 135: '\\u2021',\n 136: '\\u02c6',\n 137: '\\u2030',\n 138: '\\u0160',\n 139: '\\u2039',\n 140: '\\u0152',\n 142: '\\u017d',\n 145: '\\u2018',\n 146: '\\u2019',\n 147: '\\u201C',\n 148: '\\u201D',\n 149: '\\u2022',\n 150: '\\u2013',\n 151: '\\u2014',\n 152: '\\u02DC',\n 153: '\\u2122',\n 154: '\\u0161',\n 155: '\\u203A',\n 156: '\\u0153',\n 158: '\\u017e',\n 159: '\\u0178'\n };\n baseEntities = {\n '\"': '"',\n '\\'': ''',\n '<': '<',\n '>': '>',\n '&': '&',\n '`': '`'\n };\n reverseEntities = {\n '<': '<',\n '>': '>',\n '&': '&',\n '"': '\"',\n ''': '\\''\n };\n var nativeDecode = function (text) {\n var elm;\n elm = Element$$1.fromTag('div').dom();\n elm.innerHTML = text;\n return elm.textContent || elm.innerText || text;\n };\n var buildEntitiesLookup = function (items, radix) {\n var i, chr, entity;\n var lookup = {};\n if (items) {\n items = items.split(',');\n radix = radix || 10;\n for (i = 0; i < items.length; i += 2) {\n chr = String.fromCharCode(parseInt(items[i], radix));\n if (!baseEntities[chr]) {\n entity = '&' + items[i + 1] + ';';\n lookup[chr] = entity;\n lookup[entity] = chr;\n }\n }\n return lookup;\n }\n };\n namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\n var encodeRaw = function (text, attr) {\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n return baseEntities[chr] || chr;\n });\n };\n var encodeAllRaw = function (text) {\n return ('' + text).replace(rawCharsRegExp, function (chr) {\n return baseEntities[chr] || chr;\n });\n };\n var encodeNumeric = function (text, attr) {\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n if (chr.length > 1) {\n return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n }\n return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\n });\n };\n var encodeNamed = function (text, attr, entities) {\n entities = entities || namedEntities;\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n return baseEntities[chr] || entities[chr] || chr;\n });\n };\n var getEncodeFunc = function (name, entities) {\n var entitiesMap = buildEntitiesLookup(entities) || namedEntities;\n var encodeNamedAndNumeric = function (text, attr) {\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n if (baseEntities[chr] !== undefined) {\n return baseEntities[chr];\n }\n if (entitiesMap[chr] !== undefined) {\n return entitiesMap[chr];\n }\n if (chr.length > 1) {\n return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n }\n return '&#' + chr.charCodeAt(0) + ';';\n });\n };\n var encodeCustomNamed = function (text, attr) {\n return encodeNamed(text, attr, entitiesMap);\n };\n var nameMap = makeMap$1(name.replace(/\\+/g, ','));\n if (nameMap.named && nameMap.numeric) {\n return encodeNamedAndNumeric;\n }\n if (nameMap.named) {\n if (entities) {\n return encodeCustomNamed;\n }\n return encodeNamed;\n }\n if (nameMap.numeric) {\n return encodeNumeric;\n }\n return encodeRaw;\n };\n var decode = function (text) {\n return text.replace(entityRegExp, function (all, numeric) {\n if (numeric) {\n if (numeric.charAt(0).toLowerCase() === 'x') {\n numeric = parseInt(numeric.substr(1), 16);\n } else {\n numeric = parseInt(numeric, 10);\n }\n if (numeric > 65535) {\n numeric -= 65536;\n return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023));\n }\n return asciiMap[numeric] || String.fromCharCode(numeric);\n }\n return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\n });\n };\n var $_33qwr1sjkmcwkip = {\n encodeRaw: encodeRaw,\n encodeAllRaw: encodeAllRaw,\n encodeNumeric: encodeNumeric,\n encodeNamed: encodeNamed,\n getEncodeFunc: getEncodeFunc,\n decode: decode\n };\n\n var mapCache = {};\n var dummyObj = {};\n var makeMap$2 = $_4ujg4tljkmcwkbk.makeMap;\n var each$4 = $_4ujg4tljkmcwkbk.each;\n var extend$1 = $_4ujg4tljkmcwkbk.extend;\n var explode$1 = $_4ujg4tljkmcwkbk.explode;\n var inArray$1 = $_4ujg4tljkmcwkbk.inArray;\n var split = function (items, delim) {\n items = $_4ujg4tljkmcwkbk.trim(items);\n return items ? items.split(delim || ' ') : [];\n };\n var compileSchema = function (type) {\n var schema = {};\n var globalAttributes, blockContent;\n var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;\n var add = function (name, attributes, children) {\n var ni, attributesOrder, element;\n var arrayToMap = function (array, obj) {\n var map = {};\n var i, l;\n for (i = 0, l = array.length; i < l; i++) {\n map[array[i]] = obj || {};\n }\n return map;\n };\n children = children || [];\n attributes = attributes || '';\n if (typeof children === 'string') {\n children = split(children);\n }\n name = split(name);\n ni = name.length;\n while (ni--) {\n attributesOrder = split([\n globalAttributes,\n attributes\n ].join(' '));\n element = {\n attributes: arrayToMap(attributesOrder),\n attributesOrder: attributesOrder,\n children: arrayToMap(children, dummyObj)\n };\n schema[name[ni]] = element;\n }\n };\n var addAttrs = function (name, attributes) {\n var ni, schemaItem, i, l;\n name = split(name);\n ni = name.length;\n attributes = split(attributes);\n while (ni--) {\n schemaItem = schema[name[ni]];\n for (i = 0, l = attributes.length; i < l; i++) {\n schemaItem.attributes[attributes[i]] = {};\n schemaItem.attributesOrder.push(attributes[i]);\n }\n }\n };\n if (mapCache[type]) {\n return mapCache[type];\n }\n globalAttributes = 'id accesskey class dir lang style tabindex title role';\n blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul';\n phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment';\n if (type !== 'html4') {\n globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate';\n blockContent += ' article aside details dialog figure header footer hgroup section nav';\n phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen';\n }\n if (type !== 'html5-strict') {\n globalAttributes += ' xml:lang';\n html4PhrasingContent = 'acronym applet basefont big font strike tt';\n phrasingContent = [\n phrasingContent,\n html4PhrasingContent\n ].join(' ');\n each$4(split(html4PhrasingContent), function (name) {\n add(name, '', phrasingContent);\n });\n html4BlockContent = 'center dir isindex noframes';\n blockContent = [\n blockContent,\n html4BlockContent\n ].join(' ');\n flowContent = [\n blockContent,\n phrasingContent\n ].join(' ');\n each$4(split(html4BlockContent), function (name) {\n add(name, '', flowContent);\n });\n }\n flowContent = flowContent || [\n blockContent,\n phrasingContent\n ].join(' ');\n add('html', 'manifest', 'head body');\n add('head', '', 'base command link meta noscript script style title');\n add('title hr noscript br');\n add('base', 'href target');\n add('link', 'href rel media hreflang type sizes hreflang');\n add('meta', 'name http-equiv content charset');\n add('style', 'media type scoped');\n add('script', 'src async defer type charset');\n add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent);\n add('address dt dd div caption', '', flowContent);\n add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent);\n add('blockquote', 'cite', flowContent);\n add('ol', 'reversed start type', 'li');\n add('ul', '', 'li');\n add('li', 'value', flowContent);\n add('dl', '', 'dt dd');\n add('a', 'href target rel media hreflang type', phrasingContent);\n add('q', 'cite', phrasingContent);\n add('ins del', 'cite datetime', flowContent);\n add('img', 'src sizes srcset alt usemap ismap width height');\n add('iframe', 'src name width height', flowContent);\n add('embed', 'src type width height');\n add('object', 'data type typemustmatch name usemap form width height', [\n flowContent,\n 'param'\n ].join(' '));\n add('param', 'name value');\n add('map', 'name', [\n flowContent,\n 'area'\n ].join(' '));\n add('area', 'alt coords shape href target rel media hreflang type');\n add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : ''));\n add('colgroup', 'span', 'col');\n add('col', 'span');\n add('tbody thead tfoot', '', 'tr');\n add('tr', '', 'td th');\n add('td', 'colspan rowspan headers', flowContent);\n add('th', 'colspan rowspan headers scope abbr', flowContent);\n add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent);\n add('fieldset', 'disabled form name', [\n flowContent,\n 'legend'\n ].join(' '));\n add('label', 'form for', phrasingContent);\n add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width');\n add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent);\n add('select', 'disabled form multiple name required size', 'option optgroup');\n add('optgroup', 'disabled label', 'option');\n add('option', 'disabled label selected value');\n add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap');\n add('menu', 'type label', [\n flowContent,\n 'li'\n ].join(' '));\n add('noscript', '', flowContent);\n if (type !== 'html4') {\n add('wbr');\n add('ruby', '', [\n phrasingContent,\n 'rt rp'\n ].join(' '));\n add('figcaption', '', flowContent);\n add('mark rt rp summary bdi', '', phrasingContent);\n add('canvas', 'width height', flowContent);\n add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [\n flowContent,\n 'track source'\n ].join(' '));\n add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [\n flowContent,\n 'track source'\n ].join(' '));\n add('picture', '', 'img source');\n add('source', 'src srcset type media sizes');\n add('track', 'kind src srclang label default');\n add('datalist', '', [\n phrasingContent,\n 'option'\n ].join(' '));\n add('article section nav aside header footer', '', flowContent);\n add('hgroup', '', 'h1 h2 h3 h4 h5 h6');\n add('figure', '', [\n flowContent,\n 'figcaption'\n ].join(' '));\n add('time', 'datetime', phrasingContent);\n add('dialog', 'open', flowContent);\n add('command', 'type label icon disabled checked radiogroup command');\n add('output', 'for form name', phrasingContent);\n add('progress', 'value max', phrasingContent);\n add('meter', 'value min max low high optimum', phrasingContent);\n add('details', 'open', [\n flowContent,\n 'summary'\n ].join(' '));\n add('keygen', 'autofocus challenge disabled form keytype name');\n }\n if (type !== 'html5-strict') {\n addAttrs('script', 'language xml:space');\n addAttrs('style', 'xml:space');\n addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace');\n addAttrs('embed', 'align name hspace vspace');\n addAttrs('param', 'valuetype type');\n addAttrs('a', 'charset name rev shape coords');\n addAttrs('br', 'clear');\n addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace');\n addAttrs('img', 'name longdesc align border hspace vspace');\n addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align');\n addAttrs('font basefont', 'size color face');\n addAttrs('input', 'usemap align');\n addAttrs('select', 'onchange');\n addAttrs('textarea');\n addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align');\n addAttrs('ul', 'type compact');\n addAttrs('li', 'type');\n addAttrs('ol dl menu dir', 'compact');\n addAttrs('pre', 'width xml:space');\n addAttrs('hr', 'align noshade size width');\n addAttrs('isindex', 'prompt');\n addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor');\n addAttrs('col', 'width align char charoff valign');\n addAttrs('colgroup', 'width align char charoff valign');\n addAttrs('thead', 'align char charoff valign');\n addAttrs('tr', 'align char charoff valign bgcolor');\n addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height');\n addAttrs('form', 'accept');\n addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height');\n addAttrs('tfoot', 'align char charoff valign');\n addAttrs('tbody', 'align char charoff valign');\n addAttrs('area', 'nohref');\n addAttrs('body', 'background bgcolor text link vlink alink');\n }\n if (type !== 'html4') {\n addAttrs('input button select textarea', 'autofocus');\n addAttrs('input textarea', 'placeholder');\n addAttrs('a', 'download');\n addAttrs('link script img', 'crossorigin');\n addAttrs('iframe', 'sandbox seamless allowfullscreen');\n }\n each$4(split('a form meter progress dfn'), function (name) {\n if (schema[name]) {\n delete schema[name].children[name];\n }\n });\n delete schema.caption.children.table;\n delete schema.script;\n mapCache[type] = schema;\n return schema;\n };\n var compileElementMap = function (value, mode) {\n var styles;\n if (value) {\n styles = {};\n if (typeof value === 'string') {\n value = { '*': value };\n }\n each$4(value, function (value, key) {\n styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/);\n });\n }\n return styles;\n };\n function Schema(settings) {\n var elements = {};\n var children = {};\n var patternElements = [];\n var validStyles;\n var invalidStyles;\n var schemaItems;\n var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;\n var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;\n var customElementsMap = {}, specialElements = {};\n var createLookupTable = function (option, defaultValue, extendWith) {\n var value = settings[option];\n if (!value) {\n value = mapCache[option];\n if (!value) {\n value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' '));\n value = extend$1(value, extendWith);\n mapCache[option] = value;\n }\n } else {\n value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/));\n }\n return value;\n };\n settings = settings || {};\n schemaItems = compileSchema(settings.schema);\n if (settings.verify_html === false) {\n settings.valid_elements = '*[*]';\n }\n validStyles = compileElementMap(settings.valid_styles);\n invalidStyles = compileElementMap(settings.invalid_styles, 'map');\n validClasses = compileElementMap(settings.valid_classes, 'map');\n whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code');\n selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');\n shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track');\n boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls');\n nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap);\n moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);\n textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside nav figure');\n blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption details summary', textBlockElementsMap);\n textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp');\n each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) {\n specialElements[name] = new RegExp(']*>', 'gi');\n });\n var patternToRegExp = function (str) {\n return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\n };\n var addValidElements = function (validElements) {\n var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value;\n var elementRuleRegExp = /^([#+\\-])?([^\\[!\\/]+)(?:\\/([^\\[!]+))?(?:(!?)\\[([^\\]]+)\\])?$/, attrRuleRegExp = /^([!\\-])?(\\w+[\\\\:]:\\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/;\n if (validElements) {\n validElements = split(validElements, ',');\n if (elements['@']) {\n globalAttributes = elements['@'].attributes;\n globalAttributesOrder = elements['@'].attributesOrder;\n }\n for (ei = 0, el = validElements.length; ei < el; ei++) {\n matches = elementRuleRegExp.exec(validElements[ei]);\n if (matches) {\n prefix = matches[1];\n elementName = matches[2];\n outputName = matches[3];\n attrData = matches[5];\n attributes = {};\n attributesOrder = [];\n element = {\n attributes: attributes,\n attributesOrder: attributesOrder\n };\n if (prefix === '#') {\n element.paddEmpty = true;\n }\n if (prefix === '-') {\n element.removeEmpty = true;\n }\n if (matches[4] === '!') {\n element.removeEmptyAttrs = true;\n }\n if (globalAttributes) {\n for (key in globalAttributes) {\n attributes[key] = globalAttributes[key];\n }\n attributesOrder.push.apply(attributesOrder, globalAttributesOrder);\n }\n if (attrData) {\n attrData = split(attrData, '|');\n for (ai = 0, al = attrData.length; ai < al; ai++) {\n matches = attrRuleRegExp.exec(attrData[ai]);\n if (matches) {\n attr = {};\n attrType = matches[1];\n attrName = matches[2].replace(/[\\\\:]:/g, ':');\n prefix = matches[3];\n value = matches[4];\n if (attrType === '!') {\n element.attributesRequired = element.attributesRequired || [];\n element.attributesRequired.push(attrName);\n attr.required = true;\n }\n if (attrType === '-') {\n delete attributes[attrName];\n attributesOrder.splice(inArray$1(attributesOrder, attrName), 1);\n continue;\n }\n if (prefix) {\n if (prefix === '=') {\n element.attributesDefault = element.attributesDefault || [];\n element.attributesDefault.push({\n name: attrName,\n value: value\n });\n attr.defaultValue = value;\n }\n if (prefix === ':') {\n element.attributesForced = element.attributesForced || [];\n element.attributesForced.push({\n name: attrName,\n value: value\n });\n attr.forcedValue = value;\n }\n if (prefix === '<') {\n attr.validValues = makeMap$2(value, '?');\n }\n }\n if (hasPatternsRegExp.test(attrName)) {\n element.attributePatterns = element.attributePatterns || [];\n attr.pattern = patternToRegExp(attrName);\n element.attributePatterns.push(attr);\n } else {\n if (!attributes[attrName]) {\n attributesOrder.push(attrName);\n }\n attributes[attrName] = attr;\n }\n }\n }\n }\n if (!globalAttributes && elementName === '@') {\n globalAttributes = attributes;\n globalAttributesOrder = attributesOrder;\n }\n if (outputName) {\n element.outputName = elementName;\n elements[outputName] = element;\n }\n if (hasPatternsRegExp.test(elementName)) {\n element.pattern = patternToRegExp(elementName);\n patternElements.push(element);\n } else {\n elements[elementName] = element;\n }\n }\n }\n }\n };\n var setValidElements = function (validElements) {\n elements = {};\n patternElements = [];\n addValidElements(validElements);\n each$4(schemaItems, function (element, name) {\n children[name] = element.children;\n });\n };\n var addCustomElements = function (customElements) {\n var customElementRegExp = /^(~)?(.+)$/;\n if (customElements) {\n mapCache.text_block_elements = mapCache.block_elements = null;\n each$4(split(customElements, ','), function (rule) {\n var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2];\n children[name] = children[cloneName];\n customElementsMap[name] = cloneName;\n if (!inline) {\n blockElementsMap[name.toUpperCase()] = {};\n blockElementsMap[name] = {};\n }\n if (!elements[name]) {\n var customRule = elements[cloneName];\n customRule = extend$1({}, customRule);\n delete customRule.removeEmptyAttrs;\n delete customRule.removeEmpty;\n elements[name] = customRule;\n }\n each$4(children, function (element, elmName) {\n if (element[cloneName]) {\n children[elmName] = element = extend$1({}, children[elmName]);\n element[name] = element[cloneName];\n }\n });\n });\n }\n };\n var addValidChildren = function (validChildren) {\n var childRuleRegExp = /^([+\\-]?)(\\w+)\\[([^\\]]+)\\]$/;\n mapCache[settings.schema] = null;\n if (validChildren) {\n each$4(split(validChildren, ','), function (rule) {\n var matches = childRuleRegExp.exec(rule);\n var parent, prefix;\n if (matches) {\n prefix = matches[1];\n if (prefix) {\n parent = children[matches[2]];\n } else {\n parent = children[matches[2]] = { '#comment': {} };\n }\n parent = children[matches[2]];\n each$4(split(matches[3], '|'), function (child) {\n if (prefix === '-') {\n delete parent[child];\n } else {\n parent[child] = {};\n }\n });\n }\n });\n }\n };\n var getElementRule = function (name) {\n var element = elements[name], i;\n if (element) {\n return element;\n }\n i = patternElements.length;\n while (i--) {\n element = patternElements[i];\n if (element.pattern.test(name)) {\n return element;\n }\n }\n };\n if (!settings.valid_elements) {\n each$4(schemaItems, function (element, name) {\n elements[name] = {\n attributes: element.attributes,\n attributesOrder: element.attributesOrder\n };\n children[name] = element.children;\n });\n if (settings.schema !== 'html5') {\n each$4(split('strong/b em/i'), function (item) {\n item = split(item, '/');\n elements[item[1]].outputName = item[0];\n });\n }\n each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) {\n if (elements[name]) {\n elements[name].removeEmpty = true;\n }\n });\n each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) {\n elements[name].paddEmpty = true;\n });\n each$4(split('span'), function (name) {\n elements[name].removeEmptyAttrs = true;\n });\n } else {\n setValidElements(settings.valid_elements);\n }\n addCustomElements(settings.custom_elements);\n addValidChildren(settings.valid_children);\n addValidElements(settings.extended_valid_elements);\n addValidChildren('+ol[ul|ol],+ul[ul|ol]');\n each$4({\n dd: 'dl',\n dt: 'dl',\n li: 'ul ol',\n td: 'tr',\n th: 'tr',\n tr: 'tbody thead tfoot',\n tbody: 'table',\n thead: 'table',\n tfoot: 'table',\n legend: 'fieldset',\n area: 'map',\n param: 'video audio object'\n }, function (parents, item) {\n if (elements[item]) {\n elements[item].parentsRequired = split(parents);\n }\n });\n if (settings.invalid_elements) {\n each$4(explode$1(settings.invalid_elements), function (item) {\n if (elements[item]) {\n delete elements[item];\n }\n });\n }\n if (!getElementRule('span')) {\n addValidElements('span[!data-mce-type|*]');\n }\n var getValidStyles = function () {\n return validStyles;\n };\n var getInvalidStyles = function () {\n return invalidStyles;\n };\n var getValidClasses = function () {\n return validClasses;\n };\n var getBoolAttrs = function () {\n return boolAttrMap;\n };\n var getBlockElements = function () {\n return blockElementsMap;\n };\n var getTextBlockElements = function () {\n return textBlockElementsMap;\n };\n var getTextInlineElements = function () {\n return textInlineElementsMap;\n };\n var getShortEndedElements = function () {\n return shortEndedElementsMap;\n };\n var getSelfClosingElements = function () {\n return selfClosingElementsMap;\n };\n var getNonEmptyElements = function () {\n return nonEmptyElementsMap;\n };\n var getMoveCaretBeforeOnEnterElements = function () {\n return moveCaretBeforeOnEnterElementsMap;\n };\n var getWhiteSpaceElements = function () {\n return whiteSpaceElementsMap;\n };\n var getSpecialElements = function () {\n return specialElements;\n };\n var isValidChild = function (name, child) {\n var parent = children[name.toLowerCase()];\n return !!(parent && parent[child.toLowerCase()]);\n };\n var isValid = function (name, attr) {\n var attrPatterns, i;\n var rule = getElementRule(name);\n if (rule) {\n if (attr) {\n if (rule.attributes[attr]) {\n return true;\n }\n attrPatterns = rule.attributePatterns;\n if (attrPatterns) {\n i = attrPatterns.length;\n while (i--) {\n if (attrPatterns[i].pattern.test(name)) {\n return true;\n }\n }\n }\n } else {\n return true;\n }\n }\n return false;\n };\n var getCustomElements = function () {\n return customElementsMap;\n };\n return {\n children: children,\n elements: elements,\n getValidStyles: getValidStyles,\n getValidClasses: getValidClasses,\n getBlockElements: getBlockElements,\n getInvalidStyles: getInvalidStyles,\n getShortEndedElements: getShortEndedElements,\n getTextBlockElements: getTextBlockElements,\n getTextInlineElements: getTextInlineElements,\n getBoolAttrs: getBoolAttrs,\n getElementRule: getElementRule,\n getSelfClosingElements: getSelfClosingElements,\n getNonEmptyElements: getNonEmptyElements,\n getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements,\n getWhiteSpaceElements: getWhiteSpaceElements,\n getSpecialElements: getSpecialElements,\n isValidChild: isValidChild,\n isValid: isValid,\n getCustomElements: getCustomElements,\n addValidElements: addValidElements,\n setValidElements: setValidElements,\n addCustomElements: addCustomElements,\n addValidChildren: addValidChildren\n };\n }\n\n var toHex = function (match, r, g, b) {\n var hex = function (val) {\n val = parseInt(val, 10).toString(16);\n return val.length > 1 ? val : '0' + val;\n };\n return '#' + hex(r) + hex(g) + hex(b);\n };\n function Styles(settings, schema) {\n var rgbRegExp = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/gi;\n var urlOrStrRegExp = /(?:url(?:(?:\\(\\s*\\\"([^\\\"]+)\\\"\\s*\\))|(?:\\(\\s*\\'([^\\']+)\\'\\s*\\))|(?:\\(\\s*([^)\\s]+)\\s*\\))))|(?:\\'([^\\']+)\\')|(?:\\\"([^\\\"]+)\\\")/gi;\n var styleRegExp = /\\s*([^:]+):\\s*([^;]+);?/g;\n var trimRightRegExp = /\\s+$/;\n var i;\n var encodingLookup = {};\n var encodingItems;\n var validStyles;\n var invalidStyles;\n var invisibleChar = '\\uFEFF';\n settings = settings || {};\n if (schema) {\n validStyles = schema.getValidStyles();\n invalidStyles = schema.getInvalidStyles();\n }\n encodingItems = ('\\\\\" \\\\\\' \\\\; \\\\: ; : ' + invisibleChar).split(' ');\n for (i = 0; i < encodingItems.length; i++) {\n encodingLookup[encodingItems[i]] = invisibleChar + i;\n encodingLookup[invisibleChar + i] = encodingItems[i];\n }\n return {\n toHex: function (color) {\n return color.replace(rgbRegExp, toHex);\n },\n parse: function (css) {\n var styles = {};\n var matches, name, value, isEncoded;\n var urlConverter = settings.url_converter;\n var urlConverterScope = settings.url_converter_scope || this;\n var compress = function (prefix, suffix, noJoin) {\n var top, right, bottom, left;\n top = styles[prefix + '-top' + suffix];\n if (!top) {\n return;\n }\n right = styles[prefix + '-right' + suffix];\n if (!right) {\n return;\n }\n bottom = styles[prefix + '-bottom' + suffix];\n if (!bottom) {\n return;\n }\n left = styles[prefix + '-left' + suffix];\n if (!left) {\n return;\n }\n var box = [\n top,\n right,\n bottom,\n left\n ];\n i = box.length - 1;\n while (i--) {\n if (box[i] !== box[i + 1]) {\n break;\n }\n }\n if (i > -1 && noJoin) {\n return;\n }\n styles[prefix + suffix] = i === -1 ? box[0] : box.join(' ');\n delete styles[prefix + '-top' + suffix];\n delete styles[prefix + '-right' + suffix];\n delete styles[prefix + '-bottom' + suffix];\n delete styles[prefix + '-left' + suffix];\n };\n var canCompress = function (key) {\n var value = styles[key], i;\n if (!value) {\n return;\n }\n value = value.split(' ');\n i = value.length;\n while (i--) {\n if (value[i] !== value[0]) {\n return false;\n }\n }\n styles[key] = value[0];\n return true;\n };\n var compress2 = function (target, a, b, c) {\n if (!canCompress(a)) {\n return;\n }\n if (!canCompress(b)) {\n return;\n }\n if (!canCompress(c)) {\n return;\n }\n styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\n delete styles[a];\n delete styles[b];\n delete styles[c];\n };\n var encode = function (str) {\n isEncoded = true;\n return encodingLookup[str];\n };\n var decode = function (str, keepSlashes) {\n if (isEncoded) {\n str = str.replace(/\\uFEFF[0-9]/g, function (str) {\n return encodingLookup[str];\n });\n }\n if (!keepSlashes) {\n str = str.replace(/\\\\([\\'\\\";:])/g, '$1');\n }\n return str;\n };\n var decodeSingleHexSequence = function (escSeq) {\n return String.fromCharCode(parseInt(escSeq.slice(1), 16));\n };\n var decodeHexSequences = function (value) {\n return value.replace(/\\\\[0-9a-f]+/gi, decodeSingleHexSequence);\n };\n var processUrl = function (match, url, url2, url3, str, str2) {\n str = str || str2;\n if (str) {\n str = decode(str);\n return '\\'' + str.replace(/\\'/g, '\\\\\\'') + '\\'';\n }\n url = decode(url || url2 || url3);\n if (!settings.allow_script_urls) {\n var scriptUrl = url.replace(/[\\s\\r\\n]+/g, '');\n if (/(java|vb)script:/i.test(scriptUrl)) {\n return '';\n }\n if (!settings.allow_svg_data_urls && /^data:image\\/svg/i.test(scriptUrl)) {\n return '';\n }\n }\n if (urlConverter) {\n url = urlConverter.call(urlConverterScope, url, 'style');\n }\n return 'url(\\'' + url.replace(/\\'/g, '\\\\\\'') + '\\')';\n };\n if (css) {\n css = css.replace(/[\\u0000-\\u001F]/g, '');\n css = css.replace(/\\\\[\\\"\\';:\\uFEFF]/g, encode).replace(/\\\"[^\\\"]+\\\"|\\'[^\\']+\\'/g, function (str) {\n return str.replace(/[;:]/g, encode);\n });\n while (matches = styleRegExp.exec(css)) {\n styleRegExp.lastIndex = matches.index + matches[0].length;\n name = matches[1].replace(trimRightRegExp, '').toLowerCase();\n value = matches[2].replace(trimRightRegExp, '');\n if (name && value) {\n name = decodeHexSequences(name);\n value = decodeHexSequences(value);\n if (name.indexOf(invisibleChar) !== -1 || name.indexOf('\"') !== -1) {\n continue;\n }\n if (!settings.allow_script_urls && (name === 'behavior' || /expression\\s*\\(|\\/\\*|\\*\\//.test(value))) {\n continue;\n }\n if (name === 'font-weight' && value === '700') {\n value = 'bold';\n } else if (name === 'color' || name === 'background-color') {\n value = value.toLowerCase();\n }\n value = value.replace(rgbRegExp, toHex);\n value = value.replace(urlOrStrRegExp, processUrl);\n styles[name] = isEncoded ? decode(value, true) : value;\n }\n }\n compress('border', '', true);\n compress('border', '-width');\n compress('border', '-color');\n compress('border', '-style');\n compress('padding', '');\n compress('margin', '');\n compress2('border', 'border-width', 'border-style', 'border-color');\n if (styles.border === 'medium none') {\n delete styles.border;\n }\n if (styles['border-image'] === 'none') {\n delete styles['border-image'];\n }\n }\n return styles;\n },\n serialize: function (styles, elementName) {\n var css = '', name, value;\n var serializeStyles = function (name) {\n var styleList, i, l, value;\n styleList = validStyles[name];\n if (styleList) {\n for (i = 0, l = styleList.length; i < l; i++) {\n name = styleList[i];\n value = styles[name];\n if (value) {\n css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n }\n }\n }\n };\n var isValid = function (name, elementName) {\n var styleMap;\n styleMap = invalidStyles['*'];\n if (styleMap && styleMap[name]) {\n return false;\n }\n styleMap = invalidStyles[elementName];\n if (styleMap && styleMap[name]) {\n return false;\n }\n return true;\n };\n if (elementName && validStyles) {\n serializeStyles('*');\n serializeStyles(elementName);\n } else {\n for (name in styles) {\n value = styles[name];\n if (value && (!invalidStyles || isValid(name, elementName))) {\n css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n }\n }\n }\n return css;\n }\n };\n }\n\n var each$5 = $_4ujg4tljkmcwkbk.each;\n var grep$1 = $_4ujg4tljkmcwkbk.grep;\n var isIE = $_cvvl9iajkmcwk25.ie;\n var simpleSelectorRe = /^([a-z0-9],?)+$/i;\n var whiteSpaceRegExp$2 = /^[ \\t\\r\\n]*$/;\n var setupAttrHooks = function (styles, settings, getContext) {\n var attrHooks = {};\n var keepValues = settings.keep_values;\n var keepUrlHook = {\n set: function ($elm, value, name$$1) {\n if (settings.url_converter) {\n value = settings.url_converter.call(settings.url_converter_scope || getContext(), value, name$$1, $elm[0]);\n }\n $elm.attr('data-mce-' + name$$1, value).attr(name$$1, value);\n },\n get: function ($elm, name$$1) {\n return $elm.attr('data-mce-' + name$$1) || $elm.attr(name$$1);\n }\n };\n attrHooks = {\n style: {\n set: function ($elm, value) {\n if (value !== null && typeof value === 'object') {\n $elm.css(value);\n return;\n }\n if (keepValues) {\n $elm.attr('data-mce-style', value);\n }\n $elm.attr('style', value);\n },\n get: function ($elm) {\n var value = $elm.attr('data-mce-style') || $elm.attr('style');\n value = styles.serialize(styles.parse(value), $elm[0].nodeName);\n return value;\n }\n }\n };\n if (keepValues) {\n attrHooks.href = attrHooks.src = keepUrlHook;\n }\n return attrHooks;\n };\n var updateInternalStyleAttr = function (styles, $elm) {\n var rawValue = $elm.attr('style');\n var value = styles.serialize(styles.parse(rawValue), $elm[0].nodeName);\n if (!value) {\n value = null;\n }\n $elm.attr('data-mce-style', value);\n };\n var findNodeIndex = function (node, normalized) {\n var idx = 0, lastNodeType, nodeType;\n if (node) {\n for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {\n nodeType = node.nodeType;\n if (normalized && nodeType === 3) {\n if (nodeType === lastNodeType || !node.nodeValue.length) {\n continue;\n }\n }\n idx++;\n lastNodeType = nodeType;\n }\n }\n return idx;\n };\n function DOMUtils(doc, settings) {\n var _this = this;\n if (settings === void 0) {\n settings = {};\n }\n var attrHooks;\n var addedStyles = {};\n var win = window;\n var files = {};\n var counter = 0;\n var stdMode = true;\n var boxModel = true;\n var styleSheetLoader = StyleSheetLoader(doc);\n var boundEvents = [];\n var schema = settings.schema ? settings.schema : Schema({});\n var styles = Styles({\n url_converter: settings.url_converter,\n url_converter_scope: settings.url_converter_scope\n }, settings.schema);\n var events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event;\n var blockElementsMap = schema.getBlockElements();\n var $ = DomQuery.overrideDefaults(function () {\n return {\n context: doc,\n element: self$$1.getRoot()\n };\n });\n var isBlock = function (node) {\n if (typeof node === 'string') {\n return !!blockElementsMap[node];\n } else if (node) {\n var type = node.nodeType;\n if (type) {\n return !!(type === 1 && blockElementsMap[node.nodeName]);\n }\n }\n return false;\n };\n var get = function (elm) {\n if (elm && doc && typeof elm === 'string') {\n var node = doc.getElementById(elm);\n if (node && node.id !== elm) {\n return doc.getElementsByName(elm)[1];\n } else {\n return node;\n }\n }\n return elm;\n };\n var $$ = function (elm) {\n if (typeof elm === 'string') {\n elm = get(elm);\n }\n return $(elm);\n };\n var getAttrib = function (elm, name$$1, defaultVal) {\n var hook, value;\n var $elm = $$(elm);\n if ($elm.length) {\n hook = attrHooks[name$$1];\n if (hook && hook.get) {\n value = hook.get($elm, name$$1);\n } else {\n value = $elm.attr(name$$1);\n }\n }\n if (typeof value === 'undefined') {\n value = defaultVal || '';\n }\n return value;\n };\n var getAttribs = function (elm) {\n var node = get(elm);\n if (!node) {\n return [];\n }\n return node.attributes;\n };\n var setAttrib = function (elm, name$$1, value) {\n var originalValue, hook;\n if (value === '') {\n value = null;\n }\n var $elm = $$(elm);\n originalValue = $elm.attr(name$$1);\n if (!$elm.length) {\n return;\n }\n hook = attrHooks[name$$1];\n if (hook && hook.set) {\n hook.set($elm, value, name$$1);\n } else {\n $elm.attr(name$$1, value);\n }\n if (originalValue !== value && settings.onSetAttrib) {\n settings.onSetAttrib({\n attrElm: $elm,\n attrName: name$$1,\n attrValue: value\n });\n }\n };\n var clone = function (node, deep) {\n if (!isIE || node.nodeType !== 1 || deep) {\n return node.cloneNode(deep);\n }\n if (!deep) {\n var clone_1 = doc.createElement(node.nodeName);\n each$5(getAttribs(node), function (attr) {\n setAttrib(clone_1, attr.nodeName, getAttrib(node, attr.nodeName));\n });\n return clone_1;\n }\n return null;\n };\n var getRoot = function () {\n return settings.root_element || doc.body;\n };\n var getViewPort = function (argWin) {\n var actWin = !argWin ? win : argWin;\n var doc = actWin.document;\n var rootElm = boxModel ? doc.documentElement : doc.body;\n return {\n x: actWin.pageXOffset || rootElm.scrollLeft,\n y: actWin.pageYOffset || rootElm.scrollTop,\n w: actWin.innerWidth || rootElm.clientWidth,\n h: actWin.innerHeight || rootElm.clientHeight\n };\n };\n var getPos = function (elm, rootElm) {\n return $_5o0xi0njkmcwkbz.getPos(doc.body, get(elm), rootElm);\n };\n var setStyle = function (elm, name$$1, value) {\n var $elm = $$(elm).css(name$$1, value);\n if (settings.update_styles) {\n updateInternalStyleAttr(styles, $elm);\n }\n };\n var setStyles = function (elm, stylesArg) {\n var $elm = $$(elm).css(stylesArg);\n if (settings.update_styles) {\n updateInternalStyleAttr(styles, $elm);\n }\n };\n var getStyle = function (elm, name$$1, computed) {\n var $elm = $$(elm);\n if (computed) {\n return $elm.css(name$$1);\n }\n name$$1 = name$$1.replace(/-(\\D)/g, function (a, b) {\n return b.toUpperCase();\n });\n if (name$$1 === 'float') {\n name$$1 = $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 12 ? 'styleFloat' : 'cssFloat';\n }\n return $elm[0] && $elm[0].style ? $elm[0].style[name$$1] : undefined;\n };\n var getSize = function (elm) {\n var w, h;\n elm = get(elm);\n w = getStyle(elm, 'width');\n h = getStyle(elm, 'height');\n if (w.indexOf('px') === -1) {\n w = 0;\n }\n if (h.indexOf('px') === -1) {\n h = 0;\n }\n return {\n w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,\n h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight\n };\n };\n var getRect = function (elm) {\n var pos, size;\n elm = get(elm);\n pos = getPos(elm);\n size = getSize(elm);\n return {\n x: pos.x,\n y: pos.y,\n w: size.w,\n h: size.h\n };\n };\n var is = function (elm, selector) {\n var i;\n if (!elm) {\n return false;\n }\n if (!Array.isArray(elm)) {\n if (selector === '*') {\n return elm.nodeType === 1;\n }\n if (simpleSelectorRe.test(selector)) {\n var selectors = selector.toLowerCase().split(/,/);\n var elmName = elm.nodeName.toLowerCase();\n for (i = selectors.length - 1; i >= 0; i--) {\n if (selectors[i] === elmName) {\n return true;\n }\n }\n return false;\n }\n if (elm.nodeType && elm.nodeType !== 1) {\n return false;\n }\n }\n var elms = !Array.isArray(elm) ? [elm] : elm;\n return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;\n };\n var getParents = function (elm, selector, root, collect) {\n var result = [];\n var selectorVal;\n var node = get(elm);\n collect = collect === undefined;\n root = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);\n if ($_4ujg4tljkmcwkbk.is(selector, 'string')) {\n selectorVal = selector;\n if (selector === '*') {\n selector = function (node) {\n return node.nodeType === 1;\n };\n } else {\n selector = function (node) {\n return is(node, selectorVal);\n };\n }\n }\n while (node) {\n if (node === root || !node.nodeType || node.nodeType === 9) {\n break;\n }\n if (!selector || typeof selector === 'function' && selector(node)) {\n if (collect) {\n result.push(node);\n } else {\n return [node];\n }\n }\n node = node.parentNode;\n }\n return collect ? result : null;\n };\n var getParent = function (node, selector, root) {\n var parents = getParents(node, selector, root, false);\n return parents && parents.length > 0 ? parents[0] : null;\n };\n var _findSib = function (node, selector, name$$1) {\n var func = selector;\n if (node) {\n if (typeof selector === 'string') {\n func = function (node) {\n return is(node, selector);\n };\n }\n for (node = node[name$$1]; node; node = node[name$$1]) {\n if (typeof func === 'function' && func(node)) {\n return node;\n }\n }\n }\n return null;\n };\n var getNext = function (node, selector) {\n return _findSib(node, selector, 'nextSibling');\n };\n var getPrev = function (node, selector) {\n return _findSib(node, selector, 'previousSibling');\n };\n var select = function (selector, scope) {\n return Sizzle(selector, get(scope) || settings.root_element || doc, []);\n };\n var run = function (elm, func, scope) {\n var result;\n var node = typeof elm === 'string' ? get(elm) : elm;\n if (!node) {\n return false;\n }\n if ($_4ujg4tljkmcwkbk.isArray(node) && (node.length || node.length === 0)) {\n result = [];\n each$5(node, function (elm, i) {\n if (elm) {\n if (typeof elm === 'string') {\n elm = get(elm);\n }\n result.push(func.call(scope, elm, i));\n }\n });\n return result;\n }\n var context = scope ? scope : _this;\n return func.call(context, node);\n };\n var setAttribs = function (elm, attrs) {\n $$(elm).each(function (i, node) {\n each$5(attrs, function (value, name$$1) {\n setAttrib(node, name$$1, value);\n });\n });\n };\n var setHTML = function (elm, html) {\n var $elm = $$(elm);\n if (isIE) {\n $elm.each(function (i, target) {\n if (target.canHaveHTML === false) {\n return;\n }\n while (target.firstChild) {\n target.removeChild(target.firstChild);\n }\n try {\n target.innerHTML = '
' + html;\n target.removeChild(target.firstChild);\n } catch (ex) {\n DomQuery('
').html('
' + html).contents().slice(1).appendTo(target);\n }\n return html;\n });\n } else {\n $elm.html(html);\n }\n };\n var add = function (parentElm, name$$1, attrs, html, create) {\n return run(parentElm, function (parentElm) {\n var newElm = typeof name$$1 === 'string' ? doc.createElement(name$$1) : name$$1;\n setAttribs(newElm, attrs);\n if (html) {\n if (typeof html !== 'string' && html.nodeType) {\n newElm.appendChild(html);\n } else if (typeof html === 'string') {\n setHTML(newElm, html);\n }\n }\n return !create ? parentElm.appendChild(newElm) : newElm;\n });\n };\n var create = function (name$$1, attrs, html) {\n return add(doc.createElement(name$$1), name$$1, attrs, html, true);\n };\n var decode = $_33qwr1sjkmcwkip.decode;\n var encode = $_33qwr1sjkmcwkip.encodeAllRaw;\n var createHTML = function (name$$1, attrs, html) {\n var outHtml = '', key;\n outHtml += '<' + name$$1;\n for (key in attrs) {\n if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') {\n outHtml += ' ' + key + '=\"' + encode(attrs[key]) + '\"';\n }\n }\n if (typeof html !== 'undefined') {\n return outHtml + '>' + html + '';\n }\n return outHtml + ' />';\n };\n var createFragment = function (html) {\n var node;\n var container = doc.createElement('div');\n var frag = doc.createDocumentFragment();\n if (html) {\n container.innerHTML = html;\n }\n while (node = container.firstChild) {\n frag.appendChild(node);\n }\n return frag;\n };\n var remove = function (node, keepChildren) {\n var $node = $$(node);\n if (keepChildren) {\n $node.each(function () {\n var child;\n while (child = this.firstChild) {\n if (child.nodeType === 3 && child.data.length === 0) {\n this.removeChild(child);\n } else {\n this.parentNode.insertBefore(child, this);\n }\n }\n }).remove();\n } else {\n $node.remove();\n }\n return $node.length > 1 ? $node.toArray() : $node[0];\n };\n var removeAllAttribs = function (e) {\n return run(e, function (e) {\n var i;\n var attrs = e.attributes;\n for (i = attrs.length - 1; i >= 0; i--) {\n e.removeAttributeNode(attrs.item(i));\n }\n });\n };\n var parseStyle = function (cssText) {\n return styles.parse(cssText);\n };\n var serializeStyle = function (stylesArg, name$$1) {\n return styles.serialize(stylesArg, name$$1);\n };\n var addStyle = function (cssText) {\n var head, styleElm;\n if (self$$1 !== DOMUtils.DOM && doc === document) {\n if (addedStyles[cssText]) {\n return;\n }\n addedStyles[cssText] = true;\n }\n styleElm = doc.getElementById('mceDefaultStyles');\n if (!styleElm) {\n styleElm = doc.createElement('style');\n styleElm.id = 'mceDefaultStyles';\n styleElm.type = 'text/css';\n head = doc.getElementsByTagName('head')[0];\n if (head.firstChild) {\n head.insertBefore(styleElm, head.firstChild);\n } else {\n head.appendChild(styleElm);\n }\n }\n if (styleElm.styleSheet) {\n styleElm.styleSheet.cssText += cssText;\n } else {\n styleElm.appendChild(doc.createTextNode(cssText));\n }\n };\n var loadCSS = function (url) {\n var head;\n if (self$$1 !== DOMUtils.DOM && doc === document) {\n DOMUtils.DOM.loadCSS(url);\n return;\n }\n if (!url) {\n url = '';\n }\n head = doc.getElementsByTagName('head')[0];\n each$5(url.split(','), function (url) {\n var link;\n url = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\n if (files[url]) {\n return;\n }\n files[url] = true;\n link = create('link', {\n rel: 'stylesheet',\n href: url\n });\n head.appendChild(link);\n });\n };\n var toggleClass = function (elm, cls, state) {\n $$(elm).toggleClass(cls, state).each(function () {\n if (this.className === '') {\n DomQuery(this).attr('class', null);\n }\n });\n };\n var addClass = function (elm, cls) {\n $$(elm).addClass(cls);\n };\n var removeClass = function (elm, cls) {\n toggleClass(elm, cls, false);\n };\n var hasClass = function (elm, cls) {\n return $$(elm).hasClass(cls);\n };\n var show = function (elm) {\n $$(elm).show();\n };\n var hide = function (elm) {\n $$(elm).hide();\n };\n var isHidden = function (elm) {\n return $$(elm).css('display') === 'none';\n };\n var uniqueId = function (prefix) {\n return (!prefix ? 'mce_' : prefix) + counter++;\n };\n var getOuterHTML = function (elm) {\n var node = typeof elm === 'string' ? get(elm) : elm;\n return $_bjermr1rjkmcwkij.isElement(node) ? node.outerHTML : DomQuery('
').append(DomQuery(node).clone()).html();\n };\n var setOuterHTML = function (elm, html) {\n $$(elm).each(function () {\n try {\n if ('outerHTML' in this) {\n this.outerHTML = html;\n return;\n }\n } catch (ex) {\n }\n remove(DomQuery(this).html(html), true);\n });\n };\n var insertAfter = function (node, reference) {\n var referenceNode = get(reference);\n return run(node, function (node) {\n var parent$$1, nextSibling;\n parent$$1 = referenceNode.parentNode;\n nextSibling = referenceNode.nextSibling;\n if (nextSibling) {\n parent$$1.insertBefore(node, nextSibling);\n } else {\n parent$$1.appendChild(node);\n }\n return node;\n });\n };\n var replace = function (newElm, oldElm, keepChildren) {\n return run(oldElm, function (oldElm) {\n if ($_4ujg4tljkmcwkbk.is(oldElm, 'array')) {\n newElm = newElm.cloneNode(true);\n }\n if (keepChildren) {\n each$5(grep$1(oldElm.childNodes), function (node) {\n newElm.appendChild(node);\n });\n }\n return oldElm.parentNode.replaceChild(newElm, oldElm);\n });\n };\n var rename = function (elm, name$$1) {\n var newElm;\n if (elm.nodeName !== name$$1.toUpperCase()) {\n newElm = create(name$$1);\n each$5(getAttribs(elm), function (attrNode) {\n setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));\n });\n replace(newElm, elm, true);\n }\n return newElm || elm;\n };\n var findCommonAncestor = function (a, b) {\n var ps = a, pe;\n while (ps) {\n pe = b;\n while (pe && ps !== pe) {\n pe = pe.parentNode;\n }\n if (ps === pe) {\n break;\n }\n ps = ps.parentNode;\n }\n if (!ps && a.ownerDocument) {\n return a.ownerDocument.documentElement;\n }\n return ps;\n };\n var toHex = function (rgbVal) {\n return styles.toHex($_4ujg4tljkmcwkbk.trim(rgbVal));\n };\n var isEmpty = function (node, elements) {\n var i, attributes, type, whitespace, walker, name$$1, brCount = 0;\n node = node.firstChild;\n if (node) {\n walker = new TreeWalker(node, node.parentNode);\n elements = elements || (schema ? schema.getNonEmptyElements() : null);\n whitespace = schema ? schema.getWhiteSpaceElements() : {};\n do {\n type = node.nodeType;\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n var bogusVal = node.getAttribute('data-mce-bogus');\n if (bogusVal) {\n node = walker.next(bogusVal === 'all');\n continue;\n }\n name$$1 = node.nodeName.toLowerCase();\n if (elements && elements[name$$1]) {\n if (name$$1 === 'br') {\n brCount++;\n node = walker.next();\n continue;\n }\n return false;\n }\n attributes = getAttribs(node);\n i = attributes.length;\n while (i--) {\n name$$1 = attributes[i].nodeName;\n if (name$$1 === 'name' || name$$1 === 'data-mce-bookmark') {\n return false;\n }\n }\n }\n if (type === 8) {\n return false;\n }\n if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) {\n return false;\n }\n if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) {\n return false;\n }\n node = walker.next();\n } while (node);\n }\n return brCount <= 1;\n };\n var createRng = function () {\n return doc.createRange();\n };\n var split = function (parentElm, splitElm, replacementElm) {\n var r = createRng(), bef, aft, pa;\n if (parentElm && splitElm) {\n r.setStart(parentElm.parentNode, findNodeIndex(parentElm));\n r.setEnd(splitElm.parentNode, findNodeIndex(splitElm));\n bef = r.extractContents();\n r = createRng();\n r.setStart(splitElm.parentNode, findNodeIndex(splitElm) + 1);\n r.setEnd(parentElm.parentNode, findNodeIndex(parentElm) + 1);\n aft = r.extractContents();\n pa = parentElm.parentNode;\n pa.insertBefore($_br9sxm1pjkmcwki4.trimNode(self$$1, bef), parentElm);\n if (replacementElm) {\n pa.insertBefore(replacementElm, parentElm);\n } else {\n pa.insertBefore(splitElm, parentElm);\n }\n pa.insertBefore($_br9sxm1pjkmcwki4.trimNode(self$$1, aft), parentElm);\n remove(parentElm);\n return replacementElm || splitElm;\n }\n };\n var bind = function (target, name$$1, func, scope) {\n if ($_4ujg4tljkmcwkbk.isArray(target)) {\n var i = target.length;\n while (i--) {\n target[i] = bind(target[i], name$$1, func, scope);\n }\n return target;\n }\n if (settings.collect && (target === doc || target === win)) {\n boundEvents.push([\n target,\n name$$1,\n func,\n scope\n ]);\n }\n return events.bind(target, name$$1, func, scope || self$$1);\n };\n var unbind = function (target, name$$1, func) {\n var i;\n if ($_4ujg4tljkmcwkbk.isArray(target)) {\n i = target.length;\n while (i--) {\n target[i] = unbind(target[i], name$$1, func);\n }\n return target;\n }\n if (boundEvents && (target === doc || target === win)) {\n i = boundEvents.length;\n while (i--) {\n var item = boundEvents[i];\n if (target === item[0] && (!name$$1 || name$$1 === item[1]) && (!func || func === item[2])) {\n events.unbind(item[0], item[1], item[2]);\n }\n }\n }\n return events.unbind(target, name$$1, func);\n };\n var fire = function (target, name$$1, evt) {\n return events.fire(target, name$$1, evt);\n };\n var getContentEditable = function (node) {\n if (node && $_bjermr1rjkmcwkij.isElement(node)) {\n var contentEditable = node.getAttribute('data-mce-contenteditable');\n if (contentEditable && contentEditable !== 'inherit') {\n return contentEditable;\n }\n return node.contentEditable !== 'inherit' ? node.contentEditable : null;\n } else {\n return null;\n }\n };\n var getContentEditableParent = function (node) {\n var root = getRoot();\n var state = null;\n for (; node && node !== root; node = node.parentNode) {\n state = getContentEditable(node);\n if (state !== null) {\n break;\n }\n }\n return state;\n };\n var destroy = function () {\n if (boundEvents) {\n var i = boundEvents.length;\n while (i--) {\n var item = boundEvents[i];\n events.unbind(item[0], item[1], item[2]);\n }\n }\n if (Sizzle.setDocument) {\n Sizzle.setDocument();\n }\n };\n var isChildOf = function (node, parent$$1) {\n while (node) {\n if (parent$$1 === node) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n var dumpRng = function (r) {\n return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;\n };\n var self$$1 = {\n doc: doc,\n settings: settings,\n win: win,\n files: files,\n stdMode: stdMode,\n boxModel: boxModel,\n styleSheetLoader: styleSheetLoader,\n boundEvents: boundEvents,\n styles: styles,\n schema: schema,\n events: events,\n isBlock: isBlock,\n $: $,\n $$: $$,\n root: null,\n clone: clone,\n getRoot: getRoot,\n getViewPort: getViewPort,\n getRect: getRect,\n getSize: getSize,\n getParent: getParent,\n getParents: getParents,\n get: get,\n getNext: getNext,\n getPrev: getPrev,\n select: select,\n is: is,\n add: add,\n create: create,\n createHTML: createHTML,\n createFragment: createFragment,\n remove: remove,\n setStyle: setStyle,\n getStyle: getStyle,\n setStyles: setStyles,\n removeAllAttribs: removeAllAttribs,\n setAttrib: setAttrib,\n setAttribs: setAttribs,\n getAttrib: getAttrib,\n getPos: getPos,\n parseStyle: parseStyle,\n serializeStyle: serializeStyle,\n addStyle: addStyle,\n loadCSS: loadCSS,\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n show: show,\n hide: hide,\n isHidden: isHidden,\n uniqueId: uniqueId,\n setHTML: setHTML,\n getOuterHTML: getOuterHTML,\n setOuterHTML: setOuterHTML,\n decode: decode,\n encode: encode,\n insertAfter: insertAfter,\n replace: replace,\n rename: rename,\n findCommonAncestor: findCommonAncestor,\n toHex: toHex,\n run: run,\n getAttribs: getAttribs,\n isEmpty: isEmpty,\n createRng: createRng,\n nodeIndex: findNodeIndex,\n split: split,\n bind: bind,\n unbind: unbind,\n fire: fire,\n getContentEditable: getContentEditable,\n getContentEditableParent: getContentEditableParent,\n destroy: destroy,\n isChildOf: isChildOf,\n dumpRng: dumpRng\n };\n attrHooks = setupAttrHooks(styles, settings, function () {\n return self$$1;\n });\n return self$$1;\n }\n (function (DOMUtils) {\n DOMUtils.DOM = DOMUtils(document);\n DOMUtils.nodeIndex = findNodeIndex;\n }(DOMUtils || (DOMUtils = {})));\n var DOMUtils$1 = DOMUtils;\n\n var DOM = DOMUtils$1.DOM;\n var each$6 = $_4ujg4tljkmcwkbk.each;\n var grep$2 = $_4ujg4tljkmcwkbk.grep;\n var isFunction$1 = function (f) {\n return typeof f === 'function';\n };\n var ScriptLoader = function () {\n var QUEUED = 0;\n var LOADING = 1;\n var LOADED = 2;\n var FAILED = 3;\n var states = {};\n var queue = [];\n var scriptLoadedCallbacks = {};\n var queueLoadedCallbacks = [];\n var loading = 0;\n var loadScript = function (url, success, failure) {\n var dom = DOM;\n var elm, id;\n var done = function () {\n dom.remove(id);\n if (elm) {\n elm.onreadystatechange = elm.onload = elm = null;\n }\n success();\n };\n var error = function () {\n if (isFunction$1(failure)) {\n failure();\n } else {\n if (typeof console !== 'undefined' && console.log) {\n console.log('Failed to load script: ' + url);\n }\n }\n };\n id = dom.uniqueId();\n elm = document.createElement('script');\n elm.id = id;\n elm.type = 'text/javascript';\n elm.src = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\n elm.onload = done;\n elm.onerror = error;\n (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);\n };\n this.isDone = function (url) {\n return states[url] === LOADED;\n };\n this.markDone = function (url) {\n states[url] = LOADED;\n };\n this.add = this.load = function (url, success, scope, failure) {\n var state = states[url];\n if (state === undefined) {\n queue.push(url);\n states[url] = QUEUED;\n }\n if (success) {\n if (!scriptLoadedCallbacks[url]) {\n scriptLoadedCallbacks[url] = [];\n }\n scriptLoadedCallbacks[url].push({\n success: success,\n failure: failure,\n scope: scope || this\n });\n }\n };\n this.remove = function (url) {\n delete states[url];\n delete scriptLoadedCallbacks[url];\n };\n this.loadQueue = function (success, scope, failure) {\n this.loadScripts(queue, success, scope, failure);\n };\n this.loadScripts = function (scripts, success, scope, failure) {\n var loadScripts;\n var failures = [];\n var execCallbacks = function (name$$1, url) {\n each$6(scriptLoadedCallbacks[url], function (callback) {\n if (isFunction$1(callback[name$$1])) {\n callback[name$$1].call(callback.scope);\n }\n });\n scriptLoadedCallbacks[url] = undefined;\n };\n queueLoadedCallbacks.push({\n success: success,\n failure: failure,\n scope: scope || this\n });\n loadScripts = function () {\n var loadingScripts = grep$2(scripts);\n scripts.length = 0;\n each$6(loadingScripts, function (url) {\n if (states[url] === LOADED) {\n execCallbacks('success', url);\n return;\n }\n if (states[url] === FAILED) {\n execCallbacks('failure', url);\n return;\n }\n if (states[url] !== LOADING) {\n states[url] = LOADING;\n loading++;\n loadScript(url, function () {\n states[url] = LOADED;\n loading--;\n execCallbacks('success', url);\n loadScripts();\n }, function () {\n states[url] = FAILED;\n loading--;\n failures.push(url);\n execCallbacks('failure', url);\n loadScripts();\n });\n }\n });\n if (!loading) {\n var notifyCallbacks = queueLoadedCallbacks.slice(0);\n queueLoadedCallbacks.length = 0;\n each$6(notifyCallbacks, function (callback) {\n if (failures.length === 0) {\n if (isFunction$1(callback.success)) {\n callback.success.call(callback.scope);\n }\n } else {\n if (isFunction$1(callback.failure)) {\n callback.failure.call(callback.scope, failures);\n }\n }\n });\n }\n };\n loadScripts();\n };\n };\n ScriptLoader.ScriptLoader = new ScriptLoader();\n\n var each$7 = $_4ujg4tljkmcwkbk.each;\n function AddOnManager() {\n var _this = this;\n var items = [];\n var urls = {};\n var lookup = {};\n var _listeners = [];\n var get = function (name) {\n if (lookup[name]) {\n return lookup[name].instance;\n }\n return undefined;\n };\n var dependencies = function (name) {\n var result;\n if (lookup[name]) {\n result = lookup[name].dependencies;\n }\n return result || [];\n };\n var requireLangPack = function (name, languages) {\n var language = AddOnManager.language;\n if (language && AddOnManager.languageLoad !== false) {\n if (languages) {\n languages = ',' + languages + ',';\n if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) {\n language = language.substr(0, 2);\n } else if (languages.indexOf(',' + language + ',') === -1) {\n return;\n }\n }\n ScriptLoader.ScriptLoader.add(urls[name] + '/langs/' + language + '.js');\n }\n };\n var add = function (id, addOn, dependencies) {\n items.push(addOn);\n lookup[id] = {\n instance: addOn,\n dependencies: dependencies\n };\n var result = partition(_listeners, function (listener) {\n return listener.name === id;\n });\n _listeners = result.fail;\n each$7(result.pass, function (listener) {\n listener.callback();\n });\n return addOn;\n };\n var remove = function (name) {\n delete urls[name];\n delete lookup[name];\n };\n var createUrl = function (baseUrl, dep) {\n if (typeof dep === 'object') {\n return dep;\n }\n return typeof baseUrl === 'string' ? {\n prefix: '',\n resource: dep,\n suffix: ''\n } : {\n prefix: baseUrl.prefix,\n resource: dep,\n suffix: baseUrl.suffix\n };\n };\n var addComponents = function (pluginName, scripts) {\n var pluginUrl = _this.urls[pluginName];\n each$7(scripts, function (script) {\n ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script);\n });\n };\n var loadDependencies = function (name, addOnUrl, success, scope) {\n var deps = dependencies(name);\n each$7(deps, function (dep) {\n var newUrl = createUrl(addOnUrl, dep);\n load(newUrl.resource, newUrl, undefined, undefined);\n });\n if (success) {\n if (scope) {\n success.call(scope);\n } else {\n success.call(ScriptLoader);\n }\n }\n };\n var load = function (name, addOnUrl, success, scope, failure) {\n if (urls[name]) {\n return;\n }\n var urlString = typeof addOnUrl === 'string' ? addOnUrl : addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;\n if (urlString.indexOf('/') !== 0 && urlString.indexOf('://') === -1) {\n urlString = AddOnManager.baseURL + '/' + urlString;\n }\n urls[name] = urlString.substring(0, urlString.lastIndexOf('/'));\n if (lookup[name]) {\n loadDependencies(name, addOnUrl, success, scope);\n } else {\n ScriptLoader.ScriptLoader.add(urlString, function () {\n return loadDependencies(name, addOnUrl, success, scope);\n }, scope, failure);\n }\n };\n var waitFor = function (name, callback) {\n if (lookup.hasOwnProperty(name)) {\n callback();\n } else {\n _listeners.push({\n name: name,\n callback: callback\n });\n }\n };\n return {\n items: items,\n urls: urls,\n lookup: lookup,\n _listeners: _listeners,\n get: get,\n dependencies: dependencies,\n requireLangPack: requireLangPack,\n add: add,\n remove: remove,\n createUrl: createUrl,\n addComponents: addComponents,\n load: load,\n waitFor: waitFor\n };\n }\n (function (AddOnManager) {\n AddOnManager.PluginManager = AddOnManager();\n AddOnManager.ThemeManager = AddOnManager();\n }(AddOnManager || (AddOnManager = {})));\n\n var before = function (marker, element) {\n var parent = $_ca6pc118jkmcwkfs.parent(marker);\n parent.each(function (v) {\n v.dom().insertBefore(element.dom(), marker.dom());\n });\n };\n var after = function (marker, element) {\n var sibling = $_ca6pc118jkmcwkfs.nextSibling(marker);\n sibling.fold(function () {\n var parent = $_ca6pc118jkmcwkfs.parent(marker);\n parent.each(function (v) {\n append(v, element);\n });\n }, function (v) {\n before(v, element);\n });\n };\n var prepend = function (parent, element) {\n var firstChild = $_ca6pc118jkmcwkfs.firstChild(parent);\n firstChild.fold(function () {\n append(parent, element);\n }, function (v) {\n parent.dom().insertBefore(element.dom(), v.dom());\n });\n };\n var append = function (parent, element) {\n parent.dom().appendChild(element.dom());\n };\n var appendAt = function (parent, element, index) {\n $_ca6pc118jkmcwkfs.child(parent, index).fold(function () {\n append(parent, element);\n }, function (v) {\n before(v, element);\n });\n };\n var wrap$1 = function (element, wrapper) {\n before(element, wrapper);\n append(wrapper, element);\n };\n var $_f4qt4v1yjkmcwkl2 = {\n before: before,\n after: after,\n prepend: prepend,\n append: append,\n appendAt: appendAt,\n wrap: wrap$1\n };\n\n var before$1 = function (marker, elements) {\n each(elements, function (x) {\n $_f4qt4v1yjkmcwkl2.before(marker, x);\n });\n };\n var after$1 = function (marker, elements) {\n each(elements, function (x, i) {\n var e = i === 0 ? marker : elements[i - 1];\n $_f4qt4v1yjkmcwkl2.after(e, x);\n });\n };\n var prepend$1 = function (parent, elements) {\n each(elements.slice().reverse(), function (x) {\n $_f4qt4v1yjkmcwkl2.prepend(parent, x);\n });\n };\n var append$1 = function (parent, elements) {\n each(elements, function (x) {\n $_f4qt4v1yjkmcwkl2.append(parent, x);\n });\n };\n var $_1ev7t1xjkmcwkky = {\n before: before$1,\n after: after$1,\n prepend: prepend$1,\n append: append$1\n };\n\n var empty = function (element) {\n element.dom().textContent = '';\n each($_ca6pc118jkmcwkfs.children(element), function (rogue) {\n remove$2(rogue);\n });\n };\n var remove$2 = function (element) {\n var dom = element.dom();\n if (dom.parentNode !== null)\n dom.parentNode.removeChild(dom);\n };\n var unwrap = function (wrapper) {\n var children = $_ca6pc118jkmcwkfs.children(wrapper);\n if (children.length > 0)\n $_1ev7t1xjkmcwkky.before(wrapper, children);\n remove$2(wrapper);\n };\n var $_eualm21wjkmcwkku = {\n empty: empty,\n remove: remove$2,\n unwrap: unwrap\n };\n\n var first$1 = function (fn, rate) {\n var timer = null;\n var cancel = function () {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n var throttle = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (timer === null) {\n timer = setTimeout(function () {\n fn.apply(null, args);\n timer = null;\n }, rate);\n }\n };\n return {\n cancel: cancel,\n throttle: throttle\n };\n };\n var last$3 = function (fn, rate) {\n var timer = null;\n var cancel = function () {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n var throttle = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (timer !== null)\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(null, args);\n timer = null;\n }, rate);\n };\n return {\n cancel: cancel,\n throttle: throttle\n };\n };\n\n var Cell = function (initial) {\n var value = initial;\n var get = function () {\n return value;\n };\n var set = function (v) {\n value = v;\n };\n var clone = function () {\n return Cell(get());\n };\n return {\n get: get,\n set: set,\n clone: clone\n };\n };\n\n function Toggler (turnOff, turnOn, initial) {\n var active = initial || false;\n var on = function () {\n turnOn();\n active = true;\n };\n var off = function () {\n turnOff();\n active = false;\n };\n var toggle = function () {\n var f = active ? off : on;\n f();\n };\n var isOn = function () {\n return active;\n };\n return {\n on: on,\n off: off,\n toggle: toggle,\n isOn: isOn\n };\n }\n\n var read = function (element, attr) {\n var value = $_29helg15jkmcwkf0.get(element, attr);\n return value === undefined || value === '' ? [] : value.split(' ');\n };\n var add = function (element, attr, id) {\n var old = read(element, attr);\n var nu = old.concat([id]);\n $_29helg15jkmcwkf0.set(element, attr, nu.join(' '));\n return true;\n };\n var remove$3 = function (element, attr, id) {\n var nu = filter(read(element, attr), function (v) {\n return v !== id;\n });\n if (nu.length > 0)\n $_29helg15jkmcwkf0.set(element, attr, nu.join(' '));\n else\n $_29helg15jkmcwkf0.remove(element, attr);\n return false;\n };\n var $_4m1njo26jkmcwkme = {\n read: read,\n add: add,\n remove: remove$3\n };\n\n var supports = function (element) {\n return element.dom().classList !== undefined;\n };\n var get$2 = function (element) {\n return $_4m1njo26jkmcwkme.read(element, 'class');\n };\n var add$1 = function (element, clazz) {\n return $_4m1njo26jkmcwkme.add(element, 'class', clazz);\n };\n var remove$4 = function (element, clazz) {\n return $_4m1njo26jkmcwkme.remove(element, 'class', clazz);\n };\n var toggle = function (element, clazz) {\n if (contains(get$2(element), clazz)) {\n return remove$4(element, clazz);\n } else {\n return add$1(element, clazz);\n }\n };\n var $_ewhsr825jkmcwkm2 = {\n get: get$2,\n add: add$1,\n remove: remove$4,\n toggle: toggle,\n supports: supports\n };\n\n var add$2 = function (element, clazz) {\n if ($_ewhsr825jkmcwkm2.supports(element))\n element.dom().classList.add(clazz);\n else\n $_ewhsr825jkmcwkm2.add(element, clazz);\n };\n var cleanClass = function (element) {\n var classList = $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList : $_ewhsr825jkmcwkm2.get(element);\n if (classList.length === 0) {\n $_29helg15jkmcwkf0.remove(element, 'class');\n }\n };\n var remove$5 = function (element, clazz) {\n if ($_ewhsr825jkmcwkm2.supports(element)) {\n var classList = element.dom().classList;\n classList.remove(clazz);\n } else\n $_ewhsr825jkmcwkm2.remove(element, clazz);\n cleanClass(element);\n };\n var toggle$1 = function (element, clazz) {\n return $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList.toggle(clazz) : $_ewhsr825jkmcwkm2.toggle(element, clazz);\n };\n var toggler = function (element, clazz) {\n var hasClasslist = $_ewhsr825jkmcwkm2.supports(element);\n var classList = element.dom().classList;\n var off = function () {\n if (hasClasslist)\n classList.remove(clazz);\n else\n $_ewhsr825jkmcwkm2.remove(element, clazz);\n };\n var on = function () {\n if (hasClasslist)\n classList.add(clazz);\n else\n $_ewhsr825jkmcwkm2.add(element, clazz);\n };\n return Toggler(off, on, has$1(element, clazz));\n };\n var has$1 = function (element, clazz) {\n return $_ewhsr825jkmcwkm2.supports(element) && element.dom().classList.contains(clazz);\n };\n var $_ftm4v023jkmcwklz = {\n add: add$2,\n remove: remove$5,\n toggle: toggle$1,\n toggler: toggler,\n has: has$1\n };\n\n var all$1 = function (predicate) {\n return descendants($_g4uup916jkmcwkfg.body(), predicate);\n };\n var ancestors = function (scope, predicate, isRoot) {\n return filter($_ca6pc118jkmcwkfs.parents(scope, isRoot), predicate);\n };\n var siblings$1 = function (scope, predicate) {\n return filter($_ca6pc118jkmcwkfs.siblings(scope), predicate);\n };\n var children$1 = function (scope, predicate) {\n return filter($_ca6pc118jkmcwkfs.children(scope), predicate);\n };\n var descendants = function (scope, predicate) {\n var result = [];\n each($_ca6pc118jkmcwkfs.children(scope), function (x) {\n if (predicate(x)) {\n result = result.concat([x]);\n }\n result = result.concat(descendants(x, predicate));\n });\n return result;\n };\n var $_733l9k28jkmcwkmj = {\n all: all$1,\n ancestors: ancestors,\n siblings: siblings$1,\n children: children$1,\n descendants: descendants\n };\n\n var all$2 = function (selector) {\n return $_4jv6d81gjkmcwkgv.all(selector);\n };\n var ancestors$1 = function (scope, selector, isRoot) {\n return $_733l9k28jkmcwkmj.ancestors(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n }, isRoot);\n };\n var siblings$2 = function (scope, selector) {\n return $_733l9k28jkmcwkmj.siblings(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var children$2 = function (scope, selector) {\n return $_733l9k28jkmcwkmj.children(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var descendants$1 = function (scope, selector) {\n return $_4jv6d81gjkmcwkgv.all(selector, scope);\n };\n var $_2gqm0n27jkmcwkmi = {\n all: all$2,\n ancestors: ancestors$1,\n siblings: siblings$2,\n children: children$2,\n descendants: descendants$1\n };\n\n function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\n return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\n }\n\n var first$2 = function (predicate) {\n return descendant($_g4uup916jkmcwkfg.body(), predicate);\n };\n var ancestor = function (scope, predicate, isRoot) {\n var element = scope.dom();\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n while (element.parentNode) {\n element = element.parentNode;\n var el = Element$$1.fromDom(element);\n if (predicate(el))\n return Option.some(el);\n else if (stop(el))\n break;\n }\n return Option.none();\n };\n var closest = function (scope, predicate, isRoot) {\n var is = function (scope) {\n return predicate(scope);\n };\n return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\n };\n var sibling$1 = function (scope, predicate) {\n var element = scope.dom();\n if (!element.parentNode)\n return Option.none();\n return child$1(Element$$1.fromDom(element.parentNode), function (x) {\n return !$_e4hu6h1ejkmcwkgj.eq(scope, x) && predicate(x);\n });\n };\n var child$1 = function (scope, predicate) {\n var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));\n return result.map(Element$$1.fromDom);\n };\n var descendant = function (scope, predicate) {\n var descend = function (node) {\n for (var i = 0; i < node.childNodes.length; i++) {\n if (predicate(Element$$1.fromDom(node.childNodes[i])))\n return Option.some(Element$$1.fromDom(node.childNodes[i]));\n var res = descend(node.childNodes[i]);\n if (res.isSome())\n return res;\n }\n return Option.none();\n };\n return descend(scope.dom());\n };\n var $_253nd92ajkmcwkmp = {\n first: first$2,\n ancestor: ancestor,\n closest: closest,\n sibling: sibling$1,\n child: child$1,\n descendant: descendant\n };\n\n var first$3 = function (selector) {\n return $_4jv6d81gjkmcwkgv.one(selector);\n };\n var ancestor$1 = function (scope, selector, isRoot) {\n return $_253nd92ajkmcwkmp.ancestor(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n }, isRoot);\n };\n var sibling$2 = function (scope, selector) {\n return $_253nd92ajkmcwkmp.sibling(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var child$2 = function (scope, selector) {\n return $_253nd92ajkmcwkmp.child(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var descendant$1 = function (scope, selector) {\n return $_4jv6d81gjkmcwkgv.one(selector, scope);\n };\n var closest$1 = function (scope, selector, isRoot) {\n return ClosestOrAncestor($_4jv6d81gjkmcwkgv.is, ancestor$1, scope, selector, isRoot);\n };\n var $_4ki4d929jkmcwkmn = {\n first: first$3,\n ancestor: ancestor$1,\n sibling: sibling$2,\n child: child$2,\n descendant: descendant$1,\n closest: closest$1\n };\n\n var annotation = constant('mce-annotation');\n var dataAnnotation = constant('data-mce-annotation');\n var dataAnnotationId = constant('data-mce-annotation-uid');\n\n var identify = function (editor, annotationName) {\n var rng = editor.selection.getRng();\n var start = Element$$1.fromDom(rng.startContainer);\n var root = Element$$1.fromDom(editor.getBody());\n var selector = annotationName.fold(function () {\n return '.' + annotation();\n }, function (an) {\n return '[' + dataAnnotation() + '=\"' + an + '\"]';\n });\n var newStart = $_ca6pc118jkmcwkfs.child(start, rng.startOffset).getOr(start);\n var closest = $_4ki4d929jkmcwkmn.closest(newStart, selector, function (n) {\n return $_e4hu6h1ejkmcwkgj.eq(n, root);\n });\n var getAttr = function (c, property) {\n if ($_29helg15jkmcwkf0.has(c, property)) {\n return Option.some($_29helg15jkmcwkf0.get(c, property));\n } else {\n return Option.none();\n }\n };\n return closest.bind(function (c) {\n return getAttr(c, '' + dataAnnotationId()).bind(function (uid) {\n return getAttr(c, '' + dataAnnotation()).map(function (name) {\n var elements = findMarkers(editor, uid);\n return {\n uid: uid,\n name: name,\n elements: elements\n };\n });\n });\n });\n };\n var isAnnotation = function (elem) {\n return $_2xwdjv11jkmcwke0.isElement(elem) && $_ftm4v023jkmcwklz.has(elem, annotation());\n };\n var findMarkers = function (editor, uid) {\n var body = Element$$1.fromDom(editor.getBody());\n return $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotationId() + '=\"' + uid + '\"]');\n };\n var findAll = function (editor, name) {\n var body = Element$$1.fromDom(editor.getBody());\n var markers = $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotation() + '=\"' + name + '\"]');\n var directory = {};\n each(markers, function (m) {\n var uid = $_29helg15jkmcwkf0.get(m, dataAnnotationId());\n var nodesAlready = directory.hasOwnProperty(uid) ? directory[uid] : [];\n directory[uid] = nodesAlready.concat([m]);\n });\n return directory;\n };\n\n var setup = function (editor, registry) {\n var changeCallbacks = Cell({});\n var initData = function () {\n return {\n listeners: [],\n previous: Cell(Option.none())\n };\n };\n var withCallbacks = function (name, f) {\n updateCallbacks(name, function (data) {\n f(data);\n return data;\n });\n };\n var updateCallbacks = function (name, f) {\n var callbackMap = changeCallbacks.get();\n var data = callbackMap.hasOwnProperty(name) ? callbackMap[name] : initData();\n var outputData = f(data);\n callbackMap[name] = outputData;\n changeCallbacks.set(callbackMap);\n };\n var fireCallbacks = function (name, uid, elements) {\n withCallbacks(name, function (data) {\n each(data.listeners, function (f) {\n return f(true, name, {\n uid: uid,\n nodes: map(elements, function (elem) {\n return elem.dom();\n })\n });\n });\n });\n };\n var fireNoAnnotation = function (name) {\n withCallbacks(name, function (data) {\n each(data.listeners, function (f) {\n return f(false, name);\n });\n });\n };\n var onNodeChange = last$3(function () {\n var callbackMap = changeCallbacks.get();\n var annotations = sort(keys(callbackMap));\n each(annotations, function (name) {\n updateCallbacks(name, function (data) {\n var prev = data.previous.get();\n identify(editor, Option.some(name)).fold(function () {\n if (prev.isSome()) {\n fireNoAnnotation(name);\n data.previous.set(Option.none());\n }\n }, function (_a) {\n var uid = _a.uid, name = _a.name, elements = _a.elements;\n if (!prev.is(uid)) {\n fireCallbacks(name, uid, elements);\n data.previous.set(Option.some(uid));\n }\n });\n return {\n previous: data.previous,\n listeners: data.listeners\n };\n });\n });\n }, 30);\n editor.on('remove', function () {\n onNodeChange.cancel();\n });\n editor.on('nodeChange', function () {\n onNodeChange.throttle();\n });\n var addListener = function (name, f) {\n updateCallbacks(name, function (data) {\n return {\n previous: data.previous,\n listeners: data.listeners.concat([f])\n };\n });\n };\n return { addListener: addListener };\n };\n\n var setup$1 = function (editor, registry) {\n var identifyParserNode = function (span) {\n var optAnnotation = Option.from(span.attributes.map[dataAnnotation()]);\n return optAnnotation.bind(registry.lookup);\n };\n editor.on('init', function () {\n editor.serializer.addNodeFilter('span', function (spans) {\n each(spans, function (span) {\n identifyParserNode(span).each(function (settings) {\n if (settings.persistent === false) {\n span.unwrap();\n }\n });\n });\n });\n });\n };\n\n var create$1 = function () {\n var annotations = {};\n var register = function (name, settings) {\n annotations[name] = {\n name: name,\n settings: settings\n };\n };\n var lookup = function (name) {\n return annotations.hasOwnProperty(name) ? Option.from(annotations[name]).map(function (a) {\n return a.settings;\n }) : Option.none();\n };\n return {\n register: register,\n lookup: lookup\n };\n };\n\n var unique = 0;\n var generate = function (prefix) {\n var date = new Date();\n var time = date.getTime();\n var random = Math.floor(Math.random() * 1000000000);\n unique++;\n return prefix + '_' + random + unique + String(time);\n };\n\n var add$3 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.add(element, x);\n });\n };\n var remove$6 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.remove(element, x);\n });\n };\n var toggle$2 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.toggle(element, x);\n });\n };\n var hasAll = function (element, classes) {\n return forall(classes, function (clazz) {\n return $_ftm4v023jkmcwklz.has(element, clazz);\n });\n };\n var hasAny = function (element, classes) {\n return exists(classes, function (clazz) {\n return $_ftm4v023jkmcwklz.has(element, clazz);\n });\n };\n var getNative = function (element) {\n var classList = element.dom().classList;\n var r = new Array(classList.length);\n for (var i = 0; i < classList.length; i++) {\n r[i] = classList.item(i);\n }\n return r;\n };\n var get$3 = function (element) {\n return $_ewhsr825jkmcwkm2.supports(element) ? getNative(element) : $_ewhsr825jkmcwkm2.get(element);\n };\n var $_dw1myr2hjkmcwko1 = {\n add: add$3,\n remove: remove$6,\n toggle: toggle$2,\n hasAll: hasAll,\n hasAny: hasAny,\n get: get$3\n };\n\n var clone$1 = function (original, deep) {\n return Element$$1.fromDom(original.dom().cloneNode(deep));\n };\n var shallow = function (original) {\n return clone$1(original, false);\n };\n var deep = function (original) {\n return clone$1(original, true);\n };\n var shallowAs = function (original, tag) {\n var nu = Element$$1.fromTag(tag);\n var attributes = $_29helg15jkmcwkf0.clone(original);\n $_29helg15jkmcwkf0.setAll(nu, attributes);\n return nu;\n };\n var copy$1 = function (original, tag) {\n var nu = shallowAs(original, tag);\n var cloneChildren = $_ca6pc118jkmcwkfs.children(deep(original));\n $_1ev7t1xjkmcwkky.append(nu, cloneChildren);\n return nu;\n };\n var mutate = function (original, tag) {\n var nu = shallowAs(original, tag);\n $_f4qt4v1yjkmcwkl2.before(original, nu);\n var children = $_ca6pc118jkmcwkfs.children(original);\n $_1ev7t1xjkmcwkky.append(nu, children);\n $_eualm21wjkmcwkku.remove(original);\n return nu;\n };\n var $_44uvy22ijkmcwko5 = {\n shallow: shallow,\n shallowAs: shallowAs,\n deep: deep,\n copy: copy$1,\n mutate: mutate\n };\n\n var slice$3 = [].slice;\n var constant$1 = function (value) {\n return function () {\n return value;\n };\n };\n var negate = function (predicate) {\n return function (x) {\n return !predicate(x);\n };\n };\n var compose$2 = function (f, g) {\n return function (x) {\n return f(g(x));\n };\n };\n var or = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var args = slice$3.call(arguments);\n return function (x) {\n for (var i = 0; i < args.length; i++) {\n if (args[i](x)) {\n return true;\n }\n }\n return false;\n };\n };\n var and = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var args = slice$3.call(arguments);\n return function (x) {\n for (var i = 0; i < args.length; i++) {\n if (!args[i](x)) {\n return false;\n }\n }\n return true;\n };\n };\n var curry$1 = function (fn) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = slice$3.call(arguments);\n if (args.length - 1 >= fn.length) {\n return fn.apply(this, args.slice(1));\n }\n return function () {\n var tempArgs = args.concat([].slice.call(arguments));\n return curry$1.apply(this, tempArgs);\n };\n };\n var noop$1 = function () {\n };\n var $_fl2rax2ljkmcwkot = {\n constant: constant$1,\n negate: negate,\n and: and,\n or: or,\n curry: curry$1,\n compose: compose$2,\n noop: noop$1\n };\n\n var ZWSP = '\\uFEFF';\n var isZwsp = function (chr) {\n return chr === ZWSP;\n };\n var trim$3 = function (text) {\n return text.replace(new RegExp(ZWSP, 'g'), '');\n };\n var $_cadvcr2pjkmcwkph = {\n isZwsp: isZwsp,\n ZWSP: ZWSP,\n trim: trim$3\n };\n\n var isElement$2 = $_bjermr1rjkmcwkij.isElement;\n var isText$2 = $_bjermr1rjkmcwkij.isText;\n var isCaretContainerBlock = function (node) {\n if (isText$2(node)) {\n node = node.parentNode;\n }\n return isElement$2(node) && node.hasAttribute('data-mce-caret');\n };\n var isCaretContainerInline = function (node) {\n return isText$2(node) && $_cadvcr2pjkmcwkph.isZwsp(node.data);\n };\n var isCaretContainer = function (node) {\n return isCaretContainerBlock(node) || isCaretContainerInline(node);\n };\n var hasContent = function (node) {\n return node.firstChild !== node.lastChild || !$_bjermr1rjkmcwkij.isBr(node.firstChild);\n };\n var insertInline = function (node, before) {\n var doc, sibling, textNode, parentNode;\n doc = node.ownerDocument;\n textNode = doc.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\n parentNode = node.parentNode;\n if (!before) {\n sibling = node.nextSibling;\n if (isText$2(sibling)) {\n if (isCaretContainer(sibling)) {\n return sibling;\n }\n if (startsWithCaretContainer(sibling)) {\n sibling.splitText(1);\n return sibling;\n }\n }\n if (node.nextSibling) {\n parentNode.insertBefore(textNode, node.nextSibling);\n } else {\n parentNode.appendChild(textNode);\n }\n } else {\n sibling = node.previousSibling;\n if (isText$2(sibling)) {\n if (isCaretContainer(sibling)) {\n return sibling;\n }\n if (endsWithCaretContainer(sibling)) {\n return sibling.splitText(sibling.data.length - 1);\n }\n }\n parentNode.insertBefore(textNode, node);\n }\n return textNode;\n };\n var isBeforeInline = function (pos) {\n var container = pos.container();\n return pos && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset()) === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var isAfterInline = function (pos) {\n var container = pos.container();\n return pos && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset() - 1) === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var createBogusBr = function () {\n var br = document.createElement('br');\n br.setAttribute('data-mce-bogus', '1');\n return br;\n };\n var insertBlock = function (blockName, node, before) {\n var doc, blockNode, parentNode;\n doc = node.ownerDocument;\n blockNode = doc.createElement(blockName);\n blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after');\n blockNode.setAttribute('data-mce-bogus', 'all');\n blockNode.appendChild(createBogusBr());\n parentNode = node.parentNode;\n if (!before) {\n if (node.nextSibling) {\n parentNode.insertBefore(blockNode, node.nextSibling);\n } else {\n parentNode.appendChild(blockNode);\n }\n } else {\n parentNode.insertBefore(blockNode, node);\n }\n return blockNode;\n };\n var startsWithCaretContainer = function (node) {\n return isText$2(node) && node.data[0] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var endsWithCaretContainer = function (node) {\n return isText$2(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var trimBogusBr = function (elm) {\n var brs = elm.getElementsByTagName('br');\n var lastBr = brs[brs.length - 1];\n if ($_bjermr1rjkmcwkij.isBogus(lastBr)) {\n lastBr.parentNode.removeChild(lastBr);\n }\n };\n var showCaretContainerBlock = function (caretContainer) {\n if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) {\n trimBogusBr(caretContainer);\n caretContainer.removeAttribute('data-mce-caret');\n caretContainer.removeAttribute('data-mce-bogus');\n caretContainer.removeAttribute('style');\n caretContainer.removeAttribute('_moz_abspos');\n return caretContainer;\n }\n return null;\n };\n var isRangeInCaretContainerBlock = function (range) {\n return isCaretContainerBlock(range.startContainer);\n };\n\n var isContentEditableTrue$1 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$1 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isBr$2 = $_bjermr1rjkmcwkij.isBr;\n var isText$3 = $_bjermr1rjkmcwkij.isText;\n var isInvalidTextElement = $_bjermr1rjkmcwkij.matchNodeNames('script style textarea');\n var isAtomicInline = $_bjermr1rjkmcwkij.matchNodeNames('img input textarea hr iframe video audio object');\n var isTable$1 = $_bjermr1rjkmcwkij.matchNodeNames('table');\n var isCaretContainer$1 = isCaretContainer;\n var isCaretCandidate = function (node) {\n if (isCaretContainer$1(node)) {\n return false;\n }\n if (isText$3(node)) {\n if (isInvalidTextElement(node.parentNode)) {\n return false;\n }\n return true;\n }\n return isAtomicInline(node) || isBr$2(node) || isTable$1(node) || isNonUiContentEditableFalse(node);\n };\n var isUnselectable = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.getAttribute('unselectable') === 'true';\n };\n var isNonUiContentEditableFalse = function (node) {\n return isUnselectable(node) === false && isContentEditableFalse$1(node);\n };\n var isInEditable = function (node, root) {\n for (node = node.parentNode; node && node !== root; node = node.parentNode) {\n if (isNonUiContentEditableFalse(node)) {\n return false;\n }\n if (isContentEditableTrue$1(node)) {\n return true;\n }\n }\n return true;\n };\n var isAtomicContentEditableFalse = function (node) {\n if (!isNonUiContentEditableFalse(node)) {\n return false;\n }\n return $_9g1fibmjkmcwkbu.reduce(node.getElementsByTagName('*'), function (result, elm) {\n return result || isContentEditableTrue$1(elm);\n }, false) !== true;\n };\n var isAtomic = function (node) {\n return isAtomicInline(node) || isAtomicContentEditableFalse(node);\n };\n var isEditableCaretCandidate = function (node, root) {\n return isCaretCandidate(node) && isInEditable(node, root);\n };\n\n var round = Math.round;\n var clone$2 = function (rect) {\n if (!rect) {\n return {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n return {\n left: round(rect.left),\n top: round(rect.top),\n bottom: round(rect.bottom),\n right: round(rect.right),\n width: round(rect.width),\n height: round(rect.height)\n };\n };\n var collapse = function (rect, toStart) {\n rect = clone$2(rect);\n if (toStart) {\n rect.right = rect.left;\n } else {\n rect.left = rect.left + rect.width;\n rect.right = rect.left;\n }\n rect.width = 0;\n return rect;\n };\n var isEqual = function (rect1, rect2) {\n return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right;\n };\n var isValidOverflow = function (overflowY, rect1, rect2) {\n return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2;\n };\n var isAbove = function (rect1, rect2) {\n if (rect1.bottom - rect1.height / 2 < rect2.top) {\n return true;\n }\n if (rect1.top > rect2.bottom) {\n return false;\n }\n return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2);\n };\n var isBelow = function (rect1, rect2) {\n if (rect1.top > rect2.bottom) {\n return true;\n }\n if (rect1.bottom < rect2.top) {\n return false;\n }\n return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2);\n };\n var containsXY = function (rect, clientX, clientY) {\n return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\n };\n var overflowX = function (outer, inner) {\n if (inner.left > outer.left && inner.right < outer.right) {\n return 0;\n } else {\n return inner.left < outer.left ? inner.left - outer.left : inner.right - outer.right;\n }\n };\n var overflowY = function (outer, inner) {\n if (inner.top > outer.top && inner.bottom < outer.bottom) {\n return 0;\n } else {\n return inner.top < outer.top ? inner.top - outer.top : inner.bottom - outer.bottom;\n }\n };\n var getOverflow = function (outer, inner) {\n return {\n x: overflowX(outer, inner),\n y: overflowY(outer, inner)\n };\n };\n\n var getSelectedNode = function (range) {\n var startContainer = range.startContainer, startOffset = range.startOffset;\n if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) {\n return startContainer.childNodes[startOffset];\n }\n return null;\n };\n var getNode = function (container, offset) {\n if (container.nodeType === 1 && container.hasChildNodes()) {\n if (offset >= container.childNodes.length) {\n offset = container.childNodes.length - 1;\n }\n container = container.childNodes[offset];\n }\n return container;\n };\n\n var extendingChars = new RegExp('[\\u0300-\\u036f\\u0483-\\u0487\\u0488-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u0610-\\u061a' + '\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7-\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0' + '\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08E3-\\u0902\\u093a\\u093c' + '\\u0941-\\u0948\\u094d\\u0951-\\u0957\\u0962-\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2-\\u09e3' + '\\u0a01-\\u0a02\\u0a3c\\u0a41-\\u0a42\\u0a47-\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70-\\u0a71\\u0a75\\u0a81-\\u0a82\\u0abc' + '\\u0ac1-\\u0ac5\\u0ac7-\\u0ac8\\u0acd\\u0ae2-\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57' + '\\u0b62-\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c00\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55-\\u0c56' + '\\u0c62-\\u0c63\\u0c81\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc-\\u0ccd\\u0cd5-\\u0cd6\\u0ce2-\\u0ce3\\u0d01\\u0d3e\\u0d41-\\u0d44' + '\\u0d4d\\u0d57\\u0d62-\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9' + '\\u0ebb-\\u0ebc\\u0ec8-\\u0ecd\\u0f18-\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97' + '\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039-\\u103a\\u103d-\\u103e\\u1058-\\u1059\\u105e-\\u1060\\u1071-\\u1074' + '\\u1082\\u1085-\\u1086\\u108d\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17b4-\\u17b5' + '\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927-\\u1928\\u1932\\u1939-\\u193b\\u1a17-\\u1a18' + '\\u1a1b\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1ab0-\\u1abd\\u1ABE\\u1b00-\\u1b03\\u1b34' + '\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80-\\u1b81\\u1ba2-\\u1ba5\\u1ba8-\\u1ba9\\u1bab-\\u1bad\\u1be6\\u1be8-\\u1be9' + '\\u1bed\\u1bef-\\u1bf1\\u1c2c-\\u1c33\\u1c36-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1cf4\\u1cf8-\\u1cf9' + '\\u1dc0-\\u1df5\\u1dfc-\\u1dff\\u200c-\\u200d\\u20d0-\\u20dc\\u20DD-\\u20E0\\u20e1\\u20E2-\\u20E4\\u20e5-\\u20f0\\u2cef-\\u2cf1' + '\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302d\\u302e-\\u302f\\u3099-\\u309a\\ua66f\\uA670-\\uA672\\ua674-\\ua67d\\uA69E-\\ua69f\\ua6f0-\\ua6f1' + '\\ua802\\ua806\\ua80b\\ua825-\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc' + '\\ua9e5\\uaa29-\\uaa2e\\uaa31-\\uaa32\\uaa35-\\uaa36\\uaa43\\uaa4c\\uaa7c\\uaab0\\uaab2-\\uaab4\\uaab7-\\uaab8\\uaabe-\\uaabf\\uaac1' + '\\uaaec-\\uaaed\\uaaf6\\uabe5\\uabe8\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\uFE2F\\uff9e-\\uff9f]');\n var isExtendingChar = function (ch) {\n return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n };\n\n var liftN = function (arr, f) {\n var r = [];\n for (var i = 0; i < arr.length; i++) {\n var x = arr[i];\n if (x.isSome()) {\n r.push(x.getOrDie());\n } else {\n return Option.none();\n }\n }\n return Option.some(f.apply(null, r));\n };\n\n var isElement$3 = $_bjermr1rjkmcwkij.isElement;\n var isCaretCandidate$1 = isCaretCandidate;\n var isBlock$1 = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table');\n var isFloated = $_bjermr1rjkmcwkij.matchStyleValues('float', 'left right');\n var isValidElementCaretCandidate = $_fl2rax2ljkmcwkot.and(isElement$3, isCaretCandidate$1, $_fl2rax2ljkmcwkot.negate(isFloated));\n var isNotPre = $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.matchStyleValues('white-space', 'pre pre-line pre-wrap'));\n var isText$4 = $_bjermr1rjkmcwkij.isText;\n var isBr$3 = $_bjermr1rjkmcwkij.isBr;\n var nodeIndex = DOMUtils$1.nodeIndex;\n var resolveIndex = getNode;\n var createRange = function (doc) {\n return 'createRange' in doc ? doc.createRange() : DOMUtils$1.DOM.createRng();\n };\n var isWhiteSpace = function (chr) {\n return chr && /[\\r\\n\\t ]/.test(chr);\n };\n var isRange = function (rng) {\n return !!rng.setStart && !!rng.setEnd;\n };\n var isHiddenWhiteSpaceRange = function (range$$1) {\n var container = range$$1.startContainer;\n var offset = range$$1.startOffset;\n var text;\n if (isWhiteSpace(range$$1.toString()) && isNotPre(container.parentNode) && $_bjermr1rjkmcwkij.isText(container)) {\n text = container.data;\n if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) {\n return true;\n }\n }\n return false;\n };\n var getBrClientRect = function (brNode) {\n var doc = brNode.ownerDocument;\n var rng = createRange(doc);\n var nbsp = doc.createTextNode('\\xA0');\n var parentNode = brNode.parentNode;\n var clientRect;\n parentNode.insertBefore(nbsp, brNode);\n rng.setStart(nbsp, 0);\n rng.setEnd(nbsp, 1);\n clientRect = clone$2(rng.getBoundingClientRect());\n parentNode.removeChild(nbsp);\n return clientRect;\n };\n var getBoundingClientRectWebKitText = function (rng) {\n var sc = rng.startContainer;\n var ec = rng.endContainer;\n var so = rng.startOffset;\n var eo = rng.endOffset;\n if (sc === ec && $_bjermr1rjkmcwkij.isText(ec) && so === 0 && eo === 1) {\n var newRng = rng.cloneRange();\n newRng.setEndAfter(ec);\n return getBoundingClientRect(newRng);\n } else {\n return null;\n }\n };\n var isZeroRect = function (r) {\n return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0;\n };\n var getBoundingClientRect = function (item) {\n var clientRect, clientRects;\n clientRects = item.getClientRects();\n if (clientRects.length > 0) {\n clientRect = clone$2(clientRects[0]);\n } else {\n clientRect = clone$2(item.getBoundingClientRect());\n }\n if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {\n return getBrClientRect(item);\n }\n if (isZeroRect(clientRect) && isRange(item)) {\n return getBoundingClientRectWebKitText(item);\n }\n return clientRect;\n };\n var collapseAndInflateWidth = function (clientRect, toStart) {\n var newClientRect = collapse(clientRect, toStart);\n newClientRect.width = 1;\n newClientRect.right = newClientRect.left + 1;\n return newClientRect;\n };\n var getCaretPositionClientRects = function (caretPosition) {\n var clientRects = [];\n var beforeNode, node;\n var addUniqueAndValidRect = function (clientRect) {\n if (clientRect.height === 0) {\n return;\n }\n if (clientRects.length > 0) {\n if (isEqual(clientRect, clientRects[clientRects.length - 1])) {\n return;\n }\n }\n clientRects.push(clientRect);\n };\n var addCharacterOffset = function (container, offset) {\n var range$$1 = createRange(container.ownerDocument);\n if (offset < container.data.length) {\n if (isExtendingChar(container.data[offset])) {\n return clientRects;\n }\n if (isExtendingChar(container.data[offset - 1])) {\n range$$1.setStart(container, offset);\n range$$1.setEnd(container, offset + 1);\n if (!isHiddenWhiteSpaceRange(range$$1)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\n return clientRects;\n }\n }\n }\n if (offset > 0) {\n range$$1.setStart(container, offset - 1);\n range$$1.setEnd(container, offset);\n if (!isHiddenWhiteSpaceRange(range$$1)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\n }\n }\n if (offset < container.data.length) {\n range$$1.setStart(container, offset);\n range$$1.setEnd(container, offset + 1);\n if (!isHiddenWhiteSpaceRange(range$$1)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), true));\n }\n }\n };\n if (isText$4(caretPosition.container())) {\n addCharacterOffset(caretPosition.container(), caretPosition.offset());\n return clientRects;\n }\n if (isElement$3(caretPosition.container())) {\n if (caretPosition.isAtEnd()) {\n node = resolveIndex(caretPosition.container(), caretPosition.offset());\n if (isText$4(node)) {\n addCharacterOffset(node, node.data.length);\n }\n if (isValidElementCaretCandidate(node) && !isBr$3(node)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\n }\n } else {\n node = resolveIndex(caretPosition.container(), caretPosition.offset());\n if (isText$4(node)) {\n addCharacterOffset(node, 0);\n }\n if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\n return clientRects;\n }\n beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1);\n if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) {\n if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false));\n }\n }\n if (isValidElementCaretCandidate(node)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true));\n }\n }\n }\n return clientRects;\n };\n function CaretPosition(container, offset, clientRects) {\n var isAtStart = function () {\n if (isText$4(container)) {\n return offset === 0;\n }\n return offset === 0;\n };\n var isAtEnd = function () {\n if (isText$4(container)) {\n return offset >= container.data.length;\n }\n return offset >= container.childNodes.length;\n };\n var toRange = function () {\n var range$$1;\n range$$1 = createRange(container.ownerDocument);\n range$$1.setStart(container, offset);\n range$$1.setEnd(container, offset);\n return range$$1;\n };\n var getClientRects = function () {\n if (!clientRects) {\n clientRects = getCaretPositionClientRects(CaretPosition(container, offset));\n }\n return clientRects;\n };\n var isVisible = function () {\n return getClientRects().length > 0;\n };\n var isEqual$$1 = function (caretPosition) {\n return caretPosition && container === caretPosition.container() && offset === caretPosition.offset();\n };\n var getNode$$1 = function (before) {\n return resolveIndex(container, before ? offset - 1 : offset);\n };\n return {\n container: $_fl2rax2ljkmcwkot.constant(container),\n offset: $_fl2rax2ljkmcwkot.constant(offset),\n toRange: toRange,\n getClientRects: getClientRects,\n isVisible: isVisible,\n isAtStart: isAtStart,\n isAtEnd: isAtEnd,\n isEqual: isEqual$$1,\n getNode: getNode$$1\n };\n }\n (function (CaretPosition) {\n CaretPosition.fromRangeStart = function (range$$1) {\n return CaretPosition(range$$1.startContainer, range$$1.startOffset);\n };\n CaretPosition.fromRangeEnd = function (range$$1) {\n return CaretPosition(range$$1.endContainer, range$$1.endOffset);\n };\n CaretPosition.after = function (node) {\n return CaretPosition(node.parentNode, nodeIndex(node) + 1);\n };\n CaretPosition.before = function (node) {\n return CaretPosition(node.parentNode, nodeIndex(node));\n };\n CaretPosition.isAbove = function (pos1, pos2) {\n return liftN([\n head(pos2.getClientRects()),\n last(pos1.getClientRects())\n ], isAbove).getOr(false);\n };\n CaretPosition.isBelow = function (pos1, pos2) {\n return liftN([\n last(pos2.getClientRects()),\n head(pos1.getClientRects())\n ], isBelow).getOr(false);\n };\n CaretPosition.isAtStart = function (pos) {\n return pos ? pos.isAtStart() : false;\n };\n CaretPosition.isAtEnd = function (pos) {\n return pos ? pos.isAtEnd() : false;\n };\n CaretPosition.isTextPosition = function (pos) {\n return pos ? $_bjermr1rjkmcwkij.isText(pos.container()) : false;\n };\n CaretPosition.isElementPosition = function (pos) {\n return CaretPosition.isTextPosition(pos) === false;\n };\n }(CaretPosition || (CaretPosition = {})));\n var CaretPosition$1 = CaretPosition;\n\n var isText$5 = $_bjermr1rjkmcwkij.isText;\n var isBogus$1 = $_bjermr1rjkmcwkij.isBogus;\n var nodeIndex$1 = DOMUtils$1.nodeIndex;\n var normalizedParent = function (node) {\n var parentNode = node.parentNode;\n if (isBogus$1(parentNode)) {\n return normalizedParent(parentNode);\n }\n return parentNode;\n };\n var getChildNodes = function (node) {\n if (!node) {\n return [];\n }\n return $_9g1fibmjkmcwkbu.reduce(node.childNodes, function (result, node) {\n if (isBogus$1(node) && node.nodeName !== 'BR') {\n result = result.concat(getChildNodes(node));\n } else {\n result.push(node);\n }\n return result;\n }, []);\n };\n var normalizedTextOffset = function (node, offset) {\n while (node = node.previousSibling) {\n if (!isText$5(node)) {\n break;\n }\n offset += node.data.length;\n }\n return offset;\n };\n var equal$1 = function (a) {\n return function (b) {\n return a === b;\n };\n };\n var normalizedNodeIndex = function (node) {\n var nodes, index, numTextFragments;\n nodes = getChildNodes(normalizedParent(node));\n index = $_9g1fibmjkmcwkbu.findIndex(nodes, equal$1(node), node);\n nodes = nodes.slice(0, index + 1);\n numTextFragments = $_9g1fibmjkmcwkbu.reduce(nodes, function (result, node, i) {\n if (isText$5(node) && isText$5(nodes[i - 1])) {\n result++;\n }\n return result;\n }, 0);\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.matchNodeNames(node.nodeName));\n index = $_9g1fibmjkmcwkbu.findIndex(nodes, equal$1(node), node);\n return index - numTextFragments;\n };\n var createPathItem = function (node) {\n var name;\n if (isText$5(node)) {\n name = 'text()';\n } else {\n name = node.nodeName.toLowerCase();\n }\n return name + '[' + normalizedNodeIndex(node) + ']';\n };\n var parentsUntil = function (root, node, predicate) {\n var parents = [];\n for (node = node.parentNode; node !== root; node = node.parentNode) {\n if (predicate && predicate(node)) {\n break;\n }\n parents.push(node);\n }\n return parents;\n };\n var create$2 = function (root, caretPosition) {\n var container, offset, path = [], outputOffset, childNodes, parents;\n container = caretPosition.container();\n offset = caretPosition.offset();\n if (isText$5(container)) {\n outputOffset = normalizedTextOffset(container, offset);\n } else {\n childNodes = container.childNodes;\n if (offset >= childNodes.length) {\n outputOffset = 'after';\n offset = childNodes.length - 1;\n } else {\n outputOffset = 'before';\n }\n container = childNodes[offset];\n }\n path.push(createPathItem(container));\n parents = parentsUntil(root, container);\n parents = $_9g1fibmjkmcwkbu.filter(parents, $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.isBogus));\n path = path.concat($_9g1fibmjkmcwkbu.map(parents, function (node) {\n return createPathItem(node);\n }));\n return path.reverse().join('/') + ',' + outputOffset;\n };\n var resolvePathItem = function (node, name, index) {\n var nodes = getChildNodes(node);\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, function (node, index) {\n return !isText$5(node) || !isText$5(nodes[index - 1]);\n });\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.matchNodeNames(name));\n return nodes[index];\n };\n var findTextPosition = function (container, offset) {\n var node = container, targetOffset = 0, dataLen;\n while (isText$5(node)) {\n dataLen = node.data.length;\n if (offset >= targetOffset && offset <= targetOffset + dataLen) {\n container = node;\n offset = offset - targetOffset;\n break;\n }\n if (!isText$5(node.nextSibling)) {\n container = node;\n offset = dataLen;\n break;\n }\n targetOffset += dataLen;\n node = node.nextSibling;\n }\n if (isText$5(container) && offset > container.data.length) {\n offset = container.data.length;\n }\n return CaretPosition$1(container, offset);\n };\n var resolve$2 = function (root, path) {\n var parts, container, offset;\n if (!path) {\n return null;\n }\n parts = path.split(',');\n path = parts[0].split('/');\n offset = parts.length > 1 ? parts[1] : 'before';\n container = $_9g1fibmjkmcwkbu.reduce(path, function (result, value) {\n value = /([\\w\\-\\(\\)]+)\\[([0-9]+)\\]/.exec(value);\n if (!value) {\n return null;\n }\n if (value[1] === 'text()') {\n value[1] = '#text';\n }\n return resolvePathItem(result, value[1], parseInt(value[2], 10));\n }, root);\n if (!container) {\n return null;\n }\n if (!isText$5(container)) {\n if (offset === 'after') {\n offset = nodeIndex$1(container) + 1;\n } else {\n offset = nodeIndex$1(container);\n }\n return CaretPosition$1(container.parentNode, offset);\n }\n return findTextPosition(container, parseInt(offset, 10));\n };\n\n var isContentEditableFalse$2 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var getNormalizedTextOffset = function (trim, container, offset) {\n var node, trimmedOffset;\n trimmedOffset = trim(container.data.slice(0, offset)).length;\n for (node = container.previousSibling; node && $_bjermr1rjkmcwkij.isText(node); node = node.previousSibling) {\n trimmedOffset += trim(node.data).length;\n }\n return trimmedOffset;\n };\n var getPoint = function (dom, trim, normalized, rng, start) {\n var container = rng[start ? 'startContainer' : 'endContainer'];\n var offset = rng[start ? 'startOffset' : 'endOffset'];\n var point = [];\n var childNodes, after = 0;\n var root = dom.getRoot();\n if ($_bjermr1rjkmcwkij.isText(container)) {\n point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset);\n } else {\n childNodes = container.childNodes;\n if (offset >= childNodes.length && childNodes.length) {\n after = 1;\n offset = Math.max(0, childNodes.length - 1);\n }\n point.push(dom.nodeIndex(childNodes[offset], normalized) + after);\n }\n for (; container && container !== root; container = container.parentNode) {\n point.push(dom.nodeIndex(container, normalized));\n }\n return point;\n };\n var getLocation = function (trim, selection, normalized, rng) {\n var dom = selection.dom, bookmark = {};\n bookmark.start = getPoint(dom, trim, normalized, rng, true);\n if (!selection.isCollapsed()) {\n bookmark.end = getPoint(dom, trim, normalized, rng, false);\n }\n return bookmark;\n };\n var trimEmptyTextNode = function (node) {\n if ($_bjermr1rjkmcwkij.isText(node) && node.data.length === 0) {\n node.parentNode.removeChild(node);\n }\n };\n var findIndex$3 = function (dom, name, element) {\n var count = 0;\n $_4ujg4tljkmcwkbk.each(dom.select(name), function (node) {\n if (node.getAttribute('data-mce-bogus') === 'all') {\n return;\n }\n if (node === element) {\n return false;\n }\n count++;\n });\n return count;\n };\n var moveEndPoint = function (rng, start) {\n var container, offset, childNodes;\n var prefix = start ? 'start' : 'end';\n container = rng[prefix + 'Container'];\n offset = rng[prefix + 'Offset'];\n if ($_bjermr1rjkmcwkij.isElement(container) && container.nodeName === 'TR') {\n childNodes = container.childNodes;\n container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];\n if (container) {\n offset = start ? 0 : container.childNodes.length;\n rng['set' + (start ? 'Start' : 'End')](container, offset);\n }\n }\n };\n var normalizeTableCellSelection = function (rng) {\n moveEndPoint(rng, true);\n moveEndPoint(rng, false);\n return rng;\n };\n var findSibling = function (node, offset) {\n var sibling;\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n node = getNode(node, offset);\n if (isContentEditableFalse$2(node)) {\n return node;\n }\n }\n if (isCaretContainer(node)) {\n if ($_bjermr1rjkmcwkij.isText(node) && isCaretContainerBlock(node)) {\n node = node.parentNode;\n }\n sibling = node.previousSibling;\n if (isContentEditableFalse$2(sibling)) {\n return sibling;\n }\n sibling = node.nextSibling;\n if (isContentEditableFalse$2(sibling)) {\n return sibling;\n }\n }\n };\n var findAdjacentContentEditableFalseElm = function (rng) {\n return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset);\n };\n var getOffsetBookmark = function (trim, normalized, selection) {\n var element = selection.getNode();\n var name = element ? element.nodeName : null;\n var rng = selection.getRng();\n if (isContentEditableFalse$2(element) || name === 'IMG') {\n return {\n name: name,\n index: findIndex$3(selection.dom, name, element)\n };\n }\n var sibling = findAdjacentContentEditableFalseElm(rng);\n if (sibling) {\n name = sibling.tagName;\n return {\n name: name,\n index: findIndex$3(selection.dom, name, sibling)\n };\n }\n return getLocation(trim, selection, normalized, rng);\n };\n var getCaretBookmark = function (selection) {\n var rng = selection.getRng();\n return {\n start: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)),\n end: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng))\n };\n };\n var getRangeBookmark = function (selection) {\n return { rng: selection.getRng() };\n };\n var createBookmarkSpan = function (dom, id, filled) {\n var args = {\n 'data-mce-type': 'bookmark',\n 'id': id,\n 'style': 'overflow:hidden;line-height:0px'\n };\n return filled ? dom.create('span', args, '') : dom.create('span', args);\n };\n var getPersistentBookmark = function (selection, filled) {\n var dom = selection.dom;\n var rng = selection.getRng();\n var id = dom.uniqueId();\n var collapsed = selection.isCollapsed();\n var element = selection.getNode();\n var name = element.nodeName;\n if (name === 'IMG') {\n return {\n name: name,\n index: findIndex$3(dom, name, element)\n };\n }\n var rng2 = normalizeTableCellSelection(rng.cloneRange());\n if (!collapsed) {\n rng2.collapse(false);\n var endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);\n rng2.insertNode(endBookmarkNode);\n trimEmptyTextNode(endBookmarkNode.nextSibling);\n }\n rng = normalizeTableCellSelection(rng);\n rng.collapse(true);\n var startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);\n rng.insertNode(startBookmarkNode);\n trimEmptyTextNode(startBookmarkNode.previousSibling);\n selection.moveToBookmark({\n id: id,\n keep: 1\n });\n return { id: id };\n };\n var getBookmark = function (selection, type, normalized) {\n if (type === 2) {\n return getOffsetBookmark($_cadvcr2pjkmcwkph.trim, normalized, selection);\n } else if (type === 3) {\n return getCaretBookmark(selection);\n } else if (type) {\n return getRangeBookmark(selection);\n } else {\n return getPersistentBookmark(selection, false);\n }\n };\n var $_aw3zi52jjkmcwkoa = {\n getBookmark: getBookmark,\n getUndoBookmark: curry(getOffsetBookmark, identity, true),\n getPersistentBookmark: getPersistentBookmark\n };\n\n var CARET_ID = '_mce_caret';\n var isCaretNode = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.id === CARET_ID;\n };\n var getParentCaretContainer = function (body, node) {\n while (node && node !== body) {\n if (node.id === CARET_ID) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n\n var isElement$4 = $_bjermr1rjkmcwkij.isElement;\n var isText$6 = $_bjermr1rjkmcwkij.isText;\n var removeNode = function (node) {\n var parentNode = node.parentNode;\n if (parentNode) {\n parentNode.removeChild(node);\n }\n };\n var getNodeValue = function (node) {\n try {\n return node.nodeValue;\n } catch (ex) {\n return '';\n }\n };\n var setNodeValue = function (node, text) {\n if (text.length === 0) {\n removeNode(node);\n } else {\n node.nodeValue = text;\n }\n };\n var trimCount = function (text) {\n var trimmedText = $_cadvcr2pjkmcwkph.trim(text);\n return {\n count: text.length - trimmedText.length,\n text: trimmedText\n };\n };\n var removeUnchanged = function (caretContainer, pos) {\n remove$7(caretContainer);\n return pos;\n };\n var removeTextAndReposition = function (caretContainer, pos) {\n var before = trimCount(caretContainer.data.substr(0, pos.offset()));\n var after = trimCount(caretContainer.data.substr(pos.offset()));\n var text = before.text + after.text;\n if (text.length > 0) {\n setNodeValue(caretContainer, text);\n return CaretPosition$1(caretContainer, pos.offset() - before.count);\n } else {\n return pos;\n }\n };\n var removeElementAndReposition = function (caretContainer, pos) {\n var parentNode = pos.container();\n var newPosition = indexOf(from$1(parentNode.childNodes), caretContainer).map(function (index) {\n return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos;\n }).getOr(pos);\n remove$7(caretContainer);\n return newPosition;\n };\n var removeTextCaretContainer = function (caretContainer, pos) {\n return isText$6(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n };\n var removeElementCaretContainer = function (caretContainer, pos) {\n return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n };\n var removeAndReposition = function (container, pos) {\n return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);\n };\n var remove$7 = function (caretContainerNode) {\n if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) {\n if (hasContent(caretContainerNode)) {\n caretContainerNode.removeAttribute('data-mce-caret');\n } else {\n removeNode(caretContainerNode);\n }\n }\n if (isText$6(caretContainerNode)) {\n var text = $_cadvcr2pjkmcwkph.trim(getNodeValue(caretContainerNode));\n setNodeValue(caretContainerNode, text);\n }\n };\n var $_xl2r331jkmcwkri = {\n removeAndReposition: removeAndReposition,\n remove: remove$7\n };\n\n var isContentEditableTrue$2 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$3 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var showCaret = function (direction, editor, node, before, scrollIntoView) {\n return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView);\n };\n var getNodeRange = function (node) {\n var rng = node.ownerDocument.createRange();\n rng.selectNode(node);\n return rng;\n };\n var selectNode = function (editor, node) {\n var e = editor.fire('BeforeObjectSelected', { target: node });\n if (e.isDefaultPrevented()) {\n return null;\n }\n return getNodeRange(node);\n };\n var renderCaretAtRange = function (editor, range, scrollIntoView) {\n var normalizedRange = normalizeRange(1, editor.getBody(), range);\n var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange);\n var caretPositionNode = caretPosition.getNode();\n if (isContentEditableFalse$3(caretPositionNode)) {\n return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);\n }\n var caretPositionBeforeNode = caretPosition.getNode(true);\n if (isContentEditableFalse$3(caretPositionBeforeNode)) {\n return showCaret(1, editor, caretPositionBeforeNode, false, false);\n }\n var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {\n return isContentEditableFalse$3(node) || isContentEditableTrue$2(node);\n });\n if (isContentEditableFalse$3(ceRoot)) {\n return showCaret(1, editor, ceRoot, false, scrollIntoView);\n }\n return null;\n };\n var renderRangeCaret = function (editor, range, scrollIntoView) {\n if (!range || !range.collapsed) {\n return range;\n }\n var caretRange = renderCaretAtRange(editor, range, scrollIntoView);\n if (caretRange) {\n return caretRange;\n }\n return range;\n };\n\n var HDirection;\n (function (HDirection) {\n HDirection[HDirection['Backwards'] = -1] = 'Backwards';\n HDirection[HDirection['Forwards'] = 1] = 'Forwards';\n }(HDirection || (HDirection = {})));\n var isContentEditableFalse$4 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isText$7 = $_bjermr1rjkmcwkij.isText;\n var isElement$5 = $_bjermr1rjkmcwkij.isElement;\n var isBr$4 = $_bjermr1rjkmcwkij.isBr;\n var isCaretCandidate$2 = isCaretCandidate;\n var isAtomic$1 = isAtomic;\n var isEditableCaretCandidate$1 = isEditableCaretCandidate;\n var getParents = function (node, root) {\n var parents = [];\n while (node && node !== root) {\n parents.push(node);\n node = node.parentNode;\n }\n return parents;\n };\n var nodeAtIndex = function (container, offset) {\n if (container.hasChildNodes() && offset < container.childNodes.length) {\n return container.childNodes[offset];\n }\n return null;\n };\n var getCaretCandidatePosition = function (direction, node) {\n if (isForwards(direction)) {\n if (isCaretCandidate$2(node.previousSibling) && !isText$7(node.previousSibling)) {\n return CaretPosition$1.before(node);\n }\n if (isText$7(node)) {\n return CaretPosition$1(node, 0);\n }\n }\n if (isBackwards(direction)) {\n if (isCaretCandidate$2(node.nextSibling) && !isText$7(node.nextSibling)) {\n return CaretPosition$1.after(node);\n }\n if (isText$7(node)) {\n return CaretPosition$1(node, node.data.length);\n }\n }\n if (isBackwards(direction)) {\n if (isBr$4(node)) {\n return CaretPosition$1.before(node);\n }\n return CaretPosition$1.after(node);\n }\n return CaretPosition$1.before(node);\n };\n var isBrBeforeBlock = function (node, root) {\n var next;\n if (!$_bjermr1rjkmcwkij.isBr(node)) {\n return false;\n }\n next = findCaretPosition(1, CaretPosition$1.after(node), root);\n if (!next) {\n return false;\n }\n return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root);\n };\n var findCaretPosition = function (direction, startPos, root) {\n var node, nextNode, innerNode;\n var rootContentEditableFalseElm, caretPosition;\n if (!isElement$5(root) || !startPos) {\n return null;\n }\n if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) {\n caretPosition = CaretPosition$1.after(root.lastChild);\n if (isBackwards(direction) && isCaretCandidate$2(root.lastChild) && isElement$5(root.lastChild)) {\n return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition;\n }\n } else {\n caretPosition = startPos;\n }\n var container = caretPosition.container();\n var offset = caretPosition.offset();\n if (isText$7(container)) {\n if (isBackwards(direction) && offset > 0) {\n return CaretPosition$1(container, --offset);\n }\n if (isForwards(direction) && offset < container.length) {\n return CaretPosition$1(container, ++offset);\n }\n node = container;\n } else {\n if (isBackwards(direction) && offset > 0) {\n nextNode = nodeAtIndex(container, offset - 1);\n if (isCaretCandidate$2(nextNode)) {\n if (!isAtomic$1(nextNode)) {\n innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\n if (innerNode) {\n if (isText$7(innerNode)) {\n return CaretPosition$1(innerNode, innerNode.data.length);\n }\n return CaretPosition$1.after(innerNode);\n }\n }\n if (isText$7(nextNode)) {\n return CaretPosition$1(nextNode, nextNode.data.length);\n }\n return CaretPosition$1.before(nextNode);\n }\n }\n if (isForwards(direction) && offset < container.childNodes.length) {\n nextNode = nodeAtIndex(container, offset);\n if (isCaretCandidate$2(nextNode)) {\n if (isBr$4(nextNode) && root.lastChild === nextNode) {\n return null;\n }\n if (isBrBeforeBlock(nextNode, root)) {\n return findCaretPosition(direction, CaretPosition$1.after(nextNode), root);\n }\n if (!isAtomic$1(nextNode)) {\n innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\n if (innerNode) {\n if (isText$7(innerNode)) {\n return CaretPosition$1(innerNode, 0);\n }\n return CaretPosition$1.before(innerNode);\n }\n }\n if (isText$7(nextNode)) {\n return CaretPosition$1(nextNode, 0);\n }\n return CaretPosition$1.after(nextNode);\n }\n }\n node = nextNode ? nextNode : caretPosition.getNode();\n }\n if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) {\n node = findNode(node, direction, $_fl2rax2ljkmcwkot.constant(true), root, true);\n if (isEditableCaretCandidate$1(node, root)) {\n return getCaretCandidatePosition(direction, node);\n }\n }\n nextNode = findNode(node, direction, isEditableCaretCandidate$1, root);\n rootContentEditableFalseElm = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.filter(getParents(container, root), isContentEditableFalse$4));\n if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) {\n if (isForwards(direction)) {\n caretPosition = CaretPosition$1.after(rootContentEditableFalseElm);\n } else {\n caretPosition = CaretPosition$1.before(rootContentEditableFalseElm);\n }\n return caretPosition;\n }\n if (nextNode) {\n return getCaretCandidatePosition(direction, nextNode);\n }\n return null;\n };\n var CaretWalker = function (root) {\n return {\n next: function (caretPosition) {\n return findCaretPosition(HDirection.Forwards, caretPosition, root);\n },\n prev: function (caretPosition) {\n return findCaretPosition(HDirection.Backwards, caretPosition, root);\n }\n };\n };\n\n var BreakType;\n (function (BreakType) {\n BreakType[BreakType['Br'] = 0] = 'Br';\n BreakType[BreakType['Block'] = 1] = 'Block';\n BreakType[BreakType['Wrap'] = 2] = 'Wrap';\n BreakType[BreakType['Eol'] = 3] = 'Eol';\n }(BreakType || (BreakType = {})));\n var flip = function (direction, positions) {\n return direction === HDirection.Backwards ? positions.reverse() : positions;\n };\n var walk$1 = function (direction, caretWalker, pos) {\n return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);\n };\n var getBreakType = function (scope, direction, currentPos, nextPos) {\n if ($_bjermr1rjkmcwkij.isBr(nextPos.getNode(direction === HDirection.Forwards))) {\n return BreakType.Br;\n } else if (isInSameBlock(currentPos, nextPos) === false) {\n return BreakType.Block;\n } else {\n return BreakType.Wrap;\n }\n };\n var getPositionsUntil = function (predicate, direction, scope, start) {\n var caretWalker = CaretWalker(scope);\n var currentPos = start, nextPos;\n var positions = [];\n while (currentPos) {\n nextPos = walk$1(direction, caretWalker, currentPos);\n if (!nextPos) {\n break;\n }\n if ($_bjermr1rjkmcwkij.isBr(nextPos.getNode(false))) {\n if (direction === HDirection.Forwards) {\n return {\n positions: flip(direction, positions).concat([nextPos]),\n breakType: BreakType.Br,\n breakAt: Option.some(nextPos)\n };\n } else {\n return {\n positions: flip(direction, positions),\n breakType: BreakType.Br,\n breakAt: Option.some(nextPos)\n };\n }\n }\n if (!nextPos.isVisible()) {\n currentPos = nextPos;\n continue;\n }\n if (predicate(currentPos, nextPos)) {\n var breakType = getBreakType(scope, direction, currentPos, nextPos);\n return {\n positions: flip(direction, positions),\n breakType: breakType,\n breakAt: Option.some(nextPos)\n };\n }\n positions.push(nextPos);\n currentPos = nextPos;\n }\n return {\n positions: flip(direction, positions),\n breakType: BreakType.Eol,\n breakAt: Option.none()\n };\n };\n var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {\n return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {\n var positions = getPositionsUntilBreak(scope, pos).positions;\n return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);\n }).getOr([]);\n };\n var findClosestHorizontalPositionFromPoint = function (positions, x) {\n return foldl(positions, function (acc, newPos) {\n return acc.fold(function () {\n return Option.some(newPos);\n }, function (lastPos) {\n return liftN([\n head(lastPos.getClientRects()),\n head(newPos.getClientRects())\n ], function (lastRect, newRect) {\n var lastDist = Math.abs(x - lastRect.left);\n var newDist = Math.abs(x - newRect.left);\n return newDist <= lastDist ? newPos : lastPos;\n }).or(acc);\n });\n }, Option.none());\n };\n var findClosestHorizontalPosition = function (positions, pos) {\n return head(pos.getClientRects()).bind(function (targetRect) {\n return findClosestHorizontalPositionFromPoint(positions, targetRect.left);\n });\n };\n var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);\n var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);\n var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\n var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\n var getFirstLinePositions = function (scope) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(scope).map(function (pos) {\n return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);\n }).getOr([]);\n };\n var getLastLinePositions = function (scope) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(scope).map(function (pos) {\n return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);\n }).getOr([]);\n };\n\n var deflate = function (rect, delta) {\n return {\n left: rect.left - delta,\n top: rect.top - delta,\n right: rect.right + delta * 2,\n bottom: rect.bottom + delta * 2,\n width: rect.width + delta,\n height: rect.height + delta\n };\n };\n var getCorners = function (getYAxisValue, tds) {\n return bind(tds, function (td) {\n var rect = deflate(td.getBoundingClientRect(), -1);\n return [\n {\n x: rect.left,\n y: getYAxisValue(rect),\n cell: td\n },\n {\n x: rect.right,\n y: getYAxisValue(rect),\n cell: td\n }\n ];\n });\n };\n var findClosestCorner = function (corners, x, y) {\n return foldl(corners, function (acc, newCorner) {\n return acc.fold(function () {\n return Option.some(newCorner);\n }, function (oldCorner) {\n var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));\n var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));\n return Option.some(newDist < oldDist ? newCorner : oldCorner);\n });\n }, Option.none());\n };\n var getClosestCell = function (getYAxisValue, isTargetCorner, table, x, y) {\n var cells = $_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(table), 'td,th').map(function (e) {\n return e.dom();\n });\n var corners = filter(getCorners(getYAxisValue, cells), function (corner) {\n return isTargetCorner(corner, y);\n });\n return findClosestCorner(corners, x, y).map(function (corner) {\n return corner.cell;\n });\n };\n var getBottomValue = function (rect) {\n return rect.bottom;\n };\n var getTopValue = function (rect) {\n return rect.top;\n };\n var isAbove$1 = function (corner, y) {\n return corner.y < y;\n };\n var isBelow$1 = function (corner, y) {\n return corner.y > y;\n };\n var getClosestCellAbove = curry(getClosestCell, getBottomValue, isAbove$1);\n var getClosestCellBelow = curry(getClosestCell, getTopValue, isBelow$1);\n var findClosestPositionInAboveCell = function (table, pos) {\n return head(pos.getClientRects()).bind(function (rect) {\n return getClosestCellAbove(table, rect.left, rect.top);\n }).bind(function (cell) {\n return findClosestHorizontalPosition(getLastLinePositions(cell), pos);\n });\n };\n var findClosestPositionInBelowCell = function (table, pos) {\n return last(pos.getClientRects()).bind(function (rect) {\n return getClosestCellBelow(table, rect.left, rect.top);\n }).bind(function (cell) {\n return findClosestHorizontalPosition(getFirstLinePositions(cell), pos);\n });\n };\n\n var getPos$1 = function (elm) {\n var x = 0, y = 0;\n var offsetParent = elm;\n while (offsetParent && offsetParent.nodeType) {\n x += offsetParent.offsetLeft || 0;\n y += offsetParent.offsetTop || 0;\n offsetParent = offsetParent.offsetParent;\n }\n return {\n x: x,\n y: y\n };\n };\n var fireScrollIntoViewEvent = function (editor, elm, alignToTop) {\n var scrollEvent = {\n elm: elm,\n alignToTop: alignToTop\n };\n editor.fire('scrollIntoView', scrollEvent);\n return scrollEvent.isDefaultPrevented();\n };\n var scrollElementIntoView = function (editor, elm, alignToTop) {\n var y, viewPort;\n var dom = editor.dom;\n var root = dom.getRoot();\n var viewPortY, viewPortH, offsetY = 0;\n if (fireScrollIntoViewEvent(editor, elm, alignToTop)) {\n return;\n }\n if (!$_bjermr1rjkmcwkij.isElement(elm)) {\n return;\n }\n if (alignToTop === false) {\n offsetY = elm.offsetHeight;\n }\n if (root.nodeName !== 'BODY') {\n var scrollContainer = editor.selection.getScrollContainer();\n if (scrollContainer) {\n y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY;\n viewPortH = scrollContainer.clientHeight;\n viewPortY = scrollContainer.scrollTop;\n if (y < viewPortY || y + 25 > viewPortY + viewPortH) {\n scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;\n }\n return;\n }\n }\n viewPort = dom.getViewPort(editor.getWin());\n y = dom.getPos(elm).y + offsetY;\n viewPortY = viewPort.y;\n viewPortH = viewPort.h;\n if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {\n editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);\n }\n };\n var getViewPortRect = function (editor) {\n if (editor.inline) {\n return editor.getBody().getBoundingClientRect();\n } else {\n var win = editor.getWin();\n return {\n left: 0,\n right: win.innerWidth,\n top: 0,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight\n };\n }\n };\n var scrollBy = function (editor, dx, dy) {\n if (editor.inline) {\n editor.getBody().scrollLeft += dx;\n editor.getBody().scrollTop += dy;\n } else {\n editor.getWin().scrollBy(dx, dy);\n }\n };\n var scrollRangeIntoView = function (editor, rng) {\n head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) {\n var bodyRect = getViewPortRect(editor);\n var overflow = getOverflow(bodyRect, rngRect);\n var margin = 4;\n var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin;\n var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin;\n scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0);\n });\n };\n var $_a6610x37jkmcwkt5 = {\n scrollElementIntoView: scrollElementIntoView,\n scrollRangeIntoView: scrollRangeIntoView\n };\n\n var getBodySetting = function (editor, name, defaultValue) {\n var value = editor.getParam(name, defaultValue);\n if (value.indexOf('=') !== -1) {\n var bodyObj = editor.getParam(name, '', 'hash');\n return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue;\n } else {\n return value;\n }\n };\n var getIframeAttrs = function (editor) {\n return editor.getParam('iframe_attrs', {});\n };\n var getDocType = function (editor) {\n return editor.getParam('doctype', '');\n };\n var getDocumentBaseUrl = function (editor) {\n return editor.getParam('document_base_url', '');\n };\n var getBodyId = function (editor) {\n return getBodySetting(editor, 'body_id', 'tinymce');\n };\n var getBodyClass = function (editor) {\n return getBodySetting(editor, 'body_class', '');\n };\n var getContentSecurityPolicy = function (editor) {\n return editor.getParam('content_security_policy', '');\n };\n var shouldPutBrInPre = function (editor) {\n return editor.getParam('br_in_pre', true);\n };\n var getForcedRootBlock = function (editor) {\n if (editor.getParam('force_p_newlines', false)) {\n return 'p';\n }\n var block = editor.getParam('forced_root_block', 'p');\n return block === false ? '' : block;\n };\n var getForcedRootBlockAttrs = function (editor) {\n return editor.getParam('forced_root_block_attrs', {});\n };\n var getBrNewLineSelector = function (editor) {\n return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption');\n };\n var getNoNewLineSelector = function (editor) {\n return editor.getParam('no_newline_selector', '');\n };\n var shouldKeepStyles = function (editor) {\n return editor.getParam('keep_styles', true);\n };\n var shouldEndContainerOnEmptyBlock = function (editor) {\n return editor.getParam('end_container_on_empty_block', false);\n };\n var getFontStyleValues = function (editor) {\n return $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_style_values', ''));\n };\n var getFontSizeClasses = function (editor) {\n return $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_classes', ''));\n };\n var $_2ycm1438jkmcwkta = {\n getIframeAttrs: getIframeAttrs,\n getDocType: getDocType,\n getDocumentBaseUrl: getDocumentBaseUrl,\n getBodyId: getBodyId,\n getBodyClass: getBodyClass,\n getContentSecurityPolicy: getContentSecurityPolicy,\n shouldPutBrInPre: shouldPutBrInPre,\n getForcedRootBlock: getForcedRootBlock,\n getForcedRootBlockAttrs: getForcedRootBlockAttrs,\n getBrNewLineSelector: getBrNewLineSelector,\n getNoNewLineSelector: getNoNewLineSelector,\n shouldKeepStyles: shouldKeepStyles,\n shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,\n getFontStyleValues: getFontStyleValues,\n getFontSizeClasses: getFontSizeClasses\n };\n\n var browser$2 = $_b1ykk4ojkmcwkcj.detect().browser;\n var isFakeCaretTableBrowser = function () {\n return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox();\n };\n var moveToRange = function (editor, rng) {\n editor.selection.setRng(rng);\n $_a6610x37jkmcwkt5.scrollRangeIntoView(editor, rng);\n };\n var isAtTableCellLine = function (getPositionsUntil, scope, pos) {\n var lineInfo = getPositionsUntil(scope, pos);\n if (lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0) {\n return lineInfo.breakAt.map(function (breakPos) {\n return getPositionsUntil(scope, breakPos).breakAt.isNone();\n }).getOr(true);\n } else {\n return lineInfo.breakAt.isNone();\n }\n };\n var isAtFirstTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilPreviousLine);\n var isAtLastTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilNextLine);\n var isCaretAtStartOrEndOfTable = function (forward, rng, table) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n return $_1m3f3j2yjkmcwkqg.positionIn(!forward, table).map(function (pos) {\n return pos.isEqual(caretPos);\n }).getOr(false);\n };\n var navigateHorizontally = function (editor, forward, table, td) {\n var rng = editor.selection.getRng();\n var direction = forward ? 1 : -1;\n if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {\n var newRng = showCaret(direction, editor, table, !forward, true);\n moveToRange(editor, newRng);\n return true;\n }\n return false;\n };\n var getClosestAbovePosition = function (root, table, start) {\n return findClosestPositionInAboveCell(table, start).orThunk(function () {\n return head(start.getClientRects()).bind(function (rect) {\n return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left);\n });\n }).getOr(CaretPosition$1.before(table));\n };\n var getClosestBelowPosition = function (root, table, start) {\n return findClosestPositionInBelowCell(table, start).orThunk(function () {\n return head(start.getClientRects()).bind(function (rect) {\n return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left);\n });\n }).getOr(CaretPosition$1.after(table));\n };\n var getTable = function (previous, pos) {\n var node = pos.getNode(previous);\n return $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none();\n };\n var renderBlock = function (down, editor, table, pos) {\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlock) {\n editor.undoManager.transact(function () {\n var element = Element$$1.fromTag(forcedRootBlock);\n $_29helg15jkmcwkf0.setAll(element, $_2ycm1438jkmcwkta.getForcedRootBlockAttrs(editor));\n $_f4qt4v1yjkmcwkl2.append(element, Element$$1.fromTag('br'));\n if (down) {\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(table), element);\n } else {\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(table), element);\n }\n var rng = editor.dom.createRng();\n rng.setStart(element.dom(), 0);\n rng.setEnd(element.dom(), 0);\n moveToRange(editor, rng);\n });\n } else {\n moveToRange(editor, pos.toRange());\n }\n };\n var moveCaret = function (editor, down, pos) {\n var table = down ? getTable(true, pos) : getTable(false, pos);\n var last$$1 = down === false;\n table.fold(function () {\n return moveToRange(editor, pos.toRange());\n }, function (table) {\n return $_1m3f3j2yjkmcwkqg.positionIn(last$$1, editor.getBody()).filter(function (lastPos) {\n return lastPos.isEqual(pos);\n }).fold(function () {\n return moveToRange(editor, pos.toRange());\n }, function (_) {\n return renderBlock(down, editor, table, pos);\n });\n });\n };\n var navigateVertically = function (editor, down, table, td) {\n var rng = editor.selection.getRng();\n var pos = CaretPosition$1.fromRangeStart(rng);\n var root = editor.getBody();\n if (!down && isAtFirstTableCellLine(td, pos)) {\n var newPos = getClosestAbovePosition(root, table, pos);\n moveCaret(editor, down, newPos);\n return true;\n } else if (down && isAtLastTableCellLine(td, pos)) {\n var newPos = getClosestBelowPosition(root, table, pos);\n moveCaret(editor, down, newPos);\n return true;\n } else {\n return false;\n }\n };\n var moveH = function (editor, forward) {\n return function () {\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n return navigateHorizontally(editor, forward, table, td);\n });\n }).getOr(false);\n };\n };\n var moveV = function (editor, forward) {\n return function () {\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n return navigateVertically(editor, forward, table, td);\n });\n }).getOr(false);\n };\n };\n\n var isContentEditableFalse$5 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isTableCell$1 = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && /^(TD|TH)$/i.test(node.tagName);\n };\n var getAbsoluteClientRect = function (root, element, before) {\n var clientRect = collapse(element.getBoundingClientRect(), before);\n var docElm, scrollX, scrollY, margin, rootRect;\n if (root.tagName === 'BODY') {\n docElm = root.ownerDocument.documentElement;\n scrollX = root.scrollLeft || docElm.scrollLeft;\n scrollY = root.scrollTop || docElm.scrollTop;\n } else {\n rootRect = root.getBoundingClientRect();\n scrollX = root.scrollLeft - rootRect.left;\n scrollY = root.scrollTop - rootRect.top;\n }\n clientRect.left += scrollX;\n clientRect.right += scrollX;\n clientRect.top += scrollY;\n clientRect.bottom += scrollY;\n clientRect.width = 1;\n margin = element.offsetWidth - element.clientWidth;\n if (margin > 0) {\n if (before) {\n margin *= -1;\n }\n clientRect.left += margin;\n clientRect.right += margin;\n }\n return clientRect;\n };\n var trimInlineCaretContainers = function (root) {\n var contentEditableFalseNodes, node, sibling, i, data;\n contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root);\n for (i = 0; i < contentEditableFalseNodes.length; i++) {\n node = contentEditableFalseNodes[i];\n sibling = node.previousSibling;\n if (endsWithCaretContainer(sibling)) {\n data = sibling.data;\n if (data.length === 1) {\n sibling.parentNode.removeChild(sibling);\n } else {\n sibling.deleteData(data.length - 1, 1);\n }\n }\n sibling = node.nextSibling;\n if (startsWithCaretContainer(sibling)) {\n data = sibling.data;\n if (data.length === 1) {\n sibling.parentNode.removeChild(sibling);\n } else {\n sibling.deleteData(0, 1);\n }\n }\n }\n };\n var FakeCaret = function (root, isBlock, hasFocus) {\n var lastVisualCaret = Cell(Option.none());\n var cursorInterval, caretContainerNode;\n var show = function (before, element) {\n var clientRect, rng;\n hide();\n if (isTableCell$1(element)) {\n return null;\n }\n if (isBlock(element)) {\n caretContainerNode = insertBlock('p', element, before);\n clientRect = getAbsoluteClientRect(root, element, before);\n DomQuery(caretContainerNode).css('top', clientRect.top);\n var caret = DomQuery('
').css(clientRect).appendTo(root)[0];\n lastVisualCaret.set(Option.some({\n caret: caret,\n element: element,\n before: before\n }));\n lastVisualCaret.get().each(function (caretState) {\n if (before) {\n DomQuery(caretState.caret).addClass('mce-visual-caret-before');\n }\n });\n startBlink();\n rng = element.ownerDocument.createRange();\n rng.setStart(caretContainerNode, 0);\n rng.setEnd(caretContainerNode, 0);\n } else {\n caretContainerNode = insertInline(element, before);\n rng = element.ownerDocument.createRange();\n if (isContentEditableFalse$5(caretContainerNode.nextSibling)) {\n rng.setStart(caretContainerNode, 0);\n rng.setEnd(caretContainerNode, 0);\n } else {\n rng.setStart(caretContainerNode, 1);\n rng.setEnd(caretContainerNode, 1);\n }\n return rng;\n }\n return rng;\n };\n var hide = function () {\n trimInlineCaretContainers(root);\n if (caretContainerNode) {\n $_xl2r331jkmcwkri.remove(caretContainerNode);\n caretContainerNode = null;\n }\n lastVisualCaret.get().each(function (caretState) {\n DomQuery(caretState.caret).remove();\n lastVisualCaret.set(Option.none());\n });\n clearInterval(cursorInterval);\n };\n var startBlink = function () {\n cursorInterval = $_3l01gcijkmcwk99.setInterval(function () {\n if (hasFocus()) {\n DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden');\n } else {\n DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden');\n }\n }, 500);\n };\n var reposition = function () {\n lastVisualCaret.get().each(function (caretState) {\n var clientRect = getAbsoluteClientRect(root, caretState.element, caretState.before);\n DomQuery(caretState.caret).css(clientRect);\n });\n };\n var destroy = function () {\n return $_3l01gcijkmcwk99.clearInterval(cursorInterval);\n };\n var getCss = function () {\n return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}';\n };\n return {\n show: show,\n hide: hide,\n getCss: getCss,\n reposition: reposition,\n destroy: destroy\n };\n };\n var isFakeCaretTarget = function (node) {\n return isContentEditableFalse$5(node) || $_bjermr1rjkmcwkij.isTable(node) && isFakeCaretTableBrowser();\n };\n\n var isContentEditableFalse$6 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isBlockLike = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table table-cell table-caption list-item');\n var isCaretContainer$2 = isCaretContainer;\n var isCaretContainerBlock$1 = isCaretContainerBlock;\n var curry$2 = $_fl2rax2ljkmcwkot.curry;\n var isElement$6 = $_bjermr1rjkmcwkij.isElement;\n var isCaretCandidate$3 = isCaretCandidate;\n var isForwards = function (direction) {\n return direction > 0;\n };\n var isBackwards = function (direction) {\n return direction < 0;\n };\n var skipCaretContainers = function (walk, shallow) {\n var node;\n while (node = walk(shallow)) {\n if (!isCaretContainerBlock$1(node)) {\n return node;\n }\n }\n return null;\n };\n var findNode = function (node, direction, predicateFn, rootNode, shallow) {\n var walker = new TreeWalker(node, rootNode);\n if (isBackwards(direction)) {\n if (isContentEditableFalse$6(node) || isCaretContainerBlock$1(node)) {\n node = skipCaretContainers(walker.prev, true);\n if (predicateFn(node)) {\n return node;\n }\n }\n while (node = skipCaretContainers(walker.prev, shallow)) {\n if (predicateFn(node)) {\n return node;\n }\n }\n }\n if (isForwards(direction)) {\n if (isContentEditableFalse$6(node) || isCaretContainerBlock$1(node)) {\n node = skipCaretContainers(walker.next, true);\n if (predicateFn(node)) {\n return node;\n }\n }\n while (node = skipCaretContainers(walker.next, shallow)) {\n if (predicateFn(node)) {\n return node;\n }\n }\n }\n return null;\n };\n var getParentBlock = function (node, rootNode) {\n while (node && node !== rootNode) {\n if (isBlockLike(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) {\n return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode);\n };\n var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) {\n var container, offset;\n if (!caretPosition) {\n return null;\n }\n container = caretPosition.container();\n offset = caretPosition.offset();\n if (!isElement$6(container)) {\n return null;\n }\n return container.childNodes[offset + relativeOffset];\n };\n var beforeAfter = function (before, node) {\n var range = node.ownerDocument.createRange();\n if (before) {\n range.setStartBefore(node);\n range.setEndBefore(node);\n } else {\n range.setStartAfter(node);\n range.setEndAfter(node);\n }\n return range;\n };\n var isNodesInSameBlock = function (root, node1, node2) {\n return getParentBlock(node1, root) === getParentBlock(node2, root);\n };\n var lean = function (left, root, node) {\n var sibling, siblingName;\n if (left) {\n siblingName = 'previousSibling';\n } else {\n siblingName = 'nextSibling';\n }\n while (node && node !== root) {\n sibling = node[siblingName];\n if (isCaretContainer$2(sibling)) {\n sibling = sibling[siblingName];\n }\n if (isContentEditableFalse$6(sibling)) {\n if (isNodesInSameBlock(root, sibling, node)) {\n return sibling;\n }\n break;\n }\n if (isCaretCandidate$3(sibling)) {\n break;\n }\n node = node.parentNode;\n }\n return null;\n };\n var before$2 = curry$2(beforeAfter, true);\n var after$2 = curry$2(beforeAfter, false);\n var normalizeRange = function (direction, root, range) {\n var node, container, offset, location;\n var leanLeft = curry$2(lean, true, root);\n var leanRight = curry$2(lean, false, root);\n container = range.startContainer;\n offset = range.startOffset;\n if (isCaretContainerBlock(container)) {\n if (!isElement$6(container)) {\n container = container.parentNode;\n }\n location = container.getAttribute('data-mce-caret');\n if (location === 'before') {\n node = container.nextSibling;\n if (isFakeCaretTarget(node)) {\n return before$2(node);\n }\n }\n if (location === 'after') {\n node = container.previousSibling;\n if (isFakeCaretTarget(node)) {\n return after$2(node);\n }\n }\n }\n if (!range.collapsed) {\n return range;\n }\n if ($_bjermr1rjkmcwkij.isText(container)) {\n if (isCaretContainer$2(container)) {\n if (direction === 1) {\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n }\n if (direction === -1) {\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n }\n return range;\n }\n if (endsWithCaretContainer(container) && offset >= container.data.length - 1) {\n if (direction === 1) {\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n }\n return range;\n }\n if (startsWithCaretContainer(container) && offset <= 1) {\n if (direction === -1) {\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n }\n return range;\n }\n if (offset === container.data.length) {\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n return range;\n }\n if (offset === 0) {\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n return range;\n }\n }\n return range;\n };\n var isNextToContentEditableFalse = function (relativeOffset, caretPosition) {\n var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition);\n return isContentEditableFalse$6(node) && !$_bjermr1rjkmcwkij.isBogusAll(node);\n };\n var isNextToTable = function (relativeOffset, caretPosition) {\n return $_bjermr1rjkmcwkij.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition));\n };\n var getRelativeCefElm = function (forward, caretPosition) {\n return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$6);\n };\n var getNormalizedRangeEndPoint = function (direction, root, range) {\n var normalizedRange = normalizeRange(direction, root, range);\n if (direction === -1) {\n return CaretPosition.fromRangeStart(normalizedRange);\n }\n return CaretPosition.fromRangeEnd(normalizedRange);\n };\n var isBeforeContentEditableFalse = curry$2(isNextToContentEditableFalse, 0);\n var isAfterContentEditableFalse = curry$2(isNextToContentEditableFalse, -1);\n var isBeforeTable = curry$2(isNextToTable, 0);\n var isAfterTable = curry$2(isNextToTable, -1);\n\n var walkToPositionIn = function (forward, root, start) {\n var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start);\n return fromPosition(forward, root, position);\n };\n var afterElement = function (node) {\n return $_bjermr1rjkmcwkij.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node);\n };\n var isBeforeOrStart = function (position) {\n if (CaretPosition$1.isTextPosition(position)) {\n return position.offset() === 0;\n } else {\n return isCaretCandidate(position.getNode());\n }\n };\n var isAfterOrEnd = function (position) {\n if (CaretPosition$1.isTextPosition(position)) {\n var container = position.container();\n return position.offset() === container.data.length;\n } else {\n return isCaretCandidate(position.getNode(true));\n }\n };\n var isBeforeAfterSameElement = function (from, to) {\n return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true);\n };\n var isAtBr = function (position) {\n return !CaretPosition$1.isTextPosition(position) && $_bjermr1rjkmcwkij.isBr(position.getNode());\n };\n var shouldSkipPosition = function (forward, from, to) {\n if (forward) {\n return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to);\n } else {\n return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to);\n }\n };\n var fromPosition = function (forward, root, pos) {\n var walker = CaretWalker(root);\n return Option.from(forward ? walker.next(pos) : walker.prev(pos));\n };\n var navigate = function (forward, root, from) {\n return fromPosition(forward, root, from).bind(function (to) {\n if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) {\n return fromPosition(forward, root, to);\n } else {\n return Option.some(to);\n }\n });\n };\n var positionIn = function (forward, element) {\n var startNode = forward ? element.firstChild : element.lastChild;\n if ($_bjermr1rjkmcwkij.isText(startNode)) {\n return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length));\n } else if (startNode) {\n if (isCaretCandidate(startNode)) {\n return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode));\n } else {\n return walkToPositionIn(forward, element, startNode);\n }\n } else {\n return Option.none();\n }\n };\n var $_1m3f3j2yjkmcwkqg = {\n fromPosition: fromPosition,\n nextPosition: curry(fromPosition, true),\n prevPosition: curry(fromPosition, false),\n navigate: navigate,\n positionIn: positionIn,\n firstPositionIn: curry(positionIn, true),\n lastPositionIn: curry(positionIn, false)\n };\n\n var isStringPathBookmark = function (bookmark) {\n return typeof bookmark.start === 'string';\n };\n var isRangeBookmark = function (bookmark) {\n return bookmark.hasOwnProperty('rng');\n };\n var isIdBookmark = function (bookmark) {\n return bookmark.hasOwnProperty('id');\n };\n var isIndexBookmark = function (bookmark) {\n return bookmark.hasOwnProperty('name');\n };\n var isPathBookmark = function (bookmark) {\n return $_4ujg4tljkmcwkbk.isArray(bookmark.start);\n };\n\n var addBogus = function (dom, node) {\n if (dom.isBlock(node) && !node.innerHTML && !$_cvvl9iajkmcwk25.ie) {\n node.innerHTML = '
';\n }\n return node;\n };\n var resolveCaretPositionBookmark = function (dom, bookmark) {\n var rng, pos;\n rng = dom.createRng();\n pos = resolve$2(dom.getRoot(), bookmark.start);\n rng.setStart(pos.container(), pos.offset());\n pos = resolve$2(dom.getRoot(), bookmark.end);\n rng.setEnd(pos.container(), pos.offset());\n return rng;\n };\n var insertZwsp = function (node, rng) {\n var textNode = node.ownerDocument.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\n node.appendChild(textNode);\n rng.setStart(textNode, 0);\n rng.setEnd(textNode, 0);\n };\n var isEmpty = function (node) {\n return node.hasChildNodes() === false;\n };\n var tryFindRangePosition = function (node, rng) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(node).fold(function () {\n return false;\n }, function (pos) {\n rng.setStart(pos.container(), pos.offset());\n rng.setEnd(pos.container(), pos.offset());\n return true;\n });\n };\n var padEmptyCaretContainer = function (root, node, rng) {\n if (isEmpty(node) && getParentCaretContainer(root, node)) {\n insertZwsp(node, rng);\n return true;\n } else {\n return false;\n }\n };\n var setEndPoint = function (dom, start, bookmark, rng) {\n var point = bookmark[start ? 'start' : 'end'];\n var i, node, offset, children;\n var root = dom.getRoot();\n if (point) {\n offset = point[0];\n for (node = root, i = point.length - 1; i >= 1; i--) {\n children = node.childNodes;\n if (padEmptyCaretContainer(root, node, rng)) {\n return true;\n }\n if (point[i] > children.length - 1) {\n if (padEmptyCaretContainer(root, node, rng)) {\n return true;\n }\n return tryFindRangePosition(node, rng);\n }\n node = children[point[i]];\n }\n if (node.nodeType === 3) {\n offset = Math.min(point[0], node.nodeValue.length);\n }\n if (node.nodeType === 1) {\n offset = Math.min(point[0], node.childNodes.length);\n }\n if (start) {\n rng.setStart(node, offset);\n } else {\n rng.setEnd(node, offset);\n }\n }\n return true;\n };\n var isValidTextNode = function (node) {\n return $_bjermr1rjkmcwkij.isText(node) && node.data.length > 0;\n };\n var restoreEndPoint = function (dom, suffix, bookmark) {\n var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev;\n var keep = bookmark.keep;\n var container, offset;\n if (marker) {\n node = marker.parentNode;\n if (suffix === 'start') {\n if (!keep) {\n idx = dom.nodeIndex(marker);\n } else {\n if (marker.hasChildNodes()) {\n node = marker.firstChild;\n idx = 1;\n } else if (isValidTextNode(marker.nextSibling)) {\n node = marker.nextSibling;\n idx = 0;\n } else if (isValidTextNode(marker.previousSibling)) {\n node = marker.previousSibling;\n idx = marker.previousSibling.data.length;\n } else {\n node = marker.parentNode;\n idx = dom.nodeIndex(marker) + 1;\n }\n }\n container = node;\n offset = idx;\n } else {\n if (!keep) {\n idx = dom.nodeIndex(marker);\n } else {\n if (marker.hasChildNodes()) {\n node = marker.firstChild;\n idx = 1;\n } else if (isValidTextNode(marker.previousSibling)) {\n node = marker.previousSibling;\n idx = marker.previousSibling.data.length;\n } else {\n node = marker.parentNode;\n idx = dom.nodeIndex(marker);\n }\n }\n container = node;\n offset = idx;\n }\n if (!keep) {\n prev = marker.previousSibling;\n next = marker.nextSibling;\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.grep(marker.childNodes), function (node) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n node.nodeValue = node.nodeValue.replace(/\\uFEFF/g, '');\n }\n });\n while (marker = dom.get(bookmark.id + '_' + suffix)) {\n dom.remove(marker, true);\n }\n if (prev && next && prev.nodeType === next.nodeType && $_bjermr1rjkmcwkij.isText(prev) && !$_cvvl9iajkmcwk25.opera) {\n idx = prev.nodeValue.length;\n prev.appendData(next.nodeValue);\n dom.remove(next);\n if (suffix === 'start') {\n container = prev;\n offset = idx;\n } else {\n container = prev;\n offset = idx;\n }\n }\n }\n return Option.some(CaretPosition$1(container, offset));\n } else {\n return Option.none();\n }\n };\n var alt = function (o1, o2) {\n return o1.isSome() ? o1 : o2;\n };\n var resolvePaths = function (dom, bookmark) {\n var rng = dom.createRng();\n if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) {\n return Option.some(rng);\n } else {\n return Option.none();\n }\n };\n var resolveId = function (dom, bookmark) {\n var startPos = restoreEndPoint(dom, 'start', bookmark);\n var endPos = restoreEndPoint(dom, 'end', bookmark);\n return liftN([\n startPos,\n alt(endPos, startPos)\n ], function (spos, epos) {\n var rng = dom.createRng();\n rng.setStart(addBogus(dom, spos.container()), spos.offset());\n rng.setEnd(addBogus(dom, epos.container()), epos.offset());\n return rng;\n });\n };\n var resolveIndex$1 = function (dom, bookmark) {\n return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) {\n var rng = dom.createRng();\n rng.selectNode(elm);\n return rng;\n });\n };\n var resolve$3 = function (selection, bookmark) {\n var dom = selection.dom;\n if (bookmark) {\n if (isPathBookmark(bookmark)) {\n return resolvePaths(dom, bookmark);\n } else if (isStringPathBookmark(bookmark)) {\n return Option.some(resolveCaretPositionBookmark(dom, bookmark));\n } else if (isIdBookmark(bookmark)) {\n return resolveId(dom, bookmark);\n } else if (isIndexBookmark(bookmark)) {\n return resolveIndex$1(dom, bookmark);\n } else if (isRangeBookmark(bookmark)) {\n return Option.some(bookmark.rng);\n }\n }\n return Option.none();\n };\n var $_1fx23n2wjkmcwkq6 = { resolve: resolve$3 };\n\n var getBookmark$1 = function (selection, type, normalized) {\n return $_aw3zi52jjkmcwkoa.getBookmark(selection, type, normalized);\n };\n var moveToBookmark = function (selection, bookmark) {\n $_1fx23n2wjkmcwkq6.resolve(selection, bookmark).each(function (rng) {\n selection.setRng(rng);\n });\n };\n var isBookmarkNode$1 = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n };\n var $_e4btcc2vjkmcwkq3 = {\n getBookmark: getBookmark$1,\n moveToBookmark: moveToBookmark,\n isBookmarkNode: isBookmarkNode$1\n };\n\n var isInlineBlock = function (node) {\n return node && /^(IMG)$/.test(node.nodeName);\n };\n var moveStart = function (dom, selection, rng) {\n var offset = rng.startOffset;\n var container = rng.startContainer, walker, node, nodes;\n if (rng.startContainer === rng.endContainer) {\n if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) {\n return;\n }\n }\n if (container.nodeType === 1) {\n nodes = container.childNodes;\n if (offset < nodes.length) {\n container = nodes[offset];\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\n } else {\n container = nodes[nodes.length - 1];\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\n walker.next(true);\n }\n for (node = walker.current(); node; node = walker.next()) {\n if (node.nodeType === 3 && !isWhiteSpaceNode(node)) {\n rng.setStart(node, 0);\n selection.setRng(rng);\n return;\n }\n }\n }\n };\n var getNonWhiteSpaceSibling = function (node, next, inc) {\n if (node) {\n next = next ? 'nextSibling' : 'previousSibling';\n for (node = inc ? node : node[next]; node; node = node[next]) {\n if (node.nodeType === 1 || !isWhiteSpaceNode(node)) {\n return node;\n }\n }\n }\n };\n var isTextBlock$1 = function (editor, name) {\n if (name.nodeType) {\n name = name.nodeName;\n }\n return !!editor.schema.getTextBlockElements()[name.toLowerCase()];\n };\n var isValid = function (ed, parent, child) {\n return ed.schema.isValidChild(parent, child);\n };\n var isWhiteSpaceNode = function (node) {\n return node && node.nodeType === 3 && /^([\\t \\r\\n]+|)$/.test(node.nodeValue);\n };\n var replaceVars = function (value, vars) {\n if (typeof value !== 'string') {\n value = value(vars);\n } else if (vars) {\n value = value.replace(/%(\\w+)/g, function (str, name) {\n return vars[name] || str;\n });\n }\n return value;\n };\n var isEq = function (str1, str2) {\n str1 = str1 || '';\n str2 = str2 || '';\n str1 = '' + (str1.nodeName || str1);\n str2 = '' + (str2.nodeName || str2);\n return str1.toLowerCase() === str2.toLowerCase();\n };\n var normalizeStyleValue = function (dom, value, name) {\n if (name === 'color' || name === 'backgroundColor') {\n value = dom.toHex(value);\n }\n if (name === 'fontWeight' && value === 700) {\n value = 'bold';\n }\n if (name === 'fontFamily') {\n value = value.replace(/[\\'\\\"]/g, '').replace(/,\\s+/g, ',');\n }\n return '' + value;\n };\n var getStyle = function (dom, node, name) {\n return normalizeStyleValue(dom, dom.getStyle(node, name), name);\n };\n var getTextDecoration = function (dom, node) {\n var decoration;\n dom.getParent(node, function (n) {\n decoration = dom.getStyle(n, 'text-decoration');\n return decoration && decoration !== 'none';\n });\n return decoration;\n };\n var getParents$1 = function (dom, node, selector) {\n return dom.getParents(node, selector, dom.getRoot());\n };\n var $_dli08w3ajkmcwktg = {\n isInlineBlock: isInlineBlock,\n moveStart: moveStart,\n getNonWhiteSpaceSibling: getNonWhiteSpaceSibling,\n isTextBlock: isTextBlock$1,\n isValid: isValid,\n isWhiteSpaceNode: isWhiteSpaceNode,\n replaceVars: replaceVars,\n isEq: isEq,\n normalizeStyleValue: normalizeStyleValue,\n getStyle: getStyle,\n getTextDecoration: getTextDecoration,\n getParents: getParents$1\n };\n\n var isBookmarkNode$2 = $_e4btcc2vjkmcwkq3.isBookmarkNode;\n var getParents$2 = $_dli08w3ajkmcwktg.getParents;\n var isWhiteSpaceNode$1 = $_dli08w3ajkmcwktg.isWhiteSpaceNode;\n var isTextBlock$2 = $_dli08w3ajkmcwktg.isTextBlock;\n var findLeaf = function (node, offset) {\n if (typeof offset === 'undefined') {\n offset = node.nodeType === 3 ? node.length : node.childNodes.length;\n }\n while (node && node.hasChildNodes()) {\n node = node.childNodes[offset];\n if (node) {\n offset = node.nodeType === 3 ? node.length : node.childNodes.length;\n }\n }\n return {\n node: node,\n offset: offset\n };\n };\n var excludeTrailingWhitespace = function (endContainer, endOffset) {\n var leaf = findLeaf(endContainer, endOffset);\n if (leaf.node) {\n while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {\n leaf = findLeaf(leaf.node.previousSibling);\n }\n if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {\n if (leaf.offset > 1) {\n endContainer = leaf.node;\n endContainer.splitText(leaf.offset - 1);\n }\n }\n }\n return endContainer;\n };\n var isBogusBr = function (node) {\n return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling;\n };\n var findParentContentEditable = function (dom, node) {\n var parent = node;\n while (parent) {\n if (parent.nodeType === 1 && dom.getContentEditable(parent)) {\n return dom.getContentEditable(parent) === 'false' ? parent : node;\n }\n parent = parent.parentNode;\n }\n return node;\n };\n var findSpace = function (start, remove, node, offset) {\n var pos, pos2;\n var str = node.nodeValue;\n if (typeof offset === 'undefined') {\n offset = start ? str.length : 0;\n }\n if (start) {\n pos = str.lastIndexOf(' ', offset);\n pos2 = str.lastIndexOf('\\xA0', offset);\n pos = pos > pos2 ? pos : pos2;\n if (pos !== -1 && !remove) {\n pos++;\n }\n } else {\n pos = str.indexOf(' ', offset);\n pos2 = str.indexOf('\\xA0', offset);\n pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;\n }\n return pos;\n };\n var findWordEndPoint = function (dom, body, container, offset, start, remove) {\n var walker, node, pos, lastTextNode;\n if (container.nodeType === 3) {\n pos = findSpace(start, remove, container, offset);\n if (pos !== -1) {\n return {\n container: container,\n offset: pos\n };\n }\n lastTextNode = container;\n }\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body);\n while (node = walker[start ? 'prev' : 'next']()) {\n if (node.nodeType === 3) {\n lastTextNode = node;\n pos = findSpace(start, remove, node);\n if (pos !== -1) {\n return {\n container: node,\n offset: pos\n };\n }\n } else if (dom.isBlock(node)) {\n break;\n }\n }\n if (lastTextNode) {\n if (start) {\n offset = 0;\n } else {\n offset = lastTextNode.length;\n }\n return {\n container: lastTextNode,\n offset: offset\n };\n }\n };\n var findSelectorEndPoint = function (dom, format, rng, container, siblingName) {\n var parents, i, y, curFormat;\n if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) {\n container = container[siblingName];\n }\n parents = getParents$2(dom, container);\n for (i = 0; i < parents.length; i++) {\n for (y = 0; y < format.length; y++) {\n curFormat = format[y];\n if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) {\n continue;\n }\n if (dom.is(parents[i], curFormat.selector)) {\n return parents[i];\n }\n }\n }\n return container;\n };\n var findBlockEndPoint = function (editor, format, container, siblingName) {\n var node;\n var dom = editor.dom;\n var root = dom.getRoot();\n if (!format[0].wrapper) {\n node = dom.getParent(container, format[0].block, root);\n }\n if (!node) {\n var scopeRoot = dom.getParent(container, 'LI,TD,TH');\n node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) {\n return node !== root && isTextBlock$2(editor, node);\n }, scopeRoot);\n }\n if (node && format[0].wrapper) {\n node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node;\n }\n if (!node) {\n node = container;\n while (node[siblingName] && !dom.isBlock(node[siblingName])) {\n node = node[siblingName];\n if ($_dli08w3ajkmcwktg.isEq(node, 'br')) {\n break;\n }\n }\n }\n return node || container;\n };\n var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) {\n var container, parent, sibling, siblingName, root;\n container = parent = start ? startContainer : endContainer;\n siblingName = start ? 'previousSibling' : 'nextSibling';\n root = dom.getRoot();\n if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) {\n if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {\n return container;\n }\n }\n while (true) {\n if (!format[0].block_expand && dom.isBlock(parent)) {\n return parent;\n }\n for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {\n if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) {\n return parent;\n }\n }\n if (parent === root || parent.parentNode === root) {\n container = parent;\n break;\n }\n parent = parent.parentNode;\n }\n return container;\n };\n var expandRng = function (editor, rng, format, remove) {\n var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n var dom = editor.dom;\n if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\n startContainer = getNode(startContainer, startOffset);\n if (startContainer.nodeType === 3) {\n startOffset = 0;\n }\n }\n if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\n endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1);\n if (endContainer.nodeType === 3) {\n endOffset = endContainer.nodeValue.length;\n }\n }\n startContainer = findParentContentEditable(dom, startContainer);\n endContainer = findParentContentEditable(dom, endContainer);\n if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) {\n startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode;\n startContainer = startContainer.nextSibling || startContainer;\n if (startContainer.nodeType === 3) {\n startOffset = 0;\n }\n }\n if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) {\n endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode;\n endContainer = endContainer.previousSibling || endContainer;\n if (endContainer.nodeType === 3) {\n endOffset = endContainer.length;\n }\n }\n if (format[0].inline) {\n if (rng.collapsed) {\n endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove);\n if (endPoint) {\n startContainer = endPoint.container;\n startOffset = endPoint.offset;\n }\n endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove);\n if (endPoint) {\n endContainer = endPoint.container;\n endOffset = endPoint.offset;\n }\n }\n endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset);\n }\n if (format[0].inline || format[0].block_expand) {\n if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) {\n startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\n }\n if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) {\n endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\n }\n }\n if (format[0].selector && format[0].expand !== false && !format[0].inline) {\n startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling');\n endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling');\n }\n if (format[0].block || format[0].selector) {\n startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling');\n endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling');\n if (format[0].block) {\n if (!dom.isBlock(startContainer)) {\n startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\n }\n if (!dom.isBlock(endContainer)) {\n endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\n }\n }\n }\n if (startContainer.nodeType === 1) {\n startOffset = dom.nodeIndex(startContainer);\n startContainer = startContainer.parentNode;\n }\n if (endContainer.nodeType === 1) {\n endOffset = dom.nodeIndex(endContainer) + 1;\n endContainer = endContainer.parentNode;\n }\n return {\n startContainer: startContainer,\n startOffset: startOffset,\n endContainer: endContainer,\n endOffset: endOffset\n };\n };\n var $_97afwh2ujkmcwkpw = { expandRng: expandRng };\n\n var each$8 = $_4ujg4tljkmcwkbk.each;\n var getEndChild = function (container, index) {\n var childNodes = container.childNodes;\n index--;\n if (index > childNodes.length - 1) {\n index = childNodes.length - 1;\n } else if (index < 0) {\n index = 0;\n }\n return childNodes[index] || container;\n };\n var walk$2 = function (dom, rng, callback) {\n var startContainer = rng.startContainer;\n var startOffset = rng.startOffset;\n var endContainer = rng.endContainer;\n var endOffset = rng.endOffset;\n var ancestor;\n var startPoint;\n var endPoint;\n var node;\n var parent;\n var siblings;\n var nodes;\n nodes = dom.select('td[data-mce-selected],th[data-mce-selected]');\n if (nodes.length > 0) {\n each$8(nodes, function (node) {\n callback([node]);\n });\n return;\n }\n var exclude = function (nodes) {\n var node;\n node = nodes[0];\n if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {\n nodes.splice(0, 1);\n }\n node = nodes[nodes.length - 1];\n if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {\n nodes.splice(nodes.length - 1, 1);\n }\n return nodes;\n };\n var collectSiblings = function (node, name, endNode) {\n var siblings = [];\n for (; node && node !== endNode; node = node[name]) {\n siblings.push(node);\n }\n return siblings;\n };\n var findEndPoint = function (node, root) {\n do {\n if (node.parentNode === root) {\n return node;\n }\n node = node.parentNode;\n } while (node);\n };\n var walkBoundary = function (startNode, endNode, next) {\n var siblingName = next ? 'nextSibling' : 'previousSibling';\n for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) {\n parent = node.parentNode;\n siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName);\n if (siblings.length) {\n if (!next) {\n siblings.reverse();\n }\n callback(exclude(siblings));\n }\n }\n };\n if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\n startContainer = startContainer.childNodes[startOffset];\n }\n if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\n endContainer = getEndChild(endContainer, endOffset);\n }\n if (startContainer === endContainer) {\n return callback(exclude([startContainer]));\n }\n ancestor = dom.findCommonAncestor(startContainer, endContainer);\n for (node = startContainer; node; node = node.parentNode) {\n if (node === endContainer) {\n return walkBoundary(startContainer, ancestor, true);\n }\n if (node === ancestor) {\n break;\n }\n }\n for (node = endContainer; node; node = node.parentNode) {\n if (node === startContainer) {\n return walkBoundary(endContainer, ancestor);\n }\n if (node === ancestor) {\n break;\n }\n }\n startPoint = findEndPoint(startContainer, ancestor) || startContainer;\n endPoint = findEndPoint(endContainer, ancestor) || endContainer;\n walkBoundary(startContainer, startPoint, true);\n siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint);\n if (siblings.length) {\n callback(exclude(siblings));\n }\n walkBoundary(endContainer, endPoint);\n };\n var $_cuckrv3bjkmcwktk = { walk: walk$2 };\n\n var zeroWidth = function () {\n return '\\uFEFF';\n };\n\n function NodeValue (is, name) {\n var get = function (element) {\n if (!is(element))\n throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n return getOption(element).getOr('');\n };\n var getOptionIE10 = function (element) {\n try {\n return getOptionSafe(element);\n } catch (e) {\n return Option.none();\n }\n };\n var getOptionSafe = function (element) {\n return is(element) ? Option.from(element.dom().nodeValue) : Option.none();\n };\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\n var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;\n var set = function (element, value) {\n if (!is(element))\n throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n element.dom().nodeValue = value;\n };\n return {\n get: get,\n getOption: getOption,\n set: set\n };\n }\n\n var api = NodeValue($_2xwdjv11jkmcwke0.isText, 'text');\n var get$4 = function (element) {\n return api.get(element);\n };\n var getOption = function (element) {\n return api.getOption(element);\n };\n var set$2 = function (element, value) {\n api.set(element, value);\n };\n var $_ckzc193ejkmcwktu = {\n get: get$4,\n getOption: getOption,\n set: set$2\n };\n\n var isZeroWidth = function (elem) {\n return $_2xwdjv11jkmcwke0.isText(elem) && $_ckzc193ejkmcwktu.get(elem) === zeroWidth();\n };\n var context = function (editor, elem, wrapName, nodeName) {\n return $_ca6pc118jkmcwkfs.parent(elem).fold(function () {\n return 'skipping';\n }, function (parent) {\n if (nodeName === 'br' || isZeroWidth(elem)) {\n return 'skipping';\n } else if (isAnnotation(elem)) {\n return 'existing';\n } else if (isCaretNode(elem)) {\n return 'caret';\n } else if (!$_dli08w3ajkmcwktg.isValid(editor, wrapName, nodeName) || !$_dli08w3ajkmcwktg.isValid(editor, $_2xwdjv11jkmcwke0.name(parent), wrapName)) {\n return 'invalid-child';\n } else {\n return 'valid';\n }\n });\n };\n\n var __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === 'function')\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)\n if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n };\n var applyWordGrab = function (editor, rng) {\n var r = $_97afwh2ujkmcwkpw.expandRng(editor, rng, [{ inline: true }], false);\n rng.setStart(r.startContainer, r.startOffset);\n rng.setEnd(r.endContainer, r.endOffset);\n editor.selection.setRng(rng);\n };\n var annotate = function (editor, rng, annotationName, decorate, _a) {\n var _b = _a.uid, uid = _b === void 0 ? generate('mce-annotation') : _b, data = __rest(_a, ['uid']);\n var newWrappers = [];\n var master = Element$$1.fromTag('span');\n $_ftm4v023jkmcwklz.add(master, annotation());\n $_29helg15jkmcwkf0.set(master, '' + dataAnnotationId(), uid);\n $_29helg15jkmcwkf0.set(master, '' + dataAnnotation(), annotationName);\n var _c = decorate(uid, data), _d = _c.attributes, attributes = _d === void 0 ? {} : _d, _e = _c.classes, classes = _e === void 0 ? [] : _e;\n $_29helg15jkmcwkf0.setAll(master, attributes);\n $_dw1myr2hjkmcwko1.add(master, classes);\n var wrapper = Cell(Option.none());\n var finishWrapper = function () {\n wrapper.set(Option.none());\n };\n var getOrOpenWrapper = function () {\n return wrapper.get().getOrThunk(function () {\n var nu = $_44uvy22ijkmcwko5.shallow(master);\n newWrappers.push(nu);\n wrapper.set(Option.some(nu));\n return nu;\n });\n };\n var processElements = function (elems) {\n each(elems, processElement);\n };\n var processElement = function (elem) {\n var ctx = context(editor, elem, 'span', $_2xwdjv11jkmcwke0.name(elem));\n switch (ctx) {\n case 'invalid-child': {\n finishWrapper();\n var children = $_ca6pc118jkmcwkfs.children(elem);\n processElements(children);\n finishWrapper();\n break;\n }\n case 'valid': {\n var w = getOrOpenWrapper();\n $_f4qt4v1yjkmcwkl2.wrap(elem, w);\n break;\n }\n case 'skipping':\n case 'existing':\n case 'caret': \n }\n };\n var processNodes = function (nodes) {\n var elems = map(nodes, Element$$1.fromDom);\n processElements(elems);\n };\n $_cuckrv3bjkmcwktk.walk(editor.dom, rng, function (nodes) {\n finishWrapper();\n processNodes(nodes);\n });\n return newWrappers;\n };\n var annotateWithBookmark = function (editor, name, settings, data) {\n editor.undoManager.transact(function () {\n var initialRng = editor.selection.getRng();\n if (initialRng.collapsed) {\n applyWordGrab(editor, initialRng);\n }\n var bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(editor.selection, true);\n var rng = editor.selection.getRng();\n annotate(editor, rng, name, settings.decorate, data);\n editor.selection.moveToBookmark(bookmark);\n });\n };\n\n function Annotator (editor) {\n var registry = create$1();\n setup$1(editor, registry);\n var changes = setup(editor, registry);\n return {\n register: function (name, settings) {\n registry.register(name, settings);\n },\n annotate: function (name, data) {\n registry.lookup(name).each(function (settings) {\n annotateWithBookmark(editor, name, settings, data);\n });\n },\n annotationChanged: function (name, callback) {\n changes.addListener(name, callback);\n },\n remove: function (name) {\n identify(editor, Option.some(name)).each(function (_a) {\n var elements = _a.elements;\n each(elements, $_eualm21wjkmcwkku.unwrap);\n });\n },\n getAll: function (name) {\n var directory = findAll(editor, name);\n return map$2(directory, function (elems) {\n return map(elems, function (elem) {\n return elem.dom();\n });\n });\n }\n };\n }\n\n var hasOnlyOneChild = function (node) {\n return node.firstChild && node.firstChild === node.lastChild;\n };\n var isPaddingNode = function (node) {\n return node.name === 'br' || node.value === '\\xA0';\n };\n var isPaddedEmptyBlock = function (schema, node) {\n var blockElements = schema.getBlockElements();\n return blockElements[node.name] && hasOnlyOneChild(node) && isPaddingNode(node.firstChild);\n };\n var isEmptyFragmentElement = function (schema, node) {\n var nonEmptyElements = schema.getNonEmptyElements();\n return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node));\n };\n var isListFragment = function (schema, fragment) {\n var firstChild = fragment.firstChild;\n var lastChild = fragment.lastChild;\n if (firstChild && firstChild.name === 'meta') {\n firstChild = firstChild.next;\n }\n if (lastChild && lastChild.attr('id') === 'mce_marker') {\n lastChild = lastChild.prev;\n }\n if (isEmptyFragmentElement(schema, lastChild)) {\n lastChild = lastChild.prev;\n }\n if (!firstChild || firstChild !== lastChild) {\n return false;\n }\n return firstChild.name === 'ul' || firstChild.name === 'ol';\n };\n var cleanupDomFragment = function (domFragment) {\n var firstChild = domFragment.firstChild;\n var lastChild = domFragment.lastChild;\n if (firstChild && firstChild.nodeName === 'META') {\n firstChild.parentNode.removeChild(firstChild);\n }\n if (lastChild && lastChild.id === 'mce_marker') {\n lastChild.parentNode.removeChild(lastChild);\n }\n return domFragment;\n };\n var toDomFragment = function (dom, serializer, fragment) {\n var html = serializer.serialize(fragment);\n var domFragment = dom.createFragment(html);\n return cleanupDomFragment(domFragment);\n };\n var listItems$1 = function (elm) {\n return $_4ujg4tljkmcwkbk.grep(elm.childNodes, function (child) {\n return child.nodeName === 'LI';\n });\n };\n var isPadding = function (node) {\n return node.data === '\\xA0' || $_bjermr1rjkmcwkij.isBr(node);\n };\n var isListItemPadded = function (node) {\n return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild);\n };\n var isEmptyOrPadded = function (elm) {\n return !elm.firstChild || isListItemPadded(elm);\n };\n var trimListItems = function (elms) {\n return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms;\n };\n var getParentLi = function (dom, node) {\n var parentBlock = dom.getParent(node, dom.isBlock);\n return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null;\n };\n var isParentBlockLi = function (dom, node) {\n return !!getParentLi(dom, node);\n };\n var getSplit = function (parentNode, rng) {\n var beforeRng = rng.cloneRange();\n var afterRng = rng.cloneRange();\n beforeRng.setStartBefore(parentNode);\n afterRng.setEndAfter(parentNode);\n return [\n beforeRng.cloneContents(),\n afterRng.cloneContents()\n ];\n };\n var findFirstIn = function (node, rootNode) {\n var caretPos = CaretPosition$1.before(node);\n var caretWalker = CaretWalker(rootNode);\n var newCaretPos = caretWalker.next(caretPos);\n return newCaretPos ? newCaretPos.toRange() : null;\n };\n var findLastOf = function (node, rootNode) {\n var caretPos = CaretPosition$1.after(node);\n var caretWalker = CaretWalker(rootNode);\n var newCaretPos = caretWalker.prev(caretPos);\n return newCaretPos ? newCaretPos.toRange() : null;\n };\n var insertMiddle = function (target, elms, rootNode, rng) {\n var parts = getSplit(target, rng);\n var parentElm = target.parentNode;\n parentElm.insertBefore(parts[0], target);\n $_4ujg4tljkmcwkbk.each(elms, function (li) {\n parentElm.insertBefore(li, target);\n });\n parentElm.insertBefore(parts[1], target);\n parentElm.removeChild(target);\n return findLastOf(elms[elms.length - 1], rootNode);\n };\n var insertBefore = function (target, elms, rootNode) {\n var parentElm = target.parentNode;\n $_4ujg4tljkmcwkbk.each(elms, function (elm) {\n parentElm.insertBefore(elm, target);\n });\n return findFirstIn(target, rootNode);\n };\n var insertAfter = function (target, elms, rootNode, dom) {\n dom.insertAfter(elms.reverse(), target);\n return findLastOf(elms[0], rootNode);\n };\n var insertAtCaret = function (serializer, dom, rng, fragment) {\n var domFragment = toDomFragment(dom, serializer, fragment);\n var liTarget = getParentLi(dom, rng.startContainer);\n var liElms = trimListItems(listItems$1(domFragment.firstChild));\n var BEGINNING = 1, END = 2;\n var rootNode = dom.getRoot();\n var isAt = function (location) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n var caretWalker = CaretWalker(dom.getRoot());\n var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos);\n return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true;\n };\n if (isAt(BEGINNING)) {\n return insertBefore(liTarget, liElms, rootNode);\n } else if (isAt(END)) {\n return insertAfter(liTarget, liElms, rootNode, dom);\n }\n return insertMiddle(liTarget, liElms, rootNode, rng);\n };\n var $_e6q31u3jjkmcwkvd = {\n isListFragment: isListFragment,\n insertAtCaret: insertAtCaret,\n isParentBlockLi: isParentBlockLi,\n trimListItems: trimListItems,\n listItems: listItems$1\n };\n\n var each$9 = $_4ujg4tljkmcwkbk.each;\n var ElementUtils = function (dom) {\n this.compare = function (node1, node2) {\n if (node1.nodeName !== node2.nodeName) {\n return false;\n }\n var getAttribs = function (node) {\n var attribs = {};\n each$9(dom.getAttribs(node), function (attr) {\n var name = attr.nodeName.toLowerCase();\n if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) {\n attribs[name] = dom.getAttrib(node, name);\n }\n });\n return attribs;\n };\n var compareObjects = function (obj1, obj2) {\n var value, name;\n for (name in obj1) {\n if (obj1.hasOwnProperty(name)) {\n value = obj2[name];\n if (typeof value === 'undefined') {\n return false;\n }\n if (obj1[name] !== value) {\n return false;\n }\n delete obj2[name];\n }\n }\n for (name in obj2) {\n if (obj2.hasOwnProperty(name)) {\n return false;\n }\n }\n return true;\n };\n if (!compareObjects(getAttribs(node1), getAttribs(node2))) {\n return false;\n }\n if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {\n return false;\n }\n return !$_e4btcc2vjkmcwkq3.isBookmarkNode(node1) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node2);\n };\n };\n\n var getLastChildren = function (elm) {\n var children = [];\n var rawNode = elm.dom();\n while (rawNode) {\n children.push(Element$$1.fromDom(rawNode));\n rawNode = rawNode.lastChild;\n }\n return children;\n };\n var removeTrailingBr = function (elm) {\n var allBrs = $_2gqm0n27jkmcwkmi.descendants(elm, 'br');\n var brs = filter(getLastChildren(elm).slice(-1), isBr);\n if (allBrs.length === brs.length) {\n each(brs, $_eualm21wjkmcwkku.remove);\n }\n };\n var fillWithPaddingBr = function (elm) {\n $_eualm21wjkmcwkku.empty(elm);\n $_f4qt4v1yjkmcwkl2.append(elm, Element$$1.fromHtml('
'));\n };\n var isPaddingContents = function (elm) {\n return $_2xwdjv11jkmcwke0.isText(elm) ? $_ckzc193ejkmcwktu.get(elm) === '\\xA0' : isBr(elm);\n };\n var isPaddedElement = function (elm) {\n return filter($_ca6pc118jkmcwkfs.children(elm), isPaddingContents).length === 1;\n };\n var trimBlockTrailingBr = function (elm) {\n $_ca6pc118jkmcwkfs.lastChild(elm).each(function (lastChild) {\n $_ca6pc118jkmcwkfs.prevSibling(lastChild).each(function (lastChildPrevSibling) {\n if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) {\n $_eualm21wjkmcwkku.remove(lastChild);\n }\n });\n });\n };\n var $_zygeg3ljkmcwkvo = {\n removeTrailingBr: removeTrailingBr,\n fillWithPaddingBr: fillWithPaddingBr,\n isPaddedElement: isPaddedElement,\n trimBlockTrailingBr: trimBlockTrailingBr\n };\n\n var makeMap$3 = $_4ujg4tljkmcwkbk.makeMap;\n function Writer (settings) {\n var html = [];\n var indent, indentBefore, indentAfter, encode, htmlOutput;\n settings = settings || {};\n indent = settings.indent;\n indentBefore = makeMap$3(settings.indent_before || '');\n indentAfter = makeMap$3(settings.indent_after || '');\n encode = $_33qwr1sjkmcwkip.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\n htmlOutput = settings.element_format === 'html';\n return {\n start: function (name, attrs, empty) {\n var i, l, attr, value;\n if (indent && indentBefore[name] && html.length > 0) {\n value = html[html.length - 1];\n if (value.length > 0 && value !== '\\n') {\n html.push('\\n');\n }\n }\n html.push('<', name);\n if (attrs) {\n for (i = 0, l = attrs.length; i < l; i++) {\n attr = attrs[i];\n html.push(' ', attr.name, '=\"', encode(attr.value, true), '\"');\n }\n }\n if (!empty || htmlOutput) {\n html[html.length] = '>';\n } else {\n html[html.length] = ' />';\n }\n if (empty && indent && indentAfter[name] && html.length > 0) {\n value = html[html.length - 1];\n if (value.length > 0 && value !== '\\n') {\n html.push('\\n');\n }\n }\n },\n end: function (name) {\n var value;\n html.push('');\n if (indent && indentAfter[name] && html.length > 0) {\n value = html[html.length - 1];\n if (value.length > 0 && value !== '\\n') {\n html.push('\\n');\n }\n }\n },\n text: function (text, raw) {\n if (text.length > 0) {\n html[html.length] = raw ? text : encode(text);\n }\n },\n cdata: function (text) {\n html.push('');\n },\n comment: function (text) {\n html.push('');\n },\n pi: function (name, text) {\n if (text) {\n html.push('');\n } else {\n html.push('');\n }\n if (indent) {\n html.push('\\n');\n }\n },\n doctype: function (text) {\n html.push('', indent ? '\\n' : '');\n },\n reset: function () {\n html.length = 0;\n },\n getContent: function () {\n return html.join('').replace(/\\n$/, '');\n }\n };\n }\n\n function HtmlSerializer (settings, schema) {\n if (schema === void 0) {\n schema = Schema();\n }\n var writer = Writer(settings);\n settings = settings || {};\n settings.validate = 'validate' in settings ? settings.validate : true;\n var serialize = function (node) {\n var handlers, validate;\n validate = settings.validate;\n handlers = {\n 3: function (node) {\n writer.text(node.value, node.raw);\n },\n 8: function (node) {\n writer.comment(node.value);\n },\n 7: function (node) {\n writer.pi(node.name, node.value);\n },\n 10: function (node) {\n writer.doctype(node.value);\n },\n 4: function (node) {\n writer.cdata(node.value);\n },\n 11: function (node) {\n if (node = node.firstChild) {\n do {\n walk(node);\n } while (node = node.next);\n }\n }\n };\n writer.reset();\n var walk = function (node) {\n var handler = handlers[node.type];\n var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;\n if (!handler) {\n name = node.name;\n isEmpty = node.shortEnded;\n attrs = node.attributes;\n if (validate && attrs && attrs.length > 1) {\n sortedAttrs = [];\n sortedAttrs.map = {};\n elementRule = schema.getElementRule(node.name);\n if (elementRule) {\n for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\n attrName = elementRule.attributesOrder[i];\n if (attrName in attrs.map) {\n attrValue = attrs.map[attrName];\n sortedAttrs.map[attrName] = attrValue;\n sortedAttrs.push({\n name: attrName,\n value: attrValue\n });\n }\n }\n for (i = 0, l = attrs.length; i < l; i++) {\n attrName = attrs[i].name;\n if (!(attrName in sortedAttrs.map)) {\n attrValue = attrs.map[attrName];\n sortedAttrs.map[attrName] = attrValue;\n sortedAttrs.push({\n name: attrName,\n value: attrValue\n });\n }\n }\n attrs = sortedAttrs;\n }\n }\n writer.start(node.name, attrs, isEmpty);\n if (!isEmpty) {\n if (node = node.firstChild) {\n do {\n walk(node);\n } while (node = node.next);\n }\n writer.end(name);\n }\n } else {\n handler(node);\n }\n };\n if (node.type === 1 && !settings.inner) {\n walk(node);\n } else {\n handlers[11](node);\n }\n return writer.getContent();\n };\n return { serialize: serialize };\n }\n\n var createRange$1 = function (sc, so, ec, eo) {\n var rng = document.createRange();\n rng.setStart(sc, so);\n rng.setEnd(ec, eo);\n return rng;\n };\n var normalizeBlockSelectionRange = function (rng) {\n var startPos = CaretPosition$1.fromRangeStart(rng);\n var endPos = CaretPosition$1.fromRangeEnd(rng);\n var rootNode = rng.commonAncestorContainer;\n return $_1m3f3j2yjkmcwkqg.fromPosition(false, rootNode, endPos).map(function (newEndPos) {\n if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) {\n return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset());\n } else {\n return rng;\n }\n }).getOr(rng);\n };\n var normalize = function (rng) {\n return rng.collapsed ? rng : normalizeBlockSelectionRange(rng);\n };\n var $_bx30le3ojkmcwkw9 = { normalize: normalize };\n\n var isTableCell$2 = $_bjermr1rjkmcwkij.matchNodeNames('td th');\n var validInsertion = function (editor, value, parentNode) {\n if (parentNode.getAttribute('data-mce-bogus') === 'all') {\n parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode);\n } else {\n var node = parentNode.firstChild;\n var node2 = parentNode.lastChild;\n if (!node || node === node2 && node.nodeName === 'BR') {\n editor.dom.setHTML(parentNode, value);\n } else {\n editor.selection.setContent(value);\n }\n }\n };\n var trimBrsFromTableCell = function (dom, elm) {\n Option.from(dom.getParent(elm, 'td,th')).map(Element$$1.fromDom).each($_zygeg3ljkmcwkvo.trimBlockTrailingBr);\n };\n var insertHtmlAtCaret = function (editor, value, details) {\n var parser, serializer, parentNode, rootNode, fragment, args;\n var marker, rng, node, node2, bookmarkHtml, merge;\n var textInlineElements = editor.schema.getTextInlineElements();\n var selection = editor.selection, dom = editor.dom;\n var trimOrPaddLeftRight = function (html) {\n var rng, container, offset;\n rng = selection.getRng();\n container = rng.startContainer;\n offset = rng.startOffset;\n var hasSiblingText = function (siblingName) {\n return container[siblingName] && container[siblingName].nodeType === 3;\n };\n if (container.nodeType === 3) {\n if (offset > 0) {\n html = html.replace(/^ /, ' ');\n } else if (!hasSiblingText('previousSibling')) {\n html = html.replace(/^ /, ' ');\n }\n if (offset < container.length) {\n html = html.replace(/ (
|)$/, ' ');\n } else if (!hasSiblingText('nextSibling')) {\n html = html.replace(/( | )(
|)$/, ' ');\n }\n }\n return html;\n };\n var trimNbspAfterDeleteAndPaddValue = function () {\n var rng, container, offset;\n rng = selection.getRng();\n container = rng.startContainer;\n offset = rng.startOffset;\n if (container.nodeType === 3 && rng.collapsed) {\n if (container.data[offset] === '\\xA0') {\n container.deleteData(offset, 1);\n if (!/[\\u00a0| ]$/.test(value)) {\n value += ' ';\n }\n } else if (container.data[offset - 1] === '\\xA0') {\n container.deleteData(offset - 1, 1);\n if (!/[\\u00a0| ]$/.test(value)) {\n value = ' ' + value;\n }\n }\n }\n };\n var reduceInlineTextElements = function () {\n if (merge) {\n var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom);\n $_4ujg4tljkmcwkbk.each(dom.select('*[data-mce-fragment]'), function (node) {\n for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) {\n if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) {\n dom.remove(node, true);\n }\n }\n });\n }\n };\n var markFragmentElements = function (fragment) {\n var node = fragment;\n while (node = node.walk()) {\n if (node.type === 1) {\n node.attr('data-mce-fragment', '1');\n }\n }\n };\n var umarkFragmentElements = function (elm) {\n $_4ujg4tljkmcwkbk.each(elm.getElementsByTagName('*'), function (elm) {\n elm.removeAttribute('data-mce-fragment');\n });\n };\n var isPartOfFragment = function (node) {\n return !!node.getAttribute('data-mce-fragment');\n };\n var canHaveChildren = function (node) {\n return node && !editor.schema.getShortEndedElements()[node.nodeName];\n };\n var moveSelectionToMarker = function (marker) {\n var parentEditableFalseElm, parentBlock, nextRng;\n var getContentEditableFalseParent = function (node) {\n var root = editor.getBody();\n for (; node && node !== root; node = node.parentNode) {\n if (editor.dom.getContentEditable(node) === 'false') {\n return node;\n }\n }\n return null;\n };\n if (!marker) {\n return;\n }\n selection.scrollIntoView(marker);\n parentEditableFalseElm = getContentEditableFalseParent(marker);\n if (parentEditableFalseElm) {\n dom.remove(marker);\n selection.select(parentEditableFalseElm);\n return;\n }\n rng = dom.createRng();\n node = marker.previousSibling;\n if (node && node.nodeType === 3) {\n rng.setStart(node, node.nodeValue.length);\n if (!$_cvvl9iajkmcwk25.ie) {\n node2 = marker.nextSibling;\n if (node2 && node2.nodeType === 3) {\n node.appendData(node2.data);\n node2.parentNode.removeChild(node2);\n }\n }\n } else {\n rng.setStartBefore(marker);\n rng.setEndBefore(marker);\n }\n var findNextCaretRng = function (rng) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n var caretWalker = CaretWalker(editor.getBody());\n caretPos = caretWalker.next(caretPos);\n if (caretPos) {\n return caretPos.toRange();\n }\n };\n parentBlock = dom.getParent(marker, dom.isBlock);\n dom.remove(marker);\n if (parentBlock && dom.isEmpty(parentBlock)) {\n editor.$(parentBlock).empty();\n rng.setStart(parentBlock, 0);\n rng.setEnd(parentBlock, 0);\n if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) {\n rng = nextRng;\n dom.remove(parentBlock);\n } else {\n dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' }));\n }\n }\n selection.setRng(rng);\n };\n if (/^ | $/.test(value)) {\n value = trimOrPaddLeftRight(value);\n }\n parser = editor.parser;\n merge = details.merge;\n serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema);\n bookmarkHtml = '​';\n args = {\n content: value,\n format: 'html',\n selection: true,\n paste: details.paste\n };\n args = editor.fire('BeforeSetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('SetContent', {\n content: args.content,\n format: 'html',\n selection: true,\n paste: details.paste\n });\n return;\n }\n value = args.content;\n if (value.indexOf('{$caret}') === -1) {\n value += '{$caret}';\n }\n value = value.replace(/\\{\\$caret\\}/, bookmarkHtml);\n rng = selection.getRng();\n var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);\n var body = editor.getBody();\n if (caretElement === body && selection.isCollapsed()) {\n if (dom.isBlock(body.firstChild) && canHaveChildren(body.firstChild) && dom.isEmpty(body.firstChild)) {\n rng = dom.createRng();\n rng.setStart(body.firstChild, 0);\n rng.setEnd(body.firstChild, 0);\n selection.setRng(rng);\n }\n }\n if (!selection.isCollapsed()) {\n editor.selection.setRng($_bx30le3ojkmcwkw9.normalize(editor.selection.getRng()));\n editor.getDoc().execCommand('Delete', false, null);\n trimNbspAfterDeleteAndPaddValue();\n }\n parentNode = selection.getNode();\n var parserArgs = {\n context: parentNode.nodeName.toLowerCase(),\n data: details.data,\n insert: true\n };\n fragment = parser.parse(value, parserArgs);\n if (details.paste === true && $_e6q31u3jjkmcwkvd.isListFragment(editor.schema, fragment) && $_e6q31u3jjkmcwkvd.isParentBlockLi(dom, parentNode)) {\n rng = $_e6q31u3jjkmcwkvd.insertAtCaret(serializer, dom, editor.selection.getRng(), fragment);\n editor.selection.setRng(rng);\n editor.fire('SetContent', args);\n return;\n }\n markFragmentElements(fragment);\n node = fragment.lastChild;\n if (node.attr('id') === 'mce_marker') {\n marker = node;\n for (node = node.prev; node; node = node.walk(true)) {\n if (node.type === 3 || !dom.isBlock(node.name)) {\n if (editor.schema.isValidChild(node.parent.name, 'span')) {\n node.parent.insert(marker, node, node.name === 'br');\n }\n break;\n }\n }\n }\n editor._selectionOverrides.showBlockCaretContainer(parentNode);\n if (!parserArgs.invalid) {\n value = serializer.serialize(fragment);\n validInsertion(editor, value, parentNode);\n } else {\n selection.setContent(bookmarkHtml);\n parentNode = selection.getNode();\n rootNode = editor.getBody();\n if (parentNode.nodeType === 9) {\n parentNode = node = rootNode;\n } else {\n node = parentNode;\n }\n while (node !== rootNode) {\n parentNode = node;\n node = node.parentNode;\n }\n value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);\n value = serializer.serialize(parser.parse(value.replace(//i, function () {\n return serializer.serialize(fragment);\n })));\n if (parentNode === rootNode) {\n dom.setHTML(rootNode, value);\n } else {\n dom.setOuterHTML(parentNode, value);\n }\n }\n reduceInlineTextElements();\n moveSelectionToMarker(dom.get('mce_marker'));\n umarkFragmentElements(editor.getBody());\n trimBrsFromTableCell(editor.dom, editor.selection.getStart());\n editor.fire('SetContent', args);\n editor.addVisual();\n };\n var processValue = function (value) {\n var details;\n if (typeof value !== 'string') {\n details = $_4ujg4tljkmcwkbk.extend({\n paste: value.paste,\n data: { paste: value.paste }\n }, value);\n return {\n content: value.content,\n details: details\n };\n }\n return {\n content: value,\n details: {}\n };\n };\n var insertAtCaret$1 = function (editor, value) {\n var result = processValue(value);\n insertHtmlAtCaret(editor, result.content, result.details);\n };\n var $_g2yj883ijkmcwkv2 = { insertAtCaret: insertAtCaret$1 };\n\n var sectionResult = Immutable('sections', 'settings');\n var detection = $_b1ykk4ojkmcwkcj.detect();\n var isTouch = detection.deviceType.isTouch();\n var mobilePlugins = [\n 'lists',\n 'autolink',\n 'autosave'\n ];\n var defaultMobileSettings = { theme: 'mobile' };\n var normalizePlugins = function (plugins) {\n var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins;\n var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2);\n return filter(trimmedPlugins, function (item) {\n return item.length > 0;\n });\n };\n var filterMobilePlugins = function (plugins) {\n return filter(plugins, curry(contains, mobilePlugins));\n };\n var extractSections = function (keys$$1, settings) {\n var result = bifilter(settings, function (value, key) {\n return contains(keys$$1, key);\n });\n return sectionResult(result.t, result.f);\n };\n var getSection = function (sectionResult, name, defaults) {\n var sections = sectionResult.sections();\n var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {};\n return $_4ujg4tljkmcwkbk.extend({}, defaults, sectionSettings);\n };\n var hasSection = function (sectionResult, name) {\n return sectionResult.sections().hasOwnProperty(name);\n };\n var getDefaultSettings = function (id, documentBaseUrl, editor) {\n return {\n id: id,\n theme: 'modern',\n delta_width: 0,\n delta_height: 0,\n popup_css: '',\n plugins: '',\n document_base_url: documentBaseUrl,\n add_form_submit_trigger: true,\n submit_patch: true,\n add_unload_trigger: true,\n convert_urls: true,\n relative_urls: true,\n remove_script_host: true,\n object_resizing: true,\n doctype: '',\n visual: true,\n font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',\n font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',\n forced_root_block: 'p',\n hidden_input: true,\n render_ui: true,\n indentation: '30px',\n inline_styles: true,\n convert_fonts_to_spans: true,\n indent: 'simple',\n indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\n indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\n entity_encoding: 'named',\n url_converter: editor.convertURL,\n url_converter_scope: editor,\n ie7_compat: true\n };\n };\n var getExternalPlugins = function (overrideSettings, settings) {\n var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {};\n if (overrideSettings && overrideSettings.external_plugins) {\n return $_4ujg4tljkmcwkbk.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins);\n } else {\n return userDefinedExternalPlugins;\n }\n };\n var combinePlugins = function (forcedPlugins, plugins) {\n return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins));\n };\n var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) {\n var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins);\n var plugins = normalizePlugins(settings.plugins);\n var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins;\n var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);\n return $_4ujg4tljkmcwkbk.extend(settings, { plugins: combinedPlugins.join(' ') });\n };\n var isOnMobile = function (isTouchDevice, sectionResult) {\n var isInline = sectionResult.settings().inline;\n return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline;\n };\n var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) {\n var sectionResult = extractSections(['mobile'], settings);\n var extendedSettings = $_4ujg4tljkmcwkbk.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, {\n validate: true,\n content_editable: sectionResult.settings().inline,\n external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings())\n });\n return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings);\n };\n var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) {\n var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor);\n return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings);\n };\n var getFiltered = function (predicate, editor, name) {\n return Option.from(editor.settings[name]).filter(predicate);\n };\n var getString = curry(getFiltered, isString);\n var getParamObject = function (value) {\n var output = {};\n if (typeof value === 'string') {\n each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) {\n var arr = val.split('=');\n if (arr.length > 1) {\n output[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.trim(arr[1]);\n } else {\n output[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.trim(arr);\n }\n });\n } else {\n output = value;\n }\n return output;\n };\n var isArrayOf = function (p) {\n return function (a) {\n return isArray(a) && forall(a, p);\n };\n };\n var getParam = function (editor, name, defaultVal, type) {\n var value = name in editor.settings ? editor.settings[name] : defaultVal;\n if (type === 'hash') {\n return getParamObject(value);\n } else if (type === 'string') {\n return getFiltered(isString, editor, name).getOr(defaultVal);\n } else if (type === 'number') {\n return getFiltered(isNumber, editor, name).getOr(defaultVal);\n } else if (type === 'boolean') {\n return getFiltered(isBoolean, editor, name).getOr(defaultVal);\n } else if (type === 'object') {\n return getFiltered(isObject, editor, name).getOr(defaultVal);\n } else if (type === 'array') {\n return getFiltered(isArray, editor, name).getOr(defaultVal);\n } else if (type === 'string[]') {\n return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal);\n } else if (type === 'function') {\n return getFiltered(isFunction, editor, name).getOr(defaultVal);\n } else {\n return value;\n }\n };\n\n var strongRtl = /[\\u0591-\\u07FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFC]/;\n var hasStrongRtl = function (text) {\n return strongRtl.test(text);\n };\n\n var isInlineTarget = function (editor, elm) {\n var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');\n return $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(elm), selector);\n };\n var isRtl = function (element) {\n return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);\n };\n var findInlineParents = function (isInlineTarget, rootNode, pos) {\n return filter(DOMUtils$1.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget);\n };\n var findRootInline = function (isInlineTarget, rootNode, pos) {\n var parents = findInlineParents(isInlineTarget, rootNode, pos);\n return Option.from(parents[parents.length - 1]);\n };\n var hasSameParentBlock = function (rootNode, node1, node2) {\n var block1 = getParentBlock(node1, rootNode);\n var block2 = getParentBlock(node2, rootNode);\n return block1 && block1 === block2;\n };\n var isAtZwsp = function (pos) {\n return isBeforeInline(pos) || isAfterInline(pos);\n };\n var normalizePosition = function (forward, pos) {\n var container = pos.container(), offset = pos.offset();\n if (forward) {\n if (isCaretContainerInline(container)) {\n if ($_bjermr1rjkmcwkij.isText(container.nextSibling)) {\n return CaretPosition$1(container.nextSibling, 0);\n } else {\n return CaretPosition$1.after(container);\n }\n } else {\n return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos;\n }\n } else {\n if (isCaretContainerInline(container)) {\n if ($_bjermr1rjkmcwkij.isText(container.previousSibling)) {\n return CaretPosition$1(container.previousSibling, container.previousSibling.data.length);\n } else {\n return CaretPosition$1.before(container);\n }\n } else {\n return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos;\n }\n }\n };\n var normalizeForwards = curry(normalizePosition, true);\n var normalizeBackwards = curry(normalizePosition, false);\n var $_crqmqb3tjkmcwkxd = {\n isInlineTarget: isInlineTarget,\n findRootInline: findRootInline,\n isRtl: isRtl,\n isAtZwsp: isAtZwsp,\n normalizePosition: normalizePosition,\n normalizeForwards: normalizeForwards,\n normalizeBackwards: normalizeBackwards,\n hasSameParentBlock: hasSameParentBlock\n };\n\n var isBeforeRoot = function (rootNode) {\n return function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(rootNode, Element$$1.fromDom(elm.dom().parentNode));\n };\n };\n var getParentBlock$1 = function (rootNode, elm) {\n return $_e4hu6h1ejkmcwkgj.contains(rootNode, elm) ? $_253nd92ajkmcwkmp.closest(elm, function (element) {\n return isTextBlock(element) || isListItem(element);\n }, isBeforeRoot(rootNode)) : Option.none();\n };\n var placeCaretInEmptyBody = function (editor) {\n var body = editor.getBody();\n var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body;\n editor.selection.setCursorLocation(node, 0);\n };\n var paddEmptyBody = function (editor) {\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n placeCaretInEmptyBody(editor);\n }\n };\n var willDeleteLastPositionInElement = function (forward, fromPos, elm) {\n return liftN([\n $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\n ], function (firstPos, lastPos) {\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\n var normalizedFromPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, fromPos);\n if (forward) {\n return $_1m3f3j2yjkmcwkqg.nextPosition(elm, normalizedFromPos).map(function (nextPos) {\n return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos);\n }).getOr(false);\n } else {\n return $_1m3f3j2yjkmcwkqg.prevPosition(elm, normalizedFromPos).map(function (prevPos) {\n return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos);\n }).getOr(false);\n }\n }).getOr(true);\n };\n var $_8z75uj3sjkmcwkx3 = {\n getParentBlock: getParentBlock$1,\n paddEmptyBody: paddEmptyBody,\n willDeleteLastPositionInElement: willDeleteLastPositionInElement\n };\n\n var any = function (selector) {\n return $_4ki4d929jkmcwkmn.first(selector).isSome();\n };\n var ancestor$2 = function (scope, selector, isRoot) {\n return $_4ki4d929jkmcwkmn.ancestor(scope, selector, isRoot).isSome();\n };\n var sibling$3 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.sibling(scope, selector).isSome();\n };\n var child$3 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.child(scope, selector).isSome();\n };\n var descendant$2 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.descendant(scope, selector).isSome();\n };\n var closest$2 = function (scope, selector, isRoot) {\n return $_4ki4d929jkmcwkmn.closest(scope, selector, isRoot).isSome();\n };\n var $_6rijl23xjkmcwl24 = {\n any: any,\n ancestor: ancestor$2,\n sibling: sibling$3,\n child: child$3,\n descendant: descendant$2,\n closest: closest$2\n };\n\n var hasWhitespacePreserveParent = function (rootNode, node) {\n var rootElement = Element$$1.fromDom(rootNode);\n var startNode = Element$$1.fromDom(node);\n return $_6rijl23xjkmcwl24.ancestor(startNode, 'pre,code', curry($_e4hu6h1ejkmcwkgj.eq, rootElement));\n };\n var isWhitespace = function (rootNode, node) {\n return $_bjermr1rjkmcwkij.isText(node) && /^[ \\t\\r\\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false;\n };\n var isNamedAnchor = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name');\n };\n var isContent = function (rootNode, node) {\n return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node);\n };\n var isBookmark = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bookmark');\n var isBogus$2 = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bogus');\n var isBogusAll$1 = $_bjermr1rjkmcwkij.hasAttributeValue('data-mce-bogus', 'all');\n var isEmptyNode = function (targetNode) {\n var walker, node, brCount = 0;\n if (isContent(targetNode, targetNode)) {\n return false;\n } else {\n node = targetNode.firstChild;\n if (!node) {\n return true;\n }\n walker = new TreeWalker(node, targetNode);\n do {\n if (isBogusAll$1(node)) {\n node = walker.next(true);\n continue;\n }\n if (isBogus$2(node)) {\n node = walker.next();\n continue;\n }\n if ($_bjermr1rjkmcwkij.isBr(node)) {\n brCount++;\n node = walker.next();\n continue;\n }\n if (isContent(targetNode, node)) {\n return false;\n }\n node = walker.next();\n } while (node);\n return brCount <= 1;\n }\n };\n var isEmpty$1 = function (elm) {\n return isEmptyNode(elm.dom());\n };\n var $_1jnfso3wjkmcwl1v = { isEmpty: isEmpty$1 };\n\n var BlockPosition = Immutable('block', 'position');\n var BlockBoundary = Immutable('from', 'to');\n var getBlockPosition = function (rootNode, pos) {\n var rootElm = Element$$1.fromDom(rootNode);\n var containerElm = Element$$1.fromDom(pos.container());\n return $_8z75uj3sjkmcwkx3.getParentBlock(rootElm, containerElm).map(function (block) {\n return BlockPosition(block, pos);\n });\n };\n var isDifferentBlocks = function (blockBoundary) {\n return $_e4hu6h1ejkmcwkgj.eq(blockBoundary.from().block(), blockBoundary.to().block()) === false;\n };\n var hasSameParent = function (blockBoundary) {\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.from().block()).bind(function (parent1) {\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.to().block()).filter(function (parent2) {\n return $_e4hu6h1ejkmcwkgj.eq(parent1, parent2);\n });\n }).isSome();\n };\n var isEditable = function (blockBoundary) {\n return $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.from().block()) === false && $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.to().block()) === false;\n };\n var skipLastBr = function (rootNode, forward, blockPosition) {\n if ($_bjermr1rjkmcwkij.isBr(blockPosition.position().getNode()) && $_1jnfso3wjkmcwl1v.isEmpty(blockPosition.block()) === false) {\n return $_1m3f3j2yjkmcwkqg.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) {\n if (lastPositionInBlock.isEqual(blockPosition.position())) {\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) {\n return getBlockPosition(rootNode, to);\n });\n } else {\n return Option.some(blockPosition);\n }\n }).getOr(blockPosition);\n } else {\n return blockPosition;\n }\n };\n var readFromRange = function (rootNode, forward, rng) {\n var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng));\n var toBlockPos = fromBlockPos.bind(function (blockPos) {\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) {\n return getBlockPosition(rootNode, to).map(function (blockPos) {\n return skipLastBr(rootNode, forward, blockPos);\n });\n });\n });\n return liftN([\n fromBlockPos,\n toBlockPos\n ], BlockBoundary).filter(function (blockBoundary) {\n return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary);\n });\n };\n var read$1 = function (rootNode, forward, rng) {\n return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none();\n };\n var $_2x2kic3rjkmcwkwi = { read: read$1 };\n\n var dropLast = function (xs) {\n return xs.slice(0, -1);\n };\n var parentsUntil$1 = function (startNode, rootElm, predicate) {\n if ($_e4hu6h1ejkmcwkgj.contains(rootElm, startNode)) {\n return dropLast($_ca6pc118jkmcwkfs.parents(startNode, function (elm) {\n return predicate(elm) || $_e4hu6h1ejkmcwkgj.eq(elm, rootElm);\n }));\n } else {\n return [];\n }\n };\n var parents$1 = function (startNode, rootElm) {\n return parentsUntil$1(startNode, rootElm, constant(false));\n };\n var parentsAndSelf = function (startNode, rootElm) {\n return [startNode].concat(parents$1(startNode, rootElm));\n };\n var $_cir6zl3zjkmcwl2j = {\n parentsUntil: parentsUntil$1,\n parents: parents$1,\n parentsAndSelf: parentsAndSelf\n };\n\n var getChildrenUntilBlockBoundary = function (block) {\n var children = $_ca6pc118jkmcwkfs.children(block);\n return findIndex(children, isBlock).fold(function () {\n return children;\n }, function (index) {\n return children.slice(0, index);\n });\n };\n var extractChildren = function (block) {\n var children = getChildrenUntilBlockBoundary(block);\n each(children, function (node) {\n $_eualm21wjkmcwkku.remove(node);\n });\n return children;\n };\n var trimBr = function (first, block) {\n $_1m3f3j2yjkmcwkqg.positionIn(first, block.dom()).each(function (position) {\n var node = position.getNode();\n if ($_bjermr1rjkmcwkij.isBr(node)) {\n $_eualm21wjkmcwkku.remove(Element$$1.fromDom(node));\n }\n });\n };\n var removeEmptyRoot = function (rootNode, block) {\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(block, rootNode);\n return find(parents.reverse(), $_1jnfso3wjkmcwl1v.isEmpty).each($_eualm21wjkmcwkku.remove);\n };\n var findParentInsertPoint = function (toBlock, block) {\n var parents = $_ca6pc118jkmcwkfs.parents(block, function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(elm, toBlock);\n });\n return Option.from(parents[parents.length - 2]);\n };\n var getInsertionPoint = function (fromBlock, toBlock) {\n if ($_e4hu6h1ejkmcwkgj.contains(toBlock, fromBlock)) {\n return $_ca6pc118jkmcwkfs.parent(fromBlock).bind(function (parent) {\n return $_e4hu6h1ejkmcwkgj.eq(parent, toBlock) ? Option.some(fromBlock) : findParentInsertPoint(toBlock, fromBlock);\n });\n } else {\n return Option.none();\n }\n };\n var mergeBlockInto = function (rootNode, fromBlock, toBlock) {\n if ($_1jnfso3wjkmcwl1v.isEmpty(toBlock)) {\n $_eualm21wjkmcwkku.remove(toBlock);\n if ($_1jnfso3wjkmcwl1v.isEmpty(fromBlock)) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(fromBlock);\n }\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(fromBlock.dom());\n } else {\n trimBr(true, fromBlock);\n trimBr(false, toBlock);\n var children_1 = extractChildren(fromBlock);\n return getInsertionPoint(fromBlock, toBlock).fold(function () {\n removeEmptyRoot(rootNode, fromBlock);\n var position = $_1m3f3j2yjkmcwkqg.lastPositionIn(toBlock.dom());\n each(children_1, function (node) {\n $_f4qt4v1yjkmcwkl2.append(toBlock, node);\n });\n return position;\n }, function (target) {\n var position = $_1m3f3j2yjkmcwkqg.prevPosition(toBlock.dom(), CaretPosition$1.before(target.dom()));\n each(children_1, function (node) {\n $_f4qt4v1yjkmcwkl2.before(target, node);\n });\n removeEmptyRoot(rootNode, fromBlock);\n return position;\n });\n }\n };\n var mergeBlocks = function (rootNode, forward, block1, block2) {\n return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2);\n };\n var $_ezyxdl3yjkmcwl27 = { mergeBlocks: mergeBlocks };\n\n var backspaceDelete = function (editor, forward) {\n var position;\n var rootNode = Element$$1.fromDom(editor.getBody());\n position = $_2x2kic3rjkmcwkwi.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) {\n return $_ezyxdl3yjkmcwl27.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block());\n });\n position.each(function (pos) {\n editor.selection.setRng(pos.toRange());\n });\n return position.isSome();\n };\n var $_1wrlyf3qjkmcwkwe = { backspaceDelete: backspaceDelete };\n\n var deleteRangeMergeBlocks = function (rootNode, selection) {\n var rng = selection.getRng();\n return liftN([\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.startContainer)),\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.endContainer))\n ], function (block1, block2) {\n if ($_e4hu6h1ejkmcwkgj.eq(block1, block2) === false) {\n rng.deleteContents();\n $_ezyxdl3yjkmcwl27.mergeBlocks(rootNode, true, block1, block2).each(function (pos) {\n selection.setRng(pos.toRange());\n });\n return true;\n } else {\n return false;\n }\n }).getOr(false);\n };\n var isRawNodeInTable = function (root, rawNode) {\n var node = Element$$1.fromDom(rawNode);\n var isRoot = curry($_e4hu6h1ejkmcwkgj.eq, root);\n return $_253nd92ajkmcwkmp.ancestor(node, isTableCell, isRoot).isSome();\n };\n var isSelectionInTable = function (root, rng) {\n return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer);\n };\n var isEverythingSelected = function (root, rng) {\n var noPrevious = $_1m3f3j2yjkmcwkqg.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone();\n var noNext = $_1m3f3j2yjkmcwkqg.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone();\n return !isSelectionInTable(root, rng) && noPrevious && noNext;\n };\n var emptyEditor = function (editor) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n return true;\n };\n var deleteRange = function (editor) {\n var rootNode = Element$$1.fromDom(editor.getBody());\n var rng = editor.selection.getRng();\n return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection);\n };\n var backspaceDelete$1 = function (editor, forward) {\n return editor.selection.isCollapsed() ? false : deleteRange(editor);\n };\n var $_egxtcx40jkmcwl2q = { backspaceDelete: backspaceDelete$1 };\n\n var generate$1 = function (cases) {\n if (!isArray(cases)) {\n throw new Error('cases must be an array');\n }\n if (cases.length === 0) {\n throw new Error('there must be at least one case');\n }\n var constructors = [];\n var adt = {};\n each(cases, function (acase, count) {\n var keys$$1 = keys(acase);\n if (keys$$1.length !== 1) {\n throw new Error('one and only one name per case');\n }\n var key = keys$$1[0];\n var value = acase[key];\n if (adt[key] !== undefined) {\n throw new Error('duplicate key detected:' + key);\n } else if (key === 'cata') {\n throw new Error('cannot have a case named cata (sorry)');\n } else if (!isArray(value)) {\n throw new Error('case arguments must be an array');\n }\n constructors.push(key);\n adt[key] = function () {\n var argLength = arguments.length;\n if (argLength !== value.length) {\n throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n }\n var args = new Array(argLength);\n for (var i = 0; i < args.length; i++)\n args[i] = arguments[i];\n var match = function (branches) {\n var branchKeys = keys(branches);\n if (constructors.length !== branchKeys.length) {\n throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n }\n var allReqd = forall(constructors, function (reqKey) {\n return contains(branchKeys, reqKey);\n });\n if (!allReqd)\n throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n return branches[key].apply(null, args);\n };\n return {\n fold: function () {\n if (arguments.length !== cases.length) {\n throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length);\n }\n var target = arguments[count];\n return target.apply(null, args);\n },\n match: match,\n log: function (label) {\n console.log(label, {\n constructors: constructors,\n constructor: key,\n params: args\n });\n }\n };\n };\n });\n return adt;\n };\n var Adt = { generate: generate$1 };\n\n var isCompoundElement = function (node) {\n return isTableCell(Element$$1.fromDom(node)) || isListItem(Element$$1.fromDom(node));\n };\n var DeleteAction = Adt.generate([\n { remove: ['element'] },\n { moveToElement: ['element'] },\n { moveToPosition: ['position'] }\n ]);\n var isAtContentEditableBlockCaret = function (forward, from) {\n var elm = from.getNode(forward === false);\n var caretLocation = forward ? 'after' : 'before';\n return $_bjermr1rjkmcwkij.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation;\n };\n var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) {\n var inSameBlock = function (elm) {\n return isInline(Element$$1.fromDom(elm)) && !isInSameBlock(from, to, root);\n };\n return getRelativeCefElm(!forward, from).fold(function () {\n return getRelativeCefElm(forward, to).fold(constant(false), inSameBlock);\n }, inSameBlock);\n };\n var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) {\n var toCefElm = to.getNode(forward === false);\n return $_8z75uj3sjkmcwkx3.getParentBlock(Element$$1.fromDom(root), Element$$1.fromDom(from.getNode())).map(function (blockElm) {\n return $_1jnfso3wjkmcwl1v.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm);\n }).orThunk(function () {\n return Option.some(DeleteAction.moveToElement(toCefElm));\n });\n };\n var findCefPosition = function (root, forward, from) {\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, root, from).bind(function (to) {\n if (isCompoundElement(to.getNode())) {\n return Option.none();\n } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) {\n return Option.none();\n } else if (forward && $_bjermr1rjkmcwkij.isContentEditableFalse(to.getNode())) {\n return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n } else if (forward === false && $_bjermr1rjkmcwkij.isContentEditableFalse(to.getNode(true))) {\n return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n } else if (forward && isAfterContentEditableFalse(from)) {\n return Option.some(DeleteAction.moveToPosition(to));\n } else if (forward === false && isBeforeContentEditableFalse(from)) {\n return Option.some(DeleteAction.moveToPosition(to));\n } else {\n return Option.none();\n }\n });\n };\n var getContentEditableBlockAction = function (forward, elm) {\n if (forward && $_bjermr1rjkmcwkij.isContentEditableFalse(elm.nextSibling)) {\n return Option.some(DeleteAction.moveToElement(elm.nextSibling));\n } else if (forward === false && $_bjermr1rjkmcwkij.isContentEditableFalse(elm.previousSibling)) {\n return Option.some(DeleteAction.moveToElement(elm.previousSibling));\n } else {\n return Option.none();\n }\n };\n var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) {\n return deleteAction.fold(function (elm) {\n return Option.some(DeleteAction.remove(elm));\n }, function (elm) {\n return Option.some(DeleteAction.moveToElement(elm));\n }, function (to) {\n if (isInSameBlock(from, to, root)) {\n return Option.none();\n } else {\n return Option.some(DeleteAction.moveToPosition(to));\n }\n });\n };\n var getContentEditableAction = function (root, forward, from) {\n if (isAtContentEditableBlockCaret(forward, from)) {\n return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () {\n return findCefPosition(root, forward, from);\n }, Option.some);\n } else {\n return findCefPosition(root, forward, from).bind(function (deleteAction) {\n return skipMoveToActionFromInlineCefToContent(root, from, deleteAction);\n });\n }\n };\n var read$2 = function (root, forward, rng) {\n var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);\n var from = CaretPosition$1.fromRangeStart(normalizedRange);\n if (forward === false && isAfterContentEditableFalse(from)) {\n return Option.some(DeleteAction.remove(from.getNode(true)));\n } else if (forward && isBeforeContentEditableFalse(from)) {\n return Option.some(DeleteAction.remove(from.getNode()));\n } else {\n return getContentEditableAction(root, forward, from);\n }\n };\n\n var needsReposition = function (pos, elm) {\n var container = pos.container();\n var offset = pos.offset();\n return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset();\n };\n var reposition = function (elm, pos) {\n return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos;\n };\n var beforeOrStartOf = function (node) {\n return $_bjermr1rjkmcwkij.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node);\n };\n var afterOrEndOf = function (node) {\n return $_bjermr1rjkmcwkij.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node);\n };\n var getPreviousSiblingCaretPosition = function (elm) {\n if (isCaretCandidate(elm.previousSibling)) {\n return Option.some(afterOrEndOf(elm.previousSibling));\n } else {\n return elm.previousSibling ? $_1m3f3j2yjkmcwkqg.lastPositionIn(elm.previousSibling) : Option.none();\n }\n };\n var getNextSiblingCaretPosition = function (elm) {\n if (isCaretCandidate(elm.nextSibling)) {\n return Option.some(beforeOrStartOf(elm.nextSibling));\n } else {\n return elm.nextSibling ? $_1m3f3j2yjkmcwkqg.firstPositionIn(elm.nextSibling) : Option.none();\n }\n };\n var findCaretPositionBackwardsFromElm = function (rootElement, elm) {\n var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode);\n return $_1m3f3j2yjkmcwkqg.prevPosition(rootElement, startPosition).fold(function () {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm));\n }, Option.some);\n };\n var findCaretPositionForwardsFromElm = function (rootElement, elm) {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () {\n return $_1m3f3j2yjkmcwkqg.prevPosition(rootElement, CaretPosition$1.before(elm));\n }, Option.some);\n };\n var findCaretPositionBackwards = function (rootElement, elm) {\n return getPreviousSiblingCaretPosition(elm).orThunk(function () {\n return getNextSiblingCaretPosition(elm);\n }).orThunk(function () {\n return findCaretPositionBackwardsFromElm(rootElement, elm);\n });\n };\n var findCaretPositionForward = function (rootElement, elm) {\n return getNextSiblingCaretPosition(elm).orThunk(function () {\n return getPreviousSiblingCaretPosition(elm);\n }).orThunk(function () {\n return findCaretPositionForwardsFromElm(rootElement, elm);\n });\n };\n var findCaretPosition$1 = function (forward, rootElement, elm) {\n return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm);\n };\n var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) {\n return findCaretPosition$1(forward, rootElement, elm).map(curry(reposition, elm));\n };\n var setSelection = function (editor, forward, pos) {\n pos.fold(function () {\n editor.focus();\n }, function (pos) {\n editor.selection.setRng(pos.toRange(), forward);\n });\n };\n var eqRawNode = function (rawNode) {\n return function (elm) {\n return elm.dom() === rawNode;\n };\n };\n var isBlock$2 = function (editor, elm) {\n return elm && editor.schema.getBlockElements().hasOwnProperty($_2xwdjv11jkmcwke0.name(elm));\n };\n var paddEmptyBlock = function (elm) {\n if ($_1jnfso3wjkmcwl1v.isEmpty(elm)) {\n var br = Element$$1.fromHtml('
');\n $_eualm21wjkmcwkku.empty(elm);\n $_f4qt4v1yjkmcwkl2.append(elm, br);\n return Option.some(CaretPosition$1.before(br.dom()));\n } else {\n return Option.none();\n }\n };\n var deleteNormalized = function (elm, afterDeletePosOpt) {\n return liftN([\n $_ca6pc118jkmcwkfs.prevSibling(elm),\n $_ca6pc118jkmcwkfs.nextSibling(elm),\n afterDeletePosOpt\n ], function (prev, next, afterDeletePos) {\n var offset;\n var prevNode = prev.dom();\n var nextNode = next.dom();\n if ($_bjermr1rjkmcwkij.isText(prevNode) && $_bjermr1rjkmcwkij.isText(nextNode)) {\n offset = prevNode.data.length;\n prevNode.appendData(nextNode.data);\n $_eualm21wjkmcwkku.remove(next);\n $_eualm21wjkmcwkku.remove(elm);\n if (afterDeletePos.container() === nextNode) {\n return CaretPosition$1(prevNode, offset);\n } else {\n return afterDeletePos;\n }\n } else {\n $_eualm21wjkmcwkku.remove(elm);\n return afterDeletePos;\n }\n }).orThunk(function () {\n $_eualm21wjkmcwkku.remove(elm);\n return afterDeletePosOpt;\n });\n };\n var deleteElement = function (editor, forward, elm) {\n var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom());\n var parentBlock = $_253nd92ajkmcwkmp.ancestor(elm, curry(isBlock$2, editor), eqRawNode(editor.getBody()));\n var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos);\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n } else {\n parentBlock.bind(paddEmptyBlock).fold(function () {\n setSelection(editor, forward, normalizedAfterDeletePos);\n }, function (paddPos) {\n setSelection(editor, forward, Option.some(paddPos));\n });\n }\n };\n var $_4yq1i444jkmcwl3w = { deleteElement: deleteElement };\n\n var deleteElement$1 = function (editor, forward) {\n return function (element) {\n editor._selectionOverrides.hideFakeCaret();\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(element));\n return true;\n };\n };\n var moveToElement = function (editor, forward) {\n return function (element) {\n var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element);\n editor.selection.setRng(pos.toRange());\n return true;\n };\n };\n var moveToPosition = function (editor) {\n return function (pos) {\n editor.selection.setRng(pos.toRange());\n return true;\n };\n };\n var backspaceDeleteCaret = function (editor, forward) {\n var result = read$2(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) {\n return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor));\n });\n return result.getOr(false);\n };\n var deleteOffscreenSelection = function (rootElement) {\n each($_2gqm0n27jkmcwkmi.descendants(rootElement, '.mce-offscreen-selection'), $_eualm21wjkmcwkku.remove);\n };\n var backspaceDeleteRange = function (editor, forward) {\n var selectedElement = editor.selection.getNode();\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(selectedElement)) {\n deleteOffscreenSelection(Element$$1.fromDom(editor.getBody()));\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(editor.selection.getNode()));\n $_8z75uj3sjkmcwkx3.paddEmptyBody(editor);\n return true;\n } else {\n return false;\n }\n };\n var getContentEditableRoot = function (root, node) {\n while (node && node !== root) {\n if ($_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.isContentEditableFalse(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var paddEmptyElement = function (editor) {\n var br;\n var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode());\n if ($_bjermr1rjkmcwkij.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) {\n br = editor.dom.create('br', { 'data-mce-bogus': '1' });\n editor.dom.setHTML(ceRoot, '');\n ceRoot.appendChild(br);\n editor.selection.setRng(CaretPosition$1.before(br).toRange());\n }\n return true;\n };\n var backspaceDelete$2 = function (editor, forward) {\n if (editor.selection.isCollapsed()) {\n return backspaceDeleteCaret(editor, forward);\n } else {\n return backspaceDeleteRange(editor, forward);\n }\n };\n var $_1hyiiy41jkmcwl2z = {\n backspaceDelete: backspaceDelete$2,\n paddEmptyElement: paddEmptyElement\n };\n\n var isText$8 = $_bjermr1rjkmcwkij.isText;\n var startsWithCaretContainer$1 = function (node) {\n return isText$8(node) && node.data[0] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var endsWithCaretContainer$1 = function (node) {\n return isText$8(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var createZwsp = function (node) {\n return node.ownerDocument.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\n };\n var insertBefore$1 = function (node) {\n if (isText$8(node.previousSibling)) {\n if (endsWithCaretContainer$1(node.previousSibling)) {\n return node.previousSibling;\n } else {\n node.previousSibling.appendData($_cadvcr2pjkmcwkph.ZWSP);\n return node.previousSibling;\n }\n } else if (isText$8(node)) {\n if (startsWithCaretContainer$1(node)) {\n return node;\n } else {\n node.insertData(0, $_cadvcr2pjkmcwkph.ZWSP);\n return node;\n }\n } else {\n var newNode = createZwsp(node);\n node.parentNode.insertBefore(newNode, node);\n return newNode;\n }\n };\n var insertAfter$1 = function (node) {\n if (isText$8(node.nextSibling)) {\n if (startsWithCaretContainer$1(node.nextSibling)) {\n return node.nextSibling;\n } else {\n node.nextSibling.insertData(0, $_cadvcr2pjkmcwkph.ZWSP);\n return node.nextSibling;\n }\n } else if (isText$8(node)) {\n if (endsWithCaretContainer$1(node)) {\n return node;\n } else {\n node.appendData($_cadvcr2pjkmcwkph.ZWSP);\n return node;\n }\n } else {\n var newNode = createZwsp(node);\n if (node.nextSibling) {\n node.parentNode.insertBefore(newNode, node.nextSibling);\n } else {\n node.parentNode.appendChild(newNode);\n }\n return newNode;\n }\n };\n var insertInline$1 = function (before, node) {\n return before ? insertBefore$1(node) : insertAfter$1(node);\n };\n var insertInlineBefore = curry(insertInline$1, true);\n var insertInlineAfter = curry(insertInline$1, false);\n\n var insertInlinePos = function (pos, before) {\n if ($_bjermr1rjkmcwkij.isText(pos.container())) {\n return insertInline$1(before, pos.container());\n } else {\n return insertInline$1(before, pos.getNode());\n }\n };\n var isPosCaretContainer = function (pos, caret) {\n var caretNode = caret.get();\n return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode);\n };\n var renderCaret = function (caret, location) {\n return location.fold(function (element) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlineBefore(element);\n caret.set(text);\n return Option.some(CaretPosition$1(text, text.length - 1));\n }, function (element) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(element).map(function (pos) {\n if (!isPosCaretContainer(pos, caret)) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlinePos(pos, true);\n caret.set(text);\n return CaretPosition$1(text, 1);\n } else {\n return CaretPosition$1(caret.get(), 1);\n }\n });\n }, function (element) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(element).map(function (pos) {\n if (!isPosCaretContainer(pos, caret)) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlinePos(pos, false);\n caret.set(text);\n return CaretPosition$1(text, text.length - 1);\n } else {\n return CaretPosition$1(caret.get(), caret.get().length - 1);\n }\n });\n }, function (element) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlineAfter(element);\n caret.set(text);\n return Option.some(CaretPosition$1(text, 1));\n });\n };\n var $_efgx6546jkmcwl4n = { renderCaret: renderCaret };\n\n var evaluateUntil = function (fns, args) {\n for (var i = 0; i < fns.length; i++) {\n var result = fns[i].apply(null, args);\n if (result.isSome()) {\n return result;\n }\n }\n return Option.none();\n };\n var $_8hyv6o49jkmcwl58 = { evaluateUntil: evaluateUntil };\n\n var Location = Adt.generate([\n { before: ['element'] },\n { start: ['element'] },\n { end: ['element'] },\n { after: ['element'] }\n ]);\n var rescope = function (rootNode, node) {\n var parentBlock = getParentBlock(node, rootNode);\n return parentBlock ? parentBlock : rootNode;\n };\n var before$3 = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\n var scope = rescope(rootNode, nPos.container());\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n return $_1m3f3j2yjkmcwkqg.nextPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.findRootInline, isInlineTarget, scope)).map(function (inline) {\n return Location.before(inline);\n });\n }, Option.none);\n };\n var isNotInsideFormatCaretContainer = function (rootNode, elm) {\n return getParentCaretContainer(rootNode, elm) === null;\n };\n var findInsideRootInline = function (isInlineTarget, rootNode, pos) {\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));\n };\n var start = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n var prevPos = $_1m3f3j2yjkmcwkqg.prevPosition(inline, nPos);\n return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none();\n });\n };\n var end = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n var nextPos = $_1m3f3j2yjkmcwkqg.nextPosition(inline, nPos);\n return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none();\n });\n };\n var after$3 = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\n var scope = rescope(rootNode, nPos.container());\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n return $_1m3f3j2yjkmcwkqg.prevPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.findRootInline, isInlineTarget, scope)).map(function (inline) {\n return Location.after(inline);\n });\n }, Option.none);\n };\n var isValidLocation = function (location) {\n return $_crqmqb3tjkmcwkxd.isRtl(getElement(location)) === false;\n };\n var readLocation = function (isInlineTarget, rootNode, pos) {\n var location = $_8hyv6o49jkmcwl58.evaluateUntil([\n before$3,\n start,\n end,\n after$3\n ], [\n isInlineTarget,\n rootNode,\n pos\n ]);\n return location.filter(isValidLocation);\n };\n var getElement = function (location) {\n return location.fold(identity, identity, identity, identity);\n };\n var getName = function (location) {\n return location.fold(constant('before'), constant('start'), constant('end'), constant('after'));\n };\n var outside = function (location) {\n return location.fold(Location.before, Location.before, Location.after, Location.after);\n };\n var inside = function (location) {\n return location.fold(Location.start, Location.start, Location.end, Location.end);\n };\n var isEq$1 = function (location1, location2) {\n return getName(location1) === getName(location2) && getElement(location1) === getElement(location2);\n };\n var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) {\n return liftN([\n $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from),\n $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, to)\n ], function (fromInline, toInline) {\n if (fromInline !== toInline && $_crqmqb3tjkmcwkxd.hasSameParentBlock(rootNode, fromInline, toInline)) {\n return Location.after(forward ? fromInline : toInline);\n } else {\n return location;\n }\n }).getOr(location);\n };\n var skipNoMovement = function (fromLocation, toLocation) {\n return fromLocation.fold(constant(true), function (fromLocation) {\n return !isEq$1(fromLocation, toLocation);\n });\n };\n var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) {\n var from = $_crqmqb3tjkmcwkxd.normalizePosition(forward, pos);\n var to = $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, from).map(curry($_crqmqb3tjkmcwkxd.normalizePosition, forward));\n var location = to.fold(function () {\n return fromLocation.map(outside);\n }, function (to) {\n return readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation));\n });\n return location.filter(isValidLocation);\n };\n var findLocationSimple = function (forward, location) {\n if (forward) {\n return location.fold(compose(Option.some, Location.start), Option.none, compose(Option.some, Location.after), Option.none);\n } else {\n return location.fold(Option.none, compose(Option.some, Location.before), Option.none, compose(Option.some, Location.end));\n }\n };\n var findLocation = function (forward, isInlineTarget, rootNode, pos) {\n var from = $_crqmqb3tjkmcwkxd.normalizePosition(forward, pos);\n var fromLocation = readLocation(isInlineTarget, rootNode, from);\n return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(function () {\n return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos);\n });\n };\n var $_gau9ep48jkmcwl4x = {\n readLocation: readLocation,\n findLocation: findLocation,\n prevLocation: curry(findLocation, false),\n nextLocation: curry(findLocation, true),\n getElement: getElement,\n outside: outside,\n inside: inside\n };\n\n var hasSelectionModifyApi = function (editor) {\n return isFunction(editor.selection.getSel().modify);\n };\n var moveRel = function (forward, selection, pos) {\n var delta = forward ? 1 : -1;\n selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange());\n selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word');\n return true;\n };\n var moveByWord = function (forward, editor) {\n var rng = editor.selection.getRng();\n var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng);\n if (!hasSelectionModifyApi(editor)) {\n return false;\n } else if (forward && isBeforeInline(pos)) {\n return moveRel(true, editor.selection, pos);\n } else if (!forward && isAfterInline(pos)) {\n return moveRel(false, editor.selection, pos);\n } else {\n return false;\n }\n };\n var $_dessn94bjkmcwl5p = {\n hasSelectionModifyApi: hasSelectionModifyApi,\n moveByWord: moveByWord\n };\n\n var setCaretPosition = function (editor, pos) {\n var rng = editor.dom.createRng();\n rng.setStart(pos.container(), pos.offset());\n rng.setEnd(pos.container(), pos.offset());\n editor.selection.setRng(rng);\n };\n var isFeatureEnabled = function (editor) {\n return editor.settings.inline_boundaries !== false;\n };\n var setSelected = function (state, elm) {\n if (state) {\n elm.setAttribute('data-mce-selected', 'inline-boundary');\n } else {\n elm.removeAttribute('data-mce-selected');\n }\n };\n var renderCaretLocation = function (editor, caret, location) {\n return $_efgx6546jkmcwl4n.renderCaret(caret, location).map(function (pos) {\n setCaretPosition(editor, pos);\n return location;\n });\n };\n var findLocation$1 = function (editor, caret, forward) {\n var rootNode = editor.getBody();\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var location = $_gau9ep48jkmcwl4x.findLocation(forward, isInlineTarget, rootNode, from);\n return location.bind(function (location) {\n return renderCaretLocation(editor, caret, location);\n });\n };\n var toggleInlines = function (isInlineTarget, dom, elms) {\n var selectedInlines = filter(dom.select('*[data-mce-selected=\"inline-boundary\"]'), isInlineTarget);\n var targetInlines = filter(elms, isInlineTarget);\n each(difference(selectedInlines, targetInlines), curry(setSelected, false));\n each(difference(targetInlines, selectedInlines), curry(setSelected, true));\n };\n var safeRemoveCaretContainer = function (editor, caret) {\n if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) {\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n if (CaretPosition$1.isTextPosition(pos) && $_crqmqb3tjkmcwkxd.isAtZwsp(pos) === false) {\n setCaretPosition(editor, $_xl2r331jkmcwkri.removeAndReposition(caret.get(), pos));\n caret.set(null);\n }\n }\n };\n var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) {\n if (editor.selection.isCollapsed()) {\n var inlines = filter(elms, isInlineTarget);\n each(inlines, function (inline) {\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) {\n return renderCaretLocation(editor, caret, location);\n });\n });\n }\n };\n var move = function (editor, caret, forward) {\n return function () {\n return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false;\n };\n };\n var moveWord = function (forward, editor, caret) {\n return function () {\n return isFeatureEnabled(editor) ? $_dessn94bjkmcwl5p.moveByWord(forward, editor) : false;\n };\n };\n var setupSelectedState = function (editor) {\n var caret = Cell(null);\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n editor.on('NodeChange', function (e) {\n if (isFeatureEnabled(editor)) {\n toggleInlines(isInlineTarget, editor.dom, e.parents);\n safeRemoveCaretContainer(editor, caret);\n renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents);\n }\n });\n return caret;\n };\n var moveNextWord = curry(moveWord, true);\n var movePrevWord = curry(moveWord, false);\n var $_dl6t9m4ajkmcwl5b = {\n move: move,\n moveNextWord: moveNextWord,\n movePrevWord: movePrevWord,\n setupSelectedState: setupSelectedState,\n setCaretPosition: setCaretPosition\n };\n\n var isFeatureEnabled$1 = function (editor) {\n return editor.settings.inline_boundaries !== false;\n };\n var rangeFromPositions = function (from, to) {\n var range = document.createRange();\n range.setStart(from.container(), from.offset());\n range.setEnd(to.container(), to.offset());\n return range;\n };\n var hasOnlyTwoOrLessPositionsLeft = function (elm) {\n return liftN([\n $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\n ], function (firstPos, lastPos) {\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\n return $_1m3f3j2yjkmcwkqg.nextPosition(elm, normalizedFirstPos).map(function (pos) {\n return pos.isEqual(normalizedLastPos);\n }).getOr(true);\n }).getOr(true);\n };\n var setCaretLocation = function (editor, caret) {\n return function (location$$1) {\n return $_efgx6546jkmcwl4n.renderCaret(caret, location$$1).map(function (pos) {\n $_dl6t9m4ajkmcwl5b.setCaretPosition(editor, pos);\n return true;\n }).getOr(false);\n };\n };\n var deleteFromTo = function (editor, caret, from, to) {\n var rootNode = editor.getBody();\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n editor.undoManager.ignore(function () {\n editor.selection.setRng(rangeFromPositions(from, to));\n editor.execCommand('Delete');\n $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map($_gau9ep48jkmcwl4x.inside).map(setCaretLocation(editor, caret));\n });\n editor.nodeChanged();\n };\n var rescope$1 = function (rootNode, node) {\n var parentBlock = getParentBlock(node, rootNode);\n return parentBlock ? parentBlock : rootNode;\n };\n var backspaceDeleteCollapsed = function (editor, caret, forward, from) {\n var rootNode = rescope$1(editor.getBody(), from.container());\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var fromLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, from);\n return fromLocation.bind(function (location$$1) {\n if (forward) {\n return location$$1.fold(constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none);\n } else {\n return location$$1.fold(Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))));\n }\n }).map(setCaretLocation(editor, caret)).getOrThunk(function () {\n var toPosition = $_1m3f3j2yjkmcwkqg.navigate(forward, rootNode, from);\n var toLocation = toPosition.bind(function (pos) {\n return $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, pos);\n });\n if (fromLocation.isSome() && toLocation.isSome()) {\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from).map(function (elm) {\n if (hasOnlyTwoOrLessPositionsLeft(elm)) {\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(elm));\n return true;\n } else {\n return false;\n }\n }).getOr(false);\n } else {\n return toLocation.bind(function (_) {\n return toPosition.map(function (to) {\n if (forward) {\n deleteFromTo(editor, caret, from, to);\n } else {\n deleteFromTo(editor, caret, to, from);\n }\n return true;\n });\n }).getOr(false);\n }\n });\n };\n var backspaceDelete$3 = function (editor, caret, forward) {\n if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) {\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return backspaceDeleteCollapsed(editor, caret, forward, from);\n }\n return false;\n };\n var $_dqvreg45jkmcwl4e = { backspaceDelete: backspaceDelete$3 };\n\n var tableCellRng = Immutable('start', 'end');\n var tableSelection = Immutable('rng', 'table', 'cells');\n var deleteAction = Adt.generate([\n { removeTable: ['element'] },\n { emptyCells: ['cells'] }\n ]);\n var isRootFromElement = function (root) {\n return curry($_e4hu6h1ejkmcwkgj.eq, root);\n };\n var getClosestCell$1 = function (container, isRoot) {\n return $_4ki4d929jkmcwkmn.closest(Element$$1.fromDom(container), 'td,th', isRoot);\n };\n var getClosestTable = function (cell, isRoot) {\n return $_4ki4d929jkmcwkmn.ancestor(cell, 'table', isRoot);\n };\n var isExpandedCellRng = function (cellRng) {\n return $_e4hu6h1ejkmcwkgj.eq(cellRng.start(), cellRng.end()) === false;\n };\n var getTableFromCellRng = function (cellRng, isRoot) {\n return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) {\n return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) {\n return $_e4hu6h1ejkmcwkgj.eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none();\n });\n });\n };\n var getTableCells = function (table) {\n return $_2gqm0n27jkmcwkmi.descendants(table, 'td,th');\n };\n var getCellRangeFromStartTable = function (cellRng, isRoot) {\n return getClosestTable(cellRng.start(), isRoot).bind(function (table) {\n return last(getTableCells(table)).map(function (endCell) {\n return tableCellRng(cellRng.start(), endCell);\n });\n });\n };\n var partialSelection = function (isRoot, rng) {\n var startCell = getClosestCell$1(rng.startContainer, isRoot);\n var endCell = getClosestCell$1(rng.endContainer, isRoot);\n return rng.collapsed ? Option.none() : liftN([\n startCell,\n endCell\n ], tableCellRng).fold(function () {\n return startCell.fold(function () {\n return endCell.bind(function (endCell) {\n return getClosestTable(endCell, isRoot).bind(function (table) {\n return head(getTableCells(table)).map(function (startCell) {\n return tableCellRng(startCell, endCell);\n });\n });\n });\n }, function (startCell) {\n return getClosestTable(startCell, isRoot).bind(function (table) {\n return last(getTableCells(table)).map(function (endCell) {\n return tableCellRng(startCell, endCell);\n });\n });\n });\n }, function (cellRng) {\n return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot);\n });\n };\n var isWithinSameTable = function (isRoot, cellRng) {\n return getTableFromCellRng(cellRng, isRoot).isSome();\n };\n var getCellRng = function (rng, isRoot) {\n var startCell = getClosestCell$1(rng.startContainer, isRoot);\n var endCell = getClosestCell$1(rng.endContainer, isRoot);\n return liftN([\n startCell,\n endCell\n ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) {\n return isWithinSameTable(isRoot, cellRng);\n }).orThunk(function () {\n return partialSelection(isRoot, rng);\n });\n };\n var getTableSelectionFromCellRng = function (cellRng, isRoot) {\n return getTableFromCellRng(cellRng, isRoot).map(function (table) {\n return tableSelection(cellRng, table, getTableCells(table));\n });\n };\n var getTableSelectionFromRng = function (root, rng) {\n var isRoot = isRootFromElement(root);\n return getCellRng(rng, isRoot).bind(function (cellRng) {\n return getTableSelectionFromCellRng(cellRng, isRoot);\n });\n };\n var getCellIndex = function (cells, cell) {\n return findIndex(cells, function (x) {\n return $_e4hu6h1ejkmcwkgj.eq(x, cell);\n });\n };\n var getSelectedCells = function (tableSelection) {\n return liftN([\n getCellIndex(tableSelection.cells(), tableSelection.rng().start()),\n getCellIndex(tableSelection.cells(), tableSelection.rng().end())\n ], function (startIndex, endIndex) {\n return tableSelection.cells().slice(startIndex, endIndex + 1);\n });\n };\n var getAction = function (tableSelection) {\n return getSelectedCells(tableSelection).map(function (selected) {\n var cells = tableSelection.cells();\n return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected);\n });\n };\n var getActionFromCells = function (cells) {\n return deleteAction.emptyCells(cells);\n };\n var getActionFromRange = function (root, rng) {\n return getTableSelectionFromRng(root, rng).bind(getAction);\n };\n var $_2x2sml4djkmcwl68 = {\n getActionFromRange: getActionFromRange,\n getActionFromCells: getActionFromCells\n };\n\n var getRanges = function (selection) {\n var ranges = [];\n if (selection) {\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n }\n return ranges;\n };\n var getSelectedNodes = function (ranges) {\n return bind(ranges, function (range$$1) {\n var node = getSelectedNode(range$$1);\n return node ? [Element$$1.fromDom(node)] : [];\n });\n };\n var hasMultipleRanges = function (selection) {\n return getRanges(selection).length > 1;\n };\n var $_admly54fjkmcwl6u = {\n getRanges: getRanges,\n getSelectedNodes: getSelectedNodes,\n hasMultipleRanges: hasMultipleRanges\n };\n\n var getCellsFromRanges = function (ranges) {\n return filter($_admly54fjkmcwl6u.getSelectedNodes(ranges), isTableCell);\n };\n var getCellsFromElement = function (elm) {\n var selectedCells = $_2gqm0n27jkmcwkmi.descendants(elm, 'td[data-mce-selected],th[data-mce-selected]');\n return selectedCells;\n };\n var getCellsFromElementOrRanges = function (ranges, element) {\n var selectedCells = getCellsFromElement(element);\n var rangeCells = getCellsFromRanges(ranges);\n return selectedCells.length > 0 ? selectedCells : rangeCells;\n };\n var getCellsFromEditor = function (editor) {\n return getCellsFromElementOrRanges($_admly54fjkmcwl6u.getRanges(editor.selection.getSel()), Element$$1.fromDom(editor.getBody()));\n };\n var $_7q5gk44ejkmcwl6p = {\n getCellsFromRanges: getCellsFromRanges,\n getCellsFromElement: getCellsFromElement,\n getCellsFromElementOrRanges: getCellsFromElementOrRanges,\n getCellsFromEditor: getCellsFromEditor\n };\n\n var emptyCells = function (editor, cells) {\n each(cells, $_zygeg3ljkmcwkvo.fillWithPaddingBr);\n editor.selection.setCursorLocation(cells[0].dom(), 0);\n return true;\n };\n var deleteTableElement = function (editor, table) {\n $_4yq1i444jkmcwl3w.deleteElement(editor, false, table);\n return true;\n };\n var deleteCellRange = function (editor, rootElm, rng) {\n return $_2x2sml4djkmcwl68.getActionFromRange(rootElm, rng).map(function (action) {\n return action.fold(curry(deleteTableElement, editor), curry(emptyCells, editor));\n });\n };\n var deleteCaptionRange = function (editor, caption) {\n return emptyElement(editor, caption);\n };\n var deleteTableRange = function (editor, rootElm, rng, startElm) {\n return getParentCaption(rootElm, startElm).fold(function () {\n return deleteCellRange(editor, rootElm, rng);\n }, function (caption) {\n return deleteCaptionRange(editor, caption);\n }).getOr(false);\n };\n var deleteRange$1 = function (editor, startElm) {\n var rootNode = Element$$1.fromDom(editor.getBody());\n var rng = editor.selection.getRng();\n var selectedCells = $_7q5gk44ejkmcwl6p.getCellsFromEditor(editor);\n return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm);\n };\n var getParentCell = function (rootElm, elm) {\n return find($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), isTableCell);\n };\n var getParentCaption = function (rootElm, elm) {\n return find($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\n });\n };\n var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) {\n return $_1m3f3j2yjkmcwkqg.navigate(forward, editor.getBody(), from).bind(function (to) {\n return getParentCell(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCell) {\n return $_e4hu6h1ejkmcwkgj.eq(toCell, fromCell) === false;\n });\n });\n };\n var emptyElement = function (editor, elm) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(elm);\n editor.selection.setCursorLocation(elm.dom(), 0);\n return Option.some(true);\n };\n var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(fromCaption.dom()).bind(function (first) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(fromCaption.dom()).map(function (last$$1) {\n return forward ? from.isEqual(first) && to.isEqual(last$$1) : from.isEqual(last$$1) && to.isEqual(first);\n });\n }).getOr(true);\n };\n var emptyCaretCaption = function (editor, elm) {\n return emptyElement(editor, elm);\n };\n var validateCaretCaption = function (rootElm, fromCaption, to) {\n return getParentCaption(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCaption) {\n return $_e4hu6h1ejkmcwkgj.eq(toCaption, fromCaption) === false;\n });\n };\n var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) {\n return $_1m3f3j2yjkmcwkqg.navigate(forward, editor.getBody(), from).bind(function (to) {\n return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to);\n }).or(Option.some(true));\n };\n var deleteCaretCells = function (editor, forward, rootElm, startElm) {\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return getParentCell(rootElm, startElm).bind(function (fromCell) {\n return $_1jnfso3wjkmcwl1v.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from);\n });\n };\n var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) {\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return $_1jnfso3wjkmcwl1v.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);\n };\n var deleteCaret = function (editor, forward, startElm) {\n var rootElm = Element$$1.fromDom(editor.getBody());\n return getParentCaption(rootElm, startElm).fold(function () {\n return deleteCaretCells(editor, forward, rootElm, startElm);\n }, function (fromCaption) {\n return deleteCaretCaption(editor, forward, rootElm, fromCaption);\n }).getOr(false);\n };\n var backspaceDelete$4 = function (editor, forward) {\n var startElm = Element$$1.fromDom(editor.selection.getStart(true));\n var cells = $_7q5gk44ejkmcwl6p.getCellsFromEditor(editor);\n return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm);\n };\n var $_5lrlvq4cjkmcwl5t = { backspaceDelete: backspaceDelete$4 };\n\n var nativeCommand = function (editor, command) {\n editor.getDoc().execCommand(command, false, null);\n };\n var deleteCommand = function (editor) {\n if ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, false)) {\n return;\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, false)) {\n return;\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, false)) {\n return;\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\n return;\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, false)) {\n return;\n } else {\n nativeCommand(editor, 'Delete');\n $_8z75uj3sjkmcwkx3.paddEmptyBody(editor);\n }\n };\n var forwardDeleteCommand = function (editor) {\n if ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, true)) {\n return;\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, true)) {\n return;\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, true)) {\n return;\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\n return;\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, true)) {\n return;\n } else {\n nativeCommand(editor, 'ForwardDelete');\n }\n };\n var $_3ahn8y3pjkmcwkwc = {\n deleteCommand: deleteCommand,\n forwardDeleteCommand: forwardDeleteCommand\n };\n\n var getSpecifiedFontProp = function (propName, rootElm, elm) {\n var getProperty = function (elm) {\n return $_4enzit13jkmcwke5.getRaw(elm, propName);\n };\n var isRoot = function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(Element$$1.fromDom(rootElm), elm);\n };\n return $_253nd92ajkmcwkmp.closest(Element$$1.fromDom(elm), function (elm) {\n return getProperty(elm).isSome();\n }, isRoot).bind(getProperty);\n };\n var round$1 = function (number, precision) {\n var factor = Math.pow(10, precision);\n return Math.round(number * factor) / factor;\n };\n var toPt = function (fontSize, precision) {\n if (/[0-9.]+px$/.test(fontSize)) {\n return round$1(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n }\n return fontSize;\n };\n var normalizeFontFamily = function (fontFamily) {\n return fontFamily.replace(/[\\'\\\"\\\\]/g, '').replace(/,\\s+/g, ',');\n };\n var getComputedFontProp = function (propName, elm) {\n return Option.from(DOMUtils$1.DOM.getStyle(elm, propName, true));\n };\n var getFontProp = function (propName) {\n return function (rootElm, elm) {\n return Option.from(elm).map(Element$$1.fromDom).filter($_2xwdjv11jkmcwke0.isElement).bind(function (element) {\n return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom()));\n }).getOr('');\n };\n };\n var $_3qs0f64hjkmcwl74 = {\n getFontSize: getFontProp('font-size'),\n getFontFamily: compose(normalizeFontFamily, getFontProp('font-family')),\n toPt: toPt\n };\n\n var findFirstCaretElement = function (editor) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).map(function (caret) {\n var container = caret.container();\n return $_bjermr1rjkmcwkij.isText(container) ? container.parentNode : container;\n });\n };\n var isRangeAtStartOfNode = function (rng, root) {\n return rng.startContainer === root && rng.startOffset === 0;\n };\n var getCaretElement = function (editor) {\n return Option.from(editor.selection.getRng()).bind(function (rng) {\n var root = editor.getBody();\n return isRangeAtStartOfNode(rng, root) ? Option.none() : Option.from(editor.selection.getStart(true));\n });\n };\n var fromFontSizeNumber = function (editor, value) {\n if (/^[0-9\\.]+$/.test(value)) {\n var fontSizeNumber = parseInt(value, 10);\n if (fontSizeNumber >= 1 && fontSizeNumber <= 7) {\n var fontSizes = $_2ycm1438jkmcwkta.getFontStyleValues(editor);\n var fontClasses = $_2ycm1438jkmcwkta.getFontSizeClasses(editor);\n if (fontClasses) {\n return fontClasses[fontSizeNumber - 1] || value;\n } else {\n return fontSizes[fontSizeNumber - 1] || value;\n }\n } else {\n return value;\n }\n } else {\n return value;\n }\n };\n var fontNameAction = function (editor, value) {\n editor.formatter.toggle('fontname', { value: fromFontSizeNumber(editor, value) });\n editor.nodeChanged();\n };\n var fontNameQuery = function (editor) {\n return getCaretElement(editor).fold(function () {\n return findFirstCaretElement(editor).map(function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontFamily(editor.getBody(), caretElement);\n }).getOr('');\n }, function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontFamily(editor.getBody(), caretElement);\n });\n };\n var fontSizeAction = function (editor, value) {\n editor.formatter.toggle('fontsize', { value: fromFontSizeNumber(editor, value) });\n editor.nodeChanged();\n };\n var fontSizeQuery = function (editor) {\n return getCaretElement(editor).fold(function () {\n return findFirstCaretElement(editor).map(function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontSize(editor.getBody(), caretElement);\n }).getOr('');\n }, function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontSize(editor.getBody(), caretElement);\n });\n };\n\n var isEq$2 = function (rng1, rng2) {\n return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset);\n };\n var $_axtxv74kjkmcwl84 = { isEq: isEq$2 };\n\n var findParent = function (node, rootNode, predicate) {\n while (node && node !== rootNode) {\n if (predicate(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var hasParent = function (node, rootNode, predicate) {\n return findParent(node, rootNode, predicate) !== null;\n };\n var hasParentWithName = function (node, rootNode, name) {\n return hasParent(node, rootNode, function (node) {\n return node.nodeName === name;\n });\n };\n var isTable$2 = function (node) {\n return node && node.nodeName === 'TABLE';\n };\n var isTableCell$3 = function (node) {\n return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\n };\n var isCeFalseCaretContainer = function (node, rootNode) {\n return isCaretContainer(node) && hasParent(node, rootNode, isCaretNode) === false;\n };\n var hasBrBeforeAfter = function (dom, node, left) {\n var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot());\n while (node = walker[left ? 'prev' : 'next']()) {\n if ($_bjermr1rjkmcwkij.isBr(node)) {\n return true;\n }\n }\n };\n var isPrevNode = function (node, name) {\n return node.previousSibling && node.previousSibling.nodeName === name;\n };\n var hasContentEditableFalseParent = function (body, node) {\n while (node && node !== body) {\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(node)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) {\n var walker, lastInlineElement, parentBlockContainer;\n var body = dom.getRoot();\n var node;\n var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;\n if (left && $_bjermr1rjkmcwkij.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) {\n return Option.some(CaretPosition(startNode.parentNode, dom.nodeIndex(startNode)));\n }\n walker = new TreeWalker(startNode, parentBlockContainer);\n while (node = walker[left ? 'prev' : 'next']()) {\n if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) {\n return Option.none();\n }\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\n if (hasParentWithName(node, body, 'A') === false) {\n return Option.some(CaretPosition(node, left ? node.nodeValue.length : 0));\n }\n return Option.none();\n }\n if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n return Option.none();\n }\n lastInlineElement = node;\n }\n if (collapsed && lastInlineElement) {\n return Option.some(CaretPosition(lastInlineElement, 0));\n }\n return Option.none();\n };\n var normalizeEndPoint = function (dom, collapsed, start, rng) {\n var container, offset, walker;\n var body = dom.getRoot();\n var node, nonEmptyElementsMap;\n var directionLeft, isAfterNode, normalized = false;\n container = rng[(start ? 'start' : 'end') + 'Container'];\n offset = rng[(start ? 'start' : 'end') + 'Offset'];\n isAfterNode = $_bjermr1rjkmcwkij.isElement(container) && offset === container.childNodes.length;\n nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n directionLeft = start;\n if (isCaretContainer(container)) {\n return Option.none();\n }\n if ($_bjermr1rjkmcwkij.isElement(container) && offset > container.childNodes.length - 1) {\n directionLeft = false;\n }\n if ($_bjermr1rjkmcwkij.isDocument(container)) {\n container = body;\n offset = 0;\n }\n if (container === body) {\n if (directionLeft) {\n node = container.childNodes[offset > 0 ? offset - 1 : 0];\n if (node) {\n if (isCaretContainer(node)) {\n return Option.none();\n }\n if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) {\n return Option.none();\n }\n }\n }\n if (container.hasChildNodes()) {\n offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);\n container = container.childNodes[offset];\n offset = $_bjermr1rjkmcwkij.isText(container) && isAfterNode ? container.data.length : 0;\n if (!collapsed && container === body.lastChild && isTable$2(container)) {\n return Option.none();\n }\n if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) {\n return Option.none();\n }\n if (container.hasChildNodes() && isTable$2(container) === false) {\n node = container;\n walker = new TreeWalker(container, body);\n do {\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(node) || isCaretContainer(node)) {\n normalized = false;\n break;\n }\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\n offset = directionLeft ? 0 : node.nodeValue.length;\n container = node;\n normalized = true;\n break;\n }\n if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) {\n offset = dom.nodeIndex(node);\n container = node.parentNode;\n if (!directionLeft) {\n offset++;\n }\n normalized = true;\n break;\n }\n } while (node = directionLeft ? walker.next() : walker.prev());\n }\n }\n }\n if (collapsed) {\n if ($_bjermr1rjkmcwkij.isText(container) && offset === 0) {\n findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) {\n container = pos.container();\n offset = pos.offset();\n normalized = true;\n });\n }\n if ($_bjermr1rjkmcwkij.isElement(container)) {\n node = container.childNodes[offset];\n if (!node) {\n node = container.childNodes[offset - 1];\n }\n if (node && $_bjermr1rjkmcwkij.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) {\n findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) {\n container = pos.container();\n offset = pos.offset();\n normalized = true;\n });\n }\n }\n }\n if (directionLeft && !collapsed && $_bjermr1rjkmcwkij.isText(container) && offset === container.nodeValue.length) {\n findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) {\n container = pos.container();\n offset = pos.offset();\n normalized = true;\n });\n }\n return normalized ? Option.some(CaretPosition(container, offset)) : Option.none();\n };\n var normalize$1 = function (dom, rng) {\n var collapsed = rng.collapsed, normRng = rng.cloneRange();\n var startPos = CaretPosition.fromRangeStart(rng);\n normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) {\n if (!collapsed || !CaretPosition.isAbove(startPos, pos)) {\n normRng.setStart(pos.container(), pos.offset());\n }\n });\n if (!collapsed) {\n normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) {\n normRng.setEnd(pos.container(), pos.offset());\n });\n }\n if (collapsed) {\n normRng.collapse(true);\n }\n return $_axtxv74kjkmcwl84.isEq(rng, normRng) ? Option.none() : Option.some(normRng);\n };\n var $_21c07i4jjkmcwl7w = { normalize: normalize$1 };\n\n var hasRightSideContent = function (schema, container, parentBlock) {\n var walker = new TreeWalker(container, parentBlock);\n var node;\n var nonEmptyElementsMap = schema.getNonEmptyElements();\n while (node = walker.next()) {\n if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {\n return true;\n }\n }\n };\n var scrollToBr = function (dom, selection, brElm) {\n var marker = dom.create('span', {}, ' ');\n brElm.parentNode.insertBefore(marker, brElm);\n selection.scrollIntoView(marker);\n dom.remove(marker);\n };\n var moveSelectionToBr = function (dom, selection, brElm, extraBr) {\n var rng = dom.createRng();\n if (!extraBr) {\n rng.setStartAfter(brElm);\n rng.setEndAfter(brElm);\n } else {\n rng.setStartBefore(brElm);\n rng.setEndBefore(brElm);\n }\n selection.setRng(rng);\n };\n var insertBrAtCaret = function (editor, evt) {\n var selection = editor.selection, dom = editor.dom;\n var brElm, extraBr;\n var rng = selection.getRng();\n $_21c07i4jjkmcwl7w.normalize(dom, rng).each(function (normRng) {\n rng.setStart(normRng.startContainer, normRng.startOffset);\n rng.setEnd(normRng.endContainer, normRng.endOffset);\n });\n var offset = rng.startOffset;\n var container = rng.startContainer;\n if (container.nodeType === 1 && container.hasChildNodes()) {\n var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n if (isAfterLastNodeInContainer && container.nodeType === 3) {\n offset = container.nodeValue.length;\n } else {\n offset = 0;\n }\n }\n var parentBlock = dom.getParent(container, dom.isBlock);\n var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n var isControlKey = evt && evt.ctrlKey;\n if (containerBlockName === 'LI' && !isControlKey) {\n parentBlock = containerBlock;\n }\n if (container && container.nodeType === 3 && offset >= container.nodeValue.length) {\n if (!hasRightSideContent(editor.schema, container, parentBlock)) {\n brElm = dom.create('br');\n rng.insertNode(brElm);\n rng.setStartAfter(brElm);\n rng.setEndAfter(brElm);\n extraBr = true;\n }\n }\n brElm = dom.create('br');\n rng.insertNode(brElm);\n scrollToBr(dom, selection, brElm);\n moveSelectionToBr(dom, selection, brElm, extraBr);\n editor.undoManager.add();\n };\n var insertBrBefore = function (editor, inline) {\n var br = Element$$1.fromTag('br');\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(inline), br);\n editor.undoManager.add();\n };\n var insertBrAfter = function (editor, inline) {\n if (!hasBrAfter(editor.getBody(), inline)) {\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(inline), Element$$1.fromTag('br'));\n }\n var br = Element$$1.fromTag('br');\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(inline), br);\n scrollToBr(editor.dom, editor.selection, br.dom());\n moveSelectionToBr(editor.dom, editor.selection, br.dom(), false);\n editor.undoManager.add();\n };\n var isBeforeBr = function (pos) {\n return $_bjermr1rjkmcwkij.isBr(pos.getNode());\n };\n var hasBrAfter = function (rootNode, startNode) {\n if (isBeforeBr(CaretPosition$1.after(startNode))) {\n return true;\n } else {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) {\n return $_bjermr1rjkmcwkij.isBr(pos.getNode());\n }).getOr(false);\n }\n };\n var isAnchorLink = function (elm) {\n return elm && elm.nodeName === 'A' && 'href' in elm;\n };\n var isInsideAnchor = function (location) {\n return location.fold(constant(false), isAnchorLink, isAnchorLink, constant(false));\n };\n var readInlineAnchorLocation = function (editor) {\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var position = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor);\n };\n var insertBrOutsideAnchor = function (editor, location) {\n location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop);\n };\n var insert = function (editor, evt) {\n var anchorLocation = readInlineAnchorLocation(editor);\n if (anchorLocation.isSome()) {\n anchorLocation.each(curry(insertBrOutsideAnchor, editor));\n } else {\n insertBrAtCaret(editor, evt);\n }\n };\n var $_dc07up4ijkmcwl7n = { insert: insert };\n\n var adt = Adt.generate([\n { 'before': ['element'] },\n {\n 'on': [\n 'element',\n 'offset'\n ]\n },\n { after: ['element'] }\n ]);\n var cata = function (subject, onBefore, onOn, onAfter) {\n return subject.fold(onBefore, onOn, onAfter);\n };\n var getStart = function (situ) {\n return situ.fold(identity, identity, identity);\n };\n var $_1s5vuk4njkmcwl8r = {\n before: adt.before,\n on: adt.on,\n after: adt.after,\n cata: cata,\n getStart: getStart\n };\n\n var type$1 = Adt.generate([\n { domRange: ['rng'] },\n {\n relative: [\n 'startSitu',\n 'finishSitu'\n ]\n },\n {\n exact: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n }\n ]);\n var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');\n var exactFromRange = function (simRange) {\n return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset());\n };\n var getStart$1 = function (selection) {\n return selection.match({\n domRange: function (rng) {\n return Element$$1.fromDom(rng.startContainer);\n },\n relative: function (startSitu, finishSitu) {\n return $_1s5vuk4njkmcwl8r.getStart(startSitu);\n },\n exact: function (start, soffset, finish, foffset) {\n return start;\n }\n });\n };\n var getWin = function (selection) {\n var start = getStart$1(selection);\n return $_ca6pc118jkmcwkfs.defaultView(start);\n };\n var $_2v8ne64mjkmcwl8l = {\n domRange: type$1.domRange,\n relative: type$1.relative,\n exact: type$1.exact,\n exactFromRange: exactFromRange,\n range: range$1,\n getWin: getWin\n };\n\n var browser$3 = $_b1ykk4ojkmcwkcj.detect().browser;\n var clamp = function (offset, element) {\n var max = $_2xwdjv11jkmcwke0.isText(element) ? $_ckzc193ejkmcwktu.get(element).length : $_ca6pc118jkmcwkfs.children(element).length + 1;\n if (offset > max) {\n return max;\n } else if (offset < 0) {\n return 0;\n }\n return offset;\n };\n var normalizeRng = function (rng) {\n return $_2v8ne64mjkmcwl8l.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));\n };\n var isOrContains = function (root, elm) {\n return $_e4hu6h1ejkmcwkgj.contains(root, elm) || $_e4hu6h1ejkmcwkgj.eq(root, elm);\n };\n var isRngInRoot = function (root) {\n return function (rng) {\n return isOrContains(root, rng.start()) && isOrContains(root, rng.finish());\n };\n };\n var shouldStore = function (editor) {\n return editor.inline === true || browser$3.isIE();\n };\n var nativeRangeToSelectionRange = function (r) {\n return $_2v8ne64mjkmcwl8l.range(Element$$1.fromDom(r.startContainer), r.startOffset, Element$$1.fromDom(r.endContainer), r.endOffset);\n };\n var readRange = function (win) {\n var selection = win.getSelection();\n var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0));\n return rng.map(nativeRangeToSelectionRange);\n };\n var getBookmark$2 = function (root) {\n var win = $_ca6pc118jkmcwkfs.defaultView(root);\n return readRange(win.dom()).filter(isRngInRoot(root));\n };\n var validate = function (root, bookmark) {\n return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);\n };\n var bookmarkToNativeRng = function (bookmark) {\n var rng = document.createRange();\n try {\n rng.setStart(bookmark.start().dom(), bookmark.soffset());\n rng.setEnd(bookmark.finish().dom(), bookmark.foffset());\n return Option.some(rng);\n } catch (_) {\n return Option.none();\n }\n };\n var store = function (editor) {\n var newBookmark = shouldStore(editor) ? getBookmark$2(Element$$1.fromDom(editor.getBody())) : Option.none();\n editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n };\n var storeNative = function (editor, rng) {\n var root = Element$$1.fromDom(editor.getBody());\n var range = shouldStore(editor) ? Option.from(rng) : Option.none();\n var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root));\n editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n };\n var getRng = function (editor) {\n var bookmark = editor.bookmark ? editor.bookmark : Option.none();\n return bookmark.bind(curry(validate, Element$$1.fromDom(editor.getBody()))).bind(bookmarkToNativeRng);\n };\n var restore = function (editor) {\n getRng(editor).each(function (rng) {\n editor.selection.setRng(rng);\n });\n };\n var $_39c3zs4ljkmcwl86 = {\n store: store,\n storeNative: storeNative,\n readRange: readRange,\n restore: restore,\n getRng: getRng,\n getBookmark: getBookmark$2,\n validate: validate\n };\n\n var indentElement = function (dom, command, useMargin, value, unit, element) {\n if (dom.getContentEditable(element) === 'false') {\n return;\n }\n if (element.nodeName !== 'LI') {\n var indentStyleName = useMargin ? 'margin' : 'padding';\n indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName;\n indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left';\n if (command === 'outdent') {\n var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value);\n dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');\n } else {\n var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit;\n dom.setStyle(element, indentStyleName, styleValue);\n }\n }\n };\n var handle = function (editor, command) {\n var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter;\n var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0];\n var indentValue = parseInt(settings.indentation, 10);\n var useMargin = editor.getParam('indent_use_margin', false);\n if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) {\n if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {\n formatter.apply('div');\n }\n each(selection.getSelectedBlocks(), function (element) {\n return indentElement(dom, command, useMargin, indentValue, indentUnit, element);\n });\n }\n };\n\n var each$10 = $_4ujg4tljkmcwkbk.each;\n var extend$2 = $_4ujg4tljkmcwkbk.extend;\n var map$3 = $_4ujg4tljkmcwkbk.map;\n var inArray$2 = $_4ujg4tljkmcwkbk.inArray;\n function EditorCommands (editor) {\n var dom, selection, formatter;\n var commands = {\n state: {},\n exec: {},\n value: {}\n };\n var settings = editor.settings, bookmark;\n editor.on('PreInit', function () {\n dom = editor.dom;\n selection = editor.selection;\n settings = editor.settings;\n formatter = editor.formatter;\n });\n var execCommand = function (command, ui, value, args) {\n var func, customCommand, state = false;\n if (editor.removed) {\n return;\n }\n if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {\n editor.focus();\n } else {\n $_39c3zs4ljkmcwl86.restore(editor);\n }\n args = editor.fire('BeforeExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n if (args.isDefaultPrevented()) {\n return false;\n }\n customCommand = command.toLowerCase();\n if (func = commands.exec[customCommand]) {\n func(customCommand, ui, value);\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n return true;\n }\n each$10(editor.plugins, function (p) {\n if (p.execCommand && p.execCommand(command, ui, value)) {\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n state = true;\n return false;\n }\n });\n if (state) {\n return state;\n }\n if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n return true;\n }\n try {\n state = editor.getDoc().execCommand(command, ui, value);\n } catch (ex) {\n }\n if (state) {\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n return true;\n }\n return false;\n };\n var queryCommandState = function (command) {\n var func;\n if (editor.quirks.isHidden() || editor.removed) {\n return;\n }\n command = command.toLowerCase();\n if (func = commands.state[command]) {\n return func(command);\n }\n try {\n return editor.getDoc().queryCommandState(command);\n } catch (ex) {\n }\n return false;\n };\n var queryCommandValue = function (command) {\n var func;\n if (editor.quirks.isHidden() || editor.removed) {\n return;\n }\n command = command.toLowerCase();\n if (func = commands.value[command]) {\n return func(command);\n }\n try {\n return editor.getDoc().queryCommandValue(command);\n } catch (ex) {\n }\n };\n var addCommands = function (commandList, type) {\n type = type || 'exec';\n each$10(commandList, function (callback, command) {\n each$10(command.toLowerCase().split(','), function (command) {\n commands[type][command] = callback;\n });\n });\n };\n var addCommand = function (command, callback, scope) {\n command = command.toLowerCase();\n commands.exec[command] = function (command, ui, value, args) {\n return callback.call(scope || editor, ui, value, args);\n };\n };\n var queryCommandSupported = function (command) {\n command = command.toLowerCase();\n if (commands.exec[command]) {\n return true;\n }\n try {\n return editor.getDoc().queryCommandSupported(command);\n } catch (ex) {\n }\n return false;\n };\n var addQueryStateHandler = function (command, callback, scope) {\n command = command.toLowerCase();\n commands.state[command] = function () {\n return callback.call(scope || editor);\n };\n };\n var addQueryValueHandler = function (command, callback, scope) {\n command = command.toLowerCase();\n commands.value[command] = function () {\n return callback.call(scope || editor);\n };\n };\n var hasCustomCommand = function (command) {\n command = command.toLowerCase();\n return !!commands.exec[command];\n };\n extend$2(this, {\n execCommand: execCommand,\n queryCommandState: queryCommandState,\n queryCommandValue: queryCommandValue,\n queryCommandSupported: queryCommandSupported,\n addCommands: addCommands,\n addCommand: addCommand,\n addQueryStateHandler: addQueryStateHandler,\n addQueryValueHandler: addQueryValueHandler,\n hasCustomCommand: hasCustomCommand\n });\n var execNativeCommand = function (command, ui, value) {\n if (ui === undefined) {\n ui = false;\n }\n if (value === undefined) {\n value = null;\n }\n return editor.getDoc().execCommand(command, ui, value);\n };\n var isFormatMatch = function (name) {\n return formatter.match(name);\n };\n var toggleFormat = function (name, value) {\n formatter.toggle(name, value ? { value: value } : undefined);\n editor.nodeChanged();\n };\n var storeSelection = function (type) {\n bookmark = selection.getBookmark(type);\n };\n var restoreSelection = function () {\n selection.moveToBookmark(bookmark);\n };\n addCommands({\n 'mceResetDesignMode,mceBeginUndoLevel': function () {\n },\n 'mceEndUndoLevel,mceAddUndoLevel': function () {\n editor.undoManager.add();\n },\n 'Cut,Copy,Paste': function (command) {\n var doc = editor.getDoc();\n var failed;\n try {\n execNativeCommand(command);\n } catch (ex) {\n failed = true;\n }\n if (command === 'paste' && !doc.queryCommandEnabled(command)) {\n failed = true;\n }\n if (failed || !doc.queryCommandSupported(command)) {\n var msg = editor.translate('Your browser doesn\\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.');\n if ($_cvvl9iajkmcwk25.mac) {\n msg = msg.replace(/Ctrl\\+/g, '\\u2318+');\n }\n editor.notificationManager.open({\n text: msg,\n type: 'error'\n });\n }\n },\n 'unlink': function () {\n if (selection.isCollapsed()) {\n var elm = editor.dom.getParent(editor.selection.getStart(), 'a');\n if (elm) {\n editor.dom.remove(elm, true);\n }\n return;\n }\n formatter.remove('link');\n },\n 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) {\n var align = command.substring(7);\n if (align === 'full') {\n align = 'justify';\n }\n each$10('left,center,right,justify'.split(','), function (name) {\n if (align !== name) {\n formatter.remove('align' + name);\n }\n });\n if (align !== 'none') {\n toggleFormat('align' + align);\n }\n },\n 'InsertUnorderedList,InsertOrderedList': function (command) {\n var listElm, listParent;\n execNativeCommand(command);\n listElm = dom.getParent(selection.getNode(), 'ol,ul');\n if (listElm) {\n listParent = listElm.parentNode;\n if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {\n storeSelection();\n dom.split(listParent, listElm);\n restoreSelection();\n }\n }\n },\n 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\n toggleFormat(command);\n },\n 'ForeColor,HiliteColor': function (command, ui, value) {\n toggleFormat(command, value);\n },\n 'FontName': function (command, ui, value) {\n fontNameAction(editor, value);\n },\n 'FontSize': function (command, ui, value) {\n fontSizeAction(editor, value);\n },\n 'RemoveFormat': function (command) {\n formatter.remove(command);\n },\n 'mceBlockQuote': function () {\n toggleFormat('blockquote');\n },\n 'FormatBlock': function (command, ui, value) {\n return toggleFormat(value || 'p');\n },\n 'mceCleanup': function () {\n var bookmark = selection.getBookmark();\n editor.setContent(editor.getContent());\n selection.moveToBookmark(bookmark);\n },\n 'mceRemoveNode': function (command, ui, value) {\n var node = value || selection.getNode();\n if (node !== editor.getBody()) {\n storeSelection();\n editor.dom.remove(node, true);\n restoreSelection();\n }\n },\n 'mceSelectNodeDepth': function (command, ui, value) {\n var counter = 0;\n dom.getParent(selection.getNode(), function (node) {\n if (node.nodeType === 1 && counter++ === value) {\n selection.select(node);\n return false;\n }\n }, editor.getBody());\n },\n 'mceSelectNode': function (command, ui, value) {\n selection.select(value);\n },\n 'mceInsertContent': function (command, ui, value) {\n $_g2yj883ijkmcwkv2.insertAtCaret(editor, value);\n },\n 'mceInsertRawHTML': function (command, ui, value) {\n var content = editor.getContent();\n selection.setContent('tiny_mce_marker');\n editor.setContent(content.replace(/tiny_mce_marker/g, function () {\n return value;\n }));\n },\n 'mceToggleFormat': function (command, ui, value) {\n toggleFormat(value);\n },\n 'mceSetContent': function (command, ui, value) {\n editor.setContent(value);\n },\n 'Indent,Outdent': function (command) {\n handle(editor, command);\n },\n 'mceRepaint': function () {\n },\n 'InsertHorizontalRule': function () {\n editor.execCommand('mceInsertContent', false, '
');\n },\n 'mceToggleVisualAid': function () {\n editor.hasVisual = !editor.hasVisual;\n editor.addVisual();\n },\n 'mceReplaceContent': function (command, ui, value) {\n editor.execCommand('mceInsertContent', false, value.replace(/\\{\\$selection\\}/g, selection.getContent({ format: 'text' })));\n },\n 'mceInsertLink': function (command, ui, value) {\n var anchor;\n if (typeof value === 'string') {\n value = { href: value };\n }\n anchor = dom.getParent(selection.getNode(), 'a');\n value.href = value.href.replace(' ', '%20');\n if (!anchor || !value.href) {\n formatter.remove('link');\n }\n if (value.href) {\n formatter.apply('link', value, anchor);\n }\n },\n 'selectAll': function () {\n var editingHost = dom.getParent(selection.getStart(), $_bjermr1rjkmcwkij.isContentEditableTrue);\n if (editingHost) {\n var rng = dom.createRng();\n rng.selectNodeContents(editingHost);\n selection.setRng(rng);\n }\n },\n 'delete': function () {\n $_3ahn8y3pjkmcwkwc.deleteCommand(editor);\n },\n 'forwardDelete': function () {\n $_3ahn8y3pjkmcwkwc.forwardDeleteCommand(editor);\n },\n 'mceNewDocument': function () {\n editor.setContent('');\n },\n 'InsertLineBreak': function (command, ui, value) {\n $_dc07up4ijkmcwl7n.insert(editor, value);\n return true;\n }\n });\n var alignStates = function (name) {\n return function () {\n var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();\n var matches = map$3(nodes, function (node) {\n return !!formatter.matchNode(node, name);\n });\n return inArray$2(matches, true) !== -1;\n };\n };\n addCommands({\n 'JustifyLeft': alignStates('alignleft'),\n 'JustifyCenter': alignStates('aligncenter'),\n 'JustifyRight': alignStates('alignright'),\n 'JustifyFull': alignStates('alignjustify'),\n 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\n return isFormatMatch(command);\n },\n 'mceBlockQuote': function () {\n return isFormatMatch('blockquote');\n },\n 'Outdent': function () {\n var node;\n if (settings.inline_styles) {\n if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\n return true;\n }\n if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\n return true;\n }\n }\n return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE');\n },\n 'InsertUnorderedList,InsertOrderedList': function (command) {\n var list = dom.getParent(selection.getNode(), 'ul,ol');\n return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL');\n }\n }, 'state');\n addCommands({\n Undo: function () {\n editor.undoManager.undo();\n },\n Redo: function () {\n editor.undoManager.redo();\n }\n });\n addQueryValueHandler('FontName', function () {\n return fontNameQuery(editor);\n }, this);\n addQueryValueHandler('FontSize', function () {\n return fontSizeQuery(editor);\n }, this);\n }\n\n var nativeEvents = $_4ujg4tljkmcwkbk.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' ');\n var Dispatcher = function (settings) {\n var self = this;\n var scope, bindings = {}, toggleEvent;\n var returnFalse = function () {\n return false;\n };\n var returnTrue = function () {\n return true;\n };\n settings = settings || {};\n scope = settings.scope || self;\n toggleEvent = settings.toggleEvent || returnFalse;\n var fire = function (name, args) {\n var handlers, i, l, callback;\n name = name.toLowerCase();\n args = args || {};\n args.type = name;\n if (!args.target) {\n args.target = scope;\n }\n if (!args.preventDefault) {\n args.preventDefault = function () {\n args.isDefaultPrevented = returnTrue;\n };\n args.stopPropagation = function () {\n args.isPropagationStopped = returnTrue;\n };\n args.stopImmediatePropagation = function () {\n args.isImmediatePropagationStopped = returnTrue;\n };\n args.isDefaultPrevented = returnFalse;\n args.isPropagationStopped = returnFalse;\n args.isImmediatePropagationStopped = returnFalse;\n }\n if (settings.beforeFire) {\n settings.beforeFire(args);\n }\n handlers = bindings[name];\n if (handlers) {\n for (i = 0, l = handlers.length; i < l; i++) {\n callback = handlers[i];\n if (callback.once) {\n off(name, callback.func);\n }\n if (args.isImmediatePropagationStopped()) {\n args.stopPropagation();\n return args;\n }\n if (callback.func.call(scope, args) === false) {\n args.preventDefault();\n return args;\n }\n }\n }\n return args;\n };\n var on = function (name, callback, prepend, extra) {\n var handlers, names, i;\n if (callback === false) {\n callback = returnFalse;\n }\n if (callback) {\n callback = { func: callback };\n if (extra) {\n $_4ujg4tljkmcwkbk.extend(callback, extra);\n }\n names = name.toLowerCase().split(' ');\n i = names.length;\n while (i--) {\n name = names[i];\n handlers = bindings[name];\n if (!handlers) {\n handlers = bindings[name] = [];\n toggleEvent(name, true);\n }\n if (prepend) {\n handlers.unshift(callback);\n } else {\n handlers.push(callback);\n }\n }\n }\n return self;\n };\n var off = function (name, callback) {\n var i, handlers, bindingName, names, hi;\n if (name) {\n names = name.toLowerCase().split(' ');\n i = names.length;\n while (i--) {\n name = names[i];\n handlers = bindings[name];\n if (!name) {\n for (bindingName in bindings) {\n toggleEvent(bindingName, false);\n delete bindings[bindingName];\n }\n return self;\n }\n if (handlers) {\n if (!callback) {\n handlers.length = 0;\n } else {\n hi = handlers.length;\n while (hi--) {\n if (handlers[hi].func === callback) {\n handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));\n bindings[name] = handlers;\n }\n }\n }\n if (!handlers.length) {\n toggleEvent(name, false);\n delete bindings[name];\n }\n }\n }\n } else {\n for (name in bindings) {\n toggleEvent(name, false);\n }\n bindings = {};\n }\n return self;\n };\n var once = function (name, callback, prepend) {\n return on(name, callback, prepend, { once: true });\n };\n var has = function (name) {\n name = name.toLowerCase();\n return !(!bindings[name] || bindings[name].length === 0);\n };\n self.fire = fire;\n self.on = on;\n self.off = off;\n self.once = once;\n self.has = has;\n };\n Dispatcher.isNative = function (name) {\n return !!nativeEvents[name.toLowerCase()];\n };\n\n var getEventDispatcher = function (obj) {\n if (!obj._eventDispatcher) {\n obj._eventDispatcher = new Dispatcher({\n scope: obj,\n toggleEvent: function (name, state) {\n if (Dispatcher.isNative(name) && obj.toggleNativeEvent) {\n obj.toggleNativeEvent(name, state);\n }\n }\n });\n }\n return obj._eventDispatcher;\n };\n var $_ed2ug44qjkmcwl97 = {\n fire: function (name, args, bubble) {\n var self = this;\n if (self.removed && name !== 'remove') {\n return args;\n }\n args = getEventDispatcher(self).fire(name, args, bubble);\n if (bubble !== false && self.parent) {\n var parent = self.parent();\n while (parent && !args.isPropagationStopped()) {\n parent.fire(name, args, false);\n parent = parent.parent();\n }\n }\n return args;\n },\n on: function (name, callback, prepend) {\n return getEventDispatcher(this).on(name, callback, prepend);\n },\n off: function (name, callback) {\n return getEventDispatcher(this).off(name, callback);\n },\n once: function (name, callback) {\n return getEventDispatcher(this).once(name, callback);\n },\n hasEventListeners: function (name) {\n return getEventDispatcher(this).has(name);\n }\n };\n\n var firePreProcess = function (editor, args) {\n return editor.fire('PreProcess', args);\n };\n var firePostProcess = function (editor, args) {\n return editor.fire('PostProcess', args);\n };\n var fireRemove = function (editor) {\n return editor.fire('remove');\n };\n var fireSwitchMode = function (editor, mode) {\n return editor.fire('SwitchMode', { mode: mode });\n };\n var fireObjectResizeStart = function (editor, target, width, height) {\n editor.fire('ObjectResizeStart', {\n target: target,\n width: width,\n height: height\n });\n };\n var fireObjectResized = function (editor, target, width, height) {\n editor.fire('ObjectResized', {\n target: target,\n width: width,\n height: height\n });\n };\n var $_q3ric4tjkmcwl9q = {\n firePreProcess: firePreProcess,\n firePostProcess: firePostProcess,\n fireRemove: fireRemove,\n fireSwitchMode: fireSwitchMode,\n fireObjectResizeStart: fireObjectResizeStart,\n fireObjectResized: fireObjectResized\n };\n\n var setEditorCommandState = function (editor, cmd, state) {\n try {\n editor.getDoc().execCommand(cmd, false, state);\n } catch (ex) {\n }\n };\n var toggleClass = function (elm, cls, state) {\n if ($_ftm4v023jkmcwklz.has(elm, cls) && state === false) {\n $_ftm4v023jkmcwklz.remove(elm, cls);\n } else if (state) {\n $_ftm4v023jkmcwklz.add(elm, cls);\n }\n };\n var toggleReadOnly = function (editor, state) {\n toggleClass(Element$$1.fromDom(editor.getBody()), 'mce-content-readonly', state);\n if (state) {\n editor.selection.controlSelection.hideResizeRect();\n editor.readonly = true;\n editor.getBody().contentEditable = 'false';\n } else {\n editor.readonly = false;\n editor.getBody().contentEditable = 'true';\n setEditorCommandState(editor, 'StyleWithCSS', false);\n setEditorCommandState(editor, 'enableInlineTableEditing', false);\n setEditorCommandState(editor, 'enableObjectResizing', false);\n editor.focus();\n editor.nodeChanged();\n }\n };\n var setMode = function (editor, mode) {\n if (mode === getMode(editor)) {\n return;\n }\n if (editor.initialized) {\n toggleReadOnly(editor, mode === 'readonly');\n } else {\n editor.on('init', function () {\n toggleReadOnly(editor, mode === 'readonly');\n });\n }\n $_q3ric4tjkmcwl9q.fireSwitchMode(editor, mode);\n };\n var getMode = function (editor) {\n return editor.readonly ? 'readonly' : 'design';\n };\n var isReadOnly = function (editor) {\n return editor.readonly === true;\n };\n\n var DOM$1 = DOMUtils$1.DOM;\n var customEventRootDelegates;\n var getEventTarget = function (editor, eventName) {\n if (eventName === 'selectionchange') {\n return editor.getDoc();\n }\n if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) {\n return editor.getDoc().documentElement;\n }\n if (editor.settings.event_root) {\n if (!editor.eventRoot) {\n editor.eventRoot = DOM$1.select(editor.settings.event_root)[0];\n }\n return editor.eventRoot;\n }\n return editor.getBody();\n };\n var isListening = function (editor) {\n return !editor.hidden && !editor.readonly;\n };\n var fireEvent = function (editor, eventName, e) {\n if (isListening(editor)) {\n editor.fire(eventName, e);\n } else if (isReadOnly(editor)) {\n e.preventDefault();\n }\n };\n var bindEventDelegate = function (editor, eventName) {\n var eventRootElm, delegate;\n if (!editor.delegates) {\n editor.delegates = {};\n }\n if (editor.delegates[eventName] || editor.removed) {\n return;\n }\n eventRootElm = getEventTarget(editor, eventName);\n if (editor.settings.event_root) {\n if (!customEventRootDelegates) {\n customEventRootDelegates = {};\n editor.editorManager.on('removeEditor', function () {\n var name;\n if (!editor.editorManager.activeEditor) {\n if (customEventRootDelegates) {\n for (name in customEventRootDelegates) {\n editor.dom.unbind(getEventTarget(editor, name));\n }\n customEventRootDelegates = null;\n }\n }\n });\n }\n if (customEventRootDelegates[eventName]) {\n return;\n }\n delegate = function (e) {\n var target = e.target;\n var editors = editor.editorManager.get();\n var i = editors.length;\n while (i--) {\n var body = editors[i].getBody();\n if (body === target || DOM$1.isChildOf(target, body)) {\n fireEvent(editors[i], eventName, e);\n }\n }\n };\n customEventRootDelegates[eventName] = delegate;\n DOM$1.bind(eventRootElm, eventName, delegate);\n } else {\n delegate = function (e) {\n fireEvent(editor, eventName, e);\n };\n DOM$1.bind(eventRootElm, eventName, delegate);\n editor.delegates[eventName] = delegate;\n }\n };\n var EditorObservable = {\n bindPendingEventDelegates: function () {\n var self = this;\n $_4ujg4tljkmcwkbk.each(self._pendingNativeEvents, function (name) {\n bindEventDelegate(self, name);\n });\n },\n toggleNativeEvent: function (name, state) {\n var self = this;\n if (name === 'focus' || name === 'blur') {\n return;\n }\n if (state) {\n if (self.initialized) {\n bindEventDelegate(self, name);\n } else {\n if (!self._pendingNativeEvents) {\n self._pendingNativeEvents = [name];\n } else {\n self._pendingNativeEvents.push(name);\n }\n }\n } else if (self.initialized) {\n self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n delete self.delegates[name];\n }\n },\n unbindAllNativeEvents: function () {\n var self = this;\n var body = self.getBody();\n var dom = self.dom;\n var name;\n if (self.delegates) {\n for (name in self.delegates) {\n self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n }\n delete self.delegates;\n }\n if (!self.inline && body && dom) {\n body.onload = null;\n dom.unbind(self.getWin());\n dom.unbind(self.getDoc());\n }\n if (dom) {\n dom.unbind(body);\n dom.unbind(self.getContainer());\n }\n }\n };\n EditorObservable = $_4ujg4tljkmcwkbk.extend({}, $_ed2ug44qjkmcwl97, EditorObservable);\n var EditorObservable$1 = EditorObservable;\n\n var each$11 = $_4ujg4tljkmcwkbk.each;\n var explode$2 = $_4ujg4tljkmcwkbk.explode;\n var keyCodeLookup = {\n f9: 120,\n f10: 121,\n f11: 122\n };\n var modifierNames = $_4ujg4tljkmcwkbk.makeMap('alt,ctrl,shift,meta,access');\n function Shortcuts (editor) {\n var self = this;\n var shortcuts = {};\n var pendingPatterns = [];\n var parseShortcut = function (pattern) {\n var id, key;\n var shortcut = {};\n each$11(explode$2(pattern, '+'), function (value) {\n if (value in modifierNames) {\n shortcut[value] = true;\n } else {\n if (/^[0-9]{2,}$/.test(value)) {\n shortcut.keyCode = parseInt(value, 10);\n } else {\n shortcut.charCode = value.charCodeAt(0);\n shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);\n }\n }\n });\n id = [shortcut.keyCode];\n for (key in modifierNames) {\n if (shortcut[key]) {\n id.push(key);\n } else {\n shortcut[key] = false;\n }\n }\n shortcut.id = id.join(',');\n if (shortcut.access) {\n shortcut.alt = true;\n if ($_cvvl9iajkmcwk25.mac) {\n shortcut.ctrl = true;\n } else {\n shortcut.shift = true;\n }\n }\n if (shortcut.meta) {\n if ($_cvvl9iajkmcwk25.mac) {\n shortcut.meta = true;\n } else {\n shortcut.ctrl = true;\n shortcut.meta = false;\n }\n }\n return shortcut;\n };\n var createShortcut = function (pattern, desc, cmdFunc, scope) {\n var shortcuts;\n shortcuts = $_4ujg4tljkmcwkbk.map(explode$2(pattern, '>'), parseShortcut);\n shortcuts[shortcuts.length - 1] = $_4ujg4tljkmcwkbk.extend(shortcuts[shortcuts.length - 1], {\n func: cmdFunc,\n scope: scope || editor\n });\n return $_4ujg4tljkmcwkbk.extend(shortcuts[0], {\n desc: editor.translate(desc),\n subpatterns: shortcuts.slice(1)\n });\n };\n var hasModifier = function (e) {\n return e.altKey || e.ctrlKey || e.metaKey;\n };\n var isFunctionKey = function (e) {\n return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123;\n };\n var matchShortcut = function (e, shortcut) {\n if (!shortcut) {\n return false;\n }\n if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) {\n return false;\n }\n if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) {\n return false;\n }\n if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) {\n e.preventDefault();\n return true;\n }\n return false;\n };\n var executeShortcutAction = function (shortcut) {\n return shortcut.func ? shortcut.func.call(shortcut.scope) : null;\n };\n editor.on('keyup keypress keydown', function (e) {\n if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) {\n each$11(shortcuts, function (shortcut) {\n if (matchShortcut(e, shortcut)) {\n pendingPatterns = shortcut.subpatterns.slice(0);\n if (e.type === 'keydown') {\n executeShortcutAction(shortcut);\n }\n return true;\n }\n });\n if (matchShortcut(e, pendingPatterns[0])) {\n if (pendingPatterns.length === 1) {\n if (e.type === 'keydown') {\n executeShortcutAction(pendingPatterns[0]);\n }\n }\n pendingPatterns.shift();\n }\n }\n });\n self.add = function (pattern, desc, cmdFunc, scope) {\n var cmd;\n cmd = cmdFunc;\n if (typeof cmdFunc === 'string') {\n cmdFunc = function () {\n editor.execCommand(cmd, false, null);\n };\n } else if ($_4ujg4tljkmcwkbk.isArray(cmd)) {\n cmdFunc = function () {\n editor.execCommand(cmd[0], cmd[1], cmd[2]);\n };\n }\n each$11(explode$2($_4ujg4tljkmcwkbk.trim(pattern.toLowerCase())), function (pattern) {\n var shortcut = createShortcut(pattern, desc, cmdFunc, scope);\n shortcuts[shortcut.id] = shortcut;\n });\n return true;\n };\n self.remove = function (pattern) {\n var shortcut = createShortcut(pattern);\n if (shortcuts[shortcut.id]) {\n delete shortcuts[shortcut.id];\n return true;\n }\n return false;\n };\n }\n\n var any$1 = function (predicate) {\n return $_253nd92ajkmcwkmp.first(predicate).isSome();\n };\n var ancestor$3 = function (scope, predicate, isRoot) {\n return $_253nd92ajkmcwkmp.ancestor(scope, predicate, isRoot).isSome();\n };\n var closest$3 = function (scope, predicate, isRoot) {\n return $_253nd92ajkmcwkmp.closest(scope, predicate, isRoot).isSome();\n };\n var sibling$4 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.sibling(scope, predicate).isSome();\n };\n var child$4 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.child(scope, predicate).isSome();\n };\n var descendant$3 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.descendant(scope, predicate).isSome();\n };\n var $_szg1f4xjkmcwlad = {\n any: any$1,\n ancestor: ancestor$3,\n closest: closest$3,\n sibling: sibling$4,\n child: child$4,\n descendant: descendant$3\n };\n\n var focus$$1 = function (element) {\n element.dom().focus();\n };\n var blur$$1 = function (element) {\n element.dom().blur();\n };\n var hasFocus = function (element) {\n var doc = $_ca6pc118jkmcwkfs.owner(element).dom();\n return element.dom() === doc.activeElement;\n };\n var active = function (_doc) {\n var doc = _doc !== undefined ? _doc.dom() : document;\n return Option.from(doc.activeElement).map(Element$$1.fromDom);\n };\n var focusInside = function (element) {\n var doc = $_ca6pc118jkmcwkfs.owner(element);\n var inside = active(doc).filter(function (a) {\n return $_szg1f4xjkmcwlad.closest(a, curry($_e4hu6h1ejkmcwkgj.eq, element));\n });\n inside.fold(function () {\n focus$$1(element);\n }, noop);\n };\n var search = function (element) {\n return active($_ca6pc118jkmcwkfs.owner(element)).filter(function (e) {\n return element.dom().contains(e.dom());\n });\n };\n var $_468a0m4wjkmcwla6 = {\n hasFocus: hasFocus,\n focus: focus$$1,\n blur: blur$$1,\n active: active,\n search: search,\n focusInside: focusInside\n };\n\n var getContentEditableHost = function (editor, node) {\n return editor.dom.getParent(node, function (node) {\n return editor.dom.getContentEditable(node) === 'true';\n });\n };\n var getCollapsedNode = function (rng) {\n return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element$$1.fromDom) : Option.none();\n };\n var getFocusInElement = function (root, rng) {\n return getCollapsedNode(rng).bind(function (node) {\n if (isTableSection(node)) {\n return Option.some(node);\n } else if ($_e4hu6h1ejkmcwkgj.contains(root, node) === false) {\n return Option.some(root);\n } else {\n return Option.none();\n }\n });\n };\n var normalizeSelection = function (editor, rng) {\n getFocusInElement(Element$$1.fromDom(editor.getBody()), rng).bind(function (elm) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(elm.dom());\n }).fold(function () {\n editor.selection.normalize();\n return;\n }, function (caretPos) {\n return editor.selection.setRng(caretPos.toRange());\n });\n };\n var focusBody = function (body) {\n if (body.setActive) {\n try {\n body.setActive();\n } catch (ex) {\n body.focus();\n }\n } else {\n body.focus();\n }\n };\n var hasElementFocus = function (elm) {\n return $_468a0m4wjkmcwla6.hasFocus(elm) || $_468a0m4wjkmcwla6.search(elm).isSome();\n };\n var hasIframeFocus = function (editor) {\n return editor.iframeElement && $_468a0m4wjkmcwla6.hasFocus(Element$$1.fromDom(editor.iframeElement));\n };\n var hasInlineFocus = function (editor) {\n var rawBody = editor.getBody();\n return rawBody && hasElementFocus(Element$$1.fromDom(rawBody));\n };\n var hasFocus$1 = function (editor) {\n return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);\n };\n var focusEditor = function (editor) {\n var selection = editor.selection, contentEditable = editor.settings.content_editable;\n var body = editor.getBody();\n var rng = selection.getRng();\n editor.quirks.refreshContentEditable();\n var contentEditableHost = getContentEditableHost(editor, selection.getNode());\n if (editor.$.contains(body, contentEditableHost)) {\n focusBody(contentEditableHost);\n normalizeSelection(editor, rng);\n activateEditor(editor);\n return;\n }\n if (editor.bookmark !== undefined && hasFocus$1(editor) === false) {\n $_39c3zs4ljkmcwl86.getRng(editor).each(function (bookmarkRng) {\n editor.selection.setRng(bookmarkRng);\n rng = bookmarkRng;\n });\n }\n if (!contentEditable) {\n if (!$_cvvl9iajkmcwk25.opera) {\n focusBody(body);\n }\n editor.getWin().focus();\n }\n if ($_cvvl9iajkmcwk25.gecko || contentEditable) {\n focusBody(body);\n normalizeSelection(editor, rng);\n }\n activateEditor(editor);\n };\n var activateEditor = function (editor) {\n return editor.editorManager.setActive(editor);\n };\n var focus$1 = function (editor, skipFocus) {\n if (editor.removed) {\n return;\n }\n skipFocus ? activateEditor(editor) : focusEditor(editor);\n };\n var $_e3v8sn4vjkmcwl9y = {\n focus: focus$1,\n hasFocus: hasFocus$1\n };\n\n var getProp = function (propName, elm) {\n var rawElm = elm.dom();\n return rawElm[propName];\n };\n var getComputedSizeProp = function (propName, elm) {\n return parseInt($_4enzit13jkmcwke5.get(elm, propName), 10);\n };\n var getClientWidth = curry(getProp, 'clientWidth');\n var getClientHeight = curry(getProp, 'clientHeight');\n var getMarginTop = curry(getComputedSizeProp, 'margin-top');\n var getMarginLeft = curry(getComputedSizeProp, 'margin-left');\n var getBoundingClientRect$1 = function (elm) {\n return elm.dom().getBoundingClientRect();\n };\n var isInsideElementContentArea = function (bodyElm, clientX, clientY) {\n var clientWidth = getClientWidth(bodyElm);\n var clientHeight = getClientHeight(bodyElm);\n return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight;\n };\n var transpose = function (inline, elm, clientX, clientY) {\n var clientRect = getBoundingClientRect$1(elm);\n var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0;\n var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0;\n var x = clientX - deltaX;\n var y = clientY - deltaY;\n return {\n x: x,\n y: y\n };\n };\n var isXYInContentArea = function (editor, clientX, clientY) {\n var bodyElm = Element$$1.fromDom(editor.getBody());\n var targetElm = editor.inline ? bodyElm : $_ca6pc118jkmcwkfs.documentElement(bodyElm);\n var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);\n return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);\n };\n var fromDomSafe = function (node) {\n return Option.from(node).map(Element$$1.fromDom);\n };\n var isEditorAttachedToDom = function (editor) {\n var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();\n return fromDomSafe(rawContainer).map(function (container) {\n return $_e4hu6h1ejkmcwkgj.contains($_ca6pc118jkmcwkfs.owner(container), container);\n }).getOr(false);\n };\n var $_8we2e850jkmcwlaw = {\n isXYInContentArea: isXYInContentArea,\n isEditorAttachedToDom: isEditorAttachedToDom\n };\n\n function NotificationManagerImpl () {\n var unimplemented = function () {\n throw new Error('Theme did not provide a NotificationManager implementation.');\n };\n return {\n open: unimplemented,\n close: unimplemented,\n reposition: unimplemented,\n getArgs: unimplemented\n };\n }\n\n function NotificationManager (editor) {\n var notifications = [];\n var getImplementation = function () {\n var theme = editor.theme;\n return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl();\n };\n var getTopNotification = function () {\n return Option.from(notifications[0]);\n };\n var isEqual = function (a, b) {\n return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;\n };\n var reposition = function () {\n if (notifications.length > 0) {\n getImplementation().reposition(notifications);\n }\n };\n var addNotification = function (notification) {\n notifications.push(notification);\n };\n var closeNotification = function (notification) {\n findIndex(notifications, function (otherNotification) {\n return otherNotification === notification;\n }).each(function (index) {\n notifications.splice(index, 1);\n });\n };\n var open = function (args) {\n if (editor.removed || !$_8we2e850jkmcwlaw.isEditorAttachedToDom(editor)) {\n return;\n }\n return find(notifications, function (notification) {\n return isEqual(getImplementation().getArgs(notification), args);\n }).getOrThunk(function () {\n editor.editorManager.setActive(editor);\n var notification = getImplementation().open(args, function () {\n closeNotification(notification);\n reposition();\n });\n addNotification(notification);\n reposition();\n return notification;\n });\n };\n var close = function () {\n getTopNotification().each(function (notification) {\n getImplementation().close(notification);\n closeNotification(notification);\n reposition();\n });\n };\n var getNotifications = function () {\n return notifications;\n };\n var registerEvents = function (editor) {\n editor.on('SkinLoaded', function () {\n var serviceMessage = editor.settings.service_message;\n if (serviceMessage) {\n open({\n text: serviceMessage,\n type: 'warning',\n timeout: 0,\n icon: ''\n });\n }\n });\n editor.on('ResizeEditor ResizeWindow', function () {\n $_3l01gcijkmcwk99.requestAnimationFrame(reposition);\n });\n editor.on('remove', function () {\n each(notifications, function (notification) {\n getImplementation().close(notification);\n });\n });\n };\n registerEvents(editor);\n return {\n open: open,\n close: close,\n getNotifications: getNotifications\n };\n }\n\n function WindowManagerImpl () {\n var unimplemented = function () {\n throw new Error('Theme did not provide a WindowManager implementation.');\n };\n return {\n open: unimplemented,\n alert: unimplemented,\n confirm: unimplemented,\n close: unimplemented,\n getParams: unimplemented,\n setParams: unimplemented\n };\n }\n\n function WindowManager (editor) {\n var windows = [];\n var getImplementation = function () {\n var theme = editor.theme;\n return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl();\n };\n var funcBind = function (scope, f) {\n return function () {\n return f ? f.apply(scope, arguments) : undefined;\n };\n };\n var fireOpenEvent = function (win) {\n editor.fire('OpenWindow', { win: win });\n };\n var fireCloseEvent = function (win) {\n editor.fire('CloseWindow', { win: win });\n };\n var addWindow = function (win) {\n windows.push(win);\n fireOpenEvent(win);\n };\n var closeWindow = function (win) {\n findIndex(windows, function (otherWindow) {\n return otherWindow === win;\n }).each(function (index) {\n windows.splice(index, 1);\n fireCloseEvent(win);\n if (windows.length === 0) {\n editor.focus();\n }\n });\n };\n var getTopWindow = function () {\n return Option.from(windows[windows.length - 1]);\n };\n var open = function (args, params) {\n editor.editorManager.setActive(editor);\n $_39c3zs4ljkmcwl86.store(editor);\n var win = getImplementation().open(args, params, closeWindow);\n addWindow(win);\n return win;\n };\n var alert = function (message, callback, scope) {\n var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow);\n addWindow(win);\n };\n var confirm = function (message, callback, scope) {\n var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow);\n addWindow(win);\n };\n var close = function () {\n getTopWindow().each(function (win) {\n getImplementation().close(win);\n closeWindow(win);\n });\n };\n var getParams = function () {\n return getTopWindow().map(getImplementation().getParams).getOr(null);\n };\n var setParams = function (params) {\n getTopWindow().each(function (win) {\n getImplementation().setParams(win, params);\n });\n };\n var getWindows = function () {\n return windows;\n };\n editor.on('remove', function () {\n each(windows.slice(0), function (win) {\n getImplementation().close(win);\n });\n });\n return {\n windows: windows,\n open: open,\n alert: alert,\n confirm: confirm,\n close: close,\n getParams: getParams,\n setParams: setParams,\n getWindows: getWindows\n };\n }\n\n var PluginManager = AddOnManager.PluginManager;\n var resolvePluginName = function (targetUrl, suffix) {\n for (var name$$1 in PluginManager.urls) {\n var matchUrl = PluginManager.urls[name$$1] + '/plugin' + suffix + '.js';\n if (matchUrl === targetUrl) {\n return name$$1;\n }\n }\n return null;\n };\n var pluginUrlToMessage = function (editor, url) {\n var plugin = resolvePluginName(url, editor.suffix);\n return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url;\n };\n var displayNotification = function (editor, message) {\n editor.notificationManager.open({\n type: 'error',\n text: message\n });\n };\n var displayError = function (editor, message) {\n if (editor._skinLoaded) {\n displayNotification(editor, message);\n } else {\n editor.on('SkinLoaded', function () {\n displayNotification(editor, message);\n });\n }\n };\n var uploadError = function (editor, message) {\n displayError(editor, 'Failed to upload image: ' + message);\n };\n var pluginLoadError = function (editor, url) {\n displayError(editor, pluginUrlToMessage(editor, url));\n };\n var initError = function (message) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var console$$1 = window.console;\n if (console$$1) {\n if (console$$1.error) {\n console$$1.error.apply(console$$1, arguments);\n } else {\n console$$1.log.apply(console$$1, arguments);\n }\n }\n };\n var $_b9je0i54jkmcwlbe = {\n pluginLoadError: pluginLoadError,\n uploadError: uploadError,\n displayError: displayError,\n initError: initError\n };\n\n var PluginManager$1 = AddOnManager.PluginManager;\n\n var ThemeManager = AddOnManager.ThemeManager;\n\n function XMLHttpRequest () {\n var f = $_89i3w1cjkmcwk2c.getOrDie('XMLHttpRequest');\n return new f();\n }\n\n function Uploader (uploadStatus, settings) {\n var pendingPromises = {};\n var pathJoin = function (path1, path2) {\n if (path1) {\n return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\n }\n return path2;\n };\n var defaultHandler = function (blobInfo, success, failure, progress) {\n var xhr, formData;\n xhr = new XMLHttpRequest();\n xhr.open('POST', settings.url);\n xhr.withCredentials = settings.credentials;\n xhr.upload.onprogress = function (e) {\n progress(e.loaded / e.total * 100);\n };\n xhr.onerror = function () {\n failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\n };\n xhr.onload = function () {\n var json;\n if (xhr.status < 200 || xhr.status >= 300) {\n failure('HTTP Error: ' + xhr.status);\n return;\n }\n json = JSON.parse(xhr.responseText);\n if (!json || typeof json.location !== 'string') {\n failure('Invalid JSON: ' + xhr.responseText);\n return;\n }\n success(pathJoin(settings.basePath, json.location));\n };\n formData = new FormData();\n formData.append('file', blobInfo.blob(), blobInfo.filename());\n xhr.send(formData);\n };\n var noUpload = function () {\n return new promiseObj(function (resolve) {\n resolve([]);\n });\n };\n var handlerSuccess = function (blobInfo, url) {\n return {\n url: url,\n blobInfo: blobInfo,\n status: true\n };\n };\n var handlerFailure = function (blobInfo, error) {\n return {\n url: '',\n blobInfo: blobInfo,\n status: false,\n error: error\n };\n };\n var resolvePending = function (blobUri, result) {\n $_4ujg4tljkmcwkbk.each(pendingPromises[blobUri], function (resolve) {\n resolve(result);\n });\n delete pendingPromises[blobUri];\n };\n var uploadBlobInfo = function (blobInfo, handler, openNotification) {\n uploadStatus.markPending(blobInfo.blobUri());\n return new promiseObj(function (resolve) {\n var notification, progress;\n var noop = function () {\n };\n try {\n var closeNotification_1 = function () {\n if (notification) {\n notification.close();\n progress = noop;\n }\n };\n var success = function (url) {\n closeNotification_1();\n uploadStatus.markUploaded(blobInfo.blobUri(), url);\n resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));\n resolve(handlerSuccess(blobInfo, url));\n };\n var failure = function (error) {\n closeNotification_1();\n uploadStatus.removeFailed(blobInfo.blobUri());\n resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));\n resolve(handlerFailure(blobInfo, error));\n };\n progress = function (percent) {\n if (percent < 0 || percent > 100) {\n return;\n }\n if (!notification) {\n notification = openNotification();\n }\n notification.progressBar.value(percent);\n };\n handler(blobInfo, success, failure, progress);\n } catch (ex) {\n resolve(handlerFailure(blobInfo, ex.message));\n }\n });\n };\n var isDefaultHandler = function (handler) {\n return handler === defaultHandler;\n };\n var pendingUploadBlobInfo = function (blobInfo) {\n var blobUri = blobInfo.blobUri();\n return new promiseObj(function (resolve) {\n pendingPromises[blobUri] = pendingPromises[blobUri] || [];\n pendingPromises[blobUri].push(resolve);\n });\n };\n var uploadBlobs = function (blobInfos, openNotification) {\n blobInfos = $_4ujg4tljkmcwkbk.grep(blobInfos, function (blobInfo) {\n return !uploadStatus.isUploaded(blobInfo.blobUri());\n });\n return promiseObj.all($_4ujg4tljkmcwkbk.map(blobInfos, function (blobInfo) {\n return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification);\n }));\n };\n var upload = function (blobInfos, openNotification) {\n return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification);\n };\n settings = $_4ujg4tljkmcwkbk.extend({\n credentials: false,\n handler: defaultHandler\n }, settings);\n return { upload: upload };\n }\n\n function Blob (parts, properties) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Blob');\n return new f(parts, properties);\n }\n\n function FileReader () {\n var f = $_89i3w1cjkmcwk2c.getOrDie('FileReader');\n return new f();\n }\n\n function Uint8Array (arr) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Uint8Array');\n return new f(arr);\n }\n\n var requestAnimationFrame$1 = function (callback) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('requestAnimationFrame');\n f(callback);\n };\n var atob = function (base64) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('atob');\n return f(base64);\n };\n var $_b0eesx5hjkmcwld6 = {\n atob: atob,\n requestAnimationFrame: requestAnimationFrame$1\n };\n\n var blobUriToBlob = function (url) {\n return new promiseObj(function (resolve, reject) {\n var rejectWithError = function () {\n reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.');\n };\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n rejectWithError();\n }\n };\n xhr.onerror = rejectWithError;\n xhr.send();\n } catch (ex) {\n rejectWithError();\n }\n });\n };\n var parseDataUri = function (uri) {\n var type, matches;\n uri = decodeURIComponent(uri).split(',');\n matches = /data:([^;]+)/.exec(uri[0]);\n if (matches) {\n type = matches[1];\n }\n return {\n type: type,\n data: uri[1]\n };\n };\n var dataUriToBlob = function (uri) {\n return new promiseObj(function (resolve) {\n var str, arr, i;\n uri = parseDataUri(uri);\n try {\n str = $_b0eesx5hjkmcwld6.atob(uri.data);\n } catch (e) {\n resolve(new Blob([]));\n return;\n }\n arr = new Uint8Array(str.length);\n for (i = 0; i < arr.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n resolve(new Blob([arr], { type: uri.type }));\n });\n };\n var uriToBlob = function (url) {\n if (url.indexOf('blob:') === 0) {\n return blobUriToBlob(url);\n }\n if (url.indexOf('data:') === 0) {\n return dataUriToBlob(url);\n }\n return null;\n };\n var blobToDataUri = function (blob) {\n return new promiseObj(function (resolve) {\n var reader = new FileReader();\n reader.onloadend = function () {\n resolve(reader.result);\n };\n reader.readAsDataURL(blob);\n });\n };\n var $_7eufcj5djkmcwlcv = {\n uriToBlob: uriToBlob,\n blobToDataUri: blobToDataUri,\n parseDataUri: parseDataUri\n };\n\n var count = 0;\n var uniqueId = function (prefix) {\n return (prefix || 'blobid') + count++;\n };\n var imageToBlobInfo = function (blobCache, img, resolve, reject) {\n var base64, blobInfo;\n if (img.src.indexOf('blob:') === 0) {\n blobInfo = blobCache.getByUri(img.src);\n if (blobInfo) {\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n } else {\n $_7eufcj5djkmcwlcv.uriToBlob(img.src).then(function (blob) {\n $_7eufcj5djkmcwlcv.blobToDataUri(blob).then(function (dataUri) {\n base64 = $_7eufcj5djkmcwlcv.parseDataUri(dataUri).data;\n blobInfo = blobCache.create(uniqueId(), blob, base64);\n blobCache.add(blobInfo);\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n });\n }, function (err) {\n reject(err);\n });\n }\n return;\n }\n base64 = $_7eufcj5djkmcwlcv.parseDataUri(img.src).data;\n blobInfo = blobCache.findFirst(function (cachedBlobInfo) {\n return cachedBlobInfo.base64() === base64;\n });\n if (blobInfo) {\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n } else {\n $_7eufcj5djkmcwlcv.uriToBlob(img.src).then(function (blob) {\n blobInfo = blobCache.create(uniqueId(), blob, base64);\n blobCache.add(blobInfo);\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n }, function (err) {\n reject(err);\n });\n }\n };\n var getAllImages = function (elm) {\n return elm ? elm.getElementsByTagName('img') : [];\n };\n function ImageScanner (uploadStatus, blobCache) {\n var cachedPromises = {};\n var findAll = function (elm, predicate) {\n var images;\n if (!predicate) {\n predicate = $_fl2rax2ljkmcwkot.constant(true);\n }\n images = $_9g1fibmjkmcwkbu.filter(getAllImages(elm), function (img) {\n var src = img.src;\n if (!$_cvvl9iajkmcwk25.fileApi) {\n return false;\n }\n if (img.hasAttribute('data-mce-bogus')) {\n return false;\n }\n if (img.hasAttribute('data-mce-placeholder')) {\n return false;\n }\n if (!src || src === $_cvvl9iajkmcwk25.transparentSrc) {\n return false;\n }\n if (src.indexOf('blob:') === 0) {\n return !uploadStatus.isUploaded(src);\n }\n if (src.indexOf('data:') === 0) {\n return predicate(img);\n }\n return false;\n });\n var promises = $_9g1fibmjkmcwkbu.map(images, function (img) {\n if (cachedPromises[img.src]) {\n return new promiseObj(function (resolve) {\n cachedPromises[img.src].then(function (imageInfo) {\n if (typeof imageInfo === 'string') {\n return imageInfo;\n }\n resolve({\n image: img,\n blobInfo: imageInfo.blobInfo\n });\n });\n });\n }\n var newPromise = new promiseObj(function (resolve, reject) {\n imageToBlobInfo(blobCache, img, resolve, reject);\n }).then(function (result) {\n delete cachedPromises[result.image.src];\n return result;\n }).catch(function (error) {\n delete cachedPromises[img.src];\n return error;\n });\n cachedPromises[img.src] = newPromise;\n return newPromise;\n });\n return promiseObj.all(promises);\n };\n return { findAll: findAll };\n }\n\n var count$1 = 0;\n var seed = function () {\n var rnd = function () {\n return Math.round(Math.random() * 4294967295).toString(36);\n };\n var now = new Date().getTime();\n return 's' + now.toString(36) + rnd() + rnd() + rnd();\n };\n var uuid = function (prefix) {\n return prefix + count$1++ + seed();\n };\n var $_8flfjw5jjkmcwldd = { uuid: uuid };\n\n function BlobCache () {\n var cache = [];\n var constant = $_fl2rax2ljkmcwkot.constant;\n var mimeToExt = function (mime) {\n var mimes = {\n 'image/jpeg': 'jpg',\n 'image/jpg': 'jpg',\n 'image/gif': 'gif',\n 'image/png': 'png'\n };\n return mimes[mime.toLowerCase()] || 'dat';\n };\n var create = function (o, blob, base64, filename) {\n return typeof o === 'object' ? toBlobInfo(o) : toBlobInfo({\n id: o,\n name: filename,\n blob: blob,\n base64: base64\n });\n };\n var toBlobInfo = function (o) {\n var id, name;\n if (!o.blob || !o.base64) {\n throw new Error('blob and base64 representations of the image are required for BlobInfo to be created');\n }\n id = o.id || $_8flfjw5jjkmcwldd.uuid('blobid');\n name = o.name || id;\n return {\n id: constant(id),\n name: constant(name),\n filename: constant(name + '.' + mimeToExt(o.blob.type)),\n blob: constant(o.blob),\n base64: constant(o.base64),\n blobUri: constant(o.blobUri || $_ci16mbjkmcwk2b.createObjectURL(o.blob)),\n uri: constant(o.uri)\n };\n };\n var add = function (blobInfo) {\n if (!get(blobInfo.id())) {\n cache.push(blobInfo);\n }\n };\n var get = function (id) {\n return findFirst(function (cachedBlobInfo) {\n return cachedBlobInfo.id() === id;\n });\n };\n var findFirst = function (predicate) {\n return $_9g1fibmjkmcwkbu.filter(cache, predicate)[0];\n };\n var getByUri = function (blobUri) {\n return findFirst(function (blobInfo) {\n return blobInfo.blobUri() === blobUri;\n });\n };\n var removeByUri = function (blobUri) {\n cache = $_9g1fibmjkmcwkbu.filter(cache, function (blobInfo) {\n if (blobInfo.blobUri() === blobUri) {\n $_ci16mbjkmcwk2b.revokeObjectURL(blobInfo.blobUri());\n return false;\n }\n return true;\n });\n };\n var destroy = function () {\n $_9g1fibmjkmcwkbu.each(cache, function (cachedBlobInfo) {\n $_ci16mbjkmcwk2b.revokeObjectURL(cachedBlobInfo.blobUri());\n });\n cache = [];\n };\n return {\n create: create,\n add: add,\n get: get,\n getByUri: getByUri,\n findFirst: findFirst,\n removeByUri: removeByUri,\n destroy: destroy\n };\n }\n\n function UploadStatus () {\n var PENDING = 1, UPLOADED = 2;\n var blobUriStatuses = {};\n var createStatus = function (status, resultUri) {\n return {\n status: status,\n resultUri: resultUri\n };\n };\n var hasBlobUri = function (blobUri) {\n return blobUri in blobUriStatuses;\n };\n var getResultUri = function (blobUri) {\n var result = blobUriStatuses[blobUri];\n return result ? result.resultUri : null;\n };\n var isPending = function (blobUri) {\n return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false;\n };\n var isUploaded = function (blobUri) {\n return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false;\n };\n var markPending = function (blobUri) {\n blobUriStatuses[blobUri] = createStatus(PENDING, null);\n };\n var markUploaded = function (blobUri, resultUri) {\n blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri);\n };\n var removeFailed = function (blobUri) {\n delete blobUriStatuses[blobUri];\n };\n var destroy = function () {\n blobUriStatuses = {};\n };\n return {\n hasBlobUri: hasBlobUri,\n getResultUri: getResultUri,\n isPending: isPending,\n isUploaded: isUploaded,\n markPending: markPending,\n markUploaded: markUploaded,\n removeFailed: removeFailed,\n destroy: destroy\n };\n }\n\n function EditorUpload (editor) {\n var blobCache = BlobCache();\n var uploader, imageScanner;\n var settings = editor.settings;\n var uploadStatus = UploadStatus();\n var aliveGuard = function (callback) {\n return function (result) {\n if (editor.selection) {\n return callback(result);\n }\n return [];\n };\n };\n var cacheInvalidator = function () {\n return '?' + new Date().getTime();\n };\n var replaceString = function (content, search, replace) {\n var index = 0;\n do {\n index = content.indexOf(search, index);\n if (index !== -1) {\n content = content.substring(0, index) + replace + content.substr(index + search.length);\n index += replace.length - search.length + 1;\n }\n } while (index !== -1);\n return content;\n };\n var replaceImageUrl = function (content, targetUrl, replacementUrl) {\n content = replaceString(content, 'src=\"' + targetUrl + '\"', 'src=\"' + replacementUrl + '\"');\n content = replaceString(content, 'data-mce-src=\"' + targetUrl + '\"', 'data-mce-src=\"' + replacementUrl + '\"');\n return content;\n };\n var replaceUrlInUndoStack = function (targetUrl, replacementUrl) {\n $_9g1fibmjkmcwkbu.each(editor.undoManager.data, function (level) {\n if (level.type === 'fragmented') {\n level.fragments = $_9g1fibmjkmcwkbu.map(level.fragments, function (fragment) {\n return replaceImageUrl(fragment, targetUrl, replacementUrl);\n });\n } else {\n level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);\n }\n });\n };\n var openNotification = function () {\n return editor.notificationManager.open({\n text: editor.translate('Image uploading...'),\n type: 'info',\n timeout: -1,\n progressBar: true\n });\n };\n var replaceImageUri = function (image, resultUri) {\n blobCache.removeByUri(image.src);\n replaceUrlInUndoStack(image.src, resultUri);\n editor.$(image).attr({\n 'src': settings.images_reuse_filename ? resultUri + cacheInvalidator() : resultUri,\n 'data-mce-src': editor.convertURL(resultUri, 'src')\n });\n };\n var uploadImages = function (callback) {\n if (!uploader) {\n uploader = Uploader(uploadStatus, {\n url: settings.images_upload_url,\n basePath: settings.images_upload_base_path,\n credentials: settings.images_upload_credentials,\n handler: settings.images_upload_handler\n });\n }\n return scanForImages().then(aliveGuard(function (imageInfos) {\n var blobInfos;\n blobInfos = $_9g1fibmjkmcwkbu.map(imageInfos, function (imageInfo) {\n return imageInfo.blobInfo;\n });\n return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) {\n var filteredResult = $_9g1fibmjkmcwkbu.map(result, function (uploadInfo, index) {\n var image = imageInfos[index].image;\n if (uploadInfo.status && editor.settings.images_replace_blob_uris !== false) {\n replaceImageUri(image, uploadInfo.url);\n } else if (uploadInfo.error) {\n $_b9je0i54jkmcwlbe.uploadError(editor, uploadInfo.error);\n }\n return {\n element: image,\n status: uploadInfo.status\n };\n });\n if (callback) {\n callback(filteredResult);\n }\n return filteredResult;\n }));\n }));\n };\n var uploadImagesAuto = function (callback) {\n if (settings.automatic_uploads !== false) {\n return uploadImages(callback);\n }\n };\n var isValidDataUriImage = function (imgElm) {\n return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\n };\n var scanForImages = function () {\n if (!imageScanner) {\n imageScanner = ImageScanner(uploadStatus, blobCache);\n }\n return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) {\n result = $_9g1fibmjkmcwkbu.filter(result, function (resultItem) {\n if (typeof resultItem === 'string') {\n $_b9je0i54jkmcwlbe.displayError(editor, resultItem);\n return false;\n }\n return true;\n });\n $_9g1fibmjkmcwkbu.each(result, function (resultItem) {\n replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());\n resultItem.image.src = resultItem.blobInfo.blobUri();\n resultItem.image.removeAttribute('data-mce-src');\n });\n return result;\n }));\n };\n var destroy = function () {\n blobCache.destroy();\n uploadStatus.destroy();\n imageScanner = uploader = null;\n };\n var replaceBlobUris = function (content) {\n return content.replace(/src=\"(blob:[^\"]+)\"/g, function (match, blobUri) {\n var resultUri = uploadStatus.getResultUri(blobUri);\n if (resultUri) {\n return 'src=\"' + resultUri + '\"';\n }\n var blobInfo = blobCache.getByUri(blobUri);\n if (!blobInfo) {\n blobInfo = $_9g1fibmjkmcwkbu.reduce(editor.editorManager.get(), function (result, editor) {\n return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);\n }, null);\n }\n if (blobInfo) {\n return 'src=\"data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '\"';\n }\n return match;\n });\n };\n editor.on('setContent', function () {\n if (editor.settings.automatic_uploads !== false) {\n uploadImagesAuto();\n } else {\n scanForImages();\n }\n });\n editor.on('RawSaveContent', function (e) {\n e.content = replaceBlobUris(e.content);\n });\n editor.on('getContent', function (e) {\n if (e.source_view || e.format === 'raw') {\n return;\n }\n e.content = replaceBlobUris(e.content);\n });\n editor.on('PostRender', function () {\n editor.parser.addNodeFilter('img', function (images) {\n $_9g1fibmjkmcwkbu.each(images, function (img) {\n var src = img.attr('src');\n if (blobCache.getByUri(src)) {\n return;\n }\n var resultUri = uploadStatus.getResultUri(src);\n if (resultUri) {\n img.attr('src', resultUri);\n }\n });\n });\n });\n return {\n blobCache: blobCache,\n uploadImages: uploadImages,\n uploadImagesAuto: uploadImagesAuto,\n scanForImages: scanForImages,\n destroy: destroy\n };\n }\n\n var isBlockElement = function (blockElements, node) {\n return blockElements.hasOwnProperty(node.nodeName);\n };\n var isValidTarget = function (blockElements, node) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n return true;\n } else if ($_bjermr1rjkmcwkij.isElement(node)) {\n return !isBlockElement(blockElements, node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node);\n } else {\n return false;\n }\n };\n var hasBlockParent = function (blockElements, root, node) {\n return exists($_cir6zl3zjkmcwl2j.parents(Element$$1.fromDom(node), Element$$1.fromDom(root)), function (elm) {\n return isBlockElement(blockElements, elm.dom());\n });\n };\n var shouldRemoveTextNode = function (blockElements, node) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n if (node.nodeValue.length === 0) {\n return true;\n } else if (/^\\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) {\n return true;\n }\n }\n return false;\n };\n var addRootBlocks = function (editor) {\n var settings = editor.settings, dom = editor.dom, selection = editor.selection;\n var schema = editor.schema, blockElements = schema.getBlockElements();\n var node = selection.getStart();\n var rootNode = editor.getBody();\n var rng;\n var startContainer, startOffset, endContainer, endOffset, rootBlockNode;\n var tempNode, wrapped, restoreSelection;\n var rootNodeName, forcedRootBlock;\n forcedRootBlock = settings.forced_root_block;\n if (!node || !$_bjermr1rjkmcwkij.isElement(node) || !forcedRootBlock) {\n return;\n }\n rootNodeName = rootNode.nodeName.toLowerCase();\n if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) {\n return;\n }\n rng = selection.getRng();\n startContainer = rng.startContainer;\n startOffset = rng.startOffset;\n endContainer = rng.endContainer;\n endOffset = rng.endOffset;\n restoreSelection = $_e3v8sn4vjkmcwl9y.hasFocus(editor);\n node = rootNode.firstChild;\n while (node) {\n if (isValidTarget(blockElements, node)) {\n if (shouldRemoveTextNode(blockElements, node)) {\n tempNode = node;\n node = node.nextSibling;\n dom.remove(tempNode);\n continue;\n }\n if (!rootBlockNode) {\n rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs);\n node.parentNode.insertBefore(rootBlockNode, node);\n wrapped = true;\n }\n tempNode = node;\n node = node.nextSibling;\n rootBlockNode.appendChild(tempNode);\n } else {\n rootBlockNode = null;\n node = node.nextSibling;\n }\n }\n if (wrapped && restoreSelection) {\n rng.setStart(startContainer, startOffset);\n rng.setEnd(endContainer, endOffset);\n selection.setRng(rng);\n editor.nodeChanged();\n }\n };\n var setup$2 = function (editor) {\n if (editor.settings.forced_root_block) {\n editor.on('NodeChange', curry(addRootBlocks, editor));\n }\n };\n var $_5utnj35ljkmcwldh = { setup: setup$2 };\n\n var getStartNode = function (rng) {\n var sc = rng.startContainer, so = rng.startOffset;\n if ($_bjermr1rjkmcwkij.isText(sc)) {\n return so === 0 ? Option.some(Element$$1.fromDom(sc)) : Option.none();\n } else {\n return Option.from(sc.childNodes[so]).map(Element$$1.fromDom);\n }\n };\n var getEndNode = function (rng) {\n var ec = rng.endContainer, eo = rng.endOffset;\n if ($_bjermr1rjkmcwkij.isText(ec)) {\n return eo === ec.data.length ? Option.some(Element$$1.fromDom(ec)) : Option.none();\n } else {\n return Option.from(ec.childNodes[eo - 1]).map(Element$$1.fromDom);\n }\n };\n var getFirstChildren = function (node) {\n return $_ca6pc118jkmcwkfs.firstChild(node).fold(constant([node]), function (child) {\n return [node].concat(getFirstChildren(child));\n });\n };\n var getLastChildren$1 = function (node) {\n return $_ca6pc118jkmcwkfs.lastChild(node).fold(constant([node]), function (child) {\n if ($_2xwdjv11jkmcwke0.name(child) === 'br') {\n return $_ca6pc118jkmcwkfs.prevSibling(child).map(function (sibling) {\n return [node].concat(getLastChildren$1(sibling));\n }).getOr([]);\n } else {\n return [node].concat(getLastChildren$1(child));\n }\n });\n };\n var hasAllContentsSelected = function (elm, rng) {\n return liftN([\n getStartNode(rng),\n getEndNode(rng)\n ], function (startNode, endNode) {\n var start = find(getFirstChildren(elm), curry($_e4hu6h1ejkmcwkgj.eq, startNode));\n var end = find(getLastChildren$1(elm), curry($_e4hu6h1ejkmcwkgj.eq, endNode));\n return start.isSome() && end.isSome();\n }).getOr(false);\n };\n var moveEndPoint$1 = function (dom, rng, node, start) {\n var root = node, walker = new TreeWalker(node, root);\n var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n do {\n if (node.nodeType === 3 && $_4ujg4tljkmcwkbk.trim(node.nodeValue).length !== 0) {\n if (start) {\n rng.setStart(node, 0);\n } else {\n rng.setEnd(node, node.nodeValue.length);\n }\n return;\n }\n if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {\n if (start) {\n rng.setStartBefore(node);\n } else {\n if (node.nodeName === 'BR') {\n rng.setEndBefore(node);\n } else {\n rng.setEndAfter(node);\n }\n }\n return;\n }\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) {\n if (start) {\n rng.setStart(node, 0);\n } else {\n rng.setEnd(node, 0);\n }\n return;\n }\n } while (node = start ? walker.next() : walker.prev());\n if (root.nodeName === 'BODY') {\n if (start) {\n rng.setStart(root, 0);\n } else {\n rng.setEnd(root, root.childNodes.length);\n }\n }\n };\n var hasAnyRanges = function (editor) {\n var sel = editor.selection.getSel();\n return sel && sel.rangeCount > 0;\n };\n\n function NodeChange (editor) {\n var lastRng, lastPath = [];\n var isSameElementPath = function (startElm) {\n var i, currentPath;\n currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm);\n if (currentPath.length === lastPath.length) {\n for (i = currentPath.length; i >= 0; i--) {\n if (currentPath[i] !== lastPath[i]) {\n break;\n }\n }\n if (i === -1) {\n lastPath = currentPath;\n return true;\n }\n }\n lastPath = currentPath;\n return false;\n };\n if (!('onselectionchange' in editor.getDoc())) {\n editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) {\n var nativeRng, fakeRng;\n nativeRng = editor.selection.getRng();\n fakeRng = {\n startContainer: nativeRng.startContainer,\n startOffset: nativeRng.startOffset,\n endContainer: nativeRng.endContainer,\n endOffset: nativeRng.endOffset\n };\n if (e.type === 'nodechange' || !$_axtxv74kjkmcwl84.isEq(fakeRng, lastRng)) {\n editor.fire('SelectionChange');\n }\n lastRng = fakeRng;\n });\n }\n editor.on('contextmenu', function () {\n editor.fire('SelectionChange');\n });\n editor.on('SelectionChange', function () {\n var startElm = editor.selection.getStart(true);\n if (!startElm || !$_cvvl9iajkmcwk25.range && editor.selection.isCollapsed()) {\n return;\n }\n if (hasAnyRanges(editor) && !isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {\n editor.nodeChanged({ selectionChange: true });\n }\n });\n editor.on('MouseUp', function (e) {\n if (!e.isDefaultPrevented() && hasAnyRanges(editor)) {\n if (editor.selection.getNode().nodeName === 'IMG') {\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n editor.nodeChanged();\n });\n } else {\n editor.nodeChanged();\n }\n }\n });\n this.nodeChanged = function (args) {\n var selection = editor.selection;\n var node, parents, root;\n if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) {\n root = editor.getBody();\n node = selection.getStart(true) || root;\n if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) {\n node = root;\n }\n parents = [];\n editor.dom.getParent(node, function (node) {\n if (node === root) {\n return true;\n }\n parents.push(node);\n });\n args = args || {};\n args.element = node;\n args.parents = parents;\n editor.fire('NodeChange', args);\n }\n };\n }\n\n var getAbsolutePosition = function (elm) {\n var doc, docElem, win, clientRect;\n clientRect = elm.getBoundingClientRect();\n doc = elm.ownerDocument;\n docElem = doc.documentElement;\n win = doc.defaultView;\n return {\n top: clientRect.top + win.pageYOffset - docElem.clientTop,\n left: clientRect.left + win.pageXOffset - docElem.clientLeft\n };\n };\n var getBodyPosition = function (editor) {\n return editor.inline ? getAbsolutePosition(editor.getBody()) : {\n left: 0,\n top: 0\n };\n };\n var getScrollPosition = function (editor) {\n var body = editor.getBody();\n return editor.inline ? {\n left: body.scrollLeft,\n top: body.scrollTop\n } : {\n left: 0,\n top: 0\n };\n };\n var getBodyScroll = function (editor) {\n var body = editor.getBody(), docElm = editor.getDoc().documentElement;\n var inlineScroll = {\n left: body.scrollLeft,\n top: body.scrollTop\n };\n var iframeScroll = {\n left: body.scrollLeft || docElm.scrollLeft,\n top: body.scrollTop || docElm.scrollTop\n };\n return editor.inline ? inlineScroll : iframeScroll;\n };\n var getMousePosition = function (editor, event) {\n if (event.target.ownerDocument !== editor.getDoc()) {\n var iframePosition = getAbsolutePosition(editor.getContentAreaContainer());\n var scrollPosition = getBodyScroll(editor);\n return {\n left: event.pageX - iframePosition.left + scrollPosition.left,\n top: event.pageY - iframePosition.top + scrollPosition.top\n };\n }\n return {\n left: event.pageX,\n top: event.pageY\n };\n };\n var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) {\n return {\n pageX: mousePosition.left - bodyPosition.left + scrollPosition.left,\n pageY: mousePosition.top - bodyPosition.top + scrollPosition.top\n };\n };\n var calc = function (editor, event) {\n return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event));\n };\n var $_7vqqhl5qjkmcwlfd = { calc: calc };\n\n var isContentEditableFalse$7 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isContentEditableTrue$4 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isDraggable = function (rootElm, elm) {\n return isContentEditableFalse$7(elm) && elm !== rootElm;\n };\n var isValidDropTarget = function (editor, targetElement, dragElement) {\n if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {\n return false;\n }\n if (isContentEditableFalse$7(targetElement)) {\n return false;\n }\n return true;\n };\n var cloneElement = function (elm) {\n var cloneElm = elm.cloneNode(true);\n cloneElm.removeAttribute('data-mce-selected');\n return cloneElm;\n };\n var createGhost = function (editor, elm, width, height) {\n var clonedElm = elm.cloneNode(true);\n editor.dom.setStyles(clonedElm, {\n width: width,\n height: height\n });\n editor.dom.setAttrib(clonedElm, 'data-mce-selected', null);\n var ghostElm = editor.dom.create('div', {\n 'class': 'mce-drag-container',\n 'data-mce-bogus': 'all',\n 'unselectable': 'on',\n 'contenteditable': 'false'\n });\n editor.dom.setStyles(ghostElm, {\n position: 'absolute',\n opacity: 0.5,\n overflow: 'hidden',\n border: 0,\n padding: 0,\n margin: 0,\n width: width,\n height: height\n });\n editor.dom.setStyles(clonedElm, {\n margin: 0,\n boxSizing: 'border-box'\n });\n ghostElm.appendChild(clonedElm);\n return ghostElm;\n };\n var appendGhostToBody = function (ghostElm, bodyElm) {\n if (ghostElm.parentNode !== bodyElm) {\n bodyElm.appendChild(ghostElm);\n }\n };\n var moveGhost = function (ghostElm, position, width, height, maxX, maxY) {\n var overflowX = 0, overflowY = 0;\n ghostElm.style.left = position.pageX + 'px';\n ghostElm.style.top = position.pageY + 'px';\n if (position.pageX + width > maxX) {\n overflowX = position.pageX + width - maxX;\n }\n if (position.pageY + height > maxY) {\n overflowY = position.pageY + height - maxY;\n }\n ghostElm.style.width = width - overflowX + 'px';\n ghostElm.style.height = height - overflowY + 'px';\n };\n var removeElement = function (elm) {\n if (elm && elm.parentNode) {\n elm.parentNode.removeChild(elm);\n }\n };\n var isLeftMouseButtonPressed = function (e) {\n return e.button === 0;\n };\n var hasDraggableElement = function (state) {\n return state.element;\n };\n var applyRelPos = function (state, position) {\n return {\n pageX: position.pageX - state.relX,\n pageY: position.pageY + 5\n };\n };\n var start$1 = function (state, editor) {\n return function (e) {\n if (isLeftMouseButtonPressed(e)) {\n var ceElm = $_9g1fibmjkmcwkbu.find(editor.dom.getParents(e.target), $_fl2rax2ljkmcwkot.or(isContentEditableFalse$7, isContentEditableTrue$4));\n if (isDraggable(editor.getBody(), ceElm)) {\n var elmPos = editor.dom.getPos(ceElm);\n var bodyElm = editor.getBody();\n var docElm = editor.getDoc().documentElement;\n state.element = ceElm;\n state.screenX = e.screenX;\n state.screenY = e.screenY;\n state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2;\n state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2;\n state.relX = e.pageX - elmPos.x;\n state.relY = e.pageY - elmPos.y;\n state.width = ceElm.offsetWidth;\n state.height = ceElm.offsetHeight;\n state.ghost = createGhost(editor, ceElm, state.width, state.height);\n }\n }\n };\n };\n var move$1 = function (state, editor) {\n var throttledPlaceCaretAt = $_3l01gcijkmcwk99.throttle(function (clientX, clientY) {\n editor._selectionOverrides.hideFakeCaret();\n editor.selection.placeCaretAt(clientX, clientY);\n }, 0);\n return function (e) {\n var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY));\n if (hasDraggableElement(state) && !state.dragging && movement > 10) {\n var args = editor.fire('dragstart', { target: state.element });\n if (args.isDefaultPrevented()) {\n return;\n }\n state.dragging = true;\n editor.focus();\n }\n if (state.dragging) {\n var targetPos = applyRelPos(state, $_7vqqhl5qjkmcwlfd.calc(editor, e));\n appendGhostToBody(state.ghost, editor.getBody());\n moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY);\n throttledPlaceCaretAt(e.clientX, e.clientY);\n }\n };\n };\n var getRawTarget = function (selection) {\n var rng = selection.getSel().getRangeAt(0);\n var startContainer = rng.startContainer;\n return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer;\n };\n var drop = function (state, editor) {\n return function (e) {\n if (state.dragging) {\n if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) {\n var targetClone_1 = cloneElement(state.element);\n var args = editor.fire('drop', {\n targetClone: targetClone_1,\n clientX: e.clientX,\n clientY: e.clientY\n });\n if (!args.isDefaultPrevented()) {\n targetClone_1 = args.targetClone;\n editor.undoManager.transact(function () {\n removeElement(state.element);\n editor.insertContent(editor.dom.getOuterHTML(targetClone_1));\n editor._selectionOverrides.hideFakeCaret();\n });\n }\n }\n }\n removeDragState(state);\n };\n };\n var stop$$1 = function (state, editor) {\n return function () {\n if (state.dragging) {\n editor.fire('dragend');\n }\n removeDragState(state);\n };\n };\n var removeDragState = function (state) {\n state.dragging = false;\n state.element = null;\n removeElement(state.ghost);\n };\n var bindFakeDragEvents = function (editor) {\n var state = {};\n var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument;\n pageDom = DOMUtils$1.DOM;\n rootDocument = document;\n dragStartHandler = start$1(state, editor);\n dragHandler = move$1(state, editor);\n dropHandler = drop(state, editor);\n dragEndHandler = stop$$1(state, editor);\n editor.on('mousedown', dragStartHandler);\n editor.on('mousemove', dragHandler);\n editor.on('mouseup', dropHandler);\n pageDom.bind(rootDocument, 'mousemove', dragHandler);\n pageDom.bind(rootDocument, 'mouseup', dragEndHandler);\n editor.on('remove', function () {\n pageDom.unbind(rootDocument, 'mousemove', dragHandler);\n pageDom.unbind(rootDocument, 'mouseup', dragEndHandler);\n });\n };\n var blockIeDrop = function (editor) {\n editor.on('drop', function (e) {\n var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null;\n if (isContentEditableFalse$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) {\n e.preventDefault();\n }\n });\n };\n var init = function (editor) {\n bindFakeDragEvents(editor);\n blockIeDrop(editor);\n };\n var $_amfo0m5pjkmcwlf7 = { init: init };\n\n var getNodeClientRects = function (node) {\n var toArrayWithNode = function (clientRects) {\n return $_9g1fibmjkmcwkbu.map(clientRects, function (clientRect) {\n clientRect = clone$2(clientRect);\n clientRect.node = node;\n return clientRect;\n });\n };\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n return toArrayWithNode(node.getClientRects());\n }\n if ($_bjermr1rjkmcwkij.isText(node)) {\n var rng = node.ownerDocument.createRange();\n rng.setStart(node, 0);\n rng.setEnd(node, node.data.length);\n return toArrayWithNode(rng.getClientRects());\n }\n };\n var getClientRects = function (node) {\n return $_9g1fibmjkmcwkbu.reduce(node, function (result, node) {\n return result.concat(getNodeClientRects(node));\n }, []);\n };\n\n var VDirection;\n (function (VDirection) {\n VDirection[VDirection['Up'] = -1] = 'Up';\n VDirection[VDirection['Down'] = 1] = 'Down';\n }(VDirection || (VDirection = {})));\n var findUntil = function (direction, root, predicateFn, node) {\n while (node = findNode(node, direction, isEditableCaretCandidate, root)) {\n if (predicateFn(node)) {\n return;\n }\n }\n };\n var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) {\n var line = 0, node;\n var result = [];\n var targetClientRect;\n var add = function (node) {\n var i, clientRect, clientRects;\n clientRects = getClientRects([node]);\n if (direction === -1) {\n clientRects = clientRects.reverse();\n }\n for (i = 0; i < clientRects.length; i++) {\n clientRect = clientRects[i];\n if (isBeflowFn(clientRect, targetClientRect)) {\n continue;\n }\n if (result.length > 0 && isAboveFn(clientRect, $_9g1fibmjkmcwkbu.last(result))) {\n line++;\n }\n clientRect.line = line;\n if (predicateFn(clientRect)) {\n return true;\n }\n result.push(clientRect);\n }\n };\n targetClientRect = $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n if (!targetClientRect) {\n return result;\n }\n node = caretPosition.getNode();\n add(node);\n findUntil(direction, root, add, node);\n return result;\n };\n var aboveLineNumber = function (lineNumber, clientRect) {\n return clientRect.line > lineNumber;\n };\n var isLineNumber = function (lineNumber, clientRect) {\n return clientRect.line === lineNumber;\n };\n var upUntil = curry(walkUntil, VDirection.Up, isAbove, isBelow);\n var downUntil = curry(walkUntil, VDirection.Down, isBelow, isAbove);\n var positionsUntil = function (direction, root, predicateFn, node) {\n var caretWalker = CaretWalker(root);\n var walkFn, isBelowFn, isAboveFn, caretPosition;\n var result = [];\n var line = 0, clientRect, targetClientRect;\n var getClientRect = function (caretPosition) {\n if (direction === 1) {\n return $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n }\n return $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n };\n if (direction === 1) {\n walkFn = caretWalker.next;\n isBelowFn = isBelow;\n isAboveFn = isAbove;\n caretPosition = CaretPosition$1.after(node);\n } else {\n walkFn = caretWalker.prev;\n isBelowFn = isAbove;\n isAboveFn = isBelow;\n caretPosition = CaretPosition$1.before(node);\n }\n targetClientRect = getClientRect(caretPosition);\n do {\n if (!caretPosition.isVisible()) {\n continue;\n }\n clientRect = getClientRect(caretPosition);\n if (isAboveFn(clientRect, targetClientRect)) {\n continue;\n }\n if (result.length > 0 && isBelowFn(clientRect, $_9g1fibmjkmcwkbu.last(result))) {\n line++;\n }\n clientRect = clone$2(clientRect);\n clientRect.position = caretPosition;\n clientRect.line = line;\n if (predicateFn(clientRect)) {\n return result;\n }\n result.push(clientRect);\n } while (caretPosition = walkFn(caretPosition));\n return result;\n };\n var isAboveLine = function (lineNumber) {\n return function (clientRect) {\n return aboveLineNumber(lineNumber, clientRect);\n };\n };\n var isLine = function (lineNumber) {\n return function (clientRect) {\n return isLineNumber(lineNumber, clientRect);\n };\n };\n\n var isContentEditableFalse$8 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var findNode$1 = findNode;\n var distanceToRectLeft = function (clientRect, clientX) {\n return Math.abs(clientRect.left - clientX);\n };\n var distanceToRectRight = function (clientRect, clientX) {\n return Math.abs(clientRect.right - clientX);\n };\n var isInside = function (clientX, clientRect) {\n return clientX >= clientRect.left && clientX <= clientRect.right;\n };\n var findClosestClientRect = function (clientRects, clientX) {\n return $_9g1fibmjkmcwkbu.reduce(clientRects, function (oldClientRect, clientRect) {\n var oldDistance, newDistance;\n oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX));\n newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX));\n if (isInside(clientX, clientRect)) {\n return clientRect;\n }\n if (isInside(clientX, oldClientRect)) {\n return oldClientRect;\n }\n if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) {\n return clientRect;\n }\n if (newDistance < oldDistance) {\n return clientRect;\n }\n return oldClientRect;\n });\n };\n var walkUntil$1 = function (direction, root, predicateFn, node) {\n while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) {\n if (predicateFn(node)) {\n return;\n }\n }\n };\n var findLineNodeRects = function (root, targetNodeRect) {\n var clientRects = [];\n var collect = function (checkPosFn, node) {\n var lineRects;\n lineRects = $_9g1fibmjkmcwkbu.filter(getClientRects([node]), function (clientRect) {\n return !checkPosFn(clientRect, targetNodeRect);\n });\n clientRects = clientRects.concat(lineRects);\n return lineRects.length === 0;\n };\n clientRects.push(targetNodeRect);\n walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node);\n walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node);\n return clientRects;\n };\n var getFakeCaretTargets = function (root) {\n return $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.toArray(root.getElementsByTagName('*')), isFakeCaretTarget);\n };\n var caretInfo = function (clientRect, clientX) {\n return {\n node: clientRect.node,\n before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX)\n };\n };\n var closestCaret = function (root, clientX, clientY) {\n var closestNodeRect;\n var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root));\n var targetNodeRects = $_9g1fibmjkmcwkbu.filter(contentEditableFalseNodeRects, function (rect) {\n return clientY >= rect.top && clientY <= rect.bottom;\n });\n closestNodeRect = findClosestClientRect(targetNodeRects, clientX);\n if (closestNodeRect) {\n closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX);\n if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) {\n return caretInfo(closestNodeRect, clientX);\n }\n }\n return null;\n };\n\n var isXYWithinRange = function (clientX, clientY, range$$1) {\n if (range$$1.collapsed) {\n return false;\n }\n return foldl(range$$1.getClientRects(), function (state, rect) {\n return state || containsXY(rect, clientX, clientY);\n }, false);\n };\n var $_95lcbc5ujkmcwlg1 = { isXYWithinRange: isXYWithinRange };\n\n var setup$3 = function (editor) {\n var renderFocusCaret = first$1(function () {\n if (!editor.removed) {\n var rng = editor.selection.getRng();\n if (rng.collapsed) {\n var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false);\n editor.selection.setRng(caretRange);\n }\n }\n }, 0);\n editor.on('focus', function () {\n renderFocusCaret.throttle();\n });\n editor.on('blur', function () {\n renderFocusCaret.cancel();\n });\n };\n var $_8glegd5vjkmcwlg3 = { setup: setup$3 };\n\n var $_6bj5795wjkmcwlg6 = {\n BACKSPACE: 8,\n DELETE: 46,\n DOWN: 40,\n ENTER: 13,\n LEFT: 37,\n RIGHT: 39,\n SPACEBAR: 32,\n TAB: 9,\n UP: 38,\n modifierPressed: function (e) {\n return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);\n },\n metaKeyPressed: function (e) {\n return $_cvvl9iajkmcwk25.mac ? e.metaKey : e.ctrlKey && !e.altKey;\n }\n };\n\n var isContentEditableTrue$5 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$9 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isAfterContentEditableFalse$1 = isAfterContentEditableFalse;\n var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse;\n var getContentEditableRoot$1 = function (editor, node) {\n var root = editor.getBody();\n while (node && node !== root) {\n if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var SelectionOverrides = function (editor) {\n var isBlock = function (node) {\n return editor.dom.isBlock(node);\n };\n var rootNode = editor.getBody();\n var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () {\n return $_e3v8sn4vjkmcwl9y.hasFocus(editor);\n });\n var realSelectionId = 'sel-' + editor.dom.uniqueId();\n var selectedContentEditableNode;\n var isFakeSelectionElement = function (elm) {\n return editor.dom.hasClass(elm, 'mce-offscreen-selection');\n };\n var getRealSelectionElement = function () {\n var container = editor.dom.get(realSelectionId);\n return container ? container.getElementsByTagName('*')[0] : container;\n };\n var setRange = function (range$$1) {\n if (range$$1) {\n editor.selection.setRng(range$$1);\n }\n };\n var getRange = function () {\n return editor.selection.getRng();\n };\n var showCaret$$1 = function (direction, node, before, scrollIntoView) {\n if (scrollIntoView === void 0) {\n scrollIntoView = true;\n }\n var e;\n e = editor.fire('ShowCaret', {\n target: node,\n direction: direction,\n before: before\n });\n if (e.isDefaultPrevented()) {\n return null;\n }\n if (scrollIntoView) {\n editor.selection.scrollIntoView(node, direction === -1);\n }\n return fakeCaret.show(before, node);\n };\n var getNormalizedRangeEndPoint$$1 = function (direction, range$$1) {\n range$$1 = normalizeRange(direction, rootNode, range$$1);\n if (direction === -1) {\n return CaretPosition$1.fromRangeStart(range$$1);\n }\n return CaretPosition$1.fromRangeEnd(range$$1);\n };\n var showBlockCaretContainer = function (blockCaretContainer) {\n if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n showCaretContainerBlock(blockCaretContainer);\n setRange(getRange());\n editor.selection.scrollIntoView(blockCaretContainer[0]);\n }\n };\n var registerEvents = function () {\n editor.on('mouseup', function (e) {\n var range$$1 = getRange();\n if (range$$1.collapsed && $_8we2e850jkmcwlaw.isXYInContentArea(editor, e.clientX, e.clientY)) {\n setRange(renderCaretAtRange(editor, range$$1, false));\n }\n });\n editor.on('click', function (e) {\n var contentEditableRoot;\n contentEditableRoot = getContentEditableRoot$1(editor, e.target);\n if (contentEditableRoot) {\n if (isContentEditableFalse$9(contentEditableRoot)) {\n e.preventDefault();\n editor.focus();\n }\n if (isContentEditableTrue$5(contentEditableRoot)) {\n if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) {\n removeContentEditableSelection();\n }\n }\n }\n });\n editor.on('blur NewBlock', function () {\n removeContentEditableSelection();\n });\n editor.on('ResizeWindow FullscreenStateChanged', function () {\n return fakeCaret.reposition();\n });\n var handleTouchSelect = function (editor) {\n var moved = false;\n editor.on('touchstart', function () {\n moved = false;\n });\n editor.on('touchmove', function () {\n moved = true;\n });\n editor.on('touchend', function (e) {\n var contentEditableRoot = getContentEditableRoot$1(editor, e.target);\n if (isContentEditableFalse$9(contentEditableRoot)) {\n if (!moved) {\n e.preventDefault();\n setContentEditableSelection(selectNode(editor, contentEditableRoot));\n }\n }\n });\n };\n var hasNormalCaretPosition = function (elm) {\n var caretWalker = CaretWalker(elm);\n if (!elm.firstChild) {\n return false;\n }\n var startPos = CaretPosition$1.before(elm.firstChild);\n var newPos = caretWalker.next(startPos);\n return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos);\n };\n var isInSameBlock$$1 = function (node1, node2) {\n var block1 = editor.dom.getParent(node1, editor.dom.isBlock);\n var block2 = editor.dom.getParent(node2, editor.dom.isBlock);\n return block1 === block2;\n };\n var hasBetterMouseTarget = function (targetNode, caretNode) {\n var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock);\n var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock);\n if (targetBlock && editor.dom.isChildOf(targetBlock, caretBlock) && isContentEditableFalse$9(getContentEditableRoot$1(editor, targetBlock)) === false) {\n return true;\n }\n return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock);\n };\n handleTouchSelect(editor);\n editor.on('mousedown', function (e) {\n var contentEditableRoot;\n var targetElm = e.target;\n if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) {\n return;\n }\n if ($_8we2e850jkmcwlaw.isXYInContentArea(editor, e.clientX, e.clientY) === false) {\n return;\n }\n contentEditableRoot = getContentEditableRoot$1(editor, targetElm);\n if (contentEditableRoot) {\n if (isContentEditableFalse$9(contentEditableRoot)) {\n e.preventDefault();\n setContentEditableSelection(selectNode(editor, contentEditableRoot));\n } else {\n removeContentEditableSelection();\n if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !$_95lcbc5ujkmcwlg1.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) {\n hideFakeCaret();\n editor.selection.placeCaretAt(e.clientX, e.clientY);\n }\n }\n } else if (isFakeCaretTarget(targetElm) === false) {\n removeContentEditableSelection();\n hideFakeCaret();\n var caretInfo = closestCaret(rootNode, e.clientX, e.clientY);\n if (caretInfo) {\n if (!hasBetterMouseTarget(e.target, caretInfo.node)) {\n e.preventDefault();\n var range$$1 = showCaret$$1(1, caretInfo.node, caretInfo.before, false);\n editor.getBody().focus();\n setRange(range$$1);\n }\n }\n }\n });\n editor.on('keypress', function (e) {\n if ($_6bj5795wjkmcwlg6.modifierPressed(e)) {\n return;\n }\n switch (e.keyCode) {\n default:\n if (isContentEditableFalse$9(editor.selection.getNode())) {\n e.preventDefault();\n }\n break;\n }\n });\n editor.on('getSelectionRange', function (e) {\n var rng = e.range;\n if (selectedContentEditableNode) {\n if (!selectedContentEditableNode.parentNode) {\n selectedContentEditableNode = null;\n return;\n }\n rng = rng.cloneRange();\n rng.selectNode(selectedContentEditableNode);\n e.range = rng;\n }\n });\n editor.on('setSelectionRange', function (e) {\n var rng;\n rng = setContentEditableSelection(e.range, e.forward);\n if (rng) {\n e.range = rng;\n }\n });\n var isPasteBin = function (node) {\n return node.id === 'mcepastebin';\n };\n editor.on('AfterSetSelectionRange', function (e) {\n var rng = e.range;\n if (!isRangeInCaretContainer(rng) && !isPasteBin(rng.startContainer.parentNode)) {\n hideFakeCaret();\n }\n if (!isFakeSelectionElement(rng.startContainer.parentNode)) {\n removeContentEditableSelection();\n }\n });\n editor.on('copy', function (e) {\n var clipboardData = e.clipboardData;\n if (!e.isDefaultPrevented() && e.clipboardData && !$_cvvl9iajkmcwk25.ie) {\n var realSelectionElement = getRealSelectionElement();\n if (realSelectionElement) {\n e.preventDefault();\n clipboardData.clearData();\n clipboardData.setData('text/html', realSelectionElement.outerHTML);\n clipboardData.setData('text/plain', realSelectionElement.outerText);\n }\n }\n });\n $_amfo0m5pjkmcwlf7.init(editor);\n $_8glegd5vjkmcwlg3.setup(editor);\n };\n var addCss = function () {\n var styles = editor.contentStyles, rootClass = '.mce-content-body';\n styles.push(fakeCaret.getCss());\n styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}');\n };\n var isWithinCaretContainer = function (node) {\n return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node);\n };\n var isRangeInCaretContainer = function (rng) {\n return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);\n };\n var setContentEditableSelection = function (range$$1, forward) {\n var node;\n var $ = editor.$;\n var dom = editor.dom;\n var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone;\n if (!range$$1) {\n return null;\n }\n if (range$$1.collapsed) {\n if (!isRangeInCaretContainer(range$$1)) {\n if (forward === false) {\n caretPosition = getNormalizedRangeEndPoint$$1(-1, range$$1);\n if (isFakeCaretTarget(caretPosition.getNode(true))) {\n return showCaret$$1(-1, caretPosition.getNode(true), false, false);\n }\n if (isFakeCaretTarget(caretPosition.getNode())) {\n return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\n }\n } else {\n caretPosition = getNormalizedRangeEndPoint$$1(1, range$$1);\n if (isFakeCaretTarget(caretPosition.getNode())) {\n return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\n }\n if (isFakeCaretTarget(caretPosition.getNode(true))) {\n return showCaret$$1(1, caretPosition.getNode(true), false, false);\n }\n }\n }\n return null;\n }\n startContainer = range$$1.startContainer;\n startOffset = range$$1.startOffset;\n endOffset = range$$1.endOffset;\n if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) {\n startContainer = startContainer.parentNode;\n startOffset = dom.nodeIndex(startContainer);\n startContainer = startContainer.parentNode;\n }\n if (startContainer.nodeType !== 1) {\n return null;\n }\n if (endOffset === startOffset + 1) {\n node = startContainer.childNodes[startOffset];\n }\n if (!isContentEditableFalse$9(node)) {\n return null;\n }\n targetClone = origTargetClone = node.cloneNode(true);\n e = editor.fire('ObjectSelected', {\n target: node,\n targetClone: targetClone\n });\n if (e.isDefaultPrevented()) {\n return null;\n }\n $realSelectionContainer = $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () {\n return $([]);\n }, function (elm) {\n return $([elm.dom()]);\n });\n targetClone = e.targetClone;\n if ($realSelectionContainer.length === 0) {\n $realSelectionContainer = $('
').attr('id', realSelectionId);\n $realSelectionContainer.appendTo(editor.getBody());\n }\n range$$1 = editor.dom.createRng();\n if (targetClone === origTargetClone && $_cvvl9iajkmcwk25.ie) {\n $realSelectionContainer.empty().append('

\\xA0

').append(targetClone);\n range$$1.setStartAfter($realSelectionContainer[0].firstChild.firstChild);\n range$$1.setEndAfter(targetClone);\n } else {\n $realSelectionContainer.empty().append('\\xA0').append(targetClone).append('\\xA0');\n range$$1.setStart($realSelectionContainer[0].firstChild, 1);\n range$$1.setEnd($realSelectionContainer[0].lastChild, 0);\n }\n $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y });\n $realSelectionContainer[0].focus();\n sel = editor.selection.getSel();\n sel.removeAllRanges();\n sel.addRange(range$$1);\n each($_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {\n $_29helg15jkmcwkf0.remove(elm, 'data-mce-selected');\n });\n node.setAttribute('data-mce-selected', '1');\n selectedContentEditableNode = node;\n hideFakeCaret();\n return range$$1;\n };\n var removeContentEditableSelection = function () {\n if (selectedContentEditableNode) {\n selectedContentEditableNode.removeAttribute('data-mce-selected');\n $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\n selectedContentEditableNode = null;\n }\n $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\n selectedContentEditableNode = null;\n };\n var destroy = function () {\n fakeCaret.destroy();\n selectedContentEditableNode = null;\n };\n var hideFakeCaret = function () {\n fakeCaret.hide();\n };\n if ($_cvvl9iajkmcwk25.ceFalse) {\n registerEvents();\n addCss();\n }\n return {\n showCaret: showCaret$$1,\n showBlockCaretContainer: showBlockCaretContainer,\n hideFakeCaret: hideFakeCaret,\n destroy: destroy\n };\n };\n\n var isValidPrefixAttrName = function (name) {\n return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0;\n };\n var trimComments = function (text) {\n return text.replace(//g, '');\n };\n var isInvalidUri = function (settings, uri) {\n if (settings.allow_html_data_urls) {\n return false;\n } else if (/^data:image\\//i.test(uri)) {\n return settings.allow_svg_data_urls === false && /^data:image\\/svg\\+xml/i.test(uri);\n } else {\n return /^data:/i.test(uri);\n }\n };\n var findEndTagIndex = function (schema, html, startIndex) {\n var count = 1, index, matches, tokenRegExp, shortEndedElements;\n shortEndedElements = schema.getShortEndedElements();\n tokenRegExp = /<([!?\\/])?([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\/|\\s+)>/g;\n tokenRegExp.lastIndex = index = startIndex;\n while (matches = tokenRegExp.exec(html)) {\n index = tokenRegExp.lastIndex;\n if (matches[1] === '/') {\n count--;\n } else if (!matches[1]) {\n if (matches[2] in shortEndedElements) {\n continue;\n }\n count++;\n }\n if (count === 0) {\n break;\n }\n }\n return index;\n };\n function SaxParser(settings, schema) {\n if (schema === void 0) {\n schema = Schema();\n }\n var noop = function () {\n };\n settings = settings || {};\n if (settings.fix_self_closing !== false) {\n settings.fix_self_closing = true;\n }\n var comment = settings.comment ? settings.comment : noop;\n var cdata = settings.cdata ? settings.cdata : noop;\n var text = settings.text ? settings.text : noop;\n var start = settings.start ? settings.start : noop;\n var end = settings.end ? settings.end : noop;\n var pi = settings.pi ? settings.pi : noop;\n var doctype = settings.doctype ? settings.doctype : noop;\n var parse = function (html) {\n var matches, index = 0, value, endRegExp;\n var stack = [];\n var attrList, i, textData, name;\n var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;\n var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;\n var attributesRequired, attributesDefault, attributesForced, processHtml;\n var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;\n var decode = $_33qwr1sjkmcwkip.decode;\n var fixSelfClosing;\n var filteredUrlAttrs = $_4ujg4tljkmcwkbk.makeMap('src,href,data,background,formaction,poster,xlink:href');\n var scriptUriRegExp = /((java|vb)script|mhtml):/i;\n var processEndTag = function (name) {\n var pos, i;\n pos = stack.length;\n while (pos--) {\n if (stack[pos].name === name) {\n break;\n }\n }\n if (pos >= 0) {\n for (i = stack.length - 1; i >= pos; i--) {\n name = stack[i];\n if (name.valid) {\n end(name.name);\n }\n }\n stack.length = pos;\n }\n };\n var parseAttribute = function (match, name, value, val2, val3) {\n var attrRule, i;\n var trimRegExp = /[\\s\\u0000-\\u001F]+/g;\n name = name.toLowerCase();\n value = name in fillAttrsMap ? name : decode(value || val2 || val3 || '');\n if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) {\n attrRule = validAttributesMap[name];\n if (!attrRule && validAttributePatterns) {\n i = validAttributePatterns.length;\n while (i--) {\n attrRule = validAttributePatterns[i];\n if (attrRule.pattern.test(name)) {\n break;\n }\n }\n if (i === -1) {\n attrRule = null;\n }\n }\n if (!attrRule) {\n return;\n }\n if (attrRule.validValues && !(value in attrRule.validValues)) {\n return;\n }\n }\n if (filteredUrlAttrs[name] && !settings.allow_script_urls) {\n var uri = value.replace(trimRegExp, '');\n try {\n uri = decodeURIComponent(uri);\n } catch (ex) {\n uri = unescape(uri);\n }\n if (scriptUriRegExp.test(uri)) {\n return;\n }\n if (isInvalidUri(settings, uri)) {\n return;\n }\n }\n if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) {\n return;\n }\n attrList.map[name] = value;\n attrList.push({\n name: name,\n value: value\n });\n };\n tokenRegExp = new RegExp('<(?:' + '(?:!--([\\\\w\\\\W]*?)-->)|' + '(?:!\\\\[CDATA\\\\[([\\\\w\\\\W]*?)\\\\]\\\\]>)|' + '(?:!DOCTYPE([\\\\w\\\\W]*?)>)|' + '(?:\\\\?([^\\\\s\\\\/<>]+) ?([\\\\w\\\\W]*?)[?/]>)|' + '(?:\\\\/([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)((?:\\\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\\\/|\\\\s+)>)' + ')', 'g');\n attrRegExp = /([\\w:\\-]+)(?:\\s*=\\s*(?:(?:\\\"((?:[^\\\"])*)\\\")|(?:\\'((?:[^\\'])*)\\')|([^>\\s]+)))?/g;\n shortEndedElements = schema.getShortEndedElements();\n selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();\n fillAttrsMap = schema.getBoolAttrs();\n validate = settings.validate;\n removeInternalElements = settings.remove_internals;\n fixSelfClosing = settings.fix_self_closing;\n specialElements = schema.getSpecialElements();\n processHtml = html + '>';\n while (matches = tokenRegExp.exec(processHtml)) {\n if (index < matches.index) {\n text(decode(html.substr(index, matches.index - index)));\n }\n if (value = matches[6]) {\n value = value.toLowerCase();\n if (value.charAt(0) === ':') {\n value = value.substr(1);\n }\n processEndTag(value);\n } else if (value = matches[7]) {\n if (matches.index + matches[0].length > html.length) {\n text(decode(html.substr(matches.index)));\n index = matches.index + matches[0].length;\n continue;\n }\n value = value.toLowerCase();\n if (value.charAt(0) === ':') {\n value = value.substr(1);\n }\n isShortEnded = value in shortEndedElements;\n if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {\n processEndTag(value);\n }\n if (!validate || (elementRule = schema.getElementRule(value))) {\n isValidElement = true;\n if (validate) {\n validAttributesMap = elementRule.attributes;\n validAttributePatterns = elementRule.attributePatterns;\n }\n if (attribsValue = matches[8]) {\n isInternalElement = attribsValue.indexOf('data-mce-type') !== -1;\n if (isInternalElement && removeInternalElements) {\n isValidElement = false;\n }\n attrList = [];\n attrList.map = {};\n attribsValue.replace(attrRegExp, parseAttribute);\n } else {\n attrList = [];\n attrList.map = {};\n }\n if (validate && !isInternalElement) {\n attributesRequired = elementRule.attributesRequired;\n attributesDefault = elementRule.attributesDefault;\n attributesForced = elementRule.attributesForced;\n anyAttributesRequired = elementRule.removeEmptyAttrs;\n if (anyAttributesRequired && !attrList.length) {\n isValidElement = false;\n }\n if (attributesForced) {\n i = attributesForced.length;\n while (i--) {\n attr = attributesForced[i];\n name = attr.name;\n attrValue = attr.value;\n if (attrValue === '{$uid}') {\n attrValue = 'mce_' + idCount++;\n }\n attrList.map[name] = attrValue;\n attrList.push({\n name: name,\n value: attrValue\n });\n }\n }\n if (attributesDefault) {\n i = attributesDefault.length;\n while (i--) {\n attr = attributesDefault[i];\n name = attr.name;\n if (!(name in attrList.map)) {\n attrValue = attr.value;\n if (attrValue === '{$uid}') {\n attrValue = 'mce_' + idCount++;\n }\n attrList.map[name] = attrValue;\n attrList.push({\n name: name,\n value: attrValue\n });\n }\n }\n }\n if (attributesRequired) {\n i = attributesRequired.length;\n while (i--) {\n if (attributesRequired[i] in attrList.map) {\n break;\n }\n }\n if (i === -1) {\n isValidElement = false;\n }\n }\n if (attr = attrList.map['data-mce-bogus']) {\n if (attr === 'all') {\n index = findEndTagIndex(schema, html, tokenRegExp.lastIndex);\n tokenRegExp.lastIndex = index;\n continue;\n }\n isValidElement = false;\n }\n }\n if (isValidElement) {\n start(value, attrList, isShortEnded);\n }\n } else {\n isValidElement = false;\n }\n if (endRegExp = specialElements[value]) {\n endRegExp.lastIndex = index = matches.index + matches[0].length;\n if (matches = endRegExp.exec(html)) {\n if (isValidElement) {\n textData = html.substr(index, matches.index - index);\n }\n index = matches.index + matches[0].length;\n } else {\n textData = html.substr(index);\n index = html.length;\n }\n if (isValidElement) {\n if (textData.length > 0) {\n text(textData, true);\n }\n end(value);\n }\n tokenRegExp.lastIndex = index;\n continue;\n }\n if (!isShortEnded) {\n if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) {\n stack.push({\n name: value,\n valid: isValidElement\n });\n } else if (isValidElement) {\n end(value);\n }\n }\n } else if (value = matches[1]) {\n if (value.charAt(0) === '>') {\n value = ' ' + value;\n }\n if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') {\n value = ' ' + value;\n }\n comment(value);\n } else if (value = matches[2]) {\n cdata(trimComments(value));\n } else if (value = matches[3]) {\n doctype(value);\n } else if (value = matches[4]) {\n pi(value, matches[5]);\n }\n index = matches.index + matches[0].length;\n }\n if (index < html.length) {\n text(decode(html.substr(index)));\n }\n for (i = stack.length - 1; i >= 0; i--) {\n value = stack[i];\n if (value.valid) {\n end(value.name);\n }\n }\n };\n return { parse: parse };\n }\n (function (SaxParser) {\n SaxParser.findEndTag = findEndTagIndex;\n }(SaxParser || (SaxParser = {})));\n var SaxParser$1 = SaxParser;\n\n var trimHtml = function (tempAttrs, html) {\n var trimContentRegExp = new RegExp(['\\\\s?(' + tempAttrs.join('|') + ')=\"[^\"]+\"'].join('|'), 'gi');\n return html.replace(trimContentRegExp, '');\n };\n var trimInternal = function (serializer, html) {\n var content = html;\n var bogusAllRegExp = /<(\\w+) [^>]*data-mce-bogus=\"all\"[^>]*>/g;\n var endTagIndex, index, matchLength, matches, shortEndedElements;\n var schema = serializer.schema;\n content = trimHtml(serializer.getTempAttrs(), content);\n shortEndedElements = schema.getShortEndedElements();\n while (matches = bogusAllRegExp.exec(content)) {\n index = bogusAllRegExp.lastIndex;\n matchLength = matches[0].length;\n if (shortEndedElements[matches[1]]) {\n endTagIndex = index;\n } else {\n endTagIndex = SaxParser$1.findEndTag(schema, content, index);\n }\n content = content.substring(0, index - matchLength) + content.substring(endTagIndex);\n bogusAllRegExp.lastIndex = index - matchLength;\n }\n return $_cadvcr2pjkmcwkph.trim(content);\n };\n var trimExternal = trimInternal;\n var $_2varuf5zjkmcwlgq = {\n trimExternal: trimExternal,\n trimInternal: trimInternal\n };\n\n var KEEP = 0;\n var INSERT = 1;\n var DELETE = 2;\n var diff = function (left, right) {\n var size = left.length + right.length + 2;\n var vDown = new Array(size);\n var vUp = new Array(size);\n var snake = function (start, end, diag) {\n return {\n start: start,\n end: end,\n diag: diag\n };\n };\n var buildScript = function (start1, end1, start2, end2, script) {\n var middle = getMiddleSnake(start1, end1, start2, end2);\n if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) {\n var i = start1;\n var j = start2;\n while (i < end1 || j < end2) {\n if (i < end1 && j < end2 && left[i] === right[j]) {\n script.push([\n KEEP,\n left[i]\n ]);\n ++i;\n ++j;\n } else {\n if (end1 - start1 > end2 - start2) {\n script.push([\n DELETE,\n left[i]\n ]);\n ++i;\n } else {\n script.push([\n INSERT,\n right[j]\n ]);\n ++j;\n }\n }\n }\n } else {\n buildScript(start1, middle.start, start2, middle.start - middle.diag, script);\n for (var i2 = middle.start; i2 < middle.end; ++i2) {\n script.push([\n KEEP,\n left[i2]\n ]);\n }\n buildScript(middle.end, end1, middle.end - middle.diag, end2, script);\n }\n };\n var buildSnake = function (start, diag, end1, end2) {\n var end = start;\n while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) {\n ++end;\n }\n return snake(start, end, diag);\n };\n var getMiddleSnake = function (start1, end1, start2, end2) {\n var m = end1 - start1;\n var n = end2 - start2;\n if (m === 0 || n === 0) {\n return null;\n }\n var delta = m - n;\n var sum = n + m;\n var offset = (sum % 2 === 0 ? sum : sum + 1) / 2;\n vDown[1 + offset] = start1;\n vUp[1 + offset] = end1 + 1;\n var d, k, i, x, y;\n for (d = 0; d <= offset; ++d) {\n for (k = -d; k <= d; k += 2) {\n i = k + offset;\n if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) {\n vDown[i] = vDown[i + 1];\n } else {\n vDown[i] = vDown[i - 1] + 1;\n }\n x = vDown[i];\n y = x - start1 + start2 - k;\n while (x < end1 && y < end2 && left[x] === right[y]) {\n vDown[i] = ++x;\n ++y;\n }\n if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) {\n if (vUp[i - delta] <= vDown[i]) {\n return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);\n }\n }\n }\n for (k = delta - d; k <= delta + d; k += 2) {\n i = k + offset - delta;\n if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) {\n vUp[i] = vUp[i + 1] - 1;\n } else {\n vUp[i] = vUp[i - 1];\n }\n x = vUp[i] - 1;\n y = x - start1 + start2 - k;\n while (x >= start1 && y >= start2 && left[x] === right[y]) {\n vUp[i] = x--;\n y--;\n }\n if (delta % 2 === 0 && -d <= k && k <= d) {\n if (vUp[i] <= vDown[i + delta]) {\n return buildSnake(vUp[i], k + start1 - start2, end1, end2);\n }\n }\n }\n }\n };\n var script = [];\n buildScript(0, left.length, 0, right.length, script);\n return script;\n };\n var $_3xze2m62jkmcwlh7 = {\n KEEP: KEEP,\n DELETE: DELETE,\n INSERT: INSERT,\n diff: diff\n };\n\n var getOuterHtml = function (elm) {\n if ($_bjermr1rjkmcwkij.isElement(elm)) {\n return elm.outerHTML;\n } else if ($_bjermr1rjkmcwkij.isText(elm)) {\n return $_33qwr1sjkmcwkip.encodeRaw(elm.data, false);\n } else if ($_bjermr1rjkmcwkij.isComment(elm)) {\n return '';\n }\n return '';\n };\n var createFragment$1 = function (html) {\n var frag, node, container;\n container = document.createElement('div');\n frag = document.createDocumentFragment();\n if (html) {\n container.innerHTML = html;\n }\n while (node = container.firstChild) {\n frag.appendChild(node);\n }\n return frag;\n };\n var insertAt = function (elm, html, index) {\n var fragment = createFragment$1(html);\n if (elm.hasChildNodes() && index < elm.childNodes.length) {\n var target = elm.childNodes[index];\n target.parentNode.insertBefore(fragment, target);\n } else {\n elm.appendChild(fragment);\n }\n };\n var removeAt = function (elm, index) {\n if (elm.hasChildNodes() && index < elm.childNodes.length) {\n var target = elm.childNodes[index];\n target.parentNode.removeChild(target);\n }\n };\n var applyDiff = function (diff, elm) {\n var index = 0;\n $_9g1fibmjkmcwkbu.each(diff, function (action) {\n if (action[0] === $_3xze2m62jkmcwlh7.KEEP) {\n index++;\n } else if (action[0] === $_3xze2m62jkmcwlh7.INSERT) {\n insertAt(elm, action[1], index);\n index++;\n } else if (action[0] === $_3xze2m62jkmcwlh7.DELETE) {\n removeAt(elm, index);\n }\n });\n };\n var read$3 = function (elm) {\n return $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml), function (item) {\n return item.length > 0;\n });\n };\n var write = function (fragments, elm) {\n var currentFragments = $_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml);\n applyDiff($_3xze2m62jkmcwlh7.diff(currentFragments, fragments), elm);\n return elm;\n };\n var $_cyedqm61jkmcwlh3 = {\n read: read$3,\n write: write\n };\n\n var fromHtml$1 = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n return $_ca6pc118jkmcwkfs.children(Element$$1.fromDom(div));\n };\n var fromTags = function (tags, scope) {\n return map(tags, function (x) {\n return Element$$1.fromTag(x, scope);\n });\n };\n var fromText$1 = function (texts, scope) {\n return map(texts, function (x) {\n return Element$$1.fromText(x, scope);\n });\n };\n var fromDom$1 = function (nodes) {\n return map(nodes, Element$$1.fromDom);\n };\n var $_bos53z64jkmcwlhd = {\n fromHtml: fromHtml$1,\n fromTags: fromTags,\n fromText: fromText$1,\n fromDom: fromDom$1\n };\n\n var get$6 = function (element) {\n return element.dom().innerHTML;\n };\n var set$3 = function (element, content) {\n var owner = $_ca6pc118jkmcwkfs.owner(element);\n var docDom = owner.dom();\n var fragment = Element$$1.fromDom(docDom.createDocumentFragment());\n var contentElements = $_bos53z64jkmcwlhd.fromHtml(content, docDom);\n $_1ev7t1xjkmcwkky.append(fragment, contentElements);\n $_eualm21wjkmcwkku.empty(element);\n $_f4qt4v1yjkmcwkl2.append(element, fragment);\n };\n var getOuter = function (element) {\n var container = Element$$1.fromTag('div');\n var clone = Element$$1.fromDom(element.dom().cloneNode(true));\n $_f4qt4v1yjkmcwkl2.append(container, clone);\n return get$6(container);\n };\n var $_xg5463jkmcwlhb = {\n get: get$6,\n set: set$3,\n getOuter: getOuter\n };\n\n var undoLevelDocument = Cell(Option.none());\n var lazyTempDocument = function () {\n return undoLevelDocument.get().getOrThunk(function () {\n var doc = document.implementation.createHTMLDocument('undo');\n undoLevelDocument.set(Option.some(doc));\n return doc;\n });\n };\n var hasIframes = function (html) {\n return html.indexOf('') !== -1;\n };\n var createFragmentedLevel = function (fragments) {\n return {\n type: 'fragmented',\n fragments: fragments,\n content: '',\n bookmark: null,\n beforeBookmark: null\n };\n };\n var createCompleteLevel = function (content) {\n return {\n type: 'complete',\n fragments: null,\n content: content,\n bookmark: null,\n beforeBookmark: null\n };\n };\n var createFromEditor = function (editor) {\n var fragments, content, trimmedFragments;\n fragments = $_cyedqm61jkmcwlh3.read(editor.getBody());\n trimmedFragments = bind(fragments, function (html) {\n var trimmed = $_2varuf5zjkmcwlgq.trimInternal(editor.serializer, html);\n return trimmed.length > 0 ? [trimmed] : [];\n });\n content = trimmedFragments.join('');\n return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content);\n };\n var applyToEditor = function (editor, level, before) {\n if (level.type === 'fragmented') {\n $_cyedqm61jkmcwlh3.write(level.fragments, editor.getBody());\n } else {\n editor.setContent(level.content, { format: 'raw' });\n }\n editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark);\n };\n var getLevelContent = function (level) {\n return level.type === 'fragmented' ? level.fragments.join('') : level.content;\n };\n var getCleanLevelContent = function (level) {\n var elm = Element$$1.fromTag('body', lazyTempDocument());\n $_xg5463jkmcwlhb.set(elm, getLevelContent(level));\n each($_2gqm0n27jkmcwkmi.descendants(elm, '*[data-mce-bogus]'), $_eualm21wjkmcwkku.unwrap);\n return $_xg5463jkmcwlhb.get(elm);\n };\n var hasEqualContent = function (level1, level2) {\n return getLevelContent(level1) === getLevelContent(level2);\n };\n var hasEqualCleanedContent = function (level1, level2) {\n return getCleanLevelContent(level1) === getCleanLevelContent(level2);\n };\n var isEq$3 = function (level1, level2) {\n if (!level1 || !level2) {\n return false;\n } else if (hasEqualContent(level1, level2)) {\n return true;\n } else {\n return hasEqualCleanedContent(level1, level2);\n }\n };\n var $_3cqp0r5yjkmcwlgf = {\n createFragmentedLevel: createFragmentedLevel,\n createCompleteLevel: createCompleteLevel,\n createFromEditor: createFromEditor,\n applyToEditor: applyToEditor,\n isEq: isEq$3\n };\n\n function UndoManager (editor) {\n var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;\n var isUnlocked = function () {\n return locks === 0;\n };\n var setTyping = function (typing) {\n if (isUnlocked()) {\n self.typing = typing;\n }\n };\n var setDirty = function (state) {\n editor.setDirty(state);\n };\n var addNonTypingUndoLevel = function (e) {\n setTyping(false);\n self.add({}, e);\n };\n var endTyping = function () {\n if (self.typing) {\n setTyping(false);\n self.add();\n }\n };\n editor.on('init', function () {\n self.add();\n });\n editor.on('BeforeExecCommand', function (e) {\n var cmd = e.command;\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n endTyping();\n self.beforeChange();\n }\n });\n editor.on('ExecCommand', function (e) {\n var cmd = e.command;\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n addNonTypingUndoLevel(e);\n }\n });\n editor.on('ObjectResizeStart Cut', function () {\n self.beforeChange();\n });\n editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);\n editor.on('DragEnd', addNonTypingUndoLevel);\n editor.on('KeyUp', function (e) {\n var keyCode = e.keyCode;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) {\n addNonTypingUndoLevel();\n editor.nodeChanged();\n }\n if (keyCode === 46 || keyCode === 8) {\n editor.nodeChanged();\n }\n if (isFirstTypedCharacter && self.typing && $_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.createFromEditor(editor), data[0]) === false) {\n if (editor.isDirty() === false) {\n setDirty(true);\n editor.fire('change', {\n level: data[0],\n lastLevel: null\n });\n }\n editor.fire('TypingUndo');\n isFirstTypedCharacter = false;\n editor.nodeChanged();\n }\n });\n editor.on('KeyDown', function (e) {\n var keyCode = e.keyCode;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {\n if (self.typing) {\n addNonTypingUndoLevel(e);\n }\n return;\n }\n var modKey = e.ctrlKey && !e.altKey || e.metaKey;\n if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) {\n self.beforeChange();\n setTyping(true);\n self.add({}, e);\n isFirstTypedCharacter = true;\n }\n });\n editor.on('MouseDown', function (e) {\n if (self.typing) {\n addNonTypingUndoLevel(e);\n }\n });\n var isInsertReplacementText = function (event) {\n return event.inputType === 'insertReplacementText';\n };\n var isInsertTextDataNull = function (event) {\n return event.inputType === 'insertText' && event.data === null;\n };\n editor.on('input', function (e) {\n if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) {\n addNonTypingUndoLevel(e);\n }\n });\n editor.addShortcut('meta+z', '', 'Undo');\n editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');\n editor.on('AddUndo Undo Redo ClearUndos', function (e) {\n if (!e.isDefaultPrevented()) {\n editor.nodeChanged();\n }\n });\n self = {\n data: data,\n typing: false,\n beforeChange: function () {\n if (isUnlocked()) {\n beforeBookmark = $_aw3zi52jjkmcwkoa.getUndoBookmark(editor.selection);\n }\n },\n add: function (level, event) {\n var i;\n var settings = editor.settings;\n var lastLevel, currentLevel;\n currentLevel = $_3cqp0r5yjkmcwlgf.createFromEditor(editor);\n level = level || {};\n level = $_4ujg4tljkmcwkbk.extend(level, currentLevel);\n if (isUnlocked() === false || editor.removed) {\n return null;\n }\n lastLevel = data[index];\n if (editor.fire('BeforeAddUndo', {\n level: level,\n lastLevel: lastLevel,\n originalEvent: event\n }).isDefaultPrevented()) {\n return null;\n }\n if (lastLevel && $_3cqp0r5yjkmcwlgf.isEq(lastLevel, level)) {\n return null;\n }\n if (data[index]) {\n data[index].beforeBookmark = beforeBookmark;\n }\n if (settings.custom_undo_redo_levels) {\n if (data.length > settings.custom_undo_redo_levels) {\n for (i = 0; i < data.length - 1; i++) {\n data[i] = data[i + 1];\n }\n data.length--;\n index = data.length;\n }\n }\n level.bookmark = $_aw3zi52jjkmcwkoa.getUndoBookmark(editor.selection);\n if (index < data.length - 1) {\n data.length = index + 1;\n }\n data.push(level);\n index = data.length - 1;\n var args = {\n level: level,\n lastLevel: lastLevel,\n originalEvent: event\n };\n editor.fire('AddUndo', args);\n if (index > 0) {\n setDirty(true);\n editor.fire('change', args);\n }\n return level;\n },\n undo: function () {\n var level;\n if (self.typing) {\n self.add();\n self.typing = false;\n setTyping(false);\n }\n if (index > 0) {\n level = data[--index];\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, level, true);\n setDirty(true);\n editor.fire('undo', { level: level });\n }\n return level;\n },\n redo: function () {\n var level;\n if (index < data.length - 1) {\n level = data[++index];\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, level, false);\n setDirty(true);\n editor.fire('redo', { level: level });\n }\n return level;\n },\n clear: function () {\n data = [];\n index = 0;\n self.typing = false;\n self.data = data;\n editor.fire('ClearUndos');\n },\n hasUndo: function () {\n return index > 0 || self.typing && data[0] && !$_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.createFromEditor(editor), data[0]);\n },\n hasRedo: function () {\n return index < data.length - 1 && !self.typing;\n },\n transact: function (callback) {\n endTyping();\n self.beforeChange();\n self.ignore(callback);\n return self.add();\n },\n ignore: function (callback) {\n try {\n locks++;\n callback();\n } finally {\n locks--;\n }\n },\n extra: function (callback1, callback2) {\n var lastLevel, bookmark;\n if (self.transact(callback1)) {\n bookmark = data[index].bookmark;\n lastLevel = data[index - 1];\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, lastLevel, true);\n if (self.transact(callback2)) {\n data[index - 1].beforeBookmark = bookmark;\n }\n }\n }\n };\n return self;\n }\n\n var isEq$4 = $_dli08w3ajkmcwktg.isEq;\n var matchesUnInheritedFormatSelector = function (ed, node, name) {\n var formatList = ed.formatter.get(name);\n if (formatList) {\n for (var i = 0; i < formatList.length; i++) {\n if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {\n return true;\n }\n }\n }\n return false;\n };\n var matchParents = function (editor, node, name, vars) {\n var root = editor.dom.getRoot();\n if (node === root) {\n return false;\n }\n node = editor.dom.getParent(node, function (node) {\n if (matchesUnInheritedFormatSelector(editor, node, name)) {\n return true;\n }\n return node.parentNode === root || !!matchNode(editor, node, name, vars, true);\n });\n return matchNode(editor, node, name, vars);\n };\n var matchName = function (dom, node, format) {\n if (isEq$4(node, format.inline)) {\n return true;\n }\n if (isEq$4(node, format.block)) {\n return true;\n }\n if (format.selector) {\n return node.nodeType === 1 && dom.is(node, format.selector);\n }\n };\n var matchItems = function (dom, node, format, itemName, similar, vars) {\n var key, value;\n var items = format[itemName];\n var i;\n if (format.onmatch) {\n return format.onmatch(node, format, itemName);\n }\n if (items) {\n if (typeof items.length === 'undefined') {\n for (key in items) {\n if (items.hasOwnProperty(key)) {\n if (itemName === 'attributes') {\n value = dom.getAttrib(node, key);\n } else {\n value = $_dli08w3ajkmcwktg.getStyle(dom, node, key);\n }\n if (similar && !value && !format.exact) {\n return;\n }\n if ((!similar || format.exact) && !isEq$4(value, $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.replaceVars(items[key], vars), key))) {\n return;\n }\n }\n }\n } else {\n for (i = 0; i < items.length; i++) {\n if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : $_dli08w3ajkmcwktg.getStyle(dom, node, items[i])) {\n return format;\n }\n }\n }\n }\n return format;\n };\n var matchNode = function (ed, node, name, vars, similar) {\n var formatList = ed.formatter.get(name);\n var format, i, x, classes;\n var dom = ed.dom;\n if (formatList && node) {\n for (i = 0; i < formatList.length; i++) {\n format = formatList[i];\n if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {\n if (classes = format.classes) {\n for (x = 0; x < classes.length; x++) {\n if (!ed.dom.hasClass(node, classes[x])) {\n return;\n }\n }\n }\n return format;\n }\n }\n }\n };\n var match = function (editor, name, vars, node) {\n var startNode;\n if (node) {\n return matchParents(editor, node, name, vars);\n }\n node = editor.selection.getNode();\n if (matchParents(editor, node, name, vars)) {\n return true;\n }\n startNode = editor.selection.getStart();\n if (startNode !== node) {\n if (matchParents(editor, startNode, name, vars)) {\n return true;\n }\n }\n return false;\n };\n var matchAll = function (editor, names, vars) {\n var startElement;\n var matchedFormatNames = [];\n var checkedMap = {};\n startElement = editor.selection.getStart();\n editor.dom.getParent(startElement, function (node) {\n var i, name;\n for (i = 0; i < names.length; i++) {\n name = names[i];\n if (!checkedMap[name] && matchNode(editor, node, name, vars)) {\n checkedMap[name] = true;\n matchedFormatNames.push(name);\n }\n }\n }, editor.dom.getRoot());\n return matchedFormatNames;\n };\n var canApply = function (editor, name) {\n var formatList = editor.formatter.get(name);\n var startNode, parents, i, x, selector;\n var dom = editor.dom;\n if (formatList) {\n startNode = editor.selection.getStart();\n parents = $_dli08w3ajkmcwktg.getParents(dom, startNode);\n for (x = formatList.length - 1; x >= 0; x--) {\n selector = formatList[x].selector;\n if (!selector || formatList[x].defaultBlock) {\n return true;\n }\n for (i = parents.length - 1; i >= 0; i--) {\n if (dom.is(parents[i], selector)) {\n return true;\n }\n }\n }\n }\n return false;\n };\n var $_axwnk168jkmcwlim = {\n matchNode: matchNode,\n matchName: matchName,\n match: match,\n matchAll: matchAll,\n canApply: canApply,\n matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector\n };\n\n var splitText = function (node, offset) {\n return node.splitText(offset);\n };\n var split$1 = function (rng) {\n var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n if (startContainer === endContainer && $_bjermr1rjkmcwkij.isText(startContainer)) {\n if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n endContainer = splitText(startContainer, startOffset);\n startContainer = endContainer.previousSibling;\n if (endOffset > startOffset) {\n endOffset = endOffset - startOffset;\n startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;\n endOffset = endContainer.nodeValue.length;\n startOffset = 0;\n } else {\n endOffset = 0;\n }\n }\n } else {\n if ($_bjermr1rjkmcwkij.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n startContainer = splitText(startContainer, startOffset);\n startOffset = 0;\n }\n if ($_bjermr1rjkmcwkij.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {\n endContainer = splitText(endContainer, endOffset).previousSibling;\n endOffset = endContainer.nodeValue.length;\n }\n }\n return {\n startContainer: startContainer,\n startOffset: startOffset,\n endContainer: endContainer,\n endOffset: endOffset\n };\n };\n var $_bnmynr69jkmcwlir = { split: split$1 };\n\n var ZWSP$1 = $_cadvcr2pjkmcwkph.ZWSP;\n var CARET_ID$1 = '_mce_caret';\n var importNode = function (ownerDocument, node) {\n return ownerDocument.importNode(node, true);\n };\n var getEmptyCaretContainers = function (node) {\n var nodes = [];\n while (node) {\n if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {\n return [];\n }\n if (node.nodeType === 1) {\n nodes.push(node);\n }\n node = node.firstChild;\n }\n return nodes;\n };\n var isCaretContainerEmpty = function (node) {\n return getEmptyCaretContainers(node).length > 0;\n };\n var findFirstTextNode = function (node) {\n var walker;\n if (node) {\n walker = new TreeWalker(node, node);\n for (node = walker.current(); node; node = walker.next()) {\n if (node.nodeType === 3) {\n return node;\n }\n }\n }\n return null;\n };\n var createCaretContainer = function (fill) {\n var caretContainer = Element$$1.fromTag('span');\n $_29helg15jkmcwkf0.setAll(caretContainer, {\n 'id': CARET_ID$1,\n 'data-mce-bogus': '1',\n 'data-mce-type': 'format-caret'\n });\n if (fill) {\n $_f4qt4v1yjkmcwkl2.append(caretContainer, Element$$1.fromText(ZWSP$1));\n }\n return caretContainer;\n };\n var trimZwspFromCaretContainer = function (caretContainerNode) {\n var textNode = findFirstTextNode(caretContainerNode);\n if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {\n textNode.deleteData(0, 1);\n }\n return textNode;\n };\n var removeCaretContainerNode = function (dom, selection, node, moveCaret) {\n var rng, block, textNode;\n rng = selection.getRng(true);\n block = dom.getParent(node, dom.isBlock);\n if (isCaretContainerEmpty(node)) {\n if (moveCaret !== false) {\n rng.setStartBefore(node);\n rng.setEndBefore(node);\n }\n dom.remove(node);\n } else {\n textNode = trimZwspFromCaretContainer(node);\n if (rng.startContainer === textNode && rng.startOffset > 0) {\n rng.setStart(textNode, rng.startOffset - 1);\n }\n if (rng.endContainer === textNode && rng.endOffset > 0) {\n rng.setEnd(textNode, rng.endOffset - 1);\n }\n dom.remove(node, true);\n }\n if (block && dom.isEmpty(block)) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(Element$$1.fromDom(block));\n }\n selection.setRng(rng);\n };\n var removeCaretContainer = function (body, dom, selection, node, moveCaret) {\n if (!node) {\n node = getParentCaretContainer(body, selection.getStart());\n if (!node) {\n while (node = dom.get(CARET_ID$1)) {\n removeCaretContainerNode(dom, selection, node, false);\n }\n }\n } else {\n removeCaretContainerNode(dom, selection, node, moveCaret);\n }\n };\n var insertCaretContainerNode = function (editor, caretContainer, formatNode) {\n var dom = editor.dom, block = dom.getParent(formatNode, $_fl2rax2ljkmcwkot.curry($_dli08w3ajkmcwktg.isTextBlock, editor));\n if (block && dom.isEmpty(block)) {\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\n } else {\n $_zygeg3ljkmcwkvo.removeTrailingBr(Element$$1.fromDom(formatNode));\n if (dom.isEmpty(formatNode)) {\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\n } else {\n dom.insertAfter(caretContainer, formatNode);\n }\n }\n };\n var appendNode = function (parentNode, node) {\n parentNode.appendChild(node);\n return node;\n };\n var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {\n var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {\n return appendNode(parentNode, formatNode.cloneNode(false));\n }, caretContainer);\n return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));\n };\n var applyCaretFormat = function (editor, name, vars) {\n var rng, caretContainer, textNode, offset, bookmark, container, text;\n var selection = editor.selection;\n rng = selection.getRng(true);\n offset = rng.startOffset;\n container = rng.startContainer;\n text = container.nodeValue;\n caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());\n if (caretContainer) {\n textNode = findFirstTextNode(caretContainer);\n }\n var wordcharRegex = /[^\\s\\u00a0\\u00ad\\u200b\\ufeff]/;\n if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {\n bookmark = selection.getBookmark();\n rng.collapse(true);\n rng = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name));\n rng = $_bnmynr69jkmcwlir.split(rng);\n editor.formatter.apply(name, vars, rng);\n selection.moveToBookmark(bookmark);\n } else {\n if (!caretContainer || textNode.nodeValue !== ZWSP$1) {\n caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());\n textNode = caretContainer.firstChild;\n rng.insertNode(caretContainer);\n offset = 1;\n editor.formatter.apply(name, vars, caretContainer);\n } else {\n editor.formatter.apply(name, vars, caretContainer);\n }\n selection.setCursorLocation(textNode, offset);\n }\n };\n var removeCaretFormat = function (editor, name, vars, similar) {\n var dom = editor.dom, selection = editor.selection;\n var container, offset, bookmark;\n var hasContentAfter, node, formatNode;\n var parents = [], rng = selection.getRng();\n var caretContainer;\n container = rng.startContainer;\n offset = rng.startOffset;\n node = container;\n if (container.nodeType === 3) {\n if (offset !== container.nodeValue.length) {\n hasContentAfter = true;\n }\n node = node.parentNode;\n }\n while (node) {\n if ($_axwnk168jkmcwlim.matchNode(editor, node, name, vars, similar)) {\n formatNode = node;\n break;\n }\n if (node.nextSibling) {\n hasContentAfter = true;\n }\n parents.push(node);\n node = node.parentNode;\n }\n if (!formatNode) {\n return;\n }\n if (hasContentAfter) {\n bookmark = selection.getBookmark();\n rng.collapse(true);\n var expandedRng = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name), true);\n expandedRng = $_bnmynr69jkmcwlir.split(expandedRng);\n editor.formatter.remove(name, vars, expandedRng);\n selection.moveToBookmark(bookmark);\n } else {\n caretContainer = getParentCaretContainer(editor.getBody(), formatNode);\n var newCaretContainer = createCaretContainer(false).dom();\n var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);\n if (caretContainer) {\n insertCaretContainerNode(editor, newCaretContainer, caretContainer);\n } else {\n insertCaretContainerNode(editor, newCaretContainer, formatNode);\n }\n removeCaretContainerNode(dom, selection, caretContainer, false);\n selection.setCursorLocation(caretNode, 1);\n if (dom.isEmpty(formatNode)) {\n dom.remove(formatNode);\n }\n }\n };\n var disableCaretContainer = function (body, dom, selection, keyCode) {\n removeCaretContainer(body, dom, selection, null, false);\n if (keyCode === 8 && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\n }\n if (keyCode === 37 || keyCode === 39) {\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\n }\n };\n var setup$4 = function (editor) {\n var dom = editor.dom, selection = editor.selection;\n var body = editor.getBody();\n editor.on('mouseup keydown', function (e) {\n disableCaretContainer(body, dom, selection, e.keyCode);\n });\n };\n var replaceWithCaretFormat = function (targetNode, formatNodes) {\n var caretContainer = createCaretContainer(false);\n var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(targetNode), caretContainer);\n $_eualm21wjkmcwkku.remove(Element$$1.fromDom(targetNode));\n return CaretPosition$1(innerMost, 0);\n };\n var isFormatElement = function (editor, element) {\n var inlineElements = editor.schema.getTextInlineElements();\n return inlineElements.hasOwnProperty($_2xwdjv11jkmcwke0.name(element)) && !isCaretNode(element.dom()) && !$_bjermr1rjkmcwkij.isBogus(element.dom());\n };\n\n var postProcessHooks = {};\n var filter$2 = $_9g1fibmjkmcwkbu.filter;\n var each$12 = $_9g1fibmjkmcwkbu.each;\n var addPostProcessHook = function (name, hook) {\n var hooks = postProcessHooks[name];\n if (!hooks) {\n postProcessHooks[name] = hooks = [];\n }\n postProcessHooks[name].push(hook);\n };\n var postProcess = function (name, editor) {\n each$12(postProcessHooks[name], function (hook) {\n hook(editor);\n });\n };\n addPostProcessHook('pre', function (editor) {\n var rng = editor.selection.getRng();\n var isPre, blocks;\n var hasPreSibling = function (pre) {\n return isPre(pre.previousSibling) && $_9g1fibmjkmcwkbu.indexOf(blocks, pre.previousSibling) !== -1;\n };\n var joinPre = function (pre1, pre2) {\n DomQuery(pre2).remove();\n DomQuery(pre1).append('

').append(pre2.childNodes);\n };\n isPre = $_bjermr1rjkmcwkij.matchNodeNames('pre');\n if (!rng.collapsed) {\n blocks = editor.selection.getSelectedBlocks();\n each$12(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) {\n joinPre(pre.previousSibling, pre);\n });\n }\n });\n var $_dp9y746ajkmcwlit = { postProcess: postProcess };\n\n var MCE_ATTR_RE = /^(src|href|style)$/;\n var each$13 = $_4ujg4tljkmcwkbk.each;\n var isEq$5 = $_dli08w3ajkmcwktg.isEq;\n var isTableCell$4 = function (node) {\n return /^(TH|TD)$/.test(node.nodeName);\n };\n var getContainer = function (ed, rng, start) {\n var container, offset, lastIdx;\n container = rng[start ? 'startContainer' : 'endContainer'];\n offset = rng[start ? 'startOffset' : 'endOffset'];\n if ($_bjermr1rjkmcwkij.isElement(container)) {\n lastIdx = container.childNodes.length - 1;\n if (!start && offset) {\n offset--;\n }\n container = container.childNodes[offset > lastIdx ? lastIdx : offset];\n }\n if ($_bjermr1rjkmcwkij.isText(container) && start && offset >= container.nodeValue.length) {\n container = new TreeWalker(container, ed.getBody()).next() || container;\n }\n if ($_bjermr1rjkmcwkij.isText(container) && !start && offset === 0) {\n container = new TreeWalker(container, ed.getBody()).prev() || container;\n }\n return container;\n };\n var wrap$2 = function (dom, node, name, attrs) {\n var wrapper = dom.create(name, attrs);\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n return wrapper;\n };\n var matchName$1 = function (dom, node, format) {\n if (isEq$5(node, format.inline)) {\n return true;\n }\n if (isEq$5(node, format.block)) {\n return true;\n }\n if (format.selector) {\n return $_bjermr1rjkmcwkij.isElement(node) && dom.is(node, format.selector);\n }\n };\n var isColorFormatAndAnchor = function (node, format) {\n return format.links && node.tagName === 'A';\n };\n var find$4 = function (dom, node, next, inc) {\n node = $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node, next, inc);\n return !node || (node.nodeName === 'BR' || dom.isBlock(node));\n };\n var removeNode$1 = function (ed, node, format) {\n var parentNode = node.parentNode;\n var rootBlockElm;\n var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block;\n if (format.block) {\n if (!forcedRootBlock) {\n if (dom.isBlock(node) && !dom.isBlock(parentNode)) {\n if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) {\n node.insertBefore(dom.create('br'), node.firstChild);\n }\n if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) {\n node.appendChild(dom.create('br'));\n }\n }\n } else {\n if (parentNode === dom.getRoot()) {\n if (!format.list_block || !isEq$5(node, format.list_block)) {\n each$13($_4ujg4tljkmcwkbk.grep(node.childNodes), function (node) {\n if ($_dli08w3ajkmcwktg.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {\n if (!rootBlockElm) {\n rootBlockElm = wrap$2(dom, node, forcedRootBlock);\n dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);\n } else {\n rootBlockElm.appendChild(node);\n }\n } else {\n rootBlockElm = 0;\n }\n });\n }\n }\n }\n }\n if (format.selector && format.inline && !isEq$5(format.inline, node)) {\n return;\n }\n dom.remove(node, 1);\n };\n var removeFormat = function (ed, format, vars, node, compareNode) {\n var i, attrs, stylesModified;\n var dom = ed.dom;\n if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) {\n return false;\n }\n if (format.remove !== 'all') {\n each$13(format.styles, function (value, name) {\n value = $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.replaceVars(value, vars), name);\n if (typeof name === 'number') {\n name = value;\n compareNode = 0;\n }\n if (format.remove_similar || (!compareNode || isEq$5($_dli08w3ajkmcwktg.getStyle(dom, compareNode, name), value))) {\n dom.setStyle(node, name, '');\n }\n stylesModified = 1;\n });\n if (stylesModified && dom.getAttrib(node, 'style') === '') {\n node.removeAttribute('style');\n node.removeAttribute('data-mce-style');\n }\n each$13(format.attributes, function (value, name) {\n var valueOut;\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\n if (typeof name === 'number') {\n name = value;\n compareNode = 0;\n }\n if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) {\n if (name === 'class') {\n value = dom.getAttrib(node, name);\n if (value) {\n valueOut = '';\n each$13(value.split(/\\s+/), function (cls) {\n if (/mce\\-\\w+/.test(cls)) {\n valueOut += (valueOut ? ' ' : '') + cls;\n }\n });\n if (valueOut) {\n dom.setAttrib(node, name, valueOut);\n return;\n }\n }\n }\n if (name === 'class') {\n node.removeAttribute('className');\n }\n if (MCE_ATTR_RE.test(name)) {\n node.removeAttribute('data-mce-' + name);\n }\n node.removeAttribute(name);\n }\n });\n each$13(format.classes, function (value) {\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\n if (!compareNode || dom.hasClass(compareNode, value)) {\n dom.removeClass(node, value);\n }\n });\n attrs = dom.getAttribs(node);\n for (i = 0; i < attrs.length; i++) {\n var attrName = attrs[i].nodeName;\n if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) {\n return false;\n }\n }\n }\n if (format.remove !== 'none') {\n removeNode$1(ed, node, format);\n return true;\n }\n };\n var findFormatRoot = function (editor, container, name, vars, similar) {\n var formatRoot;\n each$13($_dli08w3ajkmcwktg.getParents(editor.dom, container.parentNode).reverse(), function (parent) {\n var format;\n if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') {\n format = $_axwnk168jkmcwlim.matchNode(editor, parent, name, vars, similar);\n if (format && format.split !== false) {\n formatRoot = parent;\n }\n }\n });\n return formatRoot;\n };\n var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {\n var parent, clone, lastClone, firstClone, i, formatRootParent;\n var dom = editor.dom;\n if (formatRoot) {\n formatRootParent = formatRoot.parentNode;\n for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {\n clone = dom.clone(parent, false);\n for (i = 0; i < formatList.length; i++) {\n if (removeFormat(editor, formatList[i], vars, clone, clone)) {\n clone = 0;\n break;\n }\n }\n if (clone) {\n if (lastClone) {\n clone.appendChild(lastClone);\n }\n if (!firstClone) {\n firstClone = clone;\n }\n lastClone = clone;\n }\n }\n if (split && (!format.mixed || !dom.isBlock(formatRoot))) {\n container = dom.split(formatRoot, container);\n }\n if (lastClone) {\n target.parentNode.insertBefore(lastClone, target);\n firstClone.appendChild(target);\n }\n }\n return container;\n };\n var remove$8 = function (ed, name, vars, node, similar) {\n var formatList = ed.formatter.get(name), format = formatList[0];\n var bookmark, rng, contentEditable = true;\n var dom = ed.dom;\n var selection = ed.selection;\n var splitToFormatRoot = function (container) {\n var formatRoot = findFormatRoot(ed, container, name, vars, similar);\n return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);\n };\n var process = function (node) {\n var children, i, l, lastContentEditable, hasContentEditableState;\n if ($_bjermr1rjkmcwkij.isElement(node) && dom.getContentEditable(node)) {\n lastContentEditable = contentEditable;\n contentEditable = dom.getContentEditable(node) === 'true';\n hasContentEditableState = true;\n }\n children = $_4ujg4tljkmcwkbk.grep(node.childNodes);\n if (contentEditable && !hasContentEditableState) {\n for (i = 0, l = formatList.length; i < l; i++) {\n if (removeFormat(ed, formatList[i], vars, node, node)) {\n break;\n }\n }\n }\n if (format.deep) {\n if (children.length) {\n for (i = 0, l = children.length; i < l; i++) {\n process(children[i]);\n }\n if (hasContentEditableState) {\n contentEditable = lastContentEditable;\n }\n }\n }\n };\n var unwrap = function (start) {\n var node = dom.get(start ? '_start' : '_end');\n var out = node[start ? 'firstChild' : 'lastChild'];\n if ($_e4btcc2vjkmcwkq3.isBookmarkNode(out)) {\n out = out[start ? 'firstChild' : 'lastChild'];\n }\n if ($_bjermr1rjkmcwkij.isText(out) && out.data.length === 0) {\n out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;\n }\n dom.remove(node, true);\n return out;\n };\n var removeRngStyle = function (rng) {\n var startContainer, endContainer;\n var commonAncestorContainer = rng.commonAncestorContainer;\n rng = $_97afwh2ujkmcwkpw.expandRng(ed, rng, formatList, true);\n if (format.split) {\n startContainer = getContainer(ed, rng, true);\n endContainer = getContainer(ed, rng);\n if (startContainer !== endContainer) {\n if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {\n if (startContainer.nodeName === 'TR') {\n startContainer = startContainer.firstChild.firstChild || startContainer;\n } else {\n startContainer = startContainer.firstChild || startContainer;\n }\n }\n if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) {\n endContainer = endContainer.firstChild || endContainer;\n }\n if (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) {\n startContainer = wrap$2(dom, startContainer, 'span', {\n 'id': '_start',\n 'data-mce-type': 'bookmark'\n });\n splitToFormatRoot(startContainer);\n startContainer = unwrap(true);\n return;\n }\n startContainer = wrap$2(dom, startContainer, 'span', {\n 'id': '_start',\n 'data-mce-type': 'bookmark'\n });\n endContainer = wrap$2(dom, endContainer, 'span', {\n 'id': '_end',\n 'data-mce-type': 'bookmark'\n });\n splitToFormatRoot(startContainer);\n splitToFormatRoot(endContainer);\n startContainer = unwrap(true);\n endContainer = unwrap();\n } else {\n startContainer = endContainer = splitToFormatRoot(startContainer);\n }\n rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;\n rng.startOffset = dom.nodeIndex(startContainer);\n rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;\n rng.endOffset = dom.nodeIndex(endContainer) + 1;\n }\n $_cuckrv3bjkmcwktk.walk(dom, rng, function (nodes) {\n each$13(nodes, function (node) {\n process(node);\n if ($_bjermr1rjkmcwkij.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && $_dli08w3ajkmcwktg.getTextDecoration(dom, node.parentNode) === 'underline') {\n removeFormat(ed, {\n deep: false,\n exact: true,\n inline: 'span',\n styles: { textDecoration: 'underline' }\n }, null, node);\n }\n });\n });\n };\n if (node) {\n if (node.nodeType) {\n rng = dom.createRng();\n rng.setStartBefore(node);\n rng.setEndAfter(node);\n removeRngStyle(rng);\n } else {\n removeRngStyle(node);\n }\n return;\n }\n if (dom.getContentEditable(selection.getNode()) === 'false') {\n node = selection.getNode();\n for (var i = 0, l = formatList.length; i < l; i++) {\n if (formatList[i].ceFalseOverride) {\n if (removeFormat(ed, formatList[i], vars, node, node)) {\n break;\n }\n }\n }\n return;\n }\n if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\n removeRngStyle(selection.getRng());\n selection.moveToBookmark(bookmark);\n if (format.inline && $_axwnk168jkmcwlim.match(ed, name, vars, selection.getStart())) {\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\n }\n ed.nodeChanged();\n } else {\n removeCaretFormat(ed, name, vars, similar);\n }\n };\n var $_2vklhc6cjkmcwlj5 = {\n removeFormat: removeFormat,\n remove: remove$8\n };\n\n var each$14 = $_4ujg4tljkmcwkbk.each;\n var isElementNode = function (node) {\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.isBogus(node);\n };\n var findElementSibling = function (node, siblingName) {\n var sibling;\n for (sibling = node; sibling; sibling = sibling[siblingName]) {\n if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) {\n return node;\n }\n if (sibling.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(sibling)) {\n return sibling;\n }\n }\n return node;\n };\n var mergeSiblingsNodes = function (dom, prev, next) {\n var sibling, tmpSibling;\n var elementUtils = new ElementUtils(dom);\n if (prev && next) {\n prev = findElementSibling(prev, 'previousSibling');\n next = findElementSibling(next, 'nextSibling');\n if (elementUtils.compare(prev, next)) {\n for (sibling = prev.nextSibling; sibling && sibling !== next;) {\n tmpSibling = sibling;\n sibling = sibling.nextSibling;\n prev.appendChild(tmpSibling);\n }\n dom.remove(next);\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.grep(next.childNodes), function (node) {\n prev.appendChild(node);\n });\n return prev;\n }\n }\n return next;\n };\n var processChildElements = function (node, filter, process) {\n each$14(node.childNodes, function (node) {\n if (isElementNode(node)) {\n if (filter(node)) {\n process(node);\n }\n if (node.hasChildNodes()) {\n processChildElements(node, filter, process);\n }\n }\n });\n };\n var hasStyle = function (dom, name) {\n return curry(function (name, node) {\n return !!(node && $_dli08w3ajkmcwktg.getStyle(dom, node, name));\n }, name);\n };\n var applyStyle = function (dom, name, value) {\n return curry(function (name, value, node) {\n dom.setStyle(node, name, value);\n if (node.getAttribute('style') === '') {\n node.removeAttribute('style');\n }\n unwrapEmptySpan(dom, node);\n }, name, value);\n };\n var unwrapEmptySpan = function (dom, node) {\n if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {\n dom.remove(node, true);\n }\n };\n var processUnderlineAndColor = function (dom, node) {\n var textDecoration;\n if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {\n textDecoration = $_dli08w3ajkmcwktg.getTextDecoration(dom, node.parentNode);\n if (dom.getStyle(node, 'color') && textDecoration) {\n dom.setStyle(node, 'text-decoration', textDecoration);\n } else if (dom.getStyle(node, 'text-decoration') === textDecoration) {\n dom.setStyle(node, 'text-decoration', null);\n }\n }\n };\n var mergeUnderlineAndColor = function (dom, format, vars, node) {\n if (format.styles.color || format.styles.textDecoration) {\n $_4ujg4tljkmcwkbk.walk(node, curry(processUnderlineAndColor, dom), 'childNodes');\n processUnderlineAndColor(dom, node);\n }\n };\n var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) {\n if (format.styles && format.styles.backgroundColor) {\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', $_dli08w3ajkmcwktg.replaceVars(format.styles.backgroundColor, vars)));\n }\n };\n var mergeSubSup = function (dom, format, vars, node) {\n if (format.inline === 'sub' || format.inline === 'sup') {\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', ''));\n dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true);\n }\n };\n var mergeSiblings = function (dom, format, vars, node) {\n if (node && format.merge_siblings !== false) {\n node = mergeSiblingsNodes(dom, $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node), node);\n node = mergeSiblingsNodes(dom, node, $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node, true));\n }\n };\n var clearChildStyles = function (dom, format, node) {\n if (format.clear_child_styles) {\n var selector = format.links ? '*:not(a)' : '*';\n each$14(dom.select(selector, node), function (node) {\n if (isElementNode(node)) {\n each$14(format.styles, function (value, name) {\n dom.setStyle(node, name, '');\n });\n }\n });\n }\n };\n var mergeWithChildren = function (editor, formatList, vars, node) {\n each$14(formatList, function (format) {\n each$14(editor.dom.select(format.inline, node), function (child) {\n if (!isElementNode(child)) {\n return;\n }\n $_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, child, format.exact ? child : null);\n });\n clearChildStyles(editor.dom, format, node);\n });\n };\n var mergeWithParents = function (editor, format, name, vars, node) {\n if ($_axwnk168jkmcwlim.matchNode(editor, node.parentNode, name, vars)) {\n if ($_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, node)) {\n return;\n }\n }\n if (format.merge_with_parents) {\n editor.dom.getParent(node.parentNode, function (parent) {\n if ($_axwnk168jkmcwlim.matchNode(editor, parent, name, vars)) {\n $_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, node);\n return true;\n }\n });\n }\n };\n var $_ehzows6bjkmcwliw = {\n mergeWithChildren: mergeWithChildren,\n mergeUnderlineAndColor: mergeUnderlineAndColor,\n mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize,\n mergeSubSup: mergeSubSup,\n mergeSiblings: mergeSiblings,\n mergeWithParents: mergeWithParents\n };\n\n var each$15 = $_4ujg4tljkmcwkbk.each;\n var isElementNode$1 = function (node) {\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.isBogus(node);\n };\n var applyFormat = function (ed, name, vars, node) {\n var formatList = ed.formatter.get(name);\n var format = formatList[0];\n var bookmark, rng;\n var isCollapsed = !node && ed.selection.isCollapsed();\n var dom = ed.dom, selection = ed.selection;\n var setElementFormat = function (elm, fmt) {\n fmt = fmt || format;\n if (elm) {\n if (fmt.onformat) {\n fmt.onformat(elm, fmt, vars, node);\n }\n each$15(fmt.styles, function (value, name) {\n dom.setStyle(elm, name, $_dli08w3ajkmcwktg.replaceVars(value, vars));\n });\n if (fmt.styles) {\n var styleVal = dom.getAttrib(elm, 'style');\n if (styleVal) {\n elm.setAttribute('data-mce-style', styleVal);\n }\n }\n each$15(fmt.attributes, function (value, name) {\n dom.setAttrib(elm, name, $_dli08w3ajkmcwktg.replaceVars(value, vars));\n });\n each$15(fmt.classes, function (value) {\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\n if (!dom.hasClass(elm, value)) {\n dom.addClass(elm, value);\n }\n });\n }\n };\n var applyNodeStyle = function (formatList, node) {\n var found = false;\n if (!format.selector) {\n return false;\n }\n each$15(formatList, function (format) {\n if ('collapsed' in format && format.collapsed !== isCollapsed) {\n return;\n }\n if (dom.is(node, format.selector) && !isCaretNode(node)) {\n setElementFormat(node, format);\n found = true;\n return false;\n }\n });\n return found;\n };\n var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) {\n var newWrappers = [];\n var wrapName, wrapElm, contentEditable = true;\n wrapName = format.inline || format.block;\n wrapElm = dom.create(wrapName);\n setElementFormat(wrapElm);\n $_cuckrv3bjkmcwktk.walk(dom, rng, function (nodes) {\n var currentWrapElm;\n var process = function (node) {\n var nodeName, parentName, hasContentEditableState, lastContentEditable;\n lastContentEditable = contentEditable;\n nodeName = node.nodeName.toLowerCase();\n parentName = node.parentNode.nodeName.toLowerCase();\n if (node.nodeType === 1 && dom.getContentEditable(node)) {\n lastContentEditable = contentEditable;\n contentEditable = dom.getContentEditable(node) === 'true';\n hasContentEditableState = true;\n }\n if ($_dli08w3ajkmcwktg.isEq(nodeName, 'br')) {\n currentWrapElm = 0;\n if (format.block) {\n dom.remove(node);\n }\n return;\n }\n if (format.wrapper && $_axwnk168jkmcwlim.matchNode(ed, node, name, vars)) {\n currentWrapElm = 0;\n return;\n }\n if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && $_dli08w3ajkmcwktg.isTextBlock(ed, nodeName) && $_dli08w3ajkmcwktg.isValid(ed, parentName, wrapName)) {\n node = dom.rename(node, wrapName);\n setElementFormat(node);\n newWrappers.push(node);\n currentWrapElm = 0;\n return;\n }\n if (format.selector) {\n var found = applyNodeStyle(formatList, node);\n if (!format.inline || found) {\n currentWrapElm = 0;\n return;\n }\n }\n if (contentEditable && !hasContentEditableState && $_dli08w3ajkmcwktg.isValid(ed, wrapName, nodeName) && $_dli08w3ajkmcwktg.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !dom.isBlock(node))) {\n if (!currentWrapElm) {\n currentWrapElm = dom.clone(wrapElm, false);\n node.parentNode.insertBefore(currentWrapElm, node);\n newWrappers.push(currentWrapElm);\n }\n currentWrapElm.appendChild(node);\n } else {\n currentWrapElm = 0;\n each$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\n if (hasContentEditableState) {\n contentEditable = lastContentEditable;\n }\n currentWrapElm = 0;\n }\n };\n each$15(nodes, process);\n });\n if (format.links === true) {\n each$15(newWrappers, function (node) {\n var process = function (node) {\n if (node.nodeName === 'A') {\n setElementFormat(node, format);\n }\n each$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\n };\n process(node);\n });\n }\n each$15(newWrappers, function (node) {\n var childCount;\n var getChildCount = function (node) {\n var count = 0;\n each$15(node.childNodes, function (node) {\n if (!$_dli08w3ajkmcwktg.isWhiteSpaceNode(node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node)) {\n count++;\n }\n });\n return count;\n };\n var getChildElementNode = function (root) {\n var child = false;\n each$15(root.childNodes, function (node) {\n if (isElementNode$1(node)) {\n child = node;\n return false;\n }\n });\n return child;\n };\n var mergeStyles = function (node) {\n var child, clone;\n child = getChildElementNode(node);\n if (child && !$_e4btcc2vjkmcwkq3.isBookmarkNode(child) && $_axwnk168jkmcwlim.matchName(dom, child, format)) {\n clone = dom.clone(child, false);\n setElementFormat(clone);\n dom.replace(clone, node, true);\n dom.remove(child, 1);\n }\n return clone || node;\n };\n childCount = getChildCount(node);\n if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {\n dom.remove(node, 1);\n return;\n }\n if (format.inline || format.wrapper) {\n if (!format.exact && childCount === 1) {\n node = mergeStyles(node);\n }\n $_ehzows6bjkmcwliw.mergeWithChildren(ed, formatList, vars, node);\n $_ehzows6bjkmcwliw.mergeWithParents(ed, format, name, vars, node);\n $_ehzows6bjkmcwliw.mergeBackgroundColorAndFontSize(dom, format, vars, node);\n $_ehzows6bjkmcwliw.mergeSubSup(dom, format, vars, node);\n $_ehzows6bjkmcwliw.mergeSiblings(dom, format, vars, node);\n }\n });\n };\n if (dom.getContentEditable(selection.getNode()) === 'false') {\n node = selection.getNode();\n for (var i = 0, l = formatList.length; i < l; i++) {\n if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) {\n setElementFormat(node, formatList[i]);\n return;\n }\n }\n return;\n }\n if (format) {\n if (node) {\n if (node.nodeType) {\n if (!applyNodeStyle(formatList, node)) {\n rng = dom.createRng();\n rng.setStartBefore(node);\n rng.setEndAfter(node);\n applyRngStyle(dom, $_97afwh2ujkmcwkpw.expandRng(ed, rng, formatList), null, true);\n }\n } else {\n applyRngStyle(dom, node, null, true);\n }\n } else {\n if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n var curSelNode = ed.selection.getNode();\n if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {\n applyFormat(ed, formatList[0].defaultBlock);\n }\n ed.selection.setRng($_bx30le3ojkmcwkw9.normalize(ed.selection.getRng()));\n bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\n applyRngStyle(dom, $_97afwh2ujkmcwkpw.expandRng(ed, selection.getRng(), formatList), bookmark);\n if (format.styles) {\n $_ehzows6bjkmcwliw.mergeUnderlineAndColor(dom, format, vars, curSelNode);\n }\n selection.moveToBookmark(bookmark);\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\n ed.nodeChanged();\n } else {\n applyCaretFormat(ed, name, vars);\n }\n }\n $_dp9y746ajkmcwlit.postProcess(name, ed);\n }\n };\n var $_bcenmc66jkmcwlhp = { applyFormat: applyFormat };\n\n var each$16 = $_4ujg4tljkmcwkbk.each;\n var setup$5 = function (formatChangeData, editor) {\n var currentFormats = {};\n formatChangeData.set({});\n editor.on('NodeChange', function (e) {\n var parents = $_dli08w3ajkmcwktg.getParents(editor.dom, e.element);\n var matchedFormats = {};\n parents = $_4ujg4tljkmcwkbk.grep(parents, function (node) {\n return node.nodeType === 1 && !node.getAttribute('data-mce-bogus');\n });\n each$16(formatChangeData.get(), function (callbacks, format) {\n each$16(parents, function (node) {\n if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) {\n if (!currentFormats[format]) {\n each$16(callbacks, function (callback) {\n callback(true, {\n node: node,\n format: format,\n parents: parents\n });\n });\n currentFormats[format] = callbacks;\n }\n matchedFormats[format] = callbacks;\n return false;\n }\n if ($_axwnk168jkmcwlim.matchesUnInheritedFormatSelector(editor, node, format)) {\n return false;\n }\n });\n });\n each$16(currentFormats, function (callbacks, format) {\n if (!matchedFormats[format]) {\n delete currentFormats[format];\n each$16(callbacks, function (callback) {\n callback(false, {\n node: e.element,\n format: format,\n parents: parents\n });\n });\n }\n });\n });\n };\n var addListeners = function (formatChangeData, formats, callback, similar) {\n var formatChangeItems = formatChangeData.get();\n each$16(formats.split(','), function (format) {\n if (!formatChangeItems[format]) {\n formatChangeItems[format] = [];\n formatChangeItems[format].similar = similar;\n }\n formatChangeItems[format].push(callback);\n });\n formatChangeData.set(formatChangeItems);\n };\n var formatChanged = function (editor, formatChangeState, formats, callback, similar) {\n if (formatChangeState.get() === null) {\n setup$5(formatChangeState, editor);\n }\n addListeners(formatChangeState, formats, callback, similar);\n };\n var $_5j3j9s6djkmcwljg = { formatChanged: formatChanged };\n\n var get$7 = function (dom) {\n var formats = {\n valigntop: [{\n selector: 'td,th',\n styles: { verticalAlign: 'top' }\n }],\n valignmiddle: [{\n selector: 'td,th',\n styles: { verticalAlign: 'middle' }\n }],\n valignbottom: [{\n selector: 'td,th',\n styles: { verticalAlign: 'bottom' }\n }],\n alignleft: [\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-left',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'left' },\n inherit: false,\n preview: false,\n defaultBlock: 'div'\n },\n {\n selector: 'img,table',\n collapsed: false,\n styles: { float: 'left' },\n preview: 'font-family font-size'\n }\n ],\n aligncenter: [\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'center' },\n inherit: false,\n preview: 'font-family font-size',\n defaultBlock: 'div'\n },\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-center',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'img',\n collapsed: false,\n styles: {\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto'\n },\n preview: false\n },\n {\n selector: 'table',\n collapsed: false,\n styles: {\n marginLeft: 'auto',\n marginRight: 'auto'\n },\n preview: 'font-family font-size'\n }\n ],\n alignright: [\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-right',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'right' },\n inherit: false,\n preview: 'font-family font-size',\n defaultBlock: 'div'\n },\n {\n selector: 'img,table',\n collapsed: false,\n styles: { float: 'right' },\n preview: 'font-family font-size'\n }\n ],\n alignjustify: [{\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'justify' },\n inherit: false,\n defaultBlock: 'div',\n preview: 'font-family font-size'\n }],\n bold: [\n {\n inline: 'strong',\n remove: 'all'\n },\n {\n inline: 'span',\n styles: { fontWeight: 'bold' }\n },\n {\n inline: 'b',\n remove: 'all'\n }\n ],\n italic: [\n {\n inline: 'em',\n remove: 'all'\n },\n {\n inline: 'span',\n styles: { fontStyle: 'italic' }\n },\n {\n inline: 'i',\n remove: 'all'\n }\n ],\n underline: [\n {\n inline: 'span',\n styles: { textDecoration: 'underline' },\n exact: true\n },\n {\n inline: 'u',\n remove: 'all'\n }\n ],\n strikethrough: [\n {\n inline: 'span',\n styles: { textDecoration: 'line-through' },\n exact: true\n },\n {\n inline: 'strike',\n remove: 'all'\n }\n ],\n forecolor: {\n inline: 'span',\n styles: { color: '%value' },\n links: true,\n remove_similar: true,\n clear_child_styles: true\n },\n hilitecolor: {\n inline: 'span',\n styles: { backgroundColor: '%value' },\n links: true,\n remove_similar: true,\n clear_child_styles: true\n },\n fontname: {\n inline: 'span',\n toggle: false,\n styles: { fontFamily: '%value' },\n clear_child_styles: true\n },\n fontsize: {\n inline: 'span',\n toggle: false,\n styles: { fontSize: '%value' },\n clear_child_styles: true\n },\n fontsize_class: {\n inline: 'span',\n attributes: { class: '%value' }\n },\n blockquote: {\n block: 'blockquote',\n wrapper: 1,\n remove: 'all'\n },\n subscript: { inline: 'sub' },\n superscript: { inline: 'sup' },\n code: { inline: 'code' },\n link: {\n inline: 'a',\n selector: 'a',\n remove: 'all',\n split: true,\n deep: true,\n onmatch: function () {\n return true;\n },\n onformat: function (elm, fmt, vars) {\n $_4ujg4tljkmcwkbk.each(vars, function (value, key) {\n dom.setAttrib(elm, key, value);\n });\n }\n },\n removeformat: [\n {\n selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',\n remove: 'all',\n split: true,\n expand: false,\n block_expand: true,\n deep: true\n },\n {\n selector: 'span',\n attributes: [\n 'style',\n 'class'\n ],\n remove: 'empty',\n split: true,\n expand: false,\n deep: true\n },\n {\n selector: '*',\n attributes: [\n 'style',\n 'class'\n ],\n split: false,\n expand: false,\n deep: true\n }\n ]\n };\n $_4ujg4tljkmcwkbk.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\\s/), function (name) {\n formats[name] = {\n block: name,\n remove: 'all'\n };\n });\n return formats;\n };\n var $_8oc5be6fjkmcwljl = { get: get$7 };\n\n function FormatRegistry (editor) {\n var formats = {};\n var get = function (name) {\n return name ? formats[name] : formats;\n };\n var register = function (name, format) {\n if (name) {\n if (typeof name !== 'string') {\n $_4ujg4tljkmcwkbk.each(name, function (format, name) {\n register(name, format);\n });\n } else {\n format = format.length ? format : [format];\n $_4ujg4tljkmcwkbk.each(format, function (format) {\n if (typeof format.deep === 'undefined') {\n format.deep = !format.selector;\n }\n if (typeof format.split === 'undefined') {\n format.split = !format.selector || format.inline;\n }\n if (typeof format.remove === 'undefined' && format.selector && !format.inline) {\n format.remove = 'none';\n }\n if (format.selector && format.inline) {\n format.mixed = true;\n format.block_expand = true;\n }\n if (typeof format.classes === 'string') {\n format.classes = format.classes.split(/\\s+/);\n }\n });\n formats[name] = format;\n }\n }\n };\n var unregister = function (name) {\n if (name && formats[name]) {\n delete formats[name];\n }\n return formats;\n };\n register($_8oc5be6fjkmcwljl.get(editor.dom));\n register(editor.settings.formats);\n return {\n get: get,\n register: register,\n unregister: unregister\n };\n }\n\n var each$17 = $_4ujg4tljkmcwkbk.each;\n var dom = DOMUtils$1.DOM;\n var parsedSelectorToHtml = function (ancestry, editor) {\n var elm, item, fragment;\n var schema = editor && editor.schema || Schema({});\n var decorate = function (elm, item) {\n if (item.classes.length) {\n dom.addClass(elm, item.classes.join(' '));\n }\n dom.setAttribs(elm, item.attrs);\n };\n var createElement = function (sItem) {\n var elm;\n item = typeof sItem === 'string' ? {\n name: sItem,\n classes: [],\n attrs: {}\n } : sItem;\n elm = dom.create(item.name);\n decorate(elm, item);\n return elm;\n };\n var getRequiredParent = function (elm, candidate) {\n var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm;\n var elmRule = schema.getElementRule(name);\n var parentsRequired = elmRule && elmRule.parentsRequired;\n if (parentsRequired && parentsRequired.length) {\n return candidate && $_4ujg4tljkmcwkbk.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0];\n } else {\n return false;\n }\n };\n var wrapInHtml = function (elm, ancestry, siblings) {\n var parent, parentCandidate, parentRequired;\n var ancestor = ancestry.length > 0 && ancestry[0];\n var ancestorName = ancestor && ancestor.name;\n parentRequired = getRequiredParent(elm, ancestorName);\n if (parentRequired) {\n if (ancestorName === parentRequired) {\n parentCandidate = ancestry[0];\n ancestry = ancestry.slice(1);\n } else {\n parentCandidate = parentRequired;\n }\n } else if (ancestor) {\n parentCandidate = ancestry[0];\n ancestry = ancestry.slice(1);\n } else if (!siblings) {\n return elm;\n }\n if (parentCandidate) {\n parent = createElement(parentCandidate);\n parent.appendChild(elm);\n }\n if (siblings) {\n if (!parent) {\n parent = dom.create('div');\n parent.appendChild(elm);\n }\n $_4ujg4tljkmcwkbk.each(siblings, function (sibling) {\n var siblingElm = createElement(sibling);\n parent.insertBefore(siblingElm, elm);\n });\n }\n return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings);\n };\n if (ancestry && ancestry.length) {\n item = ancestry[0];\n elm = createElement(item);\n fragment = dom.create('div');\n fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings));\n return fragment;\n } else {\n return '';\n }\n };\n var selectorToHtml = function (selector, editor) {\n return parsedSelectorToHtml(parseSelector(selector), editor);\n };\n var parseSelectorItem = function (item) {\n var tagName;\n var obj = {\n classes: [],\n attrs: {}\n };\n item = obj.selector = $_4ujg4tljkmcwkbk.trim(item);\n if (item !== '*') {\n tagName = item.replace(/(?:([#\\.]|::?)([\\w\\-]+)|(\\[)([^\\]]+)\\]?)/g, function ($0, $1, $2, $3, $4) {\n switch ($1) {\n case '#':\n obj.attrs.id = $2;\n break;\n case '.':\n obj.classes.push($2);\n break;\n case ':':\n if ($_4ujg4tljkmcwkbk.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {\n obj.attrs[$2] = $2;\n }\n break;\n }\n if ($3 === '[') {\n var m = $4.match(/([\\w\\-]+)(?:\\=\\\"([^\\\"]+))?/);\n if (m) {\n obj.attrs[m[1]] = m[2];\n }\n }\n return '';\n });\n }\n obj.name = tagName || 'div';\n return obj;\n };\n var parseSelector = function (selector) {\n if (!selector || typeof selector !== 'string') {\n return [];\n }\n selector = selector.split(/\\s*,\\s*/)[0];\n selector = selector.replace(/\\s*(~\\+|~|\\+|>)\\s*/g, '$1');\n return $_4ujg4tljkmcwkbk.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), function (item) {\n var siblings = $_4ujg4tljkmcwkbk.map(item.split(/(?:~\\+|~|\\+)/), parseSelectorItem);\n var obj = siblings.pop();\n if (siblings.length) {\n obj.siblings = siblings;\n }\n return obj;\n }).reverse();\n };\n var getCssText = function (editor, format) {\n var name, previewFrag, previewElm, items;\n var previewCss = '', parentFontSize, previewStyles;\n previewStyles = editor.settings.preview_styles;\n if (previewStyles === false) {\n return '';\n }\n if (typeof previewStyles !== 'string') {\n previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow';\n }\n var removeVars = function (val) {\n return val.replace(/%(\\w+)/g, '');\n };\n if (typeof format === 'string') {\n format = editor.formatter.get(format);\n if (!format) {\n return;\n }\n format = format[0];\n }\n if ('preview' in format) {\n previewStyles = format.preview;\n if (previewStyles === false) {\n return '';\n }\n }\n name = format.block || format.inline || 'span';\n items = parseSelector(format.selector);\n if (items.length) {\n if (!items[0].name) {\n items[0].name = name;\n }\n name = format.selector;\n previewFrag = parsedSelectorToHtml(items, editor);\n } else {\n previewFrag = parsedSelectorToHtml([name], editor);\n }\n previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;\n each$17(format.styles, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setStyle(previewElm, name, value);\n }\n });\n each$17(format.attributes, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setAttrib(previewElm, name, value);\n }\n });\n each$17(format.classes, function (value) {\n value = removeVars(value);\n if (!dom.hasClass(previewElm, value)) {\n dom.addClass(previewElm, value);\n }\n });\n editor.fire('PreviewFormats');\n dom.setStyles(previewFrag, {\n position: 'absolute',\n left: -65535\n });\n editor.getBody().appendChild(previewFrag);\n parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);\n parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;\n each$17(previewStyles.split(' '), function (name) {\n var value = dom.getStyle(previewElm, name, true);\n if (name === 'background-color' && /transparent|rgba\\s*\\([^)]+,\\s*0\\)/.test(value)) {\n value = dom.getStyle(editor.getBody(), name, true);\n if (dom.toHex(value).toLowerCase() === '#ffffff') {\n return;\n }\n }\n if (name === 'color') {\n if (dom.toHex(value).toLowerCase() === '#000000') {\n return;\n }\n }\n if (name === 'font-size') {\n if (/em|%$/.test(value)) {\n if (parentFontSize === 0) {\n return;\n }\n var numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);\n value = numValue * parentFontSize + 'px';\n }\n }\n if (name === 'border' && value) {\n previewCss += 'padding:0 2px;';\n }\n previewCss += name + ':' + value + ';';\n });\n editor.fire('AfterPreviewFormats');\n dom.remove(previewFrag);\n return previewCss;\n };\n var $_ga7lpr6gjkmcwlk1 = {\n getCssText: getCssText,\n parseSelector: parseSelector,\n selectorToHtml: selectorToHtml\n };\n\n var toggle$3 = function (editor, formats, name, vars, node) {\n var fmt = formats.get(name);\n if ($_axwnk168jkmcwlim.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\n $_2vklhc6cjkmcwlj5.remove(editor, name, vars, node);\n } else {\n $_bcenmc66jkmcwlhp.applyFormat(editor, name, vars, node);\n }\n };\n var $_1zpcor6hjkmcwlk7 = { toggle: toggle$3 };\n\n var setup$6 = function (editor) {\n editor.addShortcut('meta+b', '', 'Bold');\n editor.addShortcut('meta+i', '', 'Italic');\n editor.addShortcut('meta+u', '', 'Underline');\n for (var i = 1; i <= 6; i++) {\n editor.addShortcut('access+' + i, '', [\n 'FormatBlock',\n false,\n 'h' + i\n ]);\n }\n editor.addShortcut('access+7', '', [\n 'FormatBlock',\n false,\n 'p'\n ]);\n editor.addShortcut('access+8', '', [\n 'FormatBlock',\n false,\n 'div'\n ]);\n editor.addShortcut('access+9', '', [\n 'FormatBlock',\n false,\n 'address'\n ]);\n };\n var $_2ind0x6ijkmcwlk8 = { setup: setup$6 };\n\n function Formatter (editor) {\n var formats = FormatRegistry(editor);\n var formatChangeState = Cell(null);\n $_2ind0x6ijkmcwlk8.setup(editor);\n setup$4(editor);\n return {\n get: formats.get,\n register: formats.register,\n unregister: formats.unregister,\n apply: curry($_bcenmc66jkmcwlhp.applyFormat, editor),\n remove: curry($_2vklhc6cjkmcwlj5.remove, editor),\n toggle: curry($_1zpcor6hjkmcwlk7.toggle, editor, formats),\n match: curry($_axwnk168jkmcwlim.match, editor),\n matchAll: curry($_axwnk168jkmcwlim.matchAll, editor),\n matchNode: curry($_axwnk168jkmcwlim.matchNode, editor),\n canApply: curry($_axwnk168jkmcwlim.canApply, editor),\n formatChanged: curry($_5j3j9s6djkmcwljg.formatChanged, editor, formatChangeState),\n getCssText: curry($_ga7lpr6gjkmcwlk1.getCssText, editor)\n };\n }\n\n var hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n var shallow$1 = function (old, nu) {\n return nu;\n };\n var baseMerge = function (merger) {\n return function () {\n var objects = new Array(arguments.length);\n for (var i = 0; i < objects.length; i++)\n objects[i] = arguments[i];\n if (objects.length === 0)\n throw new Error('Can\\'t merge zero objects');\n var ret = {};\n for (var j = 0; j < objects.length; j++) {\n var curObject = objects[j];\n for (var key in curObject)\n if (hasOwnProperty$1.call(curObject, key)) {\n ret[key] = merger(ret[key], curObject[key]);\n }\n }\n return ret;\n };\n };\n\n var merge = baseMerge(shallow$1);\n\n var register = function (htmlParser, settings, dom) {\n htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.attr('tabindex', node.attributes.map['data-mce-tabindex']);\n node.attr(name, null);\n }\n });\n htmlParser.addAttributeFilter('src,href,style', function (nodes, name) {\n var i = nodes.length, node, value;\n var internalName = 'data-mce-' + name;\n var urlConverter = settings.url_converter;\n var urlConverterScope = settings.url_converter_scope;\n while (i--) {\n node = nodes[i];\n value = node.attributes.map[internalName];\n if (value !== undefined) {\n node.attr(name, value.length > 0 ? value : null);\n node.attr(internalName, null);\n } else {\n value = node.attributes.map[name];\n if (name === 'style') {\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\n } else if (urlConverter) {\n value = urlConverter.call(urlConverterScope, value, name, node.name);\n }\n node.attr(name, value.length > 0 ? value : null);\n }\n }\n });\n htmlParser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, value;\n while (i--) {\n node = nodes[i];\n value = node.attr('class');\n if (value) {\n value = node.attr('class').replace(/(?:^|\\s)mce-item-\\w+(?!\\S)/g, '');\n node.attr('class', value.length > 0 ? value : null);\n }\n }\n });\n htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {\n node.remove();\n }\n }\n });\n htmlParser.addNodeFilter('noscript', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i].firstChild;\n if (node) {\n node.value = $_33qwr1sjkmcwkip.decode(node.value);\n }\n }\n });\n htmlParser.addNodeFilter('script,style', function (nodes, name) {\n var i = nodes.length, node, value, type;\n var trim = function (value) {\n return value.replace(/()/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\s*(()?|\\s*\\/\\/\\s*\\]\\]>(-->)?|\\/\\/\\s*(-->)?|\\]\\]>|\\/\\*\\s*-->\\s*\\*\\/|\\s*-->\\s*)\\s*$/g, '');\n };\n while (i--) {\n node = nodes[i];\n value = node.firstChild ? node.firstChild.value : '';\n if (name === 'script') {\n type = node.attr('type');\n if (type) {\n node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\\-/, ''));\n }\n if (settings.element_format === 'xhtml' && value.length > 0) {\n node.firstChild.value = '// ';\n }\n } else {\n if (settings.element_format === 'xhtml' && value.length > 0) {\n node.firstChild.value = '';\n }\n }\n }\n });\n htmlParser.addNodeFilter('#comment', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.value.indexOf('[CDATA[') === 0) {\n node.name = '#cdata';\n node.type = 4;\n node.value = node.value.replace(/^\\[CDATA\\[|\\]\\]$/g, '');\n } else if (node.value.indexOf('mce:protected ') === 0) {\n node.name = '#text';\n node.type = 3;\n node.raw = true;\n node.value = unescape(node.value).substr(14);\n }\n }\n });\n htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.type === 7) {\n node.remove();\n } else if (node.type === 1) {\n if (name === 'input' && !('type' in node.attributes.map)) {\n node.attr('type', 'text');\n }\n }\n }\n });\n htmlParser.addAttributeFilter('data-mce-type', function (nodes) {\n each(nodes, function (node) {\n if (node.attr('data-mce-type') === 'format-caret') {\n if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {\n node.remove();\n } else {\n node.unwrap();\n }\n }\n });\n });\n htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) {\n var i = nodes.length;\n while (i--) {\n nodes[i].attr(name, null);\n }\n });\n };\n var trimTrailingBr = function (rootNode) {\n var brNode1, brNode2;\n var isBr = function (node) {\n return node && node.name === 'br';\n };\n brNode1 = rootNode.lastChild;\n if (isBr(brNode1)) {\n brNode2 = brNode1.prev;\n if (isBr(brNode2)) {\n brNode1.remove();\n brNode2.remove();\n }\n }\n };\n var $_ft0zjh6mjkmcwlkr = {\n register: register,\n trimTrailingBr: trimTrailingBr\n };\n\n var preProcess = function (editor, node, args) {\n var impl, doc, oldDoc;\n var dom = editor.dom;\n node = node.cloneNode(true);\n impl = document.implementation;\n if (impl.createHTMLDocument) {\n doc = impl.createHTMLDocument('');\n $_4ujg4tljkmcwkbk.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) {\n doc.body.appendChild(doc.importNode(node, true));\n });\n if (node.nodeName !== 'BODY') {\n node = doc.body.firstChild;\n } else {\n node = doc.body;\n }\n oldDoc = dom.doc;\n dom.doc = doc;\n }\n $_q3ric4tjkmcwl9q.firePreProcess(editor, merge(args, { node: node }));\n if (oldDoc) {\n dom.doc = oldDoc;\n }\n return node;\n };\n var shouldFireEvent = function (editor, args) {\n return editor && editor.hasEventListeners('PreProcess') && !args.no_events;\n };\n var process = function (editor, node, args) {\n return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node;\n };\n var $_27apc6njkmcwll3 = { process: process };\n\n var removeAttrs = function (node, names) {\n each(names, function (name) {\n node.attr(name, null);\n });\n };\n var addFontToSpansFilter = function (domParser, styles, fontSizes) {\n domParser.addNodeFilter('font', function (nodes) {\n each(nodes, function (node) {\n var props = styles.parse(node.attr('style'));\n var color = node.attr('color');\n var face = node.attr('face');\n var size = node.attr('size');\n if (color) {\n props.color = color;\n }\n if (face) {\n props['font-family'] = face;\n }\n if (size) {\n props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1];\n }\n node.name = 'span';\n node.attr('style', styles.serialize(props));\n removeAttrs(node, [\n 'color',\n 'face',\n 'size'\n ]);\n });\n });\n };\n var addStrikeToSpanFilter = function (domParser, styles) {\n domParser.addNodeFilter('strike', function (nodes) {\n each(nodes, function (node) {\n var props = styles.parse(node.attr('style'));\n props['text-decoration'] = 'line-through';\n node.name = 'span';\n node.attr('style', styles.serialize(props));\n });\n });\n };\n var addFilters = function (domParser, settings) {\n var styles = Styles();\n if (settings.convert_fonts_to_spans) {\n addFontToSpansFilter(domParser, styles, $_4ujg4tljkmcwkbk.explode(settings.font_size_legacy_values));\n }\n addStrikeToSpanFilter(domParser, styles);\n };\n var register$1 = function (domParser, settings) {\n if (settings.inline_styles) {\n addFilters(domParser, settings);\n }\n };\n var $_2klegh6pjkmcwllk = { register: register$1 };\n\n var whiteSpaceRegExp$3 = /^[ \\t\\r\\n]*$/;\n var typeLookup = {\n '#text': 3,\n '#comment': 8,\n '#cdata': 4,\n '#pi': 7,\n '#doctype': 10,\n '#document-fragment': 11\n };\n var walk$3 = function (node, root, prev) {\n var sibling;\n var parent;\n var startName = prev ? 'lastChild' : 'firstChild';\n var siblingName = prev ? 'prev' : 'next';\n if (node[startName]) {\n return node[startName];\n }\n if (node !== root) {\n sibling = node[siblingName];\n if (sibling) {\n return sibling;\n }\n for (parent = node.parent; parent && parent !== root; parent = parent.parent) {\n sibling = parent[siblingName];\n if (sibling) {\n return sibling;\n }\n }\n }\n };\n var Node$2 = function () {\n function Node(name, type) {\n this.name = name;\n this.type = type;\n if (type === 1) {\n this.attributes = [];\n this.attributes.map = {};\n }\n }\n Node.create = function (name, attrs) {\n var node, attrName;\n node = new Node(name, typeLookup[name] || 1);\n if (attrs) {\n for (attrName in attrs) {\n node.attr(attrName, attrs[attrName]);\n }\n }\n return node;\n };\n Node.prototype.replace = function (node) {\n var self = this;\n if (node.parent) {\n node.remove();\n }\n self.insert(node, self);\n self.remove();\n return self;\n };\n Node.prototype.attr = function (name, value) {\n var self = this;\n var attrs, i;\n if (typeof name !== 'string') {\n for (i in name) {\n self.attr(i, name[i]);\n }\n return self;\n }\n if (attrs = self.attributes) {\n if (value !== undefined) {\n if (value === null) {\n if (name in attrs.map) {\n delete attrs.map[name];\n i = attrs.length;\n while (i--) {\n if (attrs[i].name === name) {\n attrs = attrs.splice(i, 1);\n return self;\n }\n }\n }\n return self;\n }\n if (name in attrs.map) {\n i = attrs.length;\n while (i--) {\n if (attrs[i].name === name) {\n attrs[i].value = value;\n break;\n }\n }\n } else {\n attrs.push({\n name: name,\n value: value\n });\n }\n attrs.map[name] = value;\n return self;\n }\n return attrs.map[name];\n }\n };\n Node.prototype.clone = function () {\n var self = this;\n var clone = new Node(self.name, self.type);\n var i, l, selfAttrs, selfAttr, cloneAttrs;\n if (selfAttrs = self.attributes) {\n cloneAttrs = [];\n cloneAttrs.map = {};\n for (i = 0, l = selfAttrs.length; i < l; i++) {\n selfAttr = selfAttrs[i];\n if (selfAttr.name !== 'id') {\n cloneAttrs[cloneAttrs.length] = {\n name: selfAttr.name,\n value: selfAttr.value\n };\n cloneAttrs.map[selfAttr.name] = selfAttr.value;\n }\n }\n clone.attributes = cloneAttrs;\n }\n clone.value = self.value;\n clone.shortEnded = self.shortEnded;\n return clone;\n };\n Node.prototype.wrap = function (wrapper) {\n var self = this;\n self.parent.insert(wrapper, self);\n wrapper.append(self);\n return self;\n };\n Node.prototype.unwrap = function () {\n var self = this;\n var node, next;\n for (node = self.firstChild; node;) {\n next = node.next;\n self.insert(node, self, true);\n node = next;\n }\n self.remove();\n };\n Node.prototype.remove = function () {\n var self = this, parent = self.parent, next = self.next, prev = self.prev;\n if (parent) {\n if (parent.firstChild === self) {\n parent.firstChild = next;\n if (next) {\n next.prev = null;\n }\n } else {\n prev.next = next;\n }\n if (parent.lastChild === self) {\n parent.lastChild = prev;\n if (prev) {\n prev.next = null;\n }\n } else {\n next.prev = prev;\n }\n self.parent = self.next = self.prev = null;\n }\n return self;\n };\n Node.prototype.append = function (node) {\n var self = this;\n var last;\n if (node.parent) {\n node.remove();\n }\n last = self.lastChild;\n if (last) {\n last.next = node;\n node.prev = last;\n self.lastChild = node;\n } else {\n self.lastChild = self.firstChild = node;\n }\n node.parent = self;\n return node;\n };\n Node.prototype.insert = function (node, refNode, before) {\n var parent;\n if (node.parent) {\n node.remove();\n }\n parent = refNode.parent || this;\n if (before) {\n if (refNode === parent.firstChild) {\n parent.firstChild = node;\n } else {\n refNode.prev.next = node;\n }\n node.prev = refNode.prev;\n node.next = refNode;\n refNode.prev = node;\n } else {\n if (refNode === parent.lastChild) {\n parent.lastChild = node;\n } else {\n refNode.next.prev = node;\n }\n node.next = refNode.next;\n node.prev = refNode;\n refNode.next = node;\n }\n node.parent = parent;\n return node;\n };\n Node.prototype.getAll = function (name) {\n var self = this;\n var node;\n var collection = [];\n for (node = self.firstChild; node; node = walk$3(node, self)) {\n if (node.name === name) {\n collection.push(node);\n }\n }\n return collection;\n };\n Node.prototype.empty = function () {\n var self = this;\n var nodes, i, node;\n if (self.firstChild) {\n nodes = [];\n for (node = self.firstChild; node; node = walk$3(node, self)) {\n nodes.push(node);\n }\n i = nodes.length;\n while (i--) {\n node = nodes[i];\n node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\n }\n }\n self.firstChild = self.lastChild = null;\n return self;\n };\n Node.prototype.isEmpty = function (elements, whitespace, predicate) {\n var self = this;\n var node = self.firstChild, i, name;\n whitespace = whitespace || {};\n if (node) {\n do {\n if (node.type === 1) {\n if (node.attributes.map['data-mce-bogus']) {\n continue;\n }\n if (elements[node.name]) {\n return false;\n }\n i = node.attributes.length;\n while (i--) {\n name = node.attributes[i].name;\n if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) {\n return false;\n }\n }\n }\n if (node.type === 8) {\n return false;\n }\n if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) {\n return false;\n }\n if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) {\n return false;\n }\n if (predicate && predicate(node)) {\n return false;\n }\n } while (node = walk$3(node, self));\n }\n return true;\n };\n Node.prototype.walk = function (prev) {\n return walk$3(this, null, prev);\n };\n return Node;\n }();\n\n var paddEmptyNode = function (settings, args, blockElements, node) {\n var brPreferred = settings.padd_empty_with_br || args.insert;\n if (brPreferred && blockElements[node.name]) {\n node.empty().append(new Node$2('br', 1)).shortEnded = true;\n } else {\n node.empty().append(new Node$2('#text', 3)).value = '\\xA0';\n }\n };\n var isPaddedWithNbsp = function (node) {\n return hasOnlyChild(node, '#text') && node.firstChild.value === '\\xA0';\n };\n var hasOnlyChild = function (node, name) {\n return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name;\n };\n var isPadded = function (schema, node) {\n var rule = schema.getElementRule(node.name);\n return rule && rule.paddEmpty;\n };\n var isEmpty$2 = function (schema, nonEmptyElements, whitespaceElements, node) {\n return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) {\n return isPadded(schema, node);\n });\n };\n var isLineBreakNode = function (node, blockElements) {\n return node && (blockElements[node.name] || node.name === 'br');\n };\n\n var register$2 = function (parser, settings) {\n var schema = parser.schema;\n if (settings.remove_trailing_brs) {\n parser.addNodeFilter('br', function (nodes, _, args) {\n var i;\n var l = nodes.length;\n var node;\n var blockElements = $_4ujg4tljkmcwkbk.extend({}, schema.getBlockElements());\n var nonEmptyElements = schema.getNonEmptyElements();\n var parent, lastParent, prev, prevName;\n var whiteSpaceElements = schema.getNonEmptyElements();\n var elementRule, textNode;\n blockElements.body = 1;\n for (i = 0; i < l; i++) {\n node = nodes[i];\n parent = node.parent;\n if (blockElements[node.parent.name] && node === parent.lastChild) {\n prev = node.prev;\n while (prev) {\n prevName = prev.name;\n if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {\n if (prevName !== 'br') {\n break;\n }\n if (prevName === 'br') {\n node = null;\n break;\n }\n }\n prev = prev.prev;\n }\n if (node) {\n node.remove();\n if (isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, parent)) {\n elementRule = schema.getElementRule(parent.name);\n if (elementRule) {\n if (elementRule.removeEmpty) {\n parent.remove();\n } else if (elementRule.paddEmpty) {\n paddEmptyNode(settings, args, blockElements, parent);\n }\n }\n }\n }\n } else {\n lastParent = node;\n while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {\n lastParent = parent;\n if (blockElements[parent.name]) {\n break;\n }\n parent = parent.parent;\n }\n if (lastParent === parent && settings.padd_empty_with_br !== true) {\n textNode = new Node$2('#text', 3);\n textNode.value = '\\xA0';\n node.replace(textNode);\n }\n }\n }\n });\n }\n parser.addAttributeFilter('href', function (nodes) {\n var i = nodes.length, node;\n var appendRel = function (rel) {\n var parts = rel.split(' ').filter(function (p) {\n return p.length > 0;\n });\n return parts.concat(['noopener']).sort().join(' ');\n };\n var addNoOpener = function (rel) {\n var newRel = rel ? $_4ujg4tljkmcwkbk.trim(rel) : '';\n if (!/\\b(noopener)\\b/g.test(newRel)) {\n return appendRel(newRel);\n } else {\n return newRel;\n }\n };\n if (!settings.allow_unsafe_link_target) {\n while (i--) {\n node = nodes[i];\n if (node.name === 'a' && node.attr('target') === '_blank') {\n node.attr('rel', addNoOpener(node.attr('rel')));\n }\n }\n }\n });\n if (!settings.allow_html_in_named_anchor) {\n parser.addAttributeFilter('id,name', function (nodes) {\n var i = nodes.length, sibling, prevSibling, parent, node;\n while (i--) {\n node = nodes[i];\n if (node.name === 'a' && node.firstChild && !node.attr('href')) {\n parent = node.parent;\n sibling = node.lastChild;\n do {\n prevSibling = sibling.prev;\n parent.insert(sibling, node);\n sibling = prevSibling;\n } while (sibling);\n }\n }\n });\n }\n if (settings.fix_list_elements) {\n parser.addNodeFilter('ul,ol', function (nodes) {\n var i = nodes.length, node, parentNode;\n while (i--) {\n node = nodes[i];\n parentNode = node.parent;\n if (parentNode.name === 'ul' || parentNode.name === 'ol') {\n if (node.prev && node.prev.name === 'li') {\n node.prev.append(node);\n } else {\n var li = new Node$2('li', 1);\n li.attr('style', 'list-style-type: none');\n node.wrap(li);\n }\n }\n }\n });\n }\n if (settings.validate && schema.getValidClasses()) {\n parser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, classList, ci, className, classValue;\n var validClasses = schema.getValidClasses();\n var validClassesMap, valid;\n while (i--) {\n node = nodes[i];\n classList = node.attr('class').split(' ');\n classValue = '';\n for (ci = 0; ci < classList.length; ci++) {\n className = classList[ci];\n valid = false;\n validClassesMap = validClasses['*'];\n if (validClassesMap && validClassesMap[className]) {\n valid = true;\n }\n validClassesMap = validClasses[node.name];\n if (!valid && validClassesMap && validClassesMap[className]) {\n valid = true;\n }\n if (valid) {\n if (classValue) {\n classValue += ' ';\n }\n classValue += className;\n }\n }\n if (!classValue.length) {\n classValue = null;\n }\n node.attr('class', classValue);\n }\n });\n }\n };\n\n var makeMap$4 = $_4ujg4tljkmcwkbk.makeMap;\n var each$18 = $_4ujg4tljkmcwkbk.each;\n var explode$3 = $_4ujg4tljkmcwkbk.explode;\n var extend$3 = $_4ujg4tljkmcwkbk.extend;\n function DomParser (settings, schema) {\n if (schema === void 0) {\n schema = Schema();\n }\n var nodeFilters = {};\n var attributeFilters = [];\n var matchedNodes = {};\n var matchedAttributes = {};\n settings = settings || {};\n settings.validate = 'validate' in settings ? settings.validate : true;\n settings.root_name = settings.root_name || 'body';\n var fixInvalidChildren = function (nodes) {\n var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;\n var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode;\n nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table');\n nonEmptyElements = schema.getNonEmptyElements();\n whitespaceElements = schema.getWhiteSpaceElements();\n textBlockElements = schema.getTextBlockElements();\n specialElements = schema.getSpecialElements();\n for (ni = 0; ni < nodes.length; ni++) {\n node = nodes[ni];\n if (!node.parent || node.fixed) {\n continue;\n }\n if (textBlockElements[node.name] && node.parent.name === 'li') {\n sibling = node.next;\n while (sibling) {\n if (textBlockElements[sibling.name]) {\n sibling.name = 'li';\n sibling.fixed = true;\n node.parent.insert(sibling, node.parent);\n } else {\n break;\n }\n sibling = sibling.next;\n }\n node.unwrap(node);\n continue;\n }\n parents = [node];\n for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) {\n parents.push(parent);\n }\n if (parent && parents.length > 1) {\n parents.reverse();\n newParent = currentNode = filterNode(parents[0].clone());\n for (i = 0; i < parents.length - 1; i++) {\n if (schema.isValidChild(currentNode.name, parents[i].name)) {\n tempNode = filterNode(parents[i].clone());\n currentNode.append(tempNode);\n } else {\n tempNode = currentNode;\n }\n for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {\n nextNode = childNode.next;\n tempNode.append(childNode);\n childNode = nextNode;\n }\n currentNode = tempNode;\n }\n if (!isEmpty$2(schema, nonEmptyElements, whitespaceElements, newParent)) {\n parent.insert(newParent, parents[0], true);\n parent.insert(node, newParent);\n } else {\n parent.insert(node, parents[0], true);\n }\n parent = parents[0];\n if (isEmpty$2(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {\n parent.empty().remove();\n }\n } else if (node.parent) {\n if (node.name === 'li') {\n sibling = node.prev;\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n sibling.append(node);\n continue;\n }\n sibling = node.next;\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n sibling.insert(node, sibling.firstChild, true);\n continue;\n }\n node.wrap(filterNode(new Node$2('ul', 1)));\n continue;\n }\n if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\n node.wrap(filterNode(new Node$2('div', 1)));\n } else {\n if (specialElements[node.name]) {\n node.empty().remove();\n } else {\n node.unwrap();\n }\n }\n }\n }\n };\n var filterNode = function (node) {\n var i, name, list;\n if (name in nodeFilters) {\n list = matchedNodes[name];\n if (list) {\n list.push(node);\n } else {\n matchedNodes[name] = [node];\n }\n }\n i = attributeFilters.length;\n while (i--) {\n name = attributeFilters[i].name;\n if (name in node.attributes.map) {\n list = matchedAttributes[name];\n if (list) {\n list.push(node);\n } else {\n matchedAttributes[name] = [node];\n }\n }\n }\n return node;\n };\n var addNodeFilter = function (name, callback) {\n each$18(explode$3(name), function (name) {\n var list = nodeFilters[name];\n if (!list) {\n nodeFilters[name] = list = [];\n }\n list.push(callback);\n });\n };\n var getNodeFilters = function () {\n var out = [];\n for (var name in nodeFilters) {\n if (nodeFilters.hasOwnProperty(name)) {\n out.push({\n name: name,\n callbacks: nodeFilters[name]\n });\n }\n }\n return out;\n };\n var addAttributeFilter = function (name, callback) {\n each$18(explode$3(name), function (name) {\n var i;\n for (i = 0; i < attributeFilters.length; i++) {\n if (attributeFilters[i].name === name) {\n attributeFilters[i].callbacks.push(callback);\n return;\n }\n }\n attributeFilters.push({\n name: name,\n callbacks: [callback]\n });\n });\n };\n var getAttributeFilters = function () {\n return [].concat(attributeFilters);\n };\n var parse = function (html, args) {\n var parser, nodes, i, l, fi, fl, list, name;\n var blockElements;\n var invalidChildren = [];\n var isInWhiteSpacePreservedElement;\n var node;\n args = args || {};\n matchedNodes = {};\n matchedAttributes = {};\n blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n var nonEmptyElements = schema.getNonEmptyElements();\n var children = schema.children;\n var validate = settings.validate;\n var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block;\n var whiteSpaceElements = schema.getWhiteSpaceElements();\n var startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n var endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n var allWhiteSpaceRegExp = /[ \\t\\r\\n]+/g;\n var isAllWhiteSpaceRegExp = /^[ \\t\\r\\n]+$/;\n isInWhiteSpacePreservedElement = whiteSpaceElements.hasOwnProperty(args.context) || whiteSpaceElements.hasOwnProperty(settings.root_name);\n var addRootBlocks = function () {\n var node = rootNode.firstChild, next, rootBlockNode;\n var trim = function (rootBlockNode) {\n if (rootBlockNode) {\n node = rootBlockNode.firstChild;\n if (node && node.type === 3) {\n node.value = node.value.replace(startWhiteSpaceRegExp, '');\n }\n node = rootBlockNode.lastChild;\n if (node && node.type === 3) {\n node.value = node.value.replace(endWhiteSpaceRegExp, '');\n }\n }\n };\n if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {\n return;\n }\n while (node) {\n next = node.next;\n if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) {\n if (!rootBlockNode) {\n rootBlockNode = createNode(rootBlockName, 1);\n rootBlockNode.attr(settings.forced_root_block_attrs);\n rootNode.insert(rootBlockNode, node);\n rootBlockNode.append(node);\n } else {\n rootBlockNode.append(node);\n }\n } else {\n trim(rootBlockNode);\n rootBlockNode = null;\n }\n node = next;\n }\n trim(rootBlockNode);\n };\n var createNode = function (name, type) {\n var node = new Node$2(name, type);\n var list;\n if (name in nodeFilters) {\n list = matchedNodes[name];\n if (list) {\n list.push(node);\n } else {\n matchedNodes[name] = [node];\n }\n }\n return node;\n };\n var removeWhitespaceBefore = function (node) {\n var textNode, textNodeNext, textVal, sibling;\n var blockElements = schema.getBlockElements();\n for (textNode = node.prev; textNode && textNode.type === 3;) {\n textVal = textNode.value.replace(endWhiteSpaceRegExp, '');\n if (textVal.length > 0) {\n textNode.value = textVal;\n return;\n }\n textNodeNext = textNode.next;\n if (textNodeNext) {\n if (textNodeNext.type === 3 && textNodeNext.value.length) {\n textNode = textNode.prev;\n continue;\n }\n if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') {\n textNode = textNode.prev;\n continue;\n }\n }\n sibling = textNode.prev;\n textNode.remove();\n textNode = sibling;\n }\n };\n var cloneAndExcludeBlocks = function (input) {\n var name;\n var output = {};\n for (name in input) {\n if (name !== 'li' && name !== 'p') {\n output[name] = input[name];\n }\n }\n return output;\n };\n parser = SaxParser$1({\n validate: validate,\n allow_script_urls: settings.allow_script_urls,\n allow_conditional_comments: settings.allow_conditional_comments,\n self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),\n cdata: function (text) {\n node.append(createNode('#cdata', 4)).value = text;\n },\n text: function (text, raw) {\n var textNode;\n if (!isInWhiteSpacePreservedElement) {\n text = text.replace(allWhiteSpaceRegExp, ' ');\n if (isLineBreakNode(node.lastChild, blockElements)) {\n text = text.replace(startWhiteSpaceRegExp, '');\n }\n }\n if (text.length !== 0) {\n textNode = createNode('#text', 3);\n textNode.raw = !!raw;\n node.append(textNode).value = text;\n }\n },\n comment: function (text) {\n node.append(createNode('#comment', 8)).value = text;\n },\n pi: function (name, text) {\n node.append(createNode(name, 7)).value = text;\n removeWhitespaceBefore(node);\n },\n doctype: function (text) {\n var newNode;\n newNode = node.append(createNode('#doctype', 10));\n newNode.value = text;\n removeWhitespaceBefore(node);\n },\n start: function (name, attrs, empty) {\n var newNode, attrFiltersLen, elementRule, attrName, parent;\n elementRule = validate ? schema.getElementRule(name) : {};\n if (elementRule) {\n newNode = createNode(elementRule.outputName || name, 1);\n newNode.attributes = attrs;\n newNode.shortEnded = empty;\n node.append(newNode);\n parent = children[node.name];\n if (parent && children[newNode.name] && !parent[newNode.name]) {\n invalidChildren.push(newNode);\n }\n attrFiltersLen = attributeFilters.length;\n while (attrFiltersLen--) {\n attrName = attributeFilters[attrFiltersLen].name;\n if (attrName in attrs.map) {\n list = matchedAttributes[attrName];\n if (list) {\n list.push(newNode);\n } else {\n matchedAttributes[attrName] = [newNode];\n }\n }\n }\n if (blockElements[name]) {\n removeWhitespaceBefore(newNode);\n }\n if (!empty) {\n node = newNode;\n }\n if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n isInWhiteSpacePreservedElement = true;\n }\n }\n },\n end: function (name) {\n var textNode, elementRule, text, sibling, tempNode;\n elementRule = validate ? schema.getElementRule(name) : {};\n if (elementRule) {\n if (blockElements[name]) {\n if (!isInWhiteSpacePreservedElement) {\n textNode = node.firstChild;\n if (textNode && textNode.type === 3) {\n text = textNode.value.replace(startWhiteSpaceRegExp, '');\n if (text.length > 0) {\n textNode.value = text;\n textNode = textNode.next;\n } else {\n sibling = textNode.next;\n textNode.remove();\n textNode = sibling;\n while (textNode && textNode.type === 3) {\n text = textNode.value;\n sibling = textNode.next;\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n textNode.remove();\n textNode = sibling;\n }\n textNode = sibling;\n }\n }\n }\n textNode = node.lastChild;\n if (textNode && textNode.type === 3) {\n text = textNode.value.replace(endWhiteSpaceRegExp, '');\n if (text.length > 0) {\n textNode.value = text;\n textNode = textNode.prev;\n } else {\n sibling = textNode.prev;\n textNode.remove();\n textNode = sibling;\n while (textNode && textNode.type === 3) {\n text = textNode.value;\n sibling = textNode.prev;\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n textNode.remove();\n textNode = sibling;\n }\n textNode = sibling;\n }\n }\n }\n }\n }\n if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n isInWhiteSpacePreservedElement = false;\n }\n if (elementRule.removeEmpty && isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node)) {\n if (!node.attributes.map.name && !node.attr('id')) {\n tempNode = node.parent;\n if (blockElements[node.name]) {\n node.empty().remove();\n } else {\n node.unwrap();\n }\n node = tempNode;\n return;\n }\n }\n if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node))) {\n paddEmptyNode(settings, args, blockElements, node);\n }\n node = node.parent;\n }\n }\n }, schema);\n var rootNode = node = new Node$2(args.context || settings.root_name, 11);\n parser.parse(html);\n if (validate && invalidChildren.length) {\n if (!args.context) {\n fixInvalidChildren(invalidChildren);\n } else {\n args.invalid = true;\n }\n }\n if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {\n addRootBlocks();\n }\n if (!args.invalid) {\n for (name in matchedNodes) {\n list = nodeFilters[name];\n nodes = matchedNodes[name];\n fi = nodes.length;\n while (fi--) {\n if (!nodes[fi].parent) {\n nodes.splice(fi, 1);\n }\n }\n for (i = 0, l = list.length; i < l; i++) {\n list[i](nodes, name, args);\n }\n }\n for (i = 0, l = attributeFilters.length; i < l; i++) {\n list = attributeFilters[i];\n if (list.name in matchedAttributes) {\n nodes = matchedAttributes[list.name];\n fi = nodes.length;\n while (fi--) {\n if (!nodes[fi].parent) {\n nodes.splice(fi, 1);\n }\n }\n for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {\n list.callbacks[fi](nodes, list.name, args);\n }\n }\n }\n }\n return rootNode;\n };\n var exports = {\n schema: schema,\n addAttributeFilter: addAttributeFilter,\n getAttributeFilters: getAttributeFilters,\n addNodeFilter: addNodeFilter,\n getNodeFilters: getNodeFilters,\n filterNode: filterNode,\n parse: parse\n };\n register$2(exports, settings);\n $_2klegh6pjkmcwllk.register(exports, settings);\n return exports;\n }\n\n var addTempAttr = function (htmlParser, tempAttrs, name) {\n if ($_4ujg4tljkmcwkbk.inArray(tempAttrs, name) === -1) {\n htmlParser.addAttributeFilter(name, function (nodes, name) {\n var i = nodes.length;\n while (i--) {\n nodes[i].attr(name, null);\n }\n });\n tempAttrs.push(name);\n }\n };\n var postProcess$1 = function (editor, args, content) {\n if (!args.no_events && editor) {\n var outArgs = $_q3ric4tjkmcwl9q.firePostProcess(editor, merge(args, { content: content }));\n return outArgs.content;\n } else {\n return content;\n }\n };\n var getHtmlFromNode = function (dom, node, args) {\n var html = $_cadvcr2pjkmcwkph.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\n return args.selection || isWsPreserveElement(Element$$1.fromDom(node)) ? html : $_4ujg4tljkmcwkbk.trim(html);\n };\n var parseHtml = function (htmlParser, html, args) {\n var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args;\n var rootNode = htmlParser.parse(html, parserArgs);\n $_ft0zjh6mjkmcwlkr.trimTrailingBr(rootNode);\n return rootNode;\n };\n var serializeNode = function (settings, schema, node) {\n var htmlSerializer = HtmlSerializer(settings, schema);\n return htmlSerializer.serialize(node);\n };\n var toHtml = function (editor, settings, schema, rootNode, args) {\n var content = serializeNode(settings, schema, rootNode);\n return postProcess$1(editor, args, content);\n };\n function DomSerializer (settings, editor) {\n var dom, schema, htmlParser;\n var tempAttrs = ['data-mce-selected'];\n dom = editor && editor.dom ? editor.dom : DOMUtils$1.DOM;\n schema = editor && editor.schema ? editor.schema : Schema(settings);\n settings.entity_encoding = settings.entity_encoding || 'named';\n settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true;\n htmlParser = DomParser(settings, schema);\n $_ft0zjh6mjkmcwlkr.register(htmlParser, settings, dom);\n var serialize = function (node, parserArgs) {\n var args = merge({ format: 'html' }, parserArgs ? parserArgs : {});\n var targetNode = $_27apc6njkmcwll3.process(editor, node, args);\n var html = getHtmlFromNode(dom, targetNode, args);\n var rootNode = parseHtml(htmlParser, html, args);\n return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args);\n };\n return {\n schema: schema,\n addNodeFilter: htmlParser.addNodeFilter,\n addAttributeFilter: htmlParser.addAttributeFilter,\n serialize: serialize,\n addRules: function (rules) {\n schema.addValidElements(rules);\n },\n setRules: function (rules) {\n schema.setValidElements(rules);\n },\n addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),\n getTempAttrs: function () {\n return tempAttrs;\n }\n };\n }\n\n function DomSerializer$1 (settings, editor) {\n var domSerializer = DomSerializer(settings, editor);\n return {\n schema: domSerializer.schema,\n addNodeFilter: domSerializer.addNodeFilter,\n addAttributeFilter: domSerializer.addAttributeFilter,\n serialize: domSerializer.serialize,\n addRules: domSerializer.addRules,\n setRules: domSerializer.setRules,\n addTempAttr: domSerializer.addTempAttr,\n getTempAttrs: domSerializer.getTempAttrs\n };\n }\n\n function BookmarkManager(selection) {\n return {\n getBookmark: curry($_e4btcc2vjkmcwkq3.getBookmark, selection),\n moveToBookmark: curry($_e4btcc2vjkmcwkq3.moveToBookmark, selection)\n };\n }\n (function (BookmarkManager) {\n BookmarkManager.isBookmarkNode = $_e4btcc2vjkmcwkq3.isBookmarkNode;\n }(BookmarkManager || (BookmarkManager = {})));\n var BookmarkManager$1 = BookmarkManager;\n\n var isContentEditableFalse$10 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isContentEditableTrue$6 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var getContentEditableRoot$2 = function (root, node) {\n while (node && node !== root) {\n if (isContentEditableTrue$6(node) || isContentEditableFalse$10(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var ControlSelection = function (selection, editor) {\n var dom = editor.dom, each = $_4ujg4tljkmcwkbk.each;\n var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle;\n var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;\n var width, height;\n var editableDoc = editor.getDoc(), rootDocument = document;\n var abs = Math.abs, round = Math.round, rootElement = editor.getBody();\n var startScrollWidth, startScrollHeight;\n resizeHandles = {\n nw: [\n 0,\n 0,\n -1,\n -1\n ],\n ne: [\n 1,\n 0,\n 1,\n -1\n ],\n se: [\n 1,\n 1,\n 1,\n 1\n ],\n sw: [\n 0,\n 1,\n -1,\n 1\n ]\n };\n var rootClass = '.mce-content-body';\n editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + ($_cvvl9iajkmcwk25.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}');\n var isImage = function (elm) {\n return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image'));\n };\n var isEventOnImageOutsideRange = function (evt, range) {\n return isImage(evt.target) && !$_95lcbc5ujkmcwlg1.isXYWithinRange(evt.clientX, evt.clientY, range);\n };\n var contextMenuSelectImage = function (evt) {\n var target = evt.target;\n if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {\n evt.preventDefault();\n editor.selection.select(target);\n }\n };\n var getResizeTarget = function (elm) {\n return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm;\n };\n var isResizable = function (elm) {\n var selector = editor.settings.object_resizing;\n if (selector === false || $_cvvl9iajkmcwk25.iOS) {\n return false;\n }\n if (typeof selector !== 'string') {\n selector = 'table,img,figure.image,div';\n }\n if (elm.getAttribute('data-mce-resize') === 'false') {\n return false;\n }\n if (elm === editor.getBody()) {\n return false;\n }\n return $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(elm), selector);\n };\n var resizeGhostElement = function (e) {\n var deltaX, deltaY, proportional;\n var resizeHelperX, resizeHelperY;\n deltaX = e.screenX - startX;\n deltaY = e.screenY - startY;\n width = deltaX * selectedHandle[2] + startW;\n height = deltaY * selectedHandle[3] + startH;\n width = width < 5 ? 5 : width;\n height = height < 5 ? 5 : height;\n if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) {\n proportional = !$_6bj5795wjkmcwlg6.modifierPressed(e);\n } else {\n proportional = $_6bj5795wjkmcwlg6.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0;\n }\n if (proportional) {\n if (abs(deltaX) > abs(deltaY)) {\n height = round(width * ratio);\n width = round(height / ratio);\n } else {\n width = round(height / ratio);\n height = round(width * ratio);\n }\n }\n dom.setStyles(getResizeTarget(selectedElmGhost), {\n width: width,\n height: height\n });\n resizeHelperX = selectedHandle.startPos.x + deltaX;\n resizeHelperY = selectedHandle.startPos.y + deltaY;\n resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;\n resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;\n dom.setStyles(resizeHelper, {\n left: resizeHelperX,\n top: resizeHelperY,\n display: 'block'\n });\n resizeHelper.innerHTML = width + ' × ' + height;\n if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\n dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\n }\n if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\n dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\n }\n deltaX = rootElement.scrollWidth - startScrollWidth;\n deltaY = rootElement.scrollHeight - startScrollHeight;\n if (deltaX + deltaY !== 0) {\n dom.setStyles(resizeHelper, {\n left: resizeHelperX - deltaX,\n top: resizeHelperY - deltaY\n });\n }\n if (!resizeStarted) {\n $_q3ric4tjkmcwl9q.fireObjectResizeStart(editor, selectedElm, startW, startH);\n resizeStarted = true;\n }\n };\n var endGhostResize = function () {\n resizeStarted = false;\n var setSizeProp = function (name$$1, value) {\n if (value) {\n if (selectedElm.style[name$$1] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name$$1)) {\n dom.setStyle(getResizeTarget(selectedElm), name$$1, value);\n } else {\n dom.setAttrib(getResizeTarget(selectedElm), name$$1, value);\n }\n }\n };\n setSizeProp('width', width);\n setSizeProp('height', height);\n dom.unbind(editableDoc, 'mousemove', resizeGhostElement);\n dom.unbind(editableDoc, 'mouseup', endGhostResize);\n if (rootDocument !== editableDoc) {\n dom.unbind(rootDocument, 'mousemove', resizeGhostElement);\n dom.unbind(rootDocument, 'mouseup', endGhostResize);\n }\n dom.remove(selectedElmGhost);\n dom.remove(resizeHelper);\n showResizeRect(selectedElm);\n $_q3ric4tjkmcwl9q.fireObjectResized(editor, selectedElm, width, height);\n dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));\n editor.nodeChanged();\n };\n var showResizeRect = function (targetElm) {\n var position, targetWidth, targetHeight, e, rect;\n hideResizeRect();\n unbindResizeHandleEvents();\n position = dom.getPos(targetElm, rootElement);\n selectedElmX = position.x;\n selectedElmY = position.y;\n rect = targetElm.getBoundingClientRect();\n targetWidth = rect.width || rect.right - rect.left;\n targetHeight = rect.height || rect.bottom - rect.top;\n if (selectedElm !== targetElm) {\n selectedElm = targetElm;\n width = height = 0;\n }\n e = editor.fire('ObjectSelected', { target: targetElm });\n if (isResizable(targetElm) && !e.isDefaultPrevented()) {\n each(resizeHandles, function (handle, name$$1) {\n var handleElm;\n var startDrag = function (e) {\n startX = e.screenX;\n startY = e.screenY;\n startW = getResizeTarget(selectedElm).clientWidth;\n startH = getResizeTarget(selectedElm).clientHeight;\n ratio = startH / startW;\n selectedHandle = handle;\n handle.startPos = {\n x: targetWidth * handle[0] + selectedElmX,\n y: targetHeight * handle[1] + selectedElmY\n };\n startScrollWidth = rootElement.scrollWidth;\n startScrollHeight = rootElement.scrollHeight;\n selectedElmGhost = selectedElm.cloneNode(true);\n dom.addClass(selectedElmGhost, 'mce-clonedresizable');\n dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');\n selectedElmGhost.contentEditable = false;\n selectedElmGhost.unSelectabe = true;\n dom.setStyles(selectedElmGhost, {\n left: selectedElmX,\n top: selectedElmY,\n margin: 0\n });\n selectedElmGhost.removeAttribute('data-mce-selected');\n rootElement.appendChild(selectedElmGhost);\n dom.bind(editableDoc, 'mousemove', resizeGhostElement);\n dom.bind(editableDoc, 'mouseup', endGhostResize);\n if (rootDocument !== editableDoc) {\n dom.bind(rootDocument, 'mousemove', resizeGhostElement);\n dom.bind(rootDocument, 'mouseup', endGhostResize);\n }\n resizeHelper = dom.add(rootElement, 'div', {\n 'class': 'mce-resize-helper',\n 'data-mce-bogus': 'all'\n }, startW + ' × ' + startH);\n };\n handleElm = dom.get('mceResizeHandle' + name$$1);\n if (handleElm) {\n dom.remove(handleElm);\n }\n handleElm = dom.add(rootElement, 'div', {\n 'id': 'mceResizeHandle' + name$$1,\n 'data-mce-bogus': 'all',\n 'class': 'mce-resizehandle',\n 'unselectable': true,\n 'style': 'cursor:' + name$$1 + '-resize; margin:0; padding:0'\n });\n if ($_cvvl9iajkmcwk25.ie === 11) {\n handleElm.contentEditable = false;\n }\n dom.bind(handleElm, 'mousedown', function (e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n startDrag(e);\n });\n handle.elm = handleElm;\n dom.setStyles(handleElm, {\n left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,\n top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2\n });\n });\n } else {\n hideResizeRect();\n }\n selectedElm.setAttribute('data-mce-selected', '1');\n };\n var hideResizeRect = function () {\n var name$$1, handleElm;\n unbindResizeHandleEvents();\n if (selectedElm) {\n selectedElm.removeAttribute('data-mce-selected');\n }\n for (name$$1 in resizeHandles) {\n handleElm = dom.get('mceResizeHandle' + name$$1);\n if (handleElm) {\n dom.unbind(handleElm);\n dom.remove(handleElm);\n }\n }\n };\n var updateResizeRect = function (e) {\n var startElm, controlElm;\n var isChildOrEqual = function (node, parent$$1) {\n if (node) {\n do {\n if (node === parent$$1) {\n return true;\n }\n } while (node = node.parentNode);\n }\n };\n if (resizeStarted || editor.removed) {\n return;\n }\n each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) {\n img.removeAttribute('data-mce-selected');\n });\n controlElm = e.type === 'mousedown' ? e.target : selection.getNode();\n controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0];\n if (isChildOrEqual(controlElm, rootElement)) {\n disableGeckoResize();\n startElm = selection.getStart(true);\n if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {\n showResizeRect(controlElm);\n return;\n }\n }\n hideResizeRect();\n };\n var isWithinContentEditableFalse = function (elm) {\n return isContentEditableFalse$10(getContentEditableRoot$2(editor.getBody(), elm));\n };\n var unbindResizeHandleEvents = function () {\n for (var name$$1 in resizeHandles) {\n var handle = resizeHandles[name$$1];\n if (handle.elm) {\n dom.unbind(handle.elm);\n delete handle.elm;\n }\n }\n };\n var disableGeckoResize = function () {\n try {\n editor.getDoc().execCommand('enableObjectResizing', false, false);\n } catch (ex) {\n }\n };\n editor.on('init', function () {\n disableGeckoResize();\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie >= 11) {\n editor.on('mousedown click', function (e) {\n var target = e.target, nodeName = target.nodeName;\n if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) {\n if (e.button !== 2) {\n editor.selection.select(target, nodeName === 'TABLE');\n }\n if (e.type === 'mousedown') {\n editor.nodeChanged();\n }\n }\n });\n editor.dom.bind(rootElement, 'mscontrolselect', function (e) {\n var delayedSelect = function (node) {\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n editor.selection.select(node);\n });\n };\n if (isWithinContentEditableFalse(e.target)) {\n e.preventDefault();\n delayedSelect(e.target);\n return;\n }\n if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {\n e.preventDefault();\n if (e.target.tagName === 'IMG') {\n delayedSelect(e.target);\n }\n }\n });\n }\n var throttledUpdateResizeRect = $_3l01gcijkmcwk99.throttle(function (e) {\n if (!editor.composing) {\n updateResizeRect(e);\n }\n });\n editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect);\n editor.on('keyup compositionend', function (e) {\n if (selectedElm && selectedElm.nodeName === 'TABLE') {\n throttledUpdateResizeRect(e);\n }\n });\n editor.on('hide blur', hideResizeRect);\n editor.on('contextmenu', contextMenuSelectImage);\n });\n editor.on('remove', unbindResizeHandleEvents);\n var destroy = function () {\n selectedElm = selectedElmGhost = null;\n };\n return {\n isResizable: isResizable,\n showResizeRect: showResizeRect,\n hideResizeRect: hideResizeRect,\n updateResizeRect: updateResizeRect,\n destroy: destroy\n };\n };\n\n var hasCeProperty = function (node) {\n return $_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.isContentEditableFalse(node);\n };\n var findParent$1 = function (node, rootNode, predicate) {\n while (node && node !== rootNode) {\n if (predicate(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var findClosestIeRange = function (clientX, clientY, doc) {\n var element, rng, rects;\n element = doc.elementFromPoint(clientX, clientY);\n rng = doc.body.createTextRange();\n if (!element || element.tagName === 'HTML') {\n element = doc.body;\n }\n rng.moveToElementText(element);\n rects = $_4ujg4tljkmcwkbk.toArray(rng.getClientRects());\n rects = rects.sort(function (a, b) {\n a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY));\n b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY));\n return a - b;\n });\n if (rects.length > 0) {\n clientY = (rects[0].bottom + rects[0].top) / 2;\n try {\n rng.moveToPoint(clientX, clientY);\n rng.collapse(true);\n return rng;\n } catch (ex) {\n }\n }\n return null;\n };\n var moveOutOfContentEditableFalse = function (rng, rootNode) {\n var parentElement = rng && rng.parentElement ? rng.parentElement() : null;\n return $_bjermr1rjkmcwkij.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng;\n };\n var fromPoint$1 = function (clientX, clientY, doc) {\n var rng, point;\n var pointDoc = doc;\n if (pointDoc.caretPositionFromPoint) {\n point = pointDoc.caretPositionFromPoint(clientX, clientY);\n if (point) {\n rng = doc.createRange();\n rng.setStart(point.offsetNode, point.offset);\n rng.collapse(true);\n }\n } else if (doc.caretRangeFromPoint) {\n rng = doc.caretRangeFromPoint(clientX, clientY);\n } else if (pointDoc.body.createTextRange) {\n rng = pointDoc.body.createTextRange();\n try {\n rng.moveToPoint(clientX, clientY);\n rng.collapse(true);\n } catch (ex) {\n rng = findClosestIeRange(clientX, clientY, doc);\n }\n return moveOutOfContentEditableFalse(rng, doc.body);\n }\n return rng;\n };\n var $_52q21w6wjkmcwlna = { fromPoint: fromPoint$1 };\n\n var processRanges = function (editor, ranges) {\n return map(ranges, function (range$$1) {\n var evt = editor.fire('GetSelectionRange', { range: range$$1 });\n return evt.range !== range$$1 ? evt.range : range$$1;\n });\n };\n var $_8161126xjkmcwlnd = { processRanges: processRanges };\n\n var fromElements = function (elements, scope) {\n var doc = scope || document;\n var fragment = doc.createDocumentFragment();\n each(elements, function (element) {\n fragment.appendChild(element.dom());\n });\n return Element$$1.fromDom(fragment);\n };\n var $_a3l7fy70jkmcwloa = { fromElements: fromElements };\n\n var tableModel = Immutable('element', 'width', 'rows');\n var tableRow = Immutable('element', 'cells');\n var cellPosition = Immutable('x', 'y');\n var getSpan = function (td, key) {\n var value = parseInt($_29helg15jkmcwkf0.get(td, key), 10);\n return isNaN(value) ? 1 : value;\n };\n var fillout = function (table, x, y, tr, td) {\n var rowspan = getSpan(td, 'rowspan');\n var colspan = getSpan(td, 'colspan');\n var rows = table.rows();\n for (var y2 = y; y2 < y + rowspan; y2++) {\n if (!rows[y2]) {\n rows[y2] = tableRow($_44uvy22ijkmcwko5.deep(tr), []);\n }\n for (var x2 = x; x2 < x + colspan; x2++) {\n var cells = rows[y2].cells();\n cells[x2] = y2 === y && x2 === x ? td : $_44uvy22ijkmcwko5.shallow(td);\n }\n }\n };\n var cellExists = function (table, x, y) {\n var rows = table.rows();\n var cells = rows[y] ? rows[y].cells() : [];\n return !!cells[x];\n };\n var skipCellsX = function (table, x, y) {\n while (cellExists(table, x, y)) {\n x++;\n }\n return x;\n };\n var getWidth = function (rows) {\n return foldl(rows, function (acc, row) {\n return row.cells().length > acc ? row.cells().length : acc;\n }, 0);\n };\n var findElementPos = function (table, element) {\n var rows = table.rows();\n for (var y = 0; y < rows.length; y++) {\n var cells = rows[y].cells();\n for (var x = 0; x < cells.length; x++) {\n if ($_e4hu6h1ejkmcwkgj.eq(cells[x], element)) {\n return Option.some(cellPosition(x, y));\n }\n }\n }\n return Option.none();\n };\n var extractRows = function (table, sx, sy, ex, ey) {\n var newRows = [];\n var rows = table.rows();\n for (var y = sy; y <= ey; y++) {\n var cells = rows[y].cells();\n var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);\n newRows.push(tableRow(rows[y].element(), slice));\n }\n return newRows;\n };\n var subTable = function (table, startPos, endPos) {\n var sx = startPos.x(), sy = startPos.y();\n var ex = endPos.x(), ey = endPos.y();\n var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);\n return tableModel(table.element(), getWidth(newRows), newRows);\n };\n var createDomTable = function (table, rows) {\n var tableElement = $_44uvy22ijkmcwko5.shallow(table.element());\n var tableBody = Element$$1.fromTag('tbody');\n $_1ev7t1xjkmcwkky.append(tableBody, rows);\n $_f4qt4v1yjkmcwkl2.append(tableElement, tableBody);\n return tableElement;\n };\n var modelRowsToDomRows = function (table) {\n return map(table.rows(), function (row) {\n var cells = map(row.cells(), function (cell) {\n var td = $_44uvy22ijkmcwko5.deep(cell);\n $_29helg15jkmcwkf0.remove(td, 'colspan');\n $_29helg15jkmcwkf0.remove(td, 'rowspan');\n return td;\n });\n var tr = $_44uvy22ijkmcwko5.shallow(row.element());\n $_1ev7t1xjkmcwkky.append(tr, cells);\n return tr;\n });\n };\n var fromDom$2 = function (tableElm) {\n var table = tableModel($_44uvy22ijkmcwko5.shallow(tableElm), 0, []);\n each($_2gqm0n27jkmcwkmi.descendants(tableElm, 'tr'), function (tr, y) {\n each($_2gqm0n27jkmcwkmi.descendants(tr, 'td,th'), function (td, x) {\n fillout(table, skipCellsX(table, x, y), y, tr, td);\n });\n });\n return tableModel(table.element(), getWidth(table.rows()), table.rows());\n };\n var toDom = function (table) {\n return createDomTable(table, modelRowsToDomRows(table));\n };\n var subsection = function (table, startElement, endElement) {\n return findElementPos(table, startElement).bind(function (startPos) {\n return findElementPos(table, endElement).map(function (endPos) {\n return subTable(table, startPos, endPos);\n });\n });\n };\n var $_6wuzo771jkmcwlof = {\n fromDom: fromDom$2,\n toDom: toDom,\n subsection: subsection\n };\n\n var findParentListContainer = function (parents) {\n return find(parents, function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'ul' || $_2xwdjv11jkmcwke0.name(elm) === 'ol';\n });\n };\n var getFullySelectedListWrappers = function (parents, rng) {\n return find(parents, function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'li' && hasAllContentsSelected(elm, rng);\n }).fold(constant([]), function (li) {\n return findParentListContainer(parents).map(function (listCont) {\n return [\n Element$$1.fromTag('li'),\n Element$$1.fromTag($_2xwdjv11jkmcwke0.name(listCont))\n ];\n }).getOr([]);\n });\n };\n var wrap$3 = function (innerElm, elms) {\n var wrapped = foldl(elms, function (acc, elm) {\n $_f4qt4v1yjkmcwkl2.append(elm, acc);\n return elm;\n }, innerElm);\n return elms.length > 0 ? $_a3l7fy70jkmcwloa.fromElements([wrapped]) : wrapped;\n };\n var directListWrappers = function (commonAnchorContainer) {\n if (isListItem(commonAnchorContainer)) {\n return $_ca6pc118jkmcwkfs.parent(commonAnchorContainer).filter(isList).fold(constant([]), function (listElm) {\n return [\n commonAnchorContainer,\n listElm\n ];\n });\n } else {\n return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];\n }\n };\n var getWrapElements = function (rootNode, rng) {\n var commonAnchorContainer = Element$$1.fromDom(rng.commonAncestorContainer);\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(commonAnchorContainer, rootNode);\n var wrapElements = filter(parents, function (elm) {\n return isInline(elm) || isHeading(elm);\n });\n var listWrappers = getFullySelectedListWrappers(parents, rng);\n var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\n return map(allWrappers, $_44uvy22ijkmcwko5.shallow);\n };\n var emptyFragment = function () {\n return $_a3l7fy70jkmcwloa.fromElements([]);\n };\n var getFragmentFromRange = function (rootNode, rng) {\n return wrap$3(Element$$1.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));\n };\n var getParentTable = function (rootElm, cell) {\n return $_4ki4d929jkmcwkmn.ancestor(cell, 'table', curry($_e4hu6h1ejkmcwkgj.eq, rootElm));\n };\n var getTableFragment = function (rootNode, selectedTableCells) {\n return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) {\n var firstCell = selectedTableCells[0];\n var lastCell = selectedTableCells[selectedTableCells.length - 1];\n var fullTableModel = $_6wuzo771jkmcwlof.fromDom(tableElm);\n return $_6wuzo771jkmcwlof.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) {\n return $_a3l7fy70jkmcwloa.fromElements([$_6wuzo771jkmcwlof.toDom(sectionedTableModel)]);\n });\n }).getOrThunk(emptyFragment);\n };\n var getSelectionFragment = function (rootNode, ranges) {\n return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]);\n };\n var read$4 = function (rootNode, ranges) {\n var selectedCells = $_7q5gk44ejkmcwl6p.getCellsFromElementOrRanges(ranges, rootNode);\n return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges);\n };\n var $_2bm266zjkmcwlnj = { read: read$4 };\n\n var getContent = function (editor, args) {\n var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body');\n var sel = editor.selection.getSel();\n var fragment;\n var ranges = $_8161126xjkmcwlnd.processRanges(editor, $_admly54fjkmcwl6u.getRanges(sel));\n args = args || {};\n args.get = true;\n args.format = args.format || 'html';\n args.selection = true;\n args = editor.fire('BeforeGetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('GetContent', args);\n return args.content;\n }\n if (args.format === 'text') {\n return editor.selection.isCollapsed() ? '' : $_cadvcr2pjkmcwkph.trim(rng.text || (sel.toString ? sel.toString() : ''));\n }\n if (rng.cloneContents) {\n fragment = args.contextual ? $_2bm266zjkmcwlnj.read(Element$$1.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();\n if (fragment) {\n tmpElm.appendChild(fragment);\n }\n } else if (rng.item !== undefined || rng.htmlText !== undefined) {\n tmpElm.innerHTML = '
' + (rng.item ? rng.item(0).outerHTML : rng.htmlText);\n tmpElm.removeChild(tmpElm.firstChild);\n } else {\n tmpElm.innerHTML = rng.toString();\n }\n args.getInner = true;\n var content = editor.selection.serializer.serialize(tmpElm, args);\n if (args.format === 'tree') {\n return content;\n }\n args.content = editor.selection.isCollapsed() ? '' : content;\n editor.fire('GetContent', args);\n return args.content;\n };\n var $_eu7sms6yjkmcwlnf = { getContent: getContent };\n\n var setContent = function (editor, content, args) {\n var rng = editor.selection.getRng(), caretNode;\n var doc = editor.getDoc();\n var frag, temp;\n args = args || { format: 'html' };\n args.set = true;\n args.selection = true;\n args.content = content;\n if (!args.no_events) {\n args = editor.fire('BeforeSetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('SetContent', args);\n return;\n }\n }\n content = args.content;\n if (rng.insertNode) {\n content += '_';\n if (rng.startContainer === doc && rng.endContainer === doc) {\n doc.body.innerHTML = content;\n } else {\n rng.deleteContents();\n if (doc.body.childNodes.length === 0) {\n doc.body.innerHTML = content;\n } else {\n if (rng.createContextualFragment) {\n rng.insertNode(rng.createContextualFragment(content));\n } else {\n frag = doc.createDocumentFragment();\n temp = doc.createElement('div');\n frag.appendChild(temp);\n temp.outerHTML = content;\n rng.insertNode(frag);\n }\n }\n }\n caretNode = editor.dom.get('__caret');\n rng = doc.createRange();\n rng.setStartBefore(caretNode);\n rng.setEndBefore(caretNode);\n editor.selection.setRng(rng);\n editor.dom.remove('__caret');\n try {\n editor.selection.setRng(rng);\n } catch (ex) {\n }\n } else {\n if (rng.item) {\n doc.execCommand('Delete', false, null);\n rng = editor.getRng();\n }\n if (/^\\s+/.test(content)) {\n rng.pasteHTML('_' + content);\n editor.dom.remove('__mce_tmp');\n } else {\n rng.pasteHTML(content);\n }\n }\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n };\n var $_b7rwud72jkmcwlow = { setContent: setContent };\n\n var getEndpointElement = function (root, rng, start, real, resolve) {\n var container = start ? rng.startContainer : rng.endContainer;\n var offset = start ? rng.startOffset : rng.endOffset;\n return Option.from(container).map(Element$$1.fromDom).map(function (elm) {\n return !real || !rng.collapsed ? $_ca6pc118jkmcwkfs.child(elm, resolve(elm, offset)).getOr(elm) : elm;\n }).bind(function (elm) {\n return $_2xwdjv11jkmcwke0.isElement(elm) ? Option.some(elm) : $_ca6pc118jkmcwkfs.parent(elm);\n }).map(function (elm) {\n return elm.dom();\n }).getOr(root);\n };\n var getStart$2 = function (root, rng, real) {\n return getEndpointElement(root, rng, true, real, function (elm, offset) {\n return Math.min($_ca6pc118jkmcwkfs.childNodesCount(elm), offset);\n });\n };\n var getEnd = function (root, rng, real) {\n return getEndpointElement(root, rng, false, real, function (elm, offset) {\n return offset > 0 ? offset - 1 : offset;\n });\n };\n var skipEmptyTextNodes = function (node, forwards) {\n var orig = node;\n while (node && $_bjermr1rjkmcwkij.isText(node) && node.length === 0) {\n node = forwards ? node.nextSibling : node.previousSibling;\n }\n return node || orig;\n };\n var getNode$1 = function (root, rng) {\n var elm, startContainer, endContainer, startOffset, endOffset;\n if (!rng) {\n return root;\n }\n startContainer = rng.startContainer;\n endContainer = rng.endContainer;\n startOffset = rng.startOffset;\n endOffset = rng.endOffset;\n elm = rng.commonAncestorContainer;\n if (!rng.collapsed) {\n if (startContainer === endContainer) {\n if (endOffset - startOffset < 2) {\n if (startContainer.hasChildNodes()) {\n elm = startContainer.childNodes[startOffset];\n }\n }\n }\n if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {\n if (startContainer.length === startOffset) {\n startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);\n } else {\n startContainer = startContainer.parentNode;\n }\n if (endOffset === 0) {\n endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);\n } else {\n endContainer = endContainer.parentNode;\n }\n if (startContainer && startContainer === endContainer) {\n return startContainer;\n }\n }\n }\n if (elm && elm.nodeType === 3) {\n return elm.parentNode;\n }\n return elm;\n };\n var getSelectedBlocks = function (dom, rng, startElm, endElm) {\n var node, root;\n var selectedBlocks = [];\n root = dom.getRoot();\n startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);\n endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);\n if (startElm && startElm !== root) {\n selectedBlocks.push(startElm);\n }\n if (startElm && endElm && startElm !== endElm) {\n node = startElm;\n var walker = new TreeWalker(startElm, root);\n while ((node = walker.next()) && node !== endElm) {\n if (dom.isBlock(node)) {\n selectedBlocks.push(node);\n }\n }\n }\n if (endElm && startElm !== endElm && endElm !== root) {\n selectedBlocks.push(endElm);\n }\n return selectedBlocks;\n };\n var select$1 = function (dom, node, content) {\n return Option.from(node).map(function (node) {\n var idx = dom.nodeIndex(node);\n var rng = dom.createRng();\n rng.setStart(node.parentNode, idx);\n rng.setEnd(node.parentNode, idx + 1);\n if (content) {\n moveEndPoint$1(dom, rng, node, true);\n moveEndPoint$1(dom, rng, node, false);\n }\n return rng;\n });\n };\n\n var each$19 = $_4ujg4tljkmcwkbk.each;\n var isNativeIeSelection = function (rng) {\n return !!rng.select;\n };\n var isAttachedToDom = function (node) {\n return !!(node && node.ownerDocument) && $_e4hu6h1ejkmcwkgj.contains(Element$$1.fromDom(node.ownerDocument), Element$$1.fromDom(node));\n };\n var isValidRange = function (rng) {\n if (!rng) {\n return false;\n } else if (isNativeIeSelection(rng)) {\n return true;\n } else {\n return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);\n }\n };\n var Selection$1 = function (dom, win, serializer, editor) {\n var bookmarkManager, controlSelection;\n var selectedRange, explicitRange, selectorChangedData;\n var setCursorLocation = function (node, offset) {\n var rng = dom.createRng();\n if (!node) {\n moveEndPoint$1(dom, rng, editor.getBody(), true);\n setRng(rng);\n } else {\n rng.setStart(node, offset);\n rng.setEnd(node, offset);\n setRng(rng);\n collapse(false);\n }\n };\n var getContent = function (args) {\n return $_eu7sms6yjkmcwlnf.getContent(editor, args);\n };\n var setContent = function (content, args) {\n return $_b7rwud72jkmcwlow.setContent(editor, content, args);\n };\n var getStart = function (real) {\n return getStart$2(editor.getBody(), getRng(), real);\n };\n var getEnd$$1 = function (real) {\n return getEnd(editor.getBody(), getRng(), real);\n };\n var getBookmark = function (type, normalized) {\n return bookmarkManager.getBookmark(type, normalized);\n };\n var moveToBookmark = function (bookmark) {\n return bookmarkManager.moveToBookmark(bookmark);\n };\n var select = function (node, content) {\n select$1(dom, node, content).each(setRng);\n return node;\n };\n var isCollapsed = function () {\n var rng = getRng(), sel = getSel();\n if (!rng || rng.item) {\n return false;\n }\n if (rng.compareEndPoints) {\n return rng.compareEndPoints('StartToEnd', rng) === 0;\n }\n return !sel || rng.collapsed;\n };\n var collapse = function (toStart) {\n var rng = getRng();\n rng.collapse(!!toStart);\n setRng(rng);\n };\n var getSel = function () {\n return win.getSelection ? win.getSelection() : win.document.selection;\n };\n var getRng = function () {\n var selection, rng, elm, doc;\n var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) {\n try {\n return sourceRange.compareBoundaryPoints(how, destinationRange);\n } catch (ex) {\n return -1;\n }\n };\n if (!win) {\n return null;\n }\n doc = win.document;\n if (typeof doc === 'undefined' || doc === null) {\n return null;\n }\n if (editor.bookmark !== undefined && $_e3v8sn4vjkmcwl9y.hasFocus(editor) === false) {\n var bookmark = $_39c3zs4ljkmcwl86.getRng(editor);\n if (bookmark.isSome()) {\n return bookmark.map(function (r) {\n return $_8161126xjkmcwlnd.processRanges(editor, [r])[0];\n }).getOr(doc.createRange());\n }\n }\n try {\n if (selection = getSel()) {\n if (selection.rangeCount > 0) {\n rng = selection.getRangeAt(0);\n } else {\n rng = selection.createRange ? selection.createRange() : doc.createRange();\n }\n }\n } catch (ex) {\n }\n rng = $_8161126xjkmcwlnd.processRanges(editor, [rng])[0];\n if (!rng) {\n rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();\n }\n if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {\n elm = dom.getRoot();\n rng.setStart(elm, 0);\n rng.setEnd(elm, 0);\n }\n if (selectedRange && explicitRange) {\n if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {\n rng = explicitRange;\n } else {\n selectedRange = null;\n explicitRange = null;\n }\n }\n return rng;\n };\n var setRng = function (rng, forward) {\n var sel, node, evt;\n if (!isValidRange(rng)) {\n return;\n }\n var ieRange = isNativeIeSelection(rng) ? rng : null;\n if (ieRange) {\n explicitRange = null;\n try {\n ieRange.select();\n } catch (ex) {\n }\n return;\n }\n sel = getSel();\n evt = editor.fire('SetSelectionRange', {\n range: rng,\n forward: forward\n });\n rng = evt.range;\n if (sel) {\n explicitRange = rng;\n try {\n sel.removeAllRanges();\n sel.addRange(rng);\n } catch (ex) {\n }\n if (forward === false && sel.extend) {\n sel.collapse(rng.endContainer, rng.endOffset);\n sel.extend(rng.startContainer, rng.startOffset);\n }\n selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\n }\n if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !$_cvvl9iajkmcwk25.ie) {\n if (rng.endOffset - rng.startOffset < 2) {\n if (rng.startContainer.hasChildNodes()) {\n node = rng.startContainer.childNodes[rng.startOffset];\n if (node && node.tagName === 'IMG') {\n sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);\n if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {\n sel.setBaseAndExtent(node, 0, node, 1);\n }\n }\n }\n }\n }\n editor.fire('AfterSetSelectionRange', {\n range: rng,\n forward: forward\n });\n };\n var setNode = function (elm) {\n setContent(dom.getOuterHTML(elm));\n return elm;\n };\n var getNode = function () {\n return getNode$1(editor.getBody(), getRng());\n };\n var getSelectedBlocks$$1 = function (startElm, endElm) {\n return getSelectedBlocks(dom, getRng(), startElm, endElm);\n };\n var isForward = function () {\n var sel = getSel();\n var anchorRange, focusRange;\n if (!sel || !sel.anchorNode || !sel.focusNode) {\n return true;\n }\n anchorRange = dom.createRng();\n anchorRange.setStart(sel.anchorNode, sel.anchorOffset);\n anchorRange.collapse(true);\n focusRange = dom.createRng();\n focusRange.setStart(sel.focusNode, sel.focusOffset);\n focusRange.collapse(true);\n return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\n };\n var normalize = function () {\n var rng = getRng();\n var sel = getSel();\n if (!$_admly54fjkmcwl6u.hasMultipleRanges(sel) && hasAnyRanges(editor)) {\n var normRng = $_21c07i4jjkmcwl7w.normalize(dom, rng);\n normRng.each(function (normRng) {\n setRng(normRng, isForward());\n });\n return normRng.getOr(rng);\n }\n return rng;\n };\n var selectorChanged = function (selector, callback) {\n var currentSelectors;\n if (!selectorChangedData) {\n selectorChangedData = {};\n currentSelectors = {};\n editor.on('NodeChange', function (e) {\n var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};\n each$19(selectorChangedData, function (callbacks, selector) {\n each$19(parents, function (node) {\n if (dom.is(node, selector)) {\n if (!currentSelectors[selector]) {\n each$19(callbacks, function (callback) {\n callback(true, {\n node: node,\n selector: selector,\n parents: parents\n });\n });\n currentSelectors[selector] = callbacks;\n }\n matchedSelectors[selector] = callbacks;\n return false;\n }\n });\n });\n each$19(currentSelectors, function (callbacks, selector) {\n if (!matchedSelectors[selector]) {\n delete currentSelectors[selector];\n each$19(callbacks, function (callback) {\n callback(false, {\n node: node,\n selector: selector,\n parents: parents\n });\n });\n }\n });\n });\n }\n if (!selectorChangedData[selector]) {\n selectorChangedData[selector] = [];\n }\n selectorChangedData[selector].push(callback);\n return exports;\n };\n var getScrollContainer = function () {\n var scrollContainer;\n var node = dom.getRoot();\n while (node && node.nodeName !== 'BODY') {\n if (node.scrollHeight > node.clientHeight) {\n scrollContainer = node;\n break;\n }\n node = node.parentNode;\n }\n return scrollContainer;\n };\n var scrollIntoView = function (elm, alignToTop) {\n return $_a6610x37jkmcwkt5.scrollElementIntoView(editor, elm, alignToTop);\n };\n var placeCaretAt = function (clientX, clientY) {\n return setRng($_52q21w6wjkmcwlna.fromPoint(clientX, clientY, editor.getDoc()));\n };\n var getBoundingClientRect = function () {\n var rng = getRng();\n return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();\n };\n var destroy = function () {\n win = selectedRange = explicitRange = null;\n controlSelection.destroy();\n };\n var exports = {\n bookmarkManager: null,\n controlSelection: null,\n dom: dom,\n win: win,\n serializer: serializer,\n editor: editor,\n collapse: collapse,\n setCursorLocation: setCursorLocation,\n getContent: getContent,\n setContent: setContent,\n getBookmark: getBookmark,\n moveToBookmark: moveToBookmark,\n select: select,\n isCollapsed: isCollapsed,\n isForward: isForward,\n setNode: setNode,\n getNode: getNode,\n getSel: getSel,\n setRng: setRng,\n getRng: getRng,\n getStart: getStart,\n getEnd: getEnd$$1,\n getSelectedBlocks: getSelectedBlocks$$1,\n normalize: normalize,\n selectorChanged: selectorChanged,\n getScrollContainer: getScrollContainer,\n scrollIntoView: scrollIntoView,\n placeCaretAt: placeCaretAt,\n getBoundingClientRect: getBoundingClientRect,\n destroy: destroy\n };\n bookmarkManager = BookmarkManager$1(exports);\n controlSelection = ControlSelection(exports, editor);\n exports.bookmarkManager = bookmarkManager;\n exports.controlSelection = controlSelection;\n return exports;\n };\n\n var isContentEditableFalse$11 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var getSelectedNode$1 = getSelectedNode;\n var isAfterContentEditableFalse$2 = isAfterContentEditableFalse;\n var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse;\n var getVisualCaretPosition = function (walkFn, caretPosition) {\n while (caretPosition = walkFn(caretPosition)) {\n if (caretPosition.isVisible()) {\n return caretPosition;\n }\n }\n return caretPosition;\n };\n var isMoveInsideSameBlock = function (from, to) {\n var inSameBlock = isInSameBlock(from, to);\n if (!inSameBlock && $_bjermr1rjkmcwkij.isBr(from.getNode())) {\n return true;\n }\n return inSameBlock;\n };\n var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) {\n var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock;\n var forwards = direction === HDirection.Forwards;\n var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2;\n if (!range.collapsed) {\n node = getSelectedNode$1(range);\n if (isContentEditableFalse$11(node)) {\n return showCaret(direction, editor, node, direction === HDirection.Backwards, true);\n }\n }\n rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n if (isBeforeContentEditableFalseFn(caretPosition)) {\n return selectNode(editor, caretPosition.getNode(!forwards));\n }\n caretPosition = getNextPosFn(caretPosition);\n if (!caretPosition) {\n if (rangeIsInContainerBlock) {\n return range;\n }\n return null;\n }\n if (isBeforeContentEditableFalseFn(caretPosition)) {\n return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true);\n }\n peekCaretPosition = getNextPosFn(caretPosition);\n if (isBeforeContentEditableFalseFn(peekCaretPosition)) {\n if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) {\n return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true);\n }\n }\n if (rangeIsInContainerBlock) {\n return renderRangeCaret(editor, caretPosition.toRange(), true);\n }\n return null;\n };\n var moveToCeFalseVertically = function (direction, editor, walkerFn, range) {\n var caretPosition, linePositions, nextLinePositions;\n var closestNextLineRect, caretClientRect, clientX;\n var dist1, dist2, contentEditableFalseNode;\n contentEditableFalseNode = getSelectedNode$1(range);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);\n nextLinePositions = $_9g1fibmjkmcwkbu.filter(linePositions, isLine(1));\n caretClientRect = $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) {\n contentEditableFalseNode = caretPosition.getNode();\n }\n if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) {\n contentEditableFalseNode = caretPosition.getNode(true);\n }\n if (!caretClientRect) {\n return null;\n }\n clientX = caretClientRect.left;\n closestNextLineRect = findClosestClientRect(nextLinePositions, clientX);\n if (closestNextLineRect) {\n if (isContentEditableFalse$11(closestNextLineRect.node)) {\n dist1 = Math.abs(clientX - closestNextLineRect.left);\n dist2 = Math.abs(clientX - closestNextLineRect.right);\n return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true);\n }\n }\n if (contentEditableFalseNode) {\n var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode);\n closestNextLineRect = findClosestClientRect($_9g1fibmjkmcwkbu.filter(caretPositions, isLine(1)), clientX);\n if (closestNextLineRect) {\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n }\n closestNextLineRect = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.filter(caretPositions, isLine(0)));\n if (closestNextLineRect) {\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n }\n }\n };\n var createTextBlock = function (editor) {\n var textBlock = editor.dom.create(editor.settings.forced_root_block);\n if (!$_cvvl9iajkmcwk25.ie || $_cvvl9iajkmcwk25.ie >= 11) {\n textBlock.innerHTML = '
';\n }\n return textBlock;\n };\n var exitPreBlock = function (editor, direction, range) {\n var pre, caretPos, newBlock;\n var caretWalker = CaretWalker(editor.getBody());\n var getNextVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\n if (range.collapsed && editor.settings.forced_root_block) {\n pre = editor.dom.getParent(range.startContainer, 'PRE');\n if (!pre) {\n return;\n }\n if (direction === 1) {\n caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\n } else {\n caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\n }\n if (!caretPos) {\n newBlock = createTextBlock(editor);\n if (direction === 1) {\n editor.$(pre).after(newBlock);\n } else {\n editor.$(pre).before(newBlock);\n }\n editor.selection.select(newBlock, true);\n editor.selection.collapse();\n }\n }\n };\n var getHorizontalRange = function (editor, forward) {\n var caretWalker = CaretWalker(editor.getBody());\n var getNextVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\n var newRange;\n var direction = forward ? HDirection.Forwards : HDirection.Backwards;\n var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;\n var range = editor.selection.getRng();\n newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range);\n if (newRange) {\n return newRange;\n }\n return null;\n };\n var getVerticalRange = function (editor, down) {\n var newRange;\n var direction = down ? 1 : -1;\n var walkerFn = down ? downUntil : upUntil;\n var range = editor.selection.getRng();\n newRange = moveToCeFalseVertically(direction, editor, walkerFn, range);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range);\n if (newRange) {\n return newRange;\n }\n return null;\n };\n var moveH$1 = function (editor, forward) {\n return function () {\n var newRng = getHorizontalRange(editor, forward);\n if (newRng) {\n editor.selection.setRng(newRng);\n return true;\n } else {\n return false;\n }\n };\n };\n var moveV$1 = function (editor, down) {\n return function () {\n var newRng = getVerticalRange(editor, down);\n if (newRng) {\n editor.selection.setRng(newRng);\n return true;\n } else {\n return false;\n }\n };\n };\n\n var defaultPatterns = function (patterns) {\n return map(patterns, function (pattern) {\n return merge({\n shiftKey: false,\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n keyCode: 0,\n action: noop\n }, pattern);\n });\n };\n var matchesEvent = function (pattern, evt) {\n return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;\n };\n var match$1 = function (patterns, evt) {\n return bind(defaultPatterns(patterns), function (pattern) {\n return matchesEvent(pattern, evt) ? [pattern] : [];\n });\n };\n var action = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n };\n var execute = function (patterns, evt) {\n return find(match$1(patterns, evt), function (pattern) {\n return pattern.action();\n });\n };\n var $_3olmgr77jkmcwlpj = {\n match: match$1,\n action: action,\n execute: execute\n };\n\n var executeKeydownOverride = function (editor, caret, evt) {\n var os = $_b1ykk4ojkmcwkcj.detect().os;\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: moveH$1(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: moveH$1(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.UP,\n action: moveV$1(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\n action: moveV$1(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: moveH(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: moveH(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.UP,\n action: moveV(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\n action: moveV(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: $_dl6t9m4ajkmcwl5b.moveNextWord(editor, caret)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: $_dl6t9m4ajkmcwl5b.movePrevWord(editor, caret)\n }\n ], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var setup$7 = function (editor, caret) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride(editor, caret, evt);\n }\n });\n };\n var $_emza9w75jkmcwlp9 = { setup: setup$7 };\n\n var getParentInlines = function (rootElm, startElm) {\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(startElm, rootElm);\n return findIndex(parents, isBlock).fold(constant(parents), function (index) {\n return parents.slice(0, index);\n });\n };\n var hasOnlyOneChild$1 = function (elm) {\n return $_ca6pc118jkmcwkfs.children(elm).length === 1;\n };\n var deleteLastPosition = function (forward, editor, target, parentInlines) {\n var isFormatElement$$1 = curry(isFormatElement, editor);\n var formatNodes = map(filter(parentInlines, isFormatElement$$1), function (elm) {\n return elm.dom();\n });\n if (formatNodes.length === 0) {\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, target);\n } else {\n var pos = replaceWithCaretFormat(target.dom(), formatNodes);\n editor.selection.setRng(pos.toRange());\n }\n };\n var deleteCaret$1 = function (editor, forward) {\n var rootElm = Element$$1.fromDom(editor.getBody());\n var startElm = Element$$1.fromDom(editor.selection.getStart());\n var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);\n return last(parentInlines).map(function (target) {\n var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n if ($_8z75uj3sjkmcwkx3.willDeleteLastPositionInElement(forward, fromPos, target.dom())) {\n deleteLastPosition(forward, editor, target, parentInlines);\n return true;\n } else {\n return false;\n }\n }).getOr(false);\n };\n var backspaceDelete$5 = function (editor, forward) {\n return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false;\n };\n var $_7tr96779jkmcwlpz = { backspaceDelete: backspaceDelete$5 };\n\n var executeKeydownOverride$1 = function (editor, caret, evt) {\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, true)\n }\n ], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var executeKeyupOverride = function (editor, evt) {\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.paddEmptyElement, editor)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.paddEmptyElement, editor)\n }\n ], evt);\n };\n var setup$8 = function (editor, caret) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride$1(editor, caret, evt);\n }\n });\n editor.on('keyup', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeyupOverride(editor, evt);\n }\n });\n };\n var $_4dsl7478jkmcwlpw = { setup: setup$8 };\n\n var firstNonWhiteSpaceNodeSibling = function (node) {\n while (node) {\n if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\\r\\n\\s]/.test(node.data)) {\n return node;\n }\n node = node.nextSibling;\n }\n };\n var moveToCaretPosition = function (editor, root) {\n var walker, node, rng, lastNode = root, tempElm;\n var dom = editor.dom;\n var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();\n if (!root) {\n return;\n }\n if (/^(LI|DT|DD)$/.test(root.nodeName)) {\n var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);\n if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {\n root.insertBefore(dom.doc.createTextNode('\\xA0'), root.firstChild);\n }\n }\n rng = dom.createRng();\n root.normalize();\n if (root.hasChildNodes()) {\n walker = new TreeWalker(root, root);\n while (node = walker.current()) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n rng.setStart(node, 0);\n rng.setEnd(node, 0);\n break;\n }\n if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {\n rng.setStartBefore(node);\n rng.setEndBefore(node);\n break;\n }\n lastNode = node;\n node = walker.next();\n }\n if (!node) {\n rng.setStart(lastNode, 0);\n rng.setEnd(lastNode, 0);\n }\n } else {\n if ($_bjermr1rjkmcwkij.isBr(root)) {\n if (root.nextSibling && dom.isBlock(root.nextSibling)) {\n rng.setStartBefore(root);\n rng.setEndBefore(root);\n } else {\n rng.setStartAfter(root);\n rng.setEndAfter(root);\n }\n } else {\n rng.setStart(root, 0);\n rng.setEnd(root, 0);\n }\n }\n editor.selection.setRng(rng);\n dom.remove(tempElm);\n editor.selection.scrollIntoView(root);\n };\n var getEditableRoot = function (dom, node) {\n var root = dom.getRoot();\n var parent, editableRoot;\n parent = node;\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n if (dom.getContentEditable(parent) === 'true') {\n editableRoot = parent;\n }\n parent = parent.parentNode;\n }\n return parent !== root ? editableRoot : root;\n };\n var getParentBlock$2 = function (editor) {\n return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));\n };\n var getParentBlockName = function (editor) {\n return getParentBlock$2(editor).fold(constant(''), function (parentBlock) {\n return parentBlock.nodeName.toUpperCase();\n });\n };\n var isListItemParentBlock = function (editor) {\n return getParentBlock$2(editor).filter(function (elm) {\n return isListItem(Element$$1.fromDom(elm));\n }).isSome();\n };\n var $_79nvm87ejkmcwlqu = {\n moveToCaretPosition: moveToCaretPosition,\n getEditableRoot: getEditableRoot,\n getParentBlock: getParentBlock$2,\n getParentBlockName: getParentBlockName,\n isListItemParentBlock: isListItemParentBlock\n };\n\n var hasFirstChild = function (elm, name) {\n return elm.firstChild && elm.firstChild.nodeName === name;\n };\n var hasParent$1 = function (elm, parentName) {\n return elm && elm.parentNode && elm.parentNode.nodeName === parentName;\n };\n var isListBlock = function (elm) {\n return elm && /^(OL|UL|LI)$/.test(elm.nodeName);\n };\n var isNestedList = function (elm) {\n return isListBlock(elm) && isListBlock(elm.parentNode);\n };\n var getContainerBlock = function (containerBlock) {\n var containerBlockParent = containerBlock.parentNode;\n if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {\n return containerBlockParent;\n }\n return containerBlock;\n };\n var isFirstOrLastLi = function (containerBlock, parentBlock, first) {\n var node = containerBlock[first ? 'firstChild' : 'lastChild'];\n while (node) {\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n break;\n }\n node = node[first ? 'nextSibling' : 'previousSibling'];\n }\n return node === parentBlock;\n };\n var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) {\n var dom = editor.dom;\n var rng = editor.selection.getRng();\n if (containerBlock === editor.getBody()) {\n return;\n }\n if (isNestedList(containerBlock)) {\n newBlockName = 'LI';\n }\n var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');\n if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {\n if (hasParent$1(containerBlock, 'LI')) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n } else {\n dom.replace(newBlock, containerBlock);\n }\n } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {\n if (hasParent$1(containerBlock, 'LI')) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n newBlock.appendChild(dom.doc.createTextNode(' '));\n newBlock.appendChild(containerBlock);\n } else {\n containerBlock.parentNode.insertBefore(newBlock, containerBlock);\n }\n } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n } else {\n containerBlock = getContainerBlock(containerBlock);\n var tmpRng = rng.cloneRange();\n tmpRng.setStartAfter(parentBlock);\n tmpRng.setEndAfter(containerBlock);\n var fragment = tmpRng.extractContents();\n if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {\n newBlock = fragment.firstChild;\n dom.insertAfter(fragment, containerBlock);\n } else {\n dom.insertAfter(fragment, containerBlock);\n dom.insertAfter(newBlock, containerBlock);\n }\n }\n dom.remove(parentBlock);\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n };\n var $_5ckamj7djkmcwlqo = { insert: insert$1 };\n\n var isEmptyAnchor = function (elm) {\n return elm && elm.nodeName === 'A' && $_4ujg4tljkmcwkbk.trim($_cadvcr2pjkmcwkph.trim(elm.innerText || elm.textContent)).length === 0;\n };\n var isTableCell$5 = function (node) {\n return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\n };\n var emptyBlock = function (elm) {\n elm.innerHTML = '
';\n };\n var containerAndSiblingName = function (container, nodeName) {\n return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;\n };\n var canSplitBlock = function (dom, node) {\n return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true';\n };\n var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) {\n var node = block;\n var firstChilds = [];\n var i;\n if (!node) {\n return;\n }\n while (node = node.firstChild) {\n if (dom.isBlock(node)) {\n return;\n }\n if ($_bjermr1rjkmcwkij.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n firstChilds.push(node);\n }\n }\n i = firstChilds.length;\n while (i--) {\n node = firstChilds[i];\n if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') {\n dom.remove(node);\n } else {\n if (isEmptyAnchor(node)) {\n dom.remove(node);\n }\n }\n }\n };\n var normalizeZwspOffset = function (start, container, offset) {\n if ($_bjermr1rjkmcwkij.isText(container) === false) {\n return offset;\n } else if (start) {\n return offset === 1 && container.data.charAt(offset - 1) === $_cadvcr2pjkmcwkph.ZWSP ? 0 : offset;\n } else {\n return offset === container.data.length - 1 && container.data.charAt(offset) === $_cadvcr2pjkmcwkph.ZWSP ? container.data.length : offset;\n }\n };\n var includeZwspInRange = function (rng) {\n var newRng = rng.cloneRange();\n newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));\n newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));\n return newRng;\n };\n var trimLeadingLineBreaks = function (node) {\n do {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n node.nodeValue = node.nodeValue.replace(/^[\\r\\n]+/, '');\n }\n node = node.firstChild;\n } while (node);\n };\n var getEditableRoot$1 = function (dom, node) {\n var root = dom.getRoot();\n var parent, editableRoot;\n parent = node;\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n if (dom.getContentEditable(parent) === 'true') {\n editableRoot = parent;\n }\n parent = parent.parentNode;\n }\n return parent !== root ? editableRoot : root;\n };\n var setForcedBlockAttrs = function (editor, node) {\n var forcedRootBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\n editor.dom.setAttribs(node, $_2ycm1438jkmcwkta.getForcedRootBlockAttrs(editor));\n }\n };\n var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) {\n var newBlock, parentBlock, startNode, node, next, rootBlockName;\n var blockName = newBlockName || 'P';\n var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container);\n parentBlock = dom.getParent(container, dom.isBlock);\n if (!parentBlock || !canSplitBlock(dom, parentBlock)) {\n parentBlock = parentBlock || editableRoot;\n if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) {\n rootBlockName = parentBlock.nodeName.toLowerCase();\n } else {\n rootBlockName = parentBlock.parentNode.nodeName.toLowerCase();\n }\n if (!parentBlock.hasChildNodes()) {\n newBlock = dom.create(blockName);\n setForcedBlockAttrs(editor, newBlock);\n parentBlock.appendChild(newBlock);\n rng.setStart(newBlock, 0);\n rng.setEnd(newBlock, 0);\n return newBlock;\n }\n node = container;\n while (node.parentNode !== parentBlock) {\n node = node.parentNode;\n }\n while (node && !dom.isBlock(node)) {\n startNode = node;\n node = node.previousSibling;\n }\n if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) {\n newBlock = dom.create(blockName);\n setForcedBlockAttrs(editor, newBlock);\n startNode.parentNode.insertBefore(newBlock, startNode);\n node = startNode;\n while (node && !dom.isBlock(node)) {\n next = node.nextSibling;\n newBlock.appendChild(node);\n node = next;\n }\n rng.setStart(container, offset);\n rng.setEnd(container, offset);\n }\n }\n return container;\n };\n var addBrToBlockIfNeeded = function (dom, block) {\n var lastChild;\n block.normalize();\n lastChild = block.lastChild;\n if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {\n dom.add(block, 'br');\n }\n };\n var insert$2 = function (editor, evt) {\n var tmpRng, editableRoot, container, offset, parentBlock, shiftKey;\n var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;\n var dom = editor.dom;\n var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();\n var rng = editor.selection.getRng();\n var createNewBlock = function (name) {\n var node = container, block, clonedNode, caretNode;\n var textInlineElements = schema.getTextInlineElements();\n if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\n block = dom.create(name || newBlockName);\n setForcedBlockAttrs(editor, block);\n } else {\n block = parentBlock.cloneNode(false);\n }\n caretNode = block;\n if ($_2ycm1438jkmcwkta.shouldKeepStyles(editor) === false) {\n dom.setAttrib(block, 'style', null);\n dom.setAttrib(block, 'class', null);\n } else {\n do {\n if (textInlineElements[node.nodeName]) {\n if (isCaretNode(node)) {\n continue;\n }\n clonedNode = node.cloneNode(false);\n dom.setAttrib(clonedNode, 'id', '');\n if (block.hasChildNodes()) {\n clonedNode.appendChild(block.firstChild);\n block.appendChild(clonedNode);\n } else {\n caretNode = clonedNode;\n block.appendChild(clonedNode);\n }\n }\n } while ((node = node.parentNode) && node !== editableRoot);\n }\n emptyBlock(caretNode);\n return block;\n };\n var isCaretAtStartOrEndOfBlock = function (start) {\n var walker, node, name, normalizedOffset;\n normalizedOffset = normalizeZwspOffset(start, container, offset);\n if ($_bjermr1rjkmcwkij.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {\n return false;\n }\n if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {\n return true;\n }\n if (start && $_bjermr1rjkmcwkij.isElement(container) && container === parentBlock.firstChild) {\n return true;\n }\n if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {\n return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;\n }\n walker = new TreeWalker(container, parentBlock);\n if ($_bjermr1rjkmcwkij.isText(container)) {\n if (start && normalizedOffset === 0) {\n walker.prev();\n } else if (!start && normalizedOffset === container.nodeValue.length) {\n walker.next();\n }\n }\n while (node = walker.current()) {\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n if (!node.getAttribute('data-mce-bogus')) {\n name = node.nodeName.toLowerCase();\n if (nonEmptyElementsMap[name] && name !== 'br') {\n return false;\n }\n }\n } else if ($_bjermr1rjkmcwkij.isText(node) && !/^[ \\t\\r\\n]*$/.test(node.nodeValue)) {\n return false;\n }\n if (start) {\n walker.prev();\n } else {\n walker.next();\n }\n }\n return true;\n };\n var insertNewBlockAfter = function () {\n if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {\n newBlock = createNewBlock(newBlockName);\n } else {\n newBlock = createNewBlock();\n }\n if ($_2ycm1438jkmcwkta.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) {\n newBlock = dom.split(containerBlock, parentBlock);\n } else {\n dom.insertAfter(newBlock, parentBlock);\n }\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n };\n $_21c07i4jjkmcwl7w.normalize(dom, rng).each(function (normRng) {\n rng.setStart(normRng.startContainer, normRng.startOffset);\n rng.setEnd(normRng.endContainer, normRng.endOffset);\n });\n container = rng.startContainer;\n offset = rng.startOffset;\n newBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n shiftKey = evt.shiftKey;\n if ($_bjermr1rjkmcwkij.isElement(container) && container.hasChildNodes()) {\n isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n if (isAfterLastNodeInContainer && $_bjermr1rjkmcwkij.isText(container)) {\n offset = container.nodeValue.length;\n } else {\n offset = 0;\n }\n }\n editableRoot = getEditableRoot$1(dom, container);\n if (!editableRoot) {\n return;\n }\n if (newBlockName && !shiftKey || !newBlockName && shiftKey) {\n container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);\n }\n parentBlock = dom.getParent(container, dom.isBlock);\n containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n if (containerBlockName === 'LI' && !evt.ctrlKey) {\n parentBlock = containerBlock;\n containerBlock = containerBlock.parentNode;\n parentBlockName = containerBlockName;\n }\n if (/^(LI|DT|DD)$/.test(parentBlockName)) {\n if (dom.isEmpty(parentBlock)) {\n $_5ckamj7djkmcwlqo.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName);\n return;\n }\n }\n if (newBlockName && parentBlock === editor.getBody()) {\n return;\n }\n newBlockName = newBlockName || 'P';\n if (isCaretContainerBlock(parentBlock)) {\n newBlock = showCaretContainerBlock(parentBlock);\n if (dom.isEmpty(parentBlock)) {\n emptyBlock(parentBlock);\n }\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n } else if (isCaretAtStartOrEndOfBlock()) {\n insertNewBlockAfter();\n } else if (isCaretAtStartOrEndOfBlock(true)) {\n newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock);\n } else {\n tmpRng = includeZwspInRange(rng).cloneRange();\n tmpRng.setEndAfter(parentBlock);\n fragment = tmpRng.extractContents();\n trimLeadingLineBreaks(fragment);\n newBlock = fragment.firstChild;\n dom.insertAfter(fragment, parentBlock);\n trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);\n addBrToBlockIfNeeded(dom, parentBlock);\n if (dom.isEmpty(parentBlock)) {\n emptyBlock(parentBlock);\n }\n newBlock.normalize();\n if (dom.isEmpty(newBlock)) {\n dom.remove(newBlock);\n insertNewBlockAfter();\n } else {\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n }\n }\n dom.setAttrib(newBlock, 'id', '');\n editor.fire('NewBlock', { newBlock: newBlock });\n };\n var $_dr0y3j7cjkmcwlqe = { insert: insert$2 };\n\n var matchesSelector = function (editor, selector) {\n return $_79nvm87ejkmcwlqu.getParentBlock(editor).filter(function (parentBlock) {\n return selector.length > 0 && $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(parentBlock), selector);\n }).isSome();\n };\n var shouldInsertBr = function (editor) {\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getBrNewLineSelector(editor));\n };\n var shouldBlockNewLine = function (editor) {\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getNoNewLineSelector(editor));\n };\n var $_g7oj6o7gjkmcwlr8 = {\n shouldInsertBr: shouldInsertBr,\n shouldBlockNewLine: shouldBlockNewLine\n };\n\n var newLineAction = Adt.generate([\n { br: [] },\n { block: [] },\n { none: [] }\n ]);\n var shouldBlockNewLine$1 = function (editor, shiftKey) {\n return $_g7oj6o7gjkmcwlr8.shouldBlockNewLine(editor);\n };\n var isBrMode = function (requiredState) {\n return function (editor, shiftKey) {\n var brMode = $_2ycm1438jkmcwkta.getForcedRootBlock(editor) === '';\n return brMode === requiredState;\n };\n };\n var inListBlock = function (requiredState) {\n return function (editor, shiftKey) {\n return $_79nvm87ejkmcwlqu.isListItemParentBlock(editor) === requiredState;\n };\n };\n var inBlock = function (blockName, requiredState) {\n return function (editor, shiftKey) {\n var state = $_79nvm87ejkmcwlqu.getParentBlockName(editor) === blockName.toUpperCase();\n return state === requiredState;\n };\n };\n var inPreBlock = function (requiredState) {\n return inBlock('pre', requiredState);\n };\n var inSummaryBlock = function () {\n return inBlock('summary', true);\n };\n var shouldPutBrInPre$1 = function (requiredState) {\n return function (editor, shiftKey) {\n return $_2ycm1438jkmcwkta.shouldPutBrInPre(editor) === requiredState;\n };\n };\n var inBrContext = function (editor, shiftKey) {\n return $_g7oj6o7gjkmcwlr8.shouldInsertBr(editor);\n };\n var hasShiftKey = function (editor, shiftKey) {\n return shiftKey;\n };\n var canInsertIntoEditableRoot = function (editor) {\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n var rootEditable = $_79nvm87ejkmcwlqu.getEditableRoot(editor.dom, editor.selection.getStart());\n return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P');\n };\n var match$2 = function (predicates, action) {\n return function (editor, shiftKey) {\n var isMatch = foldl(predicates, function (res, p) {\n return res && p(editor, shiftKey);\n }, true);\n return isMatch ? Option.some(action) : Option.none();\n };\n };\n var getAction$1 = function (editor, evt) {\n return $_8hyv6o49jkmcwl58.evaluateUntil([\n match$2([shouldBlockNewLine$1], newLineAction.none()),\n match$2([inSummaryBlock()], newLineAction.br()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(false),\n hasShiftKey\n ], newLineAction.br()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(false)\n ], newLineAction.block()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(true),\n hasShiftKey\n ], newLineAction.block()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(true)\n ], newLineAction.br()),\n match$2([\n inListBlock(true),\n hasShiftKey\n ], newLineAction.br()),\n match$2([inListBlock(true)], newLineAction.block()),\n match$2([\n isBrMode(true),\n hasShiftKey,\n canInsertIntoEditableRoot\n ], newLineAction.block()),\n match$2([isBrMode(true)], newLineAction.br()),\n match$2([inBrContext], newLineAction.br()),\n match$2([\n isBrMode(false),\n hasShiftKey\n ], newLineAction.br()),\n match$2([canInsertIntoEditableRoot], newLineAction.block())\n ], [\n editor,\n evt.shiftKey\n ]).getOr(newLineAction.none());\n };\n var $_47r1sh7fjkmcwlr1 = { getAction: getAction$1 };\n\n var insert$3 = function (editor, evt) {\n $_47r1sh7fjkmcwlr1.getAction(editor, evt).fold(function () {\n $_dc07up4ijkmcwl7n.insert(editor, evt);\n }, function () {\n $_dr0y3j7cjkmcwlqe.insert(editor, evt);\n }, noop);\n };\n var $_fs2ah67bjkmcwlq8 = { insert: insert$3 };\n\n var endTypingLevel = function (undoManager) {\n if (undoManager.typing) {\n undoManager.typing = false;\n undoManager.add();\n }\n };\n var handleEnterKeyEvent = function (editor, event) {\n if (event.isDefaultPrevented()) {\n return;\n }\n event.preventDefault();\n endTypingLevel(editor.undoManager);\n editor.undoManager.transact(function () {\n if (editor.selection.isCollapsed() === false) {\n editor.execCommand('Delete');\n }\n $_fs2ah67bjkmcwlq8.insert(editor, event);\n });\n };\n var setup$9 = function (editor) {\n editor.on('keydown', function (event) {\n if (event.keyCode === $_6bj5795wjkmcwlg6.ENTER) {\n handleEnterKeyEvent(editor, event);\n }\n });\n };\n var $_ni5l67ajkmcwlq7 = { setup: setup$9 };\n\n var isValidInsertPoint = function (location, caretPosition) {\n return isAtStartOrEnd(location) && $_bjermr1rjkmcwkij.isText(caretPosition.container());\n };\n var insertNbspAtPosition = function (editor, caretPosition) {\n var container = caretPosition.container();\n var offset = caretPosition.offset();\n container.insertData(offset, '\\xA0');\n editor.selection.setCursorLocation(container, offset + 1);\n };\n var insertAtLocation = function (editor, caretPosition, location) {\n if (isValidInsertPoint(location, caretPosition)) {\n insertNbspAtPosition(editor, caretPosition);\n return true;\n } else {\n return false;\n }\n };\n var insertAtCaret$2 = function (editor) {\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n var boundaryLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), caretPosition);\n return boundaryLocation.map(curry(insertAtLocation, editor, caretPosition)).getOr(false);\n };\n var isAtStartOrEnd = function (location) {\n return location.fold(constant(false), constant(true), constant(true), constant(false));\n };\n var insertAtSelection = function (editor) {\n return editor.selection.isCollapsed() ? insertAtCaret$2(editor) : false;\n };\n var $_2cwo047ijkmcwlrj = { insertAtSelection: insertAtSelection };\n\n var executeKeydownOverride$2 = function (editor, evt) {\n $_3olmgr77jkmcwlpj.execute([{\n keyCode: $_6bj5795wjkmcwlg6.SPACEBAR,\n action: $_3olmgr77jkmcwlpj.action($_2cwo047ijkmcwlrj.insertAtSelection, editor)\n }], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var setup$10 = function (editor) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride$2(editor, evt);\n }\n });\n };\n var $_agfz917hjkmcwlrh = { setup: setup$10 };\n\n var findBlockCaretContainer = function (editor) {\n return $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {\n return elm.dom();\n });\n };\n var removeIeControlRect = function (editor) {\n editor.selection.setRng(editor.selection.getRng());\n };\n var showBlockCaretContainer = function (editor, blockCaretContainer) {\n if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n showCaretContainerBlock(blockCaretContainer);\n removeIeControlRect(editor);\n editor.selection.scrollIntoView(blockCaretContainer);\n }\n };\n var handleBlockContainer = function (editor, e) {\n var blockCaretContainer = findBlockCaretContainer(editor);\n if (!blockCaretContainer) {\n return;\n }\n if (e.type === 'compositionstart') {\n e.preventDefault();\n e.stopPropagation();\n showBlockCaretContainer(editor, blockCaretContainer);\n return;\n }\n if (hasContent(blockCaretContainer)) {\n showBlockCaretContainer(editor, blockCaretContainer);\n editor.undoManager.add();\n }\n };\n var setup$11 = function (editor) {\n editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\n };\n var $_gfp1h7jjkmcwlrn = { setup: setup$11 };\n\n var setup$12 = function (editor) {\n var caret = $_dl6t9m4ajkmcwl5b.setupSelectedState(editor);\n $_gfp1h7jjkmcwlrn.setup(editor);\n $_emza9w75jkmcwlp9.setup(editor, caret);\n $_4dsl7478jkmcwlpw.setup(editor, caret);\n $_ni5l67ajkmcwlq7.setup(editor);\n $_agfz917hjkmcwlrh.setup(editor);\n };\n var $_ejk8vk74jkmcwlp8 = { setup: setup$12 };\n\n function Quirks (editor) {\n var each = $_4ujg4tljkmcwkbk.each;\n var BACKSPACE = $_6bj5795wjkmcwlg6.BACKSPACE, DELETE = $_6bj5795wjkmcwlg6.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser;\n var isGecko = $_cvvl9iajkmcwk25.gecko, isIE = $_cvvl9iajkmcwk25.ie, isWebKit = $_cvvl9iajkmcwk25.webkit;\n var mceInternalUrlPrefix = 'data:text/mce-internal,';\n var mceInternalDataType = isIE ? 'Text' : 'URL';\n var setEditorCommandState = function (cmd, state) {\n try {\n editor.getDoc().execCommand(cmd, false, state);\n } catch (ex) {\n }\n };\n var isDefaultPrevented = function (e) {\n return e.isDefaultPrevented();\n };\n var setMceInternalContent = function (e) {\n var selectionHtml, internalContent;\n if (e.dataTransfer) {\n if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') {\n selection.select(e.target);\n }\n selectionHtml = editor.selection.getContent();\n if (selectionHtml.length > 0) {\n internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml);\n e.dataTransfer.setData(mceInternalDataType, internalContent);\n }\n }\n };\n var getMceInternalContent = function (e) {\n var internalContent;\n if (e.dataTransfer) {\n internalContent = e.dataTransfer.getData(mceInternalDataType);\n if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {\n internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(',');\n return {\n id: unescape(internalContent[0]),\n html: unescape(internalContent[1])\n };\n }\n }\n return null;\n };\n var insertClipboardContents = function (content, internal) {\n if (editor.queryCommandSupported('mceInsertClipboardContent')) {\n editor.execCommand('mceInsertClipboardContent', false, {\n content: content,\n internal: internal\n });\n } else {\n editor.execCommand('mceInsertContent', false, content);\n }\n };\n var emptyEditorWhenDeleting = function () {\n var serializeRng = function (rng) {\n var body = dom.create('body');\n var contents = rng.cloneContents();\n body.appendChild(contents);\n return selection.serializer.serialize(body, { format: 'html' });\n };\n var allContentsSelected = function (rng) {\n var selection = serializeRng(rng);\n var allRng = dom.createRng();\n allRng.selectNode(editor.getBody());\n var allSelection = serializeRng(allRng);\n return selection === allSelection;\n };\n editor.on('keydown', function (e) {\n var keyCode = e.keyCode;\n var isCollapsed, body;\n if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) {\n isCollapsed = editor.selection.isCollapsed();\n body = editor.getBody();\n if (isCollapsed && !dom.isEmpty(body)) {\n return;\n }\n if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\n return;\n }\n e.preventDefault();\n editor.setContent('');\n if (body.firstChild && dom.isBlock(body.firstChild)) {\n editor.selection.setCursorLocation(body.firstChild, 0);\n } else {\n editor.selection.setCursorLocation(body, 0);\n }\n editor.nodeChanged();\n }\n });\n };\n var selectAll = function () {\n editor.shortcuts.add('meta+a', null, 'SelectAll');\n };\n var inputMethodFocus = function () {\n if (!editor.settings.content_editable) {\n dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) {\n var rng;\n if (e.target === editor.getDoc().documentElement) {\n rng = selection.getRng();\n editor.getBody().focus();\n if (e.type === 'mousedown') {\n if (isCaretContainer(rng.startContainer)) {\n return;\n }\n selection.placeCaretAt(e.clientX, e.clientY);\n } else {\n selection.setRng(rng);\n }\n }\n });\n }\n };\n var removeHrOnBackspace = function () {\n editor.on('keydown', function (e) {\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n if (!editor.getBody().getElementsByTagName('hr').length) {\n return;\n }\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n var node = selection.getNode();\n var previousSibling = node.previousSibling;\n if (node.nodeName === 'HR') {\n dom.remove(node);\n e.preventDefault();\n return;\n }\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {\n dom.remove(previousSibling);\n e.preventDefault();\n }\n }\n }\n });\n };\n var focusBody = function () {\n if (!Range.prototype.getClientRects) {\n editor.on('mousedown', function (e) {\n if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {\n var body_1 = editor.getBody();\n body_1.blur();\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n body_1.focus();\n });\n }\n });\n }\n };\n var selectControlElements = function () {\n editor.on('click', function (e) {\n var target = e.target;\n if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') {\n e.preventDefault();\n editor.selection.select(target);\n editor.nodeChanged();\n }\n if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) {\n e.preventDefault();\n selection.select(target);\n }\n });\n };\n var removeStylesWhenDeletingAcrossBlockElements = function () {\n var getAttributeApplyFunction = function () {\n var template = dom.getAttribs(selection.getStart().cloneNode(false));\n return function () {\n var target = selection.getStart();\n if (target !== editor.getBody()) {\n dom.setAttrib(target, 'style', null);\n each(template, function (attr) {\n target.setAttributeNode(attr.cloneNode(true));\n });\n }\n };\n };\n var isSelectionAcrossElements = function () {\n return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);\n };\n editor.on('keypress', function (e) {\n var applyAttributes;\n if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {\n applyAttributes = getAttributeApplyFunction();\n editor.getDoc().execCommand('delete', false, null);\n applyAttributes();\n e.preventDefault();\n return false;\n }\n });\n dom.bind(editor.getDoc(), 'cut', function (e) {\n var applyAttributes;\n if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {\n applyAttributes = getAttributeApplyFunction();\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n applyAttributes();\n });\n }\n });\n };\n var disableBackspaceIntoATable = function () {\n editor.on('keydown', function (e) {\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n var previousSibling = selection.getNode().previousSibling;\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {\n e.preventDefault();\n return false;\n }\n }\n }\n });\n };\n var removeBlockQuoteOnBackSpace = function () {\n editor.on('keydown', function (e) {\n var rng, container, offset, root, parent$$1;\n if (isDefaultPrevented(e) || e.keyCode !== $_6bj5795wjkmcwlg6.BACKSPACE) {\n return;\n }\n rng = selection.getRng();\n container = rng.startContainer;\n offset = rng.startOffset;\n root = dom.getRoot();\n parent$$1 = container;\n if (!rng.collapsed || offset !== 0) {\n return;\n }\n while (parent$$1 && parent$$1.parentNode && parent$$1.parentNode.firstChild === parent$$1 && parent$$1.parentNode !== root) {\n parent$$1 = parent$$1.parentNode;\n }\n if (parent$$1.tagName === 'BLOCKQUOTE') {\n editor.formatter.toggle('blockquote', null, parent$$1);\n rng = dom.createRng();\n rng.setStart(container, 0);\n rng.setEnd(container, 0);\n selection.setRng(rng);\n }\n });\n };\n var setGeckoEditingOptions = function () {\n var setOpts = function () {\n setEditorCommandState('StyleWithCSS', false);\n setEditorCommandState('enableInlineTableEditing', false);\n if (!settings.object_resizing) {\n setEditorCommandState('enableObjectResizing', false);\n }\n };\n if (!settings.readonly) {\n editor.on('BeforeExecCommand MouseDown', setOpts);\n }\n };\n var addBrAfterLastLinks = function () {\n var fixLinks = function () {\n each(dom.select('a'), function (node) {\n var parentNode = node.parentNode;\n var root = dom.getRoot();\n if (parentNode.lastChild === node) {\n while (parentNode && !dom.isBlock(parentNode)) {\n if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {\n return;\n }\n parentNode = parentNode.parentNode;\n }\n dom.add(parentNode, 'br', { 'data-mce-bogus': 1 });\n }\n });\n };\n editor.on('SetContent ExecCommand', function (e) {\n if (e.type === 'setcontent' || e.command === 'mceInsertLink') {\n fixLinks();\n }\n });\n };\n var setDefaultBlockType = function () {\n if (settings.forced_root_block) {\n editor.on('init', function () {\n setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);\n });\n }\n };\n var normalizeSelection = function () {\n editor.on('keyup focusin mouseup', function (e) {\n if (!$_6bj5795wjkmcwlg6.modifierPressed(e)) {\n selection.normalize();\n }\n }, true);\n };\n var showBrokenImageIcon = function () {\n editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');\n };\n var restoreFocusOnKeyDown = function () {\n if (!editor.inline) {\n editor.on('keydown', function () {\n if (document.activeElement === document.body) {\n editor.getWin().focus();\n }\n });\n }\n };\n var bodyHeight = function () {\n if (!editor.inline) {\n editor.contentStyles.push('body {min-height: 150px}');\n editor.on('click', function (e) {\n var rng;\n if (e.target.nodeName === 'HTML') {\n if ($_cvvl9iajkmcwk25.ie > 11) {\n editor.getBody().focus();\n return;\n }\n rng = editor.selection.getRng();\n editor.getBody().focus();\n editor.selection.setRng(rng);\n editor.selection.normalize();\n editor.nodeChanged();\n }\n });\n }\n };\n var blockCmdArrowNavigation = function () {\n if ($_cvvl9iajkmcwk25.mac) {\n editor.on('keydown', function (e) {\n if ($_6bj5795wjkmcwlg6.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {\n e.preventDefault();\n editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');\n }\n });\n }\n };\n var disableAutoUrlDetect = function () {\n setEditorCommandState('AutoUrlDetect', false);\n };\n var tapLinksAndImages = function () {\n editor.on('click', function (e) {\n var elm = e.target;\n do {\n if (elm.tagName === 'A') {\n e.preventDefault();\n return;\n }\n } while (elm = elm.parentNode);\n });\n editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');\n };\n var blockFormSubmitInsideEditor = function () {\n editor.on('init', function () {\n editor.dom.bind(editor.getBody(), 'submit', function (e) {\n e.preventDefault();\n });\n });\n };\n var removeAppleInterchangeBrs = function () {\n parser.addNodeFilter('br', function (nodes) {\n var i = nodes.length;\n while (i--) {\n if (nodes[i].attr('class') === 'Apple-interchange-newline') {\n nodes[i].remove();\n }\n }\n });\n };\n var ieInternalDragAndDrop = function () {\n editor.on('dragstart', function (e) {\n setMceInternalContent(e);\n });\n editor.on('drop', function (e) {\n if (!isDefaultPrevented(e)) {\n var internalContent = getMceInternalContent(e);\n if (internalContent && internalContent.id !== editor.id) {\n e.preventDefault();\n var rng = $_52q21w6wjkmcwlna.fromPoint(e.x, e.y, editor.getDoc());\n selection.setRng(rng);\n insertClipboardContents(internalContent.html, true);\n }\n }\n });\n };\n var refreshContentEditable = function () {\n };\n var isHidden = function () {\n var sel;\n if (!isGecko || editor.removed) {\n return 0;\n }\n sel = editor.selection.getSel();\n return !sel || !sel.rangeCount || sel.rangeCount === 0;\n };\n removeBlockQuoteOnBackSpace();\n emptyEditorWhenDeleting();\n if (!$_cvvl9iajkmcwk25.windowsPhone) {\n normalizeSelection();\n }\n if (isWebKit) {\n inputMethodFocus();\n selectControlElements();\n setDefaultBlockType();\n blockFormSubmitInsideEditor();\n disableBackspaceIntoATable();\n removeAppleInterchangeBrs();\n if ($_cvvl9iajkmcwk25.iOS) {\n restoreFocusOnKeyDown();\n bodyHeight();\n tapLinksAndImages();\n } else {\n selectAll();\n }\n }\n if ($_cvvl9iajkmcwk25.ie >= 11) {\n bodyHeight();\n disableBackspaceIntoATable();\n }\n if ($_cvvl9iajkmcwk25.ie) {\n selectAll();\n disableAutoUrlDetect();\n ieInternalDragAndDrop();\n }\n if (isGecko) {\n removeHrOnBackspace();\n focusBody();\n removeStylesWhenDeletingAcrossBlockElements();\n setGeckoEditingOptions();\n addBrAfterLastLinks();\n showBrokenImageIcon();\n blockCmdArrowNavigation();\n disableBackspaceIntoATable();\n }\n return {\n refreshContentEditable: refreshContentEditable,\n isHidden: isHidden\n };\n }\n\n var isTextBlockNode = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && isTextBlock(Element$$1.fromDom(node));\n };\n var normalizeSelection$1 = function (editor) {\n var rng = editor.selection.getRng();\n var startPos = CaretPosition.fromRangeStart(rng);\n var endPos = CaretPosition.fromRangeEnd(rng);\n if (CaretPosition.isElementPosition(startPos)) {\n var container = startPos.container();\n if (isTextBlockNode(container)) {\n $_1m3f3j2yjkmcwkqg.firstPositionIn(container).each(function (pos) {\n return rng.setStart(pos.container(), pos.offset());\n });\n }\n }\n if (CaretPosition.isElementPosition(endPos)) {\n var container = startPos.container();\n if (isTextBlockNode(container)) {\n $_1m3f3j2yjkmcwkqg.lastPositionIn(container).each(function (pos) {\n return rng.setEnd(pos.container(), pos.offset());\n });\n }\n }\n editor.selection.setRng($_bx30le3ojkmcwkw9.normalize(rng));\n };\n var setup$13 = function (editor) {\n editor.on('click', function (e) {\n if (e.detail >= 3) {\n normalizeSelection$1(editor);\n }\n });\n };\n\n var preventSummaryToggle = function (editor) {\n editor.on('click', function (e) {\n if (editor.dom.getParent(e.target, 'details')) {\n e.preventDefault();\n }\n });\n };\n var filterDetails = function (editor) {\n editor.parser.addNodeFilter('details', function (elms) {\n each(elms, function (details) {\n details.attr('data-mce-open', details.attr('open'));\n details.attr('open', 'open');\n });\n });\n editor.serializer.addNodeFilter('details', function (elms) {\n each(elms, function (details) {\n var open = details.attr('data-mce-open');\n details.attr('open', isString(open) ? open : null);\n details.attr('data-mce-open', null);\n });\n });\n };\n var setup$14 = function (editor) {\n preventSummaryToggle(editor);\n filterDetails(editor);\n };\n\n var DOM$2 = DOMUtils$1.DOM;\n var appendStyle = function (editor, text) {\n var head = Element$$1.fromDom(editor.getDoc().head);\n var tag = Element$$1.fromTag('style');\n $_29helg15jkmcwkf0.set(tag, 'type', 'text/css');\n $_f4qt4v1yjkmcwkl2.append(tag, Element$$1.fromText(text));\n $_f4qt4v1yjkmcwkl2.append(head, tag);\n };\n var createParser = function (editor) {\n var parser = DomParser(editor.settings, editor.schema);\n parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name$$1) {\n var i = nodes.length, node;\n var dom = editor.dom;\n var value, internalName;\n while (i--) {\n node = nodes[i];\n value = node.attr(name$$1);\n internalName = 'data-mce-' + name$$1;\n if (!node.attributes.map[internalName]) {\n if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {\n continue;\n }\n if (name$$1 === 'style') {\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\n if (!value.length) {\n value = null;\n }\n node.attr(internalName, value);\n node.attr(name$$1, value);\n } else if (name$$1 === 'tabindex') {\n node.attr(internalName, value);\n node.attr(name$$1, null);\n } else {\n node.attr(internalName, editor.convertURL(value, name$$1, node.name));\n }\n }\n }\n });\n parser.addNodeFilter('script', function (nodes) {\n var i = nodes.length, node, type;\n while (i--) {\n node = nodes[i];\n type = node.attr('type') || 'no/type';\n if (type.indexOf('mce-') !== 0) {\n node.attr('type', 'mce-' + type);\n }\n }\n });\n parser.addNodeFilter('#cdata', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.type = 8;\n node.name = '#comment';\n node.value = '[CDATA[' + node.value + ']]';\n }\n });\n parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) {\n var i = nodes.length, node;\n var nonEmptyElements = editor.schema.getNonEmptyElements();\n while (i--) {\n node = nodes[i];\n if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {\n node.append(new Node$2('br', 1)).shortEnded = true;\n }\n }\n });\n return parser;\n };\n var autoFocus = function (editor) {\n if (editor.settings.auto_focus) {\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n var focusEditor;\n if (editor.settings.auto_focus === true) {\n focusEditor = editor;\n } else {\n focusEditor = editor.editorManager.get(editor.settings.auto_focus);\n }\n if (!focusEditor.destroyed) {\n focusEditor.focus();\n }\n }, 100);\n }\n };\n var initEditor = function (editor) {\n editor.bindPendingEventDelegates();\n editor.initialized = true;\n editor.fire('init');\n editor.focus(true);\n editor.nodeChanged({ initial: true });\n editor.execCallback('init_instance_callback', editor);\n autoFocus(editor);\n };\n var getStyleSheetLoader = function (editor) {\n return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader;\n };\n var initContentBody = function (editor, skipWrite) {\n var settings = editor.settings;\n var targetElm = editor.getElement();\n var doc = editor.getDoc(), body, contentCssText;\n if (!settings.inline) {\n editor.getElement().style.visibility = editor.orgVisibility;\n }\n if (!skipWrite && !settings.content_editable) {\n doc.open();\n doc.write(editor.iframeHTML);\n doc.close();\n }\n if (settings.content_editable) {\n editor.on('remove', function () {\n var bodyEl = this.getBody();\n DOM$2.removeClass(bodyEl, 'mce-content-body');\n DOM$2.removeClass(bodyEl, 'mce-edit-focus');\n DOM$2.setAttrib(bodyEl, 'contentEditable', null);\n });\n DOM$2.addClass(targetElm, 'mce-content-body');\n editor.contentDocument = doc = settings.content_document || document;\n editor.contentWindow = settings.content_window || window;\n editor.bodyElement = targetElm;\n settings.content_document = settings.content_window = null;\n settings.root_name = targetElm.nodeName.toLowerCase();\n }\n body = editor.getBody();\n body.disabled = true;\n editor.readonly = settings.readonly;\n if (!editor.readonly) {\n if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') {\n body.style.position = 'relative';\n }\n body.contentEditable = editor.getParam('content_editable_state', true);\n }\n body.disabled = false;\n editor.editorUpload = EditorUpload(editor);\n editor.schema = Schema(settings);\n editor.dom = DOMUtils$1(doc, {\n keep_values: true,\n url_converter: editor.convertURL,\n url_converter_scope: editor,\n hex_colors: settings.force_hex_style_colors,\n class_filter: settings.class_filter,\n update_styles: true,\n root_element: editor.inline ? editor.getBody() : null,\n collect: settings.content_editable,\n schema: editor.schema,\n onSetAttrib: function (e) {\n editor.fire('SetAttrib', e);\n }\n });\n editor.parser = createParser(editor);\n editor.serializer = DomSerializer$1(settings, editor);\n editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor);\n editor.annotator = Annotator(editor);\n editor.formatter = Formatter(editor);\n editor.undoManager = UndoManager(editor);\n editor._nodeChangeDispatcher = new NodeChange(editor);\n editor._selectionOverrides = SelectionOverrides(editor);\n setup$14(editor);\n setup$13(editor);\n $_ejk8vk74jkmcwlp8.setup(editor);\n $_5utnj35ljkmcwldh.setup(editor);\n editor.fire('PreInit');\n if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {\n doc.body.spellcheck = false;\n DOM$2.setAttrib(body, 'spellcheck', 'false');\n }\n editor.quirks = Quirks(editor);\n editor.fire('PostRender');\n if (settings.directionality) {\n body.dir = settings.directionality;\n }\n if (settings.nowrap) {\n body.style.whiteSpace = 'nowrap';\n }\n if (settings.protect) {\n editor.on('BeforeSetContent', function (e) {\n $_4ujg4tljkmcwkbk.each(settings.protect, function (pattern) {\n e.content = e.content.replace(pattern, function (str) {\n return '';\n });\n });\n });\n }\n editor.on('SetContent', function () {\n editor.addVisual(editor.getBody());\n });\n editor.load({\n initial: true,\n format: 'html'\n });\n editor.startContent = editor.getContent({ format: 'raw' });\n editor.on('compositionstart compositionend', function (e) {\n editor.composing = e.type === 'compositionstart';\n });\n if (editor.contentStyles.length > 0) {\n contentCssText = '';\n $_4ujg4tljkmcwkbk.each(editor.contentStyles, function (style) {\n contentCssText += style + '\\r\\n';\n });\n editor.dom.addStyle(contentCssText);\n }\n getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) {\n initEditor(editor);\n }, function (urls) {\n initEditor(editor);\n });\n if (settings.content_style) {\n appendStyle(editor, settings.content_style);\n }\n };\n var $_fssayf58jkmcwlbz = { initContentBody: initContentBody };\n\n var DOM$3 = DOMUtils$1.DOM;\n var relaxDomain = function (editor, ifr) {\n if (document.domain !== window.location.hostname && $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 12) {\n var bodyUuid = $_8flfjw5jjkmcwldd.uuid('mce');\n editor[bodyUuid] = function () {\n $_fssayf58jkmcwlbz.initContentBody(editor);\n };\n var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain=\"' + document.domain + '\";' + 'var ed = window.parent.tinymce.get(\"' + editor.id + '\");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';\n DOM$3.setAttrib(ifr, 'src', domainRelaxUrl);\n return true;\n }\n return false;\n };\n var normalizeHeight = function (height) {\n var normalizedHeight = typeof height === 'number' ? height + 'px' : height;\n return normalizedHeight ? normalizedHeight : '';\n };\n var createIframeElement = function (id, title, height, customAttrs) {\n var iframe = Element$$1.fromTag('iframe');\n $_29helg15jkmcwkf0.setAll(iframe, customAttrs);\n $_29helg15jkmcwkf0.setAll(iframe, {\n id: id + '_ifr',\n frameBorder: '0',\n allowTransparency: 'true',\n title: title\n });\n $_4enzit13jkmcwke5.setAll(iframe, {\n width: '100%',\n height: normalizeHeight(height),\n display: 'block'\n });\n return iframe;\n };\n var getIframeHtml = function (editor) {\n var bodyId, bodyClass, iframeHTML;\n iframeHTML = $_2ycm1438jkmcwkta.getDocType(editor) + '';\n if ($_2ycm1438jkmcwkta.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\n iframeHTML += '';\n }\n iframeHTML += '';\n bodyId = $_2ycm1438jkmcwkta.getBodyId(editor);\n bodyClass = $_2ycm1438jkmcwkta.getBodyClass(editor);\n if ($_2ycm1438jkmcwkta.getContentSecurityPolicy(editor)) {\n iframeHTML += '';\n }\n iframeHTML += '
';\n return iframeHTML;\n };\n var createIframe = function (editor, o) {\n var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help');\n var ifr = createIframeElement(editor.id, title, o.height, $_2ycm1438jkmcwkta.getIframeAttrs(editor)).dom();\n ifr.onload = function () {\n ifr.onload = null;\n editor.fire('load');\n };\n var isDomainRelaxed = relaxDomain(editor, ifr);\n editor.contentAreaContainer = o.iframeContainer;\n editor.iframeElement = ifr;\n editor.iframeHTML = getIframeHtml(editor);\n DOM$3.add(o.iframeContainer, ifr);\n return isDomainRelaxed;\n };\n var init$1 = function (editor, boxInfo) {\n var isDomainRelaxed = createIframe(editor, boxInfo);\n if (boxInfo.editorContainer) {\n DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay;\n editor.hidden = DOM$3.isHidden(boxInfo.editorContainer);\n }\n editor.getElement().style.display = 'none';\n DOM$3.setAttrib(editor.id, 'aria-hidden', 'true');\n if (!isDomainRelaxed) {\n $_fssayf58jkmcwlbz.initContentBody(editor);\n }\n };\n var $_9jv4e17njkmcwlsj = { init: init$1 };\n\n var DOM$4 = DOMUtils$1.DOM;\n var initPlugin = function (editor, initializedPlugins, plugin) {\n var Plugin = PluginManager$1.get(plugin);\n var pluginUrl, pluginInstance;\n pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\\/$/, '');\n plugin = $_4ujg4tljkmcwkbk.trim(plugin);\n if (Plugin && $_4ujg4tljkmcwkbk.inArray(initializedPlugins, plugin) === -1) {\n $_4ujg4tljkmcwkbk.each(PluginManager$1.dependencies(plugin), function (dep) {\n initPlugin(editor, initializedPlugins, dep);\n });\n if (editor.plugins[plugin]) {\n return;\n }\n pluginInstance = new Plugin(editor, pluginUrl, editor.$);\n editor.plugins[plugin] = pluginInstance;\n if (pluginInstance.init) {\n pluginInstance.init(editor, pluginUrl);\n initializedPlugins.push(plugin);\n }\n }\n };\n var trimLegacyPrefix = function (name) {\n return name.replace(/^\\-/, '');\n };\n var initPlugins = function (editor) {\n var initializedPlugins = [];\n $_4ujg4tljkmcwkbk.each(editor.settings.plugins.split(/[ ,]/), function (name) {\n initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));\n });\n };\n var initTheme = function (editor) {\n var Theme;\n var theme = editor.settings.theme;\n if (isString(theme)) {\n editor.settings.theme = trimLegacyPrefix(theme);\n Theme = ThemeManager.get(theme);\n editor.theme = new Theme(editor, ThemeManager.urls[theme]);\n if (editor.theme.init) {\n editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\\/$/, ''), editor.$);\n }\n } else {\n editor.theme = {};\n }\n };\n var renderFromLoadedTheme = function (editor) {\n var w, h, minHeight, re, info;\n var settings = editor.settings;\n var elm = editor.getElement();\n w = settings.width || DOM$4.getStyle(elm, 'width') || '100%';\n h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight;\n minHeight = settings.min_height || 100;\n re = /^[0-9\\.]+(|px)$/i;\n if (re.test('' + w)) {\n w = Math.max(parseInt(w, 10), 100);\n }\n if (re.test('' + h)) {\n h = Math.max(parseInt(h, 10), minHeight);\n }\n info = editor.theme.renderUI({\n targetNode: elm,\n width: w,\n height: h,\n deltaWidth: settings.delta_width,\n deltaHeight: settings.delta_height\n });\n if (!settings.content_editable) {\n h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : '');\n if (h < minHeight) {\n h = minHeight;\n }\n }\n info.height = h;\n return info;\n };\n var renderFromThemeFunc = function (editor) {\n var info;\n var elm = editor.getElement();\n info = editor.settings.theme(editor, elm);\n if (info.editorContainer.nodeType) {\n info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';\n }\n if (info.iframeContainer && info.iframeContainer.nodeType) {\n info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';\n }\n info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;\n return info;\n };\n var createThemeFalseResult = function (element) {\n return {\n editorContainer: element,\n iframeContainer: element\n };\n };\n var renderThemeFalseIframe = function (targetElement) {\n var iframeContainer = DOM$4.create('div');\n DOM$4.insertAfter(iframeContainer, targetElement);\n return createThemeFalseResult(iframeContainer);\n };\n var renderThemeFalse = function (editor) {\n var targetElement = editor.getElement();\n return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);\n };\n var renderThemeUi = function (editor) {\n var settings = editor.settings, elm = editor.getElement();\n editor.orgDisplay = elm.style.display;\n if (isString(settings.theme)) {\n return renderFromLoadedTheme(editor);\n } else if (isFunction(settings.theme)) {\n return renderFromThemeFunc(editor);\n } else {\n return renderThemeFalse(editor);\n }\n };\n var init$2 = function (editor) {\n var settings = editor.settings;\n var elm = editor.getElement();\n var boxInfo;\n editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl;\n editor.editorManager.i18n.setCode(settings.language);\n settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area'));\n editor.fire('ScriptsLoaded');\n initTheme(editor);\n initPlugins(editor);\n boxInfo = renderThemeUi(editor);\n editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null;\n if (settings.content_css) {\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.explode(settings.content_css), function (u) {\n editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u));\n });\n }\n if (settings.content_editable) {\n return $_fssayf58jkmcwlbz.initContentBody(editor);\n } else {\n return $_9jv4e17njkmcwlsj.init(editor, boxInfo);\n }\n };\n var $_4z079955jkmcwlbj = { init: init$2 };\n\n var DOM$5 = DOMUtils$1.DOM;\n var hasSkipLoadPrefix = function (name$$1) {\n return name$$1.charAt(0) === '-';\n };\n var loadLanguage = function (scriptLoader, editor) {\n var settings = editor.settings;\n if (settings.language && settings.language !== 'en' && !settings.language_url) {\n settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js';\n }\n if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) {\n scriptLoader.add(settings.language_url);\n }\n };\n var loadTheme = function (scriptLoader, editor, suffix, callback) {\n var settings = editor.settings, theme = settings.theme;\n if (isString(theme)) {\n if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) {\n var themeUrl = settings.theme_url;\n if (themeUrl) {\n ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl));\n } else {\n ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js');\n }\n }\n scriptLoader.loadQueue(function () {\n ThemeManager.waitFor(theme, callback);\n });\n } else {\n callback();\n }\n };\n var loadPlugins = function (settings, suffix) {\n if ($_4ujg4tljkmcwkbk.isArray(settings.plugins)) {\n settings.plugins = settings.plugins.join(' ');\n }\n $_4ujg4tljkmcwkbk.each(settings.external_plugins, function (url, name$$1) {\n PluginManager$1.load(name$$1, url);\n settings.plugins += ' ' + name$$1;\n });\n $_4ujg4tljkmcwkbk.each(settings.plugins.split(/[ ,]/), function (plugin) {\n plugin = $_4ujg4tljkmcwkbk.trim(plugin);\n if (plugin && !PluginManager$1.urls[plugin]) {\n if (hasSkipLoadPrefix(plugin)) {\n plugin = plugin.substr(1, plugin.length);\n var dependencies = PluginManager$1.dependencies(plugin);\n $_4ujg4tljkmcwkbk.each(dependencies, function (dep) {\n var defaultSettings = {\n prefix: 'plugins/',\n resource: dep,\n suffix: '/plugin' + suffix + '.js'\n };\n dep = PluginManager$1.createUrl(defaultSettings, dep);\n PluginManager$1.load(dep.resource, dep);\n });\n } else {\n PluginManager$1.load(plugin, {\n prefix: 'plugins/',\n resource: plugin,\n suffix: '/plugin' + suffix + '.js'\n });\n }\n }\n });\n };\n var loadScripts = function (editor, suffix) {\n var scriptLoader = ScriptLoader.ScriptLoader;\n loadTheme(scriptLoader, editor, suffix, function () {\n loadLanguage(scriptLoader, editor);\n loadPlugins(editor.settings, suffix);\n scriptLoader.loadQueue(function () {\n if (!editor.removed) {\n $_4z079955jkmcwlbj.init(editor);\n }\n }, editor, function (urls) {\n $_b9je0i54jkmcwlbe.pluginLoadError(editor, urls[0]);\n if (!editor.removed) {\n $_4z079955jkmcwlbj.init(editor);\n }\n });\n });\n };\n var render = function (editor) {\n var settings = editor.settings, id = editor.id;\n var readyHandler = function () {\n DOM$5.unbind(window, 'ready', readyHandler);\n editor.render();\n };\n if (!EventUtils.Event.domLoaded) {\n DOM$5.bind(window, 'ready', readyHandler);\n return;\n }\n if (!editor.getElement()) {\n return;\n }\n if (!$_cvvl9iajkmcwk25.contentEditable) {\n return;\n }\n if (!settings.inline) {\n editor.orgVisibility = editor.getElement().style.visibility;\n editor.getElement().style.visibility = 'hidden';\n } else {\n editor.inline = true;\n }\n var form = editor.getElement().form || DOM$5.getParent(id, 'form');\n if (form) {\n editor.formElement = form;\n if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) {\n DOM$5.insertAfter(DOM$5.create('input', {\n type: 'hidden',\n name: id\n }), id);\n editor.hasHiddenInput = true;\n }\n editor.formEventDelegate = function (e) {\n editor.fire(e.type, e);\n };\n DOM$5.bind(form, 'submit reset', editor.formEventDelegate);\n editor.on('reset', function () {\n editor.setContent(editor.startContent, { format: 'raw' });\n });\n if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {\n form._mceOldSubmit = form.submit;\n form.submit = function () {\n editor.editorManager.triggerSave();\n editor.setDirty(false);\n return form._mceOldSubmit(form);\n };\n }\n }\n editor.windowManager = WindowManager(editor);\n editor.notificationManager = NotificationManager(editor);\n if (settings.encoding === 'xml') {\n editor.on('GetContent', function (e) {\n if (e.save) {\n e.content = DOM$5.encode(e.content);\n }\n });\n }\n if (settings.add_form_submit_trigger) {\n editor.on('submit', function () {\n if (editor.initialized) {\n editor.save();\n }\n });\n }\n if (settings.add_unload_trigger) {\n editor._beforeUnload = function () {\n if (editor.initialized && !editor.destroyed && !editor.isHidden()) {\n editor.save({\n format: 'raw',\n no_events: true,\n set_dirty: false\n });\n }\n };\n editor.editorManager.on('BeforeUnload', editor._beforeUnload);\n }\n editor.editorManager.add(editor);\n loadScripts(editor, editor.suffix);\n };\n var $_9u29xe4yjkmcwlai = { render: render };\n\n var add$4 = function (editor, name, settings) {\n var sidebars = editor.sidebars ? editor.sidebars : [];\n sidebars.push({\n name: name,\n settings: settings\n });\n editor.sidebars = sidebars;\n };\n var $_gcw4n27ojkmcwlsr = { add: add$4 };\n\n var each$20 = $_4ujg4tljkmcwkbk.each;\n var trim$4 = $_4ujg4tljkmcwkbk.trim;\n var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' ');\n var DEFAULT_PORTS = {\n ftp: 21,\n http: 80,\n https: 443,\n mailto: 25\n };\n var URI = function (url, settings) {\n var self$$1 = this;\n var baseUri, baseUrl;\n url = trim$4(url);\n settings = self$$1.settings = settings || {};\n baseUri = settings.base_uri;\n if (/^([\\w\\-]+):([^\\/]{2})/i.test(url) || /^\\s*#/.test(url)) {\n self$$1.source = url;\n return;\n }\n var isProtocolRelative = url.indexOf('//') === 0;\n if (url.indexOf('/') === 0 && !isProtocolRelative) {\n url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;\n }\n if (!/^[\\w\\-]*:?\\/\\//.test(url)) {\n baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory;\n if (settings.base_uri.protocol == '') {\n url = '//mce_host' + self$$1.toAbsPath(baseUrl, url);\n } else {\n url = /([^#?]*)([#?]?.*)/.exec(url);\n url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self$$1.toAbsPath(baseUrl, url[1]) + url[2];\n }\n }\n url = url.replace(/@@/g, '(mce_at)');\n url = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*):?([^:@\\/]*))?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(url);\n each$20(queryParts, function (v, i) {\n var part = url[i];\n if (part) {\n part = part.replace(/\\(mce_at\\)/g, '@@');\n }\n self$$1[v] = part;\n });\n if (baseUri) {\n if (!self$$1.protocol) {\n self$$1.protocol = baseUri.protocol;\n }\n if (!self$$1.userInfo) {\n self$$1.userInfo = baseUri.userInfo;\n }\n if (!self$$1.port && self$$1.host === 'mce_host') {\n self$$1.port = baseUri.port;\n }\n if (!self$$1.host || self$$1.host === 'mce_host') {\n self$$1.host = baseUri.host;\n }\n self$$1.source = '';\n }\n if (isProtocolRelative) {\n self$$1.protocol = '';\n }\n };\n URI.prototype = {\n setPath: function (path) {\n var self$$1 = this;\n path = /^(.*?)\\/?(\\w+)?$/.exec(path);\n self$$1.path = path[0];\n self$$1.directory = path[1];\n self$$1.file = path[2];\n self$$1.source = '';\n self$$1.getURI();\n },\n toRelative: function (uri) {\n var self$$1 = this;\n var output;\n if (uri === './') {\n return uri;\n }\n uri = new URI(uri, { base_uri: self$$1 });\n if (uri.host !== 'mce_host' && self$$1.host !== uri.host && uri.host || self$$1.port !== uri.port || self$$1.protocol !== uri.protocol && uri.protocol !== '') {\n return uri.getURI();\n }\n var tu = self$$1.getURI(), uu = uri.getURI();\n if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {\n return tu;\n }\n output = self$$1.toRelPath(self$$1.path, uri.path);\n if (uri.query) {\n output += '?' + uri.query;\n }\n if (uri.anchor) {\n output += '#' + uri.anchor;\n }\n return output;\n },\n toAbsolute: function (uri, noHost) {\n uri = new URI(uri, { base_uri: this });\n return uri.getURI(noHost && this.isSameOrigin(uri));\n },\n isSameOrigin: function (uri) {\n if (this.host == uri.host && this.protocol == uri.protocol) {\n if (this.port == uri.port) {\n return true;\n }\n var defaultPort = DEFAULT_PORTS[this.protocol];\n if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {\n return true;\n }\n }\n return false;\n },\n toRelPath: function (base, path) {\n var items, breakPoint = 0, out = '', i, l;\n base = base.substring(0, base.lastIndexOf('/'));\n base = base.split('/');\n items = path.split('/');\n if (base.length >= items.length) {\n for (i = 0, l = base.length; i < l; i++) {\n if (i >= items.length || base[i] !== items[i]) {\n breakPoint = i + 1;\n break;\n }\n }\n }\n if (base.length < items.length) {\n for (i = 0, l = items.length; i < l; i++) {\n if (i >= base.length || base[i] !== items[i]) {\n breakPoint = i + 1;\n break;\n }\n }\n }\n if (breakPoint === 1) {\n return path;\n }\n for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {\n out += '../';\n }\n for (i = breakPoint - 1, l = items.length; i < l; i++) {\n if (i !== breakPoint - 1) {\n out += '/' + items[i];\n } else {\n out += items[i];\n }\n }\n return out;\n },\n toAbsPath: function (base, path) {\n var i, nb = 0, o = [], tr, outPath;\n tr = /\\/$/.test(path) ? '/' : '';\n base = base.split('/');\n path = path.split('/');\n each$20(base, function (k) {\n if (k) {\n o.push(k);\n }\n });\n base = o;\n for (i = path.length - 1, o = []; i >= 0; i--) {\n if (path[i].length === 0 || path[i] === '.') {\n continue;\n }\n if (path[i] === '..') {\n nb++;\n continue;\n }\n if (nb > 0) {\n nb--;\n continue;\n }\n o.push(path[i]);\n }\n i = base.length - nb;\n if (i <= 0) {\n outPath = o.reverse().join('/');\n } else {\n outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');\n }\n if (outPath.indexOf('/') !== 0) {\n outPath = '/' + outPath;\n }\n if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {\n outPath += tr;\n }\n return outPath;\n },\n getURI: function (noProtoHost) {\n var s;\n var self$$1 = this;\n if (!self$$1.source || noProtoHost) {\n s = '';\n if (!noProtoHost) {\n if (self$$1.protocol) {\n s += self$$1.protocol + '://';\n } else {\n s += '//';\n }\n if (self$$1.userInfo) {\n s += self$$1.userInfo + '@';\n }\n if (self$$1.host) {\n s += self$$1.host;\n }\n if (self$$1.port) {\n s += ':' + self$$1.port;\n }\n }\n if (self$$1.path) {\n s += self$$1.path;\n }\n if (self$$1.query) {\n s += '?' + self$$1.query;\n }\n if (self$$1.anchor) {\n s += '#' + self$$1.anchor;\n }\n self$$1.source = s;\n }\n return self$$1.source;\n }\n };\n URI.parseDataUri = function (uri) {\n var type, matches;\n uri = decodeURIComponent(uri).split(',');\n matches = /data:([^;]+)/.exec(uri[0]);\n if (matches) {\n type = matches[1];\n }\n return {\n type: type,\n data: uri[1]\n };\n };\n URI.getDocumentBaseUrl = function (loc) {\n var baseUrl;\n if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {\n baseUrl = loc.href;\n } else {\n baseUrl = loc.protocol + '//' + loc.host + loc.pathname;\n }\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(baseUrl)) {\n baseUrl = baseUrl.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n if (!/[\\/\\\\]$/.test(baseUrl)) {\n baseUrl += '/';\n }\n }\n return baseUrl;\n };\n\n var defaultFormat = 'html';\n var trimEmptyContents = function (editor, html) {\n var blockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>( | |\\\\s|\\xA0|
|)<\\\\/' + blockName + '>[\\r\\n]*|
[\\r\\n]*)$');\n return html.replace(emptyRegExp, '');\n };\n var getContentFromBody = function (editor, args, body) {\n var content;\n args.format = args.format ? args.format : defaultFormat;\n args.get = true;\n args.getInner = true;\n if (!args.no_events) {\n editor.fire('BeforeGetContent', args);\n }\n if (args.format === 'raw') {\n content = $_4ujg4tljkmcwkbk.trim($_2varuf5zjkmcwlgq.trimExternal(editor.serializer, body.innerHTML));\n } else if (args.format === 'text') {\n content = $_cadvcr2pjkmcwkph.trim(body.innerText || body.textContent);\n } else if (args.format === 'tree') {\n return editor.serializer.serialize(body, args);\n } else {\n content = trimEmptyContents(editor, editor.serializer.serialize(body, args));\n }\n if (args.format !== 'text' && !isWsPreserveElement(Element$$1.fromDom(body))) {\n args.content = $_4ujg4tljkmcwkbk.trim(content);\n } else {\n args.content = content;\n }\n if (!args.no_events) {\n editor.fire('GetContent', args);\n }\n return args.content;\n };\n var getContent$1 = function (editor, args) {\n if (args === void 0) {\n args = {};\n }\n return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$2('body', 11) : ''), function (body) {\n return getContentFromBody(editor, args, body);\n });\n };\n\n var traverse = function (node, fn) {\n fn(node);\n if (node.firstChild) {\n traverse(node.firstChild, fn);\n }\n if (node.next) {\n traverse(node.next, fn);\n }\n };\n var findMatchingNodes = function (nodeFilters, attributeFilters, node) {\n var nodeMatches = {};\n var attrMatches = {};\n var matches = [];\n if (node.firstChild) {\n traverse(node.firstChild, function (node) {\n each(nodeFilters, function (filter$$1) {\n if (filter$$1.name === node.name) {\n if (nodeMatches[filter$$1.name]) {\n nodeMatches[filter$$1.name].nodes.push(node);\n } else {\n nodeMatches[filter$$1.name] = {\n filter: filter$$1,\n nodes: [node]\n };\n }\n }\n });\n each(attributeFilters, function (filter$$1) {\n if (typeof node.attr(filter$$1.name) === 'string') {\n if (attrMatches[filter$$1.name]) {\n attrMatches[filter$$1.name].nodes.push(node);\n } else {\n attrMatches[filter$$1.name] = {\n filter: filter$$1,\n nodes: [node]\n };\n }\n }\n });\n });\n }\n for (var name in nodeMatches) {\n if (nodeMatches.hasOwnProperty(name)) {\n matches.push(nodeMatches[name]);\n }\n }\n for (var name in attrMatches) {\n if (attrMatches.hasOwnProperty(name)) {\n matches.push(attrMatches[name]);\n }\n }\n return matches;\n };\n var filter$3 = function (nodeFilters, attributeFilters, node) {\n var matches = findMatchingNodes(nodeFilters, attributeFilters, node);\n each(matches, function (match) {\n each(match.filter.callbacks, function (callback) {\n callback(match.nodes, match.filter.name, {});\n });\n });\n };\n\n var defaultFormat$1 = 'html';\n var isTreeNode = function (content) {\n return content instanceof Node$2;\n };\n var moveSelection = function (editor) {\n if ($_e3v8sn4vjkmcwl9y.hasFocus(editor)) {\n $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).each(function (pos) {\n var node = pos.getNode();\n var caretPos = $_bjermr1rjkmcwkij.isTable(node) ? $_1m3f3j2yjkmcwkqg.firstPositionIn(node).getOr(pos) : pos;\n editor.selection.setRng(caretPos.toRange());\n });\n }\n };\n var setEditorHtml = function (editor, html) {\n editor.dom.setHTML(editor.getBody(), html);\n moveSelection(editor);\n };\n var setContentString = function (editor, body, content, args) {\n var forcedRootBlockName, padd;\n if (content.length === 0 || /^\\s+$/.test(content)) {\n padd = '
';\n if (body.nodeName === 'TABLE') {\n content = '' + padd + '';\n } else if (/^(UL|OL)$/.test(body.nodeName)) {\n content = '
  • ' + padd + '
  • ';\n }\n forcedRootBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {\n content = padd;\n content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content);\n } else if (!content) {\n content = '
    ';\n }\n setEditorHtml(editor, content);\n editor.fire('SetContent', args);\n } else {\n if (args.format !== 'raw') {\n content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {\n isRootContent: true,\n insert: true\n }));\n }\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? content : $_4ujg4tljkmcwkbk.trim(content);\n setEditorHtml(editor, args.content);\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n }\n return args.content;\n };\n var setContentTree = function (editor, body, content, args) {\n filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);\n var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content);\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? html : $_4ujg4tljkmcwkbk.trim(html);\n setEditorHtml(editor, args.content);\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n return content;\n };\n var setContent$1 = function (editor, content, args) {\n if (args === void 0) {\n args = {};\n }\n args.format = args.format ? args.format : defaultFormat$1;\n args.set = true;\n args.content = isTreeNode(content) ? '' : content;\n if (!isTreeNode(content) && !args.no_events) {\n editor.fire('BeforeSetContent', args);\n content = args.content;\n }\n return Option.from(editor.getBody()).fold(constant(content), function (body) {\n return isTreeNode(content) ? setContentTree(editor, body, content, args) : setContentString(editor, body, content, args);\n });\n };\n\n var DOM$6 = DOMUtils$1.DOM;\n var restoreOriginalStyles = function (editor) {\n DOM$6.setStyle(editor.id, 'display', editor.orgDisplay);\n };\n var safeDestroy = function (x) {\n return Option.from(x).each(function (x) {\n return x.destroy();\n });\n };\n var clearDomReferences = function (editor) {\n editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null;\n editor.bodyElement = editor.contentDocument = editor.contentWindow = null;\n editor.iframeElement = editor.targetElm = null;\n if (editor.selection) {\n editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null;\n }\n };\n var restoreForm = function (editor) {\n var form = editor.formElement;\n if (form) {\n if (form._mceOldSubmit) {\n form.submit = form._mceOldSubmit;\n form._mceOldSubmit = null;\n }\n DOM$6.unbind(form, 'submit reset', editor.formEventDelegate);\n }\n };\n var remove$9 = function (editor) {\n if (!editor.removed) {\n var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload;\n var body = editor.getBody();\n var element = editor.getElement();\n if (body) {\n editor.save({ is_removing: true });\n }\n editor.removed = true;\n editor.unbindAllNativeEvents();\n if (editor.hasHiddenInput && element) {\n DOM$6.remove(element.nextSibling);\n }\n if (!editor.inline && body) {\n restoreOriginalStyles(editor);\n }\n $_q3ric4tjkmcwl9q.fireRemove(editor);\n editor.editorManager.remove(editor);\n DOM$6.remove(editor.getContainer());\n safeDestroy(_selectionOverrides);\n safeDestroy(editorUpload);\n editor.destroy();\n }\n };\n var destroy = function (editor, automatic) {\n var selection = editor.selection, dom = editor.dom;\n if (editor.destroyed) {\n return;\n }\n if (!automatic && !editor.removed) {\n editor.remove();\n return;\n }\n if (!automatic) {\n editor.editorManager.off('beforeunload', editor._beforeUnload);\n if (editor.theme && editor.theme.destroy) {\n editor.theme.destroy();\n }\n safeDestroy(selection);\n safeDestroy(dom);\n }\n restoreForm(editor);\n clearDomReferences(editor);\n editor.destroyed = true;\n };\n\n var DOM$7 = DOMUtils$1.DOM;\n var extend$4 = $_4ujg4tljkmcwkbk.extend;\n var each$21 = $_4ujg4tljkmcwkbk.each;\n var resolve$4 = $_4ujg4tljkmcwkbk.resolve;\n var ie$2 = $_cvvl9iajkmcwk25.ie;\n var Editor = function (id, settings, editorManager) {\n var self = this;\n var documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;\n var baseUri = editorManager.baseURI;\n settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings);\n self.settings = settings;\n AddOnManager.language = settings.language || 'en';\n AddOnManager.languageLoad = settings.language_load;\n AddOnManager.baseURL = editorManager.baseURL;\n self.id = id;\n self.setDirty(false);\n self.plugins = {};\n self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri });\n self.baseURI = baseUri;\n self.contentCSS = [];\n self.contentStyles = [];\n self.shortcuts = new Shortcuts(self);\n self.loadedCSS = {};\n self.editorCommands = new EditorCommands(self);\n self.suffix = editorManager.suffix;\n self.editorManager = editorManager;\n self.inline = settings.inline;\n self.buttons = {};\n self.menuItems = {};\n if (settings.cache_suffix) {\n $_cvvl9iajkmcwk25.cacheSuffix = settings.cache_suffix.replace(/^[\\?\\&]+/, '');\n }\n if (settings.override_viewport === false) {\n $_cvvl9iajkmcwk25.overrideViewPort = false;\n }\n editorManager.fire('SetupEditor', { editor: self });\n self.execCallback('setup', self);\n self.$ = DomQuery.overrideDefaults(function () {\n return {\n context: self.inline ? self.getBody() : self.getDoc(),\n element: self.getBody()\n };\n });\n };\n Editor.prototype = {\n render: function () {\n $_9u29xe4yjkmcwlai.render(this);\n },\n focus: function (skipFocus) {\n $_e3v8sn4vjkmcwl9y.focus(this, skipFocus);\n },\n hasFocus: function () {\n return $_e3v8sn4vjkmcwl9y.hasFocus(this);\n },\n execCallback: function (name) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var self = this;\n var callback = self.settings[name], scope;\n if (!callback) {\n return;\n }\n if (self.callbackLookup && (scope = self.callbackLookup[name])) {\n callback = scope.func;\n scope = scope.scope;\n }\n if (typeof callback === 'string') {\n scope = callback.replace(/\\.\\w+$/, '');\n scope = scope ? resolve$4(scope) : 0;\n callback = resolve$4(callback);\n self.callbackLookup = self.callbackLookup || {};\n self.callbackLookup[name] = {\n func: callback,\n scope: scope\n };\n }\n return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));\n },\n translate: function (text) {\n if (text && $_4ujg4tljkmcwkbk.is(text, 'string')) {\n var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n;\n text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\\{\\#([^\\}]+)\\}/g, function (a, b) {\n return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}';\n });\n }\n return this.editorManager.translate(text);\n },\n getLang: function (name, defaultVal) {\n return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}');\n },\n getParam: function (name, defaultVal, type) {\n return getParam(this, name, defaultVal, type);\n },\n nodeChanged: function (args) {\n this._nodeChangeDispatcher.nodeChanged(args);\n },\n addButton: function (name, settings) {\n var self = this;\n if (settings.cmd) {\n settings.onclick = function () {\n self.execCommand(settings.cmd);\n };\n }\n if (settings.stateSelector && typeof settings.active === 'undefined') {\n settings.active = false;\n }\n if (!settings.text && !settings.icon) {\n settings.icon = name;\n }\n self.buttons = self.buttons;\n settings.tooltip = settings.tooltip || settings.title;\n self.buttons[name] = settings;\n },\n addSidebar: function (name, settings) {\n return $_gcw4n27ojkmcwlsr.add(this, name, settings);\n },\n addMenuItem: function (name, settings) {\n var self = this;\n if (settings.cmd) {\n settings.onclick = function () {\n self.execCommand(settings.cmd);\n };\n }\n self.menuItems = self.menuItems;\n self.menuItems[name] = settings;\n },\n addContextToolbar: function (predicate, items) {\n var self = this;\n var selector;\n self.contextToolbars = self.contextToolbars || [];\n if (typeof predicate === 'string') {\n selector = predicate;\n predicate = function (elm) {\n return self.dom.is(elm, selector);\n };\n }\n self.contextToolbars.push({\n id: $_8flfjw5jjkmcwldd.uuid('mcet'),\n predicate: predicate,\n items: items\n });\n },\n addCommand: function (name, callback, scope) {\n this.editorCommands.addCommand(name, callback, scope);\n },\n addQueryStateHandler: function (name, callback, scope) {\n this.editorCommands.addQueryStateHandler(name, callback, scope);\n },\n addQueryValueHandler: function (name, callback, scope) {\n this.editorCommands.addQueryValueHandler(name, callback, scope);\n },\n addShortcut: function (pattern, desc, cmdFunc, scope) {\n this.shortcuts.add(pattern, desc, cmdFunc, scope);\n },\n execCommand: function (cmd, ui, value, args) {\n return this.editorCommands.execCommand(cmd, ui, value, args);\n },\n queryCommandState: function (cmd) {\n return this.editorCommands.queryCommandState(cmd);\n },\n queryCommandValue: function (cmd) {\n return this.editorCommands.queryCommandValue(cmd);\n },\n queryCommandSupported: function (cmd) {\n return this.editorCommands.queryCommandSupported(cmd);\n },\n show: function () {\n var self = this;\n if (self.hidden) {\n self.hidden = false;\n if (self.inline) {\n self.getBody().contentEditable = true;\n } else {\n DOM$7.show(self.getContainer());\n DOM$7.hide(self.id);\n }\n self.load();\n self.fire('show');\n }\n },\n hide: function () {\n var self = this, doc = self.getDoc();\n if (!self.hidden) {\n if (ie$2 && doc && !self.inline) {\n doc.execCommand('SelectAll');\n }\n self.save();\n if (self.inline) {\n self.getBody().contentEditable = false;\n if (self === self.editorManager.focusedEditor) {\n self.editorManager.focusedEditor = null;\n }\n } else {\n DOM$7.hide(self.getContainer());\n DOM$7.setStyle(self.id, 'display', self.orgDisplay);\n }\n self.hidden = true;\n self.fire('hide');\n }\n },\n isHidden: function () {\n return !!this.hidden;\n },\n setProgressState: function (state, time) {\n this.fire('ProgressState', {\n state: state,\n time: time\n });\n },\n load: function (args) {\n var self = this;\n var elm = self.getElement(), html;\n if (self.removed) {\n return '';\n }\n if (elm) {\n args = args || {};\n args.load = true;\n html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);\n args.element = elm;\n if (!args.no_events) {\n self.fire('LoadContent', args);\n }\n args.element = elm = null;\n return html;\n }\n },\n save: function (args) {\n var self = this;\n var elm = self.getElement(), html, form;\n if (!elm || !self.initialized || self.removed) {\n return;\n }\n args = args || {};\n args.save = true;\n args.element = elm;\n html = args.content = self.getContent(args);\n if (!args.no_events) {\n self.fire('SaveContent', args);\n }\n if (args.format === 'raw') {\n self.fire('RawSaveContent', args);\n }\n html = args.content;\n if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {\n if (args.is_removing || !self.inline) {\n elm.innerHTML = html;\n }\n if (form = DOM$7.getParent(self.id, 'form')) {\n each$21(form.elements, function (elm) {\n if (elm.name === self.id) {\n elm.value = html;\n return false;\n }\n });\n }\n } else {\n elm.value = html;\n }\n args.element = elm = null;\n if (args.set_dirty !== false) {\n self.setDirty(false);\n }\n return html;\n },\n setContent: function (content, args) {\n return setContent$1(this, content, args);\n },\n getContent: function (args) {\n return getContent$1(this, args);\n },\n insertContent: function (content, args) {\n if (args) {\n content = extend$4({ content: content }, args);\n }\n this.execCommand('mceInsertContent', false, content);\n },\n isDirty: function () {\n return !this.isNotDirty;\n },\n setDirty: function (state) {\n var oldState = !this.isNotDirty;\n this.isNotDirty = !state;\n if (state && state !== oldState) {\n this.fire('dirty');\n }\n },\n setMode: function (mode) {\n setMode(this, mode);\n },\n getContainer: function () {\n var self = this;\n if (!self.container) {\n self.container = DOM$7.get(self.editorContainer || self.id + '_parent');\n }\n return self.container;\n },\n getContentAreaContainer: function () {\n return this.contentAreaContainer;\n },\n getElement: function () {\n if (!this.targetElm) {\n this.targetElm = DOM$7.get(this.id);\n }\n return this.targetElm;\n },\n getWin: function () {\n var self = this;\n var elm;\n if (!self.contentWindow) {\n elm = self.iframeElement;\n if (elm) {\n self.contentWindow = elm.contentWindow;\n }\n }\n return self.contentWindow;\n },\n getDoc: function () {\n var self = this;\n var win;\n if (!self.contentDocument) {\n win = self.getWin();\n if (win) {\n self.contentDocument = win.document;\n }\n }\n return self.contentDocument;\n },\n getBody: function () {\n var doc = this.getDoc();\n return this.bodyElement || (doc ? doc.body : null);\n },\n convertURL: function (url, name, elm) {\n var self = this, settings = self.settings;\n if (settings.urlconverter_callback) {\n return self.execCallback('urlconverter_callback', url, elm, true, name);\n }\n if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {\n return url;\n }\n if (settings.relative_urls) {\n return self.documentBaseURI.toRelative(url);\n }\n url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);\n return url;\n },\n addVisual: function (elm) {\n var self = this;\n var settings = self.settings;\n var dom = self.dom;\n var cls;\n elm = elm || self.getBody();\n if (self.hasVisual === undefined) {\n self.hasVisual = settings.visual;\n }\n each$21(dom.select('table,a', elm), function (elm) {\n var value;\n switch (elm.nodeName) {\n case 'TABLE':\n cls = settings.visual_table_class || 'mce-item-table';\n value = dom.getAttrib(elm, 'border');\n if ((!value || value === '0') && self.hasVisual) {\n dom.addClass(elm, cls);\n } else {\n dom.removeClass(elm, cls);\n }\n return;\n case 'A':\n if (!dom.getAttrib(elm, 'href')) {\n value = dom.getAttrib(elm, 'name') || elm.id;\n cls = settings.visual_anchor_class || 'mce-item-anchor';\n if (value && self.hasVisual) {\n dom.addClass(elm, cls);\n } else {\n dom.removeClass(elm, cls);\n }\n }\n return;\n }\n });\n self.fire('VisualAid', {\n element: elm,\n hasVisual: self.hasVisual\n });\n },\n remove: function () {\n remove$9(this);\n },\n destroy: function (automatic) {\n destroy(this, automatic);\n },\n uploadImages: function (callback) {\n return this.editorUpload.uploadImages(callback);\n },\n _scanForImages: function () {\n return this.editorUpload.scanForImages();\n }\n };\n extend$4(Editor.prototype, EditorObservable$1);\n\n var isEditorUIElement = function (elm) {\n return elm.className.toString().indexOf('mce-') !== -1;\n };\n var $_48zpgt7xjkmcwlum = { isEditorUIElement: isEditorUIElement };\n\n var isManualNodeChange = function (e) {\n return e.type === 'nodechange' && e.selectionChange;\n };\n var registerPageMouseUp = function (editor, throttledStore) {\n var mouseUpPage = function () {\n throttledStore.throttle();\n };\n DOMUtils$1.DOM.bind(document, 'mouseup', mouseUpPage);\n editor.on('remove', function () {\n DOMUtils$1.DOM.unbind(document, 'mouseup', mouseUpPage);\n });\n };\n var registerFocusOut = function (editor) {\n editor.on('focusout', function () {\n $_39c3zs4ljkmcwl86.store(editor);\n });\n };\n var registerMouseUp = function (editor, throttledStore) {\n editor.on('mouseup touchend', function (e) {\n throttledStore.throttle();\n });\n };\n var registerEditorEvents = function (editor, throttledStore) {\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\n if (browser.isIE()) {\n registerFocusOut(editor);\n } else {\n registerMouseUp(editor, throttledStore);\n }\n editor.on('keyup nodechange', function (e) {\n if (!isManualNodeChange(e)) {\n $_39c3zs4ljkmcwl86.store(editor);\n }\n });\n };\n var register$3 = function (editor) {\n var throttledStore = first$1(function () {\n $_39c3zs4ljkmcwl86.store(editor);\n }, 0);\n if (editor.inline) {\n registerPageMouseUp(editor, throttledStore);\n }\n editor.on('init', function () {\n registerEditorEvents(editor, throttledStore);\n });\n editor.on('remove', function () {\n throttledStore.cancel();\n });\n };\n var $_d657g07yjkmcwlun = { register: register$3 };\n\n var documentFocusInHandler;\n var DOM$8 = DOMUtils$1.DOM;\n var isEditorUIElement$1 = function (elm) {\n return $_48zpgt7xjkmcwlum.isEditorUIElement(elm);\n };\n var isUIElement = function (editor, elm) {\n var customSelector = editor ? editor.settings.custom_ui_selector : '';\n var parent$$1 = DOM$8.getParent(elm, function (elm) {\n return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);\n });\n return parent$$1 !== null;\n };\n var getActiveElement = function () {\n try {\n return document.activeElement;\n } catch (ex) {\n return document.body;\n }\n };\n var registerEvents = function (editorManager, e) {\n var editor = e.editor;\n $_d657g07yjkmcwlun.register(editor);\n editor.on('focusin', function () {\n var self$$1 = this;\n var focusedEditor = editorManager.focusedEditor;\n if (focusedEditor !== self$$1) {\n if (focusedEditor) {\n focusedEditor.fire('blur', { focusedEditor: self$$1 });\n }\n editorManager.setActive(self$$1);\n editorManager.focusedEditor = self$$1;\n self$$1.fire('focus', { blurredEditor: focusedEditor });\n self$$1.focus(true);\n }\n });\n editor.on('focusout', function () {\n var self$$1 = this;\n $_3l01gcijkmcwk99.setEditorTimeout(self$$1, function () {\n var focusedEditor = editorManager.focusedEditor;\n if (!isUIElement(self$$1, getActiveElement()) && focusedEditor === self$$1) {\n self$$1.fire('blur', { focusedEditor: null });\n editorManager.focusedEditor = null;\n }\n });\n });\n if (!documentFocusInHandler) {\n documentFocusInHandler = function (e) {\n var activeEditor = editorManager.activeEditor;\n var target;\n target = e.target;\n if (activeEditor && target.ownerDocument === document) {\n if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {\n activeEditor.fire('blur', { focusedEditor: null });\n editorManager.focusedEditor = null;\n }\n }\n };\n DOM$8.bind(document, 'focusin', documentFocusInHandler);\n }\n };\n var unregisterDocumentEvents = function (editorManager, e) {\n if (editorManager.focusedEditor === e.editor) {\n editorManager.focusedEditor = null;\n }\n if (!editorManager.activeEditor) {\n DOM$8.unbind(document, 'focusin', documentFocusInHandler);\n documentFocusInHandler = null;\n }\n };\n var setup$15 = function (editorManager) {\n editorManager.on('AddEditor', curry(registerEvents, editorManager));\n editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\n };\n var $_6zk6867wjkmcwluj = {\n setup: setup$15,\n isEditorUIElement: isEditorUIElement$1,\n isUIElement: isUIElement\n };\n\n var data = {};\n var code = 'en';\n var $_9pp0ut7zjkmcwlut = {\n setCode: function (newCode) {\n if (newCode) {\n code = newCode;\n this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;\n }\n },\n getCode: function () {\n return code;\n },\n rtl: false,\n add: function (code, items) {\n var langData = data[code];\n if (!langData) {\n data[code] = langData = {};\n }\n for (var name in items) {\n langData[name] = items[name];\n }\n this.setCode(code);\n },\n translate: function (text) {\n var langData = data[code] || {};\n var toString = function (obj) {\n if ($_4ujg4tljkmcwkbk.is(obj, 'function')) {\n return Object.prototype.toString.call(obj);\n }\n return !isEmpty(obj) ? '' + obj : '';\n };\n var isEmpty = function (text) {\n return text === '' || text === null || $_4ujg4tljkmcwkbk.is(text, 'undefined');\n };\n var getLangData = function (text) {\n text = toString(text);\n return $_4ujg4tljkmcwkbk.hasOwn(langData, text) ? toString(langData[text]) : text;\n };\n if (isEmpty(text)) {\n return '';\n }\n if ($_4ujg4tljkmcwkbk.is(text, 'object') && $_4ujg4tljkmcwkbk.hasOwn(text, 'raw')) {\n return toString(text.raw);\n }\n if ($_4ujg4tljkmcwkbk.is(text, 'array')) {\n var values_1 = text.slice(1);\n text = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, function ($1, $2) {\n return $_4ujg4tljkmcwkbk.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1;\n });\n }\n return getLangData(text).replace(/{context:\\w+}$/, '');\n },\n data: data\n };\n\n var DOM$9 = DOMUtils$1.DOM;\n var explode$4 = $_4ujg4tljkmcwkbk.explode;\n var each$22 = $_4ujg4tljkmcwkbk.each;\n var extend$5 = $_4ujg4tljkmcwkbk.extend;\n var instanceCounter = 0;\n var beforeUnloadDelegate;\n var EditorManager;\n var boundGlobalEvents = false;\n var legacyEditors = [];\n var editors = [];\n var isValidLegacyKey = function (id) {\n return id !== 'length';\n };\n var globalEventDelegate = function (e) {\n each$22(EditorManager.get(), function (editor) {\n if (e.type === 'scroll') {\n editor.fire('ScrollWindow', e);\n } else {\n editor.fire('ResizeWindow', e);\n }\n });\n };\n var toggleGlobalEvents = function (state) {\n if (state !== boundGlobalEvents) {\n if (state) {\n DomQuery(window).on('resize scroll', globalEventDelegate);\n } else {\n DomQuery(window).off('resize scroll', globalEventDelegate);\n }\n boundGlobalEvents = state;\n }\n };\n var removeEditorFromList = function (targetEditor) {\n var oldEditors = editors;\n delete legacyEditors[targetEditor.id];\n for (var i = 0; i < legacyEditors.length; i++) {\n if (legacyEditors[i] === targetEditor) {\n legacyEditors.splice(i, 1);\n break;\n }\n }\n editors = filter(editors, function (editor) {\n return targetEditor !== editor;\n });\n if (EditorManager.activeEditor === targetEditor) {\n EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;\n }\n if (EditorManager.focusedEditor === targetEditor) {\n EditorManager.focusedEditor = null;\n }\n return oldEditors.length !== editors.length;\n };\n var purgeDestroyedEditor = function (editor) {\n if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {\n removeEditorFromList(editor);\n editor.unbindAllNativeEvents();\n editor.destroy(true);\n editor.removed = true;\n editor = null;\n }\n return editor;\n };\n EditorManager = {\n defaultSettings: {},\n $: DomQuery,\n majorVersion: '4',\n minorVersion: '8.2',\n releaseDate: '2018-08-09',\n editors: legacyEditors,\n i18n: $_9pp0ut7zjkmcwlut,\n activeEditor: null,\n settings: {},\n setup: function () {\n var self$$1 = this;\n var baseURL, documentBaseURL, suffix = '', preInit, src;\n documentBaseURL = URI.getDocumentBaseUrl(document.location);\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(documentBaseURL)) {\n documentBaseURL = documentBaseURL.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n if (!/[\\/\\\\]$/.test(documentBaseURL)) {\n documentBaseURL += '/';\n }\n }\n preInit = window.tinymce || window.tinyMCEPreInit;\n if (preInit) {\n baseURL = preInit.base || preInit.baseURL;\n suffix = preInit.suffix;\n } else {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n src = scripts[i].src;\n var srcScript = src.substring(src.lastIndexOf('/'));\n if (/tinymce(\\.full|\\.jquery|)(\\.min|\\.dev|)\\.js/.test(src)) {\n if (srcScript.indexOf('.min') !== -1) {\n suffix = '.min';\n }\n baseURL = src.substring(0, src.lastIndexOf('/'));\n break;\n }\n }\n if (!baseURL && document.currentScript) {\n src = document.currentScript.src;\n if (src.indexOf('.min') !== -1) {\n suffix = '.min';\n }\n baseURL = src.substring(0, src.lastIndexOf('/'));\n }\n }\n self$$1.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);\n self$$1.documentBaseURL = documentBaseURL;\n self$$1.baseURI = new URI(self$$1.baseURL);\n self$$1.suffix = suffix;\n $_6zk6867wjkmcwluj.setup(self$$1);\n },\n overrideDefaults: function (defaultSettings) {\n var baseUrl, suffix;\n baseUrl = defaultSettings.base_url;\n if (baseUrl) {\n this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\\/+$/, ''));\n this.baseURI = new URI(this.baseURL);\n }\n suffix = defaultSettings.suffix;\n if (defaultSettings.suffix) {\n this.suffix = suffix;\n }\n this.defaultSettings = defaultSettings;\n var pluginBaseUrls = defaultSettings.plugin_base_urls;\n for (var name$$1 in pluginBaseUrls) {\n AddOnManager.PluginManager.urls[name$$1] = pluginBaseUrls[name$$1];\n }\n },\n init: function (settings) {\n var self$$1 = this;\n var result, invalidInlineTargets;\n invalidInlineTargets = $_4ujg4tljkmcwkbk.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' ');\n var isInvalidInlineTarget = function (settings, elm) {\n return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets;\n };\n var createId = function (elm) {\n var id = elm.id;\n if (!id) {\n id = elm.name;\n if (id && !DOM$9.get(id)) {\n id = elm.name;\n } else {\n id = DOM$9.uniqueId();\n }\n elm.setAttribute('id', id);\n }\n return id;\n };\n var execCallback = function (name$$1) {\n var callback = settings[name$$1];\n if (!callback) {\n return;\n }\n return callback.apply(self$$1, Array.prototype.slice.call(arguments, 2));\n };\n var hasClass = function (elm, className) {\n return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className);\n };\n var findTargets = function (settings) {\n var l, targets = [];\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11) {\n $_b9je0i54jkmcwlbe.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/');\n return [];\n }\n if (settings.types) {\n each$22(settings.types, function (type) {\n targets = targets.concat(DOM$9.select(type.selector));\n });\n return targets;\n } else if (settings.selector) {\n return DOM$9.select(settings.selector);\n } else if (settings.target) {\n return [settings.target];\n }\n switch (settings.mode) {\n case 'exact':\n l = settings.elements || '';\n if (l.length > 0) {\n each$22(explode$4(l), function (id) {\n var elm;\n if (elm = DOM$9.get(id)) {\n targets.push(elm);\n } else {\n each$22(document.forms, function (f) {\n each$22(f.elements, function (e) {\n if (e.name === id) {\n id = 'mce_editor_' + instanceCounter++;\n DOM$9.setAttrib(e, 'id', id);\n targets.push(e);\n }\n });\n });\n }\n });\n }\n break;\n case 'textareas':\n case 'specific_textareas':\n each$22(DOM$9.select('textarea'), function (elm) {\n if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {\n return;\n }\n if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {\n targets.push(elm);\n }\n });\n break;\n }\n return targets;\n };\n var provideResults = function (editors) {\n result = editors;\n };\n var initEditors = function () {\n var initCount = 0;\n var editors = [];\n var targets;\n var createEditor = function (id, settings, targetElm) {\n var editor = new Editor(id, settings, self$$1);\n editors.push(editor);\n editor.on('init', function () {\n if (++initCount === targets.length) {\n provideResults(editors);\n }\n });\n editor.targetElm = editor.targetElm || targetElm;\n editor.render();\n };\n DOM$9.unbind(window, 'ready', initEditors);\n execCallback('onpageload');\n targets = DomQuery.unique(findTargets(settings));\n if (settings.types) {\n each$22(settings.types, function (type) {\n $_4ujg4tljkmcwkbk.each(targets, function (elm) {\n if (DOM$9.is(elm, type.selector)) {\n createEditor(createId(elm), extend$5({}, settings, type), elm);\n return false;\n }\n return true;\n });\n });\n return;\n }\n $_4ujg4tljkmcwkbk.each(targets, function (elm) {\n purgeDestroyedEditor(self$$1.get(elm.id));\n });\n targets = $_4ujg4tljkmcwkbk.grep(targets, function (elm) {\n return !self$$1.get(elm.id);\n });\n if (targets.length === 0) {\n provideResults([]);\n } else {\n each$22(targets, function (elm) {\n if (isInvalidInlineTarget(settings, elm)) {\n $_b9je0i54jkmcwlbe.initError('Could not initialize inline editor on invalid inline target element', elm);\n } else {\n createEditor(createId(elm), settings, elm);\n }\n });\n }\n };\n self$$1.settings = settings;\n DOM$9.bind(window, 'ready', initEditors);\n return new promiseObj(function (resolve) {\n if (result) {\n resolve(result);\n } else {\n provideResults = function (editors) {\n resolve(editors);\n };\n }\n });\n },\n get: function (id) {\n if (arguments.length === 0) {\n return editors.slice(0);\n } else if (isString(id)) {\n return find(editors, function (editor) {\n return editor.id === id;\n }).getOr(null);\n } else if (isNumber(id)) {\n return editors[id] ? editors[id] : null;\n } else {\n return null;\n }\n },\n add: function (editor) {\n var self$$1 = this;\n var existingEditor;\n existingEditor = legacyEditors[editor.id];\n if (existingEditor === editor) {\n return editor;\n }\n if (self$$1.get(editor.id) === null) {\n if (isValidLegacyKey(editor.id)) {\n legacyEditors[editor.id] = editor;\n }\n legacyEditors.push(editor);\n editors.push(editor);\n }\n toggleGlobalEvents(true);\n self$$1.activeEditor = editor;\n self$$1.fire('AddEditor', { editor: editor });\n if (!beforeUnloadDelegate) {\n beforeUnloadDelegate = function () {\n self$$1.fire('BeforeUnload');\n };\n DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);\n }\n return editor;\n },\n createEditor: function (id, settings) {\n return this.add(new Editor(id, settings, this));\n },\n remove: function (selector) {\n var self$$1 = this;\n var i, editor;\n if (!selector) {\n for (i = editors.length - 1; i >= 0; i--) {\n self$$1.remove(editors[i]);\n }\n return;\n }\n if (isString(selector)) {\n each$22(DOM$9.select(selector), function (elm) {\n editor = self$$1.get(elm.id);\n if (editor) {\n self$$1.remove(editor);\n }\n });\n return;\n }\n editor = selector;\n if (isNull(self$$1.get(editor.id))) {\n return null;\n }\n if (removeEditorFromList(editor)) {\n self$$1.fire('RemoveEditor', { editor: editor });\n }\n if (editors.length === 0) {\n DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);\n }\n editor.remove();\n toggleGlobalEvents(editors.length > 0);\n return editor;\n },\n execCommand: function (cmd, ui, value) {\n var self$$1 = this, editor = self$$1.get(value);\n switch (cmd) {\n case 'mceAddEditor':\n if (!self$$1.get(value)) {\n new Editor(value, self$$1.settings, self$$1).render();\n }\n return true;\n case 'mceRemoveEditor':\n if (editor) {\n editor.remove();\n }\n return true;\n case 'mceToggleEditor':\n if (!editor) {\n self$$1.execCommand('mceAddEditor', 0, value);\n return true;\n }\n if (editor.isHidden()) {\n editor.show();\n } else {\n editor.hide();\n }\n return true;\n }\n if (self$$1.activeEditor) {\n return self$$1.activeEditor.execCommand(cmd, ui, value);\n }\n return false;\n },\n triggerSave: function () {\n each$22(editors, function (editor) {\n editor.save();\n });\n },\n addI18n: function (code, items) {\n $_9pp0ut7zjkmcwlut.add(code, items);\n },\n translate: function (text) {\n return $_9pp0ut7zjkmcwlut.translate(text);\n },\n setActive: function (editor) {\n var activeEditor = this.activeEditor;\n if (this.activeEditor !== editor) {\n if (activeEditor) {\n activeEditor.fire('deactivate', { relatedTarget: editor });\n }\n editor.fire('activate', { relatedTarget: activeEditor });\n }\n this.activeEditor = editor;\n }\n };\n extend$5(EditorManager, $_ed2ug44qjkmcwl97);\n EditorManager.setup();\n var EditorManager$1 = EditorManager;\n\n function RangeUtils(dom) {\n var walk = function (rng, callback) {\n return $_cuckrv3bjkmcwktk.walk(dom, rng, callback);\n };\n var split = $_bnmynr69jkmcwlir.split;\n var normalize = function (rng) {\n return $_21c07i4jjkmcwl7w.normalize(dom, rng).fold(constant(false), function (normalizedRng) {\n rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);\n rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);\n return true;\n });\n };\n return {\n walk: walk,\n split: split,\n normalize: normalize\n };\n }\n (function (RangeUtils) {\n RangeUtils.compareRanges = $_axtxv74kjkmcwl84.isEq;\n RangeUtils.getCaretRangeFromPoint = $_52q21w6wjkmcwlna.fromPoint;\n RangeUtils.getSelectedNode = getSelectedNode;\n RangeUtils.getNode = getNode;\n }(RangeUtils || (RangeUtils = {})));\n var RangeUtils$1 = RangeUtils;\n\n var min = Math.min;\n var max = Math.max;\n var round$2 = Math.round;\n var relativePosition = function (rect, targetRect, rel) {\n var x, y, w, h, targetW, targetH;\n x = targetRect.x;\n y = targetRect.y;\n w = rect.w;\n h = rect.h;\n targetW = targetRect.w;\n targetH = targetRect.h;\n rel = (rel || '').split('');\n if (rel[0] === 'b') {\n y += targetH;\n }\n if (rel[1] === 'r') {\n x += targetW;\n }\n if (rel[0] === 'c') {\n y += round$2(targetH / 2);\n }\n if (rel[1] === 'c') {\n x += round$2(targetW / 2);\n }\n if (rel[3] === 'b') {\n y -= h;\n }\n if (rel[4] === 'r') {\n x -= w;\n }\n if (rel[3] === 'c') {\n y -= round$2(h / 2);\n }\n if (rel[4] === 'c') {\n x -= round$2(w / 2);\n }\n return create$3(x, y, w, h);\n };\n var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {\n var pos, i;\n for (i = 0; i < rels.length; i++) {\n pos = relativePosition(rect, targetRect, rels[i]);\n if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {\n return rels[i];\n }\n }\n return null;\n };\n var inflate = function (rect, w, h) {\n return create$3(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);\n };\n var intersect = function (rect, cropRect) {\n var x1, y1, x2, y2;\n x1 = max(rect.x, cropRect.x);\n y1 = max(rect.y, cropRect.y);\n x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);\n y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);\n if (x2 - x1 < 0 || y2 - y1 < 0) {\n return null;\n }\n return create$3(x1, y1, x2 - x1, y2 - y1);\n };\n var clamp$1 = function (rect, clampRect, fixedSize) {\n var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;\n x1 = rect.x;\n y1 = rect.y;\n x2 = rect.x + rect.w;\n y2 = rect.y + rect.h;\n cx2 = clampRect.x + clampRect.w;\n cy2 = clampRect.y + clampRect.h;\n underflowX1 = max(0, clampRect.x - x1);\n underflowY1 = max(0, clampRect.y - y1);\n overflowX2 = max(0, x2 - cx2);\n overflowY2 = max(0, y2 - cy2);\n x1 += underflowX1;\n y1 += underflowY1;\n if (fixedSize) {\n x2 += underflowX1;\n y2 += underflowY1;\n x1 -= overflowX2;\n y1 -= overflowY2;\n }\n x2 -= overflowX2;\n y2 -= overflowY2;\n return create$3(x1, y1, x2 - x1, y2 - y1);\n };\n var create$3 = function (x, y, w, h) {\n return {\n x: x,\n y: y,\n w: w,\n h: h\n };\n };\n var fromClientRect = function (clientRect) {\n return create$3(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n };\n var $_es7eh281jkmcwlv1 = {\n inflate: inflate,\n relativePosition: relativePosition,\n findBestRelativePosition: findBestRelativePosition,\n intersect: intersect,\n clamp: clamp$1,\n create: create$3,\n fromClientRect: fromClientRect\n };\n\n var types = {};\n var $_e5pe6n82jkmcwlv8 = {\n add: function (type, typeClass) {\n types[type.toLowerCase()] = typeClass;\n },\n has: function (type) {\n return !!types[type.toLowerCase()];\n },\n get: function (type) {\n var lctype = type.toLowerCase();\n var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null;\n if (controlType === null) {\n throw new Error('Could not find module for type: ' + type);\n }\n return controlType;\n },\n create: function (type, settings) {\n var ControlType;\n if (typeof type === 'string') {\n settings = settings || {};\n settings.type = type;\n } else {\n settings = type;\n type = settings.type;\n }\n type = type.toLowerCase();\n ControlType = types[type];\n if (!ControlType) {\n throw new Error('Could not find control by type: ' + type);\n }\n ControlType = new ControlType(settings);\n ControlType.type = type;\n return ControlType;\n }\n };\n\n var each$23 = $_4ujg4tljkmcwkbk.each;\n var extend$6 = $_4ujg4tljkmcwkbk.extend;\n var extendClass;\n var initializing;\n var Class$1 = function () {\n };\n Class$1.extend = extendClass = function (prop) {\n var self = this;\n var _super = self.prototype;\n var prototype, name, member;\n var Class = function () {\n var i, mixins, mixin;\n var self = this;\n if (!initializing) {\n if (self.init) {\n self.init.apply(self, arguments);\n }\n mixins = self.Mixins;\n if (mixins) {\n i = mixins.length;\n while (i--) {\n mixin = mixins[i];\n if (mixin.init) {\n mixin.init.apply(self, arguments);\n }\n }\n }\n }\n };\n var dummy = function () {\n return this;\n };\n var createMethod = function (name, fn) {\n return function () {\n var self = this;\n var tmp = self._super;\n var ret;\n self._super = _super[name];\n ret = fn.apply(self, arguments);\n self._super = tmp;\n return ret;\n };\n };\n initializing = true;\n prototype = new self();\n initializing = false;\n if (prop.Mixins) {\n each$23(prop.Mixins, function (mixin) {\n for (var name_1 in mixin) {\n if (name_1 !== 'init') {\n prop[name_1] = mixin[name_1];\n }\n }\n });\n if (_super.Mixins) {\n prop.Mixins = _super.Mixins.concat(prop.Mixins);\n }\n }\n if (prop.Methods) {\n each$23(prop.Methods.split(','), function (name) {\n prop[name] = dummy;\n });\n }\n if (prop.Properties) {\n each$23(prop.Properties.split(','), function (name) {\n var fieldName = '_' + name;\n prop[name] = function (value) {\n var self = this;\n if (value !== undefined) {\n self[fieldName] = value;\n return self;\n }\n return self[fieldName];\n };\n });\n }\n if (prop.Statics) {\n each$23(prop.Statics, function (func, name) {\n Class[name] = func;\n });\n }\n if (prop.Defaults && _super.Defaults) {\n prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults);\n }\n for (name in prop) {\n member = prop[name];\n if (typeof member === 'function' && _super[name]) {\n prototype[name] = createMethod(name, member);\n } else {\n prototype[name] = member;\n }\n }\n Class.prototype = prototype;\n Class.constructor = Class;\n Class.extend = extendClass;\n return Class;\n };\n\n var min$1 = Math.min;\n var max$1 = Math.max;\n var round$3 = Math.round;\n var Color = function (value) {\n var self = {};\n var r = 0, g = 0, b = 0;\n var rgb2hsv = function (r, g, b) {\n var h, s, v, d, minRGB, maxRGB;\n h = 0;\n s = 0;\n v = 0;\n r = r / 255;\n g = g / 255;\n b = b / 255;\n minRGB = min$1(r, min$1(g, b));\n maxRGB = max$1(r, max$1(g, b));\n if (minRGB === maxRGB) {\n v = minRGB;\n return {\n h: 0,\n s: 0,\n v: v * 100\n };\n }\n d = r === minRGB ? g - b : b === minRGB ? r - g : b - r;\n h = r === minRGB ? 3 : b === minRGB ? 1 : 5;\n h = 60 * (h - d / (maxRGB - minRGB));\n s = (maxRGB - minRGB) / maxRGB;\n v = maxRGB;\n return {\n h: round$3(h),\n s: round$3(s * 100),\n v: round$3(v * 100)\n };\n };\n var hsvToRgb = function (hue, saturation, brightness) {\n var side, chroma, x, match;\n hue = (parseInt(hue, 10) || 0) % 360;\n saturation = parseInt(saturation, 10) / 100;\n brightness = parseInt(brightness, 10) / 100;\n saturation = max$1(0, min$1(saturation, 1));\n brightness = max$1(0, min$1(brightness, 1));\n if (saturation === 0) {\n r = g = b = round$3(255 * brightness);\n return;\n }\n side = hue / 60;\n chroma = brightness * saturation;\n x = chroma * (1 - Math.abs(side % 2 - 1));\n match = brightness - chroma;\n switch (Math.floor(side)) {\n case 0:\n r = chroma;\n g = x;\n b = 0;\n break;\n case 1:\n r = x;\n g = chroma;\n b = 0;\n break;\n case 2:\n r = 0;\n g = chroma;\n b = x;\n break;\n case 3:\n r = 0;\n g = x;\n b = chroma;\n break;\n case 4:\n r = x;\n g = 0;\n b = chroma;\n break;\n case 5:\n r = chroma;\n g = 0;\n b = x;\n break;\n default:\n r = g = b = 0;\n }\n r = round$3(255 * (r + match));\n g = round$3(255 * (g + match));\n b = round$3(255 * (b + match));\n };\n var toHex = function () {\n var hex = function (val) {\n val = parseInt(val, 10).toString(16);\n return val.length > 1 ? val : '0' + val;\n };\n return '#' + hex(r) + hex(g) + hex(b);\n };\n var toRgb = function () {\n return {\n r: r,\n g: g,\n b: b\n };\n };\n var toHsv = function () {\n return rgb2hsv(r, g, b);\n };\n var parse = function (value) {\n var matches;\n if (typeof value === 'object') {\n if ('r' in value) {\n r = value.r;\n g = value.g;\n b = value.b;\n } else if ('v' in value) {\n hsvToRgb(value.h, value.s, value.v);\n }\n } else {\n if (matches = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)[^\\)]*\\)/gi.exec(value)) {\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) {\n r = parseInt(matches[1], 16);\n g = parseInt(matches[2], 16);\n b = parseInt(matches[3], 16);\n } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) {\n r = parseInt(matches[1] + matches[1], 16);\n g = parseInt(matches[2] + matches[2], 16);\n b = parseInt(matches[3] + matches[3], 16);\n }\n }\n r = r < 0 ? 0 : r > 255 ? 255 : r;\n g = g < 0 ? 0 : g > 255 ? 255 : g;\n b = b < 0 ? 0 : b > 255 ? 255 : b;\n return self;\n };\n if (value) {\n parse(value);\n }\n self.toRgb = toRgb;\n self.toHsv = toHsv;\n self.toHex = toHex;\n self.parse = parse;\n return self;\n };\n\n var serialize = function (o, quote) {\n var i, v, t, name;\n quote = quote || '\"';\n if (o === null) {\n return 'null';\n }\n t = typeof o;\n if (t === 'string') {\n v = '\\bb\\tt\\nn\\ff\\rr\"\"\\'\\'\\\\\\\\';\n return quote + o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"\\'\\\\])/g, function (a, b) {\n if (quote === '\"' && a === '\\'') {\n return a;\n }\n i = v.indexOf(b);\n if (i + 1) {\n return '\\\\' + v.charAt(i + 1);\n }\n a = b.charCodeAt().toString(16);\n return '\\\\u' + '0000'.substring(a.length) + a;\n }) + quote;\n }\n if (t === 'object') {\n if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {\n for (i = 0, v = '['; i < o.length; i++) {\n v += (i > 0 ? ',' : '') + serialize(o[i], quote);\n }\n return v + ']';\n }\n v = '{';\n for (name in o) {\n if (o.hasOwnProperty(name)) {\n v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : '';\n }\n }\n return v + '}';\n }\n return '' + o;\n };\n var $_6nxmdo85jkmcwlvi = {\n serialize: serialize,\n parse: function (text) {\n try {\n return JSON.parse(text);\n } catch (ex) {\n }\n }\n };\n\n var $_cygb5686jkmcwlvk = {\n callbacks: {},\n count: 0,\n send: function (settings) {\n var self = this, dom = DOMUtils$1.DOM, count = settings.count !== undefined ? settings.count : self.count;\n var id = 'tinymce_jsonp_' + count;\n self.callbacks[count] = function (json) {\n dom.remove(id);\n delete self.callbacks[count];\n settings.callback(json);\n };\n dom.add(dom.doc.body, 'script', {\n id: id,\n src: settings.url,\n type: 'text/javascript'\n });\n self.count++;\n }\n };\n\n var XHR = {\n send: function (settings) {\n var xhr, count = 0;\n var ready = function () {\n if (!settings.async || xhr.readyState === 4 || count++ > 10000) {\n if (settings.success && count < 10000 && xhr.status === 200) {\n settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);\n } else if (settings.error) {\n settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);\n }\n xhr = null;\n } else {\n setTimeout(ready, 10);\n }\n };\n settings.scope = settings.scope || this;\n settings.success_scope = settings.success_scope || settings.scope;\n settings.error_scope = settings.error_scope || settings.scope;\n settings.async = settings.async === false ? false : true;\n settings.data = settings.data || '';\n XHR.fire('beforeInitialize', { settings: settings });\n xhr = new XMLHttpRequest();\n if (xhr) {\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(settings.content_type);\n }\n xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);\n if (settings.crossDomain) {\n xhr.withCredentials = true;\n }\n if (settings.content_type) {\n xhr.setRequestHeader('Content-Type', settings.content_type);\n }\n if (settings.requestheaders) {\n $_4ujg4tljkmcwkbk.each(settings.requestheaders, function (header) {\n xhr.setRequestHeader(header.key, header.value);\n });\n }\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr = XHR.fire('beforeSend', {\n xhr: xhr,\n settings: settings\n }).xhr;\n xhr.send(settings.data);\n if (!settings.async) {\n return ready();\n }\n setTimeout(ready, 10);\n }\n }\n };\n $_4ujg4tljkmcwkbk.extend(XHR, $_ed2ug44qjkmcwl97);\n\n var extend$7 = $_4ujg4tljkmcwkbk.extend;\n var JSONRequest = function (settings) {\n this.settings = extend$7({}, settings);\n this.count = 0;\n };\n JSONRequest.sendRPC = function (o) {\n return new JSONRequest().send(o);\n };\n JSONRequest.prototype = {\n send: function (args) {\n var ecb = args.error, scb = args.success;\n args = extend$7(this.settings, args);\n args.success = function (c, x) {\n c = $_6nxmdo85jkmcwlvi.parse(c);\n if (typeof c === 'undefined') {\n c = { error: 'JSON Parse error.' };\n }\n if (c.error) {\n ecb.call(args.error_scope || args.scope, c.error, x);\n } else {\n scb.call(args.success_scope || args.scope, c.result);\n }\n };\n args.error = function (ty, x) {\n if (ecb) {\n ecb.call(args.error_scope || args.scope, ty, x);\n }\n };\n args.data = $_6nxmdo85jkmcwlvi.serialize({\n id: args.id || 'c' + this.count++,\n method: args.method,\n params: args.params\n });\n args.content_type = 'application/json';\n XHR.send(args);\n }\n };\n\n var create$4 = function () {\n return function () {\n var data = {};\n var keys = [];\n var storage = {\n getItem: function (key) {\n var item = data[key];\n return item ? item : null;\n },\n setItem: function (key, value) {\n keys.push(key);\n data[key] = String(value);\n },\n key: function (index) {\n return keys[index];\n },\n removeItem: function (key) {\n keys = keys.filter(function (k) {\n return k === key;\n });\n delete data[key];\n },\n clear: function () {\n keys = [];\n data = {};\n },\n length: 0\n };\n Object.defineProperty(storage, 'length', {\n get: function () {\n return keys.length;\n },\n configurable: false,\n enumerable: false\n });\n return storage;\n }();\n };\n\n var localStorage$$1;\n try {\n localStorage$$1 = window.localStorage;\n } catch (e) {\n localStorage$$1 = create$4();\n }\n var LocalStorage = localStorage$$1;\n\n var tinymce = EditorManager$1;\n var publicApi = {\n geom: { Rect: $_es7eh281jkmcwlv1 },\n util: {\n Promise: promiseObj,\n Delay: $_3l01gcijkmcwk99,\n Tools: $_4ujg4tljkmcwkbk,\n VK: $_6bj5795wjkmcwlg6,\n URI: URI,\n Class: Class$1,\n EventDispatcher: Dispatcher,\n Observable: $_ed2ug44qjkmcwl97,\n I18n: $_9pp0ut7zjkmcwlut,\n XHR: XHR,\n JSON: $_6nxmdo85jkmcwlvi,\n JSONRequest: JSONRequest,\n JSONP: $_cygb5686jkmcwlvk,\n LocalStorage: LocalStorage,\n Color: Color\n },\n dom: {\n EventUtils: EventUtils,\n Sizzle: Sizzle,\n DomQuery: DomQuery,\n TreeWalker: TreeWalker,\n DOMUtils: DOMUtils$1,\n ScriptLoader: ScriptLoader,\n RangeUtils: RangeUtils$1,\n Serializer: DomSerializer$1,\n ControlSelection: ControlSelection,\n BookmarkManager: BookmarkManager$1,\n Selection: Selection$1,\n Event: EventUtils.Event\n },\n html: {\n Styles: Styles,\n Entities: $_33qwr1sjkmcwkip,\n Node: Node$2,\n Schema: Schema,\n SaxParser: SaxParser$1,\n DomParser: DomParser,\n Writer: Writer,\n Serializer: HtmlSerializer\n },\n ui: { Factory: $_e5pe6n82jkmcwlv8 },\n Env: $_cvvl9iajkmcwk25,\n AddOnManager: AddOnManager,\n Annotator: Annotator,\n Formatter: Formatter,\n UndoManager: UndoManager,\n EditorCommands: EditorCommands,\n WindowManager: WindowManager,\n NotificationManager: NotificationManager,\n EditorObservable: EditorObservable$1,\n Shortcuts: Shortcuts,\n Editor: Editor,\n FocusManager: $_48zpgt7xjkmcwlum,\n EditorManager: EditorManager$1,\n DOM: DOMUtils$1.DOM,\n ScriptLoader: ScriptLoader.ScriptLoader,\n PluginManager: AddOnManager.PluginManager,\n ThemeManager: AddOnManager.ThemeManager,\n trim: $_4ujg4tljkmcwkbk.trim,\n isArray: $_4ujg4tljkmcwkbk.isArray,\n is: $_4ujg4tljkmcwkbk.is,\n toArray: $_4ujg4tljkmcwkbk.toArray,\n makeMap: $_4ujg4tljkmcwkbk.makeMap,\n each: $_4ujg4tljkmcwkbk.each,\n map: $_4ujg4tljkmcwkbk.map,\n grep: $_4ujg4tljkmcwkbk.grep,\n inArray: $_4ujg4tljkmcwkbk.inArray,\n extend: $_4ujg4tljkmcwkbk.extend,\n create: $_4ujg4tljkmcwkbk.create,\n walk: $_4ujg4tljkmcwkbk.walk,\n createNS: $_4ujg4tljkmcwkbk.createNS,\n resolve: $_4ujg4tljkmcwkbk.resolve,\n explode: $_4ujg4tljkmcwkbk.explode,\n _addCacheSuffix: $_4ujg4tljkmcwkbk._addCacheSuffix,\n isOpera: $_cvvl9iajkmcwk25.opera,\n isWebKit: $_cvvl9iajkmcwk25.webkit,\n isIE: $_cvvl9iajkmcwk25.ie,\n isGecko: $_cvvl9iajkmcwk25.gecko,\n isMac: $_cvvl9iajkmcwk25.mac\n };\n tinymce = $_4ujg4tljkmcwkbk.extend(tinymce, publicApi);\n var Tinymce = tinymce;\n\n var exportToModuleLoaders = function (tinymce) {\n if (typeof module === 'object') {\n try {\n module.exports = tinymce;\n } catch (_) {\n }\n }\n };\n var exportToWindowGlobal = function (tinymce) {\n window.tinymce = tinymce;\n window.tinyMCE = tinymce;\n };\n exportToWindowGlobal(Tinymce);\n exportToModuleLoaders(Tinymce);\n\n}());\n})();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&id=1b4db5f2&prod&lang=css\"","(function () {\nvar code = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var getMinWidth = function (editor) {\n return editor.getParam('code_dialog_width', 600);\n };\n var getMinHeight = function (editor) {\n return editor.getParam('code_dialog_height', Math.min(global$1.DOM.getViewPort().h - 200, 500));\n };\n var $_2agnwba2jkmcwo8k = {\n getMinWidth: getMinWidth,\n getMinHeight: getMinHeight\n };\n\n var setContent = function (editor, html) {\n editor.focus();\n editor.undoManager.transact(function () {\n editor.setContent(html);\n });\n editor.selection.setCursorLocation();\n editor.nodeChanged();\n };\n var getContent = function (editor) {\n return editor.getContent({ source_view: true });\n };\n var $_gf01w3a4jkmcwo8n = {\n setContent: setContent,\n getContent: getContent\n };\n\n var open = function (editor) {\n var minWidth = $_2agnwba2jkmcwo8k.getMinWidth(editor);\n var minHeight = $_2agnwba2jkmcwo8k.getMinHeight(editor);\n var win = editor.windowManager.open({\n title: 'Source code',\n body: {\n type: 'textbox',\n name: 'code',\n multiline: true,\n minWidth: minWidth,\n minHeight: minHeight,\n spellcheck: false,\n style: 'direction: ltr; text-align: left'\n },\n onSubmit: function (e) {\n $_gf01w3a4jkmcwo8n.setContent(editor, e.data.code);\n }\n });\n win.find('#code').value($_gf01w3a4jkmcwo8n.getContent(editor));\n };\n var $_4xs1xna1jkmcwo8j = { open: open };\n\n var register = function (editor) {\n editor.addCommand('mceCodeEditor', function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n });\n };\n var $_atmzsea0jkmcwo8i = { register: register };\n\n var register$1 = function (editor) {\n editor.addButton('code', {\n icon: 'code',\n tooltip: 'Source code',\n onclick: function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n }\n });\n editor.addMenuItem('code', {\n icon: 'code',\n text: 'Source code',\n onclick: function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n }\n });\n };\n var $_f9f308a5jkmcwo8o = { register: register$1 };\n\n global.add('code', function (editor) {\n $_atmzsea0jkmcwo8i.register(editor);\n $_f9f308a5jkmcwo8o.register(editor);\n return {};\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","function _get(key) {\n var _name = key + \"=\";\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\n if (c.indexOf(_name) == 0) return c.substring(_name.length, c.length);\n }\n return null;\n};\n\nfunction _add(key, data, seconds) {\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n var expires = \"; expires=\" + date.toGMTString();\n } else var expires = \"\";\n document.cookie = key + \"=\" + data + expires + \"; path=/\";\n};\n\nfunction _update(key, data, seconds) {\n _remove(key);\n _add(key, data, seconds);\n};\n\nfunction _remove(key) {\n _add(key, \"\", -1);\n};\n\nexport default {\n get: _get,\n add: _add,\n update: _update,\n remove: _remove,\n}\n","function _get(key) {\n return window.sessionStorage.getItem(key);\n};\n\nfunction _add(key, data) {\n window.sessionStorage.setItem(key, data);\n};\n\nfunction _update(key, data) {\n window.sessionStorage.setItem(key, data);\n};\n\nfunction _remove(key) {\n window.sessionStorage.removeItem(key);\n};\n\nfunction _reset() {\n window.sessionStorage.clear();\n};\n\nexport default {\n get: _get,\n add: _add,\n update: _update,\n remove: _remove,\n reset: _reset,\n}\n","import Vue from 'vue'\nimport Pikaday from 'pikaday'\nimport 'pikaday/scss/pikaday.scss'\n\nVue.directive('datepicker', {\n twoWay: true,\n bind: (el, binding, vnode) => {\n var picker = new Pikaday({\n field: el,\n format: 'DD/MM/YYYY',\n onSelect: () => {\n setVModelValue(picker.toString(), vnode)\n },\n i18n: {\n previousMonth: 'Mês Anterior',\n nextMonth: 'Mês Seguinte',\n months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n weekdays: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],\n weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']\n }\n });\n \n function findVModelName(vnode) {\n return vnode.data.directives.find(function (o) {\n return o.name === 'model';\n }).expression;\n }\n\n function setVModelValue(value, vnode) {\n var prop = findVModelName(vnode)\n eval('vnode.context.' + prop + ' = ' + '\"' + value + '\"')\n }\n },\n\n})","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&id=148bd8b2&prod&lang=css\"","(function () {\nvar link = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var assumeExternalTargets = function (editorSettings) {\n return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;\n };\n var hasContextToolbar = function (editorSettings) {\n return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;\n };\n var getLinkList = function (editorSettings) {\n return editorSettings.link_list;\n };\n var hasDefaultLinkTarget = function (editorSettings) {\n return typeof editorSettings.default_link_target === 'string';\n };\n var getDefaultLinkTarget = function (editorSettings) {\n return editorSettings.default_link_target;\n };\n var getTargetList = function (editorSettings) {\n return editorSettings.target_list;\n };\n var setTargetList = function (editor, list) {\n editor.settings.target_list = list;\n };\n var shouldShowTargetList = function (editorSettings) {\n return getTargetList(editorSettings) !== false;\n };\n var getRelList = function (editorSettings) {\n return editorSettings.rel_list;\n };\n var hasRelList = function (editorSettings) {\n return getRelList(editorSettings) !== undefined;\n };\n var getLinkClassList = function (editorSettings) {\n return editorSettings.link_class_list;\n };\n var hasLinkClassList = function (editorSettings) {\n return getLinkClassList(editorSettings) !== undefined;\n };\n var shouldShowLinkTitle = function (editorSettings) {\n return editorSettings.link_title !== false;\n };\n var allowUnsafeLinkTarget = function (editorSettings) {\n return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;\n };\n var $_7h5h1kfvjkmcwp8j = {\n assumeExternalTargets: assumeExternalTargets,\n hasContextToolbar: hasContextToolbar,\n getLinkList: getLinkList,\n hasDefaultLinkTarget: hasDefaultLinkTarget,\n getDefaultLinkTarget: getDefaultLinkTarget,\n getTargetList: getTargetList,\n setTargetList: setTargetList,\n shouldShowTargetList: shouldShowTargetList,\n getRelList: getRelList,\n hasRelList: hasRelList,\n getLinkClassList: getLinkClassList,\n hasLinkClassList: hasLinkClassList,\n shouldShowLinkTitle: shouldShowLinkTitle,\n allowUnsafeLinkTarget: allowUnsafeLinkTarget\n };\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var appendClickRemove = function (link, evt) {\n document.body.appendChild(link);\n link.dispatchEvent(evt);\n document.body.removeChild(link);\n };\n var open$$1 = function (url) {\n if (!global$3.ie || global$3.ie > 10) {\n var link = document.createElement('a');\n link.target = '_blank';\n link.href = url;\n link.rel = 'noreferrer noopener';\n var evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n appendClickRemove(link, evt);\n } else {\n var win = window.open('', '_blank');\n if (win) {\n win.opener = null;\n var doc = win.document;\n doc.open();\n doc.write('');\n doc.close();\n }\n }\n };\n var $_50rjczfwjkmcwp8l = { open: open$$1 };\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var toggleTargetRules = function (rel, isUnsafe) {\n var rules = ['noopener'];\n var newRel = rel ? rel.split(/\\s+/) : [];\n var toString = function (rel) {\n return global$4.trim(rel.sort().join(' '));\n };\n var addTargetRules = function (rel) {\n rel = removeTargetRules(rel);\n return rel.length ? rel.concat(rules) : rules;\n };\n var removeTargetRules = function (rel) {\n return rel.filter(function (val) {\n return global$4.inArray(rules, val) === -1;\n });\n };\n newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);\n return newRel.length ? toString(newRel) : null;\n };\n var trimCaretContainers = function (text) {\n return text.replace(/\\uFEFF/g, '');\n };\n var getAnchorElement = function (editor, selectedElm) {\n selectedElm = selectedElm || editor.selection.getNode();\n if (isImageFigure(selectedElm)) {\n return editor.dom.select('a[href]', selectedElm)[0];\n } else {\n return editor.dom.getParent(selectedElm, 'a[href]');\n }\n };\n var getAnchorText = function (selection, anchorElm) {\n var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });\n return trimCaretContainers(text);\n };\n var isLink = function (elm) {\n return elm && elm.nodeName === 'A' && elm.href;\n };\n var hasLinks = function (elements) {\n return global$4.grep(elements, isLink).length > 0;\n };\n var isOnlyTextSelected = function (html) {\n if (/]+>[^<]+<\\/a>$/.test(html) || html.indexOf('href=') === -1)) {\n return false;\n }\n return true;\n };\n var isImageFigure = function (node) {\n return node && node.nodeName === 'FIGURE' && /\\bimage\\b/i.test(node.className);\n };\n var link = function (editor, attachState) {\n return function (data) {\n editor.undoManager.transact(function () {\n var selectedElm = editor.selection.getNode();\n var anchorElm = getAnchorElement(editor, selectedElm);\n var linkAttrs = {\n href: data.href,\n target: data.target ? data.target : null,\n rel: data.rel ? data.rel : null,\n class: data.class ? data.class : null,\n title: data.title ? data.title : null\n };\n if (!$_7h5h1kfvjkmcwp8j.hasRelList(editor.settings) && $_7h5h1kfvjkmcwp8j.allowUnsafeLinkTarget(editor.settings) === false) {\n linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');\n }\n if (data.href === attachState.href) {\n attachState.attach();\n attachState = {};\n }\n if (anchorElm) {\n editor.focus();\n if (data.hasOwnProperty('text')) {\n if ('innerText' in anchorElm) {\n anchorElm.innerText = data.text;\n } else {\n anchorElm.textContent = data.text;\n }\n }\n editor.dom.setAttribs(anchorElm, linkAttrs);\n editor.selection.select(anchorElm);\n editor.undoManager.add();\n } else {\n if (isImageFigure(selectedElm)) {\n linkImageFigure(editor, selectedElm, linkAttrs);\n } else if (data.hasOwnProperty('text')) {\n editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));\n } else {\n editor.execCommand('mceInsertLink', false, linkAttrs);\n }\n }\n });\n };\n };\n var unlink = function (editor) {\n return function () {\n editor.undoManager.transact(function () {\n var node = editor.selection.getNode();\n if (isImageFigure(node)) {\n unlinkImageFigure(editor, node);\n } else {\n editor.execCommand('unlink');\n }\n });\n };\n };\n var unlinkImageFigure = function (editor, fig) {\n var a, img;\n img = editor.dom.select('img', fig)[0];\n if (img) {\n a = editor.dom.getParents(img, 'a[href]', fig)[0];\n if (a) {\n a.parentNode.insertBefore(img, a);\n editor.dom.remove(a);\n }\n }\n };\n var linkImageFigure = function (editor, fig, attrs) {\n var a, img;\n img = editor.dom.select('img', fig)[0];\n if (img) {\n a = editor.dom.create('a', attrs);\n img.parentNode.insertBefore(a, img);\n a.appendChild(img);\n }\n };\n var $_f96xu2g0jkmcwp91 = {\n link: link,\n unlink: unlink,\n isLink: isLink,\n hasLinks: hasLinks,\n isOnlyTextSelected: isOnlyTextSelected,\n getAnchorElement: getAnchorElement,\n getAnchorText: getAnchorText,\n toggleTargetRules: toggleTargetRules\n };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');\n\n var attachState = {};\n var createLinkList = function (editor, callback) {\n var linkList = $_7h5h1kfvjkmcwp8j.getLinkList(editor.settings);\n if (typeof linkList === 'string') {\n global$6.send({\n url: linkList,\n success: function (text) {\n callback(editor, JSON.parse(text));\n }\n });\n } else if (typeof linkList === 'function') {\n linkList(function (list) {\n callback(editor, list);\n });\n } else {\n callback(editor, linkList);\n }\n };\n var buildListItems = function (inputList, itemCallback, startItems) {\n var appendItems = function (values, output) {\n output = output || [];\n global$4.each(values, function (item) {\n var menuItem = { text: item.text || item.title };\n if (item.menu) {\n menuItem.menu = appendItems(item.menu);\n } else {\n menuItem.value = item.value;\n if (itemCallback) {\n itemCallback(menuItem);\n }\n }\n output.push(menuItem);\n });\n return output;\n };\n return appendItems(inputList, startItems || []);\n };\n var delayedConfirm = function (editor, message, callback) {\n var rng = editor.selection.getRng();\n global$5.setEditorTimeout(editor, function () {\n editor.windowManager.confirm(message, function (state) {\n editor.selection.setRng(rng);\n callback(state);\n });\n });\n };\n var showDialog = function (editor, linkList) {\n var data = {};\n var selection = editor.selection;\n var dom = editor.dom;\n var anchorElm, initialText;\n var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;\n var linkListChangeHandler = function (e) {\n var textCtrl = win.find('#text');\n if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {\n textCtrl.value(e.control.text());\n }\n win.find('#href').value(e.control.value());\n };\n var buildAnchorListControl = function (url) {\n var anchorList = [];\n global$4.each(editor.dom.select('a:not([href])'), function (anchor) {\n var id = anchor.name || anchor.id;\n if (id) {\n anchorList.push({\n text: id,\n value: '#' + id,\n selected: url.indexOf('#' + id) !== -1\n });\n }\n });\n if (anchorList.length) {\n anchorList.unshift({\n text: 'None',\n value: ''\n });\n return {\n name: 'anchor',\n type: 'listbox',\n label: 'Anchors',\n values: anchorList,\n onselect: linkListChangeHandler\n };\n }\n };\n var updateText = function () {\n if (!initialText && onlyText && !data.text) {\n this.parent().parent().find('#text')[0].value(this.value());\n }\n };\n var urlChange = function (e) {\n var meta = e.meta || {};\n if (linkListCtrl) {\n linkListCtrl.value(editor.convertURL(this.value(), 'href'));\n }\n global$4.each(e.meta, function (value, key) {\n var inp = win.find('#' + key);\n if (key === 'text') {\n if (initialText.length === 0) {\n inp.value(value);\n data.text = value;\n }\n } else {\n inp.value(value);\n }\n });\n if (meta.attach) {\n attachState = {\n href: this.value(),\n attach: meta.attach\n };\n }\n if (!meta.text) {\n updateText.call(this);\n }\n };\n var onBeforeCall = function (e) {\n e.meta = win.toJSON();\n };\n onlyText = $_f96xu2g0jkmcwp91.isOnlyTextSelected(selection.getContent());\n anchorElm = $_f96xu2g0jkmcwp91.getAnchorElement(editor);\n data.text = initialText = $_f96xu2g0jkmcwp91.getAnchorText(editor.selection, anchorElm);\n data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';\n if (anchorElm) {\n data.target = dom.getAttrib(anchorElm, 'target');\n } else if ($_7h5h1kfvjkmcwp8j.hasDefaultLinkTarget(editor.settings)) {\n data.target = $_7h5h1kfvjkmcwp8j.getDefaultLinkTarget(editor.settings);\n }\n if (value = dom.getAttrib(anchorElm, 'rel')) {\n data.rel = value;\n }\n if (value = dom.getAttrib(anchorElm, 'class')) {\n data.class = value;\n }\n if (value = dom.getAttrib(anchorElm, 'title')) {\n data.title = value;\n }\n if (onlyText) {\n textListCtrl = {\n name: 'text',\n type: 'textbox',\n size: 40,\n label: 'Text to display',\n onchange: function () {\n data.text = this.value();\n }\n };\n }\n if (linkList) {\n linkListCtrl = {\n type: 'listbox',\n label: 'Link list',\n values: buildListItems(linkList, function (item) {\n item.value = editor.convertURL(item.value || item.url, 'href');\n }, [{\n text: 'None',\n value: ''\n }]),\n onselect: linkListChangeHandler,\n value: editor.convertURL(data.href, 'href'),\n onPostRender: function () {\n linkListCtrl = this;\n }\n };\n }\n if ($_7h5h1kfvjkmcwp8j.shouldShowTargetList(editor.settings)) {\n if ($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings) === undefined) {\n $_7h5h1kfvjkmcwp8j.setTargetList(editor, [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'New window',\n value: '_blank'\n }\n ]);\n }\n targetListCtrl = {\n name: 'target',\n type: 'listbox',\n label: 'Target',\n values: buildListItems($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings))\n };\n }\n if ($_7h5h1kfvjkmcwp8j.hasRelList(editor.settings)) {\n relListCtrl = {\n name: 'rel',\n type: 'listbox',\n label: 'Rel',\n values: buildListItems($_7h5h1kfvjkmcwp8j.getRelList(editor.settings), function (item) {\n if ($_7h5h1kfvjkmcwp8j.allowUnsafeLinkTarget(editor.settings) === false) {\n item.value = $_f96xu2g0jkmcwp91.toggleTargetRules(item.value, data.target === '_blank');\n }\n })\n };\n }\n if ($_7h5h1kfvjkmcwp8j.hasLinkClassList(editor.settings)) {\n classListCtrl = {\n name: 'class',\n type: 'listbox',\n label: 'Class',\n values: buildListItems($_7h5h1kfvjkmcwp8j.getLinkClassList(editor.settings), function (item) {\n if (item.value) {\n item.textStyle = function () {\n return editor.formatter.getCssText({\n inline: 'a',\n classes: [item.value]\n });\n };\n }\n })\n };\n }\n if ($_7h5h1kfvjkmcwp8j.shouldShowLinkTitle(editor.settings)) {\n linkTitleCtrl = {\n name: 'title',\n type: 'textbox',\n label: 'Title',\n value: data.title\n };\n }\n win = editor.windowManager.open({\n title: 'Insert link',\n data: data,\n body: [\n {\n name: 'href',\n type: 'filepicker',\n filetype: 'file',\n size: 40,\n autofocus: true,\n label: 'Url',\n onchange: urlChange,\n onkeyup: updateText,\n onpaste: updateText,\n onbeforecall: onBeforeCall\n },\n textListCtrl,\n linkTitleCtrl,\n buildAnchorListControl(data.href),\n linkListCtrl,\n relListCtrl,\n targetListCtrl,\n classListCtrl\n ],\n onSubmit: function (e) {\n var assumeExternalTargets = $_7h5h1kfvjkmcwp8j.assumeExternalTargets(editor.settings);\n var insertLink = $_f96xu2g0jkmcwp91.link(editor, attachState);\n var removeLink = $_f96xu2g0jkmcwp91.unlink(editor);\n var resultData = global$4.extend({}, data, e.data);\n var href = resultData.href;\n if (!href) {\n removeLink();\n return;\n }\n if (!onlyText || resultData.text === initialText) {\n delete resultData.text;\n }\n if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {\n delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {\n if (state) {\n resultData.href = 'mailto:' + href;\n }\n insertLink(resultData);\n });\n return;\n }\n if (assumeExternalTargets === true && !/^\\w+:/i.test(href) || assumeExternalTargets === false && /^\\s*www[\\.|\\d\\.]/i.test(href)) {\n delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {\n if (state) {\n resultData.href = 'http://' + href;\n }\n insertLink(resultData);\n });\n return;\n }\n insertLink(resultData);\n }\n });\n };\n var open$1 = function (editor) {\n createLinkList(editor, showDialog);\n };\n var $_1hdbnpg2jkmcwp96 = { open: open$1 };\n\n var getLink = function (editor, elm) {\n return editor.dom.getParent(elm, 'a[href]');\n };\n var getSelectedLink = function (editor) {\n return getLink(editor, editor.selection.getStart());\n };\n var getHref = function (elm) {\n var href = elm.getAttribute('data-mce-href');\n return href ? href : elm.getAttribute('href');\n };\n var isContextMenuVisible = function (editor) {\n var contextmenu = editor.plugins.contextmenu;\n return contextmenu ? contextmenu.isContextMenuVisible() : false;\n };\n var hasOnlyAltModifier = function (e) {\n return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;\n };\n var gotoLink = function (editor, a) {\n if (a) {\n var href = getHref(a);\n if (/^#/.test(href)) {\n var targetEl = editor.$(href);\n if (targetEl.length) {\n editor.selection.scrollIntoView(targetEl[0], true);\n }\n } else {\n $_50rjczfwjkmcwp8l.open(a.href);\n }\n }\n };\n var openDialog = function (editor) {\n return function () {\n $_1hdbnpg2jkmcwp96.open(editor);\n };\n };\n var gotoSelectedLink = function (editor) {\n return function () {\n gotoLink(editor, getSelectedLink(editor));\n };\n };\n var leftClickedOnAHref = function (editor) {\n return function (elm) {\n var sel, rng, node;\n if ($_7h5h1kfvjkmcwp8j.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && $_f96xu2g0jkmcwp91.isLink(elm)) {\n sel = editor.selection;\n rng = sel.getRng();\n node = rng.startContainer;\n if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {\n return true;\n }\n }\n return false;\n };\n };\n var setupGotoLinks = function (editor) {\n editor.on('click', function (e) {\n var link = getLink(editor, e.target);\n if (link && global$1.metaKeyPressed(e)) {\n e.preventDefault();\n gotoLink(editor, link);\n }\n });\n editor.on('keydown', function (e) {\n var link = getSelectedLink(editor);\n if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {\n e.preventDefault();\n gotoLink(editor, link);\n }\n });\n };\n var toggleActiveState = function (editor) {\n return function () {\n var self = this;\n editor.on('nodechange', function (e) {\n self.active(!editor.readonly && !!$_f96xu2g0jkmcwp91.getAnchorElement(editor, e.element));\n });\n };\n };\n var toggleViewLinkState = function (editor) {\n return function () {\n var self = this;\n var toggleVisibility = function (e) {\n if ($_f96xu2g0jkmcwp91.hasLinks(e.parents)) {\n self.show();\n } else {\n self.hide();\n }\n };\n if (!$_f96xu2g0jkmcwp91.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {\n self.hide();\n }\n editor.on('nodechange', toggleVisibility);\n self.on('remove', function () {\n editor.off('nodechange', toggleVisibility);\n });\n };\n };\n var $_dlew49ftjkmcwp8f = {\n openDialog: openDialog,\n gotoSelectedLink: gotoSelectedLink,\n leftClickedOnAHref: leftClickedOnAHref,\n setupGotoLinks: setupGotoLinks,\n toggleActiveState: toggleActiveState,\n toggleViewLinkState: toggleViewLinkState\n };\n\n var register = function (editor) {\n editor.addCommand('mceLink', $_dlew49ftjkmcwp8f.openDialog(editor));\n };\n var $_3nvo42fsjkmcwp8b = { register: register };\n\n var setup = function (editor) {\n editor.addShortcut('Meta+K', '', $_dlew49ftjkmcwp8f.openDialog(editor));\n };\n var $_aoohpyg5jkmcwp9f = { setup: setup };\n\n var setupButtons = function (editor) {\n editor.addButton('link', {\n active: false,\n icon: 'link',\n tooltip: 'Insert/edit link',\n onclick: $_dlew49ftjkmcwp8f.openDialog(editor),\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\n });\n editor.addButton('unlink', {\n active: false,\n icon: 'unlink',\n tooltip: 'Remove link',\n onclick: $_f96xu2g0jkmcwp91.unlink(editor),\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\n });\n if (editor.addContextToolbar) {\n editor.addButton('openlink', {\n icon: 'newtab',\n tooltip: 'Open link',\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor)\n });\n }\n };\n var setupMenuItems = function (editor) {\n editor.addMenuItem('openlink', {\n text: 'Open link',\n icon: 'newtab',\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor),\n onPostRender: $_dlew49ftjkmcwp8f.toggleViewLinkState(editor),\n prependToContext: true\n });\n editor.addMenuItem('link', {\n icon: 'link',\n text: 'Link',\n shortcut: 'Meta+K',\n onclick: $_dlew49ftjkmcwp8f.openDialog(editor),\n stateSelector: 'a[href]',\n context: 'insert',\n prependToContext: true\n });\n editor.addMenuItem('unlink', {\n icon: 'unlink',\n text: 'Remove link',\n onclick: $_f96xu2g0jkmcwp91.unlink(editor),\n stateSelector: 'a[href]'\n });\n };\n var setupContextToolbars = function (editor) {\n if (editor.addContextToolbar) {\n editor.addContextToolbar($_dlew49ftjkmcwp8f.leftClickedOnAHref(editor), 'openlink | link unlink');\n }\n };\n var $_3wxsofg6jkmcwp9g = {\n setupButtons: setupButtons,\n setupMenuItems: setupMenuItems,\n setupContextToolbars: setupContextToolbars\n };\n\n global.add('link', function (editor) {\n $_3wxsofg6jkmcwp9g.setupButtons(editor);\n $_3wxsofg6jkmcwp9g.setupMenuItems(editor);\n $_3wxsofg6jkmcwp9g.setupContextToolbars(editor);\n $_dlew49ftjkmcwp8f.setupGotoLinks(editor);\n $_3nvo42fsjkmcwp8b.register(editor);\n $_aoohpyg5jkmcwp9f.setup(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","module.exports = __webpack_public_path__ + \"img/logo_cna_circulo.30c72b34.png\";","(function () {\nvar paste = (function () {\n 'use strict';\n\n var Cell = function (initial) {\n var value = initial;\n var get = function () {\n return value;\n };\n var set = function (v) {\n value = v;\n };\n var clone = function () {\n return Cell(get());\n };\n return {\n get: get,\n set: set,\n clone: clone\n };\n };\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var hasProPlugin = function (editor) {\n if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global.get('powerpaste')) {\n if (typeof window.console !== 'undefined' && window.console.log) {\n window.console.log('PowerPaste is incompatible with Paste plugin! Remove \\'paste\\' from the \\'plugins\\' option.');\n }\n return true;\n } else {\n return false;\n }\n };\n var $_ee0gktiejkmcwpkb = { hasProPlugin: hasProPlugin };\n\n var get = function (clipboard, quirks) {\n return {\n clipboard: clipboard,\n quirks: quirks\n };\n };\n var $_6khw6eigjkmcwpkp = { get: get };\n\n var firePastePreProcess = function (editor, html, internal, isWordHtml) {\n return editor.fire('PastePreProcess', {\n content: html,\n internal: internal,\n wordContent: isWordHtml\n });\n };\n var firePastePostProcess = function (editor, node, internal, isWordHtml) {\n return editor.fire('PastePostProcess', {\n node: node,\n internal: internal,\n wordContent: isWordHtml\n });\n };\n var firePastePlainTextToggle = function (editor, state) {\n return editor.fire('PastePlainTextToggle', { state: state });\n };\n var firePaste = function (editor, ieFake) {\n return editor.fire('paste', { ieFake: ieFake });\n };\n var $_d8ovv8ijjkmcwpku = {\n firePastePreProcess: firePastePreProcess,\n firePastePostProcess: firePastePostProcess,\n firePastePlainTextToggle: firePastePlainTextToggle,\n firePaste: firePaste\n };\n\n var shouldPlainTextInform = function (editor) {\n return editor.getParam('paste_plaintext_inform', true);\n };\n var shouldBlockDrop = function (editor) {\n return editor.getParam('paste_block_drop', false);\n };\n var shouldPasteDataImages = function (editor) {\n return editor.getParam('paste_data_images', false);\n };\n var shouldFilterDrop = function (editor) {\n return editor.getParam('paste_filter_drop', true);\n };\n var getPreProcess = function (editor) {\n return editor.getParam('paste_preprocess');\n };\n var getPostProcess = function (editor) {\n return editor.getParam('paste_postprocess');\n };\n var getWebkitStyles = function (editor) {\n return editor.getParam('paste_webkit_styles');\n };\n var shouldRemoveWebKitStyles = function (editor) {\n return editor.getParam('paste_remove_styles_if_webkit', true);\n };\n var shouldMergeFormats = function (editor) {\n return editor.getParam('paste_merge_formats', true);\n };\n var isSmartPasteEnabled = function (editor) {\n return editor.getParam('smart_paste', true);\n };\n var isPasteAsTextEnabled = function (editor) {\n return editor.getParam('paste_as_text', false);\n };\n var getRetainStyleProps = function (editor) {\n return editor.getParam('paste_retain_style_properties');\n };\n var getWordValidElements = function (editor) {\n var defaultValidElements = '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' + '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' + 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody';\n return editor.getParam('paste_word_valid_elements', defaultValidElements);\n };\n var shouldConvertWordFakeLists = function (editor) {\n return editor.getParam('paste_convert_word_fake_lists', true);\n };\n var shouldUseDefaultFilters = function (editor) {\n return editor.getParam('paste_enable_default_filters', true);\n };\n var $_5peev0ikjkmcwpkv = {\n shouldPlainTextInform: shouldPlainTextInform,\n shouldBlockDrop: shouldBlockDrop,\n shouldPasteDataImages: shouldPasteDataImages,\n shouldFilterDrop: shouldFilterDrop,\n getPreProcess: getPreProcess,\n getPostProcess: getPostProcess,\n getWebkitStyles: getWebkitStyles,\n shouldRemoveWebKitStyles: shouldRemoveWebKitStyles,\n shouldMergeFormats: shouldMergeFormats,\n isSmartPasteEnabled: isSmartPasteEnabled,\n isPasteAsTextEnabled: isPasteAsTextEnabled,\n getRetainStyleProps: getRetainStyleProps,\n getWordValidElements: getWordValidElements,\n shouldConvertWordFakeLists: shouldConvertWordFakeLists,\n shouldUseDefaultFilters: shouldUseDefaultFilters\n };\n\n var shouldInformUserAboutPlainText = function (editor, userIsInformedState) {\n return userIsInformedState.get() === false && $_5peev0ikjkmcwpkv.shouldPlainTextInform(editor);\n };\n var displayNotification = function (editor, message) {\n editor.notificationManager.open({\n text: editor.translate(message),\n type: 'info'\n });\n };\n var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) {\n if (clipboard.pasteFormat.get() === 'text') {\n clipboard.pasteFormat.set('html');\n $_d8ovv8ijjkmcwpku.firePastePlainTextToggle(editor, false);\n } else {\n clipboard.pasteFormat.set('text');\n $_d8ovv8ijjkmcwpku.firePastePlainTextToggle(editor, true);\n if (shouldInformUserAboutPlainText(editor, userIsInformedState)) {\n displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.');\n userIsInformedState.set(true);\n }\n }\n editor.focus();\n };\n var $_7rw4pkiijkmcwpks = { togglePlainTextPaste: togglePlainTextPaste };\n\n var register = function (editor, clipboard, userIsInformedState) {\n editor.addCommand('mceTogglePlainTextPaste', function () {\n $_7rw4pkiijkmcwpks.togglePlainTextPaste(editor, clipboard, userIsInformedState);\n });\n editor.addCommand('mceInsertClipboardContent', function (ui, value) {\n if (value.content) {\n clipboard.pasteHtml(value.content, value.internal);\n }\n if (value.text) {\n clipboard.pasteText(value.text);\n }\n });\n };\n var $_gh26txihjkmcwpkr = { register: register };\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var internalMimeType = 'x-tinymce/html';\n var internalMark = '';\n var mark = function (html) {\n return internalMark + html;\n };\n var unmark = function (html) {\n return html.replace(internalMark, '');\n };\n var isMarked = function (html) {\n return html.indexOf(internalMark) !== -1;\n };\n var $_93gcj3irjkmcwpld = {\n mark: mark,\n unmark: unmark,\n isMarked: isMarked,\n internalHtmlMime: function () {\n return internalMimeType;\n }\n };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.html.Entities');\n\n var isPlainText = function (text) {\n return !/<(?:\\/?(?!(?:div|p|br|span)>)\\w+|(?:(?!(?:span style=\"white-space:\\s?pre;?\">)|br\\s?\\/>))\\w+\\s[^>]+)>/i.test(text);\n };\n var toBRs = function (text) {\n return text.replace(/\\r?\\n/g, '
    ');\n };\n var openContainer = function (rootTag, rootAttrs) {\n var key;\n var attrs = [];\n var tag = '<' + rootTag;\n if (typeof rootAttrs === 'object') {\n for (key in rootAttrs) {\n if (rootAttrs.hasOwnProperty(key)) {\n attrs.push(key + '=\"' + global$5.encodeAllRaw(rootAttrs[key]) + '\"');\n }\n }\n if (attrs.length) {\n tag += ' ' + attrs.join(' ');\n }\n }\n return tag + '>';\n };\n var toBlockElements = function (text, rootTag, rootAttrs) {\n var blocks = text.split(/\\n\\n/);\n var tagOpen = openContainer(rootTag, rootAttrs);\n var tagClose = '';\n var paragraphs = global$3.map(blocks, function (p) {\n return p.split(/\\n/).join('
    ');\n });\n var stitch = function (p) {\n return tagOpen + p + tagClose;\n };\n return paragraphs.length === 1 ? paragraphs[0] : global$3.map(paragraphs, stitch).join('');\n };\n var convert = function (text, rootTag, rootAttrs) {\n return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text);\n };\n var $_3nag2qisjkmcwple = {\n isPlainText: isPlainText,\n convert: convert,\n toBRs: toBRs,\n toBlockElements: toBlockElements\n };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.html.DomParser');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Schema');\n\n var global$9 = tinymce.util.Tools.resolve('tinymce.html.Serializer');\n\n function filter(content, items) {\n global$3.each(items, function (v) {\n if (v.constructor === RegExp) {\n content = content.replace(v, '');\n } else {\n content = content.replace(v[0], v[1]);\n }\n });\n return content;\n }\n function innerText(html) {\n var schema = global$8();\n var domParser = global$6({}, schema);\n var text = '';\n var shortEndedElements = schema.getShortEndedElements();\n var ignoreElements = global$3.makeMap('script noscript style textarea video audio iframe object', ' ');\n var blockElements = schema.getBlockElements();\n function walk(node) {\n var name$$1 = node.name, currentNode = node;\n if (name$$1 === 'br') {\n text += '\\n';\n return;\n }\n if (shortEndedElements[name$$1]) {\n text += ' ';\n }\n if (ignoreElements[name$$1]) {\n text += ' ';\n return;\n }\n if (node.type === 3) {\n text += node.value;\n }\n if (!node.shortEnded) {\n if (node = node.firstChild) {\n do {\n walk(node);\n } while (node = node.next);\n }\n }\n if (blockElements[name$$1] && currentNode.next) {\n text += '\\n';\n if (name$$1 === 'p') {\n text += '\\n';\n }\n }\n }\n html = filter(html, [//g]);\n walk(domParser.parse(html));\n return text;\n }\n function trimHtml(html) {\n function trimSpaces(all, s1, s2) {\n if (!s1 && !s2) {\n return ' ';\n }\n return '\\xA0';\n }\n html = filter(html, [\n /^[\\s\\S]*]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/ig,\n /|/g,\n [\n /( ?)\\u00a0<\\/span>( ?)/g,\n trimSpaces\n ],\n /
    /g,\n /
    $/i\n ]);\n return html;\n }\n function createIdGenerator(prefix) {\n var count = 0;\n return function () {\n return prefix + count++;\n };\n }\n var isMsEdge = function () {\n return navigator.userAgent.indexOf(' Edge/') !== -1;\n };\n var $_2u5gcyj0jkmcwplv = {\n filter: filter,\n innerText: innerText,\n trimHtml: trimHtml,\n createIdGenerator: createIdGenerator,\n isMsEdge: isMsEdge\n };\n\n function isWordContent(content) {\n return / 1) {\n currentListNode.attr('start', '' + start);\n }\n paragraphNode.wrap(currentListNode);\n } else {\n currentListNode.append(paragraphNode);\n }\n paragraphNode.name = 'li';\n if (level > lastLevel && prevListNode) {\n prevListNode.lastChild.append(currentListNode);\n }\n lastLevel = level;\n removeIgnoredNodes(paragraphNode);\n trimListStart(paragraphNode, /^\\u00a0+/);\n trimListStart(paragraphNode, /^\\s*([\\u2022\\u00b7\\u00a7\\u25CF]|\\w+\\.)/);\n trimListStart(paragraphNode, /^\\u00a0+/);\n }\n var elements = [];\n var child = node.firstChild;\n while (typeof child !== 'undefined' && child !== null) {\n elements.push(child);\n child = child.walk();\n if (child !== null) {\n while (typeof child !== 'undefined' && child.parent !== node) {\n child = child.walk();\n }\n }\n }\n for (var i = 0; i < elements.length; i++) {\n node = elements[i];\n if (node.name === 'p' && node.firstChild) {\n var nodeText = getText(node);\n if (isBulletList(nodeText)) {\n convertParagraphToLi(node, 'ul');\n continue;\n }\n if (isNumericList(nodeText)) {\n var matches = /([0-9]+)\\./.exec(nodeText);\n var start = 1;\n if (matches) {\n start = parseInt(matches[1], 10);\n }\n convertParagraphToLi(node, 'ol', start);\n continue;\n }\n if (node._listLevel) {\n convertParagraphToLi(node, 'ul', 1);\n continue;\n }\n currentListNode = null;\n } else {\n prevListNode = currentListNode;\n currentListNode = null;\n }\n }\n }\n function filterStyles(editor, validStyles, node, styleValue) {\n var outputStyles = {}, matches;\n var styles = editor.dom.parseStyle(styleValue);\n global$3.each(styles, function (value, name) {\n switch (name) {\n case 'mso-list':\n matches = /\\w+ \\w+([0-9]+)/i.exec(styleValue);\n if (matches) {\n node._listLevel = parseInt(matches[1], 10);\n }\n if (/Ignore/i.test(value) && node.firstChild) {\n node._listIgnore = true;\n node.firstChild._listIgnore = true;\n }\n break;\n case 'horiz-align':\n name = 'text-align';\n break;\n case 'vert-align':\n name = 'vertical-align';\n break;\n case 'font-color':\n case 'mso-foreground':\n name = 'color';\n break;\n case 'mso-background':\n case 'mso-highlight':\n name = 'background';\n break;\n case 'font-weight':\n case 'font-style':\n if (value !== 'normal') {\n outputStyles[name] = value;\n }\n return;\n case 'mso-element':\n if (/^(comment|comment-list)$/i.test(value)) {\n node.remove();\n return;\n }\n break;\n }\n if (name.indexOf('mso-comment') === 0) {\n node.remove();\n return;\n }\n if (name.indexOf('mso-') === 0) {\n return;\n }\n if ($_5peev0ikjkmcwpkv.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) {\n outputStyles[name] = value;\n }\n });\n if (/(bold)/i.test(outputStyles['font-weight'])) {\n delete outputStyles['font-weight'];\n node.wrap(new global$7('b', 1));\n }\n if (/(italic)/i.test(outputStyles['font-style'])) {\n delete outputStyles['font-style'];\n node.wrap(new global$7('i', 1));\n }\n outputStyles = editor.dom.serializeStyle(outputStyles, node.name);\n if (outputStyles) {\n return outputStyles;\n }\n return null;\n }\n var filterWordContent = function (editor, content) {\n var retainStyleProperties, validStyles;\n retainStyleProperties = $_5peev0ikjkmcwpkv.getRetainStyleProps(editor);\n if (retainStyleProperties) {\n validStyles = global$3.makeMap(retainStyleProperties.split(/[, ]/));\n }\n content = $_2u5gcyj0jkmcwplv.filter(content, [\n /
    /gi,\n /]+id=\"?docs-internal-[^>]*>/gi,\n //gi,\n /<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi,\n [\n /<(\\/?)s>/gi,\n '<$1strike>'\n ],\n [\n / /gi,\n '\\xA0'\n ],\n [\n /([\\s\\u00a0]*)<\\/span>/gi,\n function (str, spaces) {\n return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\\xA0') : '';\n }\n ]\n ]);\n var validElements = $_5peev0ikjkmcwpkv.getWordValidElements(editor);\n var schema = global$8({\n valid_elements: validElements,\n valid_children: '-li[p]'\n });\n global$3.each(schema.elements, function (rule) {\n if (!rule.attributes.class) {\n rule.attributes.class = {};\n rule.attributesOrder.push('class');\n }\n if (!rule.attributes.style) {\n rule.attributes.style = {};\n rule.attributesOrder.push('style');\n }\n });\n var domParser = global$6({}, schema);\n domParser.addAttributeFilter('style', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.attr('style', filterStyles(editor, validStyles, node, node.attr('style')));\n if (node.name === 'span' && node.parent && !node.attributes.length) {\n node.unwrap();\n }\n }\n });\n domParser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, className;\n while (i--) {\n node = nodes[i];\n className = node.attr('class');\n if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {\n node.remove();\n }\n node.attr('class', null);\n }\n });\n domParser.addNodeFilter('del', function (nodes) {\n var i = nodes.length;\n while (i--) {\n nodes[i].remove();\n }\n });\n domParser.addNodeFilter('a', function (nodes) {\n var i = nodes.length, node, href, name;\n while (i--) {\n node = nodes[i];\n href = node.attr('href');\n name = node.attr('name');\n if (href && href.indexOf('#_msocom_') !== -1) {\n node.remove();\n continue;\n }\n if (href && href.indexOf('file://') === 0) {\n href = href.split('#')[1];\n if (href) {\n href = '#' + href;\n }\n }\n if (!href && !name) {\n node.unwrap();\n } else {\n if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {\n node.unwrap();\n continue;\n }\n node.attr({\n href: href,\n name: name\n });\n }\n }\n });\n var rootNode = domParser.parse(content);\n if ($_5peev0ikjkmcwpkv.shouldConvertWordFakeLists(editor)) {\n convertFakeListsToProperLists(rootNode);\n }\n content = global$9({ validate: editor.settings.validate }, schema).serialize(rootNode);\n return content;\n };\n var preProcess = function (editor, content) {\n return $_5peev0ikjkmcwpkv.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;\n };\n var $_759xt5ivjkmcwplk = {\n preProcess: preProcess,\n isWordContent: isWordContent\n };\n\n var processResult = function (content, cancelled) {\n return {\n content: content,\n cancelled: cancelled\n };\n };\n var postProcessFilter = function (editor, html, internal, isWordHtml) {\n var tempBody = editor.dom.create('div', { style: 'display:none' }, html);\n var postProcessArgs = $_d8ovv8ijjkmcwpku.firePastePostProcess(editor, tempBody, internal, isWordHtml);\n return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());\n };\n var filterContent = function (editor, content, internal, isWordHtml) {\n var preProcessArgs = $_d8ovv8ijjkmcwpku.firePastePreProcess(editor, content, internal, isWordHtml);\n if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {\n return postProcessFilter(editor, preProcessArgs.content, internal, isWordHtml);\n } else {\n return processResult(preProcessArgs.content, preProcessArgs.isDefaultPrevented());\n }\n };\n var process = function (editor, html, internal) {\n var isWordHtml = $_759xt5ivjkmcwplk.isWordContent(html);\n var content = isWordHtml ? $_759xt5ivjkmcwplk.preProcess(editor, html) : html;\n return filterContent(editor, content, internal, isWordHtml);\n };\n var $_7a37nniujkmcwplh = { process: process };\n\n var pasteHtml = function (editor, html) {\n editor.insertContent(html, {\n merge: $_5peev0ikjkmcwpkv.shouldMergeFormats(editor),\n paste: true\n });\n return true;\n };\n var isAbsoluteUrl = function (url) {\n return /^https?:\\/\\/[\\w\\?\\-\\/+=.&%@~#]+$/i.test(url);\n };\n var isImageUrl = function (url) {\n return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url);\n };\n var createImage = function (editor, url, pasteHtmlFn) {\n editor.undoManager.extra(function () {\n pasteHtmlFn(editor, url);\n }, function () {\n editor.insertContent('');\n });\n return true;\n };\n var createLink = function (editor, url, pasteHtmlFn) {\n editor.undoManager.extra(function () {\n pasteHtmlFn(editor, url);\n }, function () {\n editor.execCommand('mceInsertLink', false, url);\n });\n return true;\n };\n var linkSelection = function (editor, html, pasteHtmlFn) {\n return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;\n };\n var insertImage = function (editor, html, pasteHtmlFn) {\n return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false;\n };\n var smartInsertContent = function (editor, html) {\n global$3.each([\n linkSelection,\n insertImage,\n pasteHtml\n ], function (action) {\n return action(editor, html, pasteHtml) !== true;\n });\n };\n var insertContent = function (editor, html) {\n if ($_5peev0ikjkmcwpkv.isSmartPasteEnabled(editor) === false) {\n pasteHtml(editor, html);\n } else {\n smartInsertContent(editor, html);\n }\n };\n var $_3wqigwj1jkmcwplz = {\n isImageUrl: isImageUrl,\n isAbsoluteUrl: isAbsoluteUrl,\n insertContent: insertContent\n };\n\n var pasteHtml$1 = function (editor, html, internalFlag) {\n var internal = internalFlag ? internalFlag : $_93gcj3irjkmcwpld.isMarked(html);\n var args = $_7a37nniujkmcwplh.process(editor, $_93gcj3irjkmcwpld.unmark(html), internal);\n if (args.cancelled === false) {\n $_3wqigwj1jkmcwplz.insertContent(editor, args.content);\n }\n };\n var pasteText = function (editor, text) {\n text = editor.dom.encode(text).replace(/\\r\\n/g, '\\n');\n text = $_3nag2qisjkmcwple.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs);\n pasteHtml$1(editor, text, false);\n };\n var getDataTransferItems = function (dataTransfer) {\n var items = {};\n var mceInternalUrlPrefix = 'data:text/mce-internal,';\n if (dataTransfer) {\n if (dataTransfer.getData) {\n var legacyText = dataTransfer.getData('Text');\n if (legacyText && legacyText.length > 0) {\n if (legacyText.indexOf(mceInternalUrlPrefix) === -1) {\n items['text/plain'] = legacyText;\n }\n }\n }\n if (dataTransfer.types) {\n for (var i = 0; i < dataTransfer.types.length; i++) {\n var contentType = dataTransfer.types[i];\n try {\n items[contentType] = dataTransfer.getData(contentType);\n } catch (ex) {\n items[contentType] = '';\n }\n }\n }\n }\n return items;\n };\n var getClipboardContent = function (editor, clipboardEvent) {\n var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);\n return $_2u5gcyj0jkmcwplv.isMsEdge() ? global$3.extend(content, { 'text/html': '' }) : content;\n };\n var hasContentType = function (clipboardContent, mimeType) {\n return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;\n };\n var hasHtmlOrText = function (content) {\n return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');\n };\n var getBase64FromUri = function (uri) {\n var idx;\n idx = uri.indexOf(',');\n if (idx !== -1) {\n return uri.substr(idx + 1);\n }\n return null;\n };\n var isValidDataUriImage = function (settings, imgElm) {\n return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\n };\n var extractFilename = function (editor, str) {\n var m = str.match(/([\\s\\S]+?)\\.(?:jpeg|jpg|png|gif)$/i);\n return m ? editor.dom.encode(m[1]) : null;\n };\n var uniqueId = $_2u5gcyj0jkmcwplv.createIdGenerator('mceclip');\n var pasteImage = function (editor, rng, reader, blob) {\n if (rng) {\n editor.selection.setRng(rng);\n rng = null;\n }\n var dataUri = reader.result;\n var base64 = getBase64FromUri(dataUri);\n var id = uniqueId();\n var name$$1 = editor.settings.images_reuse_filename && blob.name ? extractFilename(editor, blob.name) : id;\n var img = new Image();\n img.src = dataUri;\n if (isValidDataUriImage(editor.settings, img)) {\n var blobCache = editor.editorUpload.blobCache;\n var blobInfo = void 0, existingBlobInfo = void 0;\n existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) {\n return cachedBlobInfo.base64() === base64;\n });\n if (!existingBlobInfo) {\n blobInfo = blobCache.create(id, blob, base64, name$$1);\n blobCache.add(blobInfo);\n } else {\n blobInfo = existingBlobInfo;\n }\n pasteHtml$1(editor, '', false);\n } else {\n pasteHtml$1(editor, '', false);\n }\n };\n var isClipboardEvent = function (event$$1) {\n return event$$1.type === 'paste';\n };\n var pasteImageData = function (editor, e, rng) {\n var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;\n function processItems(items) {\n var i, item, reader, hadImage = false;\n if (items) {\n for (i = 0; i < items.length; i++) {\n item = items[i];\n if (/^image\\/(jpeg|png|gif|bmp)$/.test(item.type)) {\n var blob = item.getAsFile ? item.getAsFile() : item;\n reader = new window.FileReader();\n reader.onload = pasteImage.bind(null, editor, rng, reader, blob);\n reader.readAsDataURL(blob);\n e.preventDefault();\n hadImage = true;\n }\n }\n }\n return hadImage;\n }\n if (editor.settings.paste_data_images && dataTransfer) {\n return processItems(dataTransfer.items) || processItems(dataTransfer.files);\n }\n };\n var isBrokenAndroidClipboardEvent = function (e) {\n var clipboardData = e.clipboardData;\n return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;\n };\n var isKeyboardPasteEvent = function (e) {\n return global$4.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;\n };\n var registerEventHandlers = function (editor, pasteBin, pasteFormat) {\n var keyboardPasteTimeStamp = 0;\n var keyboardPastePlainTextState;\n editor.on('keydown', function (e) {\n function removePasteBinOnKeyUp(e) {\n if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n pasteBin.remove();\n }\n }\n if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;\n if (keyboardPastePlainTextState && global$1.webkit && navigator.userAgent.indexOf('Version/') !== -1) {\n return;\n }\n e.stopImmediatePropagation();\n keyboardPasteTimeStamp = new Date().getTime();\n if (global$1.ie && keyboardPastePlainTextState) {\n e.preventDefault();\n $_d8ovv8ijjkmcwpku.firePaste(editor, true);\n return;\n }\n pasteBin.remove();\n pasteBin.create();\n editor.once('keyup', removePasteBinOnKeyUp);\n editor.once('paste', function () {\n editor.off('keyup', removePasteBinOnKeyUp);\n });\n }\n });\n function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) {\n var content, isPlainTextHtml;\n if (hasContentType(clipboardContent, 'text/html')) {\n content = clipboardContent['text/html'];\n } else {\n content = pasteBin.getHtml();\n internal = internal ? internal : $_93gcj3irjkmcwpld.isMarked(content);\n if (pasteBin.isDefaultContent(content)) {\n plainTextMode = true;\n }\n }\n content = $_2u5gcyj0jkmcwplv.trimHtml(content);\n pasteBin.remove();\n isPlainTextHtml = internal === false && $_3nag2qisjkmcwple.isPlainText(content);\n if (!content.length || isPlainTextHtml) {\n plainTextMode = true;\n }\n if (plainTextMode) {\n if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {\n content = clipboardContent['text/plain'];\n } else {\n content = $_2u5gcyj0jkmcwplv.innerText(content);\n }\n }\n if (pasteBin.isDefaultContent(content)) {\n if (!isKeyBoardPaste) {\n editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');\n }\n return;\n }\n if (plainTextMode) {\n pasteText(editor, content);\n } else {\n pasteHtml$1(editor, content, internal);\n }\n }\n var getLastRng = function () {\n return pasteBin.getLastRng() || editor.selection.getRng();\n };\n editor.on('paste', function (e) {\n var clipboardTimer = new Date().getTime();\n var clipboardContent = getClipboardContent(editor, e);\n var clipboardDelay = new Date().getTime() - clipboardTimer;\n var isKeyBoardPaste = new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay < 1000;\n var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;\n var internal = hasContentType(clipboardContent, $_93gcj3irjkmcwpld.internalHtmlMime());\n keyboardPastePlainTextState = false;\n if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {\n pasteBin.remove();\n return;\n }\n if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {\n pasteBin.remove();\n return;\n }\n if (!isKeyBoardPaste) {\n e.preventDefault();\n }\n if (global$1.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) {\n pasteBin.create();\n editor.dom.bind(pasteBin.getEl(), 'paste', function (e) {\n e.stopPropagation();\n });\n editor.getDoc().execCommand('Paste', false, null);\n clipboardContent['text/html'] = pasteBin.getHtml();\n }\n if (hasContentType(clipboardContent, 'text/html')) {\n e.preventDefault();\n if (!internal) {\n internal = $_93gcj3irjkmcwpld.isMarked(clipboardContent['text/html']);\n }\n insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\n } else {\n global$2.setEditorTimeout(editor, function () {\n insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\n }, 0);\n }\n });\n };\n var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {\n registerEventHandlers(editor, pasteBin, pasteFormat);\n var src;\n editor.parser.addNodeFilter('img', function (nodes, name$$1, args) {\n var isPasteInsert = function (args) {\n return args.data && args.data.paste === true;\n };\n var remove = function (node) {\n if (!node.attr('data-mce-object') && src !== global$1.transparentSrc) {\n node.remove();\n }\n };\n var isWebKitFakeUrl = function (src) {\n return src.indexOf('webkit-fake-url') === 0;\n };\n var isDataUri = function (src) {\n return src.indexOf('data:') === 0;\n };\n if (!editor.settings.paste_data_images && isPasteInsert(args)) {\n var i = nodes.length;\n while (i--) {\n src = nodes[i].attributes.map.src;\n if (!src) {\n continue;\n }\n if (isWebKitFakeUrl(src)) {\n remove(nodes[i]);\n } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {\n remove(nodes[i]);\n }\n }\n }\n });\n };\n\n var getPasteBinParent = function (editor) {\n return global$1.ie && editor.inline ? document.body : editor.getBody();\n };\n var isExternalPasteBin = function (editor) {\n return getPasteBinParent(editor) !== editor.getBody();\n };\n var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) {\n if (isExternalPasteBin(editor)) {\n editor.dom.bind(pasteBinElm, 'paste keyup', function (e) {\n if (!isDefault(editor, pasteBinDefaultContent)) {\n editor.fire('paste');\n }\n });\n }\n };\n var create = function (editor, lastRngCell, pasteBinDefaultContent) {\n var dom = editor.dom, body = editor.getBody();\n var pasteBinElm;\n lastRngCell.set(editor.selection.getRng());\n pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', {\n 'id': 'mcepastebin',\n 'class': 'mce-pastebin',\n 'contentEditable': true,\n 'data-mce-bogus': 'all',\n 'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'\n }, pasteBinDefaultContent);\n if (global$1.ie || global$1.gecko) {\n dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);\n }\n dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) {\n e.stopPropagation();\n });\n delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent);\n pasteBinElm.focus();\n editor.selection.select(pasteBinElm, true);\n };\n var remove = function (editor, lastRngCell) {\n if (getEl(editor)) {\n var pasteBinClone = void 0;\n var lastRng = lastRngCell.get();\n while (pasteBinClone = editor.dom.get('mcepastebin')) {\n editor.dom.remove(pasteBinClone);\n editor.dom.unbind(pasteBinClone);\n }\n if (lastRng) {\n editor.selection.setRng(lastRng);\n }\n }\n lastRngCell.set(null);\n };\n var getEl = function (editor) {\n return editor.dom.get('mcepastebin');\n };\n var getHtml = function (editor) {\n var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper;\n var copyAndRemove = function (toElm, fromElm) {\n toElm.appendChild(fromElm);\n editor.dom.remove(fromElm, true);\n };\n pasteBinClones = global$3.grep(getPasteBinParent(editor).childNodes, function (elm) {\n return elm.id === 'mcepastebin';\n });\n pasteBinElm = pasteBinClones.shift();\n global$3.each(pasteBinClones, function (pasteBinClone) {\n copyAndRemove(pasteBinElm, pasteBinClone);\n });\n dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm);\n for (i = dirtyWrappers.length - 1; i >= 0; i--) {\n cleanWrapper = editor.dom.create('div');\n pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);\n copyAndRemove(cleanWrapper, dirtyWrappers[i]);\n }\n return pasteBinElm ? pasteBinElm.innerHTML : '';\n };\n var getLastRng = function (lastRng) {\n return lastRng.get();\n };\n var isDefaultContent = function (pasteBinDefaultContent, content) {\n return content === pasteBinDefaultContent;\n };\n var isPasteBin = function (elm) {\n return elm && elm.id === 'mcepastebin';\n };\n var isDefault = function (editor, pasteBinDefaultContent) {\n var pasteBinElm = getEl(editor);\n return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML);\n };\n var PasteBin = function (editor) {\n var lastRng = Cell(null);\n var pasteBinDefaultContent = '%MCEPASTEBIN%';\n return {\n create: function () {\n return create(editor, lastRng, pasteBinDefaultContent);\n },\n remove: function () {\n return remove(editor, lastRng);\n },\n getEl: function () {\n return getEl(editor);\n },\n getHtml: function () {\n return getHtml(editor);\n },\n getLastRng: function () {\n return getLastRng(lastRng);\n },\n isDefault: function () {\n return isDefault(editor, pasteBinDefaultContent);\n },\n isDefaultContent: function (content) {\n return isDefaultContent(pasteBinDefaultContent, content);\n }\n };\n };\n\n var Clipboard = function (editor, pasteFormat) {\n var pasteBin = PasteBin(editor);\n editor.on('preInit', function () {\n return registerEventsAndFilters(editor, pasteBin, pasteFormat);\n });\n return {\n pasteFormat: pasteFormat,\n pasteHtml: function (html, internalFlag) {\n return pasteHtml$1(editor, html, internalFlag);\n },\n pasteText: function (text) {\n return pasteText(editor, text);\n },\n pasteImageData: function (e, rng) {\n return pasteImageData(editor, e, rng);\n },\n getDataTransferItems: getDataTransferItems,\n hasHtmlOrText: hasHtmlOrText,\n hasContentType: hasContentType\n };\n };\n\n var noop = function () {\n };\n var hasWorkingClipboardApi = function (clipboardData) {\n return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && $_2u5gcyj0jkmcwplv.isMsEdge() !== true;\n };\n var setHtml5Clipboard = function (clipboardData, html, text) {\n if (hasWorkingClipboardApi(clipboardData)) {\n try {\n clipboardData.clearData();\n clipboardData.setData('text/html', html);\n clipboardData.setData('text/plain', text);\n clipboardData.setData($_93gcj3irjkmcwpld.internalHtmlMime(), html);\n return true;\n } catch (e) {\n return false;\n }\n } else {\n return false;\n }\n };\n var setClipboardData = function (evt, data, fallback, done) {\n if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {\n evt.preventDefault();\n done();\n } else {\n fallback(data.html, done);\n }\n };\n var fallback = function (editor) {\n return function (html, done) {\n var markedHtml = $_93gcj3irjkmcwpld.mark(html);\n var outer = editor.dom.create('div', {\n 'contenteditable': 'false',\n 'data-mce-bogus': 'all'\n });\n var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml);\n editor.dom.setStyles(outer, {\n position: 'fixed',\n top: '0',\n left: '-3000px',\n width: '1000px',\n overflow: 'hidden'\n });\n outer.appendChild(inner);\n editor.dom.add(editor.getBody(), outer);\n var range = editor.selection.getRng();\n inner.focus();\n var offscreenRange = editor.dom.createRng();\n offscreenRange.selectNodeContents(inner);\n editor.selection.setRng(offscreenRange);\n setTimeout(function () {\n editor.selection.setRng(range);\n outer.parentNode.removeChild(outer);\n done();\n }, 0);\n };\n };\n var getData = function (editor) {\n return {\n html: editor.selection.getContent({ contextual: true }),\n text: editor.selection.getContent({ format: 'text' })\n };\n };\n var cut = function (editor) {\n return function (evt) {\n if (editor.selection.isCollapsed() === false) {\n setClipboardData(evt, getData(editor), fallback(editor), function () {\n setTimeout(function () {\n editor.execCommand('Delete');\n }, 0);\n });\n }\n };\n };\n var copy = function (editor) {\n return function (evt) {\n if (editor.selection.isCollapsed() === false) {\n setClipboardData(evt, getData(editor), fallback(editor), noop);\n }\n };\n };\n var register$1 = function (editor) {\n editor.on('cut', cut(editor));\n editor.on('copy', copy(editor));\n };\n var $_5k6lg4j3jkmcwpmg = { register: register$1 };\n\n var global$10 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n var getCaretRangeFromEvent = function (editor, e) {\n return global$10.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());\n };\n var isPlainTextFileUrl = function (content) {\n var plainTextContent = content['text/plain'];\n return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;\n };\n var setFocusedRange = function (editor, rng) {\n editor.focus();\n editor.selection.setRng(rng);\n };\n var setup = function (editor, clipboard, draggingInternallyState) {\n if ($_5peev0ikjkmcwpkv.shouldBlockDrop(editor)) {\n editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n if (!$_5peev0ikjkmcwpkv.shouldPasteDataImages(editor)) {\n editor.on('drop', function (e) {\n var dataTransfer = e.dataTransfer;\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {\n e.preventDefault();\n }\n });\n }\n editor.on('drop', function (e) {\n var dropContent, rng;\n rng = getCaretRangeFromEvent(editor, e);\n if (e.isDefaultPrevented() || draggingInternallyState.get()) {\n return;\n }\n dropContent = clipboard.getDataTransferItems(e.dataTransfer);\n var internal = clipboard.hasContentType(dropContent, $_93gcj3irjkmcwpld.internalHtmlMime());\n if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {\n return;\n }\n if (rng && $_5peev0ikjkmcwpkv.shouldFilterDrop(editor)) {\n var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];\n if (content_1) {\n e.preventDefault();\n global$2.setEditorTimeout(editor, function () {\n editor.undoManager.transact(function () {\n if (dropContent['mce-internal']) {\n editor.execCommand('Delete');\n }\n setFocusedRange(editor, rng);\n content_1 = $_2u5gcyj0jkmcwplv.trimHtml(content_1);\n if (!dropContent['text/html']) {\n clipboard.pasteText(content_1);\n } else {\n clipboard.pasteHtml(content_1, internal);\n }\n });\n });\n }\n }\n });\n editor.on('dragstart', function (e) {\n draggingInternallyState.set(true);\n });\n editor.on('dragover dragend', function (e) {\n if ($_5peev0ikjkmcwpkv.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) {\n e.preventDefault();\n setFocusedRange(editor, getCaretRangeFromEvent(editor, e));\n }\n if (e.type === 'dragend') {\n draggingInternallyState.set(false);\n }\n });\n };\n var $_eiqz0aj4jkmcwpmj = { setup: setup };\n\n var setup$1 = function (editor) {\n var plugin = editor.plugins.paste;\n var preProcess = $_5peev0ikjkmcwpkv.getPreProcess(editor);\n if (preProcess) {\n editor.on('PastePreProcess', function (e) {\n preProcess.call(plugin, plugin, e);\n });\n }\n var postProcess = $_5peev0ikjkmcwpkv.getPostProcess(editor);\n if (postProcess) {\n editor.on('PastePostProcess', function (e) {\n postProcess.call(plugin, plugin, e);\n });\n }\n };\n var $_9alamfj6jkmcwpmm = { setup: setup$1 };\n\n function addPreProcessFilter(editor, filterFunc) {\n editor.on('PastePreProcess', function (e) {\n e.content = filterFunc(editor, e.content, e.internal, e.wordContent);\n });\n }\n function addPostProcessFilter(editor, filterFunc) {\n editor.on('PastePostProcess', function (e) {\n filterFunc(editor, e.node);\n });\n }\n function removeExplorerBrElementsAfterBlocks(editor, html) {\n if (!$_759xt5ivjkmcwplk.isWordContent(html)) {\n return html;\n }\n var blockElements = [];\n global$3.each(editor.schema.getBlockElements(), function (block, blockName) {\n blockElements.push(blockName);\n });\n var explorerBlocksRegExp = new RegExp('(?:
     [\\\\s\\\\r\\\\n]+|
    )*(<\\\\/?(' + blockElements.join('|') + ')[^>]*>)(?:
     [\\\\s\\\\r\\\\n]+|
    )*', 'g');\n html = $_2u5gcyj0jkmcwplv.filter(html, [[\n explorerBlocksRegExp,\n '$1'\n ]]);\n html = $_2u5gcyj0jkmcwplv.filter(html, [\n [\n /

    /g,\n '

    '\n ],\n [\n /
    /g,\n ' '\n ],\n [\n /

    /g,\n '
    '\n ]\n ]);\n return html;\n }\n function removeWebKitStyles(editor, content, internal, isWordHtml) {\n if (isWordHtml || internal) {\n return content;\n }\n var webKitStylesSetting = $_5peev0ikjkmcwpkv.getWebkitStyles(editor);\n var webKitStyles;\n if ($_5peev0ikjkmcwpkv.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') {\n return content;\n }\n if (webKitStylesSetting) {\n webKitStyles = webKitStylesSetting.split(/[, ]/);\n }\n if (webKitStyles) {\n var dom_1 = editor.dom, node_1 = editor.selection.getNode();\n content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, function (all, before, value, after) {\n var inputStyles = dom_1.parseStyle(dom_1.decode(value));\n var outputStyles = {};\n if (webKitStyles === 'none') {\n return before + after;\n }\n for (var i = 0; i < webKitStyles.length; i++) {\n var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true);\n if (/color/.test(webKitStyles[i])) {\n inputValue = dom_1.toHex(inputValue);\n currentValue = dom_1.toHex(currentValue);\n }\n if (currentValue !== inputValue) {\n outputStyles[webKitStyles[i]] = inputValue;\n }\n }\n outputStyles = dom_1.serializeStyle(outputStyles, 'span');\n if (outputStyles) {\n return before + ' style=\"' + outputStyles + '\"' + after;\n }\n return before + after;\n });\n } else {\n content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, '$1$3');\n }\n content = content.replace(/(<[^>]+) data-mce-style=\"([^\"]+)\"([^>]*>)/gi, function (all, before, value, after) {\n return before + ' style=\"' + value + '\"' + after;\n });\n return content;\n }\n function removeUnderlineAndFontInAnchor(editor, root) {\n editor.$('a', root).find('font,u').each(function (i, node) {\n editor.dom.remove(node, true);\n });\n }\n var setup$2 = function (editor) {\n if (global$1.webkit) {\n addPreProcessFilter(editor, removeWebKitStyles);\n }\n if (global$1.ie) {\n addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks);\n addPostProcessFilter(editor, removeUnderlineAndFontInAnchor);\n }\n };\n var $_ca6muwj7jkmcwpmo = { setup: setup$2 };\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n var stateChange = function (editor, clipboard, e) {\n var ctrl = e.control;\n ctrl.active(clipboard.pasteFormat.get() === 'text');\n editor.on('PastePlainTextToggle', function (e) {\n ctrl.active(e.state);\n });\n };\n var register$2 = function (editor, clipboard) {\n var postRender = curry(stateChange, editor, clipboard);\n editor.addButton('pastetext', {\n active: false,\n icon: 'pastetext',\n tooltip: 'Paste as text',\n cmd: 'mceTogglePlainTextPaste',\n onPostRender: postRender\n });\n editor.addMenuItem('pastetext', {\n text: 'Paste as text',\n selectable: true,\n active: clipboard.pasteFormat,\n cmd: 'mceTogglePlainTextPaste',\n onPostRender: postRender\n });\n };\n var $_98erksj8jkmcwpmr = { register: register$2 };\n\n global.add('paste', function (editor) {\n if ($_ee0gktiejkmcwpkb.hasProPlugin(editor) === false) {\n var userIsInformedState = Cell(false);\n var draggingInternallyState = Cell(false);\n var pasteFormat = Cell($_5peev0ikjkmcwpkv.isPasteAsTextEnabled(editor) ? 'text' : 'html');\n var clipboard = Clipboard(editor, pasteFormat);\n var quirks = $_ca6muwj7jkmcwpmo.setup(editor);\n $_98erksj8jkmcwpmr.register(editor, clipboard);\n $_gh26txihjkmcwpkr.register(editor, clipboard, userIsInformedState);\n $_9alamfj6jkmcwpmm.setup(editor);\n $_5k6lg4j3jkmcwpmg.register(editor);\n $_eiqz0aj4jkmcwpmj.setup(editor, clipboard, draggingInternallyState);\n return $_6khw6eigjkmcwpkp.get(clipboard, quirks);\n }\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","import Vue from 'vue'\nimport axios from 'axios'\nimport VueAxios from 'vue-axios'\nimport Cache from './cache.js'\nimport Global from './global.js'\nimport Auth from './auth.js'\n\nVue.use(VueAxios, axios)\n\nexport function Api(resource, endpoint) {\n\n this.Resourse = resource;\n this.EndPoint = endpoint;\n\n this.defaultFilter = {\n pageSize: 10,\n pageIndex: 0,\n isPaginate: true,\n };\n\n this.byCache = false;\n this.hasDefaultFilters = true;\n this.lastAction = \"none\";\n this.url = \"\";\n\n this.get = _get;\n this.post = _post;\n this.put = _put;\n this.delete = _delete;\n this.dataItem = _dataItem;\n this.export = _export;\n this.upload = _upload;\n\n var self = this;\n\n function _upload(file, folder) {\n\n self.lastAction = \"upload\";\n self.url = makeUri();\n\n let formData = new FormData();\n formData.append('files', file, file.name);\n formData.append('folder', folder);\n\n return axios\n .post(self.url, formData)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _post(model) {\n\n self.lastAction = \"post\";\n self.url = makeUri();\n\n return axios\n .post(self.url, model || {})\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _put(model) {\n\n self.lastAction = \"put\";\n self.url = makeUri();\n\n return axios\n .put(self.url, model)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _delete(model) {\n\n self.lastAction = \"delete\";\n self.url = makeUri()\n\n return axios\n .delete(self.url, { params: model })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _get(filters) {\n\n self.lastAction = \"get\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n return axios\n .get(self.url, { params: _filters })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _export(filters) {\n\n self.lastAction = \"export\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n return axios\n .get(self.url, { params: _filters, responseType: \"blob\" })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _dataItem(filters) {\n\n self.lastAction = \"get\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n return axios\n .get(self.url, { params: _filters })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function makeUri() {\n\n var endpoint = self.EndPoint;\n\n if (!self.EndPoint)\n endpoint = Global.END_POINT_DEFAULT;\n\n configHeaders();\n\n return String.format(\"{0}/{1}\", endpoint, self.Resourse)\n }\n\n function configHeaders() {\n var accesstoken = Cache.get(Global.ACCESS_TOKEN);\n if (accesstoken)\n axios.defaults.headers.common['Authorization'] = \"Bearer \" + Cache.get(Global.ACCESS_TOKEN);\n\n axios.defaults.headers.common['Accept-Language'] = \"pt-BR\";\n }\n\n function handleSuccess(response) {\n addCache(response.data);\n }\n\n function handleError(err) {\n if (err && err.status == 401)\n Auth.login(true);\n }\n\n function addCache(data) {\n\n if (!self.byCache)\n return;\n\n if (self.url == \"\")\n return;\n\n if (self.lastAction == \"get\") {\n if (data.Data != null || (data.DataList != null && data.DataList.length > 0)) {\n data = JSON.stringify(data);\n Cache.Add(self.url, data)\n }\n }\n }\n\n //function loadFromCache() {\n\n // if (!self.byCache)\n // return;\n\n // var data = Cache.Get(self.url);\n // data = JSON.parse(data);\n\n // return new Promise(function (resolve, reject) {\n // if (data != null)\n // resolve(data);\n // else\n // reject(\"Nada encontrado\")\n // })\n //}\n\n //function isOffline() {\n // if (navigator.network != null) {\n // var isOffline = !navigator.onLine;\n // return isOffline;\n // }\n // return false;\n //}\n\n String.format = function () {\n var theString = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n var regEx = new RegExp(\"\\\\{\" + (i - 1) + \"\\\\}\", \"gm\");\n theString = theString.replace(regEx, arguments[i]);\n }\n return theString;\n }\n\n Object.$httpParamSerializer = function () {\n var obj = arguments[0];\n return Object.entries(obj).map(([key, val]) => `${key}=${val}`).join('&')\n }\n\n}\n","(function () {\nvar media = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var getScripts = function (editor) {\n return editor.getParam('media_scripts');\n };\n var getAudioTemplateCallback = function (editor) {\n return editor.getParam('audio_template_callback');\n };\n var getVideoTemplateCallback = function (editor) {\n return editor.getParam('video_template_callback');\n };\n var hasLiveEmbeds = function (editor) {\n return editor.getParam('media_live_embeds', true);\n };\n var shouldFilterHtml = function (editor) {\n return editor.getParam('media_filter_html', true);\n };\n var getUrlResolver = function (editor) {\n return editor.getParam('media_url_resolver');\n };\n var hasAltSource = function (editor) {\n return editor.getParam('media_alt_source', true);\n };\n var hasPoster = function (editor) {\n return editor.getParam('media_poster', true);\n };\n var hasDimensions = function (editor) {\n return editor.getParam('media_dimensions', true);\n };\n var $_6qt1nth3jkmcwpf2 = {\n getScripts: getScripts,\n getAudioTemplateCallback: getAudioTemplateCallback,\n getVideoTemplateCallback: getVideoTemplateCallback,\n hasLiveEmbeds: hasLiveEmbeds,\n shouldFilterHtml: shouldFilterHtml,\n getUrlResolver: getUrlResolver,\n hasAltSource: hasAltSource,\n hasPoster: hasPoster,\n hasDimensions: hasDimensions\n };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var getVideoScriptMatch = function (prefixes, src) {\n if (prefixes) {\n for (var i = 0; i < prefixes.length; i++) {\n if (src.indexOf(prefixes[i].filter) !== -1) {\n return prefixes[i];\n }\n }\n }\n };\n var $_5qpz66h7jkmcwpf7 = { getVideoScriptMatch: getVideoScriptMatch };\n\n var trimPx = function (value) {\n return value.replace(/px$/, '');\n };\n var addPx = function (value) {\n return /^[0-9.]+$/.test(value) ? value + 'px' : value;\n };\n var getSize = function (name) {\n return function (elm) {\n return elm ? trimPx(elm.style[name]) : '';\n };\n };\n var setSize = function (name) {\n return function (elm, value) {\n if (elm) {\n elm.style[name] = addPx(value);\n }\n };\n };\n var $_1gasfuh8jkmcwpf8 = {\n getMaxWidth: getSize('maxWidth'),\n getMaxHeight: getSize('maxHeight'),\n setMaxWidth: setSize('maxWidth'),\n setMaxHeight: setSize('maxHeight')\n };\n\n var DOM = global$4.DOM;\n var getEphoxEmbedIri = function (elm) {\n return DOM.getAttrib(elm, 'data-ephox-embed-iri');\n };\n var isEphoxEmbed = function (html) {\n var fragment = DOM.createFragment(html);\n return getEphoxEmbedIri(fragment.firstChild) !== '';\n };\n var htmlToDataSax = function (prefixes, html) {\n var data = {};\n global$3({\n validate: false,\n allow_conditional_comments: true,\n special: 'script,noscript',\n start: function (name, attrs) {\n if (!data.source1 && name === 'param') {\n data.source1 = attrs.map.movie;\n }\n if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {\n if (!data.type) {\n data.type = name;\n }\n data = global$2.extend(attrs.map, data);\n }\n if (name === 'script') {\n var videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch(prefixes, attrs.map.src);\n if (!videoScript) {\n return;\n }\n data = {\n type: 'script',\n source1: attrs.map.src,\n width: videoScript.width,\n height: videoScript.height\n };\n }\n if (name === 'source') {\n if (!data.source1) {\n data.source1 = attrs.map.src;\n } else if (!data.source2) {\n data.source2 = attrs.map.src;\n }\n }\n if (name === 'img' && !data.poster) {\n data.poster = attrs.map.src;\n }\n }\n }).parse(html);\n data.source1 = data.source1 || data.src || data.data;\n data.source2 = data.source2 || '';\n data.poster = data.poster || '';\n return data;\n };\n var ephoxEmbedHtmlToData = function (html) {\n var fragment = DOM.createFragment(html);\n var div = fragment.firstChild;\n return {\n type: 'ephox-embed-iri',\n source1: getEphoxEmbedIri(div),\n source2: '',\n poster: '',\n width: $_1gasfuh8jkmcwpf8.getMaxWidth(div),\n height: $_1gasfuh8jkmcwpf8.getMaxHeight(div)\n };\n };\n var htmlToData = function (prefixes, html) {\n return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);\n };\n var $_1f89fyh4jkmcwpf3 = { htmlToData: htmlToData };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');\n\n var guess = function (url) {\n var mimes = {\n mp3: 'audio/mpeg',\n wav: 'audio/wav',\n mp4: 'video/mp4',\n webm: 'video/webm',\n ogg: 'video/ogg',\n swf: 'application/x-shockwave-flash'\n };\n var fileEnd = url.toLowerCase().split('.').pop();\n var mime = mimes[fileEnd];\n return mime ? mime : '';\n };\n var $_e86s3ihcjkmcwpfk = { guess: guess };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.html.Writer');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.html.Schema');\n\n var DOM$1 = global$4.DOM;\n var setAttributes = function (attrs, updatedAttrs) {\n var name;\n var i;\n var value;\n var attr;\n for (name in updatedAttrs) {\n value = '' + updatedAttrs[name];\n if (attrs.map[name]) {\n i = attrs.length;\n while (i--) {\n attr = attrs[i];\n if (attr.name === name) {\n if (value) {\n attrs.map[name] = value;\n attr.value = value;\n } else {\n delete attrs.map[name];\n attrs.splice(i, 1);\n }\n }\n }\n } else if (value) {\n attrs.push({\n name: name,\n value: value\n });\n attrs.map[name] = value;\n }\n }\n };\n var normalizeHtml = function (html) {\n var writer = global$6();\n var parser = global$3(writer);\n parser.parse(html);\n return writer.getContent();\n };\n var updateHtmlSax = function (html, data, updateAll) {\n var writer = global$6();\n var sourceCount = 0;\n var hasImage;\n global$3({\n validate: false,\n allow_conditional_comments: true,\n special: 'script,noscript',\n comment: function (text) {\n writer.comment(text);\n },\n cdata: function (text) {\n writer.cdata(text);\n },\n text: function (text, raw) {\n writer.text(text, raw);\n },\n start: function (name, attrs, empty) {\n switch (name) {\n case 'video':\n case 'object':\n case 'embed':\n case 'img':\n case 'iframe':\n if (data.height !== undefined && data.width !== undefined) {\n setAttributes(attrs, {\n width: data.width,\n height: data.height\n });\n }\n break;\n }\n if (updateAll) {\n switch (name) {\n case 'video':\n setAttributes(attrs, {\n poster: data.poster,\n src: ''\n });\n if (data.source2) {\n setAttributes(attrs, { src: '' });\n }\n break;\n case 'iframe':\n setAttributes(attrs, { src: data.source1 });\n break;\n case 'source':\n sourceCount++;\n if (sourceCount <= 2) {\n setAttributes(attrs, {\n src: data['source' + sourceCount],\n type: data['source' + sourceCount + 'mime']\n });\n if (!data['source' + sourceCount]) {\n return;\n }\n }\n break;\n case 'img':\n if (!data.poster) {\n return;\n }\n hasImage = true;\n break;\n }\n }\n writer.start(name, attrs, empty);\n },\n end: function (name) {\n if (name === 'video' && updateAll) {\n for (var index = 1; index <= 2; index++) {\n if (data['source' + index]) {\n var attrs = [];\n attrs.map = {};\n if (sourceCount < index) {\n setAttributes(attrs, {\n src: data['source' + index],\n type: data['source' + index + 'mime']\n });\n writer.start('source', attrs, true);\n }\n }\n }\n }\n if (data.poster && name === 'object' && updateAll && !hasImage) {\n var imgAttrs = [];\n imgAttrs.map = {};\n setAttributes(imgAttrs, {\n src: data.poster,\n width: data.width,\n height: data.height\n });\n writer.start('img', imgAttrs, true);\n }\n writer.end(name);\n }\n }, global$7({})).parse(html);\n return writer.getContent();\n };\n var isEphoxEmbed$1 = function (html) {\n var fragment = DOM$1.createFragment(html);\n return DOM$1.getAttrib(fragment.firstChild, 'data-ephox-embed-iri') !== '';\n };\n var updateEphoxEmbed = function (html, data) {\n var fragment = DOM$1.createFragment(html);\n var div = fragment.firstChild;\n $_1gasfuh8jkmcwpf8.setMaxWidth(div, data.width);\n $_1gasfuh8jkmcwpf8.setMaxHeight(div, data.height);\n return normalizeHtml(div.outerHTML);\n };\n var updateHtml = function (html, data, updateAll) {\n return isEphoxEmbed$1(html) ? updateEphoxEmbed(html, data) : updateHtmlSax(html, data, updateAll);\n };\n var $_6s992lhdjkmcwpfn = { updateHtml: updateHtml };\n\n var urlPatterns = [\n {\n regex: /youtu\\.be\\/([\\w\\-_\\?&=.]+)/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$1',\n allowFullscreen: true\n },\n {\n regex: /youtube\\.com(.+)v=([^&]+)(&([a-z0-9&=\\-_]+))?/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$2?$4',\n allowFullscreen: true\n },\n {\n regex: /youtube.com\\/embed\\/([a-z0-9\\?&=\\-_]+)/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$1',\n allowFullscreen: true\n },\n {\n regex: /vimeo\\.com\\/([0-9]+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc',\n allowFullscreen: true\n },\n {\n regex: /vimeo\\.com\\/(.*)\\/([0-9]+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//player.vimeo.com/video/$2?title=0&byline=0',\n allowFullscreen: true\n },\n {\n regex: /maps\\.google\\.([a-z]{2,3})\\/maps\\/(.+)msid=(.+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//maps.google.com/maps/ms?msid=$2&output=embed\"',\n allowFullscreen: false\n },\n {\n regex: /dailymotion\\.com\\/video\\/([^_]+)/,\n type: 'iframe',\n w: 480,\n h: 270,\n url: '//www.dailymotion.com/embed/video/$1',\n allowFullscreen: true\n },\n {\n regex: /dai\\.ly\\/([^_]+)/,\n type: 'iframe',\n w: 480,\n h: 270,\n url: '//www.dailymotion.com/embed/video/$1',\n allowFullscreen: true\n }\n ];\n var getUrl = function (pattern, url) {\n var match = pattern.regex.exec(url);\n var newUrl = pattern.url;\n var _loop_1 = function (i) {\n newUrl = newUrl.replace('$' + i, function () {\n return match[i] ? match[i] : '';\n });\n };\n for (var i = 0; i < match.length; i++) {\n _loop_1(i);\n }\n return newUrl.replace(/\\?$/, '');\n };\n var matchPattern = function (url) {\n var pattern = urlPatterns.filter(function (pattern) {\n return pattern.regex.test(url);\n });\n if (pattern.length > 0) {\n return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });\n } else {\n return null;\n }\n };\n\n var getIframeHtml = function (data) {\n var allowFullscreen = data.allowFullscreen ? ' allowFullscreen=\"1\"' : '';\n return '';\n };\n var getFlashHtml = function (data) {\n var html = '';\n if (data.poster) {\n html += '';\n }\n html += '';\n return html;\n };\n var getAudioHtml = function (data, audioTemplateCallback) {\n if (audioTemplateCallback) {\n return audioTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getVideoHtml = function (data, videoTemplateCallback) {\n if (videoTemplateCallback) {\n return videoTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getScriptHtml = function (data) {\n return '';\n };\n var dataToHtml = function (editor, dataIn) {\n var data = global$2.extend({}, dataIn);\n if (!data.source1) {\n global$2.extend(data, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), data.embed));\n if (!data.source1) {\n return '';\n }\n }\n if (!data.source2) {\n data.source2 = '';\n }\n if (!data.poster) {\n data.poster = '';\n }\n data.source1 = editor.convertURL(data.source1, 'source');\n data.source2 = editor.convertURL(data.source2, 'source');\n data.source1mime = $_e86s3ihcjkmcwpfk.guess(data.source1);\n data.source2mime = $_e86s3ihcjkmcwpfk.guess(data.source2);\n data.poster = editor.convertURL(data.poster, 'poster');\n var pattern = matchPattern(data.source1);\n if (pattern) {\n data.source1 = pattern.url;\n data.type = pattern.type;\n data.allowFullscreen = pattern.allowFullscreen;\n data.width = data.width || pattern.w;\n data.height = data.height || pattern.h;\n }\n if (data.embed) {\n return $_6s992lhdjkmcwpfn.updateHtml(data.embed, data, true);\n } else {\n var videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.getScripts(editor), data.source1);\n if (videoScript) {\n data.type = 'script';\n data.width = videoScript.width;\n data.height = videoScript.height;\n }\n var audioTemplateCallback = $_6qt1nth3jkmcwpf2.getAudioTemplateCallback(editor);\n var videoTemplateCallback = $_6qt1nth3jkmcwpf2.getVideoTemplateCallback(editor);\n data.width = data.width || 300;\n data.height = data.height || 150;\n global$2.each(data, function (value, key) {\n data[key] = editor.dom.encode(value);\n });\n if (data.type === 'iframe') {\n return getIframeHtml(data);\n } else if (data.source1mime === 'application/x-shockwave-flash') {\n return getFlashHtml(data);\n } else if (data.source1mime.indexOf('audio') !== -1) {\n return getAudioHtml(data, audioTemplateCallback);\n } else if (data.type === 'script') {\n return getScriptHtml(data);\n } else {\n return getVideoHtml(data, videoTemplateCallback);\n }\n }\n };\n var $_65qpjdhbjkmcwpfc = { dataToHtml: dataToHtml };\n\n var cache = {};\n var embedPromise = function (data, dataToHtml, handler) {\n return new global$5(function (res, rej) {\n var wrappedResolve = function (response) {\n if (response.html) {\n cache[data.source1] = response;\n }\n return res({\n url: data.source1,\n html: response.html ? response.html : dataToHtml(data)\n });\n };\n if (cache[data.source1]) {\n wrappedResolve(cache[data.source1]);\n } else {\n handler({ url: data.source1 }, wrappedResolve, rej);\n }\n });\n };\n var defaultPromise = function (data, dataToHtml) {\n return new global$5(function (res) {\n res({\n html: dataToHtml(data),\n url: data.source1\n });\n });\n };\n var loadedData = function (editor) {\n return function (data) {\n return $_65qpjdhbjkmcwpfc.dataToHtml(editor, data);\n };\n };\n var getEmbedHtml = function (editor, data) {\n var embedHandler = $_6qt1nth3jkmcwpf2.getUrlResolver(editor);\n return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));\n };\n var isCached = function (url) {\n return cache.hasOwnProperty(url);\n };\n var $_74pv8fh9jkmcwpf9 = {\n getEmbedHtml: getEmbedHtml,\n isCached: isCached\n };\n\n var doSyncSize = function (widthCtrl, heightCtrl) {\n widthCtrl.state.set('oldVal', widthCtrl.value());\n heightCtrl.state.set('oldVal', heightCtrl.value());\n };\n var doSizeControls = function (win, f) {\n var widthCtrl = win.find('#width')[0];\n var heightCtrl = win.find('#height')[0];\n var constrained = win.find('#constrain')[0];\n if (widthCtrl && heightCtrl && constrained) {\n f(widthCtrl, heightCtrl, constrained.checked());\n }\n };\n var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\n var oldWidth = widthCtrl.state.get('oldVal');\n var oldHeight = heightCtrl.state.get('oldVal');\n var newWidth = widthCtrl.value();\n var newHeight = heightCtrl.value();\n if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\n if (newWidth !== oldWidth) {\n newHeight = Math.round(newWidth / oldWidth * newHeight);\n if (!isNaN(newHeight)) {\n heightCtrl.value(newHeight);\n }\n } else {\n newWidth = Math.round(newHeight / oldHeight * newWidth);\n if (!isNaN(newWidth)) {\n widthCtrl.value(newWidth);\n }\n }\n }\n doSyncSize(widthCtrl, heightCtrl);\n };\n var syncSize = function (win) {\n doSizeControls(win, doSyncSize);\n };\n var updateSize = function (win) {\n doSizeControls(win, doUpdateSize);\n };\n var createUi = function (onChange) {\n var recalcSize = function () {\n onChange(function (win) {\n updateSize(win);\n });\n };\n return {\n type: 'container',\n label: 'Dimensions',\n layout: 'flex',\n align: 'center',\n spacing: 5,\n items: [\n {\n name: 'width',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Width'\n },\n {\n type: 'label',\n text: 'x'\n },\n {\n name: 'height',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Height'\n },\n {\n name: 'constrain',\n type: 'checkbox',\n checked: true,\n text: 'Constrain proportions'\n }\n ]\n };\n };\n var $_gd8vqohhjkmcwpg2 = {\n createUi: createUi,\n syncSize: syncSize,\n updateSize: updateSize\n };\n\n var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';\n var handleError = function (editor) {\n return function (error) {\n var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';\n editor.notificationManager.open({\n type: 'error',\n text: errorMessage\n });\n };\n };\n var getData = function (editor) {\n var element = editor.selection.getNode();\n var dataEmbed = element.getAttribute('data-ephox-embed-iri');\n if (dataEmbed) {\n return {\n 'source1': dataEmbed,\n 'data-ephox-embed-iri': dataEmbed,\n 'width': $_1gasfuh8jkmcwpf8.getMaxWidth(element),\n 'height': $_1gasfuh8jkmcwpf8.getMaxHeight(element)\n };\n }\n return element.getAttribute('data-mce-object') ? $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};\n };\n var getSource = function (editor) {\n var elm = editor.selection.getNode();\n if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {\n return editor.selection.getContent();\n }\n };\n var addEmbedHtml = function (win, editor) {\n return function (response) {\n var html = response.html;\n var embed = win.find('#embed')[0];\n var data = global$2.extend($_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), html), { source1: response.url });\n win.fromJSON(data);\n if (embed) {\n embed.value(html);\n $_gd8vqohhjkmcwpg2.updateSize(win);\n }\n };\n };\n var selectPlaceholder = function (editor, beforeObjects) {\n var i;\n var y;\n var afterObjects = editor.dom.select('img[data-mce-object]');\n for (i = 0; i < beforeObjects.length; i++) {\n for (y = afterObjects.length - 1; y >= 0; y--) {\n if (beforeObjects[i] === afterObjects[y]) {\n afterObjects.splice(y, 1);\n }\n }\n }\n editor.selection.select(afterObjects[0]);\n };\n var handleInsert = function (editor, html) {\n var beforeObjects = editor.dom.select('img[data-mce-object]');\n editor.insertContent(html);\n selectPlaceholder(editor, beforeObjects);\n editor.nodeChanged();\n };\n var submitForm = function (win, editor) {\n var data = win.toJSON();\n data.embed = $_6s992lhdjkmcwpfn.updateHtml(data.embed, data);\n if (data.embed && $_74pv8fh9jkmcwpf9.isCached(data.source1)) {\n handleInsert(editor, data.embed);\n } else {\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, data).then(function (response) {\n handleInsert(editor, response.html);\n }).catch(handleError(editor));\n }\n };\n var populateMeta = function (win, meta) {\n global$2.each(meta, function (value, key) {\n win.find('#' + key).value(value);\n });\n };\n var showDialog = function (editor) {\n var win;\n var data;\n var generalFormItems = [{\n name: 'source1',\n type: 'filepicker',\n filetype: 'media',\n size: 40,\n autofocus: true,\n label: 'Source',\n onpaste: function () {\n setTimeout(function () {\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n }, 1);\n },\n onchange: function (e) {\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n populateMeta(win, e.meta);\n },\n onbeforecall: function (e) {\n e.meta = win.toJSON();\n }\n }];\n var advancedFormItems = [];\n var reserialise = function (update) {\n update(win);\n data = win.toJSON();\n win.find('#embed').value($_6s992lhdjkmcwpfn.updateHtml(data.embed, data));\n };\n if ($_6qt1nth3jkmcwpf2.hasAltSource(editor)) {\n advancedFormItems.push({\n name: 'source2',\n type: 'filepicker',\n filetype: 'media',\n size: 40,\n label: 'Alternative source'\n });\n }\n if ($_6qt1nth3jkmcwpf2.hasPoster(editor)) {\n advancedFormItems.push({\n name: 'poster',\n type: 'filepicker',\n filetype: 'image',\n size: 40,\n label: 'Poster'\n });\n }\n if ($_6qt1nth3jkmcwpf2.hasDimensions(editor)) {\n var control = $_gd8vqohhjkmcwpg2.createUi(reserialise);\n generalFormItems.push(control);\n }\n data = getData(editor);\n var embedTextBox = {\n id: 'mcemediasource',\n type: 'textbox',\n flex: 1,\n name: 'embed',\n value: getSource(editor),\n multiline: true,\n rows: 5,\n label: 'Source'\n };\n var updateValueOnChange = function () {\n data = global$2.extend({}, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), this.value()));\n this.parent().parent().fromJSON(data);\n };\n embedTextBox[embedChange] = updateValueOnChange;\n var body = [\n {\n title: 'General',\n type: 'form',\n items: generalFormItems\n },\n {\n title: 'Embed',\n type: 'container',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n padding: 10,\n spacing: 10,\n items: [\n {\n type: 'label',\n text: 'Paste your embed code below:',\n forId: 'mcemediasource'\n },\n embedTextBox\n ]\n }\n ];\n if (advancedFormItems.length > 0) {\n body.push({\n title: 'Advanced',\n type: 'form',\n items: advancedFormItems\n });\n }\n win = editor.windowManager.open({\n title: 'Insert/edit media',\n data: data,\n bodyType: 'tabpanel',\n body: body,\n onSubmit: function () {\n $_gd8vqohhjkmcwpg2.updateSize(win);\n submitForm(win, editor);\n }\n });\n $_gd8vqohhjkmcwpg2.syncSize(win);\n };\n var $_3njyjoh0jkmcwpew = { showDialog: showDialog };\n\n var get = function (editor) {\n var showDialog = function () {\n $_3njyjoh0jkmcwpew.showDialog(editor);\n };\n return { showDialog: showDialog };\n };\n var $_eg0prjgzjkmcwpeu = { get: get };\n\n var register = function (editor) {\n var showDialog = function () {\n $_3njyjoh0jkmcwpew.showDialog(editor);\n };\n editor.addCommand('mceMedia', showDialog);\n };\n var $_8o48izhijkmcwpg5 = { register: register };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n var sanitize = function (editor, html) {\n if ($_6qt1nth3jkmcwpf2.shouldFilterHtml(editor) === false) {\n return html;\n }\n var writer = global$6();\n var blocked;\n global$3({\n validate: false,\n allow_conditional_comments: false,\n special: 'script,noscript',\n comment: function (text) {\n writer.comment(text);\n },\n cdata: function (text) {\n writer.cdata(text);\n },\n text: function (text, raw) {\n writer.text(text, raw);\n },\n start: function (name, attrs, empty) {\n blocked = true;\n if (name === 'script' || name === 'noscript') {\n return;\n }\n for (var i = 0; i < attrs.length; i++) {\n if (attrs[i].name.indexOf('on') === 0) {\n return;\n }\n if (attrs[i].name === 'style') {\n attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);\n }\n }\n writer.start(name, attrs, empty);\n blocked = false;\n },\n end: function (name) {\n if (blocked) {\n return;\n }\n writer.end(name);\n }\n }, global$7({})).parse(html);\n return writer.getContent();\n };\n var $_f1oicehmjkmcwpge = { sanitize: sanitize };\n\n var createPlaceholderNode = function (editor, node) {\n var placeHolder;\n var name = node.name;\n placeHolder = new global$8('img', 1);\n placeHolder.shortEnded = true;\n retainAttributesAndInnerHtml(editor, node, placeHolder);\n placeHolder.attr({\n 'width': node.attr('width') || '300',\n 'height': node.attr('height') || (name === 'audio' ? '30' : '150'),\n 'style': node.attr('style'),\n 'src': global$1.transparentSrc,\n 'data-mce-object': name,\n 'class': 'mce-object mce-object-' + name\n });\n return placeHolder;\n };\n var createPreviewIframeNode = function (editor, node) {\n var previewWrapper;\n var previewNode;\n var shimNode;\n var name = node.name;\n previewWrapper = new global$8('span', 1);\n previewWrapper.attr({\n 'contentEditable': 'false',\n 'style': node.attr('style'),\n 'data-mce-object': name,\n 'class': 'mce-preview-object mce-object-' + name\n });\n retainAttributesAndInnerHtml(editor, node, previewWrapper);\n previewNode = new global$8(name, 1);\n previewNode.attr({\n src: node.attr('src'),\n allowfullscreen: node.attr('allowfullscreen'),\n style: node.attr('style'),\n class: node.attr('class'),\n width: node.attr('width'),\n height: node.attr('height'),\n frameborder: '0'\n });\n shimNode = new global$8('span', 1);\n shimNode.attr('class', 'mce-shim');\n previewWrapper.append(previewNode);\n previewWrapper.append(shimNode);\n return previewWrapper;\n };\n var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {\n var attrName;\n var attrValue;\n var attribs;\n var ai;\n var innerHtml;\n attribs = sourceNode.attributes;\n ai = attribs.length;\n while (ai--) {\n attrName = attribs[ai].name;\n attrValue = attribs[ai].value;\n if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {\n if (attrName === 'data' || attrName === 'src') {\n attrValue = editor.convertURL(attrValue, attrName);\n }\n targetNode.attr('data-mce-p-' + attrName, attrValue);\n }\n }\n innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;\n if (innerHtml) {\n targetNode.attr('data-mce-html', escape($_f1oicehmjkmcwpge.sanitize(editor, innerHtml)));\n targetNode.firstChild = null;\n }\n };\n var isWithinEphoxEmbed = function (node) {\n while (node = node.parent) {\n if (node.attr('data-ephox-embed-iri')) {\n return true;\n }\n }\n return false;\n };\n var placeHolderConverter = function (editor) {\n return function (nodes) {\n var i = nodes.length;\n var node;\n var videoScript;\n while (i--) {\n node = nodes[i];\n if (!node.parent) {\n continue;\n }\n if (node.parent.attr('data-mce-object')) {\n continue;\n }\n if (node.name === 'script') {\n videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.getScripts(editor), node.attr('src'));\n if (!videoScript) {\n continue;\n }\n }\n if (videoScript) {\n if (videoScript.width) {\n node.attr('width', videoScript.width.toString());\n }\n if (videoScript.height) {\n node.attr('height', videoScript.height.toString());\n }\n }\n if (node.name === 'iframe' && $_6qt1nth3jkmcwpf2.hasLiveEmbeds(editor) && global$1.ceFalse) {\n if (!isWithinEphoxEmbed(node)) {\n node.replace(createPreviewIframeNode(editor, node));\n }\n } else {\n if (!isWithinEphoxEmbed(node)) {\n node.replace(createPlaceholderNode(editor, node));\n }\n }\n }\n };\n };\n var $_f6hjinhljkmcwpga = {\n createPreviewIframeNode: createPreviewIframeNode,\n createPlaceholderNode: createPlaceholderNode,\n placeHolderConverter: placeHolderConverter\n };\n\n var setup = function (editor) {\n editor.on('preInit', function () {\n var specialElements = editor.schema.getSpecialElements();\n global$2.each('video audio iframe object'.split(' '), function (name) {\n specialElements[name] = new RegExp(']*>', 'gi');\n });\n var boolAttrs = editor.schema.getBoolAttrs();\n global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {\n boolAttrs[name] = {};\n });\n editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', $_f6hjinhljkmcwpga.placeHolderConverter(editor));\n editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {\n var i = nodes.length;\n var node;\n var realElm;\n var ai;\n var attribs;\n var innerHtml;\n var innerNode;\n var realElmName;\n var className;\n while (i--) {\n node = nodes[i];\n if (!node.parent) {\n continue;\n }\n realElmName = node.attr(name);\n realElm = new global$8(realElmName, 1);\n if (realElmName !== 'audio' && realElmName !== 'script') {\n className = node.attr('class');\n if (className && className.indexOf('mce-preview-object') !== -1) {\n realElm.attr({\n width: node.firstChild.attr('width'),\n height: node.firstChild.attr('height')\n });\n } else {\n realElm.attr({\n width: node.attr('width'),\n height: node.attr('height')\n });\n }\n }\n realElm.attr({ style: node.attr('style') });\n attribs = node.attributes;\n ai = attribs.length;\n while (ai--) {\n var attrName = attribs[ai].name;\n if (attrName.indexOf('data-mce-p-') === 0) {\n realElm.attr(attrName.substr(11), attribs[ai].value);\n }\n }\n if (realElmName === 'script') {\n realElm.attr('type', 'text/javascript');\n }\n innerHtml = node.attr('data-mce-html');\n if (innerHtml) {\n innerNode = new global$8('#text', 3);\n innerNode.raw = true;\n innerNode.value = $_f1oicehmjkmcwpge.sanitize(editor, unescape(innerHtml));\n realElm.append(innerNode);\n }\n node.replace(realElm);\n }\n });\n });\n editor.on('setContent', function () {\n editor.$('span.mce-preview-object').each(function (index, elm) {\n var $elm = editor.$(elm);\n if ($elm.find('span.mce-shim', elm).length === 0) {\n $elm.append('');\n }\n });\n });\n };\n var $_b6ycdhhjjkmcwpg6 = { setup: setup };\n\n var setup$1 = function (editor) {\n editor.on('ResolveName', function (e) {\n var name;\n if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {\n e.name = name;\n }\n });\n };\n var $_c1o1r8hnjkmcwpgg = { setup: setup$1 };\n\n var setup$2 = function (editor) {\n editor.on('click keyup', function () {\n var selectedNode = editor.selection.getNode();\n if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {\n if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {\n selectedNode.setAttribute('data-mce-selected', '2');\n }\n }\n });\n editor.on('ObjectSelected', function (e) {\n var objectType = e.target.getAttribute('data-mce-object');\n if (objectType === 'audio' || objectType === 'script') {\n e.preventDefault();\n }\n });\n editor.on('objectResized', function (e) {\n var target = e.target;\n var html;\n if (target.getAttribute('data-mce-object')) {\n html = target.getAttribute('data-mce-html');\n if (html) {\n html = unescape(html);\n target.setAttribute('data-mce-html', escape($_6s992lhdjkmcwpfn.updateHtml(html, {\n width: e.width,\n height: e.height\n })));\n }\n }\n });\n };\n var $_8yods0hojkmcwpgh = { setup: setup$2 };\n\n var register$1 = function (editor) {\n editor.addButton('media', {\n tooltip: 'Insert/edit media',\n cmd: 'mceMedia',\n stateSelector: [\n 'img[data-mce-object]',\n 'span[data-mce-object]',\n 'div[data-ephox-embed-iri]'\n ]\n });\n editor.addMenuItem('media', {\n icon: 'media',\n text: 'Media',\n cmd: 'mceMedia',\n context: 'insert',\n prependToContext: true\n });\n };\n var $_ew8gthhpjkmcwpgk = { register: register$1 };\n\n global.add('media', function (editor) {\n $_8o48izhijkmcwpg5.register(editor);\n $_ew8gthhpjkmcwpgk.register(editor);\n $_c1o1r8hnjkmcwpgg.setup(editor);\n $_b6ycdhhjjkmcwpg6.setup(editor);\n $_8yods0hojkmcwpgh.setup(editor);\n return $_eg0prjgzjkmcwpeu.get(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-ps\": \"4c98\",\n\t\"./ar-ps.js\": \"4c98\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku-kmr\": \"7558\",\n\t\"./ku-kmr.js\": \"7558\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","(function () {\nvar advlist = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var applyListFormat = function (editor, listName, styleValue) {\n var cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList';\n editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue });\n };\n var $_55fky08fjkmcwo2a = { applyListFormat: applyListFormat };\n\n var register = function (editor) {\n editor.addCommand('ApplyUnorderedListStyle', function (ui, value) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'UL', value['list-style-type']);\n });\n editor.addCommand('ApplyOrderedListStyle', function (ui, value) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'OL', value['list-style-type']);\n });\n };\n var $_cjqqqe8ejkmcwo28 = { register: register };\n\n var getNumberStyles = function (editor) {\n var styles = editor.getParam('advlist_number_styles', 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman');\n return styles ? styles.split(/[ ,]/) : [];\n };\n var getBulletStyles = function (editor) {\n var styles = editor.getParam('advlist_bullet_styles', 'default,circle,disc,square');\n return styles ? styles.split(/[ ,]/) : [];\n };\n var $_2zo4iv8hjkmcwo2f = {\n getNumberStyles: getNumberStyles,\n getBulletStyles: getBulletStyles\n };\n\n var isChildOfBody = function (editor, elm) {\n return editor.$.contains(editor.getBody(), elm);\n };\n var isTableCellNode = function (node) {\n return node && /^(TH|TD)$/.test(node.nodeName);\n };\n var isListNode = function (editor) {\n return function (node) {\n return node && /^(OL|UL|DL)$/.test(node.nodeName) && isChildOfBody(editor, node);\n };\n };\n var getSelectedStyleType = function (editor) {\n var listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');\n return editor.dom.getStyle(listElm, 'listStyleType') || '';\n };\n var $_djj0lo8ijkmcwo2g = {\n isTableCellNode: isTableCellNode,\n isListNode: isListNode,\n getSelectedStyleType: getSelectedStyleType\n };\n\n var styleValueToText = function (styleValue) {\n return styleValue.replace(/\\-/g, ' ').replace(/\\b\\w/g, function (chr) {\n return chr.toUpperCase();\n });\n };\n var toMenuItems = function (styles) {\n return global$1.map(styles, function (styleValue) {\n var text = styleValueToText(styleValue);\n var data = styleValue === 'default' ? '' : styleValue;\n return {\n text: text,\n data: data\n };\n });\n };\n var $_cbyrf58jjkmcwo2h = { toMenuItems: toMenuItems };\n\n var findIndex = function (list, predicate) {\n for (var index = 0; index < list.length; index++) {\n var element = list[index];\n if (predicate(element)) {\n return index;\n }\n }\n return -1;\n };\n var listState = function (editor, listName) {\n return function (e) {\n var ctrl = e.control;\n editor.on('NodeChange', function (e) {\n var tableCellIndex = findIndex(e.parents, $_djj0lo8ijkmcwo2g.isTableCellNode);\n var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\n var lists = global$1.grep(parents, $_djj0lo8ijkmcwo2g.isListNode(editor));\n ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\n });\n };\n };\n var updateSelection = function (editor) {\n return function (e) {\n var listStyleType = $_djj0lo8ijkmcwo2g.getSelectedStyleType(editor);\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.settings.data === listStyleType);\n });\n };\n };\n var addSplitButton = function (editor, id, tooltip, cmd, nodeName, styles) {\n editor.addButton(id, {\n active: false,\n type: 'splitbutton',\n tooltip: tooltip,\n menu: $_cbyrf58jjkmcwo2h.toMenuItems(styles),\n onPostRender: listState(editor, nodeName),\n onshow: updateSelection(editor),\n onselect: function (e) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, nodeName, e.control.settings.data);\n },\n onclick: function () {\n editor.execCommand(cmd);\n }\n });\n };\n var addButton = function (editor, id, tooltip, cmd, nodeName, styles) {\n editor.addButton(id, {\n active: false,\n type: 'button',\n tooltip: tooltip,\n onPostRender: listState(editor, nodeName),\n onclick: function () {\n editor.execCommand(cmd);\n }\n });\n };\n var addControl = function (editor, id, tooltip, cmd, nodeName, styles) {\n if (styles.length > 0) {\n addSplitButton(editor, id, tooltip, cmd, nodeName, styles);\n } else {\n addButton(editor, id, tooltip, cmd, nodeName, styles);\n }\n };\n var register$1 = function (editor) {\n addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', $_2zo4iv8hjkmcwo2f.getNumberStyles(editor));\n addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', $_2zo4iv8hjkmcwo2f.getBulletStyles(editor));\n };\n var $_d74fz58gjkmcwo2b = { register: register$1 };\n\n global.add('advlist', function (editor) {\n var hasPlugin = function (editor, plugin) {\n var plugins = editor.settings.plugins ? editor.settings.plugins : '';\n return global$1.inArray(plugins.split(/[ ,]/), plugin) !== -1;\n };\n if (hasPlugin(editor, 'lists')) {\n $_d74fz58gjkmcwo2b.register(editor);\n $_cjqqqe8ejkmcwo28.register(editor);\n }\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","module.exports = __webpack_public_path__ + \"img/logo_shoppingcolor.b96d6115.png\";","(function () {\nvar preview = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var getPreviewDialogWidth = function (editor) {\n return parseInt(editor.getParam('plugin_preview_width', '650'), 10);\n };\n var getPreviewDialogHeight = function (editor) {\n return parseInt(editor.getParam('plugin_preview_height', '500'), 10);\n };\n var getContentStyle = function (editor) {\n return editor.getParam('content_style', '');\n };\n var $_6hy26xjfjkmcwppy = {\n getPreviewDialogWidth: getPreviewDialogWidth,\n getPreviewDialogHeight: getPreviewDialogHeight,\n getContentStyle: getContentStyle\n };\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var getPreviewHtml = function (editor) {\n var previewHtml;\n var headHtml = '';\n var encode = editor.dom.encode;\n var contentStyle = $_6hy26xjfjkmcwppy.getContentStyle(editor);\n headHtml += '';\n if (contentStyle) {\n headHtml += '';\n }\n global$2.each(editor.contentCSS, function (url) {\n headHtml += '';\n });\n var bodyId = editor.settings.body_id || 'tinymce';\n if (bodyId.indexOf('=') !== -1) {\n bodyId = editor.getParam('body_id', '', 'hash');\n bodyId = bodyId[editor.id] || bodyId;\n }\n var bodyClass = editor.settings.body_class || '';\n if (bodyClass.indexOf('=') !== -1) {\n bodyClass = editor.getParam('body_class', '', 'hash');\n bodyClass = bodyClass[editor.id] || '';\n }\n var preventClicksOnLinksScript = ' ';\n var dirAttr = editor.settings.directionality ? ' dir=\"' + editor.settings.directionality + '\"' : '';\n previewHtml = '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + '';\n return previewHtml;\n };\n var injectIframeContent = function (editor, iframe, sandbox) {\n var previewHtml = getPreviewHtml(editor);\n if (!sandbox) {\n var doc = iframe.contentWindow.document;\n doc.open();\n doc.write(previewHtml);\n doc.close();\n } else {\n iframe.src = 'data:text/html;charset=utf-8,' + encodeURIComponent(previewHtml);\n }\n };\n var $_5s7etcjgjkmcwppz = {\n getPreviewHtml: getPreviewHtml,\n injectIframeContent: injectIframeContent\n };\n\n var open = function (editor) {\n var sandbox = !global$1.ie;\n var dialogHtml = '';\n var dialogWidth = $_6hy26xjfjkmcwppy.getPreviewDialogWidth(editor);\n var dialogHeight = $_6hy26xjfjkmcwppy.getPreviewDialogHeight(editor);\n editor.windowManager.open({\n title: 'Preview',\n width: dialogWidth,\n height: dialogHeight,\n html: dialogHtml,\n buttons: {\n text: 'Close',\n onclick: function (e) {\n e.control.parent().parent().close();\n }\n },\n onPostRender: function (e) {\n var iframeElm = e.control.getEl('body').firstChild;\n $_5s7etcjgjkmcwppz.injectIframeContent(editor, iframeElm, sandbox);\n }\n });\n };\n var $_4mmnpbjdjkmcwppw = { open: open };\n\n var register = function (editor) {\n editor.addCommand('mcePreview', function () {\n $_4mmnpbjdjkmcwppw.open(editor);\n });\n };\n var $_c197icjcjkmcwppv = { register: register };\n\n var register$1 = function (editor) {\n editor.addButton('preview', {\n title: 'Preview',\n cmd: 'mcePreview'\n });\n editor.addMenuItem('preview', {\n text: 'Preview',\n cmd: 'mcePreview',\n context: 'view'\n });\n };\n var $_eluyd4jijkmcwpq6 = { register: register$1 };\n\n global.add('preview', function (editor) {\n $_c197icjcjkmcwppv.register(editor);\n $_eluyd4jijkmcwpq6.register(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=f342a252\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"outer-authorized\"},[_c('div',{staticClass:\"middle\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"titles text-cna d-table text-center\",staticStyle:{\"border-radius\":\"5%\"}},[_c('h3',{staticClass:\"uppercase d-table-cell align-middle\",staticStyle:{\"font-size\":\"18px\"}},[_c('b',[_vm._v(\"Acesso realizado com sucesso.\")]),_c('br'),_c('button',{staticClass:\"btn btn-outline-danger mt-4\",on:{\"click\":function($event){return _vm.acessarShopping()}}},[_vm._v(\"Acessar o Shopping CNA\")]),_c('button',{staticClass:\"btn btn-outline-danger mt-4\",on:{\"click\":function($event){return _vm.acessarCNANet()}}},[_vm._v(\"Acessar o CNA Net\")])])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=e9d84fc0\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"outer-authorized\"},[_c('div',{staticClass:\"middle\"},[(_vm.error)?_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"titles text-cna d-table text-center\",staticStyle:{\"border-radius\":\"5%\"}},[_c('h3',{staticClass:\"uppercase d-table-cell align-middle\",staticStyle:{\"color\":\"red\",\"font-size\":\"18px\"}},[_vm._m(0),_c('br'),_c('button',{staticClass:\"btn btn-outline-danger mt-4\",on:{\"click\":function($event){return _vm.logout()}}},[_vm._v(\"Sair\")])])]),_vm._m(1)]):_c('div',{staticClass:\"inner\"},[_vm._m(2),_vm._m(3)])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('b',[_vm._v(\"Opsss, nos desculpe!\"),_c('br'),_vm._v(\"Entre em contato com sua escola.\")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"icon-bottom text-center\"},[_c('i',{staticClass:\"fa fa-6x fa-times\",staticStyle:{\"font-size\":\"90px\",\"color\":\"red\"}})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"titles text-cna d-table text-center\"},[_c('h3',{staticClass:\"uppercase d-table-cell align-middle\"},[_c('b',[_vm._v(\"Aguarde,\"),_c('br'),_vm._v(\"estamos concluindo seu acesso.\")]),_c('br')])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"icon-bottom\"},[_c('i',{staticClass:\"fa fa-6x fa-check-circle icon-animated\",staticStyle:{\"font-size\":\"90px\",\"color\":\"green\"}})])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=a019a42c\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"outer-authorized\"},[_c('div',{staticClass:\"middle\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"titles text-primary d-table text-center p-2\"},[_c('h3',{staticClass:\"d-table-cell align-middle\"},[_c('span',{staticClass:\"text-uppercase\",staticStyle:{\"color\":\"red\"}},[_c('strong',[_vm._v(\"Acesso negado\")])]),_c('br'),_c('span',{staticClass:\"small\"},[_vm._v(\"Você não tem permissão para acessar esta tela! Favor entrar em contato com o Administrador do Sistema.\")])])]),_c('div',{staticClass:\"icon-bottom\"},[_c('i',{staticClass:\"fa fa-6x fa-exclamation-circle icon-animated\",staticStyle:{\"font-size\":\"90px\",\"color\":\"#cc2213\"}})]),_c('div',{staticClass:\"col-12\",staticStyle:{\"text-align\":\"center\"}},[_c('div',{staticClass:\"form-group cna-login__group\"},[_c('a',{staticClass:\"btn btn-sm btn-default btn-default-app p-2 text-white\",attrs:{\"href\":\"/home\"}},[_vm._v(\"Ir para home\")])])])])])])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=65120631\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"back-perfil\"},[_c('div',{staticClass:\"container pb-5 px-2\"},[_c('div',{staticClass:\"criar-conta mt-5\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-5 mt-md-3 rounded p-2 shadow\"},[_c('div',{staticClass:\"font-cna my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body pr-md-4\"},[_c('h4',{staticClass:\"mt-0 text-primary text-center\"},[_vm._v(_vm._s(_vm.model.nome))]),_c('hr',{staticClass:\"mb-0\"}),_c('form',{ref:\"pessoa-cna-form-edit\",staticClass:\"form-group mt-3\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.executeEdit(_vm.model)}}},[_c('div',[_c('b-tabs',[_c('b-tab',{attrs:{\"title\":\"Meus Dados\",\"active\":\"\"}},[_c('div',{staticClass:\"mt-3\"},[_c('div',{staticClass:\"editando-perfil w-100\"},[_c('div',{staticClass:\"ml-md-3\"},[_c('h6',[_vm._v(\"DADOS PESSOAIS\")])]),_c('div',{staticClass:\"row pl-md-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.nome))])]):_vm._e()]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"email\"}},[_vm._v(\"E-mail\")]),_c('p',[_vm._v(_vm._s(_vm.model.email))])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"emailAlternativo\"}},[_vm._v(\"E-mail alternativo\")]),_c('p',[_vm._v(_vm._s(_vm.model.emailAlternativo))])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cpF_CNPJ\"}},[_vm._v(\"CPF ou CNPJ\")]),_c('p',[_vm._v(_vm._s(_vm.model.cpF_CNPJFormatado))])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"rG_IE\"}},[_vm._v(\"RG\")]),_c('the-mask',{staticClass:\"form-control\",attrs:{\"name\":\"rG_IE\",\"mask\":'##.###.###-X'},model:{value:(_vm.model.rG_IE),callback:function ($$v) {_vm.$set(_vm.model, \"rG_IE\", $$v)},expression:\"model.rG_IE\"}})],1),_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('span',{staticClass:\"text-primary text-sm-left font-italic\"},[_vm._v(\"\\n *O e-mail e CPF são utilizados para realizar\\n o acesso ao Shopping CNA. Para alterar o seu\\n e-mail vá até a aba DADOS DE ACESSO\\n \")])]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"apelido\"}},[_vm._v(\"Apelido\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.apelido),expression:\"model.apelido\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"apelido\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.apelido)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"apelido\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"celular\"}},[_vm._v(\"Celular\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##) #####-####'),expression:\"'(##) #####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.celular),expression:\"model.celular\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"15\",\"name\":\"celular\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.celular)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"celular\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"comercial\"}},[_vm._v(\"Telefone Comercial\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)####-####'),expression:\"'(##)####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefoneComercial),expression:\"model.telefoneComercial\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"14\",\"name\":\"comercial\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.telefoneComercial)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"telefoneComercial\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"telefone\"}},[_vm._v(\"Telefone\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##) ####-####'),expression:\"'(##) ####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefone),expression:\"model.telefone\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"telefone\",\"maxlength\":\"14\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.telefone)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"telefone\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-4\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"dtNascimento\"}},[_vm._v(\"Data Nascimento\")]),_c('input',{directives:[{name:\"datepicker\",rawName:\"v-datepicker\"},{name:\"mask\",rawName:\"v-mask\",value:('##/##/####'),expression:\"'##/##/####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.dataNascimento),expression:\"model.dataNascimento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"10\",\"name\":\"dataNascimento\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.dataNascimento)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"dataNascimento\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-8\"},[_c('label',[_vm._v(\"Sexo\")]),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"btn-group btn-group-toggle genero w-100\"},[_c('label',{staticClass:\"btn bg-light radius-left px-2 text-primary\",class:{ active: _vm.model.sexo == 1 }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.sexo),expression:\"model.sexo\"}],attrs:{\"type\":\"radio\",\"id\":\"sexo-1\",\"name\":\"sexo\",\"value\":\"1\"},domProps:{\"checked\":_vm._q(_vm.model.sexo,\"1\")},on:{\"change\":function($event){return _vm.$set(_vm.model, \"sexo\", \"1\")}}}),_c('i',{staticClass:\"fas fa-male\"}),_vm._v(\" Masculino\\n \")]),_c('label',{staticClass:\"btn bg-light px-2 text-primary\",class:{ active: _vm.model.sexo == 2 }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.sexo),expression:\"model.sexo\"}],attrs:{\"type\":\"radio\",\"id\":\"sexo-0\",\"name\":\"sexo\",\"value\":\"2\"},domProps:{\"checked\":_vm._q(_vm.model.sexo,\"2\")},on:{\"change\":function($event){return _vm.$set(_vm.model, \"sexo\", \"2\")}}}),_c('i',{staticClass:\"fas fa-female\"}),_vm._v(\" Feminino\\n \")]),_c('label',{staticClass:\"btn bg-light radius-right px-2 text-primary\",class:{\n active: _vm.model.sexo == null,\n }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.sexo),expression:\"model.sexo\"}],attrs:{\"type\":\"radio\",\"id\":\"sexo-null\",\"name\":\"sexo\",\"value\":\"null\"},domProps:{\"checked\":_vm._q(_vm.model.sexo,\"null\")},on:{\"change\":function($event){return _vm.$set(_vm.model, \"sexo\", \"null\")}}}),_vm._v(\"\\n Não informar\\n \")])])])])])])]),_c('div',{},[_c('div',{staticClass:\"editando-perfil w-100 mt-md-3\"},[_c('div',{staticClass:\"ml-md-3\"},[_c('h6',[_vm._v(\"ENDEREÇO\")])]),_c('div',{staticClass:\"row pl-md-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cep\"}},[_vm._v(\"CEP\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('#####-###'),expression:\"'#####-###'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.cep),expression:\"model.cep\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cep\",\"autocomplete\":\"off\",\"maxlength\":\"9\",\"minlength\":\"9\",\"required\":\"\"},domProps:{\"value\":(_vm.model.cep)},on:{\"change\":function($event){return _vm.buscarCep()},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"cep\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.cep))])]):_vm._e()]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"rua\"}},[_vm._v(\"Rua\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.rua),expression:\"model.rua\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"rua\",\"autocomplete\":\"off\",\"maxlength\":\"255\",\"minlength\":\"2\",\"required\":\"\",\"onpaste\":\"return false\"},domProps:{\"value\":(_vm.model.rua)},on:{\"keypress\":function($event){return _vm.textoPadrao($event)},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"rua\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.rua))])]):_vm._e()]),_c('div',{staticClass:\"form-group form-group-custom col-md-3\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"numero\"}},[_vm._v(\"Número\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.numero),expression:\"model.numero\"}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"name\":\"numero\",\"autocomplete\":\"off\",\"maxlength\":\"15\",\"minlength\":\"1\",\"required\":\"\"},domProps:{\"value\":(_vm.model.numero)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"numero\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.numero))])]):_vm._e()]),_c('div',{staticClass:\"form-group form-group-custom col-md-3\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"complemento\"}},[_vm._v(\"Complemento\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.complemento),expression:\"model.complemento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"complemento\",\"autocomplete\":\"off\",\"maxlength\":\"50\",\"onpaste\":\"return false\"},domProps:{\"value\":(_vm.model.complemento)},on:{\"keypress\":function($event){return _vm.textoPadrao($event)},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"complemento\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.complemento))])]):_vm._e()]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"bairro\"}},[_vm._v(\"Bairro\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.bairro),expression:\"model.bairro\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"bairro\",\"autocomplete\":\"off\",\"maxlength\":\"50\",\"minlength\":\"2\",\"required\":\"\",\"onpaste\":\"return false\"},domProps:{\"value\":(_vm.model.bairro)},on:{\"keypress\":function($event){return _vm.textoPadrao($event)},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"bairro\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.bairro))])]):_vm._e()]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cidade\"}},[_vm._v(\"Cidade\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cidade),expression:\"model.cidade\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cidade\",\"autocomplete\":\"off\",\"maxlength\":\"50\",\"minlength\":\"2\",\"required\":\"\",\"onpaste\":\"return false\"},domProps:{\"value\":(_vm.model.cidade)},on:{\"keypress\":function($event){return _vm.textoPadrao($event)},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"cidade\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.cidade))])]):_vm._e()]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"uf\"}},[_vm._v(\"UF\")]),(!_vm.bloquearEscolaCNAStore)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.uf),expression:\"model.uf\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"uf\",\"autocomplete\":\"off\",\"maxlength\":\"2\",\"onpaste\":\"return false\"},domProps:{\"value\":(_vm.model.uf)},on:{\"keypress\":function($event){return _vm.textoPadrao($event)},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"uf\", $event.target.value)}}})]):_vm._e(),(_vm.bloquearEscolaCNAStore)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.uf))])]):_vm._e()]),_c('div',{staticClass:\"w-100 pr-3\"},[_c('button',{staticClass:\"btn btn-danger btn-round mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.dialogAlteraSenha = true}}},[_vm._v(\"\\n Alterar Senha\\n \")]),_c('button',{staticClass:\"btn btn-primary btn-round float-right mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.executeEdit(_vm.model)}}},[_vm._v(\"\\n Confirmar\\n \")])])])])])]),_c('b-tab',{attrs:{\"title\":\"Dados de Acesso\"}},[_c('div',{staticClass:\"row pl-md-3 mt-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\",\"disabled\":\"\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"userName\"}},[_vm._v(\"Username\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.userName),expression:\"model.userName\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"userName\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.userName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"userName\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"cpF_CNPJ\"}},[_vm._v(\"CPF ou CNPJ\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cpF_CNPJFormatado),expression:\"model.cpF_CNPJFormatado\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cpF_CNPJ\",\"autocomplete\":\"off\",\"disabled\":\"\"},domProps:{\"value\":(_vm.model.cpF_CNPJFormatado)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"cpF_CNPJFormatado\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"email\"}},[_vm._v(\"E-mail\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.email),expression:\"model.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"email\",\"name\":\"email\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.email)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"email\", $event.target.value)}}})])]),_c('div',{staticClass:\"w-100 pr-3\"},[_c('button',{staticClass:\"btn btn-danger btn-round mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.dialogAlteraSenha = true}}},[_vm._v(\"\\n Alterar Senha\\n \")]),_c('button',{staticClass:\"btn btn-primary btn-round float-right mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.executeEdit(_vm.model)}}},[_vm._v(\"\\n Confirmar\\n \")])])])],1)],1)])])])])])])]),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"size\":\"lg\",\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":\"Alterar Senha\"},model:{value:(_vm.dialogAlteraSenha),callback:function ($$v) {_vm.dialogAlteraSenha=$$v},expression:\"dialogAlteraSenha\"}},[(_vm.dialogAlteraSenha)?_c('nova-senha',{attrs:{\"id\":_vm.id},on:{\"on-saved\":function($event){return _vm.hideAll()},\"on-back\":function($event){return _vm.hideAll()}}}):_vm._e()],1),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"size\":\"lg\",\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":\"Confirmar Senha\"},model:{value:(_vm.dialogConfirmarSenha),callback:function ($$v) {_vm.dialogConfirmarSenha=$$v},expression:\"dialogConfirmarSenha\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"confirmacao\"}},[_vm._v(\"\\n Para realizar a alteração de e-mail ou username, é necessário a\\n confirmação da senha\\n \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmarSenha),expression:\"model.confirmarSenha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"confirmarSenha\",\"placeholder\":\"Informe a Confirmação de Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.confirmarSenha)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"confirmarSenha\", $event.target.value)}}})])]),_c('div',{staticClass:\"row col-md-12 mt-3\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-danger border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.hideAll()}}},[_vm._v(\"\\n Voltar\\n \")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarSenha(_vm.model)}}},[_vm._v(\"\\n Continuar\\n \")])])])])])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(\"Meus Dados\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"dados-conta bg-white mt-3\"},[_c('form',{ref:\"form-nova-senha\",staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group form-group-custom\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"senhaAtual\"}},[_vm._v(\"Senha Atual\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senhaAtual),expression:\"model.senhaAtual\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senhaAtual\",\"placeholder\":\"Informe a Senha Atual\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senhaAtual)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"senhaAtual\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senha),expression:\"model.senha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senha\",\"placeholder\":\"Informe a Nova Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senha)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"senha\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"confirmacao\"}},[_vm._v(\"Confirmar Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmacao),expression:\"model.confirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"confirmacao\",\"placeholder\":\"Informe a Confirmação da Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.confirmacao)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"confirmacao\", $event.target.value)}}})])]),_vm._m(0),_vm._m(1),_c('div',{staticClass:\"row col-md-12 mt-3\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-danger border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.onBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.alteraSenha()}}},[_vm._v(\"Continuar\")])])])])])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-md-6 mt-4\"},[_c('div',{staticClass:\"alert alert-secondary text-center\"},[_c('strong',[_vm._v(\"Dica de segurança\")]),_c('br'),_c('span',{staticClass:\"small\"},[_vm._v(\"Crie uma senha com no mínimo 6 caracteres. \")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"mb-3 mt-2\"},[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\"\\n Ao confirmar a alteração da senha, a mesma será refletida para todos os sistemas do CNA, como: CNA Net, Shopping CNA e Meu CNA.\\n \")]),_c('div',{staticClass:\"logos-ajuste-senha\"},[_c('img',{attrs:{\"src\":require(\"../../assets/images/CNANET.svg\"),\"height\":\"59\"}}),_c('img',{staticClass:\"mx-4\",attrs:{\"src\":require(\"../../assets/images/logo_shoppingcolor.png\"),\"height\":\"80\"}}),_c('img',{attrs:{\"src\":require(\"../../assets/images/logo_meu_CNA.png\"),\"height\":\"59\"}})])])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./novasenha.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./novasenha.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./novasenha.vue?vue&type=template&id=55acef2b\"\nimport script from \"./novasenha.vue?vue&type=script&lang=js\"\nexport * from \"./novasenha.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=08bc775c\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=08bc775c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"back-perfil\"},[_c('div',{staticClass:\"container pb-5 px-2\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-5 mt-md-3 rounded p-2 shadow\"},[_c('div',{staticClass:\"font-cna my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body pr-md-4\"},[_c('form',{ref:\"confirmar-cadastro\",staticClass:\"form-group mt-3\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.executeEdit(_vm.model)}}},[_c('div',{staticClass:\"mt-3\"},[_c('div',{staticClass:\"editando-perfil w-100\"},[_c('div',{staticClass:\"row pl-md-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Usuário\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.usuario),expression:\"model.usuario\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.usuario)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"usuario\", $event.target.value)}}})])]),_c('div',{staticClass:\"row pl-md-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senha),expression:\"model.senha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"nome\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senha)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"senha\", $event.target.value)}}})])]),(_vm.model.senha)?_c('div',{staticClass:\"row pl-md-3\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Confirmar Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmarsenha),expression:\"model.confirmarsenha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"nome\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.confirmarsenha)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"confirmarsenha\", $event.target.value)}}})])]):_vm._e(),_vm._m(1)])]),_c('div',{staticClass:\"w-100 pr-3\"},[_c('button',{staticClass:\"btn btn-primary btn-round float-right mt-3 ml-3\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.executeEdit(_vm.model)}}},[_vm._v(\"\\n Confirmar\\n \")])])])])])])])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(\"Confirmar Cadastro\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-md-6 mt-4\"},[_c('div',{staticClass:\"alert alert-secondary text-center\"},[_c('strong',[_vm._v(\"Dica de segurança\")]),_c('br'),_c('span',{staticClass:\"small\"},[_vm._v(\"Crie uma senha com no mínimo 6 caracteres.\")])])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=e24bcef4\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"back-perfil height-senha\"},[_c('div',{staticClass:\"container pb-5 px-2\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-5 mt-md-3 rounded p-2 shadow\"},[_c('div',{staticClass:\"wizard my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media-body pr-md-4\"},[(!_vm.senhaAlterada)?_c('div',[_c('div',{staticClass:\"dados-conta bg-white mt-3\"},[_c('form',{ref:\"form-redefinir-senha\",staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group form-group-custom\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"senhaAtual\"}},[_vm._v(\"Senha Atual\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senhaAtual),expression:\"model.senhaAtual\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senhaAtual\",\"placeholder\":\"Informe a Senha Atual\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senhaAtual)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"senhaAtual\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senha),expression:\"model.senha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"senha\",\"placeholder\":\"Informe a Nova Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senha)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"senha\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"confirmacao\"}},[_vm._v(\"Confirmar Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmacao),expression:\"model.confirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"confirmacao\",\"placeholder\":\"Informe a Confirmação da Senha\",\"required\":\"\"},domProps:{\"value\":(_vm.model.confirmacao)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"confirmacao\", $event.target.value)}}})])]),_vm._m(1),_c('div',{staticClass:\"row col-md-12 mt-3\"},[_c('div',{staticClass:\"col-6\"}),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.alteraSenha()}}},[_vm._v(\"Continuar\")])])])])])])]):_vm._e(),(_vm.senhaAlterada)?_c('div',[_vm._m(2)]):_vm._e()])])])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(\"Redefinir Senha\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-md-6 mt-4\"},[_c('div',{staticClass:\"alert alert-secondary text-center\"},[_c('strong',[_vm._v(\"Dica de segurança\")]),_c('br'),_c('span',{staticClass:\"small\"},[_vm._v(\"Crie uma senha com no mínimo 6 caracteres. \")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(\"Sua senha foi alterado com sucesso!.\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n|\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3c32351d\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3c32351d&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('loading'),_c('header-cna'),_c('div',{staticClass:\"container pb-5\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded py-5 px-3 p-md-5 shadow\"},[_c('div',{staticClass:\"steps\"},[_c('form',{staticClass:\"form cf\"},[_c('div',{staticClass:\"wizard my-0 mx-auto\"},[_c('div',{staticClass:\"wizard-inner\"},[_c('div',{staticClass:\"connecting-line\"}),_c('div',{staticClass:\"connecting-line-status\",style:({ width: _vm.step.status })}),_c('ul',{staticClass:\"nav nav-tabs\"},[_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 1 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(1)])]),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 2 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(2)])]),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 3 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(3)])]),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: _vm.step.id == 4 },attrs:{\"title\":\"step\"},on:{\"click\":function($event){return $event.preventDefault()}}},[_c('span',{staticClass:\"round-tab\"}),_vm._m(4)])])])]),_c('div',{staticClass:\"tab-content\"},[(_vm.step.id == 1)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-identificacao',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepIdentificacaoFinished($event)},\"on-back\":function($event){return _vm.goStep('voltar')}}})],1):_vm._e(),(_vm.step.id == 2)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-dados-pessoais',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepDadosPessoaisFinished($event)},\"on-back\":function($event){return _vm.goStep('identificacao')}}})],1):_vm._e(),(_vm.step.id == 3)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-acesso',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepAcessoFinished($event)},\"on-back\":function($event){return _vm.goStep('dados-pessoais')}}})],1):_vm._e(),(_vm.step.id == 4)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-senha',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepSenhaFinished($event)},\"on-back\":function($event){return _vm.goStep('acesso')}}})],1):_vm._e(),(_vm.step.id == 5)?_c('div',{staticClass:\"tab-pane active\"},[_c('cadastro-finalizar',{attrs:{\"model\":_vm.model},on:{\"on-next\":function($event){return _vm.stepFinalizarFinished($event)}}})],1):_vm._e()])])])])])])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center\"},[_c('strong',[_vm._v(\"Criar Conta\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Identificação\")]),_c('br'),_vm._v(\"\\n Qual conta você deseja ativar?\\n \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Dados Pessoais\")]),_c('br'),_vm._v(\"\\n Queremos saber quem é você :)\\n \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Acesso\")]),_c('br'),_vm._v(\"\\n Vamos configurar sua forma de acessar\\n \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"step-text\"},[_c('strong',[_vm._v(\"Senha\")]),_c('br'),_vm._v(\"\\n Porque segurança é importante pra gente!\\n \")])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isloading),expression:\"isloading\"}],staticClass:\"loader\"},[_c('img',{attrs:{\"src\":require(\"../../assets/logo.png\"),\"alt\":\"Carregando...\"}}),_vm._m(0)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spinner\"},[_c('div',{staticClass:\"dot1\"}),_c('div',{staticClass:\"dot2\"})])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./loading.vue?vue&type=template&id=1b4db5f2\"\nimport script from \"./loading.vue?vue&type=script&lang=js\"\nexport * from \"./loading.vue?vue&type=script&lang=js\"\nimport style0 from \"./loading.vue?vue&type=style&index=0&id=1b4db5f2&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',[_c('nav',{staticClass:\"bg-white text-center d-flex justify-content-center\"},[_c('a',{staticClass:\"acessar-net-shopping btn btn-shopping rounded-pill\",on:{\"click\":function($event){return _vm.acessarShopping()}}},[_c('img',{staticClass:\"mr-1\",attrs:{\"src\":require(\"../assets/images/logo_shoppingcna.png\"),\"height\":\"25\"}}),_vm._v(\" Shopping CNA \")]),_vm._m(0),_c('a',{staticClass:\"acessar-net-shopping btn btn-cnanet rounded-pill\",on:{\"click\":function($event){return _vm.acessarCNANet()}}},[_vm._v(\"CNA Net \"),_c('img',{staticClass:\"ml-1\",attrs:{\"src\":require(\"../assets/images/cna-logo-white.svg\"),\"height\":\"20\"}})])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"navbar-brand p-0 my-0 mx-auto mx-md-0 logo-topo\",attrs:{\"href\":\"javascript:;\"}},[_c('img',{staticClass:\"mb-4\",attrs:{\"src\":require(\"../assets/images/logo_cna_circulo.png\"),\"alt\":\"CNA\",\"Title\":\"CNA\",\"width\":\"180\"}})])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=148bd8b2\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.vue?vue&type=script&lang=js\"\nimport style0 from \"./header.vue?vue&type=style&index=0&id=148bd8b2&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"row\"},[_vm._m(0),_vm._l((_vm.items),function(item){return _c('div',{key:item.metodoAcessoId,staticClass:\"px-0 col-md-6 pb-3\"},[(item.unico)?_c('div',[_c('strong',[(item.metodoAcessoId == 1)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"CPF/CNPJ:\")]):_vm._e(),(item.metodoAcessoId == 2)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"E-mail:\")]):_vm._e(),(item.metodoAcessoId == 3)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"Celular:\")]):_vm._e(),(item.metodoAcessoId == 4)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"Username:\")]):_vm._e()]),_c('br'),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(item.loginExibicao))])]):_c('div',[_c('strong',{staticClass:\"text-danger\"},[(item.metodoAcessoId == 1)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"CPF/CNPJ:\")]):_vm._e(),(item.metodoAcessoId == 2)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"E-mail:\")]):_vm._e(),(item.metodoAcessoId == 3)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"Celular:\")]):_vm._e(),(item.metodoAcessoId == 4)?_c('span',{staticClass:\"text-azul-escuro\"},[_vm._v(\"UserName:\")]):_vm._e(),_c('br'),_c('span',[_vm._v(_vm._s(item.loginExibicao))]),_c('br'),_c('small',[_vm._v(\"Já existe um acesso configurado para este login.\")])])])])})],2),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarMetodoAcesso()}}},[_vm._v(\"Continuar\")])])]),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":\"Confirmação\"},model:{value:(_vm.dialogCodigoAcesso),callback:function ($$v) {_vm.dialogCodigoAcesso=$$v},expression:\"dialogCodigoAcesso\"}},[(_vm.metodoAcesso)?_c('div',[_c('h4',{staticClass:\"text-center text-azul-escuro\"},[_vm._v(\"Está faltando pouco para ativar sua conta!\")]),_c('div',{staticClass:\"row mt-4\"},[_c('div',{staticClass:\"col-md-12\"},[_c('span',{staticClass:\"text-center mt-3 text-azul-escuro\"},[_vm._v(\"\\n Para prosseguir, enviamos um código para \"),_c('strong',[_vm._v(_vm._s(_vm.metodoAcesso.login))]),_vm._v(\".\\n Insira a informação abaixo.\\n \")])]),_c('div',{staticClass:\"form-group col-md-12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.metodoAcesso.codigoValidacao),expression:\"metodoAcesso.codigoValidacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"codigoValidacao\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.metodoAcesso.codigoValidacao)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.metodoAcesso, \"codigoValidacao\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-4\"},[_c('div',{staticClass:\"col-md-6\"},[_c('button',{staticClass:\"btn btn-info btn-block rounded-pill\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarMetodoAcesso(true)}}},[_vm._v(\"Reenviar\")])]),_c('div',{staticClass:\"col-md-6\"},[_c('button',{staticClass:\"btn btn-secondary btn-block rounded-pill\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarCodigoAcesso()}}},[_vm._v(\"Confirmar\")])])])]):_vm._e()])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('p',{staticClass:\"text-center w-100\"},[_c('span',{staticClass:\"mt-3 text-azul-escuro\"},[_vm._v(\"\\n Essas são as formas possíveis para você se \"),_c('strong',[_vm._v(\"autenticar\")]),_vm._v(\".\\n\\n \")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./acesso.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./acesso.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./acesso.vue?vue&type=template&id=e5b54c0c\"\nimport script from \"./acesso.vue?vue&type=script&lang=js\"\nexport * from \"./acesso.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('form',{ref:\"form-dados-pessoais\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.confirmarDados()}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group col-md-8\"},[_c('label',{attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"apelido\"}},[_vm._v(\"Apelido\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.apelido),expression:\"model.apelido\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"apelido\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.apelido)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"apelido\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"cpF_CNPJ\"}},[_vm._v(\"\\n CPF ou CNPJ\\n \"),_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fas fa-question-circle\",attrs:{\"title\":\"Não é possível alterar o CPF ou CNPJ. Caso esteja incorreto, por favor informe sua escola.\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cpF_CNPJFormatado),expression:\"model.cpF_CNPJFormatado\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cpF_CNPJ\",\"autocomplete\":\"off\",\"readonly\":\"\",\"required\":\"\"},domProps:{\"value\":(_vm.model.cpF_CNPJFormatado)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"cpF_CNPJFormatado\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"rG_IE\"}},[_vm._v(\"RG\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.rG_IE),expression:\"model.rG_IE\"},{name:\"mask\",rawName:\"v-mask\",value:(_vm.mask_rg),expression:\"mask_rg\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"rG_IE\",\"autocomplete\":\"off\",\"maxlength\":\"12\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.rG_IE)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"rG_IE\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"dataNascimento\"}},[_vm._v(\"Data Nascimento\")]),_c('input',{directives:[{name:\"datepicker\",rawName:\"v-datepicker\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.dataNascimento),expression:\"model.dataNascimento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"10\",\"name\":\"dataNascimento\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.dataNascimento)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"dataNascimento\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"\\n E-mail\\n \"),_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fas fa-question-circle\",attrs:{\"title\":\"Não é possível alterar o e-mail. Caso esteja incorreto, por favor informe sua escola.\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.email),expression:\"model.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"email\",\"name\":\"email\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.email)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"email\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"emailSecundario\"}},[_vm._v(\"E-mail alternativo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.emailAlternativo),expression:\"model.emailAlternativo\"}],staticClass:\"form-control\",attrs:{\"type\":\"email\",\"name\":\"emailSecundario\",\"autocomplete\":\"off\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.emailAlternativo)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"emailAlternativo\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"celular\"}},[_vm._v(\"Celular\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)#####-####'),expression:\"'(##)#####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.celular),expression:\"model.celular\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"14\",\"name\":\"celular\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.celular)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"celular\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"telefone\"}},[_vm._v(\"Telefone\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)####-####'),expression:\"'(##)####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefone),expression:\"model.telefone\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"telefone\",\"maxlength\":\"13\",\"autocomplete\":\"off\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.telefone)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"telefone\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"comercial\"}},[_vm._v(\"Telefone Comercial\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('(##)#####-####'),expression:\"'(##)#####-####'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefoneComercial),expression:\"model.telefoneComercial\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"maxlength\":\"14\",\"name\":\"comercial\",\"autocomplete\":\"off\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.telefoneComercial)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"telefoneComercial\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"cep\"}},[_vm._v(\"CEP\")]),_c('input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('#####-###'),expression:\"'#####-###'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.model.cep),expression:\"model.cep\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cep\",\"autocomplete\":\"off\",\"maxlength\":\"9\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.cep)},on:{\"change\":function($event){return _vm.buscarCep()},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"cep\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"rua\"}},[_vm._v(\"Endereço\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.rua),expression:\"model.rua\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"rua\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.rua)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"rua\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-2\"},[_c('label',{attrs:{\"for\":\"numero\"}},[_vm._v(\"Número\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.numero),expression:\"model.numero\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"numero\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.numero)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"numero\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-3\"},[_c('label',{attrs:{\"for\":\"complemento\"}},[_vm._v(\"Complemento\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.complemento),expression:\"model.complemento\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"complemento\",\"autocomplete\":\"off\",\"maxlength\":\"50\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.complemento)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"complemento\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-3\"},[_c('label',{attrs:{\"for\":\"bairro\"}},[_vm._v(\"Bairro\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.bairro),expression:\"model.bairro\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"bairro\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.bairro)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"bairro\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-4\"},[_c('label',{attrs:{\"for\":\"cidade\"}},[_vm._v(\"Cidade\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.cidade),expression:\"model.cidade\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"cidade\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.cidade)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"cidade\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group col-md-2\"},[_c('label',{attrs:{\"for\":\"uf\"}},[_vm._v(\"UF\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.uf),expression:\"model.uf\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"uf\",\"autocomplete\":\"off\",\"required\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.model.uf)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"uf\", $event.target.value)}}})])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.confirmarDados()}}},[_vm._v(\"Continuar\")])])])]),_c('div',{staticClass:\"alert alert-danger mt-4\"},[_vm._v(\"\\n Caso tenha encontrado alguma informação incorreta ou incompleta, por favor entre em contato com a sua escola CNA para ajuste.\\n \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dados-pessoais.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dados-pessoais.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dados-pessoais.vue?vue&type=template&id=587473d2\"\nimport script from \"./dados-pessoais.vue?vue&type=script&lang=js\"\nexport * from \"./dados-pessoais.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_vm._m(0),_vm._m(1),_c('div',{staticClass:\"col-md-12 text-center mt-3\"},[_c('button',{staticClass:\"btn btn-primary rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.redirecionar()}}},[_vm._v(\"Redirecionar\")])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center w-100 sucesso\"},[_c('strong',[_vm._v(\"Sucesso!\")]),_c('br')])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-md-12 text-center\"},[_c('span',{staticClass:\"mt-3 text-azul-escuro\"},[_vm._v(\"\\n Seu cadastro foi finalizado, estamos te redicionando para o seu acesso, aguarde...\\n \")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./finalizar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./finalizar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./finalizar.vue?vue&type=template&id=cebe23da\"\nimport script from \"./finalizar.vue?vue&type=script&lang=js\"\nexport * from \"./finalizar.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"row justify-content-md-center\"},[_c('div',{staticClass:\"col-md-5\"},[_c('div',{staticClass:\"form-group\"},[_vm._m(0),_c('span',[_vm._v(\" \")]),_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fa fa-question-circle\",attrs:{\"title\":\"Procure sua escola\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filter.codigoAcesso),expression:\"filter.codigoAcesso\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.filter.codigoAcesso)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.filter, \"codigoAcesso\", $event.target.value)}}})])])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.buscarPorCodigoAcesso()}}},[_vm._v(\"Continuar\")])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('label',[_c('strong',[_vm._v(\"Chave de Acesso\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./identificacao.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./identificacao.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./identificacao.vue?vue&type=template&id=2e958a71\"\nimport script from \"./identificacao.vue?vue&type=script&lang=js\"\nexport * from \"./identificacao.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"row\",style:({ opacity: _vm.criarSenhaManual ? 0.4 : 1 })},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Senha de acesso\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.senhaPreConfigurada),expression:\"senhaPreConfigurada\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"password\",\"readonly\":\"\"},domProps:{\"value\":(_vm.senhaPreConfigurada)},on:{\"input\":function($event){if($event.target.composing)return;_vm.senhaPreConfigurada=$event.target.value}}})])]),(!_vm.criarSenhaManual)?_c('div',{staticClass:\"col-md-6 mt-4\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.criarSenhaManual = true;}}},[_vm._v(\"Deseja trocar a senha?\")])]):_vm._e()]),(_vm.criarSenhaManual)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.senhaCriada),expression:\"senhaCriada\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"password\"},domProps:{\"value\":(_vm.senhaCriada)},on:{\"input\":function($event){if($event.target.composing)return;_vm.senhaCriada=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"passwordConfirmacao\"}},[_vm._v(\"Confirmar Nova Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.senhaCriadaConfirmacao),expression:\"senhaCriadaConfirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"passwordConfirmacao\"},domProps:{\"value\":(_vm.senhaCriadaConfirmacao)},on:{\"input\":function($event){if($event.target.composing)return;_vm.senhaCriadaConfirmacao=$event.target.value}}})])]),_c('div',{staticClass:\"col-md-6 mt-4\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill px-4 mb-2\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.criarSenhaManual = false;}}},[_vm._v(\"Usar senha gerada\")]),_vm._m(0)])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.finalizaCadastro()}}},[_vm._v(\"Finalizar\")])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"alert alert-secondary text-center\"},[_c('span',{staticClass:\"small\"},[_vm._v(\"Crie uma senha com no mínimo 6 caracteres. \")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./senha.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./senha.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./senha.vue?vue&type=template&id=32aa5896\"\nimport script from \"./senha.vue?vue&type=script&lang=js\"\nexport * from \"./senha.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7ffbd424\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"back-perfil\"},[_c('loading'),_c('div',{staticClass:\"container pb-5 px-2\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_c('h2',{staticClass:\"text-center text-white\"},[_c('strong',[_vm._v(_vm._s(_vm.cadastroRealizado == false ? 'Novo Cadastro' : 'Cadastro Realizado'))])]),(!_vm.cadastroRealizado)?_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded p-2 shadow\"},[_c('div',{staticClass:\"font-cna my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body\"},[_c('div',{staticClass:\"w-100 pb-1\"},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"primary\"}},[_c('span',{staticClass:\"text-primary text-sm-left\"},[_vm._v(\"\\n Se você já é aluno do CNA, verifique com sua escola se você já tem uma conta com um código de acesso\\n \")])])],1),_c('form',{ref:\"novo-cadastro\",staticClass:\"form-group\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.executeEdit(_vm.model)}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12 mt-3\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Nome Completo\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"nome\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"E-mail\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.email),expression:\"model.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.email)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"email\", $event.target.value)}}})])])]),_c('div',{staticClass:\"col-md-12\"},[_vm._m(1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group form-group-custom col-md-12\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Usuário\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.username),expression:\"model.username\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.username)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"username\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group form-group-custom\",class:[_vm.model.password ? 'col-md-6' : 'col-md-12']},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.password),expression:\"model.password\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"password\", $event.target.value)}}})]),(_vm.model.password)?_c('div',{staticClass:\"form-group form-group-custom col-md-6\"},[_c('label',{staticClass:\"bmd-label-floating\",attrs:{\"for\":\"nome\"}},[_vm._v(\"Confirmar Senha\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.passwordConfirmacao),expression:\"model.passwordConfirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"name\":\"nome\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.model.passwordConfirmacao)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"passwordConfirmacao\", $event.target.value)}}})]):_vm._e(),_c('div',{staticClass:\"w-100 col-md-12\"},[_c('button',{staticClass:\"btn btn-primary btn-round float-right mt-3 btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.executeEdit(_vm.model)}}},[_vm._v(\"\\n Salvar\\n \")])])])])])])])])])]):_vm._e(),(_vm.cadastroRealizado)?_c('div',{staticClass:\"dados-conta bg-white rounded p-2 shadow\",staticStyle:{\"margin-top\":\"17rem\"}},[_c('div',{staticClass:\"font-cna my-0 mx-auto m-md-3\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body pr-md-4 mt-3\"},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"success\"}},[_c('span',{staticClass:\"text-success text-sm-left\"},[_vm._v(\"\\n Sua conta foi criada com sucesso, feche o navegador e realize o acesso no aplicativo.\\n \")])])],1)])])]):_vm._e()])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('h6',[_vm._v(\"DADOS PESSOAIS\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('h6',[_vm._v(\"LOGIN\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=64b615b7\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('loading'),_c('header-cna'),_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=bd61576c\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('loading'),_c('header-cna'),_c('div',{staticClass:\"container pb-5\"},[_c('div',{staticClass:\"criar-conta mt-5\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded py-5 px-3 p-md-5 shadow\"},[_c('form',{staticClass:\"form cf\"},[(_vm.step == 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"Informe seu username ou CPF/CNPJ utilizado para acesso.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.login),expression:\"model.login\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Username ou CPF/CNPJ (somente números)\",\"name\":\"userName\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.login)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"login\", $event.target.value)}}}),_c('small',{staticClass:\"form-text text-muted\",attrs:{\"id\":\"emailHelp\"}},[_vm._v(\"Será enviado um e-mail com um link para recuperação da senha.\")])])]):_vm._e(),(_vm.step == 2 && _vm.result)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('div',{staticClass:\"row\"},[_c('strong',[_vm._v(\"Olá \"+_vm._s(_vm.result.nome)+\", \")]),_c('small',{staticClass:\"form-text text-muted\",attrs:{\"id\":\"nomeHelp\"}},[_vm._v(\"Clique em continuar para que seja enviado um link para alterar sua senha.\")])]),_c('div',{staticClass:\"row mt-3\"},[_c('span',[_vm._v(\"Será enviado um email para \"),_c('strong',[_vm._v(_vm._s(_vm.result.login))])])])])]):_vm._e(),(_vm.step == 3)?_c('div',{staticClass:\"row\"},[_vm._m(1)]):_vm._e(),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),(_vm.step != 3)?_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.mudaPasso(_vm.step)}}},[_vm._v(\"Continuar\")])]):_vm._e()])])])])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center\"},[_c('strong',[_vm._v(\"Recuperar Senha\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"alert alert-success col-12 mb-3\"},[_c('i',{staticClass:\"far fa-check-circle\"}),_c('strong',{staticClass:\"text-primary\"},[_vm._v(\" E-mail enviado com sucesso. \"),_c('br'),_vm._v(\"Por favor verifique sua caixa de entrada ou spam!\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7f9a2909\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('loading'),_c('header-cna'),_c('div',{staticClass:\"container pb-5\"},[_c('div',{staticClass:\"criar-conta mt-4\"},[_vm._m(0),_c('div',{staticClass:\"dados-conta bg-white mt-3 rounded py-5 px-3 p-md-5 shadow\"},[_c('form',{staticClass:\"form cf\"},[(_vm.step == 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._m(1),_c('div',{staticClass:\"mb-3\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Informe seu código de solicitação recebido no e-mail.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.codigo),expression:\"model.codigo\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Código de Solicitação\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.codigo)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"codigo\", $event.target.value)}}})])])]):_vm._e(),(_vm.step == 2 && _vm.result)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[_c('label',{attrs:{\"for\":\"senha\"}},[_vm._v(\"Informe sua nova Senha.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.senha),expression:\"model.senha\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"placeholder\":\"Digite a nova senha\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.senha)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"senha\", $event.target.value)}}})]),_c('div',{staticClass:\"col-12 mb-3\"},[_c('label',{attrs:{\"for\":\"senhaConfirma\"}},[_vm._v(\"Confirme sua Senha.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.confirmacao),expression:\"model.confirmacao\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"placeholder\":\"Digite novamente a senha\",\"autocomplete\":\"off\",\"required\":\"\"},domProps:{\"value\":(_vm.model.confirmacao)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"confirmacao\", $event.target.value)}}})])])])]):_vm._e(),(_vm.step == 3)?_c('div',{staticClass:\"row\"},[_vm._m(2)]):_vm._e(),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-6\"},[_c('button',{staticClass:\"btn btn-light border-primary rounded-pill previous-button px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.sendBack()}}},[_vm._v(\"Voltar\")])]),(_vm.step != 3)?_c('div',{staticClass:\"col-6 text-right\"},[_c('button',{staticClass:\"btn btn-primary bg-azul-escuro rounded-pill enviar-codigo px-4\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.mudaPasso(_vm.step)}}},[_vm._v(\"Continuar\")])]):_vm._e()])])])])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',{staticClass:\"text-center\"},[_c('strong',[_vm._v(\"Trocar Senha\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('strong',[_vm._v(\"Olá, \")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"alert alert-success col-12 mb-3\"},[_c('i',{staticClass:\"far fa-check-circle\"}),_c('strong',{staticClass:\"text-primary\"},[_vm._v(\" Sua senha foi alterada com sucesso. \"),_c('br'),_vm._v(\"Para acessar o sistema \"),_c('a',{attrs:{\"href\":\"/\"}},[_vm._v(\"clique aqui\")]),_vm._v(\" e informe seus dados!\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./trocarsenha.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./trocarsenha.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./trocarsenha.vue?vue&type=template&id=6d90c6f0\"\nimport script from \"./trocarsenha.vue?vue&type=script&lang=js\"\nexport * from \"./trocarsenha.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nconst routers = [\n];\n\nexport default routers","import Vue from 'vue'\nimport Router from 'vue-router'\n\nimport Auth from '@/common/auth'\n\nimport Home from '@/views/home'\nimport Authorized from '@/views/authorized'\nimport AcessoNegado from '@/views/acessonegado'\nimport Perfil from '@/views/perfil'\nimport ConfirmarCadastro from '@/views/confirmarcadastro'\nimport RedefinirSenha from '@/views/redefinirsenha'\nimport Cadastro from '@/views/cadastro'\nimport NovoCadastro from '@/views/novocadastro'\nimport Template from '@/template'\nimport EsqueciSenha from '@/views/esquecisenha'\nimport TrocarSenha from '@/views/esquecisenha/trocarsenha'\n\nimport routersgenerated from './generated'\n\nVue.use(Router)\n\nlet childrens = routersgenerated.concat([\n {\n path: 'home',\n name: 'Home',\n component: Home\n },\n {\n path: '/perfil/:id',\n name: 'perfil',\n component: Perfil,\n },\n {\n path: '/redefinirsenha/:id',\n name: 'redefinirsenha',\n component: RedefinirSenha,\n },\n {\n path: '/confirmarcadastro/:id/:usuario',\n name: 'confirmarcadastro',\n component: ConfirmarCadastro,\n },\n]);\n\nconst router = new Router({\n mode: 'history',\n routes: [\n {\n path: '/authorized',\n name: 'authorized',\n component: Authorized,\n },\n {\n path: '/acessonegado',\n name: 'acessonegado',\n component: AcessoNegado,\n },\n {\n path: '/cadastro',\n name: 'cadastro',\n component: Cadastro,\n },\n {\n path: '/novocadastro',\n name: 'novocadastro',\n component: NovoCadastro,\n },\n {\n path: '/esquecisenha',\n name: 'esquecisenha',\n component: EsqueciSenha,\n },\n {\n path: '/esquecisenha/trocarsenha',\n name: 'trocarsenha',\n component: TrocarSenha,\n },\n {\n path: '/',\n redirect: '/home',\n component: Template,\n meta: { requiresAuth: true },\n children: childrens\n },\n ]\n})\n\nrouter.beforeEach(async (to, from, next) => {\n if (to.matched.some(record => record.meta.requiresAuth)) {\n\n if (!Auth.logged()) {\n Auth.login(true);\n return;\n }\n\n if (!Auth.canAccess(to.path)) {\n next('/acessonegado')\n return;\n }\n }\n next();\n});\n\n\nexport default router;\n","import Vue from 'vue'\n\nimport { Api } from '@/common/api'\nimport Cache from '@/common/cache'\n\nfunction _addOption(el, text, value) {\n var option = document.createElement(\"option\");\n option.text = text;\n option.value = value;\n el.add(option);\n}\n\nfunction _addItems(el, items) {\n for (var i = 0; i < items.length; i++) {\n _addOption(el, items[i].name, items[i].id);\n }\n}\n\nVue.directive('select', {\n twoWay: true,\n bind: function (el, binding) {\n\n if (binding.value.default)\n _addOption(el, binding.value.default, \"\");\n\n var resource = binding.value.dataitem + \"/dataitems\";\n\n var filters = {};\n if (binding.value.filters)\n filters = binding.value.filters;\n\n var cachekey = \"combobox_\" + binding.value.dataitem + \"_\" + JSON.stringify(filters);\n\n var fromcache = Cache.get(cachekey);\n if (fromcache && !binding.value.notcache) {\n var items = JSON.parse(fromcache);\n _addItems(el, items);\n return;\n }\n\n var api = new Api(resource);\n api.dataItem(filters).then(data => {\n if (data.dataList) {\n Cache.add(cachekey, JSON.stringify(data.dataList));\n _addItems(el, data.dataList);\n }\n });\n }\n})","import Vue from 'vue'\nimport Auth from '../auth'\n\nVue.directive('canaccess', {\n twoWay: true,\n bind: function (el, binding, vnode, old) {\n var can = Auth.canAccess(binding.value);\n if (!can)\n el.style.display = 'none'\n }\n})","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router/index.js'\n\nimport './common/directives/select'\nimport './common/directives/datepicker'\nimport './common/directives/canaccess'\nimport './common/directives/htmleditor'\n\nimport BootstrapVue from 'bootstrap-vue'\nVue.use(BootstrapVue)\n\nimport VueTheMask from 'vue-the-mask'\nVue.use(VueTheMask)\n\nimport VueMask from 'di-vue-mask'\nVue.use(VueMask)\n\nimport money from 'v-money'\nVue.use(money)\n\nimport tinymce from 'vue-tinymce-editor'\nVue.component('tinymce', tinymce)\n\nimport vSelect from 'vue-select'\nVue.component('v-select', vSelect)\n\nimport VueSweetalert2 from 'vue-sweetalert2';\nVue.use(VueSweetalert2);\n\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\nimport './assets/css/style.css'\n\nVue.config.productionTip = false\n\nVue.prototype.$eventHub = new Vue();\n\nnew Vue({\n router,\n render: h => h(App),\n mounted() {\n this.$eventHub.$on('show-notification', (data) => {\n\n let _config = {\n position: 'top',\n toast: IsMobile(),\n type: data.type,\n title: data.title,\n text: data.text,\n timer: 5000,\n showConfirmButton: false,\n }\n\n if (data.type == \"error\") {\n _config.timer = null;\n _config.showCancelButton = true;\n _config.cancelButtonText = \"Fechar\";\n }\n\n if (data.html) {\n _config.html = data.text;\n _config.text = \"\";\n }\n\n if (data.modal) {\n _config.position = 'center';\n _config.toast = false;\n _config.timer = null;\n if (data.type != \"error\")\n _config.showConfirmButton = true;\n }\n\n function IsMobile() {\n if (navigator.userAgent.match(/Android/i)\n || navigator.userAgent.match(/webOS/i)\n || navigator.userAgent.match(/iPhone/i)\n || navigator.userAgent.match(/iPad/i)\n || navigator.userAgent.match(/iPod/i)\n || navigator.userAgent.match(/BlackBerry/i)\n || navigator.userAgent.match(/Windows Phone/i)\n ) {\n return false;\n }\n else {\n return true;\n }\n }\n\n this.$swal(_config);\n })\n },\n beforeDestroy() {\n this.$eventHub.$off('show-notification');\n },\n}).$mount('#app')\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('nav',{class:[_vm.navClass]},[_c('ul',{staticClass:\"pagination justify-content-center\",class:[_vm.ulClass]},[(_vm.showPrevious())?_c('li',{staticClass:\"page-item\",class:[_vm.liClass, { 'disabled' : _vm.internalCurrentPage <= 1 }]},[(_vm.internalCurrentPage <= 1)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.previousText))])]):_vm._e(),(_vm.internalCurrentPage > 1 )?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":_vm.config.ariaPrevious},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(_vm.internalCurrentPage - 1)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.previousText))])]):_vm._e()]):_vm._e(),_vm._l((_vm.array),function(num){return _c('li',{key:num,staticClass:\"page-item\",class:[_vm.liClass, { 'active': num === _vm.internalCurrentPage }]},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(num)}}},[_vm._v(_vm._s(num))])])}),(_vm.showNext())?_c('li',{staticClass:\"page-item\",class:[_vm.liClass, { 'disabled' : _vm.internalCurrentPage === _vm.lastPage || _vm.lastPage === 0 }]},[(_vm.internalCurrentPage === _vm.lastPage || _vm.lastPage === 0)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.nextText))])]):_vm._e(),(_vm.internalCurrentPage < _vm.lastPage)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":_vm.config.ariaNext},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(_vm.internalCurrentPage + 1)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.nextText))])]):_vm._e()]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagination.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pagination.vue?vue&type=template&id=89fb1ad0\"\nimport script from \"./pagination.vue?vue&type=script&lang=js\"\nexport * from \"./pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import pagination from '@/common/components/pagination'\n\nexport default {\ncomponents: { pagination },\n data: () => ({\n mask_data: '##/##/####',\n mask_cpf: '###.###.###-##',\n mask_rg: '##.###.###-#',\n mask_tel: '####-####',\n mask_cel: '#####-####',\n mask_cep: '#####-###',\n mask_ddd: '##',\n mask_textoPadrao: 'a-z,A-Z,0-9',\n money: {\n decimal: ',',\n thousands: '.',\n precision: 2,\n masked: false,\n },\n }),\n methods: {\n\n defaultPageChanged(filter, index) {\n filter.pageIndex = index;\n return filter;\n },\n defaultOrderBy(filter, field) {\n let type = 0;\n if (filter.orderByType == 0) type = 1;\n filter.orderFields = field;\n filter.orderByType = type;\n filter.isOrderByDynamic = true;\n return filter;\n },\n\n defaultSuccessResult(msg) {\n this.hideLoading();\n this.$eventHub.$emit('show-notification', {\n type: 'success',\n title: 'Sucesso',\n text: msg\n })\n },\n defaultErrorResult(err, modal) {\n this.hideLoading();\n if (err.data && err.data.errors) {\n for (var i = 0; i < err.data.errors.length; i++) {\n this.$eventHub.$emit('show-notification', {\n type: 'error',\n title: 'Atenção',\n text: err.data.errors[i],\n modal: modal\n })\n }\n }\n\n else\n this.$eventHub.$emit('show-notification', {\n type: 'error',\n title: 'Atenção',\n text: err,\n modal: modal\n })\n },\n configNotification() {\n this.$eventHub.$on('show-notification', (data) => {\n this.$notify({\n type: data.type,\n title: data.title,\n text: data.text,\n duration: 10000,\n speed: 1000\n })\n })\n },\n showLoading() {\n this.$eventHub.$emit('show-loading', true)\n },\n hideLoading() {\n this.$eventHub.$emit('show-loading', false)\n },\n failLoading() {\n this.$eventHub.$emit('show-loading', false)\n },\n\n },\n mounted() {\n window.scrollTo(0, 0);\n },\n}\n","(function () {\nvar lists = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var isTextNode = function (node) {\n return node && node.nodeType === 3;\n };\n var isListNode = function (node) {\n return node && /^(OL|UL|DL)$/.test(node.nodeName);\n };\n var isListItemNode = function (node) {\n return node && /^(LI|DT|DD)$/.test(node.nodeName);\n };\n var isTableCellNode = function (node) {\n return node && /^(TH|TD)$/.test(node.nodeName);\n };\n var isBr = function (node) {\n return node && node.nodeName === 'BR';\n };\n var isFirstChild = function (node) {\n return node.parentNode.firstChild === node;\n };\n var isLastChild = function (node) {\n return node.parentNode.lastChild === node;\n };\n var isTextBlock = function (editor, node) {\n return node && !!editor.schema.getTextBlockElements()[node.nodeName];\n };\n var isBlock = function (node, blockElements) {\n return node && node.nodeName in blockElements;\n };\n var isBogusBr = function (dom, node) {\n if (!isBr(node)) {\n return false;\n }\n if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) {\n return true;\n }\n return false;\n };\n var isEmpty = function (dom, elm, keepBookmarks) {\n var empty = dom.isEmpty(elm);\n if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {\n return false;\n }\n return empty;\n };\n var isChildOfBody = function (dom, elm) {\n return dom.isChildOf(elm, dom.getRoot());\n };\n var $_eyfb4cgljkmcwpc0 = {\n isTextNode: isTextNode,\n isListNode: isListNode,\n isListItemNode: isListItemNode,\n isTableCellNode: isTableCellNode,\n isBr: isBr,\n isFirstChild: isFirstChild,\n isLastChild: isLastChild,\n isTextBlock: isTextBlock,\n isBlock: isBlock,\n isBogusBr: isBogusBr,\n isEmpty: isEmpty,\n isChildOfBody: isChildOfBody\n };\n\n var getNormalizedEndPoint = function (container, offset) {\n var node = global$1.getNode(container, offset);\n if ($_eyfb4cgljkmcwpc0.isListItemNode(container) && $_eyfb4cgljkmcwpc0.isTextNode(node)) {\n var textNodeOffset = offset >= container.childNodes.length ? node.data.length : 0;\n return {\n container: node,\n offset: textNodeOffset\n };\n }\n return {\n container: container,\n offset: offset\n };\n };\n var normalizeRange = function (rng) {\n var outRng = rng.cloneRange();\n var rangeStart = getNormalizedEndPoint(rng.startContainer, rng.startOffset);\n outRng.setStart(rangeStart.container, rangeStart.offset);\n var rangeEnd = getNormalizedEndPoint(rng.endContainer, rng.endOffset);\n outRng.setEnd(rangeEnd.container, rangeEnd.offset);\n return outRng;\n };\n var $_8n62cfgkjkmcwpbw = {\n getNormalizedEndPoint: getNormalizedEndPoint,\n normalizeRange: normalizeRange\n };\n\n var DOM = global$6.DOM;\n var createBookmark = function (rng) {\n var bookmark = {};\n var setupEndPoint = function (start) {\n var offsetNode, container, offset;\n container = rng[start ? 'startContainer' : 'endContainer'];\n offset = rng[start ? 'startOffset' : 'endOffset'];\n if (container.nodeType === 1) {\n offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' });\n if (container.hasChildNodes()) {\n offset = Math.min(offset, container.childNodes.length - 1);\n if (start) {\n container.insertBefore(offsetNode, container.childNodes[offset]);\n } else {\n DOM.insertAfter(offsetNode, container.childNodes[offset]);\n }\n } else {\n container.appendChild(offsetNode);\n }\n container = offsetNode;\n offset = 0;\n }\n bookmark[start ? 'startContainer' : 'endContainer'] = container;\n bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n };\n setupEndPoint(true);\n if (!rng.collapsed) {\n setupEndPoint();\n }\n return bookmark;\n };\n var resolveBookmark = function (bookmark) {\n function restoreEndPoint(start) {\n var container, offset, node;\n var nodeIndex = function (container) {\n var node = container.parentNode.firstChild, idx = 0;\n while (node) {\n if (node === container) {\n return idx;\n }\n if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {\n idx++;\n }\n node = node.nextSibling;\n }\n return -1;\n };\n container = node = bookmark[start ? 'startContainer' : 'endContainer'];\n offset = bookmark[start ? 'startOffset' : 'endOffset'];\n if (!container) {\n return;\n }\n if (container.nodeType === 1) {\n offset = nodeIndex(container);\n container = container.parentNode;\n DOM.remove(node);\n if (!container.hasChildNodes() && DOM.isBlock(container)) {\n container.appendChild(DOM.create('br'));\n }\n }\n bookmark[start ? 'startContainer' : 'endContainer'] = container;\n bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n }\n restoreEndPoint(true);\n restoreEndPoint();\n var rng = DOM.createRng();\n rng.setStart(bookmark.startContainer, bookmark.startOffset);\n if (bookmark.endContainer) {\n rng.setEnd(bookmark.endContainer, bookmark.endOffset);\n }\n return $_8n62cfgkjkmcwpbw.normalizeRange(rng);\n };\n var $_aredwjgjjkmcwpbt = {\n createBookmark: createBookmark,\n resolveBookmark: resolveBookmark\n };\n\n var DOM$1 = global$6.DOM;\n var normalizeList = function (dom, ul) {\n var sibling;\n var parentNode = ul.parentNode;\n if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) {\n sibling = parentNode.previousSibling;\n if (sibling && sibling.nodeName === 'LI') {\n sibling.appendChild(ul);\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, parentNode)) {\n DOM$1.remove(parentNode);\n }\n } else {\n DOM$1.setStyle(parentNode, 'listStyleType', 'none');\n }\n }\n if ($_eyfb4cgljkmcwpc0.isListNode(parentNode)) {\n sibling = parentNode.previousSibling;\n if (sibling && sibling.nodeName === 'LI') {\n sibling.appendChild(ul);\n }\n }\n };\n var normalizeLists = function (dom, element) {\n global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) {\n normalizeList(dom, ul);\n });\n };\n var $_f0sxyjgmjkmcwpc3 = {\n normalizeList: normalizeList,\n normalizeLists: normalizeLists\n };\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\n\n var getParentList = function (editor) {\n var selectionStart = editor.selection.getStart(true);\n return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart));\n };\n var isParentListSelected = function (parentList, selectedBlocks) {\n return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;\n };\n var findSubLists = function (parentList) {\n return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) {\n return $_eyfb4cgljkmcwpc0.isListNode(elm);\n });\n };\n var getSelectedSubLists = function (editor) {\n var parentList = getParentList(editor);\n var selectedBlocks = editor.selection.getSelectedBlocks();\n if (isParentListSelected(parentList, selectedBlocks)) {\n return findSubLists(parentList);\n } else {\n return global$5.grep(selectedBlocks, function (elm) {\n return $_eyfb4cgljkmcwpc0.isListNode(elm) && parentList !== elm;\n });\n }\n };\n var findParentListItemsNodes = function (editor, elms) {\n var listItemsElms = global$5.map(elms, function (elm) {\n var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));\n return parentLi ? parentLi : elm;\n });\n return global$7.unique(listItemsElms);\n };\n var getSelectedListItems = function (editor) {\n var selectedBlocks = editor.selection.getSelectedBlocks();\n return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {\n return $_eyfb4cgljkmcwpc0.isListItemNode(block);\n });\n };\n var getClosestListRootElm = function (editor, elm) {\n var parentTableCell = editor.dom.getParents(elm, 'TD,TH');\n var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();\n return root;\n };\n var $_g5359xgnjkmcwpc5 = {\n getParentList: getParentList,\n getSelectedSubLists: getSelectedSubLists,\n getSelectedListItems: getSelectedListItems,\n getClosestListRootElm: getClosestListRootElm\n };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var DOM$2 = global$6.DOM;\n var createNewTextBlock = function (editor, contentNode, blockName) {\n var node, textBlock;\n var fragment = DOM$2.createFragment();\n var hasContentNode;\n var blockElements = editor.schema.getBlockElements();\n if (editor.settings.forced_root_block) {\n blockName = blockName || editor.settings.forced_root_block;\n }\n if (blockName) {\n textBlock = DOM$2.create(blockName);\n if (textBlock.tagName === editor.settings.forced_root_block) {\n DOM$2.setAttribs(textBlock, editor.settings.forced_root_block_attrs);\n }\n if (!$_eyfb4cgljkmcwpc0.isBlock(contentNode.firstChild, blockElements)) {\n fragment.appendChild(textBlock);\n }\n }\n if (contentNode) {\n while (node = contentNode.firstChild) {\n var nodeName = node.nodeName;\n if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {\n hasContentNode = true;\n }\n if ($_eyfb4cgljkmcwpc0.isBlock(node, blockElements)) {\n fragment.appendChild(node);\n textBlock = null;\n } else {\n if (blockName) {\n if (!textBlock) {\n textBlock = DOM$2.create(blockName);\n fragment.appendChild(textBlock);\n }\n textBlock.appendChild(node);\n } else {\n fragment.appendChild(node);\n }\n }\n }\n }\n if (!editor.settings.forced_root_block) {\n fragment.appendChild(DOM$2.create('br'));\n } else {\n if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {\n textBlock.appendChild(DOM$2.create('br', { 'data-mce-bogus': '1' }));\n }\n }\n return fragment;\n };\n var $_givla1gqjkmcwpcb = { createNewTextBlock: createNewTextBlock };\n\n var DOM$3 = global$6.DOM;\n var splitList = function (editor, ul, li, newBlock) {\n var tmpRng, fragment, bookmarks, node;\n var removeAndKeepBookmarks = function (targetNode) {\n global$5.each(bookmarks, function (node) {\n targetNode.parentNode.insertBefore(node, li.parentNode);\n });\n DOM$3.remove(targetNode);\n };\n bookmarks = DOM$3.select('span[data-mce-type=\"bookmark\"]', ul);\n newBlock = newBlock || $_givla1gqjkmcwpcb.createNewTextBlock(editor, li);\n tmpRng = DOM$3.createRng();\n tmpRng.setStartAfter(li);\n tmpRng.setEndAfter(ul);\n fragment = tmpRng.extractContents();\n for (node = fragment.firstChild; node; node = node.firstChild) {\n if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {\n DOM$3.remove(node);\n break;\n }\n }\n if (!editor.dom.isEmpty(fragment)) {\n DOM$3.insertAfter(fragment, ul);\n }\n DOM$3.insertAfter(newBlock, ul);\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, li.parentNode)) {\n removeAndKeepBookmarks(li.parentNode);\n }\n DOM$3.remove(li);\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, ul)) {\n DOM$3.remove(ul);\n }\n };\n var $_3aykwpgpjkmcwpc8 = { splitList: splitList };\n\n var DOM$4 = global$6.DOM;\n var removeEmptyLi = function (dom, li) {\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, li)) {\n DOM$4.remove(li);\n }\n };\n var outdent = function (editor, li) {\n var ul = li.parentNode;\n var ulParent, newBlock;\n if (ul) {\n ulParent = ul.parentNode;\n } else {\n removeEmptyLi(editor.dom, li);\n return true;\n }\n if (ul === editor.getBody()) {\n return true;\n }\n if (li.nodeName === 'DD') {\n DOM$4.rename(li, 'DT');\n return true;\n }\n if ($_eyfb4cgljkmcwpc0.isFirstChild(li) && $_eyfb4cgljkmcwpc0.isLastChild(li)) {\n if (ulParent.nodeName === 'LI') {\n DOM$4.insertAfter(li, ulParent);\n removeEmptyLi(editor.dom, ulParent);\n DOM$4.remove(ul);\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n DOM$4.remove(ul, true);\n } else {\n ulParent.insertBefore($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\n DOM$4.remove(ul);\n }\n return true;\n } else if ($_eyfb4cgljkmcwpc0.isFirstChild(li)) {\n if (ulParent.nodeName === 'LI') {\n DOM$4.insertAfter(li, ulParent);\n li.appendChild(ul);\n removeEmptyLi(editor.dom, ulParent);\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n ulParent.insertBefore(li, ul);\n } else {\n ulParent.insertBefore($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\n DOM$4.remove(li);\n }\n return true;\n } else if ($_eyfb4cgljkmcwpc0.isLastChild(li)) {\n if (ulParent.nodeName === 'LI') {\n DOM$4.insertAfter(li, ulParent);\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n DOM$4.insertAfter(li, ul);\n } else {\n DOM$4.insertAfter($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\n DOM$4.remove(li);\n }\n return true;\n }\n if (ulParent.nodeName === 'LI') {\n ul = ulParent;\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li, 'LI');\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li, 'LI');\n } else {\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li);\n }\n $_3aykwpgpjkmcwpc8.splitList(editor, ul, li, newBlock);\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, ul.parentNode);\n return true;\n };\n var outdentSelection = function (editor) {\n var listElements = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n if (listElements.length) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng());\n var i = void 0, y = void 0;\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\n i = listElements.length;\n while (i--) {\n var node = listElements[i].parentNode;\n while (node && node !== root) {\n y = listElements.length;\n while (y--) {\n if (listElements[y] === node) {\n listElements.splice(i, 1);\n break;\n }\n }\n node = node.parentNode;\n }\n }\n for (i = 0; i < listElements.length; i++) {\n if (!outdent(editor, listElements[i]) && i === 0) {\n break;\n }\n }\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n editor.nodeChanged();\n return true;\n }\n };\n var $_80fi2gghjkmcwpbq = {\n outdent: outdent,\n outdentSelection: outdentSelection\n };\n\n var updateListStyle = function (dom, el, detail) {\n var type = detail['list-style-type'] ? detail['list-style-type'] : null;\n dom.setStyle(el, 'list-style-type', type);\n };\n var setAttribs = function (elm, attrs) {\n global$5.each(attrs, function (value, key) {\n elm.setAttribute(key, value);\n });\n };\n var updateListAttrs = function (dom, el, detail) {\n setAttribs(el, detail['list-attributes']);\n global$5.each(dom.select('li', el), function (li) {\n setAttribs(li, detail['list-item-attributes']);\n });\n };\n var updateListWithDetails = function (dom, el, detail) {\n updateListStyle(dom, el, detail);\n updateListAttrs(dom, el, detail);\n };\n var removeStyles = function (dom, element, styles) {\n global$5.each(styles, function (style) {\n var _a;\n return dom.setStyle(element, (_a = {}, _a[style] = '', _a));\n });\n };\n var getEndPointNode = function (editor, rng, start, root) {\n var container, offset;\n container = rng[start ? 'startContainer' : 'endContainer'];\n offset = rng[start ? 'startOffset' : 'endOffset'];\n if (container.nodeType === 1) {\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n }\n if (!start && $_eyfb4cgljkmcwpc0.isBr(container.nextSibling)) {\n container = container.nextSibling;\n }\n while (container.parentNode !== root) {\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, container)) {\n return container;\n }\n if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {\n return container;\n }\n container = container.parentNode;\n }\n return container;\n };\n var getSelectedTextBlocks = function (editor, rng, root) {\n var textBlocks = [], dom = editor.dom;\n var startNode = getEndPointNode(editor, rng, true, root);\n var endNode = getEndPointNode(editor, rng, false, root);\n var block;\n var siblings = [];\n for (var node = startNode; node; node = node.nextSibling) {\n siblings.push(node);\n if (node === endNode) {\n break;\n }\n }\n global$5.each(siblings, function (node) {\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, node)) {\n textBlocks.push(node);\n block = null;\n return;\n }\n if (dom.isBlock(node) || $_eyfb4cgljkmcwpc0.isBr(node)) {\n if ($_eyfb4cgljkmcwpc0.isBr(node)) {\n dom.remove(node);\n }\n block = null;\n return;\n }\n var nextSibling = node.nextSibling;\n if (global$4.isBookmarkNode(node)) {\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {\n block = null;\n return;\n }\n }\n if (!block) {\n block = dom.create('p');\n node.parentNode.insertBefore(block, node);\n textBlocks.push(block);\n }\n block.appendChild(node);\n });\n return textBlocks;\n };\n var hasCompatibleStyle = function (dom, sib, detail) {\n var sibStyle = dom.getStyle(sib, 'list-style-type');\n var detailStyle = detail ? detail['list-style-type'] : '';\n detailStyle = detailStyle === null ? '' : detailStyle;\n return sibStyle === detailStyle;\n };\n var applyList = function (editor, listName, detail) {\n if (detail === void 0) {\n detail = {};\n }\n var rng = editor.selection.getRng(true);\n var bookmark;\n var listItemName = 'LI';\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\n var dom = editor.dom;\n if (dom.getContentEditable(editor.selection.getNode()) === 'false') {\n return;\n }\n listName = listName.toUpperCase();\n if (listName === 'DL') {\n listItemName = 'DT';\n }\n bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\n global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {\n var listBlock, sibling;\n sibling = block.previousSibling;\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {\n listBlock = sibling;\n block = dom.rename(block, listItemName);\n sibling.appendChild(block);\n } else {\n listBlock = dom.create(listName);\n block.parentNode.insertBefore(listBlock, block);\n listBlock.appendChild(block);\n block = dom.rename(block, listItemName);\n }\n removeStyles(dom, block, [\n 'margin',\n 'margin-right',\n 'margin-bottom',\n 'margin-left',\n 'margin-top',\n 'padding',\n 'padding-right',\n 'padding-bottom',\n 'padding-left',\n 'padding-top'\n ]);\n updateListWithDetails(dom, listBlock, detail);\n mergeWithAdjacentLists(editor.dom, listBlock);\n });\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n };\n var removeList = function (editor) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\n var listItems = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n var emptyListItems = global$5.grep(listItems, function (li) {\n return editor.dom.isEmpty(li);\n });\n listItems = global$5.grep(listItems, function (li) {\n return !editor.dom.isEmpty(li);\n });\n global$5.each(emptyListItems, function (li) {\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, li)) {\n $_80fi2gghjkmcwpbq.outdent(editor, li);\n return;\n }\n });\n global$5.each(listItems, function (li) {\n var node, rootList;\n if (li.parentNode === editor.getBody()) {\n return;\n }\n for (node = li; node && node !== root; node = node.parentNode) {\n if ($_eyfb4cgljkmcwpc0.isListNode(node)) {\n rootList = node;\n }\n }\n $_3aykwpgpjkmcwpc8.splitList(editor, rootList, li);\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, rootList.parentNode);\n });\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n };\n var isValidLists = function (list1, list2) {\n return list1 && list2 && $_eyfb4cgljkmcwpc0.isListNode(list1) && list1.nodeName === list2.nodeName;\n };\n var hasSameListStyle = function (dom, list1, list2) {\n var targetStyle = dom.getStyle(list1, 'list-style-type', true);\n var style = dom.getStyle(list2, 'list-style-type', true);\n return targetStyle === style;\n };\n var hasSameClasses = function (elm1, elm2) {\n return elm1.className === elm2.className;\n };\n var shouldMerge = function (dom, list1, list2) {\n return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);\n };\n var mergeWithAdjacentLists = function (dom, listBlock) {\n var sibling, node;\n sibling = listBlock.nextSibling;\n if (shouldMerge(dom, listBlock, sibling)) {\n while (node = sibling.firstChild) {\n listBlock.appendChild(node);\n }\n dom.remove(sibling);\n }\n sibling = listBlock.previousSibling;\n if (shouldMerge(dom, listBlock, sibling)) {\n while (node = sibling.lastChild) {\n listBlock.insertBefore(node, listBlock.firstChild);\n }\n dom.remove(sibling);\n }\n };\n var updateList = function (dom, list, listName, detail) {\n if (list.nodeName !== listName) {\n var newList = dom.rename(list, listName);\n updateListWithDetails(dom, newList, detail);\n } else {\n updateListWithDetails(dom, list, detail);\n }\n };\n var toggleMultipleLists = function (editor, parentList, lists, listName, detail) {\n if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\n removeList(editor);\n } else {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n global$5.each([parentList].concat(lists), function (elm) {\n updateList(editor.dom, elm, listName, detail);\n });\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n }\n };\n var hasListStyleDetail = function (detail) {\n return 'list-style-type' in detail;\n };\n var toggleSingleList = function (editor, parentList, listName, detail) {\n if (parentList === editor.getBody()) {\n return;\n }\n if (parentList) {\n if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\n removeList(editor);\n } else {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n updateListWithDetails(editor.dom, parentList, detail);\n mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n }\n } else {\n applyList(editor, listName, detail);\n }\n };\n var toggleList = function (editor, listName, detail) {\n var parentList = $_g5359xgnjkmcwpc5.getParentList(editor);\n var selectedSubLists = $_g5359xgnjkmcwpc5.getSelectedSubLists(editor);\n detail = detail ? detail : {};\n if (parentList && selectedSubLists.length > 0) {\n toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);\n } else {\n toggleSingleList(editor, parentList, listName, detail);\n }\n };\n var $_8bvl87gejkmcwpbi = {\n toggleList: toggleList,\n removeList: removeList,\n mergeWithAdjacentLists: mergeWithAdjacentLists\n };\n\n var findNextCaretContainer = function (editor, rng, isForward, root) {\n var node = rng.startContainer;\n var offset = rng.startOffset;\n var nonEmptyBlocks, walker;\n if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) {\n return node;\n }\n nonEmptyBlocks = editor.schema.getNonEmptyElements();\n if (node.nodeType === 1) {\n node = global$1.getNode(node, offset);\n }\n walker = new global$2(node, root);\n if (isForward) {\n if ($_eyfb4cgljkmcwpc0.isBogusBr(editor.dom, node)) {\n walker.next();\n }\n }\n while (node = walker[isForward ? 'next' : 'prev2']()) {\n if (node.nodeName === 'LI' && !node.hasChildNodes()) {\n return node;\n }\n if (nonEmptyBlocks[node.nodeName]) {\n return node;\n }\n if (node.nodeType === 3 && node.data.length > 0) {\n return node;\n }\n }\n };\n var hasOnlyOneBlockChild = function (dom, elm) {\n var childNodes = elm.childNodes;\n return childNodes.length === 1 && !$_eyfb4cgljkmcwpc0.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);\n };\n var unwrapSingleBlockChild = function (dom, elm) {\n if (hasOnlyOneBlockChild(dom, elm)) {\n dom.remove(elm.firstChild, true);\n }\n };\n var moveChildren = function (dom, fromElm, toElm) {\n var node, targetElm;\n targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;\n unwrapSingleBlockChild(dom, fromElm);\n if (!$_eyfb4cgljkmcwpc0.isEmpty(dom, fromElm, true)) {\n while (node = fromElm.firstChild) {\n targetElm.appendChild(node);\n }\n }\n };\n var mergeLiElements = function (dom, fromElm, toElm) {\n var node, listNode;\n var ul = fromElm.parentNode;\n if (!$_eyfb4cgljkmcwpc0.isChildOfBody(dom, fromElm) || !$_eyfb4cgljkmcwpc0.isChildOfBody(dom, toElm)) {\n return;\n }\n if ($_eyfb4cgljkmcwpc0.isListNode(toElm.lastChild)) {\n listNode = toElm.lastChild;\n }\n if (ul === toElm.lastChild) {\n if ($_eyfb4cgljkmcwpc0.isBr(ul.previousSibling)) {\n dom.remove(ul.previousSibling);\n }\n }\n node = toElm.lastChild;\n if (node && $_eyfb4cgljkmcwpc0.isBr(node) && fromElm.hasChildNodes()) {\n dom.remove(node);\n }\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, toElm, true)) {\n dom.$(toElm).empty();\n }\n moveChildren(dom, fromElm, toElm);\n if (listNode) {\n toElm.appendChild(listNode);\n }\n dom.remove(fromElm);\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, ul) && ul !== dom.getRoot()) {\n dom.remove(ul);\n }\n };\n var mergeIntoEmptyLi = function (editor, fromLi, toLi) {\n editor.dom.$(toLi).empty();\n mergeLiElements(editor.dom, fromLi, toLi);\n editor.selection.setCursorLocation(toLi);\n };\n var mergeForward = function (editor, rng, fromLi, toLi) {\n var dom = editor.dom;\n if (dom.isEmpty(toLi)) {\n mergeIntoEmptyLi(editor, fromLi, toLi);\n } else {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\n mergeLiElements(dom, fromLi, toLi);\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n }\n };\n var mergeBackward = function (editor, rng, fromLi, toLi) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\n mergeLiElements(editor.dom, fromLi, toLi);\n var resolvedBookmark = $_aredwjgjjkmcwpbt.resolveBookmark(bookmark);\n editor.selection.setRng(resolvedBookmark);\n };\n var backspaceDeleteFromListToListCaret = function (editor, isForward) {\n var dom = editor.dom, selection = editor.selection;\n var selectionStartElm = selection.getStart();\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\n var li = dom.getParent(selection.getStart(), 'LI', root);\n var ul, rng, otherLi;\n if (li) {\n ul = li.parentNode;\n if (ul === editor.getBody() && $_eyfb4cgljkmcwpc0.isEmpty(dom, ul)) {\n return true;\n }\n rng = $_8n62cfgkjkmcwpbw.normalizeRange(selection.getRng(true));\n otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n if (otherLi && otherLi !== li) {\n if (isForward) {\n mergeForward(editor, rng, otherLi, li);\n } else {\n mergeBackward(editor, rng, li, otherLi);\n }\n return true;\n } else if (!otherLi) {\n if (!isForward && $_8bvl87gejkmcwpbi.removeList(editor)) {\n return true;\n }\n }\n }\n return false;\n };\n var removeBlock = function (dom, block, root) {\n var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);\n dom.remove(block);\n if (parentBlock && dom.isEmpty(parentBlock)) {\n dom.remove(parentBlock);\n }\n };\n var backspaceDeleteIntoListCaret = function (editor, isForward) {\n var dom = editor.dom;\n var selectionStartElm = editor.selection.getStart();\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\n var block = dom.getParent(selectionStartElm, dom.isBlock, root);\n if (block && dom.isEmpty(block)) {\n var rng = $_8n62cfgkjkmcwpbw.normalizeRange(editor.selection.getRng(true));\n var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n if (otherLi_1) {\n editor.undoManager.transact(function () {\n removeBlock(dom, block, root);\n $_8bvl87gejkmcwpbi.mergeWithAdjacentLists(dom, otherLi_1.parentNode);\n editor.selection.select(otherLi_1, true);\n editor.selection.collapse(isForward);\n });\n return true;\n }\n }\n return false;\n };\n var backspaceDeleteCaret = function (editor, isForward) {\n return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);\n };\n var backspaceDeleteRange = function (editor) {\n var selectionStartElm = editor.selection.getStart();\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\n var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);\n if (startListParent || $_g5359xgnjkmcwpc5.getSelectedListItems(editor).length > 0) {\n editor.undoManager.transact(function () {\n editor.execCommand('Delete');\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, editor.getBody());\n });\n return true;\n }\n return false;\n };\n var backspaceDelete = function (editor, isForward) {\n return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor);\n };\n var setup = function (editor) {\n editor.on('keydown', function (e) {\n if (e.keyCode === global$3.BACKSPACE) {\n if (backspaceDelete(editor, false)) {\n e.preventDefault();\n }\n } else if (e.keyCode === global$3.DELETE) {\n if (backspaceDelete(editor, true)) {\n e.preventDefault();\n }\n }\n });\n };\n var $_17li1sgajkmcwpb9 = {\n setup: setup,\n backspaceDelete: backspaceDelete\n };\n\n var get = function (editor) {\n return {\n backspaceDelete: function (isForward) {\n $_17li1sgajkmcwpb9.backspaceDelete(editor, isForward);\n }\n };\n };\n var $_4wrbe2g9jkmcwpb7 = { get: get };\n\n var DOM$5 = global$6.DOM;\n var mergeLists = function (from, to) {\n var node;\n if ($_eyfb4cgljkmcwpc0.isListNode(from)) {\n while (node = from.firstChild) {\n to.appendChild(node);\n }\n DOM$5.remove(from);\n }\n };\n var indent = function (li) {\n var sibling, newList, listStyle;\n if (li.nodeName === 'DT') {\n DOM$5.rename(li, 'DD');\n return true;\n }\n sibling = li.previousSibling;\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling)) {\n sibling.appendChild(li);\n return true;\n }\n if (sibling && sibling.nodeName === 'LI' && $_eyfb4cgljkmcwpc0.isListNode(sibling.lastChild)) {\n sibling.lastChild.appendChild(li);\n mergeLists(li.lastChild, sibling.lastChild);\n return true;\n }\n sibling = li.nextSibling;\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling)) {\n sibling.insertBefore(li, sibling.firstChild);\n return true;\n }\n sibling = li.previousSibling;\n if (sibling && sibling.nodeName === 'LI') {\n newList = DOM$5.create(li.parentNode.nodeName);\n listStyle = DOM$5.getStyle(li.parentNode, 'listStyleType');\n if (listStyle) {\n DOM$5.setStyle(newList, 'listStyleType', listStyle);\n }\n sibling.appendChild(newList);\n newList.appendChild(li);\n mergeLists(li.lastChild, newList);\n return true;\n }\n return false;\n };\n var indentSelection = function (editor) {\n var listElements = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n if (listElements.length) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n for (var i = 0; i < listElements.length; i++) {\n if (!indent(listElements[i]) && i === 0) {\n break;\n }\n }\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n editor.nodeChanged();\n return true;\n }\n };\n var $_fhzwh2gtjkmcwpco = { indentSelection: indentSelection };\n\n var queryListCommandState = function (editor, listName) {\n return function () {\n var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL');\n return parentList && parentList.nodeName === listName;\n };\n };\n var register = function (editor) {\n editor.on('BeforeExecCommand', function (e) {\n var cmd = e.command.toLowerCase();\n var isHandled;\n if (cmd === 'indent') {\n if ($_fhzwh2gtjkmcwpco.indentSelection(editor)) {\n isHandled = true;\n }\n } else if (cmd === 'outdent') {\n if ($_80fi2gghjkmcwpbq.outdentSelection(editor)) {\n isHandled = true;\n }\n }\n if (isHandled) {\n editor.fire('ExecCommand', { command: e.command });\n e.preventDefault();\n return true;\n }\n });\n editor.addCommand('InsertUnorderedList', function (ui, detail) {\n $_8bvl87gejkmcwpbi.toggleList(editor, 'UL', detail);\n });\n editor.addCommand('InsertOrderedList', function (ui, detail) {\n $_8bvl87gejkmcwpbi.toggleList(editor, 'OL', detail);\n });\n editor.addCommand('InsertDefinitionList', function (ui, detail) {\n $_8bvl87gejkmcwpbi.toggleList(editor, 'DL', detail);\n });\n editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));\n editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));\n editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));\n };\n var $_7snno4gsjkmcwpcf = { register: register };\n\n var shouldIndentOnTab = function (editor) {\n return editor.getParam('lists_indent_on_tab', true);\n };\n var $_7hi6itgvjkmcwpcr = { shouldIndentOnTab: shouldIndentOnTab };\n\n var setupTabKey = function (editor) {\n editor.on('keydown', function (e) {\n if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {\n return;\n }\n if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) {\n e.preventDefault();\n if (e.shiftKey) {\n $_80fi2gghjkmcwpbq.outdentSelection(editor);\n } else {\n $_fhzwh2gtjkmcwpco.indentSelection(editor);\n }\n }\n });\n };\n var setup$1 = function (editor) {\n if ($_7hi6itgvjkmcwpcr.shouldIndentOnTab(editor)) {\n setupTabKey(editor);\n }\n $_17li1sgajkmcwpb9.setup(editor);\n };\n var $_fv3b7wgujkmcwpcq = { setup: setup$1 };\n\n var findIndex = function (list, predicate) {\n for (var index = 0; index < list.length; index++) {\n var element = list[index];\n if (predicate(element)) {\n return index;\n }\n }\n return -1;\n };\n var listState = function (editor, listName) {\n return function (e) {\n var ctrl = e.control;\n editor.on('NodeChange', function (e) {\n var tableCellIndex = findIndex(e.parents, $_eyfb4cgljkmcwpc0.isTableCellNode);\n var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\n var lists = global$5.grep(parents, $_eyfb4cgljkmcwpc0.isListNode);\n ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\n });\n };\n };\n var indentPostRender = function (editor) {\n return function (e) {\n var ctrl = e.control;\n editor.on('nodechange', function () {\n var listItemBlocks = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n var disable = listItemBlocks.length > 0 && $_eyfb4cgljkmcwpc0.isFirstChild(listItemBlocks[0]);\n ctrl.disabled(disable);\n });\n };\n };\n var register$1 = function (editor) {\n var hasPlugin = function (editor, plugin) {\n var plugins = editor.settings.plugins ? editor.settings.plugins : '';\n return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1;\n };\n if (!hasPlugin(editor, 'advlist')) {\n editor.addButton('numlist', {\n active: false,\n title: 'Numbered list',\n cmd: 'InsertOrderedList',\n onPostRender: listState(editor, 'OL')\n });\n editor.addButton('bullist', {\n active: false,\n title: 'Bullet list',\n cmd: 'InsertUnorderedList',\n onPostRender: listState(editor, 'UL')\n });\n }\n editor.addButton('indent', {\n icon: 'indent',\n title: 'Increase indent',\n cmd: 'Indent',\n onPostRender: indentPostRender(editor)\n });\n };\n var $_e09q6ogwjkmcwpct = { register: register$1 };\n\n global.add('lists', function (editor) {\n $_fv3b7wgujkmcwpcq.setup(editor);\n $_e09q6ogwjkmcwpct.register(editor);\n $_7snno4gsjkmcwpcf.register(editor);\n return $_4wrbe2g9jkmcwpb7.get(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","import Cache from './cache'\nimport Cookie from './cookie'\nimport Global from './global'\nimport { Api } from './api'\nimport { setTimeout } from 'timers';\n\nexport default {\n\n authorize_url: Global.SSO_END_POINT + 'connect/authorize',\n addclaims_authorize_url: Global.SSO_END_POINT + '/accountafterauth/claimsadd',\n endsession_url: Global.SSO_END_POINT + 'connect/endsession',\n redirect_uri: Global.SSO_REDIRECT_LOGIN_URL,\n post_logout_redirect_uri: Global.SSO_REDIRECT_LOGOUT_URL,\n\n client_id: Global.SSO_CLIENT_ID,\n response_type: Global.SSO_RESPONSE_TYPE,\n scope: Global.SSO_SCOPE,\n\n menu_key: 'ACC___FXX_JB_01',\n permissoes_key: 'ACC___FXX_JB_02',\n loadfinished_key: 'ACC___FXX_JB_04',\n lastlocation_key: 'ACC___AEF_03_5O',\n\n getToken() {\n return Cache.get(Global.ID_TOKEN);\n },\n\n getAccessToken() {\n return Cache.get(Global.ACCESS_TOKEN);\n },\n\n getState() {\n return Cache.get(Global.ID_STATE);\n },\n\n logged() {\n return Cache.get(Global.ID_TOKEN) && Cache.get(this.loadfinished_key) == \"finished\";\n },\n\n login(saveActualPage) {\n\n if (saveActualPage)\n Cache.add(this.lastlocation_key, window.location.pathname);\n\n Cache.add(Global.ID_STATE, Date.now());\n\n var url = this.authorize_url + \"?\" +\n \"client_id=\" + encodeURIComponent(this.client_id) + \"&\" +\n \"redirect_uri=\" + encodeURIComponent(this.redirect_uri) + \"&\" +\n \"response_type=\" + encodeURIComponent(this.response_type) + \"&\" +\n \"scope=\" + encodeURIComponent(this.scope) + \"&\" +\n \"state=\" + encodeURIComponent(this.getState()) + \"&\" +\n \"nonce=xyz\";\n\n window.location = url;\n },\n\n getCurrentUser(callback) {\n var api = new Api(\"currentuser\");\n api.hasDefaultFilters = false;\n api.get().then(response => {\n var _user = response.data;\n new Api('pessoacna').get({\n id: _user.pessoacna\n }).then(result => {\n Cache.add(Global.USER_INFO, JSON.stringify(result.data));\n setTimeout(() => { callback(result.data, _user.pessoacna) }, 500);\n })\n });\n },\n\n currentUser() {\n var _user = JSON.parse(Cache.get(Global.USER_INFO));\n return _user;\n },\n\n logout() {\n\n var url = this.endsession_url + \"?\" +\n \"id_token_hint=\" + this.getToken() + \"&\" +\n \"post_logout_redirect_uri=\" + encodeURIComponent(this.post_logout_redirect_uri) + \"&\" +\n \"state=\" + encodeURIComponent(this.getState());\n\n this.reset();\n\n window.location = url;\n },\n\n processTokenCallback(callback) {\n\n if (window.location.href.indexOf(\"access_token\") < 0) {\n callback();\n return;\n }\n\n this.reset();\n\n var itens = window.location.hash.split('#');\n var result = itens[1].split('&').reduce(function (result, item) {\n var parts = item.split('=');\n result[parts[0]] = parts[1];\n return result;\n }, {});\n\n Cache.add(Global.ACCESS_TOKEN, result.access_token, result.expires_in);\n Cache.add(Global.ID_TOKEN, result.id_token, result.expires_in);\n\n setTimeout(() => {\n callback();\n }, 500);\n\n },\n\n claimsAddLoginSso(claim_type, claim_value) {\n\n Cache.add(Global.ID_STATE, Date.now());\n\n let url = this.addclaims_authorize_url + \"?\" +\n \"claims_type=\" + encodeURIComponent(claim_type) + \"&\" +\n \"claims_value=\" + encodeURIComponent(claim_value) + \"&\" +\n \"client_id=\" + encodeURIComponent(this.client_id) + \"&\" +\n \"redirect_uri=\" + encodeURIComponent(this.redirect_uri) + \"&\" +\n \"response_type=\" + encodeURIComponent(this.response_type) + \"&\" +\n \"scope=\" + encodeURIComponent(this.scope) + \"&\" +\n \"state=\" + encodeURIComponent(this.getState()) + \"&\" +\n \"nonce=xyz\";\n\n Cache.remove(Global.USER_INFO);\n\n window.location = url;\n },\n\n reset() {\n Cache.remove(Global.ACCESS_TOKEN);\n Cache.remove(Global.ID_TOKEN);\n Cache.remove(Global.USER_INFO);\n },\n\n getPermissoes() {\n var _fromcache = Cache.get(this.permissoes_key);\n return JSON.parse(_fromcache);\n },\n\n getMenu() {\n var _fromcache = Cache.get(this.menu_key);\n return JSON.parse(_fromcache);\n },\n\n canAccess(url) {\n\n return true;\n\n if (url == '' ||\n url == '/' ||\n url == '/home')\n return true;\n\n var permissions = this.getPermissoes();\n var can = false;\n\n if (url.endsWith(\"/\"))\n url = url.slice(0, -1)\n\n var rotaSplited = url.split('/');\n\n for (var key in permissions) {\n var splited = permissions[key].split('/');\n var todosparametrosbatem = false;\n for (var itemrota in rotaSplited) {\n if (splited[itemrota] == \"[parametro]\" || rotaSplited[itemrota] == splited[itemrota]) {\n todosparametrosbatem = true;\n }\n else {\n todosparametrosbatem = false;\n break;\n }\n }\n\n if (todosparametrosbatem) {\n can = true;\n break;\n }\n }\n\n if (!can)\n return false;\n\n return true;\n }\n}\n","export default {\n\n END_POINT_DEFAULT: process.env.VUE_APP_ENDPOINT_DEFAULT,\n END_POINT_PORTAL_CORPORATIVO: process.env.VUE_APP_END_POINT_PORTAL_CORPORATIVO,\n \n SSO_END_POINT: process.env.VUE_APP_ENDPOINT_SSO,\n\n SSO_REDIRECT_LOGIN_URL: process.env.VUE_APP_LOCATION_URL + \"authorized/?\",\n SSO_REDIRECT_LOGOUT_URL: \"https://www.cna.com.br\",\n\n SSO_CLIENT_ID: \"account-user\",\n SSO_RESPONSE_TYPE: \"id_token token\",\n SSO_SCOPE: \"openid profile email account_user_api\",\n\n ACCESS_TOKEN: \"PFB_AC_T_X857D\",\n ID_TOKEN: \"PFB_ID_T_D98SW\",\n USER_INFO: \"PFB_U_I_D8D5D\",\n ID_STATE: \"PFB_ID_S_852PL\",\n\n CHAVE_IDENTIFICACAO_SISTEMA: \"SHOPPING_NOVO\",\n\n URL_SHOPPING_CNA: process.env.VUE_APP_SHOPPING_URL,\n URL_PORTAL_CORPORATIVO: process.env.VUE_APP_PORTAL_CORPORATIVO,\n URL_DOWNLOAD: process.env.VUE_APP_ENDPOINT_DOWNLOAD + '/document/download/',\n URL_CNA_NET: process.env.VUE_APP_CNA_NET_URL,\n\n\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=08bc775c&prod&lang=scss\"","module.exports = __webpack_public_path__ + \"img/logo_shoppingcna.ff5b7188.png\";","module.exports = __webpack_public_path__ + \"img/cna-logo-white.c484a644.svg\";","(function () {\nvar image = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var hasDimensions = function (editor) {\n return editor.settings.image_dimensions === false ? false : true;\n };\n var hasAdvTab = function (editor) {\n return editor.settings.image_advtab === true ? true : false;\n };\n var getPrependUrl = function (editor) {\n return editor.getParam('image_prepend_url', '');\n };\n var getClassList = function (editor) {\n return editor.getParam('image_class_list');\n };\n var hasDescription = function (editor) {\n return editor.settings.image_description === false ? false : true;\n };\n var hasImageTitle = function (editor) {\n return editor.settings.image_title === true ? true : false;\n };\n var hasImageCaption = function (editor) {\n return editor.settings.image_caption === true ? true : false;\n };\n var getImageList = function (editor) {\n return editor.getParam('image_list', false);\n };\n var hasUploadUrl = function (editor) {\n return editor.getParam('images_upload_url', false);\n };\n var hasUploadHandler = function (editor) {\n return editor.getParam('images_upload_handler', false);\n };\n var getUploadUrl = function (editor) {\n return editor.getParam('images_upload_url');\n };\n var getUploadHandler = function (editor) {\n return editor.getParam('images_upload_handler');\n };\n var getUploadBasePath = function (editor) {\n return editor.getParam('images_upload_base_path');\n };\n var getUploadCredentials = function (editor) {\n return editor.getParam('images_upload_credentials');\n };\n var $_gc1jdictjkmcwomd = {\n hasDimensions: hasDimensions,\n hasAdvTab: hasAdvTab,\n getPrependUrl: getPrependUrl,\n getClassList: getClassList,\n hasDescription: hasDescription,\n hasImageTitle: hasImageTitle,\n hasImageCaption: hasImageCaption,\n getImageList: getImageList,\n hasUploadUrl: hasUploadUrl,\n hasUploadHandler: hasUploadHandler,\n getUploadUrl: getUploadUrl,\n getUploadHandler: getUploadHandler,\n getUploadBasePath: getUploadBasePath,\n getUploadCredentials: getUploadCredentials\n };\n\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n o = o[parts[i]];\n return o;\n };\n var resolve = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n\n var unsafe = function (name, scope) {\n return resolve(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null)\n throw name + ' not available on this browser';\n return actual;\n };\n var $_db9o2scwjkmcwomp = { getOrDie: getOrDie };\n\n function FileReader () {\n var f = $_db9o2scwjkmcwomp.getOrDie('FileReader');\n return new f();\n }\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR');\n\n var parseIntAndGetMax = function (val1, val2) {\n return Math.max(parseInt(val1, 10), parseInt(val2, 10));\n };\n var getImageSize = function (url, callback) {\n var img = document.createElement('img');\n function done(width, height) {\n if (img.parentNode) {\n img.parentNode.removeChild(img);\n }\n callback({\n width: width,\n height: height\n });\n }\n img.onload = function () {\n var width = parseIntAndGetMax(img.width, img.clientWidth);\n var height = parseIntAndGetMax(img.height, img.clientHeight);\n done(width, height);\n };\n img.onerror = function () {\n done(0, 0);\n };\n var style = img.style;\n style.visibility = 'hidden';\n style.position = 'fixed';\n style.bottom = style.left = '0px';\n style.width = style.height = 'auto';\n document.body.appendChild(img);\n img.src = url;\n };\n var buildListItems = function (inputList, itemCallback, startItems) {\n function appendItems(values, output) {\n output = output || [];\n global$2.each(values, function (item) {\n var menuItem = { text: item.text || item.title };\n if (item.menu) {\n menuItem.menu = appendItems(item.menu);\n } else {\n menuItem.value = item.value;\n itemCallback(menuItem);\n }\n output.push(menuItem);\n });\n return output;\n }\n return appendItems(inputList, startItems || []);\n };\n var removePixelSuffix = function (value) {\n if (value) {\n value = value.replace(/px$/, '');\n }\n return value;\n };\n var addPixelSuffix = function (value) {\n if (value.length > 0 && /^[0-9]+$/.test(value)) {\n value += 'px';\n }\n return value;\n };\n var mergeMargins = function (css) {\n if (css.margin) {\n var splitMargin = css.margin.split(' ');\n switch (splitMargin.length) {\n case 1:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[0];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\n css['margin-left'] = css['margin-left'] || splitMargin[0];\n break;\n case 2:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[1];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\n css['margin-left'] = css['margin-left'] || splitMargin[1];\n break;\n case 3:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[1];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\n css['margin-left'] = css['margin-left'] || splitMargin[1];\n break;\n case 4:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[1];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\n css['margin-left'] = css['margin-left'] || splitMargin[3];\n }\n delete css.margin;\n }\n return css;\n };\n var createImageList = function (editor, callback) {\n var imageList = $_gc1jdictjkmcwomd.getImageList(editor);\n if (typeof imageList === 'string') {\n global$3.send({\n url: imageList,\n success: function (text) {\n callback(JSON.parse(text));\n }\n });\n } else if (typeof imageList === 'function') {\n imageList(callback);\n } else {\n callback(imageList);\n }\n };\n var waitLoadImage = function (editor, data, imgElm) {\n function selectImage() {\n imgElm.onload = imgElm.onerror = null;\n if (editor.selection) {\n editor.selection.select(imgElm);\n editor.nodeChanged();\n }\n }\n imgElm.onload = function () {\n if (!data.width && !data.height && $_gc1jdictjkmcwomd.hasDimensions(editor)) {\n editor.dom.setAttribs(imgElm, {\n width: imgElm.clientWidth,\n height: imgElm.clientHeight\n });\n }\n selectImage();\n };\n imgElm.onerror = selectImage;\n };\n var blobToDataUri = function (blob) {\n return new global$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function () {\n resolve(reader.result);\n };\n reader.onerror = function () {\n reject(FileReader.error.message);\n };\n reader.readAsDataURL(blob);\n });\n };\n var $_9v7cmwcujkmcwomi = {\n getImageSize: getImageSize,\n buildListItems: buildListItems,\n removePixelSuffix: removePixelSuffix,\n addPixelSuffix: addPixelSuffix,\n mergeMargins: mergeMargins,\n createImageList: createImageList,\n waitLoadImage: waitLoadImage,\n blobToDataUri: blobToDataUri\n };\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var shallow = function (old, nu) {\n return nu;\n };\n var baseMerge = function (merger) {\n return function () {\n var objects = new Array(arguments.length);\n for (var i = 0; i < objects.length; i++)\n objects[i] = arguments[i];\n if (objects.length === 0)\n throw new Error('Can\\'t merge zero objects');\n var ret = {};\n for (var j = 0; j < objects.length; j++) {\n var curObject = objects[j];\n for (var key in curObject)\n if (hasOwnProperty.call(curObject, key)) {\n ret[key] = merger(ret[key], curObject[key]);\n }\n }\n return ret;\n };\n };\n\n var merge = baseMerge(shallow);\n\n var DOM = global$4.DOM;\n var getHspace = function (image) {\n if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.marginLeft);\n } else {\n return '';\n }\n };\n var getVspace = function (image) {\n if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.marginTop);\n } else {\n return '';\n }\n };\n var getBorder = function (image) {\n if (image.style.borderWidth) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.borderWidth);\n } else {\n return '';\n }\n };\n var getAttrib = function (image, name$$1) {\n if (image.hasAttribute(name$$1)) {\n return image.getAttribute(name$$1);\n } else {\n return '';\n }\n };\n var getStyle = function (image, name$$1) {\n return image.style[name$$1] ? image.style[name$$1] : '';\n };\n var hasCaption = function (image) {\n return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';\n };\n var setAttrib = function (image, name$$1, value) {\n image.setAttribute(name$$1, value);\n };\n var wrapInFigure = function (image) {\n var figureElm = DOM.create('figure', { class: 'image' });\n DOM.insertAfter(figureElm, image);\n figureElm.appendChild(image);\n figureElm.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));\n figureElm.contentEditable = 'false';\n };\n var removeFigure = function (image) {\n var figureElm = image.parentNode;\n DOM.insertAfter(image, figureElm);\n DOM.remove(figureElm);\n };\n var toggleCaption = function (image) {\n if (hasCaption(image)) {\n removeFigure(image);\n } else {\n wrapInFigure(image);\n }\n };\n var normalizeStyle = function (image, normalizeCss) {\n var attrValue = image.getAttribute('style');\n var value = normalizeCss(attrValue !== null ? attrValue : '');\n if (value.length > 0) {\n image.setAttribute('style', value);\n image.setAttribute('data-mce-style', value);\n } else {\n image.removeAttribute('style');\n }\n };\n var setSize = function (name$$1, normalizeCss) {\n return function (image, name$$1, value) {\n if (image.style[name$$1]) {\n image.style[name$$1] = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n normalizeStyle(image, normalizeCss);\n } else {\n setAttrib(image, name$$1, value);\n }\n };\n };\n var getSize = function (image, name$$1) {\n if (image.style[name$$1]) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style[name$$1]);\n } else {\n return getAttrib(image, name$$1);\n }\n };\n var setHspace = function (image, value) {\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n image.style.marginLeft = pxValue;\n image.style.marginRight = pxValue;\n };\n var setVspace = function (image, value) {\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n image.style.marginTop = pxValue;\n image.style.marginBottom = pxValue;\n };\n var setBorder = function (image, value) {\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n image.style.borderWidth = pxValue;\n };\n var setBorderStyle = function (image, value) {\n image.style.borderStyle = value;\n };\n var getBorderStyle = function (image) {\n return getStyle(image, 'borderStyle');\n };\n var isFigure = function (elm) {\n return elm.nodeName === 'FIGURE';\n };\n var defaultData = function () {\n return {\n src: '',\n alt: '',\n title: '',\n width: '',\n height: '',\n class: '',\n style: '',\n caption: false,\n hspace: '',\n vspace: '',\n border: '',\n borderStyle: ''\n };\n };\n var getStyleValue = function (normalizeCss, data) {\n var image = document.createElement('img');\n setAttrib(image, 'style', data.style);\n if (getHspace(image) || data.hspace !== '') {\n setHspace(image, data.hspace);\n }\n if (getVspace(image) || data.vspace !== '') {\n setVspace(image, data.vspace);\n }\n if (getBorder(image) || data.border !== '') {\n setBorder(image, data.border);\n }\n if (getBorderStyle(image) || data.borderStyle !== '') {\n setBorderStyle(image, data.borderStyle);\n }\n return normalizeCss(image.getAttribute('style'));\n };\n var create = function (normalizeCss, data) {\n var image = document.createElement('img');\n write(normalizeCss, merge(data, { caption: false }), image);\n setAttrib(image, 'alt', data.alt);\n if (data.caption) {\n var figure = DOM.create('figure', { class: 'image' });\n figure.appendChild(image);\n figure.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));\n figure.contentEditable = 'false';\n return figure;\n } else {\n return image;\n }\n };\n var read = function (normalizeCss, image) {\n return {\n src: getAttrib(image, 'src'),\n alt: getAttrib(image, 'alt'),\n title: getAttrib(image, 'title'),\n width: getSize(image, 'width'),\n height: getSize(image, 'height'),\n class: getAttrib(image, 'class'),\n style: normalizeCss(getAttrib(image, 'style')),\n caption: hasCaption(image),\n hspace: getHspace(image),\n vspace: getVspace(image),\n border: getBorder(image),\n borderStyle: getStyle(image, 'borderStyle')\n };\n };\n var updateProp = function (image, oldData, newData, name$$1, set) {\n if (newData[name$$1] !== oldData[name$$1]) {\n set(image, name$$1, newData[name$$1]);\n }\n };\n var normalized = function (set, normalizeCss) {\n return function (image, name$$1, value) {\n set(image, value);\n normalizeStyle(image, normalizeCss);\n };\n };\n var write = function (normalizeCss, newData, image) {\n var oldData = read(normalizeCss, image);\n updateProp(image, oldData, newData, 'caption', function (image, _name, _value) {\n return toggleCaption(image);\n });\n updateProp(image, oldData, newData, 'src', setAttrib);\n updateProp(image, oldData, newData, 'alt', setAttrib);\n updateProp(image, oldData, newData, 'title', setAttrib);\n updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss));\n updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss));\n updateProp(image, oldData, newData, 'class', setAttrib);\n updateProp(image, oldData, newData, 'style', normalized(function (image, value) {\n return setAttrib(image, 'style', value);\n }, normalizeCss));\n updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss));\n updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss));\n updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss));\n updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss));\n };\n\n var normalizeCss = function (editor, cssText) {\n var css = editor.dom.styles.parse(cssText);\n var mergedCss = $_9v7cmwcujkmcwomi.mergeMargins(css);\n var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss));\n return editor.dom.styles.serialize(compressed);\n };\n var getSelectedImage = function (editor) {\n var imgElm = editor.selection.getNode();\n var figureElm = editor.dom.getParent(imgElm, 'figure.image');\n if (figureElm) {\n return editor.dom.select('img', figureElm)[0];\n }\n if (imgElm && (imgElm.nodeName !== 'IMG' || imgElm.getAttribute('data-mce-object') || imgElm.getAttribute('data-mce-placeholder'))) {\n return null;\n }\n return imgElm;\n };\n var splitTextBlock = function (editor, figure) {\n var dom = editor.dom;\n var textBlock = dom.getParent(figure.parentNode, function (node) {\n return editor.schema.getTextBlockElements()[node.nodeName];\n });\n if (textBlock) {\n return dom.split(textBlock, figure);\n } else {\n return figure;\n }\n };\n var readImageDataFromSelection = function (editor) {\n var image = getSelectedImage(editor);\n return image ? read(function (css) {\n return normalizeCss(editor, css);\n }, image) : defaultData();\n };\n var insertImageAtCaret = function (editor, data) {\n var elm = create(function (css) {\n return normalizeCss(editor, css);\n }, data);\n editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew');\n editor.focus();\n editor.selection.setContent(elm.outerHTML);\n var insertedElm = editor.dom.select('*[data-mce-id=\"__mcenew\"]')[0];\n editor.dom.setAttrib(insertedElm, 'data-mce-id', null);\n if (isFigure(insertedElm)) {\n var figure = splitTextBlock(editor, insertedElm);\n editor.selection.select(figure);\n } else {\n editor.selection.select(insertedElm);\n }\n };\n var syncSrcAttr = function (editor, image) {\n editor.dom.setAttrib(image, 'src', image.getAttribute('src'));\n };\n var deleteImage = function (editor, image) {\n if (image) {\n var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image;\n editor.dom.remove(elm);\n editor.focus();\n editor.nodeChanged();\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n }\n }\n };\n var writeImageDataToSelection = function (editor, data) {\n var image = getSelectedImage(editor);\n write(function (css) {\n return normalizeCss(editor, css);\n }, data, image);\n syncSrcAttr(editor, image);\n if (isFigure(image.parentNode)) {\n var figure = image.parentNode;\n splitTextBlock(editor, figure);\n editor.selection.select(image.parentNode);\n } else {\n editor.selection.select(image);\n $_9v7cmwcujkmcwomi.waitLoadImage(editor, data, image);\n }\n };\n var insertOrUpdateImage = function (editor, data) {\n var image = getSelectedImage(editor);\n if (image) {\n if (data.src) {\n writeImageDataToSelection(editor, data);\n } else {\n deleteImage(editor, image);\n }\n } else if (data.src) {\n insertImageAtCaret(editor, data);\n }\n };\n\n var updateVSpaceHSpaceBorder = function (editor) {\n return function (evt) {\n var dom = editor.dom;\n var rootControl = evt.control.rootControl;\n if (!$_gc1jdictjkmcwomd.hasAdvTab(editor)) {\n return;\n }\n var data = rootControl.toJSON();\n var css = dom.parseStyle(data.style);\n rootControl.find('#vspace').value('');\n rootControl.find('#hspace').value('');\n css = $_9v7cmwcujkmcwomi.mergeMargins(css);\n if (css['margin-top'] && css['margin-bottom'] || css['margin-right'] && css['margin-left']) {\n if (css['margin-top'] === css['margin-bottom']) {\n rootControl.find('#vspace').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['margin-top']));\n } else {\n rootControl.find('#vspace').value('');\n }\n if (css['margin-right'] === css['margin-left']) {\n rootControl.find('#hspace').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['margin-right']));\n } else {\n rootControl.find('#hspace').value('');\n }\n }\n if (css['border-width']) {\n rootControl.find('#border').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['border-width']));\n } else {\n rootControl.find('#border').value('');\n }\n if (css['border-style']) {\n rootControl.find('#borderStyle').value(css['border-style']);\n } else {\n rootControl.find('#borderStyle').value('');\n }\n rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));\n };\n };\n var updateStyle = function (editor, win) {\n win.find('#style').each(function (ctrl) {\n var value = getStyleValue(function (css) {\n return normalizeCss(editor, css);\n }, merge(defaultData(), win.toJSON()));\n ctrl.value(value);\n });\n };\n var makeTab = function (editor) {\n return {\n title: 'Advanced',\n type: 'form',\n pack: 'start',\n items: [\n {\n label: 'Style',\n name: 'style',\n type: 'textbox',\n onchange: updateVSpaceHSpaceBorder(editor)\n },\n {\n type: 'form',\n layout: 'grid',\n packV: 'start',\n columns: 2,\n padding: 0,\n defaults: {\n type: 'textbox',\n maxWidth: 50,\n onchange: function (evt) {\n updateStyle(editor, evt.control.rootControl);\n }\n },\n items: [\n {\n label: 'Vertical space',\n name: 'vspace'\n },\n {\n label: 'Border width',\n name: 'border'\n },\n {\n label: 'Horizontal space',\n name: 'hspace'\n },\n {\n label: 'Border style',\n type: 'listbox',\n name: 'borderStyle',\n width: 90,\n maxWidth: 90,\n onselect: function (evt) {\n updateStyle(editor, evt.control.rootControl);\n },\n values: [\n {\n text: 'Select...',\n value: ''\n },\n {\n text: 'Solid',\n value: 'solid'\n },\n {\n text: 'Dotted',\n value: 'dotted'\n },\n {\n text: 'Dashed',\n value: 'dashed'\n },\n {\n text: 'Double',\n value: 'double'\n },\n {\n text: 'Groove',\n value: 'groove'\n },\n {\n text: 'Ridge',\n value: 'ridge'\n },\n {\n text: 'Inset',\n value: 'inset'\n },\n {\n text: 'Outset',\n value: 'outset'\n },\n {\n text: 'None',\n value: 'none'\n },\n {\n text: 'Hidden',\n value: 'hidden'\n }\n ]\n }\n ]\n }\n ]\n };\n };\n var $_4qd61kd3jkmcwonl = { makeTab: makeTab };\n\n var doSyncSize = function (widthCtrl, heightCtrl) {\n widthCtrl.state.set('oldVal', widthCtrl.value());\n heightCtrl.state.set('oldVal', heightCtrl.value());\n };\n var doSizeControls = function (win, f) {\n var widthCtrl = win.find('#width')[0];\n var heightCtrl = win.find('#height')[0];\n var constrained = win.find('#constrain')[0];\n if (widthCtrl && heightCtrl && constrained) {\n f(widthCtrl, heightCtrl, constrained.checked());\n }\n };\n var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\n var oldWidth = widthCtrl.state.get('oldVal');\n var oldHeight = heightCtrl.state.get('oldVal');\n var newWidth = widthCtrl.value();\n var newHeight = heightCtrl.value();\n if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\n if (newWidth !== oldWidth) {\n newHeight = Math.round(newWidth / oldWidth * newHeight);\n if (!isNaN(newHeight)) {\n heightCtrl.value(newHeight);\n }\n } else {\n newWidth = Math.round(newHeight / oldHeight * newWidth);\n if (!isNaN(newWidth)) {\n widthCtrl.value(newWidth);\n }\n }\n }\n doSyncSize(widthCtrl, heightCtrl);\n };\n var syncSize = function (win) {\n doSizeControls(win, doSyncSize);\n };\n var updateSize = function (win) {\n doSizeControls(win, doUpdateSize);\n };\n var createUi = function () {\n var recalcSize = function (evt) {\n updateSize(evt.control.rootControl);\n };\n return {\n type: 'container',\n label: 'Dimensions',\n layout: 'flex',\n align: 'center',\n spacing: 5,\n items: [\n {\n name: 'width',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Width'\n },\n {\n type: 'label',\n text: 'x'\n },\n {\n name: 'height',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Height'\n },\n {\n name: 'constrain',\n type: 'checkbox',\n checked: true,\n text: 'Constrain proportions'\n }\n ]\n };\n };\n var $_14kdtjdajkmcwoo8 = {\n createUi: createUi,\n syncSize: syncSize,\n updateSize: updateSize\n };\n\n var onSrcChange = function (evt, editor) {\n var srcURL, prependURL, absoluteURLPattern;\n var meta = evt.meta || {};\n var control = evt.control;\n var rootControl = control.rootControl;\n var imageListCtrl = rootControl.find('#image-list')[0];\n if (imageListCtrl) {\n imageListCtrl.value(editor.convertURL(control.value(), 'src'));\n }\n global$2.each(meta, function (value, key) {\n rootControl.find('#' + key).value(value);\n });\n if (!meta.width && !meta.height) {\n srcURL = editor.convertURL(control.value(), 'src');\n prependURL = $_gc1jdictjkmcwomd.getPrependUrl(editor);\n absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');\n if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {\n srcURL = prependURL + srcURL;\n }\n control.value(srcURL);\n $_9v7cmwcujkmcwomi.getImageSize(editor.documentBaseURI.toAbsolute(control.value()), function (data) {\n if (data.width && data.height && $_gc1jdictjkmcwomd.hasDimensions(editor)) {\n rootControl.find('#width').value(data.width);\n rootControl.find('#height').value(data.height);\n $_14kdtjdajkmcwoo8.syncSize(rootControl);\n }\n });\n }\n };\n var onBeforeCall = function (evt) {\n evt.meta = evt.control.rootControl.toJSON();\n };\n var getGeneralItems = function (editor, imageListCtrl) {\n var generalFormItems = [\n {\n name: 'src',\n type: 'filepicker',\n filetype: 'image',\n label: 'Source',\n autofocus: true,\n onchange: function (evt) {\n onSrcChange(evt, editor);\n },\n onbeforecall: onBeforeCall\n },\n imageListCtrl\n ];\n if ($_gc1jdictjkmcwomd.hasDescription(editor)) {\n generalFormItems.push({\n name: 'alt',\n type: 'textbox',\n label: 'Image description'\n });\n }\n if ($_gc1jdictjkmcwomd.hasImageTitle(editor)) {\n generalFormItems.push({\n name: 'title',\n type: 'textbox',\n label: 'Image Title'\n });\n }\n if ($_gc1jdictjkmcwomd.hasDimensions(editor)) {\n generalFormItems.push($_14kdtjdajkmcwoo8.createUi());\n }\n if ($_gc1jdictjkmcwomd.getClassList(editor)) {\n generalFormItems.push({\n name: 'class',\n type: 'listbox',\n label: 'Class',\n values: $_9v7cmwcujkmcwomi.buildListItems($_gc1jdictjkmcwomd.getClassList(editor), function (item) {\n if (item.value) {\n item.textStyle = function () {\n return editor.formatter.getCssText({\n inline: 'img',\n classes: [item.value]\n });\n };\n }\n })\n });\n }\n if ($_gc1jdictjkmcwomd.hasImageCaption(editor)) {\n generalFormItems.push({\n name: 'caption',\n type: 'checkbox',\n label: 'Caption'\n });\n }\n return generalFormItems;\n };\n var makeTab$1 = function (editor, imageListCtrl) {\n return {\n title: 'General',\n type: 'form',\n items: getGeneralItems(editor, imageListCtrl)\n };\n };\n var $_bpqbuud9jkmcwoo5 = {\n makeTab: makeTab$1,\n getGeneralItems: getGeneralItems\n };\n\n var url = function () {\n return $_db9o2scwjkmcwomp.getOrDie('URL');\n };\n var createObjectURL = function (blob) {\n return url().createObjectURL(blob);\n };\n var revokeObjectURL = function (u) {\n url().revokeObjectURL(u);\n };\n var $_e8tsx4dcjkmcwooe = {\n createObjectURL: createObjectURL,\n revokeObjectURL: revokeObjectURL\n };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\n\n function XMLHttpRequest () {\n var f = $_db9o2scwjkmcwomp.getOrDie('XMLHttpRequest');\n return new f();\n }\n\n var noop = function () {\n };\n var pathJoin = function (path1, path2) {\n if (path1) {\n return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\n }\n return path2;\n };\n function Uploader (settings) {\n var defaultHandler = function (blobInfo, success, failure, progress) {\n var xhr, formData;\n xhr = new XMLHttpRequest();\n xhr.open('POST', settings.url);\n xhr.withCredentials = settings.credentials;\n xhr.upload.onprogress = function (e) {\n progress(e.loaded / e.total * 100);\n };\n xhr.onerror = function () {\n failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\n };\n xhr.onload = function () {\n var json;\n if (xhr.status < 200 || xhr.status >= 300) {\n failure('HTTP Error: ' + xhr.status);\n return;\n }\n json = JSON.parse(xhr.responseText);\n if (!json || typeof json.location !== 'string') {\n failure('Invalid JSON: ' + xhr.responseText);\n return;\n }\n success(pathJoin(settings.basePath, json.location));\n };\n formData = new FormData();\n formData.append('file', blobInfo.blob(), blobInfo.filename());\n xhr.send(formData);\n };\n var uploadBlob = function (blobInfo, handler) {\n return new global$1(function (resolve, reject) {\n try {\n handler(blobInfo, resolve, reject, noop);\n } catch (ex) {\n reject(ex.message);\n }\n });\n };\n var isDefaultHandler = function (handler) {\n return handler === defaultHandler;\n };\n var upload = function (blobInfo) {\n return !settings.url && isDefaultHandler(settings.handler) ? global$1.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler);\n };\n settings = global$2.extend({\n credentials: false,\n handler: defaultHandler\n }, settings);\n return { upload: upload };\n }\n\n var onFileInput = function (editor) {\n return function (evt) {\n var Throbber = global$5.get('Throbber');\n var rootControl = evt.control.rootControl;\n var throbber = new Throbber(rootControl.getEl());\n var file = evt.control.value();\n var blobUri = $_e8tsx4dcjkmcwooe.createObjectURL(file);\n var uploader = Uploader({\n url: $_gc1jdictjkmcwomd.getUploadUrl(editor),\n basePath: $_gc1jdictjkmcwomd.getUploadBasePath(editor),\n credentials: $_gc1jdictjkmcwomd.getUploadCredentials(editor),\n handler: $_gc1jdictjkmcwomd.getUploadHandler(editor)\n });\n var finalize = function () {\n throbber.hide();\n $_e8tsx4dcjkmcwooe.revokeObjectURL(blobUri);\n };\n throbber.show();\n return $_9v7cmwcujkmcwomi.blobToDataUri(file).then(function (dataUrl) {\n var blobInfo = editor.editorUpload.blobCache.create({\n blob: file,\n blobUri: blobUri,\n name: file.name ? file.name.replace(/\\.[^\\.]+$/, '') : null,\n base64: dataUrl.split(',')[1]\n });\n return uploader.upload(blobInfo).then(function (url) {\n var src = rootControl.find('#src');\n src.value(url);\n rootControl.find('tabpanel')[0].activateTab(0);\n src.fire('change');\n finalize();\n return url;\n });\n }).catch(function (err) {\n editor.windowManager.alert(err);\n finalize();\n });\n };\n };\n var acceptExts = '.jpg,.jpeg,.png,.gif';\n var makeTab$2 = function (editor) {\n return {\n title: 'Upload',\n type: 'form',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n padding: '20 20 20 20',\n items: [\n {\n type: 'container',\n layout: 'flex',\n direction: 'column',\n align: 'center',\n spacing: 10,\n items: [\n {\n text: 'Browse for an image',\n type: 'browsebutton',\n accept: acceptExts,\n onchange: onFileInput(editor)\n },\n {\n text: 'OR',\n type: 'label'\n }\n ]\n },\n {\n text: 'Drop an image here',\n type: 'dropzone',\n accept: acceptExts,\n height: 100,\n onchange: onFileInput(editor)\n }\n ]\n };\n };\n var $_26ghgddbjkmcwooa = { makeTab: makeTab$2 };\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n var submitForm = function (editor, evt) {\n var win = evt.control.getRoot();\n $_14kdtjdajkmcwoo8.updateSize(win);\n editor.undoManager.transact(function () {\n var data = merge(readImageDataFromSelection(editor), win.toJSON());\n insertOrUpdateImage(editor, data);\n });\n editor.editorUpload.uploadImagesAuto();\n };\n function Dialog (editor) {\n function showDialog(imageList) {\n var data = readImageDataFromSelection(editor);\n var win, imageListCtrl;\n if (imageList) {\n imageListCtrl = {\n type: 'listbox',\n label: 'Image list',\n name: 'image-list',\n values: $_9v7cmwcujkmcwomi.buildListItems(imageList, function (item) {\n item.value = editor.convertURL(item.value || item.url, 'src');\n }, [{\n text: 'None',\n value: ''\n }]),\n value: data.src && editor.convertURL(data.src, 'src'),\n onselect: function (e) {\n var altCtrl = win.find('#alt');\n if (!altCtrl.value() || e.lastControl && altCtrl.value() === e.lastControl.text()) {\n altCtrl.value(e.control.text());\n }\n win.find('#src').value(e.control.value()).fire('change');\n },\n onPostRender: function () {\n imageListCtrl = this;\n }\n };\n }\n if ($_gc1jdictjkmcwomd.hasAdvTab(editor) || $_gc1jdictjkmcwomd.hasUploadUrl(editor) || $_gc1jdictjkmcwomd.hasUploadHandler(editor)) {\n var body = [$_bpqbuud9jkmcwoo5.makeTab(editor, imageListCtrl)];\n if ($_gc1jdictjkmcwomd.hasAdvTab(editor)) {\n body.push($_4qd61kd3jkmcwonl.makeTab(editor));\n }\n if ($_gc1jdictjkmcwomd.hasUploadUrl(editor) || $_gc1jdictjkmcwomd.hasUploadHandler(editor)) {\n body.push($_26ghgddbjkmcwooa.makeTab(editor));\n }\n win = editor.windowManager.open({\n title: 'Insert/edit image',\n data: data,\n bodyType: 'tabpanel',\n body: body,\n onSubmit: curry(submitForm, editor)\n });\n } else {\n win = editor.windowManager.open({\n title: 'Insert/edit image',\n data: data,\n body: $_bpqbuud9jkmcwoo5.getGeneralItems(editor, imageListCtrl),\n onSubmit: curry(submitForm, editor)\n });\n }\n $_14kdtjdajkmcwoo8.syncSize(win);\n }\n function open() {\n $_9v7cmwcujkmcwomi.createImageList(editor, showDialog);\n }\n return { open: open };\n }\n\n var register = function (editor) {\n editor.addCommand('mceImage', Dialog(editor).open);\n };\n var $_cwg86qcrjkmcwom6 = { register: register };\n\n var hasImageClass = function (node) {\n var className = node.attr('class');\n return className && /\\bimage\\b/.test(className);\n };\n var toggleContentEditableState = function (state) {\n return function (nodes) {\n var i = nodes.length, node;\n var toggleContentEditable = function (node) {\n node.attr('contenteditable', state ? 'true' : null);\n };\n while (i--) {\n node = nodes[i];\n if (hasImageClass(node)) {\n node.attr('contenteditable', state ? 'false' : null);\n global$2.each(node.getAll('figcaption'), toggleContentEditable);\n }\n }\n };\n };\n var setup = function (editor) {\n editor.on('preInit', function () {\n editor.parser.addNodeFilter('figure', toggleContentEditableState(true));\n editor.serializer.addNodeFilter('figure', toggleContentEditableState(false));\n });\n };\n var $_8m7aavdhjkmcwooq = { setup: setup };\n\n var register$1 = function (editor) {\n editor.addButton('image', {\n icon: 'image',\n tooltip: 'Insert/edit image',\n onclick: Dialog(editor).open,\n stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image'\n });\n editor.addMenuItem('image', {\n icon: 'image',\n text: 'Image',\n onclick: Dialog(editor).open,\n context: 'insert',\n prependToContext: true\n });\n };\n var $_2zobs0dijkmcwoos = { register: register$1 };\n\n global.add('image', function (editor) {\n $_8m7aavdhjkmcwooq.setup(editor);\n $_2zobs0dijkmcwoos.register(editor);\n $_cwg86qcrjkmcwom6.register(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","module.exports = __webpack_public_path__ + \"img/CNANET.e7ad7e87.svg\";","(function () {\nvar modern = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var isBrandingEnabled = function (editor) {\n return editor.getParam('branding', true, 'boolean');\n };\n var hasMenubar = function (editor) {\n return getMenubar(editor) !== false;\n };\n var getMenubar = function (editor) {\n return editor.getParam('menubar');\n };\n var hasStatusbar = function (editor) {\n return editor.getParam('statusbar', true, 'boolean');\n };\n var getToolbarSize = function (editor) {\n return editor.getParam('toolbar_items_size');\n };\n var isReadOnly = function (editor) {\n return editor.getParam('readonly', false, 'boolean');\n };\n var getFixedToolbarContainer = function (editor) {\n return editor.getParam('fixed_toolbar_container');\n };\n var getInlineToolbarPositionHandler = function (editor) {\n return editor.getParam('inline_toolbar_position_handler');\n };\n var getMenu = function (editor) {\n return editor.getParam('menu');\n };\n var getRemovedMenuItems = function (editor) {\n return editor.getParam('removed_menuitems', '');\n };\n var getMinWidth = function (editor) {\n return editor.getParam('min_width', 100, 'number');\n };\n var getMinHeight = function (editor) {\n return editor.getParam('min_height', 100, 'number');\n };\n var getMaxWidth = function (editor) {\n return editor.getParam('max_width', 65535, 'number');\n };\n var getMaxHeight = function (editor) {\n return editor.getParam('max_height', 65535, 'number');\n };\n var isSkinDisabled = function (editor) {\n return editor.settings.skin === false;\n };\n var isInline = function (editor) {\n return editor.getParam('inline', false, 'boolean');\n };\n var getResize = function (editor) {\n var resize = editor.getParam('resize', 'vertical');\n if (resize === false) {\n return 'none';\n } else if (resize === 'both') {\n return 'both';\n } else {\n return 'vertical';\n }\n };\n var getSkinUrl = function (editor) {\n var settings = editor.settings;\n var skin = settings.skin;\n var skinUrl = settings.skin_url;\n if (skin !== false) {\n var skinName = skin ? skin : 'lightgray';\n if (skinUrl) {\n skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);\n } else {\n skinUrl = global$1.baseURL + '/skins/' + skinName;\n }\n }\n return skinUrl;\n };\n var getIndexedToolbars = function (settings, defaultToolbar) {\n var toolbars = [];\n for (var i = 1; i < 10; i++) {\n var toolbar = settings['toolbar' + i];\n if (!toolbar) {\n break;\n }\n toolbars.push(toolbar);\n }\n var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];\n return toolbars.length > 0 ? toolbars : mainToolbar;\n };\n var getToolbars = function (editor) {\n var toolbar = editor.getParam('toolbar');\n var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';\n if (toolbar === false) {\n return [];\n } else if (global$2.isArray(toolbar)) {\n return global$2.grep(toolbar, function (toolbar) {\n return toolbar.length > 0;\n });\n } else {\n return getIndexedToolbars(editor.settings, defaultToolbar);\n }\n };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n var fireSkinLoaded = function (editor) {\n return editor.fire('SkinLoaded');\n };\n var fireResizeEditor = function (editor) {\n return editor.fire('ResizeEditor');\n };\n var fireBeforeRenderUI = function (editor) {\n return editor.fire('BeforeRenderUI');\n };\n var $_1jkxpltzjkmcwsg4 = {\n fireSkinLoaded: fireSkinLoaded,\n fireResizeEditor: fireResizeEditor,\n fireBeforeRenderUI: fireBeforeRenderUI\n };\n\n var focus = function (panel, type) {\n return function () {\n var item = panel.find(type)[0];\n if (item) {\n item.focus(true);\n }\n };\n };\n var addKeys = function (editor, panel) {\n editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));\n editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));\n editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));\n panel.on('cancel', function () {\n editor.focus();\n });\n };\n var $_1mdekmu0jkmcwsg5 = { addKeys: addKeys };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var noop = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n };\n\n var compose = function (fa, fb) {\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n return fa(fb.apply(null, arguments));\n };\n };\n var constant = function (value) {\n return function () {\n return value;\n };\n };\n\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n\n\n\n var never = constant(false);\n var always = constant(true);\n\n var never$1 = never;\n var always$1 = always;\n var none = function () {\n return NONE;\n };\n var NONE = function () {\n var eq = function (o) {\n return o.isNone();\n };\n var call$$1 = function (thunk) {\n return thunk();\n };\n var id = function (n) {\n return n;\n };\n var noop$$1 = function () {\n };\n var nul = function () {\n return null;\n };\n var undef = function () {\n return undefined;\n };\n var me = {\n fold: function (n, s) {\n return n();\n },\n is: never$1,\n isSome: never$1,\n isNone: always$1,\n getOr: id,\n getOrThunk: call$$1,\n getOrDie: function (msg) {\n throw new Error(msg || 'error: getOrDie called on none.');\n },\n getOrNull: nul,\n getOrUndefined: undef,\n or: id,\n orThunk: call$$1,\n map: none,\n ap: none,\n each: noop$$1,\n bind: none,\n flatten: none,\n exists: never$1,\n forall: always$1,\n filter: none,\n equals: eq,\n equals_: eq,\n toArray: function () {\n return [];\n },\n toString: constant('none()')\n };\n if (Object.freeze)\n Object.freeze(me);\n return me;\n }();\n var some = function (a) {\n var constant_a = function () {\n return a;\n };\n var self = function () {\n return me;\n };\n var map = function (f) {\n return some(f(a));\n };\n var bind = function (f) {\n return f(a);\n };\n var me = {\n fold: function (n, s) {\n return s(a);\n },\n is: function (v) {\n return a === v;\n },\n isSome: always$1,\n isNone: never$1,\n getOr: constant_a,\n getOrThunk: constant_a,\n getOrDie: constant_a,\n getOrNull: constant_a,\n getOrUndefined: constant_a,\n or: self,\n orThunk: self,\n map: map,\n ap: function (optfab) {\n return optfab.fold(none, function (fab) {\n return some(fab(a));\n });\n },\n each: function (f) {\n f(a);\n },\n bind: bind,\n flatten: constant_a,\n exists: bind,\n forall: bind,\n filter: function (f) {\n return f(a) ? me : NONE;\n },\n equals: function (o) {\n return o.is(a);\n },\n equals_: function (o, elementEq) {\n return o.fold(never$1, function (b) {\n return elementEq(a, b);\n });\n },\n toArray: function () {\n return [a];\n },\n toString: function () {\n return 'some(' + a + ')';\n }\n };\n return me;\n };\n var from = function (value) {\n return value === null || value === undefined ? NONE : some(value);\n };\n var Option = {\n some: some,\n none: none,\n from: from\n };\n\n var getUiContainerDelta = function (ctrl) {\n var uiContainer = getUiContainer(ctrl);\n if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {\n var containerPos = global$3.DOM.getPos(uiContainer);\n var dx = uiContainer.scrollLeft - containerPos.x;\n var dy = uiContainer.scrollTop - containerPos.y;\n return Option.some({\n x: dx,\n y: dy\n });\n } else {\n return Option.none();\n }\n };\n var setUiContainer = function (editor, ctrl) {\n var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];\n ctrl.getRoot().uiContainer = uiContainer;\n };\n var getUiContainer = function (ctrl) {\n return ctrl ? ctrl.getRoot().uiContainer : null;\n };\n var inheritUiContainer = function (fromCtrl, toCtrl) {\n return toCtrl.uiContainer = getUiContainer(fromCtrl);\n };\n var $_5kmlp5u4jkmcwsge = {\n getUiContainerDelta: getUiContainerDelta,\n setUiContainer: setUiContainer,\n getUiContainer: getUiContainer,\n inheritUiContainer: inheritUiContainer\n };\n\n var createToolbar = function (editor, items, size) {\n var toolbarItems = [];\n var buttonGroup;\n if (!items) {\n return;\n }\n global$2.each(items.split(/[ ,]/), function (item) {\n var itemName;\n var bindSelectorChanged = function () {\n var selection = editor.selection;\n if (item.settings.stateSelector) {\n selection.selectorChanged(item.settings.stateSelector, function (state) {\n item.active(state);\n }, true);\n }\n if (item.settings.disabledStateSelector) {\n selection.selectorChanged(item.settings.disabledStateSelector, function (state) {\n item.disabled(state);\n });\n }\n };\n if (item === '|') {\n buttonGroup = null;\n } else {\n if (!buttonGroup) {\n buttonGroup = {\n type: 'buttongroup',\n items: []\n };\n toolbarItems.push(buttonGroup);\n }\n if (editor.buttons[item]) {\n itemName = item;\n item = editor.buttons[itemName];\n if (typeof item === 'function') {\n item = item();\n }\n item.type = item.type || 'button';\n item.size = size;\n item = global$4.create(item);\n buttonGroup.items.push(item);\n if (editor.initialized) {\n bindSelectorChanged();\n } else {\n editor.on('init', bindSelectorChanged);\n }\n }\n }\n });\n return {\n type: 'toolbar',\n layout: 'flow',\n items: toolbarItems\n };\n };\n var createToolbars = function (editor, size) {\n var toolbars = [];\n var addToolbar = function (items) {\n if (items) {\n toolbars.push(createToolbar(editor, items, size));\n }\n };\n global$2.each(getToolbars(editor), function (toolbar) {\n addToolbar(toolbar);\n });\n if (toolbars.length) {\n return {\n type: 'panel',\n layout: 'stack',\n classes: 'toolbar-grp',\n ariaRoot: true,\n ariaRemember: true,\n items: toolbars\n };\n }\n };\n var $_5g1hacu7jkmcwsgn = {\n createToolbar: createToolbar,\n createToolbars: createToolbars\n };\n\n var DOM = global$3.DOM;\n var toClientRect = function (geomRect) {\n return {\n left: geomRect.x,\n top: geomRect.y,\n width: geomRect.w,\n height: geomRect.h,\n right: geomRect.x + geomRect.w,\n bottom: geomRect.y + geomRect.h\n };\n };\n var hideAllFloatingPanels = function (editor) {\n global$2.each(editor.contextToolbars, function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.hide();\n }\n });\n };\n var movePanelTo = function (panel, pos) {\n panel.moveTo(pos.left, pos.top);\n };\n var togglePositionClass = function (panel, relPos, predicate) {\n relPos = relPos ? relPos.substr(0, 2) : '';\n global$2.each({\n t: 'down',\n b: 'up'\n }, function (cls, pos) {\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));\n });\n global$2.each({\n l: 'left',\n r: 'right'\n }, function (cls, pos) {\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));\n });\n };\n var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {\n panelRect = toClientRect({\n x: x,\n y: y,\n w: panelRect.w,\n h: panelRect.h\n });\n if (handler) {\n panelRect = handler({\n elementRect: toClientRect(elementRect),\n contentAreaRect: toClientRect(contentAreaRect),\n panelRect: panelRect\n });\n }\n return panelRect;\n };\n var addContextualToolbars = function (editor) {\n var scrollContainer;\n var getContextToolbars = function () {\n return editor.contextToolbars || [];\n };\n var getElementRect = function (elm) {\n var pos, targetRect, root;\n pos = DOM.getPos(editor.getContentAreaContainer());\n targetRect = editor.dom.getRect(elm);\n root = editor.dom.getRoot();\n if (root.nodeName === 'BODY') {\n targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;\n targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;\n }\n targetRect.x += pos.x;\n targetRect.y += pos.y;\n return targetRect;\n };\n var reposition = function (match, shouldShow) {\n var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;\n var handler = getInlineToolbarPositionHandler(editor);\n if (editor.removed) {\n return;\n }\n if (!match || !match.toolbar.panel) {\n hideAllFloatingPanels(editor);\n return;\n }\n testPositions = [\n 'bc-tc',\n 'tc-bc',\n 'tl-bl',\n 'bl-tl',\n 'tr-br',\n 'br-tr'\n ];\n panel = match.toolbar.panel;\n if (shouldShow) {\n panel.show();\n }\n elementRect = getElementRect(match.element);\n panelRect = DOM.getRect(panel.getEl());\n contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());\n var delta = $_5kmlp5u4jkmcwsge.getUiContainerDelta(panel).getOr({\n x: 0,\n y: 0\n });\n elementRect.x += delta.x;\n elementRect.y += delta.y;\n panelRect.x += delta.x;\n panelRect.y += delta.y;\n contentAreaRect.x += delta.x;\n contentAreaRect.y += delta.y;\n smallElementWidthThreshold = 25;\n if (DOM.getStyle(match.element, 'display', true) !== 'inline') {\n var clientRect = match.element.getBoundingClientRect();\n elementRect.w = clientRect.width;\n elementRect.h = clientRect.height;\n }\n if (!editor.inline) {\n contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;\n }\n if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {\n elementRect = global$6.inflate(elementRect, 0, 8);\n }\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);\n elementRect = global$6.clamp(elementRect, contentAreaRect);\n if (relPos) {\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n } else {\n contentAreaRect.h += panelRect.h;\n elementRect = global$6.intersect(contentAreaRect, elementRect);\n if (elementRect) {\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [\n 'bc-tc',\n 'bl-tl',\n 'br-tr'\n ]);\n if (relPos) {\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n } else {\n movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));\n }\n } else {\n panel.hide();\n }\n }\n togglePositionClass(panel, relPos, function (pos1, pos2) {\n return pos1 === pos2;\n });\n };\n var repositionHandler = function (show) {\n return function () {\n var execute = function () {\n if (editor.selection) {\n reposition(findFrontMostMatch(editor.selection.getNode()), show);\n }\n };\n global$7.requestAnimationFrame(execute);\n };\n };\n var bindScrollEvent = function (panel) {\n if (!scrollContainer) {\n var reposition_1 = repositionHandler(true);\n var uiContainer_1 = $_5kmlp5u4jkmcwsge.getUiContainer(panel);\n scrollContainer = editor.selection.getScrollContainer() || editor.getWin();\n DOM.bind(scrollContainer, 'scroll', reposition_1);\n DOM.bind(uiContainer_1, 'scroll', reposition_1);\n editor.on('remove', function () {\n DOM.unbind(scrollContainer, 'scroll', reposition_1);\n DOM.unbind(uiContainer_1, 'scroll', reposition_1);\n });\n }\n };\n var showContextToolbar = function (match) {\n var panel;\n if (match.toolbar.panel) {\n match.toolbar.panel.show();\n reposition(match);\n return;\n }\n panel = global$4.create({\n type: 'floatpanel',\n role: 'dialog',\n classes: 'tinymce tinymce-inline arrow',\n ariaLabel: 'Inline toolbar',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n autohide: false,\n autofix: true,\n fixed: true,\n border: 1,\n items: $_5g1hacu7jkmcwsgn.createToolbar(editor, match.toolbar.items),\n oncancel: function () {\n editor.focus();\n }\n });\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\n bindScrollEvent(panel);\n match.toolbar.panel = panel;\n panel.renderTo().reflow();\n reposition(match);\n };\n var hideAllContextToolbars = function () {\n global$2.each(getContextToolbars(), function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.hide();\n }\n });\n };\n var findFrontMostMatch = function (targetElm) {\n var i, y, parentsAndSelf;\n var toolbars = getContextToolbars();\n parentsAndSelf = editor.$(targetElm).parents().add(targetElm);\n for (i = parentsAndSelf.length - 1; i >= 0; i--) {\n for (y = toolbars.length - 1; y >= 0; y--) {\n if (toolbars[y].predicate(parentsAndSelf[i])) {\n return {\n toolbar: toolbars[y],\n element: parentsAndSelf[i]\n };\n }\n }\n }\n return null;\n };\n editor.on('click keyup setContent ObjectResized', function (e) {\n if (e.type === 'setcontent' && !e.selection) {\n return;\n }\n global$7.setEditorTimeout(editor, function () {\n var match;\n match = findFrontMostMatch(editor.selection.getNode());\n if (match) {\n hideAllContextToolbars();\n showContextToolbar(match);\n } else {\n hideAllContextToolbars();\n }\n });\n });\n editor.on('blur hide contextmenu', hideAllContextToolbars);\n editor.on('ObjectResizeStart', function () {\n var match = findFrontMostMatch(editor.selection.getNode());\n if (match && match.toolbar.panel) {\n match.toolbar.panel.hide();\n }\n });\n editor.on('ResizeEditor ResizeWindow', repositionHandler(true));\n editor.on('nodeChange', repositionHandler(false));\n editor.on('remove', function () {\n global$2.each(getContextToolbars(), function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.remove();\n }\n });\n editor.contextToolbars = {};\n });\n editor.shortcuts.add('ctrl+shift+e > ctrl+shift+p', '', function () {\n var match = findFrontMostMatch(editor.selection.getNode());\n if (match && match.toolbar.panel) {\n match.toolbar.panel.items()[0].focus();\n }\n });\n };\n var $_44ggy0u1jkmcwsg7 = { addContextualToolbars: addContextualToolbars };\n\n var typeOf = function (x) {\n if (x === null)\n return 'null';\n var t = typeof x;\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\n return 'array';\n if (t === 'object' && String.prototype.isPrototypeOf(x))\n return 'string';\n return t;\n };\n var isType = function (type) {\n return function (value) {\n return typeOf(value) === type;\n };\n };\n\n\n\n\n\n\n var isFunction = isType('function');\n var isNumber = isType('number');\n\n var rawIndexOf = function () {\n var pIndexOf = Array.prototype.indexOf;\n var fastIndex = function (xs, x) {\n return pIndexOf.call(xs, x);\n };\n var slowIndex = function (xs, x) {\n return slowIndexOf(xs, x);\n };\n return pIndexOf === undefined ? slowIndex : fastIndex;\n }();\n var indexOf = function (xs, x) {\n var r = rawIndexOf(xs, x);\n return r === -1 ? Option.none() : Option.some(r);\n };\n\n var exists = function (xs, pred) {\n return findIndex(xs, pred).isSome();\n };\n\n\n var map = function (xs, f) {\n var len = xs.length;\n var r = new Array(len);\n for (var i = 0; i < len; i++) {\n var x = xs[i];\n r[i] = f(x, i, xs);\n }\n return r;\n };\n var each = function (xs, f) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n f(x, i, xs);\n }\n };\n\n\n var filter = function (xs, pred) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n r.push(x);\n }\n }\n return r;\n };\n\n\n var foldl = function (xs, f, acc) {\n each(xs, function (x) {\n acc = f(acc, x);\n });\n return acc;\n };\n var find = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(x);\n }\n }\n return Option.none();\n };\n var findIndex = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(i);\n }\n }\n return Option.none();\n };\n var slowIndexOf = function (xs, x) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (xs[i] === x) {\n return i;\n }\n }\n return -1;\n };\n var push = Array.prototype.push;\n var flatten = function (xs) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (!Array.prototype.isPrototypeOf(xs[i]))\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n push.apply(r, xs[i]);\n }\n return r;\n };\n\n\n\n var slice = Array.prototype.slice;\n var reverse = function (xs) {\n var r = slice.call(xs, 0);\n r.reverse();\n return r;\n };\n\n\n\n\n\n\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n return slice.call(x);\n };\n\n var defaultMenus = {\n file: {\n title: 'File',\n items: 'newdocument restoredraft | preview | print'\n },\n edit: {\n title: 'Edit',\n items: 'undo redo | cut copy paste pastetext | selectall'\n },\n view: {\n title: 'View',\n items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen'\n },\n insert: {\n title: 'Insert',\n items: 'image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime'\n },\n format: {\n title: 'Format',\n items: 'bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat'\n },\n tools: {\n title: 'Tools',\n items: 'spellchecker spellcheckerlanguage | a11ycheck code'\n },\n table: { title: 'Table' },\n help: { title: 'Help' }\n };\n var delimiterMenuNamePair = function () {\n return {\n name: '|',\n item: { text: '|' }\n };\n };\n var createMenuNameItemPair = function (name, item) {\n var menuItem = item ? {\n name: name,\n item: item\n } : null;\n return name === '|' ? delimiterMenuNamePair() : menuItem;\n };\n var hasItemName = function (namedMenuItems, name) {\n return findIndex(namedMenuItems, function (namedMenuItem) {\n return namedMenuItem.name === name;\n }).isSome();\n };\n var isSeparator = function (namedMenuItem) {\n return namedMenuItem && namedMenuItem.item.text === '|';\n };\n var cleanupMenu = function (namedMenuItems, removedMenuItems) {\n var menuItemsPass1 = filter(namedMenuItems, function (namedMenuItem) {\n return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;\n });\n var menuItemsPass2 = filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {\n return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);\n });\n return filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {\n return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;\n });\n };\n var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {\n var menuButton, menu, namedMenuItems, isUserDefined;\n if (menus) {\n menu = menus[context];\n isUserDefined = true;\n } else {\n menu = defaultMenus[context];\n }\n if (menu) {\n menuButton = { text: menu.title };\n namedMenuItems = [];\n global$2.each((menu.items || '').split(/[ ,]/), function (name) {\n var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);\n if (namedMenuItem) {\n namedMenuItems.push(namedMenuItem);\n }\n });\n if (!isUserDefined) {\n global$2.each(editorMenuItems, function (item, name) {\n if (item.context === context && !hasItemName(namedMenuItems, name)) {\n if (item.separator === 'before') {\n namedMenuItems.push(delimiterMenuNamePair());\n }\n if (item.prependToContext) {\n namedMenuItems.unshift(createMenuNameItemPair(name, item));\n } else {\n namedMenuItems.push(createMenuNameItemPair(name, item));\n }\n if (item.separator === 'after') {\n namedMenuItems.push(delimiterMenuNamePair());\n }\n }\n });\n }\n menuButton.menu = map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {\n return menuItem.item;\n });\n if (!menuButton.menu.length) {\n return null;\n }\n }\n return menuButton;\n };\n var getDefaultMenubar = function (editor) {\n var name;\n var defaultMenuBar = [];\n var menu = getMenu(editor);\n if (menu) {\n for (name in menu) {\n defaultMenuBar.push(name);\n }\n } else {\n for (name in defaultMenus) {\n defaultMenuBar.push(name);\n }\n }\n return defaultMenuBar;\n };\n var createMenuButtons = function (editor) {\n var menuButtons = [];\n var defaultMenuBar = getDefaultMenubar(editor);\n var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));\n var menubar = getMenubar(editor);\n var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;\n for (var i = 0; i < enabledMenuNames.length; i++) {\n var menuItems = enabledMenuNames[i];\n var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);\n if (menu) {\n menuButtons.push(menu);\n }\n }\n return menuButtons;\n };\n var $_3ke8tlu8jkmcwsgq = { createMenuButtons: createMenuButtons };\n\n var DOM$1 = global$3.DOM;\n var getSize = function (elm) {\n return {\n width: elm.clientWidth,\n height: elm.clientHeight\n };\n };\n var resizeTo = function (editor, width, height) {\n var containerElm, iframeElm, containerSize, iframeSize;\n containerElm = editor.getContainer();\n iframeElm = editor.getContentAreaContainer().firstChild;\n containerSize = getSize(containerElm);\n iframeSize = getSize(iframeElm);\n if (width !== null) {\n width = Math.max(getMinWidth(editor), width);\n width = Math.min(getMaxWidth(editor), width);\n DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));\n DOM$1.setStyle(iframeElm, 'width', width);\n }\n height = Math.max(getMinHeight(editor), height);\n height = Math.min(getMaxHeight(editor), height);\n DOM$1.setStyle(iframeElm, 'height', height);\n $_1jkxpltzjkmcwsg4.fireResizeEditor(editor);\n };\n var resizeBy = function (editor, dw, dh) {\n var elm = editor.getContentAreaContainer();\n resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);\n };\n var $_focm2tubjkmcwsh5 = {\n resizeTo: resizeTo,\n resizeBy: resizeBy\n };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var api = function (elm) {\n return {\n element: function () {\n return elm;\n }\n };\n };\n var trigger = function (sidebar, panel, callbackName) {\n var callback = sidebar.settings[callbackName];\n if (callback) {\n callback(api(panel.getEl('body')));\n }\n };\n var hidePanels = function (name, container, sidebars) {\n global$2.each(sidebars, function (sidebar) {\n var panel = container.items().filter('#' + sidebar.name)[0];\n if (panel && panel.visible() && sidebar.name !== name) {\n trigger(sidebar, panel, 'onhide');\n panel.visible(false);\n }\n });\n };\n var deactivateButtons = function (toolbar) {\n toolbar.items().each(function (ctrl) {\n ctrl.active(false);\n });\n };\n var findSidebar = function (sidebars, name) {\n return global$2.grep(sidebars, function (sidebar) {\n return sidebar.name === name;\n })[0];\n };\n var showPanel = function (editor, name, sidebars) {\n return function (e) {\n var btnCtrl = e.control;\n var container = btnCtrl.parents().filter('panel')[0];\n var panel = container.find('#' + name)[0];\n var sidebar = findSidebar(sidebars, name);\n hidePanels(name, container, sidebars);\n deactivateButtons(btnCtrl.parent());\n if (panel && panel.visible()) {\n trigger(sidebar, panel, 'onhide');\n panel.hide();\n btnCtrl.active(false);\n } else {\n if (panel) {\n panel.show();\n trigger(sidebar, panel, 'onshow');\n } else {\n panel = global$4.create({\n type: 'container',\n name: name,\n layout: 'stack',\n classes: 'sidebar-panel',\n html: ''\n });\n container.prepend(panel);\n trigger(sidebar, panel, 'onrender');\n trigger(sidebar, panel, 'onshow');\n }\n btnCtrl.active(true);\n }\n $_1jkxpltzjkmcwsg4.fireResizeEditor(editor);\n };\n };\n var isModernBrowser = function () {\n return !global$8.ie || global$8.ie >= 11;\n };\n var hasSidebar = function (editor) {\n return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;\n };\n var createSidebar = function (editor) {\n var buttons = global$2.map(editor.sidebars, function (sidebar) {\n var settings = sidebar.settings;\n return {\n type: 'button',\n icon: settings.icon,\n image: settings.image,\n tooltip: settings.tooltip,\n onclick: showPanel(editor, sidebar.name, editor.sidebars)\n };\n });\n return {\n type: 'panel',\n name: 'sidebar',\n layout: 'stack',\n classes: 'sidebar',\n items: [{\n type: 'toolbar',\n layout: 'stack',\n classes: 'sidebar-toolbar',\n items: buttons\n }]\n };\n };\n var $_93h32bucjkmcwsh7 = {\n hasSidebar: hasSidebar,\n createSidebar: createSidebar\n };\n\n var fireSkinLoaded$1 = function (editor) {\n var done = function () {\n editor._skinLoaded = true;\n $_1jkxpltzjkmcwsg4.fireSkinLoaded(editor);\n };\n return function () {\n if (editor.initialized) {\n done();\n } else {\n editor.on('init', done);\n }\n };\n };\n var $_2tsyb2uejkmcwsha = { fireSkinLoaded: fireSkinLoaded$1 };\n\n var DOM$2 = global$3.DOM;\n var switchMode = function (panel) {\n return function (e) {\n panel.find('*').disabled(e.mode === 'readonly');\n };\n };\n var editArea = function (border) {\n return {\n type: 'panel',\n name: 'iframe',\n layout: 'stack',\n classes: 'edit-area',\n border: border,\n html: ''\n };\n };\n var editAreaContainer = function (editor) {\n return {\n type: 'panel',\n layout: 'stack',\n classes: 'edit-aria-container',\n border: '1 0 0 0',\n items: [\n editArea('0'),\n $_93h32bucjkmcwsh7.createSidebar(editor)\n ]\n };\n };\n var render = function (editor, theme, args) {\n var panel, resizeHandleCtrl, startSize;\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM$2.styleSheetLoader.load(args.skinUiCss, $_2tsyb2uejkmcwsha.fireSkinLoaded(editor));\n } else {\n $_2tsyb2uejkmcwsha.fireSkinLoaded(editor)();\n }\n panel = theme.panel = global$4.create({\n type: 'panel',\n role: 'application',\n classes: 'tinymce',\n style: 'visibility: hidden',\n layout: 'stack',\n border: 1,\n items: [\n {\n type: 'container',\n classes: 'top-part',\n items: [\n hasMenubar(editor) === false ? null : {\n type: 'menubar',\n border: '0 0 1 0',\n items: $_3ke8tlu8jkmcwsgq.createMenuButtons(editor)\n },\n $_5g1hacu7jkmcwsgn.createToolbars(editor, getToolbarSize(editor))\n ]\n },\n $_93h32bucjkmcwsh7.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')\n ]\n });\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\n if (getResize(editor) !== 'none') {\n resizeHandleCtrl = {\n type: 'resizehandle',\n direction: getResize(editor),\n onResizeStart: function () {\n var elm = editor.getContentAreaContainer().firstChild;\n startSize = {\n width: elm.clientWidth,\n height: elm.clientHeight\n };\n },\n onResize: function (e) {\n if (getResize(editor) === 'both') {\n $_focm2tubjkmcwsh5.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);\n } else {\n $_focm2tubjkmcwsh5.resizeTo(editor, null, startSize.height + e.deltaY);\n }\n }\n };\n }\n if (hasStatusbar(editor)) {\n var linkHtml = 'tinymce';\n var html = global$5.translate([\n 'Powered by {0}',\n linkHtml\n ]);\n var brandingLabel = isBrandingEnabled(editor) ? {\n type: 'label',\n classes: 'branding',\n html: ' ' + html\n } : null;\n panel.add({\n type: 'panel',\n name: 'statusbar',\n classes: 'statusbar',\n layout: 'flow',\n border: '1 0 0 0',\n ariaRoot: true,\n items: [\n {\n type: 'elementpath',\n editor: editor\n },\n resizeHandleCtrl,\n brandingLabel\n ]\n });\n }\n $_1jkxpltzjkmcwsg4.fireBeforeRenderUI(editor);\n editor.on('SwitchMode', switchMode(panel));\n panel.renderBefore(args.targetNode).reflow();\n if (isReadOnly(editor)) {\n editor.setMode('readonly');\n }\n if (args.width) {\n DOM$2.setStyle(panel.getEl(), 'width', args.width);\n }\n editor.on('remove', function () {\n panel.remove();\n panel = null;\n });\n $_1mdekmu0jkmcwsg5.addKeys(editor, panel);\n $_44ggy0u1jkmcwsg7.addContextualToolbars(editor);\n return {\n iframeContainer: panel.find('#iframe')[0].getEl(),\n editorContainer: panel.getEl()\n };\n };\n var $_9mz4sntvjkmcwsft = { render: render };\n\n var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\n\n var count = 0;\n var funcs = {\n id: function () {\n return 'mceu_' + count++;\n },\n create: function (name$$1, attrs, children) {\n var elm = document.createElement(name$$1);\n global$3.DOM.setAttribs(elm, attrs);\n if (typeof children === 'string') {\n elm.innerHTML = children;\n } else {\n global$2.each(children, function (child) {\n if (child.nodeType) {\n elm.appendChild(child);\n }\n });\n }\n return elm;\n },\n createFragment: function (html) {\n return global$3.DOM.createFragment(html);\n },\n getWindowSize: function () {\n return global$3.DOM.getViewPort();\n },\n getSize: function (elm) {\n var width, height;\n if (elm.getBoundingClientRect) {\n var rect = elm.getBoundingClientRect();\n width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);\n height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);\n } else {\n width = elm.offsetWidth;\n height = elm.offsetHeight;\n }\n return {\n width: width,\n height: height\n };\n },\n getPos: function (elm, root) {\n return global$3.DOM.getPos(elm, root || funcs.getContainer());\n },\n getContainer: function () {\n return global$8.container ? global$8.container : document.body;\n },\n getViewPort: function (win) {\n return global$3.DOM.getViewPort(win);\n },\n get: function (id) {\n return document.getElementById(id);\n },\n addClass: function (elm, cls) {\n return global$3.DOM.addClass(elm, cls);\n },\n removeClass: function (elm, cls) {\n return global$3.DOM.removeClass(elm, cls);\n },\n hasClass: function (elm, cls) {\n return global$3.DOM.hasClass(elm, cls);\n },\n toggleClass: function (elm, cls, state) {\n return global$3.DOM.toggleClass(elm, cls, state);\n },\n css: function (elm, name$$1, value) {\n return global$3.DOM.setStyle(elm, name$$1, value);\n },\n getRuntimeStyle: function (elm, name$$1) {\n return global$3.DOM.getStyle(elm, name$$1, true);\n },\n on: function (target, name$$1, callback, scope) {\n return global$3.DOM.bind(target, name$$1, callback, scope);\n },\n off: function (target, name$$1, callback) {\n return global$3.DOM.unbind(target, name$$1, callback);\n },\n fire: function (target, name$$1, args) {\n return global$3.DOM.fire(target, name$$1, args);\n },\n innerHtml: function (elm, html) {\n global$3.DOM.setHTML(elm, html);\n }\n };\n\n var isStatic = function (elm) {\n return funcs.getRuntimeStyle(elm, 'position') === 'static';\n };\n var isFixed = function (ctrl) {\n return ctrl.state.get('fixed');\n };\n function calculateRelativePosition(ctrl, targetElm, rel) {\n var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;\n viewport = getWindowViewPort();\n pos = funcs.getPos(targetElm, $_5kmlp5u4jkmcwsge.getUiContainer(ctrl));\n x = pos.x;\n y = pos.y;\n if (isFixed(ctrl) && isStatic(document.body)) {\n x -= viewport.x;\n y -= viewport.y;\n }\n ctrlElm = ctrl.getEl();\n size = funcs.getSize(ctrlElm);\n selfW = size.width;\n selfH = size.height;\n size = funcs.getSize(targetElm);\n targetW = size.width;\n targetH = size.height;\n rel = (rel || '').split('');\n if (rel[0] === 'b') {\n y += targetH;\n }\n if (rel[1] === 'r') {\n x += targetW;\n }\n if (rel[0] === 'c') {\n y += Math.round(targetH / 2);\n }\n if (rel[1] === 'c') {\n x += Math.round(targetW / 2);\n }\n if (rel[3] === 'b') {\n y -= selfH;\n }\n if (rel[4] === 'r') {\n x -= selfW;\n }\n if (rel[3] === 'c') {\n y -= Math.round(selfH / 2);\n }\n if (rel[4] === 'c') {\n x -= Math.round(selfW / 2);\n }\n return {\n x: x,\n y: y,\n w: selfW,\n h: selfH\n };\n }\n var getUiContainerViewPort = function (customUiContainer) {\n return {\n x: 0,\n y: 0,\n w: customUiContainer.scrollWidth - 1,\n h: customUiContainer.scrollHeight - 1\n };\n };\n var getWindowViewPort = function () {\n var win = window;\n var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);\n var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);\n var w = win.innerWidth || document.documentElement.clientWidth;\n var h = win.innerHeight || document.documentElement.clientHeight;\n return {\n x: x,\n y: y,\n w: x + w,\n h: y + h\n };\n };\n var getViewPortRect = function (ctrl) {\n var customUiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(ctrl);\n return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();\n };\n var $_77p0ikukjkmcwsie = {\n testMoveRel: function (elm, rels) {\n var viewPortRect = getViewPortRect(this);\n for (var i = 0; i < rels.length; i++) {\n var pos = calculateRelativePosition(this, elm, rels[i]);\n if (isFixed(this)) {\n if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {\n return rels[i];\n }\n } else {\n if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h) {\n return rels[i];\n }\n }\n }\n return rels[0];\n },\n moveRel: function (elm, rel) {\n if (typeof rel !== 'string') {\n rel = this.testMoveRel(elm, rel);\n }\n var pos = calculateRelativePosition(this, elm, rel);\n return this.moveTo(pos.x, pos.y);\n },\n moveBy: function (dx, dy) {\n var self$$1 = this, rect = self$$1.layoutRect();\n self$$1.moveTo(rect.x + dx, rect.y + dy);\n return self$$1;\n },\n moveTo: function (x, y) {\n var self$$1 = this;\n function constrain(value, max, size) {\n if (value < 0) {\n return 0;\n }\n if (value + size > max) {\n value = max - size;\n return value < 0 ? 0 : value;\n }\n return value;\n }\n if (self$$1.settings.constrainToViewport) {\n var viewPortRect = getViewPortRect(this);\n var layoutRect = self$$1.layoutRect();\n x = constrain(x, viewPortRect.w, layoutRect.w);\n y = constrain(y, viewPortRect.h, layoutRect.h);\n }\n var uiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(self$$1);\n if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {\n x -= uiContainer.scrollLeft;\n y -= uiContainer.scrollTop;\n }\n if (uiContainer) {\n x += 1;\n y += 1;\n }\n if (self$$1.state.get('rendered')) {\n self$$1.layoutRect({\n x: x,\n y: y\n }).repaint();\n } else {\n self$$1.settings.x = x;\n self$$1.settings.y = y;\n }\n self$$1.fire('move', {\n x: x,\n y: y\n });\n return self$$1;\n }\n };\n\n var global$10 = tinymce.util.Tools.resolve('tinymce.util.Class');\n\n var global$11 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');\n\n var $_79d0aauqjkmcwsj9 = {\n parseBox: function (value) {\n var len;\n var radix = 10;\n if (!value) {\n return;\n }\n if (typeof value === 'number') {\n value = value || 0;\n return {\n top: value,\n left: value,\n bottom: value,\n right: value\n };\n }\n value = value.split(' ');\n len = value.length;\n if (len === 1) {\n value[1] = value[2] = value[3] = value[0];\n } else if (len === 2) {\n value[2] = value[0];\n value[3] = value[1];\n } else if (len === 3) {\n value[3] = value[1];\n }\n return {\n top: parseInt(value[0], radix) || 0,\n right: parseInt(value[1], radix) || 0,\n bottom: parseInt(value[2], radix) || 0,\n left: parseInt(value[3], radix) || 0\n };\n },\n measureBox: function (elm, prefix) {\n function getStyle(name) {\n var defaultView = elm.ownerDocument.defaultView;\n if (defaultView) {\n var computedStyle = defaultView.getComputedStyle(elm, null);\n if (computedStyle) {\n name = name.replace(/[A-Z]/g, function (a) {\n return '-' + a;\n });\n return computedStyle.getPropertyValue(name);\n } else {\n return null;\n }\n }\n return elm.currentStyle[name];\n }\n function getSide(name) {\n var val = parseFloat(getStyle(name));\n return isNaN(val) ? 0 : val;\n }\n return {\n top: getSide(prefix + 'TopWidth'),\n right: getSide(prefix + 'RightWidth'),\n bottom: getSide(prefix + 'BottomWidth'),\n left: getSide(prefix + 'LeftWidth')\n };\n }\n };\n\n function noop$1() {\n }\n function ClassList(onchange) {\n this.cls = [];\n this.cls._map = {};\n this.onchange = onchange || noop$1;\n this.prefix = '';\n }\n global$2.extend(ClassList.prototype, {\n add: function (cls) {\n if (cls && !this.contains(cls)) {\n this.cls._map[cls] = true;\n this.cls.push(cls);\n this._change();\n }\n return this;\n },\n remove: function (cls) {\n if (this.contains(cls)) {\n var i = void 0;\n for (i = 0; i < this.cls.length; i++) {\n if (this.cls[i] === cls) {\n break;\n }\n }\n this.cls.splice(i, 1);\n delete this.cls._map[cls];\n this._change();\n }\n return this;\n },\n toggle: function (cls, state) {\n var curState = this.contains(cls);\n if (curState !== state) {\n if (curState) {\n this.remove(cls);\n } else {\n this.add(cls);\n }\n this._change();\n }\n return this;\n },\n contains: function (cls) {\n return !!this.cls._map[cls];\n },\n _change: function () {\n delete this.clsValue;\n this.onchange.call(this);\n }\n });\n ClassList.prototype.toString = function () {\n var value;\n if (this.clsValue) {\n return this.clsValue;\n }\n value = '';\n for (var i = 0; i < this.cls.length; i++) {\n if (i > 0) {\n value += ' ';\n }\n value += this.prefix + this.cls[i];\n }\n return value;\n };\n\n function unique(array) {\n var uniqueItems = [];\n var i = array.length, item;\n while (i--) {\n item = array[i];\n if (!item.__checked) {\n uniqueItems.push(item);\n item.__checked = 1;\n }\n }\n i = uniqueItems.length;\n while (i--) {\n delete uniqueItems[i].__checked;\n }\n return uniqueItems;\n }\n var expression = /^([\\w\\\\*]+)?(?:#([\\w\\-\\\\]+))?(?:\\.([\\w\\\\\\.]+))?(?:\\[\\@?([\\w\\\\]+)([\\^\\$\\*!~]?=)([\\w\\\\]+)\\])?(?:\\:(.+))?/i;\n var chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n var whiteSpace = /^\\s*|\\s*$/g;\n var Collection;\n var Selector = global$10.extend({\n init: function (selector) {\n var match = this.match;\n function compileNameFilter(name) {\n if (name) {\n name = name.toLowerCase();\n return function (item) {\n return name === '*' || item.type === name;\n };\n }\n }\n function compileIdFilter(id) {\n if (id) {\n return function (item) {\n return item._name === id;\n };\n }\n }\n function compileClassesFilter(classes) {\n if (classes) {\n classes = classes.split('.');\n return function (item) {\n var i = classes.length;\n while (i--) {\n if (!item.classes.contains(classes[i])) {\n return false;\n }\n }\n return true;\n };\n }\n }\n function compileAttrFilter(name, cmp, check) {\n if (name) {\n return function (item) {\n var value = item[name] ? item[name]() : '';\n 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;\n };\n }\n }\n function compilePsuedoFilter(name) {\n var notSelectors;\n if (name) {\n name = /(?:not\\((.+)\\))|(.+)/i.exec(name);\n if (!name[1]) {\n name = name[2];\n return function (item, index, length) {\n 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;\n };\n }\n notSelectors = parseChunks(name[1], []);\n return function (item) {\n return !match(item, notSelectors);\n };\n }\n }\n function compile(selector, filters, direct) {\n var parts;\n function add(filter) {\n if (filter) {\n filters.push(filter);\n }\n }\n parts = expression.exec(selector.replace(whiteSpace, ''));\n add(compileNameFilter(parts[1]));\n add(compileIdFilter(parts[2]));\n add(compileClassesFilter(parts[3]));\n add(compileAttrFilter(parts[4], parts[5], parts[6]));\n add(compilePsuedoFilter(parts[7]));\n filters.pseudo = !!parts[7];\n filters.direct = direct;\n return filters;\n }\n function parseChunks(selector, selectors) {\n var parts = [];\n var extra, matches, i;\n do {\n chunker.exec('');\n matches = chunker.exec(selector);\n if (matches) {\n selector = matches[3];\n parts.push(matches[1]);\n if (matches[2]) {\n extra = matches[3];\n break;\n }\n }\n } while (matches);\n if (extra) {\n parseChunks(extra, selectors);\n }\n selector = [];\n for (i = 0; i < parts.length; i++) {\n if (parts[i] !== '>') {\n selector.push(compile(parts[i], [], parts[i - 1] === '>'));\n }\n }\n selectors.push(selector);\n return selectors;\n }\n this._selectors = parseChunks(selector, []);\n },\n match: function (control, selectors) {\n var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;\n selectors = selectors || this._selectors;\n for (i = 0, l = selectors.length; i < l; i++) {\n selector = selectors[i];\n sl = selector.length;\n item = control;\n count = 0;\n for (si = sl - 1; si >= 0; si--) {\n filters = selector[si];\n while (item) {\n if (filters.pseudo) {\n siblings = item.parent().items();\n index = length = siblings.length;\n while (index--) {\n if (siblings[index] === item) {\n break;\n }\n }\n }\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\n if (!filters[fi](item, index, length)) {\n fi = fl + 1;\n break;\n }\n }\n if (fi === fl) {\n count++;\n break;\n } else {\n if (si === sl - 1) {\n break;\n }\n }\n item = item.parent();\n }\n }\n if (count === sl) {\n return true;\n }\n }\n return false;\n },\n find: function (container) {\n var matches = [], i, l;\n var selectors = this._selectors;\n function collect(items, selector, index) {\n var i, l, fi, fl, item;\n var filters = selector[index];\n for (i = 0, l = items.length; i < l; i++) {\n item = items[i];\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\n if (!filters[fi](item, i, l)) {\n fi = fl + 1;\n break;\n }\n }\n if (fi === fl) {\n if (index === selector.length - 1) {\n matches.push(item);\n } else {\n if (item.items) {\n collect(item.items(), selector, index + 1);\n }\n }\n } else if (filters.direct) {\n return;\n }\n if (item.items) {\n collect(item.items(), selector, index);\n }\n }\n }\n if (container.items) {\n for (i = 0, l = selectors.length; i < l; i++) {\n collect(container.items(), selectors[i], 0);\n }\n if (l > 1) {\n matches = unique(matches);\n }\n }\n if (!Collection) {\n Collection = Selector.Collection;\n }\n return new Collection(matches);\n }\n });\n\n var Collection$1;\n var proto;\n var push$1 = Array.prototype.push;\n var slice$1 = Array.prototype.slice;\n proto = {\n length: 0,\n init: function (items) {\n if (items) {\n this.add(items);\n }\n },\n add: function (items) {\n var self = this;\n if (!global$2.isArray(items)) {\n if (items instanceof Collection$1) {\n self.add(items.toArray());\n } else {\n push$1.call(self, items);\n }\n } else {\n push$1.apply(self, items);\n }\n return self;\n },\n set: function (items) {\n var self = this;\n var len = self.length;\n var i;\n self.length = 0;\n self.add(items);\n for (i = self.length; i < len; i++) {\n delete self[i];\n }\n return self;\n },\n filter: function (selector) {\n var self = this;\n var i, l;\n var matches = [];\n var item, match;\n if (typeof selector === 'string') {\n selector = new Selector(selector);\n match = function (item) {\n return selector.match(item);\n };\n } else {\n match = selector;\n }\n for (i = 0, l = self.length; i < l; i++) {\n item = self[i];\n if (match(item)) {\n matches.push(item);\n }\n }\n return new Collection$1(matches);\n },\n slice: function () {\n return new Collection$1(slice$1.apply(this, arguments));\n },\n eq: function (index) {\n return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n },\n each: function (callback) {\n global$2.each(this, callback);\n return this;\n },\n toArray: function () {\n return global$2.toArray(this);\n },\n indexOf: function (ctrl) {\n var self = this;\n var i = self.length;\n while (i--) {\n if (self[i] === ctrl) {\n break;\n }\n }\n return i;\n },\n reverse: function () {\n return new Collection$1(global$2.toArray(this).reverse());\n },\n hasClass: function (cls) {\n return this[0] ? this[0].classes.contains(cls) : false;\n },\n prop: function (name, value) {\n var self = this;\n var item;\n if (value !== undefined) {\n self.each(function (item) {\n if (item[name]) {\n item[name](value);\n }\n });\n return self;\n }\n item = self[0];\n if (item && item[name]) {\n return item[name]();\n }\n },\n exec: function (name) {\n var self = this, args = global$2.toArray(arguments).slice(1);\n self.each(function (item) {\n if (item[name]) {\n item[name].apply(item, args);\n }\n });\n return self;\n },\n remove: function () {\n var i = this.length;\n while (i--) {\n this[i].remove();\n }\n return this;\n },\n addClass: function (cls) {\n return this.each(function (item) {\n item.classes.add(cls);\n });\n },\n removeClass: function (cls) {\n return this.each(function (item) {\n item.classes.remove(cls);\n });\n }\n };\n global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {\n proto[name] = function () {\n var args = global$2.toArray(arguments);\n this.each(function (ctrl) {\n if (name in ctrl) {\n ctrl[name].apply(ctrl, args);\n }\n });\n return this;\n };\n });\n global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {\n proto[name] = function (value) {\n return this.prop(name, value);\n };\n });\n Collection$1 = global$10.extend(proto);\n Selector.Collection = Collection$1;\n var Collection$2 = Collection$1;\n\n var Binding = function (settings) {\n this.create = settings.create;\n };\n Binding.create = function (model, name) {\n return new Binding({\n create: function (otherModel, otherName) {\n var bindings;\n var fromSelfToOther = function (e) {\n otherModel.set(otherName, e.value);\n };\n var fromOtherToSelf = function (e) {\n model.set(name, e.value);\n };\n otherModel.on('change:' + otherName, fromOtherToSelf);\n model.on('change:' + name, fromSelfToOther);\n bindings = otherModel._bindings;\n if (!bindings) {\n bindings = otherModel._bindings = [];\n otherModel.on('destroy', function () {\n var i = bindings.length;\n while (i--) {\n bindings[i]();\n }\n });\n }\n bindings.push(function () {\n model.off('change:' + name, fromSelfToOther);\n });\n return model.get(name);\n }\n });\n };\n\n var global$12 = tinymce.util.Tools.resolve('tinymce.util.Observable');\n\n function isNode(node) {\n return node.nodeType > 0;\n }\n function isEqual(a, b) {\n var k, checked;\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return a === b;\n }\n if (typeof a !== 'object' || typeof b !== 'object') {\n return a === b;\n }\n if (global$2.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n k = a.length;\n while (k--) {\n if (!isEqual(a[k], b[k])) {\n return false;\n }\n }\n }\n if (isNode(a) || isNode(b)) {\n return a === b;\n }\n checked = {};\n for (k in b) {\n if (!isEqual(a[k], b[k])) {\n return false;\n }\n checked[k] = true;\n }\n for (k in a) {\n if (!checked[k] && !isEqual(a[k], b[k])) {\n return false;\n }\n }\n return true;\n }\n var ObservableObject = global$10.extend({\n Mixins: [global$12],\n init: function (data) {\n var name, value;\n data = data || {};\n for (name in data) {\n value = data[name];\n if (value instanceof Binding) {\n data[name] = value.create(this, name);\n }\n }\n this.data = data;\n },\n set: function (name, value) {\n var key, args;\n var oldValue = this.data[name];\n if (value instanceof Binding) {\n value = value.create(this, name);\n }\n if (typeof name === 'object') {\n for (key in name) {\n this.set(key, name[key]);\n }\n return this;\n }\n if (!isEqual(oldValue, value)) {\n this.data[name] = value;\n args = {\n target: this,\n name: name,\n value: value,\n oldValue: oldValue\n };\n this.fire('change:' + name, args);\n this.fire('change', args);\n }\n return this;\n },\n get: function (name) {\n return this.data[name];\n },\n has: function (name) {\n return name in this.data;\n },\n bind: function (name) {\n return Binding.create(this, name);\n },\n destroy: function () {\n this.fire('destroy');\n }\n });\n\n var dirtyCtrls = {};\n var animationFrameRequested;\n var $_921m08uxjkmcwsk2 = {\n add: function (ctrl) {\n var parent$$1 = ctrl.parent();\n if (parent$$1) {\n if (!parent$$1._layout || parent$$1._layout.isNative()) {\n return;\n }\n if (!dirtyCtrls[parent$$1._id]) {\n dirtyCtrls[parent$$1._id] = parent$$1;\n }\n if (!animationFrameRequested) {\n animationFrameRequested = true;\n global$7.requestAnimationFrame(function () {\n var id, ctrl;\n animationFrameRequested = false;\n for (id in dirtyCtrls) {\n ctrl = dirtyCtrls[id];\n if (ctrl.state.get('rendered')) {\n ctrl.reflow();\n }\n }\n dirtyCtrls = {};\n }, document.body);\n }\n }\n },\n remove: function (ctrl) {\n if (dirtyCtrls[ctrl._id]) {\n delete dirtyCtrls[ctrl._id];\n }\n }\n };\n\n var hasMouseWheelEventSupport = 'onmousewheel' in document;\n var hasWheelEventSupport = false;\n var classPrefix = 'mce-';\n var Control;\n var idCounter = 0;\n var proto$1 = {\n Statics: { classPrefix: classPrefix },\n isRtl: function () {\n return Control.rtl;\n },\n classPrefix: classPrefix,\n init: function (settings) {\n var self$$1 = this;\n var classes, defaultClasses;\n function applyClasses(classes) {\n var i;\n classes = classes.split(' ');\n for (i = 0; i < classes.length; i++) {\n self$$1.classes.add(classes[i]);\n }\n }\n self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);\n self$$1._id = settings.id || 'mceu_' + idCounter++;\n self$$1._aria = { role: settings.role };\n self$$1._elmCache = {};\n self$$1.$ = global$9;\n self$$1.state = new ObservableObject({\n visible: true,\n active: false,\n disabled: false,\n value: ''\n });\n self$$1.data = new ObservableObject(settings.data);\n self$$1.classes = new ClassList(function () {\n if (self$$1.state.get('rendered')) {\n self$$1.getEl().className = this.toString();\n }\n });\n self$$1.classes.prefix = self$$1.classPrefix;\n classes = settings.classes;\n if (classes) {\n if (self$$1.Defaults) {\n defaultClasses = self$$1.Defaults.classes;\n if (defaultClasses && classes !== defaultClasses) {\n applyClasses(defaultClasses);\n }\n }\n applyClasses(classes);\n }\n global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {\n if (name$$1 in settings) {\n self$$1[name$$1](settings[name$$1]);\n }\n });\n self$$1.on('click', function () {\n if (self$$1.disabled()) {\n return false;\n }\n });\n self$$1.settings = settings;\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox(settings.border);\n self$$1.paddingBox = $_79d0aauqjkmcwsj9.parseBox(settings.padding);\n self$$1.marginBox = $_79d0aauqjkmcwsj9.parseBox(settings.margin);\n if (settings.hidden) {\n self$$1.hide();\n }\n },\n Properties: 'parent,name',\n getContainerElm: function () {\n var uiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(this);\n return uiContainer ? uiContainer : funcs.getContainer();\n },\n getParentCtrl: function (elm) {\n var ctrl;\n var lookup = this.getRoot().controlIdLookup;\n while (elm && lookup) {\n ctrl = lookup[elm.id];\n if (ctrl) {\n break;\n }\n elm = elm.parentNode;\n }\n return ctrl;\n },\n initLayoutRect: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var borderBox, layoutRect;\n var elm = self$$1.getEl();\n var width, height, minWidth, minHeight, autoResize;\n var startMinWidth, startMinHeight, initialSize;\n borderBox = self$$1.borderBox = self$$1.borderBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'border');\n self$$1.paddingBox = self$$1.paddingBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'padding');\n self$$1.marginBox = self$$1.marginBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'margin');\n initialSize = funcs.getSize(elm);\n startMinWidth = settings.minWidth;\n startMinHeight = settings.minHeight;\n minWidth = startMinWidth || initialSize.width;\n minHeight = startMinHeight || initialSize.height;\n width = settings.width;\n height = settings.height;\n autoResize = settings.autoResize;\n autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;\n width = width || minWidth;\n height = height || minHeight;\n var deltaW = borderBox.left + borderBox.right;\n var deltaH = borderBox.top + borderBox.bottom;\n var maxW = settings.maxWidth || 65535;\n var maxH = settings.maxHeight || 65535;\n self$$1._layoutRect = layoutRect = {\n x: settings.x || 0,\n y: settings.y || 0,\n w: width,\n h: height,\n deltaW: deltaW,\n deltaH: deltaH,\n contentW: width - deltaW,\n contentH: height - deltaH,\n innerW: width - deltaW,\n innerH: height - deltaH,\n startMinWidth: startMinWidth || 0,\n startMinHeight: startMinHeight || 0,\n minW: Math.min(minWidth, maxW),\n minH: Math.min(minHeight, maxH),\n maxW: maxW,\n maxH: maxH,\n autoResize: autoResize,\n scrollW: 0\n };\n self$$1._lastLayoutRect = {};\n return layoutRect;\n },\n layoutRect: function (newRect) {\n var self$$1 = this;\n var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;\n if (!curRect) {\n curRect = self$$1.initLayoutRect();\n }\n if (newRect) {\n deltaWidth = curRect.deltaW;\n deltaHeight = curRect.deltaH;\n if (newRect.x !== undefined) {\n curRect.x = newRect.x;\n }\n if (newRect.y !== undefined) {\n curRect.y = newRect.y;\n }\n if (newRect.minW !== undefined) {\n curRect.minW = newRect.minW;\n }\n if (newRect.minH !== undefined) {\n curRect.minH = newRect.minH;\n }\n size = newRect.w;\n if (size !== undefined) {\n size = size < curRect.minW ? curRect.minW : size;\n size = size > curRect.maxW ? curRect.maxW : size;\n curRect.w = size;\n curRect.innerW = size - deltaWidth;\n }\n size = newRect.h;\n if (size !== undefined) {\n size = size < curRect.minH ? curRect.minH : size;\n size = size > curRect.maxH ? curRect.maxH : size;\n curRect.h = size;\n curRect.innerH = size - deltaHeight;\n }\n size = newRect.innerW;\n if (size !== undefined) {\n size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;\n size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;\n curRect.innerW = size;\n curRect.w = size + deltaWidth;\n }\n size = newRect.innerH;\n if (size !== undefined) {\n size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;\n size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;\n curRect.innerH = size;\n curRect.h = size + deltaHeight;\n }\n if (newRect.contentW !== undefined) {\n curRect.contentW = newRect.contentW;\n }\n if (newRect.contentH !== undefined) {\n curRect.contentH = newRect.contentH;\n }\n lastLayoutRect = self$$1._lastLayoutRect;\n if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {\n repaintControls = Control.repaintControls;\n if (repaintControls) {\n if (repaintControls.map && !repaintControls.map[self$$1._id]) {\n repaintControls.push(self$$1);\n repaintControls.map[self$$1._id] = true;\n }\n }\n lastLayoutRect.x = curRect.x;\n lastLayoutRect.y = curRect.y;\n lastLayoutRect.w = curRect.w;\n lastLayoutRect.h = curRect.h;\n }\n return self$$1;\n }\n return curRect;\n },\n repaint: function () {\n var self$$1 = this;\n var style, bodyStyle, bodyElm, rect, borderBox;\n var borderW, borderH, lastRepaintRect, round, value;\n round = !document.createRange ? Math.round : function (value) {\n return value;\n };\n style = self$$1.getEl().style;\n rect = self$$1._layoutRect;\n lastRepaintRect = self$$1._lastRepaintRect || {};\n borderBox = self$$1.borderBox;\n borderW = borderBox.left + borderBox.right;\n borderH = borderBox.top + borderBox.bottom;\n if (rect.x !== lastRepaintRect.x) {\n style.left = round(rect.x) + 'px';\n lastRepaintRect.x = rect.x;\n }\n if (rect.y !== lastRepaintRect.y) {\n style.top = round(rect.y) + 'px';\n lastRepaintRect.y = rect.y;\n }\n if (rect.w !== lastRepaintRect.w) {\n value = round(rect.w - borderW);\n style.width = (value >= 0 ? value : 0) + 'px';\n lastRepaintRect.w = rect.w;\n }\n if (rect.h !== lastRepaintRect.h) {\n value = round(rect.h - borderH);\n style.height = (value >= 0 ? value : 0) + 'px';\n lastRepaintRect.h = rect.h;\n }\n if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {\n value = round(rect.innerW);\n bodyElm = self$$1.getEl('body');\n if (bodyElm) {\n bodyStyle = bodyElm.style;\n bodyStyle.width = (value >= 0 ? value : 0) + 'px';\n }\n lastRepaintRect.innerW = rect.innerW;\n }\n if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {\n value = round(rect.innerH);\n bodyElm = bodyElm || self$$1.getEl('body');\n if (bodyElm) {\n bodyStyle = bodyStyle || bodyElm.style;\n bodyStyle.height = (value >= 0 ? value : 0) + 'px';\n }\n lastRepaintRect.innerH = rect.innerH;\n }\n self$$1._lastRepaintRect = lastRepaintRect;\n self$$1.fire('repaint', {}, false);\n },\n updateLayoutRect: function () {\n var self$$1 = this;\n self$$1.parent()._lastRect = null;\n funcs.css(self$$1.getEl(), {\n width: '',\n height: ''\n });\n self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;\n self$$1.initLayoutRect();\n },\n on: function (name$$1, callback) {\n var self$$1 = this;\n function resolveCallbackName(name$$1) {\n var callback, scope;\n if (typeof name$$1 !== 'string') {\n return name$$1;\n }\n return function (e) {\n if (!callback) {\n self$$1.parentsAndSelf().each(function (ctrl) {\n var callbacks = ctrl.settings.callbacks;\n if (callbacks && (callback = callbacks[name$$1])) {\n scope = ctrl;\n return false;\n }\n });\n }\n if (!callback) {\n e.action = name$$1;\n this.fire('execute', e);\n return;\n }\n return callback.call(scope, e);\n };\n }\n getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));\n return self$$1;\n },\n off: function (name$$1, callback) {\n getEventDispatcher(this).off(name$$1, callback);\n return this;\n },\n fire: function (name$$1, args, bubble) {\n var self$$1 = this;\n args = args || {};\n if (!args.control) {\n args.control = self$$1;\n }\n args = getEventDispatcher(self$$1).fire(name$$1, args);\n if (bubble !== false && self$$1.parent) {\n var parent$$1 = self$$1.parent();\n while (parent$$1 && !args.isPropagationStopped()) {\n parent$$1.fire(name$$1, args, false);\n parent$$1 = parent$$1.parent();\n }\n }\n return args;\n },\n hasEventListeners: function (name$$1) {\n return getEventDispatcher(this).has(name$$1);\n },\n parents: function (selector) {\n var self$$1 = this;\n var ctrl, parents = new Collection$2();\n for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {\n parents.add(ctrl);\n }\n if (selector) {\n parents = parents.filter(selector);\n }\n return parents;\n },\n parentsAndSelf: function (selector) {\n return new Collection$2(this).add(this.parents(selector));\n },\n next: function () {\n var parentControls = this.parent().items();\n return parentControls[parentControls.indexOf(this) + 1];\n },\n prev: function () {\n var parentControls = this.parent().items();\n return parentControls[parentControls.indexOf(this) - 1];\n },\n innerHtml: function (html) {\n this.$el.html(html);\n return this;\n },\n getEl: function (suffix) {\n var id = suffix ? this._id + '-' + suffix : this._id;\n if (!this._elmCache[id]) {\n this._elmCache[id] = global$9('#' + id)[0];\n }\n return this._elmCache[id];\n },\n show: function () {\n return this.visible(true);\n },\n hide: function () {\n return this.visible(false);\n },\n focus: function () {\n try {\n this.getEl().focus();\n } catch (ex) {\n }\n return this;\n },\n blur: function () {\n this.getEl().blur();\n return this;\n },\n aria: function (name$$1, value) {\n var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);\n if (typeof value === 'undefined') {\n return self$$1._aria[name$$1];\n }\n self$$1._aria[name$$1] = value;\n if (self$$1.state.get('rendered')) {\n elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);\n }\n return self$$1;\n },\n encode: function (text, translate) {\n if (translate !== false) {\n text = this.translate(text);\n }\n return (text || '').replace(/[&<>\"]/g, function (match) {\n return '&#' + match.charCodeAt(0) + ';';\n });\n },\n translate: function (text) {\n return Control.translate ? Control.translate(text) : text;\n },\n before: function (items) {\n var self$$1 = this, parent$$1 = self$$1.parent();\n if (parent$$1) {\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);\n }\n return self$$1;\n },\n after: function (items) {\n var self$$1 = this, parent$$1 = self$$1.parent();\n if (parent$$1) {\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1));\n }\n return self$$1;\n },\n remove: function () {\n var self$$1 = this;\n var elm = self$$1.getEl();\n var parent$$1 = self$$1.parent();\n var newItems, i;\n if (self$$1.items) {\n var controls = self$$1.items().toArray();\n i = controls.length;\n while (i--) {\n controls[i].remove();\n }\n }\n if (parent$$1 && parent$$1.items) {\n newItems = [];\n parent$$1.items().each(function (item) {\n if (item !== self$$1) {\n newItems.push(item);\n }\n });\n parent$$1.items().set(newItems);\n parent$$1._lastRect = null;\n }\n if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {\n global$9(elm).off();\n }\n var lookup = self$$1.getRoot().controlIdLookup;\n if (lookup) {\n delete lookup[self$$1._id];\n }\n if (elm && elm.parentNode) {\n elm.parentNode.removeChild(elm);\n }\n self$$1.state.set('rendered', false);\n self$$1.state.destroy();\n self$$1.fire('remove');\n return self$$1;\n },\n renderBefore: function (elm) {\n global$9(elm).before(this.renderHtml());\n this.postRender();\n return this;\n },\n renderTo: function (elm) {\n global$9(elm || this.getContainerElm()).append(this.renderHtml());\n this.postRender();\n return this;\n },\n preRender: function () {\n },\n render: function () {\n },\n renderHtml: function () {\n return '
    ';\n },\n postRender: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var elm, box, parent$$1, name$$1, parentEventsRoot;\n self$$1.$el = global$9(self$$1.getEl());\n self$$1.state.set('rendered', true);\n for (name$$1 in settings) {\n if (name$$1.indexOf('on') === 0) {\n self$$1.on(name$$1.substr(2), settings[name$$1]);\n }\n }\n if (self$$1._eventsRoot) {\n for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {\n parentEventsRoot = parent$$1._eventsRoot;\n }\n if (parentEventsRoot) {\n for (name$$1 in parentEventsRoot._nativeEvents) {\n self$$1._nativeEvents[name$$1] = true;\n }\n }\n }\n bindPendingEvents(self$$1);\n if (settings.style) {\n elm = self$$1.getEl();\n if (elm) {\n elm.setAttribute('style', settings.style);\n elm.style.cssText = settings.style;\n }\n }\n if (self$$1.settings.border) {\n box = self$$1.borderBox;\n self$$1.$el.css({\n 'border-top-width': box.top,\n 'border-right-width': box.right,\n 'border-bottom-width': box.bottom,\n 'border-left-width': box.left\n });\n }\n var root = self$$1.getRoot();\n if (!root.controlIdLookup) {\n root.controlIdLookup = {};\n }\n root.controlIdLookup[self$$1._id] = self$$1;\n for (var key in self$$1._aria) {\n self$$1.aria(key, self$$1._aria[key]);\n }\n if (self$$1.state.get('visible') === false) {\n self$$1.getEl().style.display = 'none';\n }\n self$$1.bindStates();\n self$$1.state.on('change:visible', function (e) {\n var state = e.value;\n var parentCtrl;\n if (self$$1.state.get('rendered')) {\n self$$1.getEl().style.display = state === false ? 'none' : '';\n self$$1.getEl().getBoundingClientRect();\n }\n parentCtrl = self$$1.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n }\n self$$1.fire(state ? 'show' : 'hide');\n $_921m08uxjkmcwsk2.add(self$$1);\n });\n self$$1.fire('postrender', {}, false);\n },\n bindStates: function () {\n },\n scrollIntoView: function (align) {\n function getOffset(elm, rootElm) {\n var x, y, parent$$1 = elm;\n x = y = 0;\n while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {\n x += parent$$1.offsetLeft || 0;\n y += parent$$1.offsetTop || 0;\n parent$$1 = parent$$1.offsetParent;\n }\n return {\n x: x,\n y: y\n };\n }\n var elm = this.getEl(), parentElm = elm.parentNode;\n var x, y, width, height, parentWidth, parentHeight;\n var pos = getOffset(elm, parentElm);\n x = pos.x;\n y = pos.y;\n width = elm.offsetWidth;\n height = elm.offsetHeight;\n parentWidth = parentElm.clientWidth;\n parentHeight = parentElm.clientHeight;\n if (align === 'end') {\n x -= parentWidth - width;\n y -= parentHeight - height;\n } else if (align === 'center') {\n x -= parentWidth / 2 - width / 2;\n y -= parentHeight / 2 - height / 2;\n }\n parentElm.scrollLeft = x;\n parentElm.scrollTop = y;\n return this;\n },\n getRoot: function () {\n var ctrl = this, rootControl;\n var parents = [];\n while (ctrl) {\n if (ctrl.rootControl) {\n rootControl = ctrl.rootControl;\n break;\n }\n parents.push(ctrl);\n rootControl = ctrl;\n ctrl = ctrl.parent();\n }\n if (!rootControl) {\n rootControl = this;\n }\n var i = parents.length;\n while (i--) {\n parents[i].rootControl = rootControl;\n }\n return rootControl;\n },\n reflow: function () {\n $_921m08uxjkmcwsk2.remove(this);\n var parent$$1 = this.parent();\n if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {\n parent$$1.reflow();\n }\n return this;\n }\n };\n global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {\n proto$1[name$$1] = function (value) {\n if (arguments.length === 0) {\n return this.state.get(name$$1);\n }\n if (typeof value !== 'undefined') {\n this.state.set(name$$1, value);\n }\n return this;\n };\n });\n Control = global$10.extend(proto$1);\n function getEventDispatcher(obj) {\n if (!obj._eventDispatcher) {\n obj._eventDispatcher = new global$11({\n scope: obj,\n toggleEvent: function (name$$1, state) {\n if (state && global$11.isNative(name$$1)) {\n if (!obj._nativeEvents) {\n obj._nativeEvents = {};\n }\n obj._nativeEvents[name$$1] = true;\n if (obj.state.get('rendered')) {\n bindPendingEvents(obj);\n }\n }\n }\n });\n }\n return obj._eventDispatcher;\n }\n function bindPendingEvents(eventCtrl) {\n var i, l, parents, eventRootCtrl, nativeEvents, name$$1;\n function delegate(e) {\n var control = eventCtrl.getParentCtrl(e.target);\n if (control) {\n control.fire(e.type, e);\n }\n }\n function mouseLeaveHandler() {\n var ctrl = eventRootCtrl._lastHoverCtrl;\n if (ctrl) {\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\n ctrl.parents().each(function (ctrl) {\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\n });\n eventRootCtrl._lastHoverCtrl = null;\n }\n }\n function mouseEnterHandler(e) {\n var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;\n if (ctrl !== lastCtrl) {\n eventRootCtrl._lastHoverCtrl = ctrl;\n parents = ctrl.parents().toArray().reverse();\n parents.push(ctrl);\n if (lastCtrl) {\n lastParents = lastCtrl.parents().toArray().reverse();\n lastParents.push(lastCtrl);\n for (idx = 0; idx < lastParents.length; idx++) {\n if (parents[idx] !== lastParents[idx]) {\n break;\n }\n }\n for (i = lastParents.length - 1; i >= idx; i--) {\n lastCtrl = lastParents[i];\n lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });\n }\n }\n for (i = idx; i < parents.length; i++) {\n ctrl = parents[i];\n ctrl.fire('mouseenter', { target: ctrl.getEl() });\n }\n }\n }\n function fixWheelEvent(e) {\n e.preventDefault();\n if (e.type === 'mousewheel') {\n e.deltaY = -1 / 40 * e.wheelDelta;\n if (e.wheelDeltaX) {\n e.deltaX = -1 / 40 * e.wheelDeltaX;\n }\n } else {\n e.deltaX = 0;\n e.deltaY = e.detail;\n }\n e = eventCtrl.fire('wheel', e);\n }\n nativeEvents = eventCtrl._nativeEvents;\n if (nativeEvents) {\n parents = eventCtrl.parents().toArray();\n parents.unshift(eventCtrl);\n for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {\n eventRootCtrl = parents[i]._eventsRoot;\n }\n if (!eventRootCtrl) {\n eventRootCtrl = parents[parents.length - 1] || eventCtrl;\n }\n eventCtrl._eventsRoot = eventRootCtrl;\n for (l = i, i = 0; i < l; i++) {\n parents[i]._eventsRoot = eventRootCtrl;\n }\n var eventRootDelegates = eventRootCtrl._delegates;\n if (!eventRootDelegates) {\n eventRootDelegates = eventRootCtrl._delegates = {};\n }\n for (name$$1 in nativeEvents) {\n if (!nativeEvents) {\n return false;\n }\n if (name$$1 === 'wheel' && !hasWheelEventSupport) {\n if (hasMouseWheelEventSupport) {\n global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);\n } else {\n global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);\n }\n continue;\n }\n if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {\n if (!eventRootCtrl._hasMouseEnter) {\n global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);\n eventRootCtrl._hasMouseEnter = 1;\n }\n } else if (!eventRootDelegates[name$$1]) {\n global$9(eventRootCtrl.getEl()).on(name$$1, delegate);\n eventRootDelegates[name$$1] = true;\n }\n nativeEvents[name$$1] = false;\n }\n }\n }\n var Control$1 = Control;\n\n var hasTabstopData = function (elm) {\n return elm.getAttribute('data-mce-tabstop') ? true : false;\n };\n function KeyboardNavigation (settings) {\n var root = settings.root;\n var focusedElement, focusedControl;\n function isElement(node) {\n return node && node.nodeType === 1;\n }\n try {\n focusedElement = document.activeElement;\n } catch (ex) {\n focusedElement = document.body;\n }\n focusedControl = root.getParentCtrl(focusedElement);\n function getRole(elm) {\n elm = elm || focusedElement;\n if (isElement(elm)) {\n return elm.getAttribute('role');\n }\n return null;\n }\n function getParentRole(elm) {\n var role, parent$$1 = elm || focusedElement;\n while (parent$$1 = parent$$1.parentNode) {\n if (role = getRole(parent$$1)) {\n return role;\n }\n }\n }\n function getAriaProp(name$$1) {\n var elm = focusedElement;\n if (isElement(elm)) {\n return elm.getAttribute('aria-' + name$$1);\n }\n }\n function isTextInputElement(elm) {\n var tagName = elm.tagName.toUpperCase();\n return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';\n }\n function canFocus(elm) {\n if (isTextInputElement(elm) && !elm.hidden) {\n return true;\n }\n if (hasTabstopData(elm)) {\n return true;\n }\n if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {\n return true;\n }\n return false;\n }\n function getFocusElements(elm) {\n var elements = [];\n function collect(elm) {\n if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {\n return;\n }\n if (canFocus(elm)) {\n elements.push(elm);\n }\n for (var i = 0; i < elm.childNodes.length; i++) {\n collect(elm.childNodes[i]);\n }\n }\n collect(elm || root.getEl());\n return elements;\n }\n function getNavigationRoot(targetControl) {\n var navigationRoot, controls;\n targetControl = targetControl || focusedControl;\n controls = targetControl.parents().toArray();\n controls.unshift(targetControl);\n for (var i = 0; i < controls.length; i++) {\n navigationRoot = controls[i];\n if (navigationRoot.settings.ariaRoot) {\n break;\n }\n }\n return navigationRoot;\n }\n function focusFirst(targetControl) {\n var navigationRoot = getNavigationRoot(targetControl);\n var focusElements = getFocusElements(navigationRoot.getEl());\n if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {\n moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);\n } else {\n moveFocusToIndex(0, focusElements);\n }\n }\n function moveFocusToIndex(idx, elements) {\n if (idx < 0) {\n idx = elements.length - 1;\n } else if (idx >= elements.length) {\n idx = 0;\n }\n if (elements[idx]) {\n elements[idx].focus();\n }\n return idx;\n }\n function moveFocus(dir, elements) {\n var idx = -1;\n var navigationRoot = getNavigationRoot();\n elements = elements || getFocusElements(navigationRoot.getEl());\n for (var i = 0; i < elements.length; i++) {\n if (elements[i] === focusedElement) {\n idx = i;\n }\n }\n idx += dir;\n navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);\n }\n function left() {\n var parentRole = getParentRole();\n if (parentRole === 'tablist') {\n moveFocus(-1, getFocusElements(focusedElement.parentNode));\n } else if (focusedControl.parent().submenu) {\n cancel();\n } else {\n moveFocus(-1);\n }\n }\n function right() {\n var role = getRole(), parentRole = getParentRole();\n if (parentRole === 'tablist') {\n moveFocus(1, getFocusElements(focusedElement.parentNode));\n } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {\n enter();\n } else {\n moveFocus(1);\n }\n }\n function up() {\n moveFocus(-1);\n }\n function down() {\n var role = getRole(), parentRole = getParentRole();\n if (role === 'menuitem' && parentRole === 'menubar') {\n enter();\n } else if (role === 'button' && getAriaProp('haspopup')) {\n enter({ key: 'down' });\n } else {\n moveFocus(1);\n }\n }\n function tab(e) {\n var parentRole = getParentRole();\n if (parentRole === 'tablist') {\n var elm = getFocusElements(focusedControl.getEl('body'))[0];\n if (elm) {\n elm.focus();\n }\n } else {\n moveFocus(e.shiftKey ? -1 : 1);\n }\n }\n function cancel() {\n focusedControl.fire('cancel');\n }\n function enter(aria) {\n aria = aria || {};\n focusedControl.fire('click', {\n target: focusedElement,\n aria: aria\n });\n }\n root.on('keydown', function (e) {\n function handleNonTabOrEscEvent(e, handler) {\n if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {\n return;\n }\n if (getRole(focusedElement) === 'slider') {\n return;\n }\n if (handler(e) !== false) {\n e.preventDefault();\n }\n }\n if (e.isDefaultPrevented()) {\n return;\n }\n switch (e.keyCode) {\n case 37:\n handleNonTabOrEscEvent(e, left);\n break;\n case 39:\n handleNonTabOrEscEvent(e, right);\n break;\n case 38:\n handleNonTabOrEscEvent(e, up);\n break;\n case 40:\n handleNonTabOrEscEvent(e, down);\n break;\n case 27:\n cancel();\n break;\n case 14:\n case 13:\n case 32:\n handleNonTabOrEscEvent(e, enter);\n break;\n case 9:\n tab(e);\n e.preventDefault();\n break;\n }\n });\n root.on('focusin', function (e) {\n focusedElement = e.target;\n focusedControl = e.control;\n });\n return { focusFirst: focusFirst };\n }\n\n var selectorCache = {};\n var Container = Control$1.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n settings = self.settings;\n if (settings.fixed) {\n self.state.set('fixed', true);\n }\n self._items = new Collection$2();\n if (self.isRtl()) {\n self.classes.add('rtl');\n }\n self.bodyClasses = new ClassList(function () {\n if (self.state.get('rendered')) {\n self.getEl('body').className = this.toString();\n }\n });\n self.bodyClasses.prefix = self.classPrefix;\n self.classes.add('container');\n self.bodyClasses.add('container-body');\n if (settings.containerCls) {\n self.classes.add(settings.containerCls);\n }\n self._layout = global$4.create((settings.layout || '') + 'layout');\n if (self.settings.items) {\n self.add(self.settings.items);\n } else {\n self.add(self.render());\n }\n self._hasBody = true;\n },\n items: function () {\n return this._items;\n },\n find: function (selector) {\n selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);\n return selector.find(this);\n },\n add: function (items) {\n var self = this;\n self.items().add(self.create(items)).parent(self);\n return self;\n },\n focus: function (keyboard) {\n var self = this;\n var focusCtrl, keyboardNav, items;\n if (keyboard) {\n keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;\n if (keyboardNav) {\n keyboardNav.focusFirst(self);\n return;\n }\n }\n items = self.find('*');\n if (self.statusbar) {\n items.add(self.statusbar.items());\n }\n items.each(function (ctrl) {\n if (ctrl.settings.autofocus) {\n focusCtrl = null;\n return false;\n }\n if (ctrl.canFocus) {\n focusCtrl = focusCtrl || ctrl;\n }\n });\n if (focusCtrl) {\n focusCtrl.focus();\n }\n return self;\n },\n replace: function (oldItem, newItem) {\n var ctrlElm;\n var items = this.items();\n var i = items.length;\n while (i--) {\n if (items[i] === oldItem) {\n items[i] = newItem;\n break;\n }\n }\n if (i >= 0) {\n ctrlElm = newItem.getEl();\n if (ctrlElm) {\n ctrlElm.parentNode.removeChild(ctrlElm);\n }\n ctrlElm = oldItem.getEl();\n if (ctrlElm) {\n ctrlElm.parentNode.removeChild(ctrlElm);\n }\n }\n newItem.parent(this);\n },\n create: function (items) {\n var self = this;\n var settings;\n var ctrlItems = [];\n if (!global$2.isArray(items)) {\n items = [items];\n }\n global$2.each(items, function (item) {\n if (item) {\n if (!(item instanceof Control$1)) {\n if (typeof item === 'string') {\n item = { type: item };\n }\n settings = global$2.extend({}, self.settings.defaults, item);\n item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);\n item = global$4.create(settings);\n }\n ctrlItems.push(item);\n }\n });\n return ctrlItems;\n },\n renderNew: function () {\n var self = this;\n self.items().each(function (ctrl, index) {\n var containerElm;\n ctrl.parent(self);\n if (!ctrl.state.get('rendered')) {\n containerElm = self.getEl('body');\n if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {\n global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());\n } else {\n global$9(containerElm).append(ctrl.renderHtml());\n }\n ctrl.postRender();\n $_921m08uxjkmcwsk2.add(ctrl);\n }\n });\n self._layout.applyClasses(self.items().filter(':visible'));\n self._lastRect = null;\n return self;\n },\n append: function (items) {\n return this.add(items).renderNew();\n },\n prepend: function (items) {\n var self = this;\n self.items().set(self.create(items).concat(self.items().toArray()));\n return self.renderNew();\n },\n insert: function (items, index, before) {\n var self = this;\n var curItems, beforeItems, afterItems;\n items = self.create(items);\n curItems = self.items();\n if (!before && index < curItems.length - 1) {\n index += 1;\n }\n if (index >= 0 && index < curItems.length) {\n beforeItems = curItems.slice(0, index).toArray();\n afterItems = curItems.slice(index).toArray();\n curItems.set(beforeItems.concat(items, afterItems));\n }\n return self.renderNew();\n },\n fromJSON: function (data) {\n var self = this;\n for (var name in data) {\n self.find('#' + name).value(data[name]);\n }\n return self;\n },\n toJSON: function () {\n var self = this, data = {};\n self.find('*').each(function (ctrl) {\n var name = ctrl.name(), value = ctrl.value();\n if (name && typeof value !== 'undefined') {\n data[name] = value;\n }\n });\n return data;\n },\n renderHtml: function () {\n var self = this, layout = self._layout, role = this.settings.role;\n self.preRender();\n layout.preRender(self);\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n var box;\n self.items().exec('postRender');\n self._super();\n self._layout.postRender(self);\n self.state.set('rendered', true);\n if (self.settings.style) {\n self.$el.css(self.settings.style);\n }\n if (self.settings.border) {\n box = self.borderBox;\n self.$el.css({\n 'border-top-width': box.top,\n 'border-right-width': box.right,\n 'border-bottom-width': box.bottom,\n 'border-left-width': box.left\n });\n }\n if (!self.parent()) {\n self.keyboardNav = KeyboardNavigation({ root: self });\n }\n return self;\n },\n initLayoutRect: function () {\n var self = this, layoutRect = self._super();\n self._layout.recalc(self);\n return layoutRect;\n },\n recalc: function () {\n var self = this;\n var rect = self._layoutRect;\n var lastRect = self._lastRect;\n if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {\n self._layout.recalc(self);\n rect = self.layoutRect();\n self._lastRect = {\n x: rect.x,\n y: rect.y,\n w: rect.w,\n h: rect.h\n };\n return true;\n }\n },\n reflow: function () {\n var i;\n $_921m08uxjkmcwsk2.remove(this);\n if (this.visible()) {\n Control$1.repaintControls = [];\n Control$1.repaintControls.map = {};\n this.recalc();\n i = Control$1.repaintControls.length;\n while (i--) {\n Control$1.repaintControls[i].repaint();\n }\n if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {\n this.repaint();\n }\n Control$1.repaintControls = [];\n }\n return this;\n }\n });\n\n function getDocumentSize(doc) {\n var documentElement, body, scrollWidth, clientWidth;\n var offsetWidth, scrollHeight, clientHeight, offsetHeight;\n var max = Math.max;\n documentElement = doc.documentElement;\n body = doc.body;\n scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);\n clientWidth = max(documentElement.clientWidth, body.clientWidth);\n offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);\n scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);\n clientHeight = max(documentElement.clientHeight, body.clientHeight);\n offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);\n return {\n width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,\n height: scrollHeight < offsetHeight ? clientHeight : scrollHeight\n };\n }\n function updateWithTouchData(e) {\n var keys, i;\n if (e.changedTouches) {\n keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');\n for (i = 0; i < keys.length; i++) {\n e[keys[i]] = e.changedTouches[0][keys[i]];\n }\n }\n }\n function DragHelper (id, settings) {\n var $eventOverlay;\n var doc = settings.document || document;\n var downButton;\n var start, stop$$1, drag, startX, startY;\n settings = settings || {};\n var handleElement = doc.getElementById(settings.handle || id);\n start = function (e) {\n var docSize = getDocumentSize(doc);\n var handleElm, cursor;\n updateWithTouchData(e);\n e.preventDefault();\n downButton = e.button;\n handleElm = handleElement;\n startX = e.screenX;\n startY = e.screenY;\n if (window.getComputedStyle) {\n cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');\n } else {\n cursor = handleElm.runtimeStyle.cursor;\n }\n $eventOverlay = global$9('
    ').css({\n position: 'absolute',\n top: 0,\n left: 0,\n width: docSize.width,\n height: docSize.height,\n zIndex: 2147483647,\n opacity: 0.0001,\n cursor: cursor\n }).appendTo(doc.body);\n global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);\n settings.start(e);\n };\n drag = function (e) {\n updateWithTouchData(e);\n if (e.button !== downButton) {\n return stop$$1(e);\n }\n e.deltaX = e.screenX - startX;\n e.deltaY = e.screenY - startY;\n e.preventDefault();\n settings.drag(e);\n };\n stop$$1 = function (e) {\n updateWithTouchData(e);\n global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);\n $eventOverlay.remove();\n if (settings.stop) {\n settings.stop(e);\n }\n };\n this.destroy = function () {\n global$9(handleElement).off();\n };\n global$9(handleElement).on('mousedown touchstart', start);\n }\n\n var $_c9juz9uzjkmcwskb = {\n init: function () {\n var self = this;\n self.on('repaint', self.renderScroll);\n },\n renderScroll: function () {\n var self = this, margin = 2;\n function repaintScroll() {\n var hasScrollH, hasScrollV, bodyElm;\n function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {\n var containerElm, scrollBarElm, scrollThumbElm;\n var containerSize, scrollSize, ratio, rect;\n var posNameLower, sizeNameLower;\n scrollBarElm = self.getEl('scroll' + axisName);\n if (scrollBarElm) {\n posNameLower = posName.toLowerCase();\n sizeNameLower = sizeName.toLowerCase();\n global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);\n if (!hasScroll) {\n global$9(scrollBarElm).css('display', 'none');\n return;\n }\n global$9(scrollBarElm).css('display', 'block');\n containerElm = self.getEl('body');\n scrollThumbElm = self.getEl('scroll' + axisName + 't');\n containerSize = containerElm['client' + sizeName] - margin * 2;\n containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;\n scrollSize = containerElm['scroll' + sizeName];\n ratio = containerSize / scrollSize;\n rect = {};\n rect[posNameLower] = containerElm['offset' + posName] + margin;\n rect[sizeNameLower] = containerSize;\n global$9(scrollBarElm).css(rect);\n rect = {};\n rect[posNameLower] = containerElm['scroll' + posName] * ratio;\n rect[sizeNameLower] = containerSize * ratio;\n global$9(scrollThumbElm).css(rect);\n }\n }\n bodyElm = self.getEl('body');\n hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;\n hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;\n repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');\n repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');\n }\n function addScroll() {\n function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {\n var scrollStart;\n var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;\n global$9(self.getEl()).append('
    ' + '
    ' + '
    ');\n self.draghelper = new DragHelper(axisId + 't', {\n start: function () {\n scrollStart = self.getEl('body')['scroll' + posName];\n global$9('#' + axisId).addClass(prefix + 'active');\n },\n drag: function (e) {\n var ratio, hasScrollH, hasScrollV, containerSize;\n var layoutRect = self.layoutRect();\n hasScrollH = layoutRect.contentW > layoutRect.innerW;\n hasScrollV = layoutRect.contentH > layoutRect.innerH;\n containerSize = self.getEl('body')['client' + sizeName] - margin * 2;\n containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;\n ratio = containerSize / self.getEl('body')['scroll' + sizeName];\n self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;\n },\n stop: function () {\n global$9('#' + axisId).removeClass(prefix + 'active');\n }\n });\n }\n self.classes.add('scroll');\n addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');\n addScrollAxis('h', 'Left', 'Width', 'X', 'Height');\n }\n if (self.settings.autoScroll) {\n if (!self._hasScroll) {\n self._hasScroll = true;\n addScroll();\n self.on('wheel', function (e) {\n var bodyEl = self.getEl('body');\n bodyEl.scrollLeft += (e.deltaX || 0) * 10;\n bodyEl.scrollTop += e.deltaY * 10;\n repaintScroll();\n });\n global$9(self.getEl('body')).on('scroll', repaintScroll);\n }\n repaintScroll();\n }\n }\n };\n\n var Panel = Container.extend({\n Defaults: {\n layout: 'fit',\n containerCls: 'panel'\n },\n Mixins: [$_c9juz9uzjkmcwskb],\n renderHtml: function () {\n var self = this;\n var layout = self._layout;\n var innerHtml = self.settings.html;\n self.preRender();\n layout.preRender(self);\n if (typeof innerHtml === 'undefined') {\n innerHtml = '
    ' + layout.renderHtml(self) + '
    ';\n } else {\n if (typeof innerHtml === 'function') {\n innerHtml = innerHtml.call(self);\n }\n self._hasBody = false;\n }\n return '
    ' + (self._preBodyHtml || '') + innerHtml + '
    ';\n }\n });\n\n var $_4ci2x6v1jkmcwski = {\n resizeToContent: function () {\n this._layoutRect.autoResize = true;\n this._lastRect = null;\n this.reflow();\n },\n resizeTo: function (w, h) {\n if (w <= 1 || h <= 1) {\n var rect = funcs.getWindowSize();\n w = w <= 1 ? w * rect.w : w;\n h = h <= 1 ? h * rect.h : h;\n }\n this._layoutRect.autoResize = false;\n return this.layoutRect({\n minW: w,\n minH: h,\n w: w,\n h: h\n }).reflow();\n },\n resizeBy: function (dw, dh) {\n var self = this, rect = self.layoutRect();\n return self.resizeTo(rect.w + dw, rect.h + dh);\n }\n };\n\n var documentClickHandler;\n var documentScrollHandler;\n var windowResizeHandler;\n var visiblePanels = [];\n var zOrder = [];\n var hasModal;\n function isChildOf(ctrl, parent$$1) {\n while (ctrl) {\n if (ctrl === parent$$1) {\n return true;\n }\n ctrl = ctrl.parent();\n }\n }\n function skipOrHidePanels(e) {\n var i = visiblePanels.length;\n while (i--) {\n var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);\n if (panel.settings.autohide) {\n if (clickCtrl) {\n if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {\n continue;\n }\n }\n e = panel.fire('autohide', { target: e.target });\n if (!e.isDefaultPrevented()) {\n panel.hide();\n }\n }\n }\n }\n function bindDocumentClickHandler() {\n if (!documentClickHandler) {\n documentClickHandler = function (e) {\n if (e.button === 2) {\n return;\n }\n skipOrHidePanels(e);\n };\n global$9(document).on('click touchstart', documentClickHandler);\n }\n }\n function bindDocumentScrollHandler() {\n if (!documentScrollHandler) {\n documentScrollHandler = function () {\n var i;\n i = visiblePanels.length;\n while (i--) {\n repositionPanel(visiblePanels[i]);\n }\n };\n global$9(window).on('scroll', documentScrollHandler);\n }\n }\n function bindWindowResizeHandler() {\n if (!windowResizeHandler) {\n var docElm_1 = document.documentElement;\n var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;\n windowResizeHandler = function () {\n if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {\n clientWidth_1 = docElm_1.clientWidth;\n clientHeight_1 = docElm_1.clientHeight;\n FloatPanel.hideAll();\n }\n };\n global$9(window).on('resize', windowResizeHandler);\n }\n }\n function repositionPanel(panel) {\n var scrollY$$1 = funcs.getViewPort().y;\n function toggleFixedChildPanels(fixed, deltaY) {\n var parent$$1;\n for (var i = 0; i < visiblePanels.length; i++) {\n if (visiblePanels[i] !== panel) {\n parent$$1 = visiblePanels[i].parent();\n while (parent$$1 && (parent$$1 = parent$$1.parent())) {\n if (parent$$1 === panel) {\n visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();\n }\n }\n }\n }\n }\n if (panel.settings.autofix) {\n if (!panel.state.get('fixed')) {\n panel._autoFixY = panel.layoutRect().y;\n if (panel._autoFixY < scrollY$$1) {\n panel.fixed(true).layoutRect({ y: 0 }).repaint();\n toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);\n }\n } else {\n if (panel._autoFixY > scrollY$$1) {\n panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();\n toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);\n }\n }\n }\n }\n function addRemove(add, ctrl) {\n var i, zIndex = FloatPanel.zIndex || 65535, topModal;\n if (add) {\n zOrder.push(ctrl);\n } else {\n i = zOrder.length;\n while (i--) {\n if (zOrder[i] === ctrl) {\n zOrder.splice(i, 1);\n }\n }\n }\n if (zOrder.length) {\n for (i = 0; i < zOrder.length; i++) {\n if (zOrder[i].modal) {\n zIndex++;\n topModal = zOrder[i];\n }\n zOrder[i].getEl().style.zIndex = zIndex;\n zOrder[i].zIndex = zIndex;\n zIndex++;\n }\n }\n var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];\n if (topModal) {\n global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);\n } else if (modalBlockEl) {\n modalBlockEl.parentNode.removeChild(modalBlockEl);\n hasModal = false;\n }\n FloatPanel.currentZIndex = zIndex;\n }\n var FloatPanel = Panel.extend({\n Mixins: [\n $_77p0ikukjkmcwsie,\n $_4ci2x6v1jkmcwski\n ],\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1._eventsRoot = self$$1;\n self$$1.classes.add('floatpanel');\n if (settings.autohide) {\n bindDocumentClickHandler();\n bindWindowResizeHandler();\n visiblePanels.push(self$$1);\n }\n if (settings.autofix) {\n bindDocumentScrollHandler();\n self$$1.on('move', function () {\n repositionPanel(this);\n });\n }\n self$$1.on('postrender show', function (e) {\n if (e.control === self$$1) {\n var $modalBlockEl_1;\n var prefix_1 = self$$1.classPrefix;\n if (self$$1.modal && !hasModal) {\n $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());\n if (!$modalBlockEl_1[0]) {\n $modalBlockEl_1 = global$9('
    ').appendTo(self$$1.getContainerElm());\n }\n global$7.setTimeout(function () {\n $modalBlockEl_1.addClass(prefix_1 + 'in');\n global$9(self$$1.getEl()).addClass(prefix_1 + 'in');\n });\n hasModal = true;\n }\n addRemove(true, self$$1);\n }\n });\n self$$1.on('show', function () {\n self$$1.parents().each(function (ctrl) {\n if (ctrl.state.get('fixed')) {\n self$$1.fixed(true);\n return false;\n }\n });\n });\n if (settings.popover) {\n self$$1._preBodyHtml = '
    ';\n self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');\n }\n self$$1.aria('label', settings.ariaLabel);\n self$$1.aria('labelledby', self$$1._id);\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n },\n fixed: function (state) {\n var self$$1 = this;\n if (self$$1.state.get('fixed') !== state) {\n if (self$$1.state.get('rendered')) {\n var viewport = funcs.getViewPort();\n if (state) {\n self$$1.layoutRect().y -= viewport.y;\n } else {\n self$$1.layoutRect().y += viewport.y;\n }\n }\n self$$1.classes.toggle('fixed', state);\n self$$1.state.set('fixed', state);\n }\n return self$$1;\n },\n show: function () {\n var self$$1 = this;\n var i;\n var state = self$$1._super();\n i = visiblePanels.length;\n while (i--) {\n if (visiblePanels[i] === self$$1) {\n break;\n }\n }\n if (i === -1) {\n visiblePanels.push(self$$1);\n }\n return state;\n },\n hide: function () {\n removeVisiblePanel(this);\n addRemove(false, this);\n return this._super();\n },\n hideAll: function () {\n FloatPanel.hideAll();\n },\n close: function () {\n var self$$1 = this;\n if (!self$$1.fire('close').isDefaultPrevented()) {\n self$$1.remove();\n addRemove(false, self$$1);\n }\n return self$$1;\n },\n remove: function () {\n removeVisiblePanel(this);\n this._super();\n },\n postRender: function () {\n var self$$1 = this;\n if (self$$1.settings.bodyRole) {\n this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);\n }\n return self$$1._super();\n }\n });\n FloatPanel.hideAll = function () {\n var i = visiblePanels.length;\n while (i--) {\n var panel = visiblePanels[i];\n if (panel && panel.settings.autohide) {\n panel.hide();\n visiblePanels.splice(i, 1);\n }\n }\n };\n function removeVisiblePanel(panel) {\n var i;\n i = visiblePanels.length;\n while (i--) {\n if (visiblePanels[i] === panel) {\n visiblePanels.splice(i, 1);\n }\n }\n i = zOrder.length;\n while (i--) {\n if (zOrder[i] === panel) {\n zOrder.splice(i, 1);\n }\n }\n }\n\n var isFixed$1 = function (inlineToolbarContainer, editor) {\n return !!(inlineToolbarContainer && !editor.settings.ui_container);\n };\n var render$1 = function (editor, theme, args) {\n var panel, inlineToolbarContainer;\n var DOM = global$3.DOM;\n var fixedToolbarContainer = getFixedToolbarContainer(editor);\n if (fixedToolbarContainer) {\n inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];\n }\n var reposition = function () {\n if (panel && panel.moveRel && panel.visible() && !panel._fixed) {\n var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();\n var deltaX = 0, deltaY = 0;\n if (scrollContainer) {\n var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);\n deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);\n deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);\n }\n panel.fixed(false).moveRel(body, editor.rtl ? [\n 'tr-br',\n 'br-tr'\n ] : [\n 'tl-bl',\n 'bl-tl',\n 'tr-br'\n ]).moveBy(deltaX, deltaY);\n }\n };\n var show = function () {\n if (panel) {\n panel.show();\n reposition();\n DOM.addClass(editor.getBody(), 'mce-edit-focus');\n }\n };\n var hide = function () {\n if (panel) {\n panel.hide();\n FloatPanel.hideAll();\n DOM.removeClass(editor.getBody(), 'mce-edit-focus');\n }\n };\n var render = function () {\n if (panel) {\n if (!panel.visible()) {\n show();\n }\n return;\n }\n panel = theme.panel = global$4.create({\n type: inlineToolbarContainer ? 'panel' : 'floatpanel',\n role: 'application',\n classes: 'tinymce tinymce-inline',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n autohide: false,\n autofix: isFixed$1(inlineToolbarContainer, editor),\n fixed: isFixed$1(inlineToolbarContainer, editor),\n border: 1,\n items: [\n hasMenubar(editor) === false ? null : {\n type: 'menubar',\n border: '0 0 1 0',\n items: $_3ke8tlu8jkmcwsgq.createMenuButtons(editor)\n },\n $_5g1hacu7jkmcwsgn.createToolbars(editor, getToolbarSize(editor))\n ]\n });\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\n $_1jkxpltzjkmcwsg4.fireBeforeRenderUI(editor);\n if (inlineToolbarContainer) {\n panel.renderTo(inlineToolbarContainer).reflow();\n } else {\n panel.renderTo().reflow();\n }\n $_1mdekmu0jkmcwsg5.addKeys(editor, panel);\n show();\n $_44ggy0u1jkmcwsg7.addContextualToolbars(editor);\n editor.on('nodeChange', reposition);\n editor.on('ResizeWindow', reposition);\n editor.on('activate', show);\n editor.on('deactivate', hide);\n editor.nodeChanged();\n };\n editor.settings.content_editable = true;\n editor.on('focus', function () {\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM.styleSheetLoader.load(args.skinUiCss, render, render);\n } else {\n render();\n }\n });\n editor.on('blur hide', hide);\n editor.on('remove', function () {\n if (panel) {\n panel.remove();\n panel = null;\n }\n });\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM.styleSheetLoader.load(args.skinUiCss, $_2tsyb2uejkmcwsha.fireSkinLoaded(editor));\n } else {\n $_2tsyb2uejkmcwsha.fireSkinLoaded(editor)();\n }\n return {};\n };\n var $_aqv3nuufjkmcwshc = { render: render$1 };\n\n function Throbber (elm, inline) {\n var self = this;\n var state;\n var classPrefix = Control$1.classPrefix;\n var timer;\n self.show = function (time, callback) {\n function render() {\n if (state) {\n global$9(elm).append('
    ');\n if (callback) {\n callback();\n }\n }\n }\n self.hide();\n state = true;\n if (time) {\n timer = global$7.setTimeout(render, time);\n } else {\n render();\n }\n return self;\n };\n self.hide = function () {\n var child = elm.lastChild;\n global$7.clearTimeout(timer);\n if (child && child.className.indexOf('throbber') !== -1) {\n child.parentNode.removeChild(child);\n }\n state = false;\n return self;\n };\n }\n\n var setup = function (editor, theme) {\n var throbber;\n editor.on('ProgressState', function (e) {\n throbber = throbber || new Throbber(theme.panel.getEl('body'));\n if (e.state) {\n throbber.show(e.time);\n } else {\n throbber.hide();\n }\n });\n };\n var $_575jhev2jkmcwskj = { setup: setup };\n\n var renderUI = function (editor, theme, args) {\n var skinUrl = getSkinUrl(editor);\n if (skinUrl) {\n args.skinUiCss = skinUrl + '/skin.min.css';\n editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');\n }\n $_575jhev2jkmcwskj.setup(editor, theme);\n return isInline(editor) ? $_aqv3nuufjkmcwshc.render(editor, theme, args) : $_9mz4sntvjkmcwsft.render(editor, theme, args);\n };\n var $_7k92xgtrjkmcwsfn = { renderUI: renderUI };\n\n var Tooltip = Control$1.extend({\n Mixins: [$_77p0ikukjkmcwsie],\n Defaults: { classes: 'widget tooltip tooltip-n' },\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n return '
    ' + '
    ' + '
    ' + self.encode(self.state.get('text')) + '
    ' + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl().lastChild.innerHTML = self.encode(e.value);\n });\n return self._super();\n },\n repaint: function () {\n var self = this;\n var style, rect;\n style = self.getEl().style;\n rect = self._layoutRect;\n style.left = rect.x + 'px';\n style.top = rect.y + 'px';\n style.zIndex = 65535 + 65535;\n }\n });\n\n var Widget = Control$1.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n settings = self.settings;\n self.canFocus = true;\n if (settings.tooltip && Widget.tooltips !== false) {\n self.on('mouseenter', function (e) {\n var tooltip = self.tooltip().moveTo(-65535);\n if (e.control === self) {\n var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ]);\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n tooltip.moveRel(self.getEl(), rel);\n } else {\n tooltip.hide();\n }\n });\n self.on('mouseleave mousedown click', function () {\n self.tooltip().remove();\n self._tooltip = null;\n });\n }\n self.aria('label', settings.ariaLabel || settings.tooltip);\n },\n tooltip: function () {\n if (!this._tooltip) {\n this._tooltip = new Tooltip({ type: 'tooltip' });\n $_5kmlp5u4jkmcwsge.inheritUiContainer(this, this._tooltip);\n this._tooltip.renderTo();\n }\n return this._tooltip;\n },\n postRender: function () {\n var self = this, settings = self.settings;\n self._super();\n if (!self.parent() && (settings.width || settings.height)) {\n self.initLayoutRect();\n self.repaint();\n }\n if (settings.autofocus) {\n self.focus();\n }\n },\n bindStates: function () {\n var self = this;\n function disable(state) {\n self.aria('disabled', state);\n self.classes.toggle('disabled', state);\n }\n function active(state) {\n self.aria('pressed', state);\n self.classes.toggle('active', state);\n }\n self.state.on('change:disabled', function (e) {\n disable(e.value);\n });\n self.state.on('change:active', function (e) {\n active(e.value);\n });\n if (self.state.get('disabled')) {\n disable(true);\n }\n if (self.state.get('active')) {\n active(true);\n }\n return self._super();\n },\n remove: function () {\n this._super();\n if (this._tooltip) {\n this._tooltip.remove();\n this._tooltip = null;\n }\n }\n });\n\n var Progress = Widget.extend({\n Defaults: { value: 0 },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('progress');\n if (!self.settings.filter) {\n self.settings.filter = function (value) {\n return Math.round(value);\n };\n }\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = this.classPrefix;\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    0%
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.value(self.settings.value);\n return self;\n },\n bindStates: function () {\n var self = this;\n function setValue(value) {\n value = self.settings.filter(value);\n self.getEl().lastChild.innerHTML = value + '%';\n self.getEl().firstChild.firstChild.style.width = value + '%';\n }\n self.state.on('change:value', function (e) {\n setValue(e.value);\n });\n setValue(self.state.get('value'));\n return self._super();\n }\n });\n\n var updateLiveRegion = function (ctx, text) {\n ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');\n };\n var Notification = Control$1.extend({\n Mixins: [$_77p0ikukjkmcwsie],\n Defaults: { classes: 'widget notification' },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.maxWidth = settings.maxWidth;\n if (settings.text) {\n self.text(settings.text);\n }\n if (settings.icon) {\n self.icon = settings.icon;\n }\n if (settings.color) {\n self.color = settings.color;\n }\n if (settings.type) {\n self.classes.add('notification-' + settings.type);\n }\n if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {\n self.closeButton = false;\n } else {\n self.classes.add('has-close');\n self.closeButton = true;\n }\n if (settings.progressBar) {\n self.progressBar = new Progress();\n }\n self.on('click', function (e) {\n if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {\n self.close();\n }\n });\n },\n renderHtml: function () {\n var self = this;\n var prefix = self.classPrefix;\n var icon = '', closeButton = '', progressBar = '', notificationStyle = '';\n if (self.icon) {\n icon = '';\n }\n notificationStyle = ' style=\"max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';\"' : '\"');\n if (self.closeButton) {\n closeButton = '';\n }\n if (self.progressBar) {\n progressBar = self.progressBar.renderHtml();\n }\n return '
    ' + icon + '
    ' + self.state.get('text') + '
    ' + progressBar + closeButton + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n global$7.setTimeout(function () {\n self.$el.addClass(self.classPrefix + 'in');\n updateLiveRegion(self, self.state.get('text'));\n }, 100);\n return self._super();\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl().firstChild.innerHTML = e.value;\n updateLiveRegion(self, e.value);\n });\n if (self.progressBar) {\n self.progressBar.bindStates();\n self.progressBar.state.on('change:value', function (e) {\n updateLiveRegion(self, self.state.get('text'));\n });\n }\n return self._super();\n },\n close: function () {\n var self = this;\n if (!self.fire('close').isDefaultPrevented()) {\n self.remove();\n }\n return self;\n },\n repaint: function () {\n var self = this;\n var style, rect;\n style = self.getEl().style;\n rect = self._layoutRect;\n style.left = rect.x + 'px';\n style.top = rect.y + 'px';\n style.zIndex = 65535 - 1;\n }\n });\n\n function NotificationManagerImpl (editor) {\n var getEditorContainer = function (editor) {\n return editor.inline ? editor.getElement() : editor.getContentAreaContainer();\n };\n var getContainerWidth = function () {\n var container = getEditorContainer(editor);\n return funcs.getSize(container).width;\n };\n var prePositionNotifications = function (notifications) {\n each(notifications, function (notification) {\n notification.moveTo(0, 0);\n });\n };\n var positionNotifications = function (notifications) {\n if (notifications.length > 0) {\n var firstItem = notifications.slice(0, 1)[0];\n var container = getEditorContainer(editor);\n firstItem.moveRel(container, 'tc-tc');\n each(notifications, function (notification, index) {\n if (index > 0) {\n notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');\n }\n });\n }\n };\n var reposition = function (notifications) {\n prePositionNotifications(notifications);\n positionNotifications(notifications);\n };\n var open = function (args, closeCallback) {\n var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });\n var notif = new Notification(extendedArgs);\n notif.args = extendedArgs;\n if (extendedArgs.timeout > 0) {\n notif.timer = setTimeout(function () {\n notif.close();\n closeCallback();\n }, extendedArgs.timeout);\n }\n notif.on('close', function () {\n closeCallback();\n });\n notif.renderTo();\n return notif;\n };\n var close = function (notification) {\n notification.close();\n };\n var getArgs = function (notification) {\n return notification.args;\n };\n return {\n open: open,\n close: close,\n reposition: reposition,\n getArgs: getArgs\n };\n }\n\n var windows = [];\n var oldMetaValue = '';\n function toggleFullScreenState(state) {\n var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';\n var viewport = global$9('meta[name=viewport]')[0], contentValue;\n if (global$8.overrideViewPort === false) {\n return;\n }\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n document.getElementsByTagName('head')[0].appendChild(viewport);\n }\n contentValue = viewport.getAttribute('content');\n if (contentValue && typeof oldMetaValue !== 'undefined') {\n oldMetaValue = contentValue;\n }\n viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);\n }\n function toggleBodyFullScreenClasses(classPrefix, state) {\n if (checkFullscreenWindows() && state === false) {\n global$9([\n document.documentElement,\n document.body\n ]).removeClass(classPrefix + 'fullscreen');\n }\n }\n function checkFullscreenWindows() {\n for (var i = 0; i < windows.length; i++) {\n if (windows[i]._fullscreen) {\n return true;\n }\n }\n return false;\n }\n function handleWindowResize() {\n if (!global$8.desktop) {\n var lastSize_1 = {\n w: window.innerWidth,\n h: window.innerHeight\n };\n global$7.setInterval(function () {\n var w = window.innerWidth, h = window.innerHeight;\n if (lastSize_1.w !== w || lastSize_1.h !== h) {\n lastSize_1 = {\n w: w,\n h: h\n };\n global$9(window).trigger('resize');\n }\n }, 100);\n }\n function reposition() {\n var i;\n var rect = funcs.getWindowSize();\n var layoutRect;\n for (i = 0; i < windows.length; i++) {\n layoutRect = windows[i].layoutRect();\n 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));\n }\n }\n global$9(window).on('resize', reposition);\n }\n var Window$$1 = FloatPanel.extend({\n modal: true,\n Defaults: {\n border: 1,\n layout: 'flex',\n containerCls: 'panel',\n role: 'dialog',\n callbacks: {\n submit: function () {\n this.fire('submit', { data: this.toJSON() });\n },\n close: function () {\n this.close();\n }\n }\n },\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n if (self$$1.isRtl()) {\n self$$1.classes.add('rtl');\n }\n self$$1.classes.add('window');\n self$$1.bodyClasses.add('window-body');\n self$$1.state.set('fixed', true);\n if (settings.buttons) {\n self$$1.statusbar = new Panel({\n layout: 'flex',\n border: '1 0 0 0',\n spacing: 3,\n padding: 10,\n align: 'center',\n pack: self$$1.isRtl() ? 'start' : 'end',\n defaults: { type: 'button' },\n items: settings.buttons\n });\n self$$1.statusbar.classes.add('foot');\n self$$1.statusbar.parent(self$$1);\n }\n self$$1.on('click', function (e) {\n var closeClass = self$$1.classPrefix + 'close';\n if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {\n self$$1.close();\n }\n });\n self$$1.on('cancel', function () {\n self$$1.close();\n });\n self$$1.on('move', function (e) {\n if (e.control === self$$1) {\n FloatPanel.hideAll();\n }\n });\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n self$$1.aria('label', settings.title);\n self$$1._fullscreen = false;\n },\n recalc: function () {\n var self$$1 = this;\n var statusbar$$1 = self$$1.statusbar;\n var layoutRect, width, x, needsRecalc;\n if (self$$1._fullscreen) {\n self$$1.layoutRect(funcs.getWindowSize());\n self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;\n }\n self$$1._super();\n layoutRect = self$$1.layoutRect();\n if (self$$1.settings.title && !self$$1._fullscreen) {\n width = layoutRect.headerW;\n if (width > layoutRect.w) {\n x = layoutRect.x - Math.max(0, width / 2);\n self$$1.layoutRect({\n w: width,\n x: x\n });\n needsRecalc = true;\n }\n }\n if (statusbar$$1) {\n statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();\n width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;\n if (width > layoutRect.w) {\n x = layoutRect.x - Math.max(0, width - layoutRect.w);\n self$$1.layoutRect({\n w: width,\n x: x\n });\n needsRecalc = true;\n }\n }\n if (needsRecalc) {\n self$$1.recalc();\n }\n },\n initLayoutRect: function () {\n var self$$1 = this;\n var layoutRect = self$$1._super();\n var deltaH = 0, headEl;\n if (self$$1.settings.title && !self$$1._fullscreen) {\n headEl = self$$1.getEl('head');\n var size = funcs.getSize(headEl);\n layoutRect.headerW = size.width;\n layoutRect.headerH = size.height;\n deltaH += layoutRect.headerH;\n }\n if (self$$1.statusbar) {\n deltaH += self$$1.statusbar.layoutRect().h;\n }\n layoutRect.deltaH += deltaH;\n layoutRect.minH += deltaH;\n layoutRect.h += deltaH;\n var rect = funcs.getWindowSize();\n layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);\n layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);\n return layoutRect;\n },\n renderHtml: function () {\n var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;\n var settings = self$$1.settings;\n var headerHtml = '', footerHtml = '', html = settings.html;\n self$$1.preRender();\n layout.preRender(self$$1);\n if (settings.title) {\n headerHtml = '
    ' + '
    ' + self$$1.encode(settings.title) + '
    ' + '
    ' + '' + '
    ';\n }\n if (settings.url) {\n html = '';\n }\n if (typeof html === 'undefined') {\n html = layout.renderHtml(self$$1);\n }\n if (self$$1.statusbar) {\n footerHtml = self$$1.statusbar.renderHtml();\n }\n return '
    ' + '
    ' + headerHtml + '
    ' + html + '
    ' + footerHtml + '
    ' + '
    ';\n },\n fullscreen: function (state) {\n var self$$1 = this;\n var documentElement = document.documentElement;\n var slowRendering;\n var prefix = self$$1.classPrefix;\n var layoutRect;\n if (state !== self$$1._fullscreen) {\n global$9(window).on('resize', function () {\n var time;\n if (self$$1._fullscreen) {\n if (!slowRendering) {\n time = new Date().getTime();\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n if (new Date().getTime() - time > 50) {\n slowRendering = true;\n }\n } else {\n if (!self$$1._timer) {\n self$$1._timer = global$7.setTimeout(function () {\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n self$$1._timer = 0;\n }, 50);\n }\n }\n }\n });\n layoutRect = self$$1.layoutRect();\n self$$1._fullscreen = state;\n if (!state) {\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox(self$$1.settings.border);\n self$$1.getEl('head').style.display = '';\n layoutRect.deltaH += layoutRect.headerH;\n global$9([\n documentElement,\n document.body\n ]).removeClass(prefix + 'fullscreen');\n self$$1.classes.remove('fullscreen');\n self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);\n } else {\n self$$1._initial = {\n x: layoutRect.x,\n y: layoutRect.y,\n w: layoutRect.w,\n h: layoutRect.h\n };\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox('0');\n self$$1.getEl('head').style.display = 'none';\n layoutRect.deltaH -= layoutRect.headerH + 2;\n global$9([\n documentElement,\n document.body\n ]).addClass(prefix + 'fullscreen');\n self$$1.classes.add('fullscreen');\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n }\n }\n return self$$1.reflow();\n },\n postRender: function () {\n var self$$1 = this;\n var startPos;\n setTimeout(function () {\n self$$1.classes.add('in');\n self$$1.fire('open');\n }, 0);\n self$$1._super();\n if (self$$1.statusbar) {\n self$$1.statusbar.postRender();\n }\n self$$1.focus();\n this.dragHelper = new DragHelper(self$$1._id + '-dragh', {\n start: function () {\n startPos = {\n x: self$$1.layoutRect().x,\n y: self$$1.layoutRect().y\n };\n },\n drag: function (e) {\n self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);\n }\n });\n self$$1.on('submit', function (e) {\n if (!e.isDefaultPrevented()) {\n self$$1.close();\n }\n });\n windows.push(self$$1);\n toggleFullScreenState(true);\n },\n submit: function () {\n return this.fire('submit', { data: this.toJSON() });\n },\n remove: function () {\n var self$$1 = this;\n var i;\n self$$1.dragHelper.destroy();\n self$$1._super();\n if (self$$1.statusbar) {\n this.statusbar.remove();\n }\n toggleBodyFullScreenClasses(self$$1.classPrefix, false);\n i = windows.length;\n while (i--) {\n if (windows[i] === self$$1) {\n windows.splice(i, 1);\n }\n }\n toggleFullScreenState(windows.length > 0);\n },\n getContentWindow: function () {\n var ifr = this.getEl().getElementsByTagName('iframe')[0];\n return ifr ? ifr.contentWindow : null;\n }\n });\n handleWindowResize();\n\n var MessageBox = Window$$1.extend({\n init: function (settings) {\n settings = {\n border: 1,\n padding: 20,\n layout: 'flex',\n pack: 'center',\n align: 'center',\n containerCls: 'panel',\n autoScroll: true,\n buttons: {\n type: 'button',\n text: 'Ok',\n action: 'ok'\n },\n items: {\n type: 'label',\n multiline: true,\n maxWidth: 500,\n maxHeight: 200\n }\n };\n this._super(settings);\n },\n Statics: {\n OK: 1,\n OK_CANCEL: 2,\n YES_NO: 3,\n YES_NO_CANCEL: 4,\n msgBox: function (settings) {\n var buttons;\n var callback = settings.callback || function () {\n };\n function createButton(text, status$$1, primary) {\n return {\n type: 'button',\n text: text,\n subtype: primary ? 'primary' : '',\n onClick: function (e) {\n e.control.parents()[1].close();\n callback(status$$1);\n }\n };\n }\n switch (settings.buttons) {\n case MessageBox.OK_CANCEL:\n buttons = [\n createButton('Ok', true, true),\n createButton('Cancel', false)\n ];\n break;\n case MessageBox.YES_NO:\n case MessageBox.YES_NO_CANCEL:\n buttons = [\n createButton('Yes', 1, true),\n createButton('No', 0)\n ];\n if (settings.buttons === MessageBox.YES_NO_CANCEL) {\n buttons.push(createButton('Cancel', -1));\n }\n break;\n default:\n buttons = [createButton('Ok', true, true)];\n break;\n }\n return new Window$$1({\n padding: 20,\n x: settings.x,\n y: settings.y,\n minWidth: 300,\n minHeight: 100,\n layout: 'flex',\n pack: 'center',\n align: 'center',\n buttons: buttons,\n title: settings.title,\n role: 'alertdialog',\n items: {\n type: 'label',\n multiline: true,\n maxWidth: 500,\n maxHeight: 200,\n text: settings.text\n },\n onPostRender: function () {\n this.aria('describedby', this.items()[0]._id);\n },\n onClose: settings.onClose,\n onCancel: function () {\n callback(false);\n }\n }).renderTo(document.body).reflow();\n },\n alert: function (settings, callback) {\n if (typeof settings === 'string') {\n settings = { text: settings };\n }\n settings.callback = callback;\n return MessageBox.msgBox(settings);\n },\n confirm: function (settings, callback) {\n if (typeof settings === 'string') {\n settings = { text: settings };\n }\n settings.callback = callback;\n settings.buttons = MessageBox.OK_CANCEL;\n return MessageBox.msgBox(settings);\n }\n }\n });\n\n function WindowManagerImpl (editor) {\n var open$$1 = function (args, params, closeCallback) {\n var win;\n args.title = args.title || ' ';\n args.url = args.url || args.file;\n if (args.url) {\n args.width = parseInt(args.width || 320, 10);\n args.height = parseInt(args.height || 240, 10);\n }\n if (args.body) {\n args.items = {\n defaults: args.defaults,\n type: args.bodyType || 'form',\n items: args.body,\n data: args.data,\n callbacks: args.commands\n };\n }\n if (!args.url && !args.buttons) {\n args.buttons = [\n {\n text: 'Ok',\n subtype: 'primary',\n onclick: function () {\n win.find('form')[0].submit();\n }\n },\n {\n text: 'Cancel',\n onclick: function () {\n win.close();\n }\n }\n ];\n }\n win = new Window$$1(args);\n win.on('close', function () {\n closeCallback(win);\n });\n if (args.data) {\n win.on('postRender', function () {\n this.find('*').each(function (ctrl) {\n var name$$1 = ctrl.name();\n if (name$$1 in args.data) {\n ctrl.value(args.data[name$$1]);\n }\n });\n });\n }\n win.features = args || {};\n win.params = params || {};\n win = win.renderTo(document.body).reflow();\n return win;\n };\n var alert$$1 = function (message, choiceCallback, closeCallback) {\n var win;\n win = MessageBox.alert(message, function () {\n choiceCallback();\n });\n win.on('close', function () {\n closeCallback(win);\n });\n return win;\n };\n var confirm$$1 = function (message, choiceCallback, closeCallback) {\n var win;\n win = MessageBox.confirm(message, function (state) {\n choiceCallback(state);\n });\n win.on('close', function () {\n closeCallback(win);\n });\n return win;\n };\n var close$$1 = function (window$$1) {\n window$$1.close();\n };\n var getParams = function (window$$1) {\n return window$$1.params;\n };\n var setParams = function (window$$1, params) {\n window$$1.params = params;\n };\n return {\n open: open$$1,\n alert: alert$$1,\n confirm: confirm$$1,\n close: close$$1,\n getParams: getParams,\n setParams: setParams\n };\n }\n\n var get = function (editor) {\n var renderUI = function (args) {\n return $_7k92xgtrjkmcwsfn.renderUI(editor, this, args);\n };\n var resizeTo = function (w, h) {\n return $_focm2tubjkmcwsh5.resizeTo(editor, w, h);\n };\n var resizeBy = function (dw, dh) {\n return $_focm2tubjkmcwsh5.resizeBy(editor, dw, dh);\n };\n var getNotificationManagerImpl = function () {\n return NotificationManagerImpl(editor);\n };\n var getWindowManagerImpl = function () {\n return WindowManagerImpl(editor);\n };\n return {\n renderUI: renderUI,\n resizeTo: resizeTo,\n resizeBy: resizeBy,\n getNotificationManagerImpl: getNotificationManagerImpl,\n getWindowManagerImpl: getWindowManagerImpl\n };\n };\n var $_f0tepxtqjkmcwsfm = { get: get };\n\n var Layout = global$10.extend({\n Defaults: {\n firstControlClass: 'first',\n lastControlClass: 'last'\n },\n init: function (settings) {\n this.settings = global$2.extend({}, this.Defaults, settings);\n },\n preRender: function (container) {\n container.bodyClasses.add(this.settings.containerClass);\n },\n applyClasses: function (items) {\n var self = this;\n var settings = self.settings;\n var firstClass, lastClass, firstItem, lastItem;\n firstClass = settings.firstControlClass;\n lastClass = settings.lastControlClass;\n items.each(function (item) {\n item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);\n if (item.visible()) {\n if (!firstItem) {\n firstItem = item;\n }\n lastItem = item;\n }\n });\n if (firstItem) {\n firstItem.classes.add(firstClass);\n }\n if (lastItem) {\n lastItem.classes.add(lastClass);\n }\n },\n renderHtml: function (container) {\n var self = this;\n var html = '';\n self.applyClasses(container.items());\n container.items().each(function (item) {\n html += item.renderHtml();\n });\n return html;\n },\n recalc: function () {\n },\n postRender: function () {\n },\n isNative: function () {\n return false;\n }\n });\n\n var AbsoluteLayout = Layout.extend({\n Defaults: {\n containerClass: 'abs-layout',\n controlClass: 'abs-layout-item'\n },\n recalc: function (container) {\n container.items().filter(':visible').each(function (ctrl) {\n var settings = ctrl.settings;\n ctrl.layoutRect({\n x: settings.x,\n y: settings.y,\n w: settings.w,\n h: settings.h\n });\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n },\n renderHtml: function (container) {\n return '
    ' + this._super(container);\n }\n });\n\n var Button = Widget.extend({\n Defaults: {\n classes: 'widget btn',\n role: 'button'\n },\n init: function (settings) {\n var self$$1 = this;\n var size;\n self$$1._super(settings);\n settings = self$$1.settings;\n size = self$$1.settings.size;\n self$$1.on('click mousedown', function (e) {\n e.preventDefault();\n });\n self$$1.on('touchstart', function (e) {\n self$$1.fire('click', e);\n e.preventDefault();\n });\n if (settings.subtype) {\n self$$1.classes.add(settings.subtype);\n }\n if (size) {\n self$$1.classes.add('btn-' + size);\n }\n if (settings.icon) {\n self$$1.icon(settings.icon);\n }\n },\n icon: function (icon) {\n if (!arguments.length) {\n return this.state.get('icon');\n }\n this.state.set('icon', icon);\n return this;\n },\n repaint: function () {\n var btnElm = this.getEl().firstChild;\n var btnStyle;\n if (btnElm) {\n btnStyle = btnElm.style;\n btnStyle.width = btnStyle.height = '100%';\n }\n this._super();\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n var icon = self$$1.state.get('icon'), image;\n var text = self$$1.state.get('text');\n var textHtml = '';\n var ariaPressed;\n var settings = self$$1.settings;\n image = settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n return '
    ' + '' + '
    ';\n },\n bindStates: function () {\n var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';\n function setButtonText(text) {\n var $span = $('span.' + textCls, self$$1.getEl());\n if (text) {\n if (!$span[0]) {\n $('button:first', self$$1.getEl()).append('');\n $span = $('span.' + textCls, self$$1.getEl());\n }\n $span.html(self$$1.encode(text));\n } else {\n $span.remove();\n }\n self$$1.classes.toggle('btn-has-text', !!text);\n }\n self$$1.state.on('change:text', function (e) {\n setButtonText(e.value);\n });\n self$$1.state.on('change:icon', function (e) {\n var icon = e.value;\n var prefix = self$$1.classPrefix;\n self$$1.settings.icon = icon;\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n var btnElm = self$$1.getEl().firstChild;\n var iconElm = btnElm.getElementsByTagName('i')[0];\n if (icon) {\n if (!iconElm || iconElm !== btnElm.firstChild) {\n iconElm = document.createElement('i');\n btnElm.insertBefore(iconElm, btnElm.firstChild);\n }\n iconElm.className = icon;\n } else if (iconElm) {\n btnElm.removeChild(iconElm);\n }\n setButtonText(self$$1.state.get('text'));\n });\n return self$$1._super();\n }\n });\n\n var BrowseButton = Button.extend({\n init: function (settings) {\n var self = this;\n settings = global$2.extend({\n text: 'Browse...',\n multiple: false,\n accept: null\n }, settings);\n self._super(settings);\n self.classes.add('browsebutton');\n if (settings.multiple) {\n self.classes.add('multiple');\n }\n },\n postRender: function () {\n var self = this;\n var input = funcs.create('input', {\n type: 'file',\n id: self._id + '-browse',\n accept: self.settings.accept\n });\n self._super();\n global$9(input).on('change', function (e) {\n var files = e.target.files;\n self.value = function () {\n if (!files.length) {\n return null;\n } else if (self.settings.multiple) {\n return files;\n } else {\n return files[0];\n }\n };\n e.preventDefault();\n if (files.length) {\n self.fire('change', e);\n }\n });\n global$9(input).on('click', function (e) {\n e.stopPropagation();\n });\n global$9(self.getEl('button')).on('click', function (e) {\n e.stopPropagation();\n input.click();\n });\n self.getEl().appendChild(input);\n },\n remove: function () {\n global$9(this.getEl('button')).off();\n global$9(this.getEl('input')).off();\n this._super();\n }\n });\n\n var ButtonGroup = Container.extend({\n Defaults: {\n defaultType: 'button',\n role: 'group'\n },\n renderHtml: function () {\n var self = this, layout = self._layout;\n self.classes.add('btn-group');\n self.preRender();\n layout.preRender(self);\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var Checkbox = Widget.extend({\n Defaults: {\n classes: 'checkbox',\n role: 'checkbox',\n checked: false\n },\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1.on('click mousedown', function (e) {\n e.preventDefault();\n });\n self$$1.on('click', function (e) {\n e.preventDefault();\n if (!self$$1.disabled()) {\n self$$1.checked(!self$$1.checked());\n }\n });\n self$$1.checked(self$$1.settings.checked);\n },\n checked: function (state) {\n if (!arguments.length) {\n return this.state.get('checked');\n }\n this.state.set('checked', state);\n return this;\n },\n value: function (state) {\n if (!arguments.length) {\n return this.checked();\n }\n return this.checked(state);\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n return '
    ' + '' + '' + self$$1.encode(self$$1.state.get('text')) + '' + '
    ';\n },\n bindStates: function () {\n var self$$1 = this;\n function checked(state) {\n self$$1.classes.toggle('checked', state);\n self$$1.aria('checked', state);\n }\n self$$1.state.on('change:text', function (e) {\n self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);\n });\n self$$1.state.on('change:checked change:value', function (e) {\n self$$1.fire('change');\n checked(e.value);\n });\n self$$1.state.on('change:icon', function (e) {\n var icon = e.value;\n var prefix = self$$1.classPrefix;\n if (typeof icon === 'undefined') {\n return self$$1.settings.icon;\n }\n self$$1.settings.icon = icon;\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n var btnElm = self$$1.getEl().firstChild;\n var iconElm = btnElm.getElementsByTagName('i')[0];\n if (icon) {\n if (!iconElm || iconElm !== btnElm.firstChild) {\n iconElm = document.createElement('i');\n btnElm.insertBefore(iconElm, btnElm.firstChild);\n }\n iconElm.className = icon;\n } else if (iconElm) {\n btnElm.removeChild(iconElm);\n }\n });\n if (self$$1.state.get('checked')) {\n checked(true);\n }\n return self$$1._super();\n }\n });\n\n var global$13 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var ComboBox = Widget.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n settings = self$$1.settings;\n self$$1.classes.add('combobox');\n self$$1.subinput = true;\n self$$1.ariaTarget = 'inp';\n settings.menu = settings.menu || settings.values;\n if (settings.menu) {\n settings.icon = 'caret';\n }\n self$$1.on('click', function (e) {\n var elm = e.target;\n var root = self$$1.getEl();\n if (!global$9.contains(root, elm) && elm !== root) {\n return;\n }\n while (elm && elm !== root) {\n if (elm.id && elm.id.indexOf('-open') !== -1) {\n self$$1.fire('action');\n if (settings.menu) {\n self$$1.showMenu();\n if (e.aria) {\n self$$1.menu.items()[0].focus();\n }\n }\n }\n elm = elm.parentNode;\n }\n });\n self$$1.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {\n e.preventDefault();\n self$$1.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self$$1.fire('submit', { data: rootControl.toJSON() });\n }\n });\n self$$1.on('keyup', function (e) {\n if (e.target.nodeName === 'INPUT') {\n var oldValue = self$$1.state.get('value');\n var newValue = e.target.value;\n if (newValue !== oldValue) {\n self$$1.state.set('value', newValue);\n self$$1.fire('autocomplete', e);\n }\n }\n });\n self$$1.on('mouseover', function (e) {\n var tooltip = self$$1.tooltip().moveTo(-65535);\n if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {\n var statusMessage = self$$1.statusMessage() || 'Ok';\n var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ]);\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n tooltip.moveRel(e.target, rel);\n }\n });\n },\n statusLevel: function (value) {\n if (arguments.length > 0) {\n this.state.set('statusLevel', value);\n }\n return this.state.get('statusLevel');\n },\n statusMessage: function (value) {\n if (arguments.length > 0) {\n this.state.set('statusMessage', value);\n }\n return this.state.get('statusMessage');\n },\n showMenu: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var menu;\n if (!self$$1.menu) {\n menu = settings.menu || [];\n if (menu.length) {\n menu = {\n type: 'menu',\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n }\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());\n self$$1.fire('createmenu');\n self$$1.menu.reflow();\n self$$1.menu.on('cancel', function (e) {\n if (e.control === self$$1.menu) {\n self$$1.focus();\n }\n });\n self$$1.menu.on('show hide', function (e) {\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.value() === self$$1.value());\n });\n }).fire('show');\n self$$1.menu.on('select', function (e) {\n self$$1.value(e.control.value());\n });\n self$$1.on('focusin', function (e) {\n if (e.target.tagName.toUpperCase() === 'INPUT') {\n self$$1.menu.hide();\n }\n });\n self$$1.aria('expanded', true);\n }\n self$$1.menu.show();\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n },\n focus: function () {\n this.getEl('inp').focus();\n },\n repaint: function () {\n var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();\n var width, lineHeight, innerPadding = 0;\n var inputElm = elm.firstChild;\n if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {\n innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);\n }\n if (openElm) {\n width = rect.w - funcs.getSize(openElm).width - 10;\n } else {\n width = rect.w - 10;\n }\n var doc = document;\n if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n lineHeight = self$$1.layoutRect().h - 2 + 'px';\n }\n global$9(inputElm).css({\n width: width - innerPadding,\n lineHeight: lineHeight\n });\n self$$1._super();\n return self$$1;\n },\n postRender: function () {\n var self$$1 = this;\n global$9(this.getEl('inp')).on('change', function (e) {\n self$$1.state.set('value', e.target.value);\n self$$1.fire('change', e);\n });\n return self$$1._super();\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;\n var value = self$$1.state.get('value') || '';\n var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';\n if ('spellcheck' in settings) {\n extraAttrs += ' spellcheck=\"' + settings.spellcheck + '\"';\n }\n if (settings.maxLength) {\n extraAttrs += ' maxlength=\"' + settings.maxLength + '\"';\n }\n if (settings.size) {\n extraAttrs += ' size=\"' + settings.size + '\"';\n }\n if (settings.subtype) {\n extraAttrs += ' type=\"' + settings.subtype + '\"';\n }\n statusHtml = '';\n if (self$$1.disabled()) {\n extraAttrs += ' disabled=\"disabled\"';\n }\n icon = settings.icon;\n if (icon && icon !== 'caret') {\n icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;\n }\n text = self$$1.state.get('text');\n if (icon || text) {\n openBtnHtml = '
    ' + '' + '
    ';\n self$$1.classes.add('has-open');\n }\n return '
    ' + '' + statusHtml + openBtnHtml + '
    ';\n },\n value: function (value) {\n if (arguments.length) {\n this.state.set('value', value);\n return this;\n }\n if (this.state.get('rendered')) {\n this.state.set('value', this.getEl('inp').value);\n }\n return this.state.get('value');\n },\n showAutoComplete: function (items, term) {\n var self$$1 = this;\n if (items.length === 0) {\n self$$1.hideMenu();\n return;\n }\n var insert = function (value, title) {\n return function () {\n self$$1.fire('selectitem', {\n title: title,\n value: value\n });\n };\n };\n if (self$$1.menu) {\n self$$1.menu.items().remove();\n } else {\n self$$1.menu = global$4.create({\n type: 'menu',\n classes: 'combobox-menu',\n layout: 'flow'\n }).parent(self$$1).renderTo();\n }\n global$2.each(items, function (item) {\n self$$1.menu.add({\n text: item.title,\n url: item.previewUrl,\n match: term,\n classes: 'menu-item-ellipsis',\n onclick: insert(item.value, item.title)\n });\n });\n self$$1.menu.renderNew();\n self$$1.hideMenu();\n self$$1.menu.on('cancel', function (e) {\n if (e.control.parent() === self$$1.menu) {\n e.stopPropagation();\n self$$1.focus();\n self$$1.hideMenu();\n }\n });\n self$$1.menu.on('select', function () {\n self$$1.focus();\n });\n var maxW = self$$1.layoutRect().w;\n self$$1.menu.layoutRect({\n w: maxW,\n minW: 0,\n maxW: maxW\n });\n self$$1.menu.repaint();\n self$$1.menu.reflow();\n self$$1.menu.show();\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n },\n hideMenu: function () {\n if (this.menu) {\n this.menu.hide();\n }\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:value', function (e) {\n if (self$$1.getEl('inp').value !== e.value) {\n self$$1.getEl('inp').value = e.value;\n }\n });\n self$$1.state.on('change:disabled', function (e) {\n self$$1.getEl('inp').disabled = e.value;\n });\n self$$1.state.on('change:statusLevel', function (e) {\n var statusIconElm = self$$1.getEl('status');\n var prefix = self$$1.classPrefix, value = e.value;\n funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');\n funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');\n funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');\n funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');\n self$$1.classes.toggle('has-status', value !== 'none');\n self$$1.repaint();\n });\n funcs.on(self$$1.getEl('status'), 'mouseleave', function () {\n self$$1.tooltip().hide();\n });\n self$$1.on('cancel', function (e) {\n if (self$$1.menu && self$$1.menu.visible()) {\n e.stopPropagation();\n self$$1.hideMenu();\n }\n });\n var focusIdx = function (idx, menu) {\n if (menu && menu.items().length > 0) {\n menu.items().eq(idx)[0].focus();\n }\n };\n self$$1.on('keydown', function (e) {\n var keyCode = e.keyCode;\n if (e.target.nodeName === 'INPUT') {\n if (keyCode === global$13.DOWN) {\n e.preventDefault();\n self$$1.fire('autocomplete');\n focusIdx(0, self$$1.menu);\n } else if (keyCode === global$13.UP) {\n e.preventDefault();\n focusIdx(-1, self$$1.menu);\n }\n }\n });\n return self$$1._super();\n },\n remove: function () {\n global$9(this.getEl('inp')).off();\n if (this.menu) {\n this.menu.remove();\n }\n this._super();\n }\n });\n\n var ColorBox = ComboBox.extend({\n init: function (settings) {\n var self = this;\n settings.spellcheck = false;\n if (settings.onaction) {\n settings.icon = 'none';\n }\n self._super(settings);\n self.classes.add('colorbox');\n self.on('change keyup postrender', function () {\n self.repaintColor(self.value());\n });\n },\n repaintColor: function (value) {\n var openElm = this.getEl('open');\n var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;\n if (elm) {\n try {\n elm.style.background = value;\n } catch (ex) {\n }\n }\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:value', function (e) {\n if (self.state.get('rendered')) {\n self.repaintColor(e.value);\n }\n });\n return self._super();\n }\n });\n\n var PanelButton = Button.extend({\n showPanel: function () {\n var self = this, settings = self.settings;\n self.classes.add('opened');\n if (!self.panel) {\n var panelSettings = settings.panel;\n if (panelSettings.type) {\n panelSettings = {\n layout: 'grid',\n items: panelSettings\n };\n }\n panelSettings.role = panelSettings.role || 'dialog';\n panelSettings.popover = true;\n panelSettings.autohide = true;\n panelSettings.ariaRoot = true;\n self.panel = new FloatPanel(panelSettings).on('hide', function () {\n self.classes.remove('opened');\n }).on('cancel', function (e) {\n e.stopPropagation();\n self.focus();\n self.hidePanel();\n }).parent(self).renderTo(self.getContainerElm());\n self.panel.fire('show');\n self.panel.reflow();\n } else {\n self.panel.show();\n }\n var rtlRels = [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ];\n var ltrRels = [\n 'bc-tc',\n 'bc-tr',\n 'bc-tl',\n 'tc-bc',\n 'tc-br',\n 'tc-bl'\n ];\n var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));\n self.panel.classes.toggle('start', rel.substr(-1) === 'l');\n self.panel.classes.toggle('end', rel.substr(-1) === 'r');\n var isTop = rel.substr(0, 1) === 't';\n self.panel.classes.toggle('bottom', !isTop);\n self.panel.classes.toggle('top', isTop);\n self.panel.moveRel(self.getEl(), rel);\n },\n hidePanel: function () {\n var self = this;\n if (self.panel) {\n self.panel.hide();\n }\n },\n postRender: function () {\n var self = this;\n self.aria('haspopup', true);\n self.on('click', function (e) {\n if (e.control === self) {\n if (self.panel && self.panel.visible()) {\n self.hidePanel();\n } else {\n self.showPanel();\n self.panel.focus(!!e.aria);\n }\n }\n });\n return self._super();\n },\n remove: function () {\n if (this.panel) {\n this.panel.remove();\n this.panel = null;\n }\n return this._super();\n }\n });\n\n var DOM$3 = global$3.DOM;\n var ColorButton = PanelButton.extend({\n init: function (settings) {\n this._super(settings);\n this.classes.add('splitbtn');\n this.classes.add('colorbutton');\n },\n color: function (color) {\n if (color) {\n this._color = color;\n this.getEl('preview').style.backgroundColor = color;\n return this;\n }\n return this._color;\n },\n resetColor: function () {\n this._color = null;\n this.getEl('preview').style.backgroundColor = null;\n return this;\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');\n var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';\n var image = self.settings.image ? ' style=\"background-image: url(\\'' + self.settings.image + '\\')\"' : '';\n var textHtml = '';\n if (text) {\n self.classes.add('btn-has-text');\n textHtml = '' + self.encode(text) + '';\n }\n return '
    ' + '' + '' + '
    ';\n },\n postRender: function () {\n var self = this, onClickHandler = self.settings.onclick;\n self.on('click', function (e) {\n if (e.aria && e.aria.key === 'down') {\n return;\n }\n if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {\n e.stopImmediatePropagation();\n onClickHandler.call(self, e);\n }\n });\n delete self.settings.onclick;\n return self._super();\n }\n });\n\n var global$14 = tinymce.util.Tools.resolve('tinymce.util.Color');\n\n var ColorPicker = Widget.extend({\n Defaults: { classes: 'widget colorpicker' },\n init: function (settings) {\n this._super(settings);\n },\n postRender: function () {\n var self = this;\n var color = self.color();\n var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;\n hueRootElm = self.getEl('h');\n huePointElm = self.getEl('hp');\n svRootElm = self.getEl('sv');\n svPointElm = self.getEl('svp');\n function getPos(elm, event) {\n var pos = funcs.getPos(elm);\n var x, y;\n x = event.pageX - pos.x;\n y = event.pageY - pos.y;\n x = Math.max(0, Math.min(x / elm.clientWidth, 1));\n y = Math.max(0, Math.min(y / elm.clientHeight, 1));\n return {\n x: x,\n y: y\n };\n }\n function updateColor(hsv, hueUpdate) {\n var hue = (360 - hsv.h) / 360;\n funcs.css(huePointElm, { top: hue * 100 + '%' });\n if (!hueUpdate) {\n funcs.css(svPointElm, {\n left: hsv.s + '%',\n top: 100 - hsv.v + '%'\n });\n }\n svRootElm.style.background = global$14({\n s: 100,\n v: 100,\n h: hsv.h\n }).toHex();\n self.color().parse({\n s: hsv.s,\n v: hsv.v,\n h: hsv.h\n });\n }\n function updateSaturationAndValue(e) {\n var pos;\n pos = getPos(svRootElm, e);\n hsv.s = pos.x * 100;\n hsv.v = (1 - pos.y) * 100;\n updateColor(hsv);\n self.fire('change');\n }\n function updateHue(e) {\n var pos;\n pos = getPos(hueRootElm, e);\n hsv = color.toHsv();\n hsv.h = (1 - pos.y) * 360;\n updateColor(hsv, true);\n self.fire('change');\n }\n self._repaint = function () {\n hsv = color.toHsv();\n updateColor(hsv);\n };\n self._super();\n self._svdraghelper = new DragHelper(self._id + '-sv', {\n start: updateSaturationAndValue,\n drag: updateSaturationAndValue\n });\n self._hdraghelper = new DragHelper(self._id + '-h', {\n start: updateHue,\n drag: updateHue\n });\n self._repaint();\n },\n rgb: function () {\n return this.color().toRgb();\n },\n value: function (value) {\n var self = this;\n if (arguments.length) {\n self.color().parse(value);\n if (self._rendered) {\n self._repaint();\n }\n } else {\n return self.color().toHex();\n }\n },\n color: function () {\n if (!this._color) {\n this._color = global$14();\n }\n return this._color;\n },\n renderHtml: function () {\n var self = this;\n var id = self._id;\n var prefix = self.classPrefix;\n var hueHtml;\n var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';\n function getOldIeFallbackHtml() {\n var i, l, html = '', gradientPrefix, stopsList;\n gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';\n stopsList = stops.split(',');\n for (i = 0, l = stopsList.length - 1; i < l; i++) {\n html += '
    ';\n }\n return html;\n }\n var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';\n hueHtml = '
    ' + getOldIeFallbackHtml() + '
    ' + '
    ';\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + hueHtml + '
    ';\n }\n });\n\n var DropZone = Widget.extend({\n init: function (settings) {\n var self = this;\n settings = global$2.extend({\n height: 100,\n text: 'Drop an image here',\n multiple: false,\n accept: null\n }, settings);\n self._super(settings);\n self.classes.add('dropzone');\n if (settings.multiple) {\n self.classes.add('multiple');\n }\n },\n renderHtml: function () {\n var self = this;\n var attrs, elm;\n var cfg = self.settings;\n attrs = {\n id: self._id,\n hidefocus: '1'\n };\n elm = funcs.create('div', attrs, '' + this.translate(cfg.text) + '');\n if (cfg.height) {\n funcs.css(elm, 'height', cfg.height + 'px');\n }\n if (cfg.width) {\n funcs.css(elm, 'width', cfg.width + 'px');\n }\n elm.className = self.classes;\n return elm.outerHTML;\n },\n postRender: function () {\n var self = this;\n var toggleDragClass = function (e) {\n e.preventDefault();\n self.classes.toggle('dragenter');\n self.getEl().className = self.classes;\n };\n var filter = function (files) {\n var accept = self.settings.accept;\n if (typeof accept !== 'string') {\n return files;\n }\n var re = new RegExp('(' + accept.split(/\\s*,\\s*/).join('|') + ')$', 'i');\n return global$2.grep(files, function (file) {\n return re.test(file.name);\n });\n };\n self._super();\n self.$el.on('dragover', function (e) {\n e.preventDefault();\n });\n self.$el.on('dragenter', toggleDragClass);\n self.$el.on('dragleave', toggleDragClass);\n self.$el.on('drop', function (e) {\n e.preventDefault();\n if (self.state.get('disabled')) {\n return;\n }\n var files = filter(e.dataTransfer.files);\n self.value = function () {\n if (!files.length) {\n return null;\n } else if (self.settings.multiple) {\n return files;\n } else {\n return files[0];\n }\n };\n if (files.length) {\n self.fire('change', e);\n }\n });\n },\n remove: function () {\n this.$el.off();\n this._super();\n }\n });\n\n var Path = Widget.extend({\n init: function (settings) {\n var self = this;\n if (!settings.delimiter) {\n settings.delimiter = '\\xBB';\n }\n self._super(settings);\n self.classes.add('path');\n self.canFocus = true;\n self.on('click', function (e) {\n var index;\n var target = e.target;\n if (index = target.getAttribute('data-index')) {\n self.fire('select', {\n value: self.row()[index],\n index: index\n });\n }\n });\n self.row(self.settings.row);\n },\n focus: function () {\n var self = this;\n self.getEl().firstChild.focus();\n return self;\n },\n row: function (row) {\n if (!arguments.length) {\n return this.state.get('row');\n }\n this.state.set('row', row);\n return this;\n },\n renderHtml: function () {\n var self = this;\n return '
    ' + self._getDataPathHtml(self.state.get('row')) + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:row', function (e) {\n self.innerHtml(self._getDataPathHtml(e.value));\n });\n return self._super();\n },\n _getDataPathHtml: function (data) {\n var self = this;\n var parts = data || [];\n var i, l, html = '';\n var prefix = self.classPrefix;\n for (i = 0, l = parts.length; i < l; i++) {\n html += (i > 0 ? '
    ' + self.settings.delimiter + '
    ' : '') + '
    ' + parts[i].name + '
    ';\n }\n if (!html) {\n html = '
    \\xA0
    ';\n }\n return html;\n }\n });\n\n var ElementPath = Path.extend({\n postRender: function () {\n var self = this, editor = self.settings.editor;\n function isHidden(elm) {\n if (elm.nodeType === 1) {\n if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {\n return true;\n }\n if (elm.getAttribute('data-mce-type') === 'bookmark') {\n return true;\n }\n }\n return false;\n }\n if (editor.settings.elementpath !== false) {\n self.on('select', function (e) {\n editor.focus();\n editor.selection.select(this.row()[e.index].element);\n editor.nodeChanged();\n });\n editor.on('nodeChange', function (e) {\n var outParents = [];\n var parents = e.parents;\n var i = parents.length;\n while (i--) {\n if (parents[i].nodeType === 1 && !isHidden(parents[i])) {\n var args = editor.fire('ResolveName', {\n name: parents[i].nodeName.toLowerCase(),\n target: parents[i]\n });\n if (!args.isDefaultPrevented()) {\n outParents.push({\n name: args.name,\n element: parents[i]\n });\n }\n if (args.isPropagationStopped()) {\n break;\n }\n }\n }\n self.row(outParents);\n });\n }\n return self._super();\n }\n });\n\n var FormItem = Container.extend({\n Defaults: {\n layout: 'flex',\n align: 'center',\n defaults: { flex: 1 }\n },\n renderHtml: function () {\n var self = this, layout = self._layout, prefix = self.classPrefix;\n self.classes.add('formitem');\n layout.preRender(self);\n return '
    ' + (self.settings.title ? '
    ' + self.settings.title + '
    ' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var Form = Container.extend({\n Defaults: {\n containerCls: 'form',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n flex: 1,\n padding: 15,\n labelGap: 30,\n spacing: 10,\n callbacks: {\n submit: function () {\n this.submit();\n }\n }\n },\n preRender: function () {\n var self = this, items = self.items();\n if (!self.settings.formItemDefaults) {\n self.settings.formItemDefaults = {\n layout: 'flex',\n autoResize: 'overflow',\n defaults: { flex: 1 }\n };\n }\n items.each(function (ctrl) {\n var formItem;\n var label = ctrl.settings.label;\n if (label) {\n formItem = new FormItem(global$2.extend({\n items: {\n type: 'label',\n id: ctrl._id + '-l',\n text: label,\n flex: 0,\n forId: ctrl._id,\n disabled: ctrl.disabled()\n }\n }, self.settings.formItemDefaults));\n formItem.type = 'formitem';\n ctrl.aria('labelledby', ctrl._id + '-l');\n if (typeof ctrl.settings.flex === 'undefined') {\n ctrl.settings.flex = 1;\n }\n self.replace(ctrl, formItem);\n formItem.add(ctrl);\n }\n });\n },\n submit: function () {\n return this.fire('submit', { data: this.toJSON() });\n },\n postRender: function () {\n var self = this;\n self._super();\n self.fromJSON(self.settings.data);\n },\n bindStates: function () {\n var self = this;\n self._super();\n function recalcLabels() {\n var maxLabelWidth = 0;\n var labels = [];\n var i, labelGap, items;\n if (self.settings.labelGapCalc === false) {\n return;\n }\n if (self.settings.labelGapCalc === 'children') {\n items = self.find('formitem');\n } else {\n items = self.items();\n }\n items.filter('formitem').each(function (item) {\n var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;\n maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;\n labels.push(labelCtrl);\n });\n labelGap = self.settings.labelGap || 0;\n i = labels.length;\n while (i--) {\n labels[i].settings.minWidth = maxLabelWidth + labelGap;\n }\n }\n self.on('show', recalcLabels);\n recalcLabels();\n }\n });\n\n var FieldSet = Form.extend({\n Defaults: {\n containerCls: 'fieldset',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n flex: 1,\n padding: '25 15 5 15',\n labelGap: 30,\n spacing: 10,\n border: 1\n },\n renderHtml: function () {\n var self = this, layout = self._layout, prefix = self.classPrefix;\n self.preRender();\n layout.preRender(self);\n return '
    ' + (self.settings.title ? '' + self.settings.title + '' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var unique$1 = 0;\n var generate = function (prefix) {\n var date = new Date();\n var time = date.getTime();\n var random = Math.floor(Math.random() * 1000000000);\n unique$1++;\n return prefix + '_' + random + unique$1 + String(time);\n };\n\n var fromHtml = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\n console.error('HTML does not have a single root node', html);\n throw 'HTML must have a single root node';\n }\n return fromDom(div.childNodes[0]);\n };\n var fromTag = function (tag, scope) {\n var doc = scope || document;\n var node = doc.createElement(tag);\n return fromDom(node);\n };\n var fromText = function (text, scope) {\n var doc = scope || document;\n var node = doc.createTextNode(text);\n return fromDom(node);\n };\n var fromDom = function (node) {\n if (node === null || node === undefined)\n throw new Error('Node cannot be null or undefined');\n return { dom: constant(node) };\n };\n var fromPoint = function (docElm, x, y) {\n var doc = docElm.dom();\n return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n };\n var Element$$1 = {\n fromHtml: fromHtml,\n fromTag: fromTag,\n fromText: fromText,\n fromDom: fromDom,\n fromPoint: fromPoint\n };\n\n var cached = function (f) {\n var called = false;\n var r;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n r = f.apply(null, args);\n }\n return r;\n };\n };\n\n var $_g9js5fw5jkmcwsoh = {\n ATTRIBUTE: Node.ATTRIBUTE_NODE,\n CDATA_SECTION: Node.CDATA_SECTION_NODE,\n COMMENT: Node.COMMENT_NODE,\n DOCUMENT: Node.DOCUMENT_NODE,\n DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,\n ELEMENT: Node.ELEMENT_NODE,\n TEXT: Node.TEXT_NODE,\n PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,\n ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,\n ENTITY: Node.ENTITY_NODE,\n NOTATION: Node.NOTATION_NODE\n };\n\n var name = function (element) {\n var r = element.dom().nodeName;\n return r.toLowerCase();\n };\n var type = function (element) {\n return element.dom().nodeType;\n };\n var value = function (element) {\n return element.dom().nodeValue;\n };\n var isType$1 = function (t) {\n return function (element) {\n return type(element) === t;\n };\n };\n var isComment = function (element) {\n return type(element) === $_g9js5fw5jkmcwsoh.COMMENT || name(element) === '#comment';\n };\n var isElement = isType$1($_g9js5fw5jkmcwsoh.ELEMENT);\n var isText = isType$1($_g9js5fw5jkmcwsoh.TEXT);\n var isDocument = isType$1($_g9js5fw5jkmcwsoh.DOCUMENT);\n var $_dg0wqww4jkmcwsog = {\n name: name,\n type: type,\n value: value,\n isElement: isElement,\n isText: isText,\n isDocument: isDocument,\n isComment: isComment\n };\n\n var inBody = function (element) {\n var dom = $_dg0wqww4jkmcwsog.isText(element) ? element.dom().parentNode : element.dom();\n return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\n };\n var body = cached(function () {\n return getBody(Element$$1.fromDom(document));\n });\n var getBody = function (doc) {\n var body = doc.dom().body;\n if (body === null || body === undefined)\n throw 'Body is not available yet';\n return Element$$1.fromDom(body);\n };\n var $_9gi0tmw2jkmcwsob = {\n body: body,\n getBody: getBody,\n inBody: inBody\n };\n\n var Immutable = function () {\n var fields = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fields[_i] = arguments[_i];\n }\n return function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n if (fields.length !== values.length) {\n throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n }\n var struct = {};\n each(fields, function (name, i) {\n struct[name] = constant(values[i]);\n });\n return struct;\n };\n };\n\n var toArray = function (target, f) {\n var r = [];\n var recurse = function (e) {\n r.push(e);\n return f(e);\n };\n var cur = f(target);\n do {\n cur = cur.bind(recurse);\n } while (cur.isSome());\n return r;\n };\n var $_9vmnzpwcjkmcwsph = { toArray: toArray };\n\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n o = o[parts[i]];\n return o;\n };\n var resolve = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n\n var unsafe = function (name, scope) {\n return resolve(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null)\n throw name + ' not available on this browser';\n return actual;\n };\n var $_22q3m2wfjkmcwsps = { getOrDie: getOrDie };\n\n var node = function () {\n var f = $_22q3m2wfjkmcwsps.getOrDie('Node');\n return f;\n };\n var compareDocumentPosition = function (a, b, match) {\n return (a.compareDocumentPosition(b) & match) !== 0;\n };\n var documentPositionPreceding = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n };\n var documentPositionContainedBy = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n };\n var $_60zxbqwejkmcwspr = {\n documentPositionPreceding: documentPositionPreceding,\n documentPositionContainedBy: documentPositionContainedBy\n };\n\n var firstMatch = function (regexes, s) {\n for (var i = 0; i < regexes.length; i++) {\n var x = regexes[i];\n if (x.test(s))\n return x;\n }\n return undefined;\n };\n var find$2 = function (regexes, agent) {\n var r = firstMatch(regexes, agent);\n if (!r)\n return {\n major: 0,\n minor: 0\n };\n var group = function (i) {\n return Number(agent.replace(r, '$' + i));\n };\n return nu(group(1), group(2));\n };\n var detect = function (versionRegexes, agent) {\n var cleanedAgent = String(agent).toLowerCase();\n if (versionRegexes.length === 0)\n return unknown();\n return find$2(versionRegexes, cleanedAgent);\n };\n var unknown = function () {\n return nu(0, 0);\n };\n var nu = function (major, minor) {\n return {\n major: major,\n minor: minor\n };\n };\n var $_7ota5pwljkmcwsq4 = {\n nu: nu,\n detect: detect,\n unknown: unknown\n };\n\n var edge = 'Edge';\n var chrome = 'Chrome';\n var ie = 'IE';\n var opera = 'Opera';\n var firefox = 'Firefox';\n var safari = 'Safari';\n var isBrowser = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$1 = function () {\n return nu$1({\n current: undefined,\n version: $_7ota5pwljkmcwsq4.unknown()\n });\n };\n var nu$1 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isEdge: isBrowser(edge, current),\n isChrome: isBrowser(chrome, current),\n isIE: isBrowser(ie, current),\n isOpera: isBrowser(opera, current),\n isFirefox: isBrowser(firefox, current),\n isSafari: isBrowser(safari, current)\n };\n };\n var $_fknyifwkjkmcwsq1 = {\n unknown: unknown$1,\n nu: nu$1,\n edge: constant(edge),\n chrome: constant(chrome),\n ie: constant(ie),\n opera: constant(opera),\n firefox: constant(firefox),\n safari: constant(safari)\n };\n\n var windows$1 = 'Windows';\n var ios = 'iOS';\n var android = 'Android';\n var linux = 'Linux';\n var osx = 'OSX';\n var solaris = 'Solaris';\n var freebsd = 'FreeBSD';\n var isOS = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$2 = function () {\n return nu$2({\n current: undefined,\n version: $_7ota5pwljkmcwsq4.unknown()\n });\n };\n var nu$2 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isWindows: isOS(windows$1, current),\n isiOS: isOS(ios, current),\n isAndroid: isOS(android, current),\n isOSX: isOS(osx, current),\n isLinux: isOS(linux, current),\n isSolaris: isOS(solaris, current),\n isFreeBSD: isOS(freebsd, current)\n };\n };\n var $_4dmnqawmjkmcwsq6 = {\n unknown: unknown$2,\n nu: nu$2,\n windows: constant(windows$1),\n ios: constant(ios),\n android: constant(android),\n linux: constant(linux),\n osx: constant(osx),\n solaris: constant(solaris),\n freebsd: constant(freebsd)\n };\n\n function DeviceType (os, browser, userAgent) {\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n var isiPhone = os.isiOS() && !isiPad;\n var isAndroid3 = os.isAndroid() && os.version.major === 3;\n var isAndroid4 = os.isAndroid() && os.version.major === 4;\n var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n var isTouch = os.isiOS() || os.isAndroid();\n var isPhone = isTouch && !isTablet;\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n return {\n isiPad: constant(isiPad),\n isiPhone: constant(isiPhone),\n isTablet: constant(isTablet),\n isPhone: constant(isPhone),\n isTouch: constant(isTouch),\n isAndroid: os.isAndroid,\n isiOS: os.isiOS,\n isWebView: constant(iOSwebview)\n };\n }\n\n var detect$1 = function (candidates, userAgent) {\n var agent = String(userAgent).toLowerCase();\n return find(candidates, function (candidate) {\n return candidate.search(agent);\n });\n };\n var detectBrowser = function (browsers, userAgent) {\n return detect$1(browsers, userAgent).map(function (browser) {\n var version = $_7ota5pwljkmcwsq4.detect(browser.versionRegexes, userAgent);\n return {\n current: browser.name,\n version: version\n };\n });\n };\n var detectOs = function (oses, userAgent) {\n return detect$1(oses, userAgent).map(function (os) {\n var version = $_7ota5pwljkmcwsq4.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version: version\n };\n });\n };\n var $_21yllowojkmcwsqc = {\n detectBrowser: detectBrowser,\n detectOs: detectOs\n };\n\n var contains$1 = function (str, substr) {\n return str.indexOf(substr) !== -1;\n };\n\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n var checkContains = function (target) {\n return function (uastring) {\n return contains$1(uastring, target);\n };\n };\n var browsers = [\n {\n name: 'Edge',\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n search: function (uastring) {\n var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\n return monstrosity;\n }\n },\n {\n name: 'Chrome',\n versionRegexes: [\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n normalVersionRegex\n ],\n search: function (uastring) {\n return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\n }\n },\n {\n name: 'IE',\n versionRegexes: [\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*?rv:([0-9]+)\\.([0-9]+).*/\n ],\n search: function (uastring) {\n return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\n }\n },\n {\n name: 'Opera',\n versionRegexes: [\n normalVersionRegex,\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n ],\n search: checkContains('opera')\n },\n {\n name: 'Firefox',\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n search: checkContains('firefox')\n },\n {\n name: 'Safari',\n versionRegexes: [\n normalVersionRegex,\n /.*?cpu os ([0-9]+)_([0-9]+).*/\n ],\n search: function (uastring) {\n return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\n }\n }\n ];\n var oses = [\n {\n name: 'Windows',\n search: checkContains('win'),\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'iOS',\n search: function (uastring) {\n return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\n },\n versionRegexes: [\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*cpu os ([0-9]+)_([0-9]+).*/,\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n ]\n },\n {\n name: 'Android',\n search: checkContains('android'),\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'OSX',\n search: checkContains('os x'),\n versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n },\n {\n name: 'Linux',\n search: checkContains('linux'),\n versionRegexes: []\n },\n {\n name: 'Solaris',\n search: checkContains('sunos'),\n versionRegexes: []\n },\n {\n name: 'FreeBSD',\n search: checkContains('freebsd'),\n versionRegexes: []\n }\n ];\n var $_993j3rwpjkmcwsqg = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n\n var detect$2 = function (userAgent) {\n var browsers = $_993j3rwpjkmcwsqg.browsers();\n var oses = $_993j3rwpjkmcwsqg.oses();\n var browser = $_21yllowojkmcwsqc.detectBrowser(browsers, userAgent).fold($_fknyifwkjkmcwsq1.unknown, $_fknyifwkjkmcwsq1.nu);\n var os = $_21yllowojkmcwsqc.detectOs(oses, userAgent).fold($_4dmnqawmjkmcwsq6.unknown, $_4dmnqawmjkmcwsq6.nu);\n var deviceType = DeviceType(os, browser, userAgent);\n return {\n browser: browser,\n os: os,\n deviceType: deviceType\n };\n };\n var $_4sbeluwjjkmcwsq0 = { detect: detect$2 };\n\n var detect$3 = cached(function () {\n var userAgent = navigator.userAgent;\n return $_4sbeluwjjkmcwsq0.detect(userAgent);\n });\n var $_g4vzapwijkmcwspx = { detect: detect$3 };\n\n var ELEMENT = $_g9js5fw5jkmcwsoh.ELEMENT;\n var DOCUMENT = $_g9js5fw5jkmcwsoh.DOCUMENT;\n var is = function (element, selector) {\n var elem = element.dom();\n if (elem.nodeType !== ELEMENT)\n return false;\n else if (elem.matches !== undefined)\n return elem.matches(selector);\n else if (elem.msMatchesSelector !== undefined)\n return elem.msMatchesSelector(selector);\n else if (elem.webkitMatchesSelector !== undefined)\n return elem.webkitMatchesSelector(selector);\n else if (elem.mozMatchesSelector !== undefined)\n return elem.mozMatchesSelector(selector);\n else\n throw new Error('Browser lacks native selectors');\n };\n var bypassSelector = function (dom) {\n return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;\n };\n var all = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n };\n var one = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n };\n var $_3tbwnywtjkmcwsqr = {\n all: all,\n is: is,\n one: one\n };\n\n var eq = function (e1, e2) {\n return e1.dom() === e2.dom();\n };\n var isEqualNode = function (e1, e2) {\n return e1.dom().isEqualNode(e2.dom());\n };\n var member = function (element, elements) {\n return exists(elements, curry(eq, element));\n };\n var regularContains = function (e1, e2) {\n var d1 = e1.dom(), d2 = e2.dom();\n return d1 === d2 ? false : d1.contains(d2);\n };\n var ieContains = function (e1, e2) {\n return $_60zxbqwejkmcwspr.documentPositionContainedBy(e1.dom(), e2.dom());\n };\n var browser = $_g4vzapwijkmcwspx.detect().browser;\n var contains$2 = browser.isIE() ? ieContains : regularContains;\n var $_622morwdjkmcwspi = {\n eq: eq,\n isEqualNode: isEqualNode,\n member: member,\n contains: contains$2,\n is: $_3tbwnywtjkmcwsqr.is\n };\n\n var owner = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument);\n };\n var documentElement = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument.documentElement);\n };\n var defaultView = function (element) {\n var el = element.dom();\n var defaultView = el.ownerDocument.defaultView;\n return Element$$1.fromDom(defaultView);\n };\n var parent = function (element) {\n var dom = element.dom();\n return Option.from(dom.parentNode).map(Element$$1.fromDom);\n };\n var findIndex$1 = function (element) {\n return parent(element).bind(function (p) {\n var kin = children(p);\n return findIndex(kin, function (elem) {\n return $_622morwdjkmcwspi.eq(element, elem);\n });\n });\n };\n var parents = function (element, isRoot) {\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n var dom = element.dom();\n var ret = [];\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\n var rawParent = dom.parentNode;\n var parent = Element$$1.fromDom(rawParent);\n ret.push(parent);\n if (stop(parent) === true)\n break;\n else\n dom = rawParent;\n }\n return ret;\n };\n var siblings = function (element) {\n var filterSelf = function (elements) {\n return filter(elements, function (x) {\n return !$_622morwdjkmcwspi.eq(element, x);\n });\n };\n return parent(element).map(children).map(filterSelf).getOr([]);\n };\n var offsetParent = function (element) {\n var dom = element.dom();\n return Option.from(dom.offsetParent).map(Element$$1.fromDom);\n };\n var prevSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.previousSibling).map(Element$$1.fromDom);\n };\n var nextSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.nextSibling).map(Element$$1.fromDom);\n };\n var prevSiblings = function (element) {\n return reverse($_9vmnzpwcjkmcwsph.toArray(element, prevSibling));\n };\n var nextSiblings = function (element) {\n return $_9vmnzpwcjkmcwsph.toArray(element, nextSibling);\n };\n var children = function (element) {\n var dom = element.dom();\n return map(dom.childNodes, Element$$1.fromDom);\n };\n var child = function (element, index) {\n var children = element.dom().childNodes;\n return Option.from(children[index]).map(Element$$1.fromDom);\n };\n var firstChild = function (element) {\n return child(element, 0);\n };\n var lastChild = function (element) {\n return child(element, element.dom().childNodes.length - 1);\n };\n var childNodesCount = function (element) {\n return element.dom().childNodes.length;\n };\n var hasChildNodes = function (element) {\n return element.dom().hasChildNodes();\n };\n var spot = Immutable('element', 'offset');\n var leaf = function (element, offset) {\n var cs = children(element);\n return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\n };\n var $_adk4mbw6jkmcwsok = {\n owner: owner,\n defaultView: defaultView,\n documentElement: documentElement,\n parent: parent,\n findIndex: findIndex$1,\n parents: parents,\n siblings: siblings,\n prevSibling: prevSibling,\n offsetParent: offsetParent,\n prevSiblings: prevSiblings,\n nextSibling: nextSibling,\n nextSiblings: nextSiblings,\n children: children,\n child: child,\n firstChild: firstChild,\n lastChild: lastChild,\n childNodesCount: childNodesCount,\n hasChildNodes: hasChildNodes,\n leaf: leaf\n };\n\n var all$1 = function (predicate) {\n return descendants($_9gi0tmw2jkmcwsob.body(), predicate);\n };\n var ancestors = function (scope, predicate, isRoot) {\n return filter($_adk4mbw6jkmcwsok.parents(scope, isRoot), predicate);\n };\n var siblings$1 = function (scope, predicate) {\n return filter($_adk4mbw6jkmcwsok.siblings(scope), predicate);\n };\n var children$1 = function (scope, predicate) {\n return filter($_adk4mbw6jkmcwsok.children(scope), predicate);\n };\n var descendants = function (scope, predicate) {\n var result = [];\n each($_adk4mbw6jkmcwsok.children(scope), function (x) {\n if (predicate(x)) {\n result = result.concat([x]);\n }\n result = result.concat(descendants(x, predicate));\n });\n return result;\n };\n var $_bf8vd5w1jkmcwso8 = {\n all: all$1,\n ancestors: ancestors,\n siblings: siblings$1,\n children: children$1,\n descendants: descendants\n };\n\n var all$2 = function (selector) {\n return $_3tbwnywtjkmcwsqr.all(selector);\n };\n var ancestors$1 = function (scope, selector, isRoot) {\n return $_bf8vd5w1jkmcwso8.ancestors(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n }, isRoot);\n };\n var siblings$2 = function (scope, selector) {\n return $_bf8vd5w1jkmcwso8.siblings(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var children$2 = function (scope, selector) {\n return $_bf8vd5w1jkmcwso8.children(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var descendants$1 = function (scope, selector) {\n return $_3tbwnywtjkmcwsqr.all(selector, scope);\n };\n var $_4ig9ruw0jkmcwso7 = {\n all: all$2,\n ancestors: ancestors$1,\n siblings: siblings$2,\n children: children$2,\n descendants: descendants$1\n };\n\n var trim$1 = global$2.trim;\n var hasContentEditableState = function (value) {\n return function (node) {\n if (node && node.nodeType === 1) {\n if (node.contentEditable === value) {\n return true;\n }\n if (node.getAttribute('data-mce-contenteditable') === value) {\n return true;\n }\n }\n return false;\n };\n };\n var isContentEditableTrue = hasContentEditableState('true');\n var isContentEditableFalse = hasContentEditableState('false');\n var create = function (type, title, url, level, attach) {\n return {\n type: type,\n title: title,\n url: url,\n level: level,\n attach: attach\n };\n };\n var isChildOfContentEditableTrue = function (node) {\n while (node = node.parentNode) {\n var value = node.contentEditable;\n if (value && value !== 'inherit') {\n return isContentEditableTrue(node);\n }\n }\n return false;\n };\n var select = function (selector, root) {\n return map($_4ig9ruw0jkmcwso7.descendants(Element$$1.fromDom(root), selector), function (element) {\n return element.dom();\n });\n };\n var getElementText = function (elm) {\n return elm.innerText || elm.textContent;\n };\n var getOrGenerateId = function (elm) {\n return elm.id ? elm.id : generate('h');\n };\n var isAnchor = function (elm) {\n return elm && elm.nodeName === 'A' && (elm.id || elm.name);\n };\n var isValidAnchor = function (elm) {\n return isAnchor(elm) && isEditable(elm);\n };\n var isHeader = function (elm) {\n return elm && /^(H[1-6])$/.test(elm.nodeName);\n };\n var isEditable = function (elm) {\n return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);\n };\n var isValidHeader = function (elm) {\n return isHeader(elm) && isEditable(elm);\n };\n var getLevel = function (elm) {\n return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;\n };\n var headerTarget = function (elm) {\n var headerId = getOrGenerateId(elm);\n var attach = function () {\n elm.id = headerId;\n };\n return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);\n };\n var anchorTarget = function (elm) {\n var anchorId = elm.id || elm.name;\n var anchorText = getElementText(elm);\n return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);\n };\n var getHeaderTargets = function (elms) {\n return map(filter(elms, isValidHeader), headerTarget);\n };\n var getAnchorTargets = function (elms) {\n return map(filter(elms, isValidAnchor), anchorTarget);\n };\n var getTargetElements = function (elm) {\n var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);\n return elms;\n };\n var hasTitle = function (target) {\n return trim$1(target.title).length > 0;\n };\n var find$3 = function (elm) {\n var elms = getTargetElements(elm);\n return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);\n };\n var $_cb7rvvvxjkmcwsnn = { find: find$3 };\n\n var getActiveEditor = function () {\n return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;\n };\n var history = {};\n var HISTORY_LENGTH = 5;\n var clearHistory = function () {\n history = {};\n };\n var toMenuItem = function (target) {\n return {\n title: target.title,\n value: {\n title: { raw: target.title },\n url: target.url,\n attach: target.attach\n }\n };\n };\n var toMenuItems = function (targets) {\n return global$2.map(targets, toMenuItem);\n };\n var staticMenuItem = function (title, url) {\n return {\n title: title,\n value: {\n title: title,\n url: url,\n attach: noop\n }\n };\n };\n var isUniqueUrl = function (url, targets) {\n var foundTarget = exists(targets, function (target) {\n return target.url === url;\n });\n return !foundTarget;\n };\n var getSetting = function (editorSettings, name, defaultValue) {\n var value = name in editorSettings ? editorSettings[name] : defaultValue;\n return value === false ? null : value;\n };\n var createMenuItems = function (term, targets, fileType, editorSettings) {\n var separator = { title: '-' };\n var fromHistoryMenuItems = function (history) {\n var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];\n var uniqueHistory = filter(historyItems, function (url) {\n return isUniqueUrl(url, targets);\n });\n return global$2.map(uniqueHistory, function (url) {\n return {\n title: url,\n value: {\n title: url,\n url: url,\n attach: noop\n }\n };\n });\n };\n var fromMenuItems = function (type) {\n var filteredTargets = filter(targets, function (target) {\n return target.type === type;\n });\n return toMenuItems(filteredTargets);\n };\n var anchorMenuItems = function () {\n var anchorMenuItems = fromMenuItems('anchor');\n var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');\n var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');\n if (topAnchor !== null) {\n anchorMenuItems.unshift(staticMenuItem('', topAnchor));\n }\n if (bottomAchor !== null) {\n anchorMenuItems.push(staticMenuItem('', bottomAchor));\n }\n return anchorMenuItems;\n };\n var join = function (items) {\n return foldl(items, function (a, b) {\n var bothEmpty = a.length === 0 || b.length === 0;\n return bothEmpty ? a.concat(b) : a.concat(separator, b);\n }, []);\n };\n if (editorSettings.typeahead_urls === false) {\n return [];\n }\n return fileType === 'file' ? join([\n filterByQuery(term, fromHistoryMenuItems(history)),\n filterByQuery(term, fromMenuItems('header')),\n filterByQuery(term, anchorMenuItems())\n ]) : filterByQuery(term, fromHistoryMenuItems(history));\n };\n var addToHistory = function (url, fileType) {\n var items = history[fileType];\n if (!/^https?/.test(url)) {\n return;\n }\n if (items) {\n if (indexOf(items, url).isNone()) {\n history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);\n }\n } else {\n history[fileType] = [url];\n }\n };\n var filterByQuery = function (term, menuItems) {\n var lowerCaseTerm = term.toLowerCase();\n var result = global$2.grep(menuItems, function (item) {\n return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;\n });\n return result.length === 1 && result[0].title === term ? [] : result;\n };\n var getTitle = function (linkDetails) {\n var title = linkDetails.title;\n return title.raw ? title.raw : title;\n };\n var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {\n var autocomplete = function (term) {\n var linkTargets = $_cb7rvvvxjkmcwsnn.find(bodyElm);\n var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);\n ctrl.showAutoComplete(menuItems, term);\n };\n ctrl.on('autocomplete', function () {\n autocomplete(ctrl.value());\n });\n ctrl.on('selectitem', function (e) {\n var linkDetails = e.value;\n ctrl.value(linkDetails.url);\n var title = getTitle(linkDetails);\n if (fileType === 'image') {\n ctrl.fire('change', {\n meta: {\n alt: title,\n attach: linkDetails.attach\n }\n });\n } else {\n ctrl.fire('change', {\n meta: {\n text: title,\n attach: linkDetails.attach\n }\n });\n }\n ctrl.focus();\n });\n ctrl.on('click', function (e) {\n if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {\n autocomplete('');\n }\n });\n ctrl.on('PostRender', function () {\n ctrl.getRoot().on('submit', function (e) {\n if (!e.isDefaultPrevented()) {\n addToHistory(ctrl.value(), fileType);\n }\n });\n });\n };\n var statusToUiState = function (result) {\n var status = result.status, message = result.message;\n if (status === 'valid') {\n return {\n status: 'ok',\n message: message\n };\n } else if (status === 'unknown') {\n return {\n status: 'warn',\n message: message\n };\n } else if (status === 'invalid') {\n return {\n status: 'warn',\n message: message\n };\n } else {\n return {\n status: 'none',\n message: ''\n };\n }\n };\n var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {\n var validatorHandler = editorSettings.filepicker_validator_handler;\n if (validatorHandler) {\n var validateUrl_1 = function (url) {\n if (url.length === 0) {\n ctrl.statusLevel('none');\n return;\n }\n validatorHandler({\n url: url,\n type: fileType\n }, function (result) {\n var uiState = statusToUiState(result);\n ctrl.statusMessage(uiState.message);\n ctrl.statusLevel(uiState.status);\n });\n };\n ctrl.state.on('change:value', function (e) {\n validateUrl_1(e.value);\n });\n }\n };\n var FilePicker = ComboBox.extend({\n Statics: { clearHistory: clearHistory },\n init: function (settings) {\n var self = this, editor = getActiveEditor(), editorSettings = editor.settings;\n var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;\n var fileType = settings.filetype;\n settings.spellcheck = false;\n fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;\n if (fileBrowserCallbackTypes) {\n fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);\n }\n if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {\n fileBrowserCallback = editorSettings.file_picker_callback;\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n actionCallback = function () {\n var meta = self.fire('beforecall').meta;\n meta = global$2.extend({ filetype: fileType }, meta);\n fileBrowserCallback.call(editor, function (value, meta) {\n self.value(value).fire('change', { meta: meta });\n }, self.value(), meta);\n };\n } else {\n fileBrowserCallback = editorSettings.file_browser_callback;\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n actionCallback = function () {\n fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);\n };\n }\n }\n }\n if (actionCallback) {\n settings.icon = 'browse';\n settings.onaction = actionCallback;\n }\n self._super(settings);\n self.classes.add('filepicker');\n setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);\n setupLinkValidatorHandler(self, editorSettings, fileType);\n }\n });\n\n var FitLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;\n container.items().filter(':visible').each(function (ctrl) {\n ctrl.layoutRect({\n x: paddingBox.left,\n y: paddingBox.top,\n w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,\n h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom\n });\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n }\n });\n\n var FlexLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;\n var ctrl, ctrlLayoutRect, ctrlSettings, flex;\n var maxSizeItems = [];\n var size, maxSize, ratio, rect, pos, maxAlignEndPos;\n var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;\n var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;\n var alignDeltaSizeName, alignContentSizeName;\n var max = Math.max, min = Math.min;\n items = container.items().filter(':visible');\n contLayoutRect = container.layoutRect();\n contPaddingBox = container.paddingBox;\n contSettings = container.settings;\n direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;\n align = contSettings.align;\n pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;\n spacing = contSettings.spacing || 0;\n if (direction === 'row-reversed' || direction === 'column-reverse') {\n items = items.set(items.toArray().reverse());\n direction = direction.split('-')[0];\n }\n if (direction === 'column') {\n posName = 'y';\n sizeName = 'h';\n minSizeName = 'minH';\n maxSizeName = 'maxH';\n innerSizeName = 'innerH';\n beforeName = 'top';\n deltaSizeName = 'deltaH';\n contentSizeName = 'contentH';\n alignBeforeName = 'left';\n alignSizeName = 'w';\n alignAxisName = 'x';\n alignInnerSizeName = 'innerW';\n alignMinSizeName = 'minW';\n alignAfterName = 'right';\n alignDeltaSizeName = 'deltaW';\n alignContentSizeName = 'contentW';\n } else {\n posName = 'x';\n sizeName = 'w';\n minSizeName = 'minW';\n maxSizeName = 'maxW';\n innerSizeName = 'innerW';\n beforeName = 'left';\n deltaSizeName = 'deltaW';\n contentSizeName = 'contentW';\n alignBeforeName = 'top';\n alignSizeName = 'h';\n alignAxisName = 'y';\n alignInnerSizeName = 'innerH';\n alignMinSizeName = 'minH';\n alignAfterName = 'bottom';\n alignDeltaSizeName = 'deltaH';\n alignContentSizeName = 'contentH';\n }\n availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];\n maxAlignEndPos = totalFlex = 0;\n for (i = 0, l = items.length; i < l; i++) {\n ctrl = items[i];\n ctrlLayoutRect = ctrl.layoutRect();\n ctrlSettings = ctrl.settings;\n flex = ctrlSettings.flex;\n availableSpace -= i < l - 1 ? spacing : 0;\n if (flex > 0) {\n totalFlex += flex;\n if (ctrlLayoutRect[maxSizeName]) {\n maxSizeItems.push(ctrl);\n }\n ctrlLayoutRect.flex = flex;\n }\n availableSpace -= ctrlLayoutRect[minSizeName];\n size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];\n if (size > maxAlignEndPos) {\n maxAlignEndPos = size;\n }\n }\n rect = {};\n if (availableSpace < 0) {\n rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n } else {\n rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n }\n rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];\n rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;\n rect[alignContentSizeName] = maxAlignEndPos;\n rect.minW = min(rect.minW, contLayoutRect.maxW);\n rect.minH = min(rect.minH, contLayoutRect.maxH);\n rect.minW = max(rect.minW, contLayoutRect.startMinWidth);\n rect.minH = max(rect.minH, contLayoutRect.startMinHeight);\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n rect.w = rect.minW;\n rect.h = rect.minH;\n container.layoutRect(rect);\n this.recalc(container);\n if (container._lastRect === null) {\n var parentCtrl = container.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n parentCtrl.recalc();\n }\n }\n return;\n }\n ratio = availableSpace / totalFlex;\n for (i = 0, l = maxSizeItems.length; i < l; i++) {\n ctrl = maxSizeItems[i];\n ctrlLayoutRect = ctrl.layoutRect();\n maxSize = ctrlLayoutRect[maxSizeName];\n size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;\n if (size > maxSize) {\n availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];\n totalFlex -= ctrlLayoutRect.flex;\n ctrlLayoutRect.flex = 0;\n ctrlLayoutRect.maxFlexSize = maxSize;\n } else {\n ctrlLayoutRect.maxFlexSize = 0;\n }\n }\n ratio = availableSpace / totalFlex;\n pos = contPaddingBox[beforeName];\n rect = {};\n if (totalFlex === 0) {\n if (pack === 'end') {\n pos = availableSpace + contPaddingBox[beforeName];\n } else if (pack === 'center') {\n pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];\n if (pos < 0) {\n pos = contPaddingBox[beforeName];\n }\n } else if (pack === 'justify') {\n pos = contPaddingBox[beforeName];\n spacing = Math.floor(availableSpace / (items.length - 1));\n }\n }\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\n for (i = 0, l = items.length; i < l; i++) {\n ctrl = items[i];\n ctrlLayoutRect = ctrl.layoutRect();\n size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];\n if (align === 'center') {\n rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);\n } else if (align === 'stretch') {\n rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\n } else if (align === 'end') {\n rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;\n }\n if (ctrlLayoutRect.flex > 0) {\n size += ctrlLayoutRect.flex * ratio;\n }\n rect[sizeName] = size;\n rect[posName] = pos;\n ctrl.layoutRect(rect);\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n pos += size + spacing;\n }\n }\n });\n\n var FlowLayout = Layout.extend({\n Defaults: {\n containerClass: 'flow-layout',\n controlClass: 'flow-layout-item',\n endClass: 'break'\n },\n recalc: function (container) {\n container.items().filter(':visible').each(function (ctrl) {\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n },\n isNative: function () {\n return true;\n }\n });\n\n function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\n return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\n }\n\n var first$1 = function (predicate) {\n return descendant($_9gi0tmw2jkmcwsob.body(), predicate);\n };\n var ancestor = function (scope, predicate, isRoot) {\n var element = scope.dom();\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n while (element.parentNode) {\n element = element.parentNode;\n var el = Element$$1.fromDom(element);\n if (predicate(el))\n return Option.some(el);\n else if (stop(el))\n break;\n }\n return Option.none();\n };\n var closest = function (scope, predicate, isRoot) {\n var is = function (scope) {\n return predicate(scope);\n };\n return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\n };\n var sibling = function (scope, predicate) {\n var element = scope.dom();\n if (!element.parentNode)\n return Option.none();\n return child$1(Element$$1.fromDom(element.parentNode), function (x) {\n return !$_622morwdjkmcwspi.eq(scope, x) && predicate(x);\n });\n };\n var child$1 = function (scope, predicate) {\n var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));\n return result.map(Element$$1.fromDom);\n };\n var descendant = function (scope, predicate) {\n var descend = function (node) {\n for (var i = 0; i < node.childNodes.length; i++) {\n if (predicate(Element$$1.fromDom(node.childNodes[i])))\n return Option.some(Element$$1.fromDom(node.childNodes[i]));\n var res = descend(node.childNodes[i]);\n if (res.isSome())\n return res;\n }\n return Option.none();\n };\n return descend(scope.dom());\n };\n var $_13w0c1wzjkmcwsri = {\n first: first$1,\n ancestor: ancestor,\n closest: closest,\n sibling: sibling,\n child: child$1,\n descendant: descendant\n };\n\n var first$2 = function (selector) {\n return $_3tbwnywtjkmcwsqr.one(selector);\n };\n var ancestor$1 = function (scope, selector, isRoot) {\n return $_13w0c1wzjkmcwsri.ancestor(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n }, isRoot);\n };\n var sibling$1 = function (scope, selector) {\n return $_13w0c1wzjkmcwsri.sibling(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var child$2 = function (scope, selector) {\n return $_13w0c1wzjkmcwsri.child(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var descendant$1 = function (scope, selector) {\n return $_3tbwnywtjkmcwsqr.one(selector, scope);\n };\n var closest$1 = function (scope, selector, isRoot) {\n return ClosestOrAncestor($_3tbwnywtjkmcwsqr.is, ancestor$1, scope, selector, isRoot);\n };\n var $_epq3p6wyjkmcwsrh = {\n first: first$2,\n ancestor: ancestor$1,\n sibling: sibling$1,\n child: child$2,\n descendant: descendant$1,\n closest: closest$1\n };\n\n var toggleFormat = function (editor, fmt) {\n return function () {\n editor.execCommand('mceToggleFormat', false, fmt);\n };\n };\n var addFormatChangedListener = function (editor, name, changed) {\n var handler = function (state) {\n changed(state, name);\n };\n if (editor.formatter) {\n editor.formatter.formatChanged(name, handler);\n } else {\n editor.on('init', function () {\n editor.formatter.formatChanged(name, handler);\n });\n }\n };\n var postRenderFormatToggle = function (editor, name) {\n return function (e) {\n addFormatChangedListener(editor, name, function (state) {\n e.control.active(state);\n });\n };\n };\n\n var register = function (editor) {\n var alignFormats = [\n 'alignleft',\n 'aligncenter',\n 'alignright',\n 'alignjustify'\n ];\n var defaultAlign = 'alignleft';\n var alignMenuItems = [\n {\n text: 'Left',\n icon: 'alignleft',\n onclick: toggleFormat(editor, 'alignleft')\n },\n {\n text: 'Center',\n icon: 'aligncenter',\n onclick: toggleFormat(editor, 'aligncenter')\n },\n {\n text: 'Right',\n icon: 'alignright',\n onclick: toggleFormat(editor, 'alignright')\n },\n {\n text: 'Justify',\n icon: 'alignjustify',\n onclick: toggleFormat(editor, 'alignjustify')\n }\n ];\n editor.addMenuItem('align', {\n text: 'Align',\n menu: alignMenuItems\n });\n editor.addButton('align', {\n type: 'menubutton',\n icon: defaultAlign,\n menu: alignMenuItems,\n onShowMenu: function (e) {\n var menu = e.control.menu;\n global$2.each(alignFormats, function (formatName, idx) {\n menu.items().eq(idx).each(function (item) {\n return item.active(editor.formatter.match(formatName));\n });\n });\n },\n onPostRender: function (e) {\n var ctrl = e.control;\n global$2.each(alignFormats, function (formatName, idx) {\n addFormatChangedListener(editor, formatName, function (state) {\n ctrl.icon(defaultAlign);\n if (state) {\n ctrl.icon(formatName);\n }\n });\n });\n }\n });\n global$2.each({\n alignleft: [\n 'Align left',\n 'JustifyLeft'\n ],\n aligncenter: [\n 'Align center',\n 'JustifyCenter'\n ],\n alignright: [\n 'Align right',\n 'JustifyRight'\n ],\n alignjustify: [\n 'Justify',\n 'JustifyFull'\n ],\n alignnone: [\n 'No alignment',\n 'JustifyNone'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n active: false,\n tooltip: item[0],\n cmd: item[1],\n onPostRender: postRenderFormatToggle(editor, name)\n });\n });\n };\n var $_ffg0cgx1jkmcwsrx = { register: register };\n\n var getFirstFont = function (fontFamily) {\n return fontFamily ? fontFamily.split(',')[0] : '';\n };\n var findMatchingValue = function (items, fontFamily) {\n var font = fontFamily ? fontFamily.toLowerCase() : '';\n var value;\n global$2.each(items, function (item) {\n if (item.value.toLowerCase() === font) {\n value = item.value;\n }\n });\n global$2.each(items, function (item) {\n if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {\n value = item.value;\n }\n });\n return value;\n };\n var createFontNameListBoxChangeHandler = function (editor, items) {\n return function () {\n var self = this;\n self.state.set('value', null);\n editor.on('init nodeChange', function (e) {\n var fontFamily = editor.queryCommandValue('FontName');\n var match = findMatchingValue(items, fontFamily);\n self.value(match ? match : null);\n if (!match && fontFamily) {\n self.text(getFirstFont(fontFamily));\n }\n });\n };\n };\n var createFormats = function (formats) {\n formats = formats.replace(/;$/, '').split(';');\n var i = formats.length;\n while (i--) {\n formats[i] = formats[i].split('=');\n }\n return formats;\n };\n var getFontItems = function (editor) {\n 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';\n var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);\n return global$2.map(fonts, function (font) {\n return {\n text: { raw: font[0] },\n value: font[1],\n textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''\n };\n });\n };\n var registerButtons = function (editor) {\n editor.addButton('fontselect', function () {\n var items = getFontItems(editor);\n return {\n type: 'listbox',\n text: 'Font Family',\n tooltip: 'Font Family',\n values: items,\n fixedWidth: true,\n onPostRender: createFontNameListBoxChangeHandler(editor, items),\n onselect: function (e) {\n if (e.control.settings.value) {\n editor.execCommand('FontName', false, e.control.settings.value);\n }\n }\n };\n });\n };\n var register$1 = function (editor) {\n registerButtons(editor);\n };\n var $_1be6fjx3jkmcwss1 = { register: register$1 };\n\n var round = function (number, precision) {\n var factor = Math.pow(10, precision);\n return Math.round(number * factor) / factor;\n };\n var toPt = function (fontSize, precision) {\n if (/[0-9.]+px$/.test(fontSize)) {\n return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n }\n return fontSize;\n };\n var findMatchingValue$1 = function (items, pt, px) {\n var value;\n global$2.each(items, function (item) {\n if (item.value === px) {\n value = px;\n } else if (item.value === pt) {\n value = pt;\n }\n });\n return value;\n };\n var createFontSizeListBoxChangeHandler = function (editor, items) {\n return function () {\n var self = this;\n editor.on('init nodeChange', function (e) {\n var px, pt, precision, match;\n px = editor.queryCommandValue('FontSize');\n if (px) {\n for (precision = 3; !match && precision >= 0; precision--) {\n pt = toPt(px, precision);\n match = findMatchingValue$1(items, pt, px);\n }\n }\n self.value(match ? match : null);\n if (!match) {\n self.text(pt);\n }\n });\n };\n };\n var getFontSizeItems = function (editor) {\n var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';\n var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;\n return global$2.map(fontsizeFormats.split(' '), function (item) {\n var text = item, value = item;\n var values = item.split('=');\n if (values.length > 1) {\n text = values[0];\n value = values[1];\n }\n return {\n text: text,\n value: value\n };\n });\n };\n var registerButtons$1 = function (editor) {\n editor.addButton('fontsizeselect', function () {\n var items = getFontSizeItems(editor);\n return {\n type: 'listbox',\n text: 'Font Sizes',\n tooltip: 'Font Sizes',\n values: items,\n fixedWidth: true,\n onPostRender: createFontSizeListBoxChangeHandler(editor, items),\n onclick: function (e) {\n if (e.control.settings.value) {\n editor.execCommand('FontSize', false, e.control.settings.value);\n }\n }\n };\n });\n };\n var register$2 = function (editor) {\n registerButtons$1(editor);\n };\n var $_fnu5cxx4jkmcwss4 = { register: register$2 };\n\n var hideMenuObjects = function (editor, menu) {\n var count = menu.length;\n global$2.each(menu, function (item) {\n if (item.menu) {\n item.hidden = hideMenuObjects(editor, item.menu) === 0;\n }\n var formatName = item.format;\n if (formatName) {\n item.hidden = !editor.formatter.canApply(formatName);\n }\n if (item.hidden) {\n count--;\n }\n });\n return count;\n };\n var hideFormatMenuItems = function (editor, menu) {\n var count = menu.items().length;\n menu.items().each(function (item) {\n if (item.menu) {\n item.visible(hideFormatMenuItems(editor, item.menu) > 0);\n }\n if (!item.menu && item.settings.menu) {\n item.visible(hideMenuObjects(editor, item.settings.menu) > 0);\n }\n var formatName = item.settings.format;\n if (formatName) {\n item.visible(editor.formatter.canApply(formatName));\n }\n if (!item.visible()) {\n count--;\n }\n });\n return count;\n };\n var createFormatMenu = function (editor) {\n var count = 0;\n var newFormats = [];\n var defaultStyleFormats = [\n {\n title: 'Headings',\n items: [\n {\n title: 'Heading 1',\n format: 'h1'\n },\n {\n title: 'Heading 2',\n format: 'h2'\n },\n {\n title: 'Heading 3',\n format: 'h3'\n },\n {\n title: 'Heading 4',\n format: 'h4'\n },\n {\n title: 'Heading 5',\n format: 'h5'\n },\n {\n title: 'Heading 6',\n format: 'h6'\n }\n ]\n },\n {\n title: 'Inline',\n items: [\n {\n title: 'Bold',\n icon: 'bold',\n format: 'bold'\n },\n {\n title: 'Italic',\n icon: 'italic',\n format: 'italic'\n },\n {\n title: 'Underline',\n icon: 'underline',\n format: 'underline'\n },\n {\n title: 'Strikethrough',\n icon: 'strikethrough',\n format: 'strikethrough'\n },\n {\n title: 'Superscript',\n icon: 'superscript',\n format: 'superscript'\n },\n {\n title: 'Subscript',\n icon: 'subscript',\n format: 'subscript'\n },\n {\n title: 'Code',\n icon: 'code',\n format: 'code'\n }\n ]\n },\n {\n title: 'Blocks',\n items: [\n {\n title: 'Paragraph',\n format: 'p'\n },\n {\n title: 'Blockquote',\n format: 'blockquote'\n },\n {\n title: 'Div',\n format: 'div'\n },\n {\n title: 'Pre',\n format: 'pre'\n }\n ]\n },\n {\n title: 'Alignment',\n items: [\n {\n title: 'Left',\n icon: 'alignleft',\n format: 'alignleft'\n },\n {\n title: 'Center',\n icon: 'aligncenter',\n format: 'aligncenter'\n },\n {\n title: 'Right',\n icon: 'alignright',\n format: 'alignright'\n },\n {\n title: 'Justify',\n icon: 'alignjustify',\n format: 'alignjustify'\n }\n ]\n }\n ];\n var createMenu = function (formats) {\n var menu = [];\n if (!formats) {\n return;\n }\n global$2.each(formats, function (format) {\n var menuItem = {\n text: format.title,\n icon: format.icon\n };\n if (format.items) {\n menuItem.menu = createMenu(format.items);\n } else {\n var formatName = format.format || 'custom' + count++;\n if (!format.format) {\n format.name = formatName;\n newFormats.push(format);\n }\n menuItem.format = formatName;\n menuItem.cmd = format.cmd;\n }\n menu.push(menuItem);\n });\n return menu;\n };\n var createStylesMenu = function () {\n var menu;\n if (editor.settings.style_formats_merge) {\n if (editor.settings.style_formats) {\n menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));\n } else {\n menu = createMenu(defaultStyleFormats);\n }\n } else {\n menu = createMenu(editor.settings.style_formats || defaultStyleFormats);\n }\n return menu;\n };\n editor.on('init', function () {\n global$2.each(newFormats, function (format) {\n editor.formatter.register(format.name, format);\n });\n });\n return {\n type: 'menu',\n items: createStylesMenu(),\n onPostRender: function (e) {\n editor.fire('renderFormatsMenu', { control: e.control });\n },\n itemDefaults: {\n preview: true,\n textStyle: function () {\n if (this.settings.format) {\n return editor.formatter.getCssText(this.settings.format);\n }\n },\n onPostRender: function () {\n var self = this;\n self.parent().on('show', function () {\n var formatName, command;\n formatName = self.settings.format;\n if (formatName) {\n self.disabled(!editor.formatter.canApply(formatName));\n self.active(editor.formatter.match(formatName));\n }\n command = self.settings.cmd;\n if (command) {\n self.active(editor.queryCommandState(command));\n }\n });\n },\n onclick: function () {\n if (this.settings.format) {\n toggleFormat(editor, this.settings.format)();\n }\n if (this.settings.cmd) {\n editor.execCommand(this.settings.cmd);\n }\n }\n }\n };\n };\n var registerMenuItems = function (editor, formatMenu) {\n editor.addMenuItem('formats', {\n text: 'Formats',\n menu: formatMenu\n });\n };\n var registerButtons$2 = function (editor, formatMenu) {\n editor.addButton('styleselect', {\n type: 'menubutton',\n text: 'Formats',\n menu: formatMenu,\n onShowMenu: function () {\n if (editor.settings.style_formats_autohide) {\n hideFormatMenuItems(editor, this.menu);\n }\n }\n });\n };\n var register$3 = function (editor) {\n var formatMenu = createFormatMenu(editor);\n registerMenuItems(editor, formatMenu);\n registerButtons$2(editor, formatMenu);\n };\n var $_cmdomhx5jkmcwss6 = { register: register$3 };\n\n var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';\n var createFormats$1 = function (formats) {\n formats = formats.replace(/;$/, '').split(';');\n var i = formats.length;\n while (i--) {\n formats[i] = formats[i].split('=');\n }\n return formats;\n };\n var createListBoxChangeHandler = function (editor, items, formatName) {\n return function () {\n var self = this;\n editor.on('nodeChange', function (e) {\n var formatter = editor.formatter;\n var value = null;\n global$2.each(e.parents, function (node) {\n global$2.each(items, function (item) {\n if (formatName) {\n if (formatter.matchNode(node, formatName, { value: item.value })) {\n value = item.value;\n }\n } else {\n if (formatter.matchNode(node, item.value)) {\n value = item.value;\n }\n }\n if (value) {\n return false;\n }\n });\n if (value) {\n return false;\n }\n });\n self.value(value);\n });\n };\n };\n var lazyFormatSelectBoxItems = function (editor, blocks) {\n return function () {\n var items = [];\n global$2.each(blocks, function (block) {\n items.push({\n text: block[0],\n value: block[1],\n textStyle: function () {\n return editor.formatter.getCssText(block[1]);\n }\n });\n });\n return {\n type: 'listbox',\n text: blocks[0][0],\n values: items,\n fixedWidth: true,\n onselect: function (e) {\n if (e.control) {\n var fmt = e.control.value();\n toggleFormat(editor, fmt)();\n }\n },\n onPostRender: createListBoxChangeHandler(editor, items)\n };\n };\n };\n var buildMenuItems = function (editor, blocks) {\n return global$2.map(blocks, function (block) {\n return {\n text: block[0],\n onclick: toggleFormat(editor, block[1]),\n textStyle: function () {\n return editor.formatter.getCssText(block[1]);\n }\n };\n });\n };\n var register$4 = function (editor) {\n var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);\n editor.addMenuItem('blockformats', {\n text: 'Blocks',\n menu: buildMenuItems(editor, blocks)\n });\n editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));\n };\n var $_cl4rffx6jkmcwssb = { register: register$4 };\n\n var createCustomMenuItems = function (editor, names) {\n var items, nameList;\n if (typeof names === 'string') {\n nameList = names.split(' ');\n } else if (global$2.isArray(names)) {\n return flatten(global$2.map(names, function (names) {\n return createCustomMenuItems(editor, names);\n }));\n }\n items = global$2.grep(nameList, function (name) {\n return name === '|' || name in editor.menuItems;\n });\n return global$2.map(items, function (name) {\n return name === '|' ? { text: '-' } : editor.menuItems[name];\n });\n };\n var isSeparator$1 = function (menuItem) {\n return menuItem && menuItem.text === '-';\n };\n var trimMenuItems = function (menuItems) {\n var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {\n return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);\n });\n return filter(menuItems2, function (menuItem, i, menuItems) {\n return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;\n });\n };\n var createContextMenuItems = function (editor, context) {\n var outputMenuItems = [{ text: '-' }];\n var menuItems = global$2.grep(editor.menuItems, function (menuItem) {\n return menuItem.context === context;\n });\n global$2.each(menuItems, function (menuItem) {\n if (menuItem.separator === 'before') {\n outputMenuItems.push({ text: '|' });\n }\n if (menuItem.prependToContext) {\n outputMenuItems.unshift(menuItem);\n } else {\n outputMenuItems.push(menuItem);\n }\n if (menuItem.separator === 'after') {\n outputMenuItems.push({ text: '|' });\n }\n });\n return outputMenuItems;\n };\n var createInsertMenu = function (editor) {\n var insertButtonItems = editor.settings.insert_button_items;\n if (insertButtonItems) {\n return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));\n } else {\n return trimMenuItems(createContextMenuItems(editor, 'insert'));\n }\n };\n var registerButtons$3 = function (editor) {\n editor.addButton('insert', {\n type: 'menubutton',\n icon: 'insert',\n menu: [],\n oncreatemenu: function () {\n this.menu.add(createInsertMenu(editor));\n this.menu.renderNew();\n }\n });\n };\n var register$5 = function (editor) {\n registerButtons$3(editor);\n };\n var $_7ix8zax7jkmcwssd = { register: register$5 };\n\n var registerFormatButtons = function (editor) {\n global$2.each({\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript'\n }, function (text, name) {\n editor.addButton(name, {\n active: false,\n tooltip: text,\n onPostRender: postRenderFormatToggle(editor, name),\n onclick: toggleFormat(editor, name)\n });\n });\n };\n var registerCommandButtons = function (editor) {\n global$2.each({\n outdent: [\n 'Decrease indent',\n 'Outdent'\n ],\n indent: [\n 'Increase indent',\n 'Indent'\n ],\n cut: [\n 'Cut',\n 'Cut'\n ],\n copy: [\n 'Copy',\n 'Copy'\n ],\n paste: [\n 'Paste',\n 'Paste'\n ],\n help: [\n 'Help',\n 'mceHelp'\n ],\n selectall: [\n 'Select all',\n 'SelectAll'\n ],\n visualaid: [\n 'Visual aids',\n 'mceToggleVisualAid'\n ],\n newdocument: [\n 'New document',\n 'mceNewDocument'\n ],\n removeformat: [\n 'Clear formatting',\n 'RemoveFormat'\n ],\n remove: [\n 'Remove',\n 'Delete'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n tooltip: item[0],\n cmd: item[1]\n });\n });\n };\n var registerCommandToggleButtons = function (editor) {\n global$2.each({\n blockquote: [\n 'Blockquote',\n 'mceBlockQuote'\n ],\n subscript: [\n 'Subscript',\n 'Subscript'\n ],\n superscript: [\n 'Superscript',\n 'Superscript'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n active: false,\n tooltip: item[0],\n cmd: item[1],\n onPostRender: postRenderFormatToggle(editor, name)\n });\n });\n };\n var registerButtons$4 = function (editor) {\n registerFormatButtons(editor);\n registerCommandButtons(editor);\n registerCommandToggleButtons(editor);\n };\n var registerMenuItems$1 = function (editor) {\n global$2.each({\n bold: [\n 'Bold',\n 'Bold',\n 'Meta+B'\n ],\n italic: [\n 'Italic',\n 'Italic',\n 'Meta+I'\n ],\n underline: [\n 'Underline',\n 'Underline',\n 'Meta+U'\n ],\n strikethrough: [\n 'Strikethrough',\n 'Strikethrough'\n ],\n subscript: [\n 'Subscript',\n 'Subscript'\n ],\n superscript: [\n 'Superscript',\n 'Superscript'\n ],\n removeformat: [\n 'Clear formatting',\n 'RemoveFormat'\n ],\n newdocument: [\n 'New document',\n 'mceNewDocument'\n ],\n cut: [\n 'Cut',\n 'Cut',\n 'Meta+X'\n ],\n copy: [\n 'Copy',\n 'Copy',\n 'Meta+C'\n ],\n paste: [\n 'Paste',\n 'Paste',\n 'Meta+V'\n ],\n selectall: [\n 'Select all',\n 'SelectAll',\n 'Meta+A'\n ]\n }, function (item, name) {\n editor.addMenuItem(name, {\n text: item[0],\n icon: name,\n shortcut: item[2],\n cmd: item[1]\n });\n });\n editor.addMenuItem('codeformat', {\n text: 'Code',\n icon: 'code',\n onclick: toggleFormat(editor, 'code')\n });\n };\n var register$6 = function (editor) {\n registerButtons$4(editor);\n registerMenuItems$1(editor);\n };\n var $_gbsmm2x8jkmcwssh = { register: register$6 };\n\n var toggleUndoRedoState = function (editor, type) {\n return function () {\n var self = this;\n var checkState = function () {\n var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';\n return editor.undoManager ? editor.undoManager[typeFn]() : false;\n };\n self.disabled(!checkState());\n editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {\n self.disabled(editor.readonly || !checkState());\n });\n };\n };\n var registerMenuItems$2 = function (editor) {\n editor.addMenuItem('undo', {\n text: 'Undo',\n icon: 'undo',\n shortcut: 'Meta+Z',\n onPostRender: toggleUndoRedoState(editor, 'undo'),\n cmd: 'undo'\n });\n editor.addMenuItem('redo', {\n text: 'Redo',\n icon: 'redo',\n shortcut: 'Meta+Y',\n onPostRender: toggleUndoRedoState(editor, 'redo'),\n cmd: 'redo'\n });\n };\n var registerButtons$5 = function (editor) {\n editor.addButton('undo', {\n tooltip: 'Undo',\n onPostRender: toggleUndoRedoState(editor, 'undo'),\n cmd: 'undo'\n });\n editor.addButton('redo', {\n tooltip: 'Redo',\n onPostRender: toggleUndoRedoState(editor, 'redo'),\n cmd: 'redo'\n });\n };\n var register$7 = function (editor) {\n registerMenuItems$2(editor);\n registerButtons$5(editor);\n };\n var $_1bdkmax9jkmcwssr = { register: register$7 };\n\n var toggleVisualAidState = function (editor) {\n return function () {\n var self = this;\n editor.on('VisualAid', function (e) {\n self.active(e.hasVisual);\n });\n self.active(editor.hasVisual);\n };\n };\n var registerMenuItems$3 = function (editor) {\n editor.addMenuItem('visualaid', {\n text: 'Visual aids',\n selectable: true,\n onPostRender: toggleVisualAidState(editor),\n cmd: 'mceToggleVisualAid'\n });\n };\n var register$8 = function (editor) {\n registerMenuItems$3(editor);\n };\n var $_21pl3hxajkmcwsst = { register: register$8 };\n\n var setupEnvironment = function () {\n Widget.tooltips = !global$8.iOS;\n Control$1.translate = function (text) {\n return global$1.translate(text);\n };\n };\n var setupUiContainer = function (editor) {\n if (editor.settings.ui_container) {\n global$8.container = $_epq3p6wyjkmcwsrh.descendant(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {\n return elm.dom();\n });\n }\n };\n var setupRtlMode = function (editor) {\n if (editor.rtl) {\n Control$1.rtl = true;\n }\n };\n var setupHideFloatPanels = function (editor) {\n editor.on('mousedown', function () {\n FloatPanel.hideAll();\n });\n };\n var setup$1 = function (editor) {\n setupRtlMode(editor);\n setupHideFloatPanels(editor);\n setupUiContainer(editor);\n setupEnvironment();\n $_cl4rffx6jkmcwssb.register(editor);\n $_ffg0cgx1jkmcwsrx.register(editor);\n $_gbsmm2x8jkmcwssh.register(editor);\n $_1bdkmax9jkmcwssr.register(editor);\n $_fnu5cxx4jkmcwss4.register(editor);\n $_1be6fjx3jkmcwss1.register(editor);\n $_cmdomhx5jkmcwss6.register(editor);\n $_21pl3hxajkmcwsst.register(editor);\n $_7ix8zax7jkmcwssd.register(editor);\n };\n var $_drujjnwxjkmcwsrc = { setup: setup$1 };\n\n var GridLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;\n var colWidths = [];\n var rowHeights = [];\n var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;\n settings = container.settings;\n items = container.items().filter(':visible');\n contLayoutRect = container.layoutRect();\n cols = settings.columns || Math.ceil(Math.sqrt(items.length));\n rows = Math.ceil(items.length / cols);\n spacingH = settings.spacingH || settings.spacing || 0;\n spacingV = settings.spacingV || settings.spacing || 0;\n alignH = settings.alignH || settings.align;\n alignV = settings.alignV || settings.align;\n contPaddingBox = container.paddingBox;\n reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();\n if (alignH && typeof alignH === 'string') {\n alignH = [alignH];\n }\n if (alignV && typeof alignV === 'string') {\n alignV = [alignV];\n }\n for (x = 0; x < cols; x++) {\n colWidths.push(0);\n }\n for (y = 0; y < rows; y++) {\n rowHeights.push(0);\n }\n for (y = 0; y < rows; y++) {\n for (x = 0; x < cols; x++) {\n ctrl = items[y * cols + x];\n if (!ctrl) {\n break;\n }\n ctrlLayoutRect = ctrl.layoutRect();\n ctrlMinWidth = ctrlLayoutRect.minW;\n ctrlMinHeight = ctrlLayoutRect.minH;\n colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];\n rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];\n }\n }\n availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;\n for (maxX = 0, x = 0; x < cols; x++) {\n maxX += colWidths[x] + (x > 0 ? spacingH : 0);\n availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];\n }\n availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;\n for (maxY = 0, y = 0; y < rows; y++) {\n maxY += rowHeights[y] + (y > 0 ? spacingV : 0);\n availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];\n }\n maxX += contPaddingBox.left + contPaddingBox.right;\n maxY += contPaddingBox.top + contPaddingBox.bottom;\n rect = {};\n rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);\n rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);\n rect.contentW = rect.minW - contLayoutRect.deltaW;\n rect.contentH = rect.minH - contLayoutRect.deltaH;\n rect.minW = Math.min(rect.minW, contLayoutRect.maxW);\n rect.minH = Math.min(rect.minH, contLayoutRect.maxH);\n rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);\n rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n rect.w = rect.minW;\n rect.h = rect.minH;\n container.layoutRect(rect);\n this.recalc(container);\n if (container._lastRect === null) {\n var parentCtrl = container.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n parentCtrl.recalc();\n }\n }\n return;\n }\n if (contLayoutRect.autoResize) {\n rect = container.layoutRect(rect);\n rect.contentW = rect.minW - contLayoutRect.deltaW;\n rect.contentH = rect.minH - contLayoutRect.deltaH;\n }\n var flexV;\n if (settings.packV === 'start') {\n flexV = 0;\n } else {\n flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;\n }\n var totalFlex = 0;\n var flexWidths = settings.flexWidths;\n if (flexWidths) {\n for (x = 0; x < flexWidths.length; x++) {\n totalFlex += flexWidths[x];\n }\n } else {\n totalFlex = cols;\n }\n var ratio = availableWidth / totalFlex;\n for (x = 0; x < cols; x++) {\n colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;\n }\n posY = contPaddingBox.top;\n for (y = 0; y < rows; y++) {\n posX = contPaddingBox.left;\n height = rowHeights[y] + flexV;\n for (x = 0; x < cols; x++) {\n if (reverseRows) {\n idx = y * cols + cols - 1 - x;\n } else {\n idx = y * cols + x;\n }\n ctrl = items[idx];\n if (!ctrl) {\n break;\n }\n ctrlSettings = ctrl.settings;\n ctrlLayoutRect = ctrl.layoutRect();\n width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);\n ctrlLayoutRect.x = posX;\n ctrlLayoutRect.y = posY;\n align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);\n if (align === 'center') {\n ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;\n } else if (align === 'right') {\n ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;\n } else if (align === 'stretch') {\n ctrlLayoutRect.w = width;\n }\n align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);\n if (align === 'center') {\n ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;\n } else if (align === 'bottom') {\n ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;\n } else if (align === 'stretch') {\n ctrlLayoutRect.h = height;\n }\n ctrl.layoutRect(ctrlLayoutRect);\n posX += width + spacingH;\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n }\n posY += height + spacingV;\n }\n }\n });\n\n var Iframe$1 = Widget.extend({\n renderHtml: function () {\n var self = this;\n self.classes.add('iframe');\n self.canFocus = false;\n return '';\n },\n src: function (src) {\n this.getEl().src = src;\n },\n html: function (html, callback) {\n var self = this, body = this.getEl().contentWindow.document.body;\n if (!body) {\n global$7.setTimeout(function () {\n self.html(html);\n });\n } else {\n body.innerHTML = html;\n if (callback) {\n callback();\n }\n }\n return this;\n }\n });\n\n var InfoBox = Widget.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('widget').add('infobox');\n self.canFocus = false;\n },\n severity: function (level) {\n this.classes.remove('error');\n this.classes.remove('warning');\n this.classes.remove('success');\n this.classes.add(level);\n },\n help: function (state) {\n this.state.set('help', state);\n },\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n return '
    ' + '
    ' + self.encode(self.state.get('text')) + '' + '
    ' + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl('body').firstChild.data = self.encode(e.value);\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n self.state.on('change:help', function (e) {\n self.classes.toggle('has-help', e.value);\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n return self._super();\n }\n });\n\n var Label = Widget.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('widget').add('label');\n self.canFocus = false;\n if (settings.multiline) {\n self.classes.add('autoscroll');\n }\n if (settings.strong) {\n self.classes.add('strong');\n }\n },\n initLayoutRect: function () {\n var self = this, layoutRect = self._super();\n if (self.settings.multiline) {\n var size = funcs.getSize(self.getEl());\n if (size.width > layoutRect.maxW) {\n layoutRect.minW = layoutRect.maxW;\n self.classes.add('multiline');\n }\n self.getEl().style.width = layoutRect.minW + 'px';\n layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);\n }\n return layoutRect;\n },\n repaint: function () {\n var self = this;\n if (!self.settings.multiline) {\n self.getEl().style.lineHeight = self.layoutRect().h + 'px';\n }\n return self._super();\n },\n severity: function (level) {\n this.classes.remove('error');\n this.classes.remove('warning');\n this.classes.remove('success');\n this.classes.add(level);\n },\n renderHtml: function () {\n var self = this;\n var targetCtrl, forName, forId = self.settings.forId;\n var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));\n if (!forId && (forName = self.settings.forName)) {\n targetCtrl = self.getRoot().find('#' + forName)[0];\n if (targetCtrl) {\n forId = targetCtrl._id;\n }\n }\n if (forId) {\n return '';\n }\n return '' + text + '';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.innerHtml(self.encode(e.value));\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n return self._super();\n }\n });\n\n var Toolbar$1 = Container.extend({\n Defaults: {\n role: 'toolbar',\n layout: 'flow'\n },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('toolbar');\n },\n postRender: function () {\n var self = this;\n self.items().each(function (ctrl) {\n ctrl.classes.add('toolbar-item');\n });\n return self._super();\n }\n });\n\n var MenuBar = Toolbar$1.extend({\n Defaults: {\n role: 'menubar',\n containerCls: 'menubar',\n ariaRoot: true,\n defaults: { type: 'menubutton' }\n }\n });\n\n function isChildOf$1(node, parent$$1) {\n while (node) {\n if (parent$$1 === node) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n var MenuButton = Button.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._renderOpen = true;\n self$$1._super(settings);\n settings = self$$1.settings;\n self$$1.classes.add('menubtn');\n if (settings.fixedWidth) {\n self$$1.classes.add('fixed-width');\n }\n self$$1.aria('haspopup', true);\n self$$1.state.set('menu', settings.menu || self$$1.render());\n },\n showMenu: function (toggle) {\n var self$$1 = this;\n var menu;\n if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {\n return self$$1.hideMenu();\n }\n if (!self$$1.menu) {\n menu = self$$1.state.get('menu') || [];\n self$$1.classes.add('opened');\n if (menu.length) {\n menu = {\n type: 'menu',\n animate: true,\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n menu.animate = true;\n }\n if (!menu.renderTo) {\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();\n } else {\n self$$1.menu = menu.parent(self$$1).show().renderTo();\n }\n self$$1.fire('createmenu');\n self$$1.menu.reflow();\n self$$1.menu.on('cancel', function (e) {\n if (e.control.parent() === self$$1.menu) {\n e.stopPropagation();\n self$$1.focus();\n self$$1.hideMenu();\n }\n });\n self$$1.menu.on('select', function () {\n self$$1.focus();\n });\n self$$1.menu.on('show hide', function (e) {\n if (e.control === self$$1.menu) {\n self$$1.activeMenu(e.type === 'show');\n self$$1.classes.toggle('opened', e.type === 'show');\n }\n self$$1.aria('expanded', e.type === 'show');\n }).fire('show');\n }\n self$$1.menu.show();\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n self$$1.menu.repaint();\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n self$$1.fire('showmenu');\n },\n hideMenu: function () {\n var self$$1 = this;\n if (self$$1.menu) {\n self$$1.menu.items().each(function (item) {\n if (item.hideMenu) {\n item.hideMenu();\n }\n });\n self$$1.menu.hide();\n }\n },\n activeMenu: function (state) {\n this.classes.toggle('active', state);\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n var icon = self$$1.settings.icon, image;\n var text = self$$1.state.get('text');\n var textHtml = '';\n image = self$$1.settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');\n return '
    ' + '' + '
    ';\n },\n postRender: function () {\n var self$$1 = this;\n self$$1.on('click', function (e) {\n if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {\n self$$1.focus();\n self$$1.showMenu(!e.aria);\n if (e.aria) {\n self$$1.menu.items().filter(':visible')[0].focus();\n }\n }\n });\n self$$1.on('mouseenter', function (e) {\n var overCtrl = e.control;\n var parent$$1 = self$$1.parent();\n var hasVisibleSiblingMenu;\n if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {\n parent$$1.items().filter('MenuButton').each(function (ctrl) {\n if (ctrl.hideMenu && ctrl !== overCtrl) {\n if (ctrl.menu && ctrl.menu.visible()) {\n hasVisibleSiblingMenu = true;\n }\n ctrl.hideMenu();\n }\n });\n if (hasVisibleSiblingMenu) {\n overCtrl.focus();\n overCtrl.showMenu();\n }\n }\n });\n return self$$1._super();\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:menu', function () {\n if (self$$1.menu) {\n self$$1.menu.remove();\n }\n self$$1.menu = null;\n });\n return self$$1._super();\n },\n remove: function () {\n this._super();\n if (this.menu) {\n this.menu.remove();\n }\n }\n });\n\n var Menu = FloatPanel.extend({\n Defaults: {\n defaultType: 'menuitem',\n border: 1,\n layout: 'stack',\n role: 'application',\n bodyRole: 'menu',\n ariaRoot: true\n },\n init: function (settings) {\n var self = this;\n settings.autohide = true;\n settings.constrainToViewport = true;\n if (typeof settings.items === 'function') {\n settings.itemsFactory = settings.items;\n settings.items = [];\n }\n if (settings.itemDefaults) {\n var items = settings.items;\n var i = items.length;\n while (i--) {\n items[i] = global$2.extend({}, settings.itemDefaults, items[i]);\n }\n }\n self._super(settings);\n self.classes.add('menu');\n if (settings.animate && global$8.ie !== 11) {\n self.classes.add('animate');\n }\n },\n repaint: function () {\n this.classes.toggle('menu-align', true);\n this._super();\n this.getEl().style.height = '';\n this.getEl('body').style.height = '';\n return this;\n },\n cancel: function () {\n var self = this;\n self.hideAll();\n self.fire('select');\n },\n load: function () {\n var self = this;\n var time, factory;\n function hideThrobber() {\n if (self.throbber) {\n self.throbber.hide();\n self.throbber = null;\n }\n }\n factory = self.settings.itemsFactory;\n if (!factory) {\n return;\n }\n if (!self.throbber) {\n self.throbber = new Throbber(self.getEl('body'), true);\n if (self.items().length === 0) {\n self.throbber.show();\n self.fire('loading');\n } else {\n self.throbber.show(100, function () {\n self.items().remove();\n self.fire('loading');\n });\n }\n self.on('hide close', hideThrobber);\n }\n self.requestTime = time = new Date().getTime();\n self.settings.itemsFactory(function (items) {\n if (items.length === 0) {\n self.hide();\n return;\n }\n if (self.requestTime !== time) {\n return;\n }\n self.getEl().style.width = '';\n self.getEl('body').style.width = '';\n hideThrobber();\n self.items().remove();\n self.getEl('body').innerHTML = '';\n self.add(items);\n self.renderNew();\n self.fire('loaded');\n });\n },\n hideAll: function () {\n var self = this;\n this.find('menuitem').exec('hideMenu');\n return self._super();\n },\n preRender: function () {\n var self = this;\n self.items().each(function (ctrl) {\n var settings = ctrl.settings;\n if (settings.icon || settings.image || settings.selectable) {\n self._hasIcons = true;\n return false;\n }\n });\n if (self.settings.itemsFactory) {\n self.on('postrender', function () {\n if (self.settings.itemsFactory) {\n self.load();\n }\n });\n }\n self.on('show hide', function (e) {\n if (e.control === self) {\n if (e.type === 'show') {\n global$7.setTimeout(function () {\n self.classes.add('in');\n }, 0);\n } else {\n self.classes.remove('in');\n }\n }\n });\n return self._super();\n }\n });\n\n var ListBox = MenuButton.extend({\n init: function (settings) {\n var self = this;\n var values, selected, selectedText, lastItemCtrl;\n function setSelected(menuValues) {\n for (var i = 0; i < menuValues.length; i++) {\n selected = menuValues[i].selected || settings.value === menuValues[i].value;\n if (selected) {\n selectedText = selectedText || menuValues[i].text;\n self.state.set('value', menuValues[i].value);\n return true;\n }\n if (menuValues[i].menu) {\n if (setSelected(menuValues[i].menu)) {\n return true;\n }\n }\n }\n }\n self._super(settings);\n settings = self.settings;\n self._values = values = settings.values;\n if (values) {\n if (typeof settings.value !== 'undefined') {\n setSelected(values);\n }\n if (!selected && values.length > 0) {\n selectedText = values[0].text;\n self.state.set('value', values[0].value);\n }\n self.state.set('menu', values);\n }\n self.state.set('text', settings.text || selectedText);\n self.classes.add('listbox');\n self.on('select', function (e) {\n var ctrl = e.control;\n if (lastItemCtrl) {\n e.lastControl = lastItemCtrl;\n }\n if (settings.multiple) {\n ctrl.active(!ctrl.active());\n } else {\n self.value(e.control.value());\n }\n lastItemCtrl = ctrl;\n });\n },\n value: function (value) {\n if (arguments.length === 0) {\n return this.state.get('value');\n }\n if (typeof value === 'undefined') {\n return this;\n }\n if (this.settings.values) {\n var matchingValues = global$2.grep(this.settings.values, function (a) {\n return a.value === value;\n });\n if (matchingValues.length > 0) {\n this.state.set('value', value);\n } else if (value === null) {\n this.state.set('value', null);\n }\n } else {\n this.state.set('value', value);\n }\n return this;\n },\n bindStates: function () {\n var self = this;\n function activateMenuItemsByValue(menu, value) {\n if (menu instanceof Menu) {\n menu.items().each(function (ctrl) {\n if (!ctrl.hasMenus()) {\n ctrl.active(ctrl.value() === value);\n }\n });\n }\n }\n function getSelectedItem(menuValues, value) {\n var selectedItem;\n if (!menuValues) {\n return;\n }\n for (var i = 0; i < menuValues.length; i++) {\n if (menuValues[i].value === value) {\n return menuValues[i];\n }\n if (menuValues[i].menu) {\n selectedItem = getSelectedItem(menuValues[i].menu, value);\n if (selectedItem) {\n return selectedItem;\n }\n }\n }\n }\n self.on('show', function (e) {\n activateMenuItemsByValue(e.control, self.value());\n });\n self.state.on('change:value', function (e) {\n var selectedItem = getSelectedItem(self.state.get('menu'), e.value);\n if (selectedItem) {\n self.text(selectedItem.text);\n } else {\n self.text(self.settings.text);\n }\n });\n return self._super();\n }\n });\n\n var toggleTextStyle = function (ctrl, state) {\n var textStyle = ctrl._textStyle;\n if (textStyle) {\n var textElm = ctrl.getEl('text');\n textElm.setAttribute('style', textStyle);\n if (state) {\n textElm.style.color = '';\n textElm.style.backgroundColor = '';\n }\n }\n };\n var MenuItem = Widget.extend({\n Defaults: {\n border: 0,\n role: 'menuitem'\n },\n init: function (settings) {\n var self = this;\n var text;\n self._super(settings);\n settings = self.settings;\n self.classes.add('menu-item');\n if (settings.menu) {\n self.classes.add('menu-item-expand');\n }\n if (settings.preview) {\n self.classes.add('menu-item-preview');\n }\n text = self.state.get('text');\n if (text === '-' || text === '|') {\n self.classes.add('menu-item-sep');\n self.aria('role', 'separator');\n self.state.set('text', '-');\n }\n if (settings.selectable) {\n self.aria('role', 'menuitemcheckbox');\n self.classes.add('menu-item-checkbox');\n settings.icon = 'selected';\n }\n if (!settings.preview && !settings.selectable) {\n self.classes.add('menu-item-normal');\n }\n self.on('mousedown', function (e) {\n e.preventDefault();\n });\n if (settings.menu && !settings.ariaHideMenu) {\n self.aria('haspopup', true);\n }\n },\n hasMenus: function () {\n return !!this.settings.menu;\n },\n showMenu: function () {\n var self = this;\n var settings = self.settings;\n var menu;\n var parent = self.parent();\n parent.items().each(function (ctrl) {\n if (ctrl !== self) {\n ctrl.hideMenu();\n }\n });\n if (settings.menu) {\n menu = self.menu;\n if (!menu) {\n menu = settings.menu;\n if (menu.length) {\n menu = {\n type: 'menu',\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n }\n if (parent.settings.itemDefaults) {\n menu.itemDefaults = parent.settings.itemDefaults;\n }\n menu = self.menu = global$4.create(menu).parent(self).renderTo();\n menu.reflow();\n menu.on('cancel', function (e) {\n e.stopPropagation();\n self.focus();\n menu.hide();\n });\n menu.on('show hide', function (e) {\n if (e.control.items) {\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.settings.selected);\n });\n }\n }).fire('show');\n menu.on('hide', function (e) {\n if (e.control === menu) {\n self.classes.remove('selected');\n }\n });\n menu.submenu = true;\n } else {\n menu.show();\n }\n menu._parentMenu = parent;\n menu.classes.add('menu-sub');\n var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [\n 'tl-tr',\n 'bl-br',\n 'tr-tl',\n 'br-bl'\n ] : [\n 'tr-tl',\n 'br-bl',\n 'tl-tr',\n 'bl-br'\n ]);\n menu.moveRel(self.getEl(), rel);\n menu.rel = rel;\n rel = 'menu-sub-' + rel;\n menu.classes.remove(menu._lastRel).add(rel);\n menu._lastRel = rel;\n self.classes.add('selected');\n self.aria('expanded', true);\n }\n },\n hideMenu: function () {\n var self = this;\n if (self.menu) {\n self.menu.items().each(function (item) {\n if (item.hideMenu) {\n item.hideMenu();\n }\n });\n self.menu.hide();\n self.aria('expanded', false);\n }\n return self;\n },\n renderHtml: function () {\n var self = this;\n var id = self._id;\n var settings = self.settings;\n var prefix = self.classPrefix;\n var text = self.state.get('text');\n var icon = self.settings.icon, image = '', shortcut = settings.shortcut;\n var url = self.encode(settings.url), iconHtml = '';\n function convertShortcut(shortcut) {\n var i, value, replace = {};\n if (global$8.mac) {\n replace = {\n alt: '⌥',\n ctrl: '⌘',\n shift: '⇧',\n meta: '⌘'\n };\n } else {\n replace = { meta: 'Ctrl' };\n }\n shortcut = shortcut.split('+');\n for (i = 0; i < shortcut.length; i++) {\n value = replace[shortcut[i].toLowerCase()];\n if (value) {\n shortcut[i] = value;\n }\n }\n return shortcut.join('+');\n }\n function escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n function markMatches(text) {\n var match = settings.match || '';\n return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {\n return '!mce~match[' + match + ']mce~match!';\n }) : text;\n }\n function boldMatches(text) {\n return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '');\n }\n if (icon) {\n self.parent().classes.add('menu-has-icons');\n }\n if (settings.image) {\n image = ' style=\"background-image: url(\\'' + settings.image + '\\')\"';\n }\n if (shortcut) {\n shortcut = convertShortcut(shortcut);\n }\n icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');\n iconHtml = text !== '-' ? '\\xA0' : '';\n text = boldMatches(self.encode(markMatches(text)));\n url = boldMatches(self.encode(markMatches(url)));\n return '
    ' + iconHtml + (text !== '-' ? '' + text + '' : '') + (shortcut ? '
    ' + shortcut + '
    ' : '') + (settings.menu ? '
    ' : '') + (url ? '
    ' + url + '
    ' : '') + '
    ';\n },\n postRender: function () {\n var self = this, settings = self.settings;\n var textStyle = settings.textStyle;\n if (typeof textStyle === 'function') {\n textStyle = textStyle.call(this);\n }\n if (textStyle) {\n var textElm = self.getEl('text');\n if (textElm) {\n textElm.setAttribute('style', textStyle);\n self._textStyle = textStyle;\n }\n }\n self.on('mouseenter click', function (e) {\n if (e.control === self) {\n if (!settings.menu && e.type === 'click') {\n self.fire('select');\n global$7.requestAnimationFrame(function () {\n self.parent().hideAll();\n });\n } else {\n self.showMenu();\n if (e.aria) {\n self.menu.focus(true);\n }\n }\n }\n });\n self._super();\n return self;\n },\n hover: function () {\n var self = this;\n self.parent().items().each(function (ctrl) {\n ctrl.classes.remove('selected');\n });\n self.classes.toggle('selected', true);\n return self;\n },\n active: function (state) {\n toggleTextStyle(this, state);\n if (typeof state !== 'undefined') {\n this.aria('checked', state);\n }\n return this._super(state);\n },\n remove: function () {\n this._super();\n if (this.menu) {\n this.menu.remove();\n }\n }\n });\n\n var Radio = Checkbox.extend({\n Defaults: {\n classes: 'radio',\n role: 'radio'\n }\n });\n\n var ResizeHandle = Widget.extend({\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n self.classes.add('resizehandle');\n if (self.settings.direction === 'both') {\n self.classes.add('resizehandle-both');\n }\n self.canFocus = false;\n return '
    ' + '' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.resizeDragHelper = new DragHelper(this._id, {\n start: function () {\n self.fire('ResizeStart');\n },\n drag: function (e) {\n if (self.settings.direction !== 'both') {\n e.deltaX = 0;\n }\n self.fire('Resize', e);\n },\n stop: function () {\n self.fire('ResizeEnd');\n }\n });\n },\n remove: function () {\n if (this.resizeDragHelper) {\n this.resizeDragHelper.destroy();\n }\n return this._super();\n }\n });\n\n function createOptions(options) {\n var strOptions = '';\n if (options) {\n for (var i = 0; i < options.length; i++) {\n strOptions += '';\n }\n }\n return strOptions;\n }\n var SelectBox = Widget.extend({\n Defaults: {\n classes: 'selectbox',\n role: 'selectbox',\n options: []\n },\n init: function (settings) {\n var self = this;\n self._super(settings);\n if (self.settings.size) {\n self.size = self.settings.size;\n }\n if (self.settings.options) {\n self._options = self.settings.options;\n }\n self.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13) {\n e.preventDefault();\n self.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self.fire('submit', { data: rootControl.toJSON() });\n }\n });\n },\n options: function (state) {\n if (!arguments.length) {\n return this.state.get('options');\n }\n this.state.set('options', state);\n return this;\n },\n renderHtml: function () {\n var self = this;\n var options, size = '';\n options = createOptions(self._options);\n if (self.size) {\n size = ' size = \"' + self.size + '\"';\n }\n return '';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:options', function (e) {\n self.getEl().innerHTML = createOptions(e.value);\n });\n return self._super();\n }\n });\n\n function constrain(value, minVal, maxVal) {\n if (value < minVal) {\n value = minVal;\n }\n if (value > maxVal) {\n value = maxVal;\n }\n return value;\n }\n function setAriaProp(el, name, value) {\n el.setAttribute('aria-' + name, value);\n }\n function updateSliderHandle(ctrl, value) {\n var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;\n if (ctrl.settings.orientation === 'v') {\n stylePosName = 'top';\n sizeName = 'height';\n shortSizeName = 'h';\n } else {\n stylePosName = 'left';\n sizeName = 'width';\n shortSizeName = 'w';\n }\n handleEl = ctrl.getEl('handle');\n maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';\n handleEl.style[stylePosName] = styleValue;\n handleEl.style.height = ctrl.layoutRect().h + 'px';\n setAriaProp(handleEl, 'valuenow', value);\n setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));\n setAriaProp(handleEl, 'valuemin', ctrl._minValue);\n setAriaProp(handleEl, 'valuemax', ctrl._maxValue);\n }\n var Slider = Widget.extend({\n init: function (settings) {\n var self = this;\n if (!settings.previewFilter) {\n settings.previewFilter = function (value) {\n return Math.round(value * 100) / 100;\n };\n }\n self._super(settings);\n self.classes.add('slider');\n if (settings.orientation === 'v') {\n self.classes.add('vertical');\n }\n self._minValue = isNumber(settings.minValue) ? settings.minValue : 0;\n self._maxValue = isNumber(settings.maxValue) ? settings.maxValue : 100;\n self._initValue = self.state.get('value');\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = self.classPrefix;\n return '
    ' + '
    ' + '
    ';\n },\n reset: function () {\n this.value(this._initValue).repaint();\n },\n postRender: function () {\n var self = this;\n var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;\n function toFraction(min, max, val) {\n return (val + min) / (max - min);\n }\n function fromFraction(min, max, val) {\n return val * (max - min) - min;\n }\n function handleKeyboard(minValue, maxValue) {\n function alter(delta) {\n var value;\n value = self.value();\n value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);\n value = constrain(value, minValue, maxValue);\n self.value(value);\n self.fire('dragstart', { value: value });\n self.fire('drag', { value: value });\n self.fire('dragend', { value: value });\n }\n self.on('keydown', function (e) {\n switch (e.keyCode) {\n case 37:\n case 38:\n alter(-1);\n break;\n case 39:\n case 40:\n alter(1);\n break;\n }\n });\n }\n function handleDrag(minValue, maxValue, handleEl) {\n var startPos, startHandlePos, maxHandlePos, handlePos, value;\n self._dragHelper = new DragHelper(self._id, {\n handle: self._id + '-handle',\n start: function (e) {\n startPos = e[screenCordName];\n startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);\n maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n self.fire('dragstart', { value: value });\n },\n drag: function (e) {\n var delta = e[screenCordName] - startPos;\n handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);\n handleEl.style[stylePosName] = handlePos + 'px';\n value = minValue + handlePos / maxHandlePos * (maxValue - minValue);\n self.value(value);\n self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');\n self.fire('drag', { value: value });\n },\n stop: function () {\n self.tooltip().hide();\n self.fire('dragend', { value: value });\n }\n });\n }\n minValue = self._minValue;\n maxValue = self._maxValue;\n if (self.settings.orientation === 'v') {\n screenCordName = 'screenY';\n stylePosName = 'top';\n sizeName = 'height';\n shortSizeName = 'h';\n } else {\n screenCordName = 'screenX';\n stylePosName = 'left';\n sizeName = 'width';\n shortSizeName = 'w';\n }\n self._super();\n handleKeyboard(minValue, maxValue);\n handleDrag(minValue, maxValue, self.getEl('handle'));\n },\n repaint: function () {\n this._super();\n updateSliderHandle(this, this.value());\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:value', function (e) {\n updateSliderHandle(self, e.value);\n });\n return self._super();\n }\n });\n\n var Spacer = Widget.extend({\n renderHtml: function () {\n var self = this;\n self.classes.add('spacer');\n self.canFocus = false;\n return '
    ';\n }\n });\n\n var SplitButton = MenuButton.extend({\n Defaults: {\n classes: 'widget btn splitbtn',\n role: 'button'\n },\n repaint: function () {\n var self$$1 = this;\n var elm = self$$1.getEl();\n var rect = self$$1.layoutRect();\n var mainButtonElm, menuButtonElm;\n self$$1._super();\n mainButtonElm = elm.firstChild;\n menuButtonElm = elm.lastChild;\n global$9(mainButtonElm).css({\n width: rect.w - funcs.getSize(menuButtonElm).width,\n height: rect.h - 2\n });\n global$9(menuButtonElm).css({ height: rect.h - 2 });\n return self$$1;\n },\n activeMenu: function (state) {\n var self$$1 = this;\n global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);\n },\n renderHtml: function () {\n var self$$1 = this;\n var id = self$$1._id;\n var prefix = self$$1.classPrefix;\n var image;\n var icon = self$$1.state.get('icon');\n var text = self$$1.state.get('text');\n var settings = self$$1.settings;\n var textHtml = '', ariaPressed;\n image = settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n return '
    ' + '' + '' + '
    ';\n },\n postRender: function () {\n var self$$1 = this, onClickHandler = self$$1.settings.onclick;\n self$$1.on('click', function (e) {\n var node = e.target;\n if (e.control === this) {\n while (node) {\n if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {\n e.stopImmediatePropagation();\n if (onClickHandler) {\n onClickHandler.call(this, e);\n }\n return;\n }\n node = node.parentNode;\n }\n }\n });\n delete self$$1.settings.onclick;\n return self$$1._super();\n }\n });\n\n var StackLayout = FlowLayout.extend({\n Defaults: {\n containerClass: 'stack-layout',\n controlClass: 'stack-layout-item',\n endClass: 'break'\n },\n isNative: function () {\n return true;\n }\n });\n\n var TabPanel = Panel.extend({\n Defaults: {\n layout: 'absolute',\n defaults: { type: 'panel' }\n },\n activateTab: function (idx) {\n var activeTabElm;\n if (this.activeTabId) {\n activeTabElm = this.getEl(this.activeTabId);\n global$9(activeTabElm).removeClass(this.classPrefix + 'active');\n activeTabElm.setAttribute('aria-selected', 'false');\n }\n this.activeTabId = 't' + idx;\n activeTabElm = this.getEl('t' + idx);\n activeTabElm.setAttribute('aria-selected', 'true');\n global$9(activeTabElm).addClass(this.classPrefix + 'active');\n this.items()[idx].show().fire('showtab');\n this.reflow();\n this.items().each(function (item, i) {\n if (idx !== i) {\n item.hide();\n }\n });\n },\n renderHtml: function () {\n var self = this;\n var layout = self._layout;\n var tabsHtml = '';\n var prefix = self.classPrefix;\n self.preRender();\n layout.preRender(self);\n self.items().each(function (ctrl, i) {\n var id = self._id + '-t' + i;\n ctrl.aria('role', 'tabpanel');\n ctrl.aria('labelledby', id);\n tabsHtml += '
    ' + self.encode(ctrl.settings.title) + '
    ';\n });\n return '
    ' + '
    ' + tabsHtml + '
    ' + '
    ' + layout.renderHtml(self) + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.settings.activeTab = self.settings.activeTab || 0;\n self.activateTab(self.settings.activeTab);\n this.on('click', function (e) {\n var targetParent = e.target.parentNode;\n if (targetParent && targetParent.id === self._id + '-head') {\n var i = targetParent.childNodes.length;\n while (i--) {\n if (targetParent.childNodes[i] === e.target) {\n self.activateTab(i);\n }\n }\n }\n });\n },\n initLayoutRect: function () {\n var self = this;\n var rect, minW, minH;\n minW = funcs.getSize(self.getEl('head')).width;\n minW = minW < 0 ? 0 : minW;\n minH = 0;\n self.items().each(function (item) {\n minW = Math.max(minW, item.layoutRect().minW);\n minH = Math.max(minH, item.layoutRect().minH);\n });\n self.items().each(function (ctrl) {\n ctrl.settings.x = 0;\n ctrl.settings.y = 0;\n ctrl.settings.w = minW;\n ctrl.settings.h = minH;\n ctrl.layoutRect({\n x: 0,\n y: 0,\n w: minW,\n h: minH\n });\n });\n var headH = funcs.getSize(self.getEl('head')).height;\n self.settings.minWidth = minW;\n self.settings.minHeight = minH + headH;\n rect = self._super();\n rect.deltaH += headH;\n rect.innerH = rect.h - rect.deltaH;\n return rect;\n }\n });\n\n var TextBox = Widget.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1.classes.add('textbox');\n if (settings.multiline) {\n self$$1.classes.add('multiline');\n } else {\n self$$1.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13) {\n e.preventDefault();\n self$$1.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self$$1.fire('submit', { data: rootControl.toJSON() });\n }\n });\n self$$1.on('keyup', function (e) {\n self$$1.state.set('value', e.target.value);\n });\n }\n },\n repaint: function () {\n var self$$1 = this;\n var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;\n style = self$$1.getEl().style;\n rect = self$$1._layoutRect;\n lastRepaintRect = self$$1._lastRepaintRect || {};\n var doc = document;\n if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n style.lineHeight = rect.h - borderH + 'px';\n }\n borderBox = self$$1.borderBox;\n borderW = borderBox.left + borderBox.right + 8;\n borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);\n if (rect.x !== lastRepaintRect.x) {\n style.left = rect.x + 'px';\n lastRepaintRect.x = rect.x;\n }\n if (rect.y !== lastRepaintRect.y) {\n style.top = rect.y + 'px';\n lastRepaintRect.y = rect.y;\n }\n if (rect.w !== lastRepaintRect.w) {\n style.width = rect.w - borderW + 'px';\n lastRepaintRect.w = rect.w;\n }\n if (rect.h !== lastRepaintRect.h) {\n style.height = rect.h - borderH + 'px';\n lastRepaintRect.h = rect.h;\n }\n self$$1._lastRepaintRect = lastRepaintRect;\n self$$1.fire('repaint', {}, false);\n return self$$1;\n },\n renderHtml: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var attrs, elm;\n attrs = {\n id: self$$1._id,\n hidefocus: '1'\n };\n global$2.each([\n 'rows',\n 'spellcheck',\n 'maxLength',\n 'size',\n 'readonly',\n 'min',\n 'max',\n 'step',\n 'list',\n 'pattern',\n 'placeholder',\n 'required',\n 'multiple'\n ], function (name$$1) {\n attrs[name$$1] = settings[name$$1];\n });\n if (self$$1.disabled()) {\n attrs.disabled = 'disabled';\n }\n if (settings.subtype) {\n attrs.type = settings.subtype;\n }\n elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);\n elm.value = self$$1.state.get('value');\n elm.className = self$$1.classes.toString();\n return elm.outerHTML;\n },\n value: function (value) {\n if (arguments.length) {\n this.state.set('value', value);\n return this;\n }\n if (this.state.get('rendered')) {\n this.state.set('value', this.getEl().value);\n }\n return this.state.get('value');\n },\n postRender: function () {\n var self$$1 = this;\n self$$1.getEl().value = self$$1.state.get('value');\n self$$1._super();\n self$$1.$el.on('change', function (e) {\n self$$1.state.set('value', e.target.value);\n self$$1.fire('change', e);\n });\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:value', function (e) {\n if (self$$1.getEl().value !== e.value) {\n self$$1.getEl().value = e.value;\n }\n });\n self$$1.state.on('change:disabled', function (e) {\n self$$1.getEl().disabled = e.value;\n });\n return self$$1._super();\n },\n remove: function () {\n this.$el.off();\n this._super();\n }\n });\n\n var getApi = function () {\n return {\n Selector: Selector,\n Collection: Collection$2,\n ReflowQueue: $_921m08uxjkmcwsk2,\n Control: Control$1,\n Factory: global$4,\n KeyboardNavigation: KeyboardNavigation,\n Container: Container,\n DragHelper: DragHelper,\n Scrollable: $_c9juz9uzjkmcwskb,\n Panel: Panel,\n Movable: $_77p0ikukjkmcwsie,\n Resizable: $_4ci2x6v1jkmcwski,\n FloatPanel: FloatPanel,\n Window: Window$$1,\n MessageBox: MessageBox,\n Tooltip: Tooltip,\n Widget: Widget,\n Progress: Progress,\n Notification: Notification,\n Layout: Layout,\n AbsoluteLayout: AbsoluteLayout,\n Button: Button,\n ButtonGroup: ButtonGroup,\n Checkbox: Checkbox,\n ComboBox: ComboBox,\n ColorBox: ColorBox,\n PanelButton: PanelButton,\n ColorButton: ColorButton,\n ColorPicker: ColorPicker,\n Path: Path,\n ElementPath: ElementPath,\n FormItem: FormItem,\n Form: Form,\n FieldSet: FieldSet,\n FilePicker: FilePicker,\n FitLayout: FitLayout,\n FlexLayout: FlexLayout,\n FlowLayout: FlowLayout,\n FormatControls: $_drujjnwxjkmcwsrc,\n GridLayout: GridLayout,\n Iframe: Iframe$1,\n InfoBox: InfoBox,\n Label: Label,\n Toolbar: Toolbar$1,\n MenuBar: MenuBar,\n MenuButton: MenuButton,\n MenuItem: MenuItem,\n Throbber: Throbber,\n Menu: Menu,\n ListBox: ListBox,\n Radio: Radio,\n ResizeHandle: ResizeHandle,\n SelectBox: SelectBox,\n Slider: Slider,\n Spacer: Spacer,\n SplitButton: SplitButton,\n StackLayout: StackLayout,\n TabPanel: TabPanel,\n TextBox: TextBox,\n DropZone: DropZone,\n BrowseButton: BrowseButton\n };\n };\n var appendTo = function (target) {\n if (target.ui) {\n global$2.each(getApi(), function (ref, key) {\n target.ui[key] = ref;\n });\n } else {\n target.ui = getApi();\n }\n };\n var registerToFactory = function () {\n global$2.each(getApi(), function (ref, key) {\n global$4.add(key, ref);\n });\n };\n var Api = {\n appendTo: appendTo,\n registerToFactory: registerToFactory\n };\n\n Api.registerToFactory();\n Api.appendTo(window.tinymce ? window.tinymce : {});\n global.add('modern', function (editor) {\n $_drujjnwxjkmcwsrc.setup(editor);\n return $_f0tepxtqjkmcwsfm.get(editor);\n });\n function Theme () {\n }\n\n return Theme;\n\n}());\n})();\n","module.exports = __webpack_public_path__ + \"img/logo_meu_CNA.d02f7d6c.png\";","module.exports = __webpack_public_path__ + \"img/logo.33012821.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3c32351d&prod&lang=css\"","\nimport Vue from 'vue';\n\nimport { Api } from '../api';\nimport Global from '../global';\nimport Base from '../base';\n\nimport '../../assets/js/tinymce/tinymce'\nimport '../../assets/js/tinymce/themes/modern/theme';\nimport '../../assets/js/tinymce/plugins/link/plugin';\nimport '../../assets/js/tinymce/plugins/paste/plugin';\nimport '../../assets/js/tinymce/plugins/lists/plugin';\nimport '../../assets/js/tinymce/plugins/code/plugin';\nimport '../../assets/js/tinymce/plugins/preview/plugin';\nimport '../../assets/js/tinymce/plugins/advlist/plugin';\nimport '../../assets/js/tinymce/plugins/image/plugin';\nimport '../../assets/js/tinymce/plugins/media/plugin';\n\nVue.directive('htmleditor', {\n twoWay: true,\n inserted: (el, binding, vnode) => {\n\n let _lastfileuploaded;\n let _interval;\n let _hascustomtag;\n\n if (binding && binding.value) {\n _hascustomtag = binding.value.hascustomtag == true;\n }\n\n tinymce.PluginManager.add('customtag', (editor) => {\n\n editor.addButton('customTagButton', {\n text: 'Tag de Resposta',\n icon: false,\n onclick: () => {\n _pluginWindowsCustomTag(editor)\n }\n });\n\n editor.addMenuItem('customTagMenuItem', {\n text: 'Tag de Resposta',\n context: 'tools',\n onclick: () => {\n _pluginWindowsCustomTag(editor)\n }\n });\n });\n\n function _pluginWindowsCustomTag(editor) {\n editor.windowManager.open({\n title: 'Insira a Resposta',\n body: [\n { type: 'textbox', name: 'description', label: 'Resposta' }\n ],\n onsubmit: (e) => {\n editor.insertContent('##' + e.data.description + '##');\n }\n });\n }\n\n tinymce.init({\n target: el,\n mode: \"inline\",\n language_url: '/js/tinymce-pt_br.js',\n plugins: ['link', 'paste', 'lists', 'code', 'preview', 'advlist', 'image', 'media', _hascustomtag ? 'customtag' : ''],\n\n toolbar: \"formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | image media\" + (_hascustomtag ? \" | customTagButton\" : \"\"),\n\n extended_valid_elements: \"customtag\",\n custom_elements: \"customtag\",\n\n media_live_embeds: true,\n image_advtab: true,\n file_picker_types: 'file image media',\n setup: (editor) => {\n \n _interval = setInterval(() => {\n if (el.value && el.value.length > 0) {\n tinymce.get(el.id).getBody().innerHTML = el.value;\n clearInterval(_interval)\n }\n }, 1000)\n\n editor.on('change', () => {\n clearInterval(_interval)\n var value = editor.getContent();\n value = value.replace(/'/g, '\\\"');\n value = value.replace(/\\r?\\n|\\r/g, '');\n\n el.value = value;\n\n setVModelValue(value, vnode)\n });\n },\n file_picker_types: 'image media',\n\n relative_urls: false,\n remove_script_host: false,\n media_poster: false,\n media_filter_html: false,\n\n images_upload_url: Global.URL_DOWNLOAD,\n\n images_upload_handler: (blobInfo, success, failure) => {\n new Api('document/upload', Global.END_POINT_PORTAL_CORPORATIVO)\n .upload(blobInfo.blob(), \"editorhtml\", true)\n .then(result => {\n success(Global.URL_DOWNLOAD + \"editorhtml/\" + result.data[0]);\n }, (err) => {\n failure('Erro ao fazer upload');\n });\n },\n audio_template_callback: function (data) {\n return '';\n },\n video_template_callback: function (data) {\n if (_lastfileuploaded && _lastfileuploaded.indexOf(\"audio\") > -1)\n return '';\n else\n return '';\n },\n file_picker_callback: (cb, value, meta) => {\n\n if (meta.filetype == 'image') {\n var input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n input.onchange = () => {\n var file = input.files[0];\n _lastfileuploaded = file.type;\n var reader = new FileReader();\n reader.onload = () => {\n var id = 'blobid' + (new Date()).getTime();\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\n var base64 = reader.result.split(',')[1];\n var blobInfo = blobCache.create(id, file, base64);\n blobCache.add(blobInfo);\n cb(blobInfo.blobUri(), { title: file.name });\n };\n reader.readAsDataURL(file);\n };\n input.click();\n }\n\n if (meta.filetype == 'media') {\n var input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'audio/*');\n input.setAttribute('accept', 'video/*');\n input.onchange = () => {\n\n var file = input.files[0];\n if (file.size > 1 * 1024 * 1000) {\n event.target.files = [];\n return false;\n }\n \n _lastfileuploaded = file.type;\n var reader = new FileReader();\n reader.onload = () => {\n var id = 'blobid' + (new Date()).getTime();\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\n var base64 = reader.result.split(',')[1];\n var blobInfo = blobCache.create(id, file, base64);\n blobCache.add(blobInfo);\n cb(blobInfo.blobUri());\n };\n reader.readAsDataURL(file);\n };\n input.click();\n }\n\n }\n });\n\n function findVModelName(vnode) {\n return vnode.data.directives.find(function (o) {\n return o.name === 'model';\n }).expression;\n }\n\n function setVModelValue(value, vnode) {\n var prop = findVModelName(vnode)\n eval('vnode.context.' + prop + ' = ' + '\\'' + value + '\\'')\n }\n }\n})"],"sourceRoot":""}