{"version":3,"sources":["webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue?5ee1","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue?e770","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue?aa4f","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/down_error.png","webpack:///src/js/conf/home/pages/resource/pages/file/pages/details/index.vue","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/index.vue?9e5d","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/index.vue?996b","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/index.vue?39ba","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/index.vue","webpack:///src/js/module/components/spin/spin.vue","webpack:///src/js/module/components/listConstruction/listConstruction.vue","webpack:///src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///src/js/module/components/noData/noData.vue","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./src/js/module/components/spin/spin.vue","webpack:///./src/js/module/components/spin/spin.vue?542d","webpack:///./src/js/module/components/spin/spin.vue?9371","webpack:///./src/js/module/components/spin/spin.vue?87eb","webpack:///./src/js/module/components/listConstruction/listConstruction.vue","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?b527","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?50be","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?6117","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?c652","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?7693","webpack:///./src/js/module/components/secondaryMenu/close.png","webpack:///./src/js/module/components/secondaryMenu/open.png","webpack:///./src/js/module/components/secondaryMenu/menu.js","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?048e","webpack:///./src/js/module/components/noData/noData.vue","webpack:///./src/js/module/components/noData/noData.vue?93a9","webpack:///./src/js/module/components/noData/noData.vue?86e8","webpack:///./src/js/module/components/noData/noData.vue?5a51","webpack:///./src/js/module/components/noData/images/errorTip.png","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/_source/codemirror.js","webpack:///./node_modules/codemirror/mode/sql/sql.js","webpack:///./src/js/module/download/index.js","webpack:///./node_modules/codemirror/addon/hint/show-hint.js","webpack:///./node_modules/codemirror/addon/hint/sql-hint.js","webpack:///./node_modules/codemirror/addon/hint/xml-hint.js","webpack:///./node_modules/codemirror/mode/python/python.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/codemirror/mode/textile/textile.js","webpack:///./node_modules/codemirror/mode/shell/shell.js","webpack:///./src/js/module/util/util.js","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/_source/common.js","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/utils.js","webpack:///src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue"],"names":["Object","defineProperty","__webpack_exports__","value","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noType_vue__","__webpack_require__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noType_vue___default","n","__WEBPACK_IMPORT_KEY__","key","d","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_511724d0_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_noType_vue__","__vue_styles__","ssrContext","Component","normalizeComponent","a","content","module","i","locals","exports","push","esExports","render","_h","this","$createElement","_c","_self","staticClass","attrs","src","alt","_v","_s","$t","staticRenderFns","p","_vuex","_common","_utils","_download","_util","editor","name","data","isNoType","isLoading","filtTypeArr","loadingIndex","mode","isData","size","msg","props","methods","assign","mapActions","_go","$router","_downloadFile","downloadFile","id","$route","params","_getViewResources","_this","getViewResources","_rtParam","then","res","alias","split","_handlerEditor","setValue","lineCount","setTimeout","$","scrollTop","scrollLeft","catch","e","$message","error","_onUp","_lodash2","default","debounce","_editorOff","leading","trailing","_onDown","remove","_this2","h","height","_codemirror2","display","wrapper","style","scroll","_ref","doc","totalHeight","on","watch","created","file","_localStorage2","getItem","fileName","fileSize","lastIndexOf","substring","length","handlerSuffix","bytesToSize","parseInt","includes","trimStart","mounted","destroyed","toTextArea","off","computed","skipLineNum","limit","components","mListConstruction","_listConstruction2","mNoType","_noType2","mSpin","_spin2","mSecondaryMenu","_secondaryMenu2","mNoData","_noData2","_vm","type","title","staticStyle","margin","slot","data-container","data-toggle","click","_e","is-spin","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_946b5f1e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__","isSpin","Boolean","isLeft","String","menuList","_menu2","index","isTogHide","className","is","layoutBox","addClass","removeClass","_toggleSubMenu","item","isOpen","_toggleMenu","factory","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","document","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","node","current","after","slice","removeChildren","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","createElement","cssText","createTextNode","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","joinClasses","b","as","createRange","start","end","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","bind","f","args","Array","prototype","call","arguments","apply","copyObj","obj","target","overwrite","prop","hasOwnProperty","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","Delayed","array","set","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","lst","arr","map","out","nothing","createObj","base","inst","create","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","getLine","first","Error","chunk","lines","children","sz","chunkSize","getBetween","line","iter","text","getLines","updateLineHeight","diff","lineNo","cur","no","lineAtHeight","outer","i$1","lh","isLine","l","lineNumberFor","options","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","max","clipPos","last","linelen","clipToLen","clipPosArray","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","old","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","found","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","splice","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","len","found$1","findMaxLine","cm","maxLine","maxLineLength","maxLineChanged","bidiOther","getBidiPartAt","order","bidiOrdering","lowTypes","arabicTypes","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","direction","outerType","code","types","prev","type$1","prev$1","type$2","i$4","type$3","replace","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","m","i$7","at","j$2","nstart","unshift","reverse","getOrder","noHandlers","emitter","addEventListener","attachEvent","map$$1","_handlers","concat","getHandlers","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","result","nl","rt","hasSelection","window","getSelection","te","range$$1","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","resolveMode","spec","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","eol","sol","peek","undefined","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","context","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","css","attributes","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","view","operationGroup","orphanDelayedCallbacks","signalLater","list","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutters","gutterWidth","alignable","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","abs","bottom","top","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","pageScrollY","marginTop","pageYOffset","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","get","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","widgetHeight$$1","ltr","_lineNo","ref","closestDist","endX","dist","baseX","chAround","boxAround","atLeft","atStart","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","round","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","head","drawSelectionRange","cursor","cursorHeight","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","add","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","onBlur","readOnly","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","alignHorizontally","alignWidgets","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","updateGutterSpace","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","clear","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","native","null","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","op","viewChanged","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","ops","ownsGroup","endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","updatedDisplay","mustUpdate","updateDisplayIfNeeded","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","DisplayUpdate","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","updateLineNumbers","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","time","highlight","highlightWorker","Date","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","hasFocus","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutters","specs","gElt","setGuttersForLineNumbers","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","wheelDX","wheelDY","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","History","startGen","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","mark","parts","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","filter","returned","v","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","constructor","getValue","join","lineSeparator","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","loadFile","allowDropFileTypes","reader","onload","readAsText","draggingText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","127","145","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","fromCharCode","keyMap","normalizeKeyName","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","activeTouch","supportsTouch","draggable","clickInGutter","repeat","now","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","option","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","move","buttons","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","guttersChanged","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","init","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","_top","onDragStart","inp","getField","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","findPosH","origDir","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","moveVisually","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","textContent","previousSibling","dist$1","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","closing","extraLinebreak","close","addText","walk","cmText","markerID","isBlock","nodeName","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","detach","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","method","contenteditable","defineMode","dependencies","defineMIME","mime","defineExtension","func","defineDocExtension","fromTextArea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","cmpPos","addLegacyProps","version","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_16cfa774_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_spin_vue__","class","xmlns","xmlns:xlink","viewBox","preserveAspectRatio","transform","attributeName","values","keyTimes","dur","repeatCount","fill","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listConstruction_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listConstruction_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_eae3645c_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_listConstruction_vue__","_t","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_f72bdd3a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_secondaryMenu_vue__","escape","_i18n","menu","projects","i18n","path","icon","security","resource","user","href","_l","$index","$event","el","active-class","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noData_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noData_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2d3808af_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_noData_vue__","_m","_codemirror","getElementById","hookIdentifier","hookVar","hookClient","config","parserConfig","client","atoms","false","true","builtin","defaultBuiltin","keywords","sqlKeywords","operatorChars","support","hooks","dateSQL","date","timestamp","backslashStringEscapes","brackets","punctuation","tokenBase","quote","hexNumber","binaryNumber","decimallessFloat","doubleQuote","tokenize","escaped","nCharCast","charsetCast","commentSlashSlash","commentHash","commentSpaceRequired","tokenComment","depth","zerolessFloat","ODBCdotTable","pushContext","tok","popContext","textAfter","cx","blockCommentStart","blockCommentEnd","lineComment","closeBrackets","words","@","`","\\","identifierQuote",":","?","\"","$url","$obj","param","url","forEach","appendTo","warning","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","tick","startPos","startLen","self","activityFunc","showHint","getHints","async","newOpts","hintOptions","defaultOptions","resolve","parseOptions","selections","supportsSelection","completionActive","completion","requestAnimationFrame","fn","cancelAnimationFrame","getText","getHintElement","hintsElement","Widget","picked","parentWindow","defaultView","hints","selectedHint","completions","hintId","alignWithWord","below","winW","innerWidth","winH","overlapY","scrolls","startScroll","closingOnBlur","overlapX","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","ourMap","addBinding","extra","buildKeyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onScroll","curScroll","point","t","completeOnSingleClick","fetchHints","callback","closeCharacters","disable","myTick","finishUpdate","completeSingle","resolved","app","applicableHelpers","run","fromList","anyword","term","autocomplete","auto","tables","defaultTable","CONS","QUERY_DIV","ALIAS_KEYWORD","isArray","wrapTable","columns","getTable","shallowClone","object","addMatches","wordlist","formatter","cleanName","nameParts","insertIdentifierQuotes","eachWord","lineText","findTableByAlias","fullQuery","aliasUpperCase","previousWord","table","separator","validRange","indexOfSeparator","prevItem","query","wordUpperCase","parseTables","defaultTableName","disableKeywords","getKeywords","getIdentifierQuote","useIdentifierQuotes","cont","aliasTable","oldTable","tableInsert","nameCompletion","objectOrClass","matches","typed","matchInMiddle","tags","schemaInfo","quoteChar","prefix","tagStart","replaceToken","tagName","tagType","curTag","childList","globalAttrs","nm","atValues","atName","wordRegexp","wordOperators","commonKeywords","commonBuiltins","scopes","conf","parserConf","ERRORCLASS","delimiters","singleDelimiters","operators","singleOperators","doubleOperators","doubleDelimiters","tripleDelimiters","hangingIndent","myKeywords","myBuiltins","extra_keywords","extra_builtins","py3","identifiers","stringPrefixes","builtins","lastToken","scopeOffset","lineOffset","pushPyScope","dedent","errorToken","tokenBaseInner","floatLiteral","intLiteral","delimiter","tokenOuter","singleline","OUTCLASS","tokenNestedExpr","tokenString","singleLineStringErrors","isString","formatStringFactory","tokenStringFactory","tokenLexer","beginningOfLine","lambda","delimiter_index","pushBracketScope","basecolumn","addErr","scope","triples","fold","htmlConfig","autoSelfClosers","area","br","command","embed","frame","hr","keygen","link","meta","track","wbr","menuitem","implicitlyClosed","dd","li","optgroup","rp","tbody","td","tfoot","tr","contextGrabbers","dt","address","article","aside","blockquote","dl","fieldset","footer","h1","h2","h3","h4","h5","h6","header","hgroup","nav","ol","section","ul","thead","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","htmlMode","inText","chain","parser","inBlock","doctype","inTag","closure","baseState","isInAttribute","stringStartCol","terminator","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","startOfLine","noIndent","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","TOKEN_STYLES","addition","bold","cite","definitionList","deletion","em","footnote","footCite","html","image","italic","linkDefinition","list1","list2","list3","notextile","specialChar","strong","sup","tableHeading","handlePhraseModifier","togglePhraseModifier","tokenStyles","tokenStylesWith","phraseModifier","closeRE","openSize","charBefore","charAfter","Modes","textileDisabled","layoutType","activeStyles","extraStyles","spanningLayout","newLayout","REs","single","bc","bq","definitionListEnd","drawTable","foot","para","tableCellAttributes","tableText","selector","lang","pad","createRe","makeRe","RE","choiceRe","arg","blockType","newMode","layoutLength","listDepth","listMod","tableCell","startNewLine","define","dict","commonAtoms","commonCommands","tokenDollar","tokenStringStart","bytes","log","pow","toPrecision","isJson","JSON","parse","_typeof","syntaxHighlight","json","stringify",".txt",".log",".sh",".conf",".cfg",".py",".java",".sql",".hql",".xml"],"mappings":"oDAAAA,OAAAC,eAAAC,EAAA,cAAAC,OAAA,QAAAC,EAAAC,EAAA,KAAAC,EAAAD,EAAAE,EAAAH,GAAA,QAAAI,KAAAJ,EAAA,YAAAI,GAAA,SAAAC,GAAAJ,EAAAK,EAAAR,EAAAO,EAAA,kBAAAL,EAAAK,KAAA,CAAAD,GAAA,IAAAG,EAAAN,EAAA,MAGA,IASAO,EAZA,SAAAC,GACER,EAAQ,OAgBVS,EAdyBT,EAAQ,GAcjCU,CACET,EAAAU,EACAL,EAAA,GATF,EAWAC,EAPA,KAEA,MAUeV,EAAA,QAAAY,EAAiB,8BCvBhC,IAAAG,EAAcZ,EAAQ,MACtB,iBAAAY,QAA4CC,EAAAC,EAASF,EAAA,MACrDA,EAAAG,SAAAF,EAAAG,QAAAJ,EAAAG,QAEaf,EAAQ,GAARA,CAAwH,WAAAY,GAAA,6BCPrIC,EAAAG,QAA2BhB,EAAQ,GAARA,EAAkF,IAK7GiB,MAAcJ,EAAAC,EAAS,mGAAmG,wCCL1H,IAEAI,GAAiBC,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,kBAA4BF,EAAA,OAAYG,OAAOC,IAAM3B,EAAQ,MAAkB4B,IAAA,MAA/JP,KAA2KQ,GAAA,KAAAN,EAAA,KAA3KF,KAA2KQ,GAA3KR,KAA2KS,GAA3KT,KAA2KU,GAAA,oBAEpLC,oBACFnC,EAAA,0BCHfgB,EAAAG,QAAiBhB,EAAAiC,EAAuB,2HCkCxCC,EAAAlC,EAAA,SACAA,EAAA,OACAmC,EAAAnC,EAAA,SACAA,EAAA,MACAoC,EAAApC,EAAA,KACAqC,EAAArC,EAAA,KACAsC,EAAAtC,EAAA,SACAA,EAAA,UACAA,EAAA,UACAA,EAAA,UACAA,EAAA,UACAA,EAAA,yDAEA,IAAAuC,OAAA,aAGAC,KAAA,eACAC,KAFA,WAGA,OACAD,KAAA,GACAE,UAAA,EACAC,WAAA,EACAC,YAAAT,EAAAS,YACAC,aAAA,EACAC,KAAA,SACAC,QAAA,EACAC,KAAA,KACAC,IAAA,KAGAC,SACAC,QAAAxD,OAAAyD,WACA,EAAAlB,EAAAmB,YAAA,kDACAC,IAFA,WAGAjC,KAAAkC,QAAAtC,MAAAuB,KAAA,UAEAgB,cALA,YAMA,EAAAnB,EAAAoB,cAAA,kCACAC,GAAArC,KAAAsC,OAAAC,OAAAF,MAGAG,kBAVA,WAUA,IAAAC,EAAAzC,KACAA,KAAAsB,WAAA,EACAtB,KAAA0B,QAAA,EACA1B,KAAA4B,IAAA,GACA5B,KAAA0C,iBAAA1C,KAAA2C,UAAAC,KAAA,SAAAC,GACAJ,EAAAtB,KAAA0B,EAAAzB,KAAA0B,MAAAC,MAAA,QACAF,EAAAzB,MAGAqB,EAAAf,QAAA,EACAe,EAAAO,iBAAAC,SAAAJ,EAAAzB,KAAA7B,SAGA2B,EAAAgC,YAAA,MACAT,EAAAf,QAAA,GAGAyB,WAAA,WACAC,EAAA,sBAAAC,UAAA,IAAAC,WAAA,IACA,MAZAb,EAAAf,QAAA,EAcAe,EAAAnB,WAAA,IACAiC,MAAA,SAAAC,GACAf,EAAAb,IAAA4B,EAAA5B,KAAA,QACAa,EAAAgB,SAAAC,MAAAF,EAAA5B,KAAA,IAEAa,EAAAnB,WAAA,KAMAqC,MAAAC,EAAAC,QAAAC,SAAA,WACA9D,KAAAwB,aAAAxB,KAAAwB,aAAA,EAEAxB,KAAA+D,aAEA/D,KAAAwC,qBACA,KACAwB,SAAA,EACAC,UAAA,IAKAC,QAAAN,EAAAC,QAAAC,SAAA,WACA9D,KAAAwB,aAAAxB,KAAAwB,aAAA,EAEAxB,KAAA+D,aAEA/D,KAAAwC,qBACA,KACAwB,SAAA,EACAC,UAAA,IAKAF,WApEA,WAqEA7C,EAAA,KACAkC,EAAA,eAAAe,UAKAnB,eA3EA,WA2EA,IAAAoB,EAAApE,KACAqE,EAAAjB,EAAA,cAAAkB,SAAA,IA2BA,OAzBApD,GAAA,EAAAqD,EAAAV,SAAA,uBACApC,KAAAzB,KAAAyB,QAGA+C,QAAAC,QAAAC,MAAAJ,OAAAD,EAAA,KAEArE,KAAA2E,OAAA,SAAAC,GAAA,IAAAC,EAAAD,EAAAC,IACAxB,EAAAwB,EAAAxB,UACAyB,EAAAD,EAAAP,OAGAjB,EAAAgB,EAAAS,GACAV,EAAA1C,QACA0C,EAAAF,UAIAb,EAAA,GACAe,EAAA5C,aAAA,GACA4C,EAAAT,SAKAzC,EAAA6D,GAAA,SAAA/E,KAAA2E,QACAzD,KAGA8D,SAEAC,QA5HA,WA6HA,IAAAC,EAAAtB,EAAAC,QAAAd,MAAAoC,EAAAtB,QAAAuB,QAAA,eACAC,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GACAzF,EAAA4F,EAAAE,YAAA,KACAjG,EAAA+F,EAAAG,UAAA/F,EAAA4F,EAAAI,QACAzF,KAAAyB,KAAAV,EAAA2E,cAAApG,GACAU,KAAA2B,MAAA,EAAAV,EAAA0E,aAAAC,SAAAN,IACAtF,KAAAqB,SAAAuC,EAAAC,QAAAgC,SAAA7F,KAAAuB,YAAAqC,EAAAC,QAAAiC,UAAAxG,EAAA,OAEAyG,QAtIA,WAuIA/F,KAAAqB,UAEArB,KAAAwC,qBAGAwD,UA5IA,WA6IA9E,IACAA,EAAA+E,aACA/E,EAAAgF,IAAA9C,EAAA,iCAAApD,KAAA2E,UAGAwB,UACAxD,SADA,WAEA,OACAN,GAAArC,KAAAsC,OAAAC,OAAAF,GACA+D,YAAAR,SAAA,IAAA5F,KAAAwB,aAAAxB,KAAAwB,aAAA,UACA6E,MAAAT,UAAA5F,KAAAwB,aAAAxB,KAAAwB,aAAA,eAIA8E,YAAAC,kBAAAC,EAAA3C,QAAA4C,QAAAC,EAAA7C,QAAA8C,MAAAC,EAAA/C,QAAAgD,eAAAC,EAAAjD,QAAAkD,QAAAC,EAAAnD,gCCzMA,IAAAtE,EAAcZ,EAAQ,MACtB,iBAAAY,QAA4CC,EAAAC,EAASF,EAAA,MACrDA,EAAAG,SAAAF,EAAAG,QAAAJ,EAAAG,QAEaf,EAAQ,GAARA,CAAqH,WAAAY,GAAA,6BCPlIC,EAAAG,QAA2BhB,EAAQ,GAARA,EAA+E,IAK1GiB,MAAcJ,EAAAC,EAAS,ifAAif,wCCLxgB,IAEAI,GAAiBC,OAFjB,WAA0B,IAAAmH,EAAAjH,KAAaD,EAAAkH,EAAAhH,eAA0BC,EAAA+G,EAAA9G,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,uCAAiDF,EAAA,oBAAyBG,OAAO6G,KAAA,cAAmBD,EAAAzG,GAAA,KAAAN,EAAA,uBAAwCG,OAAO8G,MAAAF,EAAAvG,GAAA,WAAwBR,EAAA,OAAYkH,aAAaC,OAAA,QAAgBhH,OAAQiH,KAAA,WAAiBA,KAAA,YAAgBpH,EAAA,OAAYE,YAAA,yBAAmCF,EAAA,MAAAA,EAAA,QAAA+G,EAAAzG,GAAAyG,EAAAxG,GAAAwG,EAAA9F,SAAA8F,EAAAzG,GAAA,KAAAN,EAAA,OAAuEE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,WAAAC,OAA8BkH,iBAAA,OAAAC,cAAA,UAAAL,MAAAF,EAAAvG,GAAA,SAAuEqE,IAAK0C,MAAAR,EAAA9E,iBAA2B8E,EAAAzG,GAAA,OAAAyG,EAAAzG,GAAA,KAAAN,EAAA,MAAA+G,EAAAzG,GAAAyG,EAAAxG,GAAAwG,EAAAtF,aAAAsF,EAAAzG,GAAA,KAAAyG,EAAA,UAAAA,EAAArF,IAAsOqF,EAAAS,KAAtOxH,EAAA,OAAqHE,YAAA,sBAAgCF,EAAA,YAAiBG,OAAOgC,GAAA,sBAAAlB,KAAA,2BAAyD8F,EAAAzG,GAAA,KAAAyG,EAAA,IAAA/G,EAAA,aAAmDG,OAAOuB,IAAAqF,EAAArF,OAAeqF,EAAAS,MAAAT,EAAAS,KAAAT,EAAAzG,GAAA,KAAAyG,EAAA5F,SAAA4F,EAAAS,MAAAxH,EAAA,kBAAA+G,EAAAzG,GAAA,KAAAN,EAAA,UAAyGG,OAAOsH,UAAAV,EAAA3F,cAAyB,UAEtiCX,oBACFnC,EAAA,sCCHfF,OAAAC,eAAAC,EAAA,cAAAC,OAAA,QAAAmJ,EAAAjJ,EAAA,MAAAkJ,EAAAlJ,EAAAE,EAAA+I,GAAA,QAAA9I,KAAA8I,EAAA,YAAA9I,GAAA,SAAAC,GAAAJ,EAAAK,EAAAR,EAAAO,EAAA,kBAAA6I,EAAA7I,KAAA,CAAAD,GAAA,IAAAgJ,EAAAnJ,EAAA,MAGA,IASAO,EAZA,SAAAC,GACER,EAAQ,OAgBVS,EAdyBT,EAAQ,GAcjCU,CACEwI,EAAAvI,EACAwI,EAAA,GATF,EAWA5I,EAPA,KAEA,MAUeV,EAAA,QAAAY,EAAiB,qECdhC+B,KAAA,OACAC,KAFA,WAGA,UAEAS,OACAkG,QACAb,KAAAc,QACAnE,SAAA,GAEAoE,QACAf,KAAAc,QACAnE,SAAA,kECNA1C,KAAA,oBACAC,KAFA,WAGA,UAEAS,OACAsF,MAAAe,yHCkBA/G,KAAA,iBACAC,KAFA,WAGA,OACA+G,UAAA,EAAAC,EAAAvE,SAAA7D,KAAAkH,MACAmB,MAAA,EACAhG,GAAArC,KAAAsC,OAAAC,OAAAF,GACAiG,WAAA,IAGAzG,OACAqF,KAAAgB,OACAK,UAAAL,QAEAlD,OACAsD,UADA,SACAE,GACA,IAAAC,EAAArF,EAAA,oBACAoF,EAAAC,EAAAC,SAAA,UAAAD,EAAAE,YAAA,YAGA7G,SACA8G,eADA,SACAC,GACAA,EAAAC,QAAAD,EAAAC,QAEAC,YAJA,WAKA/I,KAAAsI,WAAAtI,KAAAsI,YAGAvC,QA5BA,2EC3BA5E,KAAA,UACAU,OACAD,IAAAsG,8BCLA,IAAAc,IAIC,WAAqB,aAItB,IAAAC,EAAAC,UAAAD,UACAE,EAAAD,UAAAC,SAEAC,EAAA,aAAAC,KAAAJ,GACAK,EAAA,UAAAD,KAAAJ,GACAM,EAAA,wCAAyCC,KAAAP,GACzCQ,EAAA,cAAAD,KAAAP,GACAS,EAAAJ,GAAAC,GAAAE,EACAE,EAAAD,IAAAJ,EAAAM,SAAAC,cAAA,IAAAJ,GAAAF,GAAA,IACAO,GAAAL,GAAA,WAAAJ,KAAAJ,GACAc,EAAAD,GAAA,eAAAT,KAAAJ,GACAe,GAAAP,GAAA,WAAAJ,KAAAJ,GACAgB,EAAA,UAAAZ,KAAAJ,GACAiB,EAAA,iBAAAb,KAAAH,UAAAiB,QACAC,EAAA,+BAAAf,KAAAJ,GACAoB,EAAA,YAAAhB,KAAAJ,GAEAqB,GAAAb,GAAA,cAAAJ,KAAAJ,IAAA,cAAAI,KAAAJ,GACAsB,EAAA,UAAAlB,KAAAJ,GAEAuB,EAAAF,GAAAC,GAAA,mDAAAlB,KAAAJ,GACAwB,EAAAH,GAAA,MAAAjB,KAAAF,GACAuB,EAAA,WAAArB,KAAAJ,GACA0B,EAAA,OAAAtB,KAAAF,GAEAyB,EAAAX,GAAAhB,EAAA4B,MAAA,uBACAD,IAAuBA,EAAAE,OAAAF,EAAA,KACvBA,MAAA,KAA+CX,GAAA,EAAgBH,GAAA,GAE/D,IAAAiB,EAAAN,IAAAV,GAAAE,IAAA,MAAAW,KAAA,QACAI,EAAA5B,GAAAM,GAAAC,GAAA,EAEA,SAAAsB,EAAAC,GAA2B,WAAAC,OAAA,UAAAD,EAAA,iBAE3B,IAkCAE,EAlCAC,EAAA,SAAAC,EAAAJ,GACA,IAAAK,EAAAD,EAAA/C,UACAsC,EAAAI,EAAAC,GAAA1B,KAAA+B,GACA,GAAAV,EAAA,CACA,IAAAW,EAAAD,EAAAE,MAAAZ,EAAAxC,MAAAwC,EAAA,GAAApF,QACA6F,EAAA/C,UAAAgD,EAAAE,MAAA,EAAAZ,EAAAxC,QAAAmD,EAAAX,EAAA,GAAAW,EAAA,MAIA,SAAAE,EAAAlI,GACA,QAAAmI,EAAAnI,EAAAoI,WAAAnG,OAAyCkG,EAAA,IAAWA,EAC7CnI,EAAAqI,YAAArI,EAAAsI,YACP,OAAAtI,EAGA,SAAAuI,EAAAC,EAAAxI,GACA,OAAAkI,EAAAM,GAAAC,YAAAzI,GAGA,SAAA0I,EAAAC,EAAA5M,EAAAgJ,EAAA7D,GACA,IAAAlB,EAAAoG,SAAAwC,cAAAD,GAGA,GAFA5D,IAAoB/E,EAAA+E,aACpB7D,IAAgBlB,EAAAkB,MAAA2H,QAAA3H,GAChB,iBAAAnF,EAAqCiE,EAAAyI,YAAArC,SAAA0C,eAAA/M,SACrC,GAAAA,EAAuB,QAAAE,EAAA,EAAgBA,EAAAF,EAAAkG,SAAoBhG,EAAO+D,EAAAyI,YAAA1M,EAAAE,IAClE,OAAA+D,EAGA,SAAA+I,EAAAJ,EAAA5M,EAAAgJ,EAAA7D,GACA,IAAAlB,EAAA0I,EAAAC,EAAA5M,EAAAgJ,EAAA7D,GAEA,OADAlB,EAAAgJ,aAAA,uBACAhJ,EAoBA,SAAAiJ,EAAAT,EAAAU,GAGA,GAFA,GAAAA,EAAAC,WACOD,IAAAE,YACPZ,EAAAS,SACO,OAAAT,EAAAS,SAAAC,GACP,GAEA,GADA,IAAAA,EAAAC,WAAiCD,IAAAG,MACjCH,GAAAV,EAA4B,eACvBU,IAAAE,YAGL,SAAAE,IAIA,IAAAC,EACA,IACAA,EAAAnD,SAAAmD,cACK,MAAAvJ,GACLuJ,EAAAnD,SAAAoD,MAAA,KAEA,KAAAD,KAAAE,YAAAF,EAAAE,WAAAF,eACOA,IAAAE,WAAAF,cACP,OAAAA,EAGA,SAAArE,EAAA4C,EAAAJ,GACA,IAAAK,EAAAD,EAAA/C,UACA0C,EAAAC,GAAA7B,KAAAkC,KAAwCD,EAAA/C,YAAAgD,EAAA,QAAAL,GAExC,SAAAgC,EAAA5N,EAAA6N,GAEA,IADA,IAAAC,EAAA9N,EAAAyD,MAAA,KACAtD,EAAA,EAAmBA,EAAA2N,EAAA3H,OAAehG,IAC3B2N,EAAA3N,KAAAwL,EAAAmC,EAAA3N,IAAA4J,KAAA8D,KAA0CA,GAAA,IAAAC,EAAA3N,IACjD,OAAA0N,EAlD6B/B,EAA7BxB,SAAAyD,YAA6B,SAAA/B,EAAAgC,EAAAC,EAAAC,GAC7B,IAAAC,EAAA7D,SAAAyD,cAGA,OAFAI,EAAAC,OAAAF,GAAAlC,EAAAiC,GACAE,EAAAE,SAAArC,EAAAgC,GACAG,GAEQ,SAAAnC,EAAAgC,EAAAC,GACR,IAAAE,EAAA7D,SAAAoD,KAAAY,kBACA,IAASH,EAAAI,kBAAAvC,EAAAsB,YACT,MAAApJ,GAAc,OAAAiK,EAId,OAHAA,EAAAK,UAAA,GACAL,EAAAM,QAAA,YAAAR,GACAE,EAAAO,UAAA,YAAAV,GACAG,GAwCA,IAAAQ,EAAA,SAAA3C,GAAoCA,EAAA4C,UAMpC,SAAAC,EAAAC,GACA,IAAAC,EAAAC,MAAAC,UAAA9C,MAAA+C,KAAAC,UAAA,GACA,kBAAsB,OAAAL,EAAAM,MAAA,KAAAL,IAGtB,SAAAM,EAAAC,EAAAC,EAAAC,GAEA,QAAAC,KADAF,IAAkBA,MAClBD,GACOA,EAAAI,eAAAD,KAAA,IAAAD,GAAAD,EAAAG,eAAAD,KACEF,EAAAE,GAAAH,EAAAG,IACT,OAAAF,EAKA,SAAAI,EAAAC,EAAA3B,EAAA4B,EAAAC,EAAAC,GACA,MAAA9B,IAEA,IADAA,EAAA2B,EAAAI,OAAA,kBACsB/B,EAAA2B,EAAAzJ,QAEtB,QAAAhG,EAAA2P,GAAA,EAAAvQ,EAAAwQ,GAAA,IAAuD,CACvD,IAAAE,EAAAL,EAAAM,QAAA,KAAA/P,GACA,GAAA8P,EAAA,GAAAA,GAAAhC,EACS,OAAA1O,GAAA0O,EAAA9N,GACTZ,GAAA0Q,EAAA9P,EACAZ,GAAAsQ,EAAAtQ,EAAAsQ,EACA1P,EAAA8P,EAAA,GA/BAjF,EACK2D,EAAA,SAAA3C,GAA+BA,EAAAmE,eAAA,EAAyBnE,EAAAoE,aAAApE,EAAA7M,MAAAgH,QAC7DiE,IACKuE,EAAA,SAAA3C,GAA+B,IAAMA,EAAA4C,SAAiB,MAAAxG,OAgC3D,IAAAiI,EAAA,WAA4B3P,KAAAqC,GAAA,MAM5B,SAAAmN,EAAAI,EAAA1D,GACA,QAAAzM,EAAA,EAAmBA,EAAAmQ,EAAAnK,SAAkBhG,EAC9B,GAAAmQ,EAAAnQ,IAAAyM,EAAuB,OAAAzM,EAC9B,SARAkQ,EAAApB,UAAAsB,IAAA,SAAAC,EAAA1B,GACA2B,aAAA/P,KAAAqC,IACArC,KAAAqC,GAAAc,WAAAiL,EAAA0B,IAUA,IAAAE,EAAA,GAIAC,GAAcC,SAAA,WAAqB,0BAGnCC,GAAwBxL,QAAA,GAAcyL,GAAeC,OAAA,UAAiBC,GAAcD,OAAA,SAIpF,SAAAE,EAAArB,EAAAsB,EAAArB,GACA,QAAAsB,EAAA,EAAAC,EAAA,IAA+B,CAC/B,IAAAnB,EAAAL,EAAAM,QAAA,KAAAiB,IACA,GAAAlB,IAA0BA,EAAAL,EAAAzJ,QAC1B,IAAAkL,EAAApB,EAAAkB,EACA,GAAAlB,GAAAL,EAAAzJ,QAAAiL,EAAAC,GAAAH,EACS,OAAAC,EAAAG,KAAAC,IAAAF,EAAAH,EAAAE,GAIT,GAHAA,GAAAnB,EAAAkB,EAEAA,EAAAlB,EAAA,GADAmB,GAAAvB,EAAAuB,EAAAvB,IAEAqB,EAAwB,OAAAC,GAIxB,IAAAK,GAAA,IACA,SAAAC,EAAAlS,GACA,KAAAiS,EAAArL,QAAA5G,GACOiS,EAAAlR,KAAAoR,EAAAF,GAAA,KACP,OAAAA,EAAAjS,GAGA,SAAAmS,EAAAC,GAAqB,OAAAA,IAAAxL,OAAA,GAErB,SAAAyL,EAAAtB,EAAAxB,GAEA,IADA,IAAA+C,KACA1R,EAAA,EAAmBA,EAAAmQ,EAAAnK,OAAkBhG,IAAO0R,EAAA1R,GAAA2O,EAAAwB,EAAAnQ,MAC5C,OAAA0R,EASA,SAAAC,KAEA,SAAAC,EAAAC,EAAAzP,GACA,IAAA0P,EAQA,OAPAjT,OAAAkT,OACAD,EAAAjT,OAAAkT,OAAAF,IAEAF,EAAA7C,UAAA+C,EACAC,EAAA,IAAAH,GAEAvP,GAAgB8M,EAAA9M,EAAA0P,GAChBA,EAGA,IAAAE,EAAA,4GACA,SAAAC,GAAAC,GACA,WAAAtI,KAAAsI,MAAA,MACAA,EAAAC,eAAAD,EAAAE,eAAAJ,EAAApI,KAAAsI,IAEA,SAAAG,GAAAH,EAAAI,GACA,OAAAA,KACAA,EAAAC,OAAAxC,QAAA,WAAAkC,GAAAC,KACAI,EAAA1I,KAAAsI,GAFkBD,GAAAC,GAKlB,SAAAM,GAAArD,GACA,QAAA/P,KAAA+P,EAAwB,GAAAA,EAAAI,eAAAnQ,IAAA+P,EAAA/P,GAAuC,SAC/D,SAQA,IAAAqT,GAAA,64DACA,SAAAC,GAAAR,GAAgC,OAAAA,EAAAS,WAAA,SAAAF,GAAA7I,KAAAsI,GAGhC,SAAAU,GAAAC,EAAA7B,EAAA8B,GACA,MAAAA,EAAA,EAAA9B,EAAA,EAAAA,EAAA6B,EAAA7M,SAAA0M,GAAAG,EAAAE,OAAA/B,KAAwFA,GAAA8B,EACxF,OAAA9B,EAMA,SAAAgC,GAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAL,EAAAI,EAAAC,GAAA,MACW,CACX,GAAAD,GAAAC,EAAuB,OAAAD,EACvB,IAAAE,GAAAF,EAAAC,GAAA,EAAAE,EAAAP,EAAA,EAAA3B,KAAAmC,KAAAF,GAAAjC,KAAAoC,MAAAH,GACA,GAAAC,GAAAH,EAAwB,OAAAD,EAAAI,GAAAH,EAAAC,EACxBF,EAAAI,GAAsBF,EAAAE,EACVH,EAAAG,EAAAP,GA4GZ,SAAAU,GAAApO,EAAAhG,GAEA,IADAA,GAAAgG,EAAAqO,OACA,GAAArU,GAAAgG,EAAAlD,KAAiC,UAAAwR,MAAA,qBAAAtU,EAAAgG,EAAAqO,OAAA,qBAEjC,IADA,IAAAE,EAAAvO,GACAuO,EAAAC,OACA,QAAA5T,EAAA,KAAsBA,EAAA,CACtB,IAAAiN,EAAA0G,EAAAE,SAAA7T,GAAA8T,EAAA7G,EAAA8G,YACA,GAAA3U,EAAA0U,EAAA,CAAqBH,EAAA1G,EAAe,MACpC7N,GAAA0U,EAGA,OAAAH,EAAAC,MAAAxU,GAKA,SAAA4U,GAAA5O,EAAAyI,EAAAC,GACA,IAAA4D,KAAAtS,EAAAyO,EAAAoG,KAQA,OAPA7O,EAAA8O,KAAArG,EAAAoG,KAAAnG,EAAAmG,KAAA,WAAAA,GACA,IAAAE,EAAAF,EAAAE,KACA/U,GAAA0O,EAAAmG,OAA0BE,IAAAnI,MAAA,EAAA8B,EAAAoE,KAC1B9S,GAAAyO,EAAAoG,OAA4BE,IAAAnI,MAAA6B,EAAAqE,KAC5BR,EAAAvR,KAAAgU,KACA/U,IAEAsS,EAGA,SAAA0C,GAAAhP,EAAA8N,EAAAC,GACA,IAAAzB,KAEA,OADAtM,EAAA8O,KAAAhB,EAAAC,EAAA,SAAAc,GAAwCvC,EAAAvR,KAAA8T,EAAAE,QACxCzC,EAKA,SAAA2C,GAAAJ,EAAApP,GACA,IAAAyP,EAAAzP,EAAAoP,EAAApP,OACA,GAAAyP,EAAe,QAAAlV,EAAA6U,EAAmB7U,EAAGA,IAAAmN,OAAgBnN,EAAAyF,QAAAyP,EAKrD,SAAAC,GAAAN,GACA,SAAAA,EAAA1H,OAA8B,YAE9B,IADA,IAAAiI,EAAAP,EAAA1H,OAAAkI,EAAA1E,EAAAyE,EAAAZ,MAAAK,GACAN,EAAAa,EAAAjI,OAAgCoH,EAAOa,EAAAb,MAAApH,OACvC,QAAAvM,EAAA,EACA2T,EAAAE,SAAA7T,IAAAwU,IADsBxU,EAEtByU,GAAAd,EAAAE,SAAA7T,GAAA+T,YAGA,OAAAU,EAAAD,EAAAf,MAKA,SAAAiB,GAAAf,EAAA/O,GACA,IAAAxF,EAAAuU,EAAAF,MACAkB,EAAA,GACA,QAAAC,EAAA,EAAuBA,EAAAjB,EAAAE,SAAA7N,SAA6B4O,EAAA,CACpD,IAAA3H,EAAA0G,EAAAE,SAAAe,GAAA1C,EAAAjF,EAAApI,OACA,GAAAD,EAAAsN,EAAA,CAAqByB,EAAA1G,EAAe,SAAA0H,EACpC/P,GAAAsN,EACA9S,GAAA6N,EAAA8G,YAEA,OAAA3U,SACKuU,EAAAC,OAEL,IADA,IAAA5T,EAAA,EACUA,EAAA2T,EAAAC,MAAA5N,SAAwBhG,EAAA,CAClC,IAAA6U,EAAAlB,EAAAC,MAAA5T,GAAA6E,OACA,GAAAD,EAAAiQ,EAAmB,MACnBjQ,GAAAiQ,EAEA,OAAAzV,EAAAY,EAGA,SAAA8U,GAAA1P,EAAA2P,GAA2B,OAAAA,GAAA3P,EAAAqO,OAAAsB,EAAA3P,EAAAqO,MAAArO,EAAAlD,KAE3B,SAAA8S,GAAAC,EAAAjV,GACA,OAAAyI,OAAAwM,EAAAC,oBAAAlV,EAAAiV,EAAAE,kBAIA,SAAAC,GAAAnB,EAAA/B,EAAAmD,GAGA,QAFA,IAAAA,MAAA,QAEA9U,gBAAA6U,IAAiC,WAAAA,GAAAnB,EAAA/B,EAAAmD,GACjC9U,KAAA0T,OACA1T,KAAA2R,KACA3R,KAAA8U,SAKA,SAAAC,GAAAzV,EAAA6N,GAAsB,OAAA7N,EAAAoU,KAAAvG,EAAAuG,MAAApU,EAAAqS,GAAAxE,EAAAwE,GAEtB,SAAAqD,GAAA1V,EAAA6N,GAAiC,OAAA7N,EAAAwV,QAAA3H,EAAA2H,QAAA,GAAAC,GAAAzV,EAAA6N,GAEjC,SAAA8H,GAAAC,GAAuB,OAAAL,GAAAK,EAAAxB,KAAAwB,EAAAvD,IACvB,SAAAwD,GAAA7V,EAAA6N,GAAyB,OAAA4H,GAAAzV,EAAA6N,GAAA,EAAAA,EAAA7N,EACzB,SAAA8V,GAAA9V,EAAA6N,GAAyB,OAAA4H,GAAAzV,EAAA6N,GAAA,EAAA7N,EAAA6N,EAIzB,SAAAkI,GAAAxQ,EAAAhG,GAA6B,OAAA+R,KAAA0E,IAAAzQ,EAAAqO,MAAAtC,KAAAC,IAAAhS,EAAAgG,EAAAqO,MAAArO,EAAAlD,KAAA,IAC7B,SAAA4T,GAAA1Q,EAAA4L,GACA,GAAAA,EAAAiD,KAAA7O,EAAAqO,MAA+B,OAAA2B,GAAAhQ,EAAAqO,MAAA,GAC/B,IAAAsC,EAAA3Q,EAAAqO,MAAArO,EAAAlD,KAAA,EACA,OAAA8O,EAAAiD,KAAA8B,EAA0BX,GAAAW,EAAAvC,GAAApO,EAAA2Q,GAAA5B,KAAAnO,QAG1B,SAAAgL,EAAAgF,GACA,IAAA9D,EAAAlB,EAAAkB,GACA,aAAAA,KAAA8D,EAAqCZ,GAAApE,EAAAiD,KAAA+B,GACrC9D,EAAA,EAAsBkD,GAAApE,EAAAiD,KAAA,GACZjD,EANViF,CAAAjF,EAAAwC,GAAApO,EAAA4L,EAAAiD,MAAAE,KAAAnO,QAQA,SAAAkQ,GAAA9Q,EAAA+K,GAEA,IADA,IAAAuB,KACA1R,EAAA,EAAmBA,EAAAmQ,EAAAnK,OAAkBhG,IAAO0R,EAAA1R,GAAA8V,GAAA1Q,EAAA+K,EAAAnQ,IAC5C,OAAA0R,EAIA,IAAAyE,IAAA,EAAAC,IAAA,EAYA,SAAAC,GAAAC,EAAApD,EAAAC,GACA5S,KAAA+V,SACA/V,KAAA2S,OAAqB3S,KAAA4S,KAIrB,SAAAoD,GAAAC,EAAAF,GACA,GAAAE,EAAgB,QAAAxW,EAAA,EAAgBA,EAAAwW,EAAAxQ,SAAkBhG,EAAA,CAClD,IAAAyW,EAAAD,EAAAxW,GACA,GAAAyW,EAAAH,UAAkC,OAAAG,GAKlC,SAAAC,GAAAF,EAAAC,GAEA,IADA,IAAAzI,EACAhO,EAAA,EAAmBA,EAAAwW,EAAAxQ,SAAkBhG,EAC9BwW,EAAAxW,IAAAyW,IAAwBzI,WAAA7N,KAAAqW,EAAAxW,IAC/B,OAAAgO,EA4CA,SAAA2I,GAAAvR,EAAAwR,GACA,GAAAA,EAAAC,KAAsB,YACtB,IAAAC,EAAAhC,GAAA1P,EAAAwR,EAAA1D,KAAAe,OAAAT,GAAApO,EAAAwR,EAAA1D,KAAAe,MAAA8C,YACAC,EAAAlC,GAAA1P,EAAAwR,EAAAzD,GAAAc,OAAAT,GAAApO,EAAAwR,EAAAzD,GAAAc,MAAA8C,YACA,IAAAD,IAAAE,EAAgC,YAEhC,IAAAC,EAAAL,EAAA1D,KAAAhB,GAAAgF,EAAAN,EAAAzD,GAAAjB,GAAAiF,EAAA,GAAA7B,GAAAsB,EAAA1D,KAAA0D,EAAAzD,IAEAM,EAxCA,SAAA2D,EAAAH,EAAAE,GACA,IAAAE,EACA,GAAAD,EAAc,QAAApX,EAAA,EAAgBA,EAAAoX,EAAApR,SAAgBhG,EAAA,CAC9C,IAAAyW,EAAAW,EAAApX,GAAAsW,EAAAG,EAAAH,OAEA,GADA,MAAAG,EAAAvD,OAAAoD,EAAAgB,cAAAb,EAAAvD,MAAA+D,EAAAR,EAAAvD,KAAA+D,IACAR,EAAAvD,MAAA+D,GAAA,YAAAX,EAAA7O,QAAA0P,IAAAV,EAAAH,OAAAiB,YAAA,CACA,IAAAC,EAAA,MAAAf,EAAAtD,KAAAmD,EAAAmB,eAAAhB,EAAAtD,IAAA8D,EAAAR,EAAAtD,GAAA8D,IACSI,WAAAlX,KAAA,IAAAkW,GAAAC,EAAAG,EAAAvD,KAAAsE,EAAA,KAAAf,EAAAtD,MAGT,OAAAkE,EA8BAK,CAAAZ,EAAAG,EAAAE,GACApB,EA7BA,SAAAqB,EAAAF,EAAAC,GACA,IAAAE,EACA,GAAAD,EAAc,QAAApX,EAAA,EAAgBA,EAAAoX,EAAApR,SAAgBhG,EAAA,CAC9C,IAAAyW,EAAAW,EAAApX,GAAAsW,EAAAG,EAAAH,OAEA,GADA,MAAAG,EAAAtD,KAAAmD,EAAAmB,eAAAhB,EAAAtD,IAAA+D,EAAAT,EAAAtD,GAAA+D,IACAT,EAAAvD,MAAAgE,GAAA,YAAAZ,EAAA7O,QAAA0P,GAAAV,EAAAH,OAAAiB,YAAA,CACA,IAAAI,EAAA,MAAAlB,EAAAvD,OAAAoD,EAAAgB,cAAAb,EAAAvD,MAAAgE,EAAAT,EAAAvD,KAAAgE,IACSG,WAAAlX,KAAA,IAAAkW,GAAAC,EAAAqB,EAAA,KAAAlB,EAAAvD,KAAAgE,EACT,MAAAT,EAAAtD,GAAA,KAAAsD,EAAAtD,GAAA+D,KAGA,OAAAG,EAkBAO,CAAAZ,EAAAE,EAAAC,GAGAU,EAAA,GAAAjB,EAAAzC,KAAAnO,OAAA8R,EAAAvG,EAAAqF,EAAAzC,MAAAnO,QAAA6R,EAAAZ,EAAA,GACA,GAAAxD,EAEA,QAAAzT,EAAA,EAAqBA,EAAAyT,EAAAzN,SAAkBhG,EAAA,CACvC,IAAAyW,EAAAhD,EAAAzT,GACA,SAAAyW,EAAAtD,GAAA,CACA,IAAA4E,EAAAxB,GAAAR,EAAAU,EAAAH,QACAyB,EACAF,IAA8BpB,EAAAtD,GAAA,MAAA4E,EAAA5E,GAAA,KAAA4E,EAAA5E,GAAA2E,GADPrB,EAAAtD,GAAA8D,GAKvB,GAAAlB,EAEA,QAAAnB,EAAA,EAAuBA,EAAAmB,EAAA/P,SAAmB4O,EAAA,CAC1C,IAAAoD,EAAAjC,EAAAnB,GAEA,GADA,MAAAoD,EAAA7E,KAAgC6E,EAAA7E,IAAA2E,GAChC,MAAAE,EAAA9E,KACAqD,GAAA9C,EAAAuE,EAAA1B,UAEA0B,EAAA9E,KAAA4E,EACAD,IAA2BpE,WAAAtT,KAAA6X,SAG3BA,EAAA9E,MAAA4E,EACAD,IAAyBpE,WAAAtT,KAAA6X,GAKzBvE,IAAgBA,EAAAwE,GAAAxE,IAChBsC,MAAAtC,IAAgCsC,EAAAkC,GAAAlC,IAEhC,IAAAmC,GAAAzE,GACA,IAAAoE,EAAA,CAEA,IAAAM,EAAAC,EAAAxB,EAAAzC,KAAAnO,OAAA,EACA,GAAAoS,EAAA,GAAA3E,EACS,QAAA4E,EAAA,EAAkBA,EAAA5E,EAAAzN,SAAoBqS,EACpC,MAAA5E,EAAA4E,GAAAlF,KACEgF,WAAAhY,KAAA,IAAAkW,GAAA5C,EAAA4E,GAAA/B,OAAA,YACb,QAAAgC,EAAA,EAAuBA,EAAAF,IAAWE,EACzBJ,EAAA/X,KAAAgY,GACTD,EAAA/X,KAAA4V,GAEA,OAAAmC,EAKA,SAAAD,GAAAzB,GACA,QAAAxW,EAAA,EAAmBA,EAAAwW,EAAAxQ,SAAkBhG,EAAA,CACrC,IAAAyW,EAAAD,EAAAxW,GACA,MAAAyW,EAAAvD,MAAAuD,EAAAvD,MAAAuD,EAAAtD,KAAA,IAAAsD,EAAAH,OAAAiC,gBACS/B,EAAAgC,OAAAxY,IAAA,GAET,OAAAwW,EAAAxQ,OACAwQ,EADwB,KAkCxB,SAAAiC,GAAAxE,GACA,IAAAuC,EAAAvC,EAAA8C,YACA,GAAAP,EAAA,CACA,QAAAxW,EAAA,EAAmBA,EAAAwW,EAAAxQ,SAAkBhG,EAC9BwW,EAAAxW,GAAAsW,OAAAoC,WAAAzE,GACPA,EAAA8C,YAAA,MAEA,SAAA4B,GAAA1E,EAAAuC,GACA,GAAAA,EAAA,CACA,QAAAxW,EAAA,EAAmBA,EAAAwW,EAAAxQ,SAAkBhG,EAC9BwW,EAAAxW,GAAAsW,OAAAsC,WAAA3E,GACPA,EAAA8C,YAAAP,GAKA,SAAAqC,GAAAvC,GAA8B,OAAAA,EAAAgB,eAAA,IAC9B,SAAAwB,GAAAxC,GAA+B,OAAAA,EAAAmB,eAAA,IAK/B,SAAAsB,GAAAlZ,EAAA6N,GACA,IAAAsL,EAAAnZ,EAAA+T,MAAA5N,OAAA0H,EAAAkG,MAAA5N,OACA,MAAAgT,EAAuB,OAAAA,EACvB,IAAAC,EAAApZ,EAAAqZ,OAAAC,EAAAzL,EAAAwL,OACAE,EAAA9D,GAAA2D,EAAA/F,KAAAiG,EAAAjG,OAAA2F,GAAAhZ,GAAAgZ,GAAAnL,GACA,GAAA0L,EAAkB,OAAAA,EAClB,IAAAC,EAAA/D,GAAA2D,EAAA9F,GAAAgG,EAAAhG,KAAA2F,GAAAjZ,GAAAiZ,GAAApL,GACA,OAAA2L,GACA3L,EAAA9K,GAAA/C,EAAA+C,GAKA,SAAA0W,GAAArF,EAAApG,GACA,IAAAkK,EAAAwB,EAAAnD,IAAAnC,EAAA8C,YACA,GAAAwC,EAAc,QAAAC,OAAA,EAAAxZ,EAAA,EAA+BA,EAAAuZ,EAAAvT,SAAgBhG,GAC7DwZ,EAAAD,EAAAvZ,IACAsW,OAAAmD,WAAA,OAAA5L,EAAA2L,EAAAtG,KAAAsG,EAAArG,OACA4E,GAAAgB,GAAAhB,EAAAyB,EAAAlD,QAAA,KACSyB,EAAAyB,EAAAlD,QAET,OAAAyB,EAEA,SAAA2B,GAAAzF,GAAuC,OAAAqF,GAAArF,GAAA,GACvC,SAAA0F,GAAA1F,GAAqC,OAAAqF,GAAArF,GAAA,GAErC,SAAA2F,GAAA3F,EAAA/B,GACA,IAAA6F,EAAAwB,EAAAnD,IAAAnC,EAAA8C,YACA,GAAAwC,EAAc,QAAAvZ,EAAA,EAAgBA,EAAAuZ,EAAAvT,SAAgBhG,EAAA,CAC9C,IAAAwZ,EAAAD,EAAAvZ,GACAwZ,EAAAlD,OAAAmD,YAAA,MAAAD,EAAAtG,MAAAsG,EAAAtG,KAAAhB,KAAA,MAAAsH,EAAArG,IAAAqG,EAAArG,GAAAjB,MACA6F,GAAAgB,GAAAhB,EAAAyB,EAAAlD,QAAA,KAAsEyB,EAAAyB,EAAAlD,QAEtE,OAAAyB,EAMA,SAAA8B,GAAAzU,EAAA0U,EAAA5G,EAAAC,EAAAmD,GACA,IAAArC,EAAAT,GAAApO,EAAA0U,GACAP,EAAAnD,IAAAnC,EAAA8C,YACA,GAAAwC,EAAc,QAAAvZ,EAAA,EAAgBA,EAAAuZ,EAAAvT,SAAgBhG,EAAA,CAC9C,IAAAwZ,EAAAD,EAAAvZ,GACA,GAAAwZ,EAAAlD,OAAAmD,UAAA,CACA,IAAA1B,EAAAyB,EAAAlD,OAAA4C,KAAA,GACAE,EAAA9D,GAAAyC,EAAA7E,SAAA2F,GAAAW,EAAAlD,QAAAuC,GAAAvC,GACA+C,EAAA/D,GAAAyC,EAAA5E,OAAA2F,GAAAU,EAAAlD,QAAAwC,GAAAxC,GACA,KAAA8C,GAAA,GAAAC,GAAA,GAAAD,GAAA,GAAAC,GAAA,KACAD,GAAA,IAAAI,EAAAlD,OAAAmB,gBAAAnB,EAAAgB,cAAAhC,GAAAyC,EAAA5E,GAAAD,IAAA,EAAAoC,GAAAyC,EAAA5E,GAAAD,GAAA,IACAkG,GAAA,IAAAI,EAAAlD,OAAAmB,gBAAAnB,EAAAgB,cAAAhC,GAAAyC,EAAA7E,KAAAC,IAAA,EAAAmC,GAAAyC,EAAA7E,KAAAC,GAAA,IACS,WAQT,SAAA4G,GAAA9F,GAEA,IADA,IAAA+F,EACAA,EAAAN,GAAAzF,IACOA,EAAA+F,EAAAd,MAAA,MAAAjF,KACP,OAAAA,EAuBA,SAAAgG,GAAA7U,EAAA8U,GACA,IAAAjG,EAAAT,GAAApO,EAAA8U,GAAAC,EAAAJ,GAAA9F,GACA,OAAAA,GAAAkG,EAAsBD,EACtB3F,GAAA4F,GAKA,SAAAC,GAAAhV,EAAA8U,GACA,GAAAA,EAAA9U,EAAAiV,WAAiC,OAAAH,EACjC,IAAAF,EAAA/F,EAAAT,GAAApO,EAAA8U,GACA,IAAAI,GAAAlV,EAAA6O,GAAmC,OAAAiG,EACnC,KAAAF,EAAAL,GAAA1F,IACOA,EAAA+F,EAAAd,KAAA,MAAAjF,KACP,OAAAM,GAAAN,GAAA,EAMA,SAAAqG,GAAAlV,EAAA6O,GACA,IAAAsF,EAAAnD,IAAAnC,EAAA8C,YACA,GAAAwC,EAAc,QAAAC,OAAA,EAAAxZ,EAAA,EAA+BA,EAAAuZ,EAAAvT,SAAgBhG,EAE7D,IADAwZ,EAAAD,EAAAvZ,IACAsW,OAAAmD,UAAA,CACA,SAAAD,EAAAtG,KAA4B,SAC5B,IAAAsG,EAAAlD,OAAAiE,YACA,GAAAf,EAAAtG,MAAAsG,EAAAlD,OAAAgB,eAAAkD,GAAApV,EAAA6O,EAAAuF,GACS,UAGT,SAAAgB,GAAApV,EAAA6O,EAAAwC,GACA,SAAAA,EAAAtD,GAAA,CACA,IAAArF,EAAA2I,EAAAH,OAAA4C,KAAA,MACA,OAAAsB,GAAApV,EAAA0I,EAAAmG,KAAAsC,GAAAzI,EAAAmG,KAAA8C,YAAAN,EAAAH,SAEA,GAAAG,EAAAH,OAAAmB,gBAAAhB,EAAAtD,IAAAc,EAAAE,KAAAnO,OACO,SACP,QAAAwT,OAAA,EAAAxZ,EAAA,EAAkCA,EAAAiU,EAAA8C,YAAA/Q,SAA6BhG,EAE/D,IADAwZ,EAAAvF,EAAA8C,YAAA/W,IACAsW,OAAAmD,YAAAD,EAAAlD,OAAAiE,YAAAf,EAAAtG,MAAAuD,EAAAtD,KACA,MAAAqG,EAAArG,IAAAqG,EAAArG,IAAAsD,EAAAvD,QACAsG,EAAAlD,OAAAgB,eAAAb,EAAAH,OAAAmB,iBACA+C,GAAApV,EAAA6O,EAAAuF,GAA6C,SAK7C,SAAAiB,GAAAC,GAIA,IADA,IAAA9V,EAAA,EAAA+O,GAFA+G,EAAAX,GAAAW,IAEAnO,OACAvM,EAAA,EAAmBA,EAAA2T,EAAAC,MAAA5N,SAAwBhG,EAAA,CAC3C,IAAAiU,EAAAN,EAAAC,MAAA5T,GACA,GAAAiU,GAAAyG,EAA4B,MAChB9V,GAAAqP,EAAApP,OAEZ,QAAA1D,EAAAwS,EAAApH,OAA8BpL,EAAGA,GAAAwS,EAAAxS,GAAAoL,OACjC,QAAAqI,EAAA,EAAuBA,EAAAzT,EAAA0S,SAAA7N,SAAyB4O,EAAA,CAChD,IAAAJ,EAAArT,EAAA0S,SAAAe,GACA,GAAAJ,GAAAb,EAA2B,MACb/O,GAAA4P,EAAA3P,OAGd,OAAAD,EAMA,SAAA+V,GAAA1G,GACA,MAAAA,EAAApP,OAA2B,SAE3B,IADA,IAAAmV,EAAAY,EAAA3G,EAAAE,KAAAnO,OAAAwO,EAAAP,EACA+F,EAAAN,GAAAlF,IAAA,CACA,IAAAuD,EAAAiC,EAAAd,KAAA,MACA1E,EAAAuD,EAAA7E,KAAAe,KACA2G,GAAA7C,EAAA7E,KAAAhB,GAAA6F,EAAA5E,GAAAjB,GAGA,IADAsC,EAAAP,EACA+F,EAAAL,GAAAnF,IAAA,CACA,IAAAqG,EAAAb,EAAAd,KAAA,MACA0B,GAAApG,EAAAL,KAAAnO,OAAA6U,EAAA3H,KAAAhB,GAEA0I,IADApG,EAAAqG,EAAA1H,GAAAc,MACAE,KAAAnO,OAAA6U,EAAA1H,GAAAjB,GAEA,OAAA0I,EAIA,SAAAE,GAAAC,GACA,IAAAxb,EAAAwb,EAAAhW,QAAAK,EAAA2V,EAAA3V,IACA7F,EAAAyb,QAAAxH,GAAApO,IAAAqO,OACAlU,EAAA0b,cAAAN,GAAApb,EAAAyb,SACAzb,EAAA2b,gBAAA,EACA9V,EAAA8O,KAAA,SAAAD,GACA,IAAA2G,EAAAD,GAAA1G,GACA2G,EAAArb,EAAA0b,gBACA1b,EAAA0b,cAAAL,EACArb,EAAAyb,QAAA/G,KAoBA,IAAAkH,GAAA,KACA,SAAAC,GAAAC,EAAAnJ,EAAAmD,GACA,IAAA0C,EACAoD,GAAA,KACA,QAAAnb,EAAA,EAAmBA,EAAAqb,EAAArV,SAAkBhG,EAAA,CACrC,IAAAwU,EAAA6G,EAAArb,GACA,GAAAwU,EAAAtB,KAAAhB,GAAAsC,EAAArB,GAAAjB,EAAyC,OAAAlS,EACzCwU,EAAArB,IAAAjB,IACAsC,EAAAtB,MAAAsB,EAAArB,IAAA,UAAAkC,EAAuD0C,EAAA/X,EACzCmb,GAAAnb,GAEdwU,EAAAtB,MAAAhB,IACAsC,EAAAtB,MAAAsB,EAAArB,IAAA,UAAAkC,EAAuD0C,EAAA/X,EACzCmb,GAAAnb,GAGd,aAAA+X,IAAAoD,GA0BA,IAAAG,GAAA,WAEA,IAAAC,EAAA,2PAEAC,EAAA,6PAWA,IAAAC,EAAA,4CACAC,EAAA,SAAAC,EAAA,QAAAC,EAAA,SAAAC,EAAA,OAEA,SAAAC,EAAAC,EAAA7I,EAAAC,GACA5S,KAAAwb,QACAxb,KAAA2S,OAAuB3S,KAAA4S,KAGvB,gBAAAN,EAAAmJ,GACA,IAAAC,EAAA,OAAAD,EAAA,QAEA,MAAAnJ,EAAA7M,QAAA,OAAAgW,IAAAP,EAAA7R,KAAAiJ,GAAuE,SAEvE,IADA,IAtBAqJ,EAsBAtB,EAAA/H,EAAA7M,OAAAmW,KACAnc,EAAA,EAAqBA,EAAA4a,IAAS5a,EACrBmc,EAAAhc,MAxBT+b,EAwBSrJ,EAAAF,WAAA3S,KAvBT,IAAyBub,EAAAxI,OAAAmJ,GACzB,MAAAA,MAAA,KAAgD,IAChD,MAAAA,MAAA,KAAgDV,EAAAzI,OAAAmJ,EAAA,MAChD,MAAAA,MAAA,KAAgD,IAChD,MAAAA,MAAA,KAAkD,IAClD,MAAAA,EAAgC,IACpB,KAuBZ,QAAAtH,EAAA,EAAAwH,EAAAH,EAAyCrH,EAAAgG,IAAWhG,EAAA,CACpD,IAAAnN,EAAA0U,EAAAvH,GACA,KAAAnN,EAA0B0U,EAAAvH,GAAAwH,EACZA,EAAA3U,EAQd,QAAA4Q,EAAA,EAAA7D,EAAAyH,EAAwC5D,EAAAuC,IAAWvC,EAAA,CACnD,IAAAgE,EAAAF,EAAA9D,GACA,KAAAgE,GAAA,KAAA7H,EAA0C2H,EAAA9D,GAAA,IAC1CsD,EAAA/R,KAAAyS,KAAyC7H,EAAA6H,EAAc,KAAAA,IAAqBF,EAAA9D,GAAA,MAM5E,QAAAC,EAAA,EAAAgE,EAAAH,EAAA,GAA0C7D,EAAAsC,EAAA,IAAetC,EAAA,CACzD,IAAAiE,EAAAJ,EAAA7D,GACA,KAAAiE,GAAA,KAAAD,GAAA,KAAAH,EAAA7D,EAAA,GAAoE6D,EAAA7D,GAAA,IACpE,KAAAiE,GAAAD,GAAAH,EAAA7D,EAAA,IACA,KAAAgE,GAAA,KAAAA,IAAoDH,EAAA7D,GAAAgE,GACpDA,EAAAC,EAOA,QAAAC,EAAA,EAAuBA,EAAA5B,IAAW4B,EAAA,CAClC,IAAAC,EAAAN,EAAAK,GACA,QAAAC,EAA4BN,EAAAK,GAAA,SAC5B,QAAAC,EAAA,CACA,IAAA3O,OAAA,EACA,IAAAA,EAAA0O,EAAA,EAA6B1O,EAAA8M,GAAA,KAAAuB,EAAArO,KAAgCA,GAE7D,IADA,IAAA4O,EAAAF,GAAA,KAAAL,EAAAK,EAAA,IAAA1O,EAAA8M,GAAA,KAAAuB,EAAArO,GAAA,QACA6O,EAAAH,EAA2BG,EAAA7O,IAAS6O,EAAOR,EAAAQ,GAAAD,EAC3CF,EAAA1O,EAAA,GAOA,QAAA8O,EAAA,EAAAC,EAAAZ,EAA0CW,EAAAhC,IAAWgC,EAAA,CACrD,IAAAE,EAAAX,EAAAS,GACA,KAAAC,GAAA,KAAAC,EAA4CX,EAAAS,GAAA,IAC5CjB,EAAA/R,KAAAkT,KAAyCD,EAAAC,GASzC,QAAAC,EAAA,EAAuBA,EAAAnC,IAAWmC,EAClC,GAAArB,EAAA9R,KAAAuS,EAAAY,IAAA,CACA,IAAAC,OAAA,EACA,IAAAA,EAAAD,EAAA,EAA+BC,EAAApC,GAAAc,EAAA9R,KAAAuS,EAAAa,MAA6CA,GAI5E,IAHA,IAAAC,EAAA,MAAAF,EAAAZ,EAAAY,EAAA,GAAAd,GAEAiB,EAAAD,IADA,MAAAD,EAAApC,EAAAuB,EAAAa,GAAAf,IACAgB,EAAA,QAAAhB,EACAkB,EAAAJ,EAA6BI,EAAAH,IAAaG,EAAShB,EAAAgB,GAAAD,EACnDH,EAAAC,EAAA,EAUA,IADA,IAAAI,EAAA/B,KACAgC,EAAA,EAAuBA,EAAAzC,GACvB,GAAAgB,EAAAhS,KAAAuS,EAAAkB,IAAA,CACA,IAAAxP,EAAAwP,EACA,MAAAA,EAAqBA,EAAAzC,GAAAgB,EAAAhS,KAAAuS,EAAAkB,MAA4CA,GACjEhC,EAAAlb,KAAA,IAAA2b,EAAA,EAAAjO,EAAAwP,QACS,CACT,IAAArM,EAAAqM,EAAAC,EAAAjC,EAAArV,OACA,MAAAqX,EAAqBA,EAAAzC,GAAA,KAAAuB,EAAAkB,KAAgCA,GACrD,QAAAE,EAAAvM,EAA6BuM,EAAAF,GAC7B,GAAAxB,EAAAjS,KAAAuS,EAAAoB,IAAA,CACAvM,EAAAuM,GAA8BlC,EAAA7C,OAAA8E,EAAA,MAAAxB,EAAA,EAAA9K,EAAAuM,IAC9B,IAAAC,EAAAD,EACA,MAAAA,EAAyBA,EAAAF,GAAAxB,EAAAjS,KAAAuS,EAAAoB,MAA2CA,GACpElC,EAAA7C,OAAA8E,EAAA,MAAAxB,EAAA,EAAA0B,EAAAD,IACAvM,EAAAuM,QACoBA,EAEpBvM,EAAAqM,GAA0BhC,EAAA7C,OAAA8E,EAAA,MAAAxB,EAAA,EAAA9K,EAAAqM,IAc1B,MAXA,OAAArB,IACA,GAAAX,EAAA,GAAAU,QAAAqB,EAAAvK,EAAAzH,MAAA,WACAiQ,EAAA,GAAAnI,KAAAkK,EAAA,GAAApX,OACAqV,EAAAoC,QAAA,IAAA3B,EAAA,IAAAsB,EAAA,GAAApX,UAEA,GAAAuL,EAAA8J,GAAAU,QAAAqB,EAAAvK,EAAAzH,MAAA,WACAmG,EAAA8J,GAAAlI,IAAAiK,EAAA,GAAApX,OACAqV,EAAAlb,KAAA,IAAA2b,EAAA,EAAAlB,EAAAwC,EAAA,GAAApX,OAAA4U,MAIA,OAAAoB,EAAAX,EAAAqC,UAAArC,GA/IA,GAsJA,SAAAsC,GAAA1J,EAAA+H,GACA,IAAAX,EAAApH,EAAAoH,MAEA,OADA,MAAAA,IAAwBA,EAAApH,EAAAoH,MAAAC,GAAArH,EAAAE,KAAA6H,IACxBX,EAQA,IAAAuC,MAEAtY,GAAA,SAAAuY,EAAApW,EAAAkH,GACA,GAAAkP,EAAAC,iBACAD,EAAAC,iBAAArW,EAAAkH,GAAA,QACK,GAAAkP,EAAAE,YACLF,EAAAE,YAAA,KAAAtW,EAAAkH,OACK,CACL,IAAAqP,EAAAH,EAAAI,YAAAJ,EAAAI,cACAD,EAAAvW,IAAAuW,EAAAvW,IAAAmW,IAAAM,OAAAvP,KAIA,SAAAwP,GAAAN,EAAApW,GACA,OAAAoW,EAAAI,WAAAJ,EAAAI,UAAAxW,IAAAmW,GAGA,SAAAnX,GAAAoX,EAAApW,EAAAkH,GACA,GAAAkP,EAAAO,oBACAP,EAAAO,oBAAA3W,EAAAkH,GAAA,QACK,GAAAkP,EAAAQ,YACLR,EAAAQ,YAAA,KAAA5W,EAAAkH,OACK,CACL,IAAAqP,EAAAH,EAAAI,UAAAzM,EAAAwM,KAAAvW,GACA,GAAA+J,EAAA,CACA,IAAA5I,EAAAmH,EAAAyB,EAAA7C,GACA/F,GAAA,IACWoV,EAAAvW,GAAA+J,EAAAxF,MAAA,EAAApD,GAAAsV,OAAA1M,EAAAxF,MAAApD,EAAA,OAKX,SAAA0V,GAAAT,EAAApW,GACA,IAAA8W,EAAAJ,GAAAN,EAAApW,GACA,GAAA8W,EAAAvY,OAEA,IADA,IAAA4I,EAAAC,MAAAC,UAAA9C,MAAA+C,KAAAC,UAAA,GACAhP,EAAA,EAAmBA,EAAAue,EAAAvY,SAAqBhG,EAAOue,EAAAve,GAAAiP,MAAA,KAAAL,GAM/C,SAAA4P,GAAAzD,EAAAhX,EAAA0a,GAIA,MAHA,iBAAA1a,IACOA,GAAM0D,KAAA1D,EAAA2a,eAAA,WAAqCne,KAAAoe,kBAAA,KAClDL,GAAAvD,EAAA0D,GAAA1a,EAAA0D,KAAAsT,EAAAhX,GACA6a,GAAA7a,MAAA8a,iBAGA,SAAAC,GAAA/D,GACA,IAAAvJ,EAAAuJ,EAAAkD,WAAAlD,EAAAkD,UAAAc,eACA,GAAAvN,EAEA,IADA,IAAApB,EAAA2K,EAAAiE,MAAAC,yBAAAlE,EAAAiE,MAAAC,2BACAjf,EAAA,EAAmBA,EAAAwR,EAAAxL,SAAgBhG,GAAO,GAAA+P,EAAAK,EAAAoB,EAAAxR,KACnCoQ,EAAAjQ,KAAAqR,EAAAxR,IAGP,SAAAkf,GAAArB,EAAApW,GACA,OAAA0W,GAAAN,EAAApW,GAAAzB,OAAA,EAKA,SAAAmZ,GAAAC,GACAA,EAAAtQ,UAAAxJ,GAAA,SAAAmC,EAAAkH,GAA2CrJ,GAAA/E,KAAAkH,EAAAkH,IAC3CyQ,EAAAtQ,UAAArI,IAAA,SAAAgB,EAAAkH,GAA4ClI,GAAAlG,KAAAkH,EAAAkH,IAM5C,SAAA0Q,GAAAtb,GACAA,EAAA2a,eAA2B3a,EAAA2a,iBACjB3a,EAAAub,aAAA,EAEV,SAAAC,GAAAxb,GACAA,EAAAyb,gBAA4Bzb,EAAAyb,kBAClBzb,EAAA0b,cAAA,EAEV,SAAAb,GAAA7a,GACA,aAAAA,EAAA4a,iBAAA5a,EAAA4a,iBAAA,GAAA5a,EAAAub,YAEA,SAAAI,GAAA3b,GAAsBsb,GAAAtb,GAAoBwb,GAAAxb,GAE1C,SAAA4b,GAAA5b,GAAwB,OAAAA,EAAAqL,QAAArL,EAAA6b,WACxB,SAAAC,GAAA9b,GACA,IAAA2J,EAAA3J,EAAA+b,MAOA,OANA,MAAApS,IACA,EAAA3J,EAAAgc,OAAyBrS,EAAA,EACzB,EAAA3J,EAAAgc,OAA8BrS,EAAA,EAC9B,EAAA3J,EAAAgc,SAA8BrS,EAAA,IAE9B1C,GAAAjH,EAAAic,SAAA,GAAAtS,IAAqCA,EAAA,GACrCA,EAIA,IAQAuS,GAeAC,GAvBAC,GAAA,WAGA,GAAAlW,GAAAC,EAAA,EAA+B,SAC/B,IAAAkW,EAAA3T,EAAA,OACA,oBAAA2T,GAAA,aAAAA,EALA,GASA,SAAAC,GAAAC,GACA,SAAAL,GAAA,CACA,IAAArW,EAAA6C,EAAA,YACAH,EAAAgU,EAAA7T,EAAA,QAAA7C,EAAAO,SAAA0C,eAAA,QACA,GAAAyT,EAAAjU,WAAAkU,eACSN,GAAArW,EAAA4W,aAAA,GAAA5W,EAAA2W,aAAA,KAAAtW,GAAAC,EAAA,IAET,IAAA2B,EAAAoU,GAAAxT,EAAA,YACAA,EAAA,yEAEA,OADAZ,EAAAkB,aAAA,cACAlB,EAKA,SAAA4U,GAAAH,GACA,SAAAJ,GAA+B,OAAAA,GAC/B,IAAAQ,EAAApU,EAAAgU,EAAAnW,SAAA0C,eAAA,QACA8T,EAAAhV,EAAA+U,EAAA,KAAAE,wBACAC,EAAAlV,EAAA+U,EAAA,KAAAE,wBAEA,OADA3U,EAAAqU,MACAK,KAAAG,MAAAH,EAAAI,SACAb,GAAAW,EAAAE,MAAAJ,EAAAI,MAAA,GAKA,IA8BAhd,GA9BAid,GAAA,WAAA1d,MAAA,MAAA0C,OAAA,SAAAyJ,GAEA,IADA,IAAAuB,EAAA,EAAAiQ,KAAAlM,EAAAtF,EAAAzJ,OACAgL,GAAA+D,GAAA,CACA,IAAAmM,EAAAzR,EAAAM,QAAA,KAAAiB,IACA,GAAAkQ,IAAqBA,EAAAzR,EAAAzJ,QACrB,IAAAiO,EAAAxE,EAAAzD,MAAAgF,EAAA,MAAAvB,EAAAsD,OAAAmO,EAAA,GAAAA,EAAA,EAAAA,GACAC,EAAAlN,EAAAlE,QAAA,OACA,GAAAoR,GACAF,EAAA9gB,KAAA8T,EAAAjI,MAAA,EAAAmV,IACAnQ,GAAAmQ,EAAA,IAEAF,EAAA9gB,KAAA8T,GACAjD,EAAAkQ,EAAA,GAGA,OAAAD,GACG,SAAAxR,GAAsB,OAAAA,EAAAnM,MAAA,aAEzB8d,GAAAC,OAAAC,aAAA,SAAAC,GACA,IAAS,OAAAA,EAAAvR,gBAAAuR,EAAAtR,aACT,MAAAlM,GAAc,WACX,SAAAwd,GACH,IAAAC,EACA,IAASA,EAAAD,EAAAE,cAAAC,UAAA9T,cACT,MAAA7J,IACA,SAAAyd,KAAAG,iBAAAJ,IACA,GAAAC,EAAAI,iBAAA,aAAAJ,IAGAK,GAEA,WADA9d,GAAA0I,EAAA,UAEA1I,GAAAgJ,aAAA,oBACA,mBAAAhJ,GAAA+d,QAGAC,GAAA,KAUA,IAAAC,MAAgBC,MAiBhB,SAAAC,GAAAC,GACA,oBAAAA,GAAAF,GAAA1S,eAAA4S,GACAA,EAAAF,GAAAE,QACK,GAAAA,GAAA,iBAAAA,EAAAzgB,MAAAugB,GAAA1S,eAAA4S,EAAAzgB,MAAA,CACL,IAAAqW,EAAAkK,GAAAE,EAAAzgB,MACA,iBAAAqW,IAAqCA,GAAUrW,KAAAqW,KAC/CoK,EAAAvQ,EAAAmG,EAAAoK,IACAzgB,KAAAqW,EAAArW,SACK,qBAAAygB,GAAA,0BAAAvY,KAAAuY,GACL,OAAAD,GAAA,mBACK,oBAAAC,GAAA,2BAAAvY,KAAAuY,GACL,OAAAD,GAAA,oBAEA,uBAAAC,GAA2CzgB,KAAAygB,GACjCA,IAAiBzgB,KAAA,QAK3B,SAAA0gB,GAAAnN,EAAAkN,GACAA,EAAAD,GAAAC,GACA,IAAAE,EAAAL,GAAAG,EAAAzgB,MACA,IAAA2gB,EAAoB,OAAAD,GAAAnN,EAAA,cACpB,IAAAqN,EAAAD,EAAApN,EAAAkN,GACA,GAAAI,GAAAhT,eAAA4S,EAAAzgB,MAAA,CACA,IAAA8gB,EAAAD,GAAAJ,EAAAzgB,MACA,QAAA4N,KAAAkT,EACAA,EAAAjT,eAAAD,KACAgT,EAAA/S,eAAAD,KAA2CgT,EAAA,IAAAhT,GAAAgT,EAAAhT,IAC3CgT,EAAAhT,GAAAkT,EAAAlT,IAKA,GAFAgT,EAAA5gB,KAAAygB,EAAAzgB,KACAygB,EAAAM,aAA0BH,EAAAG,WAAAN,EAAAM,YAC1BN,EAAAO,UAAyB,QAAAC,KAAAR,EAAAO,UAClBJ,EAAAK,GAAAR,EAAAO,UAAAC,GAEP,OAAAL,EAKA,IAAAC,MACA,SAAAK,GAAA5gB,EAAA6gB,GAEA3T,EAAA2T,EADAN,GAAAhT,eAAAvN,GAAAugB,GAAAvgB,GAAAugB,GAAAvgB,OAIA,SAAA8gB,GAAA9gB,EAAA+gB,GACA,QAAAA,EAAyB,OAAAA,EACzB,GAAA/gB,EAAA8gB,UAAyB,OAAA9gB,EAAA8gB,UAAAC,GACzB,IAAAC,KACA,QAAA5jB,KAAA2jB,EAAA,CACA,IAAAE,EAAAF,EAAA3jB,GACA6jB,aAAApU,QAAiCoU,IAAA/E,YACjC8E,EAAA5jB,GAAA6jB,EAEA,OAAAD,EAKA,SAAAE,GAAAlhB,EAAA+gB,GAEA,IADA,IAAAI,EACAnhB,EAAAkhB,YACAC,EAAAnhB,EAAAkhB,UAAAH,KACAI,EAAAnhB,SACA+gB,EAAAI,EAAAJ,MACA/gB,EAAAmhB,EAAAnhB,KAEA,OAAAmhB,IAAoBnhB,OAAA+gB,SAGpB,SAAAK,GAAAphB,EAAAqhB,EAAAC,GACA,OAAAthB,EAAAohB,YAAAphB,EAAAohB,WAAAC,EAAAC,GAQA,IAAAC,GAAA,SAAA9T,EAAAC,EAAA8T,GACAjjB,KAAAyQ,IAAAzQ,KAAAsN,MAAA,EACAtN,KAAAkP,SACAlP,KAAAmP,WAAA,EACAnP,KAAAkjB,cAAAljB,KAAAmjB,gBAAA,EACAnjB,KAAAojB,UAAA,EACApjB,KAAAijB,cAGAD,GAAAzU,UAAA8U,IAAA,WAA4C,OAAArjB,KAAAyQ,KAAAzQ,KAAAkP,OAAAzJ,QAC5Cud,GAAAzU,UAAA+U,IAAA,WAA4C,OAAAtjB,KAAAyQ,KAAAzQ,KAAAojB,WAC5CJ,GAAAzU,UAAAgV,KAAA,WAA6C,OAAAvjB,KAAAkP,OAAAsD,OAAAxS,KAAAyQ,WAAA+S,GAC7CR,GAAAzU,UAAAkV,KAAA,WACA,GAAAzjB,KAAAyQ,IAAAzQ,KAAAkP,OAAAzJ,OACO,OAAAzF,KAAAkP,OAAAsD,OAAAxS,KAAAyQ,QAEPuS,GAAAzU,UAAAmV,IAAA,SAAA7Y,GACA,IAAA8G,EAAA3R,KAAAkP,OAAAsD,OAAAxS,KAAAyQ,KAIA,GAFA,iBAAA5F,EAAmC8G,GAAA9G,EACzB8G,IAAA9G,EAAAxB,KAAAwB,EAAAxB,KAAAsI,GAAA9G,EAAA8G,IACc,QAAX3R,KAAAyQ,IAAWkB,GAExBqR,GAAAzU,UAAAoV,SAAA,SAAA9Y,GAEA,IADA,IAAAyC,EAAAtN,KAAAyQ,IACAzQ,KAAA0jB,IAAA7Y,KACA,OAAA7K,KAAAyQ,IAAAnD,GAEA0V,GAAAzU,UAAAqV,SAAA,WAIA,IAHA,IAEAtW,EAAAtN,KAAAyQ,IACA,aAAApH,KAAArJ,KAAAkP,OAAAsD,OAAAxS,KAAAyQ,SAHAzQ,KAG6DyQ,IAC7D,OAAAzQ,KAAAyQ,IAAAnD,GAEA0V,GAAAzU,UAAAsV,UAAA,WAAkD7jB,KAAAyQ,IAAAzQ,KAAAkP,OAAAzJ,QAClDud,GAAAzU,UAAAuV,OAAA,SAAAnS,GACA,IAAA6F,EAAAxX,KAAAkP,OAAAM,QAAAmC,EAAA3R,KAAAyQ,KACA,GAAA+G,GAAA,EAAsC,OAAjBxX,KAAAyQ,IAAA+G,GAAiB,GAEtCwL,GAAAzU,UAAAwV,OAAA,SAAAllB,GAAgDmB,KAAAyQ,KAAA5R,GAChDmkB,GAAAzU,UAAAyV,OAAA,WAKA,OAJAhkB,KAAAkjB,cAAAljB,KAAAsN,QACAtN,KAAAmjB,gBAAAlU,EAAAjP,KAAAkP,OAAAlP,KAAAsN,MAAAtN,KAAAmP,QAAAnP,KAAAkjB,cAAAljB,KAAAmjB,iBACAnjB,KAAAkjB,cAAAljB,KAAAsN,OAEAtN,KAAAmjB,iBAAAnjB,KAAAojB,UAAAnU,EAAAjP,KAAAkP,OAAAlP,KAAAojB,UAAApjB,KAAAmP,SAAA,IAEA6T,GAAAzU,UAAA0V,YAAA,WACA,OAAAhV,EAAAjP,KAAAkP,OAAA,KAAAlP,KAAAmP,UACAnP,KAAAojB,UAAAnU,EAAAjP,KAAAkP,OAAAlP,KAAAojB,UAAApjB,KAAAmP,SAAA,IAEA6T,GAAAzU,UAAA1D,MAAA,SAAAqZ,EAAAC,EAAAC,GACA,oBAAAF,EAOK,CACL,IAAArZ,EAAA7K,KAAAkP,OAAAzD,MAAAzL,KAAAyQ,KAAA5F,MAAAqZ,GACA,OAAArZ,KAAAxC,MAAA,EAAqC,MACrCwC,IAAA,IAAAsZ,IAAuCnkB,KAAAyQ,KAAA5F,EAAA,GAAApF,QACvCoF,GAVA,IAAAwZ,EAAA,SAAA/R,GAAkC,OAAA8R,EAAA9R,EAAAT,cAAAS,GAElC,GAAA+R,EADArkB,KAAAkP,OAAAoV,OAAAtkB,KAAAyQ,IAAAyT,EAAAze,UACA4e,EAAAH,GAEA,OADA,IAAAC,IAAgCnkB,KAAAyQ,KAAAyT,EAAAze,SAChC,GASAud,GAAAzU,UAAAhD,QAAA,WAA+C,OAAAvL,KAAAkP,OAAAzD,MAAAzL,KAAAsN,MAAAtN,KAAAyQ,MAC/CuS,GAAAzU,UAAAgW,eAAA,SAAA1lB,EAAA2lB,GACAxkB,KAAAojB,WAAAvkB,EACA,IAAS,OAAA2lB,IACT,QAAaxkB,KAAAojB,WAAAvkB,IAEbmkB,GAAAzU,UAAAkW,UAAA,SAAA5lB,GACA,IAAA6lB,EAAA1kB,KAAAijB,WACA,OAAAyB,KAAAD,UAAA5lB,IAEAmkB,GAAAzU,UAAAoW,UAAA,WACA,IAAAD,EAAA1kB,KAAAijB,WACA,OAAAyB,KAAAC,UAAA3kB,KAAAyQ,MAGA,IAAAmU,GAAA,SAAApC,EAAAiC,GACAzkB,KAAAwiB,QACAxiB,KAAAykB,aAGAI,GAAA,SAAAhgB,EAAA2d,EAAA9O,EAAA+Q,GACAzkB,KAAAwiB,QACAxiB,KAAA6E,MACA7E,KAAA0T,OACA1T,KAAA8kB,aAAAL,GAAA,EACAzkB,KAAA+kB,WAAA,KACA/kB,KAAAglB,aAAA,GA0CA,SAAAC,GAAAzK,EAAA9G,EAAAwR,EAAAC,GAGA,IAAAC,GAAA5K,EAAAgI,MAAA6C,SAAAC,KAEAC,GAAA/K,EAAA9G,EAAAE,KAAA4G,EAAA3V,IAAApD,KAAAyjB,EAAA,SAAA3X,EAAA7I,GAAwE,OAAA0gB,EAAAxlB,KAAA2N,EAAA7I,IACxE4gB,EAAAH,GAkCA,IAjCA,IAAA3C,EAAA0C,EAAA1C,MAGAgD,EAAA,SAAAC,GACAP,EAAAH,WAAAK,EACA,IAAAM,EAAAlL,EAAAgI,MAAAmD,SAAAF,GAAAhmB,EAAA,EAAAsd,EAAA,EACAmI,EAAA1C,OAAA,EACA+C,GAAA/K,EAAA9G,EAAAE,KAAA8R,EAAAjkB,KAAAyjB,EAAA,SAAA3X,EAAA7I,GAGA,IAFA,IAAA4I,EAAA7N,EAEAsd,EAAAxP,GAAA,CACA,IAAAqY,EAAAR,EAAA3lB,GACAmmB,EAAArY,GACa6X,EAAAnN,OAAAxY,EAAA,EAAA8N,EAAA6X,EAAA3lB,EAAA,GAAAmmB,GACbnmB,GAAA,EACAsd,EAAAnM,KAAAC,IAAAtD,EAAAqY,GAEA,GAAAlhB,EACA,GAAAghB,EAAAG,OACAT,EAAAnN,OAAA3K,EAAA7N,EAAA6N,EAAAC,EAAA,WAAA7I,GACAjF,EAAA6N,EAAA,OAEA,KAAgBA,EAAA7N,EAAW6N,GAAA,GAC3B,IAAA2G,EAAAmR,EAAA9X,EAAA,GACA8X,EAAA9X,EAAA,IAAA2G,IAAA,mBAAAvP,IAGO4gB,GACPJ,EAAA1C,QACA0C,EAAAH,WAAA,KACAG,EAAAF,aAAA,GAGAS,EAAA,EAAmBA,EAAAjL,EAAAgI,MAAAmD,SAAAlgB,SAA8BggB,EAAAD,EAAAC,GAEjD,OAAYK,OAAAV,EAAAW,QAAAT,EAAAU,SAAAV,EAAAW,UAAAX,EAAA,MAGZ,SAAAY,GAAA1L,EAAA9G,EAAAyS,GACA,IAAAzS,EAAAoS,QAAApS,EAAAoS,OAAA,IAAAtL,EAAAgI,MAAA6C,QAAA,CACA,IAAAH,EAAAkB,GAAA5L,EAAAxG,GAAAN,IACA2S,EAAA3S,EAAAE,KAAAnO,OAAA+U,EAAA9F,QAAA4R,oBAAA/D,GAAA/H,EAAA3V,IAAApD,KAAAyjB,EAAA1C,OACA9B,EAAAuE,GAAAzK,EAAA9G,EAAAwR,GACAmB,IAAuBnB,EAAA1C,MAAA6D,GACvB3S,EAAA6S,WAAArB,EAAAsB,MAAAH,GACA3S,EAAAoS,OAAApF,EAAAoF,OACApF,EAAAqF,QAA2BrS,EAAA+S,aAAA/F,EAAAqF,QAC3BrS,EAAA+S,eAAmC/S,EAAA+S,aAAA,MACnCN,IAAA3L,EAAA3V,IAAA6hB,oBACSlM,EAAA3V,IAAA8hB,aAAA/V,KAAA0E,IAAAkF,EAAA3V,IAAA8hB,eAAAnM,EAAA3V,IAAA6hB,oBAET,OAAAhT,EAAAoS,OAGA,SAAAM,GAAA5L,EAAA3b,EAAA+nB,GACA,IAAA/hB,EAAA2V,EAAA3V,IAAAL,EAAAgW,EAAAhW,QACA,IAAAK,EAAApD,KAAAohB,WAA+B,WAAAgC,GAAAhgB,GAAA,EAAAhG,GAC/B,IAAAyO,EA6HA,SAAAkN,EAAA3b,EAAA+nB,GAGA,IAFA,IAAAC,EAAAC,EAAAjiB,EAAA2V,EAAA3V,IACAkiB,EAAAH,GAAA,EAAA/nB,GAAA2b,EAAA3V,IAAApD,KAAAkhB,UAAA,SACArT,EAAAzQ,EAAwByQ,EAAAyX,IAAczX,EAAA,CACtC,GAAAA,GAAAzK,EAAAqO,MAAgC,OAAArO,EAAAqO,MAChC,IAAAQ,EAAAT,GAAApO,EAAAyK,EAAA,GAAA9D,EAAAkI,EAAA6S,WACA,GAAA/a,KAAAob,GAAAtX,GAAA9D,aAAAoZ,GAAApZ,EAAAiZ,UAAA,IAAA5f,EAAA8hB,cACS,OAAArX,EACT,IAAA0X,EAAA/X,EAAAyE,EAAAE,KAAA,KAAA4G,EAAA9F,QAAAvF,UACA,MAAA2X,GAAAD,EAAAG,KACAF,EAAAxX,EAAA,EACAuX,EAAAG,GAGA,OAAAF,EA3IAG,CAAAzM,EAAA3b,EAAA+nB,GACAM,EAAA5Z,EAAAzI,EAAAqO,OAAAD,GAAApO,EAAAyI,EAAA,GAAAiZ,WACArB,EAAAgC,EAAArC,GAAAsC,UAAAtiB,EAAAqiB,EAAA5Z,GAAA,IAAAuX,GAAAhgB,EAAAge,GAAAhe,EAAApD,MAAA6L,GASA,OAPAzI,EAAA8O,KAAArG,EAAAzO,EAAA,SAAA6U,GACA0T,GAAA5M,EAAA9G,EAAAE,KAAAsR,GACA,IAAAzU,EAAAyU,EAAAxR,KACAA,EAAA6S,WAAA9V,GAAA5R,EAAA,GAAA4R,EAAA,MAAAA,GAAAjM,EAAA6iB,UAAA5W,EAAAjM,EAAA8iB,OAAApC,EAAAsB,OAAA,KACAtB,EAAAqC,aAEAX,IAAkB/hB,EAAA8hB,aAAAzB,EAAAxR,MAClBwR,EAMA,SAAAkC,GAAA5M,EAAA5G,EAAAsR,EAAAsC,GACA,IAAA/lB,EAAA+Y,EAAA3V,IAAApD,KACAgmB,EAAA,IAAAzE,GAAApP,EAAA4G,EAAA9F,QAAAvF,QAAA+V,GAGA,IAFAuC,EAAAna,MAAAma,EAAAhX,IAAA+W,GAAA,EACA,IAAA5T,GAAqB8T,GAAAjmB,EAAAyjB,EAAA1C,QACrBiF,EAAApE,OACAsE,GAAAlmB,EAAAgmB,EAAAvC,EAAA1C,OACAiF,EAAAna,MAAAma,EAAAhX,IAIA,SAAAiX,GAAAjmB,EAAA+gB,GACA,GAAA/gB,EAAAmmB,UAAyB,OAAAnmB,EAAAmmB,UAAApF,GACzB,GAAA/gB,EAAAkhB,UAAA,CACA,IAAA6B,EAAA7B,GAAAlhB,EAAA+gB,GACA,OAAAgC,EAAA/iB,KAAAmmB,UAA+BpD,EAAA/iB,KAAAmmB,UAAApD,EAAAhC,YAA/B,GAGA,SAAAmF,GAAAlmB,EAAAgmB,EAAAjF,EAAAgC,GACA,QAAA/kB,EAAA,EAAmBA,EAAA,GAAQA,IAAA,CAC3B+kB,IAAkBA,EAAA,GAAA7B,GAAAlhB,EAAA+gB,GAAA/gB,MAClB,IAAAiD,EAAAjD,EAAAomB,MAAAJ,EAAAjF,GACA,GAAAiF,EAAAhX,IAAAgX,EAAAna,MAAsC,OAAA5I,EAEtC,UAAAyO,MAAA,QAAA1R,EAAAN,KAAA,8BAhJA0jB,GAAAtW,UAAAkW,UAAA,SAAA5lB,GACA,IAAA6U,EAAA1T,KAAA6E,IAAAoO,QAAAjT,KAAA0T,KAAA7U,GAEA,OADA,MAAA6U,GAAA7U,EAAAmB,KAAA8kB,eAAgD9kB,KAAA8kB,aAAAjmB,GAChD6U,GAGAmR,GAAAtW,UAAAoW,UAAA,SAAA9lB,GAGA,IAAAmB,KAAA+kB,WAA2B,YAC3B,KAAA/kB,KAAA+kB,WAAA/kB,KAAAglB,eAAAnmB,GAHAmB,KAIOglB,cAAA,EACP,IAAA9d,EAAAlH,KAAA+kB,WAAA/kB,KAAAglB,aAAA,GACA,OAAY9d,UAAAiV,QAAA,sBACZxa,KAAA3B,KAAA+kB,WAAA/kB,KAAAglB,cAAAnmB,IAGAgmB,GAAAtW,UAAAgZ,SAAA,WACAvnB,KAAA0T,OACA1T,KAAA8kB,aAAA,GAAgC9kB,KAAA8kB,gBAGhCD,GAAAsC,UAAA,SAAAtiB,EAAAqiB,EAAAxT,GACA,OAAAwT,aAAAtC,GACO,IAAAC,GAAAhgB,EAAA0d,GAAA1d,EAAApD,KAAAylB,EAAA1E,OAAA9O,EAAAwT,EAAAzC,WAEA,IAAAI,GAAAhgB,EAAA0d,GAAA1d,EAAApD,KAAAylB,GAAAxT,IAGPmR,GAAAtW,UAAAiY,KAAA,SAAAsB,GACA,IAAAtF,GAAA,IAAAsF,EAAAvF,GAAAviB,KAAA6E,IAAApD,KAAAzB,KAAAwiB,OAAAxiB,KAAAwiB,MACA,OAAAxiB,KAAA8kB,aAAA,MAAAF,GAAApC,EAAAxiB,KAAA8kB,cAAAtC,GAoHA,IAAAuF,GAAA,SAAAN,EAAAvgB,EAAAsb,GACAxiB,KAAAsN,MAAAma,EAAAna,MAA8BtN,KAAAuN,IAAAka,EAAAhX,IAC9BzQ,KAAAkP,OAAAuY,EAAAlc,UACAvL,KAAAkH,QAAA,KACAlH,KAAAwiB,SAIA,SAAAwF,GAAAxN,EAAA/J,EAAAmW,EAAAqB,GACA,IAAAvjB,EAGAwjB,EAHArjB,EAAA2V,EAAA3V,IAAApD,EAAAoD,EAAApD,KAEAiS,EAAAT,GAAApO,GADA4L,EAAA8E,GAAA1Q,EAAA4L,IACAiD,MAAAwR,EAAAkB,GAAA5L,EAAA/J,EAAAiD,KAAAkT,GACAa,EAAA,IAAAzE,GAAAtP,EAAAE,KAAA4G,EAAA9F,QAAAvF,QAAA+V,GAEA,IADA+C,IAAkBC,OAClBD,GAAAR,EAAAhX,MAAAkB,MAAA8V,EAAApE,OACAoE,EAAAna,MAAAma,EAAAhX,IACA/L,EAAAijB,GAAAlmB,EAAAgmB,EAAAvC,EAAA1C,OACAyF,GAAoBC,EAAAtoB,KAAA,IAAAmoB,GAAAN,EAAA/iB,EAAA6d,GAAA1d,EAAApD,KAAAyjB,EAAA1C,SAEpB,OAAAyF,EAAAC,EAAA,IAAAH,GAAAN,EAAA/iB,EAAAwgB,EAAA1C,OAGA,SAAA2F,GAAAjhB,EAAAkhB,GACA,GAAAlhB,EAAe,OAAQ,CACvB,IAAAmhB,EAAAnhB,EAAA2D,MAAA,qCACA,IAAAwd,EAAuB,MACvBnhB,IAAAuE,MAAA,EAAA4c,EAAAhgB,OAAAnB,EAAAuE,MAAA4c,EAAAhgB,MAAAggB,EAAA,GAAA5iB,QACA,IAAAsJ,EAAAsZ,EAAA,yBACA,MAAAD,EAAArZ,GACSqZ,EAAArZ,GAAAsZ,EAAA,GACT,IAAAld,OAAA,UAAAkd,EAAA,cAAAhf,KAAA+e,EAAArZ,MACSqZ,EAAArZ,IAAA,IAAAsZ,EAAA,IAET,OAAAnhB,EAIA,SAAAqe,GAAA/K,EAAA5G,EAAAnS,EAAAyjB,EAAA9W,EAAAkX,EAAAH,GACA,IAAAmD,EAAA7mB,EAAA6mB,aACA,MAAAA,IAA+BA,EAAA9N,EAAA9F,QAAA4T,cAC/B,IACA5jB,EADA6jB,EAAA,EAAAC,EAAA,KACAf,EAAA,IAAAzE,GAAApP,EAAA4G,EAAA9F,QAAAvF,QAAA+V,GACAV,EAAAhK,EAAA9F,QAAA+T,eAAA,MAEA,IADA,IAAA7U,GAAqBuU,GAAAT,GAAAjmB,EAAAyjB,EAAA1C,OAAA8C,IACrBmC,EAAApE,OAAA,CASA,GARAoE,EAAAhX,IAAA+J,EAAA9F,QAAA4R,oBACAgC,GAAA,EACAnD,GAAyBiC,GAAA5M,EAAA5G,EAAAsR,EAAAuC,EAAAhX,KACzBgX,EAAAhX,IAAAmD,EAAAnO,OACAf,EAAA,MAEAA,EAAAyjB,GAAAR,GAAAlmB,EAAAgmB,EAAAvC,EAAA1C,MAAAgC,GAAAc,GAEAd,EAAA,CACA,IAAAkE,EAAAlE,EAAA,GAAArjB,KACAunB,IAAoBhkB,EAAA,MAAAA,EAAAgkB,EAAA,IAAAhkB,EAAAgkB,IAEpB,IAAAJ,GAAAE,GAAA9jB,EAAA,CACA,KAAA6jB,EAAAd,EAAAna,OAEAc,EADAma,EAAA3X,KAAAC,IAAA4W,EAAAna,MAAAib,EAAA,KACAC,GAEAA,EAAA9jB,EAEA+iB,EAAAna,MAAAma,EAAAhX,IAEA,KAAA8X,EAAAd,EAAAhX,KAAA,CAIA,IAAAA,EAAAG,KAAAC,IAAA4W,EAAAhX,IAAA8X,EAAA,KACAna,EAAAqC,EAAA+X,GACAD,EAAA9X,GA+CA,IAAAkY,GAAA,SAAA/U,EAAA4C,EAAAoS,GACA5oB,KAAA4T,OACAwE,GAAApY,KAAAwW,GACAxW,KAAAsE,OAAAskB,IAAA5oB,MAAA,GAqBA,SAAA6oB,GAAAnV,GACAA,EAAA1H,OAAA,KACAkM,GAAAxE,GApBAiV,GAAApa,UAAAyF,OAAA,WAAuC,OAAAA,GAAAhU,OACvC4e,GAAA+J,IAyBA,IAAAG,MAA4BC,MAC5B,SAAAC,GAAAtkB,EAAAgQ,GACA,IAAAhQ,GAAA,QAAA2E,KAAA3E,GAAwC,YACxC,IAAAukB,EAAAvU,EAAA+T,aAAAM,GAAAD,GACA,OAAAG,EAAAvkB,KACAukB,EAAAvkB,KAAAyX,QAAA,iBAQA,SAAA+M,GAAA1O,EAAA2O,GAIA,IAAA5pB,EAAAgN,EAAA,iBAAAzC,EAAA,4BACAsf,GAAmBC,IAAA9c,EAAA,OAAAhN,GAAA,mBAAAA,UACnBmR,IAAA,EAAAD,IAAA,EAAA+J,KACA8O,eAAA,EACAC,YAAA/O,EAAAgP,UAAA,iBACAL,EAAApJ,WAGA,QAAAtgB,EAAA,EAAmBA,IAAA0pB,EAAAM,KAAAN,EAAAM,KAAAhkB,OAAA,GAAiDhG,IAAA,CACpE,IAAAiU,EAAAjU,EAAA0pB,EAAAM,KAAAhqB,EAAA,GAAA0pB,EAAAzV,KAAAoH,OAAA,EACAsO,EAAA3Y,IAAA,EACA2Y,EAAAM,SAAAC,GAGAzJ,GAAA1F,EAAAhW,QAAAub,WAAAjF,EAAAsC,GAAA1J,EAAA8G,EAAA3V,IAAA4W,cACS2N,EAAAM,SAAAE,GAAAR,EAAAM,SAAA5O,IACTsO,EAAAlY,OAEA2Y,GAAAnW,EAAA0V,EAAAlD,GAAA1L,EAAA9G,EADAyV,GAAA3O,EAAAhW,QAAAslB,kBAAA9V,GAAAN,KAEAA,EAAA+S,eACA/S,EAAA+S,aAAAT,UACWoD,EAAApD,QAAA9Y,EAAAwG,EAAA+S,aAAAT,QAAAoD,EAAApD,SAAA,KACXtS,EAAA+S,aAAAR,YACWmD,EAAAnD,UAAA/Y,EAAAwG,EAAA+S,aAAAR,UAAAmD,EAAAnD,WAAA,MAIX,GAAAmD,EAAAlY,IAAAzL,QACS2jB,EAAAlY,IAAAtR,KAAA,IAAAwpB,EAAA7pB,QAAA0M,YAAA6T,GAAAtF,EAAAhW,QAAAub,WAGT,GAAAtgB,GACA0pB,EAAApJ,QAAA7O,IAAAkY,EAAAlY,IACAiY,EAAApJ,QAAAkJ,YAEAE,EAAApJ,QAAAgK,OAAAZ,EAAApJ,QAAAgK,UAAAnqB,KAAAwpB,EAAAlY,MACSiY,EAAApJ,QAAAiK,SAAAb,EAAApJ,QAAAiK,YAAApqB,UAKT,GAAAkK,EAAA,CACA,IAAA0L,EAAA4T,EAAA7pB,QAAA0qB,WACA,aAAA5gB,KAAAmM,EAAAjN,YAAAiN,EAAA0U,eAAA1U,EAAA0U,cAAA,cACSd,EAAA7pB,QAAAgJ,UAAA,oBAOT,OAJAwV,GAAAvD,EAAA,aAAAA,EAAA2O,EAAAzV,KAAA0V,EAAAC,KACAD,EAAAC,IAAA9gB,YACO6gB,EAAAnD,UAAA/Y,EAAAkc,EAAAC,IAAA9gB,UAAA6gB,EAAAnD,WAAA,KAEPmD,EAGA,SAAAe,GAAAxY,GACA,IAAAkW,EAAA3b,EAAA,6BAGA,OAFA2b,EAAA1gB,MAAA,MAAAwK,EAAAS,WAAA,GAAAlC,SAAA,IACA2X,EAAArb,aAAA,aAAAqb,EAAA1gB,OACA0gB,EAKA,SAAA8B,GAAAP,EAAAxV,EAAAlP,EAAA0lB,EAAAC,EAAAC,EAAAC,GACA,GAAA3W,EAAA,CACA,IAEArU,EAFAirB,EAAApB,EAAAG,YAiEA,SAAA3V,EAAA6W,GACA,GAAA7W,EAAAnO,OAAA,SAAA4D,KAAAuK,GAA8C,OAAAA,EAE9C,IADA,IAAA8W,EAAAD,EAAA/J,EAAA,GACAjhB,EAAA,EAAmBA,EAAAmU,EAAAnO,OAAiBhG,IAAA,CACpC,IAAAkS,EAAAiC,EAAApB,OAAA/S,GACA,KAAAkS,IAAA+Y,GAAAjrB,GAAAmU,EAAAnO,OAAA,OAAAmO,EAAAxB,WAAA3S,EAAA,KACSkS,EAAA,KACT+O,GAAA/O,EACA+Y,EAAA,KAAA/Y,EAEA,OAAA+O,EA3EA6I,CAAA3V,EAAAwV,EAAAE,eAAA1V,EACA+W,EAAAvB,EAAA5O,GAAAgI,MAAAoI,aAAAC,GAAA,EAEA,GAAAF,EAAAthB,KAAAuK,GAMK,CACLrU,EAAAqK,SAAAkhB,yBAEA,IADA,IAAAra,EAAA,IACA,CACAka,EAAAI,UAAAta,EACA,IAAAoM,EAAA8N,EAAAnhB,KAAAoK,GACAjD,EAAAkM,IAAAxU,MAAAoI,EAAAmD,EAAAnO,OAAAgL,EACA,GAAAE,EAAA,CACA,IAAAwP,EAAAvW,SAAA0C,eAAAke,EAAA/e,MAAAgF,IAAAE,IACAjH,GAAAC,EAAA,EAAqCpK,EAAA0M,YAAAC,EAAA,QAAAiU,KACrB5gB,EAAA0M,YAAAkU,GAChBiJ,EAAAlY,IAAAtR,KAAAwpB,EAAA3Y,IAAA2Y,EAAA3Y,IAAAE,EAAAwP,GACAiJ,EAAA1Y,KAAAC,EACAyY,EAAA3Y,KAAAE,EAEA,IAAAkM,EAAiB,MACjBpM,GAAAE,EAAA,EACA,IAAAqa,OAAA,EACA,SAAAnO,EAAA,IACA,IAAA1N,EAAAia,EAAA5O,GAAA9F,QAAAvF,QAAA8b,EAAA9b,EAAAia,EAAA1Y,IAAAvB,GACA6b,EAAAzrB,EAAA0M,YAAAC,EAAA,OAAA6E,EAAAka,GAAA,YACAze,aAAA,uBACAwe,EAAAxe,aAAA,gBACA4c,EAAA1Y,KAAAua,MACS,MAAApO,EAAA,UAAAA,EAAA,KACTmO,EAAAzrB,EAAA0M,YAAAC,EAAA,aAAA2Q,EAAA,+BACArQ,aAAA,UAAAqQ,EAAA,IACAuM,EAAA1Y,KAAA,KAEAsa,EAAA5B,EAAA5O,GAAA9F,QAAAwW,uBAAArO,EAAA,KACArQ,aAAA,UAAAqQ,EAAA,IACAnT,GAAAC,EAAA,EAAqCpK,EAAA0M,YAAAC,EAAA,QAAA8e,KACrBzrB,EAAA0M,YAAA+e,GAChB5B,EAAA1Y,KAAA,GAEA0Y,EAAAlY,IAAAtR,KAAAwpB,EAAA3Y,IAAA2Y,EAAA3Y,IAAA,EAAAua,GACA5B,EAAA3Y,YAzCA2Y,EAAA1Y,KAAAkD,EAAAnO,OACAlG,EAAAqK,SAAA0C,eAAAke,GACApB,EAAAlY,IAAAtR,KAAAwpB,EAAA3Y,IAAA2Y,EAAA3Y,IAAAmD,EAAAnO,OAAAlG,GACAmK,GAAAC,EAAA,IAAiCkhB,GAAA,GACjCzB,EAAA3Y,KAAAmD,EAAAnO,OAyCA,GADA2jB,EAAAE,cAAA,IAAAkB,EAAApY,WAAAwB,EAAAnO,OAAA,GACAf,GAAA0lB,GAAAC,GAAAQ,GAAAP,EAAA,CACA,IAAAa,EAAAzmB,GAAA,GACA0lB,IAAuBe,GAAAf,GACvBC,IAAqBc,GAAAd,GACrB,IAAAxC,EAAA3b,EAAA,QAAA3M,GAAA4rB,EAAAb,GACA,GAAAC,EACA,QAAAa,KAAAb,EAAsCA,EAAAvb,eAAAoc,IAAA,SAAAA,GAAA,SAAAA,GAC3BvD,EAAArb,aAAA4e,EAAAb,EAAAa,IAEX,OAAAhC,EAAA7pB,QAAA0M,YAAA4b,GAEAuB,EAAA7pB,QAAA0M,YAAA1M,IAoBA,SAAAqqB,GAAApF,EAAA1J,GACA,gBAAAsO,EAAAxV,EAAAlP,EAAA0lB,EAAAC,EAAAC,EAAAC,GACA7lB,MAAA,qCAEA,IADA,IAAA4I,EAAA8b,EAAA3Y,IAAAlD,EAAAD,EAAAsG,EAAAnO,SACa,CAGb,IADA,IAAA4lB,OAAA,EACA5rB,EAAA,EAAuBA,EAAAqb,EAAArV,WACvB4lB,EAAAvQ,EAAArb,IACAmT,GAAAtF,GAAA+d,EAAA1Y,MAAArF,GAFyC7N,KAIzC,GAAA4rB,EAAAzY,IAAArF,EAA6B,OAAAiX,EAAA4E,EAAAxV,EAAAlP,EAAA0lB,EAAAC,EAAAC,EAAAC,GAC7B/F,EAAA4E,EAAAxV,EAAAnI,MAAA,EAAA4f,EAAAzY,GAAAtF,GAAA5I,EAAA0lB,EAAA,KAAAE,EAAAC,GACAH,EAAA,KACAxW,IAAAnI,MAAA4f,EAAAzY,GAAAtF,GACAA,EAAA+d,EAAAzY,KAKA,SAAA0Y,GAAAlC,EAAAznB,EAAAoU,EAAAwV,GACA,IAAAC,GAAAD,GAAAxV,EAAAiE,WACAwR,GAAiBpC,EAAAlY,IAAAtR,KAAAwpB,EAAA3Y,IAAA2Y,EAAA3Y,IAAA9O,EAAA6pB,IACjBD,GAAAnC,EAAA5O,GAAAhW,QAAAinB,MAAAC,wBACAF,IACSA,EAAApC,EAAA7pB,QAAA0M,YAAArC,SAAAwC,cAAA,UACTof,EAAAhf,aAAA,YAAAuJ,EAAA1T,KAEAmpB,IACApC,EAAA5O,GAAAhW,QAAAinB,MAAAE,cAAAH,GACApC,EAAA7pB,QAAA0M,YAAAuf,IAEApC,EAAA3Y,KAAA9O,EACAynB,EAAAE,eAAA,EAKA,SAAAO,GAAAnW,EAAA0V,EAAAtD,GACA,IAAA7P,EAAAvC,EAAA8C,YAAAoV,EAAAlY,EAAAE,KAAAmJ,EAAA,EACA,GAAA9G,EAQA,IAFA,IAAAvR,EAAA4lB,EACAuB,EAAAC,EAAAC,EAAA7S,EAAAqR,EADAlQ,EAAAuR,EAAAnmB,OAAAgL,EAAA,EAAAhR,EAAA,EAAAmU,EAAA,GACAoY,EAAA,IACW,CACX,GAAAA,GAAAvb,EAAA,CACAob,EAAAC,EAAAC,EAAAzB,EAAA,GACAC,EAAA,KACArR,EAAA,KAAyB8S,EAAAC,IAEzB,IADA,IAAAC,KAAAC,OAAA,EACA/P,EAAA,EAAuBA,EAAAnG,EAAAxQ,SAAkB2W,EAAA,CACzC,IAAAnD,EAAAhD,EAAAmG,GAAAS,EAAA5D,EAAAlD,OACA,eAAA8G,EAAA3V,MAAA+R,EAAAtG,MAAAlC,GAAAoM,EAAA7C,WACAkS,EAAAtsB,KAAAid,QACW,GAAA5D,EAAAtG,MAAAlC,IAAA,MAAAwI,EAAArG,IAAAqG,EAAArG,GAAAnC,GAAAoM,EAAA3D,WAAAD,EAAArG,IAAAnC,GAAAwI,EAAAtG,MAAAlC,GAAA,CAYX,GAXA,MAAAwI,EAAArG,IAAAqG,EAAArG,IAAAnC,GAAAub,EAAA/S,EAAArG,KACAoZ,EAAA/S,EAAArG,GACAkZ,EAAA,IAEAjP,EAAAtU,YAA8BsjB,GAAA,IAAAhP,EAAAtU,WAC9BsU,EAAAyN,MAAwBA,OAAA,IAAsB,IAAAzN,EAAAyN,KAC9CzN,EAAAuN,YAAAnR,EAAAtG,MAAAlC,IAAiDsb,GAAA,IAAAlP,EAAAuN,YACjDvN,EAAAwN,UAAApR,EAAArG,IAAAoZ,IAAoDG,WAAAvsB,KAAAid,EAAAwN,SAAApR,EAAArG,IAGpDiK,EAAA1V,SAA0BojB,WAAgCpjB,MAAA0V,EAAA1V,OAC1D0V,EAAA0N,WACA,QAAAa,KAAAvO,EAAA0N,YACiBA,WAAgCa,GAAAvO,EAAA0N,WAAAa,GAEjDvO,EAAA3D,gBAAAV,GAAAU,EAAAnD,OAAA8G,GAAA,KACe3D,EAAAD,QACJA,EAAAtG,KAAAlC,GAAAub,EAAA/S,EAAAtG,OACXqZ,EAAA/S,EAAAtG,MAGA,GAAAwZ,EAAwB,QAAAvP,EAAA,EAAkBA,EAAAuP,EAAA1mB,OAAwBmX,GAAA,EACvDuP,EAAAvP,EAAA,IAAAoP,IAAwCF,GAAA,IAAAK,EAAAvP,IAEnD,IAAA1D,KAAAvG,MAAAlC,EAAkD,QAAAuM,EAAA,EAAkBA,EAAAkP,EAAAzmB,SAA6BuX,EACtFsO,GAAAlC,EAAA,EAAA8C,EAAAlP,IACX,GAAA9D,MAAAvG,MAAA,IAAAlC,EAAA,CAGA,GAFA6a,GAAAlC,GAAA,MAAAlQ,EAAAtG,GAAAyH,EAAA,EAAAnB,EAAAtG,IAAAnC,EACAyI,EAAAnD,OAAA,MAAAmD,EAAAvG,MACA,MAAAuG,EAAAtG,GAAqC,OACrCsG,EAAAtG,IAAAnC,IAAoCyI,GAAA,IAGpC,GAAAzI,GAAA4J,EAAuB,MAGvB,IADA,IAAA+R,EAAAxb,KAAAC,IAAAwJ,EAAA2R,KACA,CACA,GAAApY,EAAA,CACA,IAAArG,EAAAkD,EAAAmD,EAAAnO,OACA,IAAAyT,EAAA,CACA,IAAAmT,EAAA9e,EAAA6e,EAAAxY,EAAAnI,MAAA,EAAA2gB,EAAA3b,GAAAmD,EACAwV,EAAAM,SAAAN,EAAAiD,EAAA3nB,IAAAmnB,IACAE,EAAAtb,EAAA4b,EAAA5mB,QAAAumB,EAAAF,EAAA,GAAAxB,EAAAC,GAEA,GAAAhd,GAAA6e,EAAA,CAA4BxY,IAAAnI,MAAA2gB,EAAA3b,GAA8BA,EAAA2b,EAAY,MACtE3b,EAAAlD,EACAwe,EAAA,GAEAnY,EAAAgY,EAAAngB,MAAAsR,IAAA+I,EAAArmB,MACAiF,EAAAskB,GAAAlD,EAAArmB,KAAA2pB,EAAA5O,GAAA9F,eAnEA,QAAAL,EAAA,EAAuBA,EAAAyR,EAAArgB,OAAqB4O,GAAA,EACnC+U,EAAAM,SAAAN,EAAAwC,EAAAngB,MAAAsR,IAAA+I,EAAAzR,IAAA2U,GAAAlD,EAAAzR,EAAA,GAAA+U,EAAA5O,GAAA9F,UA2ET,SAAA4X,GAAAznB,EAAA6O,EAAAiG,GAEA3Z,KAAA0T,OAEA1T,KAAAypB,KAvwCA,SAAA/V,GAEA,IADA,IAAA+F,EAAApG,EACAoG,EAAAL,GAAA1F,IACAA,EAAA+F,EAAAd,KAAA,MAAAjF,MACOL,WAAAzT,KAAA8T,GAEP,OAAAL,EAiwCAkZ,CAAA7Y,GAEA1T,KAAA2B,KAAA3B,KAAAypB,KAAAzV,GAAAhD,EAAAhR,KAAAypB,OAAA9P,EAAA,IACA3Z,KAAAsL,KAAAtL,KAAA4T,KAAA,KACA5T,KAAAwsB,OAAAzS,GAAAlV,EAAA6O,GAIA,SAAA+Y,GAAAjS,EAAA7H,EAAAC,GAEA,IADA,IAAA8Z,EAAA9c,KACAa,EAAAkC,EAAwBlC,EAAAmC,EAAUnC,EAAAic,EAAA,CAClC,IAAAC,EAAA,IAAAL,GAAA9R,EAAA3V,IAAAoO,GAAAuH,EAAA3V,IAAA4L,MACAic,EAAAjc,EAAAkc,EAAAhrB,KACAiO,EAAAhQ,KAAA+sB,GAEA,OAAA/c,EAGA,IAAAgd,GAAA,KAwCA,IAAAC,GAAA,KASA,SAAAC,GAAAxP,EAAApW,GACA,IAAA+J,EAAA2M,GAAAN,EAAApW,GACA,GAAA+J,EAAAxL,OAAA,CACA,IAAAsnB,EAAA1e,EAAAC,MAAAC,UAAA9C,MAAA+C,KAAAC,UAAA,GACAme,GACAG,EAAAH,GAAAI,iBACKH,GACLE,EAAAF,IAEAE,EAAAF,MACA1pB,WAAA8pB,GAAA,IAMA,IAJA,IAAAzH,EAAA,SAAA/lB,GACAstB,EAAAntB,KAAA,WAA6B,OAAAqR,EAAAxR,GAAAiP,MAAA,KAAAL,MAG7B5O,EAAA,EAAmBA,EAAAwR,EAAAxL,SAAgBhG,EACnC+lB,EAAA/lB,IAGA,SAAAwtB,KACA,IAAAC,EAAAL,GACAA,GAAA,KACA,QAAAptB,EAAA,EAAmBA,EAAAytB,EAAAznB,SAAoBhG,EAAOytB,EAAAztB,KAM9C,SAAA0tB,GAAA3S,EAAA2O,EAAAxP,EAAAyT,GACA,QAAAhR,EAAA,EAAmBA,EAAA+M,EAAAkE,QAAA5nB,OAA6B2W,IAAA,CAChD,IAAAlV,EAAAiiB,EAAAkE,QAAAjR,GACA,QAAAlV,EAA2BomB,GAAA9S,EAAA2O,GAC3B,UAAAjiB,EAAkCqmB,GAAA/S,EAAA2O,EAAAxP,EAAAyT,GAClC,SAAAlmB,EAAiCsmB,GAAAhT,EAAA2O,GACjC,UAAAjiB,GAAkCumB,GAAAjT,EAAA2O,EAAAiE,GAElCjE,EAAAkE,QAAA,KAKA,SAAAK,GAAAvE,GAQA,OAPAA,EAAA7d,MAAA6d,EAAAvV,OACAuV,EAAA7d,KAAAY,EAAA,sCACAid,EAAAvV,KAAAhH,YACSuc,EAAAvV,KAAAhH,WAAA+gB,aAAAxE,EAAA7d,KAAA6d,EAAAvV,MACTuV,EAAA7d,KAAAW,YAAAkd,EAAAvV,MACAlK,GAAAC,EAAA,IAAiCwf,EAAA7d,KAAA5G,MAAAkpB,OAAA,IAEjCzE,EAAA7d,KAkBA,SAAAuiB,GAAArT,EAAA2O,GACA,IAAA2E,EAAAtT,EAAAhW,QAAAslB,iBACA,OAAAgE,KAAApa,MAAAyV,EAAAzV,MACA8G,EAAAhW,QAAAslB,iBAAA,KACAX,EAAApJ,QAAA+N,EAAA/N,QACA+N,EAAAC,OAEA7E,GAAA1O,EAAA2O,GAMA,SAAAmE,GAAA9S,EAAA2O,GACA,IAAAje,EAAAie,EAAAvV,KAAArL,UACAwlB,EAAAF,GAAArT,EAAA2O,GACAA,EAAAvV,MAAAuV,EAAA7d,OAAyC6d,EAAA7d,KAAAyiB,EAAA1E,KACzCF,EAAAvV,KAAAhH,WAAA+gB,aAAAI,EAAA1E,IAAAF,EAAAvV,MACAuV,EAAAvV,KAAAma,EAAA1E,IACA0E,EAAA/H,SAAAmD,EAAAnD,SAAA+H,EAAA9H,WAAAkD,EAAAlD,WACAkD,EAAAnD,QAAA+H,EAAA/H,QACAmD,EAAAlD,UAAA8H,EAAA9H,UACAuH,GAAAhT,EAAA2O,IACKje,IACLie,EAAAvV,KAAArL,UAAA2C,GAIA,SAAAsiB,GAAAhT,EAAA2O,IA3CA,SAAA3O,EAAA2O,GACA,IAAAje,EAAAie,EAAAnD,QAAAmD,EAAAnD,QAAA,KAAAmD,EAAAzV,KAAAsS,SAAA,IAAAmD,EAAAzV,KAAAsS,QAEA,GADA9a,IAAcA,GAAA,8BACdie,EAAA6E,WACA9iB,EAAgBie,EAAA6E,WAAAzlB,UAAA2C,GACJie,EAAA6E,WAAAphB,WAAAf,YAAAsd,EAAA6E,YAAiE7E,EAAA6E,WAAA,WACxE,GAAA9iB,EAAA,CACL,IAAA+iB,EAAAP,GAAAvE,GACAA,EAAA6E,WAAAC,EAAAC,aAAAhiB,EAAA,WAAAhB,GAAA+iB,EAAAniB,YACA0O,EAAAhW,QAAAinB,MAAAE,cAAAxC,EAAA6E,aAmCAG,CAAA3T,EAAA2O,GACAA,EAAAzV,KAAA0a,UACOV,GAAAvE,GAAA5gB,UAAA4gB,EAAAzV,KAAA0a,UACPjF,EAAA7d,MAAA6d,EAAAvV,OACOuV,EAAA7d,KAAA/C,UAAA,IACP,IAAA0d,EAAAkD,EAAAlD,UAAAkD,EAAAlD,UAAA,KAAAkD,EAAAzV,KAAAuS,WAAA,IAAAkD,EAAAzV,KAAAuS,UACAkD,EAAAvV,KAAArL,UAAA0d,GAAA,GAGA,SAAAsH,GAAA/S,EAAA2O,EAAAxP,EAAAyT,GASA,GARAjE,EAAAkF,SACAlF,EAAA7d,KAAAO,YAAAsd,EAAAkF,QACAlF,EAAAkF,OAAA,MAEAlF,EAAAmF,mBACAnF,EAAA7d,KAAAO,YAAAsd,EAAAmF,kBACAnF,EAAAmF,iBAAA,MAEAnF,EAAAzV,KAAA6a,YAAA,CACA,IAAAN,EAAAP,GAAAvE,GACAA,EAAAmF,iBAAApiB,EAAA,2CAAAid,EAAAzV,KAAA6a,YACA,UAAA/T,EAAA9F,QAAA8Z,YAAApB,EAAAqB,UAAArB,EAAAsB,kBAAA,cAA0HtB,EAAA,uBAC1H5S,EAAAhW,QAAAinB,MAAAE,cAAAxC,EAAAmF,kBACAL,EAAAC,aAAA/E,EAAAmF,iBAAAnF,EAAAvV,MAEA,IAAA+a,EAAAxF,EAAAzV,KAAAkb,cACA,GAAApU,EAAA9F,QAAAma,aAAAF,EAAA,CACA,IAAAG,EAAApB,GAAAvE,GACA4F,EAAA5F,EAAAkF,OAAAniB,EAAA,iDAAAsO,EAAA9F,QAAA8Z,YAAApB,EAAAqB,UAAArB,EAAAsB,kBAAA,MAUA,GATAlU,EAAAhW,QAAAinB,MAAAE,cAAAoD,GACAD,EAAAZ,aAAAa,EAAA5F,EAAAvV,MACAuV,EAAAzV,KAAA6a,cACSQ,EAAAxmB,WAAA,IAAA4gB,EAAAzV,KAAA6a,cACT/T,EAAA9F,QAAAma,aAAAF,KAAA,4BACSxF,EAAA6F,WAAAD,EAAA9iB,YACTC,EAAA,MAAAuI,GAAA+F,EAAA9F,QAAAiF,GACA,8CACA,SAAAyT,EAAA6B,WAAA,wCAA4EzU,EAAAhW,QAAA,0BAC5EmqB,EAAoB,QAAAO,EAAA,EAAgBA,EAAA1U,EAAA9F,QAAAya,QAAA1pB,SAA+BypB,EAAA,CACnE,IAAA7sB,EAAAmY,EAAA9F,QAAAya,QAAAD,GAAA1X,EAAAmX,EAAA3f,eAAA3M,IAAAssB,EAAAtsB,GACAmV,GACWuX,EAAA9iB,YAAAC,EAAA,OAAAsL,GAAA,wBACX,SAAA4V,EAAA6B,WAAA5sB,GAAA,cAA6E+qB,EAAAgC,YAAA/sB,GAAA,SAK7E,SAAAorB,GAAAjT,EAAA2O,EAAAiE,GACAjE,EAAAkG,YAA6BlG,EAAAkG,UAAA,MAC7B,QAAA/jB,EAAA6d,EAAA7d,KAAAQ,WAAA2X,OAAA,EAA8DnY,EAAMA,EAAAmY,EACpEA,EAAAnY,EAAAgkB,YACA,yBAAAhkB,EAAA/C,WACS4gB,EAAA7d,KAAAO,YAAAP,GAETikB,GAAA/U,EAAA2O,EAAAiE,GAIA,SAAAoC,GAAAhV,EAAA2O,EAAAxP,EAAAyT,GACA,IAAAW,EAAAF,GAAArT,EAAA2O,GAQA,OAPAA,EAAAvV,KAAAuV,EAAA7d,KAAAyiB,EAAA1E,IACA0E,EAAA/H,UAAwBmD,EAAAnD,QAAA+H,EAAA/H,SACxB+H,EAAA9H,YAA0BkD,EAAAlD,UAAA8H,EAAA9H,WAE1BuH,GAAAhT,EAAA2O,GACAoE,GAAA/S,EAAA2O,EAAAxP,EAAAyT,GACAmC,GAAA/U,EAAA2O,EAAAiE,GACAjE,EAAA7d,KAKA,SAAAikB,GAAA/U,EAAA2O,EAAAiE,GAEA,GADAqC,GAAAjV,EAAA2O,EAAAzV,KAAAyV,EAAAiE,GAAA,GACAjE,EAAAM,KAAwB,QAAAhqB,EAAA,EAAgBA,EAAA0pB,EAAAM,KAAAhkB,OAA0BhG,IAC3DgwB,GAAAjV,EAAA2O,EAAAM,KAAAhqB,GAAA0pB,EAAAiE,GAAA,GAGP,SAAAqC,GAAAjV,EAAA9G,EAAAyV,EAAAiE,EAAAsC,GACA,GAAAhc,EAAAic,QAEA,IADA,IAAA1B,EAAAP,GAAAvE,GACA1pB,EAAA,EAAAmwB,EAAAlc,EAAAic,QAAsClwB,EAAAmwB,EAAAnqB,SAAehG,EAAA,CACrD,IAAA+rB,EAAAoE,EAAAnwB,GAAA6L,EAAAY,EAAA,OAAAsf,EAAAlgB,MAAA,yBACAkgB,EAAAqE,mBAAsCvkB,EAAAkB,aAAA,2BACtCsjB,GAAAtE,EAAAlgB,EAAA6d,EAAAiE,GACA5S,EAAAhW,QAAAinB,MAAAE,cAAArgB,GACAokB,GAAAlE,EAAAuE,MACS9B,EAAAC,aAAA5iB,EAAA6d,EAAAkF,QAAAlF,EAAAvV,MAEAqa,EAAAhiB,YAAAX,GACTwhB,GAAAtB,EAAA,WAIA,SAAAsE,GAAAtE,EAAAlgB,EAAA6d,EAAAiE,GACA,GAAA5B,EAAAwE,UAAA,EACA7G,EAAAkG,YAAAlG,EAAAkG,eAAAzvB,KAAA0L,GACA,IAAA2kB,EAAA7C,EAAA8C,aACA5kB,EAAA5G,MAAA6b,KAAA6M,EAAAqB,SAAA,KACAjD,EAAA2E,cACAF,GAAA7C,EAAAsB,iBACApjB,EAAA5G,MAAA0rB,YAAAhD,EAAAsB,iBAAA,MAEApjB,EAAA5G,MAAAurB,QAAA,KAEAzE,EAAA2E,cACA7kB,EAAA5G,MAAAkpB,OAAA,EACAtiB,EAAA5G,MAAA2rB,SAAA,WACA7E,EAAAwE,YAA8B1kB,EAAA5G,MAAA4rB,YAAAlD,EAAAsB,iBAAA,OAI9B,SAAA6B,GAAA/E,GACA,SAAAA,EAAAlnB,OAAgC,OAAAknB,EAAAlnB,OAChC,IAAAkW,EAAAgR,EAAA3mB,IAAA2V,GACA,IAAAA,EAAc,SACd,IAAA/N,EAAA7C,SAAAoD,KAAAwe,EAAAlgB,MAAA,CACA,IAAAklB,EAAA,sBACAhF,EAAA2E,cACSK,GAAA,iBAAAhW,EAAAhW,QAAA2qB,QAAAlP,YAAA,OACTuL,EAAAwE,YACSQ,GAAA,UAAAhW,EAAAhW,QAAAC,QAAAgsB,YAAA,OACT1kB,EAAAyO,EAAAhW,QAAAub,QAAA7T,EAAA,OAAAsf,EAAAlgB,MAAA,KAAAklB,IAEA,OAAAhF,EAAAlnB,OAAAknB,EAAAlgB,KAAAsB,WAAAoT,aAIA,SAAA0Q,GAAAlsB,EAAAhB,GACA,QAAA3E,EAAAugB,GAAA5b,GAA6B3E,GAAA2F,EAAAC,QAAsB5F,IAAA+N,WACnD,IAAA/N,GAAA,GAAAA,EAAA8N,UAAA,QAAA9N,EAAA8xB,aAAA,qBACA9xB,EAAA+N,YAAApI,EAAAosB,OAAA/xB,GAAA2F,EAAAqsB,MACS,SAMT,SAAAC,GAAAtsB,GAAgC,OAAAA,EAAAusB,UAAAC,UAChC,SAAAC,GAAAzsB,GAAiC,OAAAA,EAAAqsB,MAAA7Q,aAAAxb,EAAAusB,UAAA/Q,aACjC,SAAAkR,GAAA1sB,GACA,GAAAA,EAAA2sB,eAAiC,OAAA3sB,EAAA2sB,eACjC,IAAA3tB,EAAAuI,EAAAvH,EAAAub,QAAA7T,EAAA,YACAxH,EAAAoc,OAAAsQ,iBAAAtQ,OAAAsQ,iBAAA5tB,KAAA6tB,aACAjwB,GAAgBmf,KAAA3a,SAAAlB,EAAA0rB,aAAA5P,MAAA5a,SAAAlB,EAAA4sB,eAEhB,OADAC,MAAAnwB,EAAAmf,OAAAgR,MAAAnwB,EAAAof,SAAkDhc,EAAA2sB,eAAA/vB,GAClDA,EAGA,SAAAowB,GAAAhX,GAA0B,OAAAxK,EAAAwK,EAAAhW,QAAAitB,eAC1B,SAAAC,GAAAlX,GACA,OAAAA,EAAAhW,QAAAmtB,SAAAlB,YAAAe,GAAAhX,KAAAhW,QAAAotB,SAEA,SAAAC,GAAArX,GACA,OAAAA,EAAAhW,QAAAmtB,SAAAG,aAAAN,GAAAhX,KAAAhW,QAAAutB,UA4BA,SAAAC,GAAA7I,EAAAzV,EAAAiG,GACA,GAAAwP,EAAAzV,QACO,OAASxC,IAAAiY,EAAApJ,QAAA7O,IAAA+X,MAAAE,EAAApJ,QAAAkJ,OAChB,QAAAxpB,EAAA,EAAmBA,EAAA0pB,EAAAM,KAAAhkB,OAA0BhG,IACtC,GAAA0pB,EAAAM,KAAAhqB,IAAAiU,EACE,OAASxC,IAAAiY,EAAApJ,QAAAgK,KAAAtqB,GAAAwpB,MAAAE,EAAApJ,QAAAiK,OAAAvqB,IAClB,QAAA4U,EAAA,EAAqBA,EAAA8U,EAAAM,KAAAhkB,OAA4B4O,IAC1C,GAAAL,GAAAmV,EAAAM,KAAApV,IAAAsF,EACE,OAASzI,IAAAiY,EAAApJ,QAAAgK,KAAA1V,GAAA4U,MAAAE,EAAApJ,QAAAiK,OAAA3V,GAAAqI,QAAA,GAkBlB,SAAAuV,GAAAzX,EAAA9G,EAAA/B,EAAAugB,GACA,OAAAC,GAAA3X,EAAA4X,GAAA5X,EAAA9G,GAAA/B,EAAAugB,GAIA,SAAAG,GAAA7X,EAAAb,GACA,GAAAA,GAAAa,EAAAhW,QAAA6iB,UAAA1N,EAAAa,EAAAhW,QAAA8iB,OACO,OAAA9M,EAAAhW,QAAAmoB,KAAA2F,GAAA9X,EAAAb,IACP,IAAAmU,EAAAtT,EAAAhW,QAAAslB,iBACA,OAAAgE,GAAAnU,GAAAmU,EAAAnU,SAAAmU,EAAAnU,MAAAmU,EAAAnsB,KACOmsB,OADP,EASA,SAAAsE,GAAA5X,EAAA9G,GACA,IAAAiG,EAAA3F,GAAAN,GACAiZ,EAAA0F,GAAA7X,EAAAb,GACAgT,MAAA/Y,KACA+Y,EAAA,KACKA,KAAAU,UACLF,GAAA3S,EAAAmS,EAAAhT,EAAA4Y,GAAA/X,IACAA,EAAAiE,MAAA+T,aAAA,GAEA7F,IACOA,EAzCP,SAAAnS,EAAA9G,GAEA,IAAAiG,EAAA3F,GADAN,EAAA8F,GAAA9F,IAEAiZ,EAAAnS,EAAAhW,QAAAslB,iBAAA,IAAAwC,GAAA9R,EAAA3V,IAAA6O,EAAAiG,GACAgT,EAAAhT,QACA,IAAAoU,EAAApB,EAAAoB,MAAA7E,GAAA1O,EAAAmS,GAGA,OAFAA,EAAA/Y,KAAAma,EAAA1E,IACAtd,EAAAyO,EAAAhW,QAAAiuB,YAAA1E,EAAA1E,KACAsD,EAiCO+F,CAAAlY,EAAA9G,IAEP,IAAAkP,EAAAoP,GAAArF,EAAAjZ,EAAAiG,GACA,OACAjG,OAAAiZ,OAAAgG,KAAA,KACAzhB,IAAA0R,EAAA1R,IAAA+X,MAAArG,EAAAqG,MAAAvM,OAAAkG,EAAAlG,OACAkW,YAAA,GAMA,SAAAT,GAAA3X,EAAAqY,EAAAlhB,EAAAugB,EAAAY,GACAD,EAAAnW,SAA0B/K,GAAA,GAC1B,IAAA6F,EAAAzY,EAAA4S,GAAAugB,GAAA,IAaA,OAZAW,EAAA5J,MAAAja,eAAAjQ,GACAyY,EAAAqb,EAAA5J,MAAAlqB,IAEA8zB,EAAAF,OACSE,EAAAF,KAAAE,EAAAlG,KAAA/Y,KAAAyM,yBACTwS,EAAAD,cA/FA,SAAApY,EAAA2O,EAAAwJ,GACA,IAAAI,EAAAvY,EAAA9F,QAAAse,aACAC,EAAAF,GAAArB,GAAAlX,GACA,IAAA2O,EAAApJ,QAAAmT,SAAAH,GAAA5J,EAAApJ,QAAAkQ,OAAAgD,EAAA,CACA,IAAAC,EAAA/J,EAAApJ,QAAAmT,WACA,GAAAH,EAAA,CACA5J,EAAApJ,QAAAkQ,MAAAgD,EAEA,IADA,IAAAE,EAAAhK,EAAAvV,KAAA9H,WAAAsnB,iBACA3zB,EAAA,EAAuBA,EAAA0zB,EAAA1tB,OAAA,EAAsBhG,IAAA,CAC7C,IAAAwU,EAAAkf,EAAA1zB,GAAAgkB,EAAA0P,EAAA1zB,EAAA,GACAmR,KAAAyiB,IAAApf,EAAAqf,OAAA7P,EAAA6P,QAAA,GACaJ,EAAAtzB,MAAAqU,EAAAqf,OAAA7P,EAAA8P,KAAA,EAAAZ,EAAAY,MAGbL,EAAAtzB,KAAA+yB,EAAAW,OAAAX,EAAAY,MAkFAC,CAAAhZ,EAAAqY,EAAAlG,KAAAkG,EAAAF,MACAE,EAAAD,YAAA,IAEApb,EA0DA,SAAAgD,EAAAqY,EAAAlhB,EAAAugB,GACA,IAGAS,EAHAc,EAAAC,GAAAb,EAAA3hB,IAAAS,EAAAugB,GACA5mB,EAAAmoB,EAAAnoB,KAAAgC,EAAAmmB,EAAAnmB,MAAAC,EAAAkmB,EAAAlmB,IAAAO,EAAA2lB,EAAA3lB,SAGA,MAAAxC,EAAAqB,SAAA,CACA,QAAA0H,EAAA,EAAuBA,EAAA,EAASA,IAAA,CAChC,KAAA/G,GAAA6E,GAAA0gB,EAAAnf,KAAAE,KAAApB,OAAAihB,EAAAE,WAAArmB,OAA+FA,EAC/F,KAAAmmB,EAAAE,WAAApmB,EAAAkmB,EAAAG,UAAAzhB,GAAA0gB,EAAAnf,KAAAE,KAAApB,OAAAihB,EAAAE,WAAApmB,OAA+HA,EAK/H,IAHWolB,EADXjpB,GAAAC,EAAA,MAAA2D,GAAAC,GAAAkmB,EAAAG,SAAAH,EAAAE,WACWroB,EAAAsB,WAAAyT,wBAEAwT,GAAAzoB,EAAAE,EAAAgC,EAAAC,GAAA6lB,iBAAAlB,IACX3R,MAAAoS,EAAAnS,OAAA,GAAAlT,EAAoD,MACpDC,EAAAD,EACAA,GAAA,EACAQ,EAAA,QAEApE,GAAAC,EAAA,KAAkCgpB,EAmClC,SAAA5S,EAAA4S,GACA,IAAA7R,OAAAgT,QAAA,MAAAA,OAAAC,aACAD,OAAAC,aAAAD,OAAAE,aA1yCA,SAAAjU,GACA,SAAAyB,GAAiC,OAAAA,GACjC,IAAAlW,EAAAS,EAAAgU,EAAA7T,EAAA,aACA+nB,EAAA3oB,EAAA+U,wBACA6T,EAAA9oB,EAAAE,EAAA,KAAA+U,wBACA,OAAAmB,GAAA5Q,KAAAyiB,IAAAY,EAAA1T,KAAA2T,EAAA3T,MAAA,EAqyCA4T,CAAApU,GACO,OAAA4S,EACP,IAAAyB,EAAAN,OAAAC,YAAAD,OAAAE,WACAK,EAAAP,OAAAQ,YAAAR,OAAAS,WACA,OAAYhU,KAAAoS,EAAApS,KAAA6T,EAAA5T,MAAAmS,EAAAnS,MAAA4T,EACZb,IAAAZ,EAAAY,IAAAc,EAAAf,OAAAX,EAAAW,OAAAe,GA1CkCG,CAAAha,EAAAhW,QAAAub,QAAA4S,QAC7B,CAEL,IAAAQ,EADA7lB,EAAA,IAAsBQ,EAAAokB,EAAA,SAGbS,EADTnY,EAAA9F,QAAAse,eAAAG,EAAA7nB,EAAA8nB,kBAAA3tB,OAAA,EACS0tB,EAAA,SAAAjB,EAAAiB,EAAA1tB,OAAA,KAEA6F,EAAA+U,wBAET,GAAA3W,GAAAC,EAAA,IAAA2D,KAAAqlB,MAAApS,OAAAoS,EAAAnS,OAAA,CACA,IAAAiU,EAAAnpB,EAAAsB,WAAAwmB,iBAAA,GAEST,EADT8B,GACkBlU,KAAAkU,EAAAlU,KAAAC,MAAAiU,EAAAlU,KAAAmU,GAAAla,EAAAhW,SAAA+uB,IAAAkB,EAAAlB,IAAAD,OAAAmB,EAAAnB,QAETqB,GAOT,IAJA,IAAAC,EAAAjC,EAAAY,IAAAV,EAAAF,KAAAY,IAAAsB,EAAAlC,EAAAW,OAAAT,EAAAF,KAAAY,IACAzgB,GAAA8hB,EAAAC,GAAA,EACA3B,EAAAL,EAAAlG,KAAA5M,QAAAmT,QACAzzB,EAAA,EACUA,EAAAyzB,EAAAztB,OAAA,KACHqN,EAAAogB,EAAAzzB,IAD2BA,KAElC,IAAA8zB,EAAA9zB,EAAAyzB,EAAAzzB,EAAA,KAAAq1B,EAAA5B,EAAAzzB,GACAihB,GAAkBH,MAAA,SAAAzS,EAAA6kB,EAAAnS,MAAAmS,EAAApS,MAAAsS,EAAAF,KAAApS,KAClBC,OAAA,QAAA1S,EAAA6kB,EAAApS,KAAAoS,EAAAnS,OAAAqS,EAAAF,KAAApS,KACAgT,MAAAD,OAAAwB,GACAnC,EAAApS,MAAAoS,EAAAnS,QAAoCE,EAAAqU,OAAA,GACpCva,EAAA9F,QAAAsgB,4BAAgDtU,EAAAkU,OAAoBlU,EAAAuU,QAAAJ,GAEpE,OAAAnU,EA1GAwU,CAAA1a,EAAAqY,EAAAlhB,EAAAugB,IACA6C,QAAyBlC,EAAA5J,MAAAlqB,GAAAyY,KAEb+I,KAAA/I,EAAA+I,KAAAC,MAAAhJ,EAAAgJ,MACZ+S,IAAAT,EAAAtb,EAAAod,KAAApd,EAAA+b,IACAD,OAAAR,EAAAtb,EAAAyd,QAAAzd,EAAA8b,QAGA,IAsbA6B,GAtbAR,IAAkBpU,KAAA,EAAAC,MAAA,EAAA+S,IAAA,EAAAD,OAAA,GAElB,SAAAI,GAAAjW,EAAA9L,EAAAugB,GAIA,IAHA,IAAA5mB,EAAAgC,EAAAC,EAAAO,EAAAsnB,EAAAC,EAGA51B,EAAA,EAAmBA,EAAAge,EAAAhY,OAAmBhG,GAAA,EActC,GAbA21B,EAAA3X,EAAAhe,GACA41B,EAAA5X,EAAAhe,EAAA,GACAkS,EAAAyjB,GACA9nB,EAAA,EAAkBC,EAAA,EAClBO,EAAA,QACO6D,EAAA0jB,EAEP9nB,GADAD,EAAAqE,EAAAyjB,GACA,GACO31B,GAAAge,EAAAhY,OAAA,GAAAkM,GAAA0jB,GAAA5X,EAAAhe,EAAA,GAAAkS,KAEPrE,GADAC,EAAA8nB,EAAAD,GACA,EACAzjB,GAAA0jB,IAAyBvnB,EAAA,UAEzB,MAAAR,EAAA,CAIA,GAHAhC,EAAAmS,EAAAhe,EAAA,GACA21B,GAAAC,GAAAnD,IAAA5mB,EAAA0L,WAAA,kBACWlJ,EAAAokB,GACX,QAAAA,GAAA,GAAA5kB,EACW,KAAA7N,GAAAge,EAAAhe,EAAA,IAAAge,EAAAhe,EAAA,IAAAge,EAAAhe,EAAA,GAAAuX,YACX1L,EAAAmS,EAAA,GAAAhe,GAAA,IACAqO,EAAA,OAEA,YAAAokB,GAAA5kB,GAAA+nB,EAAAD,EACW,KAAA31B,EAAAge,EAAAhY,OAAA,GAAAgY,EAAAhe,EAAA,IAAAge,EAAAhe,EAAA,KAAAge,EAAAhe,EAAA,GAAAuX,YACX1L,EAAAmS,GAAAhe,GAAA,MACAqO,EAAA,QAEA,MAGA,OAAYxC,OAAAgC,QAAAC,MAAAO,WAAA6lB,WAAAyB,EAAAxB,SAAAyB,GAGZ,SAAAxB,GAAAV,EAAAjB,GACA,IAAAS,EAAAgC,GACA,WAAAzC,EAAyB,QAAAzyB,EAAA,EAAgBA,EAAA0zB,EAAA1tB,SACzCktB,EAAAQ,EAAA1zB,IAAA8gB,MAAAoS,EAAAnS,MAD2D/gB,UAE7C,QAAA4U,EAAA8e,EAAA1tB,OAAA,EAAiC4O,GAAA,IAC/Cse,EAAAQ,EAAA9e,IAAAkM,MAAAoS,EAAAnS,MADyDnM,KAGzD,OAAAse,EAkEA,SAAA2C,GAAAnM,GACA,GAAAA,EAAApJ,UACAoJ,EAAApJ,QAAAkJ,SACAE,EAAApJ,QAAAmT,QAAA,KACA/J,EAAAM,MAA0B,QAAAhqB,EAAA,EAAgBA,EAAA0pB,EAAAM,KAAAhkB,OAA0BhG,IAC3D0pB,EAAApJ,QAAAiK,OAAAvqB,MAIT,SAAA81B,GAAA/a,GACAA,EAAAhW,QAAAgxB,gBAAA,KACA9pB,EAAA8O,EAAAhW,QAAAiuB,aACA,QAAAhzB,EAAA,EAAmBA,EAAA+a,EAAAhW,QAAAmoB,KAAAlnB,OAA4BhG,IACxC61B,GAAA9a,EAAAhW,QAAAmoB,KAAAltB,IAGP,SAAAg2B,GAAAjb,GACA+a,GAAA/a,GACAA,EAAAhW,QAAAkxB,gBAAAlb,EAAAhW,QAAAmxB,iBAAAnb,EAAAhW,QAAA2sB,eAAA,KACA3W,EAAA9F,QAAAse,eAAmCxY,EAAAhW,QAAAmW,gBAAA,GACnCH,EAAAhW,QAAAoxB,aAAA,KAGA,SAAAC,KAIA,OAAA7rB,GAAAO,IAA4BX,SAAAoD,KAAAqT,wBAAAE,KAAA3a,SAAAwrB,iBAAAxnB,SAAAoD,MAAAsjB,aAC5BxP,OAAAgV,cAAAlsB,SAAAmsB,iBAAAnsB,SAAAoD,MAAA1J,WAEA,SAAA0yB,KACA,OAAAhsB,GAAAO,IAA4BX,SAAAoD,KAAAqT,wBAAAkT,IAAA3tB,SAAAwrB,iBAAAxnB,SAAAoD,MAAAipB,YAC5BnV,OAAAoV,cAAAtsB,SAAAmsB,iBAAAnsB,SAAAoD,MAAA3J,UAGA,SAAA8yB,GAAAhc,GACA,IAAA7V,EAAA,EACA,GAAA6V,EAAAwV,QAA0B,QAAAlwB,EAAA,EAAgBA,EAAA0a,EAAAwV,QAAAlqB,SAA4BhG,EAAO0a,EAAAwV,QAAAlwB,GAAAswB,QACtEzrB,GAAAisB,GAAApW,EAAAwV,QAAAlwB,KACP,OAAA6E,EAOA,SAAA8xB,GAAA5b,EAAAL,EAAAwY,EAAAzN,EAAAmR,GACA,IAAAA,EAAA,CACA,IAAA/xB,EAAA6xB,GAAAhc,GACAwY,EAAAY,KAAAjvB,EAAyBquB,EAAAW,QAAAhvB,EAEzB,WAAA4gB,EAA4B,OAAAyN,EAC5BzN,IAAmBA,EAAA,SACnB,IAAAoR,EAAApc,GAAAC,GAGA,GAFA,SAAA+K,EAA6BoR,GAAAxF,GAAAtW,EAAAhW,SACnB8xB,GAAA9b,EAAAhW,QAAA+xB,WACV,QAAArR,GAAA,UAAAA,EAAA,CACA,IAAAsR,EAAAhc,EAAAhW,QAAAusB,UAAA1Q,wBACAiW,GAAAE,EAAAjD,KAAA,UAAArO,EAAA,EAAA8Q,MACA,IAAAS,EAAAD,EAAAjW,MAAA,UAAA2E,EAAA,EAAA2Q,MACAlD,EAAApS,MAAAkW,EAAwB9D,EAAAnS,OAAAiW,EAGxB,OADA9D,EAAAY,KAAA+C,EAAqB3D,EAAAW,QAAAgD,EACrB3D,EAKA,SAAA+D,GAAAlc,EAAAmc,EAAAzR,GACA,UAAAA,EAA2B,OAAAyR,EAC3B,IAAApW,EAAAoW,EAAApW,KAAAgT,EAAAoD,EAAApD,IAEA,WAAArO,EACA3E,GAAAsV,KACAtC,GAAAyC,UACK,YAAA9Q,MAAA,CACL,IAAA0R,EAAApc,EAAAhW,QAAAosB,MAAAvQ,wBACAE,GAAAqW,EAAArW,KACAgT,GAAAqD,EAAArD,IAGA,IAAAsD,EAAArc,EAAAhW,QAAAusB,UAAA1Q,wBACA,OAAYE,OAAAsW,EAAAtW,KAAAgT,MAAAsD,EAAAtD,KAGZ,SAAAuD,GAAAtc,EAAA/J,EAAAyU,EAAA/K,EAAA+X,GAEA,OADA/X,IAAmBA,EAAAlH,GAAAuH,EAAA3V,IAAA4L,EAAAiD,OACnB0iB,GAAA5b,EAAAL,EAAA8X,GAAAzX,EAAAL,EAAA1J,EAAAkB,GAAAugB,GAAAhN,GAmBA,SAAA6R,GAAAvc,EAAA/J,EAAAyU,EAAA/K,EAAA6c,EAAAlE,GAGA,SAAAmE,EAAAtlB,EAAA6O,GACA,IAAA3D,EAAAsV,GAAA3X,EAAAwc,EAAArlB,EAAA6O,EAAA,eAAAsS,GAEA,OADAtS,EAAkB3D,EAAA0D,KAAA1D,EAAA2D,MAA2B3D,EAAA2D,MAAA3D,EAAA0D,KAC7C6V,GAAA5b,EAAAL,EAAA0C,EAAAqI,GALA/K,KAAAlH,GAAAuH,EAAA3V,IAAA4L,EAAAiD,MACAsjB,IAA2BA,EAAA5E,GAAA5X,EAAAL,IAM3B,IAAAW,EAAAsC,GAAAjD,EAAAK,EAAA3V,IAAA4W,WAAA9J,EAAAlB,EAAAkB,GAAAmD,EAAArE,EAAAqE,OAQA,GAPAnD,GAAAwI,EAAAvG,KAAAnO,QACAkM,EAAAwI,EAAAvG,KAAAnO,OACAqP,EAAA,UACKnD,GAAA,IACLA,EAAA,EACAmD,EAAA,UAEAgG,EAAiB,OAAAmc,EAAA,UAAAniB,EAAAnD,EAAA,EAAAA,EAAA,UAAAmD,GAEjB,SAAAoiB,EAAAvlB,EAAAwlB,EAAAC,GACA,IAAA5W,EAAA,GAAA1F,EAAAqc,GAAA3b,MACA,OAAAyb,EAAAG,EAAAzlB,EAAA,EAAAA,EAAA6O,GAAA4W,GAEA,IAAAD,EAAAtc,GAAAC,EAAAnJ,EAAAmD,GACAuiB,EAAAzc,GACA8H,EAAAwU,EAAAvlB,EAAAwlB,EAAA,UAAAriB,GAEA,OADA,MAAAuiB,IAAwB3U,EAAA2U,MAAAH,EAAAvlB,EAAA0lB,EAAA,UAAAviB,IACxB4N,EAKA,SAAA4U,GAAA9c,EAAA/J,GACA,IAAA8P,EAAA,EACA9P,EAAA8E,GAAAiF,EAAA3V,IAAA4L,GACA+J,EAAA9F,QAAAse,eAAmCzS,EAAAmU,GAAAla,EAAAhW,SAAAiM,EAAAkB,IACnC,IAAAwI,EAAAlH,GAAAuH,EAAA3V,IAAA4L,EAAAiD,MACA6f,EAAArZ,GAAAC,GAAA2W,GAAAtW,EAAAhW,SACA,OAAY+b,OAAAC,MAAAD,EAAAgT,MAAAD,OAAAC,EAAApZ,EAAA7V,QASZ,SAAAizB,GAAA7jB,EAAA/B,EAAAmD,EAAA0iB,EAAAC,GACA,IAAAhnB,EAAAoE,GAAAnB,EAAA/B,EAAAmD,GAGA,OAFArE,EAAAgnB,OACAD,IAAkB/mB,EAAA+mB,SAAA,GAClB/mB,EAKA,SAAAinB,GAAAld,EAAAtF,EAAAyiB,GACA,IAAA9yB,EAAA2V,EAAA3V,IAEA,IADA8yB,GAAAnd,EAAAhW,QAAA+xB,YACA,EAAgB,OAAAgB,GAAA1yB,EAAAqO,MAAA,cAChB,IAAAyG,EAAAxF,GAAAtP,EAAA8yB,GAAAniB,EAAA3Q,EAAAqO,MAAArO,EAAAlD,KAAA,EACA,GAAAgY,EAAAnE,EACO,OAAA+hB,GAAA1yB,EAAAqO,MAAArO,EAAAlD,KAAA,EAAAsR,GAAApO,EAAA2Q,GAAA5B,KAAAnO,OAAA,WACPyP,EAAA,IAAgBA,EAAA,GAGhB,IADA,IAAAiF,EAAAlH,GAAApO,EAAA8U,KACW,CACX,IAAAnC,EAAAogB,GAAApd,EAAAL,EAAAR,EAAAzE,EAAAyiB,GACAze,EAAAG,GAAAc,EAAA3C,EAAA7F,IAAA6F,EAAAigB,KAAA,QACA,IAAAve,EAAuB,OAAA1B,EACvB,IAAAqgB,EAAA3e,EAAAP,KAAA,GACA,GAAAkf,EAAAnkB,MAAAiG,EAAmC,OAAAke,EACnC1d,EAAAlH,GAAApO,EAAA8U,EAAAke,EAAAnkB,OAIA,SAAAokB,GAAAtd,EAAAL,EAAA6c,EAAAW,GACAA,GAAAxB,GAAAhc,GACA,IAAA5M,EAAA4M,EAAAvG,KAAAnO,OACAsyB,EAAAtlB,GAAA,SAAAd,GAAyC,OAAAwgB,GAAA3X,EAAAwc,EAAArlB,EAAA,GAAA2hB,QAAAqE,GAAuEpqB,EAAA,GAEhH,OAAYwqB,QAAAxqB,IADZA,EAAAkF,GAAA,SAAAd,GAAmC,OAAAwgB,GAAA3X,EAAAwc,EAAArlB,GAAA4hB,IAAAoE,GAA+DI,EAAAxqB,IAIlG,SAAAyqB,GAAAxd,EAAAL,EAAA6c,EAAAnoB,GAGA,OAFAmoB,IAA2BA,EAAA5E,GAAA5X,EAAAL,IAE3B2d,GAAAtd,EAAAL,EAAA6c,EADAZ,GAAA5b,EAAAL,EAAAgY,GAAA3X,EAAAwc,EAAAnoB,GAAA,QAAA0kB,KAMA,SAAA0E,GAAAC,EAAAhjB,EAAAyiB,EAAApX,GACA,QAAA2X,EAAA5E,QAAAqE,KAAAO,EAAA3E,IAAAoE,IAAApX,EAAA2X,EAAA3X,KAAA2X,EAAA1X,OAAAtL,GAGA,SAAA0iB,GAAApd,EAAAL,EAAAZ,EAAArE,EAAAyiB,GAEAA,GAAAzd,GAAAC,GACA,IAAA6c,EAAA5E,GAAA5X,EAAAL,GAGAge,EAAAhC,GAAAhc,GACA4d,EAAA,EAAAxqB,EAAA4M,EAAAvG,KAAAnO,OAAA2yB,GAAA,EAEAtd,EAAAsC,GAAAjD,EAAAK,EAAA3V,IAAA4W,WAGA,GAAAX,EAAA,CACA,IAAAuQ,GAAA7Q,EAAA9F,QAAAse,aA8EA,SAAAxY,EAAAL,EAAAke,EAAArB,EAAAlc,EAAA5F,EAAAyiB,GAQA,IAAAW,EAAAR,GAAAtd,EAAAL,EAAA6c,EAAAW,GACAI,EAAAO,EAAAP,MACAxqB,EAAA+qB,EAAA/qB,IACA,KAAAlE,KAAA8Q,EAAAvG,KAAApB,OAAAjF,EAAA,KAAkDA,IAElD,IADA,IAAA8d,EAAA,KAAAkN,EAAA,KACA94B,EAAA,EAAmBA,EAAAqb,EAAArV,OAAkBhG,IAAA,CACrC,IAAAmB,EAAAka,EAAArb,GACA,KAAAmB,EAAA+R,MAAApF,GAAA3M,EAAAgS,IAAAmlB,GAAA,CACA,IAAAK,EAAA,GAAAx3B,EAAA4a,MACAgd,EAAArG,GAAA3X,EAAAwc,EAAAoB,EAAAxnB,KAAAC,IAAAtD,EAAA3M,EAAAgS,IAAA,EAAAhC,KAAA0E,IAAAyiB,EAAAn3B,EAAA+R,OAAA6N,MAGAiY,EAAAD,EAAAtjB,IAAAsjB,EAAA,IAAAA,EAAAtjB,IACAmW,GAAAkN,EAAAE,KACApN,EAAAzqB,EACA23B,EAAAE,IAGApN,IAAgBA,EAAAvQ,IAAArV,OAAA,IAEhB4lB,EAAA1Y,KAAAolB,IAA4B1M,GAAS1Y,KAAAolB,EAAAnlB,GAAAyY,EAAAzY,GAAA4I,MAAA6P,EAAA7P,QACrC6P,EAAAzY,GAAArF,IAAwB8d,GAAS1Y,KAAA0Y,EAAA1Y,KAAAC,GAAArF,EAAAiO,MAAA6P,EAAA7P,QACjC,OAAA6P,GAtDA,SAAA7Q,EAAAL,EAAAZ,EAAAyd,EAAAlc,EAAA5F,EAAAyiB,GAKA,IAAAtvB,EAAAoK,GAAA,SAAAhT,GACA,IAAA4rB,EAAAvQ,EAAArb,GAAA24B,EAAA,GAAA/M,EAAA7P,MACA,OAAAyc,GAAAlB,GAAAvc,EAAA3F,GAAA0E,EAAA6e,EAAA/M,EAAAzY,GAAAyY,EAAA1Y,KAAAylB,EAAA,kBACA,OAAAje,EAAA6c,GAAA9hB,EAAAyiB,GAAA,IACK,EAAA7c,EAAArV,OAAA,GACL4lB,EAAAvQ,EAAAzS,GAIA,GAAAA,EAAA,GACA,IAAA+vB,EAAA,GAAA/M,EAAA7P,MACAlO,EAAAypB,GAAAvc,EAAA3F,GAAA0E,EAAA6e,EAAA/M,EAAA1Y,KAAA0Y,EAAAzY,GAAAwlB,EAAA,kBACA,OAAAje,EAAA6c,GACAiB,GAAA3qB,EAAA4H,EAAAyiB,GAAA,IAAArqB,EAAAimB,IAAAoE,IACStM,EAAAvQ,EAAAzS,EAAA,IAET,OAAAgjB,IA1EA7Q,EAAAL,EAAAZ,EAAAyd,EAAAlc,EAAA5F,EAAAyiB,GAMAI,GALAK,EAAA,GAAA/M,EAAA7P,OAKA6P,EAAA1Y,KAAA0Y,EAAAzY,GAAA,EACArF,EAAA6qB,EAAA/M,EAAAzY,GAAAyY,EAAA1Y,KAAA,EAMA,IAYA+lB,EAAA5jB,EAZA6jB,EAAA,KAAAC,EAAA,KACAjnB,EAAAc,GAAA,SAAAd,GACA,IAAAumB,EAAA/F,GAAA3X,EAAAwc,EAAArlB,GAEA,OADAumB,EAAA3E,KAAA4E,EAAiCD,EAAA5E,QAAA6E,IACjCF,GAAAC,EAAAhjB,EAAAyiB,GAAA,KACAO,EAAA3E,KAAAoE,GAAAO,EAAA3X,MAAArL,IACAyjB,EAAAhnB,EACAinB,EAAAV,IAEA,IACKH,EAAAxqB,GAELiqB,GAAA,EAEA,GAAAoB,EAAA,CAEA,IAAAC,EAAA3jB,EAAA0jB,EAAArY,KAAAqY,EAAApY,MAAAtL,EAAA4jB,EAAAD,GAAAT,EACAzmB,EAAAgnB,GAAAG,EAAA,KACAhkB,EAAAgkB,EAAA,iBACAJ,EAAAG,EAAAD,EAAArY,KAAAqY,EAAApY,UACK,CAEL4X,GAAAzmB,GAAApE,GAAAoE,GAAAomB,GAA+CpmB,IAI/CmD,EAAA,GAAAnD,EAAA,QAAAA,GAAAwI,EAAAvG,KAAAnO,OAAA,SACA0sB,GAAA3X,EAAAwc,EAAArlB,GAAAymB,EAAA,MAAA9E,OAAA6E,GAAAR,GAAAS,EACA,iBAGA,IAAAzB,EAAAI,GAAAvc,EAAA3F,GAAA0E,EAAA5H,EAAAmD,GAAA,OAAAqF,EAAA6c,GACA0B,EAAA/B,EAAApW,KACAiX,EAAAG,EAAAhB,EAAApD,KAAAoE,GAAAhB,EAAArD,OAIA,OAAAiE,GAAAhe,EADA5H,EAAAU,GAAA8H,EAAAvG,KAAAjC,EAAA,GACAmD,EAAA0iB,EAAAtiB,EAAAwjB,GA8DA,SAAAK,GAAAv0B,GACA,SAAAA,EAAAmxB,iBAA2C,OAAAnxB,EAAAmxB,iBAC3C,SAAAR,GAAA,CACAA,GAAAjpB,EAAA,OAGA,QAAAzM,EAAA,EAAqBA,EAAA,KAAQA,EAC7B01B,GAAAlpB,YAAArC,SAAA0C,eAAA,MACA6oB,GAAAlpB,YAAAC,EAAA,OAEAipB,GAAAlpB,YAAArC,SAAA0C,eAAA,MAEAP,EAAAvH,EAAAub,QAAAoV,IACA,IAAA7wB,EAAA6wB,GAAAnV,aAAA,GAGA,OAFA1b,EAAA,IAAqBE,EAAAmxB,iBAAArxB,GACrBoH,EAAAlH,EAAAub,SACAzb,GAAA,EAIA,SAAAowB,GAAAlwB,GACA,SAAAA,EAAAkxB,gBAA0C,OAAAlxB,EAAAkxB,gBAC1C,IAAAsD,EAAA9sB,EAAA,qBACAmd,EAAAnd,EAAA,OAAA8sB,IACAjtB,EAAAvH,EAAAub,QAAAsJ,GACA,IAAAsJ,EAAAqG,EAAA3Y,wBAAA4P,GAAA0C,EAAAnS,MAAAmS,EAAApS,MAAA,GAEA,OADA0P,EAAA,IAAoBzrB,EAAAkxB,gBAAAzF,GACpBA,GAAA,GAKA,SAAAsC,GAAA/X,GAGA,IAFA,IAAAxb,EAAAwb,EAAAhW,QAAA+b,KAAiC0P,KACjChB,EAAAjwB,EAAAmwB,QAAA8J,WACAp6B,EAAAG,EAAAmwB,QAAArjB,WAAArM,EAAA,EAA6CZ,EAAGA,IAAAywB,cAAA7vB,EAChD8gB,EAAA/F,EAAA9F,QAAAya,QAAA1vB,IAAAZ,EAAAq6B,WAAAr6B,EAAAo6B,WAAAhK,EACAgB,EAAAzV,EAAA9F,QAAAya,QAAA1vB,IAAAZ,EAAA4xB,YAEA,OAAYhC,SAAA0K,GAAAn6B,GACZ0vB,iBAAA1vB,EAAAmwB,QAAAlP,YACAgP,WAAA1O,EACA6O,YAAAa,EACAC,aAAAlxB,EAAAyF,QAAAgsB,aAMA,SAAA0I,GAAA30B,GACA,OAAAA,EAAAmtB,SAAAtR,wBAAAE,KAAA/b,EAAAosB,MAAAvQ,wBAAAE,KAMA,SAAAqI,GAAApO,GACA,IAAA4e,EAAAL,GAAAve,EAAAhW,SAAAuuB,EAAAvY,EAAA9F,QAAAse,aACAqG,EAAAtG,GAAAniB,KAAA0E,IAAA,EAAAkF,EAAAhW,QAAAmtB,SAAAlB,YAAAiE,GAAAla,EAAAhW,SAAA,GACA,gBAAAkP,GACA,GAAAqG,GAAAS,EAAA3V,IAAA6O,GAAuC,SAEvC,IAAA4lB,EAAA,EACA,GAAA5lB,EAAAic,QAAyB,QAAAlwB,EAAA,EAAgBA,EAAAiU,EAAAic,QAAAlqB,OAAyBhG,IAClEiU,EAAAic,QAAAlwB,GAAA6E,SAAqCg1B,GAAA5lB,EAAAic,QAAAlwB,GAAA6E,QAGrC,OAAAyuB,EACSuG,GAAA1oB,KAAAmC,KAAAW,EAAAE,KAAAnO,OAAA4zB,IAAA,GAAAD,EAEAE,EAAAF,GAIT,SAAAG,GAAA/e,GACA,IAAA3V,EAAA2V,EAAA3V,IAAA20B,EAAA5Q,GAAApO,GACA3V,EAAA8O,KAAA,SAAAD,GACA,IAAA+lB,EAAAD,EAAA9lB,GACA+lB,GAAA/lB,EAAApP,QAAqCwP,GAAAJ,EAAA+lB,KASrC,SAAAC,GAAAlf,EAAAhX,EAAAm2B,EAAAC,GACA,IAAAp1B,EAAAgW,EAAAhW,QACA,IAAAm1B,GAAA,QAAAva,GAAA5b,GAAAmtB,aAAA,kBAA2E,YAE3E,IAAAzb,EAAAyiB,EAAAkC,EAAAr1B,EAAAusB,UAAA1Q,wBAEA,IAASnL,EAAA1R,EAAAs2B,QAAAD,EAAAtZ,KAA4BoX,EAAAn0B,EAAAu2B,QAAAF,EAAAtG,IACrC,MAAA/vB,GAAe,YACf,IAAAkQ,EAAAijB,EAAAe,GAAAld,EAAAtF,EAAAyiB,GACA,GAAAiC,GAAA,GAAAjD,EAAAc,OAAA/jB,EAAAT,GAAAuH,EAAA3V,IAAA8xB,EAAAjjB,MAAAE,MAAAnO,QAAAkxB,EAAAhlB,GAAA,CACA,IAAAqoB,EAAA/qB,EAAAyE,IAAAjO,OAAA+U,EAAA9F,QAAAvF,SAAAuE,EAAAjO,OACAkxB,EAAA9hB,GAAA8hB,EAAAjjB,KAAA9C,KAAA0E,IAAA,EAAA1E,KAAAqpB,OAAA/kB,EAAAgc,GAAA1W,EAAAhW,SAAA+b,MAAAmU,GAAAla,EAAAhW,UAAAw1B,IAEA,OAAArD,EAKA,SAAArE,GAAA9X,EAAA3b,GACA,GAAAA,GAAA2b,EAAAhW,QAAA8iB,OAAiC,YAEjC,IADAzoB,GAAA2b,EAAAhW,QAAA6iB,UACA,EAAgB,YAEhB,IADA,IAAAsF,EAAAnS,EAAAhW,QAAAmoB,KACAltB,EAAA,EAAmBA,EAAAktB,EAAAlnB,OAAiBhG,IAEpC,IADAZ,GAAA8tB,EAAAltB,GAAAkC,MACA,EAAkB,OAAAlC,EAIlB,SAAAy6B,GAAA1f,GACAA,EAAAhW,QAAAinB,MAAA0O,cAAA3f,EAAAhW,QAAAinB,MAAA2O,oBAGA,SAAAA,GAAA5f,EAAA6f,QACA,IAAAA,OAAA,GAMA,IAJA,IAAAx1B,EAAA2V,EAAA3V,IAAA6b,KACA4Z,EAAA5Z,EAAA6Z,QAAA3wB,SAAAkhB,yBACA0P,EAAA9Z,EAAAS,UAAAvX,SAAAkhB,yBAEArrB,EAAA,EAAmBA,EAAAoF,EAAA41B,IAAAC,OAAAj1B,OAA2BhG,IAC9C,GAAA46B,GAAA56B,GAAAoF,EAAA41B,IAAAE,UAAA,CACA,IAAA1Z,EAAApc,EAAA41B,IAAAC,OAAAj7B,GACA,KAAAwhB,EAAAtO,OAAAe,MAAA8G,EAAAhW,QAAA8iB,QAAArG,EAAArO,KAAAc,KAAA8G,EAAAhW,QAAA6iB,UAAA,CACA,IAAAnO,EAAA+H,EAAA2Z,SACA1hB,GAAAsB,EAAA9F,QAAAmmB,0BACSC,GAAAtgB,EAAAyG,EAAA8Z,KAAAT,GACTphB,GACS8hB,GAAAxgB,EAAAyG,EAAAuZ,IAET,OAAA9Z,EAIA,SAAAoa,GAAAtgB,EAAAugB,EAAA3S,GACA,IAAA3X,EAAAsmB,GAAAvc,EAAAugB,EAAA,iBAAAvgB,EAAA9F,QAAAsgB,2BAEAiG,EAAA7S,EAAAnc,YAAAC,EAAA,gCAKA,GAJA+uB,EAAAv2B,MAAA6b,KAAA9P,EAAA8P,KAAA,KACA0a,EAAAv2B,MAAA6uB,IAAA9iB,EAAA8iB,IAAA,KACA0H,EAAAv2B,MAAAJ,OAAAsM,KAAA0E,IAAA,EAAA7E,EAAA6iB,OAAA7iB,EAAA8iB,KAAA/Y,EAAA9F,QAAAwmB,aAAA,KAEAzqB,EAAA4mB,MAAA,CAEA,IAAA8D,EAAA/S,EAAAnc,YAAAC,EAAA,2DACAivB,EAAAz2B,MAAAF,QAAA,GACA22B,EAAAz2B,MAAA6b,KAAA9P,EAAA4mB,MAAA9W,KAAA,KACA4a,EAAAz2B,MAAA6uB,IAAA9iB,EAAA4mB,MAAA9D,IAAA,KACA4H,EAAAz2B,MAAAJ,OAAA,KAAAmM,EAAA4mB,MAAA/D,OAAA7iB,EAAA4mB,MAAA9D,KAAA,MAIA,SAAA6H,GAAA97B,EAAA6N,GAA4B,OAAA7N,EAAAi0B,IAAApmB,EAAAomB,KAAAj0B,EAAAihB,KAAApT,EAAAoT,KAG5B,SAAAya,GAAAxgB,EAAAyG,EAAAmH,GACA,IAAA5jB,EAAAgW,EAAAhW,QAAAK,EAAA2V,EAAA3V,IACAw2B,EAAAzxB,SAAAkhB,yBACAwQ,EAAApK,GAAA1W,EAAAhW,SAAA+2B,EAAAD,EAAA/a,KACAib,EAAA5qB,KAAA0E,IAAA9Q,EAAAi3B,WAAA/J,GAAAlX,GAAAhW,EAAAosB,MAAAsI,YAAAoC,EAAA9a,MACAkb,EAAA,OAAA72B,EAAA4W,UAEA,SAAAkgB,EAAApb,EAAAgT,EAAAtD,EAAAqD,GACAC,EAAA,IAAoBA,EAAA,GACpBA,EAAA3iB,KAAAqpB,MAAA1G,GACAD,EAAA1iB,KAAAqpB,MAAA3G,GACA+H,EAAApvB,YAAAC,EAAA,8DAAwFqU,EAAA,0CAAsBgT,EAAA,eAAkD,MAAAtD,EAAAuL,EAAAjb,EAAA0P,GAAA,8CAA6DqD,EAAAC,GAAA,OAG7N,SAAAqI,EAAAloB,EAAAmoB,EAAAC,GACA,IAEAxuB,EAAAC,EAFA4M,EAAAlH,GAAApO,EAAA6O,GACAqoB,EAAA5hB,EAAAvG,KAAAnO,OAEA,SAAAkxB,EAAAhlB,EAAAugB,GACA,OAAA4E,GAAAtc,EAAA3F,GAAAnB,EAAA/B,GAAA,MAAAwI,EAAA+X,GAGA,SAAA8J,EAAAvrB,EAAA8B,EAAA0pB,GACA,IAAAC,EAAAlE,GAAAxd,EAAAL,EAAA,KAAA1J,GACA1B,EAAA,OAAAwD,IAAA,SAAA0pB,GAAA,eAEA,OAAAtF,EADA,SAAAsF,EAAAC,EAAAnE,MAAAmE,EAAA3uB,KAAA,KAAAlE,KAAA8Q,EAAAvG,KAAApB,OAAA0pB,EAAA3uB,IAAA,SACAwB,MAGA,IAAA+L,EAAAsC,GAAAjD,EAAAtV,EAAA4W,WAqCA,OA/tEA,SAAAX,EAAAnI,EAAAC,EAAAxE,GACA,IAAA0M,EAAiB,OAAA1M,EAAAuE,EAAAC,EAAA,SAEjB,IADA,IAAA4E,GAAA,EACA/X,EAAA,EAAmBA,EAAAqb,EAAArV,SAAkBhG,EAAA,CACrC,IAAA4rB,EAAAvQ,EAAArb,IACA4rB,EAAA1Y,KAAAC,GAAAyY,EAAAzY,GAAAD,MAAAC,GAAAyY,EAAAzY,IAAAD,KACAvE,EAAAwC,KAAA0E,IAAA+V,EAAA1Y,QAAA/B,KAAAC,IAAAwa,EAAAzY,MAAA,GAAAyY,EAAA7P,MAAA,YAAA/b,GACA+X,GAAA,GAGAA,GAAiBpJ,EAAAuE,EAAAC,EAAA,OAirEjBupB,CAAArhB,EAAA+gB,GAAA,QAAAC,EAAAC,EAAAD,EAAA,SAAAnpB,EAAAC,EAAAL,EAAA9S,GACA,IAAA24B,EAAA,OAAA7lB,EACA6pB,EAAAzF,EAAAhkB,EAAAylB,EAAA,gBACAiE,EAAA1F,EAAA/jB,EAAA,EAAAwlB,EAAA,gBAEAkE,EAAA,MAAAT,GAAA,GAAAlpB,EAAA4pB,EAAA,MAAAT,GAAAlpB,GAAAmpB,EACA7oB,EAAA,GAAAzT,EAAA+V,GAAAsF,GAAArb,GAAAqb,EAAArV,OAAA,EACA,GAAA42B,EAAA9I,IAAA6I,EAAA7I,KAAA,GACA,IACAiJ,GAAAd,EAAAa,EAAAD,IAAA9mB,EACA+K,GAFAmb,EAAAY,EAAAC,IAAArpB,EAEAqoB,GAAAnD,EAAAgE,EAAAC,GAAA9b,KACAC,EAAAgc,EAAAhB,GAAApD,EAAAiE,EAAAD,GAAA5b,MACAmb,EAAApb,EAAA6b,EAAA7I,IAAA/S,EAAAD,EAAA6b,EAAA9I,YACS,CACT,IAAAmJ,EAAAC,EAAAC,EAAAC,EACAxE,GACAqE,EAAAf,GAAAY,GAAAppB,EAAAqoB,EAAAa,EAAA7b,KACAmc,EAAAhB,EAAAF,EAAAQ,EAAArpB,EAAAJ,EAAA,UACAoqB,EAAAjB,EAAAH,EAAAS,EAAAppB,EAAAL,EAAA,SACAqqB,EAAAlB,GAAAa,GAAA/mB,EAAAgmB,EAAAa,EAAA7b,QAEAic,EAAAf,EAAAM,EAAArpB,EAAAJ,EAAA,UAAAgpB,EACAmB,GAAAhB,GAAAY,GAAAppB,EAAAsoB,EAAAY,EAAA5b,MACAmc,GAAAjB,GAAAa,GAAA/mB,EAAA+lB,EAAAc,EAAA9b,KACAqc,EAAAlB,EAAAM,EAAAppB,EAAAL,EAAA,SAAAipB,GAEAG,EAAAc,EAAAL,EAAA7I,IAAAmJ,EAAAD,EAAAL,EAAA9I,QACA8I,EAAA9I,OAAA+I,EAAA9I,KAA2CoI,EAAAJ,EAAAa,EAAA9I,OAAA,KAAA+I,EAAA9I,KAC3CoI,EAAAgB,EAAAN,EAAA9I,IAAAqJ,EAAAD,EAAAN,EAAA/I,UAGAhmB,GAAA8tB,GAAAgB,EAAA9uB,GAAA,KAAsDA,EAAA8uB,GACtDhB,GAAAiB,EAAA/uB,GAAA,IAA0CA,EAAA+uB,KAC1C9uB,GAAA6tB,GAAAgB,EAAA7uB,GAAA,KAAkDA,EAAA6uB,GAClDhB,GAAAiB,EAAA9uB,GAAA,IAAwCA,EAAA8uB,MAE1B/uB,QAAAC,OAGd,IAAAsvB,EAAA5b,EAAAtO,OAAAmqB,EAAA7b,EAAArO,KACA,GAAAiqB,EAAAnpB,MAAAopB,EAAAppB,KACAkoB,EAAAiB,EAAAnpB,KAAAmpB,EAAAlrB,GAAAmrB,EAAAnrB,QACK,CACL,IAAAorB,EAAA9pB,GAAApO,EAAAg4B,EAAAnpB,MAAAspB,EAAA/pB,GAAApO,EAAAi4B,EAAAppB,MACAupB,EAAAzjB,GAAAujB,IAAAvjB,GAAAwjB,GACAE,EAAAtB,EAAAiB,EAAAnpB,KAAAmpB,EAAAlrB,GAAAsrB,EAAAF,EAAAnpB,KAAAnO,OAAA,QAAA8H,IACA4vB,EAAAvB,EAAAkB,EAAAppB,KAAAupB,EAAA,OAAAH,EAAAnrB,IAAArE,MACA2vB,IACAC,EAAA3J,IAAA4J,EAAA5J,IAAA,GACAoI,EAAAuB,EAAA1c,MAAA0c,EAAA3J,IAAA,KAAA2J,EAAA5J,QACAqI,EAAAJ,EAAA4B,EAAA5J,IAAA4J,EAAA5c,KAAA4c,EAAA7J,SAEAqI,EAAAuB,EAAA1c,MAAA0c,EAAA3J,IAAA4J,EAAA5c,KAAA2c,EAAA1c,MAAA0c,EAAA5J,SAGA4J,EAAA5J,OAAA6J,EAAA5J,KACSoI,EAAAJ,EAAA2B,EAAA5J,OAAA,KAAA6J,EAAA5J,KAGTnL,EAAAnc,YAAAovB,GAIA,SAAA+B,GAAA5iB,GACA,GAAAA,EAAAgI,MAAA6a,QAAA,CACA,IAAA74B,EAAAgW,EAAAhW,QACA84B,cAAA94B,EAAA+4B,SACA,IAAAx4B,GAAA,EACAP,EAAAg5B,UAAA94B,MAAA+4B,WAAA,GACAjjB,EAAA9F,QAAAgpB,gBAAA,EACOl5B,EAAA+4B,QAAAI,YAAA,WAA4C,OAAAn5B,EAAAg5B,UAAA94B,MAAA+4B,YAAA14B,MAAA,aACnDyV,EAAA9F,QAAAgpB,iBACAljB,EAAA9F,QAAAgpB,gBAAA,IACOl5B,EAAAg5B,UAAA94B,MAAA+4B,WAAA,WAGP,SAAAG,GAAApjB,GACAA,EAAAgI,MAAA6a,UAA4B7iB,EAAAhW,QAAAinB,MAAAoS,QAA0BC,GAAAtjB,IAGtD,SAAAujB,GAAAvjB,GACAA,EAAAgI,MAAAwb,mBAAA,EACA76B,WAAA,WAA4BqX,EAAAgI,MAAAwb,oBAC5BxjB,EAAAgI,MAAAwb,mBAAA,EACAC,GAAAzjB,KACO,KAGP,SAAAsjB,GAAAtjB,EAAAhX,GACAgX,EAAAgI,MAAAwb,oBAAqCxjB,EAAAgI,MAAAwb,mBAAA,GAErC,YAAAxjB,EAAA9F,QAAAwpB,WACA1jB,EAAAgI,MAAA6a,UACAtf,GAAAvD,EAAA,QAAAA,EAAAhX,GACAgX,EAAAgI,MAAA6a,SAAA,EACA30B,EAAA8R,EAAAhW,QAAAC,QAAA,sBAIA+V,EAAAiE,OAAAjE,EAAAhW,QAAA25B,mBAAA3jB,EAAA3V,IAAA41B,MACAjgB,EAAAhW,QAAAinB,MAAA2S,QACAt0B,GAAqB3G,WAAA,WAAyB,OAAAqX,EAAAhW,QAAAinB,MAAA2S,OAAA,IAAuC,KAErF5jB,EAAAhW,QAAAinB,MAAA4S,iBAEAjB,GAAA5iB,IAEA,SAAAyjB,GAAAzjB,EAAAhX,GACAgX,EAAAgI,MAAAwb,oBAEAxjB,EAAAgI,MAAA6a,UACAtf,GAAAvD,EAAA,OAAAA,EAAAhX,GACAgX,EAAAgI,MAAA6a,SAAA,EACAhyB,EAAAmP,EAAAhW,QAAAC,QAAA,uBAEA64B,cAAA9iB,EAAAhW,QAAA+4B,SACAp6B,WAAA,WAA4BqX,EAAAgI,MAAA6a,UAAyB7iB,EAAAhW,QAAA85B,OAAA,IAA8B,MAKnF,SAAAC,GAAA/jB,GAGA,IAFA,IAAAhW,EAAAgW,EAAAhW,QACAg6B,EAAAh6B,EAAAi6B,QAAAzN,UACAvxB,EAAA,EAAmBA,EAAA+E,EAAAmoB,KAAAlnB,OAAyBhG,IAAA,CAC5C,IAAAwU,EAAAzP,EAAAmoB,KAAAltB,GAAAszB,EAAAvY,EAAA9F,QAAAse,aACA1uB,OAAA,EAAA2rB,EAAA,EACA,IAAAhc,EAAAuY,OAAA,CACA,GAAA9iB,GAAAC,EAAA,GACA,IAAAmrB,EAAA7gB,EAAA3I,KAAA0lB,UAAA/c,EAAA3I,KAAA0U,aACA1b,EAAAwwB,EAAA0J,EACAA,EAAA1J,MACO,CACP,IAAAoD,EAAAjkB,EAAA3I,KAAA+U,wBACA/b,EAAA4zB,EAAA5E,OAAA4E,EAAA3E,KAGAR,GAAA9e,EAAAL,KAAA9H,aACWmkB,EAAAhc,EAAAL,KAAA9H,WAAAuU,wBAAAG,MAAA0X,EAAA3X,KAAA,GAEX,IAAAxM,EAAAE,EAAAP,KAAApP,SACA,IAAAyP,EAAA,MAAAA,GAAA,QACAD,GAAAG,EAAAP,KAAApP,GACAo6B,GAAAzqB,EAAAP,MACAO,EAAAwV,MAAuB,QAAArN,EAAA,EAAgBA,EAAAnI,EAAAwV,KAAAhkB,OAAqB2W,IACjDsiB,GAAAzqB,EAAAwV,KAAArN,IAEX,GAAA6T,EAAAzV,EAAAhW,QAAAi3B,WAAA,CACA,IAAAkD,EAAA/tB,KAAAmC,KAAAkd,EAAAyE,GAAAla,EAAAhW,UACAm6B,EAAAnkB,EAAAhW,QAAAkW,gBACAF,EAAAhW,QAAAkW,cAAAikB,EACAnkB,EAAAhW,QAAAiW,QAAAxG,EAAAP,KACA8G,EAAAhW,QAAAmW,gBAAA,MAQA,SAAA+jB,GAAAhrB,GACA,GAAAA,EAAAic,QAAuB,QAAAlwB,EAAA,EAAgBA,EAAAiU,EAAAic,QAAAlqB,SAAyBhG,EAAA,CAChE,IAAAm/B,EAAAlrB,EAAAic,QAAAlwB,GAAAuM,EAAA4yB,EAAAtzB,KAAAsB,WACAZ,IAAmB4yB,EAAAt6B,OAAA0H,EAAAgU,eAOnB,SAAA6e,GAAAr6B,EAAAK,EAAAi6B,GACA,IAAAvL,EAAAuL,GAAA,MAAAA,EAAAvL,IAAA3iB,KAAA0E,IAAA,EAAAwpB,EAAAvL,KAAA/uB,EAAAmtB,SAAAtuB,UACAkwB,EAAA3iB,KAAAoC,MAAAugB,EAAAzC,GAAAtsB,IACA,IAAA8uB,EAAAwL,GAAA,MAAAA,EAAAxL,OAAAwL,EAAAxL,OAAAC,EAAA/uB,EAAAC,QAAAqtB,aAEAnf,EAAAwB,GAAAtP,EAAA0uB,GAAA3gB,EAAAuB,GAAAtP,EAAAyuB,GAGA,GAAAwL,KAAAC,OAAA,CACA,IAAAC,EAAAF,EAAAC,OAAApsB,KAAAe,KAAAurB,EAAAH,EAAAC,OAAAnsB,GAAAc,KACAsrB,EAAArsB,GACAA,EAAAqsB,EACApsB,EAAAuB,GAAAtP,EAAAqV,GAAAjH,GAAApO,EAAAm6B,IAAAx6B,EAAAC,QAAAqtB,eACOlhB,KAAAC,IAAAouB,EAAAp6B,EAAAiV,aAAAlH,IACPD,EAAAwB,GAAAtP,EAAAqV,GAAAjH,GAAApO,EAAAo6B,IAAAz6B,EAAAC,QAAAqtB,cACAlf,EAAAqsB,GAGA,OAAYtsB,OAAAC,GAAAhC,KAAA0E,IAAA1C,EAAAD,EAAA,IAKZ,SAAAusB,GAAA1kB,GACA,IAAAhW,EAAAgW,EAAAhW,QAAAmoB,EAAAnoB,EAAAmoB,KACA,GAAAnoB,EAAA26B,cAAA36B,EAAA2qB,QAAArjB,YAAA0O,EAAA9F,QAAA8Z,YAAA,CAGA,IAFA,IAAA4Q,EAAAjG,GAAA30B,KAAAmtB,SAAAruB,WAAAkX,EAAA3V,IAAAvB,WACA+7B,EAAA76B,EAAA2qB,QAAAlP,YAAAM,EAAA6e,EAAA,KACA3/B,EAAA,EAAmBA,EAAAktB,EAAAlnB,OAAiBhG,IAAO,IAAAktB,EAAAltB,GAAA+sB,OAAA,CAC3ChS,EAAA9F,QAAA8Z,cACA7B,EAAAltB,GAAA4uB,SACW1B,EAAAltB,GAAA4uB,OAAA3pB,MAAA6b,QACXoM,EAAAltB,GAAA6uB,mBACW3B,EAAAltB,GAAA6uB,iBAAA5pB,MAAA6b,SAEX,IAAA+e,EAAA3S,EAAAltB,GAAA4vB,UACA,GAAAiQ,EAAkB,QAAAljB,EAAA,EAAgBA,EAAAkjB,EAAA75B,OAAkB2W,IAC3CkjB,EAAAljB,GAAA1X,MAAA6b,OAET/F,EAAA9F,QAAA8Z,cACOhqB,EAAA2qB,QAAAzqB,MAAA6b,KAAA6e,EAAAC,EAAA,OAMP,SAAAE,GAAA/kB,GACA,IAAAA,EAAA9F,QAAAma,YAAkC,SAClC,IAAAhqB,EAAA2V,EAAA3V,IAAA2Q,EAAAf,GAAA+F,EAAA9F,QAAA7P,EAAAqO,MAAArO,EAAAlD,KAAA,GAAA6C,EAAAgW,EAAAhW,QACA,GAAAgR,EAAA/P,QAAAjB,EAAAoxB,aAAA,CACA,IAAAvsB,EAAA7E,EAAAub,QAAA9T,YAAAC,EAAA,OAAAA,EAAA,MAAAsJ,IACA,gDACAgqB,EAAAn2B,EAAAyC,WAAAmU,YAAAqb,EAAAjyB,EAAA4W,YAAAuf,EAOA,OANAh7B,EAAAi7B,WAAA/6B,MAAAurB,MAAA,GACAzrB,EAAAk7B,kBAAA9uB,KAAA0E,IAAAkqB,EAAAh7B,EAAAi7B,WAAAxf,YAAAqb,GAAA,EACA92B,EAAAm7B,aAAAn7B,EAAAk7B,kBAAApE,EACA92B,EAAAoxB,aAAApxB,EAAAk7B,kBAAAlqB,EAAA/P,QAAA,EACAjB,EAAAi7B,WAAA/6B,MAAAurB,MAAAzrB,EAAAm7B,aAAA,KACAC,GAAAplB,IACA,EAEA,SAoEA,SAAAqlB,GAAArlB,EAAAmY,GACA,IAAAnuB,EAAAgW,EAAAhW,QAAAs7B,EAAA/G,GAAAve,EAAAhW,SACAmuB,EAAAY,IAAA,IAAuBZ,EAAAY,IAAA,GACvB,IAAAwM,EAAAvlB,EAAAiE,OAAA,MAAAjE,EAAAiE,MAAApb,UAAAmX,EAAAiE,MAAApb,UAAAmB,EAAAmtB,SAAAtuB,UACAywB,EAAAjC,GAAArX,GAAAkG,KACAiS,EAAAW,OAAAX,EAAAY,IAAAO,IAA0CnB,EAAAW,OAAAX,EAAAY,IAAAO,GAC1C,IAAAkM,EAAAxlB,EAAA3V,IAAAP,OAAA2sB,GAAAzsB,GACAy7B,EAAAtN,EAAAY,IAAAuM,EAAAI,EAAAvN,EAAAW,OAAA0M,EAAAF,EACA,GAAAnN,EAAAY,IAAAwM,EACArf,EAAArd,UAAA48B,EAAA,EAAAtN,EAAAY,SACK,GAAAZ,EAAAW,OAAAyM,EAAAjM,EAAA,CACL,IAAAqM,EAAAvvB,KAAAC,IAAA8hB,EAAAY,KAAA2M,EAAAF,EAAArN,EAAAW,QAAAQ,GACAqM,GAAAJ,IAAgCrf,EAAArd,UAAA88B,GAGhC,IAAAC,EAAA5lB,EAAAiE,OAAA,MAAAjE,EAAAiE,MAAAnb,WAAAkX,EAAAiE,MAAAnb,WAAAkB,EAAAmtB,SAAAruB,WACA+8B,EAAA3O,GAAAlX,MAAA9F,QAAA8Z,YAAAhqB,EAAA2qB,QAAAlP,YAAA,GACAqgB,EAAA3N,EAAAnS,MAAAmS,EAAApS,KAAA8f,EAQA,OAPAC,IAAkB3N,EAAAnS,MAAAmS,EAAApS,KAAA8f,GAClB1N,EAAApS,KAAA,GACOG,EAAApd,WAAA,EACPqvB,EAAApS,KAAA6f,EACO1f,EAAApd,WAAAsN,KAAA0E,IAAA,EAAAqd,EAAApS,MAAA+f,EAAA,OACP3N,EAAAnS,MAAA6f,EAAAD,EAAA,IACO1f,EAAApd,WAAAqvB,EAAAnS,OAAA8f,EAAA,MAAAD,GACP3f,EAKA,SAAA6f,GAAA/lB,EAAA+Y,GACA,MAAAA,IACAiN,GAAAhmB,GACAA,EAAAiE,MAAApb,WAAA,MAAAmX,EAAAiE,MAAApb,UAAAmX,EAAA3V,IAAAxB,UAAAmX,EAAAiE,MAAApb,WAAAkwB,GAKA,SAAAkN,GAAAjmB,GACAgmB,GAAAhmB,GACA,IAAAvG,EAAAuG,EAAAkmB,YACAlmB,EAAAiE,MAAAkiB,aAA4BhuB,KAAAsB,EAAArB,GAAAqB,EAAA5M,OAAAmT,EAAA9F,QAAAksB,oBAG5B,SAAAC,GAAArmB,EAAAtF,EAAAyiB,GACA,MAAAziB,GAAA,MAAAyiB,GAAiC6I,GAAAhmB,GACjC,MAAAtF,IAAoBsF,EAAAiE,MAAAnb,WAAA4R,GACpB,MAAAyiB,IAAoBnd,EAAAiE,MAAApb,UAAAs0B,GAYpB,SAAA6I,GAAAhmB,GACA,IAAAyG,EAAAzG,EAAAiE,MAAAkiB,YACA1f,IACAzG,EAAAiE,MAAAkiB,YAAA,KAEAG,GAAAtmB,EADA8c,GAAA9c,EAAAyG,EAAAtO,MAAA2kB,GAAA9c,EAAAyG,EAAArO,IACAqO,EAAA5Z,SAIA,SAAAy5B,GAAAtmB,EAAA7H,EAAAC,EAAAvL,GACA,IAAA05B,EAAAlB,GAAArlB,GACA+F,KAAA3P,KAAAC,IAAA8B,EAAA4N,KAAA3N,EAAA2N,MACAgT,IAAA3iB,KAAAC,IAAA8B,EAAA4gB,IAAA3gB,EAAA2gB,KAAAlsB,EACAmZ,MAAA5P,KAAA0E,IAAA3C,EAAA6N,MAAA5N,EAAA4N,OACA8S,OAAA1iB,KAAA0E,IAAA3C,EAAA2gB,OAAA1gB,EAAA0gB,QAAAjsB,IAEAw5B,GAAArmB,EAAAumB,EAAAz9B,WAAAy9B,EAAA19B,WAKA,SAAA29B,GAAAxmB,EAAAkI,GACA9R,KAAAyiB,IAAA7Y,EAAA3V,IAAAxB,UAAAqf,GAAA,IACAtZ,GAAiB63B,GAAAzmB,GAA0B+Y,IAAA7Q,IAC3Cwe,GAAA1mB,EAAAkI,GAAA,GACAtZ,GAAgB63B,GAAAzmB,GAChB2mB,GAAA3mB,EAAA,MAGA,SAAA0mB,GAAA1mB,EAAAkI,EAAA0e,GACA1e,EAAA9R,KAAAC,IAAA2J,EAAAhW,QAAAmtB,SAAA0P,aAAA7mB,EAAAhW,QAAAmtB,SAAAG,aAAApP,IACAlI,EAAAhW,QAAAmtB,SAAAtuB,WAAAqf,GAAA0e,KACA5mB,EAAA3V,IAAAxB,UAAAqf,EACAlI,EAAAhW,QAAA88B,WAAAJ,aAAAxe,GACAlI,EAAAhW,QAAAmtB,SAAAtuB,WAAAqf,IAA+ClI,EAAAhW,QAAAmtB,SAAAtuB,UAAAqf,IAK/C,SAAA6e,GAAA/mB,EAAAkI,EAAA8e,EAAAJ,GACA1e,EAAA9R,KAAAC,IAAA6R,EAAAlI,EAAAhW,QAAAmtB,SAAA8P,YAAAjnB,EAAAhW,QAAAmtB,SAAAlB,cACA+Q,EAAA9e,GAAAlI,EAAA3V,IAAAvB,WAAAsN,KAAAyiB,IAAA7Y,EAAA3V,IAAAvB,WAAAof,GAAA,KAAA0e,IACA5mB,EAAA3V,IAAAvB,WAAAof,EACAwc,GAAA1kB,GACAA,EAAAhW,QAAAmtB,SAAAruB,YAAAof,IAAgDlI,EAAAhW,QAAAmtB,SAAAruB,WAAAof,GAChDlI,EAAAhW,QAAA88B,WAAAC,cAAA7e,IAOA,SAAAgf,GAAAlnB,GACA,IAAAxb,EAAAwb,EAAAhW,QAAA66B,EAAArgC,EAAAmwB,QAAAlP,YACA0hB,EAAA/wB,KAAAqpB,MAAAzf,EAAA3V,IAAAP,OAAA2sB,GAAAzW,EAAAhW,UACA,OACAstB,aAAA9yB,EAAA2yB,SAAAG,aACA8P,WAAA5iC,EAAAyF,QAAAqtB,aACA2P,YAAAziC,EAAA2yB,SAAA8P,YAAAhR,YAAAzxB,EAAA2yB,SAAAlB,YACAoR,UAAA7iC,EAAAyF,QAAAgsB,YACAqR,QAAAtnB,EAAA9F,QAAA8Z,YAAA6Q,EAAA,EACA0C,UAAAJ,EACAN,aAAAM,EAAAnQ,GAAAhX,GAAAxb,EAAA+yB,UACAN,eAAAzyB,EAAAyyB,eACArC,YAAAiQ,GAIA,IAAA2C,GAAA,SAAAvO,EAAA9uB,EAAA6V,GACAxa,KAAAwa,KACA,IAAAynB,EAAAjiC,KAAAiiC,KAAA/1B,EAAA,OAAAA,EAAA,4DACAg2B,EAAAliC,KAAAkiC,MAAAh2B,EAAA,OAAAA,EAAA,kDAA8E,yBAC9E+1B,EAAAE,SAAAD,EAAAC,UAAA,EACA1O,EAAAwO,GAAgBxO,EAAAyO,GAEhBn9B,GAAAk9B,EAAA,oBACAA,EAAAnQ,cAA8BntB,EAAAs9B,EAAA5+B,UAAA,cAE9B0B,GAAAm9B,EAAA,oBACAA,EAAAzR,aAA8B9rB,EAAAu9B,EAAA5+B,WAAA,gBAG9BtD,KAAAoiC,kBAAA,EAEA14B,GAAAC,EAAA,IAA+B3J,KAAAkiC,MAAAx9B,MAAA29B,UAAAriC,KAAAiiC,KAAAv9B,MAAA49B,SAAA,SAG/BN,GAAAzzB,UAAAg0B,OAAA,SAAAxiB,GACA,IAAAyiB,EAAAziB,EAAA0hB,YAAA1hB,EAAA0Q,YAAA,EACAgS,EAAA1iB,EAAAshB,aAAAthB,EAAA+R,aAAA,EACA4Q,EAAA3iB,EAAA0R,eAEA,GAAAgR,EAAA,CACAziC,KAAAiiC,KAAAv9B,MAAAF,QAAA,QACAxE,KAAAiiC,KAAAv9B,MAAA4uB,OAAAkP,EAAAE,EAAA,SACA,IAAA59B,EAAAib,EAAA6hB,YAAAY,EAAAE,EAAA,GAEA1iC,KAAAiiC,KAAAn2B,WAAApH,MAAAJ,OACAsM,KAAA0E,IAAA,EAAAyK,EAAAshB,aAAAthB,EAAA+R,aAAAhtB,GAAA,UAEA9E,KAAAiiC,KAAAv9B,MAAAF,QAAA,GACAxE,KAAAiiC,KAAAn2B,WAAApH,MAAAJ,OAAA,IAGA,GAAAk+B,EAAA,CACAxiC,KAAAkiC,MAAAx9B,MAAAF,QAAA,QACAxE,KAAAkiC,MAAAx9B,MAAA8b,MAAAiiB,EAAAC,EAAA,SACA1iC,KAAAkiC,MAAAx9B,MAAA6b,KAAAR,EAAA+hB,QAAA,KACA,IAAAa,EAAA5iB,EAAA8hB,UAAA9hB,EAAA+hB,SAAAW,EAAAC,EAAA,GACA1iC,KAAAkiC,MAAAp2B,WAAApH,MAAAurB,MACArf,KAAA0E,IAAA,EAAAyK,EAAA0hB,YAAA1hB,EAAA0Q,YAAAkS,GAAA,UAEA3iC,KAAAkiC,MAAAx9B,MAAAF,QAAA,GACAxE,KAAAkiC,MAAAp2B,WAAApH,MAAAurB,MAAA,IAQA,OALAjwB,KAAAoiC,kBAAAriB,EAAA+R,aAAA,IACA,GAAA4Q,GAAwB1iC,KAAA4iC,gBACxB5iC,KAAAoiC,kBAAA,IAGY5hB,MAAAiiB,EAAAC,EAAA,EAAApP,OAAAkP,EAAAE,EAAA,IAGZV,GAAAzzB,UAAAgzB,cAAA,SAAA9wB,GACAzQ,KAAAkiC,MAAA5+B,YAAAmN,IAAuCzQ,KAAAkiC,MAAA5+B,WAAAmN,GACvCzQ,KAAA6iC,cAA4B7iC,KAAA8iC,mBAAA9iC,KAAAkiC,MAAAliC,KAAA6iC,aAAA,UAG5Bb,GAAAzzB,UAAA2yB,aAAA,SAAAzwB,GACAzQ,KAAAiiC,KAAA5+B,WAAAoN,IAAqCzQ,KAAAiiC,KAAA5+B,UAAAoN,GACrCzQ,KAAA+iC,aAA2B/iC,KAAA8iC,mBAAA9iC,KAAAiiC,KAAAjiC,KAAA+iC,YAAA,SAG3Bf,GAAAzzB,UAAAq0B,cAAA,WACA,IAAAhE,EAAAn0B,IAAAL,EAAA,cACApK,KAAAkiC,MAAAx9B,MAAAJ,OAAAtE,KAAAiiC,KAAAv9B,MAAAurB,MAAA2O,EACA5+B,KAAAkiC,MAAAx9B,MAAAs+B,cAAAhjC,KAAAiiC,KAAAv9B,MAAAs+B,cAAA,OACAhjC,KAAA6iC,aAAA,IAAAlzB,EACA3P,KAAA+iC,YAAA,IAAApzB,GAGAqyB,GAAAzzB,UAAAu0B,mBAAA,SAAAG,EAAAC,EAAAh8B,GACA+7B,EAAAv+B,MAAAs+B,cAAA,OAcAE,EAAArzB,IAAA,IAbA,SAAAszB,IAOA,IAAAjL,EAAA+K,EAAA5iB,yBACA,QAAAnZ,EAAA0C,SAAAw5B,iBAAAlL,EAAA1X,MAAA,GAAA0X,EAAA3E,IAAA2E,EAAA5E,QAAA,GACA1pB,SAAAw5B,kBAAAlL,EAAA1X,MAAA0X,EAAA3X,MAAA,EAAA2X,EAAA5E,OAAA,KACA2P,EAA0BA,EAAAv+B,MAAAs+B,cAAA,OACdE,EAAArzB,IAAA,IAAAszB,MAKZnB,GAAAzzB,UAAA80B,MAAA,WACA,IAAAr3B,EAAAhM,KAAAkiC,MAAAt1B,WACAZ,EAAAH,YAAA7L,KAAAkiC,OACAl2B,EAAAH,YAAA7L,KAAAiiC,OAGA,IAAAqB,GAAA,aAOA,SAAAC,GAAA/oB,EAAAuF,GACAA,IAAmBA,EAAA2hB,GAAAlnB,IACnB,IAAAgpB,EAAAhpB,EAAAhW,QAAAotB,SAAA6R,EAAAjpB,EAAAhW,QAAAutB,UACA2R,GAAAlpB,EAAAuF,GACA,QAAAtgB,EAAA,EAAmBA,EAAA,GAAA+jC,GAAAhpB,EAAAhW,QAAAotB,UAAA6R,GAAAjpB,EAAAhW,QAAAutB,UAAmFtyB,IACtG+jC,GAAAhpB,EAAAhW,QAAAotB,UAAApX,EAAA9F,QAAAse,cACSuL,GAAA/jB,GACTkpB,GAAAlpB,EAAAknB,GAAAlnB,IACAgpB,EAAAhpB,EAAAhW,QAAAotB,SAAuC6R,EAAAjpB,EAAAhW,QAAAutB,UAMvC,SAAA2R,GAAAlpB,EAAAuF,GACA,IAAA/gB,EAAAwb,EAAAhW,QACAm/B,EAAA3kC,EAAAsiC,WAAAiB,OAAAxiB,GAEA/gB,EAAA4xB,MAAAlsB,MAAA4sB,cAAAtyB,EAAA4yB,SAAA+R,EAAAnjB,OAAA,KACAxhB,EAAA4xB,MAAAlsB,MAAAk/B,eAAA5kC,EAAA+yB,UAAA4R,EAAArQ,QAAA,KACAt0B,EAAA6kC,aAAAn/B,MAAAo/B,aAAAH,EAAArQ,OAAA,uBAEAqQ,EAAAnjB,OAAAmjB,EAAArQ,QACAt0B,EAAA+kC,gBAAAr/B,MAAAF,QAAA,QACAxF,EAAA+kC,gBAAAr/B,MAAAJ,OAAAq/B,EAAArQ,OAAA,KACAt0B,EAAA+kC,gBAAAr/B,MAAAurB,MAAA0T,EAAAnjB,MAAA,MACYxhB,EAAA+kC,gBAAAr/B,MAAAF,QAAA,GACZm/B,EAAArQ,QAAA9Y,EAAA9F,QAAAsvB,4BAAAxpB,EAAA9F,QAAA8Z,aACAxvB,EAAAilC,aAAAv/B,MAAAF,QAAA,QACAxF,EAAAilC,aAAAv/B,MAAAJ,OAAAq/B,EAAArQ,OAAA,KACAt0B,EAAAilC,aAAAv/B,MAAAurB,MAAAlQ,EAAAqP,YAAA,MACYpwB,EAAAilC,aAAAv/B,MAAAF,QAAA,GApCZ8+B,GAAA/0B,UAAAg0B,OAAA,WAAiD,OAASjP,OAAA,EAAA9S,MAAA,IAC1D8iB,GAAA/0B,UAAAgzB,cAAA,aACA+B,GAAA/0B,UAAA2yB,aAAA,aACAoC,GAAA/0B,UAAA80B,MAAA,aAoCA,IAAAa,IAAwBC,OAAAnC,GAAAoC,KAAAd,IAExB,SAAAe,GAAA7pB,GACAA,EAAAhW,QAAA88B,aACA9mB,EAAAhW,QAAA88B,WAAA+B,QACA7oB,EAAAhW,QAAA88B,WAAA54B,UACS2C,EAAAmP,EAAAhW,QAAAC,QAAA+V,EAAAhW,QAAA88B,WAAA54B,WAGT8R,EAAAhW,QAAA88B,WAAA,IAAA4C,GAAA1pB,EAAA9F,QAAA4vB,gBAAA,SAAAh5B,GACAkP,EAAAhW,QAAAC,QAAAypB,aAAA5iB,EAAAkP,EAAAhW,QAAAu/B,iBAEAh/B,GAAAuG,EAAA,uBACAkP,EAAAgI,MAAA6a,SAA+Bl6B,WAAA,WAAyB,OAAAqX,EAAAhW,QAAAinB,MAAAoS,SAAmC,KAE3FvyB,EAAAkB,aAAA,0BACK,SAAAiE,EAAA8zB,GACL,cAAAA,EAAiChD,GAAA/mB,EAAA/J,GACrBuwB,GAAAxmB,EAAA/J,IACP+J,GACLA,EAAAhW,QAAA88B,WAAA54B,UACOA,EAAA8R,EAAAhW,QAAAC,QAAA+V,EAAAhW,QAAA88B,WAAA54B,UASP,IAAA87B,GAAA,EAEA,SAAAC,GAAAjqB,GAzmDA,IAAAkqB,EA0mDAlqB,EAAAiE,OACAjE,KACAmqB,aAAA,EACAlB,YAAAjpB,EAAA3V,IAAAP,OACAkuB,aAAA,EACAoS,YAAA,EACAC,QAAA,EACAC,WAAA,KACApmB,uBAAA,KACAqmB,qBAAA,EACAC,kBAAA,EACAC,eAAA,EACA3hC,WAAA,KAAAD,UAAA,KACAs9B,YAAA,KACA9C,OAAA,EACAx7B,KAAAmiC,IAznDAE,EA2nDAlqB,EAAAiE,MA1nDAmO,GACAA,GAAAsY,IAAAtlC,KAAA8kC,GAEAA,EAAAS,UAAAvY,IACAsY,KAAAR,GACA1X,qBAynDA,SAAAoY,GAAA5qB,GACA,IAAAkqB,EAAAlqB,EAAAiE,MACAimB,GAtmDA,SAAAA,EAAAW,GACA,IAAAC,EAAAZ,EAAAS,UACA,GAAAG,EAEA,KApBA,SAAAA,GAGA,IAAAC,EAAAD,EAAAtY,iBAAAvtB,EAAA,EACA,GACA,KAAYA,EAAA8lC,EAAA9/B,OAAsBhG,IACzB8lC,EAAA9lC,GAAA+O,KAAA,MACT,QAAA4N,EAAA,EAAqBA,EAAAkpB,EAAAJ,IAAAz/B,OAAsB2W,IAAA,CAC3C,IAAAsoB,EAAAY,EAAAJ,IAAA9oB,GACA,GAAAsoB,EAAAhmB,uBACW,KAAAgmB,EAAAK,qBAAAL,EAAAhmB,uBAAAjZ,QACEi/B,EAAAhmB,uBAAAgmB,EAAAK,wBAAAv2B,KAAA,KAAAk2B,EAAAlqB,WAER/a,EAAA8lC,EAAA9/B,QAOI+/B,CAAAF,GACT,QACA1Y,GAAA,KACAyY,EAAAC,IA+lDaG,CAAAf,EAAA,SAAAY,GACb,QAAA7lC,EAAA,EAAqBA,EAAA6lC,EAAAJ,IAAAz/B,OAAsBhG,IAClC6lC,EAAAJ,IAAAzlC,GAAA+a,GAAAiE,MAAA,MAOT,SAAA6mB,GAEA,IADA,IAAAJ,EAAAI,EAAAJ,IACAzlC,EAAA,EAAmBA,EAAAylC,EAAAz/B,OAAgBhG,IAC5BimC,GAAAR,EAAAzlC,IACP,QAAA4U,EAAA,EAAqBA,EAAA6wB,EAAAz/B,OAAkB4O,KAuBvCqwB,EAtBOQ,EAAA7wB,IAuBPsxB,eAAAjB,EAAAkB,YAAAC,GAAAnB,EAAAlqB,GAAAkqB,EAAAnC,QADA,IAAAmC,EArBA,QAAA5sB,EAAA,EAAqBA,EAAAotB,EAAAz/B,OAAkBqS,IAChCguB,GAAAZ,EAAAptB,IACP,QAAAC,EAAA,EAAqBA,EAAAmtB,EAAAz/B,OAAkBsS,IAChCguB,GAAAb,EAAAntB,IACP,QAAAkE,EAAA,EAAqBA,EAAAipB,EAAAz/B,OAAkBwW,IAChC+pB,GAAAd,EAAAjpB,IAjBPgqB,CAAAX,KAoBA,SAAAI,GAAAhB,GACA,IAAAlqB,EAAAkqB,EAAAlqB,GAAAhW,EAAAgW,EAAAhW,SAyWA,SAAAgW,GACA,IAAAhW,EAAAgW,EAAAhW,SACAA,EAAA0hC,mBAAA1hC,EAAAmtB,SAAA1R,cACAzb,EAAAitB,eAAAjtB,EAAAmtB,SAAA1R,YAAAzb,EAAAmtB,SAAAlB,YACAjsB,EAAAq/B,aAAAn/B,MAAAJ,OAAAktB,GAAAhX,GAAA,KACAhW,EAAAosB,MAAAlsB,MAAAyhC,cAAA3hC,EAAAitB,eAAA,KACAjtB,EAAAosB,MAAAlsB,MAAA0hC,iBAAA5U,GAAAhX,GAAA,KACAhW,EAAA0hC,mBAAA,GA/WAG,CAAA7rB,GACAkqB,EAAAO,eAA2B1qB,GAAAC,GAE3BkqB,EAAAkB,WAAAlB,EAAAC,aAAAD,EAAAlS,aAAA,MAAAkS,EAAArhC,WACAqhC,EAAA/D,cAAA+D,EAAA/D,YAAAhuB,KAAAe,KAAAlP,EAAA6iB,UACAqd,EAAA/D,YAAA/tB,GAAAc,MAAAlP,EAAA8iB,SACA9iB,EAAAmW,gBAAAH,EAAA9F,QAAAse,aACA0R,EAAAnC,OAAAmC,EAAAkB,YACA,IAAAU,GAAA9rB,EAAAkqB,EAAAkB,aAA8CrS,IAAAmR,EAAArhC,UAAA07B,OAAA2F,EAAA/D,aAA0C+D,EAAAlS,aAOxF,SAAAsT,GAAApB,GACA,IAAAlqB,EAAAkqB,EAAAlqB,GAAAhW,EAAAgW,EAAAhW,QACAkgC,EAAAiB,gBAA4BpH,GAAA/jB,GAE5BkqB,EAAA6B,WAAA7E,GAAAlnB,GAKAhW,EAAAmW,iBAAAH,EAAA9F,QAAAse,eACA0R,EAAA8B,cAAAvU,GAAAzX,EAAAhW,EAAAiW,QAAAjW,EAAAiW,QAAA7G,KAAAnO,QAAA8a,KAAA,EACA/F,EAAAhW,QAAAi3B,WAAAiJ,EAAA8B,cACA9B,EAAA6B,WAAA9E,YACA7wB,KAAA0E,IAAA9Q,EAAAmtB,SAAAlB,YAAAjsB,EAAAosB,MAAAsI,WAAAwL,EAAA8B,cAAAhV,GAAAhX,KAAAhW,QAAAotB,UACA8S,EAAA+B,cAAA71B,KAAA0E,IAAA,EAAA9Q,EAAAosB,MAAAsI,WAAAwL,EAAA8B,cAAA9U,GAAAlX,MAGAkqB,EAAAiB,gBAAAjB,EAAAM,oBACON,EAAAgC,kBAAAliC,EAAAinB,MAAA2O,oBAGP,SAAA2L,GAAArB,GACA,IAAAlqB,EAAAkqB,EAAAlqB,GAEA,MAAAkqB,EAAA8B,gBACAhsB,EAAAhW,QAAAosB,MAAAlsB,MAAA49B,SAAAoC,EAAA8B,cAAA,KACA9B,EAAA+B,cAAAjsB,EAAA3V,IAAAvB,YACSi+B,GAAA/mB,EAAA5J,KAAAC,IAAA2J,EAAAhW,QAAAmtB,SAAAruB,WAAAohC,EAAA+B,gBAAA,GACTjsB,EAAAhW,QAAAmW,gBAAA,GAGA,IAAAgsB,EAAAjC,EAAA7G,OAAA6G,EAAA7G,OAAA/wB,IACA43B,EAAAgC,mBACOlsB,EAAAhW,QAAAinB,MAAA0O,cAAAuK,EAAAgC,kBAAAC,IACPjC,EAAAiB,gBAAAjB,EAAAjB,aAAAjpB,EAAA3V,IAAAP,SACOi/B,GAAA/oB,EAAAkqB,EAAA6B,YACP7B,EAAAiB,gBACOiB,GAAApsB,EAAAkqB,EAAA6B,YAEP7B,EAAAM,kBAA8B5H,GAAA5iB,GAE9BA,EAAAgI,MAAA6a,SAAAqH,EAAAE,aACOpqB,EAAAhW,QAAAinB,MAAA2S,MAAAsG,EAAAG,QACP8B,GAAoB/I,GAAA8G,EAAAlqB,IAGpB,SAAAwrB,GAAAtB,GACA,IAAAlqB,EAAAkqB,EAAAlqB,GAAAhW,EAAAgW,EAAAhW,QAAAK,EAAA2V,EAAA3V,KAEA6/B,EAAAiB,gBAA4BkB,GAAArsB,EAAAkqB,EAAAnC,QAG5B,MAAA/9B,EAAAsiC,aAAA,MAAApC,EAAArhC,WAAA,MAAAqhC,EAAAphC,aAAAohC,EAAA/D,cACOn8B,EAAAsiC,YAAAtiC,EAAAuiC,YAAA,MAGP,MAAArC,EAAArhC,WAA+B69B,GAAA1mB,EAAAkqB,EAAArhC,UAAAqhC,EAAAtD,aAE/B,MAAAsD,EAAAphC,YAAgCi+B,GAAA/mB,EAAAkqB,EAAAphC,YAAA,MAEhCohC,EAAA/D,cAneA,SAAAnmB,EAAAmY,GACA,IAAA1U,GAAAzD,EAAA,yBAEA,IAAAhW,EAAAgW,EAAAhW,QAAA0zB,EAAA1zB,EAAAosB,MAAAvQ,wBAAA2mB,EAAA,KAGA,GAFArU,EAAAY,IAAA2E,EAAA3E,IAAA,EAAiCyT,GAAA,EACjCrU,EAAAW,OAAA4E,EAAA3E,KAAAzS,OAAAmmB,aAAAr9B,SAAAmsB,gBAAAjE,gBAAqGkV,GAAA,GACrG,MAAAA,IAAA38B,EAAA,CACA,IAAA68B,EAAAh7B,EAAA,sEAAuEymB,EAAAY,IAAA/uB,EAAA+xB,WAAAzF,GAAAtW,EAAAhW,UAAA,0CAAmGmuB,EAAAW,OAAAX,EAAAY,IAAA/B,GAAAhX,GAAAhW,EAAAutB,WAAA,uCAA0GY,EAAA,mBAAuD/hB,KAAA0E,IAAA,EAAAqd,EAAAnS,MAAAmS,EAAApS,MAAA,OAC3U/F,EAAAhW,QAAAusB,UAAA9kB,YAAAi7B,GACAA,EAAAC,eAAAH,GACAxsB,EAAAhW,QAAAusB,UAAAllB,YAAAq7B,KA4dAE,CAAA5sB,EArdA,SAAAA,EAAA/J,EAAAlD,EAAAlG,GAEA,IAAAsrB,EADA,MAAAtrB,IAAyBA,EAAA,GAEzBmT,EAAA9F,QAAAse,cAAAviB,GAAAlD,IAKAA,EAAA,WADAkD,IAAAkB,GAAAkD,GAAApE,EAAAiD,KAAA,UAAAjD,EAAAqE,OAAArE,EAAAkB,GAAA,EAAAlB,EAAAkB,GAAA,SAAAlB,GACAqE,OAAAD,GAAApE,EAAAiD,KAAAjD,EAAAkB,GAAA,YAAAlB,GAEA,QAAApK,EAAA,EAAuBA,EAAA,EAAWA,IAAA,CAClC,IAAAghC,GAAA,EACA1Q,EAAAI,GAAAvc,EAAA/J,GACA62B,EAAA/5B,MAAAkD,EAAAsmB,GAAAvc,EAAAjN,GAAAopB,EAKA4Q,EAAA1H,GAAArlB,EAJAmY,GAAcpS,KAAA3P,KAAAC,IAAA8lB,EAAApW,KAAA+mB,EAAA/mB,MACdgT,IAAA3iB,KAAAC,IAAA8lB,EAAApD,IAAA+T,EAAA/T,KAAAlsB,EACAmZ,MAAA5P,KAAA0E,IAAAqhB,EAAApW,KAAA+mB,EAAA/mB,MACA+S,OAAA1iB,KAAA0E,IAAAqhB,EAAArD,OAAAgU,EAAAhU,QAAAjsB,IAEAmgC,EAAAhtB,EAAA3V,IAAAxB,UAAAokC,EAAAjtB,EAAA3V,IAAAvB,WASA,GARA,MAAAikC,EAAAlkC,YACA29B,GAAAxmB,EAAA+sB,EAAAlkC,WACAuN,KAAAyiB,IAAA7Y,EAAA3V,IAAAxB,UAAAmkC,GAAA,IAAwDH,GAAA,IAExD,MAAAE,EAAAjkC,aACAi+B,GAAA/mB,EAAA+sB,EAAAjkC,YACAsN,KAAAyiB,IAAA7Y,EAAA3V,IAAAvB,WAAAmkC,GAAA,IAA0DJ,GAAA,KAE1DA,EAAqB,MAErB,OAAA1U,EAqbA+U,CAAAltB,EAAAjF,GAAA1Q,EAAA6/B,EAAA/D,YAAAhuB,MACA4C,GAAA1Q,EAAA6/B,EAAA/D,YAAA/tB,IAAA8xB,EAAA/D,YAAAt5B,SAMA,IAAAmlB,EAAAkY,EAAAiD,mBAAAC,EAAAlD,EAAAmD,qBACA,GAAArb,EAAiB,QAAA/sB,EAAA,EAAgBA,EAAA+sB,EAAA/mB,SAAmBhG,EAC7C+sB,EAAA/sB,GAAA4T,MAAA5N,QAA+BsY,GAAAyO,EAAA/sB,GAAA,QACtC,GAAAmoC,EAAmB,QAAAvzB,EAAA,EAAkBA,EAAAuzB,EAAAniC,SAAuB4O,EACrDuzB,EAAAvzB,GAAAhB,MAAA5N,QAAkCsY,GAAA6pB,EAAAvzB,GAAA,UAEzC7P,EAAAC,QAAAub,eACOnb,EAAAxB,UAAAmX,EAAAhW,QAAAmtB,SAAAtuB,WAGPqhC,EAAAI,YACO/mB,GAAAvD,EAAA,UAAAA,EAAAkqB,EAAAI,YACPJ,EAAAnC,QACOmC,EAAAnC,OAAAuF,SAIP,SAAAC,GAAAvtB,EAAApM,GACA,GAAAoM,EAAAiE,MAAmB,OAAArQ,IACnBq2B,GAAAjqB,GACA,IAAS,OAAApM,IACT,QAAag3B,GAAA5qB,IAGb,SAAAwtB,GAAAxtB,EAAApM,GACA,kBACA,GAAAoM,EAAAiE,MAAqB,OAAArQ,EAAAM,MAAA8L,EAAA/L,WACrBg2B,GAAAjqB,GACA,IAAW,OAAApM,EAAAM,MAAA8L,EAAA/L,WACX,QAAe22B,GAAA5qB,KAKf,SAAAytB,GAAA75B,GACA,kBACA,GAAApO,KAAAye,MAAuB,OAAArQ,EAAAM,MAAA1O,KAAAyO,WACvBg2B,GAAAzkC,MACA,IAAW,OAAAoO,EAAAM,MAAA1O,KAAAyO,WACX,QAAe22B,GAAAplC,QAGf,SAAAkoC,GAAA95B,GACA,kBACA,IAAAoM,EAAAxa,KAAAwa,GACA,IAAAA,KAAAiE,MAA4B,OAAArQ,EAAAM,MAAA1O,KAAAyO,WAC5Bg2B,GAAAjqB,GACA,IAAW,OAAApM,EAAAM,MAAA1O,KAAAyO,WACX,QAAe22B,GAAA5qB,KAUf,SAAA2tB,GAAA3tB,EAAA7H,EAAAC,EAAAw1B,GACA,MAAAz1B,IAAuBA,EAAA6H,EAAA3V,IAAAqO,OACvB,MAAAN,IAAqBA,EAAA4H,EAAA3V,IAAAqO,MAAAsH,EAAA3V,IAAAlD,MACrBymC,IAAmBA,EAAA,GAEnB,IAAA5jC,EAAAgW,EAAAhW,QAOA,GANA4jC,GAAAx1B,EAAApO,EAAA8iB,SACA,MAAA9iB,EAAA6jC,mBAAA7jC,EAAA6jC,kBAAA11B,KACOnO,EAAA6jC,kBAAA11B,GAEP6H,EAAAiE,MAAAkmB,aAAA,EAEAhyB,GAAAnO,EAAA8iB,OACAzR,IAAA6D,GAAAc,EAAA3V,IAAA8N,GAAAnO,EAAA8iB,QACSghB,GAAA9tB,QACJ,GAAA5H,GAAApO,EAAA6iB,SACLxR,IAAAgE,GAAAW,EAAA3V,IAAA+N,EAAAw1B,GAAA5jC,EAAA6iB,SACAihB,GAAA9tB,IAEAhW,EAAA6iB,UAAA+gB,EACA5jC,EAAA8iB,QAAA8gB,QAEK,GAAAz1B,GAAAnO,EAAA6iB,UAAAzU,GAAApO,EAAA8iB,OACLghB,GAAA9tB,QACK,GAAA7H,GAAAnO,EAAA6iB,SAAA,CACL,IAAAkhB,EAAAC,GAAAhuB,EAAA5H,IAAAw1B,EAAA,GACAG,GACA/jC,EAAAmoB,KAAAnoB,EAAAmoB,KAAAlhB,MAAA88B,EAAAlgC,OACA7D,EAAA6iB,SAAAkhB,EAAA5uB,MACAnV,EAAA8iB,QAAA8gB,GAEAE,GAAA9tB,QAEK,GAAA5H,GAAApO,EAAA8iB,OAAA,CACL,IAAAmhB,EAAAD,GAAAhuB,EAAA7H,KAAA,GACA81B,GACAjkC,EAAAmoB,KAAAnoB,EAAAmoB,KAAAlhB,MAAA,EAAAg9B,EAAApgC,OACA7D,EAAA8iB,OAAAmhB,EAAA9uB,OAEA2uB,GAAA9tB,OAEK,CACL,IAAAkuB,EAAAF,GAAAhuB,EAAA7H,KAAA,GACAg2B,EAAAH,GAAAhuB,EAAA5H,IAAAw1B,EAAA,GACAM,GAAAC,GACAnkC,EAAAmoB,KAAAnoB,EAAAmoB,KAAAlhB,MAAA,EAAAi9B,EAAArgC,OACAsV,OAAA8O,GAAAjS,EAAAkuB,EAAA/uB,MAAAgvB,EAAAhvB,QACAgE,OAAAnZ,EAAAmoB,KAAAlhB,MAAAk9B,EAAAtgC,QACA7D,EAAA8iB,QAAA8gB,GAEAE,GAAA9tB,GAIA,IAAAsT,EAAAtpB,EAAAslB,iBACAgE,IACAlb,EAAAkb,EAAAnU,MACSmU,EAAAnU,OAAAyuB,EACTz1B,EAAAmb,EAAAnU,MAAAmU,EAAAnsB,OACS6C,EAAAslB,iBAAA,OAMT,SAAA8e,GAAApuB,EAAA9G,EAAAxM,GACAsT,EAAAiE,MAAAkmB,aAAA,EACA,IAAAngC,EAAAgW,EAAAhW,QAAAspB,EAAAtT,EAAAhW,QAAAslB,iBAIA,GAHAgE,GAAApa,GAAAoa,EAAAnU,OAAAjG,EAAAoa,EAAAnU,MAAAmU,EAAAnsB,OACO6C,EAAAslB,iBAAA,QAEPpW,EAAAlP,EAAA6iB,UAAA3T,GAAAlP,EAAA8iB,QAAA,CACA,IAAA6B,EAAA3kB,EAAAmoB,KAAA2F,GAAA9X,EAAA9G,IACA,SAAAyV,EAAA7d,KAAA,CACA,IAAA2F,EAAAkY,EAAAkE,UAAAlE,EAAAkE,aACA,GAAA7d,EAAAyB,EAAA/J,IAAmC+J,EAAArR,KAAAsH,KAInC,SAAAohC,GAAA9tB,GACAA,EAAAhW,QAAA6iB,SAAA7M,EAAAhW,QAAA8iB,OAAA9M,EAAA3V,IAAAqO,MACAsH,EAAAhW,QAAAmoB,QACAnS,EAAAhW,QAAA+xB,WAAA,EAGA,SAAAiS,GAAAhuB,EAAAquB,EAAAC,EAAAv2B,GACA,IAAAwB,EAAA1L,EAAAiqB,GAAA9X,EAAAquB,GAAAlc,EAAAnS,EAAAhW,QAAAmoB,KACA,IAAA9W,IAAAizB,GAAAtuB,EAAA3V,IAAAqO,MAAAsH,EAAA3V,IAAAlD,KACO,OAAS0G,QAAAsR,MAAAmvB,GAEhB,IADA,IAAAjqC,EAAA2b,EAAAhW,QAAA6iB,SACA5nB,EAAA,EAAmBA,EAAA4I,EAAW5I,IACvBZ,GAAA8tB,EAAAltB,GAAAkC,KACP,GAAA9C,GAAAgqC,EAAA,CACA,GAAAt2B,EAAA,GACA,GAAAlK,GAAAskB,EAAAlnB,OAAA,EAAuC,YACvCsO,EAAAlV,EAAA8tB,EAAAtkB,GAAA1G,KAAAknC,EACAxgC,SAEA0L,EAAAlV,EAAAgqC,EAEAA,GAAA90B,EAAmB+0B,GAAA/0B,EAEnB,KAAA2F,GAAAc,EAAA3V,IAAAikC,OAAA,CACA,GAAAzgC,IAAAkK,EAAA,IAAAoa,EAAAlnB,OAAA,GAAqD,YACrDqjC,GAAAv2B,EAAAoa,EAAAtkB,GAAAkK,EAAA,QAAA5Q,KACA0G,GAAAkK,EAEA,OAAYlK,QAAAsR,MAAAmvB,GA0BZ,SAAAC,GAAAvuB,GAEA,IADA,IAAAmS,EAAAnS,EAAAhW,QAAAmoB,KAAAqc,EAAA,EACAvpC,EAAA,EAAmBA,EAAAktB,EAAAlnB,OAAiBhG,IAAA,CACpC,IAAA0pB,EAAAwD,EAAAltB,GACA0pB,EAAAqD,QAAArD,EAAA7d,OAAA6d,EAAAkE,WAAqE2b,EAErE,OAAAA,EAKA,SAAA7H,GAAA3mB,EAAAyuB,GACAzuB,EAAA3V,IAAA6hB,kBAAAlM,EAAAhW,QAAA8iB,QACO9M,EAAAgI,MAAA0mB,UAAAr5B,IAAAo5B,EAAA96B,EAAAg7B,GAAA3uB,IAGP,SAAA2uB,GAAA3uB,GACA,IAAA3V,EAAA2V,EAAA3V,IACA,KAAAA,EAAA6hB,mBAAAlM,EAAAhW,QAAA8iB,QAAA,CACA,IAAA/Z,GAAA,IAAA67B,KAAA5uB,EAAA9F,QAAA20B,SACAnkB,EAAAkB,GAAA5L,EAAA3V,EAAA6hB,mBACA4iB,KAEAzkC,EAAA8O,KAAAuR,EAAAxR,KAAA9C,KAAAC,IAAAhM,EAAAqO,MAAArO,EAAAlD,KAAA6Y,EAAAhW,QAAA8iB,OAAA,cAAA5T,GACA,GAAAwR,EAAAxR,MAAA8G,EAAAhW,QAAA6iB,SAAA,CACA,IAAAkiB,EAAA71B,EAAAoS,OACAO,EAAA3S,EAAAE,KAAAnO,OAAA+U,EAAA9F,QAAA4R,mBAAA/D,GAAA1d,EAAApD,KAAAyjB,EAAA1C,OAAA,KACAgnB,EAAAvkB,GAAAzK,EAAA9G,EAAAwR,GAAA,GACAmB,IAAyBnB,EAAA1C,MAAA6D,GACzB3S,EAAAoS,OAAA0jB,EAAA1jB,OACA,IAAA2jB,EAAA/1B,EAAA+S,aAAAijB,EAAAF,EAAAzjB,QACA2jB,EAAqBh2B,EAAA+S,aAAAijB,EACrBD,IAA0B/1B,EAAA+S,aAAA,MAG1B,IAFA,IAAAkjB,GAAAJ,KAAA9jC,QAAAiO,EAAAoS,OAAArgB,QACAgkC,GAAAC,KAAAD,IAAAC,GAAAD,EAAAzjB,SAAA0jB,EAAA1jB,SAAAyjB,EAAAxjB,WAAAyjB,EAAAzjB,WACAxmB,EAAA,GAAuBkqC,GAAAlqC,EAAA8pC,EAAA9jC,SAAmChG,EAAOkqC,EAAAJ,EAAA9pC,IAAAiU,EAAAoS,OAAArmB,GACjEkqC,GAAuBL,EAAA1pC,KAAAslB,EAAAxR,MACvBA,EAAA6S,WAAArB,EAAAsB,OACAtB,EAAAqC,gBAEA7T,EAAAE,KAAAnO,QAAA+U,EAAA9F,QAAA4R,oBACWc,GAAA5M,EAAA9G,EAAAE,KAAAsR,GACXxR,EAAA6S,WAAArB,EAAAxR,KAAA,KAAAwR,EAAAsB,OAAA,KACAtB,EAAAqC,WAEA,QAAA6hB,KAAA77B,EAEA,OADA4zB,GAAA3mB,IAAA9F,QAAAk1B,YACA,IAGA/kC,EAAA6hB,kBAAAxB,EAAAxR,KACA7O,EAAA8hB,aAAA/V,KAAA0E,IAAAzQ,EAAA8hB,aAAAzB,EAAAxR,MACA41B,EAAA7jC,QAA8BsiC,GAAAvtB,EAAA,WAC9B,QAAA/a,EAAA,EAAqBA,EAAA6pC,EAAA7jC,OAAyBhG,IACrCmpC,GAAApuB,EAAA8uB,EAAA7pC,GAAA,WAMT,IAAA6mC,GAAA,SAAA9rB,EAAAskB,EAAA+K,GACA,IAAArlC,EAAAgW,EAAAhW,QAEAxE,KAAA8+B,WAEA9+B,KAAA8pC,QAAAjL,GAAAr6B,EAAAgW,EAAA3V,IAAAi6B,GACA9+B,KAAA+pC,gBAAAvlC,EAAAC,QAAAwb,YACAjgB,KAAAgqC,cAAAxlC,EAAAC,QAAAqtB,aACA9xB,KAAAkwB,aAAA1rB,EAAAC,QAAAgsB,YACAzwB,KAAAiqC,gBAAAvY,GAAAlX,GACAxa,KAAA6pC,QACA7pC,KAAAotB,KAAAmF,GAAA/X,GACAxa,KAAAkqC,WA0DA,SAAArE,GAAArrB,EAAA+nB,GACA,IAAA/9B,EAAAgW,EAAAhW,QAAAK,EAAA2V,EAAA3V,IAEA,GAAA09B,EAAAwH,eAEA,OADAzB,GAAA9tB,IACA,EAIA,IAAA+nB,EAAAsH,OACAtH,EAAAuH,QAAAn3B,MAAAnO,EAAA6iB,UAAAkb,EAAAuH,QAAAl3B,IAAApO,EAAA8iB,SACA,MAAA9iB,EAAA6jC,mBAAA7jC,EAAA6jC,mBAAA7jC,EAAA8iB,SACA9iB,EAAA2lC,cAAA3lC,EAAAmoB,MAAA,GAAAoc,GAAAvuB,GACO,SAEP+kB,GAAA/kB,KACA8tB,GAAA9tB,GACA+nB,EAAAnV,KAAAmF,GAAA/X,IAIA,IAAAjN,EAAA1I,EAAAqO,MAAArO,EAAAlD,KACAgR,EAAA/B,KAAA0E,IAAAitB,EAAAuH,QAAAn3B,KAAA6H,EAAA9F,QAAA01B,eAAAvlC,EAAAqO,OACAN,EAAAhC,KAAAC,IAAAtD,EAAAg1B,EAAAuH,QAAAl3B,GAAA4H,EAAA9F,QAAA01B,gBACA5lC,EAAA6iB,SAAA1U,KAAAnO,EAAA6iB,SAAA,KAAkE1U,EAAA/B,KAAA0E,IAAAzQ,EAAAqO,MAAA1O,EAAA6iB,WAClE7iB,EAAA8iB,OAAA1U,GAAApO,EAAA8iB,OAAA1U,EAAA,KAA0DA,EAAAhC,KAAAC,IAAAtD,EAAA/I,EAAA8iB,SAC1DzR,KACAlD,EAAA+G,GAAAc,EAAA3V,IAAA8N,GACAC,EAAAiH,GAAAW,EAAA3V,IAAA+N,IAGA,IAAAy3B,EAAA13B,GAAAnO,EAAA6iB,UAAAzU,GAAApO,EAAA8iB,QACA9iB,EAAA8lC,gBAAA/H,EAAAyH,eAAAxlC,EAAA+lC,eAAAhI,EAAArS,cAvLA,SAAA1V,EAAA7H,EAAAC,GACA,IAAApO,EAAAgW,EAAAhW,QACA,GADAA,EAAAmoB,KACAlnB,QAAAkN,GAAAnO,EAAA8iB,QAAA1U,GAAApO,EAAA6iB,UACA7iB,EAAAmoB,KAAAF,GAAAjS,EAAA7H,EAAAC,GACApO,EAAA6iB,SAAA1U,IAEAnO,EAAA6iB,SAAA1U,EACSnO,EAAAmoB,KAAAF,GAAAjS,EAAA7H,EAAAnO,EAAA6iB,UAAA1J,OAAAnZ,EAAAmoB,MACTnoB,EAAA6iB,SAAA1U,IACSnO,EAAAmoB,KAAAnoB,EAAAmoB,KAAAlhB,MAAA6mB,GAAA9X,EAAA7H,KACTnO,EAAA6iB,SAAA1U,EACAnO,EAAA8iB,OAAA1U,EACSpO,EAAAmoB,KAAAnoB,EAAAmoB,KAAAhP,OAAA8O,GAAAjS,EAAAhW,EAAA8iB,OAAA1U,IACTpO,EAAA8iB,OAAA1U,IACSpO,EAAAmoB,KAAAnoB,EAAAmoB,KAAAlhB,MAAA,EAAA6mB,GAAA9X,EAAA5H,MAETpO,EAAA8iB,OAAA1U,EAwKA43B,CAAAhwB,EAAA7H,EAAAC,GAEApO,EAAA+xB,WAAArc,GAAAjH,GAAAuH,EAAA3V,IAAAL,EAAA6iB,WAEA7M,EAAAhW,QAAAqsB,MAAAnsB,MAAA6uB,IAAA/uB,EAAA+xB,WAAA,KAEA,IAAAkU,EAAA1B,GAAAvuB,GACA,IAAA6vB,GAAA,GAAAI,IAAAlI,EAAAsH,OAAArlC,EAAA2lC,cAAA3lC,EAAAmoB,OACA,MAAAnoB,EAAA6jC,mBAAA7jC,EAAA6jC,mBAAA7jC,EAAA8iB,QACO,SAIP,IAAAojB,EA/EA,SAAAlwB,GACA,GAAAA,EAAAmwB,WAAwB,YACxB,IAAAC,EAAA99B,IACA,IAAA89B,IAAAn+B,EAAA+N,EAAAhW,QAAAi6B,QAAAmM,GAA2D,YAC3D,IAAAlqB,GAAkB5T,UAAA89B,GAClB,GAAA9pB,OAAAC,aAAA,CACA,IAAA0Z,EAAA3Z,OAAAC,eACA0Z,EAAAoQ,YAAApQ,EAAAqQ,QAAAr+B,EAAA+N,EAAAhW,QAAAi6B,QAAAhE,EAAAoQ,cACAnqB,EAAAmqB,WAAApQ,EAAAoQ,WACAnqB,EAAAqqB,aAAAtQ,EAAAsQ,aACArqB,EAAAsqB,UAAAvQ,EAAAuQ,UACAtqB,EAAAuqB,YAAAxQ,EAAAwQ,aAGA,OAAAvqB,EAiEAwqB,CAAA1wB,GAuBA,OAtBAiwB,EAAA,IAAuBjmC,EAAAi6B,QAAA/5B,MAAAF,QAAA,QAwEvB,SAAAgW,EAAA2wB,EAAA/d,GACA,IAAA5oB,EAAAgW,EAAAhW,QAAAqqB,EAAArU,EAAA9F,QAAAma,YACAuc,EAAA5mC,EAAAi6B,QAAAxqB,EAAAm3B,EAAAt/B,WAEA,SAAAu/B,EAAA//B,GACA,IAAAmY,EAAAnY,EAAAgkB,YAMA,OAJAxlB,GAAAW,GAAA+P,EAAAhW,QAAA8mC,oBAAAhgC,EACSA,EAAA5G,MAAAF,QAAA,OAEA8G,EAAAsB,WAAAf,YAAAP,GACTmY,EAMA,IAHA,IAAAkJ,EAAAnoB,EAAAmoB,KAAAhT,EAAAnV,EAAA6iB,SAGA5nB,EAAA,EAAmBA,EAAAktB,EAAAlnB,OAAiBhG,IAAA,CACpC,IAAA0pB,EAAAwD,EAAAltB,GACA,GAAA0pB,EAAAqD,aAA4B,GAAArD,EAAA7d,MAAA6d,EAAA7d,KAAAsB,YAAAw+B,EAGrB,CACP,KAAAn3B,GAAAkV,EAAA7d,MAAsC2I,EAAAo3B,EAAAp3B,GACtC,IAAAs3B,EAAA1c,GAAA,MAAAsc,GACAA,GAAAxxB,GAAAwP,EAAA6F,WACA7F,EAAAkE,UACA7d,EAAA2Z,EAAAkE,QAAA,eAAyDke,GAAA,GACzDpe,GAAA3S,EAAA2O,EAAAxP,EAAAyT,IAEAme,IACA7/B,EAAAyd,EAAA6F,YACA7F,EAAA6F,WAAA/iB,YAAArC,SAAA0C,eAAAmI,GAAA+F,EAAA9F,QAAAiF,MAEA1F,EAAAkV,EAAA7d,KAAAgkB,gBAf4B,CAC5B,IAAAhkB,EAAAkkB,GAAAhV,EAAA2O,EAAAxP,EAAAyT,GACAge,EAAAld,aAAA5iB,EAAA2I,GAeA0F,GAAAwP,EAAAxnB,KAEA,KAAAsS,GAAiBA,EAAAo3B,EAAAp3B,GA7GjBu3B,CAAAhxB,EAAAhW,EAAA6jC,kBAAA9F,EAAAnV,MACAqd,EAAA,IAAuBjmC,EAAAi6B,QAAA/5B,MAAAF,QAAA,IACvBA,EAAA2lC,aAAA3lC,EAAAmoB,KAlEA,SAAA8e,GACA,GAAAA,KAAA3+B,WAAA2+B,EAAA3+B,iBACA2+B,EAAA3+B,UAAA+wB,QACA4N,EAAAZ,YAAAp+B,EAAA7C,SAAAoD,KAAAy+B,EAAAZ,aAAAp+B,EAAA7C,SAAAoD,KAAAy+B,EAAAT,YAAA,CACA,IAAAvQ,EAAA3Z,OAAAC,eAAAE,EAAArX,SAAAyD,cACA4T,EAAAvT,OAAA+9B,EAAAZ,WAAAY,EAAAV,cACA9pB,EAAAnT,UAAA,GACA2sB,EAAAiR,kBACAjR,EAAAkR,SAAA1qB,GACAwZ,EAAAqQ,OAAAW,EAAAT,UAAAS,EAAAR,cA4DAW,CAAAlB,GAIAh/B,EAAAlH,EAAAg5B,WACA9xB,EAAAlH,EAAAqnC,cACArnC,EAAA2qB,QAAAzqB,MAAAJ,OAAAE,EAAAosB,MAAAlsB,MAAA29B,UAAA,EAEAgI,IACA7lC,EAAA8lC,eAAA/H,EAAAyH,cACAxlC,EAAA+lC,cAAAhI,EAAArS,aACAiR,GAAA3mB,EAAA,MAGAhW,EAAA6jC,kBAAA,MAEA,EAGA,SAAAxB,GAAArsB,EAAA+nB,GAGA,IAFA,IAAAzD,EAAAyD,EAAAzD,SAEA5rB,GAAA,GACAA,GAAAsH,EAAA9F,QAAAse,cAAAuP,EAAA0H,iBAAAvY,GAAAlX,KAEAskB,GAAA,MAAAA,EAAAvL,MACWuL,GAAavL,IAAA3iB,KAAAC,IAAA2J,EAAA3V,IAAAP,OAAA2sB,GAAAzW,EAAAhW,SAAAqtB,GAAArX,GAAAskB,EAAAvL,OAGxBgP,EAAAuH,QAAAjL,GAAArkB,EAAAhW,QAAAgW,EAAA3V,IAAAi6B,KACAyD,EAAAuH,QAAAn3B,MAAA6H,EAAAhW,QAAA6iB,UAAAkb,EAAAuH,QAAAl3B,IAAA4H,EAAAhW,QAAA8iB,WAGAue,GAAArrB,EAAA+nB,GAX2BrvB,GAAA,GAY3BqrB,GAAA/jB,GACA,IAAA+rB,EAAA7E,GAAAlnB,GACA0f,GAAA1f,GACA+oB,GAAA/oB,EAAA+rB,GACAK,GAAApsB,EAAA+rB,GACAhE,EAAAsH,OAAA,EAGAtH,EAAAxkB,OAAAvD,EAAA,SAAAA,GACAA,EAAAhW,QAAA6iB,UAAA7M,EAAAhW,QAAAsnC,kBAAAtxB,EAAAhW,QAAA8iB,QAAA9M,EAAAhW,QAAAunC,iBACAxJ,EAAAxkB,OAAAvD,EAAA,iBAAAA,IAAAhW,QAAA6iB,SAAA7M,EAAAhW,QAAA8iB,QACA9M,EAAAhW,QAAAsnC,iBAAAtxB,EAAAhW,QAAA6iB,SAAwD7M,EAAAhW,QAAAunC,eAAAvxB,EAAAhW,QAAA8iB,QAIxD,SAAA2Z,GAAAzmB,EAAAskB,GACA,IAAAyD,EAAA,IAAA+D,GAAA9rB,EAAAskB,GACA,GAAA+G,GAAArrB,EAAA+nB,GAAA,CACAhE,GAAA/jB,GACAqsB,GAAArsB,EAAA+nB,GACA,IAAAgE,EAAA7E,GAAAlnB,GACA0f,GAAA1f,GACA+oB,GAAA/oB,EAAA+rB,GACAK,GAAApsB,EAAA+rB,GACAhE,EAAAuF,UAiDA,SAAAlI,GAAAplB,GACA,IAAAyV,EAAAzV,EAAAhW,QAAA2qB,QAAAlP,YACAzF,EAAAhW,QAAAosB,MAAAlsB,MAAA4rB,WAAAL,EAAA,KAGA,SAAA2W,GAAApsB,EAAAuF,GACAvF,EAAAhW,QAAAosB,MAAAlsB,MAAA29B,UAAAtiB,EAAAgiB,UAAA,KACAvnB,EAAAhW,QAAAq/B,aAAAn/B,MAAA6uB,IAAAxT,EAAAgiB,UAAA,KACAvnB,EAAAhW,QAAA2qB,QAAAzqB,MAAAJ,OAAAyb,EAAAgiB,UAAAvnB,EAAAhW,QAAAutB,UAAAP,GAAAhX,GAAA,KAKA,SAAAwxB,GAAAxxB,GACA,IAAA2U,EAAA3U,EAAAhW,QAAA2qB,QAAA8c,EAAAzxB,EAAA9F,QAAAya,QACAzjB,EAAAyjB,GAEA,IADA,IAAA1vB,EAAA,EACUA,EAAAwsC,EAAAxmC,SAAkBhG,EAAA,CAC5B,IAAA8uB,EAAA0d,EAAAxsC,GACAysC,EAAA/c,EAAAljB,YAAAC,EAAA,gCAAAqiB,IACA,0BAAAA,IACA/T,EAAAhW,QAAAi7B,WAAAyM,EACAA,EAAAxnC,MAAAurB,OAAAzV,EAAAhW,QAAAm7B,cAAA,SAGAxQ,EAAAzqB,MAAAF,QAAA/E,EAAA,UACAmgC,GAAAplB,GAKA,SAAA2xB,GAAAz3B,GACA,IAAA8C,EAAAhI,EAAAkF,EAAAya,QAAA,2BACA,GAAA3X,GAAA9C,EAAAma,YACAna,EAAAya,QAAAza,EAAAya,QAAAxR,QAAA,2BACKnG,GAAA,IAAA9C,EAAAma,cACLna,EAAAya,QAAAza,EAAAya,QAAA1jB,MAAA,GACAiJ,EAAAya,QAAAlX,OAAAT,EAAA,IA5PA8uB,GAAA/3B,UAAAwP,OAAA,SAAAT,EAAApW,GACAyX,GAAArB,EAAApW,IACOlH,KAAAkqC,OAAAtqC,KAAA6O,YAEP63B,GAAA/3B,UAAAu5B,OAAA,WAGA,IAFA,IAEAroC,EAAA,EAAmBA,EAAAO,KAAAkqC,OAAAzkC,OAAwBhG,IACpCse,GAAArP,MAAA,KAHP1O,KAGOkqC,OAAAzqC,KAmQP,IAAA2sC,GAAA,EAAAC,GAAA,KAUA,SAAAC,GAAA9oC,GACA,IAAA+oC,EAAA/oC,EAAAgpC,YAAAC,EAAAjpC,EAAAkpC,YAIA,OAHA,MAAAH,GAAA/oC,EAAAmpC,QAAAnpC,EAAA+gC,MAAA/gC,EAAAopC,kBAAgEL,EAAA/oC,EAAAmpC,QAChE,MAAAF,GAAAjpC,EAAAmpC,QAAAnpC,EAAA+gC,MAAA/gC,EAAAqpC,cAA8DJ,EAAAjpC,EAAAmpC,OAC9D,MAAAF,IAA0BA,EAAAjpC,EAAAspC,aACd53B,EAAAq3B,EAAA5U,EAAA8U,GAEZ,SAAAM,GAAAvpC,GACA,IAAAwpC,EAAAV,GAAA9oC,GAGA,OAFAwpC,EAAA93B,GAAAm3B,GACAW,EAAArV,GAAA0U,GACAW,EAGA,SAAAC,GAAAzyB,EAAAhX,GACA,IAAAwpC,EAAAV,GAAA9oC,GAAA+oC,EAAAS,EAAA93B,EAAAu3B,EAAAO,EAAArV,EAEAnzB,EAAAgW,EAAAhW,QAAAG,EAAAH,EAAAmtB,SAEAub,EAAAvoC,EAAA88B,YAAA98B,EAAA8rB,YACA0c,EAAAxoC,EAAA08B,aAAA18B,EAAAmtB,aACA,GAAAya,GAAAW,GAAAT,GAAAU,EAAA,CAMA,GAAAV,GAAAhiC,GAAAX,EACAsK,EAAA,QAAAH,EAAAzQ,EAAAqL,OAAA8d,EAAAnoB,EAAAmoB,KAA0D1Y,GAAAtP,EAAesP,IAAArH,WACzE,QAAAnN,EAAA,EAAuBA,EAAAktB,EAAAlnB,OAAiBhG,IACxC,GAAAktB,EAAAltB,GAAA6L,MAAA2I,EAAA,CACAuG,EAAAhW,QAAA8mC,mBAAAr3B,EACA,MAAAG,EAYA,GAAAm4B,IAAAnjC,IAAAa,GAAA,MAAAoiC,GAWA,OAVAI,GAAAU,GACSnM,GAAAxmB,EAAA5J,KAAA0E,IAAA,EAAA3Q,EAAAtB,UAAAopC,EAAAJ,KACT9K,GAAA/mB,EAAA5J,KAAA0E,IAAA,EAAA3Q,EAAArB,WAAAipC,EAAAF,OAKAI,MAAAU,IACSruB,GAAAtb,QACTgB,EAAAsiC,YAAA,MAMA,GAAA2F,GAAA,MAAAJ,GAAA,CACA,IAAAe,EAAAX,EAAAJ,GACA9Y,EAAA/Y,EAAA3V,IAAAxB,UAAAyxB,EAAAvB,EAAA/uB,EAAAC,QAAAqtB,aACAsb,EAAA,EAAuB7Z,EAAA3iB,KAAA0E,IAAA,EAAAie,EAAA6Z,EAAA,IACXtY,EAAAlkB,KAAAC,IAAA2J,EAAA3V,IAAAP,OAAAwwB,EAAAsY,EAAA,IACZnM,GAAAzmB,GAA+B+Y,MAAAD,OAAAwB,IAG/BsX,GAAA,KACA,MAAA5nC,EAAAsiC,aACAtiC,EAAAsiC,YAAAniC,EAAArB,WAAgDkB,EAAAuiC,YAAApiC,EAAAtB,UAChDmB,EAAA6oC,QAAAd,EAA6B/nC,EAAA8oC,QAAAb,EAC7BtpC,WAAA,WACA,SAAAqB,EAAAsiC,YAAA,CACA,IAAAyG,EAAA5oC,EAAArB,WAAAkB,EAAAsiC,YACA0G,EAAA7oC,EAAAtB,UAAAmB,EAAAuiC,YACA0G,EAAAD,GAAAhpC,EAAA8oC,SAAAE,EAAAhpC,EAAA8oC,SACAC,GAAA/oC,EAAA6oC,SAAAE,EAAA/oC,EAAA6oC,QACA7oC,EAAAsiC,YAAAtiC,EAAAuiC,YAAA,KACA0G,IACApB,OAAAD,GAAAqB,IAAArB,GAAA,KACAA,MACS,OAET5nC,EAAA6oC,SAAAd,EAA8B/nC,EAAA8oC,SAAAb,KAzF9B/iC,EAAW2iC,IAAA,IACXjjC,EAAmBijC,GAAA,GACnBriC,EAAoBqiC,IAAA,GACpBniC,IAAoBmiC,IAAA,KAgGpB,IAAAqB,GAAA,SAAAhT,EAAAC,GACA36B,KAAA06B,SACA16B,KAAA26B,aAGA+S,GAAAn/B,UAAA8rB,QAAA,WAA6C,OAAAr6B,KAAA06B,OAAA16B,KAAA26B,YAE7C+S,GAAAn/B,UAAAo/B,OAAA,SAAAtW,GAGA,GAAAA,GAAAr3B,KAAwB,SACxB,GAAAq3B,EAAAsD,WAAA36B,KAAA26B,WAAAtD,EAAAqD,OAAAj1B,QAAAzF,KAAA06B,OAAAj1B,OAAyF,SACzF,QAAAhG,EAAA,EAAmBA,EAAAO,KAAA06B,OAAAj1B,OAAwBhG,IAAA,CAC3C,IAAAmuC,EALA5tC,KAKA06B,OAAAj7B,GAAAouC,EAAAxW,EAAAqD,OAAAj7B,GACA,IAAAuV,GAAA44B,EAAA5U,OAAA6U,EAAA7U,UAAAhkB,GAAA44B,EAAA7S,KAAA8S,EAAA9S,MAAiG,SAEjG,UAGA2S,GAAAn/B,UAAAu/B,SAAA,WAIA,IAHA,IAEA38B,KACA1R,EAAA,EAAmBA,EAAAO,KAAA06B,OAAAj1B,OAAwBhG,IACpC0R,EAAA1R,GAAA,IAAAsuC,GAAA94B,GAJPjV,KAIO06B,OAAAj7B,GAAAu5B,QAAA/jB,GAJPjV,KAIO06B,OAAAj7B,GAAAs7B,OACP,WAAA2S,GAAAv8B,EAAAnR,KAAA26B,YAGA+S,GAAAn/B,UAAAy/B,kBAAA,WAGA,IAFA,IAEAvuC,EAAA,EAAmBA,EAAAO,KAAA06B,OAAAj1B,OAAwBhG,IACpC,IAHPO,KAGO06B,OAAAj7B,GAAAm7B,QAAiC,SACxC,UAGA8S,GAAAn/B,UAAA9B,SAAA,SAAAgE,EAAAlD,GAGAA,IAAeA,EAAAkD,GACf,QAAAhR,EAAA,EAAmBA,EAAAO,KAAA06B,OAAAj1B,OAAwBhG,IAAA,CAC3C,IAAA2L,EAJApL,KAIA06B,OAAAj7B,GACA,GAAAsV,GAAAxH,EAAAnC,EAAAuH,SAAA,GAAAoC,GAAAtE,EAAArF,EAAAwH,OAAA,EACS,OAAAnT,EAET,UAGA,IAAAsuC,GAAA,SAAA/U,EAAA+B,GACA/6B,KAAAg5B,SAAyBh5B,KAAA+6B,QAUzB,SAAAkT,GAAAzzB,EAAAkgB,EAAAC,GACA,IAAAuT,EAAA1zB,KAAA9F,QAAAy5B,mBACAC,EAAA1T,EAAAC,GACAD,EAAA2T,KAAA,SAAA/uC,EAAA6N,GAAiC,OAAA4H,GAAAzV,EAAAqT,OAAAxF,EAAAwF,UACjCgoB,EAAAnrB,EAAAkrB,EAAA0T,GACA,QAAA3uC,EAAA,EAAmBA,EAAAi7B,EAAAj1B,OAAmBhG,IAAA,CACtC,IAAAwU,EAAAymB,EAAAj7B,GAAAoc,EAAA6e,EAAAj7B,EAAA,GACAsU,EAAAgB,GAAA8G,EAAAjJ,KAAAqB,EAAAtB,QACA,GAAAu7B,IAAAj6B,EAAA2mB,QAAA7mB,EAAA,EAAAA,GAAA,GACA,IAAApB,EAAAyC,GAAAyG,EAAAlJ,OAAAsB,EAAAtB,QAAAC,EAAAuC,GAAA0G,EAAAjJ,KAAAqB,EAAArB,MACA07B,EAAAzyB,EAAA+e,QAAA3mB,EAAAtB,QAAAsB,EAAA8mB,KAAAlf,EAAAlJ,QAAAkJ,EAAAkf,KACAt7B,GAAAk7B,KAA6BA,EAC7BD,EAAAziB,SAAAxY,EAAA,MAAAsuC,GAAAO,EAAA17B,EAAAD,EAAA27B,EAAA37B,EAAAC,KAGA,WAAA86B,GAAAhT,EAAAC,GAGA,SAAA4T,GAAAvV,EAAA+B,GACA,WAAA2S,IAAA,IAAAK,GAAA/U,EAAA+B,GAAA/B,IAAA,GAKA,SAAAwV,GAAAn4B,GACA,OAAAA,EAAAzC,KACAiB,GAAAwB,EAAA1D,KAAAe,KAAA2C,EAAAzC,KAAAnO,OAAA,EACAuL,EAAAqF,EAAAzC,MAAAnO,QAAA,GAAA4Q,EAAAzC,KAAAnO,OAAA4Q,EAAA1D,KAAAhB,GAAA,IAFuB0E,EAAAzD,GAOvB,SAAA67B,GAAAh+B,EAAA4F,GACA,GAAAtB,GAAAtE,EAAA4F,EAAA1D,MAAA,EAAoC,OAAAlC,EACpC,GAAAsE,GAAAtE,EAAA4F,EAAAzD,KAAA,EAAmC,OAAA47B,GAAAn4B,GAEnC,IAAA3C,EAAAjD,EAAAiD,KAAA2C,EAAAzC,KAAAnO,QAAA4Q,EAAAzD,GAAAc,KAAA2C,EAAA1D,KAAAe,MAAA,EAAA/B,EAAAlB,EAAAkB,GAEA,OADAlB,EAAAiD,MAAA2C,EAAAzD,GAAAc,OAAqC/B,GAAA68B,GAAAn4B,GAAA1E,GAAA0E,EAAAzD,GAAAjB,IACrCkD,GAAAnB,EAAA/B,GAGA,SAAA+8B,GAAA7pC,EAAAwR,GAEA,IADA,IAAAlF,KACA1R,EAAA,EAAmBA,EAAAoF,EAAA41B,IAAAC,OAAAj1B,OAA2BhG,IAAA,CAC9C,IAAA2L,EAAAvG,EAAA41B,IAAAC,OAAAj7B,GACA0R,EAAAvR,KAAA,IAAAmuC,GAAAU,GAAArjC,EAAA4tB,OAAA3iB,GACAo4B,GAAArjC,EAAA2vB,KAAA1kB,KAEA,OAAA43B,GAAAppC,EAAA2V,GAAArJ,EAAAtM,EAAA41B,IAAAE,WAGA,SAAAgU,GAAAl+B,EAAAoG,EAAAC,GACA,OAAArG,EAAAiD,MAAAmD,EAAAnD,KACOmB,GAAAiC,EAAApD,KAAAjD,EAAAkB,GAAAkF,EAAAlF,GAAAmF,EAAAnF,IAEAkD,GAAAiC,EAAApD,MAAAjD,EAAAiD,KAAAmD,EAAAnD,MAAAjD,EAAAkB,IA0BP,SAAAi9B,GAAAp0B,GACAA,EAAA3V,IAAApD,KAAAogB,GAAArH,EAAA9F,QAAA8F,EAAA3V,IAAAgqC,YACAC,GAAAt0B,GAGA,SAAAs0B,GAAAt0B,GACAA,EAAA3V,IAAA8O,KAAA,SAAAD,GACAA,EAAA6S,aAA4B7S,EAAA6S,WAAA,MAC5B7S,EAAAoS,SAAwBpS,EAAAoS,OAAA,QAExBtL,EAAA3V,IAAA8hB,aAAAnM,EAAA3V,IAAA6hB,kBAAAlM,EAAA3V,IAAAqO,MACAiuB,GAAA3mB,EAAA,KACAA,EAAAgI,MAAA6C,UACA7K,EAAAiE,OAAmB0pB,GAAA3tB,GAQnB,SAAAu0B,GAAAlqC,EAAAwR,GACA,UAAAA,EAAA1D,KAAAhB,IAAA,GAAA0E,EAAAzD,GAAAjB,IAAA,IAAAX,EAAAqF,EAAAzC,SACA/O,EAAA2V,IAAA3V,EAAA2V,GAAA9F,QAAAs6B,uBAIA,SAAAC,GAAApqC,EAAAwR,EAAAG,EAAA04B,GACA,SAAAC,EAAAtwC,GAA0B,OAAA2X,IAAA3X,GAAA,KAC1B,SAAA0jC,EAAA7uB,EAAAE,EAAAqC,IAt1FA,SAAAvC,EAAAE,EAAA4C,EAAAoS,GACAlV,EAAAE,OACAF,EAAA6S,aAA0B7S,EAAA6S,WAAA,MAC1B7S,EAAAoS,SAAsBpS,EAAAoS,OAAA,MACtB,MAAApS,EAAAoH,QAA6BpH,EAAAoH,MAAA,MAC7B5C,GAAAxE,GACA0E,GAAA1E,EAAA8C,GACA,IAAAijB,EAAA7Q,IAAAlV,GAAA,EACA+lB,GAAA/lB,EAAApP,QAAmCwP,GAAAJ,EAAA+lB,GA+0FnC2V,CAAA17B,EAAAE,EAAAqC,EAAAi5B,GACApiB,GAAApZ,EAAA,SAAAA,EAAA2C,GAEA,SAAAg5B,EAAA/hC,EAAAC,GAEA,IADA,IAAAmT,KACAjhB,EAAA6N,EAAyB7N,EAAA8N,IAAS9N,EACzBihB,EAAA9gB,KAAA,IAAA+oB,GAAA/U,EAAAnU,GAAA0vC,EAAA1vC,GAAAyvC,IACT,OAAAxuB,EAGA,IAAA/N,EAAA0D,EAAA1D,KAAAC,EAAAyD,EAAAzD,GAAAgB,EAAAyC,EAAAzC,KACA07B,EAAAr8B,GAAApO,EAAA8N,EAAAe,MAAAoG,EAAA7G,GAAApO,EAAA+N,EAAAc,MACA67B,EAAAv+B,EAAA4C,GAAA47B,EAAAL,EAAAv7B,EAAAnO,OAAA,GAAAgqC,EAAA78B,EAAAc,KAAAf,EAAAe,KAGA,GAAA2C,EAAAC,KACAzR,EAAA6qC,OAAA,EAAAL,EAAA,EAAAz7B,EAAAnO,SACAZ,EAAAV,OAAAyP,EAAAnO,OAAAZ,EAAAlD,KAAAiS,EAAAnO,aACK,GAAAspC,GAAAlqC,EAAAwR,GAAA,CAGL,IAAAs5B,EAAAN,EAAA,EAAAz7B,EAAAnO,OAAA,GACA88B,EAAAzoB,IAAAlG,KAAA47B,GACAC,GAAmB5qC,EAAAV,OAAAwO,EAAAe,KAAA+7B,GACnBE,EAAAlqC,QAAyBZ,EAAA6qC,OAAA/8B,EAAAe,KAAAi8B,QACpB,GAAAL,GAAAx1B,EACL,MAAAlG,EAAAnO,OACA88B,EAAA+M,IAAA17B,KAAAnI,MAAA,EAAAkH,EAAAhB,IAAA49B,EAAAD,EAAA17B,KAAAnI,MAAAmH,EAAAjB,IAAA69B,OACO,CACP,IAAAI,EAAAP,EAAA,EAAAz7B,EAAAnO,OAAA,GACAmqC,EAAAhwC,KAAA,IAAA+oB,GAAA4mB,EAAAD,EAAA17B,KAAAnI,MAAAmH,EAAAjB,IAAA69B,EAAAN,IACA3M,EAAA+M,IAAA17B,KAAAnI,MAAA,EAAAkH,EAAAhB,IAAAiC,EAAA,GAAAu7B,EAAA,IACAtqC,EAAA6qC,OAAA/8B,EAAAe,KAAA,EAAAk8B,QAEK,MAAAh8B,EAAAnO,OACL88B,EAAA+M,IAAA17B,KAAAnI,MAAA,EAAAkH,EAAAhB,IAAAiC,EAAA,GAAAkG,EAAAlG,KAAAnI,MAAAmH,EAAAjB,IAAAw9B,EAAA,IACAtqC,EAAAV,OAAAwO,EAAAe,KAAA,EAAA+7B,OACK,CACLlN,EAAA+M,IAAA17B,KAAAnI,MAAA,EAAAkH,EAAAhB,IAAAiC,EAAA,GAAAu7B,EAAA,IACA5M,EAAAzoB,EAAAy1B,EAAAz1B,EAAAlG,KAAAnI,MAAAmH,EAAAjB,IAAA69B,GACA,IAAAK,EAAAR,EAAA,EAAAz7B,EAAAnO,OAAA,GACAgqC,EAAA,GAAuB5qC,EAAAV,OAAAwO,EAAAe,KAAA,EAAA+7B,EAAA,GACvB5qC,EAAA6qC,OAAA/8B,EAAAe,KAAA,EAAAm8B,GAGA/iB,GAAAjoB,EAAA,SAAAA,EAAAwR,GAIA,SAAAy5B,GAAAjrC,EAAAuJ,EAAA2hC,IACA,SAAAC,EAAAnrC,EAAAorC,EAAAC,GACA,GAAArrC,EAAAsrC,OAAuB,QAAA1wC,EAAA,EAAgBA,EAAAoF,EAAAsrC,OAAA1qC,SAAuBhG,EAAA,CAC9D,IAAA2wC,EAAAvrC,EAAAsrC,OAAA1wC,GACA,GAAA2wC,EAAAvrC,KAAAorC,EAAA,CACA,IAAAI,EAAAH,GAAAE,EAAAF,WACAH,IAAAM,IACAjiC,EAAAgiC,EAAAvrC,IAAAwrC,GACAL,EAAAI,EAAAvrC,MAAAwrC,MAGAL,CAAAnrC,EAAA,SAIA,SAAAyrC,GAAA91B,EAAA3V,GACA,GAAAA,EAAA2V,GAAiB,UAAArH,MAAA,oCACjBqH,EAAA3V,MACAA,EAAA2V,KACA+e,GAAA/e,GACAo0B,GAAAp0B,GACA+1B,GAAA/1B,GACAA,EAAA9F,QAAAse,cAAmCzY,GAAAC,GACnCA,EAAA9F,QAAAjT,KAAAoD,EAAAgqC,WACA1G,GAAA3tB,GAGA,SAAA+1B,GAAA/1B,IACA,OAAAA,EAAA3V,IAAA4W,UAAA/S,EAAA2C,GAAAmP,EAAAhW,QAAAi6B,QAAA,kBAUA,SAAA+R,GAAAC,GAIAzwC,KAAA0wC,QAAmB1wC,KAAA2wC,UACnB3wC,KAAA4wC,UAAA3kB,IAGAjsB,KAAA6wC,YAAA7wC,KAAA8wC,YAAA,EACA9wC,KAAA+wC,OAAA/wC,KAAAgxC,UAAA,KACAhxC,KAAAixC,WAAAjxC,KAAAkxC,cAAA,KAEAlxC,KAAAmxC,WAAAnxC,KAAAoxC,cAAAX,GAAA,EAKA,SAAAY,GAAAxsC,EAAAwR,GACA,IAAAi7B,GAAsB3+B,KAAAsC,GAAAoB,EAAA1D,MAAAC,GAAA47B,GAAAn4B,GAAAzC,KAAAH,GAAA5O,EAAAwR,EAAA1D,KAAA0D,EAAAzD,KAGtB,OAFA2+B,GAAA1sC,EAAAysC,EAAAj7B,EAAA1D,KAAAe,KAAA2C,EAAAzD,GAAAc,KAAA,GACAo8B,GAAAjrC,EAAA,SAAAA,GAAoC,OAAA0sC,GAAA1sC,EAAAysC,EAAAj7B,EAAA1D,KAAAe,KAAA2C,EAAAzD,GAAAc,KAAA,KAAkF,GACtH49B,EAKA,SAAAE,GAAA5hC,GACA,KAAAA,EAAAnK,QAAA,CAEA,IADAuL,EAAApB,GACA8qB,OACY,MADY9qB,EAAA6hC,OAsBxB,SAAAC,GAAA7sC,EAAAwR,EAAAs7B,EAAAC,GACA,IAAAC,EAAAhtC,EAAAitC,QACAD,EAAAlB,OAAAlrC,OAAA,EACA,IAAAwO,EACAuB,EADAyzB,GAAA,IAAAG,KAGA,IAAAyI,EAAAd,QAAAa,GACAC,EAAAZ,YAAA56B,EAAAhG,QAAAgG,EAAAhG,SACA,KAAAgG,EAAAhG,OAAAmC,OAAA,IAAAq/B,EAAAhB,YAAA5H,GAAApkC,EAAA2V,GAAA3V,EAAA2V,GAAA9F,QAAAq9B,kBAAA,MACA,KAAA17B,EAAAhG,OAAAmC,OAAA,OACAyB,EAzBA,SAAA49B,EAAAhI,GACA,OAAAA,GACA2H,GAAAK,EAAAnB,MACA1/B,EAAA6gC,EAAAnB,OACKmB,EAAAnB,KAAAjrC,SAAAuL,EAAA6gC,EAAAnB,MAAAhW,OACL1pB,EAAA6gC,EAAAnB,MACKmB,EAAAnB,KAAAjrC,OAAA,IAAAosC,EAAAnB,KAAAmB,EAAAnB,KAAAjrC,OAAA,GAAAi1B,QACLmX,EAAAnB,KAAAe,MACAzgC,EAAA6gC,EAAAnB,YAFK,EAmBLsB,CAAAH,IAAAd,QAAAa,IAEAp8B,EAAAxE,EAAAiD,EAAAoZ,SACA,GAAAtY,GAAAsB,EAAA1D,KAAA0D,EAAAzD,KAAA,GAAAmC,GAAAsB,EAAA1D,KAAA6C,EAAA5C,IAGA4C,EAAA5C,GAAA47B,GAAAn4B,GAGApC,EAAAoZ,QAAAztB,KAAAyxC,GAAAxsC,EAAAwR,QAEK,CAEL,IAAAqG,EAAA1L,EAAA6gC,EAAAnB,MAMA,IALAh0B,KAAAge,QACSuX,GAAAptC,EAAA41B,IAAAoX,EAAAnB,MACTz8B,GAAaoZ,SAAAgkB,GAAAxsC,EAAAwR,IACb86B,WAAAU,EAAAV,YACAU,EAAAnB,KAAA9wC,KAAAqU,GACA49B,EAAAnB,KAAAjrC,OAAAosC,EAAAjB,WACAiB,EAAAnB,KAAApS,QACAuT,EAAAnB,KAAA,GAAAhW,QAAmCmX,EAAAnB,KAAApS,QAGnCuT,EAAAnB,KAAA9wC,KAAA+xC,GACAE,EAAAV,aAAAU,EAAAT,cACAS,EAAAhB,YAAAgB,EAAAf,YAAA7H,EACA4I,EAAAd,OAAAc,EAAAb,UAAAY,EACAC,EAAAZ,WAAAY,EAAAX,cAAA76B,EAAAhG,OAEAmF,GAAgBuI,GAAAlZ,EAAA,gBAgBhB,SAAAqtC,GAAArtC,EAAA41B,EAAAmX,EAAAl9B,GACA,IAAAm9B,EAAAhtC,EAAAitC,QAAAzhC,EAAAqE,KAAArE,OAMAuhC,GAAAC,EAAAb,WACA3gC,GAAAwhC,EAAAX,eAAA7gC,IACAwhC,EAAAhB,aAAAgB,EAAAf,aAAAe,EAAAZ,YAAA5gC,GAtBA,SAAAxL,EAAAwL,EAAAwL,EAAA4e,GACA,IAAA9oB,EAAAtB,EAAAmC,OAAA,GACA,WAAAb,GACA,KAAAA,GACAkK,EAAA6e,OAAAj1B,QAAAg1B,EAAAC,OAAAj1B,QACAoW,EAAAmyB,qBAAAvT,EAAAuT,qBACA,IAAA5E,KAAAvkC,EAAAitC,QAAAhB,cAAAjsC,EAAA2V,GAAA3V,EAAA2V,GAAA9F,QAAAq9B,kBAAA,KAiBAI,CAAAttC,EAAAwL,EAAAW,EAAA6gC,EAAAnB,MAAAjW,IACOoX,EAAAnB,KAAAmB,EAAAnB,KAAAjrC,OAAA,GAAAg1B,EAEAwX,GAAAxX,EAAAoX,EAAAnB,MAEPmB,EAAAf,aAAA,IAAA1H,KACAyI,EAAAX,cAAA7gC,EACAwhC,EAAAb,UAAAY,EACAl9B,IAAA,IAAAA,EAAA09B,WACOZ,GAAAK,EAAAlB,QAGP,SAAAsB,GAAAxX,EAAA4X,GACA,IAAA9e,EAAAviB,EAAAqhC,GACA9e,KAAAmH,QAAAnH,EAAAoa,OAAAlT,IACO4X,EAAAzyC,KAAA66B,GAIP,SAAA8W,GAAA1sC,EAAAwR,EAAA1D,EAAAC,GACA,IAAA0/B,EAAAj8B,EAAA,SAAAxR,EAAAxC,IAAAxD,EAAA,EACAgG,EAAA8O,KAAA/C,KAAA0E,IAAAzQ,EAAAqO,MAAAP,GAAA/B,KAAAC,IAAAhM,EAAAqO,MAAArO,EAAAlD,KAAAiR,GAAA,SAAAc,GACAA,EAAA8C,eACS87B,MAAAj8B,EAAA,SAAAxR,EAAAxC,SAAwDxD,GAAA6U,EAAA8C,eACjE3X,IAMA,SAAA0zC,GAAAt8B,GACA,IAAAA,EAAiB,YAEjB,IADA,IAAA9E,EACA1R,EAAA,EAAmBA,EAAAwW,EAAAxQ,SAAkBhG,EACrCwW,EAAAxW,GAAAsW,OAAAy8B,kBAA8CrhC,IAAYA,EAAA8E,EAAAxK,MAAA,EAAAhM,IAC1D0R,GAAqBA,EAAAvR,KAAAqW,EAAAxW,IAErB,OAAA0R,IAAA1L,OAAA0L,EAAA,KAAA8E,EAiBA,SAAAw8B,GAAA5tC,EAAAwR,GACA,IAAAQ,EAdA,SAAAhS,EAAAwR,GACA,IAAAmB,EAAAnB,EAAA,SAAAxR,EAAAxC,IACA,IAAAmV,EAAiB,YAEjB,IADA,IAAAV,KACArX,EAAA,EAAmBA,EAAA4W,EAAAzC,KAAAnO,SAAwBhG,EACpCqX,EAAAlX,KAAA2yC,GAAA/6B,EAAA/X,KACP,OAAAqX,EAQA47B,CAAA7tC,EAAAwR,GACAs8B,EAAAv8B,GAAAvR,EAAAwR,GACA,IAAAQ,EAAe,OAAA87B,EACf,IAAAA,EAAqB,OAAA97B,EAErB,QAAApX,EAAA,EAAmBA,EAAAoX,EAAApR,SAAgBhG,EAAA,CACnC,IAAAmzC,EAAA/7B,EAAApX,GAAAozC,EAAAF,EAAAlzC,GACA,GAAAmzC,GAAAC,EACA58B,EAAA,QAAAmG,EAAA,EAA8BA,EAAAy2B,EAAAptC,SAAuB2W,EAAA,CAErD,IADA,IAAAlG,EAAA28B,EAAAz2B,GACA8S,EAAA,EAAyBA,EAAA0jB,EAAAntC,SAAmBypB,EAC/B,GAAA0jB,EAAA1jB,GAAAnZ,QAAAG,EAAAH,OAAuC,SAAAE,EACpD28B,EAAAhzC,KAAAsW,QAEO28B,IACPh8B,EAAApX,GAAAozC,GAGA,OAAAh8B,EAKA,SAAAi8B,GAAA5I,EAAA6I,EAAAC,GAEA,IADA,IAAAlrB,KACAroB,EAAA,EAAmBA,EAAAyqC,EAAAzkC,SAAmBhG,EAAA,CACtC,IAAAwzC,EAAA/I,EAAAzqC,GACA,GAAAwzC,EAAAvY,OACA5S,EAAAloB,KAAAozC,EAAAtF,GAAAn/B,UAAAu/B,SAAAt/B,KAAAykC,UADA,CAIA,IAAA5lB,EAAA4lB,EAAA5lB,QAAA6lB,KACAprB,EAAAloB,MAAiBytB,QAAA6lB,IACjB,QAAA92B,EAAA,EAAqBA,EAAAiR,EAAA5nB,SAAoB2W,EAAA,CACzC,IAAA/F,EAAAgX,EAAAjR,GAAAS,OAAA,EAEA,GADAq2B,EAAAtzC,MAAyB+S,KAAA0D,EAAA1D,KAAAC,GAAAyD,EAAAzD,GAAAgB,KAAAyC,EAAAzC,OACzBm/B,EAAuB,QAAAhkC,KAAAsH,GAA2BwG,EAAA9N,EAAAlE,MAAA,mBAClD2E,EAAAujC,EAAAjoC,OAAA+R,EAAA,UACA7L,EAAAkiC,GAAAnkC,GAAAsH,EAAAtH,UACAsH,EAAAtH,MAKA,OAAA+Y,EAWA,SAAAqrB,GAAA/nC,EAAA2vB,EAAA1D,EAAAyT,GACA,GAAAA,EAAA,CACA,IAAA9R,EAAA5tB,EAAA4tB,OACA,GAAA3B,EAAA,CACA,IAAA+b,EAAAr+B,GAAAgmB,EAAA/B,GAAA,EACAoa,GAAAr+B,GAAAsiB,EAAA2B,GAAA,GACAA,EAAA+B,EACAA,EAAA1D,GACS+b,GAAAr+B,GAAAgmB,EAAA1D,GAAA,IACT0D,EAAA1D,GAGA,WAAA0W,GAAA/U,EAAA+B,GAEA,WAAAgT,GAAA1W,GAAA0D,KAKA,SAAAsY,GAAAxuC,EAAAk2B,EAAA1D,EAAA3iB,EAAAo2B,GACA,MAAAA,IAAyBA,EAAAjmC,EAAA2V,KAAA3V,EAAA2V,GAAAhW,QAAA85B,OAAAz5B,EAAAimC,SACzBwI,GAAAzuC,EAAA,IAAA6oC,IAAAyF,GAAAtuC,EAAA41B,IAAAJ,UAAAU,EAAA1D,EAAAyT,IAAA,GAAAp2B,GAKA,SAAA6+B,GAAA1uC,EAAA2uC,EAAA9+B,GAGA,IAFA,IAAAvD,KACA25B,EAAAjmC,EAAA2V,KAAA3V,EAAA2V,GAAAhW,QAAA85B,OAAAz5B,EAAAimC,QACArrC,EAAA,EAAmBA,EAAAoF,EAAA41B,IAAAC,OAAAj1B,OAA2BhG,IACvC0R,EAAA1R,GAAA0zC,GAAAtuC,EAAA41B,IAAAC,OAAAj7B,GAAA+zC,EAAA/zC,GAAA,KAAAqrC,GAEPwI,GAAAzuC,EADAopC,GAAAppC,EAAA2V,GAAArJ,EAAAtM,EAAA41B,IAAAE,WACAjmB,GAIA,SAAA++B,GAAA5uC,EAAApF,EAAA2L,EAAAsJ,GACA,IAAAgmB,EAAA71B,EAAA41B,IAAAC,OAAAjvB,MAAA,GACAivB,EAAAj7B,GAAA2L,EACAkoC,GAAAzuC,EAAAopC,GAAAppC,EAAA2V,GAAAkgB,EAAA71B,EAAA41B,IAAAE,WAAAjmB,GAIA,SAAAg/B,GAAA7uC,EAAAm0B,EAAA+B,EAAArmB,GACA4+B,GAAAzuC,EAAA0pC,GAAAvV,EAAA+B,GAAArmB,GAwBA,SAAAi/B,GAAA9uC,EAAA41B,EAAA/lB,GACA,IAAAg8B,EAAA7rC,EAAAitC,QAAApB,KAAAl7B,EAAAxE,EAAA0/B,GACAl7B,KAAAklB,QACAgW,IAAAjrC,OAAA,GAAAg1B,EACAmZ,GAAA/uC,EAAA41B,EAAA/lB,IAEA4+B,GAAAzuC,EAAA41B,EAAA/lB,GAKA,SAAA4+B,GAAAzuC,EAAA41B,EAAA/lB,GACAk/B,GAAA/uC,EAAA41B,EAAA/lB,GACAw9B,GAAArtC,IAAA41B,IAAA51B,EAAA2V,GAAA3V,EAAA2V,GAAAiE,MAAApc,GAAAwxC,IAAAn/B,GAGA,SAAAk/B,GAAA/uC,EAAA41B,EAAA/lB,IACAiK,GAAA9Z,EAAA,0BAAAA,EAAA2V,IAAAmE,GAAA9Z,EAAA2V,GAAA,4BACOigB,EArCP,SAAA51B,EAAA41B,EAAA/lB,GACA,IAAA9F,GACA8rB,OAAAD,EAAAC,OACA6H,OAAA,SAAA7H,GAGA16B,KAAA06B,UACA,QAAAj7B,EAAA,EAAuBA,EAAAi7B,EAAAj1B,OAAmBhG,IAH1CO,KAIW06B,OAAAj7B,GAAA,IAAAsuC,GAAAx4B,GAAA1Q,EAAA61B,EAAAj7B,GAAAu5B,QACXzjB,GAAA1Q,EAAA61B,EAAAj7B,GAAAs7B,QAEA1qB,OAAAqE,KAAArE,QAIA,OAFA0N,GAAAlZ,EAAA,wBAAAA,EAAA+J,GACA/J,EAAA2V,IAAiBuD,GAAAlZ,EAAA2V,GAAA,wBAAA3V,EAAA2V,GAAA5L,GACjBA,EAAA8rB,QAAAD,EAAAC,OAAmCuT,GAAAppC,EAAA2V,GAAA5L,EAAA8rB,OAAA9rB,EAAA8rB,OAAAj1B,OAAA,GACzBg1B,EAqBHqZ,CAAAjvC,EAAA41B,EAAA/lB,IAIPq/B,GAAAlvC,EAAAmvC,GAAAnvC,EAAA41B,EAFA/lB,KAAAwd,OACAnd,GAAA0lB,EAAAJ,UAAAU,KAAAl2B,EAAA41B,IAAAJ,UAAAU,MAAA,SACA,IAEArmB,IAAA,IAAAA,EAAA/P,SAAAE,EAAA2V,IACOimB,GAAA57B,EAAA2V,IAGP,SAAAu5B,GAAAlvC,EAAA41B,GACAA,EAAAkT,OAAA9oC,EAAA41B,OAEA51B,EAAA41B,MAEA51B,EAAA2V,KACA3V,EAAA2V,GAAAiE,MAAAmmB,YAAA,EACA//B,EAAA2V,GAAAiE,MAAAumB,kBAAA,EACAzmB,GAAA1Z,EAAA2V,KAEAsS,GAAAjoB,EAAA,iBAAAA,IAKA,SAAAovC,GAAApvC,GACAkvC,GAAAlvC,EAAAmvC,GAAAnvC,IAAA41B,IAAA,UAKA,SAAAuZ,GAAAnvC,EAAA41B,EAAAvI,EAAAgiB,GAEA,IADA,IAAA/iC,EACA1R,EAAA,EAAmBA,EAAAg7B,EAAAC,OAAAj1B,OAAuBhG,IAAA,CAC1C,IAAA2L,EAAAqvB,EAAAC,OAAAj7B,GACAoX,EAAA4jB,EAAAC,OAAAj1B,QAAAZ,EAAA41B,IAAAC,OAAAj1B,QAAAZ,EAAA41B,IAAAC,OAAAj7B,GACA00C,EAAAC,GAAAvvC,EAAAuG,EAAA4tB,OAAAniB,KAAAmiB,OAAA9G,EAAAgiB,GACAG,EAAAD,GAAAvvC,EAAAuG,EAAA2vB,KAAAlkB,KAAAkkB,KAAA7I,EAAAgiB,IACA/iC,GAAAgjC,GAAA/oC,EAAA4tB,QAAAqb,GAAAjpC,EAAA2vB,QACA5pB,IAAmBA,EAAAspB,EAAAC,OAAAjvB,MAAA,EAAAhM,IACnB0R,EAAA1R,GAAA,IAAAsuC,GAAAoG,EAAAE,IAGA,OAAAljC,EAAA88B,GAAAppC,EAAA2V,GAAArJ,EAAAspB,EAAAE,WAAAF,EAGA,SAAA6Z,GAAAzvC,EAAA4L,EAAA8jC,EAAAhiC,EAAA2hC,GACA,IAAAxgC,EAAAT,GAAApO,EAAA4L,EAAAiD,MACA,GAAAA,EAAA8C,YAA2B,QAAA/W,EAAA,EAAgBA,EAAAiU,EAAA8C,YAAA/Q,SAA6BhG,EAAA,CACxE,IAAAwZ,EAAAvF,EAAA8C,YAAA/W,GAAAod,EAAA5D,EAAAlD,OACA,UAAAkD,EAAAtG,OAAAkK,EAAA9F,cAAAkC,EAAAtG,MAAAlC,EAAAkB,GAAAsH,EAAAtG,KAAAlC,EAAAkB,OACA,MAAAsH,EAAArG,KAAAiK,EAAA3F,eAAA+B,EAAArG,IAAAnC,EAAAkB,GAAAsH,EAAArG,GAAAnC,EAAAkB,KAAA,CACA,GAAAuiC,IACAn2B,GAAAlB,EAAA,qBACAA,EAAA21B,mBAAA,CACA,GAAA9+B,EAAA8C,YACA,GAAkB/W,EAAI,SADc,MAIpC,IAAAod,EAAA23B,OAAwB,SAExB,GAAAD,EAAA,CACA,IAAAE,EAAA53B,EAAAlE,KAAApG,EAAA,QAAAwB,OAAA,EAGA,IAFAxB,EAAA,EAAAsK,EAAA3F,eAAA2F,EAAA9F,iBACa09B,EAAAC,GAAA7vC,EAAA4vC,GAAAliC,EAAAkiC,KAAA/gC,MAAAjD,EAAAiD,OAAA,OACb+gC,KAAA/gC,MAAAjD,EAAAiD,OAAAK,EAAAgB,GAAA0/B,EAAAF,MAAAhiC,EAAA,EAAAwB,EAAA,EAAAA,EAAA,GACa,OAAAugC,GAAAzvC,EAAA4vC,EAAAhkC,EAAA8B,EAAA2hC,GAGb,IAAAS,EAAA93B,EAAAlE,KAAApG,EAAA,QAGA,OAFAA,EAAA,EAAAsK,EAAA9F,cAAA8F,EAAA3F,kBACWy9B,EAAAD,GAAA7vC,EAAA8vC,EAAApiC,EAAAoiC,EAAAjhC,MAAAjD,EAAAiD,OAAA,OACXihC,EAAAL,GAAAzvC,EAAA8vC,EAAAlkC,EAAA8B,EAAA2hC,GAAA,MAGA,OAAAzjC,EAIA,SAAA2jC,GAAAvvC,EAAA4L,EAAA8jC,EAAAriB,EAAAgiB,GACA,IAAA3hC,EAAA2f,GAAA,EACA1a,EAAA88B,GAAAzvC,EAAA4L,EAAA8jC,EAAAhiC,EAAA2hC,KACAA,GAAAI,GAAAzvC,EAAA4L,EAAA8jC,EAAAhiC,GAAA,IACA+hC,GAAAzvC,EAAA4L,EAAA8jC,GAAAhiC,EAAA2hC,KACAA,GAAAI,GAAAzvC,EAAA4L,EAAA8jC,GAAAhiC,GAAA,GACA,OAAAiF,IACA3S,EAAA+vC,UAAA,EACA//B,GAAAhQ,EAAAqO,MAAA,IAKA,SAAAwhC,GAAA7vC,EAAA4L,EAAA8B,EAAAmB,GACA,OAAAnB,EAAA,MAAA9B,EAAAkB,GACAlB,EAAAiD,KAAA7O,EAAAqO,MAAiCqC,GAAA1Q,EAAAgQ,GAAApE,EAAAiD,KAAA,IACrB,KACPnB,EAAA,GAAA9B,EAAAkB,KAAA+B,GAAAT,GAAApO,EAAA4L,EAAAiD,OAAAE,KAAAnO,OACLgL,EAAAiD,KAAA7O,EAAAqO,MAAArO,EAAAlD,KAAA,EAAgDkT,GAAApE,EAAAiD,KAAA,KACpC,KAEZ,IAAAmB,GAAApE,EAAAiD,KAAAjD,EAAAkB,GAAAY,GAIA,SAAAsiC,GAAAr6B,GACAA,EAAA84B,aAAAz+B,GAAA2F,EAAA80B,YAAA,GAAAz6B,GAAA2F,EAAAV,YAAA3J,GAMA,SAAA2kC,GAAAjwC,EAAAwR,EAAAksB,GACA,IAAA3zB,GACAmmC,UAAA,EACApiC,KAAA0D,EAAA1D,KACAC,GAAAyD,EAAAzD,GACAgB,KAAAyC,EAAAzC,KACAvD,OAAAgG,EAAAhG,OACA2kC,OAAA,WAA2B,OAAApmC,EAAAmmC,UAAA,IAW3B,OATAxS,IAAiB3zB,EAAA2zB,OAAA,SAAA5vB,EAAAC,EAAAgB,EAAAvD,GACjBsC,IAAiB/D,EAAA+D,KAAA4C,GAAA1Q,EAAA8N,IACjBC,IAAehE,EAAAgE,GAAA2C,GAAA1Q,EAAA+N,IACfgB,IAAiBhF,EAAAgF,aACjB4P,IAAAnT,IAAiCzB,EAAAyB,YAEjC0N,GAAAlZ,EAAA,eAAAA,EAAA+J,GACA/J,EAAA2V,IAAiBuD,GAAAlZ,EAAA2V,GAAA,eAAA3V,EAAA2V,GAAA5L,GAEjBA,EAAAmmC,UACAlwC,EAAA2V,KAAmB3V,EAAA2V,GAAAiE,MAAAmmB,YAAA,GACnB,OAEYjyB,KAAA/D,EAAA+D,KAAAC,GAAAhE,EAAAgE,GAAAgB,KAAAhF,EAAAgF,KAAAvD,OAAAzB,EAAAyB,QAKZ,SAAA4kC,GAAApwC,EAAAwR,EAAA6+B,GACA,GAAArwC,EAAA2V,GAAA,CACA,IAAA3V,EAAA2V,GAAAiE,MAA0B,OAAAupB,GAAAnjC,EAAA2V,GAAAy6B,GAAAjN,CAAAnjC,EAAAwR,EAAA6+B,GAC1B,GAAArwC,EAAA2V,GAAAgI,MAAA2yB,cAAuC,OAGvC,KAAAx2B,GAAA9Z,EAAA,iBAAAA,EAAA2V,IAAAmE,GAAA9Z,EAAA2V,GAAA,mBACAnE,EAAAy+B,GAAAjwC,EAAAwR,GAAA,IADA,CAOA,IAAAtT,EAAA6S,KAAAs/B,GAp9IA,SAAArwC,EAAA8N,EAAAC,GACA,IAAA+b,EAAA,KAQA,GAPA9pB,EAAA8O,KAAAhB,EAAAe,KAAAd,EAAAc,KAAA,WAAAA,GACA,GAAAA,EAAA8C,YAA6B,QAAA/W,EAAA,EAAgBA,EAAAiU,EAAA8C,YAAA/Q,SAA6BhG,EAAA,CAC1E,IAAA21C,EAAA1hC,EAAA8C,YAAA/W,GAAAsW,QACAq/B,EAAAlX,UAAAvP,IAAA,GAAAnf,EAAAmf,EAAAymB,KACWzmB,WAAA/uB,KAAAw1C,OAGXzmB,EAAmB,YAEnB,IADA,IAAA0mB,IAAkB1iC,OAAAC,OAClBnT,EAAA,EAAmBA,EAAAkvB,EAAAlpB,SAAoBhG,EAEvC,IADA,IAAA61C,EAAA3mB,EAAAlvB,GAAAod,EAAAy4B,EAAA38B,KAAA,GACAyD,EAAA,EAAqBA,EAAAi5B,EAAA5vC,SAAkB2W,EAAA,CACvC,IAAAxb,EAAAy0C,EAAAj5B,GACA,KAAArH,GAAAnU,EAAAgS,GAAAiK,EAAAlK,MAAA,GAAAoC,GAAAnU,EAAA+R,KAAAkK,EAAAjK,IAAA,IACA,IAAA2iC,GAAAn5B,EAAA,GAAAo5B,EAAAzgC,GAAAnU,EAAA+R,KAAAkK,EAAAlK,MAAA8iC,EAAA1gC,GAAAnU,EAAAgS,GAAAiK,EAAAjK,KACA4iC,EAAA,IAAAF,EAAAv+B,gBAAAy+B,IACWD,EAAA31C,MAAgB+S,KAAA/R,EAAA+R,KAAAC,GAAAiK,EAAAlK,QAC3B8iC,EAAA,IAAAH,EAAAp+B,iBAAAu+B,IACWF,EAAA31C,MAAgB+S,KAAAkK,EAAAjK,MAAAhS,EAAAgS,KAC3ByiC,EAAAp9B,OAAAvJ,MAAA2mC,EAAAE,GACAn5B,GAAAm5B,EAAA9vC,OAAA,GAGA,OAAA4vC,EA27IAK,CAAA7wC,EAAAwR,EAAA1D,KAAA0D,EAAAzD,IACA,GAAA7P,EACA,QAAAtD,EAAAsD,EAAA0C,OAAA,EAAoChG,GAAA,IAAQA,EACnCk2C,GAAA9wC,GAAuB8N,KAAA5P,EAAAtD,GAAAkT,KAAAC,GAAA7P,EAAAtD,GAAAmT,GAAAgB,KAAAnU,GAAA,IAAA4W,EAAAzC,KAAAvD,OAAAgG,EAAAhG,cAEhCslC,GAAA9wC,EAAAwR,IAIA,SAAAs/B,GAAA9wC,EAAAwR,GACA,MAAAA,EAAAzC,KAAAnO,QAAA,IAAA4Q,EAAAzC,KAAA,OAAAmB,GAAAsB,EAAA1D,KAAA0D,EAAAzD,IAAA,CACA,IAAA++B,EAAAjD,GAAA7pC,EAAAwR,GACAq7B,GAAA7sC,EAAAwR,EAAAs7B,EAAA9sC,EAAA2V,GAAA3V,EAAA2V,GAAAiE,MAAApc,GAAAwxC,KAEA+B,GAAA/wC,EAAAwR,EAAAs7B,EAAAv7B,GAAAvR,EAAAwR,IACA,IAAAw/B,KAEA/F,GAAAjrC,EAAA,SAAAA,EAAAqrC,GACAA,IAAA,GAAA1gC,EAAAqmC,EAAAhxC,EAAAitC,WACAgE,GAAAjxC,EAAAitC,QAAAz7B,GACAw/B,EAAAj2C,KAAAiF,EAAAitC,UAEA8D,GAAA/wC,EAAAwR,EAAA,KAAAD,GAAAvR,EAAAwR,OAKA,SAAA0/B,GAAAlxC,EAAAqC,EAAA8uC,GACA,IAAAC,EAAApxC,EAAA2V,IAAA3V,EAAA2V,GAAAgI,MAAA2yB,cACA,IAAAc,GAAAD,EAAA,CAQA,IANA,IAAA/C,EAAApB,EAAAhtC,EAAAitC,QAAAH,EAAA9sC,EAAA41B,IACAzoB,EAAA,QAAA9K,EAAA2qC,EAAAnB,KAAAmB,EAAAlB,OAAA0B,EAAA,QAAAnrC,EAAA2qC,EAAAlB,OAAAkB,EAAAnB,KAIAjxC,EAAA,EACUA,EAAAuS,EAAAvM,SACVwtC,EAAAjhC,EAAAvS,GACAu2C,GAAA/C,EAAAvY,QAAAuY,EAAAtF,OAAA9oC,EAAA41B,KAAAwY,EAAAvY,QAF6Bj7B,KAK7B,GAAAA,GAAAuS,EAAAvM,OAAA,CAGA,IAFAosC,EAAAZ,WAAAY,EAAAX,cAAA,OAEW,CAEX,KADA+B,EAAAjhC,EAAAy/B,OACA/W,OAOO,IAAAub,EAEP,YADAjkC,EAAApS,KAAAqzC,GAEc,MARd,GADAhB,GAAAgB,EAAAZ,GACA2D,IAAA/C,EAAAtF,OAAA9oC,EAAA41B,KAEA,YADA6Y,GAAAzuC,EAAAouC,GAAoCb,WAAA,IAGpCT,EAAAsB,EASA,IAAAiD,KACAjE,GAAAN,EAAAU,GACAA,EAAAzyC,MAAeytB,QAAA6oB,EAAA/E,WAAAU,EAAAV,aACfU,EAAAV,WAAA8B,EAAA9B,cAAAU,EAAAT,cA6BA,IA3BA,IAAA+E,EAAAx3B,GAAA9Z,EAAA,iBAAAA,EAAA2V,IAAAmE,GAAA9Z,EAAA2V,GAAA,gBAEAgL,EAAA,SAAA/lB,GACA,IAAA4W,EAAA48B,EAAA5lB,QAAA5tB,GAEA,GADA4W,EAAAhG,OAAAnJ,EACAivC,IAAArB,GAAAjwC,EAAAwR,GAAA,GAEA,OADArE,EAAAvM,OAAA,KAIAywC,EAAAt2C,KAAAyxC,GAAAxsC,EAAAwR,IAEA,IAAA7K,EAAA/L,EAAAivC,GAAA7pC,EAAAwR,GAAArF,EAAAgB,GACA4jC,GAAA/wC,EAAAwR,EAAA7K,EAAAinC,GAAA5tC,EAAAwR,KACA5W,GAAAoF,EAAA2V,IAAyB3V,EAAA2V,GAAA2sB,gBAAwBx0B,KAAA0D,EAAA1D,KAAAC,GAAA47B,GAAAn4B,KACjD,IAAAw/B,KAGA/F,GAAAjrC,EAAA,SAAAA,EAAAqrC,GACAA,IAAA,GAAA1gC,EAAAqmC,EAAAhxC,EAAAitC,WACAgE,GAAAjxC,EAAAitC,QAAAz7B,GACAw/B,EAAAj2C,KAAAiF,EAAAitC,UAEA8D,GAAA/wC,EAAAwR,EAAA,KAAAo8B,GAAA5tC,EAAAwR,OAIAhC,EAAA4+B,EAAA5lB,QAAA5nB,OAAA,EAA4C4O,GAAA,IAAUA,EAAA,CACtD,IAAA+hC,EAAA5wB,EAAAnR,GAEA,GAAA+hC,EAAA,OAAAA,EAAAC,KAMA,SAAAC,GAAAzxC,EAAA0xC,GACA,MAAAA,IACA1xC,EAAAqO,OAAAqjC,EACA1xC,EAAA41B,IAAA,IAAAiT,GAAAx8B,EAAArM,EAAA41B,IAAAC,OAAA,SAAAtvB,GAAkE,WAAA2iC,GAClEl5B,GAAAzJ,EAAA4tB,OAAAtlB,KAAA6iC,EAAAnrC,EAAA4tB,OAAArnB,IACAkD,GAAAzJ,EAAA2vB,KAAArnB,KAAA6iC,EAAAnrC,EAAA2vB,KAAAppB,OACQ9M,EAAA41B,IAAAE,WACR91B,EAAA2V,IAAA,CACA2tB,GAAAtjC,EAAA2V,GAAA3V,EAAAqO,MAAArO,EAAAqO,MAAAqjC,KACA,QAAAv3C,EAAA6F,EAAA2V,GAAAhW,QAAAgQ,EAAAxV,EAAAqoB,SAAkD7S,EAAAxV,EAAAsoB,OAAc9S,IACvDo0B,GAAA/jC,EAAA2V,GAAAhG,EAAA,WAMT,SAAAohC,GAAA/wC,EAAAwR,EAAAs7B,EAAA17B,GACA,GAAApR,EAAA2V,KAAA3V,EAAA2V,GAAAiE,MACO,OAAAupB,GAAAnjC,EAAA2V,GAAAo7B,GAAA5N,CAAAnjC,EAAAwR,EAAAs7B,EAAA17B,GAEP,GAAAI,EAAAzD,GAAAc,KAAA7O,EAAAqO,MACAojC,GAAAzxC,EAAAwR,EAAAzC,KAAAnO,OAAA,GAAA4Q,EAAAzD,GAAAc,KAAA2C,EAAA1D,KAAAe,YAGA,KAAA2C,EAAA1D,KAAAe,KAAA7O,EAAAiV,YAAA,CAGA,GAAAzD,EAAA1D,KAAAe,KAAA7O,EAAAqO,MAAA,CACA,IAAAorB,EAAAjoB,EAAAzC,KAAAnO,OAAA,GAAAZ,EAAAqO,MAAAmD,EAAA1D,KAAAe,MACA4iC,GAAAzxC,EAAAy5B,GACAjoB,GAAgB1D,KAAAkC,GAAAhQ,EAAAqO,MAAA,GAAAN,GAAAiC,GAAAwB,EAAAzD,GAAAc,KAAA4qB,EAAAjoB,EAAAzD,GAAAjB,IAChBiC,MAAA5C,EAAAqF,EAAAzC,OAAAvD,OAAAgG,EAAAhG,QAEA,IAAAmF,EAAA3Q,EAAAiV,WACAzD,EAAAzD,GAAAc,KAAA8B,IACAa,GAAgB1D,KAAA0D,EAAA1D,KAAAC,GAAAiC,GAAAW,EAAAvC,GAAApO,EAAA2Q,GAAA5B,KAAAnO,QAChBmO,MAAAyC,EAAAzC,KAAA,IAAAvD,OAAAgG,EAAAhG,SAGAgG,EAAAmgC,QAAA/iC,GAAA5O,EAAAwR,EAAA1D,KAAA0D,EAAAzD,IAEA++B,IAAoBA,EAAAjD,GAAA7pC,EAAAwR,IACpBxR,EAAA2V,GAOA,SAAAA,EAAAnE,EAAAJ,GACA,IAAApR,EAAA2V,EAAA3V,IAAAL,EAAAgW,EAAAhW,QAAAmO,EAAA0D,EAAA1D,KAAAC,EAAAyD,EAAAzD,GAEA6jC,GAAA,EAAAC,EAAA/jC,EAAAe,KACA8G,EAAA9F,QAAAse,eACA0jB,EAAA1iC,GAAAwF,GAAAvG,GAAApO,EAAA8N,EAAAe,QACA7O,EAAA8O,KAAA+iC,EAAA9jC,EAAAc,KAAA,WAAAA,GACA,GAAAA,GAAAlP,EAAAiW,QAEA,OADAg8B,GAAA,GACA,KAKA5xC,EAAA41B,IAAAhuB,SAAA4J,EAAA1D,KAAA0D,EAAAzD,KAAA,GACO2L,GAAA/D,GAEPy0B,GAAApqC,EAAAwR,EAAAJ,EAAA2S,GAAApO,IAEAA,EAAA9F,QAAAse,eACAnuB,EAAA8O,KAAA+iC,EAAA/jC,EAAAe,KAAA2C,EAAAzC,KAAAnO,OAAA,SAAAiO,GACA,IAAA2G,EAAAD,GAAA1G,GACA2G,EAAA7V,EAAAkW,gBACAlW,EAAAiW,QAAA/G,EACAlP,EAAAkW,cAAAL,EACA7V,EAAAmW,gBAAA,EACA87B,GAAA,KAGAA,IAA+Bj8B,EAAAiE,MAAAwmB,eAAA,KAplH/B,SAAApgC,EAAAhG,GAEA,GADAgG,EAAA8hB,aAAA/V,KAAAC,IAAAhM,EAAA8hB,aAAA9nB,KACAgG,EAAA6hB,kBAAA7nB,EAAA,KAEA,IADA,IAAAyO,EAAAzI,EAAAqO,MACAQ,EAAA7U,EAAA,EAA0B6U,EAAApG,EAAcoG,IAAA,CACxC,IAAAwT,EAAAjU,GAAApO,EAAA6O,GAAA6S,WAIA,GAAAW,mBAAAtC,KAAAlR,EAAAwT,EAAAzC,UAAA5lB,GAAA,CACAyO,EAAAoG,EAAA,EACA,OAGA7O,EAAA6hB,kBAAA9V,KAAAC,IAAAhM,EAAA6hB,kBAAApZ,KAykHAqpC,CAAA9xC,EAAA8N,EAAAe,MACAytB,GAAA3mB,EAAA,KAEA,IAAA4tB,EAAA/xB,EAAAzC,KAAAnO,QAAAmN,EAAAc,KAAAf,EAAAe,MAAA,EAEA2C,EAAAC,KACO6xB,GAAA3tB,GACP7H,EAAAe,MAAAd,EAAAc,MAAA,GAAA2C,EAAAzC,KAAAnO,QAAAspC,GAAAv0B,EAAA3V,IAAAwR,GAGO8xB,GAAA3tB,EAAA7H,EAAAe,KAAAd,EAAAc,KAAA,EAAA00B,GAFAQ,GAAApuB,EAAA7H,EAAAe,KAAA,QAIP,IAAAkjC,EAAAj4B,GAAAnE,EAAA,WAAAq8B,EAAAl4B,GAAAnE,EAAA,UACA,GAAAq8B,GAAAD,EAAA,CACA,IAAAhoC,GACA+D,OAAAC,KACAgB,KAAAyC,EAAAzC,KACA4iC,QAAAngC,EAAAmgC,QACAnmC,OAAAgG,EAAAhG,QAEAwmC,GAA0B/pB,GAAAtS,EAAA,SAAAA,EAAA5L,GAC1BgoC,IAA2Bp8B,EAAAiE,MAAAqmB,aAAAtqB,EAAAiE,MAAAqmB,gBAAAllC,KAAAgP,GAE3B4L,EAAAhW,QAAA25B,kBAAA,KA9DiB2Y,CAAAjyC,EAAA2V,GAAAnE,EAAAJ,GACPg5B,GAAApqC,EAAAwR,EAAAJ,GACV29B,GAAA/uC,EAAA8sC,EAAAxhC,IA+DA,SAAA4mC,GAAAlyC,EAAA8W,EAAAhJ,EAAAC,EAAAvC,GACA,IAAAtO,EAEA6Q,IAAcA,EAAAD,GACdoC,GAAAnC,EAAAD,GAAA,IAA4BA,GAAA5Q,GAAA6Q,EAAAD,IAAA,GAAAC,EAAA7Q,EAAA,IAC5B,iBAAA4Z,IAAkCA,EAAA9W,EAAAmyC,WAAAr7B,IAClCs5B,GAAApwC,GAAqB8N,OAAAC,KAAAgB,KAAA+H,EAAAtL,WAKrB,SAAA4mC,GAAAxmC,EAAAkC,EAAAC,EAAAmB,GACAnB,EAAAnC,EAAAiD,KACAjD,EAAAiD,MAAAK,EACKpB,EAAAlC,EAAAiD,OACLjD,EAAAiD,KAAAf,EACAlC,EAAAkB,GAAA,GAWA,SAAAulC,GAAAtnC,EAAA+C,EAAAC,EAAAmB,GACA,QAAAtU,EAAA,EAAmBA,EAAAmQ,EAAAnK,SAAkBhG,EAAA,CACrC,IAAA03C,EAAAvnC,EAAAnQ,GAAA23C,GAAA,EACA,GAAAD,EAAAzc,OAAA,CACAyc,EAAAE,UAA0BF,EAAAvnC,EAAAnQ,GAAA03C,EAAArJ,YAAiCuJ,QAAA,GAC3D,QAAAj7B,EAAA,EAAuBA,EAAA+6B,EAAAzc,OAAAj1B,OAAuB2W,IAC9C66B,GAAAE,EAAAzc,OAAAte,GAAA4c,OAAArmB,EAAAC,EAAAmB,GACAkjC,GAAAE,EAAAzc,OAAAte,GAAA2e,KAAApoB,EAAAC,EAAAmB,OAJA,CAQA,QAAA6I,EAAA,EAAuBA,EAAAu6B,EAAA9pB,QAAA5nB,SAA0BmX,EAAA,CACjD,IAAA3I,EAAAkjC,EAAA9pB,QAAAzQ,GACA,GAAAhK,EAAAqB,EAAAtB,KAAAe,KACAO,EAAAtB,KAAAkC,GAAAZ,EAAAtB,KAAAe,KAAAK,EAAAE,EAAAtB,KAAAhB,IACAsC,EAAArB,GAAAiC,GAAAZ,EAAArB,GAAAc,KAAAK,EAAAE,EAAArB,GAAAjB,SACS,GAAAgB,GAAAsB,EAAArB,GAAAc,KAAA,CACT0jC,GAAA,EACA,OAGAA,IACAxnC,EAAAqI,OAAA,EAAAxY,EAAA,GACAA,EAAA,KAKA,SAAAq2C,GAAAjE,EAAAx7B,GACA,IAAA1D,EAAA0D,EAAA1D,KAAAe,KAAAd,EAAAyD,EAAAzD,GAAAc,KAAAK,EAAAsC,EAAAzC,KAAAnO,QAAAmN,EAAAD,GAAA,EACAukC,GAAArF,EAAAnB,KAAA/9B,EAAAC,EAAAmB,GACAmjC,GAAArF,EAAAlB,OAAAh+B,EAAAC,EAAAmB,GAMA,SAAAujC,GAAAzyC,EAAA0yC,EAAAC,EAAA9S,GACA,IAAAxwB,EAAAqjC,EAAA7jC,EAAA6jC,EAGA,MAFA,iBAAAA,EAAoC7jC,EAAAT,GAAApO,EAAAwQ,GAAAxQ,EAAA0yC,IAC1BrjC,EAAAF,GAAAujC,GACV,MAAArjC,EAAqB,MACrBwwB,EAAAhxB,EAAAQ,IAAArP,EAAA2V,IAAiCouB,GAAA/jC,EAAA2V,GAAAtG,EAAAsjC,GACjC9jC,GAgBA,SAAA+jC,GAAApkC,GAGArT,KAAAqT,QACArT,KAAAgM,OAAA,KAEA,IADA,IAAA1H,EAAA,EACA7E,EAAA,EAAmBA,EAAA4T,EAAA5N,SAAkBhG,EACrC4T,EAAA5T,GAAAuM,OANAhM,KAOAsE,GAAA+O,EAAA5T,GAAA6E,OAEAtE,KAAAsE,SA2CA,SAAAozC,GAAApkC,GAGAtT,KAAAsT,WAEA,IADA,IAAA3R,EAAA,EAAA2C,EAAA,EACA7E,EAAA,EAAmBA,EAAA6T,EAAA7N,SAAqBhG,EAAA,CACxC,IAAAkS,EAAA2B,EAAA7T,GACAkC,GAAAgQ,EAAA6B,YAA6BlP,GAAAqN,EAAArN,OAC7BqN,EAAA3F,OAPAhM,KASAA,KAAA2B,OACA3B,KAAAsE,SACAtE,KAAAgM,OAAA,KAtgCA+hC,GAAAx/B,UAAAoE,KAAA,WAAsC,OAAAyC,GAAApV,KAAAg5B,OAAAh5B,KAAA+6B,OACtCgT,GAAAx/B,UAAAqE,GAAA,WAAoC,OAAAuC,GAAAnV,KAAAg5B,OAAAh5B,KAAA+6B,OACpCgT,GAAAx/B,UAAAqsB,MAAA,WAAuC,OAAA56B,KAAA+6B,KAAArnB,MAAA1T,KAAAg5B,OAAAtlB,MAAA1T,KAAA+6B,KAAAppB,IAAA3R,KAAAg5B,OAAArnB,IAg9BvC8lC,GAAAlpC,WACAiF,UAAA,WAA2B,OAAAxT,KAAAqT,MAAA5N,QAG3BkyC,YAAA,SAAA56B,EAAAle,GAGA,IAFA,IAEAY,EAAAsd,EAAAvZ,EAAAuZ,EAAAle,EAAkCY,EAAA+D,IAAO/D,EAAA,CACzC,IAAAiU,EAHA1T,KAGAqT,MAAA5T,GAHAO,KAIAsE,QAAAoP,EAAApP,OACAukB,GAAAnV,GACAoZ,GAAApZ,EAAA,UAEA1T,KAAAqT,MAAA4E,OAAA8E,EAAAle,IAIAiP,SAAA,SAAAuF,GACAA,EAAAzT,KAAA8O,MAAA2E,EAAArT,KAAAqT,QAKAukC,YAAA,SAAA76B,EAAA1J,EAAA/O,GAGAtE,KAAAsE,UACAtE,KAAAqT,MAAArT,KAAAqT,MAAA5H,MAAA,EAAAsR,GAAAY,OAAAtK,GAAAsK,OAAA3d,KAAAqT,MAAA5H,MAAAsR,IACA,QAAAtd,EAAA,EAAqBA,EAAA4T,EAAA5N,SAAkBhG,EAAO4T,EAAA5T,GAAAuM,OAJ9ChM,MAQA63C,MAAA,SAAA96B,EAAAle,EAAA6lC,GAGA,IAFA,IAEAlhC,EAAAuZ,EAAAle,EAA0Bke,EAAAvZ,IAAQuZ,EACzB,GAAA2nB,EAHT1kC,KAGSqT,MAAA0J,IAA4B,WAmBrC26B,GAAAnpC,WACAiF,UAAA,WAA2B,OAAAxT,KAAA2B,MAE3Bg2C,YAAA,SAAA56B,EAAAle,GAGAmB,KAAA2B,MAAA9C,EACA,QAAAY,EAAA,EAAqBA,EAAAO,KAAAsT,SAAA7N,SAA0BhG,EAAA,CAC/C,IAAAiN,EAJA1M,KAIAsT,SAAA7T,GAAA8T,EAAA7G,EAAA8G,YACA,GAAAuJ,EAAAxJ,EAAA,CACA,IAAA83B,EAAAz6B,KAAAC,IAAAhS,EAAA0U,EAAAwJ,GAAA+6B,EAAAprC,EAAApI,OAIA,GAHAoI,EAAAirC,YAAA56B,EAAAsuB,GAPArrC,KAQAsE,QAAAwzC,EAAAprC,EAAApI,OACAiP,GAAA83B,IATArrC,KASyBsT,SAAA2E,OAAAxY,IAAA,GAAgCiN,EAAAV,OAAA,MACzD,IAAAnN,GAAAwsC,GAA+B,MAC/BtuB,EAAA,OACgBA,GAAAxJ,EAIhB,GAAAvT,KAAA2B,KAAA9C,EAAA,KACAmB,KAAAsT,SAAA7N,OAAA,KAAAzF,KAAAsT,SAAA,aAAAmkC,KAAA,CACA,IAAApkC,KACArT,KAAA8N,SAAAuF,GACArT,KAAAsT,UAAA,IAAAmkC,GAAApkC,IACArT,KAAAsT,SAAA,GAAAtH,OAAAhM,OAIA8N,SAAA,SAAAuF,GAGA,IAFA,IAEA5T,EAAA,EAAqBA,EAAAO,KAAAsT,SAAA7N,SAA0BhG,EAF/CO,KAEsDsT,SAAA7T,GAAAqO,SAAAuF,IAGtDukC,YAAA,SAAA76B,EAAA1J,EAAA/O,GAGAtE,KAAA2B,MAAA0R,EAAA5N,OACAzF,KAAAsE,UACA,QAAA7E,EAAA,EAAqBA,EAAAO,KAAAsT,SAAA7N,SAA0BhG,EAAA,CAC/C,IAAAiN,EALA1M,KAKAsT,SAAA7T,GAAA8T,EAAA7G,EAAA8G,YACA,GAAAuJ,GAAAxJ,EAAA,CAEA,GADA7G,EAAAkrC,YAAA76B,EAAA1J,EAAA/O,GACAoI,EAAA2G,OAAA3G,EAAA2G,MAAA5N,OAAA,IAIA,IADA,IAAAsyC,EAAArrC,EAAA2G,MAAA5N,OAAA,MACAgL,EAAAsnC,EAAqCtnC,EAAA/D,EAAA2G,MAAA5N,QAA0B,CAC/D,IAAAuyC,EAAA,IAAAP,GAAA/qC,EAAA2G,MAAA5H,MAAAgF,KAAA,KACA/D,EAAApI,QAAA0zC,EAAA1zC,OAdAtE,KAeAsT,SAAA2E,SAAAxY,EAAA,EAAAu4C,GACAA,EAAAhsC,OAhBAhM,KAkBA0M,EAAA2G,MAAA3G,EAAA2G,MAAA5H,MAAA,EAAAssC,GAlBA/3C,KAmBAi4C,aAEA,MAEAl7B,GAAAxJ,IAKA0kC,WAAA,WACA,KAAAj4C,KAAAsT,SAAA7N,QAAA,KACA,IAAAyyC,EAAAl4C,KACA,GACA,IACAm4C,EAAA,IAAAT,GADAQ,EAAA5kC,SAAA2E,OAAAigC,EAAA5kC,SAAA7N,OAAA,MAEA,GAAAyyC,EAAAlsC,OAKQ,CACRksC,EAAAv2C,MAAAw2C,EAAAx2C,KACAu2C,EAAA5zC,QAAA6zC,EAAA7zC,OACA,IAAA8zC,EAAA5oC,EAAA0oC,EAAAlsC,OAAAsH,SAAA4kC,GACAA,EAAAlsC,OAAAsH,SAAA2E,OAAAmgC,EAAA,IAAAD,OATA,CACA,IAAArwB,EAAA,IAAA4vB,GAAAQ,EAAA5kC,UACAwU,EAAA9b,OAAAksC,EACAA,EAAA5kC,UAAAwU,EAAAqwB,GACAD,EAAApwB,EAOAqwB,EAAAnsC,OAAAksC,EAAAlsC,aACOksC,EAAA5kC,SAAA7N,OAAA,IACPyyC,EAAAlsC,OAAAisC,eAGAJ,MAAA,SAAA96B,EAAAle,EAAA6lC,GAGA,IAFA,IAEAjlC,EAAA,EAAqBA,EAAAO,KAAAsT,SAAA7N,SAA0BhG,EAAA,CAC/C,IAAAiN,EAHA1M,KAGAsT,SAAA7T,GAAA8T,EAAA7G,EAAA8G,YACA,GAAAuJ,EAAAxJ,EAAA,CACA,IAAA8kC,EAAAznC,KAAAC,IAAAhS,EAAA0U,EAAAwJ,GACA,GAAArQ,EAAAmrC,MAAA96B,EAAAs7B,EAAA3T,GAA0C,SAC1C,OAAA7lC,GAAAw5C,GAAiC,MACjCt7B,EAAA,OACgBA,GAAAxJ,KAOhB,IAAA+kC,GAAA,SAAAzzC,EAAAyG,EAAAoJ,GAGA,GAAAA,EAAkB,QAAA6jC,KAAA7jC,EAA2BA,EAAA1F,eAAAupC,KAF7Cv4C,KAGOu4C,GAAA7jC,EAAA6jC,IACPv4C,KAAA6E,MACA7E,KAAAsL,QAuCA,SAAAktC,GAAAh+B,EAAA9G,EAAAK,GACAmG,GAAAxG,IAAA8G,EAAAiE,OAAAjE,EAAAiE,MAAApb,WAAAmX,EAAA3V,IAAAxB,YACOk9B,GAAA/lB,EAAAzG,GAtCPukC,GAAA/pC,UAAA80B,MAAA,WACA,IAEA7oB,EAAAxa,KAAA6E,IAAA2V,GAAAoV,EAAA5vB,KAAA0T,KAAAic,QAAAjc,EAAA1T,KAAA0T,KAAAQ,EAAAF,GAAAN,GACA,SAAAQ,GAAA0b,EAAA,CACA,QAAAnwB,EAAA,EAAmBA,EAAAmwB,EAAAnqB,SAAehG,EAAOmwB,EAAAnwB,IAJzCO,MAIgE4vB,EAAA3X,OAAAxY,IAAA,GAChEmwB,EAAAnqB,SAAqBiO,EAAAic,QAAA,MACrB,IAAArrB,EAAAisB,GAAAvwB,MACA8T,GAAAJ,EAAA9C,KAAA0E,IAAA,EAAA5B,EAAApP,WACAkW,IACAutB,GAAAvtB,EAAA,WACAg+B,GAAAh+B,EAAA9G,GAAApP,GACAskC,GAAApuB,EAAAtG,EAAA,YAEA4Y,GAAAtS,EAAA,oBAAAA,EAAAxa,KAAAkU,MAIAokC,GAAA/pC,UAAA84B,QAAA,WACA,IAAAoR,EAAAz4C,KAEA04C,EAAA14C,KAAAsE,OAAAkW,EAAAxa,KAAA6E,IAAA2V,GAAA9G,EAAA1T,KAAA0T,KACA1T,KAAAsE,OAAA,KACA,IAAAyP,EAAAwc,GAAAvwB,MAAA04C,EACA3kC,IACAgG,GAAA/Z,KAAA6E,IAAA6O,IAAwCI,GAAAJ,IAAApP,OAAAyP,GACxCyG,GACAutB,GAAAvtB,EAAA,WACAA,EAAAiE,MAAA+T,aAAA,EACAgmB,GAAAh+B,EAAA9G,EAAAK,GACA+Y,GAAAtS,EAAA,oBAAAA,EAAAi+B,EAAAzkC,GAAAN,QAIAkL,GAAA05B,IA2CA,IAAAK,GAAA,EAEAC,GAAA,SAAA/zC,EAAAqC,GACAlH,KAAAqT,SACArT,KAAAkH,OACAlH,KAAA6E,MACA7E,KAAAqC,KAAAs2C,IAsHA,SAAAE,GAAAh0C,EAAA8N,EAAAC,EAAA8B,EAAAxN,GAIA,GAAAwN,KAAA27B,OAAoC,OA+FpC,SAAAxrC,EAAA8N,EAAAC,EAAA8B,EAAAxN,IACAwN,EAAA/F,EAAA+F,IACA27B,QAAA,EACA,IAAA1hB,GAAAkqB,GAAAh0C,EAAA8N,EAAAC,EAAA8B,EAAAxN,IAAAmzB,EAAA1L,EAAA,GACAnD,EAAA9W,EAAAsF,WAQA,OAPA81B,GAAAjrC,EAAA,SAAAA,GACA2mB,IAAmB9W,EAAAsF,WAAAwR,EAAAstB,WAAA,IACnBnqB,EAAA/uB,KAAAi5C,GAAAh0C,EAAA0Q,GAAA1Q,EAAA8N,GAAA4C,GAAA1Q,EAAA+N,GAAA8B,EAAAxN,IACA,QAAAzH,EAAA,EAAqBA,EAAAoF,EAAAsrC,OAAA1qC,SAAuBhG,EACnC,GAAAoF,EAAAsrC,OAAA1wC,GAAAs5C,SAA8B,OACvC1e,EAAArpB,EAAA2d,KAEA,IAAAqqB,GAAArqB,EAAA0L,GA3GoC4e,CAAAp0C,EAAA8N,EAAAC,EAAA8B,EAAAxN,GAEpC,GAAArC,EAAA2V,KAAA3V,EAAA2V,GAAAiE,MAAkC,OAAAupB,GAAAnjC,EAAA2V,GAAAq+B,GAAA7Q,CAAAnjC,EAAA8N,EAAAC,EAAA8B,EAAAxN,GAElC,IAAA6O,EAAA,IAAA6iC,GAAA/zC,EAAAqC,GAAA6M,EAAAgB,GAAApC,EAAAC,GAGA,GAFA8B,GAAkB/F,EAAA+F,EAAAqB,GAAA,GAElBhC,EAAA,MAAAA,IAAA,IAAAgC,EAAAiC,eACO,OAAAjC,EAQP,GAPAA,EAAAmjC,eAEAnjC,EAAAmD,WAAA,EACAnD,EAAAiE,WAAAzN,EAAA,QAAAwJ,EAAAmjC,cAAA,qBACAxkC,EAAAmb,mBAAuC9Z,EAAAiE,WAAAxN,aAAA,2BACvCkI,EAAAsC,aAA+BjB,EAAAiE,WAAAhD,YAAA,IAE/BjB,EAAAmD,UAAA,CACA,GAAAI,GAAAzU,EAAA8N,EAAAe,KAAAf,EAAAC,EAAAmD,IACApD,EAAAe,MAAAd,EAAAc,MAAA4F,GAAAzU,EAAA+N,EAAAc,KAAAf,EAAAC,EAAAmD,GACS,UAAA5C,MAAA,oEA5xKT0C,IAAA,EAgyKAE,EAAAojC,cACOzH,GAAA7sC,GAA0B8N,OAAAC,KAAAvC,OAAA,YAAuCxL,EAAA41B,IAAAoZ,KAExE,IAAA5O,EAAAmU,EAAAzmC,EAAAe,KAAA8G,EAAA3V,EAAA2V,GA0BA,GAzBA3V,EAAA8O,KAAAylC,EAAAxmC,EAAAc,KAAA,WAAAA,GACA8G,GAAAzE,EAAAmD,YAAAsB,EAAA9F,QAAAse,cAAAxZ,GAAA9F,IAAA8G,EAAAhW,QAAAiW,UACSwqB,GAAA,GACTlvB,EAAAmD,WAAAkgC,GAAAzmC,EAAAe,MAAqDI,GAAAJ,EAAA,GA7wKrD,SAAAA,EAAAwC,GACAxC,EAAA8C,YAAA9C,EAAA8C,YAAA9C,EAAA8C,YAAAmH,QAAAzH,QACAA,EAAAH,OAAAsC,WAAA3E,GA4wKA2lC,CAAA3lC,EAAA,IAAAoC,GAAAC,EACAqjC,GAAAzmC,EAAAe,KAAAf,EAAAhB,GAAA,KACAynC,GAAAxmC,EAAAc,KAAAd,EAAAjB,GAAA,SACAynC,IAGArjC,EAAAmD,WAA2BrU,EAAA8O,KAAAhB,EAAAe,KAAAd,EAAAc,KAAA,WAAAA,GAC3BqG,GAAAlV,EAAA6O,IAAoCI,GAAAJ,EAAA,KAGpCqC,EAAAujC,cAA8Bv0C,GAAAgR,EAAA,+BAA8C,OAAAA,EAAAstB,UAE5EttB,EAAAmoB,WAxzKAtoB,IAAA,GA0zKA/Q,EAAAitC,QAAApB,KAAAjrC,QAAAZ,EAAAitC,QAAAnB,OAAAlrC,SACSZ,EAAA00C,gBAETxjC,EAAAmD,YACAnD,EAAA1T,KAAAs2C,GACA5iC,EAAAy+B,QAAA,GAEAh6B,EAAA,CAGA,GADAyqB,IAA0BzqB,EAAAiE,MAAAwmB,eAAA,GAC1BlvB,EAAAmD,UACSivB,GAAA3tB,EAAA7H,EAAAe,KAAAd,EAAAc,KAAA,QACT,GAAAqC,EAAAxN,WAAAwN,EAAAqU,YAAArU,EAAAsU,UAAAtU,EAAAuU,KACAvU,EAAAwU,YAAAxU,EAAA5O,MACS,QAAA1H,EAAAkT,EAAAe,KAAwBjU,GAAAmT,EAAAc,KAAcjU,IAAOmpC,GAAApuB,EAAA/a,EAAA,QACtDsW,EAAAy+B,QAA0BP,GAAAz5B,EAAA3V,KAC1BioB,GAAAtS,EAAA,cAAAA,EAAAzE,GAEA,OAAAA,EArLA6iC,GAAArqC,UAAA80B,MAAA,WAGA,IAAArjC,KAAAwyC,kBAAA,CACA,IAAAh4B,EAAAxa,KAAA6E,IAAA2V,GAAAg/B,EAAAh/B,MAAAiE,MAEA,GADA+6B,GAAiB/U,GAAAjqB,GACjBmE,GAAA3e,KAAA,UACA,IAAAwX,EAAAxX,KAAA2Y,OACAnB,GAAkBsV,GAAA9sB,KAAA,QAAAwX,EAAA7E,KAAA6E,EAAA5E,IAGlB,IADA,IAAA/B,EAAA,KAAAyE,EAAA,KACA7V,EAAA,EAAmBA,EAAAO,KAAAqT,MAAA5N,SAAuBhG,EAAA,CAC1C,IAAAiU,EAXA1T,KAWAqT,MAAA5T,GACAyW,EAAAF,GAAAtC,EAAA8C,YAZAxW,MAaAwa,IAbAxa,KAaAkZ,UAAoC0vB,GAAApuB,EAAAxG,GAAAN,GAAA,QACpC8G,IACA,MAAAtE,EAAAtD,KAA8B0C,EAAAtB,GAAAN,IAC9B,MAAAwC,EAAAvD,OAAgC9B,EAAAmD,GAAAN,KAEhCA,EAAA8C,YAAAL,GAAAzC,EAAA8C,YAAAN,GACA,MAAAA,EAAAvD,MAnBA3S,KAmBAkZ,YAAAa,GAnBA/Z,KAmBA6E,IAAA6O,IAAA8G,GACS1G,GAAAJ,EAAAqlB,GAAAve,EAAAhW,UAET,GAAAgW,GAAAxa,KAAAkZ,YAAAsB,EAAA9F,QAAAse,aAA2D,QAAA3e,EAAA,EAAkBA,EAAArU,KAAAqT,MAAA5N,SAAyB4O,EAAA,CACtG,IAAAolC,EAAAjgC,GAvBAxZ,KAuBAqT,MAAAgB,IAAAgG,EAAAD,GAAAq/B,GACAp/B,EAAAG,EAAAhW,QAAAkW,gBACAF,EAAAhW,QAAAiW,QAAAg/B,EACAj/B,EAAAhW,QAAAkW,cAAAL,EACAG,EAAAhW,QAAAmW,gBAAA,GAIA,MAAA9J,GAAA2J,GAAAxa,KAAAkZ,WAA8CivB,GAAA3tB,EAAA3J,EAAAyE,EAAA,GAC9CtV,KAAAqT,MAAA5N,OAAA,EACAzF,KAAAwyC,mBAAA,EACAxyC,KAAAw0C,QAAAx0C,KAAA6E,IAAA+vC,WACA50C,KAAA6E,IAAA+vC,UAAA,EACAp6B,GAAey5B,GAAAz5B,EAAA3V,MAEf2V,GAAasS,GAAAtS,EAAA,gBAAAA,EAAAxa,KAAA6Q,EAAAyE,GACbkkC,GAAiBpU,GAAA5qB,GACjBxa,KAAAgM,QAAsBhM,KAAAgM,OAAAq3B,UAQtBuV,GAAArqC,UAAAoK,KAAA,SAAAsjB,EAAA9hB,GACA,IAGAxH,EAAAC,EADA,MAAAqpB,GAAA,YAAAj8B,KAAAkH,OAAkD+0B,EAAA,GAElD,QAAAx8B,EAAA,EAAmBA,EAAAO,KAAAqT,MAAA5N,SAAuBhG,EAAA,CAC1C,IAAAiU,EALA1T,KAKAqT,MAAA5T,GACAyW,EAAAF,GAAAtC,EAAA8C,YANAxW,MAOA,SAAAkW,EAAAvD,OACAA,EAAAkC,GAAAsF,EAAAzG,EAAAM,GAAAN,GAAAwC,EAAAvD,OACA,GAAAspB,GAAyB,OAAAtpB,EAEzB,SAAAuD,EAAAtD,KACAA,EAAAiC,GAAAsF,EAAAzG,EAAAM,GAAAN,GAAAwC,EAAAtD,IACA,GAAAqpB,GAAwB,OAAArpB,EAGxB,OAAAD,IAAoBA,OAAAC,OAKpBgmC,GAAArqC,UAAA84B,QAAA,WACA,IAAAoR,EAAAz4C,KAEAyQ,EAAAzQ,KAAA2Y,MAAA,MAAA6S,EAAAxrB,KAAAwa,EAAAxa,KAAA6E,IAAA2V,GACA/J,GAAA+J,GACAutB,GAAAvtB,EAAA,WACA,IAAA9G,EAAAjD,EAAAiD,KAAAiG,EAAA3F,GAAAvD,EAAAiD,MACAiZ,EAAA0F,GAAA7X,EAAAb,GAMA,GALAgT,IACA2I,GAAA3I,GACAnS,EAAAiE,MAAAumB,iBAAAxqB,EAAAiE,MAAA+T,aAAA,GAEAhY,EAAAiE,MAAAwmB,eAAA,GACAlrB,GAAAyR,EAAA3mB,IAAA6O,IAAA,MAAA8X,EAAAlnB,OAAA,CACA,IAAAwzC,EAAAtsB,EAAAlnB,OACAknB,EAAAlnB,OAAA,KACA,IAAAo1C,EAAAnpB,GAAA/E,GAAAssB,EACA4B,GACW5lC,GAAAJ,IAAApP,OAAAo1C,GAEX5sB,GAAAtS,EAAA,gBAAAA,EAAAi+B,MAIAG,GAAArqC,UAAA8J,WAAA,SAAA3E,GACA,IAAA1T,KAAAqT,MAAA5N,QAAAzF,KAAA6E,IAAA2V,GAAA,CACA,IAAAkqB,EAAA1kC,KAAA6E,IAAA2V,GAAAiE,MACAimB,EAAAiD,qBAAA,GAAAn4B,EAAAk1B,EAAAiD,mBAAA3nC,QACS0kC,EAAAmD,uBAAAnD,EAAAmD,0BAAAjoC,KAAAI,MAETA,KAAAqT,MAAAzT,KAAA8T,IAGAklC,GAAArqC,UAAA4J,WAAA,SAAAzE,GAEA,GADA1T,KAAAqT,MAAA4E,OAAAzI,EAAAxP,KAAAqT,MAAAK,GAAA,IACA1T,KAAAqT,MAAA5N,QAAAzF,KAAA6E,IAAA2V,GAAA,CACA,IAAAkqB,EAAA1kC,KAAA6E,IAAA2V,GAAAiE,OACOimB,EAAAiD,qBAAAjD,EAAAiD,wBAAA/nC,KAAAI,QAGP4e,GAAAg6B,IA8EA,IAAAI,GAAA,SAAArqB,EAAA0L,GAGAr6B,KAAA2uB,UACA3uB,KAAAq6B,UACA,QAAA56B,EAAA,EAAmBA,EAAAkvB,EAAAlpB,SAAoBhG,EAChCkvB,EAAAlvB,GAAAuM,OALPhM,MAsCA,SAAA25C,GAAA90C,GACA,OAAAA,EAAA+0C,UAAA/kC,GAAAhQ,EAAAqO,MAAA,GAAArO,EAAA0Q,QAAAV,GAAAhQ,EAAAiV,aAAA,SAAA+C,GAA4F,OAAAA,EAAA7Q,SAe5F,SAAA6tC,GAAAlrB,GAaA,IAZA,IAAAnJ,EAAA,SAAA/lB,GACA,IAAAsW,EAAA4Y,EAAAlvB,GAAA0wC,GAAAp6B,EAAAskB,QAAAx1B,KACAirC,GAAA/5B,EAAAskB,QAAAx1B,IAAA,SAAA7F,GAAmD,OAAAmxC,EAAAvwC,KAAAZ,KACnD,QAAAod,EAAA,EAAqBA,EAAArG,EAAA4Y,QAAAlpB,OAA2B2W,IAAA,CAChD,IAAA09B,EAAA/jC,EAAA4Y,QAAAvS,IACA,GAAA5M,EAAA2gC,EAAA2J,EAAAj1C,OACAi1C,EAAA9tC,OAAA,KACA+J,EAAA4Y,QAAA1W,OAAAmE,IAAA,MAKA3c,EAAA,EAAmBA,EAAAkvB,EAAAlpB,OAAoBhG,IAAA+lB,EAAA/lB,GA3DvCu5C,GAAAzqC,UAAA80B,MAAA,WAGA,IAAArjC,KAAAwyC,kBAAA,CACAxyC,KAAAwyC,mBAAA,EACA,QAAA/yC,EAAA,EAAmBA,EAAAO,KAAA2uB,QAAAlpB,SAAyBhG,EAJ5CO,KAKO2uB,QAAAlvB,GAAA4jC,QACPvW,GAAA9sB,KAAA,WAGAg5C,GAAAzqC,UAAAoK,KAAA,SAAAsjB,EAAA9hB,GACA,OAAAna,KAAAq6B,QAAA1hB,KAAAsjB,EAAA9hB,IAEAyE,GAAAo6B,IAiDA,IAAAe,GAAA,EACAC,GAAA,SAAApmC,EAAAnS,EAAA6tC,EAAA2K,EAAAx+B,GACA,KAAAzb,gBAAAg6C,IAAiC,WAAAA,GAAApmC,EAAAnS,EAAA6tC,EAAA2K,EAAAx+B,GACjC,MAAA6zB,IAA4BA,EAAA,GAE5BoI,GAAAlpC,KAAAxO,MAAA,IAAAy3C,IAAA,IAAA9uB,GAAA,aACA3oB,KAAAkT,MAAAo8B,EACAtvC,KAAAqD,UAAArD,KAAAsD,WAAA,EACAtD,KAAA40C,UAAA,EACA50C,KAAAk6C,gBAAA,EACAl6C,KAAA2mB,aAAA3mB,KAAA0mB,kBAAA4oB,EACA,IAAAhiC,EAAAuH,GAAAy6B,EAAA,GACAtvC,KAAAy6B,IAAA8T,GAAAjhC,GACAtN,KAAA8xC,QAAA,IAAAtB,GAAA,MACAxwC,KAAAqC,KAAA03C,GACA/5C,KAAA6uC,WAAAptC,EACAzB,KAAAi6C,UACAj6C,KAAAyb,UAAA,OAAAA,EAAA,YACAzb,KAAA8qC,QAAA,EAEA,iBAAAl3B,IAAkCA,EAAA5T,KAAAg3C,WAAApjC,IAClCq7B,GAAAjvC,MAAqB2S,KAAArF,EAAAsF,GAAAtF,EAAAsG,SACrB0/B,GAAAtzC,KAAAuuC,GAAAjhC,GAAA6C,IAGA6pC,GAAAzrC,UAAA8C,EAAAqmC,GAAAnpC,WACA4rC,YAAAH,GAKArmC,KAAA,SAAAhB,EAAAC,EAAA8xB,GACAA,EAAe1kC,KAAA63C,MAAAllC,EAAA3S,KAAAkT,MAAAN,EAAAD,EAAA+xB,GACH1kC,KAAA63C,MAAA73C,KAAAkT,MAAAlT,KAAAkT,MAAAlT,KAAA2B,KAAAgR,IAIZ+8B,OAAA,SAAA3yB,EAAA1J,GAEA,IADA,IAAA/O,EAAA,EACA7E,EAAA,EAAqBA,EAAA4T,EAAA5N,SAAkBhG,EAAO6E,GAAA+O,EAAA5T,GAAA6E,OAC9CtE,KAAA43C,YAAA76B,EAAA/c,KAAAkT,MAAAG,EAAA/O,IAEAH,OAAA,SAAA4Y,EAAAle,GAA6BmB,KAAA23C,YAAA56B,EAAA/c,KAAAkT,MAAArU,IAK7Bu7C,SAAA,SAAAH,GACA,IAAA5mC,EAAAQ,GAAA7T,UAAAkT,MAAAlT,KAAAkT,MAAAlT,KAAA2B,MACA,WAAAs4C,EAA8B5mC,EAC9BA,EAAAgnC,KAAAJ,GAAAj6C,KAAAs6C,kBAEAr3C,SAAAilC,GAAA,SAAAvsB,GACA,IAAA4X,EAAA1e,GAAA7U,KAAAkT,MAAA,GAAAsC,EAAAxV,KAAAkT,MAAAlT,KAAA2B,KAAA,EACAszC,GAAAj1C,MAAwB2S,KAAA4gB,EAAA3gB,GAAAiC,GAAAW,EAAAvC,GAAAjT,KAAAwV,GAAA5B,KAAAnO,QACxBmO,KAAA5T,KAAAg3C,WAAAr7B,GAAAtL,OAAA,WAAAiG,MAAA,IAAoF,GACpFtW,KAAAwa,IAAoBqmB,GAAA7gC,KAAAwa,GAAA,KACpB84B,GAAAtzC,KAAAuuC,GAAAhb,GAAApjB,KAEA4mC,aAAA,SAAAp7B,EAAAhJ,EAAAC,EAAAvC,GAGA0mC,GAAA/2C,KAAA2b,EAFAhJ,EAAA4C,GAAAvV,KAAA2S,GACAC,IAAA2C,GAAAvV,KAAA4S,GAAAD,EACAtC,IAEAkqC,SAAA,SAAA5nC,EAAAC,EAAAqnC,GACA,IAAA5mC,EAAAI,GAAAzT,KAAAuV,GAAAvV,KAAA2S,GAAA4C,GAAAvV,KAAA4S,IACA,WAAAqnC,EAA8B5mC,EAC9BA,EAAAgnC,KAAAJ,GAAAj6C,KAAAs6C,kBAGArnC,QAAA,SAAAS,GAA6B,IAAAc,EAAAxU,KAAAw6C,cAAA9mC,GAAiC,OAAAc,KAAAZ,MAE9D4mC,cAAA,SAAA9mC,GAAmC,GAAAa,GAAAvU,KAAA0T,GAAyB,OAAAT,GAAAjT,KAAA0T,IAC5D+mC,cAAA,SAAA/mC,GAAmC,OAAAM,GAAAN,IAEnCgnC,yBAAA,SAAAhnC,GAEA,MADA,iBAAAA,IAAoCA,EAAAT,GAAAjT,KAAA0T,IACpC8F,GAAA9F,IAGAxQ,UAAA,WAA2B,OAAAlD,KAAA2B,MAC3B2tC,UAAA,WAA2B,OAAAtvC,KAAAkT,OAC3B4G,SAAA,WAA0B,OAAA9Z,KAAAkT,MAAAlT,KAAA2B,KAAA,GAE1B4T,QAAA,SAAA9E,GAA4B,OAAA8E,GAAAvV,KAAAyQ,IAE5BiwB,UAAA,SAAApzB,GACA,IAAA2T,EAAAjhB,KAAAy6B,IAAAJ,UAKA,OAJA,MAAA/sB,GAAA,QAAAA,EAA6C2T,EAAA8Z,KAC7C,UAAAztB,EAAmC2T,EAAA+X,OACnC,OAAA1rB,GAAA,MAAAA,IAAA,IAAAA,EAAoE2T,EAAArO,KACxDqO,EAAAtO,QAGZgoC,eAAA,WAAgC,OAAA36C,KAAAy6B,IAAAC,QAChCsT,kBAAA,WAAmC,OAAAhuC,KAAAy6B,IAAAuT,qBAEnC4M,UAAA1S,GAAA,SAAAx0B,EAAA/B,EAAA+C,GACAg/B,GAAA1zC,KAAAuV,GAAAvV,KAAA,iBAAA0T,EAAAmB,GAAAnB,EAAA/B,GAAA,GAAA+B,GAAA,KAAAgB,KAEA4+B,aAAApL,GAAA,SAAAlP,EAAA+B,EAAArmB,GACAg/B,GAAA1zC,KAAAuV,GAAAvV,KAAAg5B,GAAAzjB,GAAAvV,KAAA+6B,GAAA/B,GAAAtkB,KAEA2+B,gBAAAnL,GAAA,SAAAnN,EAAA1D,EAAA3iB,GACA2+B,GAAArzC,KAAAuV,GAAAvV,KAAA+6B,GAAA1D,GAAA9hB,GAAAvV,KAAAq3B,GAAA3iB,KAEA6+B,iBAAArL,GAAA,SAAAsL,EAAA9+B,GACA6+B,GAAAvzC,KAAA2V,GAAA3V,KAAAwzC,GAAA9+B,KAEAmmC,mBAAA3S,GAAA,SAAA95B,EAAAsG,GAEA6+B,GAAAvzC,KAAA2V,GAAA3V,KADAkR,EAAAlR,KAAAy6B,IAAAC,OAAAtsB,IACAsG,KAEAomC,cAAA5S,GAAA,SAAAxN,EAAAL,EAAA3lB,GAGA,GAAAgmB,EAAAj1B,OAAA,CAEA,IADA,IAAA0L,KACA1R,EAAA,EAAqBA,EAAAi7B,EAAAj1B,OAAmBhG,IAC/B0R,EAAA1R,GAAA,IAAAsuC,GAAAx4B,GALTvV,KAKS06B,EAAAj7B,GAAAu5B,QACTzjB,GANAvV,KAMA06B,EAAAj7B,GAAAs7B,OACA,MAAAV,IAA4BA,EAAAzpB,KAAAC,IAAA6pB,EAAAj1B,OAAA,EAAAzF,KAAAy6B,IAAAE,YAC5B2Y,GAAAtzC,KAAAiuC,GAAAjuC,KAAAwa,GAAArJ,EAAAkpB,GAAA3lB,MAEAqmC,aAAA7S,GAAA,SAAAlP,EAAA+B,EAAArmB,GACA,IAAAgmB,EAAA16B,KAAAy6B,IAAAC,OAAAjvB,MAAA,GACAivB,EAAA96B,KAAA,IAAAmuC,GAAAx4B,GAAAvV,KAAAg5B,GAAAzjB,GAAAvV,KAAA+6B,GAAA/B,KACAsa,GAAAtzC,KAAAiuC,GAAAjuC,KAAAwa,GAAAkgB,IAAAj1B,OAAA,GAAAiP,KAGAqM,aAAA,SAAAk5B,GAIA,IAHA,IAEA5mC,EAAAqnB,EAAA16B,KAAAy6B,IAAAC,OACAj7B,EAAA,EAAqBA,EAAAi7B,EAAAj1B,OAAmBhG,IAAA,CACxC,IAAAg7B,EAAAhnB,GAJAzT,KAIA06B,EAAAj7B,GAAAkT,OAAA+nB,EAAAj7B,GAAAmT,MACAS,MAAAsK,OAAA8c,KAEA,WAAAwf,EAA8B5mC,EAClBA,EAAAgnC,KAAAJ,GAAAj6C,KAAAs6C,kBAEZU,cAAA,SAAAf,GAIA,IAHA,IAEA5E,KAAA3a,EAAA16B,KAAAy6B,IAAAC,OACAj7B,EAAA,EAAqBA,EAAAi7B,EAAAj1B,OAAmBhG,IAAA,CACxC,IAAAg7B,EAAAhnB,GAJAzT,KAIA06B,EAAAj7B,GAAAkT,OAAA+nB,EAAAj7B,GAAAmT,OACA,IAAAqnC,IAAgCxf,IAAA4f,KAAAJ,GALhCj6C,KAKgCs6C,kBAChCjF,EAAA51C,GAAAg7B,EAEA,OAAA4a,GAEA4F,iBAAA,SAAAt/B,EAAA7N,EAAAuC,GAEA,IADA,IAAA6qC,KACAz7C,EAAA,EAAqBA,EAAAO,KAAAy6B,IAAAC,OAAAj1B,OAA4BhG,IACxCy7C,EAAAz7C,GAAAkc,EACT3b,KAAAm7C,kBAAAD,EAAAptC,EAAAuC,GAAA,WAEA8qC,kBAAAjT,GAAA,SAAAvsB,EAAA7N,EAAAuC,GAIA,IAHA,IAEAgd,KAAAoN,EAAAz6B,KAAAy6B,IACAh7B,EAAA,EAAqBA,EAAAg7B,EAAAC,OAAAj1B,OAAuBhG,IAAA,CAC5C,IAAAwhB,EAAAwZ,EAAAC,OAAAj7B,GACA4tB,EAAA5tB,IAAsBkT,KAAAsO,EAAAtO,OAAAC,GAAAqO,EAAArO,KAAAgB,KALtB5T,KAKsBg3C,WAAAr7B,EAAAlc,IAAA4Q,UAGtB,IADA,IAAA+qC,EAAAttC,GAAA,OAAAA,GAvjDA,SAAAjJ,EAAAwoB,EAAAguB,GAGA,IAFA,IAAAlqC,KACAmqC,EAAAzmC,GAAAhQ,EAAAqO,MAAA,GAAAqoC,EAAAD,EACA77C,EAAA,EAAmBA,EAAA4tB,EAAA5nB,OAAoBhG,IAAA,CACvC,IAAA4W,EAAAgX,EAAA5tB,GACAkT,EAAAg8B,GAAAt4B,EAAA1D,KAAA2oC,EAAAC,GACA3oC,EAAA+7B,GAAAH,GAAAn4B,GAAAilC,EAAAC,GAGA,GAFAD,EAAAjlC,EAAAzD,GACA2oC,EAAA3oC,EACA,UAAAyoC,EAAA,CACA,IAAAjwC,EAAAvG,EAAA41B,IAAAC,OAAAj7B,GAAA6uC,EAAAv5B,GAAA3J,EAAA2vB,KAAA3vB,EAAA4tB,QAAA,EACA7nB,EAAA1R,GAAA,IAAAsuC,GAAAO,EAAA17B,EAAAD,EAAA27B,EAAA37B,EAAAC,QAEAzB,EAAA1R,GAAA,IAAAsuC,GAAAp7B,KAGA,WAAA+6B,GAAAv8B,EAAAtM,EAAA41B,IAAAE,WAuiDA6gB,CAAAx7C,KAAAqtB,EAAAvf,GACAuG,EAAAgZ,EAAA5nB,OAAA,EAAwC4O,GAAA,EAAUA,IACzC4gC,GATTj1C,KASSqtB,EAAAhZ,IACT+mC,EAAmBzH,GAAA3zC,KAAAo7C,GACnBp7C,KAAAwa,IAAyBimB,GAAAzgC,KAAAwa,MAEzBihC,KAAAvT,GAAA,WAAkC6N,GAAA/1C,KAAA,UAClC07C,KAAAxT,GAAA,WAAkC6N,GAAA/1C,KAAA,UAClC27C,cAAAzT,GAAA,WAA2C6N,GAAA/1C,KAAA,aAC3C47C,cAAA1T,GAAA,WAA2C6N,GAAA/1C,KAAA,aAE3C67C,aAAA,SAAAn5B,GAAiC1iB,KAAA8qC,OAAApoB,GACjCo5B,aAAA,WAA8B,OAAA97C,KAAA8qC,QAE9BiR,YAAA,WAEA,IADA,IAAAlK,EAAA7xC,KAAA8xC,QAAApB,EAAA,EAAAC,EAAA,EACAlxC,EAAA,EAAqBA,EAAAoyC,EAAAnB,KAAAjrC,OAAsBhG,IAAOoyC,EAAAnB,KAAAjxC,GAAAi7B,UAA4BgW,EAC9E,QAAAr8B,EAAA,EAAuBA,EAAAw9B,EAAAlB,OAAAlrC,OAA0B4O,IAASw9B,EAAAlB,OAAAt8B,GAAAqmB,UAAgCiW,EAC1F,OAAc8K,KAAA/K,EAAAgL,KAAA/K,IAEd4I,aAAA,WAA8Bv5C,KAAA8xC,QAAA,IAAAtB,GAAAxwC,KAAA8xC,QAAAV,gBAE9B4K,UAAA,WACAh8C,KAAAk6C,gBAAAl6C,KAAAi8C,kBAAA,IAEAA,iBAAA,SAAAC,GAGA,OAFAA,IACSl8C,KAAA8xC,QAAAf,OAAA/wC,KAAA8xC,QAAAd,UAAAhxC,KAAA8xC,QAAAb,WAAA,MACTjxC,KAAA8xC,QAAAX,YAEAgL,QAAA,SAAAC,GACA,OAAAp8C,KAAA8xC,QAAAX,aAAAiL,GAAAp8C,KAAAk6C,kBAGAmC,WAAA,WACA,OAAc3L,KAAAoC,GAAA9yC,KAAA8xC,QAAApB,MACdC,OAAAmC,GAAA9yC,KAAA8xC,QAAAnB,UAEA2L,WAAA,SAAAC,GACA,IAAA1K,EAAA7xC,KAAA8xC,QAAA,IAAAtB,GAAAxwC,KAAA8xC,QAAAV,eACAS,EAAAnB,KAAAoC,GAAAyJ,EAAA7L,KAAAjlC,MAAA,YACAomC,EAAAlB,OAAAmC,GAAAyJ,EAAA5L,OAAAllC,MAAA,aAGA+wC,gBAAAtU,GAAA,SAAAx0B,EAAA+oC,EAAAh+C,GACA,OAAA64C,GAAAt3C,KAAA0T,EAAA,kBAAAA,GACA,IAAAib,EAAAjb,EAAAkb,gBAAAlb,EAAAkb,kBAGA,OAFAD,EAAA8tB,GAAAh+C,GACAA,GAAAwT,GAAA0c,KAAyCjb,EAAAkb,cAAA,OACzC,MAIA8tB,YAAAxU,GAAA,SAAAuU,GACA,IAAAhE,EAAAz4C,KAEAA,KAAA2T,KAAA,SAAAD,GACAA,EAAAkb,eAAAlb,EAAAkb,cAAA6tB,IACAnF,GAAAmB,EAAA/kC,EAAA,oBAGA,OAFAA,EAAAkb,cAAA6tB,GAAA,KACAxqC,GAAAyB,EAAAkb,iBAA8Clb,EAAAkb,cAAA,OAC9C,QAMA+tB,SAAA,SAAAjpC,GACA,IAAA7U,EACA,oBAAA6U,EAAA,CACA,IAAAa,GAAAvU,KAAA0T,GAAkC,YAGlC,GAFA7U,EAAA6U,IACAA,EAAAT,GAAAjT,KAAA0T,IACoB,iBAGpB,UADA7U,EAAAmV,GAAAN,IACwB,YAExB,OAAcA,KAAA7U,EAAA04C,OAAA7jC,EAAAE,KAAAF,EAAAE,KAAAgb,cAAAlb,EAAAkb,cACd3I,UAAAvS,EAAAuS,UAAAD,QAAAtS,EAAAsS,QAAAoI,UAAA1a,EAAA0a,UACAuB,QAAAjc,EAAAic,UAGAitB,aAAA1U,GAAA,SAAAqP,EAAAsF,EAAA3xC,GACA,OAAAosC,GAAAt3C,KAAAu3C,EAAA,UAAAsF,EAAA,0BAAAnpC,GACA,IAAA3E,EAAA,QAAA8tC,EAAA,YACA,cAAAA,EAAA,UACA,UAAAA,EAAA,0BACA,GAAAnpC,EAAA3E,GACA,IAAA9D,EAAAC,GAAA7B,KAAAqK,EAAA3E,IAAmD,SACrC2E,EAAA3E,IAAA,IAAA7D,OAFYwI,EAAA3E,GAAA7D,EAG1B,aAGA4xC,gBAAA5U,GAAA,SAAAqP,EAAAsF,EAAA3xC,GACA,OAAAosC,GAAAt3C,KAAAu3C,EAAA,UAAAsF,EAAA,0BAAAnpC,GACA,IAAA3E,EAAA,QAAA8tC,EAAA,YACA,cAAAA,EAAA,UACA,UAAAA,EAAA,0BACA5oC,EAAAP,EAAA3E,GACA,IAAAkF,EAAmB,SACnB,SAAA/I,EAA+BwI,EAAA3E,GAAA,SAC/B,CACA,IAAAyI,EAAAvD,EAAApJ,MAAAI,EAAAC,IACA,IAAAsM,EAAuB,SACvB,IAAAjK,EAAAiK,EAAAnP,MAAAmP,EAAA,GAAA/R,OACAiO,EAAA3E,GAAAkF,EAAAxI,MAAA,EAAA+L,EAAAnP,QAAAmP,EAAAnP,OAAAkF,GAAA0G,EAAAxO,OAAA,QAAAwO,EAAAxI,MAAA8B,IAAA,KAEA,aAIAwvC,cAAA7U,GAAA,SAAAqP,EAAAjsC,EAAAoJ,GACA,OAzkBA,SAAA7P,EAAA0yC,EAAAjsC,EAAAoJ,GACA,IAAA8W,EAAA,IAAA8sB,GAAAzzC,EAAAyG,EAAAoJ,GACA8F,EAAA3V,EAAA2V,GAgBA,OAfAA,GAAAgR,EAAAwE,YAAiCxV,EAAAhW,QAAA26B,cAAA,GACjCmY,GAAAzyC,EAAA0yC,EAAA,kBAAA7jC,GACA,IAAAic,EAAAjc,EAAAic,UAAAjc,EAAAic,YAIA,GAHA,MAAAnE,EAAAwxB,SAAoCrtB,EAAA/vB,KAAA4rB,GACxBmE,EAAA1X,OAAArH,KAAAC,IAAA8e,EAAAlqB,OAAA,EAAAmL,KAAA0E,IAAA,EAAAkW,EAAAwxB,WAAA,EAAAxxB,GACZA,EAAA9X,OACA8G,IAAAT,GAAAlV,EAAA6O,GAAA,CACA,IAAAupC,EAAA/iC,GAAAxG,GAAA7O,EAAAxB,UACAyQ,GAAAJ,IAAApP,OAAAisB,GAAA/E,IACAyxB,GAA2B1c,GAAA/lB,EAAAgR,EAAAlnB,QAC3BkW,EAAAiE,MAAA+T,aAAA,EAEA,WAEAhY,GAAasS,GAAAtS,EAAA,kBAAAA,EAAAgR,EAAA,iBAAA+rB,IAAAvjC,GAAAujC,IACb/rB,EAujBAuxB,CAAA/8C,KAAAu3C,EAAAjsC,EAAAoJ,KAEAwoC,iBAAA,SAAA1xB,GAAwCA,EAAA6X,SAExCwV,SAAA,SAAAlmC,EAAAC,EAAA8B,GACA,OAAAmkC,GAAA74C,KAAAuV,GAAAvV,KAAA2S,GAAA4C,GAAAvV,KAAA4S,GAAA8B,OAAAxN,MAAA,UAEAi2C,YAAA,SAAA1sC,EAAAiE,GACA,IAAA0oC,GAAsBlE,aAAAxkC,IAAA,MAAAA,EAAA/H,SAAA+H,EAAA8W,OAAA9W,GACtBsC,WAAAtC,KAAAsC,WACAgB,gBAAA,EAAAq4B,OAAA37B,KAAA27B,OACAxgB,kBAAAnb,KAAAmb,mBAEA,OAAAgpB,GAAA74C,KADAyQ,EAAA8E,GAAAvV,KAAAyQ,GACAA,EAAA2sC,EAAA,aAEAC,YAAA,SAAA5sC,GAEA,IAAAke,KAAA1Y,EAAAhD,GAAAjT,MADAyQ,EAAA8E,GAAAvV,KAAAyQ,IACAiD,MAAA8C,YACA,GAAAP,EAAkB,QAAAxW,EAAA,EAAgBA,EAAAwW,EAAAxQ,SAAkBhG,EAAA,CACpD,IAAAyW,EAAAD,EAAAxW,IACA,MAAAyW,EAAAvD,MAAAuD,EAAAvD,MAAAlC,EAAAkB,MACA,MAAAuE,EAAAtD,IAAAsD,EAAAtD,IAAAnC,EAAAkB,KACWgd,EAAA/uB,KAAAsW,EAAAH,OAAA/J,QAAAkK,EAAAH,QAEX,OAAA4Y,GAEAirB,UAAA,SAAAjnC,EAAAC,EAAAujC,GACAxjC,EAAA4C,GAAAvV,KAAA2S,GAAiCC,EAAA2C,GAAAvV,KAAA4S,GACjC,IAAA4E,KAAA+B,EAAA5G,EAAAe,KAaA,OAZA1T,KAAA2T,KAAAhB,EAAAe,KAAAd,EAAAc,KAAA,WAAAA,GACA,IAAAuC,EAAAvC,EAAA8C,YACA,GAAAP,EAAoB,QAAAxW,EAAA,EAAgBA,EAAAwW,EAAAxQ,OAAkBhG,IAAA,CACtD,IAAAyW,EAAAD,EAAAxW,GACA,MAAAyW,EAAAtD,IAAA2G,GAAA5G,EAAAe,MAAAf,EAAAhB,IAAAuE,EAAAtD,IACA,MAAAsD,EAAAvD,MAAA4G,GAAA5G,EAAAe,MACA,MAAAwC,EAAAvD,MAAA4G,GAAA3G,EAAAc,MAAAwC,EAAAvD,MAAAC,EAAAjB,IACAwkC,MAAAjgC,EAAAH,SACayB,EAAA5X,KAAAsW,EAAAH,OAAA/J,QAAAkK,EAAAH,UAEbwD,IAEA/B,GAEA8lC,YAAA,WACA,IAAA3uB,KAMA,OALA3uB,KAAA2T,KAAA,SAAAD,GACA,IAAAsF,EAAAtF,EAAA8C,YACA,GAAAwC,EAAkB,QAAAvZ,EAAA,EAAgBA,EAAAuZ,EAAAvT,SAAgBhG,EACvC,MAAAuZ,EAAAvZ,GAAAkT,MAA2Bgc,EAAA/uB,KAAAoZ,EAAAvZ,GAAAsW,UAEtC4Y,GAGA4uB,aAAA,SAAAr3C,GACA,IAAAyL,EAAA4H,EAAAvZ,KAAAkT,MAAAsqC,EAAAx9C,KAAAs6C,gBAAA70C,OAOA,OANAzF,KAAA2T,KAAA,SAAAD,GACA,IAAAH,EAAAG,EAAAE,KAAAnO,OAAA+3C,EACA,GAAAjqC,EAAArN,EAAiC,OAAVyL,EAAAzL,GAAU,EACjCA,GAAAqN,IACAgG,IAEAhE,GAAAvV,KAAA6U,GAAA0E,EAAA5H,KAEA8rC,aAAA,SAAA9mB,GAEA,IAAAtuB,GADAsuB,EAAAphB,GAAAvV,KAAA22B,IACAhlB,GACA,GAAAglB,EAAAjjB,KAAA1T,KAAAkT,OAAAyjB,EAAAhlB,GAAA,EAAsD,SACtD,IAAA6rC,EAAAx9C,KAAAs6C,gBAAA70C,OAIA,OAHAzF,KAAA2T,KAAA3T,KAAAkT,MAAAyjB,EAAAjjB,KAAA,SAAAA,GACArL,GAAAqL,EAAAE,KAAAnO,OAAA+3C,IAEAn1C,GAGAyf,KAAA,SAAA41B,GACA,IAAA74C,EAAA,IAAAm1C,GAAAnmC,GAAA7T,UAAAkT,MAAAlT,KAAAkT,MAAAlT,KAAA2B,MACA3B,KAAA6uC,WAAA7uC,KAAAkT,MAAAlT,KAAAi6C,QAAAj6C,KAAAyb,WAQA,OAPA5W,EAAAxB,UAAArD,KAAAqD,UAAqCwB,EAAAvB,WAAAtD,KAAAsD,WACrCuB,EAAA41B,IAAAz6B,KAAAy6B,IACA51B,EAAAimC,QAAA,EACA4S,IACA74C,EAAAitC,QAAAlB,UAAA5wC,KAAA8xC,QAAAlB,UACA/rC,EAAAy3C,WAAAt8C,KAAAq8C,eAEAx3C,GAGA84C,UAAA,SAAAjpC,GACAA,IAAqBA,MACrB,IAAA/B,EAAA3S,KAAAkT,MAAAN,EAAA5S,KAAAkT,MAAAlT,KAAA2B,KACA,MAAA+S,EAAA/B,MAAA+B,EAAA/B,SAAwDA,EAAA+B,EAAA/B,MACxD,MAAA+B,EAAA9B,IAAA8B,EAAA9B,OAAkDA,EAAA8B,EAAA9B,IAClD,IAAAkV,EAAA,IAAAkyB,GAAAnmC,GAAA7T,KAAA2S,EAAAC,GAAA8B,EAAAjT,MAAAzB,KAAA6uC,WAAAl8B,EAAA3S,KAAAi6C,QAAAj6C,KAAAyb,WAKA,OAJA/G,EAAAw7B,aAA+BpoB,EAAAgqB,QAAA9xC,KAAA8xC,UACtB9xC,KAAAmwC,SAAAnwC,KAAAmwC,YAAAvwC,MAA0CiF,IAAAijB,EAAAooB,WAAAx7B,EAAAw7B,aACnDpoB,EAAAqoB,SAAsBtrC,IAAA7E,KAAA+4C,UAAA,EAAA7I,WAAAx7B,EAAAw7B,aAlZtB,SAAArrC,EAAA8pB,GACA,QAAAlvB,EAAA,EAAmBA,EAAAkvB,EAAAlpB,OAAoBhG,IAAA,CACvC,IAAAsW,EAAA4Y,EAAAlvB,GAAAgR,EAAAsF,EAAA4C,OACAilC,EAAA/4C,EAAA0Q,QAAA9E,EAAAkC,MAAAkrC,EAAAh5C,EAAA0Q,QAAA9E,EAAAmC,IACA,GAAAmC,GAAA6oC,EAAAC,GAAA,CACA,IAAAC,EAAAjF,GAAAh0C,EAAA+4C,EAAAC,EAAA9nC,EAAAskB,QAAAtkB,EAAAskB,QAAAnzB,MACA6O,EAAA4Y,QAAA/uB,KAAAk+C,GACAA,EAAA9xC,OAAA+J,IA4YAgoC,CAAAj2B,EAAA6xB,GAAA35C,OACA8nB,GAEAk2B,UAAA,SAAA3mB,GAIA,GADAA,aAAA4mB,KAAwC5mB,IAAAxyB,KACxC7E,KAAAmwC,OAAwB,QAAA1wC,EAAA,EAAgBA,EAAAO,KAAAmwC,OAAA1qC,SAAwBhG,EAAA,CAEhE,GALAO,KAIAmwC,OAAA1wC,GACAoF,KAAAwyB,EAAA,CALAr3B,KAMAmwC,OAAAl4B,OAAAxY,EAAA,GACA43B,EAAA2mB,UAPAh+C,MAQA65C,GAAAF,GARA35C,OASA,OAGA,GAAAq3B,EAAAya,SAAA9xC,KAAA8xC,QAAA,CACA,IAAAoM,GAAA7mB,EAAAh1B,IACAytC,GAAAzY,EAAA,SAAAxyB,GAA0C,OAAAq5C,EAAAt+C,KAAAiF,EAAAxC,MAAgC,GAC1Eg1B,EAAAya,QAAA,IAAAtB,GAAA,MACAnZ,EAAAya,QAAApB,KAAAoC,GAAA9yC,KAAA8xC,QAAApB,KAAAwN,GACA7mB,EAAAya,QAAAnB,OAAAmC,GAAA9yC,KAAA8xC,QAAAnB,OAAAuN,KAGAC,eAAA,SAAA/vC,GAAiC0hC,GAAA9vC,KAAAoO,IAEjCyT,QAAA,WAAyB,OAAA7hB,KAAAyB,MACzB28C,UAAA,WAA2B,OAAAp+C,KAAAwa,IAE3Bw8B,WAAA,SAAA1kC,GACA,OAAAtS,KAAAi6C,QAAyB3nC,EAAAvP,MAAA/C,KAAAi6C,SACzBx5B,GAAAnO,IAEAgoC,cAAA,WAA+B,OAAAt6C,KAAAi6C,SAAA,MAE/BoE,aAAAnW,GAAA,SAAA31B,GAxqDA,IAAAiI,GAyqDA,OAAAjI,IAAyBA,EAAA,OACzBA,GAAAvS,KAAAyb,aACAzb,KAAAyb,UAAAlJ,EACAvS,KAAA2T,KAAA,SAAAD,GAAiC,OAAAA,EAAAoH,MAAA,OACjC9a,KAAAwa,IA5qDAutB,GADAvtB,EA6qDoBxa,KAAAwa,GA5qDpB,WACA+1B,GAAA/1B,GACA2tB,GAAA3tB,UA+qDAw/B,GAAAzrC,UAAA+vC,SAAAtE,GAAAzrC,UAAAoF,KAIA,IAAA4qC,GAAA,EAEA,SAAAC,GAAAh7C,GACA,IAAAgX,EAAAxa,KAEA,GADAy+C,GAAAjkC,IACAyD,GAAAzD,EAAAhX,KAAAktB,GAAAlW,EAAAhW,QAAAhB,GAAA,CAEAsb,GAAAtb,GACAkG,IAAa60C,IAAA,IAAAnV,MACb,IAAA34B,EAAAipB,GAAAlf,EAAAhX,GAAA,GAAAk7C,EAAAl7C,EAAAm7C,aAAAD,MACA,GAAAjuC,IAAA+J,EAAAokC,aAGA,GAAAF,KAAAj5C,QAAAqb,OAAA+9B,YAAA/9B,OAAAg+B,KAuBA,IAtBA,IAAAjgD,EAAA6/C,EAAAj5C,OAAAmO,EAAAtF,MAAAzP,GAAAkgD,EAAA,EACAC,EAAA,SAAA95C,EAAAzF,GACA,IAAA+a,EAAA9F,QAAAuqC,qBACA,GAAAzvC,EAAAgL,EAAA9F,QAAAuqC,mBAAA/5C,EAAAgC,MADA,CAIA,IAAAg4C,EAAA,IAAAL,WACAK,EAAAC,OAAAnX,GAAAxtB,EAAA,WACA,IAAAjb,EAAA2/C,EAAAx+B,OAGA,GAFA,0BAAsCrX,KAAA9J,KAAkBA,EAAA,IACxDqU,EAAAnU,GAAAF,IACAw/C,GAAAlgD,EAAA,CAEA,IAAAwX,GAA0B1D,KAD1BlC,EAAA8E,GAAAiF,EAAA3V,IAAA4L,GAC0BmC,GAAAnC,EAC1BmD,KAAA4G,EAAA3V,IAAAmyC,WAAApjC,EAAAymC,KAAA7/B,EAAA3V,IAAAy1C,kBACAjqC,OAAA,SACA4kC,GAAAz6B,EAAA3V,IAAAwR,GACAs9B,GAAAn5B,EAAA3V,IAAA0pC,GAAA99B,EAAA+9B,GAAAn4B,QAGA6oC,EAAAE,WAAAl6C,KAEAzF,EAAA,EAAqBA,EAAAZ,IAAOY,EAAOu/C,EAAAN,EAAAj/C,UAC9B,CAEL,GAAA+a,EAAAgI,MAAA68B,cAAA7kC,EAAA3V,IAAA41B,IAAAhuB,SAAAgE,IAAA,EAIA,OAHA+J,EAAAgI,MAAA68B,aAAA77C,QAEAL,WAAA,WAAgC,OAAAqX,EAAAhW,QAAAinB,MAAAoS,SAAmC,IAGnE,IACA,IAAAyhB,EAAA97C,EAAAm7C,aAAAY,QAAA,QACA,GAAAD,EAAA,CACA,IAAAE,EAIA,GAHAhlC,EAAAgI,MAAA68B,eAAA7kC,EAAAgI,MAAA68B,aAAAv3B,OACa03B,EAAAhlC,EAAAmgC,kBACb/G,GAAAp5B,EAAA3V,IAAA0pC,GAAA99B,MACA+uC,EAAyB,QAAAnrC,EAAA,EAAkBA,EAAAmrC,EAAA/5C,SAAuB4O,EACrD0iC,GAAAv8B,EAAA3V,IAAA,GAAA26C,EAAAnrC,GAAA2kB,OAAAwmB,EAAAnrC,GAAA0mB,KAAA,QACbvgB,EAAAygC,iBAAAqE,EAAA,kBACA9kC,EAAAhW,QAAAinB,MAAAoS,SAGA,MAAAr6B,OAuCA,SAAAi7C,GAAAjkC,GACAA,EAAAhW,QAAAi7C,aACAjlC,EAAAhW,QAAAusB,UAAAllB,YAAA2O,EAAAhW,QAAAi7C,YACAjlC,EAAAhW,QAAAi7C,WAAA,MAQA,SAAAC,GAAAtxC,GACA,GAAAxE,SAAA+1C,uBAAA,CAEA,IADA,IAAAC,EAAAh2C,SAAA+1C,uBAAA,cAAAE,KACApgD,EAAA,EAAmBA,EAAAmgD,EAAAn6C,OAAoBhG,IAAA,CACvC,IAAA+a,EAAAolC,EAAAngD,GAAAw+C,WACAzjC,GAAeqlC,EAAAjgD,KAAA4a,GAEfqlC,EAAAp6C,QAAyBo6C,EAAA,GAAA7X,UAAA,WACzB,QAAAvoC,EAAA,EAAqBA,EAAAogD,EAAAp6C,OAAoBhG,IAAO2O,EAAAyxC,EAAApgD,OAIhD,IAAAqgD,IAAA,EACA,SAAAC,KAKA,IAEAC,EANAF,KAOA/6C,GAAA+b,OAAA,oBACA,MAAAk/B,IAAgCA,EAAA78C,WAAA,WAChC68C,EAAA,KACAN,GAAAO,KACO,QAGPl7C,GAAA+b,OAAA,kBAAoC,OAAA4+B,GAAAzhB,MAZpC6hB,IAAA,GAeA,SAAAG,GAAAzlC,GACA,IAAAxb,EAAAwb,EAAAhW,QAEAxF,EAAA02B,gBAAA12B,EAAA22B,iBAAA32B,EAAAmyB,eAAA,KACAnyB,EAAAknC,mBAAA,EACA1rB,EAAA0lC,UAeA,IAZA,IAAAC,IACAC,EAAA,QAAAC,EAAA,YAAAC,EAAA,MAAAC,GAAA,QAAAC,GAAA,QAAAC,GAAA,OAAAC,GAAA,MACAC,GAAA,QAAAC,GAAA,WAAAC,GAAA,MAAAC,GAAA,QAAAC,GAAA,SAAAC,GAAA,WAAAC,GAAA,MACAC,GAAA,OAAAC,GAAA,OAAAC,GAAA,KAAAC,GAAA,QAAAC,GAAA,OAAAC,GAAA,YAAAC,GAAA,SACAC,GAAA,SAAAC,GAAA,IAAwBC,GAAA,IAAAC,GAAA,MAAAC,GAAA,MAAAC,GAAA,MACxBC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,SAAAC,IAAA,aACAC,IAAA,IAAAC,IAAA,IAAqBC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KACrBC,IAAA,IAAAC,IAAA,IAAAC,MAAA,KAAAC,MAAA,OAAAC,MAAA,OAAAC,MAAA,QAAAC,MAAA,SACAC,MAAA,OAAAC,MAAA,MAAAC,MAAA,SAAAC,MAAA,WAAAC,MAAA,UAIAlkD,GAAA,EAAiBA,GAAA,GAAQA,KAAO0gD,GAAA1gD,GAAA,IAAA0gD,GAAA1gD,GAAA,IAAAyI,OAAAzI,IAEhC,QAAA4U,GAAA,GAAoBA,IAAA,GAAWA,KAAS8rC,GAAA9rC,IAAAnM,OAAA07C,aAAAvvC,IAExC,QAAAyD,GAAA,EAAmBA,IAAA,GAAWA,KAASqoC,GAAAroC,GAAA,KAAAqoC,GAAAroC,GAAA,WAAAA,GAEvC,IAAA+rC,MA6CA,SAAAC,GAAA3iD,GACA,IAEAZ,EAAAwjD,EAAAzlB,EAAA0lB,EAFA3O,EAAAl0C,EAAA4B,MAAA,UACA5B,EAAAk0C,IAAA5vC,OAAA,GAEA,QAAAhG,EAAA,EAAmBA,EAAA41C,EAAA5vC,OAAA,EAAsBhG,IAAA,CACzC,IAAAwkD,EAAA5O,EAAA51C,GACA,qBAAA4J,KAAA46C,GAAwCD,GAAA,OACxC,eAAA36C,KAAA46C,GAAuC1jD,GAAA,OACvC,yBAAA8I,KAAA46C,GAAiDF,GAAA,MACjD,mBAAA16C,KAAA46C,GACY,UAAA9wC,MAAA,+BAAA8wC,GAD6B3lB,GAAA,GAOzC,OAJA/9B,IAAcY,EAAA,OAAAA,GACd4iD,IAAe5iD,EAAA,QAAAA,GACf6iD,IAAc7iD,EAAA,OAAAA,GACdm9B,IAAgBn9B,EAAA,SAAAA,GAChBA,EAQA,SAAA+iD,GAAAC,GACA,IAAAr8B,KACA,QAAAs8B,KAAAD,EAAiC,GAAAA,EAAAn1C,eAAAo1C,GAAA,CACjC,IAAA3lD,EAAA0lD,EAAAC,GACA,sCAAA/6C,KAAA+6C,GAA6D,SAC7D,UAAA3lD,EAAA,QAA2B0lD,EAAAC,GAAwB,SAGnD,IADA,IAAAC,EAAAnzC,EAAAkzC,EAAArhD,MAAA,KAAA+gD,IACArkD,EAAA,EAAqBA,EAAA4kD,EAAA5+C,OAAiBhG,IAAA,CACtC,IAAAijB,OAAA,EAAAvhB,OAAA,EACA1B,GAAA4kD,EAAA5+C,OAAA,GACAtE,EAAAkjD,EAAAhK,KAAA,KACA33B,EAAAjkB,IAEA0C,EAAAkjD,EAAA54C,MAAA,EAAAhM,EAAA,GAAA46C,KAAA,KACA33B,EAAA,OAEA,IAAA7G,EAAAiM,EAAA3mB,GACA,GAAA0a,GACA,GAAAA,GAAA6G,EAA+B,UAAAvP,MAAA,6BAAAhS,QADX2mB,EAAA3mB,GAAAuhB,SAGpByhC,EAAAC,GAEA,QAAAr1C,KAAA+Y,EAA4Bq8B,EAAAp1C,GAAA+Y,EAAA/Y,GAC5B,OAAAo1C,EAGA,SAAAG,GAAAvlD,EAAA0e,EAAA85B,EAAAryB,GAEA,IAAA1N,GADAiG,EAAA8mC,GAAA9mC,IACAjP,KAAAiP,EAAAjP,KAAAzP,EAAAmmB,GAAAzH,EAAA1e,GACA,QAAAyY,EAA0B,gBAC1B,WAAAA,EAA0B,cAC1B,SAAAA,GAAA+/B,EAAA//B,GAAyC,gBAEzC,GAAAiG,EAAA+mC,YAAA,CACA,qBAAAlmD,OAAAiQ,UAAA2B,SAAA1B,KAAAiP,EAAA+mC,aACS,OAAAF,GAAAvlD,EAAA0e,EAAA+mC,YAAAjN,EAAAryB,GACT,QAAAzlB,EAAA,EAAqBA,EAAAge,EAAA+mC,YAAA/+C,OAA+BhG,IAAA,CACpD,IAAAihB,EAAA4jC,GAAAvlD,EAAA0e,EAAA+mC,YAAA/kD,GAAA83C,EAAAryB,GACA,GAAAxE,EAAqB,OAAAA,IAOrB,SAAA+jC,GAAAhmD,GACA,IAAA0C,EAAA,iBAAA1C,IAAA0hD,GAAA1hD,EAAAimD,SACA,cAAAvjD,GAAA,OAAAA,GAAA,SAAAA,GAAA,OAAAA,EAGA,SAAAwjD,GAAAxjD,EAAA8xC,EAAA2R,GACA,IAAAtzC,EAAAnQ,EAKA,OAJA8xC,EAAA4R,QAAA,OAAAvzC,IAAwCnQ,EAAA,OAAAA,IACxC4J,EAAAkoC,EAAA6R,QAAA7R,EAAAxzB,UAAA,QAAAnO,IAA0EnQ,EAAA,QAAAA,IAC1E4J,EAAAkoC,EAAAxzB,QAAAwzB,EAAA6R,UAAA,OAAAxzC,IAAyEnQ,EAAA,OAAAA,IACzEyjD,GAAA3R,EAAA8R,UAAA,SAAAzzC,IAAwDnQ,EAAA,SAAAA,GACxDA,EAIA,SAAA6jD,GAAA/R,EAAA2R,GACA,GAAA36C,GAAA,IAAAgpC,EAAAyR,SAAAzR,EAAA,KAAyD,SACzD,IAAA9xC,EAAAg/C,GAAAlN,EAAAyR,SACA,aAAAvjD,IAAA8xC,EAAAgS,cAGA,GAAAhS,EAAAyR,SAAAzR,EAAAt3B,OAA2Cxa,EAAA8xC,EAAAt3B,MAC3CgpC,GAAAxjD,EAAA8xC,EAAA2R,IAGA,SAAAL,GAAA7hC,GACA,uBAAAA,EAAAmhC,GAAAnhC,KAKA,SAAAwiC,GAAA1qC,EAAA2qC,GAIA,IAHA,IAAAzqB,EAAAlgB,EAAA3V,IAAA41B,IAAAC,OAAA0qB,KAGA3lD,EAAA,EAAmBA,EAAAi7B,EAAAj1B,OAAmBhG,IAAA,CAEtC,IADA,IAAA4lD,EAAAF,EAAAzqB,EAAAj7B,IACA2lD,EAAA3/C,QAAAsP,GAAAswC,EAAA1yC,KAAA3B,EAAAo0C,GAAAxyC,KAAA,IACA,IAAA0yC,EAAAF,EAAA3T,MACA,GAAA18B,GAAAuwC,EAAA3yC,KAAA0yC,EAAA1yC,MAAA,GACA0yC,EAAA1yC,KAAA2yC,EAAA3yC,KACA,OAGAyyC,EAAAxlD,KAAAylD,GAGAtd,GAAAvtB,EAAA,WACA,QAAA/a,EAAA2lD,EAAA3/C,OAAA,EAAmChG,GAAA,EAAQA,IAClCs3C,GAAAv8B,EAAA3V,IAAA,GAAAugD,EAAA3lD,GAAAkT,KAAAyyC,EAAA3lD,GAAAmT,GAAA,WACT6tB,GAAAjmB,KAIA,SAAA+qC,GAAA7xC,EAAA/B,EAAAY,GACA,IAAA1D,EAAAwD,GAAAqB,EAAAE,KAAAjC,EAAAY,KACA,OAAA1D,EAAA,GAAAA,EAAA6E,EAAAE,KAAAnO,OAAA,KAAAoJ,EAGA,SAAA22C,GAAA9xC,EAAApG,EAAAiF,GACA,IAAAZ,EAAA4zC,GAAA7xC,EAAApG,EAAAqE,GAAAY,GACA,aAAAZ,EAAA,SAAAkD,GAAAvH,EAAAoG,KAAA/B,EAAAY,EAAA,oBAGA,SAAAkzC,GAAAC,EAAAlrC,EAAAL,EAAAnG,EAAAzB,GACA,GAAAmzC,EAAA,CACA,IAAA5qC,EAAAsC,GAAAjD,EAAAK,EAAA3V,IAAA4W,WACA,GAAAX,EAAA,CACA,IAGAnJ,EAHA0Z,EAAA9Y,EAAA,EAAAvB,EAAA8J,KAAA,GAEAhG,EADAvC,EAAA,OAAA8Y,EAAA7P,OACA,iBAQA,GAAA6P,EAAA7P,MAAA,UAAAhB,EAAA3V,IAAA4W,UAAA,CACA,IAAAkqC,EAAAvzB,GAAA5X,EAAAL,GACAxI,EAAAY,EAAA,EAAA4H,EAAAvG,KAAAnO,OAAA,IACA,IAAAmgD,EAAAzzB,GAAA3X,EAAAmrC,EAAAh0C,GAAA4hB,IACA5hB,EAAAc,GAAA,SAAAd,GAAwC,OAAAwgB,GAAA3X,EAAAmrC,EAAAh0C,GAAA4hB,KAAAqyB,GAA6DrzC,EAAA,OAAA8Y,EAAA7P,OAAA6P,EAAA1Y,KAAA0Y,EAAAzY,GAAA,EAAAjB,GACrG,UAAAmD,IAAmCnD,EAAA4zC,GAAAprC,EAAAxI,EAAA,SACnBA,EAAAY,EAAA,EAAA8Y,EAAAzY,GAAAyY,EAAA1Y,KAChB,WAAAkC,GAAAb,EAAArC,EAAAmD,IAGA,WAAAD,GAAAb,EAAAzB,EAAA,EAAA4H,EAAAvG,KAAAnO,OAAA,EAAA8M,EAAA,oBAzMAsxC,GAAAgC,OACAC,KAAA,aAAAC,MAAA,cAAAC,GAAA,WAAAC,KAAA,aACAC,IAAA,YAAAC,KAAA,mBAAAC,OAAA,WAAAC,SAAA,aACAC,OAAA,eAAAC,UAAA,gBAAAC,kBAAA,gBACAC,IAAA,aAAAC,YAAA,aACAC,MAAA,mBAAAC,OAAA,kBACAC,IAAA,mBAKAhD,GAAAiD,WACAC,SAAA,YAAAC,SAAA,aAAAC,SAAA,OAAAC,eAAA,OAAAC,SAAA,OACAC,YAAA,aAAAC,WAAA,WAAAC,UAAA,WAAAC,YAAA,aACAC,YAAA,cAAAC,aAAA,eAAAC,WAAA,cAAAC,YAAA,YACAC,iBAAA,iBAAAC,cAAA,gBAAAC,SAAA,OAAAC,SAAA,OACAC,SAAA,WAAAC,eAAA,WAAAC,eAAA,UAAAC,eAAA,aACAC,SAAA,aAAAC,SAAA,aACAC,SAAA,gBAAAC,eAAA,gBAAAC,QAAA,gBACAhE,YAAA,SAGAX,GAAA4E,QACAV,SAAA,cAAAW,SAAA,aAAAC,SAAA,WAAAC,SAAA,aACAC,QAAA,cAAAC,QAAA,aAAA/B,SAAA,cAAAgC,SAAA,YACAC,SAAA,aAAAC,eAAA,WAAAjC,SAAA,eAAAkC,SAAA,gBACAC,QAAA,eAAAC,gBAAA,gBAAAC,SAAA,WAAAC,SAAA,iBACAC,SAAA,YAEA1F,GAAA2F,YACAC,QAAA,YAAAC,QAAA,aAAAC,QAAA,OAAAC,cAAA,OAAAC,QAAA,OACAC,WAAA,aAAAC,SAAA,aAAAC,UAAA,WAAAC,WAAA,WAAAvC,WAAA,cACAC,YAAA,eAAAuC,WAAA,aAAAC,YAAA,cAAAf,gBAAA,iBACAgB,qBAAA,gBAAAC,aAAA,gBAAAC,QAAA,OAAAC,QAAA,OACAC,QAAA,WAAAC,cAAA,WAAAC,YAAA,UAAAC,kBAAA,aACAC,QAAA,aAAAC,QAAA,aAAAC,gBAAA,qBAAAC,aAAA,sBACAC,QAAA,gBAAAC,cAAA,gBAAA3D,UAAA,aAAAC,YAAA,WACA/C,aAAA,mBAEAX,GAAA,QAAAp5C,EAAAo5C,GAAA2F,WAAA3F,GAAAiD,UA4OA,IAAAoE,IACArW,aACAsW,gBAAA,SAAA3wC,GAAoC,OAAAA,EAAA84B,aAAA94B,EAAAkmB,UAAA,UAAAlmB,EAAAkmB,UAAA,QAAAvwB,IACpCi7C,SAAA,SAAA5wC,GAA6B,OAAA0qC,GAAA1qC,EAAA,SAAApP,GAC7B,GAAAA,EAAAwvB,QAAA,CACA,IAAAvgB,EAAApH,GAAAuH,EAAA3V,IAAAuG,EAAA2vB,KAAArnB,MAAAE,KAAAnO,OACA,OAAA2F,EAAA2vB,KAAAppB,IAAA0I,GAAAjP,EAAA2vB,KAAArnB,KAAA8G,EAAAV,YACoBnH,KAAAvH,EAAA2vB,KAAAnoB,GAAAiC,GAAAzJ,EAAA2vB,KAAArnB,KAAA,OAEAf,KAAAvH,EAAA2vB,KAAAnoB,GAAAiC,GAAAzJ,EAAA2vB,KAAArnB,KAAA2G,IAEpB,OAAgB1H,KAAAvH,EAAAuH,OAAAC,GAAAxH,EAAAwH,SAGhBy4C,WAAA,SAAA7wC,GAA+B,OAAA0qC,GAAA1qC,EAAA,SAAApP,GAAkD,OACjFuH,KAAAkC,GAAAzJ,EAAAuH,OAAAe,KAAA,GACAd,GAAA2C,GAAAiF,EAAA3V,IAAAgQ,GAAAzJ,EAAAwH,KAAAc,KAAA,UAEA43C,YAAA,SAAA9wC,GAAgC,OAAA0qC,GAAA1qC,EAAA,SAAApP,GAAkD,OAClFuH,KAAAkC,GAAAzJ,EAAAuH,OAAAe,KAAA,GAAAd,GAAAxH,EAAAuH,WAEA44C,mBAAA,SAAA/wC,GAAuC,OAAA0qC,GAAA1qC,EAAA,SAAApP,GACvC,IAAAmoB,EAAA/Y,EAAAsc,WAAA1rB,EAAA2vB,KAAA,OAAAxH,IAAA,EAEA,OAAc5gB,KADd6H,EAAAkd,YAAmCnX,KAAA,EAAAgT,OAAkB,OACvC3gB,GAAAxH,EAAAuH,WAEd64C,oBAAA,SAAAhxC,GAAwC,OAAA0qC,GAAA1qC,EAAA,SAAApP,GACxC,IAAAmoB,EAAA/Y,EAAAsc,WAAA1rB,EAAA2vB,KAAA,OAAAxH,IAAA,EACAk4B,EAAAjxC,EAAAkd,YAAoCnX,KAAA/F,EAAAhW,QAAAi6B,QAAAxe,YAAA,IAAAsT,OAAqD,OACzF,OAAc5gB,KAAAvH,EAAAuH,OAAAC,GAAA64C,MAEdhQ,KAAA,SAAAjhC,GAAyB,OAAAA,EAAAihC,QACzBC,KAAA,SAAAlhC,GAAyB,OAAAA,EAAAkhC,QACzBC,cAAA,SAAAnhC,GAAkC,OAAAA,EAAAmhC,iBAClCC,cAAA,SAAAphC,GAAkC,OAAAA,EAAAohC,iBAClC8P,WAAA,SAAAlxC,GAA+B,OAAAA,EAAA64B,gBAAAx+B,GAAA2F,EAAA80B,YAAA,KAC/Bqc,SAAA,SAAAnxC,GAA6B,OAAAA,EAAA64B,gBAAAx+B,GAAA2F,EAAAV,cAC7B8xC,YAAA,SAAApxC,GAAgC,OAAAA,EAAAqgC,mBAAA,SAAAzvC,GAAgD,OAAAgY,GAAA5I,EAAApP,EAAA2vB,KAAArnB,QACzErD,OAAA,QAAA6hB,KAAA,KAEP25B,iBAAA,SAAArxC,GAAqC,OAAAA,EAAAqgC,mBAAA,SAAAzvC,GAAgD,OAAA0gD,GAAAtxC,EAAApP,EAAA2vB,QAC9E1qB,OAAA,QAAA6hB,KAAA,KAEP65B,UAAA,SAAAvxC,GAA8B,OAAAA,EAAAqgC,mBAAA,SAAAzvC,GAAgD,OAwG9E,SAAAoP,EAAAb,GACA,IAAAjG,EAAAT,GAAAuH,EAAA3V,IAAA8U,GACA8/B,EA7oMA,SAAA/lC,GAEA,IADA,IAAA+F,EACAA,EAAAL,GAAA1F,IACOA,EAAA+F,EAAAd,KAAA,MAAAjF,KACP,OAAAA,EAyoMAs4C,CAAAt4C,GACA+lC,GAAA/lC,IAAyBiG,EAAA3F,GAAAylC,IACzB,OAAAgM,IAAA,EAAAjrC,EAAA9G,EAAAiG,GAAA,GA5G8EsyC,CAAAzxC,EAAApP,EAAA2vB,KAAArnB,QACvErD,OAAA,QAAA6hB,MAAA,KAEPg6B,YAAA,SAAA1xC,GAAgC,OAAAA,EAAAqgC,mBAAA,SAAAzvC,GAChC,IAAAmoB,EAAA/Y,EAAAuc,aAAA3rB,EAAA2vB,KAAA,OAAAxH,IAAA,EACA,OAAA/Y,EAAAkd,YAA4BnX,KAAA/F,EAAAhW,QAAAi6B,QAAAxe,YAAA,IAAAsT,OAAqD,QAC5EjjB,IACL67C,WAAA,SAAA3xC,GAA+B,OAAAA,EAAAqgC,mBAAA,SAAAzvC,GAC/B,IAAAmoB,EAAA/Y,EAAAuc,aAAA3rB,EAAA2vB,KAAA,OAAAxH,IAAA,EACA,OAAA/Y,EAAAkd,YAA4BnX,KAAA,EAAAgT,OAAkB,QACzCjjB,IACL87C,gBAAA,SAAA5xC,GAAoC,OAAAA,EAAAqgC,mBAAA,SAAAzvC,GACpC,IAAAmoB,EAAA/Y,EAAAuc,aAAA3rB,EAAA2vB,KAAA,OAAAxH,IAAA,EACA9iB,EAAA+J,EAAAkd,YAA+BnX,KAAA,EAAAgT,OAAkB,OACjD,OAAA9iB,EAAAkB,GAAA6I,EAAAvH,QAAAxC,EAAAiD,MAAApE,OAAA,MAAuDw8C,GAAAtxC,EAAApP,EAAA2vB,MACvDtqB,GACKH,IACL+7C,SAAA,SAAA7xC,GAA6B,OAAAA,EAAA8xC,OAAA,WAC7BC,WAAA,SAAA/xC,GAA+B,OAAAA,EAAA8xC,MAAA,WAC/BE,SAAA,SAAAhyC,GAA6B,OAAAA,EAAA8xC,OAAA,WAC7BG,WAAA,SAAAjyC,GAA+B,OAAAA,EAAA8xC,MAAA,WAC/BI,WAAA,SAAAlyC,GAA+B,OAAAA,EAAAmyC,OAAA,WAC/BC,YAAA,SAAApyC,GAAgC,OAAAA,EAAAmyC,MAAA,WAChCE,aAAA,SAAAryC,GAAiC,OAAAA,EAAAmyC,OAAA,aACjCG,cAAA,SAAAtyC,GAAkC,OAAAA,EAAAmyC,MAAA,aAClCI,WAAA,SAAAvyC,GAA+B,OAAAA,EAAAmyC,OAAA,WAC/BK,aAAA,SAAAxyC,GAAiC,OAAAA,EAAAmyC,MAAA,YACjCM,YAAA,SAAAzyC,GAAgC,OAAAA,EAAAmyC,OAAA,YAChCO,YAAA,SAAA1yC,GAAgC,OAAAA,EAAAmyC,MAAA,WAChCQ,cAAA,SAAA3yC,GAAkC,OAAAA,EAAA4yC,SAAA,WAClCC,aAAA,SAAA7yC,GAAiC,OAAAA,EAAA4yC,QAAA,WACjCE,cAAA,SAAA9yC,GAAkC,OAAAA,EAAA4yC,SAAA,WAClCG,aAAA,SAAA/yC,GAAiC,OAAAA,EAAA4yC,QAAA,WACjCI,eAAA,SAAAhzC,GAAmC,OAAAA,EAAA4yC,SAAA,YACnCK,cAAA,SAAAjzC,GAAkC,OAAAA,EAAA4yC,QAAA,YAClCM,WAAA,SAAAlzC,GAA+B,OAAAA,EAAAmzC,gBAAA,UAC/BC,WAAA,SAAApzC,GAA+B,OAAAA,EAAAmzC,gBAAA,QAC/BE,WAAA,SAAArzC,GAA+B,OAAAA,EAAAmzC,gBAAA,aAC/BG,UAAA,SAAAtzC,GAA8B,OAAAA,EAAAygC,iBAAA,OAC9B8S,cAAA,SAAAvzC,GAEA,IADA,IAAAwzC,KAAAtzB,EAAAlgB,EAAAmgC,iBAAAxrC,EAAAqL,EAAA9F,QAAAvF,QACA1P,EAAA,EAAqBA,EAAAi7B,EAAAj1B,OAAmBhG,IAAA,CACxC,IAAAgR,EAAAiqB,EAAAj7B,GAAAkT,OACAjC,EAAAzB,EAAAuL,EAAAvH,QAAAxC,EAAAiD,MAAAjD,EAAAkB,GAAAxC,GACA6+C,EAAApuD,KAAAmR,EAAA5B,EAAAuB,EAAAvB,IAEAqL,EAAA2gC,kBAAA6S,IAEAC,WAAA,SAAAzzC,GACAA,EAAAwzB,oBAAmCxzB,EAAAmzC,gBAAA,OACvBnzC,EAAA0zC,YAAA,cASZC,eAAA,SAAA3zC,GAAmC,OAAAutB,GAAAvtB,EAAA,WAEnC,IADA,IAAAkgB,EAAAlgB,EAAAmgC,iBAAAS,KACA37C,EAAA,EAAqBA,EAAAi7B,EAAAj1B,OAAmBhG,IACxC,GAAAi7B,EAAAj7B,GAAAm7B,QAAA,CACA,IAAA3mB,EAAAymB,EAAAj7B,GAAAs7B,KAAArnB,EAAAT,GAAAuH,EAAA3V,IAAAoP,EAAAP,MAAAE,KACA,GAAAF,EAEA,GADAO,EAAAtC,IAAA+B,EAAAjO,SAAsCwO,EAAA,IAAAY,GAAAZ,EAAAP,KAAAO,EAAAtC,GAAA,IACtCsC,EAAAtC,GAAA,EACAsC,EAAA,IAAAY,GAAAZ,EAAAP,KAAAO,EAAAtC,GAAA,GACA6I,EAAAu8B,aAAArjC,EAAAlB,OAAAyB,EAAAtC,GAAA,GAAA+B,EAAAlB,OAAAyB,EAAAtC,GAAA,GACAkD,GAAAZ,EAAAP,KAAAO,EAAAtC,GAAA,GAAAsC,EAAA,mBACW,GAAAA,EAAAP,KAAA8G,EAAA3V,IAAAqO,MAAA,CACX,IAAA2I,EAAA5I,GAAAuH,EAAA3V,IAAAoP,EAAAP,KAAA,GAAAE,KACAiI,IACA5H,EAAA,IAAAY,GAAAZ,EAAAP,KAAA,GACA8G,EAAAu8B,aAAArjC,EAAAlB,OAAA,GAAAgI,EAAA3V,IAAAy1C,gBACAz+B,EAAArJ,OAAAqJ,EAAApW,OAAA,GACAoP,GAAAZ,EAAAP,KAAA,EAAAmI,EAAApW,OAAA,GAAAwO,EAAA,eAIAmnC,EAAAx7C,KAAA,IAAAmuC,GAAA95B,MAEAuG,EAAAsgC,cAAAM,MAEAgT,iBAAA,SAAA5zC,GAAqC,OAAAutB,GAAAvtB,EAAA,WAErC,IADA,IAAA6zC,EAAA7zC,EAAAmgC,iBACAl7C,EAAA4uD,EAAA5oD,OAAA,EAAmChG,GAAA,EAAQA,IAClC+a,EAAAu8B,aAAAv8B,EAAA3V,IAAAy1C,gBAAA+T,EAAA5uD,GAAAu5B,OAAAq1B,EAAA5uD,GAAAs7B,KAAA,UACTszB,EAAA7zC,EAAAmgC,iBACA,QAAAtmC,EAAA,EAAuBA,EAAAg6C,EAAA5oD,OAAmB4O,IACjCmG,EAAA8zC,WAAAD,EAAAh6C,GAAA1B,OAAAe,KAAA,SACT+sB,GAAAjmB,MAEA+zC,SAAA,SAAA/zC,GAA6B,OAAAA,EAAAygC,iBAAA,eAC7BuT,gBAAA,SAAAh0C,GAAoC,OAAAA,EAAAg0C,oBAIpC,SAAAprC,GAAA5I,EAAAb,GACA,IAAAjG,EAAAT,GAAAuH,EAAA3V,IAAA8U,GACA8/B,EAAAjgC,GAAA9F,GAEA,OADA+lC,GAAA/lC,IAAyBiG,EAAA3F,GAAAylC,IACzBgM,IAAA,EAAAjrC,EAAAi/B,EAAA9/B,EAAA,GAQA,SAAAmyC,GAAAtxC,EAAA/J,GACA,IAAAnD,EAAA8V,GAAA5I,EAAA/J,EAAAiD,MACAA,EAAAT,GAAAuH,EAAA3V,IAAAyI,EAAAoG,MACAoH,EAAAsC,GAAA1J,EAAA8G,EAAA3V,IAAA4W,WACA,IAAAX,GAAA,GAAAA,EAAA,GAAAU,MAAA,CACA,IAAAizC,EAAA79C,KAAA0E,IAAA,EAAA5B,EAAAE,KAAAtE,OAAA,OACAo/C,EAAAj+C,EAAAiD,MAAApG,EAAAoG,MAAAjD,EAAAkB,IAAA88C,GAAAh+C,EAAAkB,GACA,OAAAkD,GAAAvH,EAAAoG,KAAAg7C,EAAA,EAAAD,EAAAnhD,EAAAwH,QAEA,OAAAxH,EAIA,SAAAqhD,GAAAn0C,EAAAo0C,EAAAC,GACA,oBAAAD,KACAA,EAAA1D,GAAA0D,IACmB,SAInBp0C,EAAAhW,QAAAinB,MAAAqjC,eACA,IAAAC,EAAAv0C,EAAAhW,QAAA85B,MAAAoS,GAAA,EACA,IACAl2B,EAAAokC,eAA4BpkC,EAAAgI,MAAA2yB,eAAA,GAC5B0Z,IAAsBr0C,EAAAhW,QAAA85B,OAAA,GACtBoS,EAAAke,EAAAp0C,IAAAvK,EACK,QACLuK,EAAAhW,QAAA85B,MAAAywB,EACAv0C,EAAAgI,MAAA2yB,eAAA,EAEA,OAAAzE,EAeA,IAAAse,GAAA,IAAAr/C,EAEA,SAAAs/C,GAAAz0C,EAAArZ,EAAAqC,EAAA+zC,GACA,IAAA2X,EAAA10C,EAAAgI,MAAA2sC,OACA,GAAAD,EAAA,CACA,GAAAzK,GAAAtjD,GAAgC,gBAUhC,GATA,MAAAkI,KAAAlI,GACSqZ,EAAAgI,MAAA2sC,OAAA,KAEAH,GAAAn/C,IAAA,cACT2K,EAAAgI,MAAA2sC,QAAAD,IACA10C,EAAAgI,MAAA2sC,OAAA,KACA30C,EAAAhW,QAAAinB,MAAA2S,WAGAgxB,GAAA50C,EAAA00C,EAAA,IAAA/tD,EAAAqC,EAAA+zC,GAA8D,SAE9D,OAAA6X,GAAA50C,EAAArZ,EAAAqC,EAAA+zC,GAGA,SAAA6X,GAAA50C,EAAArZ,EAAAqC,EAAA+zC,GACA,IAAA72B,EAjCA,SAAAlG,EAAArZ,EAAAo2C,GACA,QAAA93C,EAAA,EAAmBA,EAAA+a,EAAAgI,MAAA6sC,QAAA5pD,OAA6BhG,IAAA,CAChD,IAAAihB,EAAA4jC,GAAAnjD,EAAAqZ,EAAAgI,MAAA6sC,QAAA5vD,GAAA83C,EAAA/8B,GACA,GAAAkG,EAAmB,OAAAA,EAEnB,OAAAlG,EAAA9F,QAAA46C,WAAAhL,GAAAnjD,EAAAqZ,EAAA9F,QAAA46C,UAAA/X,EAAA/8B,IACA8pC,GAAAnjD,EAAAqZ,EAAA9F,QAAAmvC,OAAAtM,EAAA/8B,GA2BA+0C,CAAA/0C,EAAArZ,EAAAo2C,GAYA,MAVA,SAAA72B,IACOlG,EAAAgI,MAAA2sC,OAAAhuD,GACP,WAAAuf,GACOoM,GAAAtS,EAAA,aAAAA,EAAArZ,EAAAqC,GAEP,WAAAkd,GAAA,SAAAA,IACA5B,GAAAtb,GACA45B,GAAA5iB,MAGAkG,EAIA,SAAA8uC,GAAAh1C,EAAAhX,GACA,IAAArC,EAAA6jD,GAAAxhD,GAAA,GACA,QAAArC,IAEAqC,EAAAuhD,WAAAvqC,EAAAgI,MAAA2sC,OAIAF,GAAAz0C,EAAA,SAAArZ,EAAAqC,EAAA,SAAA2J,GAA+D,OAAAwhD,GAAAn0C,EAAArN,GAAA,MAC/D8hD,GAAAz0C,EAAArZ,EAAAqC,EAAA,SAAA2J,GACA,oBAAAA,EAAA,WAAA9D,KAAA8D,KAAAsiD,OACkB,OAAAd,GAAAn0C,EAAArN,KAGlB8hD,GAAAz0C,EAAArZ,EAAAqC,EAAA,SAAA2J,GAAoD,OAAAwhD,GAAAn0C,EAAArN,MASpD,IAAAuiD,GAAA,KACA,SAAAC,GAAAnsD,GACA,IAAAgX,EAAAxa,KAEA,GADAwa,EAAAiE,MAAAof,MAAA/wB,KACAmR,GAAAzD,EAAAhX,GAAA,CAEAkG,GAAAC,EAAA,QAAAnG,EAAAkhD,UAAmDlhD,EAAAub,aAAA,GACnD,IAAApD,EAAAnY,EAAAkhD,QACAlqC,EAAAhW,QAAA85B,MAAA,IAAA3iB,GAAAnY,EAAAuhD,SACA,IAAA6K,EAAAJ,GAAAh1C,EAAAhX,GACAyG,IACAylD,GAAAE,EAAAj0C,EAAA,MAEAi0C,GAAA,IAAAj0C,IAAA2F,KAAA7W,EAAAjH,EAAAshD,QAAAthD,EAAAic,UACSjF,EAAAygC,iBAAA,gBAIT,IAAAt/B,GAAA,2BAAAtS,KAAAmR,EAAAhW,QAAAi6B,QAAAl2B,YAIA,SAAAiS,GACA,IAAAikB,EAAAjkB,EAAAhW,QAAAi6B,QAGA,SAAAoxB,EAAArsD,GACA,IAAAA,EAAAkhD,SAAAlhD,EAAAqhD,SACAx5C,EAAAozB,EAAA,wBACAv4B,GAAA0D,SAAA,QAAAimD,GACA3pD,GAAA0D,SAAA,YAAAimD,IANAnnD,EAAA+1B,EAAA,wBASA15B,GAAA6E,SAAA,QAAAimD,GACA9qD,GAAA6E,SAAA,YAAAimD,GAfOC,CAAAt1C,IAkBP,SAAAu1C,GAAAvsD,GACA,IAAAA,EAAAkhD,UAA0B1kD,KAAA6E,IAAA41B,IAAA6D,OAAA,GAC1BrgB,GAAAje,KAAAwD,GAGA,SAAAwsD,GAAAxsD,GACA,IAAAgX,EAAAxa,KACA,KAAA0wB,GAAAlW,EAAAhW,QAAAhB,IAAAya,GAAAzD,EAAAhX,MAAAic,UAAAjc,EAAAqhD,QAAAp6C,GAAAjH,EAAAshD,SAAA,CACA,IAAAJ,EAAAlhD,EAAAkhD,QAAAuL,EAAAzsD,EAAAysD,SACA,GAAAhmD,GAAAy6C,GAAAgL,GAAyF,OAA3CA,GAAA,UAAsB5wC,GAAAtb,GACpE,IAAAyG,GAAAzG,EAAA+b,SAAA/b,EAAA+b,MAAA,MAAAiwC,GAAAh1C,EAAAhX,GAAA,CACA,IAAAmO,EAAAzJ,OAAA07C,aAAA,MAAAqM,EAAAvL,EAAAuL,GAEA,MAAAt+C,IAtDA,SAAA6I,EAAAhX,EAAAmO,GACA,OAAAs9C,GAAAz0C,EAAA,IAAA7I,EAAA,IAAAnO,EAAA,SAAA2J,GAA4D,OAAAwhD,GAAAn0C,EAAArN,GAAA,KAsD5D+iD,CAAA11C,EAAAhX,EAAAmO,IACA6I,EAAAhW,QAAAinB,MAAAukC,WAAAxsD,MAGA,IAaA2sD,GAAAC,GAXAC,GAAA,SAAApnB,EAAAx4B,EAAA+O,GACAxf,KAAAipC,OACAjpC,KAAAyQ,MACAzQ,KAAAwf,UA8BA,SAAA8wC,GAAA9sD,GACA,IAAAgX,EAAAxa,KAAAwE,EAAAgW,EAAAhW,QACA,KAAAyZ,GAAAzD,EAAAhX,IAAAgB,EAAA+rD,aAAA/rD,EAAAinB,MAAA+kC,iBAIA,GAHAhsD,EAAAinB,MAAAqjC,eACAtqD,EAAA85B,MAAA96B,EAAAuhD,SAEAr0B,GAAAlsB,EAAAhB,GACAsG,IAGAtF,EAAAmtB,SAAA8+B,WAAA,EACAttD,WAAA,WAAgC,OAAAqB,EAAAmtB,SAAA8+B,WAAA,GAA4C,WAI5E,IAAAC,GAAAl2C,EAAAhX,GAAA,CACA,IAAAiN,EAAAipB,GAAAlf,EAAAhX,GAAAgc,EAAAF,GAAA9b,GAAAmtD,EAAAlgD,EArCA,SAAAA,EAAA+O,GACA,IAAAoxC,GAAA,IAAAxnB,KACA,OAAAgnB,OAAAS,QAAAD,EAAAngD,EAAA+O,IACA2wC,GAAAC,GAAA,KACA,UACKD,OAAAU,QAAAD,EAAAngD,EAAA+O,IACL4wC,GAAA,IAAAC,GAAAO,EAAAngD,EAAA+O,GACA2wC,GAAA,KACA,WAEAA,GAAA,IAAAE,GAAAO,EAAAngD,EAAA+O,GACA4wC,GAAA,KACA,UAyBAU,CAAArgD,EAAA+O,GAAA,SACAsB,OAAA+c,QAGA,GAAAre,GAAAhF,EAAAgI,MAAAuuC,eACOv2C,EAAAgI,MAAAuuC,cAAAvtD,GAEPiN,GAcA,SAAA+J,EAAAgF,EAAA/O,EAAAkgD,EAAA1d,GACA,IAAA9xC,EAAA,QACA,UAAAwvD,EAA6BxvD,EAAA,SAAAA,EAC7B,UAAAwvD,IAAkCxvD,EAAA,SAAAA,GAGlC,OAAA8tD,GAAAz0C,EAAAmqC,GAFAxjD,GAAA,GAAAqe,EAAA,UAAAA,EAAA,kBAAAre,EAEA8xC,KAAA,SAAA2b,GAEA,GADA,iBAAAA,IAAqCA,EAAA1D,GAAA0D,KACrCA,EAAmB,SACnB,IAAAle,GAAA,EACA,IACAl2B,EAAAokC,eAA8BpkC,EAAAgI,MAAA2yB,eAAA,GAC9BzE,EAAAke,EAAAp0C,EAAA/J,IAAAR,EACO,QACPuK,EAAAgI,MAAA2yB,eAAA,EAEA,OAAAzE,IA9BAsgB,CAAAx2C,EAAAgF,EAAA/O,EAAAkgD,EAAAntD,KAEA,GAAAgc,EACA/O,EA4CA,SAAA+J,EAAA/J,EAAAkgD,EAAA1d,GACAvpC,EAAavG,WAAAgL,EAAAyvB,GAAApjB,GAAA,GACHA,EAAAiE,MAAAof,MAAA/wB,IAEV,IAEAmkD,EAFAC,EAjBA,SAAA12C,EAAAm2C,EAAA1d,GACA,IAAAke,EAAA32C,EAAAgP,UAAA,kBACA/qB,EAAA0yD,IAAA32C,EAAAm2C,EAAA1d,MACA,SAAAx0C,EAAA2yD,KAAA,CACA,IAAAz+B,EAAAjoB,EAAAuoC,EAAA8R,UAAA9R,EAAA6R,QAAA7R,EAAA4R,OACApmD,EAAA2yD,KAAAz+B,EAAA,sBAAAg+B,EAAA,iBAAAA,EAAA,eAEA,MAAAlyD,EAAAqsC,QAAAtwB,EAAA3V,IAAAimC,UAAgDrsC,EAAAqsC,OAAAtwB,EAAA3V,IAAAimC,QAAAmI,EAAA8R,UAChD,MAAAtmD,EAAA4yD,SAA+B5yD,EAAA4yD,OAAA5mD,EAAAwoC,EAAA6R,QAAA7R,EAAAxzB,SAC/B,MAAAhhB,EAAA6yD,aAAmC7yD,EAAA6yD,aAAA7mD,EAAAwoC,EAAA4R,OAAA5R,EAAAxzB,UACnC,OAAAhhB,EAOA8yD,CAAA/2C,EAAAm2C,EAAA1d,GAEAxY,EAAAjgB,EAAA3V,IAAA41B,IACAjgB,EAAA9F,QAAA88C,UAAA5xC,KAAApF,EAAAokC,cACA,UAAA+R,IAAAM,EAAAx2B,EAAAhuB,SAAAgE,KAAA,IACAsE,IAAAk8C,EAAAx2B,EAAAC,OAAAu2B,IAAAt+C,OAAAlC,GAAA,GAAAA,EAAAgnB,KAAA,KACA1iB,GAAAk8C,EAAAr+C,KAAAnC,GAAA,GAAAA,EAAAgnB,KAAA,GAQA,SAAAjd,EAAAy4B,EAAAxiC,EAAAygD,GACA,IAAA1sD,EAAAgW,EAAAhW,QAAAitD,GAAA,EACAC,EAAA1pB,GAAAxtB,EAAA,SAAAhX,GACAsG,IAAmBtF,EAAAmtB,SAAA8+B,WAAA,GACnBj2C,EAAAgI,MAAA68B,cAAA,EACAn5C,GAAA1B,EAAAC,QAAAyc,cAAA,UAAAwwC,GACAxrD,GAAA1B,EAAAC,QAAAyc,cAAA,YAAAywC,GACAzrD,GAAA1B,EAAAmtB,SAAA,YAAAigC,GACA1rD,GAAA1B,EAAAmtB,SAAA,OAAA+/B,GACAD,IACA3yC,GAAAtb,GACA0tD,EAAAG,QACWhe,GAAA74B,EAAA3V,IAAA4L,EAAA,UAAAygD,EAAApmB,QAEXhhC,GAAAJ,GAAA,GAAAC,EACWxG,WAAA,WAAyBqB,EAAAC,QAAAyc,cAAAlU,KAAA6wB,QAA2Cr5B,EAAAinB,MAAAoS,SAAwB,IAE5Fr5B,EAAAinB,MAAAoS,WAGX8zB,EAAA,SAAAE,GACAJ,KAAA7gD,KAAAyiB,IAAA4f,EAAAnZ,QAAA+3B,EAAA/3B,SAAAlpB,KAAAyiB,IAAA4f,EAAAlZ,QAAA83B,EAAA93B,UAAA,IAEA63B,EAAA,WAAiC,OAAAH,GAAA,GAEjC3nD,IAAiBtF,EAAAmtB,SAAA8+B,WAAA,GACjBj2C,EAAAgI,MAAA68B,aAAAqS,EACAA,EAAA5pC,MAAAopC,EAAAI,WAEA9sD,EAAAmtB,SAAA6/B,UAAoChtD,EAAAmtB,SAAA6/B,WACpCzsD,GAAAP,EAAAC,QAAAyc,cAAA,UAAAwwC,GACA3sD,GAAAP,EAAAC,QAAAyc,cAAA,YAAAywC,GACA5sD,GAAAP,EAAAmtB,SAAA,YAAAigC,GACA7sD,GAAAP,EAAAmtB,SAAA,OAAA+/B,GAEA3zB,GAAAvjB,GACArX,WAAA,WAA4B,OAAAqB,EAAAinB,MAAAoS,SAAgC,IA3CrDi0B,CAAAt3C,EAAAy4B,EAAAxiC,EAAAygD,GAuDP,SAAA12C,EAAAy4B,EAAA3lC,EAAA4jD,GACA,IAAA1sD,EAAAgW,EAAAhW,QAAAK,EAAA2V,EAAA3V,IACAia,GAAAm0B,GAEA,IAAA8e,EAAAC,EAAAC,EAAAptD,EAAA41B,IAAAC,EAAAu3B,EAAAv3B,OACAw2B,EAAAG,SAAAH,EAAApmB,QACAknB,EAAAntD,EAAA41B,IAAAhuB,SAAAa,GAESykD,EADTC,GAAA,EACSt3B,EAAAs3B,GAEA,IAAAjkB,GAAAzgC,OAETykD,EAAAltD,EAAA41B,IAAAJ,UACA23B,EAAAntD,EAAA41B,IAAAE,WAGA,gBAAAu2B,EAAAE,KACAF,EAAAG,SAA6BU,EAAA,IAAAhkB,GAAAzgC,MAC7BA,EAAAosB,GAAAlf,EAAAy4B,GAAA,MACA+e,GAAA,MACK,CACL,IAAA/wC,EAAAixC,GAAA13C,EAAAlN,EAAA4jD,EAAAE,MAESW,EADTb,EAAApmB,OACSqI,GAAA4e,EAAA9wC,EAAA+X,OAAA/X,EAAA8Z,KAAAm2B,EAAApmB,QAEA7pB,EAGTiwC,EAAAG,QAIK,GAAAW,GACLA,EAAAt3B,EAAAj1B,OACA6tC,GAAAzuC,EAAAopC,GAAAzzB,EAAAkgB,EAAA/c,QAAAo0C,IAAAC,IACoBrtD,QAAA,EAAA0L,OAAA,YACfqqB,EAAAj1B,OAAA,GAAAi1B,EAAAs3B,GAAAp3B,SAAA,QAAAs2B,EAAAE,OAAAF,EAAApmB,QACLwI,GAAAzuC,EAAAopC,GAAAzzB,EAAAkgB,EAAAjvB,MAAA,EAAAumD,GAAAr0C,OAAA+c,EAAAjvB,MAAAumD,EAAA,QACoBrtD,QAAA,EAAA0L,OAAA,WACpB4hD,EAAAptD,EAAA41B,KAEAgZ,GAAA5uC,EAAAmtD,EAAAD,EAAA3hD,IAZA4hD,EAAA,EACA1e,GAAAzuC,EAAA,IAAA6oC,IAAAqkB,GAAA,GAAA3hD,GACA6hD,EAAAptD,EAAA41B,KAaA,IAAA03B,EAAA7kD,EACA,SAAA8kD,EAAA3hD,GACA,MAAAsE,GAAAo9C,EAAA1hD,GAGA,GAFA0hD,EAAA1hD,EAEA,aAAAygD,EAAAE,KAAA,CAKA,IAJA,IAAA12B,KAAAvrB,EAAAqL,EAAA9F,QAAAvF,QACAkjD,EAAApjD,EAAAgE,GAAApO,EAAAyI,EAAAoG,MAAAE,KAAAtG,EAAAqE,GAAAxC,GACAmjD,EAAArjD,EAAAgE,GAAApO,EAAA4L,EAAAiD,MAAAE,KAAAnD,EAAAkB,GAAAxC,GACAoR,EAAA3P,KAAAC,IAAAwhD,EAAAC,GAAA9xC,EAAA5P,KAAA0E,IAAA+8C,EAAAC,GACA5+C,EAAA9C,KAAAC,IAAAvD,EAAAoG,KAAAjD,EAAAiD,MAAAnG,EAAAqD,KAAAC,IAAA2J,EAAAV,WAAAlJ,KAAA0E,IAAAhI,EAAAoG,KAAAjD,EAAAiD,OACAA,GAAAnG,EAAyBmG,IAAA,CACzB,IAAAE,EAAAX,GAAApO,EAAA6O,GAAAE,KAAA2+C,EAAAhiD,EAAAqD,EAAA2M,EAAApR,GACAoR,GAAAC,EACaka,EAAA96B,KAAA,IAAAmuC,GAAAl5B,GAAAnB,EAAA6+C,GAAA19C,GAAAnB,EAAA6+C,KACb3+C,EAAAnO,OAAA8sD,GACa73B,EAAA96B,KAAA,IAAAmuC,GAAAl5B,GAAAnB,EAAA6+C,GAAA19C,GAAAnB,EAAAnD,EAAAqD,EAAA4M,EAAArR,MAEburB,EAAAj1B,QAA6Bi1B,EAAA96B,KAAA,IAAAmuC,GAAAzgC,MAC7BgmC,GAAAzuC,EAAAopC,GAAAzzB,EAAAy3C,EAAAv3B,OAAAjvB,MAAA,EAAAumD,GAAAr0C,OAAA+c,GAAAs3B,IACsB3hD,OAAA,SAAA1L,QAAA,IACtB6V,EAAA2sB,eAAA12B,OACO,CACP,IAEAsqB,EAFAy3B,EAAAT,EACA9wC,EAAAixC,GAAA13C,EAAA/J,EAAAygD,EAAAE,MACAp4B,EAAAw5B,EAAAx5B,OACAjkB,GAAAkM,EAAA+X,UAAA,GACA+B,EAAA9Z,EAAA8Z,KACA/B,EAAA5jB,GAAAo9C,EAAA7/C,OAAAsO,EAAA+X,UAEA+B,EAAA9Z,EAAA+X,OACAA,EAAA7jB,GAAAq9C,EAAA5/C,KAAAqO,EAAA8Z,OAEA,IAAA03B,EAAAR,EAAAv3B,OAAAjvB,MAAA,GACAgnD,EAAAT,GAsDA,SAAAx3C,EAAAyG,GACA,IAAA+X,EAAA/X,EAAA+X,OACA+B,EAAA9Z,EAAA8Z,KACA23B,EAAAz/C,GAAAuH,EAAA3V,IAAAm0B,EAAAtlB,MACA,MAAAqB,GAAAikB,EAAA+B,IAAA/B,EAAAlkB,QAAAimB,EAAAjmB,OAAiE,OAAAmM,EACjE,IAAAnG,EAAAsC,GAAAs1C,GACA,IAAA53C,EAAiB,OAAAmG,EACjB,IAAA5Y,EAAAwS,GAAAC,EAAAke,EAAArnB,GAAAqnB,EAAAlkB,QAAAuW,EAAAvQ,EAAAzS,GACA,GAAAgjB,EAAA1Y,MAAAqmB,EAAArnB,IAAA0Z,EAAAzY,IAAAomB,EAAArnB,GAAyD,OAAAsP,EACzD,IAKAsa,EALAo3B,EAAAtqD,GAAAgjB,EAAA1Y,MAAAqmB,EAAArnB,KAAA,GAAA0Z,EAAA7P,OAAA,KACA,MAAAm3C,MAAA73C,EAAArV,OAAoD,OAAAwb,EAKpD,GAAA8Z,EAAArnB,MAAAslB,EAAAtlB,KACA6nB,GAAAR,EAAArnB,KAAAslB,EAAAtlB,OAAA,OAAA8G,EAAA3V,IAAA4W,UAAA,YACK,CACL,IAAAm3C,EAAA/3C,GAAAC,EAAAigB,EAAAppB,GAAAopB,EAAAjmB,QACAvC,EAAAqgD,EAAAvqD,IAAA0yB,EAAAppB,GAAAqnB,EAAArnB,KAAA,GAAA0Z,EAAA7P,OAAA,KAES+f,EADTq3B,GAAAD,EAAA,GAAAC,GAAAD,EACSpgD,EAAA,EAEAA,EAAA,EAGT,IAAAsgD,EAAA/3C,EAAA63C,GAAAp3B,GAAA,MACA5oB,EAAA4oB,IAAA,GAAAs3B,EAAAr3C,OACA7J,EAAAgB,EAAAkgD,EAAAlgD,KAAAkgD,EAAAjgD,GAAAkC,EAAAnC,EAAA,iBACA,OAAAqmB,EAAArnB,OAAAqnB,EAAAlkB,UAAAmM,EAAA,IAAA8sB,GAAA,IAAAl5B,GAAAmkB,EAAAtlB,KAAA/B,EAAAmD,GAAAimB,GAnFA+3B,CAAAt4C,EAAA,IAAAuzB,GAAAx4B,GAAA1Q,EAAAm0B,GAAA+B,IACAuY,GAAAzuC,EAAAopC,GAAAzzB,EAAAi4C,EAAAT,GAAA5hD,IAIA,IAAA2iD,EAAAvuD,EAAAC,QAAA4b,wBAKA2yC,EAAA,EAsBA,SAAAtiB,EAAAltC,GACAgX,EAAAgI,MAAAuuC,eAAA,EACAiC,EAAA/mC,IACAnN,GAAAtb,GACAgB,EAAAinB,MAAAoS,QACA33B,GAAA1B,EAAAC,QAAAyc,cAAA,YAAA+xC,GACA/sD,GAAA1B,EAAAC,QAAAyc,cAAA,UAAA2uC,GACAhrD,EAAAitC,QAAAZ,cAAA,KAGA,IAAA+hB,EAAAjrB,GAAAxtB,EAAA,SAAAhX,GACA,IAAAA,EAAA0vD,SAAA5zC,GAAA9b,GA/BA,SAAAsnC,EAAAtnC,GACA,IAAA2vD,IAAAH,EACA,IAAA/+C,EAAAylB,GAAAlf,EAAAhX,GAAA,eAAA0tD,EAAAE,MACA,IAAAn9C,EAAiB,OACjB,MAAAc,GAAAd,EAAAk+C,GAAA,CACA33C,EAAAiE,MAAAof,MAAA/wB,IACAslD,EAAAn+C,GACA,IAAA61B,EAAAjL,GAAAr6B,EAAAK,IACAoP,EAAAP,MAAAo2B,EAAAl3B,IAAAqB,EAAAP,KAAAo2B,EAAAn3B,OACWxP,WAAA6kC,GAAAxtB,EAAA,WAAuCw4C,GAAAG,GAA0BroB,EAAAtnC,KAAc,SACnF,CACP,IAAAg0B,EAAAh0B,EAAAu2B,QAAAg5B,EAAAx/B,KAAA,GAAA/vB,EAAAu2B,QAAAg5B,EAAAz/B,OAAA,KACAkE,GAAsBr0B,WAAA6kC,GAAAxtB,EAAA,WACtBw4C,GAAAG,IACA3uD,EAAAmtB,SAAAtuB,WAAAm0B,EACAsT,EAAAtnC,MACS,KAgBGsnC,CAAAtnC,GADgCktC,EAAAltC,KAG5CqsD,EAAA7nB,GAAAxtB,EAAAk2B,GACAl2B,EAAAgI,MAAAuuC,cAAAlB,EACA9qD,GAAAP,EAAAC,QAAAyc,cAAA,YAAA+xC,GACAluD,GAAAP,EAAAC,QAAAyc,cAAA,UAAA2uC,GApLOuD,CAAA54C,EAAAy4B,EAAAxiC,EAAAygD,GAzDSmC,CAAA74C,EAAA/J,EAAAkgD,EAAAntD,GAChB4b,GAAA5b,IAAAgB,EAAAmtB,UAAiD7S,GAAAtb,GAC5C,GAAAgc,GACL/O,GAAgB4iC,GAAA74B,EAAA3V,IAAA4L,GAChBtN,WAAA,WAA8B,OAAAqB,EAAAinB,MAAAoS,SAAgC,KACzD,GAAAre,IACLxU,EAA8BwP,EAAAhW,QAAAinB,MAAA6nC,cAAA9vD,GAClBu6B,GAAAvjB,MA8FZ,SAAA03C,GAAA13C,EAAA/J,EAAA2gD,GACA,WAAAA,EAAyB,WAAArjB,GAAAt9B,KACzB,WAAA2gD,EAAyB,OAAA52C,EAAA+4C,WAAA9iD,GACzB,WAAA2gD,EAAyB,WAAArjB,GAAAl5B,GAAApE,EAAAiD,KAAA,GAAA6B,GAAAiF,EAAA3V,IAAAgQ,GAAApE,EAAAiD,KAAA,OACzB,IAAAgN,EAAA0wC,EAAA52C,EAAA/J,GACA,WAAAs9B,GAAArtB,EAAA/N,KAAA+N,EAAA9N,IA2KA,SAAA4gD,GAAAh5C,EAAAhX,EAAA0D,EAAAusD,GACA,IAAAC,EAAAC,EACA,GAAAnwD,EAAAowD,QACAF,EAAAlwD,EAAAowD,QAAA,GAAA95B,QACA65B,EAAAnwD,EAAAowD,QAAA,GAAA75B,aAEA,IAAW25B,EAAAlwD,EAAAs2B,QAAgB65B,EAAAnwD,EAAAu2B,QAC3B,MAAAv2B,GAAgB,SAEhB,GAAAkwD,GAAA9iD,KAAAoC,MAAAwH,EAAAhW,QAAA2qB,QAAA9O,wBAAAG,OAA6E,SAC7EizC,GAAkB30C,GAAAtb,GAElB,IAAAgB,EAAAgW,EAAAhW,QACAqvD,EAAArvD,EAAAi6B,QAAApe,wBAEA,GAAAszC,EAAAE,EAAAvgC,SAAA3U,GAAAnE,EAAAtT,GAAuD,OAAAmX,GAAA7a,GACvDmwD,GAAAE,EAAAtgC,IAAA/uB,EAAA+xB,WAEA,QAAA92B,EAAA,EAAmBA,EAAA+a,EAAA9F,QAAAya,QAAA1pB,SAA+BhG,EAAA,CAClD,IAAAq0D,EAAAtvD,EAAA2qB,QAAAvjB,WAAAnM,GACA,GAAAq0D,KAAAzzC,wBAAAG,OAAAkzC,EAIA,OADA31C,GAAAvD,EAAAtT,EAAAsT,EAFArG,GAAAqG,EAAA3V,IAAA8uD,GACAn5C,EAAA9F,QAAAya,QAAA1vB,GACA+D,GACA6a,GAAA7a,IAKA,SAAAktD,GAAAl2C,EAAAhX,GACA,OAAAgwD,GAAAh5C,EAAAhX,EAAA,kBAQA,SAAA8vD,GAAA94C,EAAAhX,GACAktB,GAAAlW,EAAAhW,QAAAhB,IAKA,SAAAgX,EAAAhX,GACA,IAAAmb,GAAAnE,EAAA,qBAA+C,SAC/C,OAAAg5C,GAAAh5C,EAAAhX,EAAA,wBAPAuwD,CAAAv5C,EAAAhX,IACAya,GAAAzD,EAAAhX,EAAA,gBACAwH,GAA6BwP,EAAAhW,QAAAinB,MAAA6nC,cAAA9vD,GAQ7B,SAAAwwD,GAAAx5C,GACAA,EAAAhW,QAAAC,QAAA8D,UAAAiS,EAAAhW,QAAAC,QAAA8D,UAAA4T,QAAA,mBACA3B,EAAA9F,QAAAu/C,MAAA93C,QAAA,uBACAsZ,GAAAjb,GA9XA61C,GAAA9hD,UAAAsiD,QAAA,SAAA5nB,EAAAx4B,EAAA+O,GACA,OAAAxf,KAAAipC,KATA,IASAA,GACA,GAAAl0B,GAAAtE,EAAAzQ,KAAAyQ,MAAA+O,GAAAxf,KAAAwf,QA+XA,IAAA00C,IAAchkD,SAAA,WAAqB,0BAEnCikD,MACAC,MA4IA,SAAAC,GAAA75C,GACAwxB,GAAAxxB,GACA2tB,GAAA3tB,GACA0kB,GAAA1kB,GAGA,SAAA85C,GAAA95C,EAAA/b,EAAAoY,GAEA,IAAApY,KADAoY,MAAAq9C,IACA,CACA,IAAAK,EAAA/5C,EAAAhW,QAAAgwD,cACAC,EAAAh2D,EAAAsG,GAAAmB,GACAuuD,EAAAj6C,EAAAhW,QAAAmtB,SAAA,YAAA4iC,EAAAjnD,OACAmnD,EAAAj6C,EAAAhW,QAAAmtB,SAAA,YAAA4iC,EAAAG,OACAD,EAAAj6C,EAAAhW,QAAAmtB,SAAA,WAAA4iC,EAAAI,MACAF,EAAAj6C,EAAAhW,QAAAmtB,SAAA,YAAA4iC,EAAAK,OACAH,EAAAj6C,EAAAhW,QAAAmtB,SAAA,OAAA4iC,EAAAM,OAIA,SAAAC,GAAAt6C,GACAA,EAAA9F,QAAAse,cACAtqB,EAAA8R,EAAAhW,QAAAC,QAAA,mBACA+V,EAAAhW,QAAAosB,MAAAlsB,MAAA49B,SAAA,GACA9nB,EAAAhW,QAAAi3B,WAAA,OAEApwB,EAAAmP,EAAAhW,QAAAC,QAAA,mBACA8V,GAAAC,IAEA+e,GAAA/e,GACA2tB,GAAA3tB,GACAib,GAAAjb,GACArX,WAAA,WAA4B,OAAAogC,GAAA/oB,IAA+B,KAM3D,SAAAyjC,GAAAxqB,EAAA/e,GACA,IAAA+jC,EAAAz4C,KAEA,KAAAA,gBAAAi+C,IAAwC,WAAAA,GAAAxqB,EAAA/e,GAExC1U,KAAA0U,YAAA/F,EAAA+F,MAEA/F,EAAAwlD,GAAAz/C,GAAA,GACAy3B,GAAAz3B,GAEA,IAAA7P,EAAA6P,EAAAjW,MACA,iBAAAoG,EAAiCA,EAAA,IAAAm1C,GAAAn1C,EAAA6P,EAAAjT,KAAA,KAAAiT,EAAA4lC,cAAA5lC,EAAA+G,WACjC/G,EAAAjT,OAA4BoD,EAAAgqC,WAAAn6B,EAAAjT,MAC5BzB,KAAA6E,MAEA,IAAA4mB,EAAA,IAAAwyB,GAAA8W,YAAArgD,EAAAsgD,YAAAh1D,MACAwE,EAAAxE,KAAAwE,QAAA,IAv2OA,SAAAivB,EAAA5uB,EAAA4mB,GACA,IAAAzsB,EAAAgB,KACAA,KAAAyrB,QAGAzsB,EAAA+kC,gBAAA73B,EAAA,0CACAlN,EAAA+kC,gBAAAv3B,aAAA,yBAGAxN,EAAAilC,aAAA/3B,EAAA,uCACAlN,EAAAilC,aAAAz3B,aAAA,yBAEAxN,EAAAy/B,QAAAlyB,EAAA,8BAEAvN,EAAA6sC,aAAA3/B,EAAA,kDACAlN,EAAAw+B,UAAAtxB,EAAA,iCAEAlN,EAAA+gB,QAAA7T,EAAA,iCAEAlN,EAAAyzB,YAAAvmB,EAAA,iCAEAlN,EAAA+xB,UAAAxkB,EAAA,OAAAvN,EAAA+gB,QAAA/gB,EAAAyzB,YAAAzzB,EAAA6sC,aAAA7sC,EAAAw+B,UAAAx+B,EAAAy/B,SACA,0CACA,IAAAprB,EAAA9G,EAAA,OAAAvN,EAAA+xB,WAAA,oBAEA/xB,EAAA6xB,MAAA3kB,EAAA,OAAAmH,GAAA,2BAEArU,EAAA4xB,MAAA1kB,EAAA,OAAAlN,EAAA6xB,OAAA,oBACA7xB,EAAAy8B,WAAA,KAIAz8B,EAAA6kC,aAAA33B,EAAA,+CAAgE8D,EAAA,mBAEhEhR,EAAAmwB,QAAAjjB,EAAA,iCACAlN,EAAAygC,WAAA,KAEAzgC,EAAA2yB,SAAAzlB,EAAA,OAAAlN,EAAA4xB,MAAA5xB,EAAA6kC,aAAA7kC,EAAAmwB,SAAA,qBACAnwB,EAAA2yB,SAAAnlB,aAAA,iBAEAxN,EAAAyF,QAAAyH,EAAA,OAAAlN,EAAA+kC,gBAAA/kC,EAAAilC,aAAAjlC,EAAA2yB,UAAA,cAGAjoB,GAAAC,EAAA,IAA+B3K,EAAAmwB,QAAAzqB,MAAAkpB,QAAA,EAA6B5uB,EAAA2yB,SAAAjtB,MAAA4sB,aAAA,GAC5DxnB,GAAAV,GAAAoB,IAAwCxL,EAAA2yB,SAAA8+B,WAAA,GAExCh9B,IACAA,EAAAxnB,YAA8BwnB,EAAAxnB,YAAAjN,EAAAyF,SAClBgvB,EAAAz0B,EAAAyF,UAIZzF,EAAAqoB,SAAAroB,EAAAsoB,OAAAziB,EAAAqO,MACAlU,EAAA8sC,iBAAA9sC,EAAA+sC,eAAAlnC,EAAAqO,MAEAlU,EAAA2tB,QACA3tB,EAAAmrC,aAAA,KAGAnrC,EAAA8qB,iBAAA,KAEA9qB,EAAAu3B,WAAA,EACAv3B,EAAAsrC,eAAAtrC,EAAAurC,cAAA,EACAvrC,EAAAqpC,kBAAA,KAEArpC,EAAAyyB,eAAAzyB,EAAA+yB,UAAA/yB,EAAA4yB,SAAA,EACA5yB,EAAAknC,mBAAA,EAIAlnC,EAAA2gC,aAAA3gC,EAAA0gC,kBAAA1gC,EAAA42B,aAAA,KAIA52B,EAAAmgC,cAAA,EAEAngC,EAAA02B,gBAAA12B,EAAA22B,iBAAA32B,EAAAmyB,eAAA,KAIAnyB,EAAAyb,QAAA,KACAzb,EAAA0b,cAAA,EACA1b,EAAA2b,gBAAA,EAGA3b,EAAAquC,QAAAruC,EAAAsuC,QAAAtuC,EAAA8nC,YAAA9nC,EAAA+nC,YAAA,KAGA/nC,EAAAs/B,OAAA,EAIAt/B,EAAAm/B,kBAAA,KAEAn/B,EAAAuxD,YAAA,KAEA9kC,EAAAwpC,KAAAj2D,GAuwOA,CAAAy0B,EAAA5uB,EAAA4mB,GA0CA,QAAA8sB,KAzCA/zC,EAAAC,QAAAw5C,WAAAj+C,KACAgsC,GAAAhsC,MACAg0D,GAAAh0D,MACA0U,EAAAse,eACOhzB,KAAAwE,QAAAC,QAAA8D,WAAA,oBACP87B,GAAArkC,MAEAA,KAAAwiB,OACA6sC,WACA1pC,YACAN,QAAA,EACAvW,WAAA,EACAkvB,mBAAA,EACAX,SAAA,EACA8X,eAAA,EACA+f,eAAA,EAAAC,aAAA,EACApE,eAAA,EACA1R,cAAA,EACAnW,UAAA,IAAAv5B,EACAw/C,OAAA,KACAvkC,aAAA,MAGAlW,EAAA0gD,YAAA5qD,GAAuChG,EAAAinB,MAAAoS,QAIvCn0B,GAAAC,EAAA,IAAgCxG,WAAA,WAAyB,OAAAs1C,EAAAj0C,QAAAinB,MAAA2S,OAAA,IAA2C,IAiCpG,SAAA5jB,GACA,IAAAxb,EAAAwb,EAAAhW,QACAO,GAAA/F,EAAA2yB,SAAA,YAAAqW,GAAAxtB,EAAA81C,KAGOvrD,GAAA/F,EAAA2yB,SAAA,WADPjoB,GAAAC,EAAA,GACOq+B,GAAAxtB,EAAA,SAAAhX,GACP,IAAAya,GAAAzD,EAAAhX,GAAA,CACA,IAAAiN,EAAAipB,GAAAlf,EAAAhX,GACA,GAAAiN,IAAAigD,GAAAl2C,EAAAhX,KAAAktB,GAAAlW,EAAAhW,QAAAhB,GAAA,CACAsb,GAAAtb,GACA,IAAA6xD,EAAA76C,EAAA+4C,WAAA9iD,GACA4iC,GAAA74B,EAAA3V,IAAAwwD,EAAAr8B,OAAAq8B,EAAAt6B,UAGO,SAAAv3B,GAA0C,OAAAya,GAAAzD,EAAAhX,IAAAsb,GAAAtb,KAIjDuB,GAAA/F,EAAA2yB,SAAA,uBAAAnuB,GAAgD,OAAA8vD,GAAA94C,EAAAhX,KAGhD,IAAA8xD,EAAAC,GAAoChoD,IAAA,GACpC,SAAAioD,IACAx2D,EAAAuxD,cACA+E,EAAAnyD,WAAA,WAAgD,OAAAnE,EAAAuxD,YAAA,MAA+B,MAC/EgF,EAAAv2D,EAAAuxD,aACAhjD,KAAA,IAAA67B,MAQA,SAAAqsB,EAAAC,EAAAr+B,GACA,SAAAA,EAAA9W,KAA+B,SAC/B,IAAAgsB,EAAAlV,EAAA9W,KAAAm1C,EAAAn1C,KAAAksB,EAAApV,EAAA9D,IAAAmiC,EAAAniC,IACA,OAAAgZ,IAAAE,IAAA,IAEA1nC,GAAA/F,EAAA2yB,SAAA,sBAAAnuB,GACA,IAAAya,GAAAzD,EAAAhX,KAXA,SAAAA,GACA,MAAAA,EAAAowD,QAAAnuD,OAAkC,SAClC,IAAAiwD,EAAAlyD,EAAAowD,QAAA,GACA,OAAA8B,EAAAC,SAAA,GAAAD,EAAAE,SAAA,EAQAC,CAAAryD,KAAAktD,GAAAl2C,EAAAhX,GAAA,CACAxE,EAAAysB,MAAAqjC,eACA/+C,aAAAulD,GACA,IAAA1E,GAAA,IAAAxnB,KACApqC,EAAAuxD,aAAyBjjD,MAAAsjD,EAAAa,OAAA,EACzB51C,KAAA+0C,EAAA2E,EAAAhoD,KAAA,IAAAgoD,EAAA,MACA,GAAA/xD,EAAAowD,QAAAnuD,SACAzG,EAAAuxD,YAAAhwC,KAAA/c,EAAAowD,QAAA,GAAAkC,MACA92D,EAAAuxD,YAAAh9B,IAAA/vB,EAAAowD,QAAA,GAAAmC,UAIAhxD,GAAA/F,EAAA2yB,SAAA,uBACA3yB,EAAAuxD,cAA0BvxD,EAAAuxD,YAAAkB,OAAA,KAE1B1sD,GAAA/F,EAAA2yB,SAAA,oBAAAnuB,GACA,IAAAkyD,EAAA12D,EAAAuxD,YACA,GAAAmF,IAAAhlC,GAAA1xB,EAAAwE,IAAA,MAAAkyD,EAAAn1C,OACAm1C,EAAAjE,OAAA,IAAAroB,KAAAssB,EAAApoD,MAAA,KACA,IAAAlC,EAAAqF,EAAA+J,EAAAkd,WAAA14B,EAAAuxD,YAAA,QAEWnlD,GADXsqD,EAAA75C,MAAA45C,EAAAC,IAAA75C,MACW,IAAAkyB,GAAAt9B,MACXilD,EAAA75C,WAAA45C,EAAAC,IAAA75C,WACWrB,EAAA+4C,WAAA9iD,GAEA,IAAAs9B,GAAAl5B,GAAApE,EAAAiD,KAAA,GAAA6B,GAAAiF,EAAA3V,IAAAgQ,GAAApE,EAAAiD,KAAA,OACX8G,EAAA84B,aAAAloC,EAAA4tB,OAAA5tB,EAAA2vB,MACAvgB,EAAAqjB,QACA/e,GAAAtb,GAEAgyD,MAEAzwD,GAAA/F,EAAA2yB,SAAA,cAAA6jC,GAIAzwD,GAAA/F,EAAA2yB,SAAA,oBACA3yB,EAAA2yB,SAAAG,eACAkP,GAAAxmB,EAAAxb,EAAA2yB,SAAAtuB,WACAk+B,GAAA/mB,EAAAxb,EAAA2yB,SAAAruB,YAAA,GACAya,GAAAvD,EAAA,SAAAA,MAKAzV,GAAA/F,EAAA2yB,SAAA,sBAAAnuB,GAA+C,OAAAypC,GAAAzyB,EAAAhX,KAC/CuB,GAAA/F,EAAA2yB,SAAA,0BAAAnuB,GAAmD,OAAAypC,GAAAzyB,EAAAhX,KAGnDuB,GAAA/F,EAAAyF,QAAA,oBAAyC,OAAAzF,EAAAyF,QAAApB,UAAArE,EAAAyF,QAAAnB,WAAA,IAEzCtE,EAAAw1D,eACAE,MAAA,SAAAlxD,GAA2Bya,GAAAzD,EAAAhX,IAA6B2b,GAAA3b,IACxDmxD,KAAA,SAAAnxD,GAA0Bya,GAAAzD,EAAAhX,MAr4C1B,SAAAgX,EAAAhX,GACA,IAAAiN,EAAAipB,GAAAlf,EAAAhX,GACA,GAAAiN,EAAA,CACA,IAAAulD,EAAApsD,SAAAkhB,yBACAgQ,GAAAtgB,EAAA/J,EAAAulD,GACAx7C,EAAAhW,QAAAi7C,aACAjlC,EAAAhW,QAAAi7C,WAAAvzC,EAAA,wDACAsO,EAAAhW,QAAAusB,UAAA7C,aAAA1T,EAAAhW,QAAAi7C,WAAAjlC,EAAAhW,QAAAg5B,YAEAzxB,EAAAyO,EAAAhW,QAAAi7C,WAAAuW,IA43CuDC,CAAAz7C,EAAAhX,GAAmB2b,GAAA3b,KAC1E8J,MAAA,SAAA9J,GAA2B,OA75C3B,SAAAgX,EAAAhX,GACA,GAAAkG,KAAA8Q,EAAAgI,MAAA68B,eAAA,IAAAjW,KAAAmV,GAAA,KAAuEp/B,GAAA3b,QACvE,IAAAya,GAAAzD,EAAAhX,KAAAktB,GAAAlW,EAAAhW,QAAAhB,KAEAA,EAAAm7C,aAAAuX,QAAA,OAAA17C,EAAAuG,gBACAvd,EAAAm7C,aAAAwX,cAAA,WAIA3yD,EAAAm7C,aAAAyX,eAAAlsD,GAAA,CACA,IAAAmsD,EAAAnqD,EAAA,qDACAmqD,EAAA/1D,IAAA,6EACA2J,IACAosD,EAAApmC,MAAAomC,EAAA/xD,OAAA,EACAkW,EAAAhW,QAAAC,QAAAwH,YAAAoqD,GAEAA,EAAAC,KAAAD,EAAArlC,WAEAxtB,EAAAm7C,aAAAyX,aAAAC,EAAA,KACApsD,GAAmBosD,EAAAzpD,WAAAf,YAAAwqD,IA04CQE,CAAA/7C,EAAAhX,IAC3BqxD,KAAA7sB,GAAAxtB,EAAAgkC,IACAoW,MAAA,SAAApxD,GAA2Bya,GAAAzD,EAAAhX,IAA6Bi7C,GAAAjkC,KAGxD,IAAAg8C,EAAAx3D,EAAAysB,MAAAgrC,WACA1xD,GAAAyxD,EAAA,iBAAAhzD,GAAmC,OAAAusD,GAAAvhD,KAAAgM,EAAAhX,KACnCuB,GAAAyxD,EAAA,UAAAxuB,GAAAxtB,EAAAm1C,KACA5qD,GAAAyxD,EAAA,WAAAxuB,GAAAxtB,EAAAw1C,KACAjrD,GAAAyxD,EAAA,iBAAAhzD,GAAmC,OAAAs6B,GAAAtjB,EAAAhX,KACnCuB,GAAAyxD,EAAA,gBAAAhzD,GAAkC,OAAAy6B,GAAAzjB,EAAAhX,KAvIlCkzD,CAAA12D,MACA+/C,KAEAtb,GAAAzkC,MACAA,KAAAye,MAAA+T,aAAA,EACA8d,GAAAtwC,KAAA6E,GAEA6P,EAAA0gD,YAAA5qD,GAAAxK,KAAA2qC,WACOxnC,WAAAgL,EAAA2vB,GAAA99B,MAAA,IAEAi+B,GAAAj+B,MAEPo0D,GAAqCA,GAAAplD,eAAAupC,IAC9B6b,GAAA7b,GAAAE,EAAA/jC,EAAA6jC,GAAA2b,IACP30B,GAAAv/B,MACA0U,EAAAiiD,YAA6BjiD,EAAAiiD,WAAA32D,MAC7B,QAAAP,EAAA,EAAmBA,EAAAm3D,GAAAnxD,SAAsBhG,EAAOm3D,GAAAn3D,GAAAg5C,GAChDrT,GAAAplC,MAGA8J,GAAA4K,EAAAse,cACA,sBAAA5B,iBAAA5sB,EAAAi6B,SAAAo4B,gBACOryD,EAAAi6B,QAAA/5B,MAAAmyD,cAAA,QAIP5Y,GAAAkW,YAEAlW,GAAAmW,kBA8GA,IAAAwC,MAQA,SAAAtI,GAAA9zC,EAAA3b,EAAAi4D,EAAAC,GACA,IAAAv0C,EAAA3d,EAAA2V,EAAA3V,IACA,MAAAiyD,IAAsBA,EAAA,OACtB,SAAAA,IAGAjyD,EAAApD,KAAAu1D,OACYx0C,EAAA4D,GAAA5L,EAAA3b,GAAA2jB,MADiBs0C,EAAA,QAI7B,IAAA3nD,EAAAqL,EAAA9F,QAAAvF,QACAuE,EAAAT,GAAApO,EAAAhG,GAAAo4D,EAAAhoD,EAAAyE,EAAAE,KAAA,KAAAzE,GACAuE,EAAA6S,aAA0B7S,EAAA6S,WAAA,MAC1B,IAAAtC,EAAAizC,EAAAxjD,EAAAE,KAAA/I,MAAA,WACA,GAAAksD,GAAA,KAAA1tD,KAAAqK,EAAAE,OAGK,YAAAkjD,KACL7yC,EAAApf,EAAApD,KAAAu1D,OAAAx0C,EAAA9O,EAAAE,KAAAnI,MAAAyrD,EAAAzxD,QAAAiO,EAAAE,QACA3D,GAAAgU,EAAA,MACA,IAAA8yC,EAA0B,OAC1BD,EAAA,aANA7yC,EAAA,EACA6yC,EAAA,MAQA,QAAAA,EAC0B7yC,EAA1BplB,EAAAgG,EAAAqO,MAA0BjE,EAAAgE,GAAApO,EAAAhG,EAAA,GAAA+U,KAAA,KAAAzE,GACd,EACP,OAAA2nD,EACL7yC,EAAAgzC,EAAAz8C,EAAA9F,QAAAyiD,WACK,YAAAL,EACL7yC,EAAAgzC,EAAAz8C,EAAA9F,QAAAyiD,WACK,iBAAAL,IACL7yC,EAAAgzC,EAAAH,GAEA7yC,EAAArT,KAAA0E,IAAA,EAAA2O,GAEA,IAAAmzC,EAAA,GAAA3mD,EAAA,EACA,GAAA+J,EAAA9F,QAAA2iD,eACO,QAAA53D,EAAAmR,KAAAoC,MAAAiR,EAAA9U,GAAgD1P,IAAGA,EAAOgR,GAAAtB,EAAeioD,GAAA,KAGhF,GAFA3mD,EAAAwT,IAA4BmzC,GAAArmD,EAAAkT,EAAAxT,IAE5B2mD,GAAAF,EAGA,OAFAngB,GAAAlyC,EAAAuyD,EAAAviD,GAAAhW,EAAA,GAAAgW,GAAAhW,EAAAq4D,EAAAzxD,QAAA,UACAiO,EAAA6S,WAAA,MACA,EAIA,QAAAlS,EAAA,EAAuBA,EAAAxP,EAAA41B,IAAAC,OAAAj1B,OAA6B4O,IAAA,CACpD,IAAAjJ,EAAAvG,EAAA41B,IAAAC,OAAArmB,GACA,GAAAjJ,EAAA2vB,KAAArnB,MAAA7U,GAAAuM,EAAA2vB,KAAAppB,GAAAulD,EAAAzxD,OAAA,CACA,IAAA6xD,EAAAziD,GAAAhW,EAAAq4D,EAAAzxD,QACAguC,GAAA5uC,EAAAwP,EAAA,IAAA05B,GAAAupB,MACA,QA5DArZ,GAAAsZ,eAAA,SAAAnpD,GAA4C,OAAAwoD,GAAAh3D,KAAAwO,IAqE5C,IAAAopD,GAAA,KAEA,SAAAC,GAAAC,GACAF,GAAAE,EAGA,SAAAC,GAAAn9C,EAAAo9C,EAAAC,EAAAp9B,EAAApqB,GACA,IAAAxL,EAAA2V,EAAA3V,IACA2V,EAAAhW,QAAA85B,OAAA,EACA7D,IAAeA,EAAA51B,EAAA41B,KAEf,IAAAq9B,GAAA,IAAA1uB,KAAA,IACA2uB,EAAA,SAAA1nD,GAAAmK,EAAAgI,MAAA0yC,cAAA4C,EACAE,EAAAv3C,GAAAm3C,GAAAK,EAAA,KAEA,GAAAF,GAAAt9B,EAAAC,OAAAj1B,OAAA,EACA,GAAA+xD,OAAA5jD,KAAAymC,KAAA,OAAAud,GACA,GAAAn9B,EAAAC,OAAAj1B,OAAA+xD,GAAA5jD,KAAAnO,QAAA,GACAwyD,KACA,QAAAx4D,EAAA,EAAyBA,EAAA+3D,GAAA5jD,KAAAnO,OAA4BhG,IACxCw4D,EAAAr4D,KAAAiF,EAAAmyC,WAAAwgB,GAAA5jD,KAAAnU,WAENu4D,EAAAvyD,QAAAg1B,EAAAC,OAAAj1B,QAAA+U,EAAA9F,QAAAwjD,yBACPD,EAAA/mD,EAAA8mD,EAAA,SAAAxjD,GAAkD,OAAAA,MAMlD,IAFA,IAAAowB,EAAApqB,EAAAiE,MAAAmmB,YAEAvwB,EAAAomB,EAAAC,OAAAj1B,OAAA,EAAyC4O,GAAA,EAAUA,IAAA,CACnD,IAAA4M,EAAAwZ,EAAAC,OAAArmB,GACA1B,EAAAsO,EAAAtO,OAAAC,EAAAqO,EAAArO,KACAqO,EAAA2Z,UACAi9B,KAAA,EACWllD,EAAAkC,GAAAlC,EAAAe,KAAAf,EAAAhB,GAAAkmD,GACXr9C,EAAAgI,MAAA1T,YAAAipD,EACWnlD,EAAAiC,GAAAjC,EAAAc,KAAA9C,KAAAC,IAAAoC,GAAApO,EAAA+N,EAAAc,MAAAE,KAAAnO,OAAAmN,EAAAjB,GAAAX,EAAAgnD,GAAAvyD,SACXsyD,GAAAP,OAAAW,UAAAX,GAAA5jD,KAAAymC,KAAA,OAAAud,IACWjlD,EAAAC,EAAAiC,GAAAlC,EAAAe,KAAA,KAEX,IAAA0kD,GAAyBzlD,OAAAC,KAAAgB,KAAAqkD,IAAA5jD,EAAA4jD,EAAAxyD,QAAAuyD,EACzB3nD,WAAA0nD,EAAA,QAAAv9C,EAAAgI,MAAA2yC,YAAA2C,EAAA,iBACA7iB,GAAAz6B,EAAA3V,IAAAuzD,GACAtrC,GAAAtS,EAAA,YAAAA,EAAA49C,GAEAR,IAAAG,GACOM,GAAA79C,EAAAo9C,GAEPn3B,GAAAjmB,GACAA,EAAAiE,MAAAmmB,YAAA,IAAmCpqB,EAAAiE,MAAAmmB,eACnCpqB,EAAAiE,MAAAomB,QAAA,EACArqB,EAAAgI,MAAA0yC,cAAA16C,EAAAgI,MAAA2yC,aAAA,EAGA,SAAAmD,GAAA90D,EAAAgX,GACA,IAAA+9C,EAAA/0D,EAAAg1D,eAAAh1D,EAAAg1D,cAAAjZ,QAAA,QACA,GAAAgZ,EAIA,OAHA/0D,EAAA2a,iBACA3D,EAAAokC,cAAApkC,EAAA9F,QAAA+jD,cACS1wB,GAAAvtB,EAAA,WAA0B,OAAAm9C,GAAAn9C,EAAA+9C,EAAA,mBACnC,EAIA,SAAAF,GAAA79C,EAAAo9C,GAEA,GAAAp9C,EAAA9F,QAAAgkD,eAAAl+C,EAAA9F,QAAAikD,YAGA,IAFA,IAAAl+B,EAAAjgB,EAAA3V,IAAA41B,IAEAh7B,EAAAg7B,EAAAC,OAAAj1B,OAAA,EAAuChG,GAAA,EAAQA,IAAA,CAC/C,IAAAwhB,EAAAwZ,EAAAC,OAAAj7B,GACA,KAAAwhB,EAAA8Z,KAAAppB,GAAA,KAAAlS,GAAAg7B,EAAAC,OAAAj7B,EAAA,GAAAs7B,KAAArnB,MAAAuN,EAAA8Z,KAAArnB,MAAA,CACA,IAAAjS,EAAA+Y,EAAAo+C,UAAA33C,EAAA8Z,MACA/T,GAAA,EACA,GAAAvlB,EAAAi3D,eACA,QAAAt8C,EAAA,EAAuBA,EAAA3a,EAAAi3D,cAAAjzD,OAA+B2W,IAC3C,GAAAw7C,EAAApoD,QAAA/N,EAAAi3D,cAAAlmD,OAAA4J,KAAA,GACX4K,EAAAsnC,GAAA9zC,EAAAyG,EAAA8Z,KAAArnB,KAAA,SACA,YAEOjS,EAAAo3D,eACPp3D,EAAAo3D,cAAAxvD,KAAA4J,GAAAuH,EAAA3V,IAAAoc,EAAA8Z,KAAArnB,MAAAE,KAAAnI,MAAA,EAAAwV,EAAA8Z,KAAAppB,OACWqV,EAAAsnC,GAAA9zC,EAAAyG,EAAA8Z,KAAArnB,KAAA,UAEXsT,GAAqB8F,GAAAtS,EAAA,gBAAAA,EAAAyG,EAAA8Z,KAAArnB,QAIrB,SAAAolD,GAAAt+C,GAEA,IADA,IAAA5G,KAAA8mB,KACAj7B,EAAA,EAAmBA,EAAA+a,EAAA3V,IAAA41B,IAAAC,OAAAj1B,OAA8BhG,IAAA,CACjD,IAAAiU,EAAA8G,EAAA3V,IAAA41B,IAAAC,OAAAj7B,GAAAs7B,KAAArnB,KACAqlD,GAAuB//B,OAAAnkB,GAAAnB,EAAA,GAAAqnB,KAAAlmB,GAAAnB,EAAA,MACvBgnB,EAAA96B,KAAAm5D,GACAnlD,EAAAhU,KAAA4a,EAAA+/B,SAAAwe,EAAA//B,OAAA+/B,EAAAh+B,OAEA,OAAYnnB,OAAA8mB,UAGZ,SAAAs+B,GAAAC,EAAAC,EAAAC,EAAAC,GACAH,EAAAzsD,aAAA,gBAAA2sD,GACAF,EAAAzsD,aAAA,mBAAA4sD,GACAH,EAAAzsD,aAAA,eAAA0sD,GAGA,SAAAG,KACA,IAAAr4C,EAAA9U,EAAA,6GACA2T,EAAA3T,EAAA,OAAA8U,GAAA,uEAUA,OALAlX,EAAiBkX,EAAAtc,MAAAurB,MAAA,SACPjP,EAAAxU,aAAA,cAEVlC,IAAc0W,EAAAtc,MAAA40D,OAAA,mBACdN,GAAAh4C,GACAnB,EA2cA,SAAA05C,GAAA10D,EAAA4L,EAAA8B,EAAA6+C,EAAA1L,GACA,IAAAnR,EAAA9jC,EACA+oD,EAAAjnD,EACA4H,EAAAlH,GAAApO,EAAA4L,EAAAiD,MAOA,SAAA+lD,EAAAC,GACA,IAAAj2C,EANAjP,EAYA,UAJAiP,EADAiiC,EAvwDA,SAAAlrC,EAAA9G,EAAApG,EAAAiF,GACA,IAAAonD,EAAAv8C,GAAA1J,EAAA8G,EAAA3V,IAAA4W,WACA,IAAAk+C,EAAgB,OAAAnU,GAAA9xC,EAAApG,EAAAiF,GAChBjF,EAAAqE,IAAA+B,EAAAE,KAAAnO,QACA6H,EAAAqE,GAAA+B,EAAAE,KAAAnO,OACA6H,EAAAwH,OAAA,UACKxH,EAAAqE,IAAA,IACLrE,EAAAqE,GAAA,EACArE,EAAAwH,OAAA,SAEA,IAAAqiB,EAAAtc,GAAA8+C,EAAArsD,EAAAqE,GAAArE,EAAAwH,QAAAuW,EAAAsuC,EAAAxiC,GACA,UAAA3c,EAAA3V,IAAA4W,WAAA4P,EAAA7P,MAAA,OAAAjJ,EAAA,EAAA8Y,EAAAzY,GAAAtF,EAAAqE,GAAA0Z,EAAA1Y,KAAArF,EAAAqE,IAGA,OAAA6zC,GAAA9xC,EAAApG,EAAAiF,GAGA,IACAozC,EADAiU,EAAA,SAAAnpD,EAAA8B,GAAkC,OAAAgzC,GAAA7xC,EAAAjD,aAAAoE,GAAApE,EAAAkB,GAAAlB,EAAA8B,IAElCsnD,EAAA,SAAAloD,GACA,OAAA6I,EAAA9F,QAAAse,cACA2yB,KAAAvzB,GAAA5X,EAAA9G,GACAskB,GAAAxd,EAAA9G,EAAAiyC,EAAAh0C,KAF8ComB,MAAA,EAAAxqB,IAAAmG,EAAAE,KAAAnO,SAI9CqyB,EAAA+hC,EAAA,UAAAvsD,EAAAwH,OAAA8kD,EAAAtsD,GAAA,GAAAA,EAAAqE,IAEA,UAAA6I,EAAA3V,IAAA4W,WAAA,GAAA4P,EAAA7P,MAAA,CACA,IAAAs+C,EAAA,GAAAzuC,EAAA7P,OAAAjJ,EAAA,EACAZ,EAAAioD,EAAAtsD,EAAAwsD,EAAA,MACA,SAAAnoD,IAAAmoD,EAAAnoD,GAAA0Z,EAAAzY,IAAAjB,GAAAmmB,EAAAvqB,IAAAoE,GAAA0Z,EAAA1Y,MAAAhB,GAAAmmB,EAAAC,OAAA,CAEA,IAAAjjB,EAAAglD,EAAA,iBACA,WAAAjlD,GAAAvH,EAAAoG,KAAA/B,EAAAmD,IAOA,IAAAilD,EAAA,SAAA5iC,EAAA5kB,EAAAulB,GAKA,IAJA,IAAAkiC,EAAA,SAAAroD,EAAAmoD,GAAsD,OAAAA,EACtD,IAAAjlD,GAAAvH,EAAAoG,KAAAkmD,EAAAjoD,EAAA,aACA,IAAAkD,GAAAvH,EAAAoG,KAAA/B,EAAA,UAEYwlB,GAAA,GAAAA,EAAAwiC,EAAAl0D,OAAuC0xB,GAAA5kB,EAAA,CACnD,IAAA8Y,EAAAsuC,EAAAxiC,GACA2iC,EAAAvnD,EAAA,OAAA8Y,EAAA7P,OACA7J,EAAAmoD,EAAAhiC,EAAAC,MAAA6hC,EAAA9hC,EAAAvqB,KAAA,GACA,GAAA8d,EAAA1Y,MAAAhB,KAAA0Z,EAAAzY,GAA8C,OAAAonD,EAAAroD,EAAAmoD,GAE9C,GADAnoD,EAAAmoD,EAAAzuC,EAAA1Y,KAAAinD,EAAAvuC,EAAAzY,IAAA,GACAklB,EAAAC,OAAApmB,KAAAmmB,EAAAvqB,IAA0E,OAAAysD,EAAAroD,EAAAmoD,KAK1Ej3D,EAAAk3D,EAAA5iC,EAAA5kB,IAAAulB,GACA,GAAAj1B,EAAc,OAAAA,EAGd,IAAAo3D,EAAA1nD,EAAA,EAAAulB,EAAAvqB,IAAAqsD,EAAA9hC,EAAAC,OAAA,GACA,aAAAkiC,GAAA1nD,EAAA,GAAA0nD,GAAAvmD,EAAAE,KAAAnO,UACA5C,EAAAk3D,EAAAxnD,EAAA,IAAAonD,EAAAl0D,OAAA,EAAA8M,EAAAsnD,EAAAI,KAKA,KAJgBp3D,EA0sDhBq3D,CAAAr1D,EAAA2V,GAAAL,EAAA1J,EAAA8B,GAEAizC,GAAArrC,EAAA1J,EAAA8B,IAEA,CACA,GAAAmnD,IAbAllD,EAAA/D,EAAAiD,KAAAnB,GACA1N,EAAAqO,OAAAsB,GAAA3P,EAAAqO,MAAArO,EAAAlD,OACA8O,EAAA,IAAAoE,GAAAL,EAAA/D,EAAAkB,GAAAlB,EAAAqE,UACAqF,EAAAlH,GAAApO,EAAA2P,KAaW,SAFA/D,EAAAg1C,GAAAC,EAAA7gD,EAAA2V,GAAAL,EAAA1J,EAAAiD,KAAAnB,QAIX9B,EAAAgT,EAEA,SAGA,WAAA2tC,EACAqI,SACK,aAAArI,EACLqI,GAAA,QACK,WAAArI,GAAA,SAAAA,EAGL,IAFA,IAAA+I,EAAA,KAAA70B,EAAA,SAAA8rB,EACAr/C,EAAAlN,EAAA2V,IAAA3V,EAAA2V,GAAA4/C,UAAA3pD,EAAA,aACAyC,GAAA,IACAX,EAAA,IAAAknD,GAAAvmD,GAD6BA,GAAA,GAE7B,IAAAe,EAAAkG,EAAAvG,KAAApB,OAAA/B,EAAAkB,KAAA,KACAzK,EAAA4K,GAAAmC,EAAAlC,GAAA,IACAuzB,GAAA,MAAArxB,EAAA,KACAqxB,GAAA,KAAAj8B,KAAA4K,GAAA,KACA,IAEA,IADAqxB,GAAApyB,GAAAhM,IAAuCA,EAAA,KACvCizD,MAAAjzD,EAAA,CACAqL,EAAA,IAAwBA,EAAA,EAAQknD,IAAYhpD,EAAAqE,OAAA,SAC5C,MAIA,GADA5N,IAAmBizD,EAAAjzD,GACnBqL,EAAA,IAAAknD,GAAAvmD,GAA2C,MAG3C,IAAAwN,EAAA0zB,GAAAvvC,EAAA4L,EAAA8jC,EAAAilB,GAAA,GAEA,OADAxkD,GAAAu/B,EAAA7zB,KAAyCA,EAAA25C,SAAA,GACzC35C,EAMA,SAAA45C,GAAA9/C,EAAA/J,EAAA8B,EAAA6+C,GACA,IAAAz5B,EASA9oB,EATAhK,EAAA2V,EAAA3V,IAAAqQ,EAAAzE,EAAA8P,KACA,WAAA6wC,EAAA,CACA,IAAAmJ,EAAA3pD,KAAAC,IAAA2J,EAAAhW,QAAAC,QAAAqtB,aAAAhR,OAAAmmB,aAAAr9B,SAAAmsB,gBAAAjE,cACA0oC,EAAA5pD,KAAA0E,IAAAilD,EAAA,GAAAxhC,GAAAve,EAAAhW,SAAA,GACAmzB,GAAAplB,EAAA,EAAA9B,EAAA6iB,OAAA7iB,EAAA8iB,KAAAhhB,EAAAioD,MAEK,QAAApJ,IACLz5B,EAAAplB,EAAA,EAAA9B,EAAA6iB,OAAA,EAAA7iB,EAAA8iB,IAAA,GAGA,MACA1kB,EAAA6oB,GAAAld,EAAAtF,EAAAyiB,IACAH,SAFW,CAGX,GAAAjlB,EAAA,EAAAolB,GAAA,EAAAA,GAAA9yB,EAAAP,OAAA,CAA+CuK,EAAAwrD,SAAA,EAAuB,MACtE1iC,GAAA,EAAAplB,EAEA,OAAA1D,EAKA,IAAA4rD,GAAA,SAAAjgD,GACAxa,KAAAwa,KACAxa,KAAA06D,eAAA16D,KAAA26D,iBAAA36D,KAAA46D,cAAA56D,KAAA66D,gBAAA,KACA76D,KAAA86D,QAAA,IAAAnrD,EACA3P,KAAA+6D,UAAA,KACA/6D,KAAAg7D,aAAA,EACAh7D,KAAAi7D,eAAA,MAuWA,SAAAC,GAAA1gD,EAAA/J,GACA,IAAAkc,EAAA0F,GAAA7X,EAAA/J,EAAAiD,MACA,IAAAiZ,KAAAH,OAA+B,YAC/B,IAAA9Y,EAAAT,GAAAuH,EAAA3V,IAAA4L,EAAAiD,MACAkP,EAAAoP,GAAArF,EAAAjZ,EAAAjD,EAAAiD,MAEAoH,EAAAsC,GAAA1J,EAAA8G,EAAA3V,IAAA4W,WAAAwgB,EAAA,OACAnhB,IAEAmhB,EADAphB,GAAAC,EAAArK,EAAAkB,IACA,kBAEA,IAAA+O,EAAAgT,GAAA9Q,EAAA1R,IAAAT,EAAAkB,GAAAsqB,GAEA,OADAvb,EAAAnJ,OAAA,SAAAmJ,EAAA5S,SAAA4S,EAAAnT,IAAAmT,EAAApT,MACAoT,EASA,SAAAy6C,GAAA1qD,EAAA2qD,GAA0D,OAA7BA,IAAW3qD,EAAA2qD,KAAA,GAAkB3qD,EAuD1D,SAAA4qD,GAAA7gD,EAAAlP,EAAAiM,GACA,IAAA+jD,EACA,GAAAhwD,GAAAkP,EAAAhW,QAAAi6B,QAAA,CAEA,KADA68B,EAAA9gD,EAAAhW,QAAAi6B,QAAA7yB,WAAA2L,IACsB,OAAA4jD,GAAA3gD,EAAAjF,QAAAV,GAAA2F,EAAAhW,QAAA8iB,OAAA,QACtBhc,EAAA,KAAkBiM,EAAA,OAElB,IAAA+jD,EAAAhwD,GAA4BgwD,IAAA1uD,WAAA,CAC5B,IAAA0uD,MAAA9gD,EAAAhW,QAAAi6B,QAA0D,YAC1D,GAAA68B,EAAA1uD,YAAA0uD,EAAA1uD,YAAA4N,EAAAhW,QAAAi6B,QAA+E,MAG/E,QAAAh/B,EAAA,EAAmBA,EAAA+a,EAAAhW,QAAAmoB,KAAAlnB,OAA4BhG,IAAA,CAC/C,IAAA0pB,EAAA3O,EAAAhW,QAAAmoB,KAAAltB,GACA,GAAA0pB,EAAA7d,MAAAgwD,EACS,OAAAC,GAAApyC,EAAA7d,EAAAiM,IAIT,SAAAgkD,GAAApyC,EAAA7d,EAAAiM,GACA,IAAA9S,EAAA0kB,EAAAvV,KAAA9H,WAAAsvD,GAAA,EACA,IAAA9vD,IAAAmB,EAAAhI,EAAA6G,GAA4C,OAAA6vD,GAAAtmD,GAAAb,GAAAmV,EAAAzV,MAAA,OAC5C,GAAApI,GAAA7G,IACA22D,GAAA,EACA9vD,EAAA7G,EAAAmH,WAAA2L,GACAA,EAAA,GACAjM,GAAA,CACA,IAAAoI,EAAAyV,EAAAM,KAAAzY,EAAAmY,EAAAM,MAAAN,EAAAzV,KACA,OAAAynD,GAAAtmD,GAAAb,GAAAN,KAAAE,KAAAnO,QAAA21D,GAIA,IAAAI,EAAA,GAAAlwD,EAAAqB,SAAArB,EAAA,KAAAmwD,EAAAnwD,EAKA,IAJAkwD,GAAA,GAAAlwD,EAAAM,WAAAnG,QAAA,GAAA6F,EAAAQ,WAAAa,WACA6uD,EAAAlwD,EAAAQ,WACAyL,IAAmBA,EAAAikD,EAAAE,UAAAj2D,SAEnBg2D,EAAA7uD,YAAAnI,GAA2Cg3D,IAAA7uD,WAC3C,IAAAmT,EAAAoJ,EAAApJ,QAAAgK,EAAAhK,EAAAgK,KAEA,SAAApR,EAAA6iD,EAAAC,EAAAlkD,GACA,QAAA9X,GAAA,EAAsBA,GAAAsqB,IAAAtkB,OAAA,GAA8BhG,IAEpD,IADA,IAAAge,EAAAhe,EAAA,EAAAsgB,EAAA7O,IAAA6Y,EAAAtqB,GACA2c,EAAA,EAAuBA,EAAAqB,EAAAhY,OAAmB2W,GAAA,GAC1C,IAAAu/C,EAAAl+C,EAAArB,EAAA,GACA,GAAAu/C,GAAAH,GAAAG,GAAAF,EAAA,CACA,IAAA/nD,EAAAM,GAAAvU,EAAA,EAAA0pB,EAAAzV,KAAAyV,EAAAM,KAAAhqB,IACAkS,EAAA8L,EAAArB,GAAA7E,EAEA,OADAA,EAAA,GAAAokD,GAAAH,KAAoD7pD,EAAA8L,EAAArB,GAAA7E,EAAA,OACpD1C,GAAAnB,EAAA/B,KAKA,IAAA6F,EAAAmB,EAAA6iD,EAAAC,EAAAlkD,GACA,GAAAC,EAAgB,OAAA2jD,GAAA3jD,EAAA4jD,GAGhB,QAAA5vD,EAAAiwD,EAAAnsC,YAAAmJ,EAAA+iC,IAAAE,UAAAj2D,OAAA8R,EAAA,EAAmG/L,EAAOA,IAAA8jB,YAAA,CAE1G,GADA9X,EAAAmB,EAAAnN,IAAAM,WAAA,GAES,OAAAqvD,GAAAtmD,GAAA2C,EAAA9D,KAAA8D,EAAA7F,GAAA8mB,GAAA2iC,GAEA3iC,GAAAjtB,EAAAowD,YAAAn2D,OAET,QAAAiX,EAAA++C,EAAAI,gBAAAC,EAAAvkD,EAA+DmF,EAAQA,IAAAm/C,gBAAA,CAEvE,GADArkD,EAAAmB,EAAA+D,IAAA5Q,YAAA,GAES,OAAAqvD,GAAAtmD,GAAA2C,EAAA9D,KAAA8D,EAAA7F,GAAAmqD,GAAAV,GAEAU,GAAAp/C,EAAAk/C,YAAAn2D,QAvfTg1D,GAAAlsD,UAAA0mD,KAAA,SAAAzwD,GACA,IAAAi0C,EAAAz4C,KAEAyrB,EAAAzrB,KAAAwa,EAAAiR,EAAAjR,GACAqF,EAAA4L,EAAA5L,IAAArb,EAAAi6B,QA4BA,SAAAs9B,EAAAv4D,GACA,IAAAya,GAAAzD,EAAAhX,GAAA,CACA,GAAAgX,EAAAwzB,oBACAypB,IAAuBU,UAAA,EAAAvkD,KAAA4G,EAAAwgC,kBACvB,OAAAx3C,EAAA0D,MAA8BsT,EAAAygC,iBAAA,mBACvB,KAAAzgC,EAAA9F,QAAAsnD,gBACP,OAEA,IAAAthC,EAAAo+B,GAAAt+C,GACAi9C,IAAuBU,UAAA,EAAAvkD,KAAA8mB,EAAA9mB,OACvB,OAAApQ,EAAA0D,MACAsT,EAAAwtB,UAAA,WACAxtB,EAAAsgC,cAAApgB,SAAA,EAAAvqB,GACAqK,EAAAygC,iBAAA,iBAIA,GAAAz3C,EAAAg1D,cAAA,CACAh1D,EAAAg1D,cAAAyD,YACA,IAAA18D,EAAAi4D,GAAA5jD,KAAAymC,KAAA,MAGA,GADA72C,EAAAg1D,cAAAtC,QAAA,OAAA32D,GACAiE,EAAAg1D,cAAAjZ,QAAA,SAAAhgD,EAEA,YADAiE,EAAA2a,iBAKA,IAAA+9C,EAAA7C,KAAAr4C,EAAAk7C,EAAApwD,WACA0O,EAAAhW,QAAAusB,UAAA7C,aAAAguC,EAAA1hD,EAAAhW,QAAAusB,UAAAjlB,YACAkV,EAAAviB,MAAA+4D,GAAA5jD,KAAAymC,KAAA,MACA,IAAA8hB,EAAAvyD,SAAAmD,cACAkB,EAAA+S,GACA7d,WAAA,WACAqX,EAAAhW,QAAAusB,UAAAllB,YAAAqwD,GACAC,EAAAt+B,QACAs+B,GAAAt8C,GAA8B4L,EAAA2wC,wBACvB,KAhEPpD,GAAAn5C,EAAArF,EAAA9F,QAAAwkD,WAAA1+C,EAAA9F,QAAAykD,YAAA3+C,EAAA9F,QAAA0kD,gBAEAr0D,GAAA8a,EAAA,iBAAArc,GACAya,GAAAzD,EAAAhX,IAAA80D,GAAA90D,EAAAgX,IAEA7Q,GAAA,IAA6BxG,WAAA6kC,GAAAxtB,EAAA,WAAuC,OAAAi+B,EAAA4jB,kBAAiC,MAGrGt3D,GAAA8a,EAAA,4BAAArc,GACAi1C,EAAAsiB,WAA0B35D,KAAAoC,EAAApC,KAAAsvC,MAAA,KAE1B3rC,GAAA8a,EAAA,6BAAArc,GACAi1C,EAAAsiB,YAA8BtiB,EAAAsiB,WAAqB35D,KAAAoC,EAAApC,KAAAsvC,MAAA,MAEnD3rC,GAAA8a,EAAA,0BAAArc,GACAi1C,EAAAsiB,YACAv3D,EAAApC,MAAAq3C,EAAAsiB,UAAA35D,MAA8Cq3C,EAAA6jB,kBAC9C7jB,EAAAsiB,UAAArqB,MAAA,KAIA3rC,GAAA8a,EAAA,wBAAuC,OAAA4L,EAAA8wC,wBAEvCx3D,GAAA8a,EAAA,mBACA44B,EAAAsiB,WAA8BtiB,EAAA6jB,oBA0C9Bv3D,GAAA8a,EAAA,OAAAk8C,GACAh3D,GAAA8a,EAAA,MAAAk8C,IAGAtB,GAAAlsD,UAAA6rB,iBAAA,WACA,IAAA1Z,EAAA0Z,GAAAp6B,KAAAwa,IAAA,GAEA,OADAkG,EAAAmd,MAAA79B,KAAAwa,GAAAgI,MAAA6a,QACA3c,GAGA+5C,GAAAlsD,UAAA4rB,cAAA,SAAAvX,EAAA+jB,GACA/jB,GAAA5iB,KAAAwa,GAAAhW,QAAAmoB,KAAAlnB,UACAmd,EAAAib,OAAA8I,IAAkC3mC,KAAAo8D,uBAClCp8D,KAAAw8D,uBAAA55C,KAGA63C,GAAAlsD,UAAAwS,aAAA,WACA,OAAA/gB,KAAAwa,GAAAhW,QAAAC,QAAAyc,cAAAH,gBAGA05C,GAAAlsD,UAAA6tD,qBAAA,WACA,IAAA3hC,EAAAz6B,KAAA+gB,eAAAvG,EAAAxa,KAAAwa,GAAA4zB,EAAA5zB,EAAA3V,IAAA41B,IAAAJ,UACA1nB,EAAAy7B,EAAAz7B,OAAAC,EAAAw7B,EAAAx7B,KAEA,GAAA4H,EAAAhW,QAAA8iB,QAAA9M,EAAAhW,QAAA6iB,UAAA1U,EAAAe,MAAA8G,EAAAhW,QAAA8iB,QAAA1U,EAAAc,KAAA8G,EAAAhW,QAAA6iB,SACAoT,EAAAiR,sBADA,CAKA,IAAA+wB,EAAApB,GAAA7gD,EAAAigB,EAAAoQ,WAAApQ,EAAAsQ,cACA2xB,EAAArB,GAAA7gD,EAAAigB,EAAAuQ,UAAAvQ,EAAAwQ,aACA,IAAAwxB,KAAArB,MAAAsB,KAAAtB,KACA,GAAArmD,GAAAK,GAAAqnD,EAAAC,GAAA/pD,IACA,GAAAoC,GAAAI,GAAAsnD,EAAAC,GAAA9pD,GAFA,CAKA,IAAA+Z,EAAAnS,EAAAhW,QAAAmoB,KACArf,EAAAqF,EAAAe,MAAA8G,EAAAhW,QAAA6iB,UAAA6zC,GAAA1gD,EAAA7H,KACSrH,KAAAqhB,EAAA,GAAA5M,QAAA7O,IAAA,GAAAqG,OAAA,GACThK,EAAAqF,EAAAc,KAAA8G,EAAAhW,QAAA8iB,QAAA4zC,GAAA1gD,EAAA5H,GACA,IAAArF,EAAA,CACA,IAAAwS,EAAA4M,IAAAlnB,OAAA,GAAAsa,QACAtC,EAAAsC,EAAAgK,KAAAhK,EAAAgK,KAAAhK,EAAAgK,KAAAtkB,OAAA,GAAAsa,EAAA7O,IACA3D,GAAajC,KAAAmS,IAAAhY,OAAA,GAAA8R,OAAAkG,IAAAhY,OAAA,GAAAgY,IAAAhY,OAAA,IAGb,GAAA6H,GAAAC,EAAA,CAKA,IAAAovD,EAAA9lD,EAAA4jB,EAAAmiC,YAAAniC,EAAAoiC,WAAA,GACA,IAASF,EAAAvxD,EAAAkC,EAAAhC,KAAAgC,EAAAiK,OAAAhK,EAAAgK,OAAAhK,EAAAjC,MACT,MAAA9H,IACAm5D,KACAvzD,GAAAoR,EAAAgI,MAAA6a,SACA5C,EAAA3sB,SAAAR,EAAAhC,KAAAgC,EAAAiK,QACAolD,EAAAzjD,YACAuhB,EAAAiR,kBACAjR,EAAAkR,SAAAgxB,MAGAliC,EAAAiR,kBACAjR,EAAAkR,SAAAgxB,IAEA9lD,GAAA,MAAA4jB,EAAAoQ,WAA0CpQ,EAAAkR,SAAA90B,GAC1CzN,GAAuBpJ,KAAA88D,oBAEvB98D,KAAA+8D,yBArBAtiC,EAAAiR,qBAwBA+uB,GAAAlsD,UAAAuuD,iBAAA,WACA,IAAArkB,EAAAz4C,KAEA+P,aAAA/P,KAAAg7D,aACAh7D,KAAAg7D,YAAA73D,WAAA,WACAs1C,EAAAuiB,aAAA,EACAviB,EAAAzT,oBACSyT,EAAAj+B,GAAAwtB,UAAA,WAAkC,OAAAyQ,EAAAj+B,GAAAiE,MAAAumB,kBAAA,KACtC,KAGLy1B,GAAAlsD,UAAAiuD,uBAAA,SAAA55C,GACA7W,EAAA/L,KAAAwa,GAAAhW,QAAAg5B,UAAA5a,EAAA2X,SACAxuB,EAAA/L,KAAAwa,GAAAhW,QAAAqnC,aAAAjpB,EAAAzB,YAGAs5C,GAAAlsD,UAAAwuD,kBAAA,WACA,IAAAtiC,EAAAz6B,KAAA+gB,eACA/gB,KAAA06D,eAAAjgC,EAAAoQ,WAAyC7qC,KAAA26D,iBAAAlgC,EAAAsQ,aACzC/qC,KAAA46D,cAAAngC,EAAAuQ,UAAuChrC,KAAA66D,gBAAApgC,EAAAwQ,aAGvCwvB,GAAAlsD,UAAAyuD,kBAAA,WACA,IAAAviC,EAAAz6B,KAAA+gB,eACA,IAAA0Z,EAAAmiC,WAA0B,SAC1B,IAAAtxD,EAAAmvB,EAAAoiC,WAAA,GAAAI,wBACA,OAAAxwD,EAAAzM,KAAA6f,IAAAvU,IAGAmvD,GAAAlsD,UAAAsvB,MAAA,WACA,YAAA79B,KAAAwa,GAAA9F,QAAAwpB,WACAl+B,KAAAg9D,qBACSh9D,KAAAm6B,cAAAn6B,KAAAo6B,oBAAA,GACTp6B,KAAA6f,IAAAge,UAGA48B,GAAAlsD,UAAA2uD,KAAA,WAAqDl9D,KAAA6f,IAAAq9C,QACrDzC,GAAAlsD,UAAAkoD,SAAA,WAAyD,OAAAz2D,KAAA6f,KAEzD46C,GAAAlsD,UAAAiiD,cAAA,WAA8D,UAE9DiK,GAAAlsD,UAAA8vB,cAAA,WACA,IAAA5S,EAAAzrB,KACAA,KAAAg9D,oBACOh9D,KAAAm9D,gBAEAp1B,GAAA/nC,KAAAwa,GAAA,WAA+B,OAAAiR,EAAAjR,GAAAiE,MAAAumB,kBAAA,IAQtChlC,KAAA86D,QAAAjrD,IAAA7P,KAAAwa,GAAA9F,QAAA0oD,aANA,SAAAC,IACA5xC,EAAAjR,GAAAgI,MAAA6a,UACA5R,EAAA0xC,gBACA1xC,EAAAqvC,QAAAjrD,IAAA4b,EAAAjR,GAAA9F,QAAA0oD,aAAAC,OAMA5C,GAAAlsD,UAAAy2B,iBAAA,WACA,IAAAvK,EAAAz6B,KAAA+gB,eACA,OAAA0Z,EAAAoQ,YAAA7qC,KAAA06D,gBAAAjgC,EAAAsQ,cAAA/qC,KAAA26D,kBACAlgC,EAAAuQ,WAAAhrC,KAAA46D,eAAAngC,EAAAwQ,aAAAjrC,KAAA66D,iBAGAJ,GAAAlsD,UAAA4uD,cAAA,WACA,SAAAn9D,KAAAi7D,iBAAAj7D,KAAAg7D,aAAAh7D,KAAAglC,mBAAA,CACA,IAAAvK,EAAAz6B,KAAA+gB,eAAAvG,EAAAxa,KAAAwa,GAOA,GAAAjQ,GAAAP,GAAAhK,KAAAwa,GAAA9F,QAAAya,QAAA1pB,QA8JA,SAAA6F,GACA,QAAAgyD,EAAAhyD,EAAyBgyD,EAAMA,IAAA1wD,WACxB,+BAAAvD,KAAAi0D,EAAA/0D,WAAwD,SAC/D,SAjKAg1D,CAAA9iC,EAAAoQ,YAIA,OAHA7qC,KAAAwa,GAAAgjD,kBAAgCt2D,KAAA,UAAAw9C,QAAA,EAAAvmC,eAAAvN,KAAAyiB,MAChCrzB,KAAAk9D,YACAl9D,KAAA69B,QAGA,IAAA79B,KAAA+6D,UAAA,CACA/6D,KAAA+8D,oBACA,IAAA/jC,EAAAqiC,GAAA7gD,EAAAigB,EAAAoQ,WAAApQ,EAAAsQ,cACAhQ,EAAAsgC,GAAA7gD,EAAAigB,EAAAuQ,UAAAvQ,EAAAwQ,aACAjS,GAAA+B,GAAyBgN,GAAAvtB,EAAA,WACzB84B,GAAA94B,EAAA3V,IAAA0pC,GAAAvV,EAAA+B,GAAA5qB,IACA6oB,EAAAoiC,KAAArgC,EAAAqgC,OAAmC5gD,EAAAiE,MAAAumB,kBAAA,QAInCy1B,GAAAlsD,UAAAkvD,YAAA,WACA,MAAAz9D,KAAAi7D,iBACAlrD,aAAA/P,KAAAi7D,gBACAj7D,KAAAi7D,eAAA,MAGA,IAQAyC,EAAA3gC,EAAA4gC,EARAnjD,EAAAxa,KAAAwa,GAAAhW,EAAAgW,EAAAhW,QAAAi2B,EAAAjgB,EAAA3V,IAAA41B,IAAAJ,UACA1nB,EAAA8nB,EAAA9nB,OAAAC,EAAA6nB,EAAA7nB,KAKA,GAJA,GAAAD,EAAAhB,IAAAgB,EAAAe,KAAA8G,EAAA80B,cACO38B,EAAAkC,GAAAlC,EAAAe,KAAA,EAAAT,GAAAuH,EAAA3V,IAAA8N,EAAAe,KAAA,GAAAjO,SACPmN,EAAAjB,IAAAsB,GAAAuH,EAAA3V,IAAA+N,EAAAc,MAAAE,KAAAnO,QAAAmN,EAAAc,KAAA8G,EAAAV,aACOlH,EAAAiC,GAAAjC,EAAAc,KAAA,MACPf,EAAAe,KAAAlP,EAAA6iB,UAAAzU,EAAAc,KAAAlP,EAAA8iB,OAAA,EAAuE,SAGvE3U,EAAAe,MAAAlP,EAAA6iB,UAAA,IAAAq2C,EAAAprC,GAAA9X,EAAA7H,EAAAe,QACAqpB,EAAA/oB,GAAAxP,EAAAmoB,KAAA,GAAAjZ,MACAiqD,EAAAn5D,EAAAmoB,KAAA,GAAArhB,OAEAyxB,EAAA/oB,GAAAxP,EAAAmoB,KAAA+wC,GAAAhqD,MACAiqD,EAAAn5D,EAAAmoB,KAAA+wC,EAAA,GAAApyD,KAAAgkB,aAEA,IACA0N,EAAA4gC,EADAC,EAAAvrC,GAAA9X,EAAA5H,EAAAc,MAUA,GARAmqD,GAAAr5D,EAAAmoB,KAAAlnB,OAAA,GACAu3B,EAAAx4B,EAAA8iB,OAAA,EACAs2C,EAAAp5D,EAAAi6B,QAAAxU,YAEA+S,EAAAhpB,GAAAxP,EAAAmoB,KAAAkxC,EAAA,GAAAnqD,MAAA,EACAkqD,EAAAp5D,EAAAmoB,KAAAkxC,EAAA,GAAAvyD,KAAAuwD,kBAGA8B,EAAoB,SAGpB,IAFA,IAAAG,EAAAtjD,EAAA3V,IAAAmyC,WAqHA,SAAAx8B,EAAA7H,EAAAC,EAAAmqB,EAAAC,GACA,IAAAppB,EAAA,GAAAmqD,GAAA,EAAA9jB,EAAAz/B,EAAA3V,IAAAy1C,gBAAA0jB,GAAA,EAEA,SAAAC,IACAF,IACAnqD,GAAAqmC,EACA+jB,IAA6BpqD,GAAAqmC,GAC7B8jB,EAAAC,GAAA,GAGA,SAAAE,EAAA5rD,GACAA,IACA2rD,IACArqD,GAAAtB,GAGA,SAAA6rD,EAAA7yD,GACA,MAAAA,EAAAqB,SAAA,CACA,IAAAyxD,EAAA9yD,EAAAqlB,aAAA,WACA,GAAAytC,EAEA,YADAF,EAAAE,GAGA,IAAAn9C,EAAAo9C,EAAA/yD,EAAAqlB,aAAA,aACA,GAAA0tC,EAAA,CACA,IAAA7mD,EAAAgD,EAAAo/B,UAAA/kC,GAAAkoB,EAAA,GAAAloB,GAAAmoB,EAAA,MAvBA36B,GAuBAg8D,EAvBkC,SAAAtoD,GAA2B,OAAAA,EAAA1T,SA0B7D,YAFAmV,EAAA/R,SAAAwb,EAAAzJ,EAAA,GAAAmB,KAAA,KACaulD,EAAAzqD,GAAA+G,EAAA3V,IAAAoc,EAAAtO,KAAAsO,EAAArO,IAAAynC,KAAAJ,KAGb,YAAA3uC,EAAAqlB,aAAA,mBAA8D,OAC9D,IAAA2tC,EAAA,6BAAAj1D,KAAAiC,EAAAizD,UACA,YAAAl1D,KAAAiC,EAAAizD,WAAA,GAAAjzD,EAAAswD,YAAAn2D,OAA2E,OAE3E64D,GAAsBL,IACtB,QAAAx+D,EAAA,EAAuBA,EAAA6L,EAAAM,WAAAnG,OAA4BhG,IACxC0+D,EAAA7yD,EAAAM,WAAAnM,IAEX,aAAA4J,KAAAiC,EAAAizD,YAA+CP,GAAA,GAC/CM,IAAsBP,GAAA,QACf,GAAAzyD,EAAAqB,UACPuxD,EAAA5yD,EAAAowD,UAAAv/C,QAAA,cAAAA,QAAA,gBAvCA,IAAA9Z,EA0CA,KACA87D,EAAAxrD,GACAA,GAAAC,GACAD,IAAA2c,YACA0uC,GAAA,EAEA,OAAApqD,EAvKA4qD,CAAAhkD,EAAAmjD,EAAAC,EAAA7gC,EAAAC,IACAyhC,EAAAhrD,GAAA+G,EAAA3V,IAAAgQ,GAAAkoB,EAAA,GAAAloB,GAAAmoB,EAAA/pB,GAAAuH,EAAA3V,IAAAm4B,GAAAppB,KAAAnO,SACAq4D,EAAAr4D,OAAA,GAAAg5D,EAAAh5D,OAAA,GACA,GAAAuL,EAAA8sD,IAAA9sD,EAAAytD,GAAyCX,EAAArsB,MAAegtB,EAAAhtB,MAAezU,QACvE,IAAA8gC,EAAA,IAAAW,EAAA,GACY,MAD8BX,EAAAx/B,QAAiBmgC,EAAAngC,QAAiBvB,IAM5E,IAFA,IAAA2hC,EAAA,EAAAC,EAAA,EACAx+B,EAAA29B,EAAA,GAAAc,EAAAH,EAAA,GAAAI,EAAAjuD,KAAAC,IAAAsvB,EAAA16B,OAAAm5D,EAAAn5D,QACAi5D,EAAAG,GAAA1+B,EAAA/tB,WAAAssD,IAAAE,EAAAxsD,WAAAssD,MACOA,EAIP,IAHA,IAAAI,EAAA9tD,EAAA8sD,GAAAiB,EAAA/tD,EAAAytD,GACAO,EAAApuD,KAAAC,IAAAiuD,EAAAr5D,QAAA,GAAAq4D,EAAAr4D,OAAAi5D,EAAA,GACAK,EAAAt5D,QAAA,GAAAg5D,EAAAh5D,OAAAi5D,EAAA,IACAC,EAAAK,GACAF,EAAA1sD,WAAA0sD,EAAAr5D,OAAAk5D,EAAA,IAAAI,EAAA3sD,WAAA2sD,EAAAt5D,OAAAk5D,EAAA,MACOA,EAEP,MAAAb,EAAAr4D,QAAA,GAAAg5D,EAAAh5D,QAAAs3B,GAAApqB,EAAAe,KACA,KAAAgrD,KAAA/rD,EAAAhB,IACAmtD,EAAA1sD,WAAA0sD,EAAAr5D,OAAAk5D,EAAA,IAAAI,EAAA3sD,WAAA2sD,EAAAt5D,OAAAk5D,EAAA,IACAD,IACAC,IAIAb,IAAAr4D,OAAA,GAAAq5D,EAAArzD,MAAA,EAAAqzD,EAAAr5D,OAAAk5D,GAAAxiD,QAAA,eACA2hD,EAAA,GAAAA,EAAA,GAAAryD,MAAAizD,GAAAviD,QAAA,eAEA,IAAA8iD,EAAApqD,GAAAkoB,EAAA2hC,GACAQ,EAAArqD,GAAAmoB,EAAAyhC,EAAAh5D,OAAAuL,EAAAytD,GAAAh5D,OAAAk5D,EAAA,GACA,OAAAb,EAAAr4D,OAAA,GAAAq4D,EAAA,IAAA/oD,GAAAkqD,EAAAC,IACAnoB,GAAAv8B,EAAA3V,IAAAi5D,EAAAmB,EAAAC,EAAA,WACA,QAFA,GAMAzE,GAAAlsD,UAAAugD,aAAA,WACA9uD,KAAAu8D,uBAEA9B,GAAAlsD,UAAA6vB,MAAA,WACAp+B,KAAAu8D,uBAEA9B,GAAAlsD,UAAAguD,oBAAA,WACAv8D,KAAA+6D,YACAhrD,aAAA/P,KAAAi7D,gBACAj7D,KAAA+6D,UAAA,KACA/6D,KAAAq8D,gBACAr8D,KAAA6f,IAAAq9C,OACAl9D,KAAA6f,IAAAge,UAEA48B,GAAAlsD,UAAA+tD,gBAAA,WACA,IAAA7jB,EAAAz4C,KAEA,MAAAA,KAAAi7D,iBACAj7D,KAAAi7D,eAAA93D,WAAA,WAEA,GADAs1C,EAAAwiB,eAAA,KACAxiB,EAAAsiB,UAAA,CACA,IAAAtiB,EAAAsiB,UAAArqB,KACc,OADsB+H,EAAAsiB,UAAA,KAGpCtiB,EAAA4jB,iBACK,MAGL5B,GAAAlsD,UAAA8tD,cAAA,WACA,IAAA5jB,EAAAz4C,MAEAA,KAAAwa,GAAAokC,cAAA5+C,KAAAy9D,eACO11B,GAAA/nC,KAAAwa,GAAA,WAA+B,OAAA2tB,GAAAsQ,EAAAj+B,OAGtCigD,GAAAlsD,UAAAod,cAAA,SAAArgB,GACAA,EAAA6zD,gBAAA,SAGA1E,GAAAlsD,UAAAyhD,WAAA,SAAAxsD,GACA,GAAAA,EAAAysD,UAAAjwD,KAAA+6D,YACAv3D,EAAA2a,iBACAne,KAAAwa,GAAAokC,cACO5W,GAAAhoC,KAAAwa,GAAAm9C,GAAA3vB,CAAAhoC,KAAAwa,GAAAtS,OAAA07C,aAAA,MAAApgD,EAAAysD,SAAAzsD,EAAAkhD,QAAAlhD,EAAAysD,UAAA,KAGPwK,GAAAlsD,UAAA6wD,gBAAA,SAAA18C,GACA1iB,KAAA6f,IAAAs/C,gBAAAj3D,OAAA,YAAAwa,IAGA+3C,GAAAlsD,UAAA+kD,cAAA,aACAmH,GAAAlsD,UAAA8wD,cAAA,aAEA5E,GAAAlsD,UAAAmd,uBAAA,EA2JA,IAAA4zC,GAAA,SAAA9kD,GACAxa,KAAAwa,KAEAxa,KAAAu/D,UAAA,GAKAv/D,KAAAw/D,aAAA,EAEAx/D,KAAA86D,QAAA,IAAAnrD,EAEA3P,KAAA6gB,cAAA,EACA7gB,KAAA+6D,UAAA,MAGAuE,GAAA/wD,UAAA0mD,KAAA,SAAAzwD,GACA,IAAAi0C,EAAAz4C,KAEAyrB,EAAAzrB,KAAAwa,EAAAxa,KAAAwa,GACAxa,KAAAy/D,YAAAj7D,GACA,IAAAwc,EAAAhhB,KAAA0/D,SAmBA,SAAAC,EAAAn8D,GACA,IAAAya,GAAAzD,EAAAhX,GAAA,CACA,GAAAgX,EAAAwzB,oBACAypB,IAAuBU,UAAA,EAAAvkD,KAAA4G,EAAAwgC,sBAChB,KAAAxgC,EAAA9F,QAAAsnD,gBACP,OAEA,IAAAthC,EAAAo+B,GAAAt+C,GACAi9C,IAAuBU,UAAA,EAAAvkD,KAAA8mB,EAAA9mB,OACvB,OAAApQ,EAAA0D,KACAsT,EAAAsgC,cAAApgB,SAAA,KAAAvqB,IAEAsb,EAAA8zC,UAAA,GACAv+C,EAAAviB,MAAAi8B,EAAA9mB,KAAAymC,KAAA,MACApsC,EAAA+S,IAGA,OAAAxd,EAAA0D,OAA4BsT,EAAAgI,MAAA2yC,aAAA,IAAA/rB,OAlC5B5kC,EAAAC,QAAAypB,aAAAluB,KAAAyE,QAAAD,EAAAC,QAAAqH,YAGAxB,IAAc0W,EAAAtc,MAAAurB,MAAA,OAEdlrB,GAAAic,EAAA,mBACAtX,GAAAC,GAAA,GAAA8uC,EAAA53B,eAAyD43B,EAAA53B,aAAA,MACzD4K,EAAA4xC,SAGAt4D,GAAAic,EAAA,iBAAAxd,GACAya,GAAAzD,EAAAhX,IAAA80D,GAAA90D,EAAAgX,KAEAA,EAAAgI,MAAA0yC,eAAA,IAAA9rB,KACA3d,EAAAm0C,cAsBA76D,GAAAic,EAAA,MAAA2+C,GACA56D,GAAAic,EAAA,OAAA2+C,GAEA56D,GAAAP,EAAAmtB,SAAA,iBAAAnuB,GACA,IAAAktB,GAAAlsB,EAAAhB,KAAAya,GAAAzD,EAAAhX,GAAA,CACA,IAAAwd,EAAA6+C,cAGA,OAFArlD,EAAAgI,MAAA0yC,eAAA,IAAA9rB,UACA3d,EAAAoS,QAKA,IAAAoV,EAAA,IAAA6sB,MAAA,SACA7sB,EAAAulB,cAAAh1D,EAAAg1D,cACAx3C,EAAA6+C,cAAA5sB,MAIAluC,GAAAP,EAAAusB,UAAA,uBAAAvtB,GACAktB,GAAAlsB,EAAAhB,IAAuCsb,GAAAtb,KAGvCuB,GAAAic,EAAA,8BACA,IAAA1T,EAAAkN,EAAAkmB,UAAA,QACAjV,EAAAsvC,WAA4BtvC,EAAAsvC,UAAA3vD,MAAAi4B,QAC5B5X,EAAAsvC,WACAztD,QACAlC,MAAAoP,EAAAq+B,SAAAvrC,EAAAkN,EAAAkmB,UAAA,OAAuDn4B,UAAA,4BAGvDxD,GAAAic,EAAA,4BACAyK,EAAAsvC,YACAtvC,EAAA4xC,OACA5xC,EAAAsvC,UAAA3vD,MAAAi4B,QACA5X,EAAAsvC,UAAA,SAKAuE,GAAA/wD,UAAAkxD,YAAA,SAAAM,GAEA//D,KAAAyE,QAAA40D,KAGAr5D,KAAA0/D,SAAA1/D,KAAAyE,QAAAqH,YAGAwzD,GAAA/wD,UAAA6rB,iBAAA,WAEA,IAAA5f,EAAAxa,KAAAwa,GAAAhW,EAAAgW,EAAAhW,QAAAK,EAAA2V,EAAA3V,IACA6b,EAAA0Z,GAAA5f,GAGA,GAAAA,EAAA9F,QAAAsrD,oBAAA,CACA,IAAAC,EAAAlpC,GAAAvc,EAAA3V,EAAA41B,IAAAJ,UAAAU,KAAA,OACAmlC,EAAA17D,EAAAC,QAAA4b,wBAAA8/C,EAAA37D,EAAAi6B,QAAApe,wBACAK,EAAA0/C,MAAAxvD,KAAA0E,IAAA,EAAA1E,KAAAC,IAAArM,EAAAC,QAAAqtB,aAAA,GACAmuC,EAAA1sC,IAAA4sC,EAAA5sC,IAAA2sC,EAAA3sC,MACA7S,EAAA2/C,OAAAzvD,KAAA0E,IAAA,EAAA1E,KAAAC,IAAArM,EAAAC,QAAAgsB,YAAA,GACAwvC,EAAA1/C,KAAA4/C,EAAA5/C,KAAA2/C,EAAA3/C,OAGA,OAAAG,GAGA4+C,GAAA/wD,UAAA4rB,cAAA,SAAAmmC,GACA,IAAA97D,EAAAxE,KAAAwa,GAAAhW,QACAuH,EAAAvH,EAAAg5B,UAAA8iC,EAAA/lC,SACAxuB,EAAAvH,EAAAqnC,aAAAy0B,EAAAn/C,WACA,MAAAm/C,EAAAF,QACApgE,KAAAyE,QAAAC,MAAA6uB,IAAA+sC,EAAAF,MAAA,KACApgE,KAAAyE,QAAAC,MAAA6b,KAAA+/C,EAAAD,OAAA,OAMAf,GAAA/wD,UAAA6vB,MAAA,SAAAyG,GACA,IAAA7kC,KAAAugE,qBAAAvgE,KAAA+6D,UAAA,CACA,IAAAvgD,EAAAxa,KAAAwa,GACA,GAAAA,EAAAwzB,oBAAA,CACAhuC,KAAAu/D,UAAA,GACA,IAAAhgE,EAAAib,EAAAuG,eACA/gB,KAAA0/D,SAAAjhE,MAAAc,EACAib,EAAAgI,MAAA6a,SAA6BpvB,EAAAjO,KAAA0/D,UAC7Bh2D,GAAAC,GAAA,IAAkC3J,KAAA6gB,aAAAthB,QAC7BslC,IACL7kC,KAAAu/D,UAAAv/D,KAAA0/D,SAAAjhE,MAAA,GACAiL,GAAAC,GAAA,IAAkC3J,KAAA6gB,aAAA,SAIlCy+C,GAAA/wD,UAAAkoD,SAAA,WAAkD,OAAAz2D,KAAA0/D,UAElDJ,GAAA/wD,UAAAiiD,cAAA,WAAuD,UAEvD8O,GAAA/wD,UAAAsvB,MAAA,WACA,eAAA79B,KAAAwa,GAAA9F,QAAAwpB,YAAA1zB,GAAAsC,KAAA9M,KAAA0/D,UACA,IAAW1/D,KAAA0/D,SAAA7hC,QACX,MAAAr6B,MAIA87D,GAAA/wD,UAAA2uD,KAAA,WAA8Cl9D,KAAA0/D,SAAAxC,QAE9CoC,GAAA/wD,UAAA8wD,cAAA,WACAr/D,KAAAyE,QAAAC,MAAA6uB,IAAAvzB,KAAAyE,QAAAC,MAAA6b,KAAA,GAGA++C,GAAA/wD,UAAA8vB,cAAA,WAAuDr+B,KAAAwgE,YAIvDlB,GAAA/wD,UAAAiyD,SAAA,WACA,IAAA/nB,EAAAz4C,KAEAA,KAAAw/D,aACAx/D,KAAA86D,QAAAjrD,IAAA7P,KAAAwa,GAAA9F,QAAA0oD,aAAA,WACA3kB,EAAA4kB,OACA5kB,EAAAj+B,GAAAgI,MAAA6a,SAAoCob,EAAA+nB,cAOpClB,GAAA/wD,UAAAqxD,SAAA,WACA,IAAAa,GAAA,EAAAh1C,EAAAzrB,KACAyrB,EAAA+zC,aAAA,EAMA/zC,EAAAqvC,QAAAjrD,IAAA,GALA,SAAAjP,IACA6qB,EAAA4xC,QACAoD,GACYh1C,EAAA+zC,aAAA,EAA0B/zC,EAAA+0C,aADNC,GAAA,EAAch1C,EAAAqvC,QAAAjrD,IAAA,GAAAjP,OAY9C0+D,GAAA/wD,UAAA8uD,KAAA,WACA,IAAA5kB,EAAAz4C,KAEAwa,EAAAxa,KAAAwa,GAAAiR,EAAAzrB,KAAA0/D,SAAAH,EAAAv/D,KAAAu/D,UAKA,GAAAv/D,KAAAugE,qBAAA/lD,EAAAgI,MAAA6a,SACAxc,GAAA4K,KAAA8zC,IAAAv/D,KAAA+6D,WACAvgD,EAAAokC,cAAApkC,EAAA9F,QAAA+jD,cAAAj+C,EAAAgI,MAAA2sC,OACO,SAEP,IAAAv7C,EAAA6X,EAAAhtB,MAEA,GAAAmV,GAAA2rD,IAAA/kD,EAAAwzB,oBAAuD,SAIvD,GAAAtkC,GAAAC,GAAA,GAAA3J,KAAA6gB,eAAAjN,GACAnJ,GAAA,kBAAApB,KAAAuK,GAEA,OADA4G,EAAAhW,QAAAinB,MAAA2S,SACA,EAGA,GAAA5jB,EAAA3V,IAAA41B,KAAAjgB,EAAAhW,QAAA25B,kBAAA,CACA,IAAAjrB,EAAAU,EAAAxB,WAAA,GAEA,GADA,MAAAc,GAAAqsD,IAA0CA,EAAA,KAC1C,MAAArsD,EAA0C,OAAdlT,KAAAo+B,QAAcp+B,KAAAwa,GAAA0zC,YAAA,QAI1C,IADA,IAAAwS,EAAA,EAAAlsD,EAAA5D,KAAAC,IAAA0uD,EAAA95D,OAAAmO,EAAAnO,QACAi7D,EAAAlsD,GAAA+qD,EAAAntD,WAAAsuD,IAAA9sD,EAAAxB,WAAAsuD,MAA6EA,EAgB7E,OAdA34B,GAAAvtB,EAAA,WACAm9C,GAAAn9C,EAAA5G,EAAAnI,MAAAi1D,GAAAnB,EAAA95D,OAAAi7D,EACA,KAAAjoB,EAAAsiB,UAAA,iBAGAnnD,EAAAnO,OAAA,KAAAmO,EAAApE,QAAA,SAA0Dic,EAAAhtB,MAAAg6C,EAAA8mB,UAAA,GAC9C9mB,EAAA8mB,UAAA3rD,EAEZ6kC,EAAAsiB,YACAtiB,EAAAsiB,UAAA3vD,MAAAi4B,QACAoV,EAAAsiB,UAAA3vD,MAAAoP,EAAAq+B,SAAAJ,EAAAsiB,UAAAztD,MAAAkN,EAAAkmB,UAAA,OAC4Cn4B,UAAA,6BAG5C,GAGA+2D,GAAA/wD,UAAAugD,aAAA,WACA9uD,KAAAw/D,aAAAx/D,KAAAq9D,SAA0Cr9D,KAAAw/D,aAAA,IAG1CF,GAAA/wD,UAAAyhD,WAAA,WACAtmD,GAAAC,GAAA,IAAgC3J,KAAA6gB,aAAA,MAChC7gB,KAAA4/D,YAGAN,GAAA/wD,UAAA+kD,cAAA,SAAA9vD,GACA,IAAAioB,EAAAzrB,KAAAwa,EAAAiR,EAAAjR,GAAAhW,EAAAgW,EAAAhW,QAAAwc,EAAAyK,EAAAi0C,SACAj0C,EAAA80C,oBAAmC90C,EAAA80C,qBACnC,IAAA9vD,EAAAipB,GAAAlf,EAAAhX,GAAA+jC,EAAA/iC,EAAAmtB,SAAAtuB,UACA,GAAAoN,IAAAxG,EAAA,CAIAuQ,EAAA9F,QAAAisD,8BACA,GAAAnmD,EAAA3V,IAAA41B,IAAAhuB,SAAAgE,IACOu3B,GAAAxtB,EAAA84B,GAAAtL,CAAAxtB,EAAA3V,IAAA0pC,GAAA99B,GAAAN,GAEP,IAIAywD,EAJAC,EAAA7/C,EAAAtc,MAAA2H,QAAAy0D,EAAAr1C,EAAAhnB,QAAAC,MAAA2H,QACA00D,EAAAt1C,EAAAhnB,QAAAu8D,aAAA3gD,wBAwDA,GAvDAoL,EAAAhnB,QAAAC,MAAA2H,QAAA,mBACA2U,EAAAtc,MAAA2H,QAAA,+DAAsE7I,EAAAu2B,QAAAgnC,EAAAxtC,IAAA,iBAAwD/vB,EAAAs2B,QAAAinC,EAAAxgD,KAAA,6CAAyE7W,EAAA,8JAEvMI,IAAiB82D,EAAA9/C,OAAAmgD,SACjBz8D,EAAAinB,MAAAoS,QACA/zB,GAAiBgX,OAAAogD,SAAA,KAAAN,GACjBp8D,EAAAinB,MAAA2S,QAEA5jB,EAAAwzB,sBAAkChtB,EAAAviB,MAAAgtB,EAAA8zC,UAAA,KAClC9zC,EAAA80C,mBAAAY,EACA38D,EAAA25B,kBAAA3jB,EAAA3V,IAAA41B,IACA1qB,aAAAvL,EAAA48D,oBA2CA13D,GAAAC,GAAA,GAAgC03D,IAChCr2D,EAAA,CACAmU,GAAA3b,GACA,IAAA89D,EAAA,WACAp7D,GAAA4a,OAAA,UAAAwgD,GACAn+D,WAAAg+D,EAAA,KAEAp8D,GAAA+b,OAAA,UAAAwgD,QAEAn+D,WAAAg+D,EAAA,IA/CA,SAAAE,IACA,SAAArgD,EAAAvR,eAAA,CACA,IAAA+vC,EAAAhlC,EAAAwzB,oBACAuzB,EAAA,KAAA/hB,EAAAx+B,EAAAviB,MAAA,IACAuiB,EAAAviB,MAAA,IACAuiB,EAAAviB,MAAA8iE,EACA91C,EAAA8zC,UAAA/f,EAAA,OACAx+B,EAAAvR,eAAA,EAA8BuR,EAAAtR,aAAA6xD,EAAA97D,OAG9BjB,EAAA25B,kBAAA3jB,EAAA3V,IAAA41B,KAGA,SAAA0mC,IACA,GAAA11C,EAAA80C,oBAAAY,IACA11C,EAAA80C,oBAAA,EACA90C,EAAAhnB,QAAAC,MAAA2H,QAAAy0D,EACA9/C,EAAAtc,MAAA2H,QAAAw0D,EACAn3D,GAAAC,EAAA,GAAiCnF,EAAA88B,WAAAJ,aAAA18B,EAAAmtB,SAAAtuB,UAAAkkC,GAGjC,MAAAvmB,EAAAvR,gBAAA,GACA/F,MAAAC,EAAA,IAA4C03D,IAC5C,IAAA5hE,EAAA,EAAA49D,EAAA,WACA74D,EAAA25B,mBAAA3jB,EAAA3V,IAAA41B,KAAA,GAAAzZ,EAAAvR,gBACAuR,EAAAtR,aAAA,QAAA+b,EAAA8zC,UACAv3B,GAAAxtB,EAAAq6B,GAAA7M,CAAAxtB,GACW/a,IAAA,GACX+E,EAAA48D,mBAAAj+D,WAAAk6D,EAAA,MAEA74D,EAAA25B,kBAAA,KACA35B,EAAAinB,MAAA2S,UAGA55B,EAAA48D,mBAAAj+D,WAAAk6D,EAAA,QAiBAiC,GAAA/wD,UAAA6wD,gBAAA,SAAA18C,GACAA,GAAe1iB,KAAAo+B,QACfp+B,KAAA0/D,SAAA8B,SAAA,YAAA9+C,GAGA48C,GAAA/wD,UAAAod,cAAA,aAEA2zC,GAAA/wD,UAAAmd,uBAAA,EAn6DA,SAAAuyB,GACA,IAAAmW,EAAAnW,EAAAmW,eAEA,SAAAjD,EAAAhwD,EAAAsgE,EAAAlqB,EAAAmqB,GACAzjB,EAAAkW,SAAAhzD,GAAAsgE,EACAlqB,IAAmB6c,EAAAjzD,GACnBugE,EAAA,SAAAlnD,EAAAkI,EAAA7L,GAA6CA,GAAAq9C,IAAkB3c,EAAA/8B,EAAAkI,EAAA7L,IAAyB0gC,GAGxF0G,EAAA0jB,aAAAxQ,EAGAlT,EAAAiW,QAIA/C,EAAA,oBAAA32C,EAAAkI,GAA4C,OAAAlI,EAAAvX,SAAAyf,KAA2B,GACvEyuC,EAAA,qBAAA32C,EAAAkI,GACAlI,EAAA3V,IAAAgqC,WAAAnsB,EACAksB,GAAAp0B,KACK,GAEL22C,EAAA,eAAAviB,IAAA,GACAuiB,EAAA,qBACAA,EAAA,kBACAA,EAAA,qBAAA32C,GACAs0B,GAAAt0B,GACAib,GAAAjb,GACA2tB,GAAA3tB,KACK,GAEL22C,EAAA,8BAAA32C,EAAAkI,GAEA,GADAlI,EAAA3V,IAAAo1C,QAAAv3B,EACAA,EAAA,CACA,IAAAk/C,KAAA5tD,EAAAwG,EAAA3V,IAAAqO,MACAsH,EAAA3V,IAAA8O,KAAA,SAAAD,GACA,QAAAjD,EAAA,IAA0B,CAC1B,IAAA+G,EAAA9D,EAAAE,KAAApE,QAAAkT,EAAAjS,GACA,OAAA+G,EAA4B,MAC5B/G,EAAA+G,EAAAkL,EAAAjd,OACAm8D,EAAAhiE,KAAAiV,GAAAb,EAAAwD,IAEAxD,MAEA,QAAAvU,EAAAmiE,EAAAn8D,OAAA,EAAwChG,GAAA,EAAQA,IACvCs3C,GAAAv8B,EAAA3V,IAAA6d,EAAAk/C,EAAAniE,GAAAoV,GAAA+sD,EAAAniE,GAAAiU,KAAAkuD,EAAAniE,GAAAkS,GAAA+Q,EAAAjd,YAET0rD,EAAA,mGAAA32C,EAAAkI,EAAA7L,GACA2D,EAAAgI,MAAAoI,aAAA,IAAAzf,OAAAuX,EAAA1Q,QAAA0Q,EAAArZ,KAAA,qBACAwN,GAAAq9C,IAAwB15C,EAAAqnD,YAExB1Q,EAAA,yBAAAhnC,GAAA,SAAA3P,GAAmF,OAAAA,EAAAqnD,YAAuB,GAC1G1Q,EAAA,oBACAA,EAAA,aAAA3mD,EAAA,wCACA,UAAA2I,MAAA,6DACK,GACLg+C,EAAA,yBAAA32C,EAAAkI,GAAoD,OAAAlI,EAAAsnD,gBAAA5I,WAAAx2C,IAA8C,GAClGyuC,EAAA,0BAAA32C,EAAAkI,GAAqD,OAAAlI,EAAAsnD,gBAAA3I,YAAAz2C,IAA+C,GACpGyuC,EAAA,6BAAA32C,EAAAkI,GAAwD,OAAAlI,EAAAsnD,gBAAA1I,eAAA12C,IAAkD,GAC1GyuC,EAAA,mBAAAxmD,GACAwmD,EAAA,4BAEAA,EAAA,2BAAA32C,GACAw5C,GAAAx5C,GACA65C,GAAA75C,KACK,GACL22C,EAAA,4BAAA32C,EAAAkI,EAAA7L,GACA,IAAA4M,EAAA8gC,GAAA7hC,GACA7G,EAAAhF,GAAAq9C,IAAA3P,GAAA1tC,GACAgF,KAAAkmD,QAAgClmD,EAAAkmD,OAAAvnD,EAAAiJ,GAChCA,EAAAu+C,QAAwBv+C,EAAAu+C,OAAAxnD,EAAAqB,GAAA,QAExBs1C,EAAA,kBACAA,EAAA,uBAEAA,EAAA,kBAAA2D,IAAA,GACA3D,EAAA,sBAAA32C,GACA2xB,GAAA3xB,EAAA9F,SACA2/C,GAAA75C,KACK,GACL22C,EAAA,0BAAA32C,EAAAkI,GACAlI,EAAAhW,QAAA2qB,QAAAzqB,MAAA6b,KAAAmC,EAAAyW,GAAA3e,EAAAhW,SAAA,SACAgW,EAAAqnD,YACK,GACL1Q,EAAA,yCAAA32C,GAA+D,OAAA+oB,GAAA/oB,KAA+B,GAC9F22C,EAAA,mCAAA32C,GACA6pB,GAAA7pB,GACA+oB,GAAA/oB,GACAA,EAAAhW,QAAA88B,WAAAJ,aAAA1mB,EAAA3V,IAAAxB,WACAmX,EAAAhW,QAAA88B,WAAAC,cAAA/mB,EAAA3V,IAAAvB,cACK,GACL6tD,EAAA,0BAAA32C,GACA2xB,GAAA3xB,EAAA9F,SACA2/C,GAAA75C,KACK,GACL22C,EAAA,oBAAAkD,IAAA,GACAlD,EAAA,+BAAA8Q,GAAsD,OAAAA,GAAkB5N,IAAA,GACxElD,EAAA,6BAAAj3B,IAAA,GAEAi3B,EAAA,kCACAA,EAAA,sBACAA,EAAA,6BACAA,EAAA,yBAEAA,EAAA,uBAAA32C,EAAAkI,GACA,YAAAA,IACAub,GAAAzjB,GACAA,EAAAhW,QAAAinB,MAAAyxC,QAEA1iD,EAAAhW,QAAAinB,MAAA2zC,gBAAA18C,KAEAyuC,EAAA,2BAAA32C,EAAAkI,GAAsDA,GAAWlI,EAAAhW,QAAAinB,MAAA2S,UAA6B,GAC9F+yB,EAAA,cAAAmD,IACAnD,EAAA,2BAEAA,EAAA,uBACAA,EAAA,wBACAA,EAAA,iBAAAj3B,IAAA,GACAi3B,EAAA,+BAAAj3B,IAAA,GACAi3B,EAAA,gBACAA,EAAA,iBACAA,EAAA,kBAAAriB,IAAA,GACAqiB,EAAA,kBAAAriB,IAAA,GACAqiB,EAAA,oBACAA,EAAA,yBAAA32C,EAAAkI,GAAiD,OAAAlI,EAAA3V,IAAAitC,QAAAlB,UAAAluB,IACjDyuC,EAAA,0BACAA,EAAA,6BAAA32C,GAAgD,OAAAA,EAAAqnD,YAAuB,GACvE1Q,EAAA,yBAAAriB,IAAA,GACAqiB,EAAA,kCAAA32C,EAAAkI,GACAA,GAAiBlI,EAAAhW,QAAAinB,MAAA4zC,kBAGjBlO,EAAA,yBAAA32C,EAAAkI,GAAiD,OAAAlI,EAAAhW,QAAAinB,MAAAgrC,WAAAt0B,SAAAzf,GAAA,KACjDyuC,EAAA,kBACAA,EAAA,2BAAA32C,EAAAkI,GAAmD,OAAAlI,EAAA3V,IAAAw5C,aAAA37B,KAAmC,GACtFyuC,EAAA,gBAq4DA+Q,CAAAjkB,IA/9CA,SAAAA,GACA,IAAAmW,EAAAnW,EAAAmW,eAEA+N,EAAAlkB,EAAAkkB,WAEAlkB,EAAA1vC,WACA4rC,YAAA8D,EACApgB,MAAA,WAAwB/c,OAAA+c,QAAe79B,KAAAwE,QAAAinB,MAAAoS,SAEvCukC,UAAA,SAAAjR,EAAA1yD,GACA,IAAAiW,EAAA1U,KAAA0U,QAAAmC,EAAAnC,EAAAy8C,GACAz8C,EAAAy8C,IAAA1yD,GAAA,QAAA0yD,IACAz8C,EAAAy8C,GAAA1yD,EACA21D,EAAAplD,eAAAmiD,IACWnpB,GAAAhoC,KAAAo0D,EAAAjD,GAAAnpB,CAAAhoC,KAAAvB,EAAAoY,GACXkH,GAAA/d,KAAA,eAAAA,KAAAmxD,KAGA3nC,UAAA,SAAA2nC,GAAmC,OAAAnxD,KAAA0U,QAAAy8C,IACnCkR,OAAA,WAA0B,OAAAriE,KAAA6E,KAE1By9D,UAAA,SAAA7kD,EAAA6V,GACAtzB,KAAAwiB,MAAA6sC,QAAA/7B,EAAA,kBAAAixB,GAAA9mC,KAEA8kD,aAAA,SAAA9kD,GAEA,IADA,IAAAsM,EAAA/pB,KAAAwiB,MAAA6sC,QACA5vD,EAAA,EAAuBA,EAAAsqB,EAAAtkB,SAAiBhG,EAC7B,GAAAsqB,EAAAtqB,IAAAge,GAAAsM,EAAAtqB,GAAA0B,MAAAsc,EAEX,OADAsM,EAAA9R,OAAAxY,EAAA,IACA,GAIA+iE,WAAAv6B,GAAA,SAAArmB,EAAAlN,GACA,IAAAjT,EAAAmgB,EAAAiG,MAAAjG,EAAAq8B,EAAAp8B,QAAA7hB,KAAA0U,QAAAkN,GACA,GAAAngB,EAAAohB,WAA8B,UAAA1P,MAAA,kCA9zP9B,SAAAvD,EAAAnR,EAAAgkE,GAEA,IADA,IAAAhyD,EAAA,EAAAiyD,EAAAD,EAAAhkE,GACAgS,EAAAb,EAAAnK,QAAAg9D,EAAA7yD,EAAAa,KAAAiyD,GAAiEjyD,IACjEb,EAAAqI,OAAAxH,EAAA,EAAAhS,GA4zPAkkE,CAAA3iE,KAAAwiB,MAAAmD,UACsBlkB,OAAAmhE,SAAAhhD,EAAAiE,OAAAnR,KAAAmR,OACtB68C,SAAAhuD,KAAAguD,UAAA,GACA,SAAAh9C,GAAyC,OAAAA,EAAAg9C,WACzC1iE,KAAAwiB,MAAA6C,UACA8iB,GAAAnoC,QAEA6iE,cAAA56B,GAAA,SAAArmB,GAIA,IAHA,IAEA+D,EAAA3lB,KAAAwiB,MAAAmD,SACAlmB,EAAA,EAAuBA,EAAAkmB,EAAAlgB,SAAqBhG,EAAA,CAC5C,IAAAwU,EAAA0R,EAAAlmB,GAAAmjE,SACA,GAAA3uD,GAAA2N,GAAA,iBAAAA,GAAA3N,EAAA9S,MAAAygB,EAIA,OAHA+D,EAAA1N,OAAAxY,EAAA,GANAO,KAOAwiB,MAAA6C,eACA8iB,GARAnoC,SAcAsuD,WAAArmB,GAAA,SAAAppC,EAAA0T,EAAAwkD,GACA,iBAAAxkD,GAAA,iBAAAA,IAC4BA,EAA5B,MAAAA,EAA4BvS,KAAA0U,QAAAikD,YAAA,eACZpmD,EAAA,kBAEhBgC,GAAAvU,KAAA6E,IAAAhG,IAAkCyvD,GAAAtuD,KAAAnB,EAAA0T,EAAAwkD,KAElCpJ,gBAAA1lB,GAAA,SAAA6uB,GAIA,IAHA,IAEAp8B,EAAA16B,KAAA6E,IAAA41B,IAAAC,OAAAntB,GAAA,EACA9N,EAAA,EAAuBA,EAAAi7B,EAAAj1B,OAAmBhG,IAAA,CAC1C,IAAAwhB,EAAAyZ,EAAAj7B,GACA,GAAAwhB,EAAA2Z,QASW3Z,EAAA8Z,KAAArnB,KAAAnG,IACX+gD,GAfAtuD,KAeAihB,EAAA8Z,KAAArnB,KAAAojD,GAAA,GACAvpD,EAAA0T,EAAA8Z,KAAArnB,KACAjU,GAjBAO,KAiBA6E,IAAA41B,IAAAE,WAAgD8F,GAjBhDzgC,WAKA,CACA,IAAA2S,EAAAsO,EAAAtO,OAAAC,EAAAqO,EAAArO,KACAtF,EAAAsD,KAAA0E,IAAA/H,EAAAoF,EAAAe,MACAnG,EAAAqD,KAAAC,IARA7Q,KAQA8Z,WAAAlH,EAAAc,MAAAd,EAAAjB,GAAA,QACA,QAAAyK,EAAA9O,EAA+B8O,EAAA7O,IAAS6O,EACzBkyC,GAVftuD,KAUeoc,EAAA06C,GACf,IAAAgM,EAXA9iE,KAWA6E,IAAA41B,IAAAC,OACA,GAAA/nB,EAAAhB,IAAA+oB,EAAAj1B,QAAAq9D,EAAAr9D,QAAAq9D,EAAArjE,GAAAkT,OAAAhB,GAAA,GACe8hC,GAbfzzC,KAae6E,IAAApF,EAAA,IAAAsuC,GAAAp7B,EAAAmwD,EAAArjE,GAAAmT,MAAAzC,OAWf4yD,WAAA,SAAAtyD,EAAAmW,GACA,OAAAoB,GAAAhoB,KAAAyQ,EAAAmW,IAGAo8C,cAAA,SAAAtvD,EAAAkT,GACA,OAAAoB,GAAAhoB,KAAA6U,GAAAnB,GAAAkT,GAAA,IAGAq8C,eAAA,SAAAxyD,GACAA,EAAA8E,GAAAvV,KAAA6E,IAAA4L,GACA,IAEAvJ,EAFA4e,EAAAI,GAAAlmB,KAAAiT,GAAAjT,KAAA6E,IAAA4L,EAAAiD,OACAgJ,EAAA,EAAAlR,GAAAsa,EAAArgB,OAAA,KAAAkM,EAAAlB,EAAAkB,GAEA,MAAAA,EAAsBzK,EAAA4e,EAAA,QACR,OAAQ,CACtB,IAAAhT,EAAA4J,EAAAlR,GAAA,EACA,IAAAsH,EAAAgT,EAAA,EAAAhT,EAAA,OAAAnB,EAAsDnG,EAAAsH,MACtD,MAAAgT,EAAA,EAAAhT,EAAA,GAAAnB,GACA,CAAgBzK,EAAA4e,EAAA,EAAAhT,EAAA,GAA4B,MADE4J,EAAA5J,EAAA,GAG9C,IAAAy1B,EAAArhC,IAAAsI,QAAA,eACA,OAAA+4B,EAAA,EAAArhC,EAAA,GAAAqhC,EAAA,KAAArhC,EAAAuE,MAAA,EAAA88B,EAAA,IAGAqwB,UAAA,SAAAnoD,GACA,IAAAhP,EAAAzB,KAAA6E,IAAApD,KACA,OAAAA,EAAAkhB,UACAs7B,EAAAt7B,UAAAlhB,EAAAzB,KAAA+iE,WAAAtyD,GAAA+R,OAAA/gB,KAD8BA,GAI9B24D,UAAA,SAAA3pD,EAAAvJ,GACA,OAAAlH,KAAAkjE,WAAAzyD,EAAAvJ,GAAA,IAGAg8D,WAAA,SAAAzyD,EAAAvJ,GACA,IAEAsQ,KACA,IAAA2qD,EAAAnzD,eAAA9H,GAA4C,OAAAsQ,EAC5C,IAAA2rD,EAAAhB,EAAAj7D,GAAAzF,EAAAzB,KAAA44D,UAAAnoD,GACA,oBAAAhP,EAAAyF,GACAi8D,EAAA1hE,EAAAyF,KAAiCsQ,EAAA5X,KAAAujE,EAAA1hE,EAAAyF,UACxB,GAAAzF,EAAAyF,GACT,QAAAzH,EAAA,EAAyBA,EAAAgC,EAAAyF,GAAAzB,OAAuBhG,IAAA,CAChD,IAAAijB,EAAAygD,EAAA1hE,EAAAyF,GAAAzH,IACAijB,GAAsBlL,EAAA5X,KAAA8iB,QAEbjhB,EAAAygB,YAAAihD,EAAA1hE,EAAAygB,YACT1K,EAAA5X,KAAAujE,EAAA1hE,EAAAygB,aACSihD,EAAA1hE,EAAAN,OACTqW,EAAA5X,KAAAujE,EAAA1hE,EAAAN,OAEA,QAAAkT,EAAA,EAAyBA,EAAA8uD,EAAAC,QAAA39D,OAA2B4O,IAAA,CACpD,IAAAJ,EAAAkvD,EAAAC,QAAA/uD,GACAJ,EAAAvB,KAAAjR,EAnBAzB,QAmBA,GAAAwP,EAAAgI,EAAAvD,EAAAyO,MACalL,EAAA5X,KAAAqU,EAAAyO,KAEb,OAAAlL,GAGA6rD,cAAA,SAAA3vD,EAAAkT,GACA,IAAA/hB,EAAA7E,KAAA6E,IAEA,OAAAuhB,GAAApmB,MADA0T,EAAA2B,GAAAxQ,EAAA,MAAA6O,EAAA7O,EAAAqO,MAAArO,EAAAlD,KAAA,EAAA+R,IACA,EAAAkT,GAAApE,OAGAuU,aAAA,SAAAzpB,EAAA7L,GACA,IAAAwf,EAAAjhB,KAAA6E,IAAA41B,IAAAJ,UAIA,OAAAtD,GAAA/2B,KAHA,MAAAsN,EAA4B2T,EAAA8Z,KAC5B,iBAAAztB,EAA4CiI,GAAAvV,KAAA6E,IAAAyI,GAC9BA,EAAA2T,EAAAtO,OAAAsO,EAAArO,KACdnR,GAAA,SAGAq1B,WAAA,SAAArmB,EAAAhP,GACA,OAAAq1B,GAAA92B,KAAAuV,GAAAvV,KAAA6E,IAAA4L,GAAAhP,GAAA,SAGAi2B,WAAA,SAAAf,EAAAl1B,GAEA,OAAAi2B,GAAA13B,MADA22B,EAAAD,GAAA12B,KAAA22B,EAAAl1B,GAAA,SACA8e,KAAAoW,EAAApD,MAGApf,aAAA,SAAA7P,EAAA7C,GAEA,OADA6C,EAAAoyB,GAAA12B,MAAwCuzB,IAAAjvB,EAAAic,KAAA,GAAqB9e,GAAA,QAAA8xB,IAC7Dpf,GAAAnU,KAAA6E,IAAAP,EAAAtE,KAAAwE,QAAA+xB,aAEArc,aAAA,SAAAxG,EAAAjS,EAAA40B,GACA,IAAAlc,EAAA5M,GAAA,EACA,oBAAAmG,EAAA,CACA,IAAA8B,EAAAxV,KAAA6E,IAAAqO,MAAAlT,KAAA6E,IAAAlD,KAAA,EACA+R,EAAA1T,KAAA6E,IAAAqO,MAAsCQ,EAAA1T,KAAA6E,IAAAqO,MACtCQ,EAAA8B,IAAiC9B,EAAA8B,EAAajI,GAAA,GAC9C4M,EAAAlH,GAAAjT,KAAA6E,IAAA6O,QAEAyG,EAAAzG,EAEA,OAAA0iB,GAAAp2B,KAAAma,GAA+CoZ,IAAA,EAAAhT,KAAA,GAAgB9e,GAAA,OAAA40B,GAAA9oB,GAAAgmB,KAC/DhmB,EAAAvN,KAAA6E,IAAAP,OAAA4V,GAAAC,GAAA,IAGAmpD,kBAAA,WAAqC,OAAAvqC,GAAA/4B,KAAAwE,UACrC++D,iBAAA,WAAoC,OAAA7uC,GAAA10B,KAAAwE,UAEpCg/D,YAAA,WAA+B,OAAS7wD,KAAA3S,KAAAwE,QAAA6iB,SAAAzU,GAAA5S,KAAAwE,QAAA8iB,SAExCm8C,UAAA,SAAAhzD,EAAAnF,EAAA3G,EAAAs9B,EAAAC,GACA,IAx1JA1nB,EAAAmY,EACA4U,EAu1JA/iC,EAAAxE,KAAAwE,QAEA+uB,GADA9iB,EAAAsmB,GAAA/2B,KAAAuV,GAAAvV,KAAA6E,IAAA4L,KACA6iB,OAAA/S,EAAA9P,EAAA8P,KAKA,GAJAjV,EAAA5G,MAAA2rB,SAAA,WACA/kB,EAAAkB,aAAA,2BACAxM,KAAAwE,QAAAinB,MAAAE,cAAArgB,GACA9G,EAAAosB,MAAA3kB,YAAAX,GACA,QAAA22B,EACA1O,EAAA9iB,EAAA8iB,SACS,YAAA0O,GAAA,QAAAA,EAAA,CACT,IAAAyhC,EAAA9yD,KAAA0E,IAAA9Q,EAAAC,QAAAqtB,aAAA9xB,KAAA6E,IAAAP,QACAq/D,EAAA/yD,KAAA0E,IAAA9Q,EAAAosB,MAAAH,YAAAjsB,EAAAusB,UAAAN,cAEA,SAAAwR,GAAAxxB,EAAA6iB,OAAAhoB,EAAA0U,aAAA0jD,IAAAjzD,EAAA8iB,IAAAjoB,EAAA0U,aACauT,EAAA9iB,EAAA8iB,IAAAjoB,EAAA0U,aACbvP,EAAA6iB,OAAAhoB,EAAA0U,cAAA0jD,IACanwC,EAAA9iB,EAAA6iB,QACb/S,EAAAjV,EAAA2U,YAAA0jD,IACapjD,EAAAojD,EAAAr4D,EAAA2U,aAEb3U,EAAA5G,MAAA6uB,MAAA,KACAjoB,EAAA5G,MAAA6b,KAAAjV,EAAA5G,MAAA8b,MAAA,GACA,SAAA0hB,GACA3hB,EAAA/b,EAAAosB,MAAAH,YAAAnlB,EAAA2U,YACA3U,EAAA5G,MAAA8b,MAAA,QAEA,QAAA0hB,EAAgC3hB,EAAA,EAChC,UAAA2hB,IAAuC3hB,GAAA/b,EAAAosB,MAAAH,YAAAnlB,EAAA2U,aAAA,GACvC3U,EAAA5G,MAAA6b,OAAA,MAEA5b,IAt3JA6V,EAu3JWxa,KAv3JX2yB,GAu3JkCpS,OAAAgT,MAAA/S,MAAAD,EAAAjV,EAAA2U,YAAAqT,OAAAC,EAAAjoB,EAAA0U,cAr3JlC,OADAunB,EAAA1H,GAAArlB,EAAAmY,IACAtvB,WAAsC29B,GAAAxmB,EAAA+sB,EAAAlkC,WACtC,MAAAkkC,EAAAjkC,YAAuCi+B,GAAA/mB,EAAA+sB,EAAAjkC,cAu3JvCk6D,iBAAAv1B,GAAA0nB,IACAiU,kBAAA37B,GAAA+nB,IACA6T,eAAA9T,GACA+T,mBAAA77B,GAAAqoB,IAEApC,YAAA,SAAAlK,GACA,GAAAkH,GAAAl8C,eAAAg1C,GACW,OAAAkH,GAAAlH,GAAAx1C,KAAA,KAAAxO,OAGXq4D,gBAAApwB,GAAA,SAAAr0B,GAAgDykD,GAAAr4D,KAAA4T,KAEhD2lD,SAAA,SAAA5mD,EAAAoxD,EAAA3S,EAAA1L,GACA,IAEAnzC,EAAA,EACAwxD,EAAA,IAAyBxxD,GAAA,EAAUwxD,MAEnC,IADA,IAAA9vD,EAAAsB,GAAAvV,KAAA6E,IAAA8N,GACAlT,EAAA,EAAuBA,EAAAskE,KACvB9vD,EAAAslD,GANAv5D,KAMA6E,IAAAoP,EAAA1B,EAAA6+C,EAAA1L,IACA2U,UAFmC56D,GAInC,OAAAwU,GAGA04C,MAAA1kB,GAAA,SAAA11B,EAAA6+C,GACA,IAAA3Y,EAAAz4C,KAEAA,KAAA66C,mBAAA,SAAA55B,GACA,OAAAw3B,EAAAj0C,QAAA85B,OAAAma,EAAA5zC,IAAAimC,QAAA7pB,EAAA2Z,QACa2+B,GAAA9gB,EAAA5zC,IAAAoc,EAAA8Z,KAAAxoB,EAAA6+C,EAAA3Y,EAAA/jC,QAAAsvD,iBAEAzxD,EAAA,EAAA0O,EAAAtO,OAAAsO,EAAArO,MACJtC,KAGT88C,QAAAnlB,GAAA,SAAA11B,EAAA6+C,GACA,IAAA32B,EAAAz6B,KAAA6E,IAAA41B,IAAA51B,EAAA7E,KAAA6E,IACA41B,EAAAuT,oBACWnpC,EAAAo2C,iBAAA,mBAEAiK,GAAAllD,KAAA,SAAAihB,GACX,IAAAoW,EAAAkiC,GAAA10D,EAAAoc,EAAA8Z,KAAAxoB,EAAA6+C,GAAA,GACA,OAAA7+C,EAAA,GAA8BI,KAAA0kB,EAAAzkB,GAAAqO,EAAA8Z,OAAmCpoB,KAAAsO,EAAA8Z,KAAAnoB,GAAAykB,OAIjEijC,SAAA,SAAA3nD,EAAAoxD,EAAA3S,EAAA6S,GACA,IAEA1xD,EAAA,EAAA2C,EAAA+uD,EACAF,EAAA,IAAyBxxD,GAAA,EAAUwxD,MAEnC,IADA,IAAA9vD,EAAAsB,GAAAvV,KAAA6E,IAAA8N,GACAlT,EAAA,EAAuBA,EAAAskE,IAAYtkE,EAAA,CACnC,IAAAk3B,EAAAI,GANA/2B,KAMAiU,EAAA,OAIA,GAHA,MAAAiB,EAA0BA,EAAAyhB,EAAApW,KACVoW,EAAApW,KAAArL,GAChBjB,EAAAqmD,GATAt6D,KASA22B,EAAApkB,EAAA6+C,IACAiJ,QAA4B,MAE5B,OAAApmD,GAGAq4C,MAAArkB,GAAA,SAAA11B,EAAA6+C,GACA,IAAA3Y,EAAAz4C,KAEA6E,EAAA7E,KAAA6E,IAAAq/D,KACAp2D,GAAA9N,KAAAwE,QAAA85B,QAAAz5B,EAAAimC,QAAAjmC,EAAA41B,IAAAuT,oBAYA,GAXAnpC,EAAAg2C,mBAAA,SAAA55B,GACA,GAAAnT,EACa,OAAAyE,EAAA,EAAA0O,EAAAtO,OAAAsO,EAAArO,KACb,IAAAqtD,EAAAlpC,GAAA0hB,EAAAx3B,EAAA8Z,KAAA,OACA,MAAA9Z,EAAAgjD,aAA4ChE,EAAA1/C,KAAAU,EAAAgjD,YAC5CC,EAAAtkE,KAAAqgE,EAAA1/C,MACA,IAAA9P,EAAA6pD,GAAA7hB,EAAAwnB,EAAA1tD,EAAA6+C,GAGA,MAFA,QAAAA,GAAAnwC,GAAApc,EAAA41B,IAAAJ,WACakG,GAAAkY,EAAA3hB,GAAA2hB,EAAAhoC,EAAA,OAAA8iB,IAAA0sC,EAAA1sC,KACb9iB,GACSH,GACT4zD,EAAAz+D,OAA2B,QAAAhG,EAAA,EAAgBA,EAAAoF,EAAA41B,IAAAC,OAAAj1B,OAA2BhG,IAC3DoF,EAAA41B,IAAAC,OAAAj7B,GAAAwkE,WAAAC,EAAAzkE,KAIX8zD,WAAA,SAAA9iD,GACA,IAAAiD,EAAAT,GAAAjT,KAAA6E,IAAA4L,EAAAiD,MAAAE,KACAtG,EAAAmD,EAAAkB,GAAApE,EAAAkD,EAAAkB,GACA,GAAA+B,EAAA,CACA,IAAA3B,EAAA/R,KAAAo6D,UAAA3pD,EAAA,aACA,UAAAA,EAAAqE,QAAAvH,GAAAmG,EAAAjO,SAAA6H,IAA0FC,IAAlBD,EAMxE,IALA,IAAA62D,EAAAzwD,EAAAlB,OAAAlF,GACA82D,EAAAtyD,GAAAqyD,EAAApyD,GACA,SAAAJ,GAA6B,OAAAG,GAAAH,EAAAI,IAC7B,KAAA1I,KAAA86D,GAAA,SAAAxyD,GAAoD,WAAAtI,KAAAsI,IACpD,SAAAA,GAA6B,YAAAtI,KAAAsI,KAAAG,GAAAH,IAC7BrE,EAAA,GAAA82D,EAAA1wD,EAAAlB,OAAAlF,EAAA,OAA8DA,EAC9D,KAAAC,EAAAmG,EAAAjO,QAAA2+D,EAAA1wD,EAAAlB,OAAAjF,OAAgEA,EAEhE,WAAAwgC,GAAAl5B,GAAApE,EAAAiD,KAAApG,GAAAuH,GAAApE,EAAAiD,KAAAnG,KAGAihD,gBAAA,SAAA/vD,GACA,MAAAA,MAAAuB,KAAAwiB,MAAA1T,aACA9O,KAAAwiB,MAAA1T,WAAA9O,KAAAwiB,MAAA1T,WACWpG,EAAA1I,KAAAwE,QAAAg5B,UAAA,wBAEAnyB,EAAArL,KAAAwE,QAAAg5B,UAAA,wBAEXzf,GAAA/d,KAAA,kBAAAA,UAAAwiB,MAAA1T,aAEA67B,SAAA,WAA4B,OAAA3qC,KAAAwE,QAAAinB,MAAAgrC,YAAA3pD,KAC5B8xC,WAAA,WAA8B,SAAA5+C,KAAA0U,QAAAwpB,WAAAl+B,KAAA6E,IAAA+vC,WAE9BssB,SAAAj5B,GAAA,SAAA/yB,EAAAyiB,GAA0CkJ,GAAA7gC,KAAAkV,EAAAyiB,KAC1C0sC,cAAA,WACA,IAAA1yC,EAAA3xB,KAAAwE,QAAAmtB,SACA,OAAgBpR,KAAAoR,EAAAruB,WAAAiwB,IAAA5B,EAAAtuB,UAChBiB,OAAAqtB,EAAA0P,aAAA7P,GAAAxxB,WAAAwE,QAAAutB,UACA9B,MAAA0B,EAAA8P,YAAAjQ,GAAAxxB,WAAAwE,QAAAotB,SACAE,aAAAD,GAAA7xB,MAAAywB,YAAAiB,GAAA1xB,QAGAmnC,eAAAc,GAAA,SAAAhnB,EAAA5Z,GACA,MAAA4Z,GACAA,GAAsBtO,KAAA3S,KAAA6E,IAAA41B,IAAAJ,UAAAU,KAAAnoB,GAAA,MACtB,MAAAvL,IAA+BA,EAAArH,KAAA0U,QAAAksB,qBACtB,iBAAA3f,EACTA,GAAsBtO,KAAAkC,GAAAoM,EAAA,GAAArO,GAAA,MACb,MAAAqO,EAAAtO,OACTsO,GAAsBtO,KAAAsO,EAAArO,GAAA,OAEtBqO,EAAArO,KAA2BqO,EAAArO,GAAAqO,EAAAtO,MAC3BsO,EAAA5Z,UAAA,EAEA,MAAA4Z,EAAAtO,KAAAe,KAp8JA,SAAA8G,EAAAyG,GACAuf,GAAAhmB,GACAA,EAAAiE,MAAAkiB,YAAA1f,EAm8JAqjD,CAAAtkE,KAAAihB,GAEA6f,GAAA9gC,KAAAihB,EAAAtO,KAAAsO,EAAArO,GAAAqO,EAAA5Z,UAIA64C,QAAAjY,GAAA,SAAAhY,EAAA3rB,GACA,IAAAm0C,EAAAz4C,KAEAukE,EAAA,SAAA7hD,GAAwC,uBAAAA,GAAA,QAAArZ,KAAAnB,OAAAwa,MAAA,KAAAA,GACxC,MAAAuN,IAA4BjwB,KAAAwE,QAAAC,QAAAC,MAAAurB,MAAAs0C,EAAAt0C,IAC5B,MAAA3rB,IAA6BtE,KAAAwE,QAAAC,QAAAC,MAAAJ,OAAAigE,EAAAjgE,IAC7BtE,KAAA0U,QAAAse,cAAwCuC,GAAAv1B,MACxC,IAAAuZ,EAAAvZ,KAAAwE,QAAA6iB,SACArnB,KAAA6E,IAAA8O,KAAA4F,EAAAvZ,KAAAwE,QAAA8iB,OAAA,SAAA5T,GACA,GAAAA,EAAAic,QAA6B,QAAAlwB,EAAA,EAAgBA,EAAAiU,EAAAic,QAAAlqB,OAAyBhG,IACzD,GAAAiU,EAAAic,QAAAlwB,GAAAuwB,UAAA,CAAiC4Y,GAAA6P,EAAAl/B,EAAA,UAA4C,QAC1FA,IAEAvZ,KAAAye,MAAA+T,aAAA,EACAzU,GAAA/d,KAAA,UAAAA,QAGAgoC,UAAA,SAAA55B,GAA6B,OAAA25B,GAAA/nC,KAAAoO,IAC7Bq2B,eAAA,WAAiC,OAAAA,GAAAzkC,OACjColC,aAAA,WAA+B,OAAAA,GAAAplC,OAE/B6hE,QAAA55B,GAAA,WACA,IAAA6P,EAAA93C,KAAAwE,QAAAmxB,iBACAwS,GAAAnoC,MACAA,KAAAye,MAAA+T,aAAA,EACAiD,GAAAz1B,MACA6gC,GAAA7gC,UAAA6E,IAAAvB,WAAAtD,KAAA6E,IAAAxB,WACAu8B,GAAA5/B,OACA,MAAA83C,GAAAlnC,KAAAyiB,IAAAykB,EAAA/e,GAAA/4B,KAAAwE,UAAA,KACW+0B,GAAAv5B,MACX+d,GAAA/d,KAAA,UAAAA,QAGAwkE,QAAAv8B,GAAA,SAAApjC,GACA,IAAAgS,EAAA7W,KAAA6E,IAQA,OAPAgS,EAAA2D,GAAA,KACA81B,GAAAtwC,KAAA6E,GACA4wB,GAAAz1B,MACAA,KAAAwE,QAAAinB,MAAA2S,QACAyC,GAAA7gC,KAAA6E,EAAAvB,WAAAuB,EAAAxB,WACArD,KAAAye,MAAA2iB,aAAA,EACAtU,GAAA9sB,KAAA,UAAAA,KAAA6W,GACAA,IAGA4tD,OAAA,SAAAC,GACA,IAAAC,EAAA3kE,KAAA0U,QAAAiwD,QACA,OAAAA,GAAArmE,OAAAiQ,UAAAS,eAAAR,KAAAm2D,EAAAD,GAAAC,EAAAD,MAGA5C,cAAA,WAAgC,OAAA9hE,KAAAwE,QAAAinB,MAAAgrC,YAChCmO,kBAAA,WAAoC,OAAA5kE,KAAAwE,QAAAC,SACpCogE,mBAAA,WAAqC,OAAA7kE,KAAAwE,QAAAmtB,UACrCmzC,iBAAA,WAAmC,OAAA9kE,KAAAwE,QAAA2qB,UAEnCvQ,GAAAq/B,GAEAA,EAAA8mB,eAAA,SAAA79D,EAAA/F,EAAA1C,GACA0jE,EAAAnzD,eAAA9H,KAA0Ci7D,EAAAj7D,GAAA+2C,EAAA/2C,IAAqCk8D,aAC/EjB,EAAAj7D,GAAA/F,GAAA1C,GAEAw/C,EAAA+mB,qBAAA,SAAA99D,EAAA/F,EAAA8jE,EAAAxmE,GACAw/C,EAAA8mB,eAAA79D,EAAA/F,EAAA1C,GACA0jE,EAAAj7D,GAAAk8D,QAAAxjE,MAAkC8S,KAAAuyD,EAAAviD,IAAAjkB,KA8iClCymE,CAAAjnB,IAGA,IAAAknB,GAAA,gDAAApiE,MAAA,KACA,QAAAgM,MAAAirC,GAAAzrC,UAAmCyrC,GAAAzrC,UAAAS,eAAAD,KAAAS,EAAA21D,GAAAp2D,IAAA,IAC9BkvC,GAAA1vC,UAAAQ,IAAA,SAAAq2D,GACL,kBAAyB,OAAAA,EAAA12D,MAAA1O,KAAA6E,IAAA4J,YADpB,CAEAurC,GAAAzrC,UAAAQ,MAkCL,OAhCA6P,GAAAo7B,IACAiE,GAAA8W,aAA4B2K,SAAAJ,GAAA+F,gBAAA5K,IAK5Bxc,GAAAqnB,WAAA,SAAAnkE,GACA88C,GAAAkW,SAAA1yD,MAAA,QAAAN,IAAsD88C,GAAAkW,SAAA1yD,KAAAN,GAhtQtD,SAAAA,EAAAM,GACAgN,UAAAhJ,OAAA,IACOhE,EAAA8jE,aAAAj3D,MAAAC,UAAA9C,MAAA+C,KAAAC,UAAA,IACPgT,GAAAtgB,GAAAM,GA8sQAiN,MAAA1O,KAAAyO,YAGAwvC,GAAAunB,WA9sQA,SAAAC,EAAA7jD,GACAF,GAAA+jD,GAAA7jD,GAgtQAq8B,GAAAqnB,WAAA,kBAA6C,OAAUz9C,MAAA,SAAAJ,GAA0B,OAAAA,EAAA5D,gBACjFo6B,GAAAunB,WAAA,qBAIAvnB,GAAAynB,gBAAA,SAAAvkE,EAAAwkE,GACA1nB,GAAA1vC,UAAApN,GAAAwkE,GAEA1nB,GAAA2nB,mBAAA,SAAAzkE,EAAAwkE,GACA3rB,GAAAzrC,UAAApN,GAAAwkE,GAGA1nB,GAAA4nB,aA5IA,SAAAnG,EAAAhrD,GASA,IARAA,IAAA/F,EAAA+F,OACAjW,MAAAihE,EAAAjhE,OACAiW,EAAAoxD,UAAApG,EAAAv9B,WACOztB,EAAAoxD,SAAApG,EAAAv9B,WACPztB,EAAAqxD,aAAArG,EAAAqG,cACOrxD,EAAAqxD,YAAArG,EAAAqG,aAGP,MAAArxD,EAAA0gD,UAAA,CACA,IAAAzqB,EAAA79B,IACA4H,EAAA0gD,UAAAzqB,GAAA+0B,GACA,MAAAA,EAAA/uC,aAAA,cAAAga,GAAA/gC,SAAAoD,KAGA,SAAAwZ,IAAqBk5C,EAAAjhE,MAAA+b,EAAA4/B,WAErB,IAAA4rB,EACA,GAAAtG,EAAAuG,OACAlhE,GAAA26D,EAAAuG,KAAA,SAAAz/C,IAEA9R,EAAAwxD,wBAAA,CACA,IAAAD,EAAAvG,EAAAuG,KACAD,EAAAC,EAAAE,OACA,IACA,IAAAC,EAAAH,EAAAE,OAAA,WACA3/C,IACAy/C,EAAAE,OAAAH,EACAC,EAAAE,SACAF,EAAAE,OAAAC,GAES,MAAA5iE,KAITkR,EAAAiiD,WAAA,SAAAn8C,GACAA,EAAAgM,OACAhM,EAAA6rD,YAAA,WAAoC,OAAA3G,GACpCllD,EAAAvU,WAAA,WACAuU,EAAAvU,WAAAsrB,MACA/K,IACAk5C,EAAA9yD,WAAAf,YAAA2O,EAAAoqD,qBACAlF,EAAAh7D,MAAAF,QAAA,GACAk7D,EAAAuG,OACA//D,GAAAw5D,EAAAuG,KAAA,SAAAz/C,GACA,mBAAAk5C,EAAAuG,KAAAE,SACazG,EAAAuG,KAAAE,OAAAH,MAKbtG,EAAAh7D,MAAAF,QAAA,OACA,IAAAgW,EAAAyjC,GAAA,SAAA3yC,GAAyC,OAAAo0D,EAAA9yD,WAAAshB,aAAA5iB,EAAAo0D,EAAApwC,cACzC5a,GACA,OAAA8F,GAGA,SAAAyjC,GACAA,EAAA/3C,OACA+3C,EAAAl5C,MACAk5C,EAAAlR,oBACAkR,EAAAjE,OACAiE,EAAAjH,WAAAv2B,GACAw9B,EAAAhvC,cACAgvC,EAAA1tC,aACA0tC,EAAAnsC,WAAAJ,GACAusC,EAAAhuC,OACAguC,EAAAlgC,UACAkgC,EAAAt1B,QACAs1B,EAAAzP,aACAyP,EAAA/Z,kBACA+Z,EAAAppC,OACAopC,EAAAqoB,OAAAvxD,GACAkpC,EAAAx8B,SACAw8B,EAAAv8B,aACAu8B,EAAAt8B,eACAs8B,EAAAp8B,WACAo8B,EAAAj8B,kBACAi8B,EAAA57B,cACA47B,EAAA17B,aACA07B,EAAAp7B,cACAo7B,EAAAt7B,aACAs7B,EAAAiN,YACAjN,EAAA4F,UACA5F,EAAA+G,WACA/G,EAAAwG,iBACAxG,EAAAqG,aACArG,EAAAiG,mBACAjG,EAAAj7B,gBACAi7B,EAAAjF,oBACAiF,EAAArF,cACAqF,EAAA3F,cACA2F,EAAAn/B,oBACAm/B,EAAAj/B,qBACAi/B,EAAA9+B,UACA8+B,EAAAv1C,WACAu1C,EAAAxxC,WACAwxC,EAAA5yC,UACA4yC,EAAAkC,YA4CAomB,CAAAtoB,IAEAA,GAAAuoB,QAAA,SAEAvoB,IA//S8Dz+C,EAAAG,QAAAqJ,sCCV9D1K,OAAAC,eAAAC,EAAA,cAAAC,OAAA,QAAAgoE,EAAA9nE,EAAA,KAAA+nE,EAAA/nE,EAAAE,EAAA4nE,GAAA,QAAA3nE,KAAA2nE,EAAA,YAAA3nE,GAAA,SAAAC,GAAAJ,EAAAK,EAAAR,EAAAO,EAAA,kBAAA0nE,EAAA1nE,KAAA,CAAAD,GAAA,IAAA6nE,EAAAhoE,EAAA,KAGA,IASAO,EAZA,SAAAC,GACER,EAAQ,MAgBVS,EAdyBT,EAAQ,GAcjCU,CACEqnE,EAAApnE,EACAqnE,EAAA,GATF,EAWAznE,EAPA,KAEA,MAUeV,EAAA,QAAAY,EAAiB,6BCvBhC,IAAAG,EAAcZ,EAAQ,KACtB,iBAAAY,QAA4CC,EAAAC,EAASF,EAAA,MACrDA,EAAAG,SAAAF,EAAAG,QAAAJ,EAAAG,QAEaf,EAAQ,GAARA,CAAsG,WAAAY,GAAA,4BCPnHC,EAAAG,QAA2BhB,EAAQ,GAARA,EAAgE,IAK3FiB,MAAcJ,EAAAC,EAAS,+cAA+c,uCCLte,IAEAI,GAAiBC,OAFjB,WAA0B,IAAAmH,EAAAjH,KAAaD,EAAAkH,EAAAhH,eAA0BC,EAAA+G,EAAA9G,MAAAD,IAAAH,EAAwB,OAAAkH,EAAA,OAAA/G,EAAA,OAA8B0mE,MAAA3/D,EAAAgB,OAAA,sBAAA5H,OAAkDgC,GAAA,gBAAmBnC,EAAA,OAAYE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,YAAAgH,aAAqC4mB,WAAA,QAAoB3tB,OAAQ4vB,MAAA,OAAA3rB,OAAA,OAAAuiE,MAAA,6BAAAC,cAAA,+BAAAC,QAAA,cAAAC,oBAAA,cAA2K9mE,EAAA,KAAUG,OAAO4mE,UAAA,sBAAgC/mE,EAAA,KAAUG,OAAO4mE,UAAA,mCAA6C/mE,EAAA,KAAUG,OAAO4mE,UAAA,qBAA+B/mE,EAAA,oBAAyBG,OAAO6mE,cAAA,YAAAhgE,KAAA,SAAAigE,OAAA,QAAwDC,SAAA,MAAmBC,IAAA,KAAAtvC,MAAA,KAAAuvC,YAAA,gBAAuDpnE,EAAA,QAAaG,OAAOrB,EAAA,6iDAAAuoE,KAAA,cAAmkD,KAAAtgE,EAAAzG,GAAA,KAAAN,EAAA,KAA4BG,OAAO4mE,UAAA,iCAA2C/mE,EAAA,KAAUG,OAAO4mE,UAAA,qBAA+B/mE,EAAA,oBAAyBG,OAAO6mE,cAAA,YAAAhgE,KAAA,SAAAigE,OAAA,QAA0DC,SAAA,MAAiBC,IAAA,KAAAtvC,MAAA,WAAAuvC,YAAA,gBAA6DpnE,EAAA,QAAaG,OAAOrB,EAAA,6iDAAAuoE,KAAA,cAAmkD,SAAAtgE,EAAAzG,GAAA,KAAAN,EAAA,QAAmCE,YAAA,QAAkB6G,EAAAzG,GAAAyG,EAAAxG,GAAAwG,EAAAvG,GAAA,sBAAAuG,EAAAS,MAE/wI/G,oBACFnC,EAAA,sCCHfF,OAAAC,eAAAC,EAAA,cAAAC,OAAA,QAAA+oE,EAAA7oE,EAAA,KAAA8oE,EAAA9oE,EAAAE,EAAA2oE,GAAA,QAAA1oE,KAAA0oE,EAAA,YAAA1oE,GAAA,SAAAC,GAAAJ,EAAAK,EAAAR,EAAAO,EAAA,kBAAAyoE,EAAAzoE,KAAA,CAAAD,GAAA,IAAA4oE,EAAA/oE,EAAA,KAGA,IASAO,EAZA,SAAAC,GACER,EAAQ,MAgBVS,EAdyBT,EAAQ,GAcjCU,CACEooE,EAAAnoE,EACAooE,EAAA,GATF,EAWAxoE,EAPA,KAEA,MAUeV,EAAA,QAAAY,EAAiB,6BCvBhC,IAAAG,EAAcZ,EAAQ,KACtB,iBAAAY,QAA4CC,EAAAC,EAASF,EAAA,MACrDA,EAAAG,SAAAF,EAAAG,QAAAJ,EAAAG,QAEaf,EAAQ,GAARA,CAAsG,WAAAY,GAAA,4BCPnHC,EAAAG,QAA2BhB,EAAQ,GAARA,EAAgE,IAK3FiB,MAAcJ,EAAAC,EAAS,0CCLvB,IAEAI,GAAiBC,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,sCAAgDF,EAAA,OAAYE,YAAA,kBAA4BF,EAAA,QAAxKF,KAAwKQ,GAAxKR,KAAwKS,GAAxKT,KAAwKmH,YAAxKnH,KAAwKQ,GAAA,KAAAN,EAAA,OAAiEE,YAAA,mBAAzOJ,KAAsQ2nE,GAAA,kBAAtQ3nE,KAAsQQ,GAAA,KAAAN,EAAA,OAAiDE,YAAA,aAAvTJ,KAA8U2nE,GAAA,kBAEvVhnE,oBACFnC,EAAA,sCCHfF,OAAAC,eAAAC,EAAA,cAAAC,OAAA,QAAAmpE,EAAAjpE,EAAA,KAAAkpE,EAAAlpE,EAAAE,EAAA+oE,GAAA,QAAA9oE,KAAA8oE,EAAA,YAAA9oE,GAAA,SAAAC,GAAAJ,EAAAK,EAAAR,EAAAO,EAAA,kBAAA6oE,EAAA7oE,KAAA,CAAAD,GAAA,IAAAgpE,EAAAnpE,EAAA,KAGA,IASAO,EAZA,SAAAC,GACER,EAAQ,MAgBVS,EAdyBT,EAAQ,GAcjCU,CACEwoE,EAAAvoE,EACAwoE,EAAA,GATF,EAWA5oE,EAPA,KAEA,MAUeV,EAAA,QAAAY,EAAiB,6BCvBhC,IAAAG,EAAcZ,EAAQ,KACtB,iBAAAY,QAA4CC,EAAAC,EAASF,EAAA,MACrDA,EAAAG,SAAAF,EAAAG,QAAAJ,EAAAG,QAEaf,EAAQ,GAARA,CAAsG,WAAAY,GAAA,2BCPnH,IAAAwoE,EAAappE,EAAQ,MACrBa,EAAAG,QAA2BhB,EAAQ,GAARA,EAAgE,IAK3FiB,MAAcJ,EAAAC,EAAS,0XAA2WsoE,EAA0BppE,EAAQ,MAAa,uHAA2GopE,EAA0BppE,EAAQ,MAAY,y6CAA46C,0BCNt/Da,EAAAG,QAAiBhB,EAAAiC,EAAuB,yECAxCpB,EAAAG,QAAiBhB,EAAAiC,EAAuB,qGCiBxC,MAAAonE,EAAArpE,EAAA,wCACA,IAAIspE,GACFC,WAEI/mE,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,iBACNt/D,QAAQ,EACRu/D,KAAM,UACN/0D,cAGAnS,QAASgnE,UAAKznE,GAAG,OACjB2B,GAAI,EACJ+lE,KAAM,GACNt/D,QAAQ,EACRu/D,KAAM,UACN/0D,WAEInS,QAASgnE,UAAKznE,GAAG,SACjB0nE,KAAM,aACN/lE,GAAI,IAGJlB,QAASgnE,UAAKznE,GAAG,SACjB0nE,KAAM,WACN/lE,GAAI,IAGJlB,QAASgnE,UAAKznE,GAAG,QACjB0nE,KAAM,qBACN/lE,GAAI,MAWZimE,WAEInnE,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,kBACNt/D,QAAQ,EACRu/D,KAAM,WACN/0D,cAGAnS,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,eACNt/D,QAAQ,EACRu/D,KAAM,iBACN/0D,cAGAnS,QAASgnE,UAAKznE,GAAG,SACjB2B,GAAI,EACJ+lE,KAAM,wBACNt/D,QAAQ,EACRu/D,KAAM,aACN/0D,cAGAnS,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,eACNt/D,QAAQ,EACRu/D,KAAM,aACN/0D,cAGAnS,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,GACNt/D,QAAQ,EACRu/D,KAAM,YACN/0D,WAEInS,KAAM,SACNinE,KAAM,iBACN/lE,GAAI,IAGJlB,KAAM,SACNinE,KAAM,iBACN/lE,GAAI,MAKZkmE,WAEIpnE,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,OACNt/D,QAAQ,EACRu/D,KAAM,aACN/0D,YACAkuD,UAAU,IAGVrgE,QAASgnE,UAAKznE,GAAG,SACjB2B,GAAI,EACJ+lE,KAAM,GACNt/D,QAAQ,EACRu/D,KAAM,eACN7G,UAAU,EACVluD,WAEInS,QAASgnE,UAAKznE,GAAG,QACjB0nE,KAAM,wBACN/lE,GAAI,IAGJlB,QAASgnE,UAAKznE,GAAG,QACjB0nE,KAAM,wBACN/lE,GAAI,MAKZmmE,OAEIrnE,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,UACNt/D,QAAQ,EACRu/D,KAAM,UACN/0D,YACAkuD,UAAU,IAGVrgE,QAASgnE,UAAKznE,GAAG,QACjB2B,GAAI,EACJ+lE,KAAM,WACNt/D,QAAQ,EACRu/D,KAAM,SACN/0D,YACAkuD,UAAU,eAKD,SAAAt6D,GAAA,OAAQ+gE,EAAK/gE,sCCrK5B,IAEArH,GAAiBC,OAFjB,WAA0B,IAAAmH,EAAAjH,KAAaD,EAAAkH,EAAAhH,eAA0BC,EAAA+G,EAAA9G,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,uBAAAwmE,MAAA3/D,EAAAsB,YAAuDrI,EAAA,OAAYE,YAAA,eAAyB6G,EAAAqB,UAA6GrB,EAAAS,KAA7GxH,EAAA,KAA2BE,YAAA,YAAAC,OAA+BooE,KAAA,eAAqB1jE,IAAK0C,MAAAR,EAAA8B,eAAyB9B,EAAAzG,GAAA,KAAAyG,EAAA,UAAA/G,EAAA,KAA+CE,YAAA,WAAAC,OAA8BooE,KAAA,eAAqB1jE,IAAK0C,MAAAR,EAAA8B,eAAyB9B,EAAAS,OAAAT,EAAAzG,GAAA,KAAAyG,EAAAyhE,GAAAzhE,EAAA,kBAAA4B,EAAA8/D,GAAqE,OAAAzoE,EAAA,OAAiBE,YAAA,YAAsByI,EAAA,MAAA3I,EAAA,eAAiCG,OAAOuS,IAAMzR,KAAA0H,EAAAu/D,SAAmBloE,EAAA,OAAYE,YAAA,OAAA2E,IAAuB0C,MAAA,SAAAmhE,GAAyB,OAAA3hE,EAAA2B,eAAAC,OAAkC3I,EAAA,KAAUG,OAAOooE,KAAA,iBAAsBvoE,EAAA,KAAUE,YAAA,UAAAwmE,MAAA/9D,EAAAw/D,OAAsCphE,EAAAzG,GAAA,KAAAN,EAAA,QAAA+G,EAAAzG,GAAAyG,EAAAxG,GAAAoI,EAAA1H,SAAA8F,EAAAzG,GAAA,KAAAqI,EAAAyK,SAAA,OAAApT,EAAA,KAAgGE,YAAA,WAAAwmE,MAAA/9D,EAAAC,OAAA,mCAA8E7B,EAAAS,YAAAT,EAAAS,KAAAT,EAAAzG,GAAA,KAAAqI,EAAAu/D,KAAsZnhE,EAAAS,MAAtZxH,EAAA,OAA+DE,YAAA,OAAA2E,IAAuB0C,MAAA,SAAAmhE,GAAyB,OAAA3hE,EAAA2B,eAAAC,OAAkC3I,EAAA,KAAUG,OAAOooE,KAAA,iBAAsBvoE,EAAA,KAAUE,YAAA,UAAAwmE,MAAA/9D,EAAAw/D,OAAsCphE,EAAAzG,GAAA,KAAAN,EAAA,QAAA+G,EAAAzG,GAAAyG,EAAAxG,GAAAoI,EAAA1H,SAAA8F,EAAAzG,GAAA,KAAAqI,EAAAyK,SAAA,OAAApT,EAAA,KAAgGE,YAAA,WAAAwmE,MAAA/9D,EAAAC,OAAA,mCAA8E7B,EAAAS,UAAAT,EAAAzG,GAAA,KAAAqI,EAAAC,QAAAD,EAAAyK,SAAA7N,OAAAvF,EAAA,KAAA+G,EAAAyhE,GAAA7/D,EAAA,kBAAAggE,EAAAxgE,GAA6H,OAAAnI,EAAA,eAAyBG,OAAOuS,IAAMzR,KAAA0nE,EAAAT,MAAej8D,IAAA,KAAA28D,eAAA,YAAqC5oE,EAAA,QAAA+G,EAAAzG,GAAAyG,EAAAxG,GAAAooE,EAAA1nE,aAAyC,GAAA8F,EAAAS,MAAA,MAAkB,IAE1lD/G,oBACFnC,EAAA,sCCHfF,OAAAC,eAAAC,EAAA,cAAAC,OAAA,QAAAsqE,EAAApqE,EAAA,KAAAqqE,EAAArqE,EAAAE,EAAAkqE,GAAA,QAAAjqE,KAAAiqE,EAAA,YAAAjqE,GAAA,SAAAC,GAAAJ,EAAAK,EAAAR,EAAAO,EAAA,kBAAAgqE,EAAAhqE,KAAA,CAAAD,GAAA,IAAAmqE,EAAAtqE,EAAA,KAGA,IASAO,EAZA,SAAAC,GACER,EAAQ,MAgBVS,EAdyBT,EAAQ,GAcjCU,CACE2pE,EAAA1pE,EACA2pE,EAAA,GATF,EAWA/pE,EAPA,KAEA,MAUeV,EAAA,QAAAY,EAAiB,6BCvBhC,IAAAG,EAAcZ,EAAQ,KACtB,iBAAAY,QAA4CC,EAAAC,EAASF,EAAA,MACrDA,EAAAG,SAAAF,EAAAG,QAAAJ,EAAAG,QAEaf,EAAQ,GAARA,CAAsG,WAAAY,GAAA,4BCPnHC,EAAAG,QAA2BhB,EAAQ,GAARA,EAAgE,IAK3FiB,MAAcJ,EAAAC,EAAS,uRAAuR,uCCL9S,IAEAI,GAAiBC,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,kBAA4BF,EAAA,OAAYE,YAAA,gBAAxHJ,KAAkJkpE,GAAA,GAAlJlpE,KAAkJQ,GAAA,KAAAN,EAAA,OAAkCE,YAAA,SAApLJ,KAAuMQ,GAAvMR,KAAuMS,GAAvMT,KAAuM4B,KAAvM5B,KAAuMU,GAAA,kBAEhNC,iBADjB,WAAoC,IAAaZ,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,QAAkBF,EAAA,OAAYG,OAAOC,IAAM3B,EAAQ,KAAuB4B,IAAA,WAE/K/B,EAAA,yBCHfgB,EAAAG,QAAiBhB,EAAAiC,EAAuB,yGCiBxC,MAAAuoE,EAAAxqE,EAAA,yCACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,eAEe,SAAC0D,EAAIojB,GAClB,OAAOw4B,UAAW4nB,aAAaj8D,SAASw/D,eAAe/mE,GAAK/D,OAAOyD,QACjE8sB,aAAa,EACbolC,MAAO,WACP/1B,UAAU,MACLzY,2BCzBR,SAAAw4B,GACD,aAmMA,SAAAorB,EAAA5hD,GAIA,IADA,IAAA9V,EACA,OAAAA,EAAA8V,EAAAhE,SACA,QAAA9R,IAAA8V,EAAA/D,IAAA,wBAGA,OADA+D,EAAA1D,OAAA0D,EAAAlc,UAAA9F,OAAA,GACAgiB,EAAA9D,SAAA,wBAiBA,SAAA2lD,EAAA7hD,GAWA,OANAA,EAAA/D,IAAA,OACA+D,EAAA5c,MAAA,cACA4c,EAAA5c,MAAA,YACA4c,EAAA5c,MAAA,cAGA4c,EAAA/D,IAAA,MACA+D,EAAA5c,MAAA,QACA,cACK4c,EAAA/D,IAAA,MACL+D,EAAA5c,MAAA,QACA,cACK4c,EAAA/D,IAAA,MACL+D,EAAA5c,MAAA,QACA,cACK4c,EAAA5c,MAAA,sBACL,aAEA,KAIA,SAAA0+D,EAAA9hD,GAGA,OAAAA,EAAA/D,IAAA,KACA,OAIA+D,EAAA5c,MAAA,mCA7PAozC,EAAAqnB,WAAA,eAAAkE,EAAAC,GACA,IAAAC,EAAAD,EAAAC,WACAC,EAAAF,EAAAE,QAA8CC,OAAA,EAAAC,MAAA,EAAAzlC,MAAA,GAC9C0lC,EAAAL,EAAAK,SAAAj6D,EAAAk6D,GACAC,EAAAP,EAAAO,UAAAn6D,EAAAo6D,GACAC,EAAAT,EAAAS,eAAA,qBACAC,EAAAV,EAAAU,YACAC,EAAAX,EAAAW,UACAC,EAAAZ,EAAAY,UAAgDC,MAAA,EAAArhC,MAAA,EAAAshC,WAAA,GAChDC,GAAA,IAAAf,EAAAe,uBACAC,EAAAhB,EAAAgB,UAAA,iBACAC,EAAAjB,EAAAiB,aAAA,UAEA,SAAAC,EAAAljD,EAAAjF,GACA,IAiGAooD,EAjGAj5D,EAAA8V,EAAAhE,OAGA,GAAA2mD,EAAAz4D,GAAA,CACA,IAAA+O,EAAA0pD,EAAAz4D,GAAA8V,EAAAjF,GACA,QAAA9B,EAAA,OAAAA,EAGA,GAAAypD,EAAAU,YACA,KAAAl5D,GAAA8V,EAAA5c,MAAA,uBACA,KAAA8G,GAAA,KAAAA,IAAA8V,EAAA5c,MAAA,oBAGA,eACK,GAAAs/D,EAAAW,gBACL,KAAAn5D,GAAA,KAAAA,IAAA8V,EAAA5c,MAAA,aACA,KAAA8G,GAAA8V,EAAA5c,MAAA,YAGA,eACK,GAAA8G,EAAAS,WAAA,OAAAT,EAAAS,WAAA,MAKL,OAFAqV,EAAA5c,MAAA,wCACAs/D,EAAAY,kBAAAtjD,EAAA5c,MAAA,aACA,SACK,QAAA8G,IAAA8V,EAAA7D,YAAA6D,EAAApE,OAAAoE,EAAA/D,IAAA,MAEL,mBACK,QAAA/R,GAAA,KAAAA,GAAAw4D,EAAAa,YAIL,OADAxoD,EAAAyoD,UAiEAL,EAjEAj5D,EAkEA,SAAA8V,EAAAjF,GAEA,IADA,IAAA7Q,EAAAu5D,GAAA,EACA,OAAAv5D,EAAA8V,EAAAhE,SAAA,CACA,GAAA9R,GAAAi5D,IAAAM,EAAA,CACA1oD,EAAAyoD,SAAAN,EACA,MAEAO,EAAAV,IAAAU,GAAA,MAAAv5D,EAEA,iBA1EA6Q,EAAAyoD,SAAAxjD,EAAAjF,GACK,IAAA2nD,EAAAgB,YAAA,KAAAx5D,GAAA,KAAAA,IACLw4D,EAAAiB,aAAA,KAAAz5D,GAAA8V,EAAA5c,MAAA,sBACA,KAAA4c,EAAAlE,QAAA,KAAAkE,EAAAlE,QAGA,gBACK,GAAA4mD,EAAAkB,mBAAA,KAAA15D,GAAA8V,EAAA/D,IAAA,KAGL,OADA+D,EAAA5D,YACA,UACK,GAAAsmD,EAAAmB,aAAA,KAAA35D,GACL,KAAAA,GAAA8V,EAAA/D,IAAA,QAAAymD,EAAAoB,sBAAA9jD,EAAA/D,IAAA,MAIA,OADA+D,EAAA5D,YACA,UACK,QAAAlS,GAAA8V,EAAA/D,IAAA,KAIL,OADAlB,EAAAyoD,SAyDA,SAAAO,EAAAC,GACA,gBAAAhkD,EAAAjF,GACA,IAAA3F,EAAA4K,EAAA5c,MAAA,mBAKA,OAJAgS,EACA,MAAAA,EAAA,GAAA2F,EAAAyoD,SAAAO,EAAAC,EAAA,GACAjpD,EAAAyoD,SAAAQ,EAAA,EAAAD,EAAAC,EAAA,GACAd,EAHAljD,EAAA5D,YAIA,WAhEA2nD,CAAA,GACAhpD,EAAAyoD,SAAAxjD,EAAAjF,GACK,QAAA7Q,EAUA,IAAAu4D,EAAA7gE,KAAAsI,GAGL,OADA8V,EAAA9D,SAAAumD,GACA,WACK,GAAAO,EAAAphE,KAAAsI,GAEL,gBACK,GAAA+4D,EAAArhE,KAAAsI,GAGL,OADA8V,EAAA9D,SAAA+mD,GACA,cACK,QAAA/4D,IACL8V,EAAA5c,MAAA,yCAA2D4c,EAAA5c,MAAA,yCAG3D,eAEA4c,EAAA9D,SAAA,YACA,IAAA0xC,EAAA5tC,EAAAlc,UAAAsG,cAGA,OAAAw4D,EAAAr7D,eAAAqmD,KAAA5tC,EAAA5c,MAAA,iBAAA4c,EAAA5c,MAAA,iBACA,SACA8+D,EAAA36D,eAAAqmD,GAAA,OACAyU,EAAA96D,eAAAqmD,GAAA,UACA2U,EAAAh7D,eAAAqmD,GAAA,UACAqU,EAAA16D,eAAAqmD,GAAA,WACA,KAnCA,OAAA8U,EAAAuB,eAAAjkD,EAAA5c,MAAA,2BACA,SACA4c,EAAA5c,MAAA,QACA,KAGAs/D,EAAAwB,cAAAlkD,EAAA5c,MAAA,aACA,kBADA,EA0DA,SAAA+gE,EAAAnkD,EAAAjF,EAAAtb,GACAsb,EAAA0C,SACArJ,KAAA2G,EAAA0C,QACA8xC,OAAAvvC,EAAAxD,cACAvT,IAAA+W,EAAAzD,SACA9c,QASA,OACA2b,WAAA,WACA,OAAcooD,SAAAN,EAAAzlD,QAAA,OAGd2C,MAAA,SAAAJ,EAAAjF,GAKA,GAJAiF,EAAAnE,OACAd,EAAA0C,SAAA,MAAA1C,EAAA0C,QAAAoa,QACA9c,EAAA0C,QAAAoa,OAAA,GAEA9c,EAAAyoD,UAAAN,GAAAljD,EAAA7D,WAAA,YAEA,IAAAlf,EAAA8d,EAAAyoD,SAAAxjD,EAAAjF,GACA,cAAA9d,EAAA,OAAAA,EAEA8d,EAAA0C,SAAA,MAAA1C,EAAA0C,QAAAoa,QACA9c,EAAA0C,QAAAoa,OAAA,GAEA,IAAAusC,EAAApkD,EAAAlc,UAOA,MANA,KAAAsgE,EACAD,EAAAnkD,EAAAjF,EAAA,KACA,KAAAqpD,EACAD,EAAAnkD,EAAAjF,EAAA,KACAA,EAAA0C,SAAA1C,EAAA0C,QAAAhe,MAAA2kE,GA5BA,SAAArpD,GACAA,EAAAw0C,OAAAx0C,EAAA0C,QAAA8xC,OACAx0C,EAAA0C,QAAA1C,EAAA0C,QAAArJ,KA2BAiwD,CAAAtpD,GACA9d,GAGAsyD,OAAA,SAAAx0C,EAAAupD,GACA,IAAAC,EAAAxpD,EAAA0C,QACA,IAAA8mD,EAAA,OAAA/tB,EAAAhuC,KACA,IAAA8tD,EAAAgO,EAAAv5D,OAAA,IAAAw5D,EAAA9kE,KACA,OAAA8kE,EAAA1sC,MAAA0sC,EAAAt7D,KAAAqtD,EAAA,KACAiO,EAAAhV,QAAA+G,EAAA,EAAAyL,EAAArS,aAGA8U,kBAAA,KACAC,gBAAA,KACAC,YAAAhC,EAAAkB,kBAAA,KAAAlB,EAAAmB,YAAA,SACAc,cAAA,oBAqEA,IAAAnC,EAAA,qLAGA,SAAAp6D,EAAAyC,GAEA,IADA,IAAA1D,KAAgBy9D,EAAA/5D,EAAAvP,MAAA,KAChBtD,EAAA,EAAmBA,EAAA4sE,EAAA5mE,SAAkBhG,EAAAmP,EAAAy9D,EAAA5sE,KAAA,EACrC,OAAAmP,EAGA,IAAAm7D,EAAA,sTAGA9rB,EAAAunB,WAAA,cACArkE,KAAA,MACA6oE,SAAAn6D,EAAAo6D,EAAA,SACAH,QAAAj6D,EAAAk6D,GACAJ,MAAA95D,EAAA,2BACAw6D,QAAAx6D,EAAA,uBACAs6D,QAAAt6D,EAAA,qDAGAouC,EAAAunB,WAAA,gBACArkE,KAAA,MACAuoE,OAAA75D,EAAA,yVACAm6D,SAAAn6D,EAAAo6D,EAAA,uSACAH,QAAAj6D,EAAA,kNACA85D,MAAA95D,EAAA,0GACAq6D,cAAA,qBACAO,SAAA,aACAC,YAAA,WACAF,wBAAA,EACAH,QAAAx6D,EAAA,6DACAu6D,OACAkC,IAAAhD,KAIArrB,EAAAunB,WAAA,gBACArkE,KAAA,MACAuoE,OAAA75D,EAAA,+HACAm6D,SAAAn6D,EAAAo6D,EAAA,s9FACAH,QAAAj6D,EAAA,0TACA85D,MAAA95D,EAAA,2BACAq6D,cAAA,kBACAG,QAAAx6D,EAAA,uBACAs6D,QAAAt6D,EAAA,yIACAu6D,OACAkC,IAAAhD,EACAiD,IAAAlD,EACAmD,KAAAjD,KAIAtrB,EAAAunB,WAAA,kBACArkE,KAAA,MACAuoE,OAAA75D,EAAA,+HACAm6D,SAAAn6D,EAAAo6D,EAAA,+gGACAH,QAAAj6D,EAAA,0TACA85D,MAAA95D,EAAA,2BACAq6D,cAAA,kBACAG,QAAAx6D,EAAA,uBACAs6D,QAAAt6D,EAAA,yIACAu6D,OACAkC,IAAAhD,EACAiD,IAAAlD,EACAmD,KAAAjD,KAKAtrB,EAAAunB,WAAA,iBACArkE,KAAA,MAEAuoE,OAAA75D,EAAA,wWAEAm6D,SAAAn6D,EAAAo6D,EAAA,+pBAEAH,QAAAj6D,EAAA,sQAEA85D,MAAA95D,EAAA,oDAEAq6D,cAAA,mBAEAG,QAAAx6D,EAAA,gCACAs6D,QAAAt6D,EAAA,kCACA48D,gBAAA,IACArC,OAEAkC,IAAAhD,EACAoD,IAAApD,EACAqD,IAAArD,EACAlmE,EAAAkmE,EAEAsD,IAjJA,SAAAnlD,GAKA,IADA,IAAA9V,EACA,OAAAA,EAAA8V,EAAAhE,SACA,QAAA9R,IAAA8V,EAAA/D,IAAA,wBAGA,OADA+D,EAAA1D,OAAA0D,EAAAlc,UAAA9F,OAAA,GACAgiB,EAAA9D,SAAA,yBA0IA4oD,IAAAlD,KAMAprB,EAAAunB,WAAA,oBACArkE,KAAA,MACAuoE,UACAM,SAAAn6D,EAAA,6hBACAi6D,QAAAj6D,EAAA,4IACA85D,MAAA95D,EAAA,2BACAq6D,cAAA,SACAG,WACAF,QAAAt6D,EAAA,sCACAu6D,WAIAnsB,EAAAunB,WAAA,gBACArkE,KAAA,MACAuoE,OAAA75D,EAAA,kqBACAm6D,SAAAn6D,EAAA,mtDACAi6D,QAAAj6D,EAAA,m9BACAq6D,cAAA,kBACAG,QAAAx6D,EAAA,uBACAs6D,QAAAt6D,EAAA,gEAIAouC,EAAAunB,WAAA,eACArkE,KAAA,MACA6oE,SAAAn6D,EAAA,o1DACAi6D,QAAAj6D,EAAA,0KACA85D,MAAA95D,EAAA,2BACAq6D,cAAA,eACAG,QAAAx6D,EAAA,kBACAs6D,QAAAt6D,EAAA,qDAGAouC,EAAAunB,WAAA,gBACArkE,KAAA,MACAuoE,OAAA75D,EAAA,UAGAm6D,SAAAn6D,EAAAo6D,EAAA,q3NAEAH,QAAAj6D,EAAA,8ZACA85D,MAAA95D,EAAA,2BACAq6D,cAAA,0BACAG,QAAAx6D,EAAA,uBACAs6D,QAAAt6D,EAAA,8FAIAouC,EAAAunB,WAAA,cACArkE,KAAA,MACA6oE,SAAAn6D,EAAA,0HACA85D,MAAA95D,EAAA,cACAi6D,QAAAj6D,EAAA,sEACAq6D,cAAA,iBAIAjsB,EAAAunB,WAAA,gBACArkE,KAAA,MACAuoE,OAAA75D,EAAA,UAEAm6D,SAAAn6D,EAAA,27GACAi6D,QAAAj6D,EAAA,oaACA85D,MAAA95D,EAAA,2BACAq6D,cAAA,wBACAG,QAAAx6D,EAAA,uBACAs6D,QAAAt6D,EAAA,8FAIAouC,EAAAunB,WAAA,mBACArkE,KAAA,MACA6oE,SAAAn6D,EAAA,q+CACAi6D,QAAAj6D,EAAA,qLACA85D,MAAA95D,EAAA,mBACAq6D,cAAA,qBACAG,QAAAx6D,EAAA,uBACAs6D,QAAAt6D,EAAA,4CAIAouC,EAAAunB,WAAA,gBACArkE,KAAA,MACAuoE,OAAA75D,EAAA,UAEAm6D,SAAAn6D,EAAA,+0BACAi6D,WACAH,MAAA95D,EAAA,mBACAq6D,cAAA,wBACAG,QAAAx6D,EAAA,QACAs6D,QAAAt6D,EAAA,4DAzcAo0C,CAAQtlD,EAAQ,8ECYhB,MAAAqpE,EAAArpE,EAAA,0CA0BSyD,aAtBU,SAACyqE,EAAMC,GACxB,IAAIC,GACFC,IAAKH,EACLj+D,IAAKk+D,GAGP,GAAKC,EAAMC,IAAX,CAKA,IAA+Bp+D,EACzB8R,EAONtd,mBAAmB2pE,EAAMC,IAAzB,mBAR+Bp+D,EAQ8Bm+D,EAAMn+D,IAP7D8R,EAAS,GACApiB,OAAO+lD,KAAKz1C,GAClBq+D,QAAQ,SAAUluE,GACvB2hB,GAAU,gCAAkC3hB,EAAM,YAAc6P,EAAI7P,GAAO,OAEtE2hB,GAET,WAAkFwsD,SAAS,QAAQ/G,SAAShiE,mBAZ1Gqf,GAAK/f,SAAS0pE,QAAd,GAAyBhF,UAAKznE,GAAG,0DClBpC,SAAAu9C,GACD,aAEA,IAAAmvB,EAAA,kBACAC,EAAA,yBAsCA,SAAAC,EAAA9yD,EAAA9F,GACA1U,KAAAwa,KACAxa,KAAA0U,UACA1U,KAAAwrB,OAAA,KACAxrB,KAAA8D,SAAA,EACA9D,KAAAutE,KAAA,EACAvtE,KAAAwtE,SAAAxtE,KAAAwa,GAAAkmB,UAAA,SACA1gC,KAAAytE,SAAAztE,KAAAwa,GAAAvH,QAAAjT,KAAAwtE,SAAA95D,MAAAjO,OAAAzF,KAAAwa,GAAAuG,eAAAtb,OAEA,IAAAioE,EAAA1tE,KACAwa,EAAAzV,GAAA,iBAAA/E,KAAA2tE,aAAA,WAA4DD,EAAAlvD,mBA5C5Dy/B,EAAA2vB,SAAA,SAAApzD,EAAAqzD,EAAAn5D,GACA,IAAAm5D,EAAA,OAAArzD,EAAAozD,SAAAl5D,GACAA,KAAAo5D,QAAAD,EAAAC,OAAA,GACA,IAAAC,GAAmB1yB,KAAAwyB,GACnB,GAAAn5D,EAAA,QAAA3F,KAAA2F,EAAAq5D,EAAAh/D,GAAA2F,EAAA3F,GACA,OAAAyL,EAAAozD,SAAAG,IAGA9vB,EAAAynB,gBAAA,oBAAAhxD,GACAA,EAiHA,SAAA8F,EAAA/J,EAAAiE,GACA,IAAAxT,EAAAsZ,EAAA9F,QAAAs5D,YACA78D,KACA,QAAApC,KAAAk/D,EAAA98D,EAAApC,GAAAk/D,EAAAl/D,GACA,GAAA7N,EAAA,QAAA6N,KAAA7N,OACAsiB,IAAAtiB,EAAA6N,KAAAoC,EAAApC,GAAA7N,EAAA6N,IACA,GAAA2F,EAAA,QAAA3F,KAAA2F,OACA8O,IAAA9O,EAAA3F,KAAAoC,EAAApC,GAAA2F,EAAA3F,IACAoC,EAAAkqC,KAAA6yB,UAAA/8D,EAAAkqC,KAAAlqC,EAAAkqC,KAAA6yB,QAAA1zD,EAAA/J,IACA,OAAAU,EA1HAg9D,CAAAnuE,UAAA0gC,UAAA,SAAAhsB,GACA,IAAA05D,EAAApuE,KAAA26C,iBACA,KAAAyzB,EAAA3oE,OAAA,IAIA,GAAAzF,KAAAguC,oBAAA,CACA,IAAAt5B,EAAA2mC,KAAAgzB,kBAAA,OAEA,QAAA5uE,EAAA,EAAqBA,EAAA2uE,EAAA3oE,OAAuBhG,IAC5C,GAAA2uE,EAAA3uE,GAAAs7B,KAAArnB,MAAA06D,EAAA3uE,GAAAu5B,OAAAtlB,KAAA,OAGA1T,KAAAwiB,MAAA8rD,kBAAAtuE,KAAAwiB,MAAA8rD,iBAAArQ,QACA,IAAAsQ,EAAAvuE,KAAAwiB,MAAA8rD,iBAAA,IAAAhB,EAAAttE,KAAA0U,GACA65D,EAAA75D,QAAA2mC,OAEA4C,EAAAlgC,OAAA/d,KAAA,kBAAAA,MACAuuE,EAAAhsC,QAAA,OAGA0b,EAAAynB,gBAAA,uBACA1lE,KAAAwiB,MAAA8rD,kBAAAtuE,KAAAwiB,MAAA8rD,iBAAArQ,UAgBA,IAAAuQ,EAAA1tD,OAAA0tD,uBAAA,SAAAC,GACA,OAAAtrE,WAAAsrE,EAAA,SAEAC,EAAA5tD,OAAA4tD,sBAAA3+D,aAoFA,SAAA4+D,EAAAJ,GACA,uBAAAA,IACAA,EAAA36D,KA8CA,SAAAg7D,EAAAC,EAAAhG,GACA,KAAAA,MAAAgG,GAAA,CACA,UAAAhG,EAAAtK,SAAA3sD,eAAAi3D,EAAAj8D,YAAAiiE,EAAA,OAAAhG,EACAA,IAAAj8D,YAIA,SAAAkiE,EAAAP,EAAAntE,GACApB,KAAAuuE,aACAvuE,KAAAoB,OACApB,KAAA+uE,QAAA,EACA,IAAAvjD,EAAAxrB,KAAAwa,EAAA+zD,EAAA/zD,GACA0G,EAAA1G,EAAAsnD,gBAAA5gD,cACA8tD,EAAA9tD,EAAA+tD,aAAA/tD,EAAA8tD,aAEAE,EAAAlvE,KAAAkvE,MAAAhuD,EAAA9U,cAAA,MACA6nD,EAAAsa,EAAA/zD,GAAA9F,QAAAu/C,MACAib,EAAA3mE,UAAA,oBAAA0rD,EACAj0D,KAAAmvE,aAAA/tE,EAAA+tE,cAAA,EAGA,IADA,IAAAC,EAAAhuE,EAAA2rB,KACAttB,EAAA,EAAmBA,EAAA2vE,EAAA3pE,SAAwBhG,EAAA,CAC3C,IAAAyM,EAAAgjE,EAAAjjE,YAAAiV,EAAA9U,cAAA,OAAA6H,EAAAm7D,EAAA3vE,GACA8I,EAAA6kE,GAAA3tE,GAAAO,KAAAmvE,aAAA,OAAA9B,GACA,MAAAp5D,EAAA1L,cAAA0L,EAAA1L,UAAA,IAAAA,GACA2D,EAAA3D,YACA0L,EAAAnU,OAAAmU,EAAAnU,OAAAoM,EAAA9K,EAAA6S,GACA/H,EAAAD,YAAAiV,EAAA5U,eAAA2H,EAAAuW,aAAAmkD,EAAA16D,KACA/H,EAAAmjE,OAAA5vE,EAGA,IAAAgR,EAAA+J,EAAAuc,aAAAw3C,EAAA75D,QAAA46D,cAAAluE,EAAAuR,KAAA,MACA4N,EAAA9P,EAAA8P,KAAAgT,EAAA9iB,EAAA6iB,OAAAi8C,GAAA,EACAL,EAAAxqE,MAAA6b,OAAA,KACA2uD,EAAAxqE,MAAA6uB,MAAA,KAEA,IAAAi8C,EAAAR,EAAAS,YAAA7+D,KAAA0E,IAAA4L,EAAAlU,KAAAiT,YAAAiB,EAAA6U,gBAAA9V,aACAyvD,EAAAV,EAAA/nC,aAAAr2B,KAAA0E,IAAA4L,EAAAlU,KAAAgT,aAAAkB,EAAA6U,gBAAA/V,eACAuuD,EAAA75D,QAAA02B,WAAAlqB,EAAAlU,MAAAf,YAAAijE,GACA,IAAAh3C,EAAAg3C,EAAA7uD,wBAAAsvD,EAAAz3C,EAAA5E,OAAAo8C,EACAE,EAAAV,EAAA7tC,aAAA6tC,EAAAp9C,aAAA,EACA+9C,EAAAr1D,EAAA6pD,gBAEA,GAAAsL,EAAA,GACA,IAAArrE,EAAA4zB,EAAA5E,OAAA4E,EAAA3E,IACA,GADA9iB,EAAA8iB,KAAA9iB,EAAA6iB,OAAA4E,EAAA3E,KACAjvB,EAAA,EACA4qE,EAAAxqE,MAAA6uB,OAAA9iB,EAAA8iB,IAAAjvB,GAAA,KACAirE,GAAA,OACO,GAAAjrE,EAAAorE,EAAA,CACPR,EAAAxqE,MAAAJ,OAAAorE,EAAA,OACAR,EAAAxqE,MAAA6uB,OAAA9iB,EAAA6iB,OAAA4E,EAAA3E,KAAA,KACA,IAAA0H,EAAAzgB,EAAAkmB,YACAt/B,EAAAuR,KAAAhB,IAAAspB,EAAAtpB,KACAlB,EAAA+J,EAAAuc,aAAAkE,GACAi0C,EAAAxqE,MAAA6b,QAAA9P,EAAA8P,MAAA,KACA2X,EAAAg3C,EAAA7uD,0BAIA,IAsBAyvD,EAtBAC,EAAA73C,EAAA1X,MAAAgvD,EAQA,GAPAO,EAAA,IACA73C,EAAA1X,MAAA0X,EAAA3X,KAAAivD,IACAN,EAAAxqE,MAAAurB,MAAAu/C,EAAA,OACAO,GAAA73C,EAAA1X,MAAA0X,EAAA3X,KAAAivD,GAEAN,EAAAxqE,MAAA6b,QAAA9P,EAAA8P,KAAAwvD,GAAA,MAEAH,EAAA,QAAAtkE,EAAA4jE,EAAApjE,WAAkDR,EAAMA,IAAAgkB,YACxDhkB,EAAA5G,MAAA4sB,aAAA9W,EAAAhW,QAAAitB,eAAA,MAEAjX,EAAA8nD,UAAAtiE,KAAA6jD,OAjHA,SAAA0qB,EAAAh3B,GACA,IAAAy4B,GACAhqB,GAAA,WAAsBzO,EAAA04B,WAAA,IACtBhqB,KAAA,WAAwB1O,EAAA04B,UAAA,IACxB7pB,OAAA,WAA0B7O,EAAA04B,UAAA,EAAA14B,EAAA24B,YAAA,IAC1B7pB,SAAA,WAA4B9O,EAAA04B,UAAA14B,EAAA24B,WAAA,OAC5B/pB,KAAA,WAAwB5O,EAAA44B,SAAA,IACxBjqB,IAAA,WAAuB3O,EAAA44B,SAAA54B,EAAA9xC,OAAA,IACvBkhD,MAAApP,EAAA64B,KACA3pB,IAAAlP,EAAA64B,KACAvpB,IAAAtP,EAAA0mB,OAGA,MAAA50D,KAAAH,UAAAC,YAGA6mE,EAAA,qBAAsCz4B,EAAA04B,WAAA,IACtCD,EAAA,qBAAsCz4B,EAAA04B,UAAA,KAGtC,IAAAI,EAAA9B,EAAA75D,QAAA47D,WACAC,EAAAF,KAA4BL,EAC5B,SAAAQ,EAAAzxE,EAAA2jB,GACA,IAAAksC,EAEAA,EADA,iBAAAlsC,EACA,SAAAlI,GAA8B,OAAAkI,EAAAlI,EAAA+8B,IAE9By4B,EAAAhhE,eAAA0T,GACAstD,EAAAttD,GAEAA,EACA6tD,EAAAxxE,GAAA6vD,EAEA,GAAAyhB,EACA,QAAAtxE,KAAAsxE,IAAArhE,eAAAjQ,IACAyxE,EAAAzxE,EAAAsxE,EAAAtxE,IACA,IAAA0xE,EAAAlC,EAAA75D,QAAA46C,UACA,GAAAmhB,EACA,QAAA1xE,KAAA0xE,IAAAzhE,eAAAjQ,IACAyxE,EAAAzxE,EAAA0xE,EAAA1xE,IACA,OAAAwxE,EAyEAG,CAAAnC,GACA0B,UAAA,SAAApxE,EAAA8xE,GAAyCnlD,EAAAolD,aAAAplD,EAAA2jD,aAAAtwE,EAAA8xE,IACzCR,SAAA,SAAAtxE,GAA6B2sB,EAAAolD,aAAA/xE,IAC7BqxE,SAAA,WAA4B,OAAA1kD,EAAAqlD,gBAC5BprE,OAAA2pE,EAAA3pE,OACAw4D,MAAA,WAAyBsQ,EAAAtQ,SACzBmS,KAAA,WAAwB5kD,EAAA4kD,QACxBhvE,UAGAmtE,EAAA75D,QAAAo8D,kBAEAt2D,EAAAzV,GAAA,OAAA/E,KAAAi+B,OAAA,WAA8C6xC,EAAA3sE,WAAA,WAAwCorE,EAAAtQ,SAAsB,OAC5GzjD,EAAAzV,GAAA,QAAA/E,KAAA89B,QAAA,WAAgD/tB,aAAA+/D,MA+BhD,OA5BAt1D,EAAAzV,GAAA,SAAA/E,KAAA+wE,SAAA,WACA,IAAAC,EAAAx2D,EAAA6pD,gBAAAnjE,EAAAsZ,EAAAoqD,oBAAAvkD,wBACA8f,EAAA5M,EAAAs8C,EAAAt8C,IAAAy9C,EAAAz9C,IACA09C,EAAA9wC,GAAA6uC,EAAA94C,cAAAhV,EAAA6U,iBAAA7U,EAAAlU,MAAA3J,WAEA,GADAksE,IAAA0B,GAAA/B,EAAAlvD,cACAixD,GAAA/vE,EAAAqyB,KAAA09C,GAAA/vE,EAAAoyB,OAAA,OAAAi7C,EAAAtQ,QACAiR,EAAAxqE,MAAA6uB,IAAA4M,EAAA,KACA+uC,EAAAxqE,MAAA6b,OAAAsvD,EAAAtvD,KAAAywD,EAAAzwD,KAAA,OAGA09B,EAAAl5C,GAAAmqE,EAAA,oBAAA1rE,GACA,IAAA0tE,EAAAtC,EAAAM,EAAA1rE,EAAAqL,QAAArL,EAAA6b,YACA6xD,GAAA,MAAAA,EAAA7B,SAAkC7jD,EAAAolD,aAAAM,EAAA7B,QAA8B7jD,EAAA4kD,UAGhEnyB,EAAAl5C,GAAAmqE,EAAA,iBAAA1rE,GACA,IAAA0tE,EAAAtC,EAAAM,EAAA1rE,EAAAqL,QAAArL,EAAA6b,YACA6xD,GAAA,MAAAA,EAAA7B,SACA7jD,EAAAolD,aAAAM,EAAA7B,QACAd,EAAA75D,QAAAy8D,uBAAA3lD,EAAA4kD,UAIAnyB,EAAAl5C,GAAAmqE,EAAA,uBACA/rE,WAAA,WAA4BqX,EAAAqjB,SAAY,MAGxCogB,EAAAlgC,OAAA3c,EAAA,SAAAguE,EAAApvE,KAAAmvE,cAAAD,EAAAtjE,WAAA5L,KAAAmvE,gBACA,EA2DA,SAAAiC,EAAA/1B,EAAA7gC,EAAA9F,EAAA28D,GACA,GAAAh2B,EAAAyyB,MACAzyB,EAAA7gC,EAAA62D,EAAA38D,OACK,CACL,IAAAgM,EAAA26B,EAAA7gC,EAAA9F,GACAgM,KAAA9d,KAAA8d,EAAA9d,KAAAyuE,GACAA,EAAA3wD,IArTA4sD,EAAA/+D,WACA0vD,MAAA,WACAj+D,KAAA4qC,WACA5qC,KAAAwa,GAAAgI,MAAA8rD,iBAAA,KACAtuE,KAAAutE,KAAA,KACAvtE,KAAAwa,GAAAtU,IAAA,iBAAAlG,KAAA2tE,cAEA3tE,KAAAwrB,QAAAxrB,KAAAoB,MAAA68C,EAAAlgC,OAAA/d,KAAAoB,KAAA,SACApB,KAAAwrB,QAAAxrB,KAAAwrB,OAAAyyC,QACAhgB,EAAAlgC,OAAA/d,KAAAwa,GAAA,gBAAAxa,KAAAwa,MAGAowB,OAAA,WACA,OAAA5qC,KAAAwa,GAAAgI,MAAA8rD,kBAAAtuE,MAGAowE,KAAA,SAAAhvE,EAAA3B,GACA,IAAA8uE,EAAAntE,EAAA2rB,KAAAttB,GACA8uE,EAAAlzB,KAAAkzB,EAAAlzB,KAAAr7C,KAAAwa,GAAApZ,EAAAmtE,GACAvuE,KAAAwa,GAAAu8B,aAAA43B,EAAAJ,KAAA57D,MAAAvR,EAAAuR,KACA47D,EAAA37D,IAAAxR,EAAAwR,GAAA,YACAqrC,EAAAlgC,OAAA3c,EAAA,OAAAmtE,GACAvuE,KAAAi+D,SAGAz/C,eAAA,WACAxe,KAAA8D,WACA4qE,EAAA1uE,KAAA8D,UACA9D,KAAA8D,SAAA,GAGA,IAAA2M,EAAAzQ,KAAAwa,GAAAkmB,YAAAhtB,EAAA1T,KAAAwa,GAAAvH,QAAAxC,EAAAiD,MACA,GAAAjD,EAAAiD,MAAA1T,KAAAwtE,SAAA95D,QAAAjO,OAAAgL,EAAAkB,IAAA3R,KAAAytE,SAAAztE,KAAAwtE,SAAA77D,IACAlB,EAAAkB,GAAA3R,KAAAwtE,SAAA77D,IAAA3R,KAAAwa,GAAAwzB,sBACAv9B,EAAAkB,IAAA3R,KAAA0U,QAAA48D,gBAAAjoE,KAAAqK,EAAAlB,OAAA/B,EAAAkB,GAAA,IACA3R,KAAAi+D,YACO,CACP,IAAAyP,EAAA1tE,KACAA,KAAA8D,SAAA0qE,EAAA,WAA0Dd,EAAAnrC,WAC1DviC,KAAAwrB,QAAAxrB,KAAAwrB,OAAA+lD,YAIAhvC,OAAA,SAAArvB,GACA,SAAAlT,KAAAutE,KAAA,CACA,IAAAG,EAAA1tE,KAAAwxE,IAAAxxE,KAAAutE,KACA6D,EAAApxE,KAAA0U,QAAA2mC,KAAAr7C,KAAAwa,GAAAxa,KAAA0U,QAAA,SAAAtT,GACAssE,EAAAH,MAAAiE,GAAA9D,EAAA+D,aAAArwE,EAAA8R,OAIAu+D,aAAA,SAAArwE,EAAA8R,GACAlT,KAAAoB,MAAA68C,EAAAlgC,OAAA/d,KAAAoB,KAAA,UAEA,IAAA2tE,EAAA/uE,KAAAwrB,QAAAxrB,KAAAwrB,OAAAujD,QAAA77D,GAAAlT,KAAA0U,QAAAg9D,eACA1xE,KAAAwrB,QAAAxrB,KAAAwrB,OAAAyyC,QAEAj+D,KAAAoB,OAEAA,KAAA2rB,KAAAtnB,SACAspE,GAAA,GAAA3tE,EAAA2rB,KAAAtnB,OACAzF,KAAAowE,KAAAhvE,EAAA,IAEApB,KAAAwrB,OAAA,IAAAsjD,EAAA9uE,KAAAoB,GACA68C,EAAAlgC,OAAA3c,EAAA,aAuLA0tE,EAAAvgE,WACA0vD,MAAA,WACA,GAAAj+D,KAAAuuE,WAAA/iD,QAAAxrB,KAAA,CACAA,KAAAuuE,WAAA/iD,OAAA,KACAxrB,KAAAkvE,MAAAtiE,WAAAf,YAAA7L,KAAAkvE,OACAlvE,KAAAuuE,WAAA/zD,GAAA+nD,aAAAviE,KAAA6jD,QAEA,IAAArpC,EAAAxa,KAAAuuE,WAAA/zD,GACAxa,KAAAuuE,WAAA75D,QAAAo8D,iBACAt2D,EAAAtU,IAAA,OAAAlG,KAAAi+B,QACAzjB,EAAAtU,IAAA,QAAAlG,KAAA89B,UAEAtjB,EAAAtU,IAAA,SAAAlG,KAAA+wE,YAGAQ,QAAA,WACAvxE,KAAAuuE,WAAA/zD,GAAA+nD,aAAAviE,KAAA6jD,QACA,IAAAr4B,EAAAxrB,KACAA,KAAA6jD,QAAqB8C,MAAA,WAAmBn7B,EAAAujD,QAAA,IACxC/uE,KAAAuuE,WAAA/zD,GAAA8nD,UAAAtiE,KAAA6jD,SAGAusB,KAAA,WACApwE,KAAAuuE,WAAA6B,KAAApwE,KAAAoB,KAAApB,KAAAmvE,eAGAyB,aAAA,SAAAnxE,EAAAkxE,GAKA,GAJAlxE,GAAAO,KAAAoB,KAAA2rB,KAAAtnB,OACAhG,EAAAkxE,EAAA3wE,KAAAoB,KAAA2rB,KAAAtnB,OAAA,IACAhG,EAAA,IACAA,EAAAkxE,EAAA,EAAA3wE,KAAAoB,KAAA2rB,KAAAtnB,OAAA,GACAzF,KAAAmvE,cAAA1vE,EAAA,CACA,IAAA6L,EAAAtL,KAAAkvE,MAAAtjE,WAAA5L,KAAAmvE,cACA7jE,MAAA/C,UAAA+C,EAAA/C,UAAA4T,QAAA,IAAAkxD,EAAA,MACA/hE,EAAAtL,KAAAkvE,MAAAtjE,WAAA5L,KAAAmvE,aAAA1vE,IACA8I,WAAA,IAAA8kE,EACA/hE,EAAA0lB,UAAAhxB,KAAAkvE,MAAA7rE,UACArD,KAAAkvE,MAAA7rE,UAAAiI,EAAA0lB,UAAA,EACA1lB,EAAA0lB,UAAA1lB,EAAA0U,aAAAhgB,KAAAkvE,MAAA7rE,UAAArD,KAAAkvE,MAAAp9C,eACA9xB,KAAAkvE,MAAA7rE,UAAAiI,EAAA0lB,UAAA1lB,EAAA0U,aAAAhgB,KAAAkvE,MAAAp9C,aAAA,GACAmsB,EAAAlgC,OAAA/d,KAAAoB,KAAA,SAAApB,KAAAoB,KAAA2rB,KAAA/sB,KAAAmvE,cAAA7jE,KAGAulE,aAAA,WACA,OAAAjgE,KAAAoC,MAAAhT,KAAAkvE,MAAAp9C,aAAA9xB,KAAAkvE,MAAApjE,WAAAkU,eAAA,IAgDAi+B,EAAA8mB,eAAA,eACAmJ,QA3BA,SAAA1zD,EAAA/J,GACA,IAAA47D,EAAAlK,EAAA3nD,EAAA0oD,WAAAzyD,EAAA,QACA,GAAA0xD,EAAA18D,OAAA,CACA,IAAAksE,EAAA,SAAAn3D,EAAA62D,EAAA38D,GACA,IAAAk9D,EAtBA,SAAAp3D,EAAA2nD,GACA,IAAA3nD,EAAAwzB,oBAAA,OAAAm0B,EAEA,IADA,IAAAzhD,KACAjhB,EAAA,EAAmBA,EAAA0iE,EAAA18D,OAAoBhG,IACvC0iE,EAAA1iE,GAAA4uE,mBAAA3tD,EAAA9gB,KAAAuiE,EAAA1iE,IACA,OAAAihB,EAiBAmxD,CAAAr3D,EAAA2nD,IACA,SAAA2P,EAAAryE,GACA,GAAAA,GAAAmyE,EAAAnsE,OAAA,OAAA4rE,EAAA,MACAD,EAAAQ,EAAAnyE,GAAA+a,EAAA9F,EAAA,SAAAgM,GACAA,KAAAqM,KAAAtnB,OAAA,EAAA4rE,EAAA3wD,GACAoxD,EAAAryE,EAAA,KAGAqyE,CAAA,IAIA,OAFAH,EAAA7D,OAAA,EACA6D,EAAAtD,mBAAA,EACAsD,EACK,OAAAtF,EAAA7xD,EAAA4/C,UAAA5/C,EAAAkmB,YAAA,cACL,SAAAlmB,GAA2B,OAAAyjC,EAAA5C,KAAA02B,SAAAv3D,GAAsC6xD,WAC5DpuB,EAAA5C,KAAA22B,QACL,SAAAx3D,EAAA9F,GAAoC,OAAAupC,EAAA5C,KAAA22B,QAAAx3D,EAAA9F,IAEpC,gBAQAupC,EAAA8mB,eAAA,2BAAAvqD,EAAA9F,GACA,IACAu9D,EADAh+D,EAAAuG,EAAAkmB,YAAA7Y,EAAArN,EAAAuoD,WAAA9uD,GACAtB,EAAAsrC,EAAAppC,IAAAZ,EAAAP,KAAAmU,EAAAva,OAAAsF,EAAAqB,EACA4T,EAAAva,MAAA2G,EAAAtC,IAAA,KAAAtI,KAAAwe,EAAA3Y,OAAAsD,OAAAyB,EAAAtC,GAAAkW,EAAAva,MAAA,IACA2kE,EAAApqD,EAAA3Y,OAAAoV,OAAA,EAAArQ,EAAAtC,GAAAkW,EAAAva,QAEA2kE,EAAA,GACAt/D,EAAAsB,GAGA,IADA,IAAAuD,KACA/X,EAAA,EAAmBA,EAAAiV,EAAA23D,MAAA5mE,OAA0BhG,IAAA,CAC7C,IAAA41D,EAAA3gD,EAAA23D,MAAA5sE,GACA41D,EAAA5pD,MAAA,EAAAwmE,EAAAxsE,SAAAwsE,GACAz6D,EAAA5X,KAAAy1D,GAGA,GAAA79C,EAAA/R,OAAA,OAA8BsnB,KAAAvV,EAAA7E,OAAAC,QAG9BqrC,EAAAiN,SAAAgnB,aAAAj0B,EAAA2vB,SAEA,IAAAK,GACA5yB,KAAA4C,EAAA5C,KAAA82B,KACAT,gBAAA,EACApC,eAAA,EACAgC,gBAAA,mBACAR,gBAAA,EACAK,uBAAA,EACA/lC,UAAA,KACAklC,WAAA,KACAhhB,UAAA,MAGArR,EAAA0jB,aAAA,qBAzbA1d,CAAQtlD,EAAQ,4BCKf,SAAAs/C,GACD,aAEA,IAAAm0B,EACAC,EACArI,EACAyC,EACA6F,GACAC,UAAA,IACAC,cAAA,MAEA39D,EAAAopC,EAAAppC,IAAAyxD,EAAAroB,EAAAqoB,OAEA,SAAAmM,EAAA/vD,GAAyB,wBAAApkB,OAAAiQ,UAAA2B,SAAA1B,KAAAkU,GAczB,SAAAisD,EAAA9lE,GACA,uBAAAA,MAAA+K,KAGA,SAAA8+D,EAAAvxE,EAAA1C,GAGA,OAFAg0E,EAAAh0E,QAAiCk0E,QAAAl0E,IACjCA,EAAAmV,OAAAnV,EAAAmV,KAAAzS,GACA1C,EAiBA,SAAAm0E,EAAAzxE,GACA,OAAAixE,EAAAjxE,EAAAyQ,eAGA,SAAAihE,EAAAC,GACA,IAAApyD,KACA,QAAA3hB,KAAA+zE,IAAA9jE,eAAAjQ,KACA2hB,EAAA3hB,GAAA+zE,EAAA/zE,IACA,OAAA2hB,EAGA,SAAA7V,EAAAqE,EAAAmmD,GACA,IAAAh7C,EAAAnL,EAAAzJ,OACA0xC,EAAAw3B,EAAAtZ,GAAA/wC,OAAA,EAAAjK,GACA,OAAAnL,EAAA0C,gBAAAulC,EAAAvlC,cAGA,SAAAmhE,EAAAryD,EAAApR,EAAA0jE,EAAAC,GACA,GAAAR,EAAAO,GACA,QAAAvzE,EAAA,EAAqBA,EAAAuzE,EAAAvtE,OAAqBhG,IAC1CoL,EAAAyE,EAAA0jE,EAAAvzE,KAAAihB,EAAA9gB,KAAAqzE,EAAAD,EAAAvzE,UAEA,QAAA41D,KAAA2d,EAAA,GAAAA,EAAAhkE,eAAAqmD,GAAA,CACA,IAAA3yC,EAAAswD,EAAA3d,GAKAxqD,EAAAyE,EADAoT,EAHAA,IAAA,IAAAA,EAGAA,EAAA8H,aAAmC5W,KAAA8O,EAAA9O,KAAA4W,YAAA9H,EAAA8H,aAA6C9H,EAAA9O,KAFhFyhD,IAGA30C,EAAA9gB,KAAAqzE,EAAAvwD,KAKA,SAAAwwD,EAAA/xE,GAEA,KAAAA,EAAAqR,OAAA,KACArR,IAAAmjB,OAAA,IAKA,IADA,IAAA6uD,EAAAhyE,EAAA4B,MAAA0pE,KACAhtE,EAAA,EAAmBA,EAAA0zE,EAAA1tE,OAAsBhG,IACzC0zE,EAAA1zE,GAAA0zE,EAAA1zE,GAAA0c,QAAA,IAAAhR,OAAAshE,EAAA,SACA,OAAA0G,EAAA94B,KAAAoyB,GAGA,SAAA2G,EAAAjyE,GAEA,IADA,IAAAgyE,EAAAxE,EAAAxtE,GAAA4B,MAAA,KACAtD,EAAA,EAAmBA,EAAA0zE,EAAA1tE,OAAsBhG,IACzC0zE,EAAA1zE,GAAAgtE,EAEA0G,EAAA1zE,GAAA0c,QAAA,IAAAhR,OAAAshE,EAAA,KAAAA,KACAA,EACA,IAAAvB,EAAAiI,EAAA94B,KAAA,KACA,uBAAAl5C,EAAA+pE,IACA/pE,EAAA0xE,EAAA1xE,IACAyS,KAAAs3D,EACA/pE,GAoEA,SAAAkyE,EAAAC,EAAAllE,GAEA,IADA,IAAAi+D,EAAAiH,EAAAvwE,MAAA,OACAtD,EAAA,EAAmBA,EAAA4sE,EAAA5mE,OAAkBhG,IACrC4sE,EAAA5sE,IAAA2O,EAAAi+D,EAAA5sE,GAAA0c,QAAA,QAA2C,KAG3C,SAAAo3D,EAAAzwE,EAAA5B,GAcA,IAbA,IAAA2D,EAAA3D,EAAA2D,IACA2uE,EAAA3uE,EAAAu1C,WACAq5B,EAAA3wE,EAAA8O,cACA8hE,EAAA,GACAC,EAAA,GACAC,KACAC,GACAvmE,MAAAuH,EAAA,KACAtH,IAAAsH,EAAA3T,EAAA4Y,WAAA5Y,EAAAs5C,cAAAt5C,EAAA4Y,YAAArU,SAIAquE,EAAAN,EAAAhkE,QAAA8iE,EAAAC,YACA,GAAAuB,GACAF,EAAAh0E,KAAAiF,EAAA04C,aAAAu2B,IACAA,EAAAN,EAAAhkE,QAAA8iE,EAAAC,UAAAuB,EAAA,GAEAF,EAAA12D,QAAArI,EAAA,MACA++D,EAAAh0E,KAAAiV,EAAA3T,EAAA4Y,WAAA5Y,EAAAs5C,cAAAt5C,EAAA4Y,YAAAlG,KAAAnO,SAKA,IAFA,IAAAsuE,EAAA,KACAxoE,EAAArK,EAAAw/B,YACAjhC,EAAA,EAAmBA,EAAAm0E,EAAAnuE,OAAsBhG,IAAA,CACzC,UAAAs0E,GAAAzN,EAAA/6D,EAAAwoE,GAAA,IAAAzN,EAAA/6D,EAAAqoE,EAAAn0E,KAAA,GACAo0E,GAAsBvmE,MAAAymE,EAAAxmE,IAAAqmE,EAAAn0E,IACtB,MAEAs0E,EAAAH,EAAAn0E,GAGA,GAAAo0E,EAAAvmE,MACA,KAAA0mE,EAAAnvE,EAAA01C,SAAAs5B,EAAAvmE,MAAAumE,EAAAtmE,KAAA,GAEA,IAAA9N,EAAA,EAAqBA,EAAAu0E,EAAAvuE,OAAkBhG,IAAA,CASvC,GAPA4zE,EADAW,EAAAv0E,GACA,SAAA41D,GACA,IAAA4e,EAAA5e,EAAAzjD,cACAqiE,IAAAR,GAAAb,EAAAc,KACAC,EAAAD,GACAO,IAAA3B,EAAAE,gBACAkB,EAAAre,KAEAse,EAAA,OAGA,OAAAA,EAGA11B,EAAA8mB,eAAA,sBAAA7jE,EAAAwT,GACA09D,EApMA,SAAA3mD,GACA,IAAA/K,KACA,GAAA+xD,EAAAhnD,GACA,QAAAhsB,EAAAgsB,EAAAhmB,OAAA,EAAoChG,GAAA,EAAQA,IAAA,CAC5C,IAAAoJ,EAAA4iB,EAAAhsB,GACAihB,EAAAiuD,EAAA9lE,GAAA+I,eAAA8gE,EAAA/D,EAAA9lE,WAEK,GAAA4iB,EACL,QAAAtqB,KAAAsqB,EACA/K,EAAAvf,EAAAyQ,eAAA8gE,EAAAvxE,EAAAsqB,EAAAtqB,IAEA,OAAAuf,EAyLAwzD,CAAAx/D,KAAA09D,QACA,IAAA+B,EAAAz/D,KAAA29D,aACA+B,EAAA1/D,KAAA0/D,gBACA/B,EAAA8B,GAAAvB,EAAAuB,GACAnK,EA9NA,SAAA9oE,GACA,IAAAO,EAAAP,EAAA2D,IAAAgqC,WAEA,MADA,QAAAptC,MAAA,cACAw8C,EAAAt8B,YAAAlgB,GAAAuoE,SA2NAqK,CAAAnzE,GACAurE,EAzNA,SAAAvrE,GACA,IAAAO,EAAAP,EAAA2D,IAAAgqC,WAEA,MADA,QAAAptC,MAAA,cACAw8C,EAAAt8B,YAAAlgB,GAAAgrE,iBAAA,IAsNA6H,CAAApzE,GAEAizE,IAAA9B,IACAA,EAAAkB,EAAAY,EAAAjzE,KAEAmxE,SAEAM,UACAN,IAAAM,SAEA,IAEArlE,EAAAC,EAAA+B,EAFA2E,EAAA/S,EAAAw/B,YACAhgB,KACAmH,EAAA3mB,EAAA6hE,WAAA9uD,GAcA,GAbA4T,EAAAta,IAAA0G,EAAAtC,KACAkW,EAAAta,IAAA0G,EAAAtC,GACAkW,EAAA3Y,OAAA2Y,EAAA3Y,OAAAzD,MAAA,EAAAwI,EAAAtC,GAAAkW,EAAAva,QAGAua,EAAA3Y,OAAArE,MAAA,kBACAyE,EAAAuY,EAAA3Y,OACA5B,EAAAua,EAAAva,MACAC,EAAAsa,EAAAta,MAEAD,EAAAC,EAAA0G,EAAAtC,GACArC,EAAA,IAEA,KAAAA,EAAAkD,OAAA,IAAAlD,EAAAkD,OAAA,IAAAi6D,EACAn/D,EA1JA,SAAA2G,EAAA4T,EAAAnH,EAAAxf,GAMA,IAJA,IAAAqzE,GAAA,EACApB,KACA7lE,EAAAua,EAAAva,MACAknE,GAAA,EACAA,GACAA,EAAA,KAAA3sD,EAAA3Y,OAAAsD,OAAA,GACA+hE,KAAA1sD,EAAA3Y,OAAAsD,OAAA,IAAAi6D,EAEAn/D,EAAAua,EAAAva,MACA6lE,EAAAj2D,QAAAg2D,EAAArrD,EAAA3Y,SAGA,MADA2Y,EAAA3mB,EAAA6hE,WAAAluD,EAAAZ,EAAAP,KAAAmU,EAAAva,SACA4B,SACAslE,GAAA,EACA3sD,EAAA3mB,EAAA6hE,WAAAluD,EAAAZ,EAAAP,KAAAmU,EAAAva,SAKA,IAAA4B,EAAAikE,EAAA94B,KAAA,KACA04B,EAAAryD,EAAAxR,EAAAkjE,EAAA,SAAAxzC,GACA,OAAA21C,EAAAnB,EAAAx0C,OAIAm0C,EAAAryD,EAAAxR,EAAAmjE,EAAA,SAAAzzC,GACA,OAAA21C,EAAAnB,EAAAx0C,OAIA1vB,EAAAikE,EAAA1hC,MACA,IAAAkiC,EAAAR,EAAA94B,KAAA,KAEAv3C,GAAA,EACA2xE,EAAAd,EAEA,IAAAf,EAAAe,GAAA,CACA,IAAAe,EAAAf,GACAA,EAAAJ,EAAAI,EAAAzyE,MACAwzE,IAAA5xE,GAAA,GAGA,IAAA6vE,EAAAC,EAAAe,GAkBA,OAjBAhB,eACAA,aAEAA,GACAI,EAAAryD,EAAAxR,EAAAyjE,EAAA,SAAA/zC,GACA,IAAA+1C,EAAAhB,EAQA,OAPA,GAAA7wE,IAAA6xE,EAAAF,GACA,iBAAA71C,EACAA,EAAA+1C,EAAA,IAAA/1C,GAEAA,EAAAi0C,EAAAj0C,IACAhrB,KAAA+gE,EAAA,IAAA/1C,EAAAhrB,KAEA2gE,EAAAnB,EAAAx0C,OAIAtxB,EA4FAsnE,CAAA3gE,EAAA4T,EAAAnH,EAAAxf,OACK,CACL,IAAA2zE,EAAA,SAAAj2C,EAAAr2B,GAMA,MALA,iBAAAq2B,EACAA,EAAAr2B,YAEAq2B,GAAehrB,KAAAgrB,EAAAr2B,aAEfq2B,GAEAm0C,EAAAryD,EAAApR,EAAA+iE,EAAA,SAAAzzC,GACA,OAAAi2C,EAAAj2C,EAAA,yDAEAm0C,EACAryD,EACApR,EACA8iE,EAAA,SAAAxzC,GACA,OAAAi2C,EAAAj2C,EAAA,2BAGAw1C,GACArB,EAAAryD,EAAApR,EAAA06D,EAAA,SAAAprC,GACA,OAAAi2C,EAAAj2C,EAAAhtB,cAAA,6BAIA,OAAYmb,KAAArM,EAAA/N,KAAAkC,EAAAZ,EAAAP,KAAApG,GAAAsF,GAAAiC,EAAAZ,EAAAP,KAAAnG,OAxSZ02C,CAAQtlD,EAAQ,KAAyBA,EAAQ,4BCKhD,SAAAs/C,GACD,aAEA,IAAAppC,EAAAopC,EAAAppC,IAEA,SAAAigE,EAAAz5B,EAAA05B,EAAAC,GACA,OAAAA,EAAA35B,EAAA7rC,QAAAulE,IAAA,EACA,GAAA15B,EAAA91C,YAAAwvE,EAAA,GAiGA92B,EAAA8mB,eAAA,aA9FA,SAAAvqD,EAAA9F,GACA,IAAAugE,EAAAvgE,KAAAwgE,WACAtK,EAAAl2D,KAAAygE,WAAA,IACAH,EAAAtgE,KAAAsgE,cACA,GAAAC,EAAA,CACA,IAAAhhE,EAAAuG,EAAAkmB,YAAA7Y,EAAArN,EAAAuoD,WAAA9uD,GACA4T,EAAAta,IAAA0G,EAAAtC,KACAkW,EAAAta,IAAA0G,EAAAtC,GACAkW,EAAA3Y,OAAA2Y,EAAA3Y,OAAAzD,MAAA,EAAAwI,EAAAtC,GAAAkW,EAAAva,QAEA,IAAAkX,EAAAy5B,EAAAt7B,UAAAnI,EAAAqH,UAAAgG,EAAArF,OACA,UAAAgC,EAAA/iB,KAAAN,KAAA,CACA,IAAAi0E,EAEAC,EAFA30D,KAAA40D,GAAA,EACAnpE,EAAA,UAAA9C,KAAAwe,EAAA3gB,QAAA,KAAAmC,KAAAwe,EAAA3Y,QACAqmE,EAAAppE,GAAA,MAAA9C,KAAAwe,EAAA3Y,QAEA,GAAAqmE,EAAA,CACA,IAAA74D,EAAAlC,EAAAvH,QAAAgB,EAAAP,MAAAjI,MAAAmF,KAAA0E,IAAA,EAAAuS,EAAAva,MAAA,GAAAua,EAAAva,OACAkoE,EAAA,OAAAnsE,KAAAqT,GAAA,aAAArT,KAAAqT,GAAA,YACA84D,IAAAH,EAAAxtD,EAAAva,OAAA,SAAAkoE,EAAA,WACKrpE,GAAA,KAAA0b,EAAA3Y,OACLsmE,EAAA,OACKrpE,GAAA,MAAA0b,EAAA3Y,SACLsmE,EAAA,SAGA,IAAArpE,IAAAqY,EAAAhC,MAAA+yD,SAAAC,EAAA,CACAD,IACAH,EAAAvtD,EAAA3Y,QACAomE,EAAAE,EACA,IAAAxJ,EAAAxnD,EAAAhC,MAAA0C,QAAAuwD,EAAAzJ,GAAAiJ,EAAAjJ,EAAAuJ,SACAG,EAAA1J,EAAAyJ,KAAAniE,SAAA2hE,EAAA,QACA,GAAAS,GAAA,SAAAF,EACA,QAAA/1E,EAAA,EAAuBA,EAAAi2E,EAAAjwE,SAAsBhG,EAAA21E,IAAAN,EAAAY,EAAAj2E,GAAA21E,EAAAJ,IAC7Ct0D,EAAA9gB,KAAA,IAAA81E,EAAAj2E,SACO,YAAA+1E,EACP,QAAAr0E,KAAA8zE,GACAA,EAAAjmE,eAAA7N,IAAA,QAAAA,GAAA,UAAAA,GAAAi0E,IAAAN,EAAA3zE,EAAAi0E,EAAAJ,IACAt0D,EAAA9gB,KAAA,IAAAuB,GAEA6qE,KAAAoJ,GAAA,SAAAI,GAAAV,EAAA9I,EAAAuJ,QAAAH,EAAAJ,KACAt0D,EAAA9gB,KAAA,KAAAosE,EAAAuJ,QAAA,SACK,CAEL,IAAAl1E,GAAAo1E,EAAAR,EAAAzwD,EAAAhC,MAAA+yD,WAAAE,EAAAp1E,MACAs1E,EAAAV,EAAA,UACA,IAAA50E,IAAAs1E,EAAA,OACA,GAAAt1E,GAEO,GAAAs1E,EAAA,CACP,IAAA9lE,KACA,QAAA+lE,KAAAD,IAAA3mE,eAAA4mE,KAAA/lE,EAAA+lE,GAAAD,EAAAC,IACA,QAAAA,KAAAv1E,IAAA2O,eAAA4mE,KAAA/lE,EAAA+lE,GAAAv1E,EAAAu1E,IACAv1E,EAAAwP,QALAxP,EAAAs1E,EAOA,aAAA9tD,EAAA3gB,MAAA,KAAA2gB,EAAA3Y,OAAA,CACA,IAEA2mE,EAAAC,GAFAp5D,EAAAlC,EAAA+/B,SAAA1lC,EAAAZ,EAAAP,KAAA9C,KAAA0E,IAAA,EAAArB,EAAAtC,GAAA,KACAkD,EAAAZ,EAAAP,KAAA,UAAAmU,EAAA3gB,KAAA2gB,EAAAva,MAAAua,EAAAta,OACA1C,MAAA,2BACA,IAAAirE,IAAAz1E,EAAA2O,eAAA8mE,EAAA,OAAAD,EAAAx1E,EAAAy1E,EAAA,YAEA,GADA,mBAAAD,QAAArnE,KAAAxO,KAAAwa,IACA,UAAAqN,EAAA3gB,KAAA,CACAkuE,EAAAvtD,EAAA3Y,OACA,IAAArQ,EAAA,EACA,OAAAwK,KAAAwe,EAAA3Y,OAAAsD,OAAA,MACAo4D,EAAA/iD,EAAA3Y,OAAAsD,OAAA,GACA4iE,EAAAvtD,EAAA3Y,OAAAzD,MAAA,GACA5M,KAEA,IAAAwb,EAAAwN,EAAA3Y,OAAAzJ,OACA,OAAA4D,KAAAwe,EAAA3Y,OAAAsD,OAAA6H,EAAA,MACAuwD,EAAA/iD,EAAA3Y,OAAAsD,OAAA6H,EAAA,GACA+6D,EAAAvtD,EAAA3Y,OAAAoV,OAAAzlB,EAAAwb,EAAA,IAEAi7D,GAAA,EAEA,IAAA71E,EAAA,EAAuBA,EAAAo2E,EAAApwE,SAAqBhG,EAAA21E,IAAAN,EAAAe,EAAAp2E,GAAA21E,EAAAJ,IAC5Ct0D,EAAA9gB,KAAAgrE,EAAAiL,EAAAp2E,GAAAmrE,QAMA,QAAAx/C,IAJA,aAAAvD,EAAA3gB,OACAkuE,EAAAvtD,EAAA3Y,OACAomE,GAAA,GAEAj1E,KAAA2O,eAAAoc,IAAAgqD,IAAAN,EAAA1pD,EAAAgqD,EAAAJ,IACAt0D,EAAA9gB,KAAAwrB,GAGA,OACA2B,KAAArM,EACA/N,KAAA2iE,EAAAzgE,EAAAZ,EAAAP,KAAA,MAAA2hE,EAAAxtD,EAAAva,MAAA+nE,GAAAphE,EACArB,GAAA0iE,EAAAzgE,EAAAZ,EAAAP,KAAAmU,EAAAta,KAAA0G,QAzGAgwC,CAAQtlD,EAAQ,4BCKf,SAAAs/C,GACD,aAEA,SAAA83B,EAAA1J,GACA,WAAAlhE,OAAA,MAAAkhE,EAAAhyB,KAAA,gBAGA,IAAA27B,EAAAD,GAAA,wBACAE,GAAA,yCACA,6CACA,oCACA,iCACA,mCACAC,GAAA,4DACA,kEACA,yDACA,uDACA,qDACA,sDACA,qDACA,kDACA,oDACA,kDACA,wBAGA,SAAA3iD,EAAA/Q,GACA,OAAAA,EAAA2zD,OAAA3zD,EAAA2zD,OAAA1wE,OAAA,GAHAw4C,EAAA8mB,eAAA,qBAAAkR,EAAAt4D,OAAAu4D,IAMAj4B,EAAAqnB,WAAA,kBAAA8Q,EAAAC,GAOA,IANA,IAAAC,EAAA,QAEAC,EAAAF,EAAAE,YAAAF,EAAAG,kBAAA,4BAEAC,GAAAJ,EAAAK,gBAAAL,EAAAM,gBAAAN,EAAAO,iBAAAP,EAAAQ,iBACAR,EAAAI,WAAA,mDACAh3E,EAAA,EAAmBA,EAAAg3E,EAAAhxE,OAAsBhG,IAAAg3E,EAAAh3E,IAAAg3E,EAAAx+D,OAAAxY,IAAA,GAEzC,IAAAq3E,EAAAT,EAAAS,eAAAV,EAAAjf,WAEA4f,EAAAd,EAAAe,EAAAd,OACA1yD,GAAA6yD,EAAAY,iBACAF,IAAAp5D,OAAA04D,EAAAY,sBAEAzzD,GAAA6yD,EAAAa,iBACAF,IAAAr5D,OAAA04D,EAAAa,iBAEA,IAAAC,IAAAd,EAAA7P,SAAA17D,OAAAurE,EAAA7P,SAAA,GACA,GAAA2Q,EAAA,CAEA,IAAAC,EAAAf,EAAAe,aAAA,oDACAL,IAAAp5D,QAAA,mDACAq5D,IAAAr5D,QAAA,iCACA,IAAA05D,EAAA,IAAAlsE,OAAA,2CAAuE,SAClE,CACLisE,EAAAf,EAAAe,aAAA,0BACAL,IAAAp5D,QAAA,iBACAq5D,IAAAr5D,QAAA,wDACA,qDACA,oDACA05D,EAAA,IAAAlsE,OAAA,2CAAuE,KAEvE,IAAA6+D,EAAA+L,EAAAgB,GACAO,EAAAvB,EAAAiB,GAGA,SAAArM,EAAAljD,EAAAjF,GACA,IAAAc,EAAAmE,EAAAnE,OAAA,MAAAd,EAAA+0D,UAGA,GAFAj0D,IAAAd,EAAAw0C,OAAAvvC,EAAAxD,eAEAX,GAAA,MAAAiQ,EAAA/Q,GAAAtb,KAAA,CACA,IAAAswE,EAAAjkD,EAAA/Q,GAAAjL,OACA,GAAAkQ,EAAA7D,WAAA,CACA,IAAA6zD,EAAAhwD,EAAAxD,cAKA,OAJAwzD,EAAAD,EACAE,EAAAl1D,GACAi1D,EAAAD,GAAAG,EAAAlwD,EAAAjF,IAAA,KAAAiF,EAAAlE,SACAf,EAAAo1D,YAAA,GACA,KAEA,IAAAlzE,EAAAmzE,EAAApwD,EAAAjF,GAGA,OAFAg1D,EAAA,GAAAG,EAAAlwD,EAAAjF,KACA9d,GAAA,IAAA4xE,GACA5xE,EAGA,OAAAmzE,EAAApwD,EAAAjF,GAGA,SAAAq1D,EAAApwD,EAAAjF,GACA,GAAAiF,EAAA7D,WAAA,YAGA,GAAA6D,EAAA5c,MAAA,wBAGA,GAAA4c,EAAA5c,MAAA,gBACA,IAAAitE,GAAA,EAKA,GAHArwD,EAAA5c,MAAA,iCAA0DitE,GAAA,GAC1DrwD,EAAA5c,MAAA,kBAA2CitE,GAAA,GAC3CrwD,EAAA5c,MAAA,YAAqCitE,GAAA,GACrCA,EAGA,OADArwD,EAAA/D,IAAA,MACA,SAGA,IAAAq0D,GAAA,EAgBA,GAdAtwD,EAAA5c,MAAA,oBAAAktE,GAAA,GAEAtwD,EAAA5c,MAAA,gBAAAktE,GAAA,GAEAtwD,EAAA5c,MAAA,iBAAAktE,GAAA,GAEAtwD,EAAA5c,MAAA,mCAEA4c,EAAA/D,IAAA,MAEAq0D,GAAA,GAGAtwD,EAAA5c,MAAA,kBAAAktE,GAAA,GACAA,EAGA,OADAtwD,EAAA/D,IAAA,MACA,SAKA,GAAA+D,EAAA5c,MAAAwsE,GAEA,OADA,IAAA5vD,EAAAlc,UAAAsG,cAAArC,QAAA,MAKAgT,EAAAyoD,SAiCA,SAAA+M,EAAAC,GACA,YAAAzoE,QAAAwoE,EAAAxlE,OAAA,GAAAX,gBAAA,GACAmmE,IAAA1zD,OAAA,GAEA,IAAA4zD,EAAA,GAAAF,EAAAvyE,OACA0yE,EAAA,SAEA,SAAAC,EAAA3M,GACA,gBAAAhkD,EAAAjF,GACA,IAAAgC,EAAAqzD,EAAApwD,EAAAjF,GASA,MARA,eAAAgC,IACA,KAAAiD,EAAAlc,UACAiX,EAAAyoD,SAAAmN,EAAA3M,EAAA,GACa,KAAAhkD,EAAAlc,YACbiX,EAAAyoD,SAAAQ,EAAA,EAAA2M,EAAA3M,EAAA,GACA4M,IAGA7zD,GAIA,SAAA6zD,EAAA5wD,EAAAjF,GACA,MAAAiF,EAAApE,OAEA,GADAoE,EAAA9D,SAAA,eACA8D,EAAA/D,IAAA,OAEA,GADA+D,EAAAhE,OACAy0D,GAAAzwD,EAAApE,MACA,OAAA80D,MACW,IAAA1wD,EAAA5c,MAAAmtE,GAEX,OADAx1D,EAAAyoD,SAAAgN,EACAE,EACW,GAAA1wD,EAAA5c,MAAA,MAEX,OAAAstE,EACW,GAAA1wD,EAAA5c,MAAA,KAAyB,GAGpC,OADA2X,EAAAyoD,SAAAmN,EAAA,GACA3wD,EAAAlc,UAAA4sE,EACA31D,EAAAyoD,SAAAxjD,EAAAjF,GACW,GAAAiF,EAAA5c,MAAA,MACX,OAAAstE,EACW,GAAA1wD,EAAA5c,MAAA,KAEX,OAAAyrE,EAEA7uD,EAAA/D,IAAA,QAGA,GAAAw0D,EAAA,CACA,GAAA7B,EAAAiC,uBACA,OAAAhC,EAEA9zD,EAAAyoD,SAAAgN,EAEA,OAAAE,EAGA,OADAE,EAAAE,UAAA,EACAF,EA3FAG,CAAA/wD,EAAAlc,UAAAiX,EAAAyoD,UACAzoD,EAAAyoD,SAAAxjD,EAAAjF,KAJAA,EAAAyoD,SAiGA,SAAA+M,EAAAC,GACA,YAAAzoE,QAAAwoE,EAAAxlE,OAAA,GAAAX,gBAAA,GACAmmE,IAAA1zD,OAAA,GAEA,IAAA4zD,EAAA,GAAAF,EAAAvyE,OACA0yE,EAAA,SAEA,SAAAE,EAAA5wD,EAAAjF,GACA,MAAAiF,EAAApE,OAEA,GADAoE,EAAA9D,SAAA,WACA8D,EAAA/D,IAAA,OAEA,GADA+D,EAAAhE,OACAy0D,GAAAzwD,EAAApE,MACA,OAAA80D,MACW,IAAA1wD,EAAA5c,MAAAmtE,GAEX,OADAx1D,EAAAyoD,SAAAgN,EACAE,EAEA1wD,EAAA/D,IAAA,QAGA,GAAAw0D,EAAA,CACA,GAAA7B,EAAAiC,uBACA,OAAAhC,EAEA9zD,EAAAyoD,SAAAgN,EAEA,OAAAE,EAGA,OADAE,EAAAE,UAAA,EACAF,EA/HAI,CAAAhxD,EAAAlc,UAAAiX,EAAAyoD,UACAzoD,EAAAyoD,SAAAxjD,EAAAjF,IAOA,QAAA/iB,EAAA,EAAqBA,EAAAg3E,EAAAhxE,OAAsBhG,IAC3C,GAAAgoB,EAAA5c,MAAA4rE,EAAAh3E,IAAA,iBAEA,OAAAgoB,EAAA5c,MAAA0rE,GAAA,cAEA,KAAA/zD,EAAA+0D,WAAA9vD,EAAA5c,MAAAusE,GACA,WAEA3vD,EAAA5c,MAAAm/D,IAAAviD,EAAA5c,MAAAmrE,GACA,UAEAvuD,EAAA5c,MAAAysE,GACA,UAEA7vD,EAAA5c,MAAA,iBACA,aAEA4c,EAAA5c,MAAAusE,GACA,OAAA50D,EAAA+0D,WAAA,SAAA/0D,EAAA+0D,UACA,MACA,YAIA9vD,EAAAhE,OACA6yD,GAiGA,SAAAoB,EAAAl1D,GACA,WAAA+Q,EAAA/Q,GAAAtb,MAAAsb,EAAA2zD,OAAA1kC,MACAjvB,EAAA2zD,OAAAv2E,MAAyB2X,OAAAgc,EAAA/Q,GAAAjL,OAAA6+D,EAAAjf,WACzBjwD,KAAA,KACAo4B,MAAA,OAUA,SAAAq4C,EAAAlwD,EAAAjF,GAEA,IADA,IAAAwE,EAAAS,EAAAxD,cACAzB,EAAA2zD,OAAA1wE,OAAA,GAAA8tB,EAAA/Q,GAAAjL,OAAAyP,GAAA,CACA,SAAAuM,EAAA/Q,GAAAtb,KAAA,SACAsb,EAAA2zD,OAAA1kC,MAEA,OAAAle,EAAA/Q,GAAAjL,QAAAyP,EAGA,SAAA0xD,EAAAjxD,EAAAjF,GACAiF,EAAAnE,QAAAd,EAAAm2D,iBAAA,GAEA,IAAAj0E,EAAA8d,EAAAyoD,SAAAxjD,EAAAjF,GACAjX,EAAAkc,EAAAlc,UAGA,GAAAiX,EAAAm2D,iBAAA,KAAAptE,EACA,OAAAkc,EAAA5c,MAAAusE,GAAA,UAAAD,EAAA,WAAAb,EAgBA,GAdA,KAAAjtE,KAAAkC,KAAAiX,EAAAm2D,iBAAA,GAEA,YAAAj0E,GAAA,WAAAA,GACA,QAAA8d,EAAA+0D,YACA7yE,EAAA,QAGA,QAAA6G,GAAA,UAAAA,IACAiX,EAAAm1D,QAAA,GAEA,UAAApsE,IAAAiX,EAAAo2D,QAAA,GACA,KAAArtE,GAAAiX,EAAAo2D,QAAA,MAAArlD,EAAA/Q,GAAAtb,MACAwwE,EAAAl1D,GAEA,GAAAjX,EAAA9F,SAAA,iBAAA4D,KAAA3E,GAAA,CACA,IAAAm0E,EAAA,MAAkCrpE,QAAAjE,GAKlC,IAJA,GAAAstE,GA1CA,SAAApxD,EAAAjF,EAAAtb,GACA,IAAAo4B,EAAA7X,EAAA5c,MAAA,uBAAyC,QAAA4c,EAAAzD,SAAA,EACzCxB,EAAA2zD,OAAAv2E,MAAyB2X,OAAAiL,EAAAw0C,OAAA8f,EACzB5vE,OACAo4B,UAuCAw5C,CAAArxD,EAAAjF,EAAA,MAA8C/W,MAAAotE,IAAA,KAG9C,IADAA,EAAA,MAA8BrpE,QAAAjE,IAC9B,CACA,GAAAgoB,EAAA/Q,GAAAtb,MAAAqE,EACA,OAAA+qE,EADA9zD,EAAAw0C,OAAAx0C,EAAA2zD,OAAA1kC,MAAAl6B,OAAAu/D,GASA,OALAt0D,EAAAm1D,OAAA,GAAAlwD,EAAApE,OAAA,MAAAkQ,EAAA/Q,GAAAtb,OACAsb,EAAA2zD,OAAA1wE,OAAA,GAAA+c,EAAA2zD,OAAA1kC,MACAjvB,EAAAm1D,QAAA,GAGAjzE,EA6CA,OAzCAme,WAAA,SAAAk2D,GACA,OACA9N,SAAAN,EACAwL,SAAoB5+D,OAAAwhE,GAAA,EAAA7xE,KAAA,KAAAo4B,MAAA,OACpB03B,OAAA+hB,GAAA,EACAxB,UAAA,KACAqB,QAAA,EACAjB,OAAA,IAIA9vD,MAAA,SAAAJ,EAAAjF,GACA,IAAAw2D,EAAAx2D,EAAAo1D,WACAoB,IAAAx2D,EAAAo1D,YAAA,GACA,IAAAlzE,EAAAg0E,EAAAjxD,EAAAjF,GAQA,OANA9d,GAAA,WAAAA,IACA8d,EAAA+0D,UAAA,WAAA7yE,GAAA,eAAAA,EAAA+iB,EAAAlc,UAAA7G,GACA,eAAAA,MAAA,MAEA+iB,EAAApE,OAAAb,EAAAo2D,SACAp2D,EAAAo2D,QAAA,GACAI,EAAAt0E,EAAA,IAAA4xE,EAAA5xE,GAGAsyD,OAAA,SAAAx0C,EAAAupD,GACA,GAAAvpD,EAAAyoD,UAAAN,EACA,OAAAnoD,EAAAyoD,SAAAsN,SAAAt6B,EAAAhuC,KAAA,EAEA,IAAAgpE,EAAA1lD,EAAA/Q,GAAAu7C,EAAAkb,EAAA/xE,MAAA6kE,EAAAv5D,OAAA,GACA,aAAAymE,EAAA35C,MACA25C,EAAA35C,OAAAy+B,EAAA,KAEAkb,EAAA1hE,QAAAwmD,EAAA+Y,EAAA,IAGAje,cAAA,gBACAuT,eAAsB8M,QAAA,OACtB/M,YAAA,IACAgN,KAAA,YAKAl7B,EAAAunB,WAAA,0BAEA,IAAAlzD,EAEA2rC,EAAAunB,WAAA,iBACArkE,KAAA,SACA81E,gBAJA3kE,EAIA,6HAJ6BA,EAAAvP,MAAA,SAhY7BkhD,CAAQtlD,EAAQ,4BCKf,SAAAs/C,GACD,aAEA,IAAAm7B,GACAC,iBAAoBC,MAAA,EAAAhoE,MAAA,EAAAioE,IAAA,EAAA7oE,KAAA,EAAA8oE,SAAA,EACpBC,OAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAtjB,KAAA,EAAA5qC,OAAA,EACAmuD,QAAA,EAAAC,MAAA,EAAAC,MAAA,EAAA/M,OAAA,EAAA/6D,QAAA,EACA+nE,OAAA,EAAAC,KAAA,EAAAC,UAAA,GACAC,kBAAqBC,IAAA,EAAAC,IAAA,EAAAC,UAAA,EAAAlpB,QAAA,EAAAvwD,GAAA,EACrB05E,IAAA,EAAA15D,IAAA,EAAA25D,OAAA,EAAAC,IAAA,EAAAC,OAAA,EACArhD,IAAA,EAAAshD,IAAA,GACAC,iBACAR,IAAWA,IAAA,EAAAS,IAAA,GACXA,IAAWT,IAAA,EAAAS,IAAA,GACXR,IAAWA,IAAA,GACXjpB,QAAeA,QAAA,EAAAkpB,UAAA,GACfA,UAAiBA,UAAA,GACjBz5E,GAAUi6E,SAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,YAAA,EAAAzoE,KAAA,EACVsN,KAAA,EAAAo7D,IAAA,EAAAC,UAAA,EAAAC,QAAA,EAAAlV,MAAA,EACAmV,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EACAC,QAAA,EAAAC,QAAA,EAAAhC,IAAA,EAAA1R,MAAA,EAAA2T,KAAA,EAAAC,IAAA,EACAj7E,GAAA,EAAAyoB,KAAA,EAAAyyD,SAAA,EAAAnI,OAAA,EAAAoI,IAAA,GACAzB,IAAWA,IAAA,EAAA15D,IAAA,GACXA,IAAW05D,IAAA,EAAA15D,IAAA,GACX25D,OAAcA,OAAA,EAAAE,OAAA,GACdD,IAAWA,IAAA,EAAAphD,IAAA,GACXqhD,OAAcF,OAAA,GACdnhD,IAAWohD,IAAA,EAAAphD,IAAA,GACX4iD,OAAczB,OAAA,EAAAE,OAAA,GACdC,IAAWA,IAAA,IAEXuB,aAAgB5yD,KAAA,GAChB6yD,eAAA,EACAC,cAAA,EACAC,UAAA,GAGAC,GACAhD,mBACAa,oBACAS,mBACAsB,eACAC,eAAA,EACAC,cAAA,EACAG,qBAAA,EACAF,UAAA,GAGAn+B,EAAAqnB,WAAA,eAAAiX,EAAAC,GACA,IAOAt1E,EAAAu1E,EAPAtlB,EAAAolB,EAAAplB,WACAqS,KACArV,EAAAqoB,EAAAE,SAAAtD,EAAAiD,EACA,QAAAttE,KAAAolD,EAAAqV,EAAAz6D,GAAAolD,EAAAplD,GACA,QAAAA,KAAAytE,EAAAhT,EAAAz6D,GAAAytE,EAAAztE,GAKA,SAAA4tE,EAAAl1D,EAAAjF,GACA,SAAAo6D,EAAAC,GAEA,OADAr6D,EAAAyoD,SAAA4R,EACAA,EAAAp1D,EAAAjF,GAGA,IAAA7Q,EAAA8V,EAAAhE,OACA,WAAA9R,EACA8V,EAAA/D,IAAA,KACA+D,EAAA/D,IAAA,KACA+D,EAAA5c,MAAA,UAAA+xE,EAAAE,EAAA,eACA,KACSr1D,EAAA5c,MAAA,MACT+xE,EAAAE,EAAA,qBACSr1D,EAAA5c,MAAA,kBACT4c,EAAA9D,SAAA,aACAi5D,EAoFA,SAAAG,EAAAtR,GACA,gBAAAhkD,EAAAjF,GAEA,IADA,IAAA7Q,EACA,OAAAA,EAAA8V,EAAAhE,SAAA,CACA,QAAA9R,EAEA,OADA6Q,EAAAyoD,SAAA8R,EAAAtR,EAAA,GACAjpD,EAAAyoD,SAAAxjD,EAAAjF,GACS,QAAA7Q,EAAA,CACT,MAAA85D,EAAA,CACAjpD,EAAAyoD,SAAA0R,EACA,MAGA,OADAn6D,EAAAyoD,SAAA8R,EAAAtR,EAAA,GACAjpD,EAAAyoD,SAAAxjD,EAAAjF,IAIA,cArGAu6D,CAAA,KAEA,KAEOt1D,EAAA/D,IAAA,MACP+D,EAAA9D,SAAA,aACAnB,EAAAyoD,SAAA6R,EAAA,aACA,SAEA51E,EAAAugB,EAAA/D,IAAA,0BACAlB,EAAAyoD,SAAA+R,EACA,eAEK,KAAArrE,GAEL8V,EAAA/D,IAAA,KACA+D,EAAA/D,IAAA,KACA+D,EAAA9D,SAAA,eAAA8D,EAAA/D,IAAA,KAEA+D,EAAA9D,SAAA,SAAA8D,EAAA/D,IAAA,KAGA+D,EAAA9D,SAAA,cAAA8D,EAAA/D,IAAA,MAEA,gBAEA+D,EAAA9D,SAAA,SACA,MAKA,SAAAq5D,EAAAv1D,EAAAjF,GACA,IAwBAooD,EACAqS,EAzBAtrE,EAAA8V,EAAAhE,OACA,QAAA9R,GAAA,KAAAA,GAAA8V,EAAA/D,IAAA,KAGA,OAFAlB,EAAAyoD,SAAA0R,EACAz1E,EAAA,KAAAyK,EAAA,wBACA,cACK,QAAAA,EAEL,OADAzK,EAAA,SACA,KACK,QAAAyK,EAAA,CACL6Q,EAAAyoD,SAAA0R,EACAn6D,QAAA06D,EACA16D,EAAA+yD,QAAA/yD,EAAA6yD,SAAA,KACA,IAAA5xD,EAAAjB,EAAAyoD,SAAAxjD,EAAAjF,GACA,OAAAiB,IAAA,yBACK,eAAApa,KAAAsI,IACL6Q,EAAAyoD,UASAL,EATAj5D,GAUAsrE,EAAA,SAAAx1D,EAAAjF,GACA,MAAAiF,EAAApE,OACA,GAAAoE,EAAAhE,QAAAmnD,EAAA,CACApoD,EAAAyoD,SAAA+R,EACA,MAGA,iBAEAG,eAAA,EACAF,GAnBAz6D,EAAA46D,eAAA31D,EAAAzD,SACAxB,EAAAyoD,SAAAxjD,EAAAjF,KAEAiF,EAAA5c,MAAA,4CACA,QAkBA,SAAAiyE,EAAAp4E,EAAA24E,GACA,gBAAA51D,EAAAjF,GACA,MAAAiF,EAAApE,OAAA,CACA,GAAAoE,EAAA5c,MAAAwyE,GAAA,CACA76D,EAAAyoD,SAAA0R,EACA,MAEAl1D,EAAAhE,OAEA,OAAA/e,GAiCA,SAAAonE,EAAAtpD,GACAA,EAAA0C,UAAA1C,EAAA0C,QAAA1C,EAAA0C,QAAArJ,MAEA,SAAAyhE,EAAA96D,EAAA+6D,GAEA,IADA,IAAAC,IACA,CACA,IAAAh7D,EAAA0C,QACA,OAGA,GADAs4D,EAAAh7D,EAAA0C,QAAAqwD,SACA/L,EAAAmR,gBAAA3rE,eAAAwuE,KACAhU,EAAAmR,gBAAA6C,GAAAxuE,eAAAuuE,GACA,OAEAzR,EAAAtpD,IAIA,SAAA06D,EAAAh2E,EAAAugB,EAAAjF,GACA,iBAAAtb,GACAsb,EAAA6yD,SAAA5tD,EAAAzD,SACAy5D,GACK,YAAAv2E,EACLw2E,EAEAR,EAGA,SAAAO,EAAAv2E,EAAAugB,EAAAjF,GACA,cAAAtb,GACAsb,EAAA+yD,QAAA9tD,EAAAlc,UACAkxE,EAAA,MACAkB,GACKnU,EAAA8S,qBAAA,UAAAp1E,GACLu1E,EAAA,cACAkB,EAAAz2E,EAAAugB,EAAAjF,KAEAi6D,EAAA,QACAgB,GAGA,SAAAC,EAAAx2E,EAAAugB,EAAAjF,GACA,WAAAtb,EAAA,CACA,IAAAquE,EAAA9tD,EAAAlc,UAIA,OAHAiX,EAAA0C,SAAA1C,EAAA0C,QAAAqwD,YACA/L,EAAA0Q,iBAAAlrE,eAAAwT,EAAA0C,QAAAqwD,UACAzJ,EAAAtpD,GACAA,EAAA0C,SAAA1C,EAAA0C,QAAAqwD,aAAA,IAAA/L,EAAAoU,cACAnB,EAAA,MACAoB,IAEApB,EAAA,YACAqB,GAEK,OAAAtU,EAAA8S,qBAAA,UAAAp1E,GACLu1E,EAAA,cACAoB,EAAA32E,EAAAugB,EAAAjF,KAEAi6D,EAAA,QACAqB,GAIA,SAAAD,EAAA32E,EAAA62E,EAAAv7D,GACA,gBAAAtb,GACAu1E,EAAA,QACAoB,IAEA/R,EAAAtpD,GACA06D,GAEA,SAAAY,EAAA52E,EAAAugB,EAAAjF,GAEA,OADAi6D,EAAA,QACAoB,EAAA32E,EAAAugB,EAAAjF,GAGA,SAAAm7D,EAAAz2E,EAAA62E,EAAAv7D,GACA,WAAAtb,EAEA,OADAu1E,EAAA,YACAuB,EACK,aAAA92E,GAAA,gBAAAA,EAAA,CACL,IAAAquE,EAAA/yD,EAAA+yD,QAAAF,EAAA7yD,EAAA6yD,SASA,OARA7yD,EAAA+yD,QAAA/yD,EAAA6yD,SAAA,KACA,gBAAAnuE,GACAsiE,EAAA6P,gBAAArqE,eAAAumE,GACA+H,EAAA96D,EAAA+yD,IAEA+H,EAAA96D,EAAA+yD,GACA/yD,EAAA0C,QAAA,IAhGA,SAAA1C,EAAA+yD,EAAA0I,GACAj+E,KAAA6b,KAAA2G,EAAA0C,QACAllB,KAAAu1E,UACAv1E,KAAAg3D,OAAAx0C,EAAAwE,SACAhnB,KAAAi+E,eACAzU,EAAAyS,YAAAjtE,eAAAumE,IAAA/yD,EAAA0C,SAAA1C,EAAA0C,QAAAg5D,YACAl+E,KAAAk+E,UAAA,GA0FA,CAAA17D,EAAA+yD,EAAAF,GAAA7yD,EAAAwE,WAEAk2D,EAGA,OADAT,EAAA,QACAkB,EAEA,SAAAK,EAAA92E,EAAAugB,EAAAjF,GACA,gBAAAtb,EAAAi3E,GACA3U,EAAA2S,eAAAM,EAAA,SACAkB,EAAAz2E,EAAAugB,EAAAjF,IAEA,SAAA27D,EAAAj3E,EAAAugB,EAAAjF,GACA,gBAAAtb,EAAAk3E,EACA,QAAAl3E,GAAAsiE,EAAA0S,eAAiDO,EAAA,SAAoBkB,IACrElB,EAAA,QACAkB,EAAAz2E,EAAAugB,EAAAjF,IAEA,SAAA47D,EAAAl3E,EAAAugB,EAAAjF,GACA,gBAAAtb,EAAAk3E,EACAT,EAAAz2E,EAAAugB,EAAAjF,GAGA,OAlMAm6D,EAAA0B,UAAA,GAmMAx7D,WAAA,SAAAy7D,GACA,IAAA97D,GAAmByoD,SAAA0R,EACnBn6D,MAAA06D,EACAl2D,SAAAs3D,GAAA,EACA/I,QAAA,KAAAF,SAAA,KACAnwD,QAAA,MAEA,OADA,MAAAo5D,IAAA97D,EAAA87D,cACA97D,GAGAqF,MAAA,SAAAJ,EAAAjF,GAIA,IAHAA,EAAA+yD,SAAA9tD,EAAAnE,QACAd,EAAAwE,SAAAS,EAAAxD,eAEAwD,EAAA7D,WAAA,YACA1c,EAAA,KACA,IAAAxC,EAAA8d,EAAAyoD,SAAAxjD,EAAAjF,GAOA,OANA9d,GAAAwC,IAAA,WAAAxC,IACA+3E,EAAA,KACAj6D,gBAAAtb,GAAAxC,EAAA+iB,EAAAjF,GACAi6D,IACA/3E,EAAA,SAAA+3E,EAAA/3E,EAAA,SAAA+3E,IAEA/3E,GAGAsyD,OAAA,SAAAx0C,EAAAupD,EAAAwS,GACA,IAAAr5D,EAAA1C,EAAA0C,QAEA,GAAA1C,EAAAyoD,SAAAkS,cACA,OAAA36D,EAAA6yD,UAAA7yD,EAAAwE,SACAxE,EAAA46D,eAAA,EAEA56D,EAAAwE,SAAAmwC,EAEA,GAAAjyC,KAAAg5D,SAAA,OAAAjgC,EAAAhuC,KACA,GAAAuS,EAAAyoD,UAAA+R,GAAAx6D,EAAAyoD,UAAA0R,EACA,OAAA4B,IAAA1zE,MAAA,aAAApF,OAAA,EAEA,GAAA+c,EAAA+yD,QACA,WAAA/L,EAAAgV,0BACAh8D,EAAA6yD,SAAA7yD,EAAA+yD,QAAA9vE,OAAA,EAEA+c,EAAA6yD,SAAAle,GAAAqS,EAAAiV,0BAAA,GAEA,GAAAjV,EAAAkV,YAAA,cAAAr1E,KAAA0iE,GAAA,SACA,IAAA4S,EAAA5S,GAAA,sBAAAviE,KAAAuiE,GACA,GAAA4S,KAAA,GACA,KAAAz5D,GAAA,CACA,GAAAA,EAAAqwD,SAAAoJ,EAAA,IACAz5D,IAAArJ,KACA,MACW,IAAA2tD,EAAA0Q,iBAAAlrE,eAAAkW,EAAAqwD,SAGX,MAFArwD,IAAArJ,UAKO,GAAA8iE,EACP,KAAAz5D,GAAA,CACA,IAAA05D,EAAApV,EAAAmR,gBAAAz1D,EAAAqwD,SACA,IAAAqJ,MAAA5vE,eAAA2vE,EAAA,IAGA,MAFAz5D,IAAArJ,KAKA,KAAAqJ,KAAArJ,OAAAqJ,EAAA+4D,aACA/4D,IAAArJ,KACA,OAAAqJ,IAAA8xC,OAAAG,EACA30C,EAAA87D,YAAA,GAGAzlB,cAAA,gBACAoT,kBAAA,UACAC,gBAAA,SAEA2S,cAAArV,EAAAkT,SAAA,aACAx6D,WAAAsnD,EAAAkT,SAAA,aAEAoC,cAAA,SAAAt8D,GACAA,SAAA27D,IACA37D,QAAAm7D,OAKA1/B,EAAAunB,WAAA,kBACAvnB,EAAAunB,WAAA,yBACAvnB,EAAAv8B,UAAA1S,eAAA,cACAivC,EAAAunB,WAAA,aAAsCrkE,KAAA,MAAAu7E,UAAA,KA1YtCz4B,CAAQtlD,EAAQ,4BCMf,SAAAs/C,GACD,aAEA,IAAA8gC,GACAC,SAAA,WACAz0D,WAAA,YACA00D,KAAA,SACAC,KAAA,UACAvjE,KAAA,OACAwjE,eAAA,SACAC,SAAA,WACAv/D,IAAA,cACAw/D,GAAA,KACAC,SAAA,WACAC,SAAA,YACA7D,OAAA,SACA8D,KAAA,UACAC,MAAA,SACAC,OAAA,KACA7F,KAAA,OACA8F,eAAA,OACAC,MAAA,aACAC,MAAA,aACAC,MAAA,UACAC,UAAA,WACA12D,IAAA,WACAzoB,EAAA,WACAgqE,MAAA,UACA10D,KAAA,QACA8pE,YAAA,MACAC,OAAA,SACA9oC,IAAA,UACA+oC,IAAA,UACAvM,MAAA,aACAwM,aAAA,YAYA,SAAAC,EAAA34D,EAAAjF,EAAA7Q,GACA,SAAAA,EACA,OAAA8V,EAAA/D,IAAA,KACA28D,EAAA54D,EAAAjF,EAAA,iBAEA69D,EAAA54D,EAAAjF,EAAA,YAGA,SAAA7Q,EACA,OAAA8V,EAAA/D,IAAA,KACA28D,EAAA54D,EAAAjF,EAAA,iBAEA69D,EAAA54D,EAAAjF,EAAA,iBAGA,SAAA7Q,EAEA,OADA8V,EAAA5c,MAAA,WAAA2X,EAAA+8D,UAAA,GACAe,EAAA99D,GAGA,SAAA7Q,GACA8V,EAAA5c,MAAA,eAEA,OAAA01E,EAAA/9D,EAAAu8D,EAAAiB,aAGA,SAAAruE,GAAA8V,EAAA5c,MAAA,0BACA,OAAA01E,EAAA/9D,EAAAu8D,EAAAS,MAEA,SAAA7tE,GAAA8V,EAAA/D,IAAA,KACA,OAAA28D,EAAA54D,EAAAjF,EAAA,iBAEA,SAAA7Q,GAAA8V,EAAA/D,IAAA,KACA,OAAA28D,EAAA54D,EAAAjF,EAAA,oBAEA,SAAA7Q,IAAA8V,EAAA/D,IAAA,KACA,OAAA28D,EAAA54D,EAAAjF,EAAA,kBAEA,SAAA7Q,EACA,OAAA0uE,EAAA54D,EAAAjF,EAAA,mBAEA,SAAA7Q,EACA,OAAA0uE,EAAA54D,EAAAjF,EAAA,aAEA,SAAA7Q,EACA,OAAA0uE,EAAA54D,EAAAjF,EAAA,cAEA,SAAA7Q,EACA,OAAA0uE,EAAA54D,EAAAjF,EAAA,cAEA,SAAA7Q,EACA,OAAA0uE,EAAA54D,EAAAjF,EAAA,cAEA,SAAA7Q,EAAA,CACA,IAAAzK,EAAAm5E,EAAA54D,EAAAjF,EAAA,8BAEA,OADAiF,EAAA5c,MAAA,SACA3D,EAEA,OAAAo5E,EAAA99D,GAGA,SAAA69D,EAAA54D,EAAAjF,EAAAg+D,EAAAC,EAAAC,GACA,IAAAC,EAAAl5D,EAAAhX,IAAAiwE,EAAAj5D,EAAAvY,OAAAsD,OAAAiV,EAAAhX,IAAAiwE,EAAA,QACAE,EAAAn5D,EAAAlE,OACA,GAAAf,EAAAg+D,IACA,KAAAI,GAAA,KAAAv3E,KAAAu3E,KAAAD,GAAA,KAAAt3E,KAAAs3E,GAAA,CACA,IAAAz5E,EAAAo5E,EAAA99D,GAEA,OADAA,EAAAg+D,IAAA,EACAt5E,SAEKy5E,GAAA,KAAAt3E,KAAAs3E,KAAAC,GAAA,KAAAv3E,KAAAu3E,IACLn5D,EAAA5c,MAAA,IAAAM,OAAA,SAAAs1E,EAAAzuE,OAAA,mBACAwQ,EAAAg+D,IAAA,EACAh+D,EAAA/gB,KAAAo/E,EAAAt2D,YAEA,OAAA+1D,EAAA99D,GAGA,SAAA89D,EAAA99D,GACA,IAAAg/C,EAAAsf,EAAAt+D,GACA,GAAAg/C,EAAA,OAAAA,EAEA,IAAA17C,KAUA,OATAtD,EAAAu+D,YAAAj7D,EAAAlmB,KAAAm/E,EAAAv8D,EAAAu+D,aAEAj7D,IAAAnI,OAoCA,SAAA6E,GAEA,IADA,IAAAsD,KACArmB,EAAA,EAAmBA,EAAAgP,UAAAhJ,SAAsBhG,EACzC+iB,EAAA/T,UAAAhP,KACAqmB,EAAAlmB,KAAAm/E,EAAAtwE,UAAAhP,KAEA,OAAAqmB,EA1CAk7D,CACAx+D,EAAA,2DACA,6EAEA,WAAAA,EAAAu+D,YACAj7D,EAAAlmB,KAAAm/E,EAAArD,OAAA,IAAAl5D,EAAAk5D,QAEA51D,EAAArgB,OAAAqgB,EAAAu0B,KAAA,UAGA,SAAAymC,EAAAt+D,GACA,IAAAtb,EAAAsb,EAAAu+D,WAEA,OAAA75E,GACA,gBACA,WACA,UACA,OAAA63E,EAAA73E,GACA,QACA,OAAAsb,EAAAu9D,UACAhB,EAAAgB,WAAA74E,EAAA,IAAA63E,EAAA73E,GAAA,IACA,MAIA,SAAAq5E,EAAA/9D,EAAAy+D,GACA,IAAAzf,EAAAsf,EAAAt+D,GACA,GAAAg/C,EAAA,OAAAA,EAEA,IAAAt6D,EAAAo5E,EAAA99D,GACA,OAAAy+D,EACA/5E,IAAA,IAAA+5E,IAEA/5E,EAYA,SAAA0gB,EAAApF,GACA,IAAA0+D,EAAA1+D,EAAA0+D,eAAAh6E,EAAAsb,EAAAu+D,WAEA,QAAAhiF,KAAAyjB,IAAAxT,eAAAjQ,WACAyjB,EAAAzjB,GAEAyjB,EAAA/gB,KAAAo/E,EAAAM,UACAD,IACA1+D,EAAAu+D,WAAA75E,EACAsb,EAAA0+D,gBAAA,GAIA,IAAAE,GACAn4D,SACAo4D,QACAC,GAAA,KACAC,GAAA,KACApC,eAAA,WACAqC,kBAAA,WACA3hE,IAAA,MACA4hE,UAAA,SACAC,KAAA,QACAhG,OAAA,SACA8D,KAAA,8CACA3F,KAAA,YACA8F,eAAA,kBACA5yD,KAAA,aACAgzD,UAAA,YACA4B,KAAA,IACAt4D,IAAA,MACAsqD,MAAA,QACAiO,oBAAA,YACAzB,aAAA,QACA0B,UAAA,0BACAjuE,KAAA,6BAEA2W,YACA+U,MAAA,eACAwiD,SAAA,kBACAC,KAAA,eACAC,IAAA,mBACA13D,IAAA,cAEA23D,SAAA,SAAA9gF,GACA,OAAAA,GACA,gBACA,OAAAigF,EAAAc,OAAA,IAAAd,EAAAC,OAAAI,UAAA,KACA,WACA,OAAAL,EAAAc,OAAA,IAAAd,EAAAC,OAAA7B,KAAA,MAAA4B,EAAAC,OAAA7B,KAAA,UACA,qBACA,OAAA4B,EAAAc,OAAA,IAAAd,EAAAC,OAAA1B,eAAA,KACA,iBACA,OAAAyB,EAAAc,OAAA,IAAAd,EAAAC,OAAAt0D,KAAAo1D,EAAA,0BACA,0BACA,OAAAf,EAAAc,OAAA,IAAAd,EAAAgB,SAAAhB,EAAAC,OAAAO,oBACAO,EAAA,0BACA,WACA,OAAAf,EAAAc,OAAA,IAAAC,EAAA,aACA,iBACA,OAAAf,EAAAc,OAAA,IAAAC,EAAA,YAAAA,EAAA,iBACA,uBACA,iBACA,OAAAf,EAAAc,OAAA,IAAAC,EAAA,sBAEA,eACA,OAAAf,EAAAgB,SAAAhB,EAAAC,OAAAxhE,IAAAuhE,EAAAC,OAAAK,KACAN,EAAAC,OAAA3F,OAAA0F,EAAAC,OAAAC,GAAAF,EAAAC,OAAAE,GACAH,EAAAC,OAAAtB,UAAAqB,EAAAC,OAAAh4D,IAAA+3D,EAAAC,OAAA1N,MACAyN,EAAAC,OAAAM,MAEA,oBACA,OAAAP,EAAAgB,SAAAhB,EAAA72D,WAAAu3D,SAAAV,EAAA72D,WAAAD,IACA82D,EAAA72D,WAAAw3D,KAAAX,EAAA72D,WAAA+U,MAAA8hD,EAAA72D,WAAAy3D,KAEA,QACA,OAAAZ,EAAAc,OAAA,IAAAd,EAAAC,OAAAlgF,MAGA+gF,OAAA,WAEA,IADA,IAAAh+D,EAAA,GACAzkB,EAAA,EAAqBA,EAAAgP,UAAAhJ,SAAsBhG,EAAA,CAC3C,IAAA4iF,EAAA5zE,UAAAhP,GACAykB,GAAA,iBAAAm+D,MAAArwE,OAEA,WAAA7G,OAAA+Y,IAEAk+D,SAAA,WAEA,IADA,IAAA/sC,GAAA5mC,UAAA,IACAhP,EAAA,EAAqBA,EAAAgP,UAAAhJ,SAAsBhG,EAC3C41C,EAAA,EAAA51C,EAAA,OACA41C,EAAA,EAAA51C,GAAAgP,UAAAhP,GAKA,OAFA41C,EAAAn4B,QAAA,OACAm4B,EAAAz1C,KAAA,KACAwhF,EAAAc,OAAAxzE,MAAA,KAAA2mC,KAIA,SAAA8sC,EAAAhhF,GACA,OAAAigF,EAAAn4D,MAAA9nB,KAAAigF,EAAAn4D,MAAA9nB,GAAAigF,EAAAa,SAAA9gF,IAGA,IAAA0/E,GACAM,UAAA,SAAA15D,EAAAjF,GACA,OAAAiF,EAAA5c,MAAAs3E,EAAA,mBACA3/D,EAAA0+D,gBAAA,GACA1+D,EAAA/gB,KAAAo/E,EAAAyB,WAAA76D,EAAAjF,KAGAs+D,EAAAt+D,KACAiF,EAAA5c,MAAAs3E,EAAA,kBACAI,EAAA1B,EAAA9zD,KACAtF,EAAA5c,MAAAs3E,EAAA,iBACAI,EAAA1B,EAAAlN,MACAlsD,EAAA5c,MAAAs3E,EAAA,sBACAI,EAAA1B,EAAAlB,eACAl4D,EAAA5c,MAAAs3E,EAAA,mBACAI,EAAA1B,EAAA1B,eACA13D,EAAA5c,MAAAs3E,EAAA,cACAI,EAAA1B,EAAArB,QAEAh9D,EAAA/gB,KAAA8gF,GAAA1B,EAAAjtE,MAAA6T,EAAAjF,IAbA,IAAA+/D,GAgBAD,UAAA,SAAA76D,EAAAjF,GACA,IAAA3X,EAAA3D,EAGA,OAFAsb,EAAAu+D,WAAA,MAEAl2E,EAAA4c,EAAA5c,MAAAs3E,EAAA,YAKAt3E,GAJA3D,EAAA2D,EAAA,IAIAA,MAAAs3E,EAAA,aACA3/D,EAAAu+D,WAAA,SACAv+D,EAAAk5D,OAAA91E,SAAAiF,EAAA,QACO3D,EAAA2D,MAAAs3E,EAAA,OACP3/D,EAAAu+D,WAAA,QACO75E,EAAA2D,MAAAs3E,EAAA,OACP3/D,EAAAu+D,WAAA,OACO75E,EAAA2D,MAAAs3E,EAAA,SACP3/D,EAAAu+D,WAAA,WACO75E,EAAA2D,MAAAs3E,EAAA,cACP3/D,EAAAu+D,WAAA,YACO75E,EAAA2D,MAAAs3E,EAAA,QACP3/D,EAAAu+D,WAAA,MACO75E,EAAA2D,MAAAs3E,EAAA,QACP3/D,EAAAu+D,WAAA,MACO75E,EAAA2D,MAAAs3E,EAAA,YACP3/D,EAAAu+D,WAAA,SAGAv+D,EAAA/gB,KAAAo/E,EAAAt2D,WACA+1D,EAAA99D,KAtBAA,EAAA/gB,KAAAo/E,EAAAjtE,MAAA6T,EAAAjF,IAyBA5O,KAAA,SAAA6T,EAAAjF,GACA,GAAAiF,EAAA5c,MAAAs3E,EAAA,gBAAA7B,EAAA99D,GAEA,IAAA7Q,EAAA8V,EAAAhE,OACA,YAAA9R,GACA6Q,EAAA/gB,KAAAo/E,EAAAhH,MAAApyD,EAAAjF,GACA49D,EAAA34D,EAAAjF,EAAA7Q,IAGA4Y,WAAA,SAAA9C,EAAAjF,GAGA,OAFAA,EAAA/gB,KAAAo/E,EAAA2B,aAEA/6D,EAAA5c,MAAAs3E,EAAA,eACA5B,EAAA/9D,EAAAu8D,EAAAx0D,YAEA+1D,EAAA99D,IAGAggE,aAAA,SAAA/6D,EAAAjF,GAKA,OAJAiF,EAAA/D,IAAA,MAAA+D,EAAA/D,IAAA,OACAlB,EAAA0+D,gBAAA,GAEA1+D,EAAA/gB,KAAAo/E,EAAAjtE,KACA0sE,EAAA99D,IAGAuK,KAAA,SAAAtF,EAAAjF,GACA,IAAA3X,EAAA4c,EAAA5c,MAAAs3E,EAAA,SACA3/D,EAAAigE,UAAA53E,EAAA,GAAApF,OACA,IAAAi9E,GAAAlgE,EAAAigE,UAAA,KASA,OALAjgE,EAAAu+D,WAHA2B,EAEA,IAAAA,EACA,QAEA,QAJA,QAMAlgE,EAAA/gB,KAAAo/E,EAAAt2D,WACA+1D,EAAA99D,IAGAq3D,KAAA,SAAApyD,EAAAjF,GAEA,OADAA,EAAA/gB,KAAAo/E,EAAAjtE,KACA6T,EAAA5c,MAAAs3E,EAAA,UACA16D,EAAA5c,MAAA,OACA01E,EAAA/9D,EAAAu8D,EAAAlF,OAEAyG,EAAA99D,IAGAm9D,eAAA,SAAAl4D,EAAAjF,GAEA,OADAiF,EAAA5D,YACA08D,EAAA/9D,EAAAu8D,EAAAY,iBAGAR,eAAA,SAAA13D,EAAAjF,GAUA,OATAiF,EAAA5c,MAAAs3E,EAAA,mBAEA3/D,EAAAu+D,WAAA,iBAEAt5D,EAAA5c,MAAA,QACA2X,EAAA0+D,gBAAA,EAEA1+D,EAAA/gB,KAAAo/E,EAAAt2D,WAEA+1D,EAAA99D,IAGAg9D,KAAA,SAAA/3D,EAAAjF,GAEA,OADAiF,EAAA5D,YACA08D,EAAA/9D,EAAAu8D,EAAAS,OAGA7L,MAAA,SAAAlsD,EAAAjF,GAEA,OADAA,EAAAu+D,WAAA,SACAv+D,EAAA/gB,KAAAo/E,EAAA8B,WAAAl7D,EAAAjF,IAGAmgE,UAAA,SAAAl7D,EAAAjF,GAOA,OANAiF,EAAA5c,MAAAs3E,EAAA,iBACA3/D,EAAA29D,cAAA,EAEA14D,EAAA/D,IAAA,KAEAlB,EAAA/gB,KAAAo/E,EAAAe,oBACAtB,EAAA99D,IAGAo/D,oBAAA,SAAAn6D,EAAAjF,GAGA,OAFAA,EAAA/gB,KAAAo/E,EAAAgB,UAEAp6D,EAAA5c,MAAAs3E,EAAA,wBACA5B,EAAA/9D,EAAAu8D,EAAAx0D,YAEA+1D,EAAA99D,IAGAq/D,UAAA,SAAAp6D,EAAAjF,GACA,OAAAiF,EAAA5c,MAAAs3E,EAAA,cACA7B,EAAA99D,GAEA,MAAAiF,EAAAlE,QACAf,EAAA/gB,KAAAo/E,EAAA8B,UACArC,EAAA99D,IAEA49D,EAAA34D,EAAAjF,EAAAiF,EAAAhE,UAIAw6B,EAAAqnB,WAAA,qBACA,OACAziD,WAAA,WACA,OAAgBphB,KAAAo/E,EAAAM,YAEhBt5D,MAAA,SAAAJ,EAAAjF,GAEA,OADAiF,EAAAnE,OA5ZA,SAAAmE,EAAAjF,GACAA,EAAA/gB,KAAAo/E,EAAAM,UACA3+D,EAAA29D,cAAA,EAEA,mBAAA39D,EAAAu+D,YAAAv+D,EAAA0+D,gBACAz5D,EAAA5c,MAAAs3E,EAAA,2BACA3/D,EAAA0+D,gBAAA,GAsZA0B,CAAAn7D,EAAAjF,GACAA,EAAA/gB,KAAAgmB,EAAAjF,IAEAoF,eAIAq2B,EAAAunB,WAAA,6BA9cAvhB,CAAQtlD,EAAQ,4BCKf,SAAAs/C,GACD,aAEAA,EAAAqnB,WAAA,mBAEA,IAAA+G,KACA,SAAAwW,EAAAn+E,EAAAo+E,GACA,QAAArjF,EAAA,EAAkBA,EAAAqjF,EAAAr9E,OAAiBhG,IACnC4sE,EAAAyW,EAAArjF,IAAAiF,EAIA,IAAAq+E,GAAA,gBACA9M,GAAA,sEACA,6DACA+M,GAAA,0EACA,6FACA,0FACA,0FACA,2FACA,aAsDA,SAAA3K,EAAAzN,EAAAlmE,GACA,IAAAu5D,EAAA,KAAA2M,EAAA,SAAAA,EAAgD,IAAMA,EACtD,gBAAAnjD,EAAAjF,GAEA,IADA,IAAAiB,EAAAynD,GAAA,EACA,OAAAznD,EAAAgE,EAAAhE,SAAA,CACA,GAAAA,IAAAw6C,IAAAiN,EAAA,CACA1oD,EAAA0F,OAAAoW,QACA,MACS,SAAA7a,IAAAynD,GAAA,MAAAN,GAAAnjD,EAAAlE,QAAA06C,EAAA,CACTiN,GAAA,EACAzjD,EAAA1D,OAAA,GACAvB,EAAA0F,OAAAhL,QAAA+lE,GACA,MACS,IAAA/X,GAAAN,IAAA3M,GAAAx6C,IAAAmnD,EAET,OADApoD,EAAA0F,OAAAhL,QAAAm7D,EAAAzN,EAAAlmE,IACAumE,EAAAxjD,EAAAjF,GACS,IAAA0oD,GAAA,OAAA7hE,KAAAoa,KAAA,OAAApa,KAAAuhE,GAAA,CACTpoD,EAAA0F,OAAAhL,QAAAgmE,EAAAz/D,EAAA,WACAgE,EAAA1D,OAAA,GACA,MAEAmnD,MAAA,OAAAznD,EAEA,OAAA/e,GAIA,SAAAw+E,EAAAtY,EAAAlmE,GACA,gBAAA+iB,EAAAjF,GAGA,OAFAA,EAAA0F,OAAA,GAAAmwD,EAAAzN,EAAAlmE,GACA+iB,EAAAhE,OACAwnD,EAAAxjD,EAAAjF,IAnFAy7B,EAAA8mB,eAAA,oBAAAge,EAAAplE,OAAAs4D,EAAA+M,IAEAH,EAAA,OAAAE,GACAF,EAAA,UAAA5M,GACA4M,EAAA,UAAAG,GAmFA,IAAAC,EAAA,SAAAx7D,EAAAjF,GACAA,EAAA0F,OAAAziB,OAAA,GAAAgiB,EAAA/D,IAAA,KACA,IAAA/R,EAAA8V,EAAAhE,OACA,eAAcpa,KAAAsI,IACd6Q,EAAA0F,OAAA,GAAAmwD,EAAA1mE,EAAA,KAAAA,EAAA,aAAAA,EAAsE,gBACtEs5D,EAAAxjD,EAAAjF,KAEA,KAAAnZ,KAAAsI,IAAA8V,EAAA9D,SAAA,MACAnB,EAAA0F,OAAAoW,QACA,QAGA,SAAA2sC,EAAAxjD,EAAAjF,GACA,OAAAA,EAAA0F,OAAA,IA9FA,SAAAT,EAAAjF,GACA,GAAAiF,EAAA7D,WAAA,YAEA,IAAAN,EAAAmE,EAAAnE,MACA3R,EAAA8V,EAAAhE,OAEA,UAAA9R,EAEA,OADA8V,EAAAhE,OACA,KAEA,SAAA9R,GAAA,MAAAA,GAAA,MAAAA,EAEA,OADA6Q,EAAA0F,OAAAhL,QAAAm7D,EAAA1mE,EAAA,MAAAA,EAAA,mBACAs5D,EAAAxjD,EAAAjF,GAEA,SAAA7Q,EACA,OAAA2R,GAAAmE,EAAA/D,IAAA,MACA+D,EAAA5D,YACA,SAEA4D,EAAA5D,YACA,WAEA,SAAAlS,EAEA,OADA6Q,EAAA0F,OAAAhL,QAAA+lE,GACAhY,EAAAxjD,EAAAjF,GAEA,SAAA7Q,GAAA,MAAAA,EACA,iBAEA,SAAAA,EAGA,OAFA8V,EAAA/D,IAAA,KACA+D,EAAA9D,SAAA,MACA,YAEA,QAAAta,KAAAsI,KACA8V,EAAA9D,SAAA,MACA8D,EAAApE,QAAA,KAAAha,KAAAoe,EAAAlE,SACA,eAGAkE,EAAA9D,SAAA,SACA,IAAA1P,EAAAwT,EAAAlc,UACA,YAAAkc,EAAAlE,QAAA,MAAAla,KAAA4K,GAAA,MACAo4D,EAAAr9D,eAAAiF,GAAAo4D,EAAAp4D,GAAA,OAmDAwT,EAAAjF,GAGA,OACAK,WAAA,WAA4B,OAAQqF,YACpCL,MAAA,SAAAJ,EAAAjF,GACA,OAAAyoD,EAAAxjD,EAAAjF,IAEA4pD,cAAA,iBACAD,YAAA,IACAgN,KAAA,WAIAl7B,EAAAunB,WAAA,qBAGAvnB,EAAAunB,WAAA,6BAhJAvhB,CAAQtlD,EAAQ,kTCoEdgH,YArDkB,SAACw9E,GACnB,GAAc,IAAVA,EAAa,MAAO,MACxB,IAEE1jF,EAAImR,KAAKoC,MAAMpC,KAAKwyE,IAAID,GAASvyE,KAAKwyE,IAFhC,OAIR,OAAOx9E,UAAUu9E,EAAQvyE,KAAKyyE,IAJtB,KAI6B5jF,IAAI6jF,YAAY,IAAM,KAHhD,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAGa7jF,MAgDvE8jF,OA1Ca,SAACjxE,GACd,GAAmB,iBAARA,EACT,IACE,IAAI1D,EAAM40E,KAAKC,MAAMnxE,GACrB,QAAmB,iBAAf,IAAO1D,EAAP,YAAA80E,EAAO90E,MAAoBA,GAK/B,MAAOpL,GACP,OAAO,MAiCXmgF,gBA1BsB,SAACC,GAKvB,MAJoB,iBAATA,IACTA,EAAOJ,KAAKK,UAAUD,OAAMpgE,EAAW,KAEzCogE,EAAOA,EAAKznE,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAAKA,QAAQ,KAAM,MACpDA,QAAQ,yGAA0G,SAAUtR,GACtI,IAAIK,EAAM,SAYV,MAXI,KAAK7B,KAAKwB,GAEVK,EADE,KAAK7B,KAAKwB,GACN,MAEA,SAEC,aAAaxB,KAAKwB,GAC3BK,EAAM,UACG,OAAO7B,KAAKwB,KACrBK,EAAM,QAED,gBAAkBA,EAAM,KAAOL,EAAQ,iEC7CzCtJ,aAFU,MAAO,MAAO,KAAM,OAAQ,MAAO,KAAM,OAAQ,MAAO,MAAO,2DCehFmE,eAdAo+E,OAAQ,UACRC,OAAQ,UACRC,MAAO,QACPC,QAAS,UACTC,OAAQ,UACRC,MAAO,SACPC,QAAS,UACTC,OAAQ,MACRC,OAAQ,MACRC,OAAQ,oECtBVpjF,KAAA","file":"js/7.ec65230.js","sourcesContent":["function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-511724d0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./noType.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./noType.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./noType.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-511724d0\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./noType.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue\n// module id = 1001\n// module chunks = 7 8","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/resource/pages/file/pages/details/index.vue","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/spin/spin.vue","\n \n
\n {{title}}\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/listConstruction/listConstruction.vue","\n \n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/secondaryMenu/secondaryMenu.vue","\n \n
\n
\n
\n
\n
{{msg || $t('查询无数据')}}
\n
\n
\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/noData/noData.vue","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {this.id = null;};\n Delayed.prototype.set = function (ms, f) {\n clearTimeout(this.id);\n this.id = setTimeout(f, ms);\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 30;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\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\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\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\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n input.init(d);\n }\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n // Add a span to a line.\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n var line = getLine(doc, lineNo$$1);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers || (emitter._handlers = {});\n map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range$$1;\n try {range$$1 = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range$$1 || range$$1.parentElement() != te) { return false }\n return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var this$1 = this;\n\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n var this$1 = this;\n\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this$1.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (node.className == \"CodeMirror-linewidget\")\n { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map$$1, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map$$1.length; i += 3) {\n mStart = map$$1[i];\n mEnd = map$$1[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map$$1[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n node = map$$1[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n node = map$$1[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = true; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight$$1 = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo$$1, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight$$1; box.bottom += widgetHeight$$1;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo$$1, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top || y >= coords.bottom;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor]);\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[cm.options.gutters[i]] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range$$1 = doc.sel.ranges[i];\n if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n var collapsed = range$$1.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range$$1.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range$$1, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range$$1, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range$$1.from(), sTo = range$$1.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm);\n return true\n }\n return false\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range$$1) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range$$1;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range$$1 = cm.curOp.scrollToPos;\n if (range$$1) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n scrollToCoordsRange(cm, from, to, range$$1.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this$1.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range$$1 = document.createRange();\n range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range$$1.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range$$1);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(cm) {\n var width = cm.display.gutters.offsetWidth;\n cm.display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function updateGutters(cm) {\n var gutters = cm.display.gutters, specs = cm.options.gutters;\n removeChildren(gutters);\n var i = 0;\n for (; i < specs.length; ++i) {\n var gutterClass = specs[i];\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n if (gutterClass == \"CodeMirror-linenumbers\") {\n cm.display.lineGutter = gElt;\n gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = i ? \"\" : \"none\";\n updateGutterSpace(cm);\n }\n\n // Make sure the gutters options contains the element\n // \"CodeMirror-linenumbers\" when the lineNumbers option is true.\n function setGuttersForLineNumbers(options) {\n var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n if (found == -1 && options.lineNumbers) {\n options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n } else if (found > -1 && !options.lineNumbers) {\n options.gutters = options.gutters.slice(0);\n options.gutters.splice(found, 1);\n }\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n var this$1 = this;\n\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this$1.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var this$1 = this;\n\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this$1.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n var this$1 = this;\n\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this$1.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight$$1);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(startGen) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = startGen || 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n var this$1 = this;\n\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm)\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n var this$1 = this;\n\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this$1;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n var this$1 = this;\n\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this$1.lines[i];\n this$1.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var e = at + n; at < e; ++at)\n { if (op(this$1.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n var this$1 = this;\n\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this$1;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n var this$1 = this;\n\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this$1.height -= oldHeight - child.height;\n if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this$1.children.splice(++i, 0, leaf);\n leaf.parent = this$1;\n }\n child.lines = child.lines.slice(0, remaining);\n this$1.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n var this$1 = this;\n\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this$1[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var this$1 = this;\n\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n var this$1 = this;\n\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null));\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n var this$1 = this;\n\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this$1; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this$1.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range$$1 = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range$$1.head; }\n else if (start == \"anchor\") { pos = range$$1.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n else { pos = range$$1.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n var this$1 = this;\n\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n clipPos(this$1, ranges[i].head)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var this$1 = this;\n\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var this$1 = this;\n\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var this$1 = this;\n\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range$$1 = sel.ranges[i];\n changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this$1, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo$$1 = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n span.from == null && lineNo$$1 != from.line ||\n span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo$$1;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo$$1;\n });\n return clipPos(this, Pos(lineNo$$1, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n var this$1 = this;\n\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this$1.linked[i];\n if (link.doc != other) { continue }\n this$1.linked.splice(i, 1);\n other.unlinkDoc(this$1);\n detachSharedMarkers(findSharedMarkers(this$1));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var loadFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n { return }\n\n var reader = new FileReader;\n reader.onload = operation(cm, function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n text[i] = content;\n if (++read == n) {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n }\n });\n reader.readAsText(file);\n };\n for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map$$1, handle, context) {\n map$$1 = getKeyMap(map$$1);\n var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map$$1.fallthrough) {\n if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map$$1.fallthrough, handle, context) }\n for (var i = 0; i < map$$1.fallthrough.length; i++) {\n var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(0, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if (webkit || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus(); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n delayBlurEvent(cm);\n setTimeout(function () { return display.input.focus(); }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range$$1 = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); }\n else\n { ourRange = range$$1; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range$$1 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range$$1.anchor, anchor) > 0) {\n head = range$$1.head;\n anchor = minPos(oldRange.from(), range$$1.anchor);\n } else {\n head = range$$1.anchor;\n anchor = maxPos(oldRange.to(), range$$1.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n e_preventDefault(e);\n display.input.focus();\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range$$1) {\n var anchor = range$$1.anchor;\n var head = range$$1.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range$$1 }\n var order = getOrder(anchorLine);\n if (!order) { return range$$1 }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range$$1 }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range$$1 }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.options.gutters.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.options.gutters[i];\n signal(cm, type, cm, line, gutter, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n guttersChanged(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"firstLineNumber\", 1, guttersChanged, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function guttersChanged(cm) {\n updateGutters(cm);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n setGuttersForLineNumbers(options);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input);\n display.wrapper.CodeMirror = this;\n updateGutters(this);\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(bind(onFocus, this), 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this$1, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range$$1 = sel.ranges[i$1];\n var from = range$$1.from(), to = range$$1.to();\n if (range$$1.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range$$1 = sel.ranges[i];\n if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n var mode = cm.getModeAt(range$$1.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range$$1.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", !!autocorrect);\n field.setAttribute(\"autocapitalize\", !!autocapitalize);\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map$$1, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n },\n removeKeyMap: function(map$$1) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var this$1 = this;\n\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this$1.state.modeGen++;\n regChange(this$1);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var this$1 = this;\n\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range$$1 = ranges[i];\n if (!range$$1.empty()) {\n var from = range$$1.from(), to = range$$1.to();\n var start = Math.max(end, from.line);\n end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this$1, j, how); }\n var newRanges = this$1.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range$$1.head.line > end) {\n indentLine(this$1, range$$1.head.line, how, true);\n end = range$$1.head.line;\n if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var this$1 = this;\n\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range$$1 = this.doc.sel.primary();\n if (start == null) { pos = range$$1.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range$$1.from() : range$$1.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var this$1 = this;\n\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this$1.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range$$1) {\n if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range$$1) {\n var other = findPosH(doc, range$$1.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var this$1 = this;\n\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this$1, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this$1, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range$$1) {\n if (collapse)\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range$$1 == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range$$1, margin) {\n if (range$$1 == null) {\n range$$1 = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range$$1 == \"number\") {\n range$$1 = {from: Pos(range$$1, 0), to: null};\n } else if (range$$1.from == null) {\n range$$1 = {from: range$$1, to: null};\n }\n if (!range$$1.to) { range$$1.to = range$$1.from; }\n range$$1.margin = margin || 0;\n\n if (range$$1.from.line != null) {\n scrollToRange(this, range$$1);\n } else {\n scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo$$1 = this.display.viewFrom;\n this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n ++lineNo$$1;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"char\", \"column\" (like char, but doesn't\n // cross line boundaries), \"word\" (across next word), or \"group\" (to\n // the start of next group of word or non-word-non-whitespace\n // chars). The visually param controls whether, in right-to-left\n // text, direction 1 means to move towards the next index in the\n // string, or towards the character to the right of the current\n // position. The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n function findNextLine() {\n var l = pos.line + dir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n on(div, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = this.cm.state.focused;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor())\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n if (this.selectionInEditor())\n { this.pollSelection(); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range$$1 = found[0].find(0)))\n { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map$$1 = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map$$1.length; j += 3) {\n var curNode = map$$1[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map$$1[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.45.0\";\n\n return CodeMirror;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/lib/codemirror.js\n// module id = 644\n// module chunks = 3 4 5 7 8 14","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./spin.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./spin.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/spin/spin.vue\n// module id = 646\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue"],"sourceRoot":""}