{"version":3,"sources":["webpack:///./node_modules/prosemirror-commands/dist/index.es.js","webpack:///./node_modules/prosemirror-transform/dist/index.es.js","webpack:///./node_modules/orderedmap/index.es.js","webpack:///./node_modules/prosemirror-model/dist/index.es.js","webpack:///./src/components/TextEditor/tableKK.vue?a51c","webpack:///./src/components/TextEditor/index.vue?3e29","webpack:///./node_modules/prosemirror-state/dist/index.es.js","webpack:///./node_modules/prosemirror-view/dist/index.es.js","webpack:///./node_modules/@toast-ui/editor/dist/esm/index.js","webpack:///./src/components/TextEditor/tableMU.vue?6381","webpack:///./node_modules/w3c-keyname/index.es.js","webpack:///./node_modules/prosemirror-keymap/dist/index.es.js","webpack:///./src/components/TextEditor/tableIndex.vue?2a81","webpack:///./node_modules/rope-sequence/dist/index.es.js","webpack:///./node_modules/prosemirror-history/dist/index.es.js","webpack:///./src/components/TextEditor/tableTermins.vue?6183","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/components/TextEditor/index.vue?d95d","webpack:///./src/components/TextEditor/tableTermins.vue?9f79","webpack:///src/components/TextEditor/tableTermins.vue","webpack:///./src/components/TextEditor/tableTermins.vue?270c","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///./src/components/TextEditor/tableTermins.vue?8551","webpack:///./src/components/TextEditor/tableLP.vue?b9f7","webpack:///src/components/TextEditor/tableLP.vue","webpack:///./src/components/TextEditor/tableLP.vue?ad38","webpack:///./src/components/TextEditor/tableLP.vue?788f","webpack:///./src/components/TextEditor/tableMU.vue?10c6","webpack:///src/components/TextEditor/tableMU.vue","webpack:///./src/components/TextEditor/tableMU.vue?7e13","webpack:///./src/components/TextEditor/tableMU.vue?5f51","webpack:///./src/components/TextEditor/tableKK.vue?8f99","webpack:///src/components/TextEditor/tableKK.vue","webpack:///./src/components/TextEditor/tableKK.vue?2b6e","webpack:///./src/components/TextEditor/tableKK.vue?83fe","webpack:///./src/components/TextEditor/tableIndex.vue?c2d8","webpack:///src/components/TextEditor/tableIndex.vue","webpack:///./src/components/TextEditor/tableIndex.vue?f941","webpack:///./src/components/TextEditor/tableIndex.vue?f642","webpack:///./src/components/TextEditor/tableAddRecs.vue?70be","webpack:///src/components/TextEditor/tableAddRecs.vue","webpack:///./src/components/TextEditor/tableAddRecs.vue?d6f2","webpack:///./src/components/TextEditor/tableAddRecs.vue","webpack:///./node_modules/@toast-ui/vue-editor/dist/esm/index.js","webpack:///src/components/TextEditor/index.vue","webpack:///./src/components/TextEditor/index.vue?849f","webpack:///../../../src/components/VCheckbox/VCheckbox.ts","webpack:///./src/components/TextEditor/index.vue?cb61","webpack:///../../../src/components/VAutocomplete/VAutocomplete.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///./src/components/TextEditor/tableLP.vue?64a0","webpack:///./node_modules/@toast-ui/editor/dist/toastui-editor-viewer.js","webpack:///./node_modules/prosemirror-inputrules/dist/index.es.js","webpack:///./src/components/TextEditor/index.vue?522e"],"names":["deleteSelection","state","dispatch","selection","empty","tr","scrollIntoView","joinBackward","view","ref","$cursor","endOfTextblock","parentOffset","$cut","findCutBefore","range","blockRange","target","lift","before","nodeBefore","type","spec","isolating","deleteBarrier","parent","content","size","textblockAt","isSelectable","delStep","doc","after","slice","to","from","step","setSelection","findFrom","resolve","mapping","map","pos","create","nodeSize","isAtom","depth","delete","node","side","only","firstChild","lastChild","isTextblock","childCount","selectNodeBackward","$head","$pos","i","index","joinForward","findCutAfter","nodeAfter","selectNodeForward","newlineInCode","$anchor","code","sameParent","insertText","defaultBlockAt","match","edgeCount","edge","hasRequiredAttrs","exitCode","above","indexAfter","contentMatchAt","canReplaceWith","replaceWith","createAndFill","near","createParagraphNear","sel","$from","$to","inlineContent","insert","liftEmptyBlock","end","split","splitBlock","isBlock","atEnd","deflt","types","can","first","$first","setNodeMarkup","selectAll","joinMaybeClear","compatibleContent","canReplace","clearIncompatible","join","conn","canDelAfter","findWrapping","matchType","validEnd","wrap","length","copy","joinAt","selAfter","at","wrap$1","push","afterText","afterDepth","end$1","i$1","tr$1","selectTextblockSide","isInline","start","selectTextblockStart","selectTextblockEnd","wrapIn","nodeType","attrs","wrapping","setBlockType","applicable","nodesBetween","hasMarkup","markApplies","ranges","loop","allowsMarkType","v","returned","toggleMark","markType","isInSet","storedMarks","marks","removeStoredMark","addStoredMark","has","ref$1","rangeHasMark","ref$2","$from$1","$to$1","removeMark","spaceStart","isText","exec","text","spaceEnd","addMark","chainCommands","commands","len","arguments","backspace","del","pcBaseKeymap","macBaseKeymap","key","mac","navigator","test","platform","os","baseKeymap","lower16","factor16","Math","pow","makeRecover","offset","recoverIndex","value","recoverOffset","MapResult","deleted","recover","this","StepMap","inverted","prototype","diff","mapResult","assoc","_map","simple","oldIndex","newIndex","oldSize","newSize","result","touches","forEach","f","oldStart","newStart","invert","toString","JSON","stringify","n","Mapping","maps","mirror","TransformError","message","err","Error","call","__proto__","appendMap","mirrors","setMirror","appendMapping","startSize","mirr","getMirror","m","appendMappingInverted","totalSize","inverse","corr","Object","constructor","name","Transform","steps","docs","prototypeAccessors","configurable","docChanged","mustOverride","get","object","maybeStep","failed","apply","addStep","getMap","defineProperties","stepsByID","Step","_doc","_mapping","merge","_other","toJSON","fromJSON","schema","json","stepType","RangeError","jsonID","id","stepClass","StepResult","ok","fail","fromReplace","replace","e","ReplaceStep","structure","contentBetween","max","other","openEnd","openStart","slice$1","append","ReplaceAroundStep","gapFrom","gapTo","gap","inserted","insertAt","removeBetween","dist","next","maybeChild","isLeaf","canCut","liftTarget","cutByIndex","startIndex","endIndex","innerRange","around","findWrappingOutside","inner","findWrappingInside","withAttrs","concat","outer","child","inside","contentMatch","lastType","innerMatch","canChangeType","canSplit","typesAfter","base","innerType","validContent","d","index$1","rest","replaceChild","baseType","canJoin","joinable","a","b","canAppend","joinPoint","dir","insertPoint","d$1","dropPoint","pass","bias","insertPos","fits","mapFragment","fragment","mapped","fromArray","gapStart","gapEnd","splitting","splitting$1","wrappers","matchFragment","this$1","mapFrom","startM","endM","nodeAt","newNode","typeAfter","AddMarkStep","mark","oldSlice","sharedDepth","addToSet","RemoveMarkStep","eq","min","markFromJSON","removeFromSet","replaceStep","fitsTrivially","Fitter","fit","removed","added","removing","adding","newSet","s","matched","toRemove","found","set","style","found$1","j","parentType","delSteps","cur","allowed","fill","fillBefore","unplaced","frontier","placed","prototypeAccessors$1","dropFromFragment","count","addToFragment","contentAt","closeNodeStart","frag","contentAfterFits","open","invalidMarks","allowsMarks","definesContent","defining","definingForContent","closeFragment","oldOpen","newOpen","coveredDepths","minDepth","findFittable","placeNodes","openMore","dropNode","moveInline","mustMoveInline","placedSize","close","sliceDepth","frontierDepth","inject","openAtEnd","closeFrontierNode","openFrontierNode","taken","add","openEndCount","matches","allowedMarks","toEnd","i$2","level","top","findCloseLevel","scan","dropInner","match$1","type$1","move","pop","replaceRange","deleteRange","targetDepths","preferredTarget","unshift","definingAsContext","indexOf","splice","preferredTargetIndex","leftNodes","preferredDepth","openDepth","targetDepth","expand","startSteps","replaceRangeWith","point","covered","last","OrderedMap","find","undefined","update","newKey","self","remove","addToStart","addToEnd","addBefore","place","without","prepend","subtract","prop","orderedmap","findDiffStart","childA","childB","sameMarkup","findDiffEnd","posA","posB","iA","iB","same","minSize","Fragment","nodeStart","descendants","textBetween","blockSeparator","leafText","separated","withText","cut","current","p","otherPos","findIndex","round","retIndex","curPos","toStringInner","Array","isArray","nodeFromJSON","array","joined","nodes","compareDeep","p$1","Mark","ReplaceError","excludes","rank","obj","_","sameSet","setFrom","none","sort","Slice","removeRange","indexTo","offsetTo","insertInto","replaceOuter","prepareSliceForReplace","replaceThreeWay","replaceTwoWay","checkJoin","main","sub","$before","$after","addNode","addRange","$start","$end","textOffset","$along","extra","resolveNoCache","maxOpen","openIsolating","n$1","ResolvedPos","path","prototypeAccessors$2","resolveDepth","val","dOff","posAtIndex","tmp","inclusive","marksAcross","pred","NodeRange","str","rem","resolveCached","resolveCache","cached","resolveCachePos","resolveCacheSize","prototypeAccessors$1$1","emptyAttrs","Node","prototypeAccessors$3","textContent","startPos","defaultAttrs","includeParents","childAfter","childBefore","toDebugString","wrapMarks","replacement","one","two","check","TextNode","ContentMatch","wrapCache","prototypeAccessors$4","defaultType","parse","string","nodeTypes","stream","TokenStream","expr","parseExpr","dfa","nfa","checkForDeadEnds","compatible","seen","search","finished","tp","computed","computeWrapping","active","via","shift","reverse","out","inline","tokens","prototypeAccessors$1$2","exprs","parseExprSeq","eat","parseExprSubscript","parseExprAtom","parseExprRange","parseNum","Number","resolveName","typeName","groups","connect","compile","term","edges","reduce","loop$1","next$1","next$2","cmp","nullFrom","labeled","explore","states","known","states$1","work","dead","defaults","attrName","attr","hasDefault","default","computeAttrs","built","given","initAttrs","Attribute","tok","SyntaxError","NodeType","group","markSet","prototypeAccessors$5","whitespace","atom","isRequired","createChecked","topType","topNode","options","hasOwnProperty","prototypeAccessors$1$3","MarkType","excluded","instance","contentExprCache","prop$1","contentExpr","markExpr","gatherMarks","prop$2","excl","bind","topNodeType","wrappings","mark$1","text$1","DOMParser","rules","tags","styles","rule","tag","normalizeLists","some","r","dom","context","ParseContext","addAll","finish","parseSlice","matchTag","namespace","namespaceURI","matchesContext","getAttrs","matchStyle","charCodeAt","schemaRules","priority","nextPriority","parseDOM","rules$1","name$1","fromSchema","domParser","blockTags","address","article","aside","blockquote","canvas","dd","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","noscript","ol","output","pre","section","table","tfoot","ul","ignoreTags","head","script","title","listTags","OPT_PRESERVE_WS","OPT_PRESERVE_WS_FULL","OPT_OPEN_LEFT","wsOptionsFor","preserveWhitespace","NodeContext","pendingMarks","solid","activeMarks","stashMarks","popFromStashMark","applyPending","nextType","pending","markMayApply","inlineContext","parentNode","nodeName","toLowerCase","parser","isOpen","topContext","topOptions","topMatch","findPositions","needsBlock","prototypeAccessors$6","currentPos","normalizeList","prevItem","nextSibling","appendChild","selector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","parseStyles","re","trim","findSameMarkInSet","addDOM","addTextNode","getAttribute","readStyles","addPendingMark","addElement","removePendingMark","nodeValue","domNodeBefore","previousSibling","insertNode","findInText","findInside","matchAfter","ruleID","ruleFromNode","ignore","ignoreFallback","skip","closeParent","sync","oldNeedsBlock","leafFallback","addElementByRule","consuming","ownerDocument","createTextNode","findPlace","continueAfter","enter","startIn","getContent","contentDOM","contentElement","querySelector","findAround","childNodes","findAtPoint","route","cx","enterInner","block","textblockFromContext","closeExtra","preserveWS","topOpen","contains","compareDocumentPosition","textNode","parts","option","useRoot","part","$context","upto","lastIndexOf","stashMark","DOMSerializer","gatherToDOM","toDOM","document","window","serializeFragment","createDocumentFragment","keep","rendered","spanning","markDOM","serializeMark","serializeNodeInner","renderSpec","onContent","serializeNode","xmlNS","tagName","space","createElementNS","createElement","space$1","setAttributeNS","setAttribute","innerContent","domSerializer","nodesFromSchema","marksFromSchema","classesById","Selection","SelectionRange","anchor","lastNode","lastParent","selectionToInsertionEnd","textOnly","TextSelection","findSelectionIn","AllSelection","atStart","cls","selectionClass","getBookmark","between","visible","ensureMarks","TextBookmark","dPos","NodeSelection","NodeBookmark","selectable","AllBookmark","startLen","_from","_to","_newFrom","newTo","UPDATED_SEL","UPDATED_MARKS","UPDATED_SCROLL","Transaction","time","Date","now","curSelection","curSelectionFor","updated","meta","selectionSet","storedMarksSet","isGeneric","scrolledIntoView","setStoredMarks","setTime","replaceSelection","replaceSelectionWith","inheritMarks","setMeta","getMeta","FieldDesc","desc","init","baseFields","config","_marks","_old","prev","Configuration","plugins","fields","pluginsByKey","plugin","EditorState","applyTransaction","filterTransaction","rootTr","transactions","trs","newState","applyInner","haveNew","appendTransaction","oldState","newInstance","field","applyListeners","$config","reconfigure","pluginFields","addApplyListener","removeApplyListener","bindProps","Function","Plugin","props","createKey","getState","keys","PluginKey","ie_edge","userAgent","ie_upto10","ie_11up","ie","ie_version","documentMode","gecko","gecko_version","chrome","chrome_version","safari","vendor","ios","maxTouchPoints","android","webkit","documentElement","webkit_version","domIndex","assignedSlot","host","reusedRange","textRange","createRange","setEnd","setStart","isEquivalentPosition","off","targetNode","targetOff","scanFor","atomElements","hasBlockDesc","contentEditable","isOnEdge","pmViewDesc","selectionCollapsed","domSel","collapsed","isCollapsed","rangeCount","getRangeAt","keyEvent","keyCode","event","createEvent","initEvent","windowRect","left","right","clientWidth","bottom","clientHeight","getSide","clientRect","rect","getBoundingClientRect","scaleX","width","offsetWidth","scaleY","height","offsetHeight","scrollRectIntoView","startDOM","scrollThreshold","someProp","scrollMargin","atTop","body","bounding","moveX","moveY","defaultView","scrollBy","startX","scrollLeft","startY","scrollTop","dX","dY","storeScrollPos","refDOM","refTop","x","y","innerHeight","root","elementFromPoint","localRect","stack","scrollStack","resetScrollPos","newRefTop","restoreScrollStack","dTop","preventScrollSupported","focusPreventScroll","setActive","focus","stored","preventScroll","findOffsetInNode","coords","closest","coordsClosest","dxClosest","rowBot","rowTop","childIndex","rects","getClientRects","dx","findOffsetInText","singleRect","inRect","targetKludge","posFromElement","elt","docView","posFromDOM","posFromCaret","outside","nearestDesc","posBefore","posAfter","element","box","startI","floor","posAtCoords","assign","assign$1","caretPositionFromPoint","pos$1","offsetNode","caretRangeFromPoint","startContainer","startOffset","draggable","box$1","posAtStart","border","BIDI","coordsAtPos","domFromPos","supportEmptyRange","takeSide","flattenV","rectBefore","rectAfter","flattenH","before$1","after$1","ignoreForCoords","target$1","withFlushedState","viewState","activeElement","updateState","endOfTextblockVertical","nearest","boxes","maybeRTL","endOfTextblockHorizontal","getSelection","modify","oldRange","oldNode","focusNode","oldOff","focusOffset","oldBidiLevel","caretBidiLevel","parentDOM","domAfterPos","removeAllRanges","cachedState","cachedDir","cachedResult","NOT_DIRTY","CHILD_DIRTY","CONTENT_DIRTY","NODE_DIRTY","ViewDesc","children","dirty","posAtEnd","contentLost","domAtom","matchesWidget","matchesMark","matchesNode","matchesHack","_nodeName","parseRule","stopEvent","destroy","posBeforeChild","localPosFromDOM","domBefore","domAfter","desc$1","search$1","onlyNodes","getDesc","nodeDOM","descAt","TrailingHackViewDesc","WidgetViewDesc","widget","prev$1","enter$1","parseRange","fromOffset","toOffset","childBase","emptyChildAt","j$1","force","anchorDOM","headDOM","brKludge","offset$1","anchorNode","anchorOffset","domSelExtended","extend","collapse","DOMException","ignoreMutation","mutation","markDirty","startInside","endInside","markParentsDirty","nothing","raw","classList","stop","ignoreSelection","CompositionViewDesc","textDOM","mut","oldValue","MarkViewDesc","custom","nodeViews","reparseInView","replaceNodes","NodeViewDesc","outerDeco","innerDeco","updateChildren","descObj","hasAttribute","applyOuterDeco","CustomNodeViewDesc","TextViewDesc","sameOuterDeco","composition","composing","localCompositionInfo","localComposition","compositionInChild","updater","ViewTreeUpdater","iterDeco","insideNode","syncToMarks","placeWidget","compIndex","findNodeMatch","findIndexWithChild","updateNodeAt","updateNextNode","addTextblockHacks","destroyRest","changed","protectLocalComposition","renderDescs","iosHacks","nearbyTextNode","textPos","findTextInFragment","removeChild","compositionNodes","updateInner","updateOuterDeco","needsWrap","oldDOM","patchOuterDeco","computeOuterDeco","selectNode","deselectNode","removeAttribute","docViewDesc","pmIsDeco","inParent","trackWrites","descs","written","childDOM","rm","insertBefore","OuterDecoLevel","noDeco","class","outerDOM","prevComputed","curComputed","curDOM","deco","patchAttributes","prevList","filter","Boolean","curList","removeProperty","cssText","lockedNode","lock","preMatch","parentDesc","curDesc","descI","fI","Map","compareSide","onWidget","onNode","locals","decoIndex","restNode","parentIndex","widgets","child$1","cutAt","i$3","forChild","oldCSS","getComputedStyle","listStyle","childStart","selectionFromDOM","origin","inWidget","selectionBetween","editorOwnsSelection","editable","hasFocus","hasSelection","selectionToDOM","syncNodeSelection","mouseDown","allowDefault","curSel","domObserver","currentSelection","delayedSelectionSync","setCurSelection","disconnectSelection","cursorWrapper","selectCursorWrapper","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","temporarilyEditableNear","resetEditable","removeClassOnSelectionChange","connectSelection","destroyBetween","maxKeep","markDesc","targetDesc","domNode","nextDOM","locked","addHackNode","className","alt","setEditable","wasDraggable","removeEventListener","hideSelectionGuard","addEventListener","setTimeout","img","disabled","lastSelectedViewDesc","clearNodeSelection","hasFocusAndSelection","anchorInRightPlace","moveSelectionBlock","$side","selectHorizontally","mods","nodePos","nodeLen","isIgnorable","skipIgnoredNodesLeft","moveNode","moveOffset","isBlockNode","setSelFocus","skipIgnoredNodesRight","selectVertically","beyond","stopNativeHorizontalDelete","nextNode","switchEditable","safariDownArrowBug","getMods","ctrlKey","metaKey","altKey","shiftKey","captureKeyDown","parseBetween","from_","to_","lastKeyCode","startDoc","editableContent","anchor$1","readDOMChange","typeOver","addedNodes","lastSelectionTime","lastSelectionOrigin","newSel","shared","preferredPos","preferredSide","compare","lastKeyCodeTime","change","findDiff","lastIOSEnter","sel$1","resolveSelection","endA","endB","domChangeCount","nextSel","inlineChange","looksLikeJoin","suppressSelectionUpdates","toB","lastAndroidDelete","markChange","$from1","chFrom","chTo","isMarkChange","sel$2","parsedSel","curMarks","prevMarks","old","$newStart","$newEnd","skipClosingAndOpening","$next","fromEnd","mayOpen","adjust","move$1","serializeForClipboard","serializer","detachedDoc","wrapMap","wrapper","parseFromClipboard","html","plainText","inCode","asText","parsed","readHTML","restoreReplacedSpaces","contextNode","sliceData","inlineParents","addContext","closeSlice","normalizeSiblings","node$1","lastWrap","inLast","addToSibling","closeRight","wrapped","withWrappers","sibling","closeRange","thead","tbody","caption","colgroup","col","td","th","_detachedDoc","implementation","createHTMLDocument","metas","firstTag","innerHTML","querySelectorAll","observeOptions","childList","characterData","characterDataOldValue","attributes","attributeOldValue","subtree","useCharData","SelectionState","DOMObserver","handleDOMChange","queue","flushingSoon","observer","MutationObserver","mutations","removedNodes","flushSoon","flush","onCharData","prevValue","onSelectionChange","suppressingSelectionUpdates","forceFlush","clearTimeout","observe","take","takeRecords","disconnect","ignoreSelectionChange","container","commonAncestorContainer","result$1","registerMutation","brs","checkCSS","attributeName","cssChecked","whiteSpace","console","handlers","editHandlers","initInput","lastClick","lastIOSEnterFallbackTimeout","composingTimeout","compositionEndedAt","eventHandlers","handler","eventBelongsToView","runCustomHandler","ensureListeners","setSelectionOrigin","destroyInput","currentHandlers","defaultPrevented","bubbles","dispatchEvent","eventCoords","clientX","clientY","isNear","click","dy","runHandlerOnContext","propName","updateSelection","focused","selectClickedLeaf","selectClickedNode","selectedNode","selectAt","handleSingleClick","handleDoubleClick","handleTripleClick","defaultTripleClick","button","forceDOMFlush","endComposition","keydown","inOrNearComposition","preventDefault","keyup","keypress","charCode","String","fromCharCode","selectNodeModifier","mousedown","flushed","done","MouseDown","targetPos","mightDrag","addAttr","setUneditable","up","abs","timeStamp","buttons","touchdown","contextmenu","timeoutComposition","scheduleComposeEnd","delay","clearComposition","timestampFromCustomEvent","forceUpdate","captureCopy","selectNodeContents","blur","compositionstart","compositionupdate","markCursor","compositionend","brokenClipboardAPI","sliceSingleNode","capturePaste","doPaste","singleNode","data","clipboardData","clearData","setData","paste","getData","Dragging","dragCopyModifier","dragstart","dataTransfer","effectAllowed","dragging","dragend","dragover","dragenter","drop","eventPos","$mouse","isNode","beforeInsert","relatedTarget","beforeinput","inputType","compareObjs","WidgetType","noSpec","span","oldOffset","Decoration","valid","InlineType","inclusiveStart","inclusiveEnd","is","DecorationSet","local","decorations","buildTree","predicate","findInner","childOff","mapInner","newLocal","onRemove","mapChildren","byPos","addInner","childNode","childOffset","baseOffset","takeSpansForNode","moveSpans","withoutNulls","removeInner","span$1","dec","localSet","DecorationGroup","removeOverlap","localsInner","members","oldChildren","oldEnd","newEnd","dSize","mustRebuild","fromLocal","toLocal","mapAndGatherRemainingDecorations","from$1","spans","gather","hasNulls","localStart","working","insertAhead","viewDecorations","mappedDecos","member","sorted","EditorView","_props","directPlugins","checkStateComponent","_root","mount","mounted","getEditable","updateCursorWrapper","buildNodeViews","computeDocDeco","prevDirectPlugins","pluginViews","updatePluginViews","isDestroyed","contenteditable","translate","selectionContextChanged","sel1","sel2","changedNodeViews","nA","nB","handleDOMEvents","updateStateInner","setProps","reconfigured","redraw","updateSel","scroll","scrollToSelection","updateDoc","oldScrollPos","overflowAnchor","forceSelUpdate","chromeKludge","destroyPluginViews","prevState","pluginView","plugin$1","getPrototypeOf","domAtPos","posAtDOM","dispatchTransaction","extendStatics$1","setPrototypeOf","__extends$1","TypeError","__","__assign$1","t","__spreadArray$1","pack","ar","l","__makeTemplateObject","cooked","defineProperty","forEachOwnProperties$2","iteratee","forEachOwnProperties_1","objects","source","hasOwnProp","extend_1","isString$3","isString_1","isArray$3","isArray_1","forEachArray$3","arr","forEachArray_1","isArray$2","forEachArray$2","forEachOwnProperties$1","forEach$4","forEach_1","isString$2","forEach$3","css","k","css_1","isArray$1","inArray$4","searchElement","inArray_1","isUndefined$4","isUndefined_1","isUndefined$3","getClass$3","baseVal","getClass_1","isUndefined$2","setClassName$2","cssClass","_setClassName","forEach$2","inArray$3","getClass$2","setClassName$1","addClass","newClass","addClass_1","forEachArray$1","inArray$2","getClass$1","setClassName","removeClass","removeClass_1","isNumber","isNumber_1","isNull$1","isNull_1","forEachOwnProperties","imagePing$1","url","trackingInfo","trackingElement","queryString","substring","src","display","imagePing_1","isUndefined$1","imagePing","ms7days","isExpired","date","getTime","sendHostname","appName","trackingId","hostname","location","hitType","eventCategory","applicationKeyForStorage","localStorage","getItem","tui","usageStatistics","setItem","readyState","tid","cid","dp","dh","el","ec","sendHostname_1","reSpaceMoreThanOne","reEscapeChars$1","reEscapeHTML","reEscapeBackSlash","reEscapePairedChars","reMdImageSyntax","reEscapedCharInLinkSyntax","XMLSPECIAL$1","reXmlSpecial$1","RegExp","replaceUnsafeChar$1","char","escapeXml$1","sendHostName","includes","targetItem","availableLinkAttributes","reMarkdownTextToEscapeMap","codeblock","thematicBreak","atxHeading","seTextheading","list","def","link","reflink","verticalBar","fencedCodeblock","sanitizeLinkAttribute","attribute","linkAttributes","repeat$1","isNeedEscapeText","needEscape","reMarkdownTextToEscape","escapeTextForLink","imageSyntaxRanges","isDelimiter","escape$1","replacer","escapedText","quote","isNil","shallowEqual","o1","o2","last$1","between$1","isObject$1","deepMergedCopy","targetObj","resultObj","deepCopyArray","deepCopy","items","item","acc","getSortedNumPair","valueA","valueB","forEachArray","toArray$1","arrayLike","toArray_1","createParagraph","paragraph","createTextNode$1","createTextSelection","contentSize","addParagraph","_a","replaceTextNode","createText","_b","mappedFrom","mappedTo","splitAndExtendBlock","textLen","getMdStartLine","mdNode","sourcepos","getMdEndLine","getMdStartCh","getMdEndCh","isHTMLNode","isStyledInlineNode","isCodeBlockNode","isListNode$1","isOrderedListNode","listData","isBulletListNode","isTableCellNode","isInlineNode$1","findClosestNode","condition","includeSelf","traverseParentNodes","addOffsetPos","originPos","setOffsetPos","newOffset","getInlineMarkdownText","literal","destination","delim","isContainer$2","getChildrenText$1","buffer","walker","widgetRules","widgetRuleMap","reWidgetPrefix","unwrapWidgetSyntax","replaced","createWidgetContent","info","widgetToDOM","getWidgetRules","setWidgetRules","mergeNodes","ruleIndex","createNodesWithWidget","nextRuleIndex","getWidgetContent","widgetNode","entering","resumeAt","getDefaultCommands","undo","redo","placeholder","placeHolder","inArray$1","getClass","hasClass","hasClass_1","inArray","toArray","elProto","Element","matchSelector","matches_1","TAG_NAME","ATTRIBUTE_NAME","UNQUOTED_VALUE","SINGLE_QUOTED_VALUE","DOUBLE_QUOTED_VALUE","ATTRIBUTE_VALUE","ATTRIBUTE_VALUE_SPEC","ATTRIBUTE$1","OPEN_TAG","CLOSE_TAG","HTML_TAG","reHTMLTag","reBR","reHTMLComment","ALTERNATIVE_TAG_FOR_BR","isPositionInBox","offsetX","offsetY","parseInt","paddingLeft","paddingRight","paddingTop","paddingBottom","CLS_PREFIX","names","_i","names_1","name_1","clsWithMdPrefix","isTextNode","TEXT_NODE","isElemNode","ELEMENT_NODE","findNodes","nodeList","appendNodes","nodesToAppend","nodeToAppend","insertBeforeNode","insertedNode","removeNode$1","unwrapNode","toggleClass","toggleFn","createElementWith","contents","getOuterWidth","getPropertyValue","getTotalOffset","offsetTop","offsetLeft","top_1","offsetParent","setAttributes","replaceBRWithEmptyBlock","replacedHTML","htmlTagMatched","htmlTag","alternativeTag","prevTag","openTagMatched","pluginKey$1","MARGIN","PopupWidget","eventEmitter","_this","popup","removeWidget","rootEl","parentElement","listen","relTopPos","opacity","position","removeEventHandler","addWidget","editorView","addDefaultImageBlobHook","blob","callback","reader","FileReader","onload","readAsDataURL","emitImageBlobHook","hook","imageUrl","altText","emit","pasteImageOnly","images","getAsFile","dropImage","ev","files","stopPropagation","Node$2","enumerable","setContext","widgetNodeView","pmNode","isWidgetNode","Widget","_super","EditorBase","timer","createState","createPlugins","editorType","emitChangeEvent","createInputRules","keymaps","Enter","allMatched","input","clearTimer","createSchema","specs","createKeymaps","useCommandShortcut","allKeymaps","historyKeymap","createCommands","createPluginProps","extraPlugins","moveCursorToStart","moveCursorToEnd","setScrollTop","getScrollTop","setPlaceholder","setHeight","setMinHeight","minHeight","getElement","isFunction","isFunction_1","defaultCommandShortcuts","execCommand","command","payload","SpecManager","addedCommands","specCommands","allCommands","specCommand","defaultCommands","specKeymaps","resolveSelectionPos","getMdLine","resolvedPos","getWidgetNodePos","chPos","direction","additionalPos","getEditorToMdPos","startResolvedPos","startLine","endLine","endOffset","endResolvedPos","startCh","endCh","getStartPosListPerLine","startPosListPerLine","getMdToEditorPos","endPos","startNode","endNode","getRangeInfo","startFromOffset","endFromOffset","startToOffset","endToOffset","getNodeContentOffsetRange","targetIndex","HEADING","BLOCK_QUOTE","LIST_ITEM","TABLE","TABLE_CELL","CODE_BLOCK","THEMATIC_BREAK","LINK","CODE","META","DELIM","TASK_DELIM","TEXT","HTML","CUSTOM_BLOCK","delimSize","strong","emph","strike","markInfo","heading$1","headingType","seText","emphasisAndStrikethrough","startDelimPos","endDelimPos","markLink","linkTextStart","lastChildCh","image$1","linkTextEnd","extendedAutolink","tickCount","openDelimEnd","closeDelimStart","marked","lineBackground","prefix","defaultBackground","codeStart","codeEnd","codeBlock$1","fenceOffset","fenceLength","fenceChar","infoPadding","fenceEnd","codeBlockEnd","reCodeBlockEnd","lineBackgroundMarkInfo","customBlock$2","syntaxLength","syntaxEnd","markListItemChildren","markParagraphInBlockQuote","blockQuote$2","childMarks","getSpecOfListItemStyle","odd","even","item$1","padding","task","markNodeFuncMap","heading","image","codeBlock","blockQuote","customBlock","simpleMarkClassNameMap","tableCell","htmlInline","getMarkInfo","removingBackgroundIndexMap","syntaxHighlight","toastMark","newTr","markInfo_1","editResult","removedNodeRange","getMarkForRemoving","nodes_1","parent_1","event_1","getMarkForAdding","maxIndex","line","appendMarkTr","isDifferentBlock","addLineBackground","blockPosInfo","shouldChangeBlockType","posInfo","removeBlockBackground","cacheIndexToRemoveBackground","skipLines","lineTexts","getLineTexts","defaultToolbarStateKeys","getToolbarStateType$1","getToolbarState$1","toolbarState","indent","outdent","listEnabled","previewHighlight","startChOffset","ch","cursorPos","findNodeAtPosition","Doc$1","Doc","getTextByMdLine","mdLine","getTextContent","reBlockQuote","BlockQuote$1","BlockQuote","createBlockQuoteText","isBlockQuote","extendBlockQuote","isEmpty","slicedText","blockQuoteCommand","reList","reOrderedList","reOrderedListGroup","reCanBeTaskList","reBulletListGroup","reTaskList","reBulletTaskList","getListType","getListDepth","findSameDepthList","currentLine","backward","lineLen","findFirstNodeAtLine","currentListDepth","getSameDepthItems","forwardList","backwardList","textToBullet","textToOrdered","ordinalNum","getChangedInfo","sameDepthItems","firstIndex","MAX_VALUE","lastIndex","changedResults","getBulletOrOrdered","sameDepthListInfo","otherListToList","bullet","ordered","otherNodeToList","lineText","firstOrderedListNum","firstOrderedListLine","skipped","canBeListNode","searchResult","extendList","delimiter","listSyntax","filteredList","getReorderedListInfo","prevIndentLength","indentLength","nestedListInfo","reStartSpace","isBlockUnit","isInTableCellNode","createSelection","softTabLen","spaceLenList","Paragraph$1","Paragraph","reorderList","topListNode","_c","indentLen","_d","_e","newSelection","tabKey","startLineText","spaceLenList_1","startText","startTextWithoutSpace","deletStart","deleteLines","moveDown","moveUp","Tab","Text$1","Text","reHeading","Heading$1","Heading","classNames","createHeadingText","curHeadingSyntax","headingText","matchedHeading","fencedCodeBlockSyntax","CodeBlock$1","CodeBlock","fencedNode","keepIndentation","spaces","codeBlockCommand","reEmptyTable","createTableHeader","columnCount","createTableRow","createTableBody$1","rowCount","bodyRows","row","createTargetTypes","moveNext","childType","Table$1","Table","extendTable","mdPos","cellNode","columns","moveTableCell","parent_2","chOffset","addTable","headerRows","rows","thematicBreakSyntax","ThematicBreak$1","ThematicBreak","lineCommand","cannotBeListNode","ListItem$1","ListItem","isList","commandType","changeToListPerLine","toList","rangeInfo","indexDiff","maxEndOffset","_loop_1","changedResult","this_1","toggleTask","checked","stateChar","bulletList","orderedList","taskList","bulletCommand","orderedCommand","taskCommand","togleTaskCommand","syntax","conditionFn","syntaxLen","prevPos","nextPos","prevText","nextText","reStrong","strongSyntax","Strong$1","Strong","bold","boldCommand","reStrike","strikeSyntax","Strike$1","Strike","strikeCommand","reEmph","emphSyntax","Emph$1","Emph","italic","italicCommand","reCode","codeSyntax","Code$1","Code","codeCommand","Link$1","Link","addLinkOrImage","linkText","linkUrl","addImage","addLink","TaskDelimiter","Delimiter","Meta","MarkedText","TableCell","Html","customBlockSyntax","CustomBlock$1","CustomBlock","reTaskMarkerKey","reTaskMarker","smartTask","paraNode","startMdPos","startSpaces","lastSpaces","addedPos","EVENT_TYPE","reLineEnding$2","MdEditor","mdPlugins","createSpecs","createContext","createView","createClipboard","isMarkdownTabMounted","toggleActive","clipboard","containRtfItem","kind","imageBlob","defaultPlugins","updateMarkdown","handleKeyDown","toUpperCase","getChanged","editMarkdown","getSelectedText","setMarkdown","markdown","cursorToEnd","replaceWithWidget","getRangeInfoOfNode","getMarkdown","getToastMark","EVENT_KEY","safeEvent$2","events","_safeEvent","isString$1","forEach$1","safeEvent$1","unbindEvent","func","idx","removeHandler","wrappedHandler","detachEvent","off_1","isString","safeEvent","on","bindEvent","eventHandler","attachEvent","memorizeHandler","existInEvents","on_1","extendStatics","__extends","__assign","__spreadArray","commonjsGlobal","globalThis","global","encodeCache","getEncodeCache","exclude","cache","encode$1","keepEscaped","nextCode","defaultChars","encodeURIComponent","componentChars","encode_1","lib","decode","Aacute$1","aacute$1","Abreve","abreve","ac","acd","acE","Acirc$1","acirc$1","acute$1","Acy","acy","AElig$1","aelig$1","af","Afr","afr","Agrave$1","agrave$1","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","amp$2","AMP$1","andand","And","and","andd","andslope","andv","ang","ange","angle","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angmsd","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","apacir","ap","apE","ape","apid","apos$1","ApplyFunction","approx","approxeq","Aring$1","aring$1","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde$1","atilde$1","Auml$1","auml$1","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","barwed","Barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","because","Because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bowtie","boxbox","boxdl","boxdL","boxDl","boxDL","boxdr","boxdR","boxDr","boxDR","boxh","boxH","boxhd","boxHd","boxhD","boxHD","boxhu","boxHu","boxhU","boxHU","boxminus","boxplus","boxtimes","boxul","boxuL","boxUl","boxUL","boxur","boxuR","boxUr","boxUR","boxv","boxV","boxvh","boxvH","boxVh","boxVH","boxvl","boxvL","boxVl","boxVL","boxvr","boxvR","boxVr","boxVR","bprime","breve","Breve","brvbar$1","bscr","Bscr","bsemi","bsim","bsime","bsolb","bsol","bsolhsub","bull","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","capand","capbrcup","capcap","cap","Cap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil$1","ccedil$1","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil$1","Cedilla","cemptyv","cent$1","centerdot","CenterDot","cfr","Cfr","CHcy","chcy","checkmark","Chi","chi","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cir","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","colon","Colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","conint","Conint","ContourIntegral","copf","Copf","coprod","Coproduct","copy$1","COPY$1","copysr","CounterClockwiseContourIntegral","crarr","cross","Cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","cupbrcap","cupcap","CupCap","cup","Cup","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren$1","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","dagger","Dagger","daleth","darr","Darr","dArr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","ddagger","ddarr","DD","DDotrahd","ddotseq","deg$1","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","diamond","Diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","divide$1","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrowBar","downarrow","DownArrow","Downarrow","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVectorBar","DownLeftVector","DownRightTeeVector","DownRightVectorBar","DownRightVector","DownTeeArrow","DownTee","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute$1","eacute$1","easter","Ecaron","ecaron","Ecirc$1","ecirc$1","ecir","ecolon","Ecy","ecy","eDDot","Edot","edot","eDot","ee","efDot","Efr","efr","eg","Egrave$1","egrave$1","egs","egsdot","Element$1","elinters","ell","els","elsdot","Emacr","emacr","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp13","emsp14","emsp","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","escr","Escr","esdot","Esim","esim","Eta","eta","ETH$1","eth$1","Euml$1","euml$1","euro","exist","Exists","expectation","exponentiale","ExponentialE","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","forall","ForAll","fork","forkv","Fouriertrf","fpartint","frac12$1","frac13","frac14$1","frac15","frac16","frac18","frac23","frac25","frac34$1","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","fscr","Fscr","gacute","Gamma","gamma","Gammad","gammad","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","ge","gE","gEl","gel","geq","geqq","geqslant","gescc","ges","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","gg","Gg","ggg","gimel","GJcy","gjcy","gla","gl","glE","glj","gnap","gnapprox","gne","gnE","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","gtcc","gtcir","gt$2","GT$1","Gt","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","harrcir","harr","hArr","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","hfr","Hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","hopf","Hopf","horbar","HorizontalLine","hscr","Hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute$1","iacute$1","ic","Icirc$1","icirc$1","Icy","icy","Idot","IEcy","iecy","iexcl$1","iff","ifr","Ifr","Igrave$1","igrave$1","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Imacr","imacr","ImaginaryI","imagline","imagpart","imath","Im","imof","imped","Implies","incare","infin","infintie","inodot","intcal","int","Int","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest$1","iscr","Iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml$1","iuml$1","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","lang","Lang","langd","langle","lap","Laplacetrf","laquo$1","larrb","larrbfs","larr","Larr","lArr","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","latail","lAtail","lat","late","lates","lbarr","lBarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","le","lE","LeftAngleBracket","LeftArrowBar","leftarrow","LeftArrow","Leftarrow","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVectorBar","LeftDownVector","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","leftrightarrow","LeftRightArrow","Leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTeeArrow","LeftTee","LeftTeeVector","leftthreetimes","LeftTriangleBar","LeftTriangle","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVectorBar","LeftUpVector","LeftVectorBar","LeftVector","lEg","leg","leq","leqq","leqslant","lescc","les","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","llarr","ll","Ll","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoustache","lmoust","lnap","lnapprox","lne","lnE","lneq","lneqq","lnsim","loang","loarr","lobrk","longleftarrow","LongLeftArrow","Longleftarrow","longleftrightarrow","LongLeftRightArrow","Longleftrightarrow","longmapsto","longrightarrow","LongRightArrow","Longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","lscr","Lscr","lsh","Lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","ltcc","ltcir","lt$2","LT$1","Lt","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr$1","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro$1","midast","midcir","mid","middot$1","minusb","minus","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","mscr","Mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natural","naturals","natur","nbsp$1","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","nearhk","nearr","neArr","nearrow","ne","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nharr","nhArr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlarr","nlArr","nldr","nlE","nle","nleftarrow","nLeftarrow","nleftrightarrow","nLeftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","nopf","Nopf","Not","not$1","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangleBar","NotLeftTriangle","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangleBar","NotRightTriangle","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","nparallel","npar","nparsl","npart","npolint","npr","nprcue","nprec","npreceq","npre","nrarrc","nrarr","nrArr","nrarrw","nrightarrow","nRightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde$1","ntilde$1","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","num","numero","numsp","nvap","nvdash","nvDash","nVdash","nVDash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwarr","nwArr","nwarrow","nwnear","Oacute$1","oacute$1","oast","Ocirc$1","ocirc$1","ocir","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve$1","ograve$1","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","orarr","Or","or","ord","order","orderof","ordf$1","ordm$1","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash$1","oslash$1","osol","Otilde$1","otilde$1","otimesas","Otimes","otimes","Ouml$1","ouml$1","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","para$1","parallel","par","parsim","parsl","PartialD","Pcy","pcy","percnt","period","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plusacir","plusb","pluscir","plus","plusdo","plusdu","pluse","PlusMinus","plusmn$1","plussim","plustwo","pm","Poincareplane","pointint","popf","Popf","pound$1","prap","Pr","pr","prcue","precapprox","prec","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","prE","precsim","prime","Prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","Proportional","Proportion","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","qopf","Qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","quot$2","QUOT$1","rAarr","race","Racute","racute","radic","raemptyv","rang","Rang","rangd","rangle","raquo$1","rarrap","rarrb","rarrbfs","rarrc","rarr","Rarr","rArr","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","ratail","rAtail","ratio","rationals","rbarr","rBarr","RBarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","real","realine","realpart","reals","Re","reg$1","REG$1","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","rfr","Rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrowBar","rightarrow","RightArrow","Rightarrow","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVectorBar","RightDownVector","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTeeArrow","RightTee","RightTeeVector","rightthreetimes","RightTriangleBar","RightTriangle","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVectorBar","RightUpVector","RightVectorBar","RightVector","ring","risingdotseq","rlarr","rlhar","rlm","rmoustache","rmoust","rnmid","roang","roarr","robrk","ropar","ropf","Ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","rscr","Rscr","rsh","Rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","scap","Scaron","scaron","Sc","sc","sccue","sce","scE","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdotb","sdot","sdote","searhk","searr","seArr","searrow","sect$1","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy$1","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","solbar","solb","sol","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","square","Square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squ","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","Sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","subset","Subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succapprox","succ","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","sum","Sum","sung","sup1$1","sup2$1","sup3$1","sup","Sup","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","supset","Supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swarr","swArr","swarrow","swnwar","szlig$1","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","therefore","Therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","ThinSpace","thinsp","thkap","thksim","THORN$1","thorn$1","tilde","Tilde","TildeEqual","TildeFullEqual","TildeTilde","timesbar","timesb","times$1","timesd","tint","toea","topbot","topcir","Topf","topf","topfork","tosa","tprime","trade","TRADE","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute$1","uacute$1","uarr","Uarr","uArr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc$1","ucirc$1","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave$1","ugrave$1","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml$1","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrowBar","uparrow","UpArrow","Uparrow","UpArrowDownArrow","updownarrow","UpDownArrow","Updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","upsi","Upsi","upsih","Upsilon","upsilon","UpTeeArrow","UpTee","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml$1","uuml$1","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","varr","vArr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","vBar","Vbar","vBarv","Vcy","vcy","vdash","vDash","Vdash","VDash","Vdashl","veebar","vee","Vee","veeeq","vellip","verbar","Verbar","vert","Vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","wedge","Wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xharr","xhArr","Xi","xi","xlarr","xlArr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrarr","xrArr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute$1","yacute$1","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen$1","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","yuml$1","Yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","zfr","Zfr","ZHcy","zhcy","zigrarr","zopf","Zopf","Zscr","zscr","zwj","zwnj","require$$1$1","Aacute","aacute","Acirc","acirc","acute","AElig","aelig","Agrave","agrave","amp","AMP","apos","Aring","aring","Atilde","atilde","Auml","auml","brvbar","Ccedil","ccedil","cedil","cent","COPY","curren","deg","divide","Eacute","eacute","Ecirc","ecirc","Egrave","egrave","ETH","eth","Euml","euml","frac12","frac14","frac34","gt","GT","Iacute","iacute","Icirc","icirc","iexcl","Igrave","igrave","iquest","Iuml","iuml","laquo","lt","LT","macr","micro","middot","nbsp","not","Ntilde","ntilde","Oacute","oacute","Ocirc","ocirc","Ograve","ograve","ordf","ordm","Oslash","oslash","Otilde","otilde","Ouml","ouml","para","plusmn","pound","quot","QUOT","raquo","reg","REG","sect","shy","sup1","sup2","sup3","szlig","THORN","thorn","times","Uacute","uacute","Ucirc","ucirc","Ugrave","ugrave","uml","Uuml","uuml","Yacute","yacute","yen","yuml","amp$1","gt$1","lt$1","quot$1","require$$1","require$$0$1","decode_codepoint","require$$0","__importDefault$2","__importDefault","mod","__esModule","decode_json_1","fromCodePoint$2","fromCodePoint","codePoint","decodeCodePoint","__importDefault$1","decodeHTML","decodeHTMLStrict","decodeXML","entities_json_1$1","legacy_json_1","xml_json_1$1","decode_codepoint_1","strictEntityRe","getStrictDecoder","getReplacer","sorter","charAt","secondChar","substr","legacy","encode","escapeUTF8","escape","encodeNonAsciiHTML","encodeHTML","encodeXML","xml_json_1","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getASCIIEncoder","entities_json_1","inverseHTML","htmlReplacer","single","multiple","getInverse","reNonASCII","getCodePoint","codePointAt","c","singleCharReplacer","reEscapeChars","exports","decodeXMLStrict","decodeHTML5Strict","decodeHTML4Strict","decodeHTML5","decodeHTML4","encodeHTML5","encodeHTML4","decodeStrict","decode_1","decode$1","encode_2","decode_2","ENTITY","C_BACKSLASH$1","reBackslashOrAmp","ESCAPABLE","reEntityOrEscapedChar","XMLSPECIAL","reXmlSpecial","unescapeChar","unescapeString","normalizeURI","uri","replaceUnsafeChar","escapeXml","repeat","NodeWalker","isContainer$1","lastNodeId","nodeMap","getNodeById","removeNodeById","removeAllNode","Node$1","isContainer","unlink","insertAfter","prependChild","BlockNode","lineOffsets","stringContent","lastLineBlank","lastLineChecked","ListNode","HeadingNode","CodeBlockNode","isFenced","TableNode","TableCellNode","startIdx","endIdx","ignored","RefDefNode","dest","label","CustomBlockNode","HtmlBlockNode","htmlBlockType","LinkNode","CodeNode","CustomInlineNode","createNode$1","isCodeBlock","isHtmlBlock","isHeading","isTable","isRefDef","isCustomBlock","isCustomInline","TAGNAME","ATTRIBUTENAME","UNQUOTEDVALUE","SINGLEQUOTEDVALUE","DOUBLEQUOTEDVALUE","ATTRIBUTEVALUE","ATTRIBUTEVALUESPEC","ATTRIBUTE","OPENTAG","CLOSETAG","HTMLCOMMENT","PROCESSINGINSTRUCTION","DECLARATION","CDATA","HTMLTAG","reHtmlTag","stringFromCharCode_1","floor_1","args","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","isFinite","fromCodePoint$1","DOMAIN","PATH","EMAIL","trimUnmatchedTrailingParens","trailingParen","source_1","trimCount","trimTrailingEntity","parseEmailLink","reEmailLink","text_1","parseUrlLink","reWwwAutolink","text_2","scheme","baseAutolinkParser","convertExtAutoLinks","autolinkParser","linkInfos","lastIdx","lineNum_1","chPos_1","newNodes","linkInfos_1","linkNode","newNodes_1","normalizeReference","iterateObject","omit","propNames","resultMap","isEmptyObj","clearObj","C_NEWLINE","C_ASTERISK","C_UNDERSCORE","C_BACKTICK","C_OPEN_BRACKET$1","C_CLOSE_BRACKET","C_TILDE","C_LESSTHAN$1","C_BANG","C_BACKSLASH","C_AMPERSAND","C_OPEN_PAREN","C_CLOSE_PAREN","C_COLON","C_SINGLEQUOTE","C_DOUBLEQUOTE","C_DOLLAR","ESCAPED_CHAR","rePunctuation","reLinkTitle","reLinkDestinationBraces","reEscapable","reEntityHere","reTicks","reTicksHere","reEllipses","reDash","reEmailAutolink","reAutolink","reSpnl","reWhitespaceChar","reUnicodeWhitespaceChar","reFinalSpace","reInitialSpace","reSpaceAtEndOfLine","reLinkLabel","reMain","InlineParser","subject","delimiters","brackets","lineStartNum","lineIdx","linePosOffset","refMap","refLinkCandidateMap","refDefCandidateMap","lineNum","startpos","nextLine","peek","spnl","parseBackticks","ticks","afterOpenTicks","lines","lastLine","parseBackslash","subj","parseAutolink","parseHtmlTag","scanDelims","cc","numdelims","charAfter","charBefore","ccAfter","canOpen","canClose","afterIsWhitespace","afterIsPunctuation","beforeIsWhitespace","beforeIsPunctuation","leftFlanking","rightFlanking","handleDelim","res","smart","origdelims","previous","removeDelimiter","removeDelimitersBetween","processEmphasis","stackBottom","opener","closer","oldCloser","openerInl","closerInl","openerFound","oddMatch","openersBottom","closercc","closerEmph","useDelims","emptyDelims","openerEndPos","closerStartPos","tempstack","parseLinkTitle","parseLinkDestination","savepos","openparens","parseLinkLabel","parseOpenBracket","addBracket","parseBang","parseCloseBracket","removeBracket","isImage","refLabel","beforelabel","bracketAfter","previousDelimiter","referenceDefinition","parseEntity","parseString","lit","chars","enCount","emCount","parseNewline","lastc","hardbreak","litLen","finalSpaceLen","parseReference","matchChars","rawlabel","beforetitle","atLineEnd","normalLabel","getReferenceDefSourcepos","createRefDefState","mergeTextNodes","textNodes","firstNode","passedUrlLine","quotationCount","lastLineOffset","lineOffset","parseInline","extendedAutolinks","customParser","reTaskListItemMarker","taskListItemFinalize","mLen","continue","finalize","canContain","acceptsLines","tableBody$1","tableHead$1","tableDelimRow","tableDelimCell","tableRow","CODE_INDENT","C_TAB","C_GREATERTHAN","C_LESSTHAN","C_SPACE","C_OPEN_BRACKET","reNonSpace","reClosingCodeFence","endsWithBlankLine","curBlock","ln","isBlank","isSpaceOrTab","reClosingCustomBlock","customBlock$1","lastLineLength","lineNumber","advanceOffset","newlinePos","firstLine","infoString","noop","document$1","tight","subitem","blockQuote$1","indented","nextNonspace","advanceNextNonspace","markerOffset","thematicBreak$1","htmlBlock$1","hasReferenceDefs","inlineParser","refDef","frontMatter$2","blockHandlers","htmlBlock","tableBody","tableHead","frontMatter","parseRowContent","cells","cell","generateTableCells","cellType","contents_1","preSpaces","trimmed","postSpaces","chPosStart","getColumnFromDelimCell","align","firstCh","lastCh","lastNewLineIdx","lastLineStartIdx","headerContent","delimContent","headerOffset","headerCells","delimOffset","delimCells","reValidDelimCell_1","firstLineNum","firstLineStart","paraLastLineStartIdx","paraLastLineLen","tableHead_1","tableHeadRow_1","tableDelimRow_1","delimCellNodes","tip","table_1","addChild","cellContents","reCustomBlock","reCanBeCustomInline","closeUnmatchedBlocks","reCodeFence","reHtmlBlockOpen","reSetextHeadingLine","reATXHeadingMarker","reThematicBreak","reBulletListMarker","reOrderedListMarker","parseListMarker","nextc","bulletChar","spacesStartCol","column","spacesStartOffset","blankItem","spacesAfterMarker","listsMatch","itemData","isDisallowedDeepHeading","disallowDeepHeading","fencedCodeBlock","disallowedTags","disallowedHtmlBlockTags","blockType","reDisallowedTags","seTextHeading","listItem","currNode","indentedCodeBlock","blockStarts","reFrontMatter","frontMatter$1","frontMatter_1","reHtmlBlockClose","reMaybeSpecial","reLineEnding$1","document$2","defaultOptions$1","tagFilter","Parser","oldtip","nextNonspaceColumn","partiallyConsumedTab","allClosed","lastMatchedContainer","charsToTab","charsToAdvance","findNextNonspace","cols","addLine","columnNumber","newBlock","processInlines","incorporateLine","matchedLeaf","blockStartsLen","cont","clearRefMaps","partialParseStart","partialParseExtends","partialParseFinish","setRefMaps","comparePos","p1","p2","compareRangeAndPos","removeNextUntil","temp","getChildNodes","curr","insertNodesBefore","prependChildNodes","updateNextLineNumbers","compareRangeAndLine","findChildNodeAtLine","lastLeafNode","sameLineTopAncestor","findNodeById","invokeNextUntil","isUnlinked","reLineEnding","canBeContinuedListItem","spaceMatch","leftTrimmed","canBeContinuedTableBody","unlinked","ToastMark","eventHandlerMap","updateLineTexts","newText","startCol","endCol","newLines","newLineLen","endLineText","removedLineLen","updateRootNodeState","replaceRangeNodes","getNodeRange","trigger","eventName","param","extendEndLine","editedLines","isOpenedLastChildCodeBlock","isOpenedLastChildCustomBlock","isLastChildList","newEndLine","extStartNode","extEndNode","getRemovedNodeRange","markDeletedRefMap","markDeleted","refDefState","replaceWithNewRefDefState","replaceWith_1","replaceWithRefDefCandidate","candidate","getRangeWithRefDef","lineDiff","prevNode","parseResult","parseRefLink","removeUnlinkedCandidate","candidateMap","getRootNode","reDisallowedTag","filterDisallowedTags","baseConvertors$1","outerNewLine","softbreak","linebreak","grandparent","selfClose","innerNewLine","nodeId","infoStr","infoWords","codeClassNames","href","getChildrenText","skipChildren","convertors","customConvertor","warn","customInline","nomalizedInfo","gfmConvertors","itemTag","columnLen","lastColIdx","tablePart","columnInfo","defaultOptions","gfm","node_1","Renderer","customOptions","createConvertors","customConvertors_1","defaultConvertors_1","orgConvertor","convertor","convertorType","getConvertors","getOptions","render","rootNode","leaf","converted","htmlNodes","htmlNode","renderHTMLNode","addNewLine","renderElementNode","renderTextNode","renderRawHtmlNode","generateOpenTagString","attrValue","generateCloseTagString","addOuterNewLine","addInnerNewLine","_toConsumableArray","arr2","isFrozen","getOwnPropertyDescriptor","freeze","seal","_ref","Reflect","construct","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","unconstruct","thisArg","_len","_key","_len2","_key2","lcElement","clone","newObject","property","lookupGetter","fallbackValue","html$2","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","html$1$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","Symbol","iterator","_toConsumableArray$1","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","suffix","ATTR_NAME","currentScript","policyName","createHTML","html$$1","createDOMPurify","DOMPurify","version","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","Comment","ElementPrototype","cloneNode","getNextSibling","getParentNode","template","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","createNodeIterator","getElementsByTagName","importNode","hooks","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","transformCaseFunc","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parentTagName","commonSvgAndHTMLElements","_forceRemove","outerHTML","_removeAttribute","getAttributeNode","_initDocument","leadingWhitespace","dirtyPayload","parseFromString","createDocument","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","_isNode","_executeHook","entryPoint","currentNode","_sanitizeElements","allowedTags","firstElementChild","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","keepAttr","allowedAttributes","_attr","forceKeepAttr","_sanitizeShadowDOM","shadowNode","shadowIterator","sanitize","importedNode","returnNode","toStaticHTML","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","purify","CAN_BE_WHITE_TAG_LIST","whiteTagList","registerTagWhitelistIfPossible","sanitizeHTML","getChildrenHTML","getHTMLAttrsByHTMLString","values","getHTMLAttrs","sanitizeDOM","sanitizer","wwToDOMAdaptor","getToDOMNode","htmlAttrs","schemaFactory","childrenHTML","createHTMLSchemaMap","convertorMap","htmlSchemaMap","htmlType","targetType","reCloseTag","baseConvertors","isPrevNodeHTML","isPrevBR","preClasses","codeAttrs","getHTMLRenderConvertors","customConvertors","newContext","rootHTML","openTagName","closeTagName","htmlConvertor","nestableTypes","nestableTagNames","isBlankLine","getEditorRangeHeightInfo","getBlankLinesHeight","findAncestorHavingId","getTotalOffsetTop","findAdjacentElementToScrollTop","lastSibling","findLastSiblingElementToScrollTop","adjacentEl","nextElementSibling","getAdditionalPos","targetNodeHeight","getParentNodeObj","previewContent","getNonNestableNodeObj","offsetInfoMap","setOffsetTop","getHeight","getOffsetTop","removeOffsetInfoByNode","getAndSaveOffsetInfo","mdNodeId","cachedHeight","cachedTop","nodeHeight","CLASS_HIGHLIGHT","findTableCell","MarkdownPreview","isViewer","customHTMLRenderer","highlight","renderer","cursorNodeId","initContentSection","overflowWrap","updateCursorNode","removeHighlight","currentEl","getElementByNodeId","cursorNode","oldEL","newEL","contentEl","newHtml","emitReduce","startNodeId","endNodeId","startEl","endEl","insertAdjacentHTML","nextEl","getRenderer","getHTML","setHTML","findNodeBy","isInListNode","isInTableNode","findListItem","createDOMInfoParsedRawHTML","rawHTML","createCellAttrs","createParsedCellDOM","attrNameInDOM","getDefaultCustomAttrs","getCustomAttrs","findWrappers","aroundNodes","innerNodes","wrapInList","joinBefore","foundListIndex","splitDepth","splitPos","changeToList","outerRange","getBeforeLineListItem","endListItemPos","toggleTaskListItems","startListItem","endListItem","changeListType","changeList","sinkListItem","nestedBefore","liftToOuterList","endOfList","liftOutOfList","indexBefore","canReplaceParent","liftListItem","topListItem","splitListItem","grandParent","keepItem","getWwCommands","TableOffsetMap","tableRows","tableStartPos","rowInfo","cellPos","rows_1","tablePos","theadCellInfo","createOffsetMap","tbodyCellInfo","getCellInfo","rowIdx","colIdx","posAt","rowStart","rowEnd","totalColumnCount","getNodeAndPos","cellInfo","tableStartOffset","extendedRowspan","extendedColspan","getRowspanCount","getColspanCount","decreaseColspanCount","decreaseRowspanCount","getColspanStartInfo","getRowspanStartInfo","getCellStartOffset","getCellEndOffset","getCellIndex","totalRowCount","getRectOffsets","startCellPos","endCellPos","startRowIdx","startColIdx","endRowIdx","endColIdx","getSpannedOffsets","selectionInfo","headOrBody","cellInfoMatrix","rowOffset","rowspanMap","colspanMap","cellOffset","mixinTableOffsetMapPrototype","offsetMapMixin","createOffsetMapMixin","getSelectionRanges","createTableFragment","CellSelection","startCell","endCell","offsetMap","isCellSelection","depthMap","depthFromTable","tableEndPos","tableOffset","isTableHeadCell","extended","copiedRow","createTableHeadRow","tableHeadCell","createTableBodyRows","tableBodyCell","createDummyCells","findCellElement","findCell","getResolvedSelection","foundCell","getTableContentFromSlice","getRowAndColumnCount","setAttrs","pluginKey","MOUSE_RIGHT_BUTTON","TableSelection","handleMousedown","mousemove","handleMousemove","mouseup","handleMouseup","getCellPos","prevEndCellPos","prevEndCellOffset","setCellSelection","mousePos","starting","cellSelection","SELECTED_CELL_CLASS_NAME","drawCellSelection","cells_1","tableSelection","createSelectionBetween","Map$1","getKeyIndex","keyIndex","clear","DEFAULT_CODE","I18n","langs","setCode","setLanguage","codes","langData","langSet","i18n","contextMenuGroups","action","disableInThead","getContextMenuGroups","inTableHead","contextMenuGroup","onClick","tableContextMenu","menuGroups","EXCEPT_TYPES","MARK_TYPES","LIST_TYPES","getToolbarStateType","setListNodeToolbarState","nodeTypeState","listName","listType","setMarkTypeStates","marksAtPos","foundMark","getToolbarState","toolbarStateHighlight","CustomBlockView","getPos","toDOMAdaptor","openEditor","innerEditorView","innerViewContainer","Escape","cancelEditing","saveAndFinishEditing","dispatchInner","canceled","createInnerViewContainer","renderCustomBlock","renderToolArea","tool","toDOMNode","hasChildNodes","closeEditor","outerState","undoableCount","outerTr","IMAGE_LINK_CLASS_NAME","ImageView","imageLink","createImageElement","WRAPPER_CLASS_NAME","CODE_BLOCK_LANG_CLASS_NAME","CodeBlockView","backgroundImage","createLanguageEditor","handleKeydown","changeLanguage","bindDOMEvent","language","createCodeBlockElement","wrpperWidth","reset","reMSOListClassName","reMSOStylePrefix","reMSOListStyle","reMSOTagName","reMSOListBullet","MSO_CLASS_NAME_LIST_PARA","isFromMso","getListItemContents","createTreeWalker","msoSpan","bulletSpan","isUnwrap","createListItemDataFromParagraph","styleAttr","listItemInfo","levelStr","unordered","addListItemDetailData","prevData","createListData","paras","prevListItemData","listItemData","makeList","listTagName","makeListFromParagraphs","rootChildren","isMsoListParagraphEnd","convertMsoParagraphsToList","foundParas","msoListParaEnd","extraHTML","START_FRAGMENT_COMMENT","END_FRAGMENT_COMMENT","getContentBetweenFragmentComments","startFragmentIndex","endFragmentIndex","convertMsoTableToCompletedTable","changePastedHTML","getMaxColumnCount","prevRow","currentRow","createCells","orgRow","maxColumnCount","cellCount","copiedCell","copyTableHeadRow","copyTableBodyRow","creatTableBodyDummyRow","columnIndex","dummyCell","dummyRowForPasting","createRowsFromPastingTable","tableContent","tableHeadRows","tableBodyRows","createTableHead","tableHeadRow","createTableBody","copiedRows","tableBodyRow","dummyTableRow","createTableFromPastingTable","startFromBody","isInTable","changePastedSlice","DUMMY_CELL_SIZE","TR_NODES_SIZE","getDummyCellSize","dummyCellCount","createPastingCells","curSelectionInfo","pastingRows","pastingTableRows","startToTableHead","slicedRows","getPastingRangeInfo","pastingCells","pastingRowCount","pastingColumnCount","colspan","addedRowCount","addedColumnCount","addReplacedOffsets","cellsOffsets","expandColumns","insertOffset","startCellOffset","endCellOffset","dummyOffsets","expandRows","mapStart","tableEndOffset","rowIndex","nextCellOffset","replaceCells","offsets","pasteToTable","pastingInfo","canMerge","reSoftTabLen","addSpaces","removeSpaces","removedSpaceText","levels","moveCursor","ArrowUp","ArrowDown","BulletList","bulletListCommand","OrderedList","orderedListCommand","liftToPrevListItem","listItemParent","grandParentListItem","Backspace","blockQutoeCommand","cellOffsetFnMap","getLeftCellOffset","getRightCellOffset","getUpCellOffset","down","getDownCellOffset","isInFirstListItem","paraDepth","listDepth","listItemNode","isInLastListItem","lastListItem","hasChildren","canMoveToBeforeCell","inList","curDepth","canMoveToAfterCell","canMoveBetweenCells","cellDepth","moveBeforeCell","moveAfterCell","canBeOutOfTable","rowspanInfo","inFirstRow","inLastRow","addParagraphBeforeTable","addParagraphAfterTable","forcedAddtion","lastCellInRow","lastCellInTable","nextColIdx","colspanInfo","firstCellInRow","firstCellInTable","nextRowIdx","moveToCell","cellIndex","cellOffsetFn","canSelectTableNode","getTargetRowInfo","targetRowIdx","insertColIdx","getRowRanges","theadData","tbodyData","removeTable","addColumn","targetColIdx","removeColumn","selectedAllColumn","addRow","selectedThead","removeRow","selectedAllTbodyRow","alignColumn","moveInCell","deleteCells","textSelection","exitTable","addColumnToLeft","addColumnToRight","addRowToUp","addRowToDown","deleteCellContent","ArrowLeft","ArrowRight","Delete","TableHead","TableBody","TableRow","TableHeadCell","cellAttrs","TableBodyCell","rowspan","Image","sanitizedDOM","ROOT_BLOCK_DEPTH","rootBlock","lastBlock","blockEnd","nextHr","hrCommand","toggleLink","FrontMatter","HTMLComment","CONTENTS_CLASS_NAME","WysiwygEditor","wwPlugins","wwNodeViews","pluginNodeViews","createPluginNodeViews","pluginNodeViewMap","transformPastedHTML","transformPasted","handlePaste","getModel","getSchema","setModel","newDoc","mark_1","maybeHasMark_1","nodeMarks","isUndefined","isNull","isExisty$1","isExisty_1","isExisty","isTruthy$1","isTruthy_1","isTruthy","isFalsy","isFalsy_1","eventTypeList","EventEmitter","eventTypes","hold","eventType","addEventType","typeInfo","getTypeInfo","hasEventType","results","splited","removeEventHandlerWithHandler","evtType","removeEventHandlerWithTypeInfo","handlerIndex","handlersToSurvive","getEvents","holdEventInvoke","fn","CommandManager","mdCommands","wwCommands","getEditorType","addCommand","deleteCommand","getTextWithoutTrailingNewline","isCustomHTMLInlineNode","isInlineNode","isSoftbreak","isListNode","getListItemAttrs","getMatchedAttributeValue","attrNames","tagNames","openMark","closeMark","br","openNode","closeNode","addText","htmlToWwConvertors","isBRTag","addRawHTMLAttributeToDOM","toWwConvertors","customAttrs","hasParaNode","sanitizedHTML","htmlToWwConvertor","isHTMLComment","htmlComment","convertByDOMParser","createWwConvertors","customConvertorTypes","orgConvertors","wwConvertor","mergeMarkText","ToWwConvertorState","merged","closeUnmatchedHTMLInline","length_1","nodeInfo","convert","infoForPosSync","stackItem","setMappedPos","convertNode","convertToRawHTMLHavingInlines","openTag","closeTag","write","convertInline","convertToRawHTMLHavingBlocks","stopNewline","closeBlock","createTableHeadDelim","columnAlign","leftDelim","rightDelim","nodeTypeWriters","firstChildNode","prevEmptyNode","nextParaNode","emptyNode","ensureNewLine","openDelim","closeDelim","flushClose","wrapBlock","convertList","orderedNum","headDelim","convertTableCell","params","addBackticks","getPairRawHTML","getOpenRawHTML","getCloseRawHTML","toMdConvertors","inTable","dataset","altAttr","titleAttr","markTypeOptions","mixable","removedEnclosingWhitespace","createNodeTypeConvertors","nodeTypeConvertors","writer","createMarkTypeConvertors","markTypeConvertors","markTypes","markOption","runConvertor","createMdConvertors","baseConvertor","ToMdConvertorState","closed","tightList","getMarkConvertor","isInBlank","markText","delimMin","firstDelim","escaped","convertBlock","trailing","progress","leading","removedWhitespace","markConvertor","lead","trail","lastMark","noEscape","activedMark","firstDelimFn","prevTight","nextChild","Convertor","toHTMLConvertors","mappedPosWhenConverting","focusedNode","getMappedPos","getInfoForPosSync","toWysiwygModel","toMarkdownText","wwNode","markdownText","execPlugin","pmState","pmView","pmModel","pluginFn","getPluginInfo","pluginInfoResult","markdownParsers","toHTMLRenderers","toMarkdownRenderers","markdownPlugins","wysiwygPlugins","wysiwygNodeViews","markdownCommands","wysiwygCommands","toolbarItems","TASK_ATTR_NAME","DISABLED_TASK_ATTR_NAME","TASK_CHECKED_CLASS_NAME","registerHTMLTagToWhitelist","ToastUIEditorViewer","customHTMLSanitizer","theme","rendererOptions","initialValue","existingHTML","preview","endSourcepos","isMarkdownMode","isWysiwygMode","isPmNode","containerTypes","createMdLikeNode","mdLikeNode","wysiwygNode","nodeTypeMap","tokenToDOMNode","token","WwToDOMAdaptor","customRenderer","customHTMLConvertor","customConvertorKeys","generateTokens","ANIMATION_TIME","SCROLL_BLOCKING_RESET_DELAY","currentTimeoutId","releaseTimer","run","deltaScrollTop","syncScrollTop","releaseEventBlock","animate","curScrollTop","targetScrollTop","syncCallbacks","startTime","deltaValue","stepTime","cos","PI","ceil","EDITOR_BOTTOM_PADDING","ScrollSync","mdEditor","latestEditorScrollTop","latestPreviewScrollTop","blockedScroll","previewRoot","previewEl","addScrollSyncEvent","syncPreviewScrollTop","syncEditorScrollTop","getMdNodeAtPos","indexInfo","getScrollTopByCaretPos","firstMdNode","previewHeight","totalOffsetTop","editing","scrollHeight","isBottomPos","scrollTopByEditing","getResolvedScrollTop","mdNodeStartLine","latestScrollTop","scrollTarget","queryMap","getPopupInitialValues","editor","popupName","buildQuery","query","ToastUIEditorCore","initialHTML","previewStyle","initialEditType","hideModeSwitch","customMarkdownRenderer","autofocus","mode","mdPreviewStyle","pluginInfo","wwEditor","commandManager","scrollSync","addInitEvent","addInitCommand","changeMode","addPluginCommands","commandMap","getCurrentModeEditor","factory","viewer","changePreviewStyle","commandHoc","paylaod","getMinHeight","minHeightNum","getCurrentPreviewStyle","withoutFocus","hide","show","getEditorElements","mdPreview","html$1","u","h","isBoolean","isBoolean_1","VNodeWalker","walk","vnode","VNode","removalNodes","excludeUnnecessaryChild","flatted","isObject","isObject_1","createNode","removeNode","innerDiff","prevProps","nextProps","reNonDimension","setStyleProps","prevStyleProps","styleProps","styleProp","commit","removalNode","component","effect","beforeDestroy","createComponent","Comp","buildVNode","buildChildrenVNode","isSameType","sameType","rerender","templateObject_1$h","Component","refs","setState","Switch","debounce$1","debounced","debounce_1","debounce","throttle$1","interval","stamp","isLeading","tick","_args","throttled","throttle_1","MapShim","getIndex","entry","class_1","__entries__","entries","ctx","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","trailingTimeout","throttle","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","connect_","removeObserver","observers","disconnect_","changesDetected","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","propertyName","isReflowProperty","getInstance","instance_","defineConfigurable","writable","getWindowOf","ownerGlobal","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","positions","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getBBox","getHTMLElementContentRect","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getContentRect","createReadOnlyRect","Constr","DOMRectReadOnly","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","WeakMap","ResizeObserver","method","templateObject_1$g","templateObject_2$8","templateObject_1$f","templateObject_2$7","templateObject_1$e","templateObject_1$d","templateObject_1$c","templateObject_2$6","templateObject_3$2","templateObject_4$1","templateObject_1$b","templateObject_1$a","templateObject_2$5","templateObject_3$1","templateObject_4","templateObject_5","HeadingPopupBody","Tabs","toggleTab","activeTab","tabs","TYPE_UI","ImagePopupBody","initialize","urlEl","file","fileNameElClassName","emitAddImageBlob","emitAddImage","showFileSelectBox","changeFile","altTextEl","imageFile","hookCallback","imageUrlEl","preventSelectStart","hidePopup","LinkPopupBody","linkUrlEl","linkTextEl","checkLinkText","initialValues","CELL_WIDTH","CELL_HEIGHT","MIN_ROW_INDEX","MAX_ROW_INDEX","MIN_COL_INDEX","MAX_COL_INDEX","MIN_ROW_SELECTION_INDEX","MIN_COL_SELECTION_INDEX","BORDER_WIDTH","TablePopupBody","extendSelectionRange","pageX","pageY","offsetRect","getSelectionRangeByOffset","getDescription","getBoundByRange","getRangeByOffset","getTableRange","orgColIdx","orgRowIdx","getSelectionAreaBound","tableEl","pageXOffset","pageYOffset","createTableArea","tableRange","cellClassNames","selectionAreaBound","CustomPopupBody","createToolbarItemInfo","createDefaultToolbarItemInfo","createScrollSyncToolbarItem","checkbox","toggleSwitch","onMounted","tooltip","createPopupInfo","fromEl","setGroupState","hidden","groupToolbarItems","hiddenScrollSync","toggleScrollSyncState","toggleScrollSync","templateObject_1$9","templateObject_1$8","MARGIN_FROM_RIGHT_SIDE","Popup","popupPos","toolbarEl","toolbarOffsetWidth","popupStyle","TOOLTIP_INDENT","connectHOC","WrappedComponent","ButtonHOC","showTooltip","bound","getBound","tooltipRef","hideTooltip","addEvent","templateObject_1$7","templateObject_1$6","templateObject_1$5","templateObject_2$4","templateObject_1$4","templateObject_2$3","templateObject_1$3","templateObject_2$2","templateObject_1$2","templateObject_2$1","templateObject_3","templateObject_1$1","templateObject_2","templateObject_1","DEFAULT_WIDTH","ToolbarButtonComp","setPopupInfo","setItemWidth","ToolbarButton","CustomToolbarItemComp","showPopup","onUpdated","getListener","listener","CustomToolbarItem","ToolbarGroup","hiddenDivider","groupStyle","dividerStyle","POPUP_INDENT","DropdownToolbarButtonComp","handleClickDocument","showDropdown","dropdownPos","visibleItems","dropdownItem","dropdownStyle","dropdownEl","DropdownToolbarButton","INLINE_PADDING","Toolbar","itemWidthMap","popupInfo","openPopup","initialItems","dropdownItems","resizeObserver","handleResize","insertToolbarItem","indexList","groupIndex","itemIndex","classifyToolbarItems","removeToolbarItem","appendTooltipToRoot","movePrevItemToDropdownToolbar","dropdownGroup","moveItem","targetGroup","prevGroup","totalWidth","divider","dividerWidth","moved","initialGroup","changedStyle","changedType","toolbarStyle","borderTopLeftRadius","ContextMenu","getMenuGroupElements","menuItem","handleClick","Layout","slots","wwContainer","mdContainer","insertAdjacentElement","toolbar","displayClassName","editorTypeClassName","previewClassName","themeClassName","editorSection","ToastUIEditor","layoutComp","layout","defaultUI","toolbarItem","itemName","Markdown","WYSIWYG","Write","Preview","Headings","Bold","Italic","Line","Blockquote","Task","Indent","Outdent","Description","OK","More","Cancel","File","URL","8","9","10","12","13","16","17","18","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","106","107","108","109","110","111","144","145","160","161","162","163","164","165","173","186","187","188","189","190","191","192","219","220","221","222","229","48","49","50","51","52","53","54","55","56","57","brokenModifierNames","keyName","ignoreKey","normalizeKeyName","ctrl","normalize","modifiers","keymap","bindings","keydownHandler","baseName","isChar","direct","fromCode","withShift","GOOD_LEAF_SIZE","RopeSequence","leafAppend","leafPrepend","appendInner","Append","sliceInner","getInner","forEachInner","forEachInvertedInner","Leaf","flatten","leftLen","ropeSequence","max_empty_items","Branch","eventCount","cutOffEvents","cutPoint","popEvent","preserveItems","remap","remapping","remaining","transform","addAfter","Item","addTransform","histOptions","newItems","oldItems","lastItem","overflow","DEPTH_OVERFLOW","mirrorPos","mirrorOffset","addMaps","rebased","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","newMaps","branch","emptyItemCount","compress","newItem","HistoryState","undone","prevRanges","prevTime","history","historyTr","historyKey","historyState","closeHistoryKey","appended","mustPreserveItems","rangesFor","mapRanges","newGroup","newGroupDelay","isAdjacentTo","adjacent","histTransaction","newHist","cachedPreserveItems","cachedPreserveItemsPlugins","historyPreserveItems","hist","handled","undoDepth","baseMixins","autoGrow","noResize","rowHeight","validator","isNaN","classes","noResizeHandle","watch","lazyValue","$nextTick","methods","calculateInputHeight","$refs","genInput","onInput","onKeyDown","isFocused","_vm","_h","$createElement","_self","staticClass","$event","goRoute","_v","loading","document_save","isMonitoringClinrecSave","monitoringClinrecId","doc_id","currentSection","ver","dialog","publish_kr","openNewModal","dialogSelectedIntegration","model","$$v","expression","doc_whole_parse","isLoading","itemsListIntegrationCR","getList","selectedIntegrationCR","loadingBtnIntegration","addCrIntegrattion","scopedSlots","_u","_l","showSection","_s","directives","rawName","tableEditMode","menu","editorOptions","changeEditorUI","sections","$set","year","publish_date","toLocaleDateString","getlistNKO","snackbar","text_snackbar","saveNewModalCheck","staticRenderFns","headers","tableTermList","itemsPerPageText","itemsPerPageAllText","_g","indEdititems","term_list","changeAuto","editedItem","save","editItems","deleteItem","inheritAttrs","sortBy","sortDesc","customSort","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","locale","disableSort","disablePagination","disableFiltering","customFilter","serverItemsLength","internalOptions","sortDiff","groupDiff","itemsLength","filteredItems","pageCount","pageStart","pageStop","isGrouped","pagination","computedItems","sortItems","paginateItems","groupedItems","groupItems","scopedProps","sortArray","updateOptions","originalItemsLength","computedOptions","deep","immediate","$emit","toggle","by","oldBy","oldDesc","byIndex","$scopedSlots","required","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","genDataItemsPerPageOption","$vuetify","genItemsPerPageSelect","computedIPPO","ippo","VSelect","hideDetails","auto","minWidth","genPaginationInfo","genIcon","icon","VIcon","genIcons","rtl","mixins","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","expansion","internalCurrentItems","everyItem","selectableItems","every","someItems","sanitizedFooterProps","created","breakingProps","original","removedProps","toggleSelectAll","isSelected","select","isExpanded","createItemProps","isMobile","genEmptyWrapper","genEmpty","$slots","noData","filteredItemsLength","noResults","genItems","genFooter","genDefaultScopedSlot","outerProps","ripple","sortIcon","showGroupBy","genSelectAll","indeterminate","VSimpleCheckbox","genSortIcon","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","asc","VChip","genSortSelect","menuProps","closeOnContentClick","sortHeaders","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","genHeader","role","scope","slot","functional","mobile","dedupeModelListeners","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","computedSlots","slotName","scopedSlot","regularSlot","textAlign","headerClass","contentClass","summaryClass","dense","fixedHeader","themeClasses","genWrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","matchesColumnFilters","headersWithCustomFilters","matchesSearchTerm","headersWithoutCustomFilters","showSelect","showExpand","headerProps","calculateWidths","headersLength","expandIcon","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","columnSorters","sanitizedHeaderProps","computedItemsPerPage","firstOption","calcWidths","$el","customFilterWithColumns","customSortWithHeaders","VDataIterator","genCaption","genColgroup","genLoading","genHeaders","genGroupedRows","genRows","genDefaultGroupedRow","removeFn","small","RowGroup","genScopedRows","genDefaultRows","genDefaultExpandedRow","headerRow","genDefaultSimpleRow","expandedRow","MobileRow","dblclick","genBody","genFooters","simpleProps","proxySlot","VAutocomplete","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VContainer","VDataTable","VDialog","VRow","VSnackbar","VSpacer","VTextarea","VToolbar","tableLPList","mnn_list","tableMUList","servList","tableKKList","kk_list","tableIndList","VTextField","checkInputEvents","selected","showTableAddRecsList","editorEvents","defaultValueMap","optionsMixin","eventOptions","invoke","methodName","destroyed","script$1","newValue","toastuiEditor","getRootElement","normalizeComponent","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","_compiled","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","originalRender_1","existing","beforeCreate","__vue_script__$1","__vue_render__$1","__vue_staticRenderFns__$1","_withStripped","__vue_inject_styles__$1","__vue_scope_id__$1","__vue_module_identifier__$1","__vue_is_functional_template__$1","__vue_component__$1","__vue_render__","indeterminateIcon","offIcon","onIcon","inputIndeterminate","VInput","computedIcon","validationState","isDisabled","hasError","hasColor","genCheckbox","setTextColor","dark","light","genRipple","genDefaultSlot","VCheckbox","VForm","VToolbarTitle","defaultMenuProps","offsetOverflow","transition","allowOverflow","autoSelectFirst","itemText","queryText","hideNoData","noFilter","searchInput","lazySearch","selectedIndex","selectedValues","selectedItems","hasDisplayedItems","hideSelected","currentRange","selectedItem","getText","internalSearch","allItems","isAnyValueAllowed","isDirty","searchIsDirty","isSearching","menuCanShow","$_menuProps","internalValue","isMenuActive","oldVal","activateMenu","onFilteredItemsChanged","onInternalSearchChanged","updateMenuDimensions","changeSelectedIndex","deleteCurrentItem","curIndex","curItem","getDisabled","nextIndex","nextItem","clearableCallback","autocomplete","domProps","genInputSlot","genSelections","hasSlot","isAppendInner","onSpaceDown","onTabDown","onUpDown","selectItem","setSelectedItems","setSearch","updateSelf","valueComparator","getValue","hasItem","onCopy","currentItem","currentItemText","breakpoint","mobileWidth","$attrs","module","__WEBPACK_EXTERNAL_MODULE__43__","__WEBPACK_EXTERNAL_MODULE__814__","__WEBPACK_EXTERNAL_MODULE__311__","__webpack_modules__","368","928","__unused_webpack_exports","__webpack_require__","690","893","956","990","755","349","348","24","204","522","902","714","471","462","969","254","391","322","65","404","294","934","758","790","929","43","814","311","__webpack_module_cache__","moduleId","cachedModule","getter","definition","o","g","__webpack_exports__","indexViewer","tslib_es6_assign","esm_extendStatics","esm_extends","esm_assign","esm_spreadArray","esm_image","esm_int","esm_top","esm_importDefault","esm_escape","esm_Node","esm_text","esm_document","collection_forEachOwnProperties","forEachOwnProperties_default","extend_default","on_default","off_default","addClass_default","removeClass_default","css_default","collection_toArray","toArray_default","type_isArray","isArray_default","type_isString","isString_default","type_isUndefined","isUndefined_default","hasClass_default","constants_ATTRIBUTE","constants_OPEN_TAG","constants_HTML_TAG","common_XMLSPECIAL","common_includes","common_last","common_assign","isFunction_default","purify_default","htmlSanitizer_registerTagWhitelistIfPossible","htmlRenderConvertors_baseConvertors","dom_getTotalOffsetTop","external_commonjs_prosemirror_state_commonjs2_prosemirror_state_amd_prosemirror_state_","external_commonjs_prosemirror_view_commonjs2_prosemirror_view_amd_prosemirror_view_","external_commonjs_prosemirror_model_commonjs2_prosemirror_model_amd_prosemirror_model_","inArray_default","map_Map","utils_map","isFalsy_default","InputRule","stringHandler","cutOff","MAX_MATCH","inputRules","handleTextInput","isInputRules","textBefore"],"mappings":"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C,MAAOA,GACPC,QAASA,GACTC,UAAWA,GACXC,WAAYA,GACZC,MAAOA,GACPC,QAASA,GACTC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,UAAWA,GACXC,WAAYA,GACZC,KAAMA,GACN24B,OAAQ14B,GACR24B,OAAQ14B,GACRC,KAAMA,GACNC,cAAeA,GACfC,gBAAiBA,GACjBC,eAAgBA,GAChBC,iBAAkBA,GAClBC,GAAIA,GACJC,GAAIA,GACJC,IAAKA,GACLC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,QAASA,GACTC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,OAAQA,GACRC,QAASA,GACTC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,OAAQA,GACR42B,OAAQ32B,GACR42B,OAAQ32B,GACRC,KAAMA,GACN22B,MAAO12B,GACP22B,MAAO12B,GACPC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACN41B,OAAQ31B,GACR41B,OAAQ31B,GACRC,IAAKA,GACLC,MAAOA,GACPC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,MAAOA,GACPC,IAAKA,GACLC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,qBAAsBA,GACtBC,eAAgBA,GAChBC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,GAAIA,GACJC,GAAIA,GACJC,IAAKA,GACLC,MAAOA,GACPC,QAASA,GACT8zB,KAAM7zB,GACN8zB,KAAM7zB,GACNC,OAAQA,GACRC,KAAMA,GACNC,QAASA,GACTC,IAAKA,GACLC,GAAIA,GACJC,KAAMA,GACNC,KAAMA,GACNuzB,OAAQtzB,GACRuzB,OAAQtzB,GACRC,KAAMA,GACNszB,OAAQrzB,GACRszB,OAAQrzB,GACRC,SAAUA,GACVC,OAAQA,GACRC,OAAQA,GACRmzB,KAAMlzB,GACNmzB,KAAMlzB,GACNC,MAAOA,GACPC,QAASA,GACTC,UAAWA,GACXC,YAAaA,GACbC,gBAAiBA,GACjB8yB,KAAM7yB,GACNC,SAAUA,GACVC,IAAKA,GACLC,OAAQA,GACRC,MAAOA,GACPl/F,KAAMA,GACNm/F,SAAUA,GACVC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,QAASA,GACTC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,OAAQA,GACRC,MAAOA,GACPC,GAAIA,GACJC,GAAIA,GACJC,UAAWA,GACXC,IAAKA,GACLC,OAAQA,GACRC,QAASA,GACTC,OAAQA,GACRC,SAAUA,GACVC,MAAOA,GACPC,QAASA,GACTC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,UAAWA,GACX4wB,OAAQ3wB,GACRC,QAASA,GACTC,QAASA,GACTC,GAAIA,GACJC,cAAeA,GACfC,SAAUA,GACVC,KAAMA,GACNC,KAAMA,GACNqwB,MAAOpwB,GACPC,KAAMA,GACNC,GAAIA,GACJC,GAAIA,GACJC,MAAOA,GACPC,WAAYA,GACZC,KAAMA,GACNC,YAAaA,GACbC,SAAUA,GACVC,cAAeA,GACfC,mBAAoBA,GACpBC,cAAeA,GACfC,OAAQA,GACRC,YAAaA,GACbC,SAAUA,GACVC,SAAUA,GACV9oG,IAAKA,GACL+oG,IAAKA,GACLC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GACNC,QAASA,GACTC,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVl6G,KAAMA,GACNm6G,aAAcA,GACdC,WAAYA,GACZC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,YAAaA,GACbC,QAASA,GACTC,MAAOA,GACPC,QAASA,GACTmtB,KAAMltB,GACNmtB,KAAMltB,GACNC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,SAAUA,GACVC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACP54H,MAAOA,GACP64H,OAAQA,GACRysB,MAAOxsB,GACPC,OAAQA,GACRC,MAAOA,GACPC,QAASA,GACTC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,UAAWA,GACXC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,QAASA,GACTC,MAAOA,GACPC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,SAAUA,GACVC,MAAOA,GACPC,GAAIA,GACJl9F,KAAMA,GACN6mH,IAAK1pB,GACL2pB,IAAK1pB,GACLC,eAAgBA,GAChBC,mBAAoBA,GACpBC,qBAAsBA,GACtBC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,kBAAmBA,GACnBC,cAAeA,GACfC,WAAYA,GACZC,WAAYA,GACZC,WAAYA,GACZC,oBAAqBA,GACrBC,eAAgBA,GAChBC,aAAcA,GACdC,mBAAoBA,GACpBC,mBAAoBA,GACpBC,mBAAoBA,GACpBC,gBAAiBA,GACjBC,WAAYA,GACZC,iBAAkBA,GAClBC,eAAgBA,GAChBC,gBAAiBA,GACjBC,kBAAmBA,GACnBC,iBAAkBA,GAClBC,gBAAiBA,GACjBC,cAAeA,GACfC,SAAUA,GACVC,eAAgBA,GAChBC,gBAAiBA,GACjBC,iBAAkBA,GAClBC,cAAeA,GACfC,mBAAoBA,GACpBC,kBAAmBA,GACnBC,iBAAkBA,GAClBC,iBAAkBA,GAClBC,cAAeA,GACfC,eAAgBA,GAChBC,YAAaA,GACbC,KAAMA,GACNC,aAAcA,GACdC,MAAOA,GACPC,MAAOA,GACPC,IAAKA,GACLC,WAAYA,GACZC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,QAASA,GACTC,aAAcA,GACdC,KAAMA,GACNC,OAAQA,GACRC,SAAUA,GACVC,MAAOA,GACPC,YAAaA,GACbC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,SAAUA,GACVC,YAAaA,GACbC,QAASA,GACTC,GAAIA,GACJC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,GAAIA,GACJC,GAAIA,GACJC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,SAAUA,GACVC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTyiB,KAAMxiB,GACNC,KAAMA,GACNC,OAAQA,GACRC,SAAUA,GACVC,MAAOA,GACPC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,eAAgBA,GAChBC,eAAgBA,GAChBC,SAAUA,GACVC,cAAeA,GACfC,gBAAiBA,GACjBC,aAAcA,GACdshB,IAAKrhB,GACLC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,OAAQA,GACRC,KAAMA,GACNC,MAAOA,GACPC,KAAMA,GACNC,MAAOA,GACPC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,YAAaA,GACbC,cAAeA,GACfC,OAAQA,GACRC,SAAUA,GACVC,KAAMA,GACNC,MAAOA,GACPC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,UAAWA,GACXC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,SAAUA,GACVC,WAAYA,GACZC,MAAOA,GACPC,OAAQA,GACRC,SAAUA,GACVC,WAAYA,GACZC,OAAQA,GACRC,OAAQA,GACRC,mBAAoBA,GACpBC,aAAcA,GACdC,kBAAmBA,GACnBC,eAAgBA,GAChBC,oBAAqBA,GACrBC,YAAaA,GACbC,OAAQA,GACRC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,gBAAiBA,GACjBC,YAAaA,GACbC,MAAOA,GACPxoH,IAAKA,GACLyoH,IAAKA,GACLC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,SAAUA,GACVC,UAAWA,GACXC,YAAaA,GACbC,UAAWA,GACXC,WAAYA,GACZC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,WAAYA,GACZC,KAAMA,GACNC,YAAaA,GACbC,SAAUA,GACVC,cAAeA,GACfC,mBAAoBA,GACpBC,cAAeA,GACfC,OAAQA,GACRC,YAAaA,GACbC,SAAUA,GACVC,SAAUA,GACVC,QAASA,GACTC,SAAUA,GACVC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACN2a,KAAM1a,GACN2a,KAAM1a,GACN2a,KAAM1a,GACNC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,QAASA,GACTC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,SAAUA,GACVC,cAAeA,GACfC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,SAAUA,GACVC,UAAWA,GACXC,UAAWA,GACXC,WAAYA,GACZC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,OAAQA,GACR6Y,MAAO5Y,GACPn8D,IAAKA,GACL7wE,OAAQA,GACRitI,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,UAAWA,GACXC,UAAWA,GACXC,MAAOA,GACPC,MAAOA,GACPC,SAAUA,GACVC,OAAQA,GACRC,YAAaA,GACbC,SAAUA,GACVC,WAAYA,GACZC,UAAWA,GACXC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRkX,MAAOjX,GACPkX,MAAOjX,GACPC,MAAOA,GACPC,MAAOA,GACPC,WAAYA,GACZC,eAAgBA,GAChBC,WAAYA,GACZC,SAAUA,GACVC,OAAQA,GACR2W,MAAO1W,GACPC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACR51H,IAAKA,GACL61H,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,KAAMA,GACNC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,SAAUA,GACVC,aAAcA,GACdC,aAAcA,GACdC,eAAgBA,GAChBC,UAAWA,GACXC,cAAeA,GACfC,gBAAiBA,GACjBC,OAAQA,GACRC,KAAMA,GACNC,SAAUA,GACVC,UAAWA,GACXC,QAASA,GACTC,MAAOA,GACPC,QAASA,GACTC,SAAUA,GACVC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,iBAAkBA,GAClBC,kBAAmBA,GACnBqU,OAAQpU,GACRqU,OAAQpU,GACRC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,SAAUA,GACVC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACR6T,MAAO5T,GACP6T,MAAO5T,GACPC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLoT,OAAQnT,GACRoT,OAAQnT,GACRC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,SAAUA,GACVC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACP0S,IAAKzS,GACLC,SAAUA,GACVC,WAAYA,GACZC,aAAcA,GACdC,iBAAkBA,GAClBC,MAAOA,GACPC,UAAWA,GACXC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,WAAYA,GACZC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,iBAAkBA,GAClBC,YAAaA,GACbC,YAAaA,GACbC,YAAaA,GACbC,cAAeA,GACfC,cAAeA,GACfC,eAAgBA,GAChBC,MAAOA,GACPC,eAAgBA,GAChBC,gBAAiBA,GACjBC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,WAAYA,GACZC,MAAOA,GACPC,WAAYA,GACZC,OAAQA,GACRC,SAAUA,GACVC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACP4P,KAAM3P,GACN4P,KAAM3P,GACNC,QAASA,GACTC,OAAQA,GACRC,WAAYA,GACZC,SAAUA,GACVC,WAAYA,GACZC,OAAQA,GACRC,MAAOA,GACPC,UAAWA,GACXC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,SAAUA,GACVC,aAAcA,GACdC,cAAeA,GACfC,aAAcA,GACdC,cAAeA,GACfC,SAAUA,GACVC,gBAAiBA,GACjBC,iBAAkBA,GAClBC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,YAAaA,GACbC,aAAcA,GACdC,kBAAmBA,GACnBC,cAAeA,GACfC,cAAeA,GACfC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,GAAIA,GACJC,GAAIA,GACJC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,KAAMA,GACNC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,MAAOA,GACPC,GAAIA,GACJC,GAAIA,GACJC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRoJ,OAAQnJ,GACRoJ,OAAQnJ,GACRC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACL8I,IAAK7I,GACLC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNoI,KAAMnI,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,eAAgBA,GAChBC,KAAMA,GACNC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,IAAKA,GACLC,KAAMA,IAGHE,GAAS,IACTC,GAAS,IACTC,GAAQ,IACRC,GAAQ,IACRC,GAAQ,IACRC,GAAQ,IACRC,GAAQ,IACRC,GAAS,IACTC,GAAS,IACTkG,GAAQ,IACRhG,GAAM,IACNE,GAAQ,IACRC,GAAQ,IACRC,GAAS,IACTC,GAAS,IACTC,GAAO,IACPC,GAAO,IACPC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAQ,IACRC,GAAO,IACPz7I,GAAO,IACP07I,GAAO,IACPC,GAAS,IACTC,GAAM,IACNC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAQ,IACRC,GAAQ,IACRC,GAAS,IACTC,GAAS,IACTC,GAAM,IACNC,GAAM,IACNC,GAAO,IACPC,GAAO,IACPC,GAAS,IACTC,GAAS,IACTC,GAAS,IACToE,GAAO,IACPlE,GAAK,IACLC,GAAS,IACTC,GAAS,IACTC,GAAQ,IACRC,GAAQ,IACRC,GAAQ,IACRC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAO,IACPC,GAAO,IACPC,GAAQ,IACRwD,GAAO,IACPtD,GAAK,IACLC,GAAO,IACPC,GAAQ,IACRC,GAAS,IACTC,GAAO,IACPC,GAAM,IACNC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAQ,IACRC,GAAQ,IACRC,GAAS,IACTC,GAAS,IACTC,GAAO,IACPC,GAAO,IACPC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAS,IACTC,GAAO,IACPC,GAAO,IACPC,GAAO,IACPC,GAAS,IACTC,GAAQ,IACR+B,GAAS,IACT7B,GAAO,IACPC,GAAQ,IACRC,GAAM,IACNC,GAAM,IACNC,GAAO,IACPC,GAAM,IACNC,GAAO,IACPC,GAAO,IACPC,GAAO,IACPC,GAAQ,IACRC,GAAQ,IACRC,GAAQ,IACRC,GAAQ,IACRC,GAAS,IACTC,GAAS,IACTC,GAAQ,IACRC,GAAQ,IACRC,GAAS,IACTC,GAAS,IACTC,GAAM,IACNC,GAAO,IACPC,GAAO,IACPC,GAAS,IACTC,GAAS,IACTC,GAAM,IACNC,GAAO,IACPK,GAAa,CAChB9G,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,IAAKiG,GACLhG,IAAKA,GACLE,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNz7I,KAAMA,GACN07I,KAAMA,GACNC,OAAQA,GACRC,IAAKA,GACLC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,GAAImE,GACJlE,GAAIA,GACJC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,GAAIuD,GACJtD,GAAIA,GACJC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,KAAMA,GACNC,IAAKA,GACLC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,MAAOA,GACPC,KAAM8B,GACN7B,KAAMA,GACNC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,IAAKA,GACLC,KAAMA,IAGHhG,GAAM,IACNE,GAAO,IACP6B,GAAK,IACLa,GAAK,IACL0B,GAAO,IACPgC,GAAe,CAClBtG,IAAKA,GACLE,KAAMA,GACN6B,GAAIA,GACJa,GAAIA,GACJ0B,KAAMA,IAGHiC,GAAmB,GAEnBC,GAAa,CAChB,EAAK,MACL,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KAGJC,GAAqBxrE,IAAkBA,GAAeyrE,iBAAoB,SAAUC,GACpF,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,IAExD75I,OAAOs9C,eAAem8F,GAAkB,aAAc,CAAE38I,OAAO,IAC/D,IAAIi9I,GAAgBJ,GAAkBD,IAElCM,GAEJtnG,OAAOunG,eACH,SAAUC,GACN,IAAI/6H,EAAS,GAOb,OANI+6H,EAAY,QACZA,GAAa,MACb/6H,GAAUuzB,OAAOC,aAAeunG,IAAc,GAAM,KAAS,OAC7DA,EAAY,MAAsB,KAAZA,GAE1B/6H,GAAUuzB,OAAOC,aAAaunG,GACvB/6H,GAEf,SAASg7H,GAAgBD,GACrB,OAAKA,GAAa,OAAUA,GAAa,OAAWA,EAAY,QACrD,KAEPA,KAAaH,GAAcxgI,UAC3B2gI,EAAYH,GAAcxgI,QAAQ2gI,IAE/BF,GAAgBE,IAE3BT,GAAiBlgI,QAAU4gI,GAE3B,IAAIC,GAAqBjsE,IAAkBA,GAAeyrE,iBAAoB,SAAUC,GACpF,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,IAExD75I,OAAOs9C,eAAe4xB,GAAQ,aAAc,CAAEpyE,OAAO,IACrDoyE,GAAOmrE,WAAanrE,GAAOorE,iBAAmBprE,GAAOqrE,eAAY,EACjE,IAAIC,GAAoBJ,GAAkB5H,IACtCiI,GAAgBL,GAAkBb,IAClCmB,GAAeN,GAAkBZ,IACjCmB,GAAqBP,GAAkBX,IACvCmB,GAAiB,4CAGrB,SAASC,GAAiB/mJ,GACtB,IAAIuO,EAAUy4I,GAAYhnJ,GAC1B,OAAO,SAAUogB,GAAO,OAAOw+B,OAAOx+B,GAAK7R,QAAQu4I,GAAgBv4I,IAJvE6sE,GAAOqrE,UAAYM,GAAiBH,GAAanhI,SACjD21D,GAAOorE,iBAAmBO,GAAiBL,GAAkBjhI,SAK7D,IAAIwhI,GAAS,SAAUr1I,EAAGC,GAAK,OAAQD,EAAIC,EAAI,GAAK,GAuBpD,SAASm1I,GAAYhnJ,GACjB,OAAO,SAAiBogB,GACpB,GAAsB,MAAlBA,EAAI8mI,OAAO,GAAY,CACvB,IAAIC,EAAa/mI,EAAI8mI,OAAO,GAC5B,MAAmB,MAAfC,GAAqC,MAAfA,EACfN,GAAmBphI,QAAQ4zC,SAASj5C,EAAIgnI,OAAO,GAAI,KAEvDP,GAAmBphI,QAAQ4zC,SAASj5C,EAAIgnI,OAAO,GAAI,KAG9D,OAAOpnJ,EAAIogB,EAAI5gB,MAAM,GAAI,KAAO4gB,GAhCxCg7D,GAAOmrE,WAAa,WAGhB,IAFA,IAAIc,EAASn7I,OAAOotB,KAAKqtH,GAAclhI,SAAS3H,KAAKmpI,IACjD3tH,EAAOptB,OAAOotB,KAAKotH,GAAkBjhI,SAAS3H,KAAKmpI,IAC9ChmJ,EAAI,EAAGkU,EAAI,EAAGlU,EAAIq4B,EAAK/0B,OAAQtD,IAChComJ,EAAOlyI,KAAOmkB,EAAKr4B,IACnBq4B,EAAKr4B,IAAM,KACXkU,KAGAmkB,EAAKr4B,IAAM,IAGnB,IAAIotB,EAAK,IAAIyhC,OAAO,OAASx2B,EAAKt1B,KAAK,KAAO,gCAAiC,KAC3EuK,EAAUy4I,GAAYN,GAAkBjhI,SAC5C,SAASmsC,EAASxxC,GAGd,MAFuB,MAAnBA,EAAIgnI,QAAQ,KACZhnI,GAAO,KACJ7R,EAAQ6R,GAGnB,OAAO,SAAUA,GAAO,OAAOw+B,OAAOx+B,GAAK7R,QAAQ8f,EAAIujC,IApBvC,GAoCpB,IAAI01F,GAAS,GAETxB,GAAmBzrE,IAAkBA,GAAeyrE,iBAAoB,SAAUC,GAClF,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,IAExD75I,OAAOs9C,eAAe89F,GAAQ,aAAc,CAAEt+I,OAAO,IACrDs+I,GAAOC,WAAaD,GAAOE,OAASF,GAAOG,mBAAqBH,GAAOI,WAAaJ,GAAOK,eAAY,EACvG,IAAIC,GAAa9B,GAAgBJ,IAC7BmC,GAAaC,GAAcF,GAAWniI,SACtCsiI,GAAcC,GAAmBH,IAQrCP,GAAOK,UAAYM,GAAgBJ,IACnC,IAAIK,GAAkBpC,GAAgBpH,IAClCyJ,GAAcL,GAAcI,GAAgBziI,SAC5C2iI,GAAeJ,GAAmBG,IAoBtC,SAASL,GAAcrqI,GACnB,OAAOvR,OAAOotB,KAAK7b,GACdK,OACA0G,QAAO,SAAUxY,EAASI,GAE3B,OADAJ,EAAQyR,EAAIrR,IAAS,IAAMA,EAAO,IAC3BJ,IACR,IAEP,SAASg8I,GAAmBh8I,GAGxB,IAFA,IAAIq8I,EAAS,GACTC,EAAW,GACN1uF,EAAK,EAAGjG,EAAKznD,OAAOotB,KAAKttB,GAAU4tD,EAAKjG,EAAGpvD,OAAQq1D,IAAM,CAC9D,IAAI7O,EAAI4I,EAAGiG,GACM,IAAb7O,EAAExmD,OAEF8jJ,EAAOxjJ,KAAK,KAAOkmD,GAInBu9F,EAASzjJ,KAAKkmD,GAItBs9F,EAAOvqI,OACP,IAAK,IAAIzY,EAAQ,EAAGA,EAAQgjJ,EAAO9jJ,OAAS,EAAGc,IAAS,CAEpD,IAAIrC,EAAMqC,EACV,MAAOrC,EAAMqlJ,EAAO9jJ,OAAS,GACzB8jJ,EAAOrlJ,GAAKkmB,WAAW,GAAK,IAAMm/H,EAAOrlJ,EAAM,GAAGkmB,WAAW,GAC7DlmB,GAAO,EAEX,IAAI+S,EAAQ,EAAI/S,EAAMqC,EAElB0Q,EAAQ,GAEZsyI,EAAOhvI,OAAOhU,EAAO0Q,EAAOsyI,EAAOhjJ,GAAS,IAAMgjJ,EAAOrlJ,IAG7D,OADAslJ,EAASpvI,QAAQ,IAAMmvI,EAAOrkJ,KAAK,IAAM,KAClC,IAAI8rD,OAAOw4F,EAAStkJ,KAAK,KAAM,KA/C1CsjJ,GAAOI,WAAaa,GAAWJ,GAAaC,IAQ5Cd,GAAOG,mBAAqBQ,GAAgBE,IA0C5C,IAAIK,GAAa,0IACbC,GAE4B,MAAhC7pG,OAAOp1C,UAAUk/I,YAET,SAAUtoI,GAAO,OAAOA,EAAIsoI,YAAY,IAExC,SAAUC,GACN,OAAoC,MAA5BA,EAAEz/H,WAAW,GAAK,OACtBy/H,EAAEz/H,WAAW,GACb,MACA,OAEhB,SAAS0/H,GAAmBD,GACxB,MAAO,OAASA,EAAEpkJ,OAAS,EAAIkkJ,GAAaE,GAAKA,EAAEz/H,WAAW,IACzDze,SAAS,IACTstE,cAAgB,IAEzB,SAASwwE,GAAWv8I,EAASqiB,GACzB,OAAO,SAAU0yB,GACb,OAAOA,EACFxyC,QAAQ8f,GAAI,SAAUjiB,GAAQ,OAAOJ,EAAQI,MAC7CmC,QAAQi6I,GAAYI,KAGjC,IAAIC,GAAgB,IAAI/4F,OAAOi4F,GAAYl+F,OAAS,IAAM2+F,GAAW3+F,OAAQ,KAU7E,SAAS29F,GAAOzmG,GACZ,OAAOA,EAAKxyC,QAAQs6I,GAAeD,IAWvC,SAASrB,GAAWxmG,GAChB,OAAOA,EAAKxyC,QAAQw5I,GAAaa,IAGrC,SAASX,GAAgBxqI,GACrB,OAAO,SAAUsjC,GACb,OAAOA,EAAKxyC,QAAQs6I,IAAe,SAAUF,GAAK,OAAOlrI,EAAIkrI,IAAMC,GAAmBD,OAf9FrB,GAAOE,OAASA,GAYhBF,GAAOC,WAAaA,GAOnB,SAAUuB,GACX58I,OAAOs9C,eAAes/F,EAAS,aAAc,CAAE9/I,OAAO,IACtD8/I,EAAQC,gBAAkBD,EAAQE,kBAAoBF,EAAQG,kBAAoBH,EAAQI,YAAcJ,EAAQK,YAAcL,EAAQtC,iBAAmBsC,EAAQvC,WAAauC,EAAQrC,UAAYqC,EAAQM,YAAcN,EAAQO,YAAcP,EAAQvB,WAAauB,EAAQtB,OAASsB,EAAQrB,mBAAqBqB,EAAQpB,WAAaoB,EAAQnB,UAAYmB,EAAQxB,OAASwB,EAAQQ,aAAeR,EAAQ1tE,YAAS,EACnZ,IAAImuE,EAAWnuE,GACXF,EAAWosE,GAQf,SAASkC,EAASzoG,EAAM1oC,GACpB,QAASA,GAASA,GAAS,EAAIkxI,EAAS9C,UAAY8C,EAAShD,YAAYxlG,GAU7E,SAASuoG,EAAavoG,EAAM1oC,GACxB,QAASA,GAASA,GAAS,EAAIkxI,EAAS9C,UAAY8C,EAAS/C,kBAAkBzlG,GAUnF,SAAS65B,EAAS75B,EAAM1oC,GACpB,QAASA,GAASA,GAAS,EAAI6iE,EAASysE,UAAYzsE,EAASwsE,YAAY3mG,GApB7E+nG,EAAQ1tE,OAASouE,EAWjBV,EAAQQ,aAAeA,EAWvBR,EAAQxB,OAAS1sE,EACjB,IAAI6uE,EAAWnC,GACfp7I,OAAOs9C,eAAes/F,EAAS,YAAa,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO68I,EAAS9B,aACnGz7I,OAAOs9C,eAAes/F,EAAS,aAAc,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO68I,EAAS/B,cACpGx7I,OAAOs9C,eAAes/F,EAAS,qBAAsB,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO68I,EAAShC,sBAC5Gv7I,OAAOs9C,eAAes/F,EAAS,SAAU,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO68I,EAASjC,UAChGt7I,OAAOs9C,eAAes/F,EAAS,aAAc,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO68I,EAASlC,cAEpGr7I,OAAOs9C,eAAes/F,EAAS,cAAe,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO68I,EAAS/B,cACrGx7I,OAAOs9C,eAAes/F,EAAS,cAAe,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO68I,EAAS/B,cACrG,IAAIgC,EAAWtuE,GACflvE,OAAOs9C,eAAes/F,EAAS,YAAa,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASjD,aACnGv6I,OAAOs9C,eAAes/F,EAAS,aAAc,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASnD,cACpGr6I,OAAOs9C,eAAes/F,EAAS,mBAAoB,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASlD,oBAE1Gt6I,OAAOs9C,eAAes/F,EAAS,cAAe,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASnD,cACrGr6I,OAAOs9C,eAAes/F,EAAS,cAAe,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASnD,cACrGr6I,OAAOs9C,eAAes/F,EAAS,oBAAqB,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASlD,oBAC3Gt6I,OAAOs9C,eAAes/F,EAAS,oBAAqB,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASlD,oBAC3Gt6I,OAAOs9C,eAAes/F,EAAS,kBAAmB,CAAE1qF,YAAY,EAAMxxD,IAAK,WAAc,OAAO88I,EAASjD,aAxDzG,CAyDEtrE,IAEF,IAAIwuE,GAAS,wDACTC,GAAgB,GAChBC,GAAmB,QACnBC,GAAY,2CACZC,GAAwB,IAAIj6F,OAAO,OAASg6F,GAAY,IAAMH,GAAQ,MACtEK,GAAa,SACbC,GAAe,IAAIn6F,OAAOk6F,GAAY,KACtCE,GAAe,SAAUt1I,GACzB,OAAIA,EAAEsU,WAAW,KAAO0gI,GACbh1I,EAAEsyI,OAAO,GAEb/rE,GAAIorE,WAAW3xI,IAG1B,SAASu1I,GAAev1I,GACpB,OAAIi1I,GAAiBxhJ,KAAKuM,GACfA,EAAErG,QAAQw7I,GAAuBG,IAErCt1I,EAEX,SAASw1I,GAAaC,GAClB,IACI,OAAOnvE,GAASmvE,GAEpB,MAAOn/I,GACH,OAAOm/I,GAGf,SAASC,GAAkB11I,GACvB,OAAQA,GACJ,IAAK,IACD,MAAO,QACX,IAAK,IACD,MAAO,OACX,IAAK,IACD,MAAO,OACX,IAAK,IACD,MAAO,SACX,QACI,OAAOA,GAGnB,SAAS21I,GAAU31I,GACf,OAAIq1I,GAAa5hJ,KAAKuM,GACXA,EAAErG,QAAQ07I,GAAcK,IAE5B11I,EAEX,SAAS41I,GAAOpqI,EAAKrK,GAEjB,IADA,IAAIs0C,EAAM,GACDppD,EAAI,EAAGA,EAAI8U,EAAO9U,IACvBopD,EAAIxlD,KAAKub,GAEb,OAAOiqC,EAAIrmD,KAAK,IAEpB,SAAS2mE,GAAQvqD,GACb,OAAKA,IAGG,UAAU/X,KAAK+X,GAG3B,IAAIqqI,GAA4B,WAC5B,SAASA,EAAWzrH,GAChB31B,KAAKgT,QAAU2iB,EACf31B,KAAK21B,KAAOA,EACZ31B,KAAK6tD,UAAW,EAoCpB,OAlCAuzF,EAAWjhJ,UAAUkG,KAAO,WACxB,IAAI4F,EAAMjM,KAAKgT,QACX66C,EAAW7tD,KAAK6tD,SACpB,GAAY,OAAR5hD,EACA,OAAO,KAEX,IAAI+lC,EAAYqvG,GAAcp1I,GAsB9B,OArBI4hD,GAAY7b,EACR/lC,EAAI5U,YACJ2I,KAAKgT,QAAU/G,EAAI5U,WACnB2I,KAAK6tD,UAAW,GAIhB7tD,KAAK6tD,UAAW,EAGf5hD,IAAQjM,KAAK21B,KAClB31B,KAAKgT,QAAU,KAEG,OAAb/G,EAAI5F,MACTrG,KAAKgT,QAAU/G,EAAItW,OACnBqK,KAAK6tD,UAAW,IAGhB7tD,KAAKgT,QAAU/G,EAAI5F,KACnBrG,KAAK6tD,UAAW,GAEb,CAAEA,SAAUA,EAAU32D,KAAM+U,IAEvCm1I,EAAWjhJ,UAAU2tD,SAAW,SAAU52D,EAAM22D,GAC5C7tD,KAAKgT,QAAU9b,EACf8I,KAAK6tD,UAAwB,IAAbA,GAEbuzF,EAxCoB,GA2C/B,SAASC,GAAcnqJ,GACnB,OAAQA,EAAK3B,MACT,IAAK,WACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,gBACL,IAAK,eACD,OAAO,EACX,QACI,OAAO,GAGnB,IAAI+rJ,GAAa,EACbC,GAAU,GACd,SAASC,GAAY58I,GACjB,OAAO28I,GAAQ38I,GAEnB,SAAS68I,GAAe78I,UACb28I,GAAQ38I,GAEnB,SAAS88I,KACLH,GAAU,GAEd,IAAII,GAAwB,WACxB,SAASnqI,EAAKpb,EAAU4uD,GACpBhrD,KAAKrK,OAAS,KACdqK,KAAKkuB,KAAO,KACZluB,KAAKqG,KAAO,KAEZrG,KAAK3I,WAAa,KAClB2I,KAAK1I,UAAY,KAEjB0I,KAAKssD,QAAU,KAEXtsD,KAAK4E,GADQ,aAAbxI,GACW,EAGDklJ,KAEdthJ,KAAKzK,KAAO6G,EACZ4D,KAAKgrD,UAAYA,EACjBu2F,GAAQvhJ,KAAK4E,IAAM5E,KAmFvB,OAjFAwX,EAAKrX,UAAUyhJ,YAAc,WACzB,OAAOP,GAAcrhJ,OAEzBwX,EAAKrX,UAAU0hJ,OAAS,WAChB7hJ,KAAKkuB,KACLluB,KAAKkuB,KAAK7nB,KAAOrG,KAAKqG,KAEjBrG,KAAKrK,SACVqK,KAAKrK,OAAO0B,WAAa2I,KAAKqG,MAE9BrG,KAAKqG,KACLrG,KAAKqG,KAAK6nB,KAAOluB,KAAKkuB,KAEjBluB,KAAKrK,SACVqK,KAAKrK,OAAO2B,UAAY0I,KAAKkuB,MAEjCluB,KAAKrK,OAAS,KACdqK,KAAKqG,KAAO,KACZrG,KAAKkuB,KAAO,MAEhB1W,EAAKrX,UAAUlH,YAAc,SAAU/B,GACnC8I,KAAKojC,aAAalsC,GAClB8I,KAAK6hJ,UAETrqI,EAAKrX,UAAU2hJ,YAAc,SAAU5yG,GACnCA,EAAQ2yG,SACR3yG,EAAQ7oC,KAAOrG,KAAKqG,KAChB6oC,EAAQ7oC,OACR6oC,EAAQ7oC,KAAK6nB,KAAOghB,GAExBA,EAAQhhB,KAAOluB,KACfA,KAAKqG,KAAO6oC,EACRlvC,KAAKrK,SACLu5C,EAAQv5C,OAASqK,KAAKrK,OACjBu5C,EAAQ7oC,OACT6oC,EAAQv5C,OAAO2B,UAAY43C,KAIvC13B,EAAKrX,UAAUijC,aAAe,SAAU8L,GACpCA,EAAQ2yG,SACR3yG,EAAQhhB,KAAOluB,KAAKkuB,KAChBghB,EAAQhhB,OACRghB,EAAQhhB,KAAK7nB,KAAO6oC,GAExBA,EAAQ7oC,KAAOrG,KACfA,KAAKkuB,KAAOghB,EACZA,EAAQv5C,OAASqK,KAAKrK,OACjBu5C,EAAQhhB,OACTghB,EAAQv5C,OAAO0B,WAAa63C,IAGpC13B,EAAKrX,UAAUukB,YAAc,SAAUrd,GACnCA,EAAMw6I,SACNx6I,EAAM1R,OAASqK,KACXA,KAAK1I,WACL0I,KAAK1I,UAAU+O,KAAOgB,EACtBA,EAAM6mB,KAAOluB,KAAK1I,UAClB0I,KAAK1I,UAAY+P,IAGjBrH,KAAK3I,WAAagQ,EAClBrH,KAAK1I,UAAY+P,IAGzBmQ,EAAKrX,UAAU4hJ,aAAe,SAAU16I,GACpCA,EAAMw6I,SACNx6I,EAAM1R,OAASqK,KACXA,KAAK3I,YACL2I,KAAK3I,WAAW62B,KAAO7mB,EACvBA,EAAMhB,KAAOrG,KAAK3I,WAClB2I,KAAK3I,WAAagQ,IAGlBrH,KAAK3I,WAAagQ,EAClBrH,KAAK1I,UAAY+P,IAGzBmQ,EAAKrX,UAAUysD,OAAS,WACpB,OAAO,IAAIw0F,GAAWphJ,OAEnBwX,EArGgB,GAuGvBwqI,GAA2B,SAAU3sF,GAErC,SAAS2sF,EAAU5lJ,EAAU4uD,GACzB,IAAI+H,EAAQsC,EAAOtzD,KAAK/B,KAAM5D,EAAU4uD,IAAchrD,KAQtD,OANA+yD,EAAM/lD,MAAO,EACb+lD,EAAMkvF,YAAc,KACpBlvF,EAAMmvF,cAAgB,KACtBnvF,EAAMovF,eAAgB,EACtBpvF,EAAMqvF,iBAAkB,EACxBrvF,EAAMx9D,KAAO6G,EACN22D,EAEX,OAZA8d,GAAUmxE,EAAW3sF,GAYd2sF,EAbmB,CAc5BL,IACEU,GAA0B,SAAUhtF,GAEpC,SAASgtF,IACL,IAAItvF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAEhE,OADA+yD,EAAMtH,SAAW,KACVsH,EAEX,OANA8d,GAAUwxE,EAAUhtF,GAMbgtF,EAPkB,CAQ3BL,IACEM,GAA6B,SAAUjtF,GAEvC,SAASitF,IACL,IAAIvvF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAGhE,OAFA+yD,EAAM/jD,MAAQ,EACd+jD,EAAMmI,YAAc,MACbnI,EAEX,OAPA8d,GAAUyxE,EAAajtF,GAOhBitF,EARqB,CAS9BN,IACEO,GAA+B,SAAUltF,GAEzC,SAASktF,IACL,IAAIxvF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAOhE,OANA+yD,EAAMyvF,UAAW,EACjBzvF,EAAM0J,UAAY,KAClB1J,EAAMyJ,YAAc,EACpBzJ,EAAMwJ,aAAe,EACrBxJ,EAAM5F,KAAO,KACb4F,EAAM2J,YAAc,EACb3J,EAEX,OAXA8d,GAAU0xE,EAAeltF,GAWlBktF,EAZuB,CAahCP,IACES,GAA2B,SAAUptF,GAErC,SAASotF,IACL,IAAI1vF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAEhE,OADA+yD,EAAMmV,QAAU,GACTnV,EAEX,OANA8d,GAAU4xE,EAAWptF,GAMdotF,EAPmB,CAQ5BT,IACEU,GAA+B,SAAUrtF,GAEzC,SAASqtF,IACL,IAAI3vF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAMhE,OALA+yD,EAAM4vF,SAAW,EACjB5vF,EAAM6vF,OAAS,EACf7vF,EAAM9C,YAAc,EACpB8C,EAAM7C,aAAe,EACrB6C,EAAM8vF,SAAU,EACT9vF,EAEX,OAVA8d,GAAU6xE,EAAertF,GAUlBqtF,EAXuB,CAYhCV,IACEc,GAA4B,SAAUztF,GAEtC,SAASytF,IACL,IAAI/vF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAIhE,OAHA+yD,EAAMtwC,MAAQ,GACdswC,EAAMgwF,KAAO,GACbhwF,EAAMiwF,MAAQ,GACPjwF,EAEX,OARA8d,GAAUiyE,EAAYztF,GAQfytF,EAToB,CAU7Bd,IACEiB,GAAiC,SAAU5tF,GAE3C,SAAS4tF,IACL,IAAIlwF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAIhE,OAHA+yD,EAAMiK,aAAe,EACrBjK,EAAMtzD,QAAU,EAChBszD,EAAM5F,KAAO,GACN4F,EAEX,OARA8d,GAAUoyE,EAAiB5tF,GAQpB4tF,EATyB,CAUlCjB,IACEkB,GAA+B,SAAU7tF,GAEzC,SAAS6tF,IACL,IAAInwF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAEhE,OADA+yD,EAAMowF,eAAiB,EAChBpwF,EAEX,OANA8d,GAAUqyE,EAAe7tF,GAMlB6tF,EAPuB,CAQhClB,IACEoB,GAA0B,SAAU/tF,GAEpC,SAAS+tF,IACL,IAAIrwF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAIhE,OAHA+yD,EAAMxG,YAAc,KACpBwG,EAAMtwC,MAAQ,KACdswC,EAAM6I,kBAAmB,EAClB7I,EAEX,OARA8d,GAAUuyE,EAAU/tF,GAQb+tF,EATkB,CAU3BzB,IACE0B,GAA0B,SAAUhuF,GAEpC,SAASguF,IACL,IAAItwF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAEhE,OADA+yD,EAAM8I,UAAY,EACX9I,EAEX,OANA8d,GAAUwyE,EAAUhuF,GAMbguF,EAPkB,CAQ3B1B,IACE2B,GAAkC,SAAUjuF,GAE5C,SAASiuF,IACL,IAAIvwF,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAEhE,OADA+yD,EAAM5F,KAAO,GACN4F,EAEX,OANA8d,GAAUyyE,EAAkBjuF,GAMrBiuF,EAP0B,CAQnC3B,IACF,SAAS4B,GAAahuJ,EAAMy1D,GACxB,OAAQz1D,GACJ,IAAK,UACD,OAAO,IAAI+sJ,GAAY/sJ,EAAMy1D,GACjC,IAAK,OACL,IAAK,OACD,OAAO,IAAIq3F,GAAS9sJ,EAAMy1D,GAC9B,IAAK,OACL,IAAK,QACD,OAAO,IAAIo4F,GAAS7tJ,EAAMy1D,GAC9B,IAAK,YACD,OAAO,IAAIu3F,GAAchtJ,EAAMy1D,GACnC,IAAK,YACD,OAAO,IAAIk4F,GAAc3tJ,EAAMy1D,GACnC,IAAK,QACD,OAAO,IAAIy3F,GAAUltJ,EAAMy1D,GAC/B,IAAK,YACD,OAAO,IAAI03F,GAAcntJ,EAAMy1D,GACnC,IAAK,WACL,IAAK,YACL,IAAK,aACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,cACD,OAAO,IAAIg3F,GAAUzsJ,EAAMy1D,GAC/B,IAAK,OACD,OAAO,IAAIq4F,GAAS9tJ,EAAMy1D,GAC9B,IAAK,SACD,OAAO,IAAI83F,GAAWvtJ,EAAMy1D,GAChC,IAAK,cACD,OAAO,IAAIi4F,GAAgB1tJ,EAAMy1D,GACrC,IAAK,eACD,OAAO,IAAIs4F,GAAiB/tJ,EAAMy1D,GACtC,QACI,OAAO,IAAI22F,GAAOpsJ,EAAMy1D,IAGpC,SAASw4F,GAAYtsJ,GACjB,MAAqB,cAAdA,EAAK3B,KAEhB,SAASkuJ,GAAYvsJ,GACjB,MAAqB,cAAdA,EAAK3B,KAEhB,SAASmuJ,GAAUxsJ,GACf,MAAqB,YAAdA,EAAK3B,KAEhB,SAASyzE,GAAO9xE,GACZ,MAAqB,SAAdA,EAAK3B,KAEhB,SAASouJ,GAAQzsJ,GACb,MAAqB,UAAdA,EAAK3B,KAEhB,SAASquJ,GAAS1sJ,GACd,MAAqB,WAAdA,EAAK3B,KAEhB,SAASsuJ,GAAc3sJ,GACnB,MAAqB,gBAAdA,EAAK3B,KAEhB,SAASuuJ,GAAe5sJ,GACpB,MAAqB,iBAAdA,EAAK3B,KAEhB,SAASgpB,GAAOhT,EAAGy/C,GACf,IAAI9zD,EAAOqsJ,GAAa,OAAQv4F,GAEhC,OADA9zD,EAAKo1D,QAAU/gD,EACRrU,EAGX,IAmBI4lJ,GAnBAiH,GAAU,wBACVC,GAAgB,6BAChBC,GAAgB,yBAChBC,GAAoB,UACpBC,GAAoB,UACpBC,GAAiB,MAAQH,GAAgB,IAAMC,GAAoB,IAAMC,GAAoB,IAC7FE,GAA0B,eAAiBD,GAAiB,IAC5DE,GAAiB,UAAYN,GAAgBK,GAAqB,KAClEE,GAAU,IAAMR,GAAUO,GAAY,WACtCE,GAAW,KAAOT,GAAU,UAC5BU,GAAc,oDACdC,GAAwB,kBACxBC,GAAc,qBACdC,GAAQ,iCACRC,GAAU,MAAQN,GAAU,IAAMC,GAAW,IAAMC,GAAc,IAAMC,GAAwB,IAAMC,GAAc,IAAMC,GAAQ,IACjIE,GAAY,IAAIr+F,OAAO,IAAMo+F,GAAS,KAK1C,GAAItvG,OAAOunG,cACPA,GAAgB,SAAUzoI,GACtB,IACI,OAAOkhC,OAAOunG,cAAczoI,GAEhC,MAAOlP,GACH,GAAIA,aAAaT,WACb,OAAO6wC,OAAOC,aAAa,OAE/B,MAAMrwC,QAIb,CACD,IAAI4/I,GAAuBxvG,OAAOC,aAC9BwvG,GAAU1lJ,KAAK+4B,MACnBykH,GAAgB,WAEZ,IADA,IAAImI,EAAO,GACF10F,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpC00F,EAAK10F,GAAM/xD,UAAU+xD,GAEzB,IAEI20F,EACAC,EAHAC,EAAW,MACXC,EAAY,GAGZxtJ,GAAS,EACTqD,EAAS+pJ,EAAK/pJ,OAClB,IAAKA,EACD,MAAO,GAEX,IAAI2F,EAAS,GACb,QAAShJ,EAAQqD,EAAQ,CACrB,IAAI6hJ,EAAYpiI,OAAOsqI,EAAKptJ,IAC5B,IAAKytJ,SAASvI,IACVA,EAAY,GACZA,EAAY,SACZiI,GAAQjI,KAAeA,EAEvB,OAAOxnG,OAAOC,aAAa,OAE3BunG,GAAa,MAEbsI,EAAU7pJ,KAAKuhJ,IAKfA,GAAa,MACbmI,EAAoC,OAAnBnI,GAAa,IAC9BoI,EAAgBpI,EAAY,KAAS,MACrCsI,EAAU7pJ,KAAK0pJ,EAAeC,KAE9BttJ,EAAQ,IAAMqD,GAAUmqJ,EAAUnqJ,OAASkqJ,KAC3CvkJ,GAAUkkJ,GAAqBphJ,WAAM,EAAQ0hJ,GAC7CA,EAAUnqJ,OAAS,GAG3B,OAAO2F,GAGf,IAAI0kJ,GAAkBzI,GAElB0I,GAAS,yCACTC,GAAO,2BACPC,GAAQ,mCACZ,SAASC,GAA4BnlG,GACjC,IAAIolG,EAAgB,OAAO3nJ,KAAKuiD,GAChC,GAAIolG,EAAe,CAEf,IADA,IAAIl5I,EAAQ,EACH6jD,EAAK,EAAGs1F,EAAWrlG,EAAQ+P,EAAKs1F,EAAS3qJ,OAAQq1D,IAAM,CAC5D,IAAIiQ,EAAKqlF,EAASt1F,GACP,MAAPiQ,EACI9zD,EAAQ,EACRA,EAAQ,EAGRA,GAAS,EAGD,MAAP8zD,IACL9zD,GAAS,GAGjB,GAAIA,EAAQ,EAAG,CACX,IAAIo5I,EAAYxmJ,KAAKqL,KAAK+B,EAAOk5I,EAAc,GAAG1qJ,QAClD,OAAOslD,EAAOyD,UAAU,EAAGzD,EAAOtlD,OAAS4qJ,IAGnD,OAAOtlG,EAEX,SAASulG,GAAmBvlG,GACxB,OAAOA,EAAOt7C,QAAQ,kBAAmB,IAE7C,SAAS8gJ,GAAexlG,GACpB,IAEIh+C,EAFAyjJ,EAAc,IAAIx/F,OAAOi/F,GAAO,KAChC7kJ,EAAS,GAEb,MAAQ2B,EAAIyjJ,EAAYhoJ,KAAKuiD,GAAU,CACnC,IAAI0lG,EAAS1jJ,EAAE,GACV,SAASxD,KAAKknJ,IACfrlJ,EAAOrF,KAAK,CACR0C,KAAMgoJ,EACNjxJ,MAAO,CAACuN,EAAE3K,MAAO2K,EAAE3K,MAAQquJ,EAAOhrJ,OAAS,GAC3C2oD,IAAK,UAAYqiG,IAI7B,OAAOrlJ,EAEX,SAASslJ,GAAa3lG,GAClB,IAEIh+C,EAFA4jJ,EAAgB,IAAI3/F,OAAO,mBAAqB++F,GAASC,GAAM,KAC/D5kJ,EAAS,GAEb,MAAQ2B,EAAI4jJ,EAAcnoJ,KAAKuiD,GAAU,CACrC,IAAI6lG,EAASN,GAAmBJ,GAA4BnjJ,EAAE,KAC1D8jJ,EAAkB,QAAT9jJ,EAAE,GAAe,UAAY,GAC1C3B,EAAOrF,KAAK,CACR0C,KAAMmoJ,EACNpxJ,MAAO,CAACuN,EAAE3K,MAAO2K,EAAE3K,MAAQwuJ,EAAOnrJ,OAAS,GAC3C2oD,IAAK,GAAKyiG,EAASD,IAG3B,OAAOxlJ,EAEX,SAAS0lJ,GAAmB/lG,GACxB,OAAOuwB,GAAcA,GAAc,GAAIo1E,GAAa3lG,IAAUwlG,GAAexlG,IAAS/rC,MAAK,SAAUlM,EAAGC,GAAK,OAAOD,EAAEtT,MAAM,GAAKuT,EAAEvT,MAAM,MAE7I,SAASuxJ,GAAoB55F,EAAQ65F,GAIjC,IAAIzzH,EAH0B,mBAAnByzH,IACPA,EAAiBF,IAGrB,IAAIh9E,EAAU,WACV,IAAI1b,EAAW76B,EAAM66B,SAAU32D,EAAO87B,EAAM97B,KAC5C,GAAI22D,GAA0B,SAAd32D,EAAK3B,MAAwC,SAArB2B,EAAKvB,OAAOJ,KAAiB,CACjE,IAAI+2D,EAAUp1D,EAAKo1D,QACfo6F,EAAYD,EAAen6F,GAC/B,IAAKo6F,IAAcA,EAAUxrJ,OACzB,MAAO,WASX,IAPA,IAAIyrJ,EAAU,EACVr8F,EAAKpzD,EAAK8zD,UAAU,GAAI47F,EAAYt8F,EAAG,GAAIu8F,EAAUv8F,EAAG,GACxDU,EAAY,SAAU23F,EAAUC,GAAU,MAAO,CACjD,CAACgE,EAAWC,EAAUlE,GACtB,CAACiE,EAAWC,EAAUjE,KAEtBkE,EAAW,GACNv2F,EAAK,EAAGw2F,EAAcL,EAAWn2F,EAAKw2F,EAAY7rJ,OAAQq1D,IAAM,CACrE,IAAI9F,EAAKs8F,EAAYx2F,GAAKt7D,EAAQw1D,EAAGx1D,MAAO4uD,EAAM4G,EAAG5G,IAAKuoB,EAAW3hB,EAAGvsD,KACpEjJ,EAAM,GAAK0xJ,GACXG,EAAStrJ,KAAK+iB,GAAO+tC,EAAQrI,UAAU0iG,EAAS1xJ,EAAM,IAAK+1D,EAAU27F,EAAS1xJ,EAAM,GAAK,KAE7F,IAAI+xJ,EAAWzD,GAAa,OAAQv4F,EAAUrnD,WAAM,EAAQ1O,IAC5D+xJ,EAAStiI,YAAYnG,GAAO6tD,EAAUphB,EAAUrnD,WAAM,EAAQ1O,KAC9D+xJ,EAASz6F,YAAc1I,EACvBmjG,EAASprF,kBAAmB,EAC5BkrF,EAAStrJ,KAAKwrJ,GACdL,EAAU1xJ,EAAM,GAAK,EAErB0xJ,EAAUr6F,EAAQpxD,QAClB4rJ,EAAStrJ,KAAK+iB,GAAO+tC,EAAQrI,UAAU0iG,GAAU37F,EAAU27F,EAASr6F,EAAQpxD,OAAS,KAEzF,IAAK,IAAIgqE,EAAK,EAAG+hF,EAAaH,EAAU5hF,EAAK+hF,EAAW/rJ,OAAQgqE,IAAM,CAClE,IAAIh7D,EAAU+8I,EAAW/hF,GACzBhuE,EAAKksC,aAAal5B,GAEtBhT,EAAK2qJ,WAGb,MAAQ7uH,EAAQ45B,EAAOvmD,OACnBkjE,IAIR,SAAS54D,GAAKqwC,GACV,OAAOA,EAAIA,EAAI9lD,OAAS,GAK5B,SAASgsJ,GAAmBnwI,GACxB,OAAOA,EACF5gB,MAAM,EAAG4gB,EAAI7b,OAAS,GACtB+pB,OACA/f,QAAQ,aAAc,KACtB2e,cACA6qD,cAET,SAASy4E,GAAc/yI,EAAKisC,GACxBx9C,OAAOotB,KAAK7b,GAAKrT,SAAQ,SAAUlC,GAC/BwhD,EAASxhD,EAAKuV,EAAIvV,OAG1B,SAASuoJ,GAAKhzI,GAEV,IADA,IAAIizI,EAAY,GACP92F,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpC82F,EAAU92F,EAAK,GAAK/xD,UAAU+xD,GAElC,IAAI+2F,EAAYx2E,GAAS,GAAI18D,GAI7B,OAHAizI,EAAUtmJ,SAAQ,SAAUlC,UACjByoJ,EAAUzoJ,MAEdyoJ,EAEX,SAASC,GAAWnzI,GAChB,OAAQvR,OAAOotB,KAAK7b,GAAKlZ,OAE7B,SAASssJ,GAASpzI,GACdvR,OAAOotB,KAAK7b,GAAKrT,SAAQ,SAAUlC,UACxBuV,EAAIvV,MAInB,IAAI4oJ,GAAY,GACZC,GAAa,GACbC,GAAe,GACfC,GAAa,GACbC,GAAmB,GACnBC,GAAkB,GAClBC,GAAU,IACVC,GAAe,GACfC,GAAS,GACTC,GAAc,GACdC,GAAc,GACdC,GAAe,GACfC,GAAgB,GAChBC,GAAU,GACVC,GAAgB,GAChBC,GAAgB,GAChBC,GAAW,GAEXC,GAAe,OAASjI,GACxBkI,GAAgB,IAAIliG,OAAO,mpDAC3BmiG,GAAc,IAAIniG,OAAO,SAAYiiG,GAAZ,oBAEjBA,GAFiB,qBAIfA,GAAe,qBACzBG,GAA0B,gCAC1BC,GAAc,IAAIriG,OAAO,IAAMg6F,IAC/BsI,GAAe,IAAItiG,OAAO,IAAM65F,GAAQ,KACxC0I,GAAU,KACVC,GAAc,MACdC,GAAa,UACbC,GAAS,OACTC,GAAkB,2IAClBC,GAAa,mDACbC,GAAS,eACTC,GAAmB,uBACnBC,GAA0B,MAC1BC,GAAe,MACfC,GAAiB,MACjBC,GAAqB,cACrBC,GAAc,iCAEdC,GAAS,2BACTC,GAA8B,WAC9B,SAASA,EAAaxsI,GAGlBtd,KAAK+pJ,QAAU,GACf/pJ,KAAKgqJ,WAAa,KAClBhqJ,KAAKiqJ,SAAW,KAChBjqJ,KAAKpJ,IAAM,EACXoJ,KAAKkqJ,aAAe,EACpBlqJ,KAAKmqJ,QAAU,EACfnqJ,KAAKiiJ,YAAc,CAAC,GACpBjiJ,KAAKoqJ,cAAgB,EACrBpqJ,KAAKqqJ,OAAS,GACdrqJ,KAAKsqJ,oBAAsB,GAC3BtqJ,KAAKuqJ,mBAAqB,GAC1BvqJ,KAAKsd,QAAUA,EA27BnB,OAz7BAwsI,EAAa3pJ,UAAU6qD,UAAY,SAAUhvD,EAAOrC,GAChD,IAAIywJ,EAAgBpqJ,KAAKoqJ,cAAgBpqJ,KAAKiiJ,YAAYjiJ,KAAKmqJ,SAC3DK,EAAUxqJ,KAAKkqJ,aAAelqJ,KAAKmqJ,QACnCM,EAAW,CAACD,EAASxuJ,EAAQouJ,GACjC,MAAmB,kBAARzwJ,EACA,CAAC8wJ,EAAU,CAACD,EAAS7wJ,EAAMywJ,IAE/BK,GAEXX,EAAa3pJ,UAAUuqJ,SAAW,WAC9B1qJ,KAAKmqJ,SAAW,EAChBnqJ,KAAKoqJ,eAAiBpqJ,KAAKpJ,KAI/BkzJ,EAAa3pJ,UAAU3H,MAAQ,SAAUwsB,GACrC,IAAIxiB,EAAIwiB,EAAG/mB,KAAK+B,KAAK+pJ,QAAQ5zJ,MAAM6J,KAAKpJ,MACxC,OAAU,OAAN4L,EACO,MAEXxC,KAAKpJ,KAAO4L,EAAE3K,MAAQ2K,EAAE,GAAGtH,OACpBsH,EAAE,KAIbsnJ,EAAa3pJ,UAAUwqJ,KAAO,WAC1B,OAAI3qJ,KAAKpJ,IAAMoJ,KAAK+pJ,QAAQ7uJ,OACjB8E,KAAK+pJ,QAAQlqI,WAAW7f,KAAKpJ,MAEhC,GAGZkzJ,EAAa3pJ,UAAUyqJ,KAAO,WAE1B,OADA5qJ,KAAKxH,MAAM8wJ,KACJ,GAOXQ,EAAa3pJ,UAAU0qJ,eAAiB,SAAUjjI,GAC9C,IAAI6iI,EAAWzqJ,KAAKpJ,IAAM,EACtBk0J,EAAQ9qJ,KAAKxH,MAAMywJ,IACvB,GAAc,OAAV6B,EACA,OAAO,EAEX,IACIt/I,EADAu/I,EAAiB/qJ,KAAKpJ,IAE1B,MAA2C,QAAnC4U,EAAUxL,KAAKxH,MAAMwwJ,KACzB,GAAIx9I,IAAYs/I,EAAO,CACnB,IAAIn5F,EAAW3xD,KAAK+pJ,QAAQ5zJ,MAAM40J,EAAgB/qJ,KAAKpJ,IAAMk0J,EAAM5vJ,QAC/D8vD,EAAYhrD,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,KAC1Co0J,EAAQr5F,EAAS/3D,MAAM,MAC3B,GAAIoxJ,EAAM9vJ,OAAS,EAAG,CAClB,IAAI+vJ,EAAWt6I,GAAKq6I,GACpBhrJ,KAAKmqJ,SAAWa,EAAM9vJ,OAAS,EAC/B8E,KAAKoqJ,gBAAkBpqJ,KAAKpJ,IAAMq0J,EAAS/vJ,OAAS4vJ,EAAM5vJ,QAC1D8vD,EAAU,GAAKhrD,KAAKgrD,UAAUhrD,KAAKpJ,KACnC+6D,EAAWq5F,EAAMrwJ,KAAK,KAE1B,IAAIzD,EAAOqsJ,GAAa,OAAQv4F,GAYhC,OAXI2G,EAASz2D,OAAS,GACS,OAA3By2D,EAASn5D,MAAM,SACA,KAAfm5D,EAAS,IACwB,KAAjCA,EAASA,EAASz2D,OAAS,GAC3BhE,EAAKo1D,QAAUqF,EAASx7D,MAAM,EAAGw7D,EAASz2D,OAAS,GAGnDhE,EAAKo1D,QAAUqF,EAEnBz6D,EAAK2kE,UAAYivF,EAAM5vJ,OACvB0sB,EAAMlD,YAAYxtB,IACX,EAMf,OAFA8I,KAAKpJ,IAAMm0J,EACXnjI,EAAMlD,YAAYnG,GAAOusI,EAAO9qJ,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,IAAM,MAC7D,GAMXkzJ,EAAa3pJ,UAAU+qJ,eAAiB,SAAUtjI,GAC9C,IACI1wB,EADAi0J,EAAOnrJ,KAAK+pJ,QAEhB/pJ,KAAKpJ,KAAO,EACZ,IAAI6zJ,EAAWzqJ,KAAKpJ,IAcpB,OAbIoJ,KAAK2qJ,SAAWlD,IAChBznJ,KAAKpJ,KAAO,EACZM,EAAOqsJ,GAAa,YAAavjJ,KAAKgrD,UAAUhrD,KAAKpJ,IAAM,EAAGoJ,KAAKpJ,MACnEgxB,EAAMlD,YAAYxtB,GAClB8I,KAAK0qJ,YAEA5B,GAAY9pJ,KAAKmsJ,EAAKtN,OAAO79I,KAAKpJ,OACvCgxB,EAAMlD,YAAYnG,GAAO4sI,EAAKtN,OAAO79I,KAAKpJ,KAAMoJ,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,OAC9EoJ,KAAKpJ,KAAO,GAGZgxB,EAAMlD,YAAYnG,GAAO,KAAMve,KAAKgrD,UAAUy/F,EAAUA,MAErD,GAGXX,EAAa3pJ,UAAUirJ,cAAgB,SAAUxjI,GAC7C,IAAIplB,EACAugJ,EACA7rJ,EACAuzJ,EAAWzqJ,KAAKpJ,IAAM,EAC1B,OAAK4L,EAAIxC,KAAKxH,MAAM4wJ,MAChBrG,EAAOvgJ,EAAErM,MAAM,EAAGqM,EAAEtH,OAAS,GAC7BhE,EAAOqsJ,GAAa,OAAQvjJ,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,MAC1DM,EAAKq1D,YAAcw0F,GAAa,UAAYgC,GAC5C7rJ,EAAKurB,MAAQ,GACbvrB,EAAKwtB,YAAYnG,GAAOwkI,EAAM/iJ,KAAKgrD,UAAUy/F,EAAW,EAAGzqJ,KAAKpJ,IAAM,KACtEgxB,EAAMlD,YAAYxtB,IACX,MAENsL,EAAIxC,KAAKxH,MAAM6wJ,OAChBtG,EAAOvgJ,EAAErM,MAAM,EAAGqM,EAAEtH,OAAS,GAC7BhE,EAAOqsJ,GAAa,OAAQvjJ,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,MAC1DM,EAAKq1D,YAAcw0F,GAAagC,GAChC7rJ,EAAKurB,MAAQ,GACbvrB,EAAKwtB,YAAYnG,GAAOwkI,EAAM/iJ,KAAKgrD,UAAUy/F,EAAW,EAAGzqJ,KAAKpJ,IAAM,KACtEgxB,EAAMlD,YAAYxtB,IACX,IAKf4yJ,EAAa3pJ,UAAUkrJ,aAAe,SAAUzjI,GAC5C,IAAI6iI,EAAWzqJ,KAAKpJ,IAAM,EACtB4L,EAAIxC,KAAKxH,MAAMssJ,IACnB,GAAU,OAANtiJ,EACA,OAAO,EAEX,IAAItL,EAAOqsJ,GAAa,aAAcvjJ,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,MAGpE,OAFAM,EAAKo1D,QAAU9pD,EACfolB,EAAMlD,YAAYxtB,IACX,GAMX4yJ,EAAa3pJ,UAAUmrJ,WAAa,SAAUC,GAC1C,IAAIC,EAAY,EACZf,EAAWzqJ,KAAKpJ,IACpB,GAAI20J,IAAOhD,IAAiBgD,IAAO/C,GAC/BgD,IACAxrJ,KAAKpJ,WAGL,MAAOoJ,KAAK2qJ,SAAWY,EACnBC,IACAxrJ,KAAKpJ,MAGb,GAAkB,IAAd40J,GAAoBA,EAAY,IAAMD,IAAOxD,IAAWwD,IAAO9C,IAE/D,OADAzoJ,KAAKpJ,IAAM6zJ,EACJ,KAEX,IAEIgB,EAFAC,EAA0B,IAAbjB,EAAiB,KAAOzqJ,KAAK+pJ,QAAQlM,OAAO4M,EAAW,GACpEkB,EAAU3rJ,KAAK2qJ,OAGfc,GADa,IAAbE,EACY,KAGApG,GAAgBoG,GAEhC,IAMIC,EACAC,EAPAC,EAAoBtC,GAAwBxqJ,KAAKysJ,GACjDM,EAAqBpD,GAAc3pJ,KAAKysJ,GACxCO,EAAqBxC,GAAwBxqJ,KAAK0sJ,GAClDO,EAAsBtD,GAAc3pJ,KAAK0sJ,GACzCQ,GAAgBJ,KAAuBC,GAAsBC,GAAsBC,GACnFE,GAAiBH,KAAwBC,GAAuBH,GAAqBC,GAoBzF,OAjBIR,IAAO5D,IACPiE,EAAUM,KAAkBC,GAAiBF,GAC7CJ,EAAWM,KAAmBD,GAAgBH,IAEzCR,IAAOhD,IAAiBgD,IAAO/C,IACpCoD,EAAUM,IAAiBC,EAC3BN,EAAWM,GAENZ,IAAO9C,IACZmD,GAAWE,EACXD,GAAYG,IAGZJ,EAAUM,EACVL,EAAWM,GAEfnsJ,KAAKpJ,IAAM6zJ,EACJ,CAAEe,UAAWA,EAAWI,QAASA,EAASC,SAAUA,IAG/D/B,EAAa3pJ,UAAUisJ,YAAc,SAAUb,EAAI3jI,GAC/C,IAAIykI,EAAMrsJ,KAAKsrJ,WAAWC,GAC1B,IAAKc,EACD,OAAO,EAEX,IAEI16F,EAFA65F,EAAYa,EAAIb,UAChBf,EAAWzqJ,KAAKpJ,IAAM,EAE1BoJ,KAAKpJ,KAAO40J,EAER75F,EADA45F,IAAOhD,GACI,IAENgD,IAAO/C,GACD,IAGAxoJ,KAAK+pJ,QAAQ5zJ,MAAMs0J,EAAW,EAAGzqJ,KAAKpJ,KAErD,IAAIM,EAAOqnB,GAAOozC,EAAU3xD,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,MAmB1D,OAlBAgxB,EAAMlD,YAAYxtB,IAEbm1J,EAAIT,SAAWS,EAAIR,YACnB7rJ,KAAKsd,QAAQgvI,OAAUf,IAAOhD,IAAiBgD,IAAO/C,MACvDxoJ,KAAKgqJ,WAAa,CACduB,GAAIA,EACJC,UAAWA,EACXe,WAAYf,EACZt0J,KAAMA,EACNs1J,SAAUxsJ,KAAKgqJ,WACf3jJ,KAAM,KACNulJ,QAASS,EAAIT,QACbC,SAAUQ,EAAIR,UAEd7rJ,KAAKgqJ,WAAWwC,WAChBxsJ,KAAKgqJ,WAAWwC,SAASnmJ,KAAOrG,KAAKgqJ,cAGtC,GAEXF,EAAa3pJ,UAAUssJ,gBAAkB,SAAUjgG,GACxB,OAAnBA,EAAMggG,WACNhgG,EAAMggG,SAASnmJ,KAAOmmD,EAAMnmD,MAEb,OAAfmmD,EAAMnmD,KAENrG,KAAKgqJ,WAAax9F,EAAMggG,SAGxBhgG,EAAMnmD,KAAKmmJ,SAAWhgG,EAAMggG,UAGpC1C,EAAa3pJ,UAAUusJ,wBAA0B,SAAUn5H,EAAQtkB,GAC3DskB,EAAOltB,OAAS4I,IAChBskB,EAAOltB,KAAO4I,EACdA,EAAIu9I,SAAWj5H,IAQvBu2H,EAAa3pJ,UAAUwsJ,gBAAkB,SAAUC,GAC/C,IAAItiG,EACAuiG,EACAC,EACAC,EACAC,EAAWC,EACXC,EACAC,GAAW,EACXC,GAAiB9iG,EAAK,GACtBA,EAAGq9F,IAAgB,CAACiF,EAAaA,EAAaA,GAC9CtiG,EAAGo9F,IAAc,CAACkF,EAAaA,EAAaA,GAC5CtiG,EAAGi+F,IAAiB,CAACqE,GACrBtiG,EAAGk+F,IAAiB,CAACoE,GACrBtiG,EAAGy9F,IAAW,CAAC6E,GACftiG,EAAGm+F,IAAY,CAACmE,GAChBtiG,GAEJwiG,EAAS9sJ,KAAKgqJ,WACd,MAAkB,OAAX8C,GAAmBA,EAAON,WAAaI,EAC1CE,EAASA,EAAON,SAGpB,MAAkB,OAAXM,EAAiB,CACpB,IAAIO,EAAWP,EAAOvB,GAClB+B,EAAaD,IAAa1F,IAAgB0F,IAAa3F,GAC3D,GAAKoF,EAAOjB,SAGP,CAEDgB,EAASC,EAAON,SAChBU,GAAc,EACd,MAAkB,OAAXL,GACHA,IAAWD,GACXC,IAAWO,EAAcC,GAAUC,EAAaR,EAAOP,WAAa,EAAI,GAAI,CAM5E,GALAY,EACIG,IACKR,EAAOlB,SAAWiB,EAAOhB,WAC1BiB,EAAOP,WAAa,IAAM,IACzBM,EAAON,WAAaO,EAAOP,YAAc,IAAM,EACpDM,EAAOtB,KAAOuB,EAAOvB,IAAMsB,EAAOjB,UAAYuB,EAAU,CACxDD,GAAc,EACd,MAEJL,EAASA,EAAOL,SAGpB,GADAO,EAAYD,EACRQ,GAAcD,IAAatF,IAAWsF,IAAa5E,GACnD,GAAKyE,GAGA,GAAIL,EAAQ,CAGb,IAAIU,EAAYT,EAAOtB,WAAa,GAAKqB,EAAOrB,WAAa,EAAI,EAAI,EACjEgC,EAAcF,EAAa,EAAI,EACnCN,EAAYH,EAAO31J,KACnB+1J,EAAYH,EAAO51J,KAEnB,IAAIkF,EAAWkxJ,EACK,IAAdC,EACI,OACA,SACJ,SACFF,IAAa5E,KACbrsJ,EAAW,gBAEf,IAAI8N,EAAUq5I,GAAannJ,GACvBqxJ,EAAeT,EAAUhiG,UAAU,GACnC0iG,EAAiBT,EAAUjiG,UAAU,GACzC9gD,EAAQ8gD,UAAY,CAChB,CAACyiG,EAAa,GAAIA,EAAa,GAAKF,EAAY,GAChD,CAACG,EAAe,GAAIA,EAAe,GAAKH,EAAY,IAExDP,EAAUhiG,UAAU,GAAG,IAAMuiG,EAC7BN,EAAUjiG,UAAU,GAAG,IAAMuiG,EAC7BP,EAAU1gG,QAAU0gG,EAAU1gG,QAAQn2D,MAAMo3J,GAC5CN,EAAU3gG,QAAU2gG,EAAU3gG,QAAQn2D,MAAMo3J,GAC5CV,EAAOrB,WAAa+B,EACpBT,EAAOtB,WAAa+B,EAEpB,IAAI72I,EAAMs2I,EAAU3mJ,KAChBA,OAAO,EACX,MAAOqQ,GAAOA,IAAQu2I,EAClB5mJ,EAAOqQ,EAAIrQ,KACXqQ,EAAImrI,SACJ33I,EAAQwa,YAAYhO,GACpBA,EAAMrQ,EAGV,GAAIgnJ,IAAa5E,GAAU,CACvB,IAAItgI,EAAWje,EAAQ7S,WACnBi1D,EAAUnkC,EAASmkC,SAAW,GAC9Ba,EAAOb,EAAQ1yD,MAAM,MAAM,GAC/BsQ,EAAQijD,KAAOA,EACXb,EAAQpxD,QAAUiyD,EAAKjyD,OACvBitB,EAAS05H,UAGT15H,EAAS6iC,UAAU,GAAG,IAAMmC,EAAKjyD,OACjCitB,EAASmkC,QAAUA,EAAQpnD,QAAQioD,EAAO,IAAK,KAgBvD,GAbA6/F,EAAUlL,YAAY53I,GAEtBlK,KAAK0sJ,wBAAwBG,EAAQC,GAGjCD,EAAOrB,WAAagC,IACK,IAArBX,EAAOrB,WACPwB,EAAUnL,SAEd7hJ,KAAKysJ,gBAAgBI,IAIrBC,EAAOtB,WAAagC,EAAa,CACR,IAArBV,EAAOtB,WACPyB,EAAUpL,SAEd,IAAI8L,EAAYb,EAAOzmJ,KACvBrG,KAAKysJ,gBAAgBK,GACrBA,EAASa,SAzEbb,EAASA,EAAOzmJ,UA6EfgnJ,IAAa9E,IAClBuE,EAAO51J,KAAKo1D,QAAU,IAClB4gG,IACAL,EAAO31J,KAAKo1D,QAAU,KAE1BwgG,EAASA,EAAOzmJ,MAEXgnJ,IAAa7E,KAClBsE,EAAO51J,KAAKo1D,QAAU,IAClB4gG,IACAL,EAAO31J,KAAKo1D,QAAU,KAE1BwgG,EAASA,EAAOzmJ,MAEf6mJ,IAEDE,EAAcC,GAAUC,EAAaP,EAAUR,WAAa,EAAI,GAAKQ,EAAUP,SAC1EO,EAAUnB,SAGX5rJ,KAAKysJ,gBAAgBM,SAxH7BD,EAASA,EAAOzmJ,KA8HxB,MAA2B,OAApBrG,KAAKgqJ,YAAuBhqJ,KAAKgqJ,aAAe4C,EACnD5sJ,KAAKysJ,gBAAgBzsJ,KAAKgqJ,aAKlCF,EAAa3pJ,UAAUytJ,eAAiB,WACpC,IAAInrI,EAAQziB,KAAKxH,MAAMowJ,IACvB,OAAc,OAAVnmI,EACO,KAGJq+H,GAAer+H,EAAMs7H,OAAO,EAAGt7H,EAAMvnB,OAAS,KAGzD4uJ,EAAa3pJ,UAAU0tJ,qBAAuB,WAC1C,IAAIxB,EAAMrsJ,KAAKxH,MAAMqwJ,IACrB,GAAY,OAARwD,EAAc,CACd,GAAIrsJ,KAAK2qJ,SAAW3C,GAChB,OAAO,KAGX,IAAI8F,EAAU9tJ,KAAKpJ,IACfm3J,EAAa,EACbzO,OAAI,EACR,OAA8B,KAAtBA,EAAIt/I,KAAK2qJ,QACb,GAAIrL,IAAM4I,IAAeY,GAAY9pJ,KAAKgB,KAAK+pJ,QAAQlM,OAAO79I,KAAKpJ,IAAM,IACrEoJ,KAAKpJ,KAAO,GACS,IAAjBoJ,KAAK2qJ,SACL3qJ,KAAKpJ,KAAO,QAGf,GAAI0oJ,IAAM8I,GACXpoJ,KAAKpJ,KAAO,EACZm3J,GAAc,OAEb,GAAIzO,IAAM+I,GAAe,CAC1B,GAAI0F,EAAa,EACb,MAGA/tJ,KAAKpJ,KAAO,EACZm3J,GAAc,MAGjB,IAAkD,OAA9CxE,GAAiBtrJ,KAAKsnJ,GAAgBjG,IAC3C,MAGAt/I,KAAKpJ,KAAO,EAGpB,OAAIoJ,KAAKpJ,MAAQk3J,GAAWxO,IAAM+I,IAGf,IAAf0F,EAFO,MAKX1B,EAAMrsJ,KAAK+pJ,QAAQhM,OAAO+P,EAAS9tJ,KAAKpJ,IAAMk3J,GACvC/M,GAAaD,GAAeuL,KAEvC,OAAOtL,GAAaD,GAAeuL,EAAItO,OAAO,EAAGsO,EAAInxJ,OAAS,MAGlE4uJ,EAAa3pJ,UAAU6tJ,eAAiB,WACpC,IAAIxrJ,EAAIxC,KAAKxH,MAAMoxJ,IACnB,OAAU,OAANpnJ,GAAcA,EAAEtH,OAAS,KAClB,EAEJsH,EAAEtH,QAGb4uJ,EAAa3pJ,UAAU8tJ,iBAAmB,SAAUrmI,GAChD,IAAI6iI,EAAWzqJ,KAAKpJ,IACpBoJ,KAAKpJ,KAAO,EACZ,IAAIM,EAAOqnB,GAAO,IAAKve,KAAKgrD,UAAUhrD,KAAKpJ,IAAKoJ,KAAKpJ,MAIrD,OAHAgxB,EAAMlD,YAAYxtB,GAElB8I,KAAKkuJ,WAAWh3J,EAAMuzJ,GAAU,IACzB,GAIXX,EAAa3pJ,UAAUguJ,UAAY,SAAUvmI,GACzC,IAAI6iI,EAAWzqJ,KAAKpJ,IAEpB,GADAoJ,KAAKpJ,KAAO,EACRoJ,KAAK2qJ,SAAW9C,GAAkB,CAClC7nJ,KAAKpJ,KAAO,EACZ,IAAIM,EAAOqnB,GAAO,KAAMve,KAAKgrD,UAAUhrD,KAAKpJ,IAAM,EAAGoJ,KAAKpJ,MAC1DgxB,EAAMlD,YAAYxtB,GAElB8I,KAAKkuJ,WAAWh3J,EAAMuzJ,EAAW,GAAG,OAEnC,CACGvzJ,EAAOqnB,GAAO,IAAKve,KAAKgrD,UAAUhrD,KAAKpJ,IAAKoJ,KAAKpJ,MACrDgxB,EAAMlD,YAAYxtB,GAEtB,OAAO,GAMX4yJ,EAAa3pJ,UAAUiuJ,kBAAoB,SAAUxmI,GACjD,IAAIm7H,EAAO,KACPtgI,EAAQ,KACRjX,GAAU,EACdxL,KAAKpJ,KAAO,EACZ,IAAI6zJ,EAAWzqJ,KAAKpJ,IAEhBi2J,EAAS7sJ,KAAKiqJ,SAClB,GAAe,OAAX4C,EAGA,OADAjlI,EAAMlD,YAAYnG,GAAO,IAAKve,KAAKgrD,UAAUy/F,EAAUA,MAChD,EAEX,IAAKoC,EAAOjzI,OAKR,OAHAgO,EAAMlD,YAAYnG,GAAO,IAAKve,KAAKgrD,UAAUy/F,EAAUA,KAEvDzqJ,KAAKquJ,iBACE,EAGX,IAAIC,EAAUzB,EAAO/uF,MAEjBgwF,EAAU9tJ,KAAKpJ,IAEfoJ,KAAK2qJ,SAAWvC,KAChBpoJ,KAAKpJ,MACDoJ,KAAK4qJ,QACoC,QAAxC7H,EAAO/iJ,KAAK6tJ,yBACb7tJ,KAAK4qJ,SAEHrB,GAAiBvqJ,KAAKgB,KAAK+pJ,QAAQlM,OAAO79I,KAAKpJ,IAAM,MAClD6rB,EAAQziB,KAAK4tJ,kBADlB,IAGA5tJ,KAAK4qJ,QACL5qJ,KAAK2qJ,SAAWtC,IAChBroJ,KAAKpJ,KAAO,EACZ4U,GAAU,GAGVxL,KAAKpJ,IAAMk3J,GAGnB,IAAIS,EAAW,GACf,IAAK/iJ,EAAS,CAEV,IAAIgjJ,EAAcxuJ,KAAKpJ,IACnB2K,EAAIvB,KAAKguJ,iBAab,GAZIzsJ,EAAI,EACJgtJ,EAAWvuJ,KAAK+pJ,QAAQ5zJ,MAAMq4J,EAAaA,EAAcjtJ,GAEnDsrJ,EAAO4B,eAGbF,EAAWvuJ,KAAK+pJ,QAAQ5zJ,MAAM02J,EAAOh1J,MAAO4yJ,IAEtC,IAANlpJ,IAEAvB,KAAKpJ,IAAMk3J,GAEXS,EAAU,CACVA,EAAWrH,GAAmBqH,GAE9B,IAAI/mG,EAAOxnD,KAAKqqJ,OAAOkE,GACnB/mG,IACAu7F,EAAOv7F,EAAK+E,YACZ9pC,EAAQ+kC,EAAK/kC,MACbjX,GAAU,IAItB,GAAIA,EAAS,CACT,IAAItU,EAAOqsJ,GAAa+K,EAAU,QAAU,QAC5Cp3J,EAAKq1D,YAAcw2F,EACnB7rJ,EAAKurB,MAAQA,GAAS,GACtBvrB,EAAK8zD,UAAY,CAAC6hG,EAAOpC,SAAUzqJ,KAAKgrD,UAAUhrD,KAAKpJ,MACvD,IAAI8f,EAAMm2I,EAAO31J,KAAKmP,KAClBA,OAAO,EACX,MAAOqQ,EACHrQ,EAAOqQ,EAAIrQ,KACXqQ,EAAImrI,SACJ3qJ,EAAKwtB,YAAYhO,GACjBA,EAAMrQ,EASV,GAPAuhB,EAAMlD,YAAYxtB,GAClB8I,KAAK2sJ,gBAAgBE,EAAO6B,mBAC5B1uJ,KAAKquJ,gBACLxB,EAAO31J,KAAK2qJ,UAIPyM,EAAS,CACVzB,EAAS7sJ,KAAKiqJ,SACd,MAAkB,OAAX4C,EACEA,EAAO/uF,QACR+uF,EAAOjzI,QAAS,GAEpBizI,EAASA,EAAOL,SAMxB,OAHIxsJ,KAAKsd,QAAQqxI,sBACb3uJ,KAAKsqJ,oBAAoB1iI,EAAMhjB,IAAM,CAAE1N,KAAM0wB,EAAO2mI,SAAUA,KAE3D,EAQX,OANAvuJ,KAAKquJ,gBACLruJ,KAAKpJ,IAAM6zJ,EACX7iI,EAAMlD,YAAYnG,GAAO,IAAKve,KAAKgrD,UAAUy/F,EAAUA,KACnDzqJ,KAAKsd,QAAQqxI,sBACb3uJ,KAAKsqJ,oBAAoB1iI,EAAMhjB,IAAM,CAAE1N,KAAM0wB,EAAO2mI,SAAUA,KAE3D,GAEXzE,EAAa3pJ,UAAU+tJ,WAAa,SAAUh3J,EAAMW,EAAOimE,GACjC,OAAlB99D,KAAKiqJ,WACLjqJ,KAAKiqJ,SAASwE,cAAe,GAEjCzuJ,KAAKiqJ,SAAW,CACZ/yJ,KAAMA,EACNuzJ,SAAUzqJ,KAAKgrD,UAAUnzD,GAASimE,EAAQ,EAAI,IAC9C0uF,SAAUxsJ,KAAKiqJ,SACfyE,kBAAmB1uJ,KAAKgqJ,WACxBnyJ,MAAOA,EACPimE,MAAOA,EACPlkD,QAAQ,IAGhBkwI,EAAa3pJ,UAAUkuJ,cAAgB,WAC/BruJ,KAAKiqJ,WACLjqJ,KAAKiqJ,SAAWjqJ,KAAKiqJ,SAASuC,WAItC1C,EAAa3pJ,UAAUyuJ,YAAc,SAAUhnI,GAC3C,IAAIplB,EACAioJ,EAAWzqJ,KAAKpJ,IAAM,EAC1B,SAAK4L,EAAIxC,KAAKxH,MAAMuwJ,OAChBnhI,EAAMlD,YAAYnG,GAAOuzD,GAAIorE,WAAW16I,GAAIxC,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,QACnE,IAMfkzJ,EAAa3pJ,UAAU0uJ,YAAc,SAAUjnI,GAC3C,IAAIplB,EACAioJ,EAAWzqJ,KAAKpJ,IAAM,EAC1B,GAAK4L,EAAIxC,KAAKxH,MAAMqxJ,IAAU,CAC1B,GAAI7pJ,KAAKsd,QAAQgvI,MAAO,CACpB,IAAIwC,EAAMtsJ,EAAE0C,QAAQgkJ,GAAY,KAAUhkJ,QAAQikJ,IAAQ,SAAU4F,GAChE,IAAIC,EAAU,EACVC,EAAU,EAmBd,OAlBIF,EAAM7zJ,OAAS,IAAM,EAErB+zJ,EAAUF,EAAM7zJ,OAAS,EAEpB6zJ,EAAM7zJ,OAAS,IAAM,EAE1B8zJ,EAAUD,EAAM7zJ,OAAS,EAEpB6zJ,EAAM7zJ,OAAS,IAAM,GAE1B8zJ,EAAU,EACVC,GAAWF,EAAM7zJ,OAAS,GAAK,IAI/B8zJ,EAAU,EACVC,GAAWF,EAAM7zJ,OAAS,GAAK,GAE5BimJ,GAAO,IAAU8N,GAAW9N,GAAO,IAAU6N,MAExDpnI,EAAMlD,YAAYnG,GAAOuwI,EAAK9uJ,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,WAE3D,CACD,IAAIM,EAAOqnB,GAAO/b,EAAGxC,KAAKgrD,UAAUy/F,EAAUzqJ,KAAKpJ,MACnDgxB,EAAMlD,YAAYxtB,GAEtB,OAAO,EAEX,OAAO,GAIX4yJ,EAAa3pJ,UAAU+uJ,aAAe,SAAUtnI,GAC5C5nB,KAAKpJ,KAAO,EAEZ,IAAIu4J,EAAQvnI,EAAMtwB,UAClB,GAAI63J,GAAwB,SAAfA,EAAM55J,MAA+D,MAA5C45J,EAAM7iG,QAAQ6iG,EAAM7iG,QAAQpxD,OAAS,GAAY,CACnF,IAAIk0J,EAAwD,MAA5CD,EAAM7iG,QAAQ6iG,EAAM7iG,QAAQpxD,OAAS,GACjDm0J,EAASF,EAAM7iG,QAAQpxD,OAC3Bi0J,EAAM7iG,QAAU6iG,EAAM7iG,QAAQpnD,QAAQukJ,GAAc,IACpD,IAAI6F,EAAgBD,EAASF,EAAM7iG,QAAQpxD,OAC3Ci0J,EAAMnkG,UAAU,GAAG,IAAMskG,EACzB1nI,EAAMlD,YAAY6+H,GAAa6L,EAAY,YAAc,YAAapvJ,KAAKgrD,UAAUhrD,KAAKpJ,IAAM04J,EAAetvJ,KAAKpJ,YAGpHgxB,EAAMlD,YAAY6+H,GAAa,YAAavjJ,KAAKgrD,UAAUhrD,KAAKpJ,IAAKoJ,KAAKpJ,OAI9E,OAFAoJ,KAAK0qJ,WACL1qJ,KAAKxH,MAAMkxJ,KACJ,GAGXI,EAAa3pJ,UAAUovJ,eAAiB,SAAU3nI,EAAOyiI,GACrD,IAAKrqJ,KAAKsd,QAAQqxI,oBACd,OAAO,EAEX3uJ,KAAK+pJ,QAAUniI,EAAMs6H,cACrBliJ,KAAKpJ,IAAM,EACX,IAAI6rB,EAAQ,KACRgoI,EAAWzqJ,KAAKpJ,IAEhB44J,EAAaxvJ,KAAKguJ,iBACtB,GAAmB,IAAfwB,EACA,OAAO,EAEX,IAAIC,EAAWzvJ,KAAK+pJ,QAAQhM,OAAO,EAAGyR,GAEtC,GAAIxvJ,KAAK2qJ,SAAWrC,GAKhB,OADAtoJ,KAAKpJ,IAAM6zJ,EACJ,EAJPzqJ,KAAKpJ,MAOToJ,KAAK4qJ,OACL,IAAI7H,EAAO/iJ,KAAK6tJ,uBAChB,GAAa,OAAT9K,EAEA,OADA/iJ,KAAKpJ,IAAM6zJ,EACJ,EAEX,IAAIiF,EAAc1vJ,KAAKpJ,IACvBoJ,KAAK4qJ,OACD5qJ,KAAKpJ,MAAQ84J,IACbjtI,EAAQziB,KAAK4tJ,kBAEH,OAAVnrI,IACAA,EAAQ,GAERziB,KAAKpJ,IAAM84J,GAGf,IAAIC,GAAY,EAgBhB,GAfuC,OAAnC3vJ,KAAKxH,MAAMmxJ,MACG,KAAVlnI,EACAktI,GAAY,GAMZltI,EAAQ,GAERziB,KAAKpJ,IAAM84J,EAEXC,EAA+C,OAAnC3vJ,KAAKxH,MAAMmxJ,OAG1BgG,EAED,OADA3vJ,KAAKpJ,IAAM6zJ,EACJ,EAEX,IAAImF,EAAc1I,GAAmBuI,GACrC,GAAoB,KAAhBG,EAGA,OADA5vJ,KAAKpJ,IAAM6zJ,EACJ,EAEX,IAAIz/F,EAAYhrD,KAAK6vJ,yBAAyBjoI,GAC9CA,EAAMojC,UAAU,GAAG,GAAKA,EAAU,GAAG,GAAK,EAC1C,IAAI9zD,EAAOqsJ,GAAa,SAAUv4F,GAWlC,OAVA9zD,EAAKurB,MAAQA,EACbvrB,EAAK6rJ,KAAOA,EACZ7rJ,EAAK8rJ,MAAQ4M,EACbhoI,EAAMwb,aAAalsC,GACdmzJ,EAAOuF,GAIR5vJ,KAAKuqJ,mBAAmBrzJ,EAAK0N,IAAM1N,EAHnCmzJ,EAAOuF,GAAeE,GAAkB54J,GAKrC8I,KAAKpJ,IAAM6zJ,GAEtBX,EAAa3pJ,UAAU4vJ,eAAiB,SAAUnjG,GAC9C,IAAI55B,EACAg9H,EAAY,GAChB,MAAQh9H,EAAQ45B,EAAOvmD,OAAS,CAC5B,IAAIwnD,EAAW76B,EAAM66B,SAAU32D,EAAO87B,EAAM97B,KAC5C,GAAI22D,GAA0B,SAAd32D,EAAK3B,KACjBy6J,EAAUx0J,KAAKtE,QAEd,GAAyB,IAArB84J,EAAU90J,OACf80J,EAAY,QAEX,GAAIA,EAAU90J,OAAS,EAAG,CAC3B,IAAI+0J,EAAYD,EAAU,GACtBplI,EAAWolI,EAAUA,EAAU90J,OAAS,GACxC+0J,EAAUjlG,WAAapgC,EAASogC,YAChCilG,EAAUjlG,UAAU,GAAKpgC,EAASogC,UAAU,IAEhDilG,EAAU5pJ,KAAOukB,EAASvkB,KACtB4pJ,EAAU5pJ,OACV4pJ,EAAU5pJ,KAAK6nB,KAAO+hI,GAE1B,IAAK,IAAIr4J,EAAI,EAAGA,EAAIo4J,EAAU90J,OAAQtD,GAAK,EACvCq4J,EAAU3jG,SAAW0jG,EAAUp4J,GAAG00D,QAClC0jG,EAAUp4J,GAAGiqJ,SAEjBmO,EAAY,MAIxBlG,EAAa3pJ,UAAU0vJ,yBAA2B,SAAUjoI,GAKxD,IAJA,IAAIojI,EAAQpjI,EAAMs6H,cAActoJ,MAAM,WAClCs2J,GAAgB,EAChBC,EAAiB,EACjBC,EAAiB,CAAEjxF,KAAM,EAAGqB,GAAI,GAC3B5oE,EAAI,EAAGA,EAAIozJ,EAAM9vJ,OAAQtD,GAAK,EAAG,CACtC,IAAIunE,EAAO6rF,EAAMpzJ,GACjB,GAAI2xJ,GAAiBvqJ,KAAKmgE,GACtB,MAEJ,GAAI,KAAKngE,KAAKmgE,IAA4B,IAAnBgxF,EAAsB,CACzC,GAAID,EACA,MAEJ,IAAIG,EAAalxF,EAAKpvD,QAAQ,OAASovD,EAAKjkE,OAAS,EAAItD,EAAI,EAAIA,EACjEw4J,EAAiB,CAAEjxF,KAAMkxF,EAAY7vF,GAAIwqF,EAAMqF,GAAYn1J,QAC3Dg1J,GAAgB,EAGpB,IAAI1kJ,EAAU2zD,EAAK3mE,MAAM,QAIzB,GAHIgT,IACA2kJ,GAAkB3kJ,EAAQtQ,QAEP,IAAnBi1J,EAAsB,CACtBC,EAAiB,CAAEjxF,KAAMvnE,EAAG4oE,GAAIrB,EAAKjkE,QACrC,OAGR,MAAO,CACH,CAAC0sB,EAAMojC,UAAU,GAAG,GAAIpjC,EAAMojC,UAAU,GAAG,IAC3C,CAACpjC,EAAMojC,UAAU,GAAG,GAAKolG,EAAejxF,KAAMixF,EAAe5vF,MAMrEspF,EAAa3pJ,UAAUmwJ,YAAc,SAAU1oI,GAC3C,IAAI0iC,EACA+hG,GAAM,EACN/M,EAAIt/I,KAAK2qJ,OACb,IAAW,IAAPrL,EACA,OAAO,EAEX,OAAQA,GACJ,KAAKmI,GACD4E,EAAMrsJ,KAAKkvJ,aAAatnI,GACxB,MACJ,KAAKsgI,GACDmE,EAAMrsJ,KAAKkrJ,eAAetjI,GAC1B,MACJ,KAAKggI,GACDyE,EAAMrsJ,KAAK6qJ,eAAejjI,GAC1B,MACJ,KAAK8/H,GACL,KAAKC,GACL,KAAKI,GACL,KAAKU,GACD4D,EAAMrsJ,KAAKosJ,YAAY9M,EAAG13H,GAC1B,MACJ,KAAK2gI,GACL,KAAKC,GACD6D,KAAiC,QAAvB/hG,EAAKtqD,KAAKsd,eAA4B,IAAPgtC,OAAgB,EAASA,EAAGgiG,QAAUtsJ,KAAKosJ,YAAY9M,EAAG13H,GACnG,MACJ,KAAKigI,GACDwE,EAAMrsJ,KAAKiuJ,iBAAiBrmI,GAC5B,MACJ,KAAKqgI,GACDoE,EAAMrsJ,KAAKmuJ,UAAUvmI,GACrB,MACJ,KAAKkgI,GACDuE,EAAMrsJ,KAAKouJ,kBAAkBxmI,GAC7B,MACJ,KAAKogI,GACDqE,EAAMrsJ,KAAKorJ,cAAcxjI,IAAU5nB,KAAKqrJ,aAAazjI,GACrD,MACJ,KAAKugI,GACDkE,EAAMrsJ,KAAK4uJ,YAAYhnI,GACvB,MACJ,QACIykI,EAAMrsJ,KAAK6uJ,YAAYjnI,GACvB,MAMR,OAJKykI,IACDrsJ,KAAKpJ,KAAO,EACZgxB,EAAMlD,YAAYnG,GAAOgnI,GAAgBjG,GAAIt/I,KAAKgrD,UAAUhrD,KAAKpJ,IAAKoJ,KAAKpJ,IAAM,OAE9E,GAIXkzJ,EAAa3pJ,UAAUwY,MAAQ,SAAUiP,GACrC5nB,KAAK+pJ,QAAUniI,EAAMs6H,cAAcj9H,OACnCjlB,KAAKpJ,IAAM,EACXoJ,KAAKgqJ,WAAa,KAClBhqJ,KAAKiqJ,SAAW,KAChBjqJ,KAAKiiJ,YAAcr6H,EAAMq6H,aAAe,CAAC,GACzCjiJ,KAAKmqJ,QAAU,EACfnqJ,KAAKoqJ,cAAgB,EACrBpqJ,KAAKkqJ,aAAetiI,EAAMojC,UAAU,GAAG,GACnC04F,GAAU97H,KACV5nB,KAAKiiJ,YAAY,IAAMr6H,EAAM5Y,MAAQ,GAEzC,MAAOhP,KAAKswJ,YAAY1oI,IACxBA,EAAMs6H,cAAgB,KACtBliJ,KAAK2sJ,gBAAgB,MACrB3sJ,KAAK+vJ,eAAenoI,EAAMglC,UAC1B,IAAItC,EAAKtqD,KAAKsd,QAASizI,EAAoBjmG,EAAGimG,kBAAmBC,EAAelmG,EAAGkmG,aAInF,GAHID,GACA/J,GAAoB5+H,EAAMglC,SAAU2jG,GAEpCC,GAAgB5oI,EAAMvwB,WAAY,CAClC,IAAI2nE,EACApS,EAAShlC,EAAMvwB,WAAWu1D,SAC9B,MAAQoS,EAAUpS,EAAOvmD,OAAS,CAC9B,IAAInP,EAAO8nE,EAAQ9nE,KAAM22D,EAAWmR,EAAQnR,SACxC2iG,EAAat5J,EAAK3B,OAClBi7J,EAAat5J,EAAK3B,MAAM2B,EAAM,CAAE22D,SAAUA,EAAUvwC,QAAStd,KAAKsd,aAK3EwsI,EA18BsB,GA68B7B2G,GAAuB,uBAE3B,SAASC,GAAqBr8I,EAAGuT,GAC7B,GAAIA,EAAMvwB,YAAwC,cAA1BuwB,EAAMvwB,WAAW9B,KAAsB,CAC3D,IAAI0d,EAAI2U,EAAMvwB,WACVmL,EAAIyQ,EAAEivI,cAAc1pJ,MAAMi4J,IAC9B,GAAIjuJ,EAAG,CACH,IAAImuJ,EAAOnuJ,EAAE,GAAGtH,OAChB+X,EAAEivI,cAAgBjvI,EAAEivI,cAAcj+F,UAAU0sG,EAAO,GACnD19I,EAAE+3C,UAAU,GAAG,IAAM2lG,EACrB19I,EAAEgvI,YAAY,IAAM0O,EACpB/oI,EAAM6jC,SAASkS,MAAO,EACtB/1C,EAAM6jC,SAASke,QAAU,OAAO3qE,KAAKwD,EAAE,MAKnD,IAAI2f,GAAQ,CACRyuI,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,SAAUlxG,GAClB,MAAa,cAANA,GAA2B,cAANA,GAEhCmxG,cAAc,GAEdC,GAAc,CACdJ,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,SAAUlxG,GAClB,MAAa,aAANA,GAEXmxG,cAAc,GAEdE,GAAc,CACdL,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,SAAUlxG,GAClB,MAAa,aAANA,GAA0B,kBAANA,GAE/BmxG,cAAc,GAEdG,GAAgB,CAChBN,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,SAAUlxG,GAClB,MAAa,mBAANA,GAEXmxG,cAAc,GAEdI,GAAiB,CACjBP,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,WACR,OAAO,GAEXC,cAAc,GAEdK,GAAW,CACXR,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,SAAUlxG,GAClB,MAAa,cAANA,GAEXmxG,cAAc,GAEd5yF,GAAY,CACZyyF,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,WACR,OAAO,GAEXC,cAAc,GAGdM,GAAc,EACdC,GAAQ,EACRC,GAAgB,GAChBC,GAAa,GACbC,GAAU,GACVC,GAAiB,GACjBC,GAAa,iBACbC,GAAqB,0BAGzB,SAASC,GAAkBjqI,GACvB,IAAIkqI,EAAWlqI,EACf,MAAOkqI,EAAU,CACb,GAAIA,EAAS3P,cACT,OAAO,EAEX,IAAIviG,EAAIkyG,EAASv8J,KACjB,GAAKu8J,EAAS1P,iBAA0B,SAANxiG,GAAsB,SAANA,EAI7C,CACDkyG,EAAS1P,iBAAkB,EAC3B,MALA0P,EAAS1P,iBAAkB,EAC3B0P,EAAWA,EAASx6J,UAO5B,OAAO,EAEX,SAASqzJ,GAAKoH,EAAIn7J,GACd,OAAIA,EAAMm7J,EAAG72J,OACF62J,EAAGlyI,WAAWjpB,IAEjB,EAGZ,SAASo7J,GAAQzmJ,GACb,OAAQomJ,GAAW3yJ,KAAKuM,GAE5B,SAAS0mJ,GAAa3S,GAClB,OAAOA,IAAMmS,IAAWnS,IAAMgS,GAGlC,IAAIY,GAAuB,SACvBC,GAAgB,CAChBvB,SAAU,SAAU9sI,EAAQkuB,GACxB,IAAImtB,EAAOr7C,EAAOq+C,YACd3pE,EAAQ2mE,EAAK3mE,MAAM05J,IACvB,GAAI15J,EAIA,OAFAsrB,EAAOsuI,eAAiB55J,EAAM,GAAG0C,OACjC4oB,EAAO+sI,SAAS7+G,EAAWluB,EAAOuuI,YAC3B,EAGX,IAAIz6J,EAAIo6C,EAAUvyC,OAClB,MAAO7H,EAAI,GAAKq6J,GAAatH,GAAKxrF,EAAMr7C,EAAOrkB,SAC3CqkB,EAAOwuI,cAAc,GAAG,GACxB16J,IAEJ,OAAO,GAEXi5J,SAAU,SAAUx8I,EAAGuT,GACnB,GAA4B,OAAxBA,EAAMs6H,cAAV,CAIA,IAAItsJ,EAAUgyB,EAAMs6H,cAChBqQ,EAAa38J,EAAQma,QAAQ,MAC7ByiJ,EAAY58J,EAAQO,MAAM,EAAGo8J,GAC7BrqJ,EAAOtS,EAAQO,MAAMo8J,EAAa,GAClCE,EAAaD,EAAUh6J,MAAM,cACjCovB,EAAMulC,KAAO2zF,GAAe2R,EAAW,GAAGxtI,QAC1C2C,EAAM0kC,QAAUpkD,EAChB0f,EAAMs6H,cAAgB,OAE1B4O,WAAY,WACR,OAAO,GAEXC,cAAc,GAGd2B,GAAO,CACP9B,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,WACR,OAAO,GAEXC,cAAc,GAEd4B,GAAa,CACb/B,SAAU,WACN,OAAO,GAEXC,SAAU,aACVC,WAAY,SAAUlxG,GAClB,MAAa,SAANA,GAEXmxG,cAAc,GAEdzpG,GAAO,CACPspG,SAAU,WACN,OAAO,GAEXC,SAAU,SAAUx8I,EAAGuT,GACnB,IAAI2hC,EAAO3hC,EAAMvwB,WACjB,MAAOkyD,EAAM,CAET,GAAIsoG,GAAkBtoG,IAASA,EAAKljD,KAAM,CACtCuhB,EAAM6jC,SAASmnG,OAAQ,EACvB,MAIJ,IAAIC,EAAUtpG,EAAKlyD,WACnB,MAAOw7J,EAAS,CACZ,GAAIhB,GAAkBgB,KAAatpG,EAAKljD,MAAQwsJ,EAAQxsJ,MAAO,CAC3DuhB,EAAM6jC,SAASmnG,OAAQ,EACvB,MAEJC,EAAUA,EAAQxsJ,KAEtBkjD,EAAOA,EAAKljD,OAGpByqJ,WAAY,SAAUlxG,GAClB,MAAa,SAANA,GAEXmxG,cAAc,GAEd+B,GAAe,CACflC,SAAU,SAAU9sI,GAChB,IAAIiuI,EAAKjuI,EAAOq+C,YAChB,OAAKr+C,EAAOivI,UAAYpI,GAAKoH,EAAIjuI,EAAOkvI,gBAAkBzB,GAQ/C,GAPPztI,EAAOmvI,sBACPnvI,EAAOwuI,cAAc,GAAG,GACpBL,GAAatH,GAAKoH,EAAIjuI,EAAOrkB,UAC7BqkB,EAAOwuI,cAAc,GAAG,GAMzB,IAEXzB,SAAU,aACVC,WAAY,SAAUlxG,GAClB,MAAa,SAANA,GAEXmxG,cAAc,GAEdxnG,GAAO,CACPqnG,SAAU,SAAU9sI,EAAQkuB,GACxB,GAAIluB,EAAOk2D,MAAO,CACd,GAA6B,OAAzBhoC,EAAU36C,WAEV,OAAO,EAEXysB,EAAOmvI,0BAEN,MAAInvI,EAAOq8C,QAAUnuB,EAAUyZ,SAASynG,aAAelhH,EAAUyZ,SAASiS,SAI3E,OAAO,EAHP55C,EAAOwuI,cAActgH,EAAUyZ,SAASynG,aAAelhH,EAAUyZ,SAASiS,SAAS,GAKvF,OAAO,GAEXmzF,SAAUH,GACVI,WAAY,SAAUlxG,GAClB,MAAa,SAANA,GAEXmxG,cAAc,GAEdlzF,GAAU,CACV+yF,SAAU,WAEN,OAAO,GAEXC,SAAU,aACVC,WAAY,WACR,OAAO,GAEXC,cAAc,GAEdoC,GAAkB,CAClBvC,SAAU,WAEN,OAAO,GAEXC,SAAU,aACVC,WAAY,WACR,OAAO,GAEXC,cAAc,GAEdhzF,GAAY,CACZ6yF,SAAU,SAAU9sI,EAAQkuB,GACxB,IAAI+/G,EAAKjuI,EAAOq+C,YACZhC,EAASr8C,EAAOq8C,OACpB,GAAInuB,EAAUwwG,SAAU,CAEpB,IAAIhqJ,EAAQ2nE,GAAU,GAClB4xF,EAAGlU,OAAO/5H,EAAOkvI,gBAAkBhhH,EAAUyqB,WAC7Cs1F,EAAG57J,MAAM2tB,EAAOkvI,cAAcx6J,MAAMo5J,IACxC,GAAIp5J,GAASA,EAAM,GAAG0C,QAAU82C,EAAUwqB,YAItC,OAFA14C,EAAOsuI,eAAiBtuI,EAAOrkB,OAAS0gE,EAAS3nE,EAAM,GAAG0C,OAC1D4oB,EAAO+sI,SAAS7+G,EAAWluB,EAAOuuI,YAC3B,EAGX,IAAIz6J,EAAIo6C,EAAUuqB,YAClB,MAAO3kE,EAAI,GAAKq6J,GAAatH,GAAKoH,EAAIjuI,EAAOrkB,SACzCqkB,EAAOwuI,cAAc,GAAG,GACxB16J,SAKJ,GAAIuoE,GAAUkxF,GACVvtI,EAAOwuI,cAAcjB,IAAa,OAEjC,KAAIvtI,EAAOk2D,MAIZ,OAAO,EAHPl2D,EAAOmvI,sBAMf,OAAO,GAEXpC,SAAU,SAAUx8I,EAAGuT,GACnB,IAAI0iC,EACJ,GAA4B,OAAxB1iC,EAAMs6H,cAAV,CAGA,GAAIt6H,EAAM46H,SAAU,CAGhB,IAAI5sJ,EAAUgyB,EAAMs6H,cAChBqQ,EAAa38J,EAAQma,QAAQ,MAC7ByiJ,EAAY58J,EAAQO,MAAM,EAAGo8J,GAC7BrqJ,EAAOtS,EAAQO,MAAMo8J,EAAa,GAClCE,EAAaD,EAAUh6J,MAAM,cACjCovB,EAAM80C,YAAc+1F,EAAW,GAAGv3J,OAClC0sB,EAAMulC,KAAO2zF,GAAe2R,EAAW,GAAGxtI,QAC1C2C,EAAM0kC,QAAUpkD,OAIhB0f,EAAM0kC,QAAyC,QAA9BhC,EAAK1iC,EAAMs6H,qBAAkC,IAAP53F,OAAgB,EAASA,EAAGplD,QAAQ,WAAY,MAE3G0iB,EAAMs6H,cAAgB,OAE1B4O,WAAY,WACR,OAAO,GAEXC,cAAc,GAEdqC,GAAc,CACdxC,SAAU,SAAU9sI,EAAQkuB,GACxB,OAAOluB,EAAOk2D,OAAsC,IAA5BhoC,EAAUmxG,eAAmD,IAA5BnxG,EAAUmxG,cAE7D,EADA,GAGV0N,SAAU,SAAUx8I,EAAGuT,GACnB,IAAI0iC,EACJ1iC,EAAM0kC,SAA0C,QAA9BhC,EAAK1iC,EAAMs6H,qBAAkC,IAAP53F,OAAgB,EAASA,EAAGplD,QAAQ,WAAY,MAAQ,KAChH0iB,EAAMs6H,cAAgB,MAE1B4O,WAAY,WACR,OAAO,GAEXC,cAAc,GAEd9mG,GAAY,CACZ2mG,SAAU,SAAU9sI,GAChB,OAAOA,EAAOk2D,MAAQ,EAAe,GAEzC62E,SAAU,SAAU/sI,EAAQ8D,GACxB,GAA4B,OAAxBA,EAAMs6H,cAAV,CAGA,IAAItrJ,EACAy8J,GAAmB,EAEvB,MAAO1I,GAAK/iI,EAAMs6H,cAAe,KAAOwP,KACnC96J,EAAMktB,EAAOwvI,aAAa/D,eAAe3nI,EAAO9D,EAAOumI,SACxDziI,EAAMs6H,cAAgBt6H,EAAMs6H,cAAc/rJ,MAAMS,GAChDy8J,GAAmB,EAEnBA,GAAoBrB,GAAQpqI,EAAMs6H,gBAClCt6H,EAAMi6H,WAGdiP,WAAY,WACR,OAAO,GAEXC,cAAc,GAEdwC,GAASb,GACTc,GAAgBd,GAChBe,GAAgB,CAChB1qI,SAAU4pI,GACVrrG,KAAMA,GACN0W,WAAY80F,GACZvpG,KAAMA,GACNsU,QAASA,GACT1W,cAAegsG,GACfp1F,UAAWA,GACX21F,UAAWN,GACXnpG,UAAWA,GACX9nC,MAAOA,GACPwxI,UAAW3C,GACX4C,UAAW3C,GACXG,SAAUA,GACVjzF,UAAWA,GACX+yF,cAAeA,GACfC,eAAgBA,GAChBoC,OAAQA,GACRt1F,YAAak0F,GACb0B,YAAaL,IAGjB,SAASM,GAAgBl+J,GAIrB,IAHA,IAAI+sJ,EAAW,EACXljJ,EAAS,EACTs0J,EAAQ,GACHn8J,EAAI,EAAGA,EAAIhC,EAAQsF,OAAQtD,GAAK,EACrC,GAAmB,MAAfhC,EAAQgC,IAAiC,OAAnBhC,EAAQgC,EAAI,GAAa,CAC/C,IAAIo8J,EAAOp+J,EAAQquD,UAAU0+F,EAAU/qJ,GACtB,IAAb+qJ,GAAkBrhF,GAAQ0yF,GAC1Bv0J,EAAS7H,EAAI,EAGbm8J,EAAMv4J,KAAKw4J,GAEfrR,EAAW/qJ,EAAI,EAGvB,GAAI+qJ,EAAW/sJ,EAAQsF,OAAQ,CACvB84J,EAAOp+J,EAAQquD,UAAU0+F,EAAU/sJ,EAAQsF,QAC1ComE,GAAQ0yF,IACTD,EAAMv4J,KAAKw4J,GAGnB,MAAO,CAACv0J,EAAQs0J,GAEpB,SAASE,GAAmBC,EAAUviG,EAAU64F,EAASnyF,GAErD,IADA,IAAI07F,EAAQ,GACHxjG,EAAK,EAAG4jG,EAAaxiG,EAAUpB,EAAK4jG,EAAWj5J,OAAQq1D,IAAM,CAClE,IAAI36D,EAAUu+J,EAAW5jG,GACrB6jG,EAAYx+J,EAAQ4C,MAAM,WAC1By3D,EAAcmkG,EAAYA,EAAU,GAAGl5J,OAAS,EAChDg1D,OAAe,EAAQmkG,OAAU,EACrC,GAAIpkG,IAAgBr6D,EAAQsF,OACxB+0D,EAAc,EACdC,EAAe,EACfmkG,EAAU,OAET,CACD,IAAIC,EAAa1+J,EAAQ4C,MAAM,WAC/B03D,EAAeokG,EAAaA,EAAW,GAAGp5J,OAAS,EACnDm5J,EAAUz+J,EAAQO,MAAM85D,EAAar6D,EAAQsF,OAASg1D,GAE1D,IAAIqkG,EAAal8F,EAAQpI,EACrBkO,EAAYolF,GAAa2Q,EAAU,CACnC,CAAC1J,EAASnyF,GACV,CAACmyF,EAASnyF,EAAQziE,EAAQsF,OAAS,KAEvCijE,EAAU+jF,cAAgBmS,EAAQnvJ,QAAQ,QAAS,KACnDi5D,EAAUwkF,SAAWoR,EAAM74J,OAC3BijE,EAAUykF,OAASmR,EAAM74J,OACzBijE,EAAU8jF,YAAc,CAACsS,EAAa,GACtCp2F,EAAUlO,YAAcA,EACxBkO,EAAUjO,aAAeA,EACzB6jG,EAAMv4J,KAAK2iE,GACX9F,GAASziE,EAAQsF,OAAS,EAE9B,OAAO64J,EAEX,SAASS,GAAuBvsF,GAC5B,IAAIwsF,EAAQ,KACR7+J,EAAUqyE,EAASi6E,cACnBwS,EAAU9+J,EAAQ,GAClB++J,EAAS/+J,EAAQA,EAAQsF,OAAS,GAOtC,MANe,MAAXy5J,EACAF,EAAoB,MAAZC,EAAkB,SAAW,QAEpB,MAAZA,IACLD,EAAQ,QAEL,CAAEA,MAAOA,GAEpB,IAAIb,GAAY,SAAU9vI,EAAQkuB,GAC9B,IAAIkwG,EAAgBlwG,EAAUkwG,cAC9B,GAAuB,cAAnBlwG,EAAUz8C,OAAyBuuB,EAAOivI,WAAajvI,EAAOk2D,MAAO,CACrE,IAAI46E,EAAiB1S,EAAchnJ,OAAS,EACxC25J,EAAmB3S,EAAcx5H,YAAY,KAAMksI,EAAiB,GAAK,EACzEE,EAAgB5S,EAAc/rJ,MAAM0+J,EAAkBD,GACtDG,EAAejxI,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,cAC/C1oG,EAAKwpG,GAAgBgB,GAAgBE,EAAe1qG,EAAG,GAAI2qG,EAAc3qG,EAAG,GAC5EG,EAAKqpG,GAAgBiB,GAAeG,EAAczqG,EAAG,GAAI0qG,EAAa1qG,EAAG,GACzE2qG,EAAqB,uBACzB,IAGCH,EAAY/5J,SACRi6J,EAAWj6J,QACZi6J,EAAWp2I,MAAK,SAAUi1I,GAAQ,OAAQoB,EAAmBp2J,KAAKg1J,OAE3C,IAAtBmB,EAAWj6J,QAA8C,IAA9B65J,EAAahlJ,QAAQ,KACjD,OAAO,EAEX,IAAIkyI,EAAcjwG,EAAUiwG,YACxBoT,EAAevxI,EAAOuuI,WAAa,EACnCiD,EAAiB3kJ,GAAKsxI,GAAe,EACrC9/H,EAAQohI,GAAa,QAAS,CAC9B,CAAC8R,EAAcC,GACf,CAACxxI,EAAOuuI,WAAYvuI,EAAOrkB,UAK/B,GAFA0iB,EAAM+lD,QAAUitF,EAAWx+J,KAAI,WAAc,MAAO,CAAG89J,MAAO,SAC9DziH,EAAU8vG,YAAY3/H,GACK,IAAvB8/H,EAAY/mJ,OACZ82C,EAAU6vG,aAET,CACD7vG,EAAUkwG,cAAgBA,EAAc/rJ,MAAM,EAAG0+J,GACjD,IAAIU,EAAuBrT,EAAcx5H,YAAY,KAAMmsI,EAAmB,GAAK,EAC/EW,EAAkBX,EAAmBU,EAAuB,EAChEzxI,EAAOsuI,eAAiBnQ,EAAYA,EAAY/mJ,OAAS,GAAKs6J,EAC9D1xI,EAAO+sI,SAAS7+G,EAAWqjH,EAAe,GAE9CvxI,EAAOwuI,cAAcxuI,EAAOq+C,YAAYjnE,OAAS4oB,EAAOrkB,QAAQ,GAChE,IAAIg2J,EAAclS,GAAa,YAAa,CACxC,CAAC8R,EAAcC,GACf,CAACxxI,EAAOuuI,WAAYvuI,EAAOrkB,UAE/B0iB,EAAMuC,YAAY+wI,GAClB,IAAIC,EAAiBnS,GAAa,WAAY,CAC1C,CAAC8R,EAAcC,GACf,CAACD,EAAcC,EAAiBR,EAAc55J,OAAS,KAEvDy6J,EAAkBpS,GAAa,gBAAiB,CAChD,CAACz/H,EAAOuuI,WAAYvuI,EAAOkvI,aAAe,GAC1C,CAAClvI,EAAOuuI,WAAYvuI,EAAOrkB,UAE/Bg2J,EAAY/wI,YAAYgxI,GACxBD,EAAY/wI,YAAYixI,GACxB1B,GAAmB,YAAagB,EAAaI,EAAcC,EAAiBN,GAAcj0J,SAAQ,SAAUknE,GACxGytF,EAAehxI,YAAYujD,MAE/B,IAAI2tF,EAAiB3B,GAAmB,iBAAkBkB,EAAYrxI,EAAOuuI,WAAYvuI,EAAOkvI,aAAe,EAAIkC,GAMnH,OALAU,EAAe70J,SAAQ,SAAUknE,GAC7B0tF,EAAgBjxI,YAAYujD,MAEhC9lD,EAAM+lD,QAAU0tF,EAAej/J,IAAI69J,IACnC1wI,EAAO+xI,IAAM1zI,EACN,EAEX,OAAO,GAEPwxI,GAAY,SAAU7vI,EAAQkuB,GAC9B,GAAwB,UAAnBA,EAAUz8C,MAAuC,cAAnBy8C,EAAUz8C,OACvCuuB,EAAOk2D,QAA8C,IAArCl2D,EAAOq+C,YAAYpyD,QAAQ,KAC7C,OAAO,EAGX,GADA+T,EAAOwuI,cAAcxuI,EAAOq+C,YAAYjnE,OAAS4oB,EAAOrkB,QAAQ,GAC5DqkB,EAAOk2D,MAAO,CACd,IAAI87E,EAAU9jH,EAMd,MALuB,cAAnBA,EAAUz8C,OACVugK,EAAU9jH,EAAUr8C,OACpBmuB,EAAO+sI,SAAS7+G,EAAWluB,EAAOuuI,WAAa,IAEnDvuI,EAAO+sI,SAASiF,EAAShyI,EAAOuuI,WAAa,GACtC,EAEX,IAAIsB,EAAY3hH,EACO,UAAnBA,EAAUz8C,OACVo+J,EAAY7vI,EAAOiyI,SAAS,YAAajyI,EAAOkvI,cAChDW,EAAUzR,cAAgB,MAE9B,IAAIkP,EAAW7N,GAAa,WAAY,CACpC,CAACz/H,EAAOuuI,WAAYvuI,EAAOkvI,aAAe,GAC1C,CAAClvI,EAAOuuI,WAAYvuI,EAAOq+C,YAAYjnE,UAE3Cy4J,EAAUjvI,YAAY0sI,GACtB,IAAIjvI,EAAQwxI,EAAUh+J,OAClBC,EAAUkuB,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,cAC1C1oG,EAAKwpG,GAAgBl+J,GAAU6J,EAAS6qD,EAAG,GAAI0rG,EAAe1rG,EAAG,GAOrE,OANA2pG,GAAmB,YAAa+B,EAAclyI,EAAOuuI,WAAYvuI,EAAOkvI,aAAe,EAAIvzJ,GAAQsB,SAAQ,SAAUknE,EAAU6H,GACvHA,GAAO3tD,EAAM+lD,QAAQhtE,SACrB+sE,EAAS46E,SAAU,GAEvBuO,EAAS1sI,YAAYujD,MAElB,GAGPguF,GAAgB,wBAChBC,GAAsB,gCACtBj4F,GAAc,SAAUn6C,GACxB,IAAItrB,EACJ,IAAKsrB,EAAOivI,WACPmD,GAAoBl3J,KAAK8kB,EAAOq+C,eAChC3pE,EAAQsrB,EAAOq+C,YAAY3pE,MAAMy9J,KAAiB,CACnD,IAAIj5F,EAAexkE,EAAM,GAAG0C,OAC5B4oB,EAAOqyI,uBACP,IAAInkH,EAAYluB,EAAOiyI,SAAS,cAAejyI,EAAOkvI,cAKtD,OAJAhhH,EAAUgrB,aAAeA,EACzBhrB,EAAUvyC,OAASqkB,EAAOq8C,OAC1Br8C,EAAOmvI,sBACPnvI,EAAOwuI,cAAct1F,GAAc,GAC5B,EAEX,OAAO,GAGPo5F,GAAc,uBACdC,GAAkB,CAClB,IACA,oCACA,QACA,QACA,WACA,eACA,yXACA,IAAI5vG,OAAO,OAAS89F,GAAU,IAAMC,GAAW,SAAU,MAEzD8R,GAAsB,oBACtBC,GAAqB,sBACrBC,GAAkB,+DAClBC,GAAqB,SACrBC,GAAsB,mBAG1B,SAASC,GAAgB7yI,EAAQkuB,GAC7B,IACIx5C,EACAo+J,EAFA1uJ,EAAO4b,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,cAGvCt7G,EAAO,CACPniD,KAAM,SACNq9J,OAAO,EACPiE,WAAY,GACZ76J,MAAO,EACPioE,UAAW,GACXvG,QAAS,EACTw1F,aAAcpvI,EAAOq8C,OAErBxC,MAAM,EACNgM,SAAS,GAEb,GAAI7lD,EAAOq8C,QAAU,EACjB,OAAO,KAEX,GAAK3nE,EAAQ0P,EAAK1P,MAAMi+J,IACpB/+G,EAAKniD,KAAO,SACZmiD,EAAKm/G,WAAar+J,EAAM,GAAG,OAE1B,MAAKA,EAAQ0P,EAAK1P,MAAMk+J,MACL,cAAnB1kH,EAAUz8C,MAAqC,MAAbiD,EAAM,GAMzC,OAAO,KALPk/C,EAAKniD,KAAO,UACZmiD,EAAK17C,MAAQg0D,SAASx3D,EAAM,GAAI,IAChCk/C,EAAKusB,UAAYzrE,EAAM,GAO3B,GADAo+J,EAAQjM,GAAK7mI,EAAOq+C,YAAar+C,EAAOkvI,aAAex6J,EAAM,GAAG0C,SAC/C,IAAX07J,GAAgBA,IAAUtF,IAASsF,IAAUnF,GAC/C,OAAO,KAGX,GAAuB,cAAnBz/G,EAAUz8C,OACTuuB,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,aAAex6J,EAAM,GAAG0C,QAAQ1C,MAAMm5J,IACvE,OAAO,KAGX7tI,EAAOmvI,sBACPnvI,EAAOwuI,cAAc95J,EAAM,GAAG0C,QAAQ,GACtC,IAAI47J,EAAiBhzI,EAAOizI,OACxBC,EAAoBlzI,EAAOrkB,OAC/B,GACIqkB,EAAOwuI,cAAc,GAAG,GACxBsE,EAAQjM,GAAK7mI,EAAOq+C,YAAar+C,EAAOrkB,cACnCqkB,EAAOizI,OAASD,EAAiB,GAAK7E,GAAa2E,IAC5D,IAAIK,GAAyD,IAA7CtM,GAAK7mI,EAAOq+C,YAAar+C,EAAOrkB,QAC5Cy3J,EAAoBpzI,EAAOizI,OAASD,EAYxC,OAXII,GAAqB,GAAKA,EAAoB,GAAKD,GACnDv/G,EAAKgmB,QAAUllE,EAAM,GAAG0C,OAAS,EACjC4oB,EAAOizI,OAASD,EAChBhzI,EAAOrkB,OAASu3J,EACZ/E,GAAatH,GAAK7mI,EAAOq+C,YAAar+C,EAAOrkB,UAC7CqkB,EAAOwuI,cAAc,GAAG,IAI5B56G,EAAKgmB,QAAUllE,EAAM,GAAG0C,OAASg8J,EAE9Bx/G,EAKX,SAASy/G,GAAW1rG,EAAU2rG,GAC1B,OAAQ3rG,EAASl2D,OAAS6hK,EAAS7hK,MAC/Bk2D,EAASwY,YAAcmzF,EAASnzF,WAChCxY,EAASorG,aAAeO,EAASP,WAEzC,SAASQ,GAAwBvzI,EAAQ5sB,GACrC,OAAO4sB,EAAOxG,QAAQg6I,sBAAsC,eAAdpgK,EAAK3B,MAAuC,SAAd2B,EAAK3B,MAErF,IAAIyoE,GAAa,SAAUl6C,GACvB,OAAKA,EAAOivI,UAAYpI,GAAK7mI,EAAOq+C,YAAar+C,EAAOkvI,gBAAkBzB,GAWnE,GAVHztI,EAAOmvI,sBACPnvI,EAAOwuI,cAAc,GAAG,GAEpBL,GAAatH,GAAK7mI,EAAOq+C,YAAar+C,EAAOrkB,UAC7CqkB,EAAOwuI,cAAc,GAAG,GAE5BxuI,EAAOqyI,uBACPryI,EAAOiyI,SAAS,aAAcjyI,EAAOkvI,cAC9B,IAIX5rG,GAAa,SAAUtjC,EAAQkuB,GAC/B,IAAIx5C,EACJ,IAAKsrB,EAAOivI,WAEPsE,GAAwBvzI,EAAQkuB,KAChCx5C,EAAQsrB,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,cAAcx6J,MAAM+9J,KAAsB,CACnFzyI,EAAOmvI,sBACPnvI,EAAOwuI,cAAc95J,EAAM,GAAG0C,QAAQ,GACtC4oB,EAAOqyI,uBACP,IAAIt4F,EAAU/5C,EAAOiyI,SAAS,UAAWjyI,EAAOkvI,cAShD,OARAn1F,EAAQ7uD,MAAQxW,EAAM,GAAGysB,OAAO/pB,OAChC2iE,EAAQ3C,YAAc,MAEtB2C,EAAQqkF,cAAgBp+H,EAAOq+C,YAC1BhsE,MAAM2tB,EAAOrkB,QACbyF,QAAQ,mBAAoB,IAC5BA,QAAQ,kBAAmB,IAChC4e,EAAOwuI,cAAcxuI,EAAOq+C,YAAYjnE,OAAS4oB,EAAOrkB,QACjD,EAEX,OAAO,GAEP83J,GAAkB,SAAUzzI,GAC5B,IAAItrB,EACJ,IAAKsrB,EAAOivI,WACPv6J,EAAQsrB,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,cAAcx6J,MAAM49J,KAAe,CAC5E,IAAI55F,EAAchkE,EAAM,GAAG0C,OAC3B4oB,EAAOqyI,uBACP,IAAInkH,EAAYluB,EAAOiyI,SAAS,YAAajyI,EAAOkvI,cAOpD,OANAhhH,EAAUwwG,UAAW,EACrBxwG,EAAUwqB,YAAcA,EACxBxqB,EAAUyqB,UAAYjkE,EAAM,GAAG,GAC/Bw5C,EAAUuqB,YAAcz4C,EAAOq8C,OAC/Br8C,EAAOmvI,sBACPnvI,EAAOwuI,cAAc91F,GAAa,GAC3B,EAEX,OAAO,GAEPk3F,GAAY,SAAU5vI,EAAQkuB,GAC9B,IAAKluB,EAAOivI,UAAYpI,GAAK7mI,EAAOq+C,YAAar+C,EAAOkvI,gBAAkBxB,GAAY,CAClF,IAAIjmJ,EAAIuY,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,cACpCwE,EAAiB1zI,EAAOxG,QAAQm6I,wBAChCC,OAAY,EAChB,IAAKA,EAAY,EAAGA,GAAa,EAAGA,IAAa,CAC7C,IAAIlsJ,EAAUD,EAAE/S,MAAM69J,GAAgBqB,IACtC,GAAIlsJ,EAAS,CACT,GAAkB,IAAdksJ,EAAiB,CACjB,GAAuB,cAAnB1lH,EAAUz8C,KACV,OAAO,EAEX,GAAIiiK,EAAet8J,OAAS,EAAG,CAC3B,IAAIy8J,EAAmB,IAAIlxG,OAAO,SAAW+wG,EAAe78J,KAAK,KAAO,IAAK,KAC7E,GAAIg9J,EAAiB34J,KAAKwM,EAAQ,IAC9B,OAAO,GAInBsY,EAAOqyI,uBAGP,IAAI3tJ,EAAIsb,EAAOiyI,SAAS,YAAajyI,EAAOrkB,QAE5C,OADA+I,EAAE26I,cAAgBuU,EACX,IAInB,OAAO,GAEPE,GAAgB,SAAU9zI,EAAQkuB,GAClC,IAAIx5C,EACJ,GAAgC,OAA5Bw5C,EAAUkwG,gBACTp+H,EAAOivI,UACW,cAAnB/gH,EAAUz8C,OAET8hK,GAAwBvzI,EAAQkuB,EAAUr8C,UAC1C6C,EAAQsrB,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,cAAcx6J,MAAM89J,KAAuB,CACpFxyI,EAAOqyI,uBAEP,IAAIv/J,OAAM,EACV,MAAO+zJ,GAAK34G,EAAUkwG,cAAe,KAAOwP,KACvC96J,EAAMktB,EAAOwvI,aAAa/D,eAAev9G,EAAWluB,EAAOumI,SAC5Dr4G,EAAUkwG,cAAgBlwG,EAAUkwG,cAAc/rJ,MAAMS,GAE5D,GAAIo7C,EAAUkwG,cAAchnJ,OAAS,EAAG,CACpC,IAAI2iE,EAAU0lF,GAAa,UAAWvxG,EAAUgZ,WAQhD,OAPA6S,EAAQ7uD,MAAwB,MAAhBxW,EAAM,GAAG,GAAa,EAAI,EAC1CqlE,EAAQ3C,YAAc,SACtB2C,EAAQqkF,cAAgBlwG,EAAUkwG,cAClClwG,EAAU8vG,YAAYjkF,GACtB7rB,EAAU6vG,SACV/9H,EAAO+xI,IAAMh4F,EACb/5C,EAAOwuI,cAAcxuI,EAAOq+C,YAAYjnE,OAAS4oB,EAAOrkB,QAAQ,GACzD,EAEX,OAAO,EAEX,OAAO,GAEP0nD,GAAgB,SAAUrjC,GAC1B,OAAKA,EAAOivI,UAAYyD,GAAgBx3J,KAAK8kB,EAAOq+C,YAAYhsE,MAAM2tB,EAAOkvI,gBACzElvI,EAAOqyI,uBACPryI,EAAOiyI,SAAS,gBAAiBjyI,EAAOkvI,cACxClvI,EAAOwuI,cAAcxuI,EAAOq+C,YAAYjnE,OAAS4oB,EAAOrkB,QAAQ,GACzD,GAEJ,GAEPo4J,GAAW,SAAU/zI,EAAQkuB,GAC7B,IAAI0F,EACAogH,EAAW9lH,EACf,OAAMluB,EAAOivI,UAA+B,SAAnB/gH,EAAUz8C,QAC9BmiD,EAAOi/G,GAAgB7yI,EAAQg0I,IAY7B,GAXHh0I,EAAOqyI,uBAEiB,SAApBryI,EAAO+xI,IAAItgK,MAAoB4hK,GAAWW,EAASrsG,SAAU/T,KAC7DogH,EAAWh0I,EAAOiyI,SAAS,OAAQjyI,EAAOkvI,cAC1C8E,EAASrsG,SAAW/T,GAGxBogH,EAAWh0I,EAAOiyI,SAAS,OAAQjyI,EAAOkvI,cAC1C8E,EAASrsG,SAAW/T,EACb,IAKXqgH,GAAoB,SAAUj0I,GAC9B,OAAIA,EAAOivI,UAAgC,cAApBjvI,EAAO+xI,IAAItgK,OAAyBuuB,EAAOk2D,OAE9Dl2D,EAAOwuI,cAAcjB,IAAa,GAClCvtI,EAAOqyI,uBACPryI,EAAOiyI,SAAS,YAAajyI,EAAOrkB,QAC7B,GAEJ,GAEPu4J,GAAc,CACdh6F,GACA5W,GACAmwG,GACA7D,GACAkE,GACAzwG,GACA0wG,GACAE,GACAnE,GACAD,GACA11F,IAIAg6F,GAAgB,sBAChBC,GAAgB,SAAUp0I,EAAQkuB,GAClC,IAAImwB,EAAcr+C,EAAOq+C,YAAakwF,EAAavuI,EAAOuuI,WAAYU,EAAWjvI,EAAOivI,SACxF,GAAmB,IAAfV,IACCU,GACkB,aAAnB/gH,EAAUz8C,MACV0iK,GAAcj5J,KAAKmjE,GAAc,CACjCr+C,EAAOqyI,uBACP,IAAIgC,EAAgBr0I,EAAOiyI,SAAS,cAAejyI,EAAOkvI,cAI1D,OAHAmF,EAAcjW,cAAgB//E,EAC9Br+C,EAAOmvI,sBACPnvI,EAAOwuI,cAAcnwF,EAAYjnE,QAAQ,GAClC,EAEX,OAAO,GAGP24J,GAAc,CACdjD,SAAU,SAAU9sI,EAAQkuB,GACxB,IAAImtB,EAAOr7C,EAAOq+C,YACd3pE,EAAQ2mE,EAAK3mE,MAAMy/J,IACvB,MAAuB,gBAAnBjmH,EAAUz8C,MAA0BiD,GACpCw5C,EAAUkwG,eAAiB/iF,EAC3Br7C,EAAOsuI,eAAiB55J,EAAM,GAAG0C,OACjC4oB,EAAO+sI,SAAS7+G,EAAWluB,EAAOuuI,YAC3B,GAEJ,GAEXxB,SAAU,SAAUx8I,EAAGuT,GACS,OAAxBA,EAAMs6H,gBAGVt6H,EAAM0kC,QAAU1kC,EAAMs6H,cACtBt6H,EAAMs6H,cAAgB,OAE1B4O,WAAY,WACR,OAAO,GAEXC,cAAc,GAGdqH,GAAmB,CACnB,IACA,4BACA,MACA,MACA,IACA,SAEAC,GAAiB,qBACjBC,GAAiB,aACrB,SAASC,KACL,OAAOhV,GAAa,WAAY,CAC5B,CAAC,EAAG,GACJ,CAAC,EAAG,KAGZ,IAAIiV,GAAmB,CACnBlM,OAAO,EACPmM,WAAW,EACXlI,mBAAmB,EACnBkH,wBAAyB,GACzB9I,qBAAqB,EACrB2I,qBAAqB,EACrB9G,aAAc,KACdqD,aAAa,GAEb6E,GAAwB,WACxB,SAASA,EAAOp7I,GACZtd,KAAKsd,QAAUwzD,GAASA,GAAS,GAAI0nF,IAAmBl7I,GACxDtd,KAAK/J,IAAMsiK,KACXv4J,KAAK61J,IAAM71J,KAAK/J,IAChB+J,KAAK24J,OAAS34J,KAAK/J,IACnB+J,KAAKqyJ,WAAa,EAClBryJ,KAAKP,OAAS,EACdO,KAAK+2J,OAAS,EACd/2J,KAAKgzJ,aAAe,EACpBhzJ,KAAK44J,mBAAqB,EAC1B54J,KAAKmgE,OAAS,EACdngE,KAAKmiE,YAAc,GACnBniE,KAAK+yJ,UAAW,EAChB/yJ,KAAKg6E,OAAQ,EACbh6E,KAAK64J,sBAAuB,EAC5B74J,KAAK84J,WAAY,EACjB94J,KAAK+4J,qBAAuB/4J,KAAK/J,IACjC+J,KAAKqqJ,OAAS,GACdrqJ,KAAKsqJ,oBAAsB,GAC3BtqJ,KAAKuqJ,mBAAqB,GAC1BvqJ,KAAKoyJ,eAAiB,EACtBpyJ,KAAKgrJ,MAAQ,GACThrJ,KAAKsd,QAAQu2I,cACbJ,GAAcI,YAAcA,GAC5BmE,GAAYnoJ,QAAQqoJ,KAExBl4J,KAAKszJ,aAAe,IAAIxJ,GAAa9pJ,KAAKsd,SAiV9C,OA/UAo7I,EAAOv4J,UAAUmyJ,cAAgB,SAAU5lJ,EAAOw7D,QAC9B,IAAZA,IAAsBA,GAAU,GACpC,IACI8wF,EAAYC,EACZ3Z,EAFAn9E,EAAcniE,KAAKmiE,YAGvB,MAAOz1D,EAAQ,IAAM4yI,EAAIn9E,EAAYniE,KAAKP,SAC5B,OAAN6/I,GACA0Z,EAAa,EAAKh5J,KAAK+2J,OAAS,EAC5B7uF,GACAloE,KAAK64J,qBAAuBG,EAAatsJ,EACzCusJ,EAAiBD,EAAatsJ,EAAQA,EAAQssJ,EAC9Ch5J,KAAK+2J,QAAUkC,EACfj5J,KAAKP,QAAUO,KAAK64J,qBAAuB,EAAI,EAC/CnsJ,GAASusJ,IAGTj5J,KAAK64J,sBAAuB,EAC5B74J,KAAK+2J,QAAUiC,EACfh5J,KAAKP,QAAU,EACfiN,GAAS,KAIb1M,KAAK64J,sBAAuB,EAC5B74J,KAAKP,QAAU,EACfO,KAAK+2J,QAAU,EACfrqJ,GAAS,IAIrBgsJ,EAAOv4J,UAAU8yJ,oBAAsB,WACnCjzJ,KAAKP,OAASO,KAAKgzJ,aACnBhzJ,KAAK+2J,OAAS/2J,KAAK44J,mBACnB54J,KAAK64J,sBAAuB,GAEhCH,EAAOv4J,UAAU+4J,iBAAmB,WAChC,IAGI5Z,EAHAn9E,EAAcniE,KAAKmiE,YACnBvqE,EAAIoI,KAAKP,OACT05J,EAAOn5J,KAAK+2J,OAEhB,MAAuC,MAA/BzX,EAAIn9E,EAAY07E,OAAOjmJ,IAC3B,GAAU,MAAN0nJ,EACA1nJ,IACAuhK,QAEC,IAAU,OAAN7Z,EAKL,MAJA1nJ,IACAuhK,GAAQ,EAAKA,EAAO,EAM5Bn5J,KAAKg6E,MAAc,OAANslE,GAAoB,OAANA,GAAoB,KAANA,EACzCt/I,KAAKgzJ,aAAep7J,EACpBoI,KAAK44J,mBAAqBO,EAC1Bn5J,KAAKmgE,OAASngE,KAAK44J,mBAAqB54J,KAAK+2J,OAC7C/2J,KAAK+yJ,SAAW/yJ,KAAKmgE,QAAUkxF,IAInCqH,EAAOv4J,UAAUi5J,QAAU,WACvB,GAAIp5J,KAAK64J,qBAAsB,CAC3B74J,KAAKP,QAAU,EAEf,IAAIu5J,EAAa,EAAKh5J,KAAK+2J,OAAS,EACpC/2J,KAAK61J,IAAI3T,eAAiBf,GAAO,IAAK6X,GAEtCh5J,KAAK61J,IAAI5T,YACTjiJ,KAAK61J,IAAI5T,YAAYzmJ,KAAKwE,KAAKP,QAG/BO,KAAK61J,IAAI5T,YAAc,CAACjiJ,KAAKP,QAEjCO,KAAK61J,IAAI3T,eAAiBliJ,KAAKmiE,YAAYhsE,MAAM6J,KAAKP,QAAU,MAKpEi5J,EAAOv4J,UAAU41J,SAAW,SAAUl3I,EAAKpf,GACvC,OAAQg0J,GAAczzJ,KAAK61J,IAAItgK,MAAMu7J,WAAWjyI,GAC5C7e,KAAK6wJ,SAAS7wJ,KAAK61J,IAAK71J,KAAKqyJ,WAAa,GAE9C,IAAIgH,EAAe55J,EAAS,EACxB65J,EAAW/V,GAAa1kI,EAAK,CAC7B,CAAC7e,KAAKqyJ,WAAYgH,GAClB,CAAC,EAAG,KAKR,OAHAC,EAASpX,cAAgB,GACzBliJ,KAAK61J,IAAInxI,YAAY40I,GACrBt5J,KAAK61J,IAAMyD,EACJA,GAGXZ,EAAOv4J,UAAUg2J,qBAAuB,WACpC,IAAKn2J,KAAK84J,UAAW,CAEjB,MAAO94J,KAAK24J,SAAW34J,KAAK+4J,qBAAsB,CAC9C,IAAIh6F,EAAW/+D,KAAK24J,OAAOhjK,OAC3BqK,KAAK6wJ,SAAS7wJ,KAAK24J,OAAQ34J,KAAKqyJ,WAAa,GAC7CryJ,KAAK24J,OAAS55F,EAElB/+D,KAAK84J,WAAY,IAQzBJ,EAAOv4J,UAAU0wJ,SAAW,SAAUjpI,EAAOyqI,GACzC,IAAIx5J,EAAQ+uB,EAAMjyB,OAClBiyB,EAAM5a,MAAO,EACb4a,EAAMojC,UAAU,GAAK,CAACqnG,EAAYryJ,KAAKoyJ,gBACvCqB,GAAc7rI,EAAMryB,MAAMs7J,SAAS7wJ,KAAM4nB,GACzC5nB,KAAK61J,IAAMh9J,GAIf6/J,EAAOv4J,UAAUo5J,eAAiB,SAAU3xI,GACxC,IAAIoL,EACAw9H,EAAexwJ,KAAKsd,QAAQkzI,aAC5B5jG,EAAShlC,EAAMglC,SACnB5sD,KAAKszJ,aAAajJ,OAASrqJ,KAAKqqJ,OAChCrqJ,KAAKszJ,aAAahJ,oBAAsBtqJ,KAAKsqJ,oBAC7CtqJ,KAAKszJ,aAAa/I,mBAAqBvqJ,KAAKuqJ,mBAC5CvqJ,KAAKszJ,aAAah2I,QAAUtd,KAAKsd,QACjC,MAAQ0V,EAAQ45B,EAAOvmD,OAAS,CAC5B,IAAInP,EAAO87B,EAAM97B,KAAM22D,EAAW76B,EAAM66B,SACpCjO,EAAI1oD,EAAK3B,KACTi7J,GAAgBA,EAAa5wG,IAC7B4wG,EAAa5wG,GAAG1oD,EAAM,CAAE22D,SAAUA,EAAUvwC,QAAStd,KAAKsd,UAEzDuwC,GACM,cAANjO,GACS,YAANA,IACO,cAANA,GAAsB1oD,EAAK2rJ,UAChC7iJ,KAAKszJ,aAAa36I,MAAMzhB,KAOpCwhK,EAAOv4J,UAAUq5J,gBAAkB,SAAUzH,GACzC,IAAI//G,EAAYhyC,KAAK/J,IACrB+J,KAAK24J,OAAS34J,KAAK61J,IACnB71J,KAAKP,OAAS,EACdO,KAAK+2J,OAAS,EACd/2J,KAAKg6E,OAAQ,EACbh6E,KAAK64J,sBAAuB,EAC5B74J,KAAKqyJ,YAAc,GAEW,IAA1BN,EAAGhiJ,QAAQ,QACXgiJ,EAAKA,EAAG7sJ,QAAQ,MAAO,MAE3BlF,KAAKmiE,YAAc4vF,EAInB,IACIz6J,EADAy+D,GAAa,EAEjB,OAAQz+D,EAAY06C,EAAU16C,YAAcA,EAAU0V,KAAM,CAGxD,OAFAglC,EAAY16C,EACZ0I,KAAKk5J,mBACGzF,GAAczhH,EAAUz8C,MAAM,YAAYyK,KAAMgyC,IACpD,KAAK,EACD,MACJ,KAAK,EACD+jB,GAAa,EACb,MACJ,KAAK,EAED,YADA/1D,KAAKoyJ,eAAiBL,EAAG72J,QAE7B,QACI,MAAM,IAAI4G,MAAM,uDAExB,IAAKi0D,EAAY,CACb/jB,EAAYA,EAAUr8C,OACtB,OAGRqK,KAAK84J,UAAY9mH,IAAchyC,KAAK24J,OACpC34J,KAAK+4J,qBAAuB/mH,EAC5B,IAAIynH,EAAiC,cAAnBznH,EAAUz8C,MAAwBk+J,GAAczhH,EAAUz8C,MAAMw7J,aAC9E2I,EAAiB1B,GAAY98J,OAGjC,OAAQu+J,EAAa,CAGjB,GAFAz5J,KAAKk5J,mBAEkB,UAAnBlnH,EAAUz8C,MACS,cAAnBy8C,EAAUz8C,MACS,cAAnBy8C,EAAUz8C,OACTyK,KAAK+yJ,WACLsF,GAAer5J,KAAK+yJ,EAAG57J,MAAM6J,KAAKgzJ,eAAgB,CACnDhzJ,KAAKizJ,sBACL,MAEJ,IAAIr7J,EAAI,EACR,MAAOA,EAAI8hK,EAAgB,CACvB,IAAIrN,EAAM2L,GAAYpgK,GAAGoI,KAAMgyC,GAC/B,GAAY,IAARq6G,EAA2B,CAC3Br6G,EAAYhyC,KAAK61J,IACjB,MAEC,GAAY,IAARxJ,EAAsB,CAC3Br6G,EAAYhyC,KAAK61J,IACjB4D,GAAc,EACd,MAGA7hK,IAGR,GAAIA,IAAM8hK,EAAgB,CAEtB15J,KAAKizJ,sBACL,OAMR,GAAKjzJ,KAAK84J,WAAc94J,KAAKg6E,OAA2B,cAAlBh6E,KAAK61J,IAAItgK,KAI1C,CAGDyK,KAAKm2J,uBACDn2J,KAAKg6E,OAAShoC,EAAU16C,YACxB06C,EAAU16C,UAAU6qJ,eAAgB,GAExC,IAAIviG,EAAI5N,EAAUz8C,KAKd4sJ,EAAgBniJ,KAAKg6E,SACb,eAANp6B,GACG4jG,GAAYxxG,IAAcA,EAAUwwG,UAC9B,SAAN5iG,IAAiB5N,EAAU36C,YAAc26C,EAAUgZ,UAAU,GAAG,KAAOhrD,KAAKqyJ,YAEjFsH,EAAO3nH,EACX,MAAO2nH,EACHA,EAAKxX,cAAgBA,EACrBwX,EAAOA,EAAKhkK,OAEZ89J,GAAc7zG,GAAGmxG,cACjB/wJ,KAAKo5J,UAED3V,GAAYzxG,IACZA,EAAUmxG,eAAiB,GAC3BnxG,EAAUmxG,eAAiB,GAC3BiV,GAAiBpmH,EAAUmxG,eAAenkJ,KAAKgB,KAAKmiE,YAAYhsE,MAAM6J,KAAKP,WAC3EO,KAAKoyJ,eAAiBL,EAAG72J,OACzB8E,KAAK6wJ,SAAS7+G,EAAWhyC,KAAKqyJ,cAG7BryJ,KAAKP,OAASsyJ,EAAG72J,SAAW8E,KAAKg6E,QAEtChoC,EAAYhyC,KAAK+1J,SAAS,YAAa/1J,KAAKP,QAC5CO,KAAKizJ,sBACLjzJ,KAAKo5J,gBAvCTp5J,KAAKo5J,UA0CTp5J,KAAKoyJ,eAAiBL,EAAG72J,QAG7Bw9J,EAAOv4J,UAAUwY,MAAQ,SAAUq9C,EAAO6J,GACtC7/D,KAAK/J,IAAMsiK,KACXv4J,KAAK61J,IAAM71J,KAAK/J,IAChB+J,KAAKqyJ,WAAa,EAClBryJ,KAAKoyJ,eAAiB,EACtBpyJ,KAAKP,OAAS,EACdO,KAAK+2J,OAAS,EACd/2J,KAAK+4J,qBAAuB/4J,KAAK/J,IACjC+J,KAAKmiE,YAAc,GACnB,IAAI6oF,EAAQh1F,EAAMp8D,MAAM0+J,IACpB/5J,EAAMysJ,EAAM9vJ,OAChB8E,KAAKgrJ,MAAQnrF,GAAwBmrF,EACjChrJ,KAAKsd,QAAQqxI,qBACb3uJ,KAAK45J,eAEL5jG,EAAMn2C,WAAWm2C,EAAM96D,OAAS,KAAOusJ,KAEvClpJ,GAAO,GAEX,IAAK,IAAI3G,EAAI,EAAGA,EAAI2G,EAAK3G,IACrBoI,KAAKw5J,gBAAgBxO,EAAMpzJ,IAE/B,MAAOoI,KAAK61J,IACR71J,KAAK6wJ,SAAS7wJ,KAAK61J,IAAKt3J,GAG5B,OADAyB,KAAKu5J,eAAev5J,KAAK/J,KAClB+J,KAAK/J,KAEhByiK,EAAOv4J,UAAU05J,kBAAoB,SAAUxH,EAAYrH,GACvDhrJ,KAAK/J,IAAMsiK,KACXv4J,KAAK61J,IAAM71J,KAAK/J,IAChB+J,KAAKqyJ,WAAaA,EAAa,EAC/BryJ,KAAKoyJ,eAAiB,EACtBpyJ,KAAKP,OAAS,EACdO,KAAK+2J,OAAS,EACd/2J,KAAK+4J,qBAAuB/4J,KAAK/J,IACjC+J,KAAKmiE,YAAc,GAEnB,IADA,IAAI5jE,EAAMysJ,EAAM9vJ,OACPtD,EAAI,EAAGA,EAAI2G,EAAK3G,IACrBoI,KAAKw5J,gBAAgBxO,EAAMpzJ,IAE/B,OAAOoI,KAAK/J,KAEhByiK,EAAOv4J,UAAU25J,oBAAsB,SAAU9O,GAC7C,IAAK,IAAIpzJ,EAAI,EAAGA,EAAIozJ,EAAM9vJ,OAAQtD,IAC9BoI,KAAKw5J,gBAAgBxO,EAAMpzJ,KAGnC8gK,EAAOv4J,UAAU45J,mBAAqB,WAClC,MAAO/5J,KAAK61J,IACR71J,KAAK6wJ,SAAS7wJ,KAAK61J,IAAK71J,KAAKqyJ,YAEjCryJ,KAAKu5J,eAAev5J,KAAK/J,MAE7ByiK,EAAOv4J,UAAU65J,WAAa,SAAU3P,EAAQC,EAAqBC,GACjEvqJ,KAAKqqJ,OAASA,EACdrqJ,KAAKsqJ,oBAAsBA,EAC3BtqJ,KAAKuqJ,mBAAqBA,GAE9BmO,EAAOv4J,UAAUy5J,aAAe,WAC5B,CAAC55J,KAAKqqJ,OAAQrqJ,KAAKsqJ,oBAAqBtqJ,KAAKuqJ,oBAAoBxpJ,SAAQ,SAAUpK,GAC/E6wJ,GAAS7wJ,OAGV+hK,EA5WgB,GA+W3B,SAASuB,GAAWC,EAAIC,GACpB,OAAID,EAAG,GAAKC,EAAG,GACJ,EAEPD,EAAG,GAAKC,EAAG,IACH,EAERD,EAAG,GAAKC,EAAG,GACJ,EAEPD,EAAG,GAAKC,EAAG,IACH,EAEL,EAEX,SAASC,GAAmB9vG,EAAI1zD,GAC5B,IAAI+gB,EAAW2yC,EAAG,GAAI6O,EAAS7O,EAAG,GAClC,OAAgC,IAA5B2vG,GAAW9gG,EAAQviE,GACZ,GAEwB,IAA/BqjK,GAAWtiJ,EAAU/gB,IACb,EAEL,EAEX,SAASyjK,GAAgBnjK,EAAMyZ,GAC3B,GAAIzZ,EAAKvB,SAAWgb,EAAKhb,QAAUuB,IAASyZ,EAA5C,CAGA,IAAItK,EAAOnP,EAAKmP,KAChB,MAAOA,GAAQA,IAASsK,EAAM,CAE1B,IADA,IAAI2pJ,EAAOj0J,EAAKA,KACPkqD,EAAK,EAAGjG,EAAK,CAAC,SAAU,OAAQ,QAASiG,EAAKjG,EAAGpvD,OAAQq1D,IAAM,CACpE,IAAIh7D,EAAO+0D,EAAGiG,GACVlqD,EAAK9Q,KACLksJ,GAAep7I,EAAK9Q,GAAMqP,IAC1ByB,EAAK9Q,GAAQ,MAGrB8Q,EAAOi0J,EAEXpjK,EAAKmP,KAAOsK,EAAKtK,KACbsK,EAAKtK,KACLsK,EAAKtK,KAAK6nB,KAAOh3B,EAGjBA,EAAKvB,OAAO2B,UAAYJ,GAGhC,SAASqjK,GAAc5kK,GACnB,IAAIke,EAAQ,GACR2mJ,EAAO7kK,EAAO0B,WAClB,MAAOmjK,EACH3mJ,EAAMrY,KAAKg/J,GACXA,EAAOA,EAAKn0J,KAEhB,OAAOwN,EAEX,SAAS4mJ,GAAkBtlK,EAAQ0e,GAC/B,IAAK,IAAI08C,EAAK,EAAGuO,EAAUjrD,EAAO08C,EAAKuO,EAAQ5jE,OAAQq1D,IAAM,CACzD,IAAIr5D,EAAO4nE,EAAQvO,GACnBp7D,EAAOiuC,aAAalsC,IAG5B,SAASwjK,GAAkB/kK,EAAQke,GAC/B,IAAK,IAAIjc,EAAIic,EAAM3Y,OAAS,EAAGtD,GAAK,EAAGA,GAAK,EACxCjC,EAAOosJ,aAAaluI,EAAMjc,IAGlC,SAAS+iK,GAAsB9yJ,EAAMzH,GACjC,GAAKyH,GAASA,EAAKlS,QAAmB,IAATyK,EAA7B,CAGA,IAEI4yB,EAFA45B,EAAS/kD,EAAKlS,OAAOi3D,SACzBA,EAAOkB,SAASjmD,GAAM,GAEtB,MAAQmrB,EAAQ45B,EAAOvmD,OAAS,CAC5B,IAAInP,EAAO87B,EAAM97B,KAAM22D,EAAW76B,EAAM66B,SACpCA,IACA32D,EAAK8zD,UAAU,GAAG,IAAM5qD,EACxBlJ,EAAK8zD,UAAU,GAAG,IAAM5qD,KAIpC,SAASw6J,GAAoBtwG,EAAI6U,GAC7B,IAAIxnD,EAAW2yC,EAAG,GAAI6O,EAAS7O,EAAG,GAClC,OAAI6O,EAAO,GAAKgG,EACL,EAEPxnD,EAAS,GAAKwnD,GACN,EAEL,EAEX,SAAS07F,GAAoBllK,EAAQwpE,GACjC,IAAIjoE,EAAOvB,EAAO0B,WAClB,MAAOH,EAAM,CACT,IAAI8rF,EAAO43E,GAAoB1jK,EAAK8zD,UAAWmU,GAC/C,GAAa,IAAT6jB,EACA,OAAO9rF,EAEX,IAAc,IAAV8rF,EAEA,OAAO9rF,EAAKg3B,MAAQh3B,EAExBA,EAAOA,EAAKmP,KAEhB,OAAO1Q,EAAO2B,UAElB,SAASwjK,GAAa5jK,GAClB,MAAOA,EAAKI,UACRJ,EAAOA,EAAKI,UAEhB,OAAOJ,EAEX,SAAS6jK,GAAoB7jK,GACzB,MAAOA,EAAKvB,QACa,aAArBuB,EAAKvB,OAAOJ,MACZ2B,EAAKvB,OAAOq1D,UAAU,GAAG,KAAO9zD,EAAK8zD,UAAU,GAAG,GAClD9zD,EAAOA,EAAKvB,OAEhB,OAAOuB,EAEX,SAASorE,GAAoB3sE,EAAQwpE,GACjC,IAAIjoE,EAAOvB,EAAO0B,WACd62B,EAAO,KACX,MAAOh3B,EAAM,CACT,IAAI8rF,EAAO43E,GAAoB1jK,EAAK8zD,UAAWmU,GAC/C,GAAa,IAAT6jB,EAAqB,CACrB,GAAI9rF,EAAK8zD,UAAU,GAAG,KAAOmU,IAASjoE,EAAKG,WACvC,OAAOH,EAEXg3B,EAAOh3B,EACPA,EAAOA,EAAKG,eAEX,KAAc,IAAV2rF,EACL,MAGA90D,EAAOh3B,EACPA,EAAOA,EAAKmP,MAGpB,OAAI6nB,EACO6sI,GAAoBD,GAAa5sI,IAErC,KAEX,SAASwyC,GAAmB/qE,EAAQiB,GAChC,IAAIM,EAAOvB,EACPu4B,EAAO,KACX,MAAOh3B,EAAM,CACT,IAAI8rF,EAAOo3E,GAAmBljK,EAAK8zD,UAAWp0D,GAC9C,GAAa,IAATosF,EAAqB,CACrB,IAAI9rF,EAAKG,WAKL,OAAOH,EAJPg3B,EAAOh3B,EACPA,EAAOA,EAAKG,eAMf,KAAc,IAAV2rF,EACL,OAAO90D,EAEN,IAAIh3B,EAAKmP,KAIV,OAAO6nB,EAHPh3B,EAAOA,EAAKmP,MAMpB,OAAOnP,EAEX,SAAS8jK,GAAap2J,GAClB,OAAO48I,GAAY58I,IAAO,KAE9B,SAASq2J,GAAgBpnG,EAAU73D,EAAOrC,GAEtC,QADY,IAARA,IAAkBA,EAAM,MACxBqC,EAAO,CACP,IAAI4wD,EAAS5wD,EAAM4wD,SACnB,MAAO5wD,GAASA,IAAUrC,EAAK,CAC3Bk6D,EAAS73D,GACT,IAAIqK,EAAOumD,EAAOvmD,OAClB,IAAIA,EAIA,MAHArK,EAAQqK,EAAKnP,OAQ7B,SAASgkK,GAAWt2J,GAChB,IAAI1N,EAAO8jK,GAAap2J,GACxB,IAAK1N,EACD,OAAO,EAEX,MAAOA,GAAsB,aAAdA,EAAK3B,KAAqB,CAErC,IAAK2B,EAAKvB,SAAWuB,EAAKg3B,OAASh3B,EAAKmP,KACpC,OAAO,EAEXnP,EAAOA,EAAKvB,OAEhB,OAAO,EAGX,IAAIwlK,GAAe,aACnB,SAASC,GAAuB13F,GAC5B,IAAI23F,EAAa33F,EAASlrE,MAAM,WAChC,GAAI6iK,IAAeA,EAAW,GAAGngK,QAAU,GAAK,KAAK8D,KAAKq8J,EAAW,KACjE,OAAO,EAEX,IAAIC,EAAcD,EAAa33F,EAASvtE,MAAMklK,EAAWngK,QAAUwoE,EACnE,OAAO+yF,GAAmBz3J,KAAKs8J,IAAgB5E,GAAoB13J,KAAKs8J,GAE5E,SAASC,GAAwB73F,GAC7B,OAAQsuF,GAAQtuF,KAAwC,IAA3BA,EAAS3zD,QAAQ,KAElD,SAAS+/I,GAAkB54J,GACvB,IAAI0N,EAAK1N,EAAK0N,GAAI6d,EAAQvrB,EAAKurB,MAAOuoC,EAAY9zD,EAAK8zD,UAAW+3F,EAAO7rJ,EAAK6rJ,KAC9E,MAAO,CACHn+I,GAAIA,EACJ6d,MAAOA,EACPuoC,UAAWA,EACXwwG,UAAU,EACVjvG,YAAaw2F,GAGrB,IAAI0Y,GAA2B,WAC3B,SAASA,EAAU9pG,EAAUr0C,GACzBtd,KAAKqqJ,OAAS,GACdrqJ,KAAKsqJ,oBAAsB,GAC3BtqJ,KAAKuqJ,mBAAqB,GAC1BvqJ,KAAK2uJ,uBAAqC,OAAZrxI,QAAgC,IAAZA,OAAqB,EAASA,EAAQqxI,qBACxF3uJ,KAAK8jB,OAAS,IAAI40I,GAAOp7I,GACzBtd,KAAK8jB,OAAOk2I,WAAWh6J,KAAKqqJ,OAAQrqJ,KAAKsqJ,oBAAqBtqJ,KAAKuqJ,oBACnEvqJ,KAAK07J,gBAAkB,CAAElwH,OAAQ,IACjCmmB,EAAWA,GAAY,GACvB3xD,KAAK6/D,UAAYlO,EAAS/3D,MAAMuhK,IAChCn7J,KAAK21B,KAAO31B,KAAK8jB,OAAOnL,MAAMg5C,EAAU3xD,KAAK6/D,WAsRjD,OApRA47F,EAAUt7J,UAAUw7J,gBAAkB,SAAUhkJ,EAAUwhD,EAAQyiG,GAC9D,IAAItxG,EACAoO,EAAY/gD,EAAS,GAAIkkJ,EAAWlkJ,EAAS,GAC7CghD,EAAUQ,EAAO,GAAI2iG,EAAS3iG,EAAO,GACrC4iG,EAAWH,EAAQhiK,MAAMuhK,IACzBa,EAAaD,EAAS7gK,OACtBsqE,EAAgBxlE,KAAK6/D,UAAUnH,EAAY,GAC3CujG,EAAcj8J,KAAK6/D,UAAUlH,EAAU,GAC3CojG,EAAS,GAAKv2F,EAAcrvE,MAAM,EAAG0lK,EAAW,GAAKE,EAAS,GAC9DA,EAASC,EAAa,GAAKD,EAASC,EAAa,GAAKC,EAAY9lK,MAAM2lK,EAAS,GACjF,IAAII,EAAiBvjG,EAAUD,EAAY,EAE3C,OADCpO,EAAKtqD,KAAK6/D,WAAW7vD,OAAOrM,MAAM2mD,EAAIymB,GAAc,CAACrY,EAAY,EAAGwjG,GAAiBH,IAC/EC,EAAaE,GAExBT,EAAUt7J,UAAUg8J,oBAAsB,WACtC,GAA8B,IAA1Bn8J,KAAK6/D,UAAU3kE,QAAsC,KAAtB8E,KAAK6/D,UAAU,GAM9C,OALA7/D,KAAK21B,KAAKwsH,eAAgB,OAC1BniJ,KAAK21B,KAAKq1B,UAAY,CAClB,CAAC,EAAG,GACJ,CAAC,EAAG,KAIRhrD,KAAK21B,KAAKr+B,YACV0I,KAAK21B,KAAKwsH,cAAgBniJ,KAAK21B,KAAKr+B,UAAU6qJ,eAElD,IAAItiF,EAAY7/D,KAAK6/D,UACjBiQ,EAAMjQ,EAAU3kE,OAAS,EAC7B,MAA0B,KAAnB2kE,EAAUiQ,GACbA,GAAO,EAEPjQ,EAAU3kE,OAAS,EAAI40E,IACvBA,GAAO,GAEX9vE,KAAK21B,KAAKq1B,UAAU,GAAK,CAAC8kB,EAAM,EAAGjQ,EAAUiQ,GAAK50E,SAEtDugK,EAAUt7J,UAAUi8J,kBAAoB,SAAUhjG,EAAWC,EAASytF,GAC7D1tF,GAWDqhG,GAAkBrhG,EAAW0tF,GAC7BuT,GAAgBjhG,EAAWC,GAC3B,CAACD,EAAUx0D,GAAIy0D,EAAQz0D,IAAI7D,SAAQ,SAAU6D,GAAM,OAAO68I,GAAe78I,MACzEw0D,EAAUyoF,UAbNxoF,GACAohG,GAAkBphG,EAASytF,GAC3BrF,GAAepoF,EAAQz0D,IACvBy0D,EAAQwoF,UAGR6Y,GAAkB16J,KAAK21B,KAAMmxH,IAUzC2U,EAAUt7J,UAAUk8J,aAAe,SAAU1kJ,EAAUwhD,GACnD,IAAIC,EAAYyhG,GAAoB76J,KAAK21B,KAAMhe,EAAS,IACpD0hD,EAAUwhG,GAAoB76J,KAAK21B,KAAMwjC,EAAO,IAKpD,OAHIE,GAAWA,EAAQhzD,MAAQ8yD,EAAO,GAAK,IAAME,EAAQhzD,KAAK2kD,UAAU,GAAG,KACvEqO,EAAUA,EAAQhzD,MAEf,CAAC+yD,EAAWC,IAEvBoiG,EAAUt7J,UAAUm8J,QAAU,SAAUC,EAAWC,GAC/Cx8J,KAAK07J,gBAAgBa,GAAWx7J,SAAQ,SAAUmyC,GAC9CA,EAAQspH,OAGhBf,EAAUt7J,UAAUs8J,cAAgB,SAAUt9F,GAC1C,MAAgC,KAAzBn/D,KAAK6/D,UAAUV,GAClBA,GAAQ,EAEZ,OAAOA,GAEXs8F,EAAUt7J,UAAUs9B,WAAa,SAAU27B,EAAWC,EAASX,EAAWC,GAElES,GACAA,EAAUlrC,OACR86C,GAAO5P,EAAUlrC,OAASktI,GAAuBp7J,KAAK6/D,UAAUnH,EAAY,KACzEirF,GAAQvqF,EAAUlrC,OAASqtI,GAAwBv7J,KAAK6/D,UAAUnH,EAAY,OACnFU,EAAYA,EAAUlrC,KACtBwqC,EAAYU,EAAUpO,UAAU,GAAG,IAEvC,IAAI0xG,EAAc18J,KAAK6/D,UAAU1pE,MAAMuiE,EAAY,EAAGC,GAClDhjC,EAAO31B,KAAK8jB,OAAO+1I,kBAAkBnhG,EAAWgkG,GAEhD7yH,EAAWwvB,EAAUA,EAAQhzD,KAAOrG,KAAK21B,KAAKt+B,WAC9CC,EAAYq+B,EAAKr+B,UACjBqlK,EAA6BrlK,GAAaksJ,GAAYlsJ,IAAcA,EAAU0V,KAC9E4vJ,EAA+BtlK,GAAausJ,GAAcvsJ,IAAcA,EAAU0V,KAClF6vJ,EAAkBvlK,GAAa0xE,GAAO1xE,GAC1C,OAASqlK,GAA8BC,IAAiC/yH,GACnEgzH,GAAmBhzH,IAA+B,SAAlBA,EAASt0C,MAAmBs0C,EAASmhB,UAAU,GAAG,IAAM,GAAK,CAC9F,IAAI8xG,EAAa98J,KAAKy8J,cAAc5yH,EAASmhB,UAAU,GAAG,IAC1DhrD,KAAK8jB,OAAOg2I,oBAAoB95J,KAAK6/D,UAAU1pE,MAAMwiE,EAASmkG,IACzD1jG,IACDA,EAAYC,GAEhBA,EAAUxvB,EACV8uB,EAAUmkG,EACVjzH,EAAWA,EAASxjC,KAExBrG,KAAK8jB,OAAOi2I,qBACZ,IAAIjT,EAAWyT,GAAc5kI,GAC7B,MAAO,CAAEmxH,SAAUA,EAAUiW,aAAc3jG,EAAW4jG,WAAY3jG,IAEtEoiG,EAAUt7J,UAAU88J,oBAAsB,SAAUF,EAAcC,GAC9D,OAAKD,GACAA,GAAgBnZ,GAASmZ,IACzBC,GAAcpZ,GAASoZ,GACjB,KAEJ,CACHp4J,GAAI,CAACm4J,EAAan4J,GAAIo4J,EAAWp4J,IACjCu6D,KAAM,CAAC49F,EAAa/xG,UAAU,GAAG,GAAK,EAAGgyG,EAAWhyG,UAAU,GAAG,GAAK,KAG9EywG,EAAUt7J,UAAU+8J,kBAAoB,SAAUH,EAAcC,GAC5D,IAAIjqG,EAAQ/yD,KACZ,IAAKunJ,GAAWvnJ,KAAKqqJ,QAAS,CAC1B,IAAI8S,EAAc,SAAUjmK,GACxB,GAAI0sJ,GAAS1sJ,GAAO,CAChB,IAAIkmK,EAAcrqG,EAAMs3F,OAAOnzJ,EAAK8rJ,OAChCoa,GAAelmK,EAAK0N,KAAOw4J,EAAYx4J,KACvCw4J,EAAY5B,UAAW,KAI/BuB,GACA9B,GAAgBkC,EAAaJ,EAAapnK,OAAQqnK,GAElDA,GACA/B,GAAgBkC,EAAaH,KAIzCvB,EAAUt7J,UAAUk9J,0BAA4B,SAAUxpJ,GACtD,IAAIk/C,EAAQ/yD,KACZ,IAAKunJ,GAAWvnJ,KAAKqqJ,QAAS,CAC1B,IAAIiT,EAAgB,SAAUpmK,GAC1B,GAAI0sJ,GAAS1sJ,GAAO,CAChB,IAAI8rJ,EAAQ9rJ,EAAK8rJ,MACboa,EAAcrqG,EAAMs3F,OAAOrH,GAC1Boa,IAAeA,EAAY5B,WAC5BzoG,EAAMs3F,OAAOrH,GAAS8M,GAAkB54J,MAIpD2c,EAAM9S,SAAQ,SAAU7J,GACpB+jK,GAAgBqC,EAAepmK,QAI3CukK,EAAUt7J,UAAUo9J,2BAA6B,WAC7C,IAAIxqG,EAAQ/yD,KACPunJ,GAAWvnJ,KAAKuqJ,qBACjBpD,GAAcnnJ,KAAKuqJ,oBAAoB,SAAUl2I,EAAGmpJ,GAChD,IAAIxa,EAAQwa,EAAUxa,MAAOh4F,EAAYwyG,EAAUxyG,UAC/CoyG,EAAcrqG,EAAMs3F,OAAOrH,KAC1Boa,GACDA,EAAY5B,UACZ4B,EAAYpyG,UAAU,GAAG,GAAKA,EAAU,GAAG,MAC3C+H,EAAMs3F,OAAOrH,GAAS8M,GAAkB0N,QAKxD/B,EAAUt7J,UAAUs9J,mBAAqB,SAAU/kG,EAAWC,EAASS,EAAWC,EAASqkG,GACvF,GAAI19J,KAAK2uJ,sBAAwBpH,GAAWvnJ,KAAKqqJ,QAAS,CACtD,IAAIsT,EAAW9C,GAAoB76J,KAAK21B,KAAM+iC,EAAY,GACtD7uB,EAAWgxH,GAAoB76J,KAAK21B,KAAMgjC,EAAU,GACpDglG,GAAY/Z,GAAS+Z,IAAaA,IAAavkG,GAAaukG,IAAatkG,IACzED,EAAYukG,EACZjlG,EAAYU,EAAUpO,UAAU,GAAG,IAEnCnhB,GAAY+5G,GAAS/5G,IAAaA,IAAauvB,GAAavvB,IAAawvB,IACzEA,EAAUxvB,EACV8uB,EAAU34D,KAAKy8J,cAAcpjG,EAAQrO,UAAU,GAAG,GAAK0yG,IAG/D,MAAO,CAACtkG,EAAWC,EAASX,EAAWC,IAE3C8iG,EAAUt7J,UAAUwY,MAAQ,SAAUhB,EAAUwhD,EAAQukG,QACnC,IAAbA,IAAuBA,EAAW,GACtC,IAAIzoK,EAAQ+K,KAAKq8J,aAAa1kJ,EAAUwhD,GACpCC,EAAYnkE,EAAM,GAAIokE,EAAUpkE,EAAM,GACtCyjE,EAAYU,EAAY95D,KAAKqL,IAAIyuD,EAAUpO,UAAU,GAAG,GAAIrzC,EAAS,IAAMA,EAAS,GACpFghD,EAAU34D,KAAKy8J,eAAepjG,EAAU/5D,KAAKiG,IAAI8zD,EAAQrO,UAAU,GAAG,GAAImO,EAAO,IAAMA,EAAO,IAAMukG,GACpGE,EAAc59J,KAAKy9B,WAAW95B,MAAM3D,KAAMA,KAAKy9J,mBAAmB/kG,EAAWC,EAASS,EAAWC,EAASqkG,IAC1G5W,EAAW8W,EAAY9W,SAAUiW,EAAea,EAAYb,aAAcC,EAAaY,EAAYZ,WACnGp+F,EAAmB5+D,KAAKi9J,oBAAoBF,EAAcC,GAC1DnzH,EAAWmzH,EAAaA,EAAW32J,KAAOrG,KAAK21B,KAAKt+B,WASxD,OARI2I,KAAK2uJ,qBACL3uJ,KAAKk9J,kBAAkBH,EAAcC,GACrCh9J,KAAKo8J,kBAAkBW,EAAcC,EAAYlW,GACjD9mJ,KAAKq9J,0BAA0BvW,IAG/B9mJ,KAAKo8J,kBAAkBW,EAAcC,EAAYlW,GAE9C,CAAEjzI,MAAOizI,EAAUloF,iBAAkBA,EAAkB/0B,SAAUA,IAE5E4xH,EAAUt7J,UAAU09J,aAAe,WAC/B,IAAI9qG,EAAQ/yD,KACRa,EAAS,GAcb,OAbK0mJ,GAAWvnJ,KAAKqqJ,SACjBlD,GAAcnnJ,KAAKqqJ,QAAQ,SAAUrH,EAAOrjJ,GACpCA,EAAM67J,iBACCzoG,EAAMs3F,OAAOrH,GAExBmE,GAAcp0F,EAAMu3F,qBAAqB,SAAUj2I,EAAGmpJ,GAClD,IAAItmK,EAAOsmK,EAAUtmK,KAAMq3J,EAAWiP,EAAUjP,SAC5CA,IAAavL,GACbniJ,EAAOrF,KAAKu3D,EAAMp6C,MAAMzhB,EAAK8zD,UAAU,GAAI9zD,EAAK8zD,UAAU,WAKnEnqD,GAEX46J,EAAUt7J,UAAU29J,wBAA0B,WACrCvW,GAAWvnJ,KAAKuqJ,qBACjB,CAACvqJ,KAAKsqJ,oBAAqBtqJ,KAAKuqJ,oBAAoBxpJ,SAAQ,SAAUg9J,GAClE5W,GAAc4W,GAAc,SAAUn5J,GAC9Bs2J,GAAWt2J,WACJm5J,EAAan5J,UAMxC62J,EAAUt7J,UAAUyuE,aAAe,SAAUj3D,EAAUwhD,EAAQyiG,GAC3D,IAAI8B,EAAW19J,KAAK27J,gBAAgBhkJ,EAAUwhD,EAAQyiG,GAClDgC,EAAc59J,KAAK2Y,MAAMhB,EAAUwhD,EAAQukG,GAC3C/+F,EAAayoF,GAAKwW,EAAa,YACnCjD,GAAsBiD,EAAY/zH,SAAU6zH,GAC5C19J,KAAKm8J,sBACL,IAAIt7J,EAAS,CAAC89D,GAOd,OANI3+D,KAAK2uJ,sBACL3uJ,KAAK89J,0BACL99J,KAAKu9J,6BACL18J,EAASA,EAAOsG,OAAOnH,KAAK69J,iBAEhC79J,KAAKs8J,QAAQ,SAAUz7J,GAChBA,GAEX46J,EAAUt7J,UAAU2/D,aAAe,WAC/B,OAAO9/D,KAAK6/D,WAEhB47F,EAAUt7J,UAAU69J,YAAc,WAC9B,OAAOh+J,KAAK21B,MAEhB8lI,EAAUt7J,UAAUugE,mBAAqB,SAAU9pE,GAC/C,IAAIM,EAAOwpE,GAAmB1gE,KAAK21B,KAAM/+B,GACzC,OAAKM,GAAQA,IAAS8I,KAAK21B,KAGpBz+B,EAFI,MAIfukK,EAAUt7J,UAAUmiE,oBAAsB,SAAUnD,GAChD,OAAOmD,GAAoBtiE,KAAK21B,KAAMwpC,IAE1Cs8F,EAAUt7J,UAAUkwE,GAAK,SAAUksF,EAAW1oG,GAC1C7zD,KAAK07J,gBAAgBa,GAAW/gK,KAAKq4D,IAEzC4nG,EAAUt7J,UAAU4xB,IAAM,SAAUwqI,EAAW1oG,GAC3C,IAAInhB,EAAW1yC,KAAK07J,gBAAgBa,GAChCzsF,EAAMp9B,EAAS3iC,QAAQ8jD,GAC3BnhB,EAAS1iC,OAAO8/D,EAAK,IAEzB2rF,EAAUt7J,UAAU66J,aAAe,SAAUp2J,GACzC,OAAOo2J,GAAap2J,IAExB62J,EAAUt7J,UAAUuhJ,cAAgB,WAChCA,MAEG+Z,EAjSmB,GAoS1BjE,GAAiB,CACjB,QACA,WACA,QACA,MACA,SACA,UACA,WACA,SACA,aAEAyG,GAAkB,IAAIx3G,OAAO,UAAY+wG,GAAe78J,KAAK,KAAO,WAAY,MACpF,SAASujK,GAAqBnnJ,GAC1B,OAAIknJ,GAAgBj/J,KAAK+X,GACdA,EAAI7R,QAAQ+4J,IAAiB,SAAU5pJ,EAAGwI,GAAS,MAAO,OAASA,KAEvE9F,EAGX,IAAIonJ,GAAmB,CACnBtgG,QAAS,SAAU3mE,EAAMozD,GACrB,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,IAAM3yB,EAAK8X,MACpBovJ,cAAc,IAGtBlgK,KAAM,SAAUhH,GACZ,MAAO,CACH3B,KAAM,OACNK,QAASsB,EAAKo1D,UAGtB+xG,UAAW,SAAUhqJ,EAAGi2C,GACpB,IAAIhtC,EAAUgtC,EAAGhtC,QACjB,MAAO,CACH/nB,KAAM,OACNK,QAAS0nB,EAAQ+gJ,YAGzBC,UAAW,WACP,MAAO,CACH/oK,KAAM,OACNK,QAAS,aAGjBklE,KAAM,SAAUzmD,EAAGi2C,GACf,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,OAGjBgxC,OAAQ,SAAUxmD,EAAGi2C,GACjB,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,WAGjBogC,UAAW,SAAU/yD,EAAMozD,GACvB,IAAIG,EACAoD,EAAWvD,EAAGuD,SACd0wG,EAAqC,QAAtB9zG,EAAKvzD,EAAKvB,cAA2B,IAAP80D,OAAgB,EAASA,EAAG90D,OAC7E,OAAI4oK,GAAoC,SAArBA,EAAYhpK,MACvBgpK,EAAY9yG,SAASmnG,MACd,KAGR,CACHr9J,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,IACTu0I,cAAc,IAGtBj3G,cAAe,WACX,MAAO,CACH5xD,KAAM,UACNs0B,QAAS,KACTu0I,cAAc,EACdI,WAAW,IAGnBxgG,WAAY,SAAU3pD,EAAGi2C,GACrB,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,aACTu0I,cAAc,EACdK,cAAc,IAGtBn3G,KAAM,SAAUpwD,EAAMozD,GAClB,IAAIuD,EAAWvD,EAAGuD,SACdpD,EAAKvzD,EAAKu0D,SAAUl2D,EAAOk1D,EAAGl1D,KAAMyG,EAAQyuD,EAAGzuD,MAC/C6tB,EAAmB,WAATt0B,EAAoB,KAAO,KACrC+6C,EAAa,GAIjB,MAHgB,OAAZzmB,GAA8B,OAAV7tB,GAA4B,IAAVA,IACtCs0C,EAAWt0C,MAAQA,EAAMoF,YAEtB,CACH7L,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAASA,EACTymB,WAAYA,EACZ8tH,cAAc,IAGtB70G,KAAM,SAAUl1C,EAAGi2C,GACf,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,KACTu0I,cAAc,IAGtBhgG,WAAY,SAAUlnE,EAAMozD,GACxB,IAAIhtC,EAAUgtC,EAAGhtC,QACb1nB,EAAU0nB,EAAQm7I,UAAYyF,GAAqBhnK,EAAKo1D,SAAWp1D,EAAKo1D,QAC5E,MAAO,CAAE/2D,KAAM,OAAQK,QAASA,IAEpC89J,UAAW,SAAUx8J,EAAMozD,GACvB,IAAIhtC,EAAUgtC,EAAGhtC,QACb1nB,EAAU0nB,EAAQm7I,UAAYyF,GAAqBhnK,EAAKo1D,SAAWp1D,EAAKo1D,QAC5E,OAAIhvC,EAAQohJ,OACD,CACH,CAAEnpK,KAAM,UAAWs0B,QAAS,MAAOu0I,cAAc,GACjD,CAAE7oK,KAAM,OAAQK,QAASA,GACzB,CAAEL,KAAM,WAAYs0B,QAAS,MAAOu0I,cAAc,IAGnD,CAAE7oK,KAAM,OAAQK,QAASA,EAASwoK,cAAc,IAE3DhmK,KAAM,SAAUlB,GACZ,MAAO,CACH,CAAE3B,KAAM,UAAWs0B,QAAS,QAC5B,CAAEt0B,KAAM,OAAQK,QAASsB,EAAKo1D,SAC9B,CAAE/2D,KAAM,WAAYs0B,QAAS,UAGrCk0C,UAAW,SAAU7mE,GACjB,IAAIynK,EAAUznK,EAAKi2D,KACfyxG,EAAYD,EAAUA,EAAQ/kK,MAAM,OAAS,GAC7CilK,EAAiB,GAIrB,OAHID,EAAU1jK,OAAS,GAAK0jK,EAAU,GAAG1jK,OAAS,GAC9C2jK,EAAerjK,KAAK,YAAc0lJ,GAAU0d,EAAU,KAEnD,CACH,CAAErpK,KAAM,UAAWs0B,QAAS,MAAOu0I,cAAc,GACjD,CAAE7oK,KAAM,UAAWs0B,QAAS,OAAQy8C,WAAYu4F,GAChD,CAAEtpK,KAAM,OAAQK,QAASsB,EAAKo1D,SAC9B,CAAE/2D,KAAM,WAAYs0B,QAAS,QAC7B,CAAEt0B,KAAM,WAAYs0B,QAAS,MAAOu0I,cAAc,KAG1D52G,KAAM,SAAUtwD,EAAMozD,GAClB,IAAIuD,EAAWvD,EAAGuD,SAClB,GAAIA,EAAU,CACV,IAAIpD,EAAKvzD,EAAMurB,EAAQgoC,EAAGhoC,MAAO8pC,EAAc9B,EAAG8B,YAClD,MAAO,CACHh3D,KAAM,UACNs0B,QAAS,IACTymB,WAAYwgC,GAAS,CAAEguF,KAAM5d,GAAU30F,IAAiB9pC,GAAS,CAAEA,MAAOy+H,GAAUz+H,MAG5F,MAAO,CAAEltB,KAAM,WAAYs0B,QAAS,MAExCi0C,MAAO,SAAU5mE,EAAMozD,GACnB,IAAIy0G,EAAkBz0G,EAAGy0G,gBAAiBC,EAAe10G,EAAG00G,aACxDv0G,EAAKvzD,EAAMurB,EAAQgoC,EAAGhoC,MAAO8pC,EAAc9B,EAAG8B,YAElD,OADAyyG,IACO,CACHzpK,KAAM,UACNs0B,QAAS,MACT20I,WAAW,EACXluH,WAAYwgC,GAAS,CAAE5sB,IAAKg9F,GAAU30F,GAAcvkB,IAAK+2H,EAAgB7nK,IAAUurB,GAAS,CAAEA,MAAOy+H,GAAUz+H,OAGvHw7C,YAAa,SAAU/mE,EAAMgoB,EAAS+/I,GAClC,IAAI9xG,EAAOj2D,EAAKi2D,KAAKloC,OAAOpB,cACxBq7I,EAAkBD,EAAW9xG,GACjC,GAAI+xG,EACA,IACI,OAAOA,EAAgBhoK,EAAMgoB,GAEjC,MAAO/Z,GACHstC,QAAQ0sH,KAAK,gDAAkDhyG,EAAO,gDAAkDhoD,GAGhI,MAAO,CACH,CAAE5P,KAAM,UAAWs0B,QAAS,MAAOu0I,cAAc,GACjD,CAAE7oK,KAAM,OAAQK,QAASsB,EAAKo1D,SAC9B,CAAE/2D,KAAM,WAAYs0B,QAAS,MAAOu0I,cAAc,KAG1DvK,YAAa,SAAU38J,GACnB,MAAO,CACH,CACI3B,KAAM,UACNs0B,QAAS,MACTu0I,cAAc,EAEd9tH,WAAY,CAAE1kC,MAAO,qCAEzB,CAAErW,KAAM,OAAQK,QAASsB,EAAKo1D,SAC9B,CAAE/2D,KAAM,WAAYs0B,QAAS,MAAOu0I,cAAc,KAG1DgB,aAAc,SAAUloK,EAAMgoB,EAAS+/I,GACnC,IAAI30G,EAAKpzD,EAAMi2D,EAAO7C,EAAG6C,KAAM91D,EAAaizD,EAAGjzD,WAC3CgoK,EAAgBlyG,EAAKloC,OAAOpB,cAC5Bq7I,EAAkBD,EAAWI,GAC7BxxG,EAAW3uC,EAAQ2uC,SACvB,GAAIqxG,EACA,IACI,OAAOA,EAAgBhoK,EAAMgoB,GAEjC,MAAO/Z,GACHstC,QAAQ0sH,KAAK,gDAAkDE,EAAgB,iDAAmDl6J,GAG1I,OAAO0oD,EACD,CACE,CAAEt4D,KAAM,UAAWs0B,QAAS,QAC5B,CAAEt0B,KAAM,OAAQK,QAAS,KAAOu3D,GAAQ91D,EAAa,IAAM,MAE7D,CACE,CAAE9B,KAAM,OAAQK,QAAS,MACzB,CAAEL,KAAM,WAAYs0B,QAAS,WAKzCy1I,GAAgB,CAChBvkG,OAAQ,SAAU1mD,EAAGi2C,GACjB,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,QAGjB0/B,KAAM,SAAUryD,EAAMozD,GAClB,IAAIuD,EAAWvD,EAAGuD,SACdpD,EAAKvzD,EAAKu0D,SAAUke,EAAUlf,EAAGkf,QAAShM,EAAOlT,EAAGkT,KACxD,GAAI9P,EAAU,CACV,IAAI0xG,EAAU,CACVhqK,KAAM,UACNs0B,QAAS,KACTu0I,cAAc,GAElB,OAAIzgG,EACO,CACH4hG,EACA,CACIhqK,KAAM,UACNs0B,QAAS,QACT20I,WAAW,EACXluH,WAAYwgC,GAASA,GAAS,GAAKnH,GAAW,CAAEA,QAAS,KAAQ,CAAEnhC,SAAU,GAAIjzC,KAAM,cAE3F,CACIA,KAAM,OACNK,QAAS,MAId2pK,EAEX,MAAO,CACHhqK,KAAM,WACNs0B,QAAS,KACTu0I,cAAc,IAGtBj8I,MAAO,SAAU9N,EAAGi2C,GAChB,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,QACTu0I,cAAc,IAGtBxK,UAAW,SAAUv/I,EAAGi2C,GACpB,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,QACTu0I,cAAc,IAGtBzK,UAAW,SAAUt/I,EAAGi2C,GACpB,IAAIuD,EAAWvD,EAAGuD,SAClB,MAAO,CACHt4D,KAAMs4D,EAAW,UAAY,WAC7BhkC,QAAS,QACTu0I,cAAc,IAGtBhN,SAAU,SAAUl6J,EAAMozD,GACtB,IAAIuD,EAAWvD,EAAGuD,SAClB,GAAIA,EACA,MAAO,CACHt4D,KAAM,UACNs0B,QAAS,KACTu0I,cAAc,GAGtB,IAAIv9J,EAAS,GACb,GAAI3J,EAAKI,UAGL,IAFA,IAAIkoK,EAAYtoK,EAAKvB,OAAOA,OAAOuyE,QAAQhtE,OACvCukK,EAAavoK,EAAKI,UAAUsrJ,OACvBhrJ,EAAI6nK,EAAa,EAAG7nK,EAAI4nK,EAAW5nK,GAAK,EAC7CiJ,EAAOrF,KAAK,CACRjG,KAAM,UACNs0B,QAAS,KACTu0I,cAAc,GACf,CACC7oK,KAAM,WACNs0B,QAAS,KACTu0I,cAAc,IAS1B,OALAv9J,EAAOrF,KAAK,CACRjG,KAAM,WACNs0B,QAAS,KACTu0I,cAAc,IAEXv9J,GAEXs9D,UAAW,SAAUjnE,EAAMozD,GACvB,IAAIuD,EAAWvD,EAAGuD,SAClB,GAAI32D,EAAK2rJ,QACL,MAAO,CACHttJ,KAAM,OACNK,QAAS,IAGjB,IAAI8pK,EAAYxoK,EAAKvB,OAAOA,OACxBk0B,EAA6B,cAAnB61I,EAAUnqK,KAAuB,KAAO,KAClD4sB,EAAQu9I,EAAU/pK,OAClBgqK,EAAax9I,EAAM+lD,QAAQhxE,EAAKyrJ,UAChCryG,GAA6B,OAAfqvH,QAAsC,IAAfA,OAAwB,EAASA,EAAWlL,OAAS,CAAEA,MAAOkL,EAAWlL,OAAU,KAC5H,OAAI5mG,EACOijB,GAAS,CAAEv7E,KAAM,UAAWs0B,QAASA,EAASu0I,cAAc,GAAS9tH,GAAc,CAAEA,WAAYA,IAErG,CACH/6C,KAAM,WACNs0B,QAASA,EACTu0I,cAAc,KAKtBwB,GAAiB,CACjBvB,UAAW,KACXwB,KAAK,EACLpH,WAAW,EACXiG,QAAQ,GAEZ,SAASK,GAAgB7nK,GACrB,IAAIy1D,EAAS,GACTC,EAAS11D,EAAK01D,SACd55B,EAAQ,KACZ,MAAQA,EAAQ45B,EAAOvmD,OAAS,CAC5B,IAAIy5J,EAAS9sI,EAAM97B,KACC,SAAhB4oK,EAAOvqK,MACPo3D,EAAOnxD,KAAKskK,EAAOxzG,SAG3B,OAAOK,EAAOhyD,KAAK,IAEvB,IAAIolK,GAA0B,WAC1B,SAASA,EAASC,GACdhgK,KAAK2sD,OAAS,GACd3sD,KAAKsd,QAAUwzD,GAASA,GAAS,GAAI8uF,IAAiBI,GACtDhgK,KAAKi/J,WAAaj/J,KAAKigK,0BAChBjgK,KAAKsd,QAAQ2hJ,WAiKxB,OA/JAc,EAAS5/J,UAAU8/J,iBAAmB,WAClC,IAAIhB,EAAanuF,GAAS,GAAIqtF,IAI9B,GAHIn+J,KAAKsd,QAAQuiJ,MACbZ,EAAanuF,GAASA,GAAS,GAAImuF,GAAaK,KAEhDt/J,KAAKsd,QAAQ2hJ,WAAY,CACzB,IAAIiB,EAAqBlgK,KAAKsd,QAAQ2hJ,WAClCpmJ,EAAYhW,OAAOotB,KAAKiwI,GACxBC,EAAsBrvF,GAASA,GAAS,GAAIqtF,IAAmBmB,IACnEzmJ,EAAU9X,SAAQ,SAAU3E,GACxB,IAAIgkK,EAAenB,EAAW7iK,GAC1BikK,EAAYH,EAAmB9jK,GAC/BkkK,GAAwE,IAAxDz9J,OAAOotB,KAAKkwI,GAAqBpwJ,QAAQ3T,GACvDA,EAASynB,cACTznB,EAEF6iK,EAAWqB,GADXF,EAC4B,SAAUlpK,EAAMgoB,EAAS+/I,GAEjD,OADA//I,EAAQ2mB,OAAS,WAAc,OAAOu6H,EAAalpK,EAAMgoB,EAAS+/I,IAC3DoB,EAAUnpK,EAAMgoB,IAICmhJ,KAIxC,OAAOpB,GAEXc,EAAS5/J,UAAUogK,cAAgB,WAC/B,OAAOvgK,KAAKi/J,YAEhBc,EAAS5/J,UAAUqgK,WAAa,WAC5B,OAAOxgK,KAAKsd,SAEhByiJ,EAAS5/J,UAAUsgK,OAAS,SAAUC,GAClC,IAAI3tG,EAAQ/yD,KACZA,KAAK2sD,OAAS,GACd,IAAIC,EAAS8zG,EAAS9zG,SAClB55B,EAAQ,KACRu2C,EAAU,WACV,IAAIryE,EAAO87B,EAAM97B,KAAM22D,EAAW76B,EAAM66B,SACpCwyG,EAAY52F,EAAOw1F,WAAW/nK,EAAK3B,MACvC,IAAK8qK,EACD,MAAO,WAEX,IAAIx8F,GAAU,EACV3kD,EAAU,CACV2uC,SAAUA,EACV8yG,MAAOtf,GAAcnqJ,GACrBomB,QAASmsD,EAAOnsD,QAChByhJ,gBAAiBA,GACjBC,aAAc,WACVn7F,GAAU,IAGd+8F,EAAY/c,GAAc3sJ,IAAS4sJ,GAAe5sJ,GAChDmpK,EAAUnpK,EAAMgoB,EAASuqD,EAAOw1F,YAChCoB,EAAUnpK,EAAMgoB,GACtB,GAAI0hJ,EAAW,CACX,IAAIC,EAAYrtJ,MAAMC,QAAQmtJ,GAAaA,EAAY,CAACA,GACxDC,EAAU9/J,SAAQ,SAAU+/J,EAAUjpK,GACZ,YAAlBipK,EAASvrK,MAAsBw9D,EAAMz1C,QAAQohJ,QAAoB,IAAV7mK,IAClDipK,EAASxwH,aACVwwH,EAASxwH,WAAa,IAE1BwwH,EAASxwH,WAAW,eAAiBiF,OAAOr+C,EAAK0N,KAErDmuD,EAAMguG,eAAeD,MAErBj9F,IACAjX,EAAOkB,SAAS52D,GAAM,GACtB01D,EAAOvmD,UAIfojE,EAASzpE,KACb,MAAQgzB,EAAQ45B,EAAOvmD,OACnBkjE,IAGJ,OADAvpE,KAAKghK,aACEhhK,KAAK2sD,OAAOhyD,KAAK,KAE5BolK,EAAS5/J,UAAU4gK,eAAiB,SAAU7pK,GAC1C,OAAQA,EAAK3B,MACT,IAAK,UACL,IAAK,WACDyK,KAAKihK,kBAAkB/pK,GACvB,MACJ,IAAK,OACD8I,KAAKkhK,eAAehqK,GACpB,MACJ,IAAK,OACD8I,KAAKmhK,kBAAkBjqK,GACvB,QAIZ6oK,EAAS5/J,UAAUihK,sBAAwB,SAAUlqK,GACjD,IAAI67D,EAAQ/yD,KACR6pB,EAAU3yB,EAAK2yB,QAASy8C,EAAapvE,EAAKovE,WAAYh2B,EAAap5C,EAAKo5C,WAC5EtwC,KAAK2sD,OAAOnxD,KAAK,IAAMquB,GACnBy8C,GAAcA,EAAWprE,OAAS,GAClC8E,KAAK2sD,OAAOnxD,KAAK,WAAc8qE,EAAW3rE,KAAK,KAAO,KAEtD21C,GACAztC,OAAOotB,KAAKqgB,GAAYvvC,SAAQ,SAAUkb,GACtC,IAAIolJ,EAAY/wH,EAAWr0B,GAC3B82C,EAAMpG,OAAOnxD,KAAK,IAAMygB,EAAW,KAAQolJ,EAAY,QAG3DnqK,EAAKsnK,WACLx+J,KAAK2sD,OAAOnxD,KAAK,MAErBwE,KAAK2sD,OAAOnxD,KAAK,MAErBukK,EAAS5/J,UAAUmhK,uBAAyB,SAAUh3G,GAClD,IAAIzgC,EAAUygC,EAAGzgC,QACjB7pB,KAAK2sD,OAAOnxD,KAAK,KAAOquB,EAAU,MAEtCk2I,EAAS5/J,UAAU6gK,WAAa,WACxBhhK,KAAK2sD,OAAOzxD,QAAsC,OAA5ByV,GAAKA,GAAK3Q,KAAK2sD,UACrC3sD,KAAK2sD,OAAOnxD,KAAK,OAGzBukK,EAAS5/J,UAAUohK,gBAAkB,SAAUrqK,GACvCA,EAAKknK,cACLp+J,KAAKghK,cAGbjB,EAAS5/J,UAAUqhK,gBAAkB,SAAUtqK,GACvCA,EAAKunK,cACLz+J,KAAKghK,cAGbjB,EAAS5/J,UAAU+gK,eAAiB,SAAUhqK,GAC1C8I,KAAK2sD,OAAOnxD,KAAK0lJ,GAAUhqJ,EAAKtB,WAEpCmqK,EAAS5/J,UAAUghK,kBAAoB,SAAUjqK,GAC7C8I,KAAKuhK,gBAAgBrqK,GACrB8I,KAAK2sD,OAAOnxD,KAAKtE,EAAKtB,SACtBoK,KAAKuhK,gBAAgBrqK,IAEzB6oK,EAAS5/J,UAAU8gK,kBAAoB,SAAU/pK,GAC3B,YAAdA,EAAK3B,MACLyK,KAAKuhK,gBAAgBrqK,GACrB8I,KAAKohK,sBAAsBlqK,GACvBA,EAAKsnK,UACLx+J,KAAKuhK,gBAAgBrqK,GAGrB8I,KAAKwhK,gBAAgBtqK,KAIzB8I,KAAKwhK,gBAAgBtqK,GACrB8I,KAAKshK,uBAAuBpqK,GAC5B8I,KAAKuhK,gBAAgBrqK,KAGtB6oK,EAtKkB;2LA2K7B,SAAS0B,GAAmBzgH,GAAO,GAAIxtC,MAAMC,QAAQutC,GAAM,CAAE,IAAK,IAAIppD,EAAI,EAAG8pK,EAAOluJ,MAAMwtC,EAAI9lD,QAAStD,EAAIopD,EAAI9lD,OAAQtD,IAAO8pK,EAAK9pK,GAAKopD,EAAIppD,GAAM,OAAO8pK,EAAe,OAAOluJ,MAAMnd,KAAK2qD,GAE1L,IAAIzjC,GAAiB1a,OAAO0a,eACxBgiC,GAAiB18C,OAAO08C,eACxBoiH,GAAW9+J,OAAO8+J,SAClBziH,GAAiBr8C,OAAOq8C,eACxB0iH,GAA2B/+J,OAAO++J,yBAClCC,GAASh/J,OAAOg/J,OAChBC,GAAOj/J,OAAOi/J,KACdjrK,GAASgM,OAAOhM,OAEhBkrK,GAA0B,qBAAZC,SAA2BA,QACzCr+J,GAAQo+J,GAAKp+J,MACbs+J,GAAYF,GAAKE,UAEhBt+J,KACHA,GAAQ,SAAeu+J,EAAKC,EAAWld,GACrC,OAAOid,EAAIv+J,MAAMw+J,EAAWld,KAI3B4c,KACHA,GAAS,SAAgBrsI,GACvB,OAAOA,IAINssI,KACHA,GAAO,SAActsI,GACnB,OAAOA,IAINysI,KACHA,GAAY,SAAmBG,EAAMnd,GACnC,OAAO,IAAKr1H,SAASzvB,UAAUge,KAAKxa,MAAMy+J,EAAM,CAAC,MAAMj7J,OAAOs6J,GAAmBxc,QAIrF,IAAIod,GAAeC,GAAQ9uJ,MAAMrT,UAAUY,SACvCwhK,GAAWD,GAAQ9uJ,MAAMrT,UAAUqP,KACnCgzJ,GAAYF,GAAQ9uJ,MAAMrT,UAAU3E,MAEpCinK,GAAoBH,GAAQ/sH,OAAOp1C,UAAU0jB,aAC7C6+I,GAAcJ,GAAQ/sH,OAAOp1C,UAAU3H,OACvCmqK,GAAgBL,GAAQ/sH,OAAOp1C,UAAU+E,SACzC09J,GAAgBN,GAAQ/sH,OAAOp1C,UAAU4P,SACzC8yJ,GAAaP,GAAQ/sH,OAAOp1C,UAAU8kB,MAEtC69I,GAAaR,GAAQ77G,OAAOtmD,UAAUnB,MAEtC+jK,GAAkBC,GAAYvjH,WAElC,SAAS6iH,GAAQzyF,GACf,OAAO,SAAUozF,GACf,IAAK,IAAIC,EAAO1kK,UAAUtD,OAAQ+pJ,EAAOzxI,MAAM0vJ,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9Fle,EAAKke,EAAO,GAAK3kK,UAAU2kK,GAG7B,OAAOx/J,GAAMksE,EAAMozF,EAAShe,IAIhC,SAAS+d,GAAYnzF,GACnB,OAAO,WACL,IAAK,IAAIuzF,EAAQ5kK,UAAUtD,OAAQ+pJ,EAAOzxI,MAAM4vJ,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChFpe,EAAKoe,GAAS7kK,UAAU6kK,GAG1B,OAAOpB,GAAUpyF,EAAMo1E,IAK3B,SAASz6I,GAASmB,EAAKgI,GACjB4rC,IAIFA,GAAe5zC,EAAK,MAGtB,IAAIq0C,EAAIrsC,EAAMzY,OACd,MAAO8kD,IAAK,CACV,IAAI9nB,EAAUvkB,EAAMqsC,GACpB,GAAuB,kBAAZ9nB,EAAsB,CAC/B,IAAIorI,EAAYb,GAAkBvqI,GAC9BorI,IAAcprI,IAEXypI,GAAShuJ,KACZA,EAAMqsC,GAAKsjH,GAGbprI,EAAUorI,GAId33J,EAAIusB,IAAW,EAGjB,OAAOvsB,EAIT,SAAS43J,GAAM//J,GACb,IAAIggK,EAAY3sK,GAAO,MAEnB4sK,OAAW,EACf,IAAKA,KAAYjgK,EACXG,GAAM4Z,GAAgB/Z,EAAQ,CAACigK,MACjCD,EAAUC,GAAYjgK,EAAOigK,IAIjC,OAAOD,EAOT,SAASE,GAAalgK,EAAQkO,GAC5B,MAAkB,OAAXlO,EAAiB,CACtB,IAAIoqB,EAAOg0I,GAAyBp+J,EAAQkO,GAC5C,GAAIkc,EAAM,CACR,GAAIA,EAAKrqB,IACP,OAAO++J,GAAQ10I,EAAKrqB,KAGtB,GAA0B,oBAAfqqB,EAAKjuB,MACd,OAAO2iK,GAAQ10I,EAAKjuB,OAIxB6D,EAAS07C,GAAe17C,GAG1B,SAASmgK,EAAczrI,GAErB,OADAua,QAAQ0sH,KAAK,qBAAsBjnI,GAC5B,KAGT,OAAOyrI,EAGT,IAAIC,GAAS/B,GAAO,CAAC,IAAK,OAAQ,UAAW,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,MAAO,MAAO,MAAO,QAAS,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,SAAU,OAAQ,OAAQ,MAAO,WAAY,UAAW,OAAQ,WAAY,KAAM,YAAa,MAAO,UAAW,MAAO,SAAU,MAAO,MAAO,KAAM,KAAM,UAAW,KAAM,WAAY,aAAc,SAAU,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,MAAO,QAAS,MAAO,MAAO,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,UAAW,OAAQ,WAAY,QAAS,MAAO,OAAQ,KAAM,WAAY,SAAU,SAAU,IAAK,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,UAAW,SAAU,SAAU,QAAS,SAAU,SAAU,OAAQ,SAAU,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,WAAY,QAAS,KAAM,QAAS,OAAQ,KAAM,QAAS,KAAM,IAAK,KAAM,MAAO,QAAS,QAGn+BgC,GAAMhC,GAAO,CAAC,MAAO,IAAK,WAAY,cAAe,eAAgB,eAAgB,gBAAiB,mBAAoB,SAAU,WAAY,OAAQ,OAAQ,UAAW,SAAU,OAAQ,IAAK,QAAS,WAAY,QAAS,QAAS,OAAQ,iBAAkB,SAAU,OAAQ,WAAY,QAAS,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,QAAS,SAAU,SAAU,OAAQ,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAEzciC,GAAajC,GAAO,CAAC,UAAW,gBAAiB,sBAAuB,cAAe,mBAAoB,oBAAqB,oBAAqB,iBAAkB,UAAW,UAAW,UAAW,UAAW,UAAW,iBAAkB,UAAW,cAAe,eAAgB,WAAY,eAAgB,qBAAsB,cAAe,SAAU,iBAMrWkC,GAAgBlC,GAAO,CAAC,UAAW,gBAAiB,SAAU,UAAW,eAAgB,UAAW,YAAa,mBAAoB,iBAAkB,gBAAiB,gBAAiB,gBAAiB,QAAS,YAAa,OAAQ,eAAgB,YAAa,UAAW,gBAAiB,SAAU,MAAO,aAAc,UAAW,QAE3UmC,GAASnC,GAAO,CAAC,OAAQ,WAAY,SAAU,UAAW,QAAS,SAAU,KAAM,aAAc,gBAAiB,KAAM,KAAM,QAAS,UAAW,WAAY,QAAS,OAAQ,KAAM,SAAU,QAAS,SAAU,OAAQ,OAAQ,UAAW,SAAU,MAAO,QAAS,MAAO,SAAU,eAIxRoC,GAAmBpC,GAAO,CAAC,UAAW,cAAe,aAAc,WAAY,YAAa,UAAW,UAAW,SAAU,SAAU,QAAS,YAAa,aAAc,iBAAkB,cAAe,SAE3M3jK,GAAO2jK,GAAO,CAAC,UAEfqC,GAAWrC,GAAO,CAAC,SAAU,SAAU,QAAS,MAAO,iBAAkB,eAAgB,uBAAwB,WAAY,aAAc,UAAW,SAAU,UAAW,cAAe,cAAe,UAAW,OAAQ,QAAS,QAAS,QAAS,OAAQ,UAAW,WAAY,eAAgB,SAAU,cAAe,WAAY,WAAY,UAAW,MAAO,WAAY,0BAA2B,wBAAyB,WAAY,YAAa,UAAW,eAAgB,OAAQ,MAAO,UAAW,SAAU,SAAU,OAAQ,OAAQ,WAAY,KAAM,YAAa,YAAa,QAAS,OAAQ,QAAS,OAAQ,OAAQ,UAAW,OAAQ,MAAO,MAAO,YAAa,QAAS,SAAU,MAAO,YAAa,WAAY,QAAS,OAAQ,UAAW,aAAc,SAAU,OAAQ,UAAW,UAAW,cAAe,cAAe,SAAU,UAAW,UAAW,aAAc,WAAY,MAAO,WAAY,MAAO,WAAY,OAAQ,OAAQ,UAAW,aAAc,QAAS,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAAW,QAAS,MAAO,SAAU,OAAQ,QAAS,UAAW,WAAY,QAAS,YAAa,OAAQ,SAAU,SAAU,QAAS,QAAS,QAAS,SAE5pCsC,GAAQtC,GAAO,CAAC,gBAAiB,aAAc,WAAY,qBAAsB,SAAU,gBAAiB,gBAAiB,UAAW,gBAAiB,iBAAkB,QAAS,OAAQ,KAAM,QAAS,OAAQ,gBAAiB,YAAa,YAAa,QAAS,sBAAuB,8BAA+B,gBAAiB,kBAAmB,KAAM,KAAM,IAAK,KAAM,KAAM,kBAAmB,YAAa,UAAW,UAAW,MAAO,WAAY,YAAa,MAAO,OAAQ,eAAgB,YAAa,SAAU,cAAe,cAAe,gBAAiB,cAAe,YAAa,mBAAoB,eAAgB,aAAc,eAAgB,cAAe,KAAM,KAAM,KAAM,KAAM,aAAc,WAAY,gBAAiB,oBAAqB,SAAU,OAAQ,KAAM,kBAAmB,KAAM,MAAO,IAAK,KAAM,KAAM,KAAM,KAAM,UAAW,YAAa,aAAc,WAAY,OAAQ,eAAgB,iBAAkB,eAAgB,mBAAoB,iBAAkB,QAAS,aAAc,aAAc,eAAgB,eAAgB,cAAe,cAAe,mBAAoB,YAAa,MAAO,OAAQ,QAAS,SAAU,OAAQ,MAAO,OAAQ,aAAc,SAAU,WAAY,UAAW,QAAS,SAAU,cAAe,SAAU,WAAY,cAAe,OAAQ,aAAc,sBAAuB,mBAAoB,eAAgB,SAAU,gBAAiB,sBAAuB,iBAAkB,IAAK,KAAM,KAAM,SAAU,OAAQ,OAAQ,cAAe,YAAa,UAAW,SAAU,SAAU,QAAS,OAAQ,kBAAmB,mBAAoB,mBAAoB,eAAgB,cAAe,eAAgB,cAAe,aAAc,eAAgB,mBAAoB,oBAAqB,iBAAkB,kBAAmB,oBAAqB,iBAAkB,SAAU,eAAgB,QAAS,eAAgB,iBAAkB,WAAY,UAAW,UAAW,YAAa,cAAe,kBAAmB,iBAAkB,aAAc,OAAQ,KAAM,KAAM,UAAW,SAAU,UAAW,aAAc,UAAW,aAAc,gBAAiB,gBAAiB,QAAS,eAAgB,OAAQ,eAAgB,mBAAoB,mBAAoB,IAAK,KAAM,KAAM,QAAS,IAAK,KAAM,KAAM,IAAK,eAE5uEuC,GAAWvC,GAAO,CAAC,SAAU,cAAe,QAAS,WAAY,QAAS,eAAgB,cAAe,aAAc,aAAc,QAAS,MAAO,UAAW,eAAgB,WAAY,QAAS,QAAS,SAAU,OAAQ,KAAM,UAAW,SAAU,gBAAiB,SAAU,SAAU,iBAAkB,YAAa,WAAY,cAAe,UAAW,UAAW,gBAAiB,WAAY,WAAY,OAAQ,WAAY,WAAY,aAAc,UAAW,SAAU,SAAU,cAAe,gBAAiB,uBAAwB,YAAa,YAAa,aAAc,WAAY,iBAAkB,iBAAkB,YAAa,UAAW,QAAS,UAEvpBwC,GAAMxC,GAAO,CAAC,aAAc,SAAU,cAAe,YAAa,gBAGlEyC,GAAgBxC,GAAK,6BACrByC,GAAWzC,GAAK,yBAChB0C,GAAY1C,GAAK,8BACjB2C,GAAY3C,GAAK,kBACjB4C,GAAiB5C,GAAK,yFAEtB6C,GAAoB7C,GAAK,yBACzB8C,GAAkB9C,GAAK,+DAGvB+C,GAA4B,oBAAXC,QAAoD,kBAApBA,OAAOC,SAAwB,SAAU3wJ,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAX0wJ,QAAyB1wJ,EAAItR,cAAgBgiK,QAAU1wJ,IAAQ0wJ,OAAO3kK,UAAY,gBAAkBiU,GAEtQ,SAAS4wJ,GAAqBhkH,GAAO,GAAIxtC,MAAMC,QAAQutC,GAAM,CAAE,IAAK,IAAIppD,EAAI,EAAG8pK,EAAOluJ,MAAMwtC,EAAI9lD,QAAStD,EAAIopD,EAAI9lD,OAAQtD,IAAO8pK,EAAK9pK,GAAKopD,EAAIppD,GAAM,OAAO8pK,EAAe,OAAOluJ,MAAMnd,KAAK2qD,GAE5L,IAAIikH,GAAY,WACd,MAAyB,qBAAXj8I,OAAyB,KAAOA,QAW5Ck8I,GAA4B,SAAmCC,EAAcp8I,GAC/E,GAAoF,YAAvD,qBAAjBo8I,EAA+B,YAAcN,GAAQM,KAAoE,oBAA9BA,EAAaC,aAClH,OAAO,KAMT,IAAIC,EAAS,KACTC,EAAY,wBACZv8I,EAASw8I,eAAiBx8I,EAASw8I,cAAcplI,aAAamlI,KAChED,EAASt8I,EAASw8I,cAAclgJ,aAAaigJ,IAG/C,IAAIE,EAAa,aAAeH,EAAS,IAAMA,EAAS,IAExD,IACE,OAAOF,EAAaC,aAAaI,EAAY,CAC3CC,WAAY,SAAoBC,GAC9B,OAAOA,KAGX,MAAOrxJ,GAKP,OADAo+B,QAAQ0sH,KAAK,uBAAyBqG,EAAa,0BAC5C,OAIX,SAASG,KACP,IAAI38I,EAASxqB,UAAUtD,OAAS,QAAsB4V,IAAjBtS,UAAU,GAAmBA,UAAU,GAAKymK,KAE7EW,EAAY,SAAmBjwI,GACjC,OAAOgwI,GAAgBhwI,IAezB,GARAiwI,EAAUC,QAAU,QAMpBD,EAAU16J,QAAU,IAEf8d,IAAWA,EAAOD,UAAyC,IAA7BC,EAAOD,SAAS3sB,SAKjD,OAFAwpK,EAAUE,aAAc,EAEjBF,EAGT,IAAIG,EAAmB/8I,EAAOD,SAE1BA,EAAWC,EAAOD,SAClBi9I,EAAmBh9I,EAAOg9I,iBAC1BC,EAAsBj9I,EAAOi9I,oBAC7BzuJ,EAAOwR,EAAOxR,KACdm3C,EAAU3lC,EAAO2lC,QACjBu3G,EAAal9I,EAAOk9I,WACpBC,EAAuBn9I,EAAOo9I,aAC9BA,OAAwCt1J,IAAzBq1J,EAAqCn9I,EAAOo9I,cAAgBp9I,EAAOq9I,gBAAkBF,EACpGjgG,EAAOl9C,EAAOk9C,KACdogG,EAAUt9I,EAAOs9I,QACjB9nJ,EAAYwK,EAAOxK,UACnB2mJ,EAAen8I,EAAOm8I,aAGtBoB,EAAmB53G,EAAQxuD,UAE3BqmK,EAAY9C,GAAa6C,EAAkB,aAC3CE,EAAiB/C,GAAa6C,EAAkB,eAChDhM,EAAgBmJ,GAAa6C,EAAkB,cAC/CG,EAAgBhD,GAAa6C,EAAkB,cAQnD,GAAmC,oBAAxBN,EAAoC,CAC7C,IAAIU,EAAW59I,EAASiB,cAAc,YAClC28I,EAAS/wK,SAAW+wK,EAAS/wK,QAAQgxB,gBACvCmC,EAAW49I,EAAS/wK,QAAQgxB,eAIhC,IAAIggJ,EAAqB1B,GAA0BC,EAAcY,GAC7Dc,EAAYD,GAAsBE,GAAsBF,EAAmBnB,WAAW,IAAM,GAE5FsB,EAAYh+I,EACZ6mB,EAAiBm3H,EAAUn3H,eAC3Bo3H,EAAqBD,EAAUC,mBAC/B99I,EAAyB69I,EAAU79I,uBACnC+9I,EAAuBF,EAAUE,qBACjCC,EAAanB,EAAiBmB,WAG9Bz2I,EAAe,GACnB,IACEA,EAAe8yI,GAAMx6I,GAAU0H,aAAe1H,EAAS0H,aAAe,GACtE,MAAOpc,KAET,IAAI8yJ,EAAQ,GAKZvB,EAAUE,YAAuC,oBAAlBY,GAAgC92H,GAA+D,qBAAtCA,EAAeC,oBAAuD,IAAjBpf,EAE7I,IAAI22I,EAAmB9C,GACnB+C,EAAc9C,GACd+C,EAAe9C,GACf+C,EAAe9C,GACf+C,EAAuB7C,GACvB8C,EAAqB7C,GACrB8C,EAAoBhD,GASpBiD,EAAe,KACfC,EAAuBp9J,GAAS,GAAI,GAAGrD,OAAO69J,GAAqBpB,IAASoB,GAAqBnB,IAAMmB,GAAqBlB,IAAakB,GAAqBhB,IAASgB,GAAqB9mK,MAG5L2pK,EAAe,KACfC,EAAuBt9J,GAAS,GAAI,GAAGrD,OAAO69J,GAAqBd,IAAWc,GAAqBb,IAAQa,GAAqBZ,IAAWY,GAAqBX,MAGhK0D,EAAc,KAGdC,EAAc,KAGdC,GAAkB,EAGlBC,GAAkB,EAGlBC,GAA0B,EAK1BC,GAAqB,EAGrBC,GAAiB,EAGjBC,GAAa,EAIbC,GAAa,EAMbC,GAAa,EAIbC,GAAsB,EAWtBC,GAAoB,EAIpB5B,IAAsB,EAGtB6B,IAAe,EAGfC,IAAe,EAIfC,IAAW,EAGXC,GAAe,GAGfC,GAAkB,KAClBC,GAA0Bx+J,GAAS,GAAI,CAAC,iBAAkB,QAAS,WAAY,OAAQ,gBAAiB,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,QAAS,UAAW,WAAY,WAAY,YAAa,SAAU,QAAS,MAAO,WAAY,QAAS,QAAS,QAAS,QAGpRy+J,GAAgB,KAChBC,GAAwB1+J,GAAS,GAAI,CAAC,QAAS,QAAS,MAAO,SAAU,QAAS,UAGlF2+J,GAAsB,KACtBC,GAA8B5+J,GAAS,GAAI,CAAC,MAAO,QAAS,MAAO,KAAM,QAAS,OAAQ,UAAW,cAAe,OAAQ,UAAW,QAAS,QAAS,QAAS,UAElK6+J,GAAmB,qCACnBC,GAAgB,6BAChBC,GAAiB,+BAEjBC,GAAYD,GACZE,IAAiB,EAGjBC,QAAoB,EACpBC,GAA+B,CAAC,wBAAyB,aACzDC,GAA4B,YAC5BC,QAAoB,EAGpBC,GAAS,KAKTC,GAAchhJ,EAASiB,cAAc,QAQrCggJ,GAAe,SAAsBC,GACnCH,IAAUA,KAAWG,IAKpBA,GAAqE,YAA9C,qBAARA,EAAsB,YAAcpF,GAAQoF,MAC9DA,EAAM,IAIRA,EAAM1G,GAAM0G,GAGZtC,EAAe,iBAAkBsC,EAAMz/J,GAAS,GAAIy/J,EAAItC,cAAgBC,EACxEC,EAAe,iBAAkBoC,EAAMz/J,GAAS,GAAIy/J,EAAIpC,cAAgBC,EACxEqB,GAAsB,sBAAuBc,EAAMz/J,GAAS+4J,GAAM6F,IAA8Ba,EAAIC,mBAAqBd,GACzHH,GAAgB,sBAAuBgB,EAAMz/J,GAAS+4J,GAAM2F,IAAwBe,EAAIE,mBAAqBjB,GAC7GH,GAAkB,oBAAqBkB,EAAMz/J,GAAS,GAAIy/J,EAAIlB,iBAAmBC,GACjFjB,EAAc,gBAAiBkC,EAAMz/J,GAAS,GAAIy/J,EAAIlC,aAAe,GACrEC,EAAc,gBAAiBiC,EAAMz/J,GAAS,GAAIy/J,EAAIjC,aAAe,GACrEc,GAAe,iBAAkBmB,GAAMA,EAAInB,aAC3Cb,GAA0C,IAAxBgC,EAAIhC,gBACtBC,GAA0C,IAAxB+B,EAAI/B,gBACtBC,EAA0B8B,EAAI9B,0BAA2B,EACzDC,EAAqB6B,EAAI7B,qBAAsB,EAC/CC,EAAiB4B,EAAI5B,iBAAkB,EACvCG,EAAayB,EAAIzB,aAAc,EAC/BC,EAAsBwB,EAAIxB,sBAAuB,EACjDC,GAA8C,IAA1BuB,EAAIvB,kBACxB5B,GAAsBmD,EAAInD,sBAAuB,EACjDyB,EAAa0B,EAAI1B,aAAc,EAC/BI,IAAoC,IAArBsB,EAAItB,aACnBC,IAAoC,IAArBqB,EAAIrB,aACnBC,GAAWoB,EAAIpB,WAAY,EAC3BnB,EAAoBuC,EAAIG,oBAAsB1C,EAC9C8B,GAAYS,EAAIT,WAAaD,GAE7BG,GAEqEA,IAAJ,IAAjEC,GAA6B55J,QAAQk6J,EAAIP,mBAAgDE,GAAgDK,EAAIP,kBAG7IG,GAA0C,0BAAtBH,GAAgD,SAAUl0I,GAC5E,OAAOA,GACLitI,GAEA2F,IACFF,GAAkB,GAGhBO,IACFD,GAAa,GAIXM,KACFnB,EAAen9J,GAAS,GAAI,GAAGrD,OAAO69J,GAAqB9mK,MAC3D2pK,EAAe,IACW,IAAtBiB,GAAah7H,OACftjC,GAASm9J,EAAc/D,IACvBp5J,GAASq9J,EAAc3D,MAGA,IAArB4E,GAAajF,MACfr5J,GAASm9J,EAAc9D,IACvBr5J,GAASq9J,EAAc1D,IACvB35J,GAASq9J,EAAcxD,MAGO,IAA5ByE,GAAahF,aACft5J,GAASm9J,EAAc7D,IACvBt5J,GAASq9J,EAAc1D,IACvB35J,GAASq9J,EAAcxD,MAGG,IAAxByE,GAAa9E,SACfx5J,GAASm9J,EAAc3D,IACvBx5J,GAASq9J,EAAczD,IACvB55J,GAASq9J,EAAcxD,MAKvB4F,EAAII,WACF1C,IAAiBC,IACnBD,EAAepE,GAAMoE,IAGvBn9J,GAASm9J,EAAcsC,EAAII,WAGzBJ,EAAIK,WACFzC,IAAiBC,IACnBD,EAAetE,GAAMsE,IAGvBr9J,GAASq9J,EAAcoC,EAAIK,WAGzBL,EAAIC,mBACN1/J,GAAS2+J,GAAqBc,EAAIC,mBAGhCD,EAAIlB,kBACFA,KAAoBC,KACtBD,GAAkBxF,GAAMwF,KAG1Bv+J,GAASu+J,GAAiBkB,EAAIlB,kBAI5BH,KACFjB,EAAa,UAAW,GAItBU,GACF79J,GAASm9J,EAAc,CAAC,OAAQ,OAAQ,SAItCA,EAAaxlJ,QACf3X,GAASm9J,EAAc,CAAC,iBACjBI,EAAY14H,OAKjBwyH,IACFA,GAAOoI,GAGTH,GAASG,IAGPM,GAAiC//J,GAAS,GAAI,CAAC,KAAM,KAAM,KAAM,KAAM,UAEvEggK,GAA0BhgK,GAAS,GAAI,CAAC,gBAAiB,OAAQ,QAAS,mBAK1EigK,GAAejgK,GAAS,GAAIq5J,IAChCr5J,GAASigK,GAAc3G,IACvBt5J,GAASigK,GAAc1G,IAEvB,IAAI2G,GAAkBlgK,GAAS,GAAIw5J,IACnCx5J,GAASkgK,GAAiBzG,IAU1B,IAAI0G,GAAuB,SAA8BzyI,GACvD,IAAIviC,EAAS+wK,EAAcxuI,GAItBviC,GAAWA,EAAOk0B,UACrBl0B,EAAS,CACP8pB,aAAc8pJ,GACd1/I,QAAS,aAIb,IAAIA,EAAU44I,GAAkBvqI,EAAQrO,SACpC+gJ,EAAgBnI,GAAkB9sK,EAAOk0B,SAE7C,GAAIqO,EAAQzY,eAAiB6pJ,GAI3B,OAAI3zK,EAAO8pB,eAAiB8pJ,GACP,QAAZ1/I,EAMLl0B,EAAO8pB,eAAiB4pJ,GACP,QAAZx/I,IAAwC,mBAAlB+gJ,GAAsCL,GAA+BK,IAK7F5mI,QAAQymI,GAAa5gJ,IAG9B,GAAIqO,EAAQzY,eAAiB4pJ,GAI3B,OAAI1zK,EAAO8pB,eAAiB8pJ,GACP,SAAZ1/I,EAKLl0B,EAAO8pB,eAAiB6pJ,GACP,SAAZz/I,GAAsB2gJ,GAAwBI,GAKhD5mI,QAAQ0mI,GAAgB7gJ,IAGjC,GAAIqO,EAAQzY,eAAiB8pJ,GAAgB,CAI3C,GAAI5zK,EAAO8pB,eAAiB6pJ,KAAkBkB,GAAwBI,GACpE,OAAO,EAGT,GAAIj1K,EAAO8pB,eAAiB4pJ,KAAqBkB,GAA+BK,GAC9E,OAAO,EAOT,IAAIC,EAA2BrgK,GAAS,GAAI,CAAC,QAAS,QAAS,OAAQ,IAAK,WAI5E,OAAQkgK,GAAgB7gJ,KAAaghJ,EAAyBhhJ,KAAa4gJ,GAAa5gJ,IAM1F,OAAO,GAQLihJ,GAAe,SAAsB5zK,GACvCsrK,GAAUoD,EAAU16J,QAAS,CAAEgtB,QAAShhC,IACxC,IAEEA,EAAKysB,WAAWse,YAAY/qC,GAC5B,MAAOmd,IACP,IACEnd,EAAK6zK,UAAYlE,EACjB,MAAOxyJ,IACPnd,EAAKga,YAWP85J,GAAmB,SAA0BjoK,EAAM7L,GACrD,IACEsrK,GAAUoD,EAAU16J,QAAS,CAC3B28C,UAAW3wD,EAAK+zK,iBAAiBloK,GACjC1M,KAAMa,IAER,MAAOmd,IACPmuJ,GAAUoD,EAAU16J,QAAS,CAC3B28C,UAAW,KACXxxD,KAAMa,IAOV,GAHAA,EAAKyrC,gBAAgB5/B,GAGR,OAATA,IAAkB8kK,EAAa9kK,GACjC,GAAIylK,GAAcC,EAChB,IACEqC,GAAa5zK,GACb,MAAOmd,UAET,IACEnd,EAAKizB,aAAapnB,EAAM,IACxB,MAAOsR,OAWX62J,GAAgB,SAAuBpvI,GAEzC,IAAI7lC,OAAM,EACNk1K,OAAoB,EAExB,GAAI5C,EACFzsI,EAAQ,oBAAsBA,MACzB,CAEL,IAAIltB,EAAU8zJ,GAAY5mI,EAAO,eACjCqvI,EAAoBv8J,GAAWA,EAAQ,GAGf,0BAAtB86J,KAEF5tI,EAAQ,iEAAmEA,EAAQ,kBAGrF,IAAIsvI,EAAexE,EAAqBA,EAAmBnB,WAAW3pI,GAASA,EAK/E,GAAI0tI,KAAcD,GAChB,IACEtzK,GAAM,IAAIuoB,GAAY6sJ,gBAAgBD,EAAc1B,IACpD,MAAOr1J,KAIX,IAAKpe,IAAQA,EAAIm7B,gBAAiB,CAChCn7B,EAAM25C,EAAe07H,eAAe9B,GAAW,WAAY,MAC3D,IACEvzK,EAAIm7B,gBAAgB4e,UAAYy5H,GAAiB,GAAK2B,EACtD,MAAO/2J,MAKX,IAAIogB,EAAOx+B,EAAIw+B,MAAQx+B,EAAIm7B,gBAO3B,OALI0K,GAASqvI,GACX12I,EAAK2O,aAAara,EAASlC,eAAeskJ,GAAoB12I,EAAKlN,WAAW,IAAM,MAIlFiiJ,KAAcD,GACTtC,EAAqBllK,KAAK9L,EAAKoyK,EAAiB,OAAS,QAAQ,GAGnEA,EAAiBpyK,EAAIm7B,gBAAkBqD,GAS5C82I,GAAkB,SAAyB51I,GAC7C,OAAOqxI,EAAmBjlK,KAAK4zB,EAAK/O,eAAiB+O,EAAMA,EAAMuwI,EAAWsF,aAAetF,EAAWuF,aAAevF,EAAWwF,UAAW,MAAM,IAS/IC,GAAe,SAAsBC,GACvC,QAAIA,aAAe1lG,GAAQ0lG,aAAetF,MAId,kBAAjBsF,EAAIhoJ,UAAoD,kBAApBgoJ,EAAIl0J,aAAuD,oBAApBk0J,EAAI3pI,aAAgC2pI,EAAIt7H,sBAAsB81H,GAAgD,oBAAxBwF,EAAIjpI,iBAA8D,oBAArBipI,EAAIzhJ,cAA2D,kBAArByhJ,EAAInsJ,cAAyD,oBAArBmsJ,EAAIxoI,eAa7SyoI,GAAU,SAAiBroK,GAC7B,MAAuE,YAA/C,qBAATgU,EAAuB,YAAcqtJ,GAAQrtJ,IAAsBhU,aAAkBgU,EAAOhU,GAA8E,YAAjD,qBAAXA,EAAyB,YAAcqhK,GAAQrhK,KAAoD,kBAApBA,EAAOpH,UAAoD,kBAApBoH,EAAOogB,UAWxPkoJ,GAAe,SAAsBC,EAAYC,EAAat0H,GAC3DyvH,EAAM4E,IAIX1J,GAAa8E,EAAM4E,IAAa,SAAU53G,GACxCA,EAAKpyD,KAAK6jK,EAAWoG,EAAat0H,EAAMoyH,QAcxCmC,GAAoB,SAA2BD,GACjD,IAAIp2K,OAAU,EAMd,GAHAk2K,GAAa,yBAA0BE,EAAa,MAGhDL,GAAaK,GAEf,OADAlB,GAAakB,IACN,EAIT,GAAItJ,GAAYsJ,EAAYpoJ,SAAU,mBAEpC,OADAknJ,GAAakB,IACN,EAIT,IAAIniJ,EAAUggJ,GAAkBmC,EAAYpoJ,UAS5C,GANAkoJ,GAAa,sBAAuBE,EAAa,CAC/CniJ,QAASA,EACTqiJ,YAAavE,KAIVkE,GAAQG,EAAYG,sBAAwBN,GAAQG,EAAYp2K,WAAai2K,GAAQG,EAAYp2K,QAAQu2K,qBAAuBrJ,GAAW,UAAWkJ,EAAYh8H,YAAc8yH,GAAW,UAAWkJ,EAAYt0J,aAErN,OADAozJ,GAAakB,IACN,EAIT,GAAgB,WAAZniJ,GAAwBi5I,GAAW,aAAckJ,EAAYh8H,WAE/D,OADA86H,GAAakB,IACN,EAIT,IAAKrE,EAAa99I,IAAYk+I,EAAYl+I,GAAU,CAElD,GAAI++I,KAAiBG,GAAgBl/I,GAAU,CAC7C,IAAIlG,EAAa+iJ,EAAcsF,IAAgBA,EAAYroJ,WACvD4D,EAAagzI,EAAcyR,IAAgBA,EAAYzkJ,WAE3D,GAAIA,GAAc5D,EAGhB,IAFA,IAAInsB,EAAa+vB,EAAWrsB,OAEnBtD,EAAIJ,EAAa,EAAGI,GAAK,IAAKA,EACrC+rB,EAAWyf,aAAaojI,EAAUj/I,EAAW3vB,IAAI,GAAO6uK,EAAeuF,IAM7E,OADAlB,GAAakB,IACN,EAIT,OAAIA,aAAuBr9G,IAAYg8G,GAAqBqB,IAC1DlB,GAAakB,IACN,GAGQ,aAAZniJ,GAAsC,YAAZA,IAA0Bi5I,GAAW,uBAAwBkJ,EAAYh8H,YAMpGo4H,GAA+C,IAAzB4D,EAAY5vK,WAEpCxG,EAAUo2K,EAAYt0J,YACtB9hB,EAAU+sK,GAAc/sK,EAASwxK,EAAkB,KACnDxxK,EAAU+sK,GAAc/sK,EAASyxK,EAAa,KAC1C2E,EAAYt0J,cAAgB9hB,IAC9B4sK,GAAUoD,EAAU16J,QAAS,CAAEgtB,QAAS8zI,EAAYxF,cACpDwF,EAAYt0J,YAAc9hB,IAK9Bk2K,GAAa,wBAAyBE,EAAa,OAE5C,IAnBLlB,GAAakB,IACN,IA8BPI,GAAoB,SAA2BC,EAAOC,EAAQ3sK,GAEhE,GAAIgpK,KAA4B,OAAX2D,GAA8B,SAAXA,KAAuB3sK,KAASopB,GAAYppB,KAASoqK,IAC3F,OAAO,EAOT,GAAI7B,IAAoBF,EAAYsE,IAAWxJ,GAAWwE,EAAcgF,SAAgB,GAAIrE,GAAmBnF,GAAWyE,EAAc+E,QAAgB,KAAKzE,EAAayE,IAAWtE,EAAYsE,GAC/L,OAAO,EAGF,GAAInD,GAAoBmD,SAAgB,GAAIxJ,GAAW4E,EAAmB/E,GAAchjK,EAAO8nK,EAAoB,WAAa,GAAgB,QAAX6E,GAA+B,eAAXA,GAAsC,SAAXA,GAAgC,WAAVD,GAAwD,IAAlCzJ,GAAcjjK,EAAO,WAAkBspK,GAAcoD,IAAe,GAAIlE,IAA4BrF,GAAW0E,EAAsB7E,GAAchjK,EAAO8nK,EAAoB,WAAa,GAAK9nK,EACra,OAAO,QAGT,OAAO,GAaL4sK,GAAsB,SAA6BP,GACrD,IAAI9vJ,OAAO,EACPvc,OAAQ,EACR2sK,OAAS,EACTtsH,OAAI,EAER8rH,GAAa,2BAA4BE,EAAa,MAEtD,IAAI17H,EAAa07H,EAAY17H,WAI7B,GAAKA,EAAL,CAIA,IAAIk8H,EAAY,CACdvwJ,SAAU,GACVolJ,UAAW,GACXoL,UAAU,EACVC,kBAAmB7E,GAErB7nH,EAAI1P,EAAWp1C,OAGf,MAAO8kD,IAAK,CACV9jC,EAAOo0B,EAAW0P,GAClB,IAAI2sH,EAAQzwJ,EACRnZ,EAAO4pK,EAAM5pK,KACb0c,EAAektJ,EAAMltJ,aAazB,GAXA9f,EAAQkjK,GAAW3mJ,EAAKvc,OACxB2sK,EAASzC,GAAkB9mK,GAG3BypK,EAAUvwJ,SAAWqwJ,EACrBE,EAAUnL,UAAY1hK,EACtB6sK,EAAUC,UAAW,EACrBD,EAAUI,mBAAgB97J,EAC1Bg7J,GAAa,wBAAyBE,EAAaQ,GACnD7sK,EAAQ6sK,EAAUnL,WAEdmL,EAAUI,gBAKd5B,GAAiBjoK,EAAMipK,GAGlBQ,EAAUC,UAKf,GAAI3J,GAAW,OAAQnjK,GACrBqrK,GAAiBjoK,EAAMipK,OADzB,CAMI5D,IACFzoK,EAAQgjK,GAAchjK,EAAOynK,EAAkB,KAC/CznK,EAAQgjK,GAAchjK,EAAO0nK,EAAa,MAI5C,IAAIgF,EAAQxC,GAAkBmC,EAAYpoJ,UAC1C,GAAKwoJ,GAAkBC,EAAOC,EAAQ3sK,GAKtC,IACM8f,EACFusJ,EAAY9hJ,eAAezK,EAAc1c,EAAMpD,GAG/CqsK,EAAY7hJ,aAAapnB,EAAMpD,GAGjC4iK,GAASqD,EAAU16J,SACnB,MAAOmJ,OAIXy3J,GAAa,0BAA2BE,EAAa,QAQnDa,GAAqB,SAASA,EAAmBzjK,GACnD,IAAI0jK,OAAa,EACbC,EAAiBxB,GAAgBniK,GAGrC0iK,GAAa,0BAA2B1iK,EAAU,MAElD,MAAO0jK,EAAaC,EAAeljI,WAEjCiiI,GAAa,yBAA0BgB,EAAY,MAG/Cb,GAAkBa,KAKlBA,EAAWl3K,mBAAmBowK,GAChC6G,EAAmBC,EAAWl3K,SAIhC22K,GAAoBO,IAItBhB,GAAa,yBAA0B1iK,EAAU,OAyQnD,OA9PAw8J,EAAUoH,SAAW,SAAUlxI,EAAOmuI,GACpC,IAAIx1I,OAAO,EACPw4I,OAAe,EACfjB,OAAc,EACdpxI,OAAU,EACVsyI,OAAa,EAUjB,GANAzD,IAAkB3tI,EACd2tI,KACF3tI,EAAQ,eAIW,kBAAVA,IAAuB+vI,GAAQ/vI,GAAQ,CAEhD,GAA8B,oBAAnBA,EAAM16B,SACf,MAAM2hK,GAAgB,8BAGtB,GADAjnI,EAAQA,EAAM16B,WACO,kBAAV06B,EACT,MAAMinI,GAAgB,mCAM5B,IAAK6C,EAAUE,YAAa,CAC1B,GAAqC,WAAjCjB,GAAQ77I,EAAOmkJ,eAA6D,oBAAxBnkJ,EAAOmkJ,aAA6B,CAC1F,GAAqB,kBAAVrxI,EACT,OAAO9S,EAAOmkJ,aAAarxI,GAG7B,GAAI+vI,GAAQ/vI,GACV,OAAO9S,EAAOmkJ,aAAarxI,EAAMivI,WAIrC,OAAOjvI,EAgBT,GAZKwsI,GACH0B,GAAaC,GAIfrE,EAAU16J,QAAU,GAGC,kBAAV4wB,IACT+sI,IAAW,GAGTA,SAAiB,GAAI/sI,aAAiBtkB,EAGxCid,EAAOy2I,GAAc,iBACrB+B,EAAex4I,EAAK7N,cAAcsgJ,WAAWprI,GAAO,GACtB,IAA1BmxI,EAAa7wK,UAA4C,SAA1B6wK,EAAarpJ,UAGX,SAA1BqpJ,EAAarpJ,SADtB6Q,EAAOw4I,EAKPx4I,EAAK/P,YAAYuoJ,OAEd,CAEL,IAAKzE,IAAeJ,IAAuBC,IAEnB,IAAxBvsI,EAAM/rB,QAAQ,KACZ,OAAO62J,GAAsBE,GAAsBF,EAAmBnB,WAAW3pI,GAASA,EAO5F,GAHArH,EAAOy2I,GAAcpvI,IAGhBrH,EACH,OAAO+zI,EAAa,KAAO3B,EAK3BpyI,GAAQ8zI,GACVuC,GAAar2I,EAAKp9B,YAIpB,IAAI+1K,EAAe7B,GAAgB1C,GAAW/sI,EAAQrH,GAGtD,MAAOu3I,EAAcoB,EAAavjI,WAEH,IAAzBmiI,EAAY5vK,UAAkB4vK,IAAgBpxI,GAK9CqxI,GAAkBD,KAKlBA,EAAYp2K,mBAAmBowK,GACjC6G,GAAmBb,EAAYp2K,SAIjC22K,GAAoBP,GAEpBpxI,EAAUoxI,GAMZ,GAHApxI,EAAU,KAGNiuI,GACF,OAAO/sI,EAIT,GAAI0sI,EAAY,CACd,GAAIC,EAAqB,CACvByE,EAAahkJ,EAAuBnnB,KAAK0yB,EAAK7N,eAE9C,MAAO6N,EAAKp9B,WAEV61K,EAAWxoJ,YAAY+P,EAAKp9B,iBAG9B61K,EAAaz4I,EAcf,OAXIi0I,IAQFwE,EAAahG,EAAWnlK,KAAKgkK,EAAkBmH,GAAY,IAGtDA,EAGT,IAAIG,EAAiBhF,EAAiB5zI,EAAKs2I,UAAYt2I,EAAKub,UAQ5D,OALIo4H,IACFiF,EAAiB1K,GAAc0K,EAAgBjG,EAAkB,KACjEiG,EAAiB1K,GAAc0K,EAAgBhG,EAAa,MAGvDT,GAAsBE,GAAsBF,EAAmBnB,WAAW4H,GAAkBA,GASrGzH,EAAU0H,UAAY,SAAUrD,GAC9BD,GAAaC,GACb3B,GAAa,GAQf1C,EAAU2H,YAAc,WACtBzD,GAAS,KACTxB,GAAa,GAaf1C,EAAU4H,iBAAmB,SAAU3uJ,EAAK3C,EAAMvc,GAE3CmqK,IACHE,GAAa,IAGf,IAAIqC,EAAQxC,GAAkBhrJ,GAC1BytJ,EAASzC,GAAkB3tJ,GAC/B,OAAOkwJ,GAAkBC,EAAOC,EAAQ3sK,IAU1CimK,EAAU6H,QAAU,SAAU1B,EAAY2B,GACZ,oBAAjBA,IAIXvG,EAAM4E,GAAc5E,EAAM4E,IAAe,GACzCvJ,GAAU2E,EAAM4E,GAAa2B,KAU/B9H,EAAU+H,WAAa,SAAU5B,GAC3B5E,EAAM4E,IACRxJ,GAAS4E,EAAM4E,KAUnBnG,EAAUgI,YAAc,SAAU7B,GAC5B5E,EAAM4E,KACR5E,EAAM4E,GAAc,KASxBnG,EAAUiI,eAAiB,WACzB1G,EAAQ,IAGHvB,EAGT,IAAIkI,GAASnI,KAEToI,GAAwB,CAAC,SAAU,SACnCC,GAAe,GACnB,SAASC,GAA+BpkJ,GAChCi9B,GAASinH,GAAuBlkJ,IAChCmkJ,GAAaxyK,KAAKquB,EAAQhG,eAGlC,SAASqqJ,GAAapgI,EAAMxwB,GACxB,OAAOwwJ,GAAOd,SAASl/H,EAAM6R,EAAW,CAAE0qH,SAAU2D,GAAc1D,SAAU,CAAC,MAAO,SAAU,WAAY,QAASvC,YAAa,CACxH,QACA,SACA,WACA,OACA,SACA,SACA,OACA,QACA,OACA,QACA,SACA,SACCzqJ,IAGb,SAAS6wJ,GAAgBj3K,EAAM2jB,GAC3B,OAAO3jB,EACFo1D,QAAQpnD,QAAQ,IAAIuhD,OAAO,SAAW5rC,EAAW,cAAgBA,EAAW,WAAY,MAAO,IAC/FoK,OAET,SAASmpJ,GAAyBtgI,GAC9BA,EAAOA,EAAKt1C,MAAMi3D,IAAW,GAC7B,IAAIpzD,EAAQyxC,EAAKt1C,MAAM,IAAIiuD,OAAO4I,GAAa,MAC/C,OAAOhzD,EACDA,EAAM8e,QAAO,SAAUquC,EAAKttC,GAC1B,IAAIouC,EAAKpuC,EAAK+I,OAAOrrB,MAAM,KAAMmJ,EAAOunD,EAAG,GAAI+jH,EAAS/jH,EAAGn0D,MAAM,GAIjE,OAHIk4K,EAAOnzK,SACPsuD,EAAIzmD,GAAQsrK,EAAO1zK,KAAK,KAAKuK,QAAQ,OAAQ,IAAI+f,QAE9CukC,IACR,IACD,GAEV,SAAS8kH,GAAarvJ,GAClB,OAAO8qC,GAAU9qC,EAAIqxB,YAAYn1B,QAAO,SAAUquC,EAAKttC,GAEnD,OADAstC,EAAIttC,EAAK0H,UAAY1H,EAAKwJ,UACnB8jC,IACR,IAEP,SAAS+kH,GAAYr3K,EAAM2jB,EAAU2zJ,EAAWC,GAC5C,IAAIxvJ,EAAMwvJ,EAAeC,aAAa7zJ,EAA5B4zJ,CAAsCv3K,GAC5C42C,EAAO0gI,EAAUvvJ,EAAI8rJ,WACrB/4H,EAAYjpB,SAASiB,cAAc,OACvCgoB,EAAUhC,UAAYlC,EACtB7uB,EAAM+yB,EAAU36C,WAChB,IAAIs3K,EAAYL,GAAarvJ,GAC7B,MAAO,CAAEA,IAAKA,EAAK0vJ,UAAWA,GAElC,IAAIC,GAAgB,CAChBlb,UAAW,SAAU74I,EAAUqzJ,EAAcO,GACzC,MAAO,CACHxxJ,MAAM,EACNrnB,QAAS,SACTinB,MAAO,QACPxgB,MAAO,CACHsyK,UAAW,CAAEvyJ,QAAS,IACtByyJ,aAAc,CAAEzyJ,QAAS,IACzBs3I,UAAW,CAAEt3I,SAAS,IAE1B6D,SAAU,CACN,CACIpB,IAAKhE,EACL8E,SAAU,SAAUV,GAChB,MAAO,CACH0vJ,UAAWL,GAAarvJ,GACxB4vJ,aAAc5vJ,EAAI+wB,cAKlClnB,MAAO,SAAU5xB,GACb,IAAIozD,EAAKikH,GAAYr3K,EAAM2jB,EAAUqzJ,EAAcO,GAAiBxvJ,EAAMqrC,EAAGrrC,IAAK0vJ,EAAYrkH,EAAGqkH,UAEjG,OADAA,EAAUprI,MAAQorI,EAAUprI,MAAQorI,EAAUprI,MAAQ,cAAgB,aAC/Dsc,EAAgB,CAAChlC,EAAU8zJ,GAAY5kH,GAAU9qC,EAAIsI,gBAIxE62C,WAAY,SAAUvjD,EAAUqzJ,EAAcO,GAC1C,MAAO,CACHpyK,MAAO,CACHsyK,UAAW,CAAEvyJ,QAAS,IACtBgiD,WAAY,CAAEhiD,SAAS,IAE3B6D,SAAU,CACN,CACIpB,IAAKhE,EACL8E,SAAU,SAAUV,GAChB,MAAO,CACH0vJ,UAAWL,GAAarvJ,OAKxC6J,MAAO,SAAU5xB,GACb,IAAIy3K,EAAYJ,GAAYr3K,EAAM2jB,EAAUqzJ,EAAcO,GAAgBE,UAC1E,MAAO,CAAC9zJ,EAAU8zJ,EAAW,OAK7C,SAASG,GAAoBC,EAAcb,EAAcO,GACrD,IAAIO,EAAgB,CAAEn7J,MAAO,GAAIxW,MAAO,IAWxC,MAVA,CAAC,YAAa,cAAc0D,SAAQ,SAAUkuK,GACtCF,EAAaE,IACbpsK,OAAOotB,KAAK8+I,EAAaE,IAAWluK,SAAQ,SAAUxL,GAClD,IAAI25K,EAA0B,cAAbD,EAA2B,QAAU,QAEtDhB,GAA+B14K,GAC/By5K,EAAcE,GAAY35K,GAAQq5K,GAAcK,GAAU15K,EAAM24K,EAAcO,SAInFO,EAGX,IAAIG,GAAa,aACbC,GAAiB,CACjBnlH,UAAW,SAAU51C,EAAGi2C,GACpB,IAAIuD,EAAWvD,EAAGuD,SAAUhoB,EAASykB,EAAGzkB,OAAQvoB,EAAUgtC,EAAGhtC,QAC7D,OAAIA,EAAQohJ,OACD,CACHnpK,KAAMs4D,EAAW,UAAY,WAC7BuwG,cAAc,EACdv0I,QAAS,KAGVgc,KAEXw4H,UAAW,SAAUnnK,GACjB,IAAIm4K,EAAiBn4K,EAAKg3B,MAA2B,eAAnBh3B,EAAKg3B,KAAK34B,KACxC+5K,EAAWD,GAAkB,YAAYrwK,KAAK9H,EAAKg3B,KAAKo+B,SACxD12D,EAAU05K,EAAW,KAAO,SAChC,MAAO,CAAE/5K,KAAM,OAAQK,QAASA,IAEpC2zD,KAAM,SAAUryD,EAAMozD,GAClB,IAAIuD,EAAWvD,EAAGuD,SAClB,GAAIA,EAAU,CACV,IAAIvd,EAAa,GACbg2B,EAAa,GASjB,OARIpvE,EAAKu0D,SAASkS,OACdrtB,EAAW,aAAe,GAC1Bg2B,EAAW9qE,KAAK,kBACZtE,EAAKu0D,SAASke,UACdrD,EAAW9qE,KAAK,WAChB80C,EAAW,qBAAuB,KAGnC,CACH/6C,KAAM,UACNs0B,QAAS,KACTy8C,WAAYA,EACZh2B,WAAYA,EACZ8tH,cAAc,GAGtB,MAAO,CACH7oK,KAAM,WACNs0B,QAAS,KACTu0I,cAAc,IAGtBhmK,KAAM,SAAUlB,GACZ,IAAIo5C,EAAa,CAAE,iBAAkBiF,OAAOr+C,EAAK2kE,YACjD,MAAO,CACH,CAAEtmE,KAAM,UAAWs0B,QAAS,OAAQymB,WAAYA,GAChD,CAAE/6C,KAAM,OAAQK,QAASsB,EAAKo1D,SAC9B,CAAE/2D,KAAM,WAAYs0B,QAAS,UAGrCk0C,UAAW,SAAU7mE,GACjB,IAAIozD,EAAKpzD,EAAMslE,EAAclS,EAAGkS,YAAarP,EAAO7C,EAAG6C,KACnDyxG,EAAYzxG,EAAOA,EAAKvzD,MAAM,OAAS,GACvC21K,EAAa,GACbC,EAAY,GAIhB,GAHIhzG,EAAc,IACdgzG,EAAU,kBAAoBhzG,GAE9BoiG,EAAU1jK,OAAS,GAAK0jK,EAAU,GAAG1jK,OAAS,EAAG,CACjD,IAAImpG,EAAOu6D,EAAU,GACrB2Q,EAAW/zK,KAAK,QAAU6oG,GAC1BmrE,EAAU,iBAAmBnrE,EAEjC,MAAO,CACH,CAAE9uG,KAAM,UAAWs0B,QAAS,MAAOy8C,WAAYipG,GAC/C,CAAEh6K,KAAM,UAAWs0B,QAAS,OAAQymB,WAAYk/H,GAChD,CAAEj6K,KAAM,OAAQK,QAASsB,EAAKo1D,SAC9B,CAAE/2D,KAAM,WAAYs0B,QAAS,QAC7B,CAAEt0B,KAAM,WAAYs0B,QAAS,SAGrCu1I,aAAc,SAAUloK,EAAMozD,GAC1B,IAAIzkB,EAASykB,EAAGzkB,OAAQgoB,EAAWvD,EAAGuD,SAAUmxG,EAAe10G,EAAG00G,aAC9D7xG,EAAOj2D,EAAKi2D,KAChB,IAAgC,IAA5BA,EAAKp9C,QAAQ,WAAoB89C,EAAU,CAC3CmxG,IACA,IAAIppK,EAAU+3D,GAAiBz2D,GAC3BknE,EAAahR,GAAYD,EAAMv3D,GAASm1K,UAC5C,MAAO,CACH,CAAEx1K,KAAM,UAAWs0B,QAAS,OAAQy8C,WAAY,CAAC,eACjD,CAAE/wE,KAAM,OAAQK,QAASwoE,GACzB,CAAE7oE,KAAM,WAAYs0B,QAAS,SAGrC,OAAOgc,MAGf,SAAS4pI,GAAwB3nH,EAAgB4nH,GAC7C,IAAIzQ,EAAat/G,EAAW,GAAIyvH,IAgDhC,OA/CItnH,IACAm3G,EAAWz3G,KAAO,SAAUnzC,EAAGi2C,GAC3B,IAAIuD,EAAWvD,EAAGuD,SAAUhoB,EAASykB,EAAGzkB,OACpChlC,EAASglC,IAIb,OAHIgoB,IACAhtD,EAAOyvC,WAAaqP,EAAWA,EAAW,GAAI9+C,EAAOyvC,YAAawX,IAE/DjnD,IAGX6uK,GACA7sK,OAAOotB,KAAKy/I,GAAkB3uK,SAAQ,SAAU3E,GAC5C,IAAIgkK,EAAenB,EAAW7iK,GAC1B8iK,EAAkBwQ,EAAiBtzK,GACnCgkK,GAAgB/oG,GAAa6nG,GAC7BD,EAAW7iK,GAAY,SAAUlF,EAAMgoB,GACnC,IAAIywJ,EAAahwH,EAAW,GAAIzgC,GAEhC,OADAywJ,EAAW9pI,OAAS,WAAc,OAAOu6H,EAAalpK,EAAMgoB,IACrDggJ,EAAgBhoK,EAAMy4K,IAG5B7oH,GAAS,CAAC,YAAa,cAAe1qD,KAAci7D,GAAa6nG,GACtED,EAAW7iK,GAAY,SAAUlF,EAAMgoB,GACnC,IAAI1T,EAAUtU,EAAKo1D,QAAQ9zD,MAAMi3D,IACjC,GAAIjkD,EAAS,CACT,IAAIokK,EAAWpkK,EAAQ,GAAIqkK,EAAcrkK,EAAQ,GAAIskK,EAAetkK,EAAQ,GACxEqP,GAAYg1J,GAAeC,GAAcjsJ,cACzCksJ,EAAgB7Q,EAAgBrkJ,GAChCg0J,EAAeV,GAAgBj3K,EAAM2jB,GACzC,GAAIk1J,EAAe,CAEf,IAAI7lK,EAAUy1C,EAAW,GAAIzoD,GAK7B,OAJAgT,EAAQ7N,MAAQ+xK,GAAyBwB,GACzC1lK,EAAQ2kK,aAAeA,EACvB3kK,EAAQ3U,KAAOslB,EACfqE,EAAQ2uC,UAAYshH,GAAWnwK,KAAK9H,EAAKo1D,SAClCyjH,EAAc7lK,EAASgV,IAGtC,OAAOA,EAAQ2mB,UAInBo5H,EAAW7iK,GAAY8iK,KAI5BD,EAGX,IAAI+Q,GAAgB,CAAC,OAAQ,OAAQ,cACjCC,GAAmB,CAAC,KAAM,KAAM,cACpC,SAASC,GAAYj6K,EAAK4B,GACtB,IAAIyyD,EACA4K,EAASj/D,EAAIoR,MAAMxP,GACvB,OAAQq9D,EAAO19D,YAAqC,IAAtB09D,EAAO19D,cAAwD,QAAjC8yD,EAAK4K,EAAO79D,WAAW6G,YAAyB,IAAPosD,OAAgB,EAASA,EAAGrlC,QAErI,SAASkrJ,GAAyBl6K,EAAK80D,EAAQlvB,GAC3C,IAAI7/B,EAAQ8uD,GAAeC,GAAU,EACjCpxD,EAAMsxD,GAAaF,GAAU,EAC7Bp3B,EAAOkI,EAAS7/B,GAAO43B,wBACvBK,EAAS4H,EAASliC,GAAKo4D,UACvBl2B,EAAS7/B,GAAO+1D,UAChBl2B,EAASliC,GAAK65B,aAClB,MAAO,CACHS,OAAQA,GAAU,EACZ4H,EAAS7/B,GAAOw3B,aAChBS,EAASm8I,GAAoBn6K,EAAK4lC,EAAUv8B,KAAKqL,IAAIhR,EAAM,EAAG1D,EAAIuB,WAAa,IACrFm8B,KAAMA,GAGd,SAASy8I,GAAoBn6K,EAAK4lC,EAAU7/B,GACxC,IAAIrC,EAAM1D,EAAIuB,WAAa,EACvBy8B,EAAS,EACb,MAAOj4B,GAASrC,GAAOu2K,GAAYj6K,EAAK+F,GACpCi4B,GAAU4H,EAAS7/B,GAAOw3B,aAC1Bx3B,GAAS,EAEb,OAAOi4B,EAEX,SAASo8I,GAAqBxqH,EAAIlwB,GAC9B,OAAQkwB,EAAGxgC,aAAa,gBAAkBwgC,EAAGsN,gBAAkBx9B,EAC3DkwB,EAAKA,EAAGsN,cAEZ,OAAOtN,EAEX,SAASyqH,GAAkBzqH,EAAIlwB,GAC3B,IAAIo8B,EAAY,EAChB,MAAOlM,GAAMA,IAAOlwB,EAAM,CAItB,GAHKmxB,GAASmpH,GAAkBpqH,EAAGh8B,WAC/BkoC,GAAalM,EAAGkM,WAEhBlM,EAAGqM,eAAiBv8B,EAAKu8B,aACzB,MAEJrM,EAAKA,EAAGsN,cAEZ,OAAOpB,EAEX,SAASw+G,GAA+Br7I,EAAWS,GAC/C,IAAIkwB,EAAKlwB,EACLzH,EAAO,KACX,MAAO23B,EAAI,CACP,IAAIsmH,EAAoBtmH,EAAGsmH,kBAC3B,IAAKA,EACD,MAEJ,IAAIqE,EAAcC,GAAkCtE,EAAmBj3I,EAAWo7I,GAAkBzqH,EAAIlwB,IACxGzH,EAAO23B,EACPA,EAAK2qH,EAET,IAAIE,EAAa7qH,GAAM33B,EACvB,OAAOwiJ,IAAe/6I,EAAO,KAAO+6I,EAExC,SAASD,GAAkC5qH,EAAI3wB,EAAW68B,GACtD,OAAIlM,GAAM3wB,EAAY68B,EAAYlM,EAAGkM,UACzB0+G,GAAkC5qH,EAAG8qH,mBAAoBz7I,EAAW68B,IAAclM,EAEvF,KAEX,SAAS+qH,GAAiB17I,EAAW68B,EAAW99B,EAAQ48I,GACpD,IAAI5hD,EAAQ3vH,KAAKqL,KAAKuqB,EAAY68B,GAAa99B,EAAQ,GACvD,OAAOg7F,EAAQ4hD,EAEnB,SAASC,GAAiBC,EAAgBhmH,GACtC,IAAIlF,EAAKkrH,EAAe1pJ,cAAc,iBAAoB0jC,EAAOnmD,GAAK,MACtE,OAAQihD,GAAMwF,GAAmBN,GAC7BA,EAASA,EAAOp1D,OAChBkwD,EAAKkrH,EAAe1pJ,cAAc,iBAAoB0jC,EAAOnmD,GAAK,MAEtE,OAAOosK,GAAsB,CAAEjmH,OAAQA,EAAQlF,GAAIA,IAEvD,SAASmrH,GAAsB1mH,GAC3B,IAAIS,EAAST,EAAGS,OAAQlF,EAAKyE,EAAGzE,GAChC,OAAQiB,GAASkpH,GAAejlH,EAAOx1D,OAAyB,UAAhBw1D,EAAOx1D,OAAqBw1D,EAAO1zD,WAC/E0zD,EAASA,EAAO1zD,WAChBwuD,EAAKA,EAAGsmH,kBAEZ,MAAO,CAAEphH,OAAQA,EAAQlF,GAAIA,GAGjC,IAAIorH,GAAgB,GACpB,SAASj6G,GAAUpyD,EAAIqvB,GACnBg9I,GAAcrsK,GAAMqsK,GAAcrsK,IAAO,GACzCqsK,GAAcrsK,GAAIqvB,OAASA,EAE/B,SAASi9I,GAAatsK,EAAImtD,GACtBk/G,GAAcrsK,GAAMqsK,GAAcrsK,IAAO,GACzCqsK,GAAcrsK,GAAImtD,UAAYA,EAElC,SAASo/G,GAAUvsK,GACf,OAAOqsK,GAAcrsK,IAAOqsK,GAAcrsK,GAAIqvB,OAElD,SAASm9I,GAAaxsK,GAClB,OAAOqsK,GAAcrsK,IAAOqsK,GAAcrsK,GAAImtD,UAElD,SAASs/G,GAAuBn6K,GACxBA,WACO+5K,GAAct2J,OAAOzjB,EAAKmuB,aAAa,iBAC9C0kC,GAAU7yD,EAAK2kC,UAAU96B,SAAQ,SAAUsG,GACvCgqK,GAAuBhqK,OAInC,SAASiqK,GAAqBp6K,EAAMy+B,EAAM47I,GACtC,IAAIC,EAAeL,GAAUI,GACzBE,EAAYL,GAAaG,GACzBG,EAAaF,GAAgBt6K,EAAKs8B,aAClCu+B,EAAY0/G,GAAanB,GAAkBp5K,EAAMy+B,IAASz+B,EAAK66D,UAOnE,OANKy/G,GACDx6G,GAAUu6G,EAAUG,GAEnBD,GACDP,GAAaK,EAAUx/G,GAEpB,CAAE2/G,WAAYA,EAAY3/G,UAAWA,GAGhD,IAAI4/G,GAAkBvmJ,GAAI,wBAC1B,SAASwmJ,GAAcxgB,EAAU/oF,GAC7B,IAAI2rF,EAAO5C,EAAS/5J,WACpB,MAAO28J,GAAQA,EAAK3tJ,KAAM,CACtB,GAAI6kD,GAAa8oG,EAAK3tJ,MAAQgiE,EAAW,EACrC,MAEJ2rF,EAAOA,EAAK3tJ,KAEhB,OAAO2tJ,EAcX,IAAI6d,GAAiC,WACjC,SAASA,EAAgB/+G,EAAcx1C,GACnC,IAAIuoC,EAAK98B,SAASiB,cAAc,OAChChqB,KAAK6lD,GAAKA,EACV7lD,KAAK8yD,aAAeA,EACpB9yD,KAAK8xK,WAAax0J,EAAQw0J,SAC1B9xK,KAAK6lD,GAAG9d,UAAY3c,GAAI,cACxB,IAAI08B,EAAiBxqC,EAAQwqC,eAAgBiqH,EAAqBz0J,EAAQy0J,mBAAoBvD,EAAYlxJ,EAAQkxJ,UAAWlkH,EAAKhtC,EAAQ00J,UAAWA,OAAmB,IAAP1nH,GAAwBA,EACzLtqD,KAAKiyK,SAAW,IAAIlS,GAAS,CACzBF,KAAK,EACLnB,QAAQ,EACRO,WAAYwQ,GAAwB3nH,EAAgBiqH,KAExD/xK,KAAKkyK,aAAe,KACpBlyK,KAAKwuK,UAAYA,EACjBxuK,KAAKkzB,UAAU8+I,GACfhyK,KAAKmyK,qBAEDnyK,KAAK8xK,WACL9xK,KAAK+wK,eAAenlK,MAAMwmK,aAAe,cA8HjD,OA3HAP,EAAgB1xK,UAAUgyK,mBAAqB,WAC3CnyK,KAAK+wK,eAAiBr/G,GAAkB,eAAkBtmC,GAAI,YAAc,YACvEprB,KAAK8xK,UACN9xK,KAAK6lD,GAAGnhC,YAAY1kB,KAAK+wK,iBAGjCc,EAAgB1xK,UAAU+tE,aAAe,SAAUt0D,GAC/C43C,GAAYxxD,KAAK6lD,GAAI,SAAUjsC,IAEnCi4J,EAAgB1xK,UAAU+yB,UAAY,SAAU8+I,GAC5C,IAAIj/G,EAAQ/yD,KACZA,KAAK8yD,aAAaM,OAAO,gBAAiBpzD,KAAK+Q,OAAOoN,KAAKne,OACvDA,KAAK8xK,WAGLE,IACAhyK,KAAK8yD,aAAaM,OAAO,sBAAsB,SAAU9I,GACrD,IAAIS,EAAST,EAAGS,OAAQ0V,EAAYnW,EAAGmW,UACvC1N,EAAMs/G,iBAAiBtnH,EAAQ0V,MAEnCzgE,KAAK8yD,aAAaM,OAAO,QAAQ,WAC7BL,EAAMu/G,sBAGd3hG,GAAK3wE,KAAK6lD,GAAI,UAAU,SAAU7yB,GAC9B+/B,EAAMD,aAAawB,KAAK,SAAU,UAAWi8G,GAA+Bv9I,EAAM79B,OAAO+/B,UAAW69B,EAAMg+G,oBAE9G/wK,KAAK8yD,aAAaM,OAAO,2BAA2B,WAAc,OAAOL,EAAMmb,cAAa,MAC5FluE,KAAK8yD,aAAaM,OAAO,yBAAyB,WAAc,OAAOL,EAAMmb,cAAa,QAE9F2jG,EAAgB1xK,UAAUmyK,gBAAkB,WACxC,GAAItyK,KAAKkyK,aAAc,CACnB,IAAIK,EAAYvyK,KAAKwyK,mBAAmBxyK,KAAKkyK,cACzCK,GACAjvH,GAAcivH,EAAWZ,MAIrCE,EAAgB1xK,UAAUkyK,iBAAmB,SAAUI,EAAYhyG,GAC3DgyG,IACAA,EAAa5mH,GAAgB4mH,GAAY,SAAU1nH,GAAU,OAAQa,GAAeb,MAC5D,aAApB0nH,EAAWl9K,KACXk9K,EAAab,GAAca,EAAYhyG,EAAU,IAExB,cAApBgyG,EAAWl9K,OAEhBk9K,EAAa,OAGrB,IAAIP,EAAeO,EAAaA,EAAW7tK,GAAK,KAChD,GAAI5E,KAAKkyK,eAAiBA,EAA1B,CAGA,IAAIQ,EAAQ1yK,KAAKwyK,mBAAmBxyK,KAAKkyK,cACrCS,EAAQ3yK,KAAKwyK,mBAAmBN,GAChCQ,GACApvH,GAAcovH,EAAOf,IAErBgB,GACA3vH,EAAW2vH,EAAOhB,IAEtB3xK,KAAKkyK,aAAeA,IAExBL,EAAgB1xK,UAAUqyK,mBAAqB,SAAU9T,GACrD,OAAOA,EACD1+J,KAAK+wK,eAAe1pJ,cAAc,iBAAoBq3I,EAAS,MAC/D,MAEVmT,EAAgB1xK,UAAU4Q,OAAS,SAAU2wB,GACzC,IAAIqxB,EAAQ/yD,KACZ0hC,EAAQ3gC,SAAQ,SAAU49D,GAAc,OAAO5L,EAAMqpG,kBAAkBz9F,MACvE3+D,KAAK8yD,aAAawB,KAAK,qBAAsBt0D,OAEjD6xK,EAAgB1xK,UAAUi8J,kBAAoB,SAAUz9F,GACpD,IAAI5L,EAAQ/yD,KACR6T,EAAQ8qD,EAAW9qD,MAAO+qD,EAAmBD,EAAWC,iBACxDg0G,EAAY5yK,KAAK+wK,eACjB8B,EAAU7yK,KAAK8yD,aAAaggH,WAAW,sBAAuB9yK,KAAKwuK,UAAU36J,EAAMld,KAAI,SAAUO,GAAQ,OAAO67D,EAAMk/G,SAASxR,OAAOvpK,MAAUyD,KAAK,MACzJ,GAAKikE,EAGA,CACD,IAAItU,EAAKsU,EAAiBh6D,GAAImuK,EAAczoH,EAAG,GAAI0oH,EAAY1oH,EAAG,GAC9D2oH,EAAUjzK,KAAKwyK,mBAAmBO,GAClCG,EAAQlzK,KAAKwyK,mBAAmBQ,GACpC,GAAIC,EAAS,CACTA,EAAQE,mBAAmB,cAAeN,GAC1C,IAAIhtH,EAAKotH,EACT,MAAOptH,GAAMA,IAAOqtH,EAAO,CACvB,IAAIE,EAASvtH,EAAG8qH,mBAChBr/G,GAAazL,GACbwrH,GAAuBxrH,GACvBA,EAAKutH,GAEE,OAAPvtH,QAAsB,IAAPA,OAAgB,EAASA,EAAGliC,cAC3C2tC,GAAazL,GACbwrH,GAAuBxrH,UAjB/B+sH,EAAUO,mBAAmB,aAAcN,IAsBnDhB,EAAgB1xK,UAAUkzK,YAAc,WACpC,OAAOrzK,KAAKiyK,UAEhBJ,EAAgB1xK,UAAUs8B,QAAU,WAChCyzC,GAAMlwE,KAAK6lD,GAAI,UACf7lD,KAAK6lD,GAAK,MAEdgsH,EAAgB1xK,UAAUg3D,WAAa,WACnC,OAAOn3D,KAAK6lD,IAEhBgsH,EAAgB1xK,UAAUmzK,QAAU,WAChC,OAAOtzK,KAAK+wK,eAAe/gI,WAE/B6hI,EAAgB1xK,UAAUozK,QAAU,SAAUzlI,GAC1C9tC,KAAK+wK,eAAe/gI,UAAYlC,GAEpC+jI,EAAgB1xK,UAAU62D,UAAY,SAAU/iC,GAC5C0tB,EAAM3hD,KAAK6lD,GAAI,CAAE5xB,OAAQA,EAAS,QAEtC49I,EAAgB1xK,UAAU82D,aAAe,SAAUC,GAC/CvV,EAAM3hD,KAAK6lD,GAAI,CAAEqR,UAAWA,EAAY,QAErC26G,EAjJyB,GAoJpC,SAAS2B,GAAW58K,EAAKk1D,GACrB,IAAI90D,EAAQJ,EAAII,MAChB,MAAOA,EAAO,CACV,IAAIE,EAAON,EAAIM,KAAKF,GACpB,GAAI80D,EAAU50D,EAAMF,GAChB,MAAO,CACHE,KAAMA,EACNF,MAAOA,EACPyI,OAAQzI,EAAQ,EAAIJ,EAAIvB,OAAO2B,GAAS,GAGhDA,GAAS,EAEb,OAAO,KAEX,SAASy8K,GAAa78K,GAClB,QAAS48K,GAAW58K,GAAK,SAAU0zD,GAC/B,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,aAAdA,EAAKwN,MAAqC,eAAdxN,EAAKwN,MAAuC,gBAAdxN,EAAKwN,QAG9E,SAAS2wK,GAAc98K,GACnB,QAAS48K,GAAW58K,GAAK,SAAU0zD,GAC/B,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,kBAAdA,EAAKwN,MAA0C,kBAAdxN,EAAKwN,QAGrD,SAAS4wK,GAAa/8K,GAClB,OAAO48K,GAAW58K,GAAK,SAAU0zD,GAC7B,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,aAAdA,EAAKwN,QAGpB,SAAS6wK,GAA2B/0J,GAChC,MAAO,CACHA,IAAKA,EACLc,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,GAAKk0H,GAAW,CAAEA,QAASA,MAIzD,SAASC,GAAgBz3K,GACrB,OAAOwG,OAAOotB,KAAK5zB,GAAO8e,QAAO,SAAUquC,EAAKvtC,GAK5C,MAJiB,YAAbA,GAA0B5f,EAAM4f,KAChCA,EAAwB,cAAbA,EAA2B,QAAUA,EAChDutC,EAAIvtC,GAAY5f,EAAM4f,IAEnButC,IACR,IAEP,SAASuqH,GAAoBl1J,GACzB,MAAO,CACHA,IAAKA,EACLc,SAAU,SAAUV,GAChB,MAAO,CAAC,UAAW,UAAW,UAAW,YAAY9D,QAAO,SAAUquC,EAAKvtC,GACvE,IAAI+3J,EAA6B,YAAb/3J,EAAyB,gBAAkBA,EAC3DolJ,EAAYpiJ,EAAIoG,aAAa2uJ,GAMjC,OALI3S,IACA73G,EAAIvtC,GAAY6qC,GAAS,CAAC,UAAW,YAAa7qC,GAC5ColJ,EACA1mJ,OAAO0mJ,IAEV73G,IACR,MAIf,SAASyqH,KACL,MAAO,CACHtF,UAAW,CAAEvyJ,QAAS,MACtBkqD,WAAY,CAAElqD,QAAS,OAG/B,SAAS83J,GAAe73K,GACpB,IAAIsyK,EAAYtyK,EAAMsyK,UAAWroG,EAAajqE,EAAMiqE,WACpD,OAAO3mB,EAAWA,EAAW,GAAIgvH,GAAY,CAAEprI,MAAO+iC,EAAaA,EAAW3rE,KAAK,KAAO,OAG9F,SAASoM,GAAoB9R,EAAOM,GAChC,IAAII,EAASV,EAAMU,OAAQgR,EAAa1R,EAAM0R,WAAYC,EAAW3R,EAAM2R,SACvEE,EAASnR,EAAOoD,eAAe4N,GAAY7L,aAAavF,GAC5D,GAAIuR,EAAQ,CACR,IAAIM,EAAQN,EAAO5L,OAAS4L,EAAO,GAAKvR,EACxC,OAAOI,EAAOqD,eAAe2N,EAAYC,EAAUQ,GAASN,EAAS,KAEzE,OAAO,KAEX,SAASG,GAAmBhS,EAAOM,GAC/B,IAAII,EAASV,EAAMU,OAAQgR,EAAa1R,EAAM0R,WAAYC,EAAW3R,EAAM2R,SACvEI,EAAQrR,EAAO0R,MAAMV,GACrBW,EAAS/R,EAAKgS,aAAazM,aAAakM,EAAMzR,MAClD,GAAI+R,EAAQ,CAGR,IAFA,IAAIE,EAAWF,EAAOpM,OAASoM,EAAOA,EAAOpM,OAAS,GAAK3F,EACvDkS,EAAaD,EAASD,aACjB3P,EAAI+O,EAAYc,GAAc7P,EAAIgP,EAAUhP,GAAK,EACtD6P,EAAaA,EAAW1M,UAAUpF,EAAO0R,MAAMzP,GAAGrC,MAEtD,GAAIkS,GAAcA,EAAWzM,SACzB,OAAOsM,EAGf,OAAO,KAEX,SAAS6sK,GAAal/K,EAAO4R,EAAYzK,EAAUC,GAC/C,IAAIyK,EAASC,GAAoB9R,EAAOmH,GACpC4K,EAAQC,GAAmBJ,EAAYzK,GAC3C,GAAI0K,GAAUE,EAAO,CACjB,IAAIotK,EAActtK,EAAOnQ,KAAI,SAAUpB,GACnC,MAAO,CAAEA,KAAMA,MAEf8+K,EAAartK,EAAMrQ,KAAI,SAAUpB,GACjC,MAAO,CAAEA,KAAMA,EAAM8G,MAAOA,MAEhC,OAAO+3K,EAAYjtK,OAAO,CAAE5R,KAAM6G,IAAY+K,OAAOktK,GAEzD,OAAO,KAEX,SAASC,GAAW//K,EAAI+1D,EAAI3gD,EAAU4qK,EAAYjtH,GAG9C,IAFA,IAAItrD,EAAQsuD,EAAGtuD,MAAOrC,EAAM2wD,EAAG3wD,IAAKgN,EAAa2jD,EAAG3jD,WAAYC,EAAW0jD,EAAG1jD,SAAUjR,EAAS20D,EAAG30D,OAChGC,EAAU,cAAStB,MACdsD,EAAI+R,EAASzO,OAAS,EAAGtD,GAAK,EAAGA,GAAK,EAC3ChC,EAAU,cAASS,KAAKsT,EAAS/R,GAAGrC,KAAKsB,OAAO8S,EAAS/R,GAAGyE,MAAOzG,IAEvErB,EAAG+B,KAAK,IAAI,OAAkB0F,GAASu4K,EAAa,EAAI,GAAI56K,EAAKqC,EAAOrC,EAAK,IAAI,WAAM/D,EAAS,EAAG,GAAI+T,EAASzO,QAAQ,IACxH,IAAIs5K,EAAiB,EACrB,IAAS58K,EAAI,EAAGA,EAAI+R,EAASzO,OAAQtD,GAAK,EACtC,GAAI+R,EAAS/R,GAAGrC,OAAS+xD,EAAM,CAC3BktH,EAAiB58K,EAAI,EACrB,MAKR,IAFA,IAAI68K,EAAa9qK,EAASzO,OAASs5K,EAC/BE,EAAW14K,EAAQ2N,EAASzO,QAAUq5K,EAAa,EAAI,GAClCh2K,GAAhB3G,EAAI+O,EAAkBC,GAAUhP,EAAI2G,EAAK3G,GAAK,EAAG,CACtD,IAAIuC,EAAQvC,IAAM+O,GACbxM,GAAS,eAAS5F,EAAG0B,IAAKy+K,EAAUD,KACrClgL,EAAGqF,MAAM86K,EAAUD,GACnBC,GAAyB,EAAbD,GAEhBC,GAAY/+K,EAAO0R,MAAMzP,GAAGd,SAEhC,OAAOvC,EAEX,SAASogL,GAAapgL,EAAIU,EAAOqyD,EAAMjrD,GACnC,IAAI/C,EAAQrE,EAAMqE,MAAOC,EAAMtE,EAAMsE,IAAKvC,EAAQ/B,EAAM+B,MACpD49K,EAAa3/K,EACbs/K,GAAa,EACjB,GAAIv9K,GAAS,GACTsC,EAAMpC,KAAKF,EAAQ,GAAGzB,KAAKiF,kBAAkB8sD,IACxB,IAArBryD,EAAM0R,YACNrN,EAAMzB,MAAMb,EAAQ,GAAI,CACxB,IAAIgF,EAAQzH,EAAG0B,IAAIQ,QAAQxB,EAAM+G,MAAQ,GACzC44K,EAAa,IAAI,eAAU54K,EAAOA,EAAOhF,GACrC/B,EAAM2R,SAAW3R,EAAMU,OAAO6B,aAC9BvC,EAAQ,IAAI,eAAUqE,EAAO/E,EAAG0B,IAAIQ,QAAQ8C,EAAII,IAAI3C,IAASA,IAEjEu9K,GAAa,EAEjB,IAAI5qK,EAAWwqK,GAAaS,EAAY3/K,EAAOqyD,EAAMjrD,GACrD,OAAIsN,EACO2qK,GAAW//K,EAAIU,EAAO0U,EAAU4qK,EAAYjtH,GAEhD/yD,EAEX,SAASsgL,GAAsB5+K,EAAKwJ,GAChC,IAAIq1K,EAAiB7+K,EAAIQ,QAAQgJ,GACjC,MAA2C,cAApCq1K,EAAe59K,OAAO3B,KAAKwN,KAC9BtD,GAAU,EACVq1K,EAAiB7+K,EAAIQ,QAAQgJ,GAEjC,OAAOk0K,GAAamB,GAExB,SAASC,GAAoBxgL,EAAI+1D,GAC7B,IAAIhxD,EAAQgxD,EAAGhxD,MAAOC,EAAM+wD,EAAG/wD,IAC3By7K,EAAgBrB,GAAar6K,GAC7B27K,EAActB,GAAap6K,GAC/B,GAAIy7K,GAAiBC,EACjB,MAAOA,EAAa,CAChB,IAAIx1K,EAASw1K,EAAYx1K,OAAQvI,EAAO+9K,EAAY/9K,KAChDmF,EAAQ,CAAEshE,MAAOzmE,EAAKmF,MAAMshE,KAAMgM,SAAS,GAE/C,GADAp1E,EAAG8F,cAAcoF,EAAQ,KAAMpD,GAC3BoD,IAAWu1K,EAAcv1K,OACzB,MAEJw1K,EAAcJ,GAAsBtgL,EAAG0B,IAAKwJ,GAGpD,OAAOlL,EAEX,SAAS2gL,GAAe3gL,EAAI+1D,EAAIhD,GAC5B,IAAIhuD,EAAQgxD,EAAGhxD,MAAOC,EAAM+wD,EAAG/wD,IAC3By7K,EAAgBrB,GAAar6K,GAC7B27K,EAActB,GAAap6K,GAC/B,GAAIy7K,GAAiBC,EACjB,MAAOA,EAAa,CAChB,IAAIx1K,EAASw1K,EAAYx1K,OAAQvI,EAAO+9K,EAAY/9K,KAAMF,EAAQi+K,EAAYj+K,MAC1EE,EAAKmF,MAAMshE,MACXppE,EAAG8F,cAAcoF,EAAQ,KAAM,CAAEk+D,MAAM,EAAOgM,SAAS,IAE3D,IAAIxR,EAAc5jE,EAAG0B,IAAIQ,QAAQgJ,GACjC,GAAI04D,EAAYxiE,OAAOJ,OAAS+xD,EAAM,CAClC,IAAIxyD,EAAeqjE,EAAY9iE,OAAO2B,EAAQ,GAC9CzC,EAAG8F,cAAcvF,EAAcwyD,GAEnC,GAAI7nD,IAAWu1K,EAAcv1K,OACzB,MAEJw1K,EAAcJ,GAAsBtgL,EAAG0B,IAAKwJ,GAGpD,OAAOlL,EAEX,SAAS4gL,GAAW7tH,GAChB,OAAO,SAAUgD,EAAIl2D,GACjB,IAAIC,EAAYi2D,EAAGj2D,UAAWE,EAAK+1D,EAAG/1D,GAClC+E,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IACzCtE,EAAQqE,EAAMpE,WAAWqE,GAC7B,GAAItE,EAAO,CACP,IAAIwpE,EAAQg1G,GAAan6K,GACnB47K,GAAe3gL,EAAIU,EAAOqyD,GAC1BqtH,GAAapgL,EAAIU,EAAOqyD,GAE9B,OADAlzD,EAASqqE,IACF,EAEX,OAAO,GAGf,SAASiL,KACL,OAAO,SAAUpf,EAAIl2D,GACjB,IAAIC,EAAYi2D,EAAGj2D,UAAWE,EAAK+1D,EAAG/1D,GAAIgQ,EAAS+lD,EAAG/lD,OAClDjL,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IACzCtE,EAAQqE,EAAMpE,WAAWqE,GAC7B,GAAItE,EAAO,CACP,IAAIwpE,EAAQg1G,GAAan6K,GACnBy7K,GAAoBxgL,EAAIU,GACxB0/K,GAAapgL,EAAIU,EAAOsP,EAAOsP,MAAMg2D,WAAY,CAAElM,MAAM,IAE/D,OADAvpE,EAASqqE,IACF,EAEX,OAAO,GAGf,SAAS22G,GAAavd,GAClB,OAAO,SAAUvtG,EAAIl2D,GACjB,IAAIG,EAAK+1D,EAAG/1D,GAAIF,EAAYi2D,EAAGj2D,UAC3BiF,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IACzCtE,EAAQqE,EAAMpE,WAAWqE,GAAK,SAAU+wD,GACxC,IAAI9yD,EAAa8yD,EAAG9yD,WAAYH,EAAaizD,EAAGjzD,WAChD,QAASG,GAAcH,EAAW9B,OAASsiK,KAE/C,GAAI5iK,GAASA,EAAM0R,WAAa,EAAG,CAC/B,IAAIo4D,EAAW9pE,EAAMU,OACjBL,EAAaypE,EAAS13D,MAAMpS,EAAM0R,WAAa,GACnD,GAAIrR,EAAWC,OAASsiK,EACpB,OAAO,EAEX,IAAIwd,EAAe//K,EAAWgC,WAAahC,EAAWgC,UAAU/B,OAASwpE,EAASxpE,KAC9EyR,EAAQquK,EAAe,cAASh/K,KAAKwhK,EAAShhK,UAAY,KAC1DV,EAAQ,IAAI,WAAM,cAASE,KAAKwhK,EAAShhK,OAAO,KAAM,cAASR,KAAK0oE,EAASxpE,KAAKsB,OAAO,KAAMmQ,MAAWquK,EAAe,EAAI,EAAG,GAChIhgL,EAASJ,EAAM+G,MACf9F,EAAQjB,EAAM0E,IAGlB,OAFApF,EAAG+B,KAAK,IAAI,OAAkBjB,GAAUggL,EAAe,EAAI,GAAIn/K,EAAOb,EAAQa,EAAOC,EAAO,GAAG,IAC/F/B,EAASG,IACF,EAEX,OAAO,GAGf,SAAS+gL,GAAgB/gL,EAAIU,EAAO4iK,GAChC,IAAIv+J,EAAQrE,EAAMqE,MAAOC,EAAMtE,EAAMsE,IAAKI,EAAM1E,EAAM0E,IAAK3C,EAAQ/B,EAAM+B,MAAOrB,EAASV,EAAMU,OAC3F4/K,EAAYh8K,EAAII,IAAI3C,GAQxB,OAPI2C,EAAM47K,IAGNhhL,EAAG+B,KAAK,IAAI,OAAkBqD,EAAM,EAAG47K,EAAW57K,EAAK47K,EAAW,IAAI,WAAM,cAASl/K,KAAKwhK,EAAShhK,OAAO,KAAMlB,EAAOwF,SAAU,EAAG,GAAI,GAAG,IAC3IlG,EAAQ,IAAI,eAAUV,EAAG0B,IAAIQ,QAAQ6C,EAAM1C,KAAMrC,EAAG0B,IAAIQ,QAAQ8+K,GAAYv+K,IAEhFzC,EAAGa,KAAKH,EAAO,eAAWA,IACnBV,EAEX,SAASihL,GAAcjhL,EAAIU,GAIvB,IAHA,IAAIqyD,EAAOryD,EAAMU,OACbiB,EAAM3B,EAAM0E,IAEP/B,EAAI3C,EAAM2R,SAAW,EAAGrI,EAAMtJ,EAAM0R,WAAY/O,EAAI2G,EAAK3G,GAAK,EACnEhB,GAAO0wD,EAAKjgD,MAAMzP,GAAGd,SACrBvC,EAAG0C,OAAOL,EAAM,EAAGA,EAAM,GAE7B,IAAI+gB,EAAWpjB,EAAG0B,IAAIQ,QAAQxB,EAAM+G,OAChC67J,EAAWlgJ,EAAS3f,UACpBmzB,EAA+B,IAArBl2B,EAAM0R,WAChB5M,EAAQ9E,EAAM2R,WAAa0gD,EAAK9vD,WAChC7B,EAASgiB,EAASzgB,MAAM,GACxBu+K,EAAc99J,EAAS9f,OAAO,GAC9B69K,EAAmB//K,EAAO8E,WAAWg7K,GAAetqJ,EAAU,EAAI,GAAIsqJ,EAAc,EAAgB,OAAb5d,QAAkC,IAAbA,OAAsB,EAASA,EAASjiK,QAAQgQ,OAAO7L,EAAQ,cAASzF,MAAQ,cAAS+B,KAAKixD,KAC9M,GAAIuwG,GAAY6d,EAAkB,CAC9B,IAAI15K,EAAQ2b,EAAS/gB,IACjB+C,EAAMqC,EAAQ67J,EAAS/gK,SAI3BvC,EAAG+B,KAAK,IAAI,OAAkB0F,GAASmvB,EAAU,EAAI,GAAIxxB,GAAOI,EAAQ,EAAI,GAAIiC,EAAQ,EAAGrC,EAAM,EAAG,IAAI,YAAOwxB,EAAU,cAAS72B,MAAQ,cAAS+B,KAAKixD,EAAKnsD,KAAK,cAAS7G,SAASsR,OAAO7L,EAAQ,cAASzF,MAAQ,cAAS+B,KAAKixD,EAAKnsD,KAAK,cAAS7G,SAAU62B,EAAU,EAAI,EAAGpxB,EAAQ,EAAI,GAAIoxB,EAAU,EAAI,IAElT,OAAO52B,EAEX,SAASohL,GAAa9d,GAClB,OAAO,SAAUvtG,EAAIl2D,GACjB,IAAIG,EAAK+1D,EAAG/1D,GAAIF,EAAYi2D,EAAGj2D,UAC3BiF,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IACzCtE,EAAQqE,EAAMpE,WAAWqE,GAAK,SAAU+wD,GACxC,IAAI9yD,EAAa8yD,EAAG9yD,WAAYH,EAAaizD,EAAGjzD,WAChD,QAASG,GAAcH,EAAW9B,OAASsiK,KAE/C,GAAI5iK,EAAO,CACP,IAAI2gL,EAAct8K,EAAMpC,KAAKjC,EAAM+B,MAAQ,GAAGzB,OAASsiK,EACnDp5F,EAAQm3G,EAAcN,GAAgB/gL,EAAIU,EAAO4iK,GAAY2d,GAAcjhL,EAAIU,GAEnF,OADAb,EAASqqE,IACF,EAEX,OAAO,GAGf,SAASo3G,GAAche,GACnB,OAAO,SAAUvtG,EAAIl2D,GACjB,IAAIG,EAAK+1D,EAAG/1D,GAAIF,EAAYi2D,EAAGj2D,UAC3BiF,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IAC7C,GAAID,EAAMtC,MAAQ,IAAMsC,EAAMjB,WAAWkB,GACrC,OAAO,EAEX,IAAIu8K,EAAcx8K,EAAMpC,MAAM,GAC9B,GAAI4+K,EAAYvgL,OAASsiK,EACrB,OAAO,EAEX,GAAkC,IAA9Bv+J,EAAM3D,OAAOC,QAAQC,MAAcyD,EAAMpC,MAAM,GAAGM,aAAe8B,EAAMR,YAAY,GAAI,CAIvF,GAAoB,IAAhBQ,EAAMtC,OACNsC,EAAMpC,MAAM,GAAG3B,OAASsiK,GACxBv+J,EAAMzB,OAAO,KAAOyB,EAAMpC,MAAM,GAAGM,WAAa,EAChD,OAAO,EAMX,IAJA,IAAIu+K,EAAWz8K,EAAMzB,OAAO,GAAK,EAC7B+1C,EAAU,cAASt5C,MAGd0C,EAAQsC,EAAMtC,OAAS++K,EAAW,EAAI,GAAI/+K,GAASsC,EAAMtC,MAAQ,EAAGA,GAAS,EAClF42C,EAAU,cAASv3C,KAAKiD,EAAMpC,KAAKF,GAAOmE,KAAKyyC,IAOnD,OAJAA,EAAUA,EAAQhoC,OAAO,cAASvP,KAAKwhK,EAAS3+J,kBAChD3E,EAAG2Q,QAAQ6wK,EAAWz8K,EAAMjE,SAAWiE,EAAMjE,QAAQ,GAAIiE,EAAMpD,OAAO,GAAI,IAAI,WAAM03C,EAASmoI,EAAW,EAAI,EAAG,IAC/GxhL,EAAGgC,aAAa,eAAU4C,KAAK5E,EAAG0B,IAAIQ,QAAQ6C,EAAM1C,KAAOm/K,EAAW,EAAI,MAC1E3hL,EAASG,IACF,EAEX,IAAIgvB,EAAWhqB,EAAI3C,MAAQ0C,EAAMK,MAAQm8K,EAAY/8K,eAAe,GAAG2f,YAAc,KACjFze,EAAQspB,GAAY,CAAC,KAAM,CAAEhuB,KAAMguB,IAEvC,OADAhvB,EAAG0C,OAAOqC,EAAM1C,IAAK2C,EAAI3C,OACrB,eAASrC,EAAG0B,IAAKqD,EAAM1C,IAAK,EAAGqD,KAC/B1F,EAAGqF,MAAMN,EAAM1C,IAAK,EAAGqD,GACvB7F,EAASG,IACF,IAMnB,SAAS4rE,KACL,OAAO,WAAc,OAAO,SAAUhsE,EAAOC,GACzC,IAAIC,EAAYF,EAAME,UAAWkQ,EAASpQ,EAAMoQ,OAC5CjL,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IACzCtE,EAAQqE,EAAMpE,WAAWqE,GAC7B,SAAItE,IAASw+K,GAAan6K,KACf87K,GAAa7wK,EAAOsP,MAAMgkJ,SAA1Bud,CAAoCjhL,EAAOC,KAK9D,SAASgsE,KACL,OAAO,WAAc,OAAO,SAAUjsE,EAAOC,GACzC,IAAIC,EAAYF,EAAME,UAAWkQ,EAASpQ,EAAMoQ,OAC5CjL,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IACzCtE,EAAQqE,EAAMpE,WAAWqE,GAC7B,SAAItE,IAASw+K,GAAan6K,KACfq8K,GAAapxK,EAAOsP,MAAMgkJ,SAA1B8d,CAAoCxhL,EAAOC,KAK9D,SAAS4hL,KACL,MAAO,CACH71G,OAAQA,KACRC,QAASA,MAIjB,IAAIkR,GAAQ,IAAI3sC,IAEZsxI,GAAgC,WAChC,SAASA,EAAe9zJ,EAAO+zJ,EAAWC,EAAeC,GACrDp2K,KAAKmiB,MAAQA,EACbniB,KAAKk2K,UAAYA,EACjBl2K,KAAKm2K,cAAgBA,EACrBn2K,KAAKo2K,QAAUA,EAyInB,OAvIAH,EAAep/K,OAAS,SAAUw/K,GAC9B,IAAIl0J,EAAQqxJ,GAAW6C,GAAS,SAAU/rH,GACtC,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,UAAdA,EAAKwN,QAEhB,GAAIof,EAAO,CACP,IAAIjrB,EAAOirB,EAAMjrB,KAAMF,EAAQmrB,EAAMnrB,MAAOyI,EAAS0iB,EAAM1iB,OACvD0X,EAASm6D,GAAM/tE,IAAIrM,GACvB,IAAgB,OAAXigB,QAA8B,IAAXA,OAAoB,EAASA,EAAOg/J,iBAAmB12K,EAAS,EACpF,OAAO0X,EAEX,IAAIm/J,EAAS,GACTC,EAAWF,EAAQr6K,MAAMhF,GACzBo4C,EAAQl4C,EAAKmQ,MAAM,GACnBgoC,EAAQn4C,EAAKmQ,MAAM,GACnBmvK,EAAgBC,GAAgBrnI,EAAOmnI,GACvCG,EAAgBD,GAAgBpnI,EAAOknI,EAAWnnI,EAAMt4C,UAC5Ds4C,EAAMruC,SAAQ,SAAU0mE,GAAO,OAAO6uG,EAAO96K,KAAKisE,MAClDp4B,EAAMtuC,SAAQ,SAAU0mE,GAAO,OAAO6uG,EAAO96K,KAAKisE,MAClD,IAAI9wE,EAAM,IAAIs/K,EAAe/+K,EAAMo/K,EAAQC,EAAUC,EAAcrvK,OAAOuvK,IAE1E,OADAplG,GAAM3lE,IAAIzU,EAAMP,GACTA,EAEX,OAAO,MAEXkM,OAAOs9C,eAAe81H,EAAe91K,UAAW,gBAAiB,CAC7DoD,IAAK,WACD,OAAOvD,KAAKo2K,QAAQl7K,QAExB65D,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe81H,EAAe91K,UAAW,mBAAoB,CAChEoD,IAAK,WACD,OAAOvD,KAAKo2K,QAAQ,GAAGl7K,QAE3B65D,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe81H,EAAe91K,UAAW,mBAAoB,CAChEoD,IAAK,WACD,OAAOvD,KAAKm2K,eAEhBphH,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe81H,EAAe91K,UAAW,iBAAkB,CAC9DoD,IAAK,WACD,OAAOvD,KAAKm2K,cAAgBn2K,KAAKmiB,MAAMrrB,SAAW,GAEtDi+D,YAAY,EACZ3xD,cAAc,IAElB6yK,EAAe91K,UAAUw2K,YAAc,SAAUC,EAAQC,GACrD,OAAO72K,KAAKo2K,QAAQQ,GAAQC,IAEhCZ,EAAe91K,UAAU22K,MAAQ,SAAUF,EAAQC,GAC/C,IAAK,IAAIj/K,EAAI,EAAGm/K,EAAW/2K,KAAKm2K,eAAgBv+K,GAAK,EAAG,CACpD,IAAIo/K,EAASD,EAAW/2K,KAAKk2K,UAAUt+K,GAAGd,SAC1C,GAAIc,IAAMg/K,EAAQ,CACd,IAAI/+K,EAAQg/K,EAEZ,MAAOh/K,EAAQmI,KAAKi3K,kBAAoBj3K,KAAKo2K,QAAQx+K,GAAGC,GAAO4H,OAASs3K,EACpEl/K,GAAS,EAEb,OAAOA,IAAUmI,KAAKi3K,iBAAmBD,EAASh3K,KAAKo2K,QAAQx+K,GAAGC,GAAO4H,OAE7Es3K,EAAWC,IAGnBf,EAAe91K,UAAU+2K,cAAgB,SAAUN,EAAQC,GACvD,IAAIM,EAAWn3K,KAAKo2K,QAAQQ,GAAQC,GACpC,MAAO,CACH3/K,KAAM8I,KAAKmiB,MAAMlY,OAAOktK,EAAS13K,OAASO,KAAKo3K,kBAC/CxgL,IAAKugL,EAAS13K,SAGtBw2K,EAAe91K,UAAUk3K,gBAAkB,SAAUT,EAAQC,GACzD,OAAO,GAEXZ,EAAe91K,UAAUm3K,gBAAkB,SAAUV,EAAQC,GACzD,OAAO,GAEXZ,EAAe91K,UAAUo3K,gBAAkB,SAAUX,EAAQC,GACzD,OAAO,GAEXZ,EAAe91K,UAAUq3K,gBAAkB,SAAUZ,EAAQC,GACzD,OAAO,GAEXZ,EAAe91K,UAAUs3K,qBAAuB,SAAUb,EAAQC,GAC9D,OAAO,GAEXZ,EAAe91K,UAAUu3K,qBAAuB,SAAUd,EAAQC,GAC9D,OAAO,GAEXZ,EAAe91K,UAAUw3K,oBAAsB,SAAUf,EAAQC,GAC7D,OAAO,MAEXZ,EAAe91K,UAAUy3K,oBAAsB,SAAUhB,EAAQC,GAC7D,OAAO,MAEXZ,EAAe91K,UAAU03K,mBAAqB,SAAUjB,EAAQC,GAC5D,IAAIp3K,EAASO,KAAKo2K,QAAQQ,GAAQC,GAAQp3K,OAC1C,OAAOO,KAAKq3K,gBAAgBT,EAAQC,GAAU72K,KAAK82K,MAAMF,EAAQC,GAAUp3K,GAE/Ew2K,EAAe91K,UAAU23K,iBAAmB,SAAUlB,EAAQC,GAC1D,IAAIvsH,EAAKtqD,KAAKo2K,QAAQQ,GAAQC,GAASp3K,EAAS6qD,EAAG7qD,OAAQ3I,EAAWwzD,EAAGxzD,SACzE,OAAOkJ,KAAKq3K,gBAAgBT,EAAQC,GAAU72K,KAAK82K,MAAMF,EAAQC,GAAUp3K,EAAS3I,GAExFm/K,EAAe91K,UAAU43K,aAAe,SAAU1B,GAC9C,IAAK,IAAIO,EAAS,EAAGA,EAAS52K,KAAKg4K,cAAepB,GAAU,EAExD,IADA,IAAIR,EAAUp2K,KAAKo2K,QAAQQ,GAClBC,EAAS,EAAGA,EAAS72K,KAAKi3K,iBAAkBJ,GAAU,EAC3D,GAAIT,EAAQS,GAAQp3K,OAAS,EAAI42K,EAAQz/K,IACrC,MAAO,CAACggL,EAAQC,GAI5B,MAAO,CAAC,EAAG,IAEfZ,EAAe91K,UAAU83K,eAAiB,SAAUC,EAAcC,GAC9D,IAAI7tH,EAAIG,EAAIya,OACO,IAAfizG,IAAyBA,EAAaD,GACtCA,EAAathL,IAAMuhL,EAAWvhL,MAC9B0zD,EAAK,CAAC6tH,EAAYD,GAAeA,EAAe5tH,EAAG,GAAI6tH,EAAa7tH,EAAG,IAE3E,IAAI8a,EAAKplE,KAAK+3K,aAAaG,GAAeE,EAAchzG,EAAG,GAAIizG,EAAcjzG,EAAG,GAC5EC,EAAKrlE,KAAK+3K,aAAaI,GAAaG,EAAYjzG,EAAG,GAAIkzG,EAAYlzG,EAAG,GAG1E,OAFA5a,EAAKhB,GAAiB2uH,EAAaE,GAAYF,EAAc3tH,EAAG,GAAI6tH,EAAY7tH,EAAG,GACnFya,EAAKzb,GAAiB4uH,EAAaE,GAAYF,EAAcnzG,EAAG,GAAIqzG,EAAYrzG,EAAG,GAC5EllE,KAAKw4K,kBAAkB,CAAEJ,YAAaA,EAAaC,YAAaA,EAAaC,UAAWA,EAAWC,UAAWA,KAEzHtC,EAAe91K,UAAUq4K,kBAAoB,SAAUC,GACnD,OAAOA,GAEJxC,EA9IwB,GAiJ/BQ,GAAkB,SAAUiC,EAAY5/I,GACxC,IAAI6/I,EAAiB,GAmBrB,OAlBAD,EAAW33K,SAAQ,SAAU0mE,EAAKmxG,GAE9B,IAAIxC,EAAU,CAAEyC,WAAY,GAAIC,WAAY,GAAI59K,OAAQ,GACxDusE,EAAI1mE,SAAQ,SAAUupD,EAAIyuH,GACtB,IAAIjiL,EAAWwzD,EAAGxzD,SACd+/K,EAAS,EACb,MAAOT,EAAQS,GACXA,GAAU,EAEdT,EAAQS,GAAU,CAEdp3K,OAAQq5B,EAAc8/I,EAAYG,EAAa,EAC/CjiL,SAAUA,GAEds/K,EAAQl7K,QAAU,KAEtBy9K,EAAen9K,KAAK46K,MAEjBuC,GAEX,SAASK,GAA6BC,EAAgBC,GAGlD,OAFA3gJ,GAAO09I,GAAe91K,UAAW84K,GACjCxC,GAAkByC,EACXjD,GAGX,SAASkD,GAAmBljL,EAAKU,EAAK2zD,GAGlC,IAFA,IAAI8tH,EAAc9tH,EAAG8tH,YAAaC,EAAc/tH,EAAG+tH,YAAaC,EAAYhuH,EAAGguH,UAAWC,EAAYjuH,EAAGiuH,UACrG37K,EAAS,GACJg6K,EAASwB,EAAaxB,GAAU0B,EAAW1B,GAAU,EAC1D,IAAK,IAAIC,EAASwB,EAAaxB,GAAU0B,EAAW1B,GAAU,EAAG,CAC7D,IAAIpsH,EAAK9zD,EAAIggL,YAAYC,EAAQC,GAASp3K,EAASgrD,EAAGhrD,OAAQ3I,EAAW2zD,EAAG3zD,SAC5E8F,EAAOpB,KAAK,IAAI,oBAAevF,EAAIQ,QAAQgJ,EAAS,GAAIxJ,EAAIQ,QAAQgJ,EAAS3I,EAAW,KAGhG,OAAO8F,EAEX,SAASw8K,GAAoBxlB,EAAWD,GACpC,IAAIvqJ,EAAW,GAOf,OANIwqJ,EAAUp8J,YACV4R,EAAS5N,KAAKo4J,GAEdD,EAAUn8J,YACV4R,EAAS5N,KAAKm4J,GAEX,cAASt9J,KAAK+S,GAEzB,IAAIiwK,GAA+B,SAAUhkH,GAEzC,SAASgkH,EAAcnB,EAAcC,QACd,IAAfA,IAAyBA,EAAaD,GAC1C,IAAInlH,EAAQ/yD,KACR/J,EAAMiiL,EAAahhL,KAAK,GACxBP,EAAMs/K,GAAep/K,OAAOqhL,GAC5BO,EAAgB9hL,EAAIshL,eAAeC,EAAcC,GACjDv7K,EAASu8K,GAAmBljL,EAAKU,EAAK8hL,GAS1C,OARA1lH,EAAQsC,EAAOtzD,KAAK/B,KAAMpD,EAAO,GAAGtD,MAAOsD,EAAO,GAAGrD,IAAKqD,IAAWoD,KACrE+yD,EAAMumH,UAAYpB,EAClBnlH,EAAMwmH,QAAUpB,EAChBplH,EAAMymH,UAAY7iL,EAClBo8D,EAAM0mH,iBAAkB,EAGxB1mH,EAAMvnC,SAAU,EACTunC,EAyDX,OAzEAvT,EAAY65H,EAAehkH,GAkB3BgkH,EAAcl5K,UAAUxJ,IAAM,SAAUV,EAAKS,GACzC,IAAIihB,EAAW3X,KAAKs5K,UAAU1iL,IAC1BuiE,EAASn5D,KAAKu5K,QAAQ3iL,IACtB0iL,EAAYrjL,EAAIQ,QAAQC,EAAQC,IAAIghB,IACpC4hK,EAAUtjL,EAAIQ,QAAQC,EAAQC,IAAIwiE,IAClCxiE,EAAMs/K,GAAep/K,OAAOyiL,GAEhC,GAAIt5K,KAAKw5K,UAAUvC,iBAAmBtgL,EAAIsgL,kBACtCj3K,KAAKw5K,UAAUxB,cAAgBrhL,EAAIqhL,cAAe,CAClD,IAAI0B,EAAW,CAAE/lB,UAAW,EAAGvC,SAAU,EAAGjzF,UAAW,EAAGlU,UAAW,GACjE0vH,EAAiBD,EAASH,EAAQ5jL,OAAOJ,KAAKwN,MAC9C62K,EAAcL,EAAQ5/K,IAAI4/K,EAAQviL,MAAQ2iL,GAE1CtjL,EAAOiJ,KAAKqL,IAAIivK,EAAc,EAAGL,EAAQ3iL,KAC7C,OAAO,mBAAcC,OAAOZ,EAAKI,GAErC,OAAO,IAAIgjL,EAAcC,EAAWC,IAExCF,EAAcl5K,UAAUuK,GAAK,SAAUspJ,GACnC,OAAQA,aAAgBqlB,GACpBrlB,EAAKslB,UAAU1iL,MAAQoJ,KAAKs5K,UAAU1iL,KACtCo9J,EAAKulB,QAAQ3iL,MAAQoJ,KAAKu5K,QAAQ3iL,KAE1CyiL,EAAcl5K,UAAUvK,QAAU,WAU9B,IATA,IAAIusB,EAAQniB,KAAKs5K,UAAUpiL,MAAM,GAC7B2iL,EAAc75K,KAAKs5K,UAAUt9K,OAAO,GACpCyrE,EAAMtlD,EAAM9a,MAAM,GAAGhQ,WACrBu8J,EAAYzxI,EAAM9a,MAAM,GAAG9R,KAAKsB,SAChC88J,EAAYxxI,EAAM9a,MAAM,GAAG9R,KAAKsB,SAChCF,EAAMs/K,GAAep/K,OAAOmJ,KAAKs5K,WACjCb,EAAgB9hL,EAAIshL,eAAej4K,KAAKs5K,UAAWt5K,KAAKu5K,SACxDnB,EAAcK,EAAcL,YAAaC,EAAcI,EAAcJ,YAAaC,EAAYG,EAAcH,UAAWC,EAAYE,EAAcF,UACjJuB,GAAkB,EACblD,EAASwB,EAAaxB,GAAU0B,EAAW1B,GAAU,EAAG,CAE7D,IADA,IAAI7iB,EAAQ,GACH8iB,EAASwB,EAAaxB,GAAU0B,EAAW1B,GAAU,EAAG,CAC7D,IAAIp3K,EAAS9I,EAAIggL,YAAYC,EAAQC,GAAQp3K,OACzCu0J,EAAO7xI,EAAMlY,OAAOxK,EAASo6K,GAC7B7lB,IACA8lB,EAAqC,kBAAnB9lB,EAAKz+J,KAAKwN,KAExBpM,EAAI0gL,gBAAgBT,EAAQC,IAAWlgL,EAAI2gL,gBAAgBV,EAAQC,GACnE9iB,EAAMv4J,KAAKw4J,EAAKz+J,KAAKsB,OAAO,CAAEkjL,UAAU,KAGxChmB,EAAMv4J,KAAKw4J,EAAK74J,KAAK64J,EAAKp+J,WAItC,IAAIokL,EAAYvyG,EAAItsE,KAAK,cAAS9E,KAAK09J,IACnC/hI,EAAa8nJ,EAAkBlmB,EAAYD,EAC/C3hI,EAAWp8B,QAAUo8B,EAAWp8B,QAAQgQ,OAAO,cAASvP,KAAK2jL,IAEjE,OAAO,IAAI,WAAMZ,GAAoBxlB,EAAWD,GAAY,EAAG,IAE5D0lB,EA1EuB,CA2EhC,gBAEF,SAASY,GAAmB7yG,EAAa7iE,EAAQmzC,GAG7C,IAFA,IAAI4S,EAAK/lD,EAAOsP,MAAOu9I,EAAW9mG,EAAG8mG,SAAU8oB,EAAgB5vH,EAAG4vH,cAAejwH,EAAYK,EAAGL,UAC5F8pG,EAAQ,GACHl8J,EAAQ,EAAGA,EAAQuvE,EAAavvE,GAAS,EAAG,CACjD,IAAIqG,EAAOw5C,GAAQA,EAAK7/C,GACpBqiJ,EAAOjwF,EAAUpzD,OAAO,KAAMqH,EAAOqG,EAAOrG,KAAKA,GAAQ,IAC7D61J,EAAMv4J,KAAK0+K,EAAcrjL,OAAO,KAAMqjJ,IAE1C,MAAO,CAACkX,EAASv6J,OAAO,KAAMk9J,IAElC,SAASomB,GAAoB5yG,EAAUH,EAAa7iE,EAAQmzC,GAGxD,IAFA,IAAI4S,EAAK/lD,EAAOsP,MAAOu9I,EAAW9mG,EAAG8mG,SAAUgpB,EAAgB9vH,EAAG8vH,cAAenwH,EAAYK,EAAGL,UAC5FisH,EAAY,GACPU,EAAS,EAAGA,EAASrvG,EAAUqvG,GAAU,EAAG,CAEjD,IADA,IAAI7iB,EAAQ,GACH8iB,EAAS,EAAGA,EAASzvG,EAAayvG,GAAU,EAAG,CACpD,IAAI34K,EAAOw5C,GAAQA,EAAKk/H,EAASxvG,EAAcyvG,GAC3C38B,EAAOjwF,EAAUpzD,OAAO,KAAMqH,EAAOqG,EAAOrG,KAAKA,GAAQ,IAC7D61J,EAAMv4J,KAAK4+K,EAAcvjL,OAAO,KAAMqjJ,IAE1Cg8B,EAAU16K,KAAK41J,EAASv6J,OAAO,KAAMk9J,IAEzC,OAAOmiB,EAEX,SAASmE,GAAiBjzG,EAAawvG,EAAQryK,EAAQlI,QACrC,IAAVA,IAAoBA,EAAQ,MAIhC,IAHA,IAAIiuD,EAAK/lD,EAAOsP,MAAOqmK,EAAgB5vH,EAAG4vH,cAAeE,EAAgB9vH,EAAG8vH,cAAenwH,EAAYK,EAAGL,UACtG+pG,EAAkB,IAAX4iB,EAAesD,EAAgBE,EACtCrmB,EAAQ,GACHl8J,EAAQ,EAAGA,EAAQuvE,EAAavvE,GAAS,EAC9Ck8J,EAAMv4J,KAAKw4J,EAAKn9J,OAAOwF,EAAO4tD,EAAUpzD,WAE5C,OAAOk9J,EAEX,SAASumB,GAAgBpjL,EAAMy+B,GAC3B,MAAOz+B,GAAQA,IAASy+B,EAAM,CAC1B,GAAsB,OAAlBz+B,EAAK0sB,UAAuC,OAAlB1sB,EAAK0sB,SAC/B,OAAO1sB,EAEXA,EAAOA,EAAKysB,WAEhB,OAAO,KAEX,SAAS42J,GAAS3jL,GACd,OAAO48K,GAAW58K,GAAK,SAAU0zD,GAC7B,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,kBAAdA,EAAKwN,MAA0C,kBAAdxN,EAAKwN,QAGrD,SAASy3K,GAAqBnmL,GAC1B,GAAIA,aAAqB,mBAAe,CACpC,IAAI8D,EAAU9D,EAAU8D,QACpBsiL,EAAYF,GAASpiL,GACzB,GAAIsiL,EAAW,CACX,IAAI9vJ,EAASxyB,EAAQjB,KAAK,GAAGT,QAAQ0B,EAAQ9C,OAAOolL,EAAUzjL,QAC9D,MAAO,CAAE2zB,OAAQA,EAAQpI,KAAMoI,IAGvC,IAAI2/B,EAAKj2D,EAAWilL,EAAYhvH,EAAGgvH,UAAWC,EAAUjvH,EAAGivH,QAC3D,MAAO,CAAE5uJ,OAAQ2uJ,EAAW/2J,KAAMg3J,GAEtC,SAASmB,GAAyBvkL,GAC9B,IAAIm0D,EACJ,GAAIn0D,EAAMN,KAAM,CACZ,IAAID,EAAUO,EAAMP,QAAS8P,EAAYvP,EAAMuP,UAAWD,EAAUtP,EAAMsP,QAC1E,GAA2B,IAAvB7P,EAAQ4B,WACR,OAAO,KAEX,MAA8B,IAAvB5B,EAAQ4B,aACTkO,EAAY,GAAKD,EAAU,GAAwF,WAAnD,QAA7B6kD,EAAK10D,EAAQyB,kBAA+B,IAAPizD,OAAgB,EAASA,EAAG/0D,KAAKwN,OAC3G2C,GAAa,EACbD,GAAW,EACX7P,EAAUA,EAAQyB,WAAWzB,QAEjC,GAAqC,cAAjCA,EAAQyB,WAAW9B,KAAKwN,MACS,cAAjCnN,EAAQyB,WAAW9B,KAAKwN,KACxB,OAAOnN,EAGf,OAAO,KAEX,SAAS+kL,GAAqBrwH,GAC1B,IAAI8tH,EAAc9tH,EAAG8tH,YAAaC,EAAc/tH,EAAG+tH,YAAaC,EAAYhuH,EAAGguH,UAAWC,EAAYjuH,EAAGiuH,UACrGhxG,EAAW+wG,EAAYF,EAAc,EACrChxG,EAAcmxG,EAAYF,EAAc,EAC5C,MAAO,CAAE9wG,SAAUA,EAAUH,YAAaA,GAE9C,SAASwzG,GAAS5mB,EAAM33J,GACpB,OAAOsjD,EAAWA,EAAW,GAAIq0G,EAAK33J,OAAQA,GAGlD,IAAIw+K,GAAY,IAAI,eAAU,iBAC1BC,GAAqB,EACrBC,GAAgC,WAChC,SAASA,EAAermL,GACpBsL,KAAKtL,KAAOA,EACZsL,KAAK0yC,SAAW,CACZgD,UAAW11C,KAAKg7K,gBAAgB78J,KAAKne,MACrCi7K,UAAWj7K,KAAKk7K,gBAAgB/8J,KAAKne,MACrCm7K,QAASn7K,KAAKo7K,cAAcj9J,KAAKne,OAErCA,KAAKk4K,aAAe,KACpBl4K,KAAK6tB,OAgFT,OA9EAktJ,EAAe56K,UAAU0tB,KAAO,WAC5B7tB,KAAKtL,KAAKuqB,IAAIopB,iBAAiB,YAAaroC,KAAK0yC,SAASgD,YAE9DqlI,EAAe56K,UAAU66K,gBAAkB,SAAUrmH,GACjD,IAAI8lH,EAAYH,GAAgB3lH,EAAGx/D,OAAQ6K,KAAKtL,KAAKuqB,KACrD,GAAI01C,EAAG7f,SAAWgmI,IAIlB,GAAIL,EAAW,CACX,IAAIvC,EAAel4K,KAAKq7K,WAAW1mH,GAC/BujH,IACAl4K,KAAKk4K,aAAeA,GAExBl4K,KAAKswE,kBARL3b,EAAGxf,kBAWX4lI,EAAe56K,UAAU+6K,gBAAkB,SAAUvmH,GACjD,IAGI2mH,EAHAC,EAAoBV,GAAU7qJ,SAAShwB,KAAKtL,KAAKP,OACjDgkL,EAAan4K,KAAKq7K,WAAW1mH,GAC7BujH,EAAel4K,KAAKk4K,aAEpBqD,EACAD,EAAiBt7K,KAAKtL,KAAKP,MAAM8B,IAAIQ,QAAQ8kL,GAExCrD,IAAiBC,IACtBmD,EAAiBpD,GAEjBoD,GAAkBpD,GAAgBC,GAClCn4K,KAAKw7K,iBAAiBtD,EAAcC,IAG5C4C,EAAe56K,UAAUi7K,cAAgB,WACrCp7K,KAAKk4K,aAAe,KACpBl4K,KAAK4vE,cACuC,OAAxCirG,GAAU7qJ,SAAShwB,KAAKtL,KAAKP,QAC7B6L,KAAKtL,KAAKN,SAAS4L,KAAKtL,KAAKP,MAAMI,GAAGk5B,QAAQotJ,IAAY,KAGlEE,EAAe56K,UAAUmwE,UAAY,WACjC,IAAIrxD,EAAMjf,KAAKtL,KAAKuqB,IACpBA,EAAIopB,iBAAiB,YAAaroC,KAAK0yC,SAASuoI,WAChDh8J,EAAIopB,iBAAiB,UAAWroC,KAAK0yC,SAASyoI,UAElDJ,EAAe56K,UAAUyvE,YAAc,WACnC,IAAI3wD,EAAMjf,KAAKtL,KAAKuqB,IACpBA,EAAIkpB,oBAAoB,YAAanoC,KAAK0yC,SAASuoI,WACnDh8J,EAAIkpB,oBAAoB,UAAWnoC,KAAK0yC,SAASyoI,UAErDJ,EAAe56K,UAAUk7K,WAAa,SAAU/wH,GAC5C,IAAIzW,EAAUyW,EAAGzW,QAASC,EAAUwW,EAAGxW,QACnC2nI,EAAWz7K,KAAKtL,KAAK4jC,YAAY,CAAElF,KAAMygB,EAAS5kC,IAAK6kC,IAC3D,GAAI2nI,EAAU,CACV,IAAIxlL,EAAM+J,KAAKtL,KAAKP,MAAM8B,IACtBquB,EAAaruB,EAAIQ,QAAQglL,EAAS7kL,KAClC6jL,EAAYF,GAASj2J,GACzB,GAAIm2J,EAAW,CACX,IAAI1B,EAAaz0J,EAAWjvB,OAAOolL,EAAUzjL,OAC7C,OAAOf,EAAIQ,QAAQsiL,IAG3B,OAAO,MAEXgC,EAAe56K,UAAUq7K,iBAAmB,SAAUtD,EAAcC,GAChE,IAAI7tH,EAAKtqD,KAAKtL,KAAKP,MAAOE,EAAYi2D,EAAGj2D,UAAWE,EAAK+1D,EAAG/1D,GACxDmnL,EAAmD,OAAxCb,GAAU7qJ,SAAShwB,KAAKtL,KAAKP,OACxCwnL,EAAgB,IAAItC,GAAcnB,EAAcC,GACpD,GAAIuD,IAAarnL,EAAUqW,GAAGixK,GAAgB,CAC1C,IAAIl9G,EAAQlqE,EAAGgC,aAAaolL,GACxBD,GACAj9G,EAAMhxC,QAAQotJ,GAAW1C,EAAWvhL,KAExCoJ,KAAKtL,KAAKN,SAASqqE,KAG3Bs8G,EAAe56K,UAAUs8B,QAAU,WAC/Bz8B,KAAKtL,KAAKuqB,IAAIkpB,oBAAoB,YAAanoC,KAAK0yC,SAASgD,YAE1DqlI,EAzFwB,GA4F/Ba,GAA2BxwJ,GAAI,iBACnC,SAASywJ,GAAkBvxH,GACvB,IAAIj2D,EAAYi2D,EAAGj2D,UAAW4B,EAAMq0D,EAAGr0D,IACvC,GAAI5B,aAAqBglL,GAAe,CACpC,IAAIyC,EAAU,GACVl/K,EAASvI,EAAUuI,OAKvB,OAJAA,EAAOmE,SAAQ,SAAUupD,GACrB,IAAIhxD,EAAQgxD,EAAGhxD,MAAOC,EAAM+wD,EAAG/wD,IAC/BuiL,EAAQtgL,KAAK,gBAAWtE,KAAKoC,EAAM1C,IAAM,EAAG2C,EAAI3C,IAAM,EAAG,CAAE2sC,MAAOq4I,SAE/D,mBAAc/kL,OAAOZ,EAAK6lL,GAErC,OAAO,KAEX,SAASC,KACL,OAAO,IAAI,YAAO,CACdl9K,IAAKg8K,GACL1mL,MAAO,CACH05B,KAAM,WACF,OAAO,MAEXlqB,MAAO,SAAUpP,EAAIoL,GACjB,IAAIo5K,EAAaxkL,EAAGm5B,QAAQmtJ,IAC5B,GAAI9B,EACA,OAAuB,IAAhBA,EAAoB,KAAOA,EAEtC,GAAIr1H,GAAS/jD,KAAWpL,EAAG8O,WACvB,OAAO1D,EAEX,IAAI2qD,EAAK/1D,EAAGmC,QAAQ2J,UAAUV,GAAQG,EAAUwqD,EAAGxqD,QAASlJ,EAAM0zD,EAAG1zD,IACrE,OAAOkJ,EAAU,KAAOlJ,IAGhCk5B,MAAO,CACHgqB,YAAa+hI,GACbG,uBAAwB,SAAU1xH,GAC9B,IAAIn2D,EAAQm2D,EAAGn2D,MACf,OAAKuvD,GAASm3H,GAAU7qJ,SAAS77B,IAG1B,KAFIA,EAAME,YAKzBK,KAAM,SAAUg/D,GACZ,OAAO,IAAIqnH,GAAernH,MAUtC,IAAIuoH,GAAuB,WACvB,SAASt3I,IACL3kC,KAAKiwB,KAAO,GACZjwB,KAAKquK,OAAS,GA4ClB,OA1CA1pI,EAAIxkC,UAAU+7K,YAAc,SAAUr9K,GAClC,OAAOkjD,EAAUljD,EAAKmB,KAAKiwB,OAE/B0U,EAAIxkC,UAAUoD,IAAM,SAAU1E,GAC1B,OAAOmB,KAAKquK,OAAOruK,KAAKk8K,YAAYr9K,KAExC8lC,EAAIxkC,UAAUwL,IAAM,SAAU9M,EAAKc,GAC/B,IAAIw8K,EAAWn8K,KAAKk8K,YAAYr9K,GAQhC,OAPIs9K,GAAY,EACZn8K,KAAKquK,OAAO8N,GAAYx8K,GAGxBK,KAAKiwB,KAAKz0B,KAAKqD,GACfmB,KAAKquK,OAAO7yK,KAAKmE,IAEdK,MAEX2kC,EAAIxkC,UAAU3C,IAAM,SAAUqB,GAC1B,OAAOmB,KAAKk8K,YAAYr9K,IAAQ,GAEpC8lC,EAAIxkC,UAAUlJ,OAAS,SAAU4H,GAC7B,IAAIs9K,EAAWn8K,KAAKk8K,YAAYr9K,GAChC,OAAIs9K,GAAY,IACZn8K,KAAKiwB,KAAKjgB,OAAOmsK,EAAU,GAC3Bn8K,KAAKquK,OAAOr+J,OAAOmsK,EAAU,IACtB,IAIfx3I,EAAIxkC,UAAUY,QAAU,SAAU8yD,EAAUovG,GACxC,IAAIlwG,EAAQ/yD,UACI,IAAZijK,IAAsBA,EAAUjjK,MACpCA,KAAKquK,OAAOttK,SAAQ,SAAUpB,EAAO9H,GAC7B8H,GAASozD,EAAM9iC,KAAKp4B,IACpBg8D,EAAS9xD,KAAKkhK,EAAStjK,EAAOozD,EAAM9iC,KAAKp4B,GAAQk7D,OAI7DpuB,EAAIxkC,UAAUi8K,MAAQ,WAClBp8K,KAAKiwB,KAAO,GACZjwB,KAAKquK,OAAS,IAEX1pI,EA/Ce,GAsDtB03I,GAAe,QAKfC,GAAsB,WACtB,SAASA,IACLt8K,KAAK5H,KAAOikL,GACZr8K,KAAKu8K,MAAQ,IAAIN,GAqCrB,OAnCAK,EAAKn8K,UAAUq8K,QAAU,SAAUpkL,GAC/B4H,KAAK5H,KAAOA,GAAQikL,IAOxBC,EAAKn8K,UAAUs8K,YAAc,SAAUC,EAAOhlI,GAC1C,IAAIqb,EAAQ/yD,KACZ08K,EAAQ,GAAGv1K,OAAOu1K,GAClBA,EAAM37K,SAAQ,SAAU3I,GACpB,GAAK26D,EAAMwpH,MAAM/+K,IAAIpF,GAGhB,CACD,IAAIukL,EAAW5pH,EAAMwpH,MAAMh5K,IAAInL,GAC/B26D,EAAMwpH,MAAM5wK,IAAIvT,EAAMsoD,EAASi8H,EAAUjlI,SAJzCqb,EAAMwpH,MAAM5wK,IAAIvT,EAAMs/C,OAQlC4kI,EAAKn8K,UAAUoD,IAAM,SAAU1E,EAAKzG,GAC3BA,IACDA,EAAO4H,KAAK5H,MAEhB,IAAIwkL,EAAU58K,KAAKu8K,MAAMh5K,IAAInL,GACxBwkL,IACDA,EAAU58K,KAAKu8K,MAAMh5K,IAAI84K,KAE7B,IAAIn+K,EAAO0+K,EAAQ/9K,GACnB,IAAKX,EACD,MAAM,IAAI4D,MAAM,yBAA4BjD,EAAM,QAAWzG,GAEjE,OAAO8F,GAEJo+K,EAxCc,GA0CrBO,GAAO,IAAIP,GAEXQ,GAAoB,CACpB,CACI,CACIC,OAAQ,gBACRvlH,QAAS,aACTwlH,gBAAgB,EAChBj1I,UAAW,cAEf,CACIg1I,OAAQ,kBACRvlH,QAAS,eACTwlH,gBAAgB,EAChBj1I,UAAW,gBAEf,CAAEg1I,OAAQ,aAAcvlH,QAAS,YAAawlH,gBAAgB,EAAMj1I,UAAW,eAEnF,CACI,CAAEg1I,OAAQ,qBAAsBvlH,QAAS,kBAAmBzvB,UAAW,mBACvE,CAAEg1I,OAAQ,sBAAuBvlH,QAAS,mBAAoBzvB,UAAW,oBACzE,CAAEg1I,OAAQ,gBAAiBvlH,QAAS,eAAgBzvB,UAAW,kBAEnE,CACI,CACIg1I,OAAQ,uBACRvlH,QAAS,cACTC,QAAS,CAAEg9F,MAAO,QAClB1sH,UAAW,qBAEf,CACIg1I,OAAQ,yBACRvlH,QAAS,cACTC,QAAS,CAAEg9F,MAAO,UAClB1sH,UAAW,uBAEf,CACIg1I,OAAQ,wBACRvlH,QAAS,cACTC,QAAS,CAAEg9F,MAAO,SAClB1sH,UAAW,uBAGnB,CAAC,CAAEg1I,OAAQ,eAAgBvlH,QAAS,cAAezvB,UAAW,kBAElE,SAASk1I,GAAqBnqH,EAAcoqH,GACxC,OAAOJ,GACFnmL,KAAI,SAAUwmL,GACf,OAAOA,EAAiBxmL,KAAI,SAAU2zD,GAClC,IAAIyyH,EAASzyH,EAAGyyH,OAAQvlH,EAAUlN,EAAGkN,QAASC,EAAUnN,EAAGmN,QAASulH,EAAiB1yH,EAAG0yH,eAAgBj1I,EAAYuiB,EAAGviB,UACvH,MAAO,CACHi7G,MAAO65B,GAAKt5K,IAAIw5K,GAChBK,QAAS,WACLtqH,EAAawB,KAAK,UAAWkD,EAASC,IAE1CjvB,SAAU00I,KAAiBF,EAC3Bj1I,UAAWA,SAIlB5gC,SAET,SAASk2K,GAAiBvqH,GACtB,OAAO,IAAI,YAAO,CACdhjC,MAAO,CACHmuB,gBAAiB,CACb1H,YAAa,SAAU7hD,EAAMigE,GACzB,IAAIwJ,EAAYm8G,GAAgB3lH,EAAGx/D,OAAQT,EAAKuqB,KAChD,GAAIk/C,EAAW,CACXxJ,EAAGxf,iBACH,IAAImV,EAAKqK,EAAI9gB,EAAUyW,EAAGzW,QAASC,EAAUwW,EAAGxW,QAC5C2W,EAAK/1D,EAAKuqB,IAAI0E,WAAWiQ,wBAAyBR,EAAOq3B,EAAGr3B,KAAM6+B,EAAQxH,EAAGx7C,IAC7EiuK,EAAqC,OAAvB/+G,EAAUv6C,SAM5B,OALAkvC,EAAawB,KAAK,cAAe,CAC7B19D,IAAK,CAAEw8B,KAAMygB,EAAUzgB,EAAO,GAAK,KAAMnkB,IAAK6kC,EAAUme,EAAQ,GAAK,MACrEqrH,WAAYL,GAAqBnqH,EAAcoqH,GAC/C/+G,UAAWA,KAER,EAEX,OAAO,OAO3B,SAASR,KACL,OAAO,IAAI,YAAO,CACd7tC,MAAO,CACHmuB,gBAAiB,CACbvI,UAAW,SAAUhhD,EAAMigE,GACvB,IAAIrK,EAAKqK,EAAI9gB,EAAUyW,EAAGzW,QAASC,EAAUwW,EAAGxW,QAC5C2nI,EAAW/mL,EAAK4jC,YAAY,CAAElF,KAAMygB,EAAS5kC,IAAK6kC,IACtD,GAAI2nI,EAAU,CACV,IAAIhxH,EAAK/1D,EAAKP,MAAO8B,EAAMw0D,EAAGx0D,IAAK1B,EAAKk2D,EAAGl2D,GACvC+vB,EAAaruB,EAAIQ,QAAQglL,EAAS7kL,KAClCihK,EAAW8b,GAAarvJ,GACxBnvB,EAASw/D,EAAGx/D,OACZyW,EAAQ65B,iBAAiBtwC,EAAQ,WACjC+vE,EAAKvQ,EAAI7E,EAAUoV,EAAGpV,QAASC,EAAUmV,EAAGnV,QAChD,IAAK8nG,IAAahoG,GAAgBjkD,EAAOkkD,EAASC,GAC9C,OAAO,EAEX4E,EAAGxf,iBACH,IAAI11C,EAAS6kB,EAAWjvB,OAAOwiK,EAAS7gK,OACpCqF,EAAQw7J,EAAS3gK,KAAKmF,MAG1B,OAFA9H,EAAG8F,cAAcoF,EAAQ,KAAMkgD,EAAWA,EAAW,GAAItjD,GAAQ,CAAEstE,SAAUttE,EAAMstE,WACnFj1E,EAAKN,SAASG,IACP,EAEX,OAAO,OAO3B,IAAIgpL,GAAe,CAAC,QAAS,OAAQ,cAAe,eAChDC,GAAa,CAAC,SAAU,SAAU,OAAQ,QAC1CC,GAAa,CAAC,aAAc,cAAe,YAC/C,SAASC,GAAoBxmL,EAAMysB,GAC/B,IAAIpuB,EAAO2B,EAAK3B,KAAKwN,KACrB,MAAa,aAATxN,EACO2B,EAAKmF,MAAMshE,KAAO,WAAah6C,EAAWpuB,KAAKwN,MAE3B,IAA3BxN,EAAKwa,QAAQ,SACN,QAEJxa,EAEX,SAASooL,GAAwBpoL,EAAMqoL,GACnCA,EAAcroL,GAAQ,CAAEqkB,QAAQ,GAChC6jK,GAAW15I,QAAO,SAAU85I,GAAY,OAAOA,IAAatoL,KAASwL,SAAQ,SAAU+8K,GAC/EF,EAAcE,WACPF,EAAcE,MAIjC,SAASC,GAAkB1nL,EAAMD,EAAImO,EAAQ27D,GACzCs9G,GAAWz8K,SAAQ,SAAUxL,GACzB,IAAI8U,EAAO9F,EAAOlH,MAAM9H,GACpByoL,EAAa3nL,EAAKugB,YAAYxgB,IAAO,GACrC6nL,IAAc5zK,EAAKlN,QAAQ6gL,GAC3BC,IACA/9G,EAAa3qE,GAAQ,CAAEqkB,QAAQ,OAI3C,SAASskK,GAAgB7pL,EAAW4B,EAAKsO,GACrC,IAAIjL,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IAAKlD,EAAOhC,EAAUgC,KAAMD,EAAK/B,EAAU+B,GACpF8pE,EAAe,CACfC,OAAQ,CAAEvmD,QAAQ,EAAO4uB,UAAU,GACnC43B,QAAS,CAAExmD,QAAQ,EAAO4uB,UAAU,IAmBxC,OAjBAvyC,EAAIwG,aAAapG,EAAMD,GAAI,SAAUc,EAAMmd,EAAGsP,GAC1C,IAAIpuB,EAAOmoL,GAAoBxmL,EAAMysB,GACjCmjC,GAASy2H,GAAchoL,KAGvBuxD,GAAS22H,GAAYloL,IACrBooL,GAAwBpoL,EAAM2qE,GAC9BA,EAAaC,OAAO33B,UAAW,EAC/B03B,EAAaE,QAAQ53B,UAAW,GAElB,cAATjzC,GAAiC,SAATA,EAC7BwoL,GAAkBzkL,EAAOC,EAAKgL,EAAQ27D,GAGtCA,EAAa3qE,GAAQ,CAAEqkB,QAAQ,OAGhCsmD,EAEX,SAASi+G,GAAsBrrH,GAC3B,OAAO,IAAI,YAAO,CACdp+D,KAAM,WACF,MAAO,CACHqc,OAAQ,SAAUrc,GACd,IAAI41D,EAAK51D,EAAKP,MAAOE,EAAYi2D,EAAGj2D,UAAW4B,EAAMq0D,EAAGr0D,IAAKsO,EAAS+lD,EAAG/lD,OACzEuuD,EAAawB,KAAK,qBAAsB,CACpC4L,aAAcg+G,GAAgB7pL,EAAW4B,EAAKsO,UAQtE,IAAI65K,GAAiC,WACjC,SAASA,EAAgBlnL,EAAMxC,EAAM2pL,EAAQC,GACzC,IAAIvrH,EAAQ/yD,KACZA,KAAKu+K,WAAa,WACd,GAAIxrH,EAAMyrH,gBACN,MAAM,IAAI18K,MAAM,iCAEpBixD,EAAM9zC,IAAI8Z,WAAY,EACtBg6B,EAAMnlB,QAAQhiC,MAAMu4C,QAAU,OAC9B4O,EAAM0rH,mBAAmB7yK,MAAMu4C,QAAU,QACzC4O,EAAMyrH,gBAAkB,IAAI,gBAAWzrH,EAAM0rH,mBAAoB,CAC7DtqL,MAAO,iBAAY0C,OAAO,CACtBZ,IAAK88D,EAAM77D,KACXk3B,QAAS,CACL,eAAO,CACH,QAAS,WAAc,OAAO,eAAK2kC,EAAMyrH,gBAAgBrqL,MAAO4+D,EAAMyrH,gBAAgBpqL,WACtF,cAAe,WAAc,OAAO,eAAK2+D,EAAMyrH,gBAAgBrqL,MAAO4+D,EAAMyrH,gBAAgBpqL,WAC5F4xE,IAAK,SAAU7xE,EAAOC,GAElB,OADAA,EAASD,EAAMI,GAAG+D,WAAW,QACtB,GAEXw9D,MAAO,OACP4oH,OAAQ,WAEJ,OADA3rH,EAAM4rH,iBACC,GAEX,aAAc,WAEV,OADA5rH,EAAM6rH,wBACC,KAGf,oBAGRv/H,oBAAqB,SAAU9qD,GAAM,OAAOw+D,EAAM8rH,cAActqL,IAChE0pD,gBAAiB,CACbvI,UAAW,WAIP,OAHIqd,EAAMW,WAAWxtB,YACjB6sB,EAAMyrH,gBAAgBjoJ,SAEnB,GAEXygB,KAAM,WAEF,OADA+b,EAAM6rH,wBACC,MAInB7rH,EAAMyrH,gBAAgBjoJ,SAE1Bv2B,KAAK9I,KAAOA,EACZ8I,KAAK0zD,WAAah/D,EAClBsL,KAAKq+K,OAASA,EACdr+K,KAAKs+K,aAAeA,EACpBt+K,KAAKw+K,gBAAkB,KACvBx+K,KAAK8+K,UAAW,EAChB9+K,KAAKif,IAAM8J,SAASiB,cAAc,OAClChqB,KAAKif,IAAI8oB,UAAY3c,GAAI,gBACzBprB,KAAK4tC,QAAU7kB,SAASiB,cAAc,OACtChqB,KAAK4tC,QAAQ7F,UAAY3c,GAAI,qBAC7BprB,KAAK++K,2BACL/+K,KAAKg/K,oBACLh/K,KAAKif,IAAIyF,YAAY1kB,KAAKy+K,oBAC1Bz+K,KAAKif,IAAIyF,YAAY1kB,KAAK4tC,SAyG9B,OAvGAwwI,EAAgBj+K,UAAU8+K,eAAiB,WACvC,IAAIlsH,EAAQ/yD,KACRk/K,EAAOn2J,SAASiB,cAAc,OAC9BovB,EAAOrwB,SAASiB,cAAc,QAC9B8qB,EAAS/rB,SAASiB,cAAc,UACpCk1J,EAAKn3I,UAAY,OACjBqR,EAAK1hC,YAAc1X,KAAK9I,KAAKmF,MAAM8wD,KACnC/T,EAAKrR,UAAY,OACjB+M,EAAOv/C,KAAO,SACdu/C,EAAOzM,iBAAiB,SAAS,WAAc,OAAO0qB,EAAMwrH,gBAC5DW,EAAKx6J,YAAY00B,GACjB8lI,EAAKx6J,YAAYowB,GACjB90C,KAAK4tC,QAAQlpB,YAAYw6J,IAE7Bd,EAAgBj+K,UAAU6+K,kBAAoB,WAC1C,IAAIG,EAAYn/K,KAAKs+K,aAAa5P,aAAa1uK,KAAK9I,KAAKmF,MAAM8wD,MAC/D,GAAIgyH,EAAW,CACX,IAAIjoL,EAAOioL,EAAUn/K,KAAK9I,MAC1B,MAAO8I,KAAK4tC,QAAQwxI,gBAChBp/K,KAAK4tC,QAAQ3L,YAAYjiC,KAAK4tC,QAAQt2C,WAEtCJ,GACA8I,KAAK4tC,QAAQlpB,YAAYxtB,GAE7B8I,KAAKi/K,mBAGbb,EAAgBj+K,UAAU4+K,yBAA2B,WACjD/+K,KAAKy+K,mBAAqB11J,SAASiB,cAAc,OACjDhqB,KAAKy+K,mBAAmB12I,UAAY3c,GAAI,uBACxCprB,KAAKy+K,mBAAmB7yK,MAAMu4C,QAAU,QAE5Ci6H,EAAgBj+K,UAAUk/K,YAAc,WAChCr/K,KAAKw+K,kBACLx+K,KAAKw+K,gBAAgB/hJ,UACrBz8B,KAAKw+K,gBAAkB,KACvBx+K,KAAKy+K,mBAAmB7yK,MAAMu4C,QAAU,QAE5CnkD,KAAK4tC,QAAQhiC,MAAMu4C,QAAU,SAEjCi6H,EAAgBj+K,UAAUy+K,qBAAuB,WAC7C,IAAIxoL,EAAK4J,KAAK0zD,WAAWv/D,MAAME,UAAU+B,GACrCkpL,EAAat/K,KAAK0zD,WAAWv/D,MACjC6L,KAAK0zD,WAAWt/D,SAASkrL,EAAW/qL,GAAGgC,aAAa4zD,GAAoBm1H,EAAW/qL,GAAI6B,KACvF4J,KAAK0zD,WAAWn9B,QAChBv2B,KAAKg/K,oBACLh/K,KAAKq/K,eAETjB,EAAgBj+K,UAAUw+K,cAAgB,WACtC,IAAIY,EAAgB,eAAUv/K,KAAKw+K,gBAAgBrqL,OACnD6L,KAAK8+K,UAAW,EAGhB,MAAOS,IACH,eAAKv/K,KAAKw+K,gBAAgBrqL,MAAO6L,KAAKw+K,gBAAgBpqL,UACtD,eAAK4L,KAAK0zD,WAAWv/D,MAAO6L,KAAK0zD,WAAWt/D,UAEhD4L,KAAK8+K,UAAW,EAChB,IAAI1oL,EAAK4J,KAAK0zD,WAAWv/D,MAAME,UAAU+B,GACrCkpL,EAAat/K,KAAK0zD,WAAWv/D,MACjC6L,KAAK0zD,WAAWt/D,SAASkrL,EAAW/qL,GAAGgC,aAAa,mBAAcM,OAAOyoL,EAAWrpL,IAAKG,KACzF4J,KAAK0zD,WAAWn9B,QAChBv2B,KAAKq/K,eAETjB,EAAgBj+K,UAAU0+K,cAAgB,SAAUtqL,GAChD,IAAI+1D,EAAKtqD,KAAKw+K,gBAAgBrqL,MAAMs6B,iBAAiBl6B,GAAKJ,EAAQm2D,EAAGn2D,MAAOy6B,EAAe07B,EAAG17B,aAE9F,GADA5uB,KAAKw+K,gBAAgBrkJ,YAAYhmC,IAC5B6L,KAAK8+K,UAAYznH,GAAar3D,KAAKq+K,QAAS,CAG7C,IAFA,IAAImB,EAAUx/K,KAAK0zD,WAAWv/D,MAAMI,GAChCilL,EAAY,OAAQ/5K,OAAOO,KAAKq+K,SAAW,GACtCzmL,EAAI,EAAGA,EAAIg3B,EAAa1zB,OAAQtD,GAAK,EAE1C,IADA,IAAIqL,EAAQ2rB,EAAah3B,GAAGqL,MACnB6I,EAAI,EAAGA,EAAI7I,EAAM/H,OAAQ4Q,GAAK,EACnC0zK,EAAQlpL,KAAK2M,EAAM6I,GAAGnV,IAAI6iL,IAG9BgG,EAAQn8K,YACRrD,KAAK0zD,WAAWt/D,SAASorL,KAIrCpB,EAAgBj+K,UAAU4Q,OAAS,SAAU7Z,GACzC,QAAKA,EAAK6a,WAAW/R,KAAK9I,QAG1B8I,KAAK9I,KAAOA,EACP8I,KAAKw+K,iBACNx+K,KAAKg/K,qBAEF,IAEXZ,EAAgBj+K,UAAUq8B,UAAY,SAAUxJ,GAC5C,QAAUhzB,KAAKw+K,mBACTxrJ,EAAM79B,QACR6K,KAAKw+K,gBAAgBv/J,IAAIgJ,SAAS+K,EAAM79B,SAEhDipL,EAAgBj+K,UAAUu+B,eAAiB,WACvC,OAAO,GAEX0/I,EAAgBj+K,UAAUs8B,QAAU,WAChCz8B,KAAKif,IAAIkpB,oBAAoB,WAAYnoC,KAAKu+K,YAC9Cv+K,KAAKq/K,eAEFjB,EAxKyB,GA2KhCqB,GAAwB,aACxBC,GAA2B,WAC3B,SAASA,EAAUxoL,EAAMxC,EAAM2pL,EAAQvrH,GACnC,IACIxI,EADAyI,EAAQ/yD,KAEZA,KAAKg7K,gBAAkB,SAAUrmH,GAC7BA,EAAGxf,iBACH,IAAIhgD,EAASw/D,EAAGx/D,OAAQ26D,EAAU6E,EAAG7E,QAASC,EAAU4E,EAAG5E,QAC3D,GAAIgD,EAAM4sH,WACNtoH,GAAatE,EAAMsrH,SACnB9vH,GAAWp5D,EAAQsqL,IAAwB,CAC3C,IAAI7zK,EAAQ65B,iBAAiBtwC,EAAQ,WAErC,GADAw/D,EAAGE,kBACChF,GAAgBjkD,EAAOkkD,EAASC,GAAU,CAC1C,IAAIx7D,EAAKw+D,EAAMr+D,KAAKP,MAAMI,GACtBqC,EAAMm8D,EAAMsrH,SAChB9pL,EAAGgC,aAAa4zD,GAAoB51D,EAAIqC,EAAKA,EAAM,IACnDm8D,EAAMr+D,KAAKN,SAASG,GACpBw+D,EAAMD,aAAawB,KAAK,YAAa,OAAQvB,EAAM4sH,UAAUtjL,UAIzE2D,KAAK9I,KAAOA,EACZ8I,KAAKtL,KAAOA,EACZsL,KAAKq+K,OAASA,EACdr+K,KAAK8yD,aAAeA,EACpB9yD,KAAK2/K,UAGM,QAHOr1H,EAAKpzD,EAAKmG,MAAM0mC,QAAO,SAAUumB,GAC/C,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,SAAdA,EAAKwN,QACb,UAAuB,IAAPunD,EAAgBA,EAAK,KACxCtqD,KAAKif,IAAMjf,KAAKgqB,gBAChBhqB,KAAKswE,YAoCT,OAlCAovG,EAAUv/K,UAAU6pB,cAAgB,WAChC,IAAI8zC,EAAQ99D,KAAK4/K,mBAAmB5/K,KAAK9I,MACzC,GAAI8I,KAAK2/K,UAAW,CAChB,IAAI/xI,EAAU7kB,SAASiB,cAAc,QAGrC,OAFA4jB,EAAQ7F,UAAY03I,GACpB7xI,EAAQlpB,YAAYo5C,GACblwB,EAEX,OAAOkwB,GAEX4hH,EAAUv/K,UAAUy/K,mBAAqB,SAAU1oL,GAC/C,IAAI4mE,EAAQ/0C,SAASiB,cAAc,OAC/BsgC,EAAKpzD,EAAKmF,MAAO+3D,EAAW9J,EAAG8J,SAAUC,EAAU/J,EAAG+J,QACtDh4D,EAAQ63K,GAAeh9K,EAAKmF,OAMhC,OALAyhE,EAAM5Z,IAAMkQ,EACRC,IACAyJ,EAAM91B,IAAMqsB,GAEhBlC,GAAc91D,EAAOyhE,GACdA,GAEX4hH,EAAUv/K,UAAUmwE,UAAY,WACxBtwE,KAAK2/K,WACL3/K,KAAKif,IAAIopB,iBAAiB,YAAaroC,KAAKg7K,kBAGpD0E,EAAUv/K,UAAUq8B,UAAY,WAC5B,OAAO,GAEXkjJ,EAAUv/K,UAAUs8B,QAAU,WACtBz8B,KAAK2/K,WACL3/K,KAAKif,IAAIkpB,oBAAoB,YAAanoC,KAAKg7K,kBAGhD0E,EAlEmB,GAqE1BG,GAAqB,+BACrBC,GAA6B,wCAC7BC,GAA+B,WAC/B,SAASA,EAAc7oL,EAAMxC,EAAM2pL,EAAQvrH,GACvC,IAAIC,EAAQ/yD,KACZA,KAAKif,IAAM,KACXjf,KAAKmnB,WAAa,KAClBnnB,KAAKg2D,MAAQ,KACbh2D,KAAKu1D,MAAQ,KACbv1D,KAAKg7K,gBAAkB,SAAUrmH,GAC7B,IAAIx/D,EAASw/D,EAAGx/D,OACZyW,EAAQ65B,iBAAiBtwC,EAAQ,UAErC,GAA8B,SAA1ByW,EAAMo0K,iBAA8B3oH,GAAatE,EAAMsrH,QAAS,CAChE,IAAI/zH,EAAKyI,EAAMr+D,KAAK0kC,YAAY25B,EAAMsrH,UAAWpsH,EAAQ3H,EAAGr7C,IAAKokB,EAAQi3B,EAAGj3B,MAC5E0/B,EAAMktH,qBAAqB,CAAEhxK,IAAKgjD,EAAO5+B,MAAOA,MAGxDrzB,KAAKkgL,cAAgB,SAAUvrH,GACZ,UAAXA,EAAG91D,KAAmBk0D,EAAMiD,QAC5BrB,EAAGxf,iBACH4d,EAAMotH,mBAGdngL,KAAK9I,KAAOA,EACZ8I,KAAKtL,KAAOA,EACZsL,KAAKq+K,OAASA,EACdr+K,KAAK8yD,aAAeA,EACpB9yD,KAAKgqB,gBACLhqB,KAAKogL,eACLpgL,KAAKswE,YAuGT,OArGAyvG,EAAc5/K,UAAU6pB,cAAgB,WACpC,IAAIq2J,EAAWrgL,KAAK9I,KAAKmF,MAAMgkL,SAC3BzyI,EAAU7kB,SAASiB,cAAc,OACrC4jB,EAAQzjB,aAAa,gBAAiBk2J,GAAY,QAClDzyI,EAAQ7F,UAAY83I,GACpB,IAAI59J,EAAMjiB,KAAKsgL,yBACXloL,EAAO6pB,EAAI5qB,WACfu2C,EAAQlpB,YAAYzC,GACpBjiB,KAAKif,IAAM2uB,EACX5tC,KAAKmnB,WAAa/uB,GAEtB2nL,EAAc5/K,UAAUmgL,uBAAyB,WAC7C,IAAIr+J,EAAM8G,SAASiB,cAAc,OAC7B5xB,EAAO2wB,SAASiB,cAAc,QAC9Bq2J,EAAWrgL,KAAK9I,KAAKmF,MAAMgkL,SAC3BhkL,EAAQ63K,GAAel0K,KAAK9I,KAAKmF,OAMrC,OALIgkL,GACAjoL,EAAK+xB,aAAa,gBAAiBk2J,GAEvCluH,GAAc91D,EAAO4lB,GACrBA,EAAIyC,YAAYtsB,GACT6pB,GAEX89J,EAAc5/K,UAAU8/K,qBAAuB,SAAU31H,GACrD,IAAIyI,EAAQ/yD,KACRiP,EAAMq7C,EAAGr7C,IAAKokB,EAAQi3B,EAAGj3B,MACzBua,EAAU7kB,SAASiB,cAAc,QACrC4jB,EAAQ7F,UAAY+3I,GACpB,IAAI9pH,EAAQjtC,SAASiB,cAAc,SACnCgsC,EAAMzgE,KAAO,OACbygE,EAAMr2D,MAAQK,KAAK9I,KAAKmF,MAAMgkL,SAC9BzyI,EAAQlpB,YAAYsxC,GACpBh2D,KAAKtL,KAAKuqB,IAAIk0C,cAAczuC,YAAYkpB,GACxC,IAAI2yI,EAAc3yI,EAAQta,YAC1BquB,EAAM/T,EAAS,CACX3+B,IAAKA,EAAM,GAAK,KAChBmkB,KAAMC,EAAQktJ,EAAc,GAAK,KACjCzsJ,MAAOysJ,EAAc,OAEzBvgL,KAAKg2D,MAAQA,EACbh2D,KAAKg2D,MAAM3tB,iBAAiB,QAAQ,WAAc,OAAO0qB,EAAMotH,oBAC/DngL,KAAKg2D,MAAM3tB,iBAAiB,UAAWroC,KAAKkgL,eAC5ClgL,KAAKi2D,aACLj2D,KAAKu1D,MAAQjtB,YAAW,WACpByqB,EAAMiD,MAAMz/B,YAGpBwpJ,EAAc5/K,UAAUigL,aAAe,WAC/BpgL,KAAKif,KACLjf,KAAKif,IAAIopB,iBAAiB,QAASroC,KAAKg7K,kBAGhD+E,EAAc5/K,UAAUmwE,UAAY,WAChC,IAAIvd,EAAQ/yD,KACZA,KAAK8yD,aAAaM,OAAO,UAAU,WAC3BL,EAAMiD,OACNjD,EAAMytH,YAIlBT,EAAc5/K,UAAUggL,eAAiB,WACrC,GAAIngL,KAAKg2D,OAASqB,GAAar3D,KAAKq+K,QAAS,CACzC,IAAI1+K,EAAQK,KAAKg2D,MAAMr2D,MACvBK,KAAKwgL,QACL,IAAI5pL,EAAMoJ,KAAKq+K,SACX9pL,EAAKyL,KAAKtL,KAAKP,MAAMI,GACzBA,EAAG8F,cAAczD,EAAK,KAAM,CAAEypL,SAAU1gL,IACxCK,KAAKtL,KAAKN,SAASG,KAG3BwrL,EAAc5/K,UAAUqgL,MAAQ,WAC5B,IAAIl2H,EACJ,GAA0B,QAArBA,EAAKtqD,KAAKg2D,aAA0B,IAAP1L,OAAgB,EAASA,EAAG6I,cAAe,CACzE,IAAI4L,EAAW/+D,KAAKg2D,MAAM7C,cAC1BnzD,KAAKg2D,MAAQ,KACb1E,GAAayN,KAGrBghH,EAAc5/K,UAAU81D,WAAa,WAC7Bj2D,KAAKu1D,QACL7jB,aAAa1xC,KAAKu1D,OAClBv1D,KAAKu1D,MAAQ,OAGrBwqH,EAAc5/K,UAAUq8B,UAAY,WAChC,OAAO,GAEXujJ,EAAc5/K,UAAU4Q,OAAS,SAAU7Z,GACvC,QAAKA,EAAK6a,WAAW/R,KAAK9I,QAG1B8I,KAAK9I,KAAOA,GACL,IAEX6oL,EAAc5/K,UAAUs8B,QAAU,WAC9Bz8B,KAAKwgL,QACLxgL,KAAKi2D,aACDj2D,KAAKif,KACLjf,KAAKif,IAAIkpB,oBAAoB,QAASnoC,KAAKg7K,kBAG5C+E,EAnIuB,GAsI9BU,GAAqB,mBACrBC,GAAmB,oBACnBC,GAAiB,gBACjBC,GAAe,MACfC,GAAkB,WAClBC,GAA2B,qBAC/B,SAASC,GAAUjzI,GACf,OAAO4yI,GAAiB1hL,KAAK8uC,GAEjC,SAASkzI,GAAoB9mC,GACzB,IAAIhpG,EAAe,GACf0b,EAAS7jC,SAASk4J,iBAAiB/mC,EAAM,EAAG,MAAM,GACtD,MAAOttF,EAAO/iB,WAAY,CACtB,IAAI3yC,EAAO01D,EAAOo/G,YAClB,GAAIn7G,GAAW35D,GAAO,CAClB,IAAIozD,EAAKpzD,EAAM6zK,EAAYzgH,EAAGygH,UAAWrzJ,EAAc4yC,EAAG5yC,YACtDwpK,EAAUR,GAAiB1hL,KAAK+rK,GAChCoW,EAAaR,GAAe3hL,KAAK+rK,GACjCmW,IAAYC,GAAczpK,EAC1Bw5B,EAAa11C,KAAK,CAACtE,GAAM,KAEpB0pL,GAAa5hL,KAAK9H,EAAK0sB,WAAcs9J,IAAYxpK,GAAgBypK,IACtEjwI,EAAa11C,KAAK,CAACtE,GAAM,KAarC,OATAg6C,EAAanwC,SAAQ,SAAUupD,GAC3B,IAAIpzD,EAAOozD,EAAG,GAAI82H,EAAW92H,EAAG,GAC5B82H,EACA7vH,GAAWr6D,GAGXo6D,GAAap6D,MAGdgjJ,EAAKlqG,UAAU/qB,OAE1B,SAASo8J,GAAgCnnC,EAAMriJ,GAC3C,IAAIypL,EAAYpnC,EAAK70H,aAAa,SAClC,GAAIi8J,EAAW,CACX,IAAIh3H,EAAKg3H,EAAU9oL,MAAMmoL,IAAiBY,EAAej3H,EAAG,GACxDG,EAAK82H,EAAat8J,OAAOrrB,MAAM,KAAM4nL,EAAW/2H,EAAG,GACnDz7C,EAAQghD,SAASwxH,EAASt8K,QAAQ,QAAS,IAAK,IAChDu8K,EAAYZ,GAAgB7hL,KAAKk7I,EAAKxiI,aAAe,IACzD,MAAO,CACH9S,GAAI/M,EACJmX,MAAOA,EACPkf,KAAM,KACNv4B,OAAQ,KACRkmC,SAAU,GACV4lJ,UAAWA,EACX9vH,SAAUqvH,GAAoB9mC,IAGtC,OAAO,KAEX,SAASwnC,GAAsBhqI,EAAMiqI,GACjC,GAAIA,EAAS3yK,MAAQ0oC,EAAK1oC,MACtB2yK,EAAS9lJ,SAASrgC,KAAKk8C,GACvBA,EAAK/hD,OAASgsL,MAEb,CACD,MAAOA,EAAU,CACb,GAAIA,EAAS3yK,QAAU0oC,EAAK1oC,MACxB,MAEJ2yK,EAAWA,EAAShsL,OAEpBgsL,IACAjqI,EAAKxpB,KAAOyzJ,EACZjqI,EAAK/hD,OAASgsL,EAAShsL,OACnB+hD,EAAK/hD,QACL+hD,EAAK/hD,OAAOkmC,SAASrgC,KAAKk8C,KAK1C,SAASkqI,GAAeC,GACpB,IAAIp2H,EAAW,GAWf,OAVAo2H,EAAM9gL,SAAQ,SAAUm5I,EAAMriJ,GAC1B,IAAIiqL,EAAmBr2H,EAAS5zD,EAAQ,GACpCkqL,EAAeV,GAAgCnnC,EAAMriJ,GACrDkqL,IACID,GACAJ,GAAsBK,EAAcD,GAExCr2H,EAASjwD,KAAKumL,OAGft2H,EAEX,SAASu2H,GAASv2H,GACd,IAAIw2H,EAAcx2H,EAAS,GAAGg2H,UAAY,KAAO,KAC7Cn6H,EAAOv+B,SAASiB,cAAci4J,GAUlC,OATAx2H,EAAS1qD,SAAQ,SAAU22C,GACvB,IAAI7b,EAAW6b,EAAK7b,SAAU81B,EAAWja,EAAKia,SAC1CkmG,EAAW9uI,SAASiB,cAAc,MACtC6tI,EAAS7nH,UAAY2hB,EACrBrK,EAAK5iC,YAAYmzI,GACbh8H,EAAS3gC,QACTosD,EAAK5iC,YAAYs9J,GAASnmJ,OAG3ByrB,EAEX,SAAS46H,GAAuBL,GAC5B,IAAIp2H,EAAWm2H,GAAeC,GAC1BM,EAAe12H,EAAS1nB,QAAO,SAAUumB,GACzC,IAAI30D,EAAS20D,EAAG30D,OAChB,OAAQA,KAEZ,OAAOqsL,GAASG,GAEpB,SAASC,GAAsBlrL,GAC3B,MAAOA,EAAM,CACT,GAAI25D,GAAW35D,GACX,MAEJA,EAAOA,EAAKutB,YAEhB,OAAOvtB,IAAQupL,GAAmBzhL,KAAK9H,EAAK6wC,WAEhD,SAASs6I,GAA2Bv0I,GAChC,IAAIkE,EAAYjpB,SAASiB,cAAc,OACvCgoB,EAAUhC,UAAYlC,EACtB,IAAI+zI,EAAQ,GACRS,EAAavxH,GAAU/e,EAAW8uI,IACtCwB,EAAWvhL,SAAQ,SAAUm5I,GACzB,IAAIqoC,EAAiBH,GAAsBloC,EAAKz1H,aAEhD,GADAo9J,EAAMrmL,KAAK0+I,GACPqoC,EAAgB,CAChB,IAAIj7H,EAAO46H,GAAuBL,GAC9Bp9J,EAAcy1H,EAAKz1H,YACnBA,EACA2sC,GAAiB9J,EAAM7iC,GAGvBwsC,GAAYjf,EAAWsV,GAE3Bu6H,EAAQ,GAEZvwH,GAAa4oF,MAGjB,IAAIsoC,EAAYF,EAAWpnL,OAAS,UAAY,GAChD,MAAO,GAAKsnL,EAAYxwI,EAAUhC,UAGtC,IAAIyyI,GAAyB,6BACzBC,GAAuB,2BAC3B,SAASC,GAAkC70I,GACvC,IAAI80I,EAAqB90I,EAAK/9B,QAAQ0yK,IAClCI,EAAmB/0I,EAAKplB,YAAYg6J,IAIxC,OAHIE,GAAsB,GAAKC,GAAoB,IAC/C/0I,EAAOA,EAAK33C,MAAMysL,EAAqBH,GAAuBvnL,OAAQ2nL,IAEnE/0I,EAAK5oC,QAAQ,aAAc0qD,IAEtC,SAASkzH,GAAgCh1I,GAWrC,MARI,8BAA8B9uC,KAAK8uC,KACnCA,EAAO,OAASA,EAAO,SAIvB,iCAAiC9uC,KAAK8uC,KACtCA,EAAO,UAAYA,EAAO,YAEvBA,EAEX,SAASi1I,GAAiBj1I,GAMtB,OALAA,EAAO60I,GAAkC70I,GACzCA,EAAOg1I,GAAgCh1I,GACnCizI,GAAUjzI,KACVA,EAAOu0I,GAA2Bv0I,IAE/BA,EAEX,SAASk1I,GAAkBx6G,GACvB,IAAIf,EAAMe,EAAKrtD,QAAO,SAAU8nK,EAASC,GACrC,OAAOD,EAAQzrL,WAAa0rL,EAAW1rL,WAAayrL,EAAUC,KAElE,OAAOz7G,EAAIjwE,WAEf,SAAS2rL,GAAYC,EAAQC,EAAgBrvB,GAGzC,IAFA,IAAID,EAAQ,GACRuvB,EAAYF,EAAO5rL,WACdq/K,EAAS,EAAGA,EAASyM,EAAWzM,GAAU,EAC/C,IAAKuM,EAAO/7K,MAAMwvK,GAAQx6K,MAAM09K,SAAU,CACtC,IAAIwJ,EAAa1M,EAASyM,EACpBtvB,EAAKn9J,OAAOusL,EAAO/7K,MAAMwvK,GAAQx6K,MAAO+mL,EAAO/7K,MAAMwvK,GAAQjhL,SAC7Do+J,EAAK96J,gBACX66J,EAAMv4J,KAAK+nL,GAGnB,OAAOxvB,EAEX,SAASyvB,GAAiBJ,EAAQC,EAAgB9+K,GAC9C,IAAI+lD,EAAK/lD,EAAOsP,MAAOu9I,EAAW9mG,EAAG8mG,SAAU8oB,EAAgB5vH,EAAG4vH,cAC9DnmB,EAAQovB,GAAYC,EAAQC,EAAgBnJ,GAChD,OAAO9oB,EAASv6J,OAAO,KAAMk9J,GAEjC,SAAS0vB,GAAiBL,EAAQC,EAAgB9+K,GAC9C,IAAI+lD,EAAK/lD,EAAOsP,MAAOu9I,EAAW9mG,EAAG8mG,SAAUgpB,EAAgB9vH,EAAG8vH,cAC9DrmB,EAAQovB,GAAYC,EAAQC,EAAgBjJ,GAChD,OAAOhpB,EAASv6J,OAAO,KAAMk9J,GAEjC,SAAS2vB,GAAuBt8G,EAAa7iE,GAGzC,IAFA,IAAI+lD,EAAK/lD,EAAOsP,MAAOu9I,EAAW9mG,EAAG8mG,SAAUgpB,EAAgB9vH,EAAG8vH,cAC9DrmB,EAAQ,GACH4vB,EAAc,EAAGA,EAAcv8G,EAAau8G,GAAe,EAAG,CACnE,IAAIC,EAAYxJ,EAAclhL,gBAC9B66J,EAAMv4J,KAAKooL,GAEf,OAAOxyB,EAASv6J,OAAO,CAAEgtL,oBAAoB,GAAQ9vB,GAEzD,SAAS+vB,GAA2BC,GAChC,IAAIC,EAAgB,GAChBC,EAAgB,GACpB,GAA0C,cAAtCF,EAAa1sL,WAAW9B,KAAKwN,KAAsB,CACnD,IAAI6wJ,EAAYmwB,EAAa1sL,WAC7Bu8J,EAAU7yJ,SAAQ,SAAU0mE,GAAO,OAAOu8G,EAAcxoL,KAAKisE,MAEjE,GAAyC,cAArCs8G,EAAazsL,UAAU/B,KAAKwN,KAAsB,CAClD,IAAI4wJ,EAAYowB,EAAazsL,UAC7Bq8J,EAAU5yJ,SAAQ,SAAU0mE,GAAO,OAAOw8G,EAAczoL,KAAKisE,MAEjE,OAAO5nB,EAAgBA,EAAgB,GAAImkI,GAAgBC,GAE/D,SAASC,GAAgBC,EAAcd,EAAgB9+K,GACnD,IAAIy1K,EAAYwJ,GAAiBW,EAAcd,EAAgB9+K,GAC/D,OAAOA,EAAOsP,MAAM+/I,UAAU/8J,OAAO,KAAMmjL,GAE/C,SAASoK,GAAgBH,EAAeZ,EAAgB9+K,GACpD,IAAI8/K,EAAaJ,EAActtL,KAAI,SAAU2tL,GACzC,OAAOb,GAAiBa,EAAcjB,EAAgB9+K,MAE1D,IAAK0/K,EAAc/oL,OAAQ,CACvB,IAAIqpL,EAAgBb,GAAuBL,EAAgB9+K,GAC3D8/K,EAAW7oL,KAAK+oL,GAEpB,OAAOhgL,EAAOsP,MAAM8/I,UAAU98J,OAAO,KAAMwtL,GAE/C,SAASG,GAA4Bh8G,EAAMjkE,EAAQkgL,EAAeC,GAC9D,IAAIt9G,EAAc47G,GAAkBx6G,GACpC,GAAIi8G,GAAiBC,EACjB,OAAOngL,EAAOsP,MAAMsO,MAAMtrB,OAAO,KAAM,CAACutL,GAAgB57G,EAAMpB,EAAa7iE,KAE/E,IAAI4/K,EAAe37G,EAAK,GACpBy7G,EAAgBz7G,EAAKryE,MAAM,GAC3B0d,EAAQ,CAACqwK,GAAgBC,EAAc/8G,EAAa7iE,IAIxD,OAHI0/K,EAAc/oL,QACd2Y,EAAMrY,KAAK4oL,GAAgBH,EAAe78G,EAAa7iE,IAEpDA,EAAOsP,MAAMsO,MAAMtrB,OAAO,KAAMgd,GAE3C,SAAS8wK,GAAkBxuL,EAAOoO,EAAQmgL,GACtC,IAAI7wK,EAAQ,GACRje,EAAUO,EAAMP,QAAS8P,EAAYvP,EAAMuP,UAAWD,EAAUtP,EAAMsP,QAe1E,OAdA7P,EAAQmL,SAAQ,SAAU7J,GACtB,GAAuB,UAAnBA,EAAK3B,KAAKwN,KAAkB,CAC5B,IAAIghL,EAAerJ,GAAyB,IAAI,WAAM,cAASrkL,KAAKa,GAAO,EAAG,IAC9E,GAAI6sL,EAAc,CACd,IAAIv7G,EAAOs7G,GAA2BC,GAClCU,EAAsD,cAAtCV,EAAa1sL,WAAW9B,KAAKwN,KAC7Cof,EAAQqiK,GAA4Bh8G,EAAMjkE,EAAQkgL,EAAeC,GACrE7wK,EAAMrY,KAAK2mB,SAIftO,EAAMrY,KAAKtE,MAGZ,IAAI,WAAM,cAASb,KAAKwd,GAAQnO,EAAWD,GAGtD,IAAIm/K,GAAkB,EAClBC,GAAgB,EACpB,SAASC,GAAiBC,GACtB,OAAOA,EAAiBH,GAE5B,SAASI,GAAmBjB,EAAckB,EAAkB1gL,GACxD,IAAI2gL,EAAc,GACdC,EAAmBrB,GAA2BC,GAC9C38G,EAAc+9G,EAAiB,GAAG3tL,WAClC+vE,EAAW49G,EAAiBjqL,OAC5BkqL,EAAoD,IAAjCH,EAAiB7M,YACpCiN,EAAaF,EAAiBhvL,MAAM,EAAGoxE,GAC3C,GAAI69G,EAAkB,CAClB,IAAIjB,EAAekB,EAAWvrK,QAC9B,GAAIqqK,EAAc,CACd,IAAIvuL,EAAU4tL,GAAiBW,EAAc/8G,EAAa7iE,GAAQ3O,QAClEsvL,EAAY1pL,KAAK5F,IASzB,OANAyvL,EAAWtkL,SAAQ,SAAUujL,GACzB,IAAKA,EAAajoL,MAAMwnL,mBAAoB,CACxC,IAAIjuL,EAAU6tL,GAAiBa,EAAcl9G,EAAa7iE,GAAQ3O,QAClEsvL,EAAY1pL,KAAK5F,OAGlBsvL,EAEX,SAASI,GAAoB3uL,EAAK2zD,EAAIi7H,GAelC,IAdA,IAAInN,EAAc9tH,EAAG8tH,YAAaC,EAAc/tH,EAAG+tH,YAC/CmN,EAAkBD,EAAarqL,OAC/BuqL,EAAqB,EACrBl8G,EAAU,SAAU3xE,GACpB,IAAIwvE,EAAcm+G,EAAa3tL,GAAGJ,WAClC+tL,EAAa3tL,GAAGmJ,SAAQ,SAAUupD,GAC9B,IAAIjuD,EAAQiuD,EAAGjuD,MACXqpL,EAAUrpL,EAAMqpL,QAChBA,EAAU,IACVt+G,GAAes+G,EAAU,MAGjCD,EAAqBnmL,KAAKiG,IAAIkgL,EAAoBr+G,IAE7CxvE,EAAI,EAAGA,EAAI4tL,EAAiB5tL,GAAK,EACtC2xE,EAAQ3xE,GAEZ,IAAI0gL,EAAYF,EAAcoN,EAAkB,EAC5CjN,EAAYF,EAAcoN,EAAqB,EAC/CE,EAAgBrmL,KAAKiG,IAAI+yK,EAAY,EAAI3hL,EAAIqhL,cAAe,GAC5D4N,EAAmBtmL,KAAKiG,IAAIgzK,EAAY,EAAI5hL,EAAIsgL,iBAAkB,GACtE,MAAO,CACHmB,YAAaA,EACbC,YAAaA,EACbC,UAAWA,EACXC,UAAWA,EACXoN,cAAeA,EACfC,iBAAkBA,GAG1B,SAASC,GAAmBv7H,EAAIw7H,GAE5B,IADA,IAAI1N,EAAc9tH,EAAG8tH,YAAaC,EAAc/tH,EAAG+tH,YAAaC,EAAYhuH,EAAGguH,UAAWC,EAAYjuH,EAAGiuH,UAAWoN,EAAgBr7H,EAAGq7H,cAAeC,EAAmBt7H,EAAGs7H,iBACnKhP,EAASwB,EAAaxB,GAAU0B,EAAYqN,EAAe/O,GAAU,EAC1EkP,EAAatqL,KAAK,CACdo7K,OAAQA,EACRyB,YAAaA,EACbE,UAAWA,EAAYqN,IAInC,SAASG,GAAcxxL,EAAIgQ,EAAQ5N,EAAK2zD,EAAIw7H,GAIxC,IAHA,IAAI1N,EAAc9tH,EAAG8tH,YAAaC,EAAc/tH,EAAG+tH,YAAaC,EAAYhuH,EAAGguH,UAAWC,EAAYjuH,EAAGiuH,UAAWoN,EAAgBr7H,EAAGq7H,cAAeC,EAAmBt7H,EAAGs7H,iBACxK5N,EAAgBrhL,EAAIqhL,cACpBngL,EAAQ,EACH++K,EAAS,EAAGA,EAASoB,EAAepB,GAAU,EAAG,CACtD,IAAInsH,EAAK9zD,EAAIggL,YAAYC,EAAQ2B,EAAYqN,GAAmBnmL,EAASgrD,EAAGhrD,OAAQ3I,EAAW2zD,EAAG3zD,SAC9FkvL,EAAezxL,EAAGmC,QAAQC,IAAI8I,EAAS3I,GACvCi9J,EAAQsmB,GAAiBuL,EAAkBhP,EAAQryK,GAEvD,GADAhQ,EAAGkF,OAAOusL,EAAcjyB,GACpB6iB,GAAUwB,GAAexB,GAAU0B,EAAYqN,EAAe,CAC9D,IAAIxO,EAAWxgL,EAAIggL,YAAYC,EAAQ2B,EAAYqN,GAC/CK,EAAkB1xL,EAAGmC,QAAQC,IAAIwgL,EAAS13K,QAC1CymL,EAAgBF,EAAelB,GAAiBc,GACpDE,EAAajuL,GAAS,CAClB++K,OAAQA,EACRyB,YAAaA,EACbE,UAAWA,EACX4N,aAAc,CAACF,EAAiBC,IAEpCruL,GAAS,IAIrB,SAASuuL,GAAW7xL,EAAIgQ,EAAQ5N,EAAK2zD,EAAIw7H,GACrC,IAAIH,EAAgBr7H,EAAGq7H,cAAeC,EAAmBt7H,EAAGs7H,iBAAkBvN,EAAc/tH,EAAG+tH,YAAaE,EAAYjuH,EAAGiuH,UACvH8N,EAAW9xL,EAAGmC,QAAQ+K,KAAKvG,OAC3B0+K,EAAcjjL,EAAI2vL,eAAiB,EACnC99G,EAAO2xG,GAAoBwL,EAAehvL,EAAIsgL,iBAAmB2O,EAAkBrhL,GACnFu0B,EAAc8gJ,EAClBrlL,EAAGkF,OAAOlF,EAAGmC,QAAQP,MAAMkwL,GAAU1vL,IAAImiC,GAAc0vC,GACvD,IAAK,IAAI+9G,EAAW,EAAGA,EAAWZ,EAAeY,GAAY,EAAG,CAC5D,IAAIN,EAAkBntJ,EAAcgsJ,GAAiBzM,GAAe,EAChE6N,EAAgBptJ,EAAcgsJ,GAAiBvM,EAAY,GAAK,EAChEiO,EAAiB1tJ,EAAcgsJ,GAAiBnuL,EAAIsgL,iBAAmB2O,GAAoBf,GAC/FiB,EAAatqL,KAAK,CACdo7K,OAAQ2P,EAAW5vL,EAAIqhL,cACvBK,YAAaA,EACbE,UAAWA,EACX4N,aAAc,CAACF,EAAiBC,KAEpCptJ,EAAc0tJ,GAGtB,SAASC,GAAalyL,EAAI2wL,EAAaY,EAAcnvL,GACjD,IAAI0vL,EAAW9xL,EAAGmC,QAAQ+K,KAAKvG,OAC/B4qL,EAAa/kL,SAAQ,SAAU2lL,EAAS7uL,GACpC,IAAI++K,EAAS8P,EAAQ9P,OAAQyB,EAAcqO,EAAQrO,YAAaE,EAAYmO,EAAQnO,UAAW4N,EAAeO,EAAQP,aAClHzvL,EAAUnC,EAAGmC,QAAQP,MAAMkwL,GAC3BtyB,EAAQ,IAAI,WAAMmxB,EAAYrtL,GAAQ,EAAG,GACzCxB,EAAO8vL,EAAeA,EAAa,GAAKxvL,EAAIkhL,mBAAmBjB,EAAQyB,GACvEjiL,EAAK+vL,EAAeA,EAAa,GAAKxvL,EAAImhL,iBAAiBlB,EAAQ2B,GACvEhkL,EAAG2Q,QAAQxO,EAAQC,IAAIN,GAAOK,EAAQC,IAAIP,GAAK29J,MAGvD,SAAS4yB,GAAajyL,EAAMyB,GACxB,IAAIm0D,EAAK51D,EAAKP,MAAOE,EAAYi2D,EAAGj2D,UAAWkQ,EAAS+lD,EAAG/lD,OAAQhQ,EAAK+1D,EAAG/1D,GACvEk2D,EAAK+vH,GAAqBnmL,GAAYs2B,EAAS8/B,EAAG9/B,OAAQpI,EAAOkoC,EAAGloC,KACxE,GAAIoI,GAAUpI,EAAM,CAChB,IAAIwhK,EAAerJ,GAAyBvkL,GAC5C,IAAK4tL,EACD,OAAO,EAEX,IAAIptL,EAAMs/K,GAAep/K,OAAO8zB,GAC5Bs6J,EAAmBtuL,EAAIshL,eAAettJ,EAAQpI,GAC9CgjK,EAAeP,GAAmBjB,EAAckB,EAAkB1gL,GAClEqiL,EAActB,GAAoB3uL,EAAKsuL,EAAkBM,GACzDO,EAAe,GAcnB,OAZIe,GAASlwL,EAAKiwL,KACdf,GAAmBe,EAAad,GAC5Bc,EAAYhB,kBACZG,GAAcxxL,EAAIgQ,EAAQ5N,EAAKiwL,EAAad,GAE5Cc,EAAYjB,eACZS,GAAW7xL,EAAIgQ,EAAQ5N,EAAKiwL,EAAad,GAE7CW,GAAalyL,EAAIgxL,EAAcO,EAAcnvL,GAC7CjC,EAAKN,SAASG,GACdgC,GAAa7B,EAAMoxL,EAAcnvL,EAAIggL,YAAY,EAAG,GAAGl3K,UAEpD,EAEX,OAAO,EAEX,SAASlJ,GAAa7B,EAAMoxL,EAAclvL,GACtC,IAAI0zD,EAAK51D,EAAKP,MAAOI,EAAK+1D,EAAG/1D,GAAI0B,EAAMq0D,EAAGr0D,IAEtCU,EAAMs/K,GAAep/K,OAAOZ,EAAIQ,QAAQG,IAExC6zD,EAAKq7H,EAAa,GAAI1N,EAAc3tH,EAAGmsH,OAAQyB,EAAc5tH,EAAG4tH,YAChEnzG,EAAKpc,GAAOg9H,GAAexN,EAAYpzG,EAAG0xG,OAAQ2B,EAAYrzG,EAAGqzG,UACjEz/I,EAAcniC,EAAIggL,YAAYyB,EAAaC,GAAa54K,OACxDm5D,EAAYjiE,EAAIggL,YAAY2B,EAAWC,GAAW94K,OACtD/K,EAAKN,SAASG,EAAGgC,aAAa,IAAI8iL,GAAcpjL,EAAIQ,QAAQqiC,GAAc7iC,EAAIQ,QAAQmiE,MAE1F,SAASiuH,GAASlwL,EAAKiwL,GACnB,IAAIhqL,EAASjG,EAAI6hL,kBAAkBoO,GAC/Bt8H,EAAKqwH,GAAqB/9K,GAAS2qE,EAAWjd,EAAGid,SAAUH,EAAc9c,EAAG8c,YAC5E3c,EAAKkwH,GAAqBiM,GAAcpB,EAAkB/6H,EAAG8c,SAAUk+G,EAAqBh7H,EAAG2c,YACnG,OAAOG,IAAai+G,GAAmBp+G,IAAgBq+G,EAG3D,IAAI7kH,GAAqB,SAAUvL,GAE/B,SAASuL,IACL,OAAkB,OAAXvL,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAkB/D,OApBAw/C,EAAYohB,EAAKvL,GAIjBxyD,OAAOs9C,eAAeygB,EAAIzgE,UAAW,OAAQ,CACzCoD,IAAK,WACD,MAAO,OAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAeygB,EAAIzgE,UAAW,SAAU,CAC3CoD,IAAK,WACD,MAAO,CACH3N,QAAS,WAGjBm/D,YAAY,EACZ3xD,cAAc,IAEXw9D,EArBa,CAsBtB9L,IAEEiQ,GAA2B,SAAU1P,GAErC,SAAS0P,IACL,OAAkB,OAAX1P,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAyB/D,OA3BAw/C,EAAYulB,EAAW1P,GAIvBxyD,OAAOs9C,eAAe4kB,EAAU5kE,UAAW,OAAQ,CAC/CoD,IAAK,WACD,MAAO,aAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe4kB,EAAU5kE,UAAW,SAAU,CACjDoD,IAAK,WACD,MAAO,CACH3N,QAAS,UACTinB,MAAO,QACPxgB,MAAOsjD,EAAW,GAAIs0H,MACtBh0J,SAAU,CAAC,CAAEpB,IAAK,MAClBiK,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,IAAK63K,GAAe73K,GAAQ,MAIhD04D,YAAY,EACZ3xD,cAAc,IAEX2hE,EA5BmB,CA6B5BjQ,IAEEgyH,GAAe,WACf5gH,GAAsB,SAAU7Q,GAEhC,SAAS6Q,IACL,OAAkB,OAAX7Q,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAsD/D,OAxDAw/C,EAAY0mB,EAAM7Q,GAIlBxyD,OAAOs9C,eAAe+lB,EAAK/lE,UAAW,OAAQ,CAC1CoD,IAAK,WACD,MAAO,QAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe+lB,EAAK/lE,UAAW,SAAU,CAC5CoD,IAAK,WACD,MAAO,CACHsZ,MAAO,WAGfk4C,YAAY,EACZ3xD,cAAc,IAElB8iE,EAAK/lE,UAAU4mL,UAAY,WACvB,OAAO,SAAUz8H,EAAIl2D,GACjB,IAAIC,EAAYi2D,EAAGj2D,UAAWE,EAAK+1D,EAAG/1D,GAClC+E,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IACzCtE,EAAQqE,EAAMpE,WAAWqE,GAC7B,SAAItE,GAAUw+K,GAAan6K,IAAWo6K,GAAcp6K,MAChDlF,EAASG,EAAG+D,WAAW,OAAQgB,EAAM1C,IAAK2C,EAAI3C,OACvC,KAKnBsvE,EAAK/lE,UAAU6mL,aAAe,WAC1B,OAAO,SAAU18H,EAAIl2D,GACjB,IAAIC,EAAYi2D,EAAGj2D,UAAWE,EAAK+1D,EAAG/1D,GAClC+E,EAAQjF,EAAUiF,MAAOC,EAAMlF,EAAUkF,IAAKlD,EAAOhC,EAAUgC,KAC/DpB,EAAQqE,EAAMpE,WAAWqE,GAC7B,GAAItE,IAAUw+K,GAAan6K,KAAWo6K,GAAcp6K,GAAQ,CACxD,IAAIhE,EAAagE,EAAMhE,WACvB,GAAIA,GAAcA,EAAW0I,OAAQ,CACjC,IAAIE,EAAO5I,EAAW4I,KAClB+oL,EAAmB/oL,EAAKgH,QAAQ4hL,GAAc,IAC9C9/G,EAAS9oE,EAAKhD,OAAS+rL,EAAiB/rL,OAE5C,OADA9G,EAASG,EAAG0C,OAAOZ,EAAO2wE,EAAQ3wE,KAC3B,GAGf,OAAO,IAGf6vE,EAAK/lE,UAAU01D,QAAU,WACrB,MAAO,CACHmQ,IAAKhmE,KAAK+mL,YACV,YAAa/mL,KAAKgnL,iBAGnB9gH,EAzDc,CA0DvBpR,IAEEuR,GAAyB,SAAUhR,GAEnC,SAASgR,IACL,OAAkB,OAAXhR,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAgD/D,OAlDAw/C,EAAY6mB,EAAShR,GAIrBxyD,OAAOs9C,eAAekmB,EAAQlmE,UAAW,OAAQ,CAC7CoD,IAAK,WACD,MAAO,WAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAekmB,EAAQlmE,UAAW,SAAU,CAC/CoD,IAAK,WACD,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAE3BwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAekmB,EAAQlmE,UAAW,SAAU,CAC/CoD,IAAK,WACD,IAAI0c,EAAWjgB,KAAKknL,OAAOvwL,KAAI,SAAUqY,GACrC,MAAO,CACH6P,IAAK,IAAM7P,EACX2Q,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,CAAE3wC,MAAOA,GAAU6kK,GAAW,CAAEA,QAASA,SAIvE,MAAO,CACHx3K,MAAOsjD,EAAW,CAAE3wC,MAAO,CAAEoN,QAAS,GAAK8+C,YAAa,CAAE9+C,QAAS,OAASy3J,QAAS,CAAEz3J,QAAS,OAAU63J,MAC1Gr+K,QAAS,UACTinB,MAAO,QACPzP,UAAU,EACV6S,SAAUA,EACV6I,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,IAAMA,EAAM2S,MAAOklK,GAAe73K,GAAQ,MAI9D04D,YAAY,EACZ3xD,cAAc,IAElBijE,EAAQlmE,UAAU7B,SAAW,WACzB,OAAO,SAAUm5D,GAAW,OAAO,SAAUtjE,EAAOC,GAChD,IAAIgI,EAAWjI,EAAMoQ,OAAOsP,MAAM4jD,EAAQzoD,MAAQ,UAAY,aAC9D,OAAO,eAAa5S,EAAUq7D,EAAvB,CAAgCtjE,EAAOC,MAG/CiyE,EAnDiB,CAoD1BvR,IAEE+R,GAA2B,SAAUxR,GAErC,SAASwR,IACL,OAAkB,OAAXxR,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA8E/D,OAhFAw/C,EAAYqnB,EAAWxR,GAIvBxyD,OAAOs9C,eAAe0mB,EAAU1mE,UAAW,OAAQ,CAC/CoD,IAAK,WACD,MAAO,aAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe0mB,EAAU1mE,UAAW,SAAU,CACjDoD,IAAK,WACD,MAAO,CACH3N,QAAS,QACTinB,MAAO,QACPxgB,MAAOsjD,EAAW,CAAE0gI,SAAU,CAAEjkK,QAAS,MAAQy3J,QAAS,CAAEz3J,QAAS,OAAU63J,MAC/E77K,MAAM,EACNgV,UAAU,EACV/P,MAAO,GACP4iB,SAAU,CACN,CACIpB,IAAK,MACLkE,mBAAoB,OACpBpD,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC3Bhe,EAAQ4X,EAAIktJ,kBAChB,OAAOxsH,EAAW,CAAE0gI,UAAqB,OAAVh5K,QAA4B,IAAVA,OAAmB,EAASA,EAAMge,aAAa,mBAAqB,MAASwuJ,GAAW,CAAEA,QAASA,OAIhK/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CACHA,EAAMw3K,SAAW,MACjB,CAAC,OAAQl0H,EAAW,CAAE,gBAAiBtjD,EAAMgkL,UAAYnM,GAAe73K,IAAS,OAKjG04D,YAAY,EACZ3xD,cAAc,IAElByjE,EAAU1mE,UAAU7B,SAAW,WAC3B,OAAO,WAAc,OAAO,SAAUnK,EAAOC,GAAY,OAAO,eAAaD,EAAMoQ,OAAOsP,MAAMkqD,UAAhC,CAA2C5pE,EAAOC,MAEtHyyE,EAAU1mE,UAAUgnL,WAAa,SAAU7uH,GACvC,IAAIvF,EAAQ/yD,KACZ,OAAO,SAAU7L,EAAOC,GACpB,IAAIG,EAAKJ,EAAMI,GAAI0B,EAAM9B,EAAM8B,IAAKsO,EAASpQ,EAAMoQ,OAC/CjL,EAAQnF,EAAME,UAAUiF,MACxB5E,EAAOq+D,EAAM7zC,QAAQxqB,KACzB,GAAIA,EAAKG,eAAeyjE,IAAyC,cAA3Bh/D,EAAMpC,OAAO3B,KAAKwN,KAAsB,CAC1E,IAAIioJ,EAAQ1xJ,EAAM3D,OAAO+hB,YAAY9d,MAAM,MACvC6F,EAAuB,OAAd64D,EAAqBh/D,EAAM0C,QAAU1C,EAAMK,MACpD1E,EAAsB,OAAdqjE,EACN,CAAC74D,EAAQurJ,EAAM,GAAG9vJ,OAASuE,GAC3B,CAACA,EAASqpD,GAAOkiG,GAAO9vJ,OAAQuE,GAClC7I,EAAMX,EAAIQ,QAAsB,OAAd6hE,EAAqBh/D,EAAMjE,SAAWiE,EAAMpD,SAC9DgB,EAAqB,OAAdohE,EAAqB1hE,EAAItB,WAAasB,EAAIoB,UACrD,GAAI+wD,GAAUzvD,EAAM1C,IAAK3B,EAAM,GAAIA,EAAM,MAAQiC,EAAM,CACnD,IAAIunE,EAAQpU,GAAa91D,EAAIqC,EAAK2N,GAClC,GAAIk6D,EAEA,OADArqE,EAASqqE,IACF,GAInB,OAAO,IAGfoI,EAAU1mE,UAAU01D,QAAU,WAC1B,IAAImW,EAAchsE,KAAK1B,UAAL0B,GAClB,MAAO,CACH,cAAegsE,EACf,cAAeA,EACfo7G,QAASpnL,KAAKmnL,WAAW,MACzBE,UAAWrnL,KAAKmnL,WAAW,UAG5BtgH,EAjFmB,CAkF5B/R,IAEEwyH,GAA4B,SAAUjyH,GAEtC,SAASiyH,IACL,OAAkB,OAAXjyH,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA4C/D,OA9CAw/C,EAAY8nI,EAAYjyH,GAIxBxyD,OAAOs9C,eAAemnI,EAAWnnL,UAAW,OAAQ,CAChDoD,IAAK,WACD,MAAO,cAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAemnI,EAAWnnL,UAAW,SAAU,CAClDoD,IAAK,WACD,MAAO,CACH3N,QAAS,YACTinB,MAAO,QACPxgB,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAU,CAAC2zJ,GAA2B,OACtC9qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,KAAM63K,GAAe73K,GAAQ,MAIjD04D,YAAY,EACZ3xD,cAAc,IAElBkkL,EAAWnnL,UAAUg1K,WAAa,WAC9B,OAAO,SAAUhhL,EAAOC,GAAY,OAAO+gL,GAAWhhL,EAAMoQ,OAAOsP,MAAMg2D,WAA9BsrG,CAA0ChhL,EAAOC,KAEhGkzL,EAAWnnL,UAAU7B,SAAW,WAC5B,MAAO,CACHurE,WAAY7pE,KAAKm1K,WACjBprG,SAAUL,KAGlB49G,EAAWnnL,UAAU01D,QAAU,WAC3B,IAAI0xH,EAAoBvnL,KAAKm1K,aACzB7qH,EAAK0rH,KAAiB71G,EAAS7V,EAAG6V,OAAQC,EAAU9V,EAAG8V,QAC3D,MAAO,CACH,QAASmnH,EACT,QAASA,EACTvhH,IAAK7F,IACL,YAAaC,MAGdknH,EA/CoB,CAgD7BxyH,IAEE0yH,GAA6B,SAAUnyH,GAEvC,SAASmyH,IACL,OAAkB,OAAXnyH,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAmD/D,OArDAw/C,EAAYgoI,EAAanyH,GAIzBxyD,OAAOs9C,eAAeqnI,EAAYrnL,UAAW,OAAQ,CACjDoD,IAAK,WACD,MAAO,eAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAeqnI,EAAYrnL,UAAW,SAAU,CACnDoD,IAAK,WACD,MAAO,CACH3N,QAAS,YACTinB,MAAO,QACPxgB,MAAOsjD,EAAW,CAAEgmE,MAAO,CAAEvpG,QAAS,GAAKy3J,QAAS,CAAEz3J,QAAS,OAAU63J,MACzEh0J,SAAU,CACN,CACIpB,IAAK,KACLc,SAAU,SAAUV,GAChB,IAAIjjB,EAAQijB,EAAIoG,aAAa,SACzBwuJ,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,CAAEgmE,MAAO1mG,EAAIkhB,aAAa,SAAWxlB,OAAO3e,GAAS,GAAM63K,GAAW,CAAEA,QAASA,OAI/G/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CACHA,EAAMw3K,SAAW,KACjBl0H,EAAW,CAAE3jD,MAAuB,IAAhBK,EAAMspH,MAAc,KAAOtpH,EAAMspH,OAASuuD,GAAe73K,IAC7E,MAKhB04D,YAAY,EACZ3xD,cAAc,IAElBokL,EAAYrnL,UAAU7B,SAAW,WAC7B,OAAO,WAAc,OAAO,SAAUnK,EAAOC,GAAY,OAAO+gL,GAAWhhL,EAAMoQ,OAAOsP,MAAMi2D,YAA9BqrG,CAA2ChhL,EAAOC,MAEtHozL,EAAYrnL,UAAU01D,QAAU,WAC5B,IAAI4xH,EAAqBznL,KAAK1B,UAAL0B,GACrBsqD,EAAK0rH,KAAiB71G,EAAS7V,EAAG6V,OAAQC,EAAU9V,EAAG8V,QAC3D,MAAO,CACH,QAASqnH,EACT,QAASA,EACTzhH,IAAK7F,IACL,YAAaC,MAGdonH,EAtDqB,CAuD9B1yH,IAEEiU,GAA0B,SAAU1T,GAEpC,SAAS0T,IACL,OAAkB,OAAX1T,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAsF/D,OAxFAw/C,EAAYupB,EAAU1T,GAItBxyD,OAAOs9C,eAAe4oB,EAAS5oE,UAAW,OAAQ,CAC9CoD,IAAK,WACD,MAAO,YAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe4oB,EAAS5oE,UAAW,SAAU,CAChDoD,IAAK,WACD,MAAO,CACH3N,QAAS,mBACTk2B,YAAY,EACZzvB,MAAO,CACHshE,KAAM,CAAEvhD,SAAS,GACjButD,QAAS,CAAEvtD,SAAS,GACpBy3J,QAAS,CAAEz3J,QAAS,OAExBhP,UAAU,EACV6S,SAAU,CACN,CACIpB,IAAK,KACLc,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,CAAEge,KAAM1+C,EAAIkhB,aAAa,aAAcwpC,QAAS1qD,EAAIkhB,aAAa,sBAAyB0zI,GAAW,CAAEA,QAASA,OAI9I/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACXshE,EAAOthE,EAAMshE,KAAMgM,EAAUttE,EAAMstE,QACvC,IAAKhM,EACD,MAAO,CAACthE,EAAMw3K,SAAW,KAAM,GAEnC,IAAIvtG,EAAa,CAAC,kBAIlB,OAHIqD,GACArD,EAAW9qE,KAAK,WAEb,CACHa,EAAMw3K,SAAW,KACjBl0H,EAAW,CAAEpc,MAAO+iC,EAAW3rE,KAAK,KAAM,YAAagjE,GAASgM,GAAW,CAAE,oBAAqBA,IAClG,MAKhB5U,YAAY,EACZ3xD,cAAc,IAElB2lE,EAAS5oE,UAAUunL,mBAAqB,WACpC,OAAO,SAAUvzL,EAAOC,GACpB,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GAAIgQ,EAASpQ,EAAMoQ,OAC3DjL,EAAQjF,EAAUiF,MAAOhF,EAAQD,EAAUC,MAC3CujK,EAAWtzJ,EAAOsP,MAAMgkJ,SACxBliK,EAAS2D,EAAM3D,OACfgyL,EAAiBruL,EAAMpC,MAAM,GACjC,GAAI5C,IAAUqB,EAAO6B,YAAcmwL,EAAepyL,OAASsiK,EAAU,CAEjE,GAAIv+J,EAAMzB,OAAO,IAAM,EAInB,OAFAtD,EAAG0C,OAAOqC,EAAM0C,OAAO,GAAK,EAAG1C,EAAMK,KAAK,IAC1CvF,EAASG,IACF,EAEX,IAAIqzL,EAAsBtuL,EAAMpC,MAAM,GAEtC,GAAI0wL,EAAoBryL,OAASsiK,EAI7B,OAFAtjK,EAAG0C,OAAOqC,EAAM0C,OAAO,GAAK,EAAG1C,EAAMK,KAAK,IAC1CvF,EAASG,IACF,EAGf,OAAO,IAGfw0E,EAAS5oE,UAAU01D,QAAU,WACzB,IAAIj8D,EAAQ,SAAUzF,EAAOC,GACzB,OAAOyhL,GAAc1hL,EAAMoQ,OAAOsP,MAAMgkJ,SAAjCge,CAA2C1hL,EAAOC,IAE7D,MAAO,CACHyzL,UAAW7nL,KAAK0nL,qBAChB5xH,MAAOl8D,IAGRmvE,EAzFkB,CA0F3BjU,IAEEoM,GAA4B,SAAU7L,GAEtC,SAAS6L,IACL,OAAkB,OAAX7L,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAmC/D,OArCAw/C,EAAY0hB,EAAY7L,GAIxBxyD,OAAOs9C,eAAe+gB,EAAW/gE,UAAW,OAAQ,CAChDoD,IAAK,WACD,MAAO,cAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe+gB,EAAW/gE,UAAW,SAAU,CAClDoD,IAAK,WACD,MAAO,CACHlH,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDr+K,QAAS,SACTinB,MAAO,QACPoD,SAAU,CAAC2zJ,GAA2B,eACtC9qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,aAAc63K,GAAe73K,GAAQ,MAIzD04D,YAAY,EACZ3xD,cAAc,IAElB89D,EAAW/gE,UAAU7B,SAAW,WAC5B,OAAO,WAAc,OAAO,SAAUnK,EAAOC,GAAY,OAAO,eAAOD,EAAMoQ,OAAOsP,MAAMmqD,WAA1B,CAAsC7pE,EAAOC,MAEjH8sE,EAAW/gE,UAAU01D,QAAU,WAC3B,IAAIiyH,EAAoB9nL,KAAK1B,UAAL0B,GACxB,MAAO,CACH,QAAS8nL,EACT,QAASA,IAGV5mH,EAtCoB,CAuC7BpM,IAEEizH,GAAkB,CAClB30J,KAAM40J,GACN30J,MAAO40J,GACP/xI,GAAIgyI,GACJC,KAAMC,IAEV,SAASC,GAAkBzxL,EAAKX,EAAKq0D,GACjC,IAAIg+H,EAAYh+H,EAAG,GAAIi+H,EAAYj+H,EAAG,GAClCk+H,EAAevyL,EAAIQ,QAAQG,EAAIvB,OAAOizL,EAAY,IACtD,OAAOC,IAAcD,IAAcE,EAAalzL,WAEpD,SAASmzL,GAAiB7xL,GACtB,IAAI0zD,EAEA3mC,EADA3sB,EAAQJ,EAAII,MAEhB,MAAOA,EAAO,CAEV,GADA2sB,EAAa/sB,EAAIM,KAAKF,GACO,kBAAzB2sB,EAAWpuB,KAAKwN,KAChB,MAEJ,GAA6B,aAAzB4gB,EAAWpuB,KAAKwN,KAAqB,CACrC,IAAI+yK,EAAcl/K,EAAIM,KAAKF,EAAQ,GAC/B0xL,EAAe5S,EAAYx+K,YAAcqsB,EACzCglK,EAAkG,eAAnD,QAA/Br+H,EAAK3mC,EAAWrsB,iBAA8B,IAAPgzD,OAAgB,EAASA,EAAG/0D,KAAKwN,MAC5F,QAAK2lL,IAGGC,EAEZ3xL,GAAS,EAEb,OAAO,EAEX,SAAS4xL,GAAoBtwH,EAAWhO,EAAIj0D,EAAMJ,EAAK4yL,GACnD,IAAIP,EAAYh+H,EAAG,GAAIi+H,EAAYj+H,EAAG,GAAIw+H,EAAWx+H,EAAG,GACxD,GAAkB,SAAdgO,GAAiD,OAAdA,EAA6B,CAChE,GAAIuwH,IAAWR,GAAkBhyL,EAAMJ,EAAK,CAACqyL,EAAWC,IACpD,OAAO,EAEX,IAAI3vH,EAAYviE,EAAKhB,OAAOyzL,GACxBxzL,EAAaW,EAAIQ,QAAQmiE,GAAWtjE,WACxC,GAAIA,EACA,OAAO,EAGf,OAAO,EAEX,SAASyzL,GAAmBzwH,EAAWwwH,EAAUzyL,EAAMJ,EAAK4yL,GACxD,GAAkB,UAAdvwH,GAAmD,SAAdA,EAAiC,CACtE,GAAIuwH,IAAWJ,GAAiBpyL,GAC5B,OAAO,EAEX,IAAIuiE,EAAYviE,EAAKH,MAAM4yL,GACvB9wL,EAAY/B,EAAIQ,QAAQmiE,GAAW5gE,UACvC,GAAIA,EACA,OAAO,EAGf,OAAO,EAEX,SAASgxL,GAAoB1wH,EAAWhO,EAAIj0D,EAAMJ,GAC9C,IAAIgzL,EAAY3+H,EAAG,GAAIg+H,EAAYh+H,EAAG,GAClCi+H,EAAYU,EAAY,EACxBJ,EAASP,GAAaC,EACtBO,EAAWD,EAASI,EAAY,EAAIX,EACpCY,EAAiBN,GAAoBtwH,EAAW,CAACgwH,EAAWC,EAAWO,GAAWzyL,EAAMJ,EAAK4yL,GAC7FM,EAAgBJ,GAAmBzwH,EAAWwwH,EAAUzyL,EAAMJ,EAAK4yL,GACvE,OAAOK,GAAkBC,EAE7B,SAASC,GAAgB9wH,EAAW3hE,EAAK2zD,GACrC,IAAIssH,EAAStsH,EAAG,GAAIusH,EAASvsH,EAAG,GAC5B++H,EAAc1yL,EAAIihL,oBAAoBhB,EAAQC,GAC9CyS,EAA2B,OAAdhxH,GAA0C,IAAXs+G,EAC5C2S,EAA0B,SAAdjxH,KACM,OAAhB+wH,QAAwC,IAAhBA,OAAyB,EAASA,EAAY38K,OAAS,EAAIkqK,EAASyS,EAAY38K,MAAQ,EAAIkqK,KAAYjgL,EAAIqhL,cAAgB,EAC1J,OAAOsR,GAAcC,EAEzB,SAASC,GAAwBj1L,EAAIoC,EAAK4N,GACtC,IAAI4xK,EAAgB5hL,EAAG0B,IAAIQ,QAAQE,EAAIygL,iBAAmB,GAC1D,OAAKjB,EAAc7gL,WAGZf,EAAGgC,aAAa,eAAU4C,KAAKg9K,GAAgB,IAF3C9rH,GAAa91D,EAAI4hL,EAAe5xK,GAI/C,SAASklL,GAAuBl1L,EAAIoC,EAAK4N,EAAQmlL,QACvB,IAAlBA,IAA4BA,GAAgB,GAChD,IAAI9P,EAAcrlL,EAAG0B,IAAIQ,QAAQE,EAAI2vL,gBACrC,OAAIoD,IAAkB9P,EAAY5hL,UACvBqyD,GAAa91D,EAAIqlL,EAAar1K,GAElChQ,EAAGgC,aAAa,eAAU4C,KAAKygL,EAAa,IAEvD,SAASqO,GAAmB39H,EAAI3zD,GAC5B,IAAIigL,EAAStsH,EAAG,GAAIusH,EAASvsH,EAAG,GAC5B0tH,EAAgBrhL,EAAIqhL,cAAef,EAAmBtgL,EAAIsgL,iBAC1D0S,EAAgB9S,IAAWI,EAAmB,EAC9C2S,EAAkBhT,IAAWoB,EAAgB,GAAK2R,EACtD,IAAKC,EAAiB,CAClB,IAAIC,EAAahT,EAAS,EACtBiT,EAAcnzL,EAAIghL,oBAAoBf,EAAQC,IAC7B,OAAhBiT,QAAwC,IAAhBA,OAAyB,EAASA,EAAYp9K,OAAS,IAChFm9K,GAAcC,EAAYp9K,MAAQ,IAElCi9K,GAAiBE,IAAe5S,KAChCL,GAAU,EACViT,EAAa,GAEjB,IAAIpqL,EAAS9I,EAAIggL,YAAYC,EAAQiT,GAAYpqL,OACjD,OAAOA,EAAS,EAEpB,OAAO,KAEX,SAASuoL,GAAkB19H,EAAI3zD,GAC3B,IAAIigL,EAAStsH,EAAG,GAAIusH,EAASvsH,EAAG,GAC5B2sH,EAAmBtgL,EAAIsgL,iBACvB8S,EAA4B,IAAXlT,EACjBmT,EAA8B,IAAXpT,GAAgBmT,EACvC,IAAKC,EAAkB,CACnBnT,GAAU,EACNkT,IACAnT,GAAU,EACVC,EAASI,EAAmB,GAEhC,IAAIxsH,EAAK9zD,EAAIggL,YAAYC,EAAQC,GAASp3K,EAASgrD,EAAGhrD,OAAQ3I,EAAW2zD,EAAG3zD,SAC5E,OAAO2I,EAAS3I,EAAW,EAE/B,OAAO,KAEX,SAASoxL,GAAgB59H,EAAI3zD,GACzB,IAAIigL,EAAStsH,EAAG,GAAIusH,EAASvsH,EAAG,GAChC,GAAIssH,EAAS,EAAG,CACZ,IAAInsH,EAAK9zD,EAAIggL,YAAYC,EAAS,EAAGC,GAASp3K,EAASgrD,EAAGhrD,OAAQ3I,EAAW2zD,EAAG3zD,SAChF,OAAO2I,EAAS3I,EAAW,EAE/B,OAAO,KAEX,SAASsxL,GAAkB99H,EAAI3zD,GAC3B,IAAIigL,EAAStsH,EAAG,GAAIusH,EAASvsH,EAAG,GAC5B0tH,EAAgBrhL,EAAIqhL,cACxB,GAAIpB,EAASoB,EAAgB,EAAG,CAC5B,IAAIiS,EAAarT,EAAS,EACtByS,EAAc1yL,EAAIihL,oBAAoBhB,EAAQC,IAC7B,OAAhBwS,QAAwC,IAAhBA,OAAyB,EAASA,EAAY38K,OAAS,IAChFu9K,GAAcZ,EAAY38K,MAAQ,GAEtC,IAAIjN,EAAS9I,EAAIggL,YAAYsT,EAAYpT,GAAQp3K,OACjD,OAAOA,EAAS,EAEpB,OAAO,KAEX,SAASyqL,GAAW5xH,EAAW/jE,EAAI41L,EAAWxzL,GAC1C,IAAIyzL,EAAerC,GAAgBzvH,GAC/B74D,EAAS2qL,EAAaD,EAAWxzL,GACrC,GAAI8I,EAAQ,CACR,IAAIkJ,EAAoB,UAAd2vD,GAAmD,SAAdA,EAAkC,GAAK,EACtF,OAAO/jE,EAAGgC,aAAa,eAAU4C,KAAK5E,EAAG0B,IAAIQ,QAAQgJ,GAASkJ,IAElE,OAAO,KAEX,SAAS0hL,GAAmB/xH,EAAW3hE,EAAK2zD,GACxC,IAAIssH,EAAStsH,EAAG,GAAIusH,EAASvsH,EAAG,GAChC,GAAkB,OAAdgO,GAA6C,SAAdA,EAC/B,OAAO,EAEX,IAAI8+G,EAAmBzgL,EAAIygL,iBAAkBkP,EAAiB3vL,EAAI2vL,eAC9D77H,EAAK9zD,EAAIggL,YAAYC,EAAQC,GAASp3K,EAASgrD,EAAGhrD,OAAQ3I,EAAW2zD,EAAG3zD,SACxEF,EAAoB,SAAd0hE,EAAkC8+G,EAAmBkP,EAC3DhzK,EAAuB,SAAdglD,EAAkC74D,EAAS,EAAIA,EAAS3I,EAAW,EAChF,OAAOF,IAAQ0c,EAEnB,SAASmvB,GAAWluC,EAAIqC,EAAKI,GACzB,IAAIu/K,EAAWhiL,EAAG0B,IAAIQ,QAAQG,EAAIvB,OAAO2B,EAAQ,IACjD,OAAOzC,EAAGgC,aAAa,IAAI,mBAAcggL,IAG7C,SAAS+T,GAAiBhyH,EAAW3hE,EAAK8hL,GACtC,IAAI8R,EACAC,EACA1zL,EAWJ,MAVkB,OAAdwhE,GACAiyH,EAAe9R,EAAcL,YAC7BoS,EAAe,EACf1zL,GAAY,IAGZyzL,EAAe9R,EAAcH,UAC7BkS,EAAe7zL,EAAIsgL,iBAAmB,EACtCngL,EAAWH,EAAIggL,YAAY4T,EAAcC,GAAc1zL,SAAW,GAE/D,CAAEyzL,aAAcA,EAAcC,aAAcA,EAAc1zL,SAAUA,GAE/E,SAAS2zL,GAAa9zL,EAAKigL,EAAQK,GAC/B,IAAIn+I,EAAcniC,EAAIggL,YAAYC,EAAQ,GAAGn3K,OACzC6qD,EAAK3zD,EAAIggL,YAAYC,EAAQK,EAAmB,GAAIx3K,EAAS6qD,EAAG7qD,OAAQ3I,EAAWwzD,EAAGxzD,SAC1F,MAAO,CAAET,KAAMyiC,EAAa1iC,GAAIqJ,EAAS3I,GAE7C,IAAIgxE,GAAuB,SAAUzS,GAEjC,SAASyS,IACL,OAAkB,OAAXzS,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAyV/D,OA3VAw/C,EAAYsoB,EAAOzS,GAInBxyD,OAAOs9C,eAAe2nB,EAAM3nE,UAAW,OAAQ,CAC3CoD,IAAK,WACD,MAAO,SAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe2nB,EAAM3nE,UAAW,SAAU,CAC7CoD,IAAK,WACD,MAAO,CACH3N,QAAS,4BACTinB,MAAO,QACPxgB,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAU,CAAC2zJ,GAA2B,UACtC9qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,QAAS63K,GAAe73K,GAAQ,MAIpD04D,YAAY,EACZ3xD,cAAc,IAElB0kE,EAAM3nE,UAAUmoE,SAAW,WACvB,OAAO,SAAU7Q,GAEb,YADgB,IAAZA,IAAsBA,EAAU,CAAE8P,SAAU,EAAGH,YAAa,EAAG1vB,KAAM,KAClE,SAAUvjD,EAAOC,GACpB,IAAImzE,EAAW9P,EAAQ8P,SAAUH,EAAc3P,EAAQ2P,YAAa1vB,EAAO+f,EAAQ/f,KAC/EnzC,EAASpQ,EAAMoQ,OAAQlQ,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GAC/D8B,EAAOhC,EAAUgC,KAAMD,EAAK/B,EAAU+B,GAAIkD,EAAQjF,EAAUiF,MAC5Do5B,EAAYr8B,IAASD,EACzB,GAAIs8B,IAAcghJ,GAAcp6K,GAAQ,CACpC,IAAIgxD,EAAK/lD,EAAOsP,MAAO+/I,EAAYtpG,EAAGspG,UAAWD,EAAYrpG,EAAGqpG,UAC5D+2B,EAAqB,OAAThzI,QAA0B,IAATA,OAAkB,EAASA,EAAKvhD,MAAM,EAAGixE,GACtEujH,EAAqB,OAATjzI,QAA0B,IAATA,OAAkB,EAASA,EAAKvhD,MAAMixE,EAAa1vB,EAAKx8C,QACrFipL,EAAelK,GAAmB7yG,EAAa7iE,EAAQmmL,GACvDzG,EAAgB9J,GAAoB5yG,EAAW,EAAGH,EAAa7iE,EAAQomL,GACvExoK,EAAQ5d,EAAOsP,MAAMsO,MAAMtrB,OAAO,KAAM,CACxC+8J,EAAU/8J,OAAO,KAAMstL,GACvBxwB,EAAU98J,OAAO,KAAMotL,KAG3B,OADA7vL,EAASG,EAAGg5B,qBAAqBpL,KAC1B,EAEX,OAAO,KAInB2lD,EAAM3nE,UAAUyqL,YAAc,WAC1B,OAAO,WAAc,OAAO,SAAUz2L,EAAOC,GACzC,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GACxCoC,EAAMs/K,GAAep/K,OAAOxC,EAAU8D,SAC1C,GAAIxB,EAAK,CACL,IAAIygL,EAAmBzgL,EAAIygL,iBAAkBkP,EAAiB3vL,EAAI2vL,eAC9DxtJ,EAAcs+I,EAAmB,EACjC32G,EAAYtW,GAAoB51D,EAAG0C,OAAO6hC,EAAawtJ,GAAiBxtJ,GAE5E,OADA1kC,EAASG,EAAGgC,aAAakqE,KAClB,EAEX,OAAO,KAGfqH,EAAM3nE,UAAU0qL,UAAY,SAAUvyH,GAClC,OAAO,WAAc,OAAO,SAAUnkE,EAAOC,GACzC,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GAAIgQ,EAASpQ,EAAMoQ,OAC3D+lD,EAAKkwH,GAAqBnmL,GAAYs2B,EAAS2/B,EAAG3/B,OAAQpI,EAAO+nC,EAAG/nC,KACxE,GAAIoI,GAAUpI,EAAM,CAMhB,IALA,IAAI5rB,EAAMs/K,GAAep/K,OAAO8zB,GAC5B8tJ,EAAgB9hL,EAAIshL,eAAettJ,EAAQpI,GAC3CuoK,EAA6B,SAAdxyH,EAAkCmgH,EAAcJ,YAAcI,EAAcF,UAAY,EACvGnxG,EAAcuzG,GAAqBlC,GAAerxG,YAClD4wG,EAAgBrhL,EAAIqhL,cACfpB,EAAS,EAAGA,EAASoB,EAAepB,GAAU,EAAG,CACtD,IAAI7iB,EAAQsmB,GAAiBjzG,EAAawvG,EAAQryK,GAClDhQ,EAAGkF,OAAOlF,EAAGmC,QAAQC,IAAIA,EAAImgL,MAAMF,EAAQkU,IAAgB/2B,GAG/D,OADA3/J,EAASG,IACF,EAEX,OAAO,KAGfuzE,EAAM3nE,UAAU4qL,aAAe,WAC3B,OAAO,WAAc,OAAO,SAAU52L,EAAOC,GACzC,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GACxC+1D,EAAKkwH,GAAqBnmL,GAAYs2B,EAAS2/B,EAAG3/B,OAAQpI,EAAO+nC,EAAG/nC,KACxE,GAAIoI,GAAUpI,EAAM,CAChB,IAAI5rB,EAAMs/K,GAAep/K,OAAO8zB,GAC5B8tJ,EAAgB9hL,EAAIshL,eAAettJ,EAAQpI,GAC3C00J,EAAmBtgL,EAAIsgL,iBAAkBe,EAAgBrhL,EAAIqhL,cAC7D5wG,EAAcuzG,GAAqBlC,GAAerxG,YAClD4jH,EAAoB5jH,IAAgB6vG,EACxC,GAAI+T,EACA,OAAO,EAIX,IAFA,IAAI3S,EAAcI,EAAcJ,YAAaE,EAAYE,EAAcF,UACnE8N,EAAW9xL,EAAGmC,QAAQ+K,KAAKvG,OACtB07K,EAAS,EAAGA,EAASoB,EAAepB,GAAU,EACnD,IAAK,IAAIC,EAAS0B,EAAW1B,GAAUwB,EAAaxB,GAAU,EAAG,CAC7D,IAAIpsH,EAAK9zD,EAAIggL,YAAYC,EAAQC,GAASp3K,EAASgrD,EAAGhrD,OAAQ3I,EAAW2zD,EAAG3zD,SACxET,EAAO9B,EAAGmC,QAAQP,MAAMkwL,GAAU1vL,IAAI8I,GACtCrJ,EAAKC,EAAOS,EAChBvC,EAAG0C,OAAOZ,EAAMD,GAIxB,OADAhC,EAASG,IACF,EAEX,OAAO,KAGfuzE,EAAM3nE,UAAU8qL,OAAS,SAAU3yH,GAC/B,OAAO,WAAc,OAAO,SAAUnkE,EAAOC,GACzC,IAAIC,EAAYF,EAAME,UAAWkQ,EAASpQ,EAAMoQ,OAAQhQ,EAAKJ,EAAMI,GAC/D+1D,EAAKkwH,GAAqBnmL,GAAYs2B,EAAS2/B,EAAG3/B,OAAQpI,EAAO+nC,EAAG/nC,KACxE,GAAIoI,GAAUpI,EAAM,CAChB,IAAI5rB,EAAMs/K,GAAep/K,OAAO8zB,GAC5BssJ,EAAmBtgL,EAAIsgL,iBACvBwB,EAAgB9hL,EAAIshL,eAAettJ,EAAQpI,GAC3CglD,EAAWozG,GAAqBlC,GAAelxG,SAC/C9c,EAAK6/H,GAAiBhyH,EAAW3hE,EAAK8hL,GAAgB8R,EAAe9/H,EAAG8/H,aAAcC,EAAe//H,EAAG+/H,aAAc1zL,EAAW2zD,EAAG3zD,SACpIo0L,EAAiC,IAAjBX,EACpB,IAAKW,EAAe,CAIhB,IAHA,IAAI1iH,EAAO,GACPnyE,EAAO9B,EAAGmC,QAAQC,IAAIA,EAAImgL,MAAMyT,EAAcC,IAAiB1zL,EAC/Di9J,EAAQ,GACH8iB,EAAS,EAAGA,EAASI,EAAkBJ,GAAU,EACtD9iB,EAAQA,EAAM5sJ,OAAOkzK,GAAiB,EAAGkQ,EAAchmL,IAE3D,IAAK,IAAI3M,EAAI,EAAGA,EAAI2vE,EAAU3vE,GAAK,EAC/B4wE,EAAKhtE,KAAK+I,EAAOsP,MAAMu9I,SAASv6J,OAAO,KAAMk9J,IAGjD,OADA3/J,EAASG,EAAGkF,OAAOpD,EAAMmyE,KAClB,GAGf,OAAO,KAGfV,EAAM3nE,UAAUgrL,UAAY,WACxB,OAAO,WAAc,OAAO,SAAUh3L,EAAOC,GACzC,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GACxC+1D,EAAKkwH,GAAqBnmL,GAAYs2B,EAAS2/B,EAAG3/B,OAAQpI,EAAO+nC,EAAG/nC,KACxE,GAAIoI,GAAUpI,EAAM,CAChB,IAAI5rB,EAAMs/K,GAAep/K,OAAO8zB,GAC5BqtJ,EAAgBrhL,EAAIqhL,cAAef,EAAmBtgL,EAAIsgL,iBAC1DwB,EAAgB9hL,EAAIshL,eAAettJ,EAAQpI,GAC3CglD,EAAWozG,GAAqBlC,GAAelxG,SAC/C6wG,EAAcK,EAAcL,YAAaE,EAAYG,EAAcH,UACnE4S,EAAgC,IAAhB9S,EAChBgT,EAAsB7jH,IAAaywG,EAAgB,EACvD,GAAIoT,GAAuBF,EACvB,OAAO,EAEX,IAAK,IAAItU,EAAS0B,EAAW1B,GAAUwB,EAAaxB,GAAU,EAAG,CAC7D,IAAInsH,EAAKggI,GAAa9zL,EAAKigL,EAAQK,GAAmB5gL,EAAOo0D,EAAGp0D,KAAMD,EAAKq0D,EAAGr0D,GAE9E7B,EAAG0C,OAAOZ,EAAO,EAAGD,EAAK,GAG7B,OADAhC,EAASG,IACF,EAEX,OAAO,KAGfuzE,EAAM3nE,UAAUkrL,YAAc,WAC1B,OAAO,SAAU5zH,GAEb,YADgB,IAAZA,IAAsBA,EAAU,CAAEg9F,MAAO,WACtC,SAAUtgK,EAAOC,GACpB,IAAIqgK,EAAQh9F,EAAQg9F,MAChBpgK,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GACxC+1D,EAAKkwH,GAAqBnmL,GAAYs2B,EAAS2/B,EAAG3/B,OAAQpI,EAAO+nC,EAAG/nC,KACxE,GAAIoI,GAAUpI,EAAM,CAKhB,IAJA,IAAI5rB,EAAMs/K,GAAep/K,OAAO8zB,GAC5BqtJ,EAAgBrhL,EAAIqhL,cACpBS,EAAgB9hL,EAAIshL,eAAettJ,EAAQpI,GAC3C81J,EAAcI,EAAcJ,YAAaE,EAAYE,EAAcF,UAC9D3B,EAAS,EAAGA,EAASoB,EAAepB,GAAU,EACnD,IAAK,IAAIC,EAASwB,EAAaxB,GAAU0B,EAAW1B,GAAU,EAC1D,IAAKlgL,EAAI0gL,gBAAgBT,EAAQC,KAAYlgL,EAAI2gL,gBAAgBV,EAAQC,GAAS,CAC9E,IAAIpsH,EAAK9zD,EAAIugL,cAAcN,EAAQC,GAAS3/K,EAAOuzD,EAAGvzD,KAAMN,EAAM6zD,EAAG7zD,IACjEyF,EAAQu+K,GAAS1jL,EAAM,CAAEu9J,MAAOA,IACpClgK,EAAG8F,cAAczD,EAAK,KAAMyF,GAKxC,OADAjI,EAASG,IACF,EAEX,OAAO,KAInBuzE,EAAM3nE,UAAU+pL,WAAa,SAAU5xH,GACnC,OAAO,SAAUnkE,EAAOC,GACpB,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GAAIgQ,EAASpQ,EAAMoQ,OAC3D+lD,EAAKkwH,GAAqBnmL,GAAYs2B,EAAS2/B,EAAG3/B,OAAQpI,EAAO+nC,EAAG/nC,KACxE,GAAIoI,GAAUpI,EAAM,CAChB,IAAI5rB,EAAMs/K,GAAep/K,OAAO8zB,GAC5Bw/J,EAAYxzL,EAAIohL,aAAaptJ,GAC7B8zC,OAAQ,EASZ,GALIA,EAHA2qH,GAAgB9wH,EAAW3hE,EAAKwzL,GAGxBV,GAAuBl1L,EAAIoC,EAAK4N,GAGhC2lL,GAAW5xH,EAAW/jE,EAAI41L,EAAWxzL,GAE7C8nE,EAEA,OADArqE,EAASqqE,IACF,EAGf,OAAO,IAGfqJ,EAAM3nE,UAAUmrL,WAAa,SAAUhzH,GACnC,IAAIvF,EAAQ/yD,KACZ,OAAO,SAAU7L,EAAOC,GACpB,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GAAI0B,EAAM9B,EAAM8B,IAAKsO,EAASpQ,EAAMoQ,OAC5EjL,EAAQjF,EAAUiF,MAClB5E,EAAOq+D,EAAM7zC,QAAQxqB,KACzB,IAAKA,EAAKG,eAAeyjE,GACrB,OAAO,EAEX,IAAI07F,EAAOwf,GAAWl6K,GAAO,SAAUgxD,GACnC,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,kBAAdA,EAAKwN,MAA0C,kBAAdxN,EAAKwN,QAEjD,GAAIixJ,EAAM,CACN,IAAI9Z,EAAOs5B,GAAWl6K,GAAO,SAAUgxD,GACnC,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,cAAdA,EAAKwN,QAEZkmL,EAAYj1B,EAAKh9J,MACrB,GAAIkjJ,GAAQ8uC,GAAoB1wH,EAAW,CAAC2wH,EAAW/uC,EAAKljJ,OAAQsC,EAAOrD,GAAM,CAC7E,IAAI00B,EAAS6vJ,GAAqBnmL,GAAWs2B,OACzCh0B,EAAMs/K,GAAep/K,OAAO8zB,GAC5Bw/J,EAAYxzL,EAAIohL,aAAaptJ,GAC7B8zC,OAAQ,EAmBZ,GAlBI4rH,GAAmB/xH,EAAW3hE,EAAKwzL,GAGnC1rH,EAAQh8B,GAAWluC,EAAI+E,EAAO2vL,GAEzBG,GAAgB9wH,EAAW3hE,EAAKwzL,GAGnB,OAAd7xH,EACAmG,EAAQ+qH,GAAwBj1L,EAAIoC,EAAK4N,GAEtB,SAAd+zD,IACLmG,EAAQgrH,GAAuBl1L,EAAIoC,EAAK4N,IAI5Ck6D,EAAQyrH,GAAW5xH,EAAW/jE,EAAI41L,EAAWxzL,GAE7C8nE,EAEA,OADArqE,EAASqqE,IACF,GAInB,OAAO,IAGfqJ,EAAM3nE,UAAUorL,YAAc,WAC1B,OAAO,SAAUp3L,EAAOC,GACpB,IAAImQ,EAASpQ,EAAMoQ,OAAQlQ,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GAC/D+1D,EAAKkwH,GAAqBnmL,GAAYs2B,EAAS2/B,EAAG3/B,OAAQpI,EAAO+nC,EAAG/nC,KACpEipK,EAAgBn3L,aAAqB,mBACzC,GAAIs2B,GAAUpI,IAASipK,EAAe,CAGlC,IAFA,IAAI70L,EAAMs/K,GAAep/K,OAAO8zB,GAC5B8/B,EAAK9zD,EAAIshL,eAAettJ,EAAQpI,GAAO61J,EAAc3tH,EAAG2tH,YAAaC,EAAc5tH,EAAG4tH,YAAaC,EAAY7tH,EAAG6tH,UAAWC,EAAY9tH,EAAG8tH,UACvI3B,EAASwB,EAAaxB,GAAU0B,EAAW1B,GAAU,EAC1D,IAAK,IAAIC,EAASwB,EAAaxB,GAAU0B,EAAW1B,GAAU,EAC1D,IAAKlgL,EAAI0gL,gBAAgBT,EAAQC,KAAYlgL,EAAI2gL,gBAAgBV,EAAQC,GAAS,CAC9E,IAAI3xG,EAAKvuE,EAAIugL,cAAcN,EAAQC,GAAS3/K,EAAOguE,EAAGhuE,KAAMN,EAAMsuE,EAAGtuE,IACjEm9J,EAAQsmB,GAAiB,EAAGzD,EAAQryK,EAAQrN,EAAKmF,OACrD9H,EAAG0E,YAAY1E,EAAGmC,QAAQC,IAAIC,GAAMrC,EAAGmC,QAAQC,IAAIC,EAAMM,EAAKJ,UAAWi9J,GAKrF,OADA3/J,EAASG,IACF,EAEX,OAAO,IAGfuzE,EAAM3nE,UAAUsrL,UAAY,WACxB,OAAO,SAAUt3L,EAAOC,GACpB,IAAIC,EAAYF,EAAME,UAAWE,EAAKJ,EAAMI,GAAIgQ,EAASpQ,EAAMoQ,OAC3DjL,EAAQjF,EAAUiF,MAClB06J,EAAOwf,GAAWl6K,GAAO,SAAUgxD,GACnC,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,kBAAdA,EAAKwN,MAA0C,kBAAdxN,EAAKwN,QAEjD,GAAIixJ,EAAM,CACN,IAAI9Z,EAAOs5B,GAAWl6K,GAAO,SAAUgxD,GACnC,IAAI/0D,EAAO+0D,EAAG/0D,KACd,MAAqB,cAAdA,EAAKwN,QAEhB,GAAIm3I,EAAM,CACN,IAAIvvH,EAAS6vJ,GAAqBnmL,GAAWs2B,OACzCh0B,EAAMs/K,GAAep/K,OAAO8zB,GAEhC,OADAv2B,EAASq1L,GAAuBl1L,EAAIoC,EAAK4N,GAAQ,KAC1C,GAGf,OAAO,IAGfujE,EAAM3nE,UAAU7B,SAAW,WACvB,MAAO,CACHgqE,SAAUtoE,KAAKsoE,WACfsiH,YAAa5qL,KAAK4qL,cAClBc,gBAAiB1rL,KAAK6qL,UAAU,QAChCc,iBAAkB3rL,KAAK6qL,UAAU,SACjCE,aAAc/qL,KAAK+qL,eACnBa,WAAY5rL,KAAKirL,OAAO,MACxBY,aAAc7rL,KAAKirL,OAAO,QAC1BE,UAAWnrL,KAAKmrL,YAChBE,YAAarrL,KAAKqrL,gBAG1BvjH,EAAM3nE,UAAU01D,QAAU,WACtB,IAAIi2H,EAAoB9rL,KAAKurL,cAC7B,MAAO,CACHvlH,IAAKhmE,KAAKkqL,WAAW,SACrB,YAAalqL,KAAKkqL,WAAW,QAC7B9C,QAASpnL,KAAKsrL,WAAW,MACzBjE,UAAWrnL,KAAKsrL,WAAW,QAC3BS,UAAW/rL,KAAKsrL,WAAW,QAC3BU,WAAYhsL,KAAKsrL,WAAW,SAC5BzD,UAAWiE,EACX,gBAAiBA,EACjBG,OAAQH,EACR,aAAcA,EACd,YAAa9rL,KAAKyrL,cAGnB3jH,EA5Ve,CA6VxBhT,IAEEo3H,GAA2B,SAAU72H,GAErC,SAAS62H,IACL,OAAkB,OAAX72H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAwB/D,OA1BAw/C,EAAY0sI,EAAW72H,GAIvBxyD,OAAOs9C,eAAe+rI,EAAU/rL,UAAW,OAAQ,CAC/CoD,IAAK,WACD,MAAO,aAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe+rI,EAAU/rL,UAAW,SAAU,CACjDoD,IAAK,WACD,MAAO,CACH3N,QAAS,cACTyG,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAU,CAAC2zJ,GAA2B,UACtC9qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,QAAS63K,GAAe73K,GAAQ,MAIpD04D,YAAY,EACZ3xD,cAAc,IAEX8oL,EA3BmB,CA4B5Bp3H,IAEEq3H,GAA2B,SAAU92H,GAErC,SAAS82H,IACL,OAAkB,OAAX92H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAqC/D,OAvCAw/C,EAAY2sI,EAAW92H,GAIvBxyD,OAAOs9C,eAAegsI,EAAUhsL,UAAW,OAAQ,CAC/CoD,IAAK,WACD,MAAO,aAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAegsI,EAAUhsL,UAAW,SAAU,CACjDoD,IAAK,WACD,MAAO,CACH3N,QAAS,YACTyG,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAU,CACN,CACIpB,IAAK,QACLc,SAAU,SAAUV,GAChB,IAAIupD,EAAOvpD,EAAIgxB,iBAAiB,MAC5Bi4B,EAAUM,EAAK,GAAG3sC,SAAS3gC,OAC3B24K,EAAU50J,EAAIoG,aAAa,iBAC/B,QAAK6iD,GAGEvoB,EAAW,GAAKk0H,GAAW,CAAEA,QAASA,OAIzD/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,QAAS63K,GAAe73K,GAAQ,MAIpD04D,YAAY,EACZ3xD,cAAc,IAEX+oL,EAxCmB,CAyC5Br3H,IAEEs3H,GAA0B,SAAU/2H,GAEpC,SAAS+2H,IACL,OAAkB,OAAX/2H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAoC/D,OAtCAw/C,EAAY4sI,EAAU/2H,GAItBxyD,OAAOs9C,eAAeisI,EAASjsL,UAAW,OAAQ,CAC9CoD,IAAK,WACD,MAAO,YAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAeisI,EAASjsL,UAAW,SAAU,CAChDoD,IAAK,WACD,MAAO,CACH3N,QAAS,mCACTyG,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAU,CACN,CACIpB,IAAK,KACLc,SAAU,SAAUV,GAChB,IAAIipD,EAAUjpD,EAAI4c,SAAS3gC,OACvB24K,EAAU50J,EAAIoG,aAAa,iBAC/B,QAAK6iD,GAGEvoB,EAAW,GAAKk0H,GAAW,CAAEA,QAASA,OAIzD/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,KAAM63K,GAAe73K,GAAQ,MAIjD04D,YAAY,EACZ3xD,cAAc,IAEXgpL,EAvCkB,CAwC3Bt3H,IAEEu3H,GAA+B,SAAUh3H,GAEzC,SAASg3H,IACL,OAAkB,OAAXh3H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA0B/D,OA5BAw/C,EAAY6sI,EAAeh3H,GAI3BxyD,OAAOs9C,eAAeksI,EAAclsL,UAAW,OAAQ,CACnDoD,IAAK,WACD,MAAO,iBAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAeksI,EAAclsL,UAAW,SAAU,CACrDoD,IAAK,WACD,MAAO,CACH3N,QAAS,aACTyG,MAAOsjD,EAAW,CAAE80G,MAAO,CAAEr4I,QAAS,MAAQ2rB,UAAW,CAAE3rB,QAAS,MAAQy3J,QAAS,CAAEz3J,QAAS,MAAQspK,QAAS,CAAEtpK,QAAS,MAAQ29J,SAAU,CAAE39J,QAAS,OAAU63J,MACnKx+K,WAAW,EACXwqB,SAAU,CAAC8zJ,GAAoB,OAC/BjrJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACXiwL,EAAYxY,GAAgBz3K,GAChC,MAAO,CAAC,KAAMsjD,EAAWA,EAAW,GAAI2sI,GAAYpY,GAAe73K,IAAS,MAIxF04D,YAAY,EACZ3xD,cAAc,IAEXipL,EA7BuB,CA8BhCv3H,IAEEy3H,GAA+B,SAAUl3H,GAEzC,SAASk3H,IACL,OAAkB,OAAXl3H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAiC/D,OAnCAw/C,EAAY+sI,EAAel3H,GAI3BxyD,OAAOs9C,eAAeosI,EAAcpsL,UAAW,OAAQ,CACnDoD,IAAK,WACD,MAAO,iBAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAeosI,EAAcpsL,UAAW,SAAU,CACrDoD,IAAK,WACD,MAAO,CACH3N,QAAS,0CACTyG,MAAO,CACHo4J,MAAO,CAAEr4I,QAAS,MAClB2rB,UAAW,CAAE3rB,QAAS,MACtBy3J,QAAS,CAAEz3J,QAAS,MACpBspK,QAAS,CAAEtpK,QAAS,MACpBowK,QAAS,CAAEpwK,QAAS,MACpB29J,SAAU,CAAE39J,QAAS,OAEzB3mB,WAAW,EACXwqB,SAAU,CAAC8zJ,GAAoB,OAC/BjrJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACXiwL,EAAYxY,GAAgBz3K,GAChC,MAAO,CAAC,KAAMiwL,EAAW,MAIrCv3H,YAAY,EACZ3xD,cAAc,IAEXmpL,EApCuB,CAqChCz3H,IAEE23H,GAAuB,SAAUp3H,GAEjC,SAASo3H,IACL,OAAkB,OAAXp3H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA2D/D,OA7DAw/C,EAAYitI,EAAOp3H,GAInBxyD,OAAOs9C,eAAessI,EAAMtsL,UAAW,OAAQ,CAC3CoD,IAAK,WACD,MAAO,SAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAessI,EAAMtsL,UAAW,SAAU,CAC7CoD,IAAK,WACD,MAAO,CACH0W,QAAQ,EACR5d,MAAOsjD,EAAW,CAAEyU,SAAU,CAAEh4C,QAAS,IAAMi4C,QAAS,CAAEj4C,QAAS,MAAQy3J,QAAS,CAAEz3J,QAAS,OAAU63J,MACzGp3J,MAAO,SACPiP,YAAY,EACZ7L,SAAU,CACN,CACIpB,IAAK,WACLc,SAAU,SAAUV,GAChB,IAAIytK,EAAexe,GAAajvJ,EAAK,CAAEwpJ,qBAAqB,IACvDpxK,WACD+8D,EAAWs4H,EAAarnK,aAAa,QAAU,GAC/CwuJ,EAAU6Y,EAAarnK,aAAa,iBACpCgvC,EAAUq4H,EAAarnK,aAAa,OACxC,OAAOs6B,EAAW,CAAEyU,SAAUA,EAC1BC,QAASA,GAAYw/G,GAAW,CAAEA,QAASA,OAI3D/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CACHA,EAAMw3K,SAAW,MACjBl0H,EAAWA,EAAW,CAAEuE,IAAK0C,GAAYvqD,EAAM+3D,WAAc/3D,EAAMg4D,SAAW,CAAErsB,IAAK3rC,EAAMg4D,UAAa6/G,GAAe73K,QAKvI04D,YAAY,EACZ3xD,cAAc,IAElBqpL,EAAMtsL,UAAUmsE,SAAW,WACvB,OAAO,SAAU7U,GAAW,OAAO,SAAUnN,EAAIl2D,GAC7C,IAAImQ,EAAS+lD,EAAG/lD,OAAQhQ,EAAK+1D,EAAG/1D,GAC5Bk2D,EAAKgN,EAASrD,EAAW3J,EAAG2J,SAAUC,EAAU5J,EAAG4J,QACvD,IAAKD,EACD,OAAO,EAEX,IAAIl9D,EAAOqN,EAAOsP,MAAMiqD,MAAM5kE,cAAcymD,EAAW,CAAEyU,SAAUA,GAAaC,GAAW,CAAEA,QAASA,KAEtG,OADAjgE,EAASG,EAAGg5B,qBAAqBr2B,GAAM1C,mBAChC,KAGfi4L,EAAMtsL,UAAU7B,SAAW,WACvB,MAAO,CACHguE,SAAUtsE,KAAKssE,aAGhBmgH,EA9De,CA+DxB33H,IAEE63H,GAAmB,EACnBhkH,GAA+B,SAAUtT,GAEzC,SAASsT,IACL,OAAkB,OAAXtT,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAyD/D,OA3DAw/C,EAAYmpB,EAAetT,GAI3BxyD,OAAOs9C,eAAewoB,EAAcxoE,UAAW,OAAQ,CACnDoD,IAAK,WACD,MAAO,iBAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAewoB,EAAcxoE,UAAW,SAAU,CACrDoD,IAAK,WACD,MAAO,CACHlH,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDp3J,MAAO,QACPoD,SAAU,CAAC,CAAEpB,IAAK,OAClBiN,YAAY,EACZhD,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,MAAO63K,GAAe73K,GAAQ,CAACA,EAAMw3K,SAAW,UAIpE9+G,YAAY,EACZ3xD,cAAc,IAElBulE,EAAcxoE,UAAUyhB,GAAK,WACzB,IAAImxC,EAAQ/yD,KACZ,OAAO,WAAc,OAAO,SAAU7L,EAAOC,GACzC,IAAIk2D,EACAG,EAAKt2D,EAAME,UAAWiF,EAAQmxD,EAAGnxD,MAAOC,EAAMkxD,EAAGlxD,IACrD,GAAID,IAAUC,EAAK,CACf,IAAItD,EAAM9B,EAAM8B,IACZivE,EAAK/wE,EAAMoQ,OAAOsP,MAAOszC,EAAgB+d,EAAG/d,cAAe8C,EAAYib,EAAGjb,UAC1Ep2C,EAAQ,CAACszC,EAActwD,UACvB+1L,EAAYtzL,EAAMpC,KAAKy1L,IACvBE,EAAY52L,EAAIoR,MAAMpR,EAAIuB,WAAa,KAAOo1L,EAC9CE,EAAW72L,EAAIQ,QAAQ6C,EAAMpD,MAAMy2L,KACnCI,GAAqC,QAA1BziI,EAAKhxD,EAAMtB,iBAA8B,IAAPsyD,OAAgB,EAASA,EAAG/0D,KAAKwN,QAAUgwD,EAAMhwD,KAKlG,OAJI8pL,GAAaE,IACbl5K,EAAMrY,KAAKyuD,EAAUpzD,UAEzBzC,EAASD,EAAMI,GAAGkF,OAAOqzL,EAASl2L,IAAKid,GAAOrf,mBACvC,EAEX,OAAO,KAGfm0E,EAAcxoE,UAAU7B,SAAW,WAC/B,MAAO,CAAEsjB,GAAI5hB,KAAK4hB,OAEtB+mD,EAAcxoE,UAAU01D,QAAU,WAC9B,IAAIm3H,EAAYhtL,KAAK4hB,IAAL5hB,GAChB,MAAO,CACH,QAASgtL,EACT,QAASA,IAGVrkH,EA5DuB,CA6DhC7T,IAEEgW,GAAwB,SAAUzV,GAElC,SAASyV,IACL,OAAkB,OAAXzV,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA6C/D,OA/CAw/C,EAAYsrB,EAAQzV,GAIpBxyD,OAAOs9C,eAAe2qB,EAAO3qE,UAAW,OAAQ,CAC5CoD,IAAK,WACD,MAAO,UAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe2qB,EAAO3qE,UAAW,SAAU,CAC9CoD,IAAK,WACD,IAAI0c,EAAW,CAAC,IAAK,UAAUtpB,KAAI,SAAUkoB,GACzC,MAAO,CACHA,IAAKA,EACLc,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,GAAKk0H,GAAW,CAAEA,QAASA,SAIzD,MAAO,CACHx3K,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAUA,EACV6I,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAACA,EAAMw3K,SAAW,SAAUK,GAAe73K,OAI9D04D,YAAY,EACZ3xD,cAAc,IAElB0nE,EAAO3qE,UAAU4qE,KAAO,WACpB,OAAO,WAAc,OAAO,SAAU52E,EAAOC,GAAY,OAAO,eAAaD,EAAMoQ,OAAOlH,MAAMw9D,OAAhC,CAAwC1mE,EAAOC,MAEnH02E,EAAO3qE,UAAU7B,SAAW,WACxB,MAAO,CAAEysE,KAAM/qE,KAAK+qE,SAExBD,EAAO3qE,UAAU01D,QAAU,WACvB,IAAImV,EAAchrE,KAAK+qE,MAAL/qE,GAClB,MAAO,CACH,QAASgrE,EACT,QAASA,IAGVF,EAhDgB,CAiDzB92D,IAEEy3D,GAAsB,SAAUpW,GAEhC,SAASoW,IACL,OAAkB,OAAXpW,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA6C/D,OA/CAw/C,EAAYisB,EAAMpW,GAIlBxyD,OAAOs9C,eAAesrB,EAAKtrE,UAAW,OAAQ,CAC1CoD,IAAK,WACD,MAAO,QAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAesrB,EAAKtrE,UAAW,SAAU,CAC5CoD,IAAK,WACD,IAAI0c,EAAW,CAAC,IAAK,MAAMtpB,KAAI,SAAUkoB,GACrC,MAAO,CACHA,IAAKA,EACLc,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,GAAKk0H,GAAW,CAAEA,QAASA,SAIzD,MAAO,CACHx3K,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAUA,EACV6I,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAACA,EAAMw3K,SAAW,KAAMK,GAAe73K,OAI1D04D,YAAY,EACZ3xD,cAAc,IAElBqoE,EAAKtrE,UAAUurE,OAAS,WACpB,OAAO,WAAc,OAAO,SAAUv3E,EAAOC,GAAY,OAAO,eAAaD,EAAMoQ,OAAOlH,MAAMy9D,KAAhC,CAAsC3mE,EAAOC,MAEjHq3E,EAAKtrE,UAAU7B,SAAW,WACtB,MAAO,CAAEotE,OAAQ1rE,KAAK0rE,WAE1BD,EAAKtrE,UAAU01D,QAAU,WACrB,IAAI8V,EAAgB3rE,KAAK0rE,QAAL1rE,GACpB,MAAO,CACH,QAAS2rE,EACT,QAASA,IAGVF,EAhDc,CAiDvBz3D,IAEEo3D,GAAwB,SAAU/V,GAElC,SAAS+V,IACL,OAAkB,OAAX/V,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA0C/D,OA5CAw/C,EAAY4rB,EAAQ/V,GAIpBxyD,OAAOs9C,eAAeirB,EAAOjrE,UAAW,OAAQ,CAC5CoD,IAAK,WACD,MAAO,UAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAeirB,EAAOjrE,UAAW,SAAU,CAC9CoD,IAAK,WACD,IAAI0c,EAAW,CAAC,IAAK,OAAOtpB,KAAI,SAAUkoB,GACtC,MAAO,CACHA,IAAKA,EACLc,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,GAAKk0H,GAAW,CAAEA,QAASA,SAIzD,MAAO,CACHx3K,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAUA,EACV6I,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAACA,EAAMw3K,SAAW,MAAOK,GAAe73K,OAI3D04D,YAAY,EACZ3xD,cAAc,IAElBgoE,EAAOjrE,UAAU7B,SAAW,WACxB,OAAO,WAAc,OAAO,SAAUnK,EAAOC,GAAY,OAAO,eAAaD,EAAMoQ,OAAOlH,MAAM09D,OAAhC,CAAwC5mE,EAAOC,MAEnHg3E,EAAOjrE,UAAU01D,QAAU,WACvB,IAAIwV,EAAgBrrE,KAAK1B,UAAL0B,GACpB,MAAO,CACH,QAASqrE,EACT,QAASA,IAGVD,EA7CgB,CA8CzBp3D,IAEEk4D,GAAsB,SAAU7W,GAEhC,SAAS6W,EAAKpkB,GACV,IAAIiL,EAAQsC,EAAOtzD,KAAK/B,OAASA,KAEjC,OADA+yD,EAAMjL,eAAiBA,EAChBiL,EAwEX,OA5EAvT,EAAY0sB,EAAM7W,GAMlBxyD,OAAOs9C,eAAe+rB,EAAK/rE,UAAW,OAAQ,CAC1CoD,IAAK,WACD,MAAO,QAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe+rB,EAAK/rE,UAAW,SAAU,CAC5CoD,IAAK,WACD,IAAIwvD,EAAQ/yD,KACZ,MAAO,CACH3D,MAAOsjD,EAAW,CAAE0sB,QAAS,CAAEjwD,QAAS,IAAMqG,MAAO,CAAErG,QAAS,MAAQy3J,QAAS,CAAEz3J,QAAS,OAAU63J,MACtGt9J,WAAW,EACXsJ,SAAU,CACN,CACIpB,IAAK,UACLc,SAAU,SAAUV,GAChB,IAAIytK,EAAexe,GAAajvJ,EAAK,CAAEwpJ,qBAAqB,IACvDpxK,WACDynK,EAAO4tB,EAAarnK,aAAa,SAAW,GAC5C5C,EAAQiqK,EAAarnK,aAAa,UAAY,GAC9CwuJ,EAAU6Y,EAAarnK,aAAa,iBACxC,OAAOs6B,EAAW,CAAE0sB,QAASyyF,EAAMr8I,MAAOA,GAAUoxJ,GAAW,CAAEA,QAASA,OAItF/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CACHA,EAAMw3K,SAAW,IACjBl0H,EAAWA,EAAW,CAAEm/G,KAAMl4G,GAAYvqD,EAAMgwE,UAAYtZ,EAAMjL,gBAAiBosH,GAAe73K,QAKlH04D,YAAY,EACZ3xD,cAAc,IAElB8oE,EAAK/rE,UAAUosE,QAAU,WACrB,OAAO,SAAU9U,GAAW,OAAO,SAAUtjE,EAAOC,GAChD,IAAIk2D,EAAKmN,EAAS4U,EAAU/hB,EAAG+hB,QAAS5hB,EAAKH,EAAG8hB,SAAUA,OAAkB,IAAP3hB,EAAgB,GAAKA,EACtFlmD,EAASpQ,EAAMoQ,OAAQhQ,EAAKJ,EAAMI,GAAIF,EAAYF,EAAME,UACxDC,EAAQD,EAAUC,MAAO+B,EAAOhC,EAAUgC,KAAMD,EAAK/B,EAAU+B,GACnE,GAAIC,GAAQD,GAAMi2E,EAAS,CACvB,IAAIhwE,EAAQ,CAAEgwE,QAASA,GACnBhiE,EAAO9F,EAAO8F,KAAK,OAAQhO,GAC/B,GAAI/H,GAAS83E,EAAU,CACnB,IAAIl1E,EAAOgzD,GAAiB3lD,EAAQ6nE,EAAU/hE,GAC9C9V,EAAGic,iBAAiBna,EAAMD,EAAIc,QAG9B3C,EAAG6J,QAAQ/H,EAAMD,EAAIiU,GAGzB,OADAjW,EAASG,EAAGC,mBACL,EAEX,OAAO,KAGf03E,EAAK/rE,UAAU8sL,WAAa,WACxB,OAAO,SAAUx1H,GAAW,OAAO,SAAUtjE,EAAOC,GAChD,OAAO,eAAaD,EAAMoQ,OAAOlH,MAAMmqD,KAAMiQ,EAAtC,CAA+CtjE,EAAOC,MAGrE83E,EAAK/rE,UAAU7B,SAAW,WACtB,MAAO,CACHiuE,QAASvsE,KAAKusE,UACd0gH,WAAYjtL,KAAKitL,eAGlB/gH,EA7Ec,CA8EvBl4D,IAEE+3D,GAAsB,SAAU1W,GAEhC,SAAS0W,IACL,OAAkB,OAAX1W,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAyC/D,OA3CAw/C,EAAYusB,EAAM1W,GAIlBxyD,OAAOs9C,eAAe4rB,EAAK5rE,UAAW,OAAQ,CAC1CoD,IAAK,WACD,MAAO,QAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe4rB,EAAK5rE,UAAW,SAAU,CAC5CoD,IAAK,WACD,MAAO,CACHlH,MAAOsjD,EAAW,CAAEk0H,QAAS,CAAEz3J,QAAS,OAAU63J,MAClDh0J,SAAU,CACN,CACIpB,IAAK,OACLc,SAAU,SAAUV,GAChB,IAAI40J,EAAU50J,EAAIoG,aAAa,iBAC/B,OAAOs6B,EAAW,GAAKk0H,GAAW,CAAEA,QAASA,OAIzD/qJ,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAACA,EAAMw3K,SAAW,OAAQK,GAAe73K,OAI5D04D,YAAY,EACZ3xD,cAAc,IAElB2oE,EAAK5rE,UAAU7B,SAAW,WACtB,OAAO,WAAc,OAAO,SAAUnK,EAAOC,GAAY,OAAO,eAAaD,EAAMoQ,OAAOlH,MAAMjF,KAAhC,CAAsCjE,EAAOC,MAEjH23E,EAAK5rE,UAAU01D,QAAU,WACrB,IAAImW,EAAchsE,KAAK1B,UAAL0B,GAClB,MAAO,CACH,cAAegsE,EACf,cAAeA,IAGhBD,EA5Cc,CA6CvB/3D,IAEEg5D,GAA6B,SAAU3X,GAEvC,SAAS2X,IACL,OAAkB,OAAX3X,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA6C/D,OA/CAw/C,EAAYwtB,EAAa3X,GAIzBxyD,OAAOs9C,eAAe6sB,EAAY7sE,UAAW,OAAQ,CACjDoD,IAAK,WACD,MAAO,eAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe6sB,EAAY7sE,UAAW,SAAU,CACnDoD,IAAK,WACD,MAAO,CACH3N,QAAS,QACTinB,MAAO,QACPxgB,MAAO,CACH8wD,KAAM,CAAE/wC,QAAS,OAErBa,MAAM,EACN7kB,MAAM,EACNgV,UAAU,EACV6S,SAAU,CACN,CACIpB,IAAK,wBACLc,SAAU,SAAUV,GAChB,IAAIkuC,EAAOluC,EAAIoG,aAAa,oBAC5B,MAAO,CAAE8nC,KAAMA,MAI3BrkC,MAAO,SAAUwhC,GACb,IAAIjuD,EAAQiuD,EAAGjuD,MACf,MAAO,CAAC,MAAO,CAAE,mBAAoBA,EAAM8wD,MAAQ,MAAQ,MAIvE4H,YAAY,EACZ3xD,cAAc,IAElB4pE,EAAY7sE,UAAU7B,SAAW,WAC7B,OAAO,SAAUm5D,GAAW,OAAO,SAAUtjE,EAAOC,GAChD,SAAoB,OAAZqjE,QAAgC,IAAZA,OAAqB,EAASA,EAAQtK,OAC5D,eAAah5D,EAAMoQ,OAAOsP,MAAMoqD,YAAaxG,EAA7C,CAAsDtjE,EAAOC,MAIpE44E,EAhDqB,CAiD9BlY,IAEEo4H,GAA6B,SAAU73H,GAEvC,SAAS63H,IACL,OAAkB,OAAX73H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KA4C/D,OA9CAw/C,EAAY0tI,EAAa73H,GAIzBxyD,OAAOs9C,eAAe+sI,EAAY/sL,UAAW,OAAQ,CACjDoD,IAAK,WACD,MAAO,eAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAe+sI,EAAY/sL,UAAW,SAAU,CACnDoD,IAAK,WACD,MAAO,CACH3N,QAAS,QACTinB,MAAO,QACPzkB,MAAM,EACNgV,UAAU,EACV6S,SAAU,CACN,CACI8C,mBAAoB,OACpBlE,IAAK,2BAGbiK,MAAO,WACH,MAAO,CAAC,MAAO,CAAE,oBAAqB,QAAU,MAI5DisC,YAAY,EACZ3xD,cAAc,IAElB8pL,EAAY/sL,UAAU7B,SAAW,WAC7B,OAAO,WAAc,OAAO,SAAUnK,EAAOC,EAAUM,GACnD,IAAI4E,EAAQnF,EAAME,UAAUiF,MAC5B,SAAI5E,EAAKG,eAAe,SAAsC,gBAA3ByE,EAAMpC,OAAO3B,KAAKwN,OAC1C,eAAS5O,EAAOC,MAKnC84L,EAAY/sL,UAAU01D,QAAU,WAC5B,MAAO,CACHC,MAAO91D,KAAK1B,UAAL0B,KAGRktL,EA/CqB,CAgD9Bp4H,IAEEq4H,GAA6B,SAAU93H,GAEvC,SAAS83H,IACL,OAAkB,OAAX93H,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAuC/D,OAzCAw/C,EAAY2tI,EAAa93H,GAIzBxyD,OAAOs9C,eAAegtI,EAAYhtL,UAAW,OAAQ,CACjDoD,IAAK,WACD,MAAO,eAEXwxD,YAAY,EACZ3xD,cAAc,IAElBP,OAAOs9C,eAAegtI,EAAYhtL,UAAW,SAAU,CACnDoD,IAAK,WACD,MAAO,CACH3N,QAAS,QACTinB,MAAO,QACPzkB,MAAM,EACNgV,UAAU,EACV6S,SAAU,CAAC,CAAE8C,mBAAoB,OAAQlE,IAAK,2BAC9CiK,MAAO,WACH,MAAO,CAAC,MAAO,CAAE,oBAAqB,QAAU,MAI5DisC,YAAY,EACZ3xD,cAAc,IAElB+pL,EAAYhtL,UAAU7B,SAAW,WAC7B,OAAO,WAAc,OAAO,SAAUnK,EAAOC,EAAUM,GACnD,IAAI4E,EAAQnF,EAAME,UAAUiF,MAC5B,SAAI5E,EAAKG,eAAe,SAAsC,gBAA3ByE,EAAMpC,OAAO3B,KAAKwN,OAC1C,eAAS5O,EAAOC,MAKnC+4L,EAAYhtL,UAAU01D,QAAU,WAC5B,MAAO,CACHC,MAAO91D,KAAK1B,UAAL0B,KAGRmtL,EA1CqB,CA2C9Br4H,IAEF,SAAS+Y,GAAY/lB,GACjB,OAAO,IAAI4P,GAAY,CACnB,IAAIkJ,GACJ,IAAImE,GACJ,IAAImB,GACJ,IAAIG,GACJ,IAAIQ,GACJ,IAAIygH,GACJ,IAAIE,GACJ,IAAIz+G,GACJ,IAAI7H,GACJ,IAAI4G,GACJ,IAAIokH,GACJ,IAAIC,GACJ,IAAIC,GACJ,IAAIC,GACJ,IAAIE,GACJ,IAAIE,GACJ,IAAI9jH,GACJ,IAAImC,GACJ,IAAIW,GACJ,IAAIL,GACJ,IAAIc,GAAKpkB,GACT,IAAIikB,GACJ,IAAIiB,GACJ,IAAIkgH,GACJ,IAAI93H,GACJ,IAAI+3H,KAIZ,IAAIC,GAAsBhiK,GAAI,YAC1BiiK,GAA+B,SAAUh4H,GAEzC,SAASg4H,EAAcv6H,EAAcx1C,GACjC,IAAIy1C,EAAQsC,EAAOtzD,KAAK/B,KAAM8yD,IAAiB9yD,KAC3Cs+K,EAAehhK,EAAQghK,aAAch0H,EAAKhtC,EAAQ0xJ,cAAeA,OAAuB,IAAP1kH,EAAgB,GAAKA,EAAIG,EAAKntC,EAAQwqC,eAAgBA,OAAwB,IAAP2C,EAAgB,GAAKA,EAAIya,EAAK5nD,EAAQ+4C,mBAAoBA,OAA4B,IAAP6O,GAAuBA,EAAIE,EAAK9nD,EAAQgwK,UAAWA,OAAmB,IAAPloH,EAAgB,GAAKA,EAAIC,EAAK/nD,EAAQiwK,YAAaA,OAAqB,IAAPloH,EAAgB,GAAKA,EAehY,OAdAtS,EAAM2C,WAAa,UACnB3C,EAAMlN,GAAG3mB,UAAUxwB,IAAI,WACvBqkD,EAAMurH,aAAeA,EACrBvrH,EAAMjL,eAAiBA,EACvBiL,EAAM2D,aAAe42H,EACrBv6H,EAAMy6H,gBAAkBD,EACxBx6H,EAAMoD,MAAQpD,EAAM8a,cACpB9a,EAAMxuD,OAASwuD,EAAMmD,aAAa84G,GAClCj8G,EAAM7zC,QAAU6zC,EAAM+a,gBACtB/a,EAAM8C,QAAU9C,EAAMqD,cAAcC,GACpCtD,EAAMr+D,KAAOq+D,EAAMgb,aACnBhb,EAAMz0D,SAAWy0D,EAAMyD,iBACvBzD,EAAMoD,MAAMnB,WAAWrV,EAAWA,EAAW,GAAIoT,EAAM7zC,SAAU,CAAExqB,KAAMq+D,EAAMr+D,QAC/Eq+D,EAAM7/B,YACC6/B,EA+LX,OAjNAvT,EAAY6tI,EAAeh4H,GAoB3Bg4H,EAAcltL,UAAU0tE,YAAc,WAClC,OAAOA,GAAY7tE,KAAK8nD,iBAE5BulI,EAAcltL,UAAU2tE,cAAgB,WACpC,MAAO,CACHvpE,OAAQvE,KAAKuE,OACbuuD,aAAc9yD,KAAK8yD,eAG3Bu6H,EAAcltL,UAAU+1D,aAAe,SAAU84G,GAC7C,OAAO,IAAI,YAAO,CACdn7J,MAAO8rC,EAAWA,EAAW,GAAI3/C,KAAKm2D,MAAMtiD,OAAQm7J,EAAcn7J,OAClExW,MAAOsiD,EAAWA,EAAW,GAAI3/C,KAAKm2D,MAAM94D,OAAQ2xK,EAAc3xK,UAG1EgwL,EAAcltL,UAAUs1D,cAAgB,WACpC,OAAOz1D,KAAKuuE,eAAepnE,OAAO04C,EAAgB,CAC9Ck8H,KACAsB,GAAiBr9K,KAAK8yD,cACtB6K,KACAwgH,GAAsBn+K,KAAK8yD,eAC5B9yD,KAAKy2D,uBAEZ42H,EAAcltL,UAAUstL,sBAAwB,WAC5C,IAAInjI,EAAKtqD,KAAM8yD,EAAexI,EAAGwI,aAAc06H,EAAkBljI,EAAGkjI,gBAChEE,EAAoB,GAQxB,OAPIF,GACA3qL,OAAOotB,KAAKu9J,GAAiBzsL,SAAQ,SAAUlC,GAC3C6uL,EAAkB7uL,GAAO,SAAU3H,EAAMxC,EAAM2pL,GAC3C,OAAOmP,EAAgB3uL,GAAK3H,EAAMxC,EAAM2pL,EAAQvrH,OAIrD46H,GAEXL,EAAcltL,UAAU4tE,WAAa,WACjC,IAAIhb,EAAQ/yD,KACRsqD,EAAKtqD,KAAMs+K,EAAeh0H,EAAGg0H,aAAcxrH,EAAexI,EAAGwI,aACjE,OAAO,IAAI,gBAAW9yD,KAAK6lD,GAAI,CAC3B1xD,MAAO6L,KAAKw1D,cACZllB,WAAY,CACR/M,MAAO6pJ,IAEXztJ,UAAWggB,EAAW,CAAEse,YAAa,SAAU/mE,EAAMxC,EAAM2pL,GACnD,OAAO,IAAID,GAAgBlnL,EAAMxC,EAAM2pL,EAAQC,IAEnDxgH,MAAO,SAAU5mE,EAAMxC,EAAM2pL,GACzB,OAAO,IAAIqB,GAAUxoL,EAAMxC,EAAM2pL,EAAQvrH,IAE7CiL,UAAW,SAAU7mE,EAAMxC,EAAM2pL,GAC7B,OAAO,IAAI0B,GAAc7oL,EAAMxC,EAAM2pL,EAAQvrH,IAC9Cx1B,OAAQ23B,IAAkBj1D,KAAKytL,yBACtCpuI,oBAAqB,SAAU9qD,GAC3B,IAAIJ,EAAQ4+D,EAAMr+D,KAAKP,MAAMs6B,iBAAiBl6B,GAAIJ,MAClD4+D,EAAMr+D,KAAKylC,YAAYhmC,GACvB4+D,EAAM4C,gBAAgBphE,EAAGC,kBACzBu+D,EAAMD,aAAawB,KAAK,iBAAkBngE,EAAME,UAAUiF,MAAMpC,KAAK,KAEzEy2L,oBAAqB5K,GACrB6K,gBAAiB,SAAUz3L,GACvB,OAAOwuL,GAAkBxuL,EAAO48D,EAAMxuD,OAAQmvK,GAAc3gH,EAAMr+D,KAAKP,MAAME,UAAUiF,SAE3Fu0L,YAAa,SAAUn5L,EAAM2f,EAAGle,GAAS,OAAOwwL,GAAajyL,EAAMyB,IACnEs4E,cAAe,SAAUp6D,EAAGsgD,GAExB,OADA5B,EAAMD,aAAawB,KAAK,UAAWvB,EAAM2C,WAAYf,IAC9C,GAEX1W,gBAAiB,CACbnG,MAAO,SAAUzjC,EAAGsgD,GAChB,IAAIhd,EAAgBgd,EAAGhd,eAAiB3uB,OAAO2uB,cAC3C2R,EAA0B,OAAlB3R,QAA4C,IAAlBA,OAA2B,EAASA,EAAc2R,MACxF,GAAIA,EAAO,CACP,IAAI8kB,EAAiBrkB,GAAUT,GAAOvqC,MAAK,SAAUwqC,GAAQ,MAAqB,WAAdA,EAAK8kB,MAAmC,aAAd9kB,EAAKh0D,QAEnG,IAAK64E,EAAgB,CACjB,IAAIE,EAAY/Z,GAAejL,GAC3BglB,IACA3Z,EAAGxf,iBACH+e,GAAkBnB,EAAMD,aAAcwb,EAAW3Z,EAAGp/D,QAIhE,OAAO,GAEX6/C,MAAO,SAAU/gC,EAAGsgD,GAEhB,OADA5B,EAAMD,aAAawB,KAAK,QAASvB,EAAM2C,WAAYf,IAC5C,GAEXpW,OAAQ,WAEJ,OADAwU,EAAMD,aAAawB,KAAK,SAAU,WAC3B,OAKvB+4H,EAAcltL,UAAUq2D,eAAiB,WACrC,OAAOx2D,KAAKm2D,MAAM73D,SAAS0B,KAAKtL,KAAMshL,OAE1CqX,EAAcltL,UAAUmzK,QAAU,WAC9B,OAAOtzK,KAAKtL,KAAKuqB,IAAI+wB,WAEzBq9I,EAAcltL,UAAU2tL,SAAW,WAC/B,OAAO9tL,KAAKtL,KAAKP,MAAM8B,KAE3Bo3L,EAAcltL,UAAUs6B,aAAe,WACnC,IAAI6vB,EAAKtqD,KAAKtL,KAAKP,MAAME,UAAWgC,EAAOi0D,EAAGj0D,KAAMD,EAAKk0D,EAAGl0D,GAC5D,MAAO,CAACC,EAAMD,IAElBi3L,EAAcltL,UAAU4tL,UAAY,WAChC,OAAO/tL,KAAKtL,KAAKP,MAAMoQ,QAE3B8oL,EAAcltL,UAAUmtB,iBAAmB,SAAUpvB,EAAMlC,EAAOrC,GAC9D,IAAI2wD,EAAKtqD,KAAKtL,KAAKP,MAAOoQ,EAAS+lD,EAAG/lD,OAAQhQ,EAAK+1D,EAAG/1D,GAClDsrE,EAAY3hE,EAAKtE,MAAM,MACvBioL,EAAQhiH,EAAUlpE,KAAI,SAAU+sE,GAChC,OAAO1Z,GAAgBzlD,EAAQkpD,GAAsBiW,EAAUn/D,OAE/DpO,EAAQ,IAAI,WAAM,cAASE,KAAKwrL,GAAQ,EAAG,GAC3CpjH,EAAQjb,GAAWxnD,IAAUwnD,GAAW7pD,GACtCpF,EAAGkb,aAAazT,EAAOrC,EAAKxD,GAC5B5B,EAAG+4B,iBAAiBn3B,GAC1B6J,KAAKtL,KAAKN,SAASqqE,GACnBz+D,KAAKu2B,SAET82J,EAAcltL,UAAUjM,gBAAkB,SAAU8H,EAAOrC,GACvD,IAAIpF,EAAKyL,KAAKtL,KAAKP,MAAMI,GACrBkqE,EAAQjb,GAAWxnD,IAAUwnD,GAAW7pD,GAAOpF,EAAGmb,YAAY1T,EAAOrC,GAAOpF,EAAGL,kBACnF8L,KAAKtL,KAAKN,SAASqqE,EAAMjqE,mBAE7B64L,EAAcltL,UAAU0uE,gBAAkB,SAAU7yE,EAAOrC,GACvD,IAAI2wD,EAAKtqD,KAAKtL,KAAKP,MAAO8B,EAAMq0D,EAAGr0D,IAAK5B,EAAYi2D,EAAGj2D,UACnDgC,EAAOhC,EAAUgC,KAAMD,EAAK/B,EAAU+B,GAK1C,OAJIotD,GAAWxnD,IAAUwnD,GAAW7pD,KAChCtD,EAAO2F,EACP5F,EAAKuD,GAEF1D,EAAIyc,YAAYrc,EAAMD,EAAI,OAErCi3L,EAAcltL,UAAU6tL,SAAW,SAAUC,EAAQj/G,QAC7B,IAAhBA,IAA0BA,GAAc,GAC5C,IAAI1kB,EAAKtqD,KAAKtL,KAAKP,MAAOI,EAAK+1D,EAAG/1D,GAAI0B,EAAMq0D,EAAGr0D,IAC/C+J,KAAKtL,KAAKN,SAASG,EAAG0E,YAAY,EAAGhD,EAAIL,QAAQC,KAAMo4L,IACnDj/G,GACAhvE,KAAK42D,iBAAgB,IAG7By2H,EAAcltL,UAAU5J,aAAe,SAAUyF,EAAOrC,QACxC,IAARA,IAAkBA,EAAMqC,GAC5B,IAAIzH,EAAKyL,KAAKtL,KAAKP,MAAMI,GACrBF,EAAY81D,GAAoB51D,EAAIyH,EAAOrC,GAC/CqG,KAAKtL,KAAKN,SAASG,EAAGgC,aAAalC,GAAWG,mBAElD64L,EAAcltL,UAAUszD,UAAY,SAAUv8D,EAAM0U,EAAOhV,GACvD,IAAI0zD,EAAKtqD,KAAKtL,KAAMN,EAAWk2D,EAAGl2D,SAAUD,EAAQm2D,EAAGn2D,MACvDC,EAASD,EAAMI,GAAGk5B,QAAQ,SAAU,CAAE72B,IAAa,OAARA,QAAwB,IAARA,EAAiBA,EAAMzC,EAAME,UAAU+B,GAAIc,KAAMA,EAAM0U,MAAOA,MAE7HyhL,EAAcltL,UAAU8uE,kBAAoB,SAAUjzE,EAAOrC,EAAKuE,GAC9D,IAAIosD,EAAKtqD,KAAKtL,KAAKP,MAAOI,EAAK+1D,EAAG/1D,GAAIgQ,EAAS+lD,EAAG/lD,OAC9CsP,EAAQ45C,GAAsBvvD,EAAMqG,GACxCvE,KAAKtL,KAAKN,SAASG,EAAG0E,YAAY+C,EAAOrC,EAAKka,KAElDw5K,EAAcltL,UAAU+uE,mBAAqB,SAAUt4E,GACnD,IAAI0zD,EAAKtqD,KAAKtL,KAAKP,MAAO8B,EAAMq0D,EAAGr0D,IAAK5B,EAAYi2D,EAAGj2D,UACnDsD,EAAOf,EAAMX,EAAIQ,QAAQG,GAAOvC,EAAUiF,MAC1C+D,EAAQ1F,EAAK0F,QACbnG,EAAOS,EAAKT,OACZ8E,EAAQrE,EAAKqE,QACbrC,EAAMhC,EAAKgC,MACXpE,EAAO2B,EAAK3B,KAAKwN,KACrB,GAAI1F,EAAMnC,QAAmB,cAAT3F,EAAsB,CACtC,IAAI24L,EAAS7wL,EAAMA,EAAMnC,OAAS,GAC9BizL,EAAiB,SAAUC,GAC3B,OAAOA,EAAUlzL,QAAS4rD,GAASsnI,EAAWF,IAElD34L,EAAO24L,EAASA,EAAO34L,KAAKwN,KAAO,OACnC7L,EAAK6J,SAAQ,SAAUsG,EAAO5H,GAC1B,IAAIzB,EAASqJ,EAAMrJ,OAAQlH,EAAWuQ,EAAMvQ,SAAUs3L,EAAY/mL,EAAMhK,MACpEy7B,EAAcnhC,EAAKf,IAAMoF,EACzBgC,GACAyB,GAAUq5B,GACVr5B,EAAS3I,GAAYgiC,GACrBq1J,EAAeC,KACfpyL,GAAgByD,EAChB9F,EAAMqC,EAAQlF,MAI1B,MAAO,CAAE7B,MAAO,CAAC+G,EAAOrC,GAAMpE,KAAMA,IAEjC83L,EAlNuB,CAmNhC/3H,IAOE+4H,GAAcpsI,EACdqsI,GAAS5qI,GAsBb,SAAS6qI,GAAW/xB,GAClB,OAAQ6xB,GAAY7xB,KAAW8xB,GAAO9xB,GAGxC,IAAIgyB,GAAaD,GAObE,GAAWD,GAUf,SAASE,GAAWt6K,GAClB,OAAOq6K,GAASr6K,KAAgB,IAARA,EAG1B,IAAIu6K,GAAaD,GAObE,GAAWD,GASf,SAASE,GAAQz6K,GACf,OAAQw6K,GAASx6K,GAGnB,IAAI06K,GAAYD,GAEZE,GAAgB,CAChB,qBACA,gBACA,aACA,iBACA,UACA,qBACA,0BACA,wBACA,SACA,cACA,OACA,OACA,iBACA,qBACA,mBACA,+BACA,iBACA,oBACA,QAEA,YACA,aACA,mBACA,sBACA,iCACA,OACA,SACA,SACA,cACA,UACA,QACA,OACA,UACA,SAMAC,GAA8B,WAC9B,SAASA,IACL,IAAIj8H,EAAQ/yD,KACZA,KAAKuvE,OAAS,IAAI0sG,GAClBj8K,KAAKivL,WAAaF,GAAc5zK,QAAO,SAAUlhB,EAAO1E,GACpD,OAAOoqD,EAAWA,EAAW,GAAI1lD,GAAQ,CAAE1E,KAAMA,MAClD,IACHyK,KAAKkvL,MAAO,EACZH,GAAchuL,SAAQ,SAAUouL,GAC5Bp8H,EAAMq8H,aAAaD,MAmK3B,OA3JAH,EAAa7uL,UAAUizD,OAAS,SAAU79D,EAAM29C,GAC5C,IAAIm8I,EAAWrvL,KAAKsvL,YAAY/5L,GAC5B09C,EAAgBjzC,KAAKuvE,OAAOhsE,IAAI8rL,EAAS95L,OAAS,GACtD,IAAKyK,KAAKuvL,aAAaF,EAAS95L,MAC5B,MAAM,IAAIuM,MAAM,0BAA4ButL,EAAS95L,MAErD85L,EAAS7vK,YACT0zB,EAAQ1zB,UAAY6vK,EAAS7vK,WAEjCyzB,EAAcz3C,KAAK03C,GACnBlzC,KAAKuvE,OAAO5jE,IAAI0jL,EAAS95L,KAAM09C,IAOnC+7I,EAAa7uL,UAAUm0D,KAAO,SAAU/+D,GAEpC,IADA,IAAI0vJ,EAAO,GACF10F,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpC00F,EAAK10F,EAAK,GAAK/xD,UAAU+xD,GAE7B,IAAI8+H,EAAWrvL,KAAKsvL,YAAY/5L,GAC5B09C,EAAgBjzC,KAAKuvE,OAAOhsE,IAAI8rL,EAAS95L,MACzCi6L,EAAU,GASd,OARKxvL,KAAKkvL,MAAQj8I,GACdA,EAAclyC,SAAQ,SAAUmyC,GAC5B,IAAIryC,EAASqyC,EAAQvvC,WAAM,EAAQshJ,GAC9BhjG,EAAcphD,IACf2uL,EAAQh0L,KAAKqF,MAIlB2uL,GAQXR,EAAa7uL,UAAU2yK,WAAa,SAAUv9K,EAAMirD,GAEhD,IADA,IAAIykG,EAAO,GACF10F,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpC00F,EAAK10F,EAAK,GAAK/xD,UAAU+xD,GAE7B,IAAItd,EAAgBjzC,KAAKuvE,OAAOhsE,IAAIhO,GASpC,OARKyK,KAAKkvL,MAAQj8I,GACdA,EAAclyC,SAAQ,SAAUmyC,GAC5B,IAAIryC,EAASqyC,EAAQvvC,WAAM,EAAQk8C,EAAgB,CAACW,GAASykG,IACxD6pC,GAAUjuL,KACX2/C,EAAS3/C,MAId2/C,GAQXwuI,EAAa7uL,UAAUmvL,YAAc,SAAU/5L,GAC3C,IAAIk6L,EAAUl6L,EAAKqE,MAAM,KACzB,MAAO,CACHrE,KAAMk6L,EAAQ,GACdjwK,UAAWiwK,EAAQ,KAS3BT,EAAa7uL,UAAUovL,aAAe,SAAUh6L,GAC5C,OAAQ0sD,EAAcjiD,KAAKivL,WAAWjvL,KAAKsvL,YAAY/5L,GAAMA,QAMjEy5L,EAAa7uL,UAAUivL,aAAe,SAAU75L,GAC5C,GAAIyK,KAAKuvL,aAAah6L,GAClB,MAAM,IAAIuM,MAAM,oCAAsCvM,GAE1DyK,KAAKivL,WAAW15L,GAAQA,GAO5By5L,EAAa7uL,UAAUqzD,mBAAqB,SAAU27H,EAAWj8I,GAC7D,IAAI6f,EAAQ/yD,KACRsqD,EAAKtqD,KAAKsvL,YAAYH,GAAY55L,EAAO+0D,EAAG/0D,KAAMiqB,EAAY8qC,EAAG9qC,UACjEjqB,GAAQ29C,EACRlzC,KAAK0vL,8BAA8Bn6L,EAAM29C,GAEpC39C,IAASiqB,EACdxf,KAAKuvE,OAAOt4E,OAAO1B,IAEbA,GAAQiqB,EACdxf,KAAKuvE,OAAOxuE,SAAQ,SAAUsT,EAAGs7K,GAC7B58H,EAAM68H,+BAA+BD,EAASnwK,MAG7CjqB,GAAQiqB,GACbxf,KAAK4vL,+BAA+Br6L,EAAMiqB,IASlDwvK,EAAa7uL,UAAUuvL,8BAAgC,SAAUn6L,EAAM29C,GACnE,IAAID,EAAgBjzC,KAAKuvE,OAAOhsE,IAAIhO,GACpC,GAAI09C,EAAe,CACf,IAAI48I,EAAe58I,EAAcljC,QAAQmjC,GACrCD,EAAcljC,QAAQmjC,IAAY,GAClCD,EAAcjjC,OAAO6/K,EAAc,KAU/Cb,EAAa7uL,UAAUyvL,+BAAiC,SAAUr6L,EAAMiqB,GACpE,IAAIswK,EAAoB,GACpB78I,EAAgBjzC,KAAKuvE,OAAOhsE,IAAIhO,GAC/B09C,IAGLA,EAAct8C,KAAI,SAAUu8C,GAIxB,OAHIA,EAAQ1zB,YAAcA,GACtBswK,EAAkBt0L,KAAK03C,GAEpB,QAEXlzC,KAAKuvE,OAAO5jE,IAAIpW,EAAMu6L,KAE1Bd,EAAa7uL,UAAU4vL,UAAY,WAC/B,OAAO/vL,KAAKuvE,QAEhBy/G,EAAa7uL,UAAU6vL,gBAAkB,SAAUC,GAC/CjwL,KAAKkvL,MAAO,EACZe,IACAjwL,KAAKkvL,MAAO,GAETF,EA5KsB,GA+K7BkB,GAAgC,WAChC,SAASA,EAAep9H,EAAcq9H,EAAYC,EAAYC,GAC1DrwL,KAAK8yD,aAAeA,EACpB9yD,KAAKmwL,WAAaA,EAClBnwL,KAAKowL,WAAaA,EAClBpwL,KAAKqwL,cAAgBA,EACrBrwL,KAAKkzB,YAiCT,OA/BAg9J,EAAe/vL,UAAU+yB,UAAY,WACjC,IAAI6/B,EAAQ/yD,KACZA,KAAK8yD,aAAaM,OAAO,WAAW,SAAUoE,EAASC,GACnD1E,EAAM90D,KAAKu5D,EAASC,OAG5By4H,EAAe/vL,UAAUmwL,WAAa,SAAU/6L,EAAMwN,EAAMy0D,GAC3C,aAATjiE,EACAyK,KAAKmwL,WAAWptL,GAAQy0D,EAGxBx3D,KAAKowL,WAAWrtL,GAAQy0D,GAGhC04H,EAAe/vL,UAAUowL,cAAgB,SAAUh7L,EAAMwN,GACxC,aAATxN,SACOyK,KAAKmwL,WAAWptL,UAGhB/C,KAAKowL,WAAWrtL,IAG/BmtL,EAAe/vL,UAAUlC,KAAO,SAAU8E,EAAM00D,GAC5C,IAAIliE,EAAOyK,KAAKqwL,gBACH,aAAT96L,EACAyK,KAAKmwL,WAAWptL,GAAM00D,GAGtBz3D,KAAKowL,WAAWrtL,GAAM00D,IAGvBy4H,EAvCwB,GA0CnC,SAASM,GAA8BtyL,GACnC,MAAiC,OAA1BA,EAAKA,EAAKhD,OAAS,GAAcgD,EAAK/H,MAAM,EAAG+H,EAAKhD,OAAS,GAAKgD,EAE7E,SAASuyL,GAAuBnmI,EAAIpzD,GAChC,IAAIqN,EAAS+lD,EAAG/lD,OACZupC,EAAO52C,EAAKo1D,QACZ9gD,EAAUsiC,EAAKt1C,MAAMi3D,IACzB,GAAIjkD,EAAS,CACT,IAAIqkK,EAAcrkK,EAAQ,GAAIskK,EAAetkK,EAAQ,GACjDqP,GAAYg1J,GAAeC,GAAcjsJ,cAC7C,MAAqB,eAAd3sB,EAAK3B,SAA4BgP,EAAOlH,MAAMwd,KAAatW,EAAOsP,MAAMgH,IAEnF,OAAO,EAEX,SAAS61K,GAAapmI,GAClB,IAAI/0D,EAAO+0D,EAAG/0D,KACd,OAAOuxD,GAAS,CAAC,OAAQ,SAAU,OAAQ,SAAU,QAAS,OAAQ,QAASvxD,GAEnF,SAASo7L,GAAY5lI,GACjB,MAAyE,eAAtD,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAOx1D,MAEnE,SAASq7L,GAAWtmI,GAChB,IAAI/0D,EAAO+0D,EAAG/0D,KAAM+2D,EAAUhC,EAAGgC,QAC7B9gD,EAAmB,eAATjW,GAAyB+2D,EAAQ9zD,MAAMi3D,IACrD,GAAIjkD,EAAS,CACT,IAAIqkK,EAAcrkK,EAAQ,GAAIskK,EAAetkK,EAAQ,GACjDqe,EAAUgmJ,GAAeC,EAC7B,GAAIjmJ,EACA,OAAOi9B,GAAS,CAAC,KAAM,KAAM,MAAOj9B,EAAQhG,eAGpD,OAAO,EAEX,SAASgtK,GAAiBvmI,GACtB,IAAIgC,EAAUhC,EAAGgC,QACbqR,EAAO,YAAY3+D,KAAKstD,GACxBqd,EAAU,oBAAoB3qE,KAAKstD,GACvC,MAAO,CAAEqR,KAAMA,EAAMgM,QAASA,GAElC,SAASmnH,GAAyBjd,GAE9B,IADA,IAAIkd,EAAY,GACPxgI,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpCwgI,EAAUxgI,EAAK,GAAK/xD,UAAU+xD,GAElC,IAAI3iB,EAAU7kB,SAASiB,cAAc,OACrC4jB,EAAQoC,UAAYk+H,GAAa2F,GACjC,IAAIhuH,EAAKjY,EAAQv2C,WACjB,OAAO05L,EAAUp6L,KAAI,SAAUslB,GAAY,OAAO4pC,EAAGxgC,aAAapJ,IAAa,MAEnF,SAASgkJ,GAAiBhB,GACtB,IAAI8P,EAAe,GAQnB,OAPAlsK,OAAOotB,KAAKgvI,GAAYl+J,SAAQ,SAAUlC,GACtC,IAAImyL,EAAWnyL,EAAIjF,MAAM,MACzBo3L,EAASjwL,SAAQ,SAAU8oB,GACvB,IAAI9mB,EAAO8mB,EAAQhG,cACnBkrJ,EAAahsK,GAAQk8J,EAAWpgK,SAGjCkwK,EAEX,IAAI9P,GAAa,CACb,YAAa,SAAU9qK,EAAOkgB,EAAGw7J,GAC7B,IAAIh1G,EAAS1mE,EAAMoQ,OAAOlH,MAAMw9D,OAC5Bg1G,EACA17K,EAAM88L,SAASp2H,EAAOhkE,OAAO,CAAEg9K,QAAShE,KAGxC17K,EAAM+8L,UAAUr2H,IAGxB,QAAS,SAAU1mE,EAAOkgB,EAAGw7J,GACzB,IAAI/0G,EAAO3mE,EAAMoQ,OAAOlH,MAAMy9D,KAC1B+0G,EACA17K,EAAM88L,SAASn2H,EAAKjkE,OAAO,CAAEg9K,QAAShE,KAGtC17K,EAAM+8L,UAAUp2H,IAGxB,SAAU,SAAU3mE,EAAOkgB,EAAGw7J,GAC1B,IAAI90G,EAAS5mE,EAAMoQ,OAAOlH,MAAM09D,OAC5B80G,EACA17K,EAAM88L,SAASl2H,EAAOlkE,OAAO,CAAEg9K,QAAShE,KAGxC17K,EAAM+8L,UAAUn2H,IAGxB3iE,KAAM,SAAUjE,EAAOkgB,EAAGw7J,GACtB,IAAIz3K,EAAOjE,EAAMoQ,OAAOlH,MAAMjF,KAC1By3K,EACA17K,EAAM88L,SAAS74L,EAAKvB,OAAO,CAAEg9K,QAAShE,KAGtC17K,EAAM+8L,UAAU94L,IAGxBmQ,EAAG,SAAUpU,EAAO+C,EAAM24K,GACtB,IAAIhxJ,EAAM3nB,EAAKo1D,QACX9E,EAAOrzD,EAAMoQ,OAAOlH,MAAMmqD,KAC9B,GAAIqoH,EAAa,CACb,IAAIxjG,EAAUykH,GAAyBjyK,EAAK,QAAQ,GACpD1qB,EAAM88L,SAASzpI,EAAK3wD,OAAO,CACvBw1E,QAASA,EACTwnG,QAAShE,UAIb17K,EAAM+8L,UAAU1pI,IAGxBjf,IAAK,SAAUp0C,EAAO+C,EAAM24K,GACxB,IAAIhxJ,EAAM3nB,EAAKo1D,QACf,GAAIujH,EAAa,CACb,IAAIvlH,EAAKwmI,GAAyBjyK,EAAK,MAAO,OAAQu1C,EAAW9J,EAAG,GAAI+J,EAAU/J,EAAG,GACjFwT,EAAQ3pE,EAAMoQ,OAAOsP,MAAMiqD,MAC/B3pE,EAAMqhB,QAAQsoD,EAAOne,EAAW,CAAEk0H,QAAShE,EAAaz7G,SAAUA,GAAaC,GAAW,CAAEA,QAASA,OAG7GzyC,GAAI,SAAUztB,EAAOkgB,EAAGw7J,GACpB17K,EAAMqhB,QAAQrhB,EAAMoQ,OAAOsP,MAAMszC,cAAe,CAAE0sH,QAAShE,KAE/DshB,GAAI,SAAUh9L,EAAO+C,GACjB,IAAI+yD,EAAY91D,EAAMoQ,OAAOsP,MAAMo2C,UAC/Bt0D,EAASuB,EAAKvB,OAAQu4B,EAAOh3B,EAAKg3B,KAAM7nB,EAAOnP,EAAKmP,KACc,eAAtD,OAAX1Q,QAA8B,IAAXA,OAAoB,EAASA,EAAOJ,OAGpDo7L,GAAYziK,IACZ/5B,EAAMi9L,SAASnnI,GAIf0mI,GAAYtqL,GACZlS,EAAMk9L,YAKDhrL,IACLlS,EAAMk9L,YACNl9L,EAAMi9L,SAASnnI,KAGoD,eAAtD,OAAXt0D,QAA8B,IAAXA,OAAoB,EAASA,EAAOJ,QACzD24B,IAASwiK,GAAaxiK,IAASuiK,GAAuBt8L,EAAO+5B,KAC7D/5B,EAAMk9L,YAENhrL,IAASqqL,GAAarqL,IAASoqL,GAAuBt8L,EAAOkS,KAC7DlS,EAAMi9L,SAASnnI,KAI3BhoC,IAAK,SAAU9tB,EAAO+C,EAAM24K,GACxB,IAAIvlH,EAAIG,EACJzY,EAAYjpB,SAASiB,cAAc,OACvCgoB,EAAUhC,UAAY94C,EAAKo1D,QAC3B,IAAIA,EAAoG,QAAzF7B,EAAqC,QAA/BH,EAAKtY,EAAU36C,kBAA+B,IAAPizD,OAAgB,EAASA,EAAGjzD,kBAA+B,IAAPozD,OAAgB,EAASA,EAAG/yC,YAC5IvjB,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMkqD,UAAW,CAAE81G,QAAShE,IACxD17K,EAAMm9L,QAAQd,GAA8BlkI,IAC5Cn4D,EAAMk9L,aAEV,SAAU,SAAUl9L,EAAO+C,EAAM24K,GAE7B,GAAyB,cAArB34K,EAAKvB,OAAOJ,KAAsB,CAClC,IAAI+0D,EAAKn2D,EAAMoQ,OAAOsP,MAAOg2D,EAAavf,EAAGuf,WAAYC,EAAcxf,EAAGwf,YAAa7f,EAAYK,EAAGL,UAClG3C,EAAuB,OAAhBuoH,EAAuBhmG,EAAaC,EAC3C+lG,GACI34K,EAAKg3B,OAAS0iK,GAAW15L,EAAKg3B,OAC9B/5B,EAAMk9L,YAEVl9L,EAAMi9L,SAAS9pI,EAAM,CAAEusH,QAAShE,MAGhC17K,EAAMk9L,YACFn6L,EAAKmP,OAASuqL,GAAW15L,EAAKmP,OAC9BlS,EAAMi9L,SAASnnI,MAK/BpoC,GAAI,SAAU1tB,EAAO+C,EAAM24K,GACvB,IAAIvlH,EAEJ,GAA0E,eAA9C,QAAtBA,EAAKpzD,EAAKvB,cAA2B,IAAP20D,OAAgB,EAASA,EAAG/0D,MAAuB,CACnF,IAAIk1D,EAAKt2D,EAAMoQ,OAAOsP,MAAOgkJ,EAAWptG,EAAGotG,SAAU5tG,EAAYQ,EAAGR,UACpE,GAAI4lH,EAAa,CACb,IAAIxzK,EAAQw0L,GAAiB35L,GACzBA,EAAKg3B,OAAS0iK,GAAW15L,EAAKg3B,OAC9B/5B,EAAMk9L,YAEVl9L,EAAMi9L,SAASv5B,EAAUl4G,EAAW,CAAEk0H,QAAShE,GAAexzK,IAC1DnF,EAAKmP,OAASuqL,GAAW15L,EAAKmP,OAC9BlS,EAAMi9L,SAASnnI,QAIf/yD,EAAKg3B,OAAS0iK,GAAW15L,EAAKg3B,OAC9B/5B,EAAMk9L,YAEVl9L,EAAMk9L,eAKlBE,GAAqBtxB,GAAiBhB,IAE1C,SAASuyB,GAAQt6L,GACb,MAAqB,eAAdA,EAAK3B,MAAyBm6D,GAAK1wD,KAAK9H,EAAKo1D,SAExD,SAASmlI,GAAyB97L,GAC9Bo0D,GAAUp0D,EAAO4xB,YAAYxmB,SAAQ,SAAUsG,GAC3C,GAAIwpD,GAAWxpD,GAAQ,CACnB,IAAIwoK,EAAcxoK,EAAMuc,SAASC,cACjCxc,EAAM8iB,aAAa,gBAAiB0lJ,GAChCxoK,EAAMkgB,YACNkqK,GAAyBpqL,OAKzC,IAAIqqL,GAAiB,CACjBxzL,KAAM,SAAU/J,EAAO+C,GACnB/C,EAAMm9L,QAAQp6L,EAAKo1D,SAAW,KAElCrC,UAAW,SAAU91D,EAAO+C,EAAMozD,EAAIqnI,GAClC,IAAIlnI,EACAoD,EAAWvD,EAAGuD,SAClB,GAAIA,EAAU,CACV,IAAI5D,EAAY91D,EAAMoQ,OAAOsP,MAAMo2C,UAGqC,eAA9C,QAApBQ,EAAKvzD,EAAKg3B,YAAyB,IAAPu8B,OAAgB,EAASA,EAAGl1D,QAC1DpB,EAAMi9L,SAASnnI,EAAW0nI,GAC1Bx9L,EAAMk9L,aAEVl9L,EAAMi9L,SAASnnI,EAAW0nI,QAG1Bx9L,EAAMk9L,aAGdxzH,QAAS,SAAU1pE,EAAO+C,EAAMozD,EAAIqnI,GAChC,IAAI9jI,EAAWvD,EAAGuD,SAClB,GAAIA,EAAU,CACV,IAAIpD,EAAKvzD,EAAM8X,EAAQy7C,EAAGz7C,MAAOksD,EAAczQ,EAAGyQ,YAClD/mE,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMgqD,QAASle,EAAW,CAAE3wC,MAAOA,EAAOksD,YAAaA,GAAey2H,SAGlGx9L,EAAMk9L,aAGdtzH,UAAW,SAAU5pE,EAAO+C,EAAMy6L,GAC9B,IAAI5zH,EAAY5pE,EAAMoQ,OAAOsP,MAAMkqD,UAC/BzT,EAAKpzD,EAAMi2D,EAAO7C,EAAG6C,KAAMb,EAAUhC,EAAGgC,QAC5Cn4D,EAAMi9L,SAASrzH,EAAWpe,EAAW,CAAE0gI,SAAUlzH,GAAQwkI,IACzDx9L,EAAMm9L,QAAQd,GAA8BlkI,GAAW,KACvDn4D,EAAMk9L,aAEV/pI,KAAM,SAAUnzD,EAAO+C,EAAMozD,EAAIqnI,GAC7B,IAAI9jI,EAAWvD,EAAGuD,SAClB,GAAIA,EAAU,CACV,IAAIpD,EAAKt2D,EAAMoQ,OAAOsP,MAAOg2D,EAAapf,EAAGof,WAAYC,EAAcrf,EAAGqf,YACtE5E,EAAKhuE,EAAKu0D,SAAUl2D,EAAO2vE,EAAG3vE,KAAMyG,EAAQkpE,EAAGlpE,MACtC,WAATzG,EACApB,EAAMi9L,SAASvnH,EAAY8nH,GAG3Bx9L,EAAMi9L,SAAStnH,EAAanqB,EAAW,CAAEgmE,MAAO3pH,GAAS21L,SAI7Dx9L,EAAMk9L,aAGd9nI,KAAM,SAAUp1D,EAAO+C,EAAMozD,EAAIqnI,GAC7B,IAAI9jI,EAAWvD,EAAGuD,SACdgqG,EAAW1jK,EAAMoQ,OAAOsP,MAAMgkJ,SAC9BptG,EAAKvzD,EAAKu0D,SAAUkS,EAAOlT,EAAGkT,KAAMgM,EAAUlf,EAAGkf,QACrD,GAAI9b,EAAU,CACV,IAAIxxD,EAAQsjD,EAAWA,EAAWA,EAAW,GAAKge,GAAQ,CAAEA,KAAMA,IAAWgM,GAAW,CAAEA,QAASA,IAAagoH,GAChHx9L,EAAMi9L,SAASv5B,EAAUx7J,QAGzBlI,EAAMk9L,aAGdrzH,WAAY,SAAU7pE,EAAOkgB,EAAGi2C,EAAIqnI,GAChC,IAAI9jI,EAAWvD,EAAGuD,SACdA,EACA15D,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMmqD,WAAY2zH,GAG9Cx9L,EAAMk9L,aAGdvzH,MAAO,SAAU3pE,EAAO+C,EAAMozD,EAAIqnI,GAC9B,IAAI9jI,EAAWvD,EAAGuD,SAAUmxG,EAAe10G,EAAG00G,aAC1ClhG,EAAQ3pE,EAAMoQ,OAAOsP,MAAMiqD,MAC3BrT,EAAKvzD,EAAMq1D,EAAc9B,EAAG8B,YAAal1D,EAAaozD,EAAGpzD,WACzDw2D,GAAYmxG,GACZA,IAEJ7qK,EAAMqhB,QAAQsoD,EAAOne,EAAWA,EAAW,CAAEyU,SAAU7H,GAAgBl1D,GAAc,CAAEg9D,QAASh9D,EAAWi1D,UAAaqlI,KAE5HxqI,cAAe,SAAUhzD,EAAO+C,EAAMmd,EAAGs9K,GACrCx9L,EAAMqhB,QAAQrhB,EAAMoQ,OAAOsP,MAAMszC,cAAewqI,IAEpD92H,OAAQ,SAAU1mE,EAAOkgB,EAAGi2C,EAAIqnI,GAC5B,IAAI9jI,EAAWvD,EAAGuD,SACdgN,EAAS1mE,EAAMoQ,OAAOlH,MAAMw9D,OAC5BhN,EACA15D,EAAM88L,SAASp2H,EAAOhkE,OAAO86L,IAG7Bx9L,EAAM+8L,UAAUr2H,IAGxBC,KAAM,SAAU3mE,EAAOkgB,EAAGi2C,EAAIqnI,GAC1B,IAAI9jI,EAAWvD,EAAGuD,SACdiN,EAAO3mE,EAAMoQ,OAAOlH,MAAMy9D,KAC1BjN,EACA15D,EAAM88L,SAASn2H,EAAKjkE,OAAO86L,IAG3Bx9L,EAAM+8L,UAAUp2H,IAGxBtT,KAAM,SAAUrzD,EAAO+C,EAAMozD,EAAIqnI,GAC7B,IAAI9jI,EAAWvD,EAAGuD,SACdrG,EAAOrzD,EAAMoQ,OAAOlH,MAAMmqD,KAC1BiD,EAAKvzD,EAAMq1D,EAAc9B,EAAG8B,YAAa9pC,EAAQgoC,EAAGhoC,MACxD,GAAIorC,EAAU,CACV,IAAIxxD,EAAQsjD,EAAW,CAAE0sB,QAAS9f,EAAa9pC,MAAOA,GAASkvK,GAC/Dx9L,EAAM88L,SAASzpI,EAAK3wD,OAAOwF,SAG3BlI,EAAM+8L,UAAU1pI,IAGxB62G,UAAW,SAAUlqK,EAAO+C,GACxB,GAAyB,cAArBA,EAAKvB,OAAOJ,KAAsB,CAClC,IAAI24B,EAAOh3B,EAAKg3B,KAAM7nB,EAAOnP,EAAKmP,KAC9B6nB,IAASsjK,GAAQtjK,IACjB/5B,EAAMk9L,YAENhrL,IAASmrL,GAAQnrL,IACjBlS,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMo2C,aAK9C9nC,MAAO,SAAUhuB,EAAOkgB,EAAGi2C,EAAIqnI,GAC3B,IAAI9jI,EAAWvD,EAAGuD,SACdA,EACA15D,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMsO,MAAOwvK,GAGzCx9L,EAAMk9L,aAGdz9B,UAAW,SAAUz/J,EAAOkgB,EAAGi2C,EAAIqnI,GAC/B,IAAI9jI,EAAWvD,EAAGuD,SACdA,EACA15D,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAM+/I,UAAW+9B,GAG7Cx9L,EAAMk9L,aAGd19B,UAAW,SAAUx/J,EAAOkgB,EAAGi2C,EAAIqnI,GAC/B,IAAI9jI,EAAWvD,EAAGuD,SACdA,EACA15D,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAM8/I,UAAWg+B,GAG7Cx9L,EAAMk9L,aAGdjgC,SAAU,SAAUj9J,EAAOkgB,EAAGi2C,EAAIqnI,GAC9B,IAAI9jI,EAAWvD,EAAGuD,SACdA,EACA15D,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMu9I,SAAUugC,GAG5Cx9L,EAAMk9L,aAGdlzH,UAAW,SAAUhqE,EAAO+C,EAAMozD,GAC9B,IAAIuD,EAAWvD,EAAGuD,SAClB,IAAK32D,EAAK2rJ,QAAS,CACf,IAAI+uC,EAAc,SAAUn3I,GACxB,OAAOA,IAAci2I,GAAaj2I,IAAcg2I,GAAuBt8L,EAAOsmD,KAElF,GAAIoT,EAAU,CACV,IAAIpD,EAAKt2D,EAAMoQ,OAAOsP,MAAOqmK,EAAgBzvH,EAAGyvH,cAAeE,EAAgB3vH,EAAG2vH,cAAenwH,EAAYQ,EAAGR,UAC5Gy1G,EAAYxoK,EAAKvB,OAAOA,OACxBq+J,EAA0B,cAAnB0L,EAAUnqK,KAAuB2kL,EAAgBE,EACxDj4J,EAAQu9I,EAAU/pK,OAClB8+J,GAAStyI,EAAM+lD,QAAQhxE,EAAKyrJ,WAAa,IAAI8R,MAC7Cp4J,EAAQsjD,EAAW,GAAIzoD,EAAKmF,OAC5Bo4J,IACAp4J,EAAMo4J,MAAQA,GAElBtgK,EAAMi9L,SAASp9B,EAAM33J,GACjBu1L,EAAY16L,EAAKG,aACjBlD,EAAMi9L,SAASnnI,QAIf2nI,EAAY16L,EAAKI,YACjBnD,EAAMk9L,YAEVl9L,EAAMk9L,cAIlBt2H,OAAQ,SAAU5mE,EAAOkgB,EAAGi2C,EAAIqnI,GAC5B,IAAI9jI,EAAWvD,EAAGuD,SACdkN,EAAS5mE,EAAMoQ,OAAOlH,MAAM09D,OAC5BlN,EACA15D,EAAM88L,SAASl2H,EAAOlkE,OAAO86L,IAG7Bx9L,EAAM+8L,UAAUn2H,IAGxB3iE,KAAM,SAAUjE,EAAO+C,EAAMmd,EAAGs9K,GAC5B,IAAIv5L,EAAOjE,EAAMoQ,OAAOlH,MAAMjF,KAC9BjE,EAAM88L,SAAS74L,EAAKvB,OAAO86L,IAC3Bx9L,EAAMm9L,QAAQd,GAA8Bt5L,EAAKo1D,SAAW,KAC5Dn4D,EAAM+8L,UAAU94L,IAEpB6lE,YAAa,SAAU9pE,EAAO+C,GAC1B,IAAIozD,EAAKn2D,EAAMoQ,OAAOsP,MAAOoqD,EAAc3T,EAAG2T,YAAahU,EAAYK,EAAGL,UACtEQ,EAAKvzD,EAAMi2D,EAAO1C,EAAG0C,KAAMb,EAAU7B,EAAG6B,QAC5Cn4D,EAAMi9L,SAASnzH,EAAa,CAAE9Q,KAAMA,IACpCh5D,EAAMm9L,QAAQd,GAA8BlkI,GAAW,KACvDn4D,EAAMk9L,YAEDn6L,EAAKmP,OACNlS,EAAMi9L,SAASnnI,GACf91D,EAAMk9L,cAGdx9B,YAAa,SAAU1/J,EAAO+C,GAC1B/C,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMggJ,aAClC1/J,EAAMm9L,QAAQp6L,EAAKo1D,SACnBn4D,EAAMk9L,aAEVjzH,WAAY,SAAUjqE,EAAO+C,GACzB,IAAI42C,EAAO52C,EAAKo1D,QACZ9gD,EAAUsiC,EAAKt1C,MAAMi3D,IACrBogH,EAAcrkK,EAAQ,GAAIskK,EAAetkK,EAAQ,GACjDqP,GAAYg1J,GAAeC,GAAcjsJ,cACzC3mB,EAAW/I,EAAMoQ,OAAOlH,MAAMwd,GAC9Bg3K,EAAgB3jB,GAAapgI,GAEjC,GAAiB,OAAb5wC,QAAkC,IAAbA,OAAsB,EAASA,EAAS1H,KAAK6G,MAAM+hE,WACxE,GAAIyxG,EAAa,CACb,IAAIlB,EAAYP,GAAyByjB,GACzC19L,EAAM88L,SAAS/zL,EAASrG,OAAO,CAAE83K,UAAWA,UAG5Cx6K,EAAM+8L,UAAUh0L,OAGnB,CACD,IAAI40L,EAAoBP,GAAmB12K,GACvCi3K,GACAA,EAAkB39L,EAAO+C,EAAM24K,KAI3Cnc,UAAW,SAAUv/J,EAAO+C,GACxB,IAAI42C,EAAO52C,EAAKo1D,QACZta,EAAYjpB,SAASiB,cAAc,OACnC+nK,EAAgBpiI,GAAc3wD,KAAK8uC,GACvC,GAAIikJ,EACA59L,EAAMi9L,SAASj9L,EAAMoQ,OAAOsP,MAAMm+K,aAClC79L,EAAMm9L,QAAQp6L,EAAKo1D,SACnBn4D,EAAMk9L,gBAEL,CACD,IAAI7lL,EAAUsiC,EAAKt1C,MAAMi3D,IACrBogH,EAAcrkK,EAAQ,GAAIskK,EAAetkK,EAAQ,GACjDqP,GAAYg1J,GAAeC,GAAcjsJ,cACzCznB,EAAWjI,EAAMoQ,OAAOsP,MAAMgH,GAC9Bg3K,EAAgB3jB,GAAapgI,GAEjC,GAAiB,OAAb1xC,QAAkC,IAAbA,OAAsB,EAASA,EAAS5G,KAAK6G,MAAMq3J,UAAW,CACnF,IAAIib,EAAYP,GAAyByjB,GACrChjB,EAAeV,GAAgBj3K,EAAM2jB,GACzC1mB,EAAMqhB,QAAQpZ,EAAU,CAAEuyK,UAAWA,EAAWE,aAAcA,SAG9D78H,EAAUhC,UAAY6hJ,EACtBJ,GAAyBz/I,GACzB79C,EAAM89L,mBAAmBjgJ,KAIrCotH,aAAc,SAAUjrK,EAAO+C,EAAMozD,GACjC,IAAIuD,EAAWvD,EAAGuD,SAAUmxG,EAAe10G,EAAG00G,aAC1Cv0G,EAAKvzD,EAAMi2D,EAAO1C,EAAG0C,KAAM91D,EAAaozD,EAAGpzD,WAC3CkN,EAASpQ,EAAMoQ,OACnB,IAAgC,IAA5B4oD,EAAKp9C,QAAQ,WAAoB89C,EAAU,CAC3C,IAAIj4D,EAAU+3D,GAAiBz2D,GAC/B8nK,IACA7qK,EAAMqhB,QAAQjR,EAAOsP,MAAMypB,OAAQ,CAAE6vB,KAAMA,GAAQ,CAC/C5oD,EAAOrG,KAAKgvD,GAAoBC,EAAMv3D,UAGzC,CACD,IAAIsI,EAAO,KACP2vD,IACA3vD,GAAQ7G,EAAa81D,EAAO,IAAMA,GAEtCh5D,EAAMm9L,QAAQpzL,MAI1B,SAASg0L,GAAmBxiB,GACxB,IAAIyiB,EAAuBtvL,OAAOotB,KAAKy/I,GACnCzQ,EAAat/G,EAAW,GAAI+xI,IAC5Bzf,EAAW,IAAIlS,GAAS,CACxBF,KAAK,EACLnB,QAAQ,EACRO,WAAYyQ,IAEZ0iB,EAAgBngB,EAAS1R,gBAgB7B,OAfA4xB,EAAqBpxL,SAAQ,SAAUxL,GACnC,IAAI88L,EAAcX,GAAen8L,GAC7B88L,IAAgBvrI,GAAS,CAAC,YAAa,cAAevxD,KACtD0pK,EAAW1pK,GAAQ,SAAUpB,EAAO+C,EAAMgoB,GACtCA,EAAQ2mB,OAAS,WAAc,OAAOusJ,EAAc78L,GAAM2B,EAAMgoB,EAASkzK,IACzE,IACI/1L,EADA6d,EAASw1J,EAAiBn6K,GAAM2B,EAAMgoB,GAE1C,GAAIhF,EAAQ,CACR,IAAIowC,EAAK92C,MAAMC,QAAQyG,GAAUA,EAAO,GAAKA,EAAQy0J,EAAYrkH,EAAGha,WAAYg2B,EAAahc,EAAGgc,WAChGjqE,EAAQ,CAAEsyK,UAAWA,EAAWroG,WAAYA,GAEhD+rH,EAAYl+L,EAAO+C,EAAMgoB,EAAS7iB,QAIvC4iK,EAGX,SAASqzB,GAAc/pL,EAAGC,GACtB,SAAID,EAAEvK,QAAUwK,EAAExK,QAAU,UAAOsW,QAAQ/L,EAAElL,MAAOmL,EAAEnL,SAG3CkL,EAAEuK,SAASvK,EAAErK,KAAOsK,EAAEtK,MAIrC,IAAIq0L,GAAoC,WACpC,SAASA,EAAmBhuL,EAAQ06J,GAChCj/J,KAAKuE,OAASA,EACdvE,KAAKi/J,WAAaA,EAClBj/J,KAAK81B,MAAQ,CAAC,CAAEvgC,KAAMyK,KAAKuE,OAAO6Z,YAAa/hB,MAAO,KAAMzG,QAAS,KACrEoK,KAAK3C,MAAQ,UAAOmX,KAuHxB,OArHA+9K,EAAmBpyL,UAAU8O,IAAM,WAC/B,OAAO65C,GAAO9oD,KAAK81B,QAEvBy8J,EAAmBpyL,UAAU3E,KAAO,SAAUtE,GACtC8I,KAAK81B,MAAM56B,QACX8E,KAAKiP,MAAMrZ,QAAQ4F,KAAKtE,IAGhCq7L,EAAmBpyL,UAAUmxL,QAAU,SAAUpzL,GAC7C,GAAIA,EAAM,CACN,IAAI2V,EAAQ7T,KAAKiP,MAAMrZ,QACnBg1B,EAAWk+B,GAAOj1C,GAClB3c,EAAO8I,KAAKuE,OAAOrG,KAAKA,EAAM8B,KAAK3C,OACnCm1L,EAAS5nK,GAAY0nK,GAAc1nK,EAAU1zB,GAC7Cs7L,EACA3+K,EAAMA,EAAM3Y,OAAS,GAAKs3L,EAG1B3+K,EAAMrY,KAAKtE,KAIvBq7L,EAAmBpyL,UAAU8wL,SAAW,SAAU5mL,GAC9CrK,KAAK3C,MAAQgN,EAAKG,SAASxK,KAAK3C,QAEpCk1L,EAAmBpyL,UAAU+wL,UAAY,SAAU7mL,GAC/CrK,KAAK3C,MAAQgN,EAAKQ,cAAc7K,KAAK3C,QAEzCk1L,EAAmBpyL,UAAUqV,QAAU,SAAUjgB,EAAM8G,EAAOzG,GAC1D,IAAIsB,EAAO3B,EAAK2D,cAAcmD,EAAOzG,EAASoK,KAAK3C,OACnD,OAAInG,GACA8I,KAAKxE,KAAKtE,GACHA,GAEJ,MAEXq7L,EAAmBpyL,UAAUixL,SAAW,SAAU77L,EAAM8G,GACpD2D,KAAK81B,MAAMt6B,KAAK,CAAEjG,KAAMA,EAAM8G,MAAOA,EAAOzG,QAAS,MAEzD28L,EAAmBpyL,UAAUkxL,UAAY,WACjCrxL,KAAK3C,MAAMnC,SACX8E,KAAK3C,MAAQ,UAAOmX,MAExB,IAAI81C,EAAKtqD,KAAK81B,MAAMtmB,MAAOja,EAAO+0D,EAAG/0D,KAAM8G,EAAQiuD,EAAGjuD,MAAOzG,EAAU00D,EAAG10D,QAC1E,OAAOoK,KAAKwV,QAAQjgB,EAAM8G,EAAOzG,IAErC28L,EAAmBpyL,UAAU8xL,mBAAqB,SAAUt8J,GACxD,IAAIo9B,EAAQ/yD,KACR/J,EAAM,eAAUmqB,WAAWpgB,KAAKuE,QAAQoU,MAAMgd,GAClD1/B,EAAIL,QAAQmL,SAAQ,SAAU7J,GAAQ,OAAO67D,EAAMv3D,KAAKtE,OAE5Dq7L,EAAmBpyL,UAAUsyL,yBAA2B,SAAUv7L,EAAM22D,GACpE,IAAIvD,EACJ,IAAKuD,GAA0B,eAAd32D,EAAK3B,KAElB,IADA,IAAIm9L,EAAW1yL,KAAK81B,MAAM56B,OAAS,EAC1BtD,EAAI86L,EAAU96L,GAAK,EAAGA,GAAK,EAAG,CACnC,IAAI+6L,EAAW3yL,KAAK81B,MAAMl+B,GAC1B,KAA8B,QAAzB0yD,EAAKqoI,EAASt2L,aAA0B,IAAPiuD,OAAgB,EAASA,EAAGupH,SAU9D,MATI8e,EAAS/8L,QAAQsF,OACjB8E,KAAKqxL,YAILrxL,KAAK81B,MAAMtmB,QAS/B+iL,EAAmBpyL,UAAUyyL,QAAU,SAAU7nI,EAAQ8nI,GACrD,IAAIjmI,EAAS7B,EAAO6B,SAChB55B,EAAQ45B,EAAOvmD,OACfkjE,EAAU,WACV,IAAIryE,EAAO87B,EAAM97B,KAAM22D,EAAW76B,EAAM66B,SACpCwyG,EAAY52F,EAAOw1F,WAAW/nK,EAAK3B,MACnCsuE,GAAU,EACd,GAAIw8F,EAAW,CACX,IAAInhJ,EAAU,CACV2uC,SAAUA,EACV8yG,MAAOl0G,GAAcv1D,GACrB6nK,gBAAiBryG,GACjBpvC,QAAS,CAAEuiJ,KAAK,EAAMnB,QAAQ,EAAOjG,WAAW,EAAO4F,UAAW,MAClEW,aAAc,WACVn7F,GAAU,IAKlB,GAFA4F,EAAOgpH,yBAAyBv7L,EAAM22D,GACtCwyG,EAAU52F,EAAQvyE,EAAMgoB,IACA,OAAnB2zK,QAA8C,IAAnBA,OAA4B,EAASA,EAAe37L,QAAUA,EAAM,CAChG,IAAIN,EAAM6yE,EAAO3zC,MAAM3a,QAAO,SAAUrkB,EAAUg8L,GAC9C,OAAOh8L,EACHg8L,EAAUl9L,QAAQulB,QAAO,SAAUivC,EAAa8K,GAAU,OAAO9K,EAAc8K,EAAOp+D,WAAa,KACxG,GAAK,EACR+7L,EAAeE,aAAan8L,IAGhCitE,IACAjX,EAAOkB,SAAS52D,GAAM,GACtB01D,EAAOvmD,QAEX2sB,EAAQ45B,EAAOvmD,QAEfojE,EAASzpE,KACb,MAAOgzB,EACHu2C,KAGRgpH,EAAmBpyL,UAAU6yL,YAAc,SAAUjoI,EAAQ8nI,GAEzD,OADA7yL,KAAK4yL,QAAQ7nI,EAAQ8nI,GACjB7yL,KAAK81B,MAAM56B,OACJ8E,KAAKqxL,YAET,MAEJkB,EA5H4B,GA+HvC,SAASU,GAA8B9+L,EAAO+C,EAAMozD,GAChD,IAAI4oI,EAAU5oI,EAAG,GAAI6oI,EAAW7oI,EAAG,GACnCn2D,EAAMi/L,MAAMF,GACZ/+L,EAAMk/L,cAAcn8L,GACpB/C,EAAMi/L,MAAMD,GAEhB,SAASG,GAA6Bn/L,EAAOm2D,EAAIG,GAC7C,IAAIvzD,EAAOozD,EAAGpzD,KAAMvB,EAAS20D,EAAG30D,OAC5Bu9L,EAAUzoI,EAAG,GAAI0oI,EAAW1oI,EAAG,GACnCt2D,EAAMo/L,aAAc,EACpBp/L,EAAMi/L,MAAMF,GACZ/+L,EAAM6+L,YAAY97L,GAClB/C,EAAMi/L,MAAMD,GAC+D,SAA3D,OAAXx9L,QAA8B,IAAXA,OAAoB,EAASA,EAAOJ,KAAKwN,QAC7D5O,EAAMq/L,WAAWt8L,GACjB/C,EAAMo/L,aAAc,GAG5B,SAASE,GAAqB/7K,EAAag8K,GACvC,IAAI7oI,EAAUnzC,EAAYxc,OACtBy4L,EAAY,GACZC,EAAa,GAcjB,MAboB,SAAhBF,GACAC,EAAY,IACZ9oI,GAAW,GAEU,UAAhB6oI,GACLE,EAAa,IACb/oI,GAAW,GAEU,WAAhB6oI,IACLC,EAAY,IACZC,EAAa,IACb/oI,GAAW,GAER,GAAK8oI,EAAY5rI,GAAS,IAAKzoD,KAAKiG,IAAIslD,EAAS,IAAM+oI,EAElE,IAAIC,GAAkB,CAClB31L,KAAM,SAAU/J,EAAOm2D,GACnB,IAAIG,EACAvzD,EAAOozD,EAAGpzD,KACVgH,EAA4B,QAApBusD,EAAKvzD,EAAKgH,YAAyB,IAAPusD,EAAgBA,EAAK,IACxDvzD,EAAKmG,OAAS,IAAI0hB,MAAK,SAAU1U,GAAQ,MAA0B,SAAnBA,EAAK9U,KAAKwN,QAC3D5O,EAAM+J,KAAKiqD,GAAkBjqD,IAAO,GAGpC/J,EAAM+J,KAAKA,IAGnB+rD,UAAW,SAAU91D,EAAOm2D,GACxB,IAAIpzD,EAAOozD,EAAGpzD,KAAMvB,EAAS20D,EAAG30D,OAAQ80D,EAAKH,EAAGzyD,MAAOA,OAAe,IAAP4yD,EAAgB,EAAIA,EACnF,GAAIt2D,EAAMo/L,YACNp/L,EAAMk/L,cAAcn8L,OAEnB,CACD,IAAI48L,EAA2B,IAAVj8L,EACjB8lK,GAAYm2B,GAAkBn+L,EAAO0R,MAAMxP,EAAQ,GACnDk8L,EAAgBp2B,GAAoC,IAAxBA,EAASnmK,WACrCqyC,EAAWhyC,EAAQlC,EAAO6B,WAAa,GAAK7B,EAAO0R,MAAMxP,EAAQ,GACjEm8L,EAAenqJ,GAAmC,cAAvBA,EAASt0C,KAAKwN,KACzCkxL,EAAgC,IAApB/8L,EAAKM,WACjBy8L,GAAaF,EACb5/L,EAAMi/L,MAAM,WAEPa,GAAcF,GAAkBD,GAIrC3/L,EAAMk/L,cAAcn8L,GAChB88L,EACA7/L,EAAMi/L,MAAM,MAGZj/L,EAAMq/L,WAAWt8L,IARrB/C,EAAMi/L,MAAM,QAaxBv1H,QAAS,SAAU1pE,EAAOm2D,EAAIG,GAC1B,IAAIvzD,EAAOozD,EAAGpzD,KACVs1D,EAAQ/B,EAAG+B,MACX0O,EAAchkE,EAAKmF,MAAM6+D,YACT,QAAhBA,GACA/mE,EAAMi/L,MAAM5mI,EAAQ,KACpBr4D,EAAMk/L,cAAcn8L,GACpB/C,EAAMq/L,WAAWt8L,KAGjB/C,EAAMk/L,cAAcn8L,GACpB/C,EAAM+/L,gBACN//L,EAAMi/L,MAAM5mI,GACZr4D,EAAMq/L,WAAWt8L,KAGzB6mE,UAAW,SAAU5pE,EAAOm2D,EAAIG,GAC5B,IAAIvzD,EAAOozD,EAAGpzD,KACVs1D,EAAQ/B,EAAG+B,MAAOtuD,EAAOusD,EAAGvsD,KAC5BgnE,EAAK1Y,EAAO2nI,EAAYjvH,EAAG,GAAIkvH,EAAalvH,EAAG,GACnD/wE,EAAMi/L,MAAMe,GACZhgM,EAAM+/L,gBACN//L,EAAM+J,KAAKA,GAAM,GACjB/J,EAAM+/L,gBACN//L,EAAMi/L,MAAMgB,GACZjgM,EAAMq/L,WAAWt8L,IAErB8mE,WAAY,SAAU7pE,EAAOm2D,EAAIG,GAC7B,IAAIvzD,EAAOozD,EAAGpzD,KAAMvB,EAAS20D,EAAG30D,OAC5B62D,EAAQ/B,EAAG+B,OACC,OAAX72D,QAA8B,IAAXA,OAAoB,EAASA,EAAOJ,KAAKwN,QAAU7L,EAAK3B,KAAKwN,MACjF5O,EAAMkgM,WAAW,GAErBlgM,EAAMmgM,UAAU9nI,EAAO,KAAMt1D,GAAM,WAAc,OAAO/C,EAAM6+L,YAAY97L,OAE9E2yE,WAAY,SAAU11E,EAAOm2D,EAAIG,GAC7B,IAAIvzD,EAAOozD,EAAGpzD,KACVs1D,EAAQ/B,EAAG+B,MAEfr4D,EAAMogM,YAAYr9L,EAAM6wD,GAAS,IAAK,IAAI,WAAc,OAAOyE,EAAQ,QAE3Esd,YAAa,SAAU31E,EAAOm2D,GAC1B,IAAIpzD,EAAOozD,EAAGpzD,KACV8E,EAAQ9E,EAAKmF,MAAMspH,OAAS,EAEhCxxH,EAAMogM,YAAYr9L,EAAM6wD,GAAS,IAAK,IAAI,SAAUlwD,GAChD,IAAI28L,EAAaj/I,OAAOv5C,EAAQnE,GAChC,OAAO28L,EAAa,SAG5B38B,SAAU,SAAU1jK,EAAOm2D,GACvB,IAAIpzD,EAAOozD,EAAGpzD,KACVuzD,EAAKvzD,EAAKmF,MAAOshE,EAAOlT,EAAGkT,KAAMgM,EAAUlf,EAAGkf,QAC9ChM,GACAxpE,EAAMi/L,MAAM,KAAOzpH,EAAU,IAAM,KAAO,MAE9Cx1E,EAAM6+L,YAAY97L,IAEtB4mE,MAAO,SAAU3pE,EAAOkgB,EAAGi2C,GACvB,IAAIjuD,EAAQiuD,EAAGjuD,MACflI,EAAMi/L,MAAM,MAAkB,OAAV/2L,QAA4B,IAAVA,OAAmB,EAASA,EAAMg4D,SAAW,MAAkB,OAAVh4D,QAA4B,IAAVA,OAAmB,EAASA,EAAM+3D,UAAY,MAE/JjN,cAAe,SAAUhzD,EAAOm2D,EAAIG,GAChC,IAAIvzD,EAAOozD,EAAGpzD,KACVs1D,EAAQ/B,EAAG+B,MACfr4D,EAAMi/L,MAAM5mI,GACZr4D,EAAMq/L,WAAWt8L,IAErBirB,MAAO,SAAUhuB,EAAOm2D,GACpB,IAAIpzD,EAAOozD,EAAGpzD,KACd/C,EAAM6+L,YAAY97L,GAClB/C,EAAMq/L,WAAWt8L,IAErB08J,UAAW,SAAUz/J,EAAOm2D,EAAIG,GAC5B,IAAIvzD,EAAOozD,EAAGpzD,KACVs1D,EAAQ/B,EAAG+B,MACXib,EAAMvwE,EAAKG,WACflD,EAAM6+L,YAAY97L,GAClB,IAAI2J,EAAmB,OAAV2rD,QAA4B,IAAVA,EAAmBA,EAAQ,IACrDA,GAASib,GACVA,EAAI1mE,SAAQ,SAAUupD,GAClB,IAAI5yC,EAAc4yC,EAAG5yC,YAAarb,EAAQiuD,EAAGjuD,MACzCo4L,EAAYhB,GAAqB/7K,EAAarb,EAAMo4J,OACxD5zJ,GAAU,KAAO4zL,EAAY,OAGrCtgM,EAAMi/L,MAAMvyL,EAAS,KACrB1M,EAAM+/L,iBAEVvgC,UAAW,SAAUx/J,EAAOm2D,GACxB,IAAIpzD,EAAOozD,EAAGpzD,KACd/C,EAAM6+L,YAAY97L,IAEtBk6J,SAAU,SAAUj9J,EAAOm2D,GACvB,IAAIpzD,EAAOozD,EAAGpzD,KACd/C,EAAM6+L,YAAY97L,GAClB/C,EAAMi/L,MAAM,KACZj/L,EAAM+/L,iBAEVha,cAAe,SAAU/lL,EAAOm2D,EAAIG,GAChC,IAAIvzD,EAAOozD,EAAGpzD,KACVguE,EAAKza,EAAG+B,MAAOA,OAAe,IAAP0Y,EAAgB,KAAOA,EAClD/wE,EAAMi/L,MAAM5mI,GACZr4D,EAAMugM,iBAAiBx9L,GACvB/C,EAAMi/L,MAAM,MAEhBhZ,cAAe,SAAUjmL,EAAOm2D,EAAIG,GAChC,IAAIvzD,EAAOozD,EAAGpzD,KACVguE,EAAKza,EAAG+B,MAAOA,OAAe,IAAP0Y,EAAgB,KAAOA,EAClD/wE,EAAMi/L,MAAM5mI,GACZr4D,EAAMugM,iBAAiBx9L,GACvB/C,EAAMi/L,MAAM,MAEhBn1H,YAAa,SAAU9pE,EAAOm2D,EAAIG,GAC9B,IAAIvzD,EAAOozD,EAAGpzD,KACVs1D,EAAQ/B,EAAG+B,MAAOtuD,EAAOusD,EAAGvsD,KAC5BgnE,EAAK1Y,EAAO2nI,EAAYjvH,EAAG,GAAIkvH,EAAalvH,EAAG,GACnD/wE,EAAMi/L,MAAMe,GACZhgM,EAAM+/L,gBACN//L,EAAM+J,KAAKA,GAAM,GACjB/J,EAAM+/L,gBACN//L,EAAMi/L,MAAMgB,GACZjgM,EAAMq/L,WAAWt8L,IAErB28J,YAAa,SAAU1/J,EAAOm2D,EAAIG,GAC9B,IAAIvzD,EAAOozD,EAAGpzD,KACVgH,EAAOusD,EAAGvsD,KACd/J,EAAM+J,KAAKA,GAAM,GACjB/J,EAAMq/L,WAAWt8L,IAErBomC,OAAQ,SAAUnpC,EAAOkgB,EAAGi2C,GACxB,IAAIpsD,EAAOosD,EAAGpsD,KACd/J,EAAMi/L,MAAMl1L,IAEhB4vC,KAAM,SAAU35C,EAAOm2D,EAAIG,GACvB,IAAIvzD,EAAOozD,EAAGpzD,KACVgH,EAAOusD,EAAGvsD,KACd/J,EAAMi/L,MAAMl1L,GACRhH,EAAKmF,MAAMq3J,WACXv/J,EAAMq/L,WAAWt8L,IAGzB86L,YAAa,SAAU79L,EAAOm2D,EAAIG,GAC9B,IAAIvzD,EAAOozD,EAAGpzD,KACVgH,EAAOusD,EAAGvsD,KACd/J,EAAMi/L,MAAMl1L,GACZ/J,EAAMq/L,WAAWt8L,KAGzB,SAASk8L,GAAM79L,EAAM+0D,GACjB,IAAIn2D,EAAQm2D,EAAGn2D,MAAOw+L,EAAWroI,EAAGqoI,SAAUgC,EAASrqI,EAAGqqI,OACtD9gB,EAAU8gB,EAAO9gB,QACjBA,EACI9xH,EAAUxsD,EAAM,CAAC,UAAW,eAAiB,EAC7C09L,GAA8B9+L,EAAOw+L,EAASz7L,KAAM28K,GAE/C9xH,EAAUxsD,EAAM,CAAC,QAAS,mBAAqB,EACpDpB,EAAMi/L,MAAMvf,GAGZyf,GAA6Bn/L,EAAOw+L,EAAU9e,GAIlDggB,GAAgBt+L,GAAMpB,EAAOw+L,EAAUgC,GAI/C,SAASC,GAAa19L,EAAMC,GACxB,IAAI+G,EAAOhH,EAAKgH,KACZ4sJ,EAAQ,MACRvsJ,EAAM,EACV,GAAIrH,EAAK8G,QAAUE,EAAM,CACrB,IAAIsN,EAAUs/I,EAAM7sJ,KAAKC,GACzB,MAAOsN,EACHjN,EAAMe,KAAKiG,IAAIhH,EAAKiN,EAAQ,GAAGtQ,QAC/BsQ,EAAUs/I,EAAM7sJ,KAAKC,GAI7B,IADA,IAAI2C,EAAStC,EAAM,GAAKpH,EAAO,EAAI,KAAO,IACjCS,EAAI,EAAGA,EAAI2G,EAAK3G,GAAK,EAC1BiJ,GAAU,IAKd,OAHItC,EAAM,GAAKpH,EAAO,IAClB0J,GAAU,KAEPA,EAEX,SAASg0L,GAAehhB,GACpB,OAAOA,EAAU,CAAC,IAAMA,EAAU,IAAK,KAAOA,EAAU,KAAO,KAEnE,SAASihB,GAAejhB,GACpB,OAAOA,EAAU,IAAMA,EAAU,IAAM,KAE3C,SAASkhB,GAAgBlhB,GACrB,OAAOA,EAAU,KAAOA,EAAU,IAAM,KAE5C,IAAImhB,GAAiB,CACjBn3H,QAAS,SAAUvT,GACf,IAAIpzD,EAAOozD,EAAGpzD,KACVmF,EAAQnF,EAAKmF,MACb2S,EAAQ3S,EAAM2S,MACdw9C,EAAQzE,GAAS,IAAK/4C,GAI1B,MAH0B,WAAtB3S,EAAM6+D,cACN1O,EAAkB,IAAVx9C,EAAc,MAAQ,OAE3B,CACHw9C,MAAOA,EACPqnH,QAASghB,GAAex4L,EAAMw3K,WAGtC91G,UAAW,SAAUzT,GACjB,IAAIpzD,EAAOozD,EAAGpzD,KACVuzD,EAAKvzD,EAAMmF,EAAQouD,EAAGpuD,MAAOqb,EAAc+yC,EAAG/yC,YAClD,MAAO,CACH80C,MAAO,CAAC,OAASnwD,EAAMgkL,UAAY,IAAK,OACxCxM,QAASghB,GAAex4L,EAAMw3K,SAC9B31K,KAAMwZ,IAGdsmD,WAAY,SAAU1T,GAClB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACHs1D,MAAO,KACPqnH,QAASghB,GAAe39L,EAAKmF,MAAMw3K,WAG3ChqG,WAAY,SAAUvf,EAAIG,GACtB,IAAIvzD,EAAOozD,EAAGpzD,KACV+9L,EAAUxqI,EAAGwqI,QACbphB,EAAU38K,EAAKmF,MAAMw3K,QAIzB,OAHIohB,IACAphB,EAAUA,GAAW,MAElB,CACHrnH,MAAO,IACPqnH,QAASghB,GAAehhB,KAGhC/pG,YAAa,SAAUxf,EAAIG,GACvB,IAAIvzD,EAAOozD,EAAGpzD,KACV+9L,EAAUxqI,EAAGwqI,QACbphB,EAAU38K,EAAKmF,MAAMw3K,QAIzB,OAHIohB,IACAphB,EAAUA,GAAW,MAElB,CACHA,QAASghB,GAAehhB,KAGhChc,SAAU,SAAUvtG,EAAIG,GACpB,IAAIvzD,EAAOozD,EAAGpzD,KACV+9L,EAAUxqI,EAAGwqI,QACb/vH,EAAKhuE,EAAKmF,MAAOshE,EAAOuH,EAAGvH,KAAMgM,EAAUzE,EAAGyE,QAC9CkqG,EAAU38K,EAAKmF,MAAMw3K,QACrBohB,IACAphB,EAAUA,GAAW,MAEzB,IAAI9rI,EAAY41B,EAAO,0BAA6BgM,EAAU,WAAa,IAAM,IAAO,GACpFurH,EAAUv3H,EAAO,cAAgBgM,EAAU,qBAAuB,IAAM,GAC5E,MAAO,CACHkqG,QAASA,EAAU,CAAC,IAAMA,EAAU9rI,EAAYmtJ,EAAU,IAAK,KAAOrhB,EAAU,KAAO,OAG/F1xJ,MAAO,SAAUmoC,GACb,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACH28K,QAASghB,GAAe39L,EAAKmF,MAAMw3K,WAG3CjgB,UAAW,SAAUtpG,GACjB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACH28K,QAASghB,GAAe39L,EAAKmF,MAAMw3K,WAG3ClgB,UAAW,SAAUrpG,GACjB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACH28K,QAASghB,GAAe39L,EAAKmF,MAAMw3K,WAG3CziB,SAAU,SAAU9mG,GAChB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACH28K,QAASghB,GAAe39L,EAAKmF,MAAMw3K,WAG3CqG,cAAe,SAAU5vH,GACrB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACH28K,QAASghB,GAAe39L,EAAKmF,MAAMw3K,WAG3CuG,cAAe,SAAU9vH,GACrB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACH28K,QAASghB,GAAe39L,EAAKmF,MAAMw3K,WAG3C/1G,MAAO,SAAUxT,GACb,IAAIpzD,EAAOozD,EAAGpzD,KACVmF,EAAQnF,EAAKmF,MACbw3K,EAAUx3K,EAAMw3K,QAASx/G,EAAUh4D,EAAMg4D,QACzCD,EAAW/3D,EAAM+3D,SAASlvD,QAAQ,SAAU,KAC5CiwL,EAAU9gI,EAAU,SAAYzN,GAAYyN,GAAW,IAAO,GAClE,MAAO,CACHw/G,QAASA,EAAU,IAAMA,EAAU,SAAYjtH,GAAYwN,GAAY,IAAO+gI,EAAU,IAAM,KAC9F94L,MAAO,CACHg4D,QAASlM,GAAkBkM,GAAW,IACtCD,SAAUA,KAItBjN,cAAe,SAAUmD,GACrB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACHs1D,MAAO,MACPqnH,QAASihB,GAAe59L,EAAKmF,MAAMw3K,WAG3C51G,YAAa,SAAU3T,GACnB,IAAIpzD,EAAOozD,EAAGpzD,KACVuzD,EAAKvzD,EAAMmF,EAAQouD,EAAGpuD,MAAOqb,EAAc+yC,EAAG/yC,YAClD,MAAO,CACH80C,MAAO,CAAC,KAAOnwD,EAAM8wD,KAAM,MAC3BjvD,KAAMwZ,IAGdm8I,YAAa,SAAUvpG,GACnB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACHgH,KAAMhH,EAAKwgB,cAGnB4lB,OAAQ,SAAUgtB,GACd,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACHgH,KAAMhH,EAAKwgB,cAGnBmjD,OAAQ,SAAUvQ,EAAIG,GAClB,IAAIvzD,EAAOozD,EAAGpzD,KACV22D,EAAWpD,EAAGoD,SACdgmH,EAAU38K,EAAKmF,MAAMw3K,QACzB,MAAO,CACHrnH,MAAO,KACPqnH,QAAShmH,EAAWinI,GAAejhB,GAAWkhB,GAAgBlhB,KAGtE/4G,KAAM,SAAUxQ,EAAIG,GAChB,IAAIvzD,EAAOozD,EAAGpzD,KACV22D,EAAWpD,EAAGoD,SACdgmH,EAAU38K,EAAKmF,MAAMw3K,QACzB,MAAO,CACHrnH,MAAO,IACPqnH,QAAShmH,EAAWinI,GAAejhB,GAAWkhB,GAAgBlhB,KAGtE94G,OAAQ,SAAUzQ,EAAIG,GAClB,IAAIvzD,EAAOozD,EAAGpzD,KACV22D,EAAWpD,EAAGoD,SACdgmH,EAAU38K,EAAKmF,MAAMw3K,QACzB,MAAO,CACHrnH,MAAO,KACPqnH,QAAShmH,EAAWinI,GAAejhB,GAAWkhB,GAAgBlhB,KAGtErsH,KAAM,SAAU8C,EAAIG,GAChB,IAAIvzD,EAAOozD,EAAGpzD,KACV22D,EAAWpD,EAAGoD,SACdxxD,EAAQnF,EAAKmF,MACbomB,EAAQpmB,EAAMomB,MAAOoxJ,EAAUx3K,EAAMw3K,QACrCxnG,EAAUhwE,EAAMgwE,QAAQnnE,QAAQ,SAAU,KAC1CkwL,EAAY3yK,EAAQ,WAAcmkC,GAAYnkC,GAAS,IAAO,GAClE,OAAIorC,EACO,CACHrB,MAAO,IACPqnH,QAASA,EAAU,IAAMA,EAAU,UAAajtH,GAAYylB,GAAW,IAAO+oH,EAAY,IAAM,MAGjG,CACH5oI,MAAO,KAAO6f,GAAW5pD,EAAQ,IAAMgmC,GAAMN,GAAkB1lC,IAAU,IAAM,IAC/EoxJ,QAASkhB,GAAgBlhB,KAGjCz7K,KAAM,SAAUkyD,EAAIG,GAChB,IAAIvzD,EAAOozD,EAAGpzD,KAAMvB,EAAS20D,EAAG30D,OAAQuvE,EAAK5a,EAAGzyD,MAAOA,OAAe,IAAPqtE,EAAgB,EAAIA,EAC/ErX,EAAWpD,EAAGoD,SACdrB,EAAQqB,EACN+mI,GAAaj/L,EAAO0R,MAAMxP,IAAS,GACnC+8L,GAAaj/L,EAAO0R,MAAMxP,EAAQ,GAAI,GACxCg8K,EAAUhmH,EACRinI,GAAe59L,EAAKmF,MAAMw3K,SAC1BkhB,GAAgB79L,EAAKmF,MAAMw3K,SACjC,MAAO,CACHrnH,MAAOA,EACPqnH,QAASA,IAGjBme,YAAa,SAAU1nI,GACnB,IAAIpzD,EAAOozD,EAAGpzD,KACd,MAAO,CACHgH,KAAMhH,EAAKwgB,cAInBo2B,KAAM,SAAUwc,EAAIG,GAChB,IAAIvzD,EAAOozD,EAAGpzD,KACV22D,EAAWpD,EAAGoD,SACdhkC,EAAU3yB,EAAK3B,KAAKwN,KACpB1G,EAAQnF,EAAKmF,MAAMsyK,UACnBukB,EAAU,IAAMrpK,EAChBspK,EAAW,KAAOtpK,EAAU,IAMhC,OALAhnB,OAAOotB,KAAK5zB,GAAO0E,SAAQ,SAAUkb,GAEjCi3K,GAAW,IAAMj3K,EAAW,KAAQ5f,EAAM4f,GAAU/W,QAAQ,KAAM,KAAO,OAE7EguL,GAAW,IACPh8L,EAAKmF,MAAM+hE,WACJ,CACHy1G,QAAShmH,EAAWqlI,EAAUC,GAG/B,CACHj1L,KAAM,GAAKg1L,EAAUh8L,EAAKmF,MAAMwyK,aAAeskB,KAIvDkC,GAAkB,CAClBx6H,OAAQ,CACJy6H,SAAS,EACTC,4BAA4B,GAEhCz6H,KAAM,CACFw6H,SAAS,EACTC,4BAA4B,GAEhCx6H,OAAQ,CACJu6H,SAAS,EACTC,4BAA4B,GAEhCn9L,KAAM,CACF+lJ,QAAQ,GAEZ32F,KAAM,KACN1Z,KAAM,MAEV,SAAS0nJ,GAAyBv2B,GAC9B,IAAIw2B,EAAqB,GACrB58K,EAAYhW,OAAOotB,KAAK4jK,IAe5B,OAdAh7K,EAAU9X,SAAQ,SAAUxL,GACxBkgM,EAAmBlgM,GAAQ,SAAUpB,EAAOw+L,GACxC,IAAI+C,EAAS7B,GAAgBt+L,GAC7B,GAAImgM,EAAQ,CACR,IAAIr1B,EAAYpB,EAAW1pK,GACvBo/L,EAASt0B,EACPA,EAAUsyB,EAAU,CAClBsC,QAAS9gM,EAAM8gM,UAEjB,GACN7B,GAAM79L,EAAM,CAAEpB,MAAOA,EAAOw+L,SAAUA,EAAUgC,OAAQA,SAI7Dc,EAEX,SAASE,GAAyB12B,GAC9B,IAAI22B,EAAqB,GACrBC,EAAYhzL,OAAOotB,KAAKolK,IAc5B,OAbAQ,EAAU90L,SAAQ,SAAUxL,GACxBqgM,EAAmBrgM,GAAQ,SAAUo9L,EAAU9kI,GAC3C,IAAIioI,EAAaT,GAAgB9/L,GAC7B8qK,EAAYpB,EAAW1pK,GAKvBwgM,EAAe11B,GAAasyB,IAAa1wI,EAAc4L,GACvD8mI,EAASoB,EAAe11B,EAAUsyB,EAAU,CAAE9kI,SAAUA,IAAc,GAC1E,OAAOlO,EAAWA,EAAW,GAAIg1I,GAASmB,OAG3CF,EAcX,SAASI,GAAmBtmB,GACxB,IAAIyiB,EAAuBtvL,OAAOotB,KAAKy/I,GACvCyiB,EAAqBpxL,SAAQ,SAAUxL,GACnC,IAAI0gM,EAAgBjB,GAAez/L,GAC/B2pK,EAAkBwQ,EAAiBn6K,GAEnCy/L,GAAez/L,GADf0gM,EACuB,SAAUtD,EAAUzzK,GAEvC,OADAA,EAAQ2mB,OAAS,WAAc,OAAOowJ,EAActD,EAAUzzK,IACvDggJ,EAAgByzB,EAAUzzK,IAIdggJ,SAEpBwQ,EAAiBn6K,MAE5B,IAAIkgM,EAAqBD,GAAyBR,IAC9CY,EAAqBD,GAAyBX,IAClD,MAAO,CACHS,mBAAoBA,EACpBG,mBAAoBA,GAI5B,IAAIM,GAAoC,WACpC,SAASA,EAAmB5rI,GACxB,IAAImrI,EAAqBnrI,EAAGmrI,mBAAoBG,EAAqBtrI,EAAGsrI,mBACxE51L,KAAKy1L,mBAAqBA,EAC1Bz1L,KAAK41L,mBAAqBA,EAC1B51L,KAAKwsD,MAAQ,GACbxsD,KAAKa,OAAS,GACdb,KAAKm2L,QAAS,EACdn2L,KAAKo2L,WAAY,EACjBp2L,KAAKuzL,aAAc,EACnBvzL,KAAKi1L,SAAU,EA0PnB,OAxPAiB,EAAmB/1L,UAAUk2L,iBAAmB,SAAUhsL,GACtD,IAAI9U,EAAO8U,EAAKhO,MAAM+hE,WAAa,OAAS/zD,EAAK9U,KAAKwN,KACtD,OAAO/C,KAAK41L,mBAAmBrgM,IAEnC2gM,EAAmB/1L,UAAUm2L,UAAY,WACrC,MAAO,UAAUt3L,KAAKgB,KAAKa,SAE/Bq1L,EAAmB/1L,UAAUo2L,SAAW,SAAUlsL,EAAMwjD,EAAUl4D,EAAQkC,GACtE,IAAIwoK,EAAYrgK,KAAKq2L,iBAAiBhsL,GACtC,GAAIg2J,EAAW,CACX,IAAI/1G,EAAK+1G,EAAU,CAAEnpK,KAAMmT,EAAM1U,OAAQA,EAAQkC,MAAOA,GAASg2D,GAAWrB,EAAQlC,EAAGkC,MAAOqnH,EAAUvpH,EAAGupH,QAC3G,OAAOA,GAAWrnH,EAEtB,MAAO,IAEX0pI,EAAmB/1L,UAAUk0L,WAAa,SAAUx+L,GAChD,IAAKmK,KAAKuzL,aAAevzL,KAAKm2L,OAAQ,CAOlC,GANKn2L,KAAKs2L,cACNt2L,KAAKa,QAAU,MAEdhL,IACDA,EAAO,GAEPA,EAAO,EAAG,CACV,IAAI2gM,EAAWx2L,KAAKwsD,MAChBvnC,EAAO,OAAOhnB,KAAKu4L,GACnBvxK,IACAuxK,EAAWA,EAASrgM,MAAM,EAAGqgM,EAASt7L,OAAS+pB,EAAK,GAAG/pB,SAE3D,IAAK,IAAItD,EAAI,EAAGA,EAAI/B,EAAM+B,GAAK,EAC3BoI,KAAKa,QAAU21L,EAAW,KAGlCx2L,KAAKm2L,QAAS,IAGtBD,EAAmB/1L,UAAUm0L,UAAY,SAAU9nI,EAAOiqI,EAAYv/L,EAAM+4L,GACxE,IAAIljJ,EAAM/sC,KAAKwsD,MACfxsD,KAAKozL,MAAMqD,GAAcjqI,GACzBxsD,KAAKwsD,OAASA,EACdyjI,IACAjwL,KAAKwsD,MAAQzf,EACb/sC,KAAKwzL,WAAWt8L,IAEpBg/L,EAAmB/1L,UAAU+zL,cAAgB,WACpCl0L,KAAKs2L,cACNt2L,KAAKa,QAAU,OAGvBq1L,EAAmB/1L,UAAUizL,MAAQ,SAAUx9L,QAC3B,IAAZA,IAAsBA,EAAU,IACpCoK,KAAKq0L,aACDr0L,KAAKwsD,OAASxsD,KAAKs2L,cACnBt2L,KAAKa,QAAUb,KAAKwsD,OAEpB52D,IACAoK,KAAKa,QAAUjL,IAGvBsgM,EAAmB/1L,UAAUqzL,WAAa,SAAUt8L,GAChD8I,KAAKm2L,OAASj/L,GAElBg/L,EAAmB/1L,UAAUjC,KAAO,SAAUA,EAAMw4L,QAChC,IAAZA,IAAsBA,GAAU,GAEpC,IADA,IAAI1rC,EAAQ9sJ,EAAKtE,MAAM,MACdhC,EAAI,EAAGA,EAAIozJ,EAAM9vJ,OAAQtD,GAAK,EACnCoI,KAAKozL,QACLpzL,KAAKa,QAAU61L,EAAUpuI,GAAS0iG,EAAMpzJ,IAAMozJ,EAAMpzJ,GAChDA,IAAMozJ,EAAM9vJ,OAAS,IACrB8E,KAAKa,QAAU,OAI3Bq1L,EAAmB/1L,UAAUw2L,aAAe,SAAUz/L,EAAMvB,EAAQkC,GAChE,IAAItC,EAAO2B,EAAK3B,KAAKwN,KACjBs9J,EAAYrgK,KAAKy1L,mBAAmBlgM,GACpCo9L,EAAW,CAAEz7L,KAAMA,EAAMvB,OAAQA,EAAQkC,MAAOA,GAChDX,EAAKmF,MAAMq3J,UACX1zJ,KAAKy1L,mBAAmB3nJ,KAAK9tC,KAAM2yL,GAE9BtyB,GACLA,EAAUrgK,KAAM2yL,IAGxBuD,EAAmB/1L,UAAUkzL,cAAgB,SAAU19L,GACnD,IAAIo9D,EAAQ/yD,KACR4Z,EAAS,GACTg9K,EAAW,GACXC,EAAW,SAAU3/L,EAAMmd,EAAGxc,GAC9B,IAAIwF,EAAQnG,EAAOA,EAAKmG,MAAQ,GAC5By5L,EAAUF,EACdA,EAAW,GAGX,IAAIG,EAAoB7/L,GACpBA,EAAK8G,QACLX,EAAM0hB,MAAK,SAAU1U,GACjB,IAAI2sL,EAAgBjkI,EAAMsjI,iBAAiBhsL,GACvC8iD,EAAO6pI,GAAiBA,IAC5B,OAAO7pI,GAAQA,EAAKooI,8BAE5B,GAAIwB,GAAqB7/L,GAAQA,EAAKgH,KAAM,CACxC,IAAIosD,EAAK,qBAAqBrsD,KAAK/G,EAAKgH,MAAO+4L,EAAO3sI,EAAG,GAAIjgD,EAAOigD,EAAG,GAAI4sI,EAAQ5sI,EAAG,GACtFwsI,GAAWG,EACXL,EAAWM,GACPD,GAAQC,KAGRhgM,EAAOmT,EAAOnT,EAAK4b,SAASzI,GAAQ,KAC/BnT,IACDmG,EAAQuc,IAapB,IATA,IAAIu9K,EAAW95L,EAAMnC,QAAU4tD,GAAOzrD,GAClC25L,EAAgBG,GAAYpkI,EAAMsjI,iBAAiBc,GACnDj6L,EAAW85L,GAAiBA,IAC5BI,EAAWl6L,IAAgC,IAApBA,EAASihJ,OAChC5/I,EAAMlB,EAAMnC,QAAUk8L,EAAW,EAAI,GAKhCx/L,EAAI,EAAGA,EAAI2G,EAAK3G,GAAK,EAAG,CACzByS,EAAOhN,EAAMzF,GACjB,GAAIsF,IAAaA,EAASo4L,QACtB,MAEJ,IAAK,IAAIxpL,EAAI,EAAGA,EAAI8N,EAAO1e,OAAQ4Q,GAAK,EAAG,CACvC,IAAItG,EAAQoU,EAAO9N,GACnB,GAAI5O,IAAaA,EAASo4L,QACtB,MAEJ,GAAIjrL,EAAKK,GAAGlF,GAAQ,CAEZ5N,EAAIkU,EACJzO,EAAQA,EACHlH,MAAM,EAAG2V,GACT3E,OAAOkD,GACPlD,OAAO9J,EAAMlH,MAAM2V,EAAGlU,IACtBuP,OAAO9J,EAAMlH,MAAMyB,EAAI,EAAG2G,IAE1BuN,EAAIlU,IACTyF,EAAQA,EACHlH,MAAM,EAAGyB,GACTuP,OAAO9J,EAAMlH,MAAMyB,EAAI,EAAGkU,IAC1B3E,OAAOkD,GACPlD,OAAO9J,EAAMlH,MAAM2V,EAAGvN,KAE/B,QAKZ,IAAI4qB,EAAO,EACX,MAAOA,EAAO7pB,KAAKqL,IAAIiP,EAAO1e,OAAQqD,IAAQlB,EAAM8rB,GAAMze,GAAGkP,EAAOuP,IAChEA,GAAQ,EAGZ,MAAOA,EAAOvP,EAAO1e,OAAQ,CACzB,IAAIm8L,EAAcz9K,EAAOpK,MACrB6nL,GACAtkI,EAAM70D,KAAK60D,EAAMwjI,SAASc,GAAa,EAAO1hM,EAAQkC,IAAQ,GAQtE,GAJIi/L,GACA/jI,EAAM70D,KAAK44L,GAGX5/L,EAAM,CACN,MAAO0iB,EAAO1e,OAASqD,EAAK,CACpB8L,EAAOhN,EAAMuc,EAAO1e,QACxB0e,EAAOpe,KAAK6O,GACZ0oD,EAAM70D,KAAK60D,EAAMwjI,SAASlsL,GAAM,EAAM1U,EAAQkC,IAAQ,GAItDu/L,GAAYlgM,EAAK8G,OACjB+0D,EAAM70D,KAAK60D,EAAMwjI,SAASY,GAAU,EAAMxhM,EAAQkC,GAC9CX,EAAKgH,KACL60D,EAAMwjI,SAASY,GAAU,EAAOxhM,EAAQkC,EAAQ,IAAI,GAGxDk7D,EAAM4jI,aAAaz/L,EAAMvB,EAAQkC,KAI7ClC,EAAOoL,QAAQ81L,GACfA,EAAS,KAAM,KAAMlhM,EAAO6B,aAMhC0+L,EAAmB/1L,UAAUo0L,YAAc,SAAUr9L,EAAMs1D,EAAO8qI,GAC9D,IACIhtI,EADAyI,EAAQ/yD,KAERA,KAAKm2L,QAAUn2L,KAAKm2L,OAAO5gM,OAAS2B,EAAK3B,KACzCyK,KAAKq0L,WAAW,GAEXr0L,KAAKo2L,WACVp2L,KAAKq0L,WAAW,GAEpB,IAAIzhC,EAAoC,QAA3BtoG,EAAKpzD,EAAKmF,MAAMu2J,aAA0B,IAAPtoG,GAAgBA,EAC5DitI,EAAYv3L,KAAKo2L,UACrBp2L,KAAKo2L,UAAYxjC,EACjB17J,EAAK6J,SAAQ,SAAUsG,EAAOgN,EAAGxc,GACzBA,GAAS+6J,GACT7/F,EAAMshI,WAAW,GAErBthI,EAAMuhI,UAAU9nI,EAAO8qI,EAAaz/L,GAAQX,GAAM,WAAc,OAAO67D,EAAM4jI,aAAatvL,EAAOnQ,EAAMW,SAE3GmI,KAAKo2L,UAAYmB,GAErBrB,EAAmB/1L,UAAUu0L,iBAAmB,SAAUx9L,GACtD,IAAI67D,EAAQ/yD,KACZA,KAAKuzL,aAAc,EACnBvzL,KAAKi1L,SAAU,EACf/9L,EAAK6J,SAAQ,SAAUsG,EAAOgN,EAAGxc,GAC7B,GAAIivD,GAAS,CAAC,aAAc,eAAgBz/C,EAAM9R,KAAKwN,MACnDgwD,EAAM4jI,aAAatvL,EAAOnQ,EAAMW,GAChCk7D,EAAMojI,QAAS,OAIf,GADApjI,EAAMsgI,cAAchsL,GAChBxP,EAAQX,EAAKM,WAAa,EAAG,CAC7B,IAAIggM,EAAYtgM,EAAKmQ,MAAMxP,EAAQ,GACP,cAAxB2/L,EAAUjiM,KAAKwN,MACfgwD,EAAMqgI,MAAM,YAK5BpzL,KAAKuzL,aAAc,EACnBvzL,KAAKi1L,SAAU,GAEnBiB,EAAmB/1L,UAAU6yL,YAAc,SAAUr9L,EAAQk9L,GACzD,IAAI9/H,EAAQ/yD,KAQZ,OAPArK,EAAOoL,SAAQ,SAAU7J,EAAMmd,EAAGxc,GAE9B,GADAk7D,EAAM4jI,aAAaz/L,EAAMvB,EAAQkC,IACT,OAAnBg7L,QAA8C,IAAnBA,OAA4B,EAASA,EAAe37L,QAAUA,EAAM,CAChG,IAAI2oE,EAAY9M,EAAMlyD,OAAOjH,MAAM,MACnCi5L,EAAeE,aAAa,CAAClzH,EAAU3kE,OAAQ4tD,GAAO+W,GAAW3kE,OAAS,QAG3E8E,KAAKa,QAETq1L,EApQ4B,GAuQnCuB,GAA2B,WAC3B,SAASA,EAAUlzL,EAAQywL,EAAgB0C,EAAkB5kI,GACzD,IAAIC,EAAQ/yD,KACZA,KAAK+yL,aAAe,SAAUn8L,GAC1Bm8D,EAAM4kI,wBAA0B/gM,GAEpCoJ,KAAKuE,OAASA,EACdvE,KAAK8yD,aAAeA,EACpB9yD,KAAK43L,YAAc,KACnB53L,KAAK23L,wBAA0B,KAC/B33L,KAAK0xL,eAAiBQ,GAAmBwF,GACzC13L,KAAKg1L,eAAiBgB,GAAmBhB,GAAkB,IAC3Dh1L,KAAK8yD,aAAaM,OAAO,kBAAkB,SAAUl8D,GAAQ,OAAQ67D,EAAM6kI,YAAc1gM,KAkB7F,OAhBAugM,EAAUt3L,UAAU03L,aAAe,WAC/B,OAAO73L,KAAK23L,yBAEhBF,EAAUt3L,UAAU23L,kBAAoB,WACpC,MAAO,CAAE5gM,KAAM8I,KAAK43L,YAAa7E,aAAc/yL,KAAK+yL,eAExD0E,EAAUt3L,UAAU43L,eAAiB,SAAUhtI,GAC3C,IAAI52D,EAAQ,IAAIo+L,GAAmBvyL,KAAKuE,OAAQvE,KAAK0xL,gBACrD,OAAOv9L,EAAM6+L,YAAYjoI,EAAQ/qD,KAAK83L,sBAE1CL,EAAUt3L,UAAU63L,eAAiB,SAAUC,GAC3C,IAAI9jM,EAAQ,IAAI+hM,GAAmBl2L,KAAKg1L,gBACpCkD,EAAe/jM,EAAM6+L,YAAYiF,EAAQj4L,KAAK83L,qBAElD,OADAI,EAAel4L,KAAK8yD,aAAaggH,WAAW,iCAAkColB,GACvEA,GAEJT,EA9BmB,GAiC9B,SAASU,GAAW5pK,EAAQukC,EAAcxN,GACtC,IAAI8yI,EAAU,CAAEvoK,OAAQ,YAAQpF,UAAW,eAAWO,cAAe,oBACjEqtK,EAAS,CAAE/+I,WAAY,gBAAYM,cAAe,oBAClD0+I,EAAU,CAAE/lL,SAAU,eACtB2M,EAAU,CAAE4zC,aAAcA,EAAcxN,gBAAiBA,EAAiB8yI,QAASA,EAASC,OAAQA,EAAQC,QAASA,EAASzb,KAAMA,IACxI,GAAI/7H,EAAUvyB,GAAS,CACnB,IAAIgqK,EAAWhqK,EAAO,GAAI+7B,EAAK/7B,EAAO,GAAIjR,OAAiB,IAAPgtC,EAAgB,GAAKA,EACzE,OAAOiuI,EAASr5K,EAAS5B,GAE7B,OAAOiR,EAAOrP,GAElB,SAASs5K,GAAcpqK,EAAS0kC,EAAcxN,GAE1C,OADAwN,EAAaM,OAAO,+BAAgC4lH,KAChC,OAAZ5qJ,QAAgC,IAAZA,EAAqBA,EAAU,IAAIjT,QAAO,SAAUquC,EAAKj7B,GACjF,IAAIkqK,EAAmBN,GAAW5pK,EAAQukC,EAAcxN,GACxD,IAAKmzI,EACD,MAAM,IAAI32L,MAAM,qDAEpB,IAAI42L,EAAkBD,EAAiBC,gBAAiBC,EAAkBF,EAAiBE,gBAAiBC,EAAsBH,EAAiBG,oBAAqBC,EAAkBJ,EAAiBI,gBAAiBC,EAAiBL,EAAiBK,eAAgBC,EAAmBN,EAAiBM,iBAAkBC,EAAmBP,EAAiBO,iBAAkBC,EAAkBR,EAAiBQ,gBAAiBC,EAAeT,EAAiBS,aA4B9c,OA3BIP,IACAnvI,EAAImvI,gBAAkB1vI,GAAeO,EAAImvI,gBAAiBA,IAE1DC,IACApvI,EAAIovI,oBAAsB3vI,GAAeO,EAAIovI,oBAAqBA,IAElEC,IACArvI,EAAIokB,UAAYpkB,EAAIokB,UAAUzmE,OAAO0xL,IAErCC,IACAtvI,EAAI8jI,UAAY9jI,EAAI8jI,UAAUnmL,OAAO2xL,IAErCC,IACAvvI,EAAI+jI,YAAc5tI,EAAWA,EAAW,GAAI6J,EAAI+jI,aAAcwL,IAE9DC,IACAxvI,EAAI2mI,WAAaxwI,EAAWA,EAAW,GAAI6J,EAAI2mI,YAAa6I,IAE5DC,IACAzvI,EAAI4mI,WAAazwI,EAAWA,EAAW,GAAI6J,EAAI4mI,YAAa6I,IAE5DC,IACA1vI,EAAI0vI,aAAe1vI,EAAI0vI,aAAa/xL,OAAO+xL,IAE3CR,IACAlvI,EAAIkvI,gBAAkB/4I,EAAWA,EAAW,GAAI6J,EAAIkvI,iBAAkBA,IAEnElvI,IACR,CACCmvI,gBAAiB,GACjBC,oBAAqB,GACrBhrH,UAAW,GACX0/G,UAAW,GACXC,YAAa,GACb4C,WAAY,GACZC,WAAY,GACZ8I,aAAc,GACdR,gBAAiB,KAIzB,IAAIS,GAAiB,YACjBC,GAA0B,qBAC1BC,GAA0B,UAC9B,SAASC,GAA2BvqB,GAChC,CAAC,YAAa,cAAchuK,SAAQ,SAAUkuK,GACtCF,EAAaE,IAEbpsK,OAAOotB,KAAK8+I,EAAaE,IAAWluK,SAAQ,SAAUxL,GAAQ,OAAO04K,GAA+B14K,SAwBhH,IAAIgkM,GAAqC,WACrC,SAASA,EAAoBj8K,GACzB,IAAIy1C,EAAQ/yD,KACZA,KAAKsd,QAAUojC,EAAS,CACpBoH,eAAgB,KAChByoG,mBAAmB,EACnBwhB,mBAAoB,KACpBpjB,qBAAqB,EACrB6qC,oBAAqB,KACrB3lC,aAAa,EACbvuG,iBAAiB,EACjBm0I,MAAO,SACRn8K,GACHtd,KAAK8yD,aAAe,IAAIk8H,GACxB,IAAIlnI,EAAiBF,GAAsB5nD,KAAKsd,QAAQwqC,gBACpDwC,EAAKkuI,GAAcx4L,KAAKsd,QAAQ8Q,QAASpuB,KAAK8yD,aAAc9yD,KAAKsd,QAAQgoC,kBAAoB,GAAIqzI,EAAkBruI,EAAGquI,gBAAiBD,EAAkBpuI,EAAGouI,gBAC5JjuI,EAAKzqD,KAAKsd,QAASy0J,EAAqBtnH,EAAGsnH,mBAAoBxhB,EAAoB9lG,EAAG8lG,kBAAmB5B,EAAsBlkG,EAAGkkG,oBAAqBkF,EAAcppG,EAAGopG,YAAa2lC,EAAsB/uI,EAAG+uI,oBAC9ME,EAAkB,CAClB5xI,eAAgBA,EAChBiqH,mBAAoBpyH,EAAWA,EAAW,GAAIg5I,GAAkB5mB,GAChExhB,kBAAmBA,EACnB5B,oBAAqBA,EACrBkF,YAAaA,EACb2a,UAAWgrB,GAAuBtrB,IAEtCorB,GAA2BI,EAAgB3nB,oBACvC/xK,KAAKsd,QAAQiyD,QACbjvB,EAAuBtgD,KAAKsd,QAAQiyD,QAAQ,SAAU0gH,EAAIpxL,GACtDk0D,EAAMsd,GAAGxxE,EAAKoxL,MAGtB,IAAI/qH,EAAKllE,KAAKsd,QAASuoC,EAAKqf,EAAGrf,GAAI8zI,EAAez0H,EAAGy0H,aAAcF,EAAQv0H,EAAGu0H,MAC1EG,EAAe/zI,EAAG7V,UACR,UAAVypJ,GACA5zI,EAAG3mB,UAAUxwB,IAAI0c,GAAIquK,IAEzB5zI,EAAG7V,UAAY,GACfhwC,KAAKw+D,UAAY,IAAIi9F,GAAU,GAAI,CAC/BhE,wBAAyB,CAAC,KAAM,OAChClH,kBAAmBA,EACnB5B,oBAAqBA,EACrB2I,qBAAqB,EACrBzD,YAAaA,EACbrD,aAAckoC,IAElB14L,KAAK65L,QAAU,IAAIhoB,GAAgB7xK,KAAK8yD,aAAcnT,EAAWA,EAAW,GAAI+5I,GAAkB,CAAE5nB,UAAU,KAC9GnhG,GAAK3wE,KAAK65L,QAAQ9oB,eAAgB,YAAa/wK,KAAK0pE,WAAWvrD,KAAKne,OAChE25L,EACA35L,KAAK8uE,YAAY6qH,GAEZC,GACL55L,KAAK65L,QAAQtmB,QAAQqmB,GAEzB/zI,EAAGnhC,YAAY1kB,KAAK65L,QAAQ9oB,gBAC5B/wK,KAAK8yD,aAAawB,KAAK,OAAQt0D,MAiFnC,OA1EAu5L,EAAoBp5L,UAAUupE,WAAa,SAAU/U,GACjD,IAAIz8B,EAAUy8B,EAAGx/D,OACbyW,EAAQ65B,iBAAiBvN,EAAS,YACjCA,EAAQiI,aAAai5J,KACtBlhK,EAAQiI,aAAag5J,KACrBtpI,GAAgBjkD,EAAO+oD,EAAG7E,QAAS6E,EAAG5E,UACtCyB,GAAYt5B,EAASmhK,KAO7BE,EAAoBp5L,UAAU2uE,YAAc,SAAUC,GAClD,IAAIlP,EAAY7/D,KAAKw+D,UAAUsB,eAC3B5kE,EAAS2kE,EAAU3kE,OACnB+vJ,EAAWniG,GAAO+W,GAClBi6H,EAAe,CAAC5+L,EAAQ+vJ,EAAS/vJ,OAAS,GAC1CyjE,EAAa3+D,KAAKw+D,UAAUoQ,aAAa,CAAC,EAAG,GAAIkrH,EAAc/qH,GAAY,IAC/E/uE,KAAK8yD,aAAawB,KAAK,gBAAiBqK,IAO5C46H,EAAoBp5L,UAAUkwE,GAAK,SAAU96E,EAAM29C,GAC/ClzC,KAAK8yD,aAAaM,OAAO79D,EAAM29C,IAMnCqmJ,EAAoBp5L,UAAU4xB,IAAM,SAAUx8B,GAC1CyK,KAAK8yD,aAAaU,mBAAmBj+D,IAOzCgkM,EAAoBp5L,UAAUstK,QAAU,SAAUl4K,EAAM29C,GACpDlzC,KAAK8yD,aAAaU,mBAAmBj+D,GACrCyK,KAAK8yD,aAAaM,OAAO79D,EAAM29C,IAKnCqmJ,EAAoBp5L,UAAUs8B,QAAU,WACpCyzC,GAAMlwE,KAAK65L,QAAQh0I,GAAI,YAAa7lD,KAAK0pE,WAAWvrD,KAAKne,OACzDA,KAAK65L,QAAQp9J,UACbz8B,KAAK8yD,aAAawB,KAAK,YAM3BilI,EAAoBp5L,UAAU2xK,SAAW,WACrC,OAAO,GAMXynB,EAAoBp5L,UAAU45L,eAAiB,WAC3C,OAAO,GAMXR,EAAoBp5L,UAAU65L,cAAgB,WAC1C,OAAO,GAEJT,EAvI6B,GA0IxC,SAASU,GAAS/iM,GACd,OAAOA,aAAgB,UAE3B,SAAS0qJ,GAAYrsJ,GACjB,IAAI2kM,EAAiB,CACjB,WACA,aACA,aACA,cACA,WACA,YACA,UACA,OACA,SACA,SACA,OACA,QACA,QACA,YACA,YACA,WACA,gBACA,iBAEJ,OAAOpzI,GAASozI,EAAgB3kM,GAEpC,SAAS4kM,GAAiBjjM,GACtB,IAAImF,EAAQnF,EAAKmF,MAAO9G,EAAO2B,EAAK3B,KAChC6G,EAAW7G,EAAKwN,KAChBq3L,EAAa,CACb7kM,KAAM6G,EACNi+L,aAAa,EACb/tI,SAAUs1F,GAAYxlJ,IAAa69L,GAAS/iM,GAAQA,EAAKwgB,YAAc,MAEvE4iL,EAAc,CACdz8H,QAAS,CAAE7uD,MAAO3S,EAAM2S,OACxBw4C,KAAM,CAAE+E,YAAalwD,EAAMgwE,QAAS5pD,MAAOpmB,EAAMomB,OACjDq7C,MAAO,CAAEvR,YAAalwD,EAAM+3D,UAC5B2J,UAAW,CAAE5Q,KAAM9wD,EAAMgkL,UACzBx2G,WAAY,CAAEt0E,KAAM,OAAQk2D,SAAU,CAAEl2D,KAAM,WAC9Cu0E,YAAa,CAAEv0E,KAAM,OAAQk2D,SAAU,CAAEl2D,KAAM,UAAWyG,MAAOK,EAAMspH,QACvEkyC,SAAU,CAAEtiK,KAAM,OAAQk2D,SAAU,CAAEkS,KAAMthE,EAAMshE,KAAMgM,QAASttE,EAAMstE,UACvEuwG,cAAe,CAAE3kL,KAAM,YAAa2+J,SAAU,OAAQO,MAAOp4J,EAAMo4J,OACnE2lB,cAAe,CAAE7kL,KAAM,YAAa2+J,SAAU,OAAQO,MAAOp4J,EAAMo4J,OACnEx2F,YAAa,CAAE9Q,KAAM9wD,EAAM8wD,OAE3BwlI,EAAW2H,EAAYl+L,GACvBk0C,EAAaqP,EAAWA,EAAW,GAAIy6I,GAAazH,GAEpDroI,EAAKpzD,EAAKmF,MAAOsyK,EAAYrkH,EAAGqkH,UAAWE,EAAevkH,EAAGukH,aACjE,OAAIF,EACOhvH,EAAWA,EAAW,GAAIrP,GAAa,CAAEj0C,MAAOsyK,EAAWE,aAAcA,IAE7Ev+H,EAGX,IAAIiqJ,GAAiB,CACjBrH,QAAS,SAAUsH,EAAO1kK,GACtB,IAAIw0B,EAAKkwI,EAAO3wK,EAAUygC,EAAGzgC,QAASy8C,EAAahc,EAAGgc,WAAYh2B,EAAaga,EAAGha,WAC9EuV,EAAK98B,SAASiB,cAAcH,GAC5BxtB,EAAQ,GACRiqE,IACAzgB,EAAG9d,UAAYu+B,EAAW3rE,KAAK,MAE/B21C,IACAj0C,EAAQsjD,EAAWA,EAAW,GAAItjD,GAAQi0C,IAE9C6hB,GAAc91D,EAAOwpD,GACrB/vB,EAAMt6B,KAAKqqD,IAEfstI,SAAU,SAAU9+K,EAAGyhB,GACnB,GAAIA,EAAM56B,OAAS,EAAG,CAClB,IAAI2qD,EAAK/vB,EAAMtmB,MACfs5C,GAAOhzB,GAAOpR,YAAYmhC,KAGlC/X,KAAM,SAAU0sJ,EAAO1kK,GACnBgzB,GAAOhzB,GAAOq9I,mBAAmB,YAAaqnB,EAAM5kM,UAExDsI,KAAM,SAAUs8L,EAAO1kK,GACnB,IAAI3N,EAAWY,SAASlC,eAAe2zK,EAAM5kM,SAC7CkzD,GAAOhzB,GAAOpR,YAAYyD,KAG9BsyK,GAAgC,WAChC,SAASA,EAAe3yI,EAAgB4yI,GACpC,IAAIz7B,EAAawQ,GAAwB3nH,EAAgB4yI,GACrDC,EAAsBh7I,EAAWA,EAAW,GAAI+6I,EAAehnC,WAAYgnC,EAAet8H,YAE9Fp+D,KAAK46L,oBAAsB/3L,OAAOotB,KAAKyqK,GAAgBvzL,OAAOtE,OAAOotB,KAAK0qK,IAC1E36L,KAAKiyK,SAAW,IAAIlS,GAAS,CACzBF,KAAK,EACLZ,WAAYt/G,EAAWA,EAAW,GAAIs/G,GAAa07B,KAEvD36L,KAAKi/J,WAAaj/J,KAAKiyK,SAAS1R,gBAiCpC,OA/BAk6B,EAAet6L,UAAU06L,eAAiB,SAAU3jM,GAChD,IAAIkjM,EAAaD,GAAiBjjM,GAC9BgoB,EAAU,CACV2uC,UAAU,EACV8yG,OAAMs5B,GAAS/iM,IAAQA,EAAKqP,OAC5B+W,QAAStd,KAAKiyK,SAASzR,aACvBzB,gBAAiB,WAAc,OAAQk7B,GAAS/iM,GAAQA,EAAKwgB,YAAc,IAC3EsnJ,aAAc,WAAc,OAAO,IAEnCqB,EAAYrgK,KAAKi/J,WAAW/nK,EAAK3B,KAAKwN,MACtC69J,EAAYP,EAAU+5B,EAAYl7K,EAASlf,KAAKi/J,YAChD/kJ,EAAS4mC,EAAU8/G,GAAaA,EAAY,CAACA,GAMjD,OALIhf,GAAY1qJ,EAAK3B,KAAKwN,OAAS7L,EAAKmF,MAAM+hE,cAC1Cl/C,EAAQ2uC,UAAW,EACnB3zC,EAAO1e,KAAK,CAAEjG,KAAM,OAAQK,QAASqkM,GAAS/iM,GAAQA,EAAKwgB,YAAc,KACzEwC,EAASA,EAAO/S,OAAOk5J,EAAU+5B,EAAYl7K,EAASlf,KAAKi/J,cAExD/kJ,GAEXugL,EAAet6L,UAAUg/K,UAAY,SAAUjoL,GAC3C,IAAIgjB,EAASla,KAAK66L,eAAe3jM,GAC7B4+B,EAAQ,GAEZ,OADA5b,EAAOnZ,SAAQ,SAAUy5L,GAAS,OAAOD,GAAeC,EAAMjlM,MAAMilM,EAAO1kK,MACpEA,EAAM,IAEjB2kK,EAAet6L,UAAUuuK,aAAe,SAAU3rK,GAC9C,OAAI+jD,GAAS9mD,KAAK46L,oBAAqB73L,GAC5B/C,KAAKm/K,UAAUhhK,KAAKne,MAExB,MAEJy6L,EA3CwB,GA8C/BK,GAAiB,IACjBC,GAA8B,GAC9BC,GAAmB,KACnBC,GAAe,KACnB,SAASC,GAAIC,EAAgB7wI,GACzB,IAAI8wI,EAAgB9wI,EAAG8wI,cAAeC,EAAoB/wI,EAAG+wI,kBACzDJ,IACAvpJ,aAAaupJ,IAEjBG,EAAcD,GACdF,GAAe3yJ,YAAW,WACtB+yJ,MACDN,IAEP,SAASO,GAAQC,EAAcC,EAAiBC,GAC5C,IAAIr7L,EAAOo7L,EAAkBD,EACzBG,EAAYhvK,KAAKC,MACjBr2B,EAAO,WACP,IAEIqlM,EAFAC,EAAWlvK,KAAKC,MAChBkqK,GAAY+E,EAAWF,GAAaZ,GAEpCE,IACAtpJ,aAAaspJ,IAEbnE,EAAW,GACX8E,EAAaJ,EAAen7L,EAAOd,KAAKu8L,KAAM,EAAIhF,GAAYv3L,KAAKw8L,GAAM,GACzEZ,GAAI57L,KAAKy8L,KAAKJ,GAAaF,GAC3BT,GAAmB1yJ,WAAWhyC,EAAM,KAGpC4kM,GAAIM,EAAiBC,GACrBT,GAAmB,OAG3B1kM,IAGJ,IAAI0lM,GAAwB,GACxBC,GAA4B,WAC5B,SAASA,EAAWC,EAAUrC,EAAS/mI,GACnC9yD,KAAKm8L,sBAAwB,KAC7Bn8L,KAAKo8L,uBAAyB,KAC9Bp8L,KAAKq8L,cAAgB,KACrBr8L,KAAK4Z,QAAS,EACd5Z,KAAKu1D,MAAQ,KACb,IAAI+mI,EAAczC,EAAQ9oB,eAAgBwrB,EAAY1C,EAAQh0I,GAC9D7lD,KAAKs8L,YAAcA,EACnBt8L,KAAKu8L,UAAYA,EACjBv8L,KAAKk8L,SAAWA,EAChBl8L,KAAK0zD,WAAawoI,EAASxnM,KAC3BsL,KAAKw+D,UAAY09H,EAAS9sH,eAC1BpvE,KAAK8yD,aAAeA,EACpB9yD,KAAKw8L,qBAkJT,OAhJAP,EAAW97L,UAAUq8L,mBAAqB,WACtC,IAAIzpI,EAAQ/yD,KACZA,KAAK8yD,aAAaM,OAAO,sBAAsB,WAC3CL,EAAMkD,aAINlD,EAAMwC,MAAQjtB,YAAW,WACrByqB,EAAM0pI,sBAAqB,KAC5B,QAEPz8L,KAAK8yD,aAAaM,OAAO,UAAU,SAAU79D,EAAMmiD,GAC3Cqb,EAAMn5C,SACO,WAATrkB,GAA6C,WAAxBw9D,EAAMspI,cAC3BtpI,EAAM0pI,uBAEQ,YAATlnM,GAA8C,YAAxBw9D,EAAMspI,eACjCtpI,EAAM2pI,oBAAoBhlJ,OAItC13C,KAAK8yD,aAAaM,OAAO,oBAAoB,SAAUx5C,GACnDm5C,EAAMn5C,OAASA,MAGvBqiL,EAAW97L,UAAUw8L,eAAiB,SAAU1mM,EAAKwpE,GACjD,IAAIm9H,EAAY3mM,EAAIL,QAAQud,UAAUssD,EAAQ7oE,KAC1CuoE,EAAOy9H,EAAU/kM,MACrB,OAAOmI,KAAKw+D,UAAU8D,oBAAoBnD,EAAO,IAErD88H,EAAW97L,UAAU08L,uBAAyB,WAC1C,IAAIjmM,EAAMoJ,KAAKk8L,SAASzhK,eACpBqiK,EAAc98L,KAAKw+D,UAAU8D,oBAAoB1rE,EAAI,GAAG,IACxDmmM,EAAgB/8L,KAAKu8L,UAAU/oK,aAC/BqyB,EAAKirH,GAAiB9wK,KAAKs8L,YAAaQ,GAAaj3I,GACrDm3I,EAAiB1sB,GAAkBzqH,EAAI7lD,KAAKs8L,cAAgBz2I,EAAGkM,UAC/D2/G,EAAa7rH,EAAGryB,aAEhBgoK,EAAkBwB,EAAiBtrB,EAA6B,GAAhBqrB,EACpD/8L,KAAKm8L,sBAAwB,KAC7B,IAAI/7L,EAAOylD,EAAGjyB,wBAAwB3kB,IAAMjP,KAAKu8L,UAAU3oK,wBAAwB3kB,IACnF,OAAO7O,EAAO28L,EAAgB,KAAOvB,GAEzCS,EAAW97L,UAAUs8L,qBAAuB,SAAUQ,QAClC,IAAZA,IAAsBA,GAAU,GACpC,IAAI3yI,EAAKtqD,KAAM0zD,EAAapJ,EAAGoJ,WAAY6oI,EAAYjyI,EAAGiyI,UAAWD,EAAchyI,EAAGgyI,YAClF7xI,EAAKiJ,EAAWz0C,IAAI2U,wBAAyBR,EAAOq3B,EAAGr3B,KAAMnkB,EAAMw7C,EAAGx7C,IACtEwwD,EAAU/L,EAAWp7B,YAAY,CAAElF,KAAMA,EAAMnkB,IAAKA,IACpDhZ,EAAMy9D,EAAWv/D,MAAM8B,IACvB6mM,EAAc98L,KAAK28L,eAAe1mM,EAAKwpE,GAC3C,GAAKq9H,IAAe1xI,GAAW0xI,GAA/B,CAGA,IAAIvB,EAAegB,EAAUrnK,UACzBgwC,EAAKxR,EAAWz0C,IAAKiW,EAAYgwC,EAAGhwC,UAAWgoK,EAAeh4H,EAAGg4H,aAAc1pK,EAAe0xC,EAAG1xC,aAAcqI,EAAWqpC,EAAGrpC,SAC7HshK,EAAcD,EAAehoK,GAAa1B,EAAewoK,GACzDR,EAAkB2B,EAAcZ,EAAUW,aAAe,EAC7D,GAAIhoK,IAAcioK,EAAa,CAC3B,GAAIF,EAAS,CACT,IAAIG,EAAqBp9L,KAAK68L,yBAC9B,IAAKO,EACD,OAEJ5B,EAAkB4B,MAEjB,CACD,IAAIh4H,EAAK0rG,GAAiB9wK,KAAKs8L,YAAaQ,GAAcj3I,EAAKuf,EAAGvf,GAAIkF,EAASqa,EAAGra,OAC9Esa,EAAK8qG,GAAyBl6K,EAAK80D,EAAQlvB,GAAW5H,EAASoxC,EAAGpxC,OAAQN,EAAO0xC,EAAG1xC,KACpFqpK,EAAiB1sB,GAAkBzqH,EAAIy2I,IAAgBz2I,EAAGkM,UAC1D2/G,EAAa7rH,EAAGryB,aAChBy7F,EAAQhgH,EAAM0kB,EAAK1kB,IAAM3P,KAAKqL,KAAKsE,EAAM0kB,EAAK1kB,KAAOglB,EAAQ,GAAK,EACtEunK,EAAkBwB,EAAiBtrB,EAAaziD,EAEpDusE,EAAkBx7L,KAAKq9L,qBAAqB,SAAUnoK,EAAWsmK,EAAiBD,GAClFv7L,KAAKm8L,sBAAwBjnK,EAE7BsmK,IAAoBD,GACpBv7L,KAAKk7L,IAAI,SAAUM,EAAiBD,KAG5CU,EAAW97L,UAAUu8L,oBAAsB,SAAU1qK,GACjD,IAAIs4B,EAAKtqD,KAAMw+D,EAAYlU,EAAGkU,UAAW9K,EAAapJ,EAAGoJ,WAAY4oI,EAAchyI,EAAGgyI,YAAaC,EAAYjyI,EAAGiyI,UAC9Gt9K,EAAMy0C,EAAWz0C,IAAK9qB,EAAQu/D,EAAWv/D,MACzC+gC,EAAYqnK,EAAUrnK,UAAW1B,EAAe+oK,EAAU/oK,aAAc0pK,EAAeX,EAAUW,aACjGC,EAAcD,EAAehoK,GAAa1B,EAC1C+nK,EAAet8K,EAAIiW,UACnBsmK,EAAkB2B,EAAcl+K,EAAIi+K,aAAe,EACvD,GAAIhoK,GAAalD,IAAemrK,EAAa,CAEzC,GADAnrK,EAAaq+I,GAAqBr+I,EAAYsqK,IACzCtqK,EAAW3M,aAAa,eACzB,OAEJ,IAAIwW,EAAW5c,EAAI4c,SACf01I,EAAW52J,OAAOqX,EAAW3M,aAAa,gBAC1ColC,EAAKqmH,GAAiB9wK,KAAKs8L,YAAa99H,EAAUw8F,aAAauW,IAAYxmH,EAASN,EAAGM,OAAQlF,EAAK4E,EAAG5E,GACvGy3I,EAAkBxyI,GAAeC,GACrCywI,EAAkB3/J,EAASyhK,EAAkB,GAAGvrI,UAChD,IAAI99B,EAASk8I,GAAyBh8K,EAAM8B,IAAK80D,EAAQlvB,GAAU5H,OAC/DixC,EAAKosG,GAAqBzrH,EAAIy2I,EAAa/qB,GAAWG,EAAaxsG,EAAGwsG,WAAY3/G,EAAYmT,EAAGnT,UACrGypI,GAAmB5qB,GAAiB17I,EAAW68B,EAAW2/G,EAAYz9I,GACtEunK,EAAkBx7L,KAAKq9L,qBAAqB,UAAWnoK,EAAWsmK,EAAiBD,GACnFv7L,KAAKo8L,uBAAyBlnK,EAE9BsmK,IAAoBD,GACpBv7L,KAAKk7L,IAAI,UAAWM,EAAiBD,IAG7CU,EAAW97L,UAAUk9L,qBAAuB,SAAUhnM,EAAM6+B,EAAWsmK,EAAiBD,GACpF,IAAIgC,EAA2B,WAATlnM,EAAoB2J,KAAKm8L,sBAAwBn8L,KAAKo8L,uBAC5E,OAAwB,OAApBmB,EACO/B,EAEJ+B,EAAkBroK,EACnB51B,KAAKiG,IAAIi2L,EAAiBD,GAC1Bj8L,KAAKqL,IAAI6wL,EAAiBD,IAEpCU,EAAW97L,UAAU+6L,IAAM,SAAU7kM,EAAMmlM,EAAiBD,GACxD,IACIiC,EADAzqI,EAAQ/yD,KAEC,WAAT3J,GACAmnM,EAAex9L,KAAKu8L,UACpBv8L,KAAKq8L,cAAgB,YAGrBmB,EAAex9L,KAAK0zD,WAAWz0C,IAC/Bjf,KAAKq8L,cAAgB,UAEzB,IAAIZ,EAAgB,CAChBL,cAAe,SAAUlmK,GAAa,OAAQsoK,EAAatoK,UAAYA,GACvEmmK,kBAAmB,WAAc,OAAQtoI,EAAMspI,cAAgB,OAEnEf,GAAQC,EAAcC,EAAiBC,IAE3CQ,EAAW97L,UAAU81D,WAAa,WAC1Bj2D,KAAKu1D,QACL7jB,aAAa1xC,KAAKu1D,OAClBv1D,KAAKu1D,MAAQ,OAGrB0mI,EAAW97L,UAAUs8B,QAAU,WAC3Bz8B,KAAKi2D,aACLj2D,KAAK8yD,aAAaU,mBAAmB,UACrCxzD,KAAK8yD,aAAaU,mBAAmB,uBAElCyoI,EAhKoB,GAmK3BwB,GAAW,CACXC,sBAAuB,SAAUC,EAAQlmI,GACrC,IAAImmI,EAAYnmI,EAAQmmI,UACxB,MAAqB,SAAdA,EAAuB,CAAExxH,SAAUuxH,EAAO9uH,mBAAsB,KAG/E,SAASgvH,GAAWF,GAChBA,EAAO7qI,aAAaM,OAAO,SAAS,SAAU0qI,EAAOrmI,GACjD,OAAOgmI,GAASK,GAAOH,EAAQlmI,MA6CvC,IAAIsmI,GAAmC,WACnC,SAASA,EAAkBzgL,GACvB,IAAIy1C,EAAQ/yD,KACZA,KAAKg+L,YAAc1gL,EAAQuoC,GAAG7V,UAC9B1yB,EAAQuoC,GAAG7V,UAAY,GACvBhwC,KAAKsd,QAAUojC,EAAS,CACpBu9I,aAAc,MACd39H,kBAAkB,EAClB49H,gBAAiB,WACjBjqK,OAAQ,QACRijC,UAAW,QACXmpH,SAAU,QACVhqH,oBAAoB,EACpB/Q,iBAAiB,EACjB4zI,aAAc,CACV,CAAC,UAAW,OAAQ,SAAU,UAC9B,CAAC,KAAM,SACP,CAAC,KAAM,KAAM,OAAQ,SAAU,WAC/B,CAAC,QAAS,QAAS,QACnB,CAAC,OAAQ,aACT,CAAC,eAELiF,gBAAgB,EAChBr2I,eAAgB,KAChByoG,mBAAmB,EACnBwhB,mBAAoB,KACpBqsB,uBAAwB,KACxBzvC,qBAAqB,EACrB6qC,oBAAqB,KACrB3lC,aAAa,EACbhnG,YAAa,GACb4sI,MAAO,QACP4E,WAAW,GACZ/gL,GACH,IAAIgtC,EAAKtqD,KAAKsd,QAASy0J,EAAqBznH,EAAGynH,mBAAoBxhB,EAAoBjmG,EAAGimG,kBAAmB5B,EAAsBrkG,EAAGqkG,oBAAqBkF,EAAcvpG,EAAGupG,YAAauqC,EAAyB9zI,EAAG8zI,uBAAwB/nI,EAAqB/L,EAAG+L,mBAAoB6nI,EAAkB5zI,EAAG4zI,gBAAiBrxI,EAAcvC,EAAGuC,YAAa2sI,EAAsBlvI,EAAGkvI,oBACtXx5L,KAAKs+L,KAAOJ,GAAmB,WAC/Bl+L,KAAKu+L,eAAiBv+L,KAAKsd,QAAQ2gL,aACnCj+L,KAAK68K,KAAOA,GACZ78K,KAAK68K,KAAKL,QAAQx8K,KAAKsd,QAAQ+iK,UAC/BrgL,KAAK8yD,aAAe,IAAIk8H,GACxB1hI,GAAeT,GACf,IAAI/E,EAAiBF,GAAsB5nD,KAAKsd,QAAQwqC,gBACxD9nD,KAAKw+L,WAAahG,GAAcx4L,KAAKsd,QAAQ8Q,QAASpuB,KAAK8yD,aAAc9yD,KAAKsd,QAAQgoC,iBACtF,IAAImF,EAAKzqD,KAAKw+L,WAAY7F,EAAkBluI,EAAGkuI,gBAAiBC,EAAsBnuI,EAAGmuI,oBAAqBhrH,EAAYnjB,EAAGmjB,UAAW0/G,EAAY7iI,EAAG6iI,UAAWC,EAAc9iI,EAAG8iI,YAAa4C,EAAa1lI,EAAG0lI,WAAYC,EAAa3lI,EAAG2lI,WAAYsI,EAAkBjuI,EAAGiuI,gBACzQgB,EAAkB,CAClB5xI,eAAgBA,EAChBiqH,mBAAoB9oH,GAAe0vI,EAAiB5mB,GACpDxhB,kBAAmBA,EACnB5B,oBAAqBA,EACrBkF,YAAaA,EACb2a,UAAWgrB,GAAuBtrB,IAElCO,EAAiB,IAAIgsB,GAAe3yI,EAAgB4xI,EAAgB3nB,oBACpE/C,EAAgBF,GAAoB4qB,EAAgB3nB,mBAAoB2nB,EAAgBlrB,UAAWC,GACvGzuK,KAAKw+D,UAAY,IAAIi9F,GAAU,GAAI,CAC/BhE,wBAAyB,CAAC,KAAM,OAChClH,kBAAmBA,EACnB5B,oBAAqBA,EACrB2I,qBAAqB,EACrBzD,YAAaA,EACbrD,aAAckoC,IAElB14L,KAAKk8L,SAAW,IAAIvuH,GAAS3tE,KAAK8yD,aAAc,CAC5C0L,UAAWx+D,KAAKw+D,UAChBnI,mBAAoBA,EACpBuX,UAAWA,IAEf5tE,KAAK65L,QAAU,IAAIhoB,GAAgB7xK,KAAK8yD,aAAcnT,EAAWA,EAAW,GAAI+5I,GAAkB,CAAE5nB,UAAU,EAAOE,UAAWhyK,KAAKsd,QAAQgjD,oBAC7ItgE,KAAKy+L,SAAW,IAAIpR,GAAcrtL,KAAK8yD,aAAc,CACjDwrH,aAAc7P,EACdp4G,mBAAoBA,EACpB24G,cAAeA,EACflnH,eAAgBA,EAChBwlI,UAAWA,EACXC,YAAaA,IAEjBvtL,KAAKqgK,UAAY,IAAIo3B,GAAUz3L,KAAKy+L,SAAS1Q,YAAapuI,EAAWA,EAAW,GAAIi5I,GAAsBwF,GAAyB3uB,GAAwB3nH,EAAgB4xI,EAAgB3nB,oBAAqB/xK,KAAK8yD,cACrN9yD,KAAKi3D,aAAaj3D,KAAKsd,QAAQ45C,WAC/Bl3D,KAAKg3D,UAAUh3D,KAAKsd,QAAQ2W,QAC5Bj0B,KAAK8uE,YAAY9uE,KAAKsd,QAAQq8K,cAAc,GACxC35L,KAAKsd,QAAQ4wC,aACbluD,KAAK+2D,eAAe/2D,KAAKsd,QAAQ4wC,aAEhCluD,KAAKsd,QAAQq8K,cACd35L,KAAKuzK,QAAQvzK,KAAKg+L,aAAa,GAEnCh+L,KAAK0+L,eAAiB,IAAIxO,GAAelwL,KAAK8yD,aAAc9yD,KAAKk8L,SAAS59L,SAAU0B,KAAKy+L,SAASngM,UAAU,WAAc,OAAOy0D,EAAMurI,QACnIt+L,KAAKsd,QAAQgoC,iBACbuB,KAEJ7mD,KAAK2+L,WAAa,IAAI1C,GAAWj8L,KAAKk8L,SAAUl8L,KAAK65L,QAAS75L,KAAK8yD,cACnE9yD,KAAK4+L,eACL5+L,KAAK6+L,eAAe1O,EAAYC,GAChCyN,GAAW79L,MACPA,KAAKsd,QAAQ6pJ,OACb7mH,EAAuBtgD,KAAKsd,QAAQ6pJ,OAAO,SAAU8oB,EAAIpxL,GAAO,OAAOk0D,EAAM06G,QAAQ5uK,EAAKoxL,MAE1FjwL,KAAKsd,QAAQiyD,QACbjvB,EAAuBtgD,KAAKsd,QAAQiyD,QAAQ,SAAU0gH,EAAIpxL,GAAO,OAAOk0D,EAAMsd,GAAGxxE,EAAKoxL,MAE1FjwL,KAAK8yD,aAAawB,KAAK,OAAQt0D,MAC/BA,KAAK22D,kBAAkB32D,KAAKsd,QAAQ+gL,WAgdxC,OA9cAN,EAAkB59L,UAAUy+L,aAAe,WACvC,IAAI7rI,EAAQ/yD,KACZA,KAAKqwE,GAAG,iBAAkBrwE,KAAK8+L,WAAW3gL,KAAKne,OAC/CA,KAAKqwE,GAAG,UAAU,WACd,GAAqB,SAAjBtd,EAAM9+B,OAAmB,CAEzB,IAAIijC,EAAY53D,KAAKqL,IAAIqlD,SAAS+C,EAAMmE,UAAW,IAAKlH,SAAS+C,EAAM9+B,OAAQ,IAAM,IAAM,KAC3F8+B,EAAMkE,aAAaC,OAG3BvD,GAAwB3zD,KAAK8yD,eAEjCirI,EAAkB59L,UAAU0+L,eAAiB,SAAU1O,EAAYC,GAC/D,IAAIr9H,EAAQ/yD,KACR++L,EAAoB,SAAUxpM,EAAMypM,GACpCn8L,OAAOotB,KAAK+uK,GAAYj+L,SAAQ,SAAUgC,GACtCgwD,EAAMu9H,WAAW/6L,EAAMwN,EAAMi8L,EAAWj8L,QAGhD/C,KAAKswL,WAAW,WAAY,oBAAoB,SAAU74H,GAEtD,OADA1E,EAAMD,aAAawB,KAAK,mBAAoBmD,EAAQ79C,SAC7C,KAEXmlL,EAAkB,WAAY5O,GAC9B4O,EAAkB,UAAW3O,IAEjC2N,EAAkB59L,UAAU8+L,qBAAuB,WAC/C,OAAQj/L,KAAK+5L,iBAAmB/5L,KAAKk8L,SAAWl8L,KAAKy+L,UAOzDV,EAAkBmB,QAAU,SAAU5hL,GAClC,OAAOA,EAAQ6hL,OAAS,IAAI5F,GAAoBj8K,GAAW,IAAIygL,EAAkBzgL,IAOrFygL,EAAkBthB,YAAc,SAAUrkL,EAAMs/C,GAC5CmlI,GAAKJ,YAAYrkL,EAAMs/C,IAM3BqmJ,EAAkB59L,UAAUi/L,mBAAqB,SAAUxzL,GACnD5L,KAAKu+L,iBAAmB3yL,IACxB5L,KAAKu+L,eAAiB3yL,EACtB5L,KAAK8yD,aAAawB,KAAK,qBAAsB1oD,KAQrDmyL,EAAkB59L,UAAUlC,KAAO,SAAU8E,EAAM00D,GAC/Cz3D,KAAK0+L,eAAezgM,KAAK8E,EAAM00D,IAOnCsmI,EAAkB59L,UAAUmwL,WAAa,SAAU/6L,EAAMwN,EAAMy0D,GAC3D,IAAIzE,EAAQ/yD,KACRq/L,EAAa,SAAUC,QACP,IAAZA,IAAsBA,EAAU,IACpC,IAAI5qM,GAAiB,aAATa,EAAsBw9D,EAAMmpI,SAAWnpI,EAAM0rI,UAAU/pM,KACnE8iE,EAAQ8nI,EAAS5qM,EAAKP,MAAOO,EAAKN,SAAUM,IAEhDsL,KAAK0+L,eAAepO,WAAW/6L,EAAMwN,EAAMs8L,IAO/CtB,EAAkB59L,UAAUkwE,GAAK,SAAU96E,EAAM29C,GAC7ClzC,KAAK8yD,aAAaM,OAAO79D,EAAM29C,IAMnC6qJ,EAAkB59L,UAAU4xB,IAAM,SAAUx8B,GACxCyK,KAAK8yD,aAAaU,mBAAmBj+D,IAOzCwoM,EAAkB59L,UAAUstK,QAAU,SAAUl4K,EAAM29C,GAClDlzC,KAAK8yD,aAAaU,mBAAmBj+D,GACrCyK,KAAK8yD,aAAaM,OAAO79D,EAAM29C,IAMnC6qJ,EAAkB59L,UAAUwtK,WAAa,SAAUp4K,GAC/CyK,KAAK8yD,aAAaU,mBAAmBj+D,IAKzCwoM,EAAkB59L,UAAUo2B,MAAQ,WAChCv2B,KAAKi/L,uBAAuB1oK,SAKhCwnK,EAAkB59L,UAAU62C,KAAO,WAC/Bh3C,KAAKi/L,uBAAuBjoJ,QAMhC+mJ,EAAkB59L,UAAUy2D,gBAAkB,SAAUrgC,QACtC,IAAVA,IAAoBA,GAAQ,GAChCv2B,KAAKi/L,uBAAuBroI,gBAAgBrgC,IAMhDwnK,EAAkB59L,UAAUw2D,kBAAoB,SAAUpgC,QACxC,IAAVA,IAAoBA,GAAQ,GAChCv2B,KAAKi/L,uBAAuBtoI,kBAAkBpgC,IAOlDwnK,EAAkB59L,UAAU2uE,YAAc,SAAUC,EAAUC,GAI1D,QAHiB,IAAbD,IAAuBA,EAAW,SAClB,IAAhBC,IAA0BA,GAAc,GAC5ChvE,KAAKk8L,SAASptH,YAAYC,EAAUC,GAChChvE,KAAKg6L,gBAAiB,CACtB,IAAIjvI,EAAS/qD,KAAKw+D,UAAUw/F,cACxBi6B,EAASj4L,KAAKqgK,UAAU03B,eAAehtI,GAC3C/qD,KAAKy+L,SAASzQ,SAASiK,EAAQjpH,KAQvC+uH,EAAkB59L,UAAUozK,QAAU,SAAUzlI,EAAMkhC,QACrC,IAATlhC,IAAmBA,EAAO,SACV,IAAhBkhC,IAA0BA,GAAc,GAC5C,IAAIh9B,EAAYjpB,SAASiB,cAAc,OAEvCgoB,EAAUhC,UAAYoiB,GAAwBtkB,GAC9C,IAAImqJ,EAAS,eAAU73K,WAAWpgB,KAAKy+L,SAASl6L,QAAQoU,MAAMq5B,GAC1DhyC,KAAK+5L,iBACL/5L,KAAKk8L,SAASptH,YAAY9uE,KAAKqgK,UAAU23B,eAAeC,GAASjpH,GAGjEhvE,KAAKy+L,SAASzQ,SAASiK,EAAQjpH,IAOvC+uH,EAAkB59L,UAAUgvE,YAAc,WACtC,OAAInvE,KAAK+5L,iBACE/5L,KAAKk8L,SAAS/sH,cAElBnvE,KAAKqgK,UAAU23B,eAAeh4L,KAAKy+L,SAAS3Q,aAMvDiQ,EAAkB59L,UAAUmzK,QAAU,WAClC,IAAIvgH,EAAQ/yD,KAQZ,OAPAA,KAAK8yD,aAAak9H,iBAAgB,WAC9B,GAAIj9H,EAAMgnI,iBAAkB,CACxB,IAAIhvI,EAASgI,EAAMyL,UAAUw/F,cACzBi6B,EAASllI,EAAMstG,UAAU03B,eAAehtI,GAC5CgI,EAAM0rI,SAASzQ,SAASiK,OAGzBj4L,KAAKy+L,SAAS/pM,KAAKuqB,IAAI+wB,WAMlC+tJ,EAAkB59L,UAAU7H,WAAa,SAAU4F,GAC/C8B,KAAKi/L,uBAAuB3xK,iBAAiBpvB,IAOjD6/L,EAAkB59L,UAAU5J,aAAe,SAAUyF,EAAOrC,GACxDqG,KAAKi/L,uBAAuB1oM,aAAayF,EAAOrC,IAQpDokM,EAAkB59L,UAAUmtB,iBAAmB,SAAUpvB,EAAMlC,EAAOrC,GAClEqG,KAAKi/L,uBAAuB3xK,iBAAiBpvB,EAAMlC,EAAOrC,IAO9DokM,EAAkB59L,UAAUjM,gBAAkB,SAAU8H,EAAOrC,GAC3DqG,KAAKi/L,uBAAuB/qM,gBAAgB8H,EAAOrC,IAQvDokM,EAAkB59L,UAAU0uE,gBAAkB,SAAU7yE,EAAOrC,GAC3D,OAAOqG,KAAKi/L,uBAAuBpwH,gBAAgB7yE,EAAOrC,IAiB9DokM,EAAkB59L,UAAU+uE,mBAAqB,SAAUt4E,GACvD,OAAOoJ,KAAKi/L,uBAAuB/vH,mBAAmBt4E,IAQ1DmnM,EAAkB59L,UAAUszD,UAAY,SAAUv8D,EAAM0U,EAAOhV,GAC3DoJ,KAAKi/L,uBAAuBxrI,UAAUv8D,EAAM0U,EAAOhV,IAQvDmnM,EAAkB59L,UAAU8uE,kBAAoB,SAAUjzE,EAAOrC,EAAKuE,GAClE8B,KAAKi/L,uBAAuBhwH,kBAAkBjzE,EAAOrC,EAAKuE,IAM9D6/L,EAAkB59L,UAAU62D,UAAY,SAAU/iC,GAC9C,IAAI4xB,EAAK7lD,KAAKsd,QAAQuoC,GAClBjF,EAAW3sB,KACI,SAAXA,EACA+uB,EAAW6C,EAAI,eAGfvC,GAAcuC,EAAI,eAEtB7lD,KAAKi3D,aAAaj3D,KAAKu/L,iBAE3B59I,EAAMkE,EAAI,CAAE5xB,OAAQA,IACpBj0B,KAAKi0B,OAASA,GAMlB8pK,EAAkB59L,UAAUgxK,UAAY,WACpC,OAAOnxK,KAAKi0B,QAMhB8pK,EAAkB59L,UAAU82D,aAAe,SAAUC,GACjD,GAAIA,IAAcl3D,KAAKk3D,UAAW,CAC9B,IAAIjjC,EAASj0B,KAAKi0B,QAAUj0B,KAAKsd,QAAQ2W,OAC1B,SAAXA,GAAqBj0B,KAAKsd,QAAQuoC,GAAGx+B,cAAc,IAAM+D,GAAI,WAE7D8rC,EAAY53D,KAAKqL,IAAIqlD,SAASkH,EAAW,IAAKlH,SAAS/7B,EAAQ,IAAM,IAAM,MAE/E,IAAIurK,EAAexvI,SAASkH,EAAW,IACvCl3D,KAAKk3D,UAAYA,EACjBl3D,KAAKy+L,SAASxnI,aAAauoI,GAC3Bx/L,KAAKk8L,SAASjlI,aAAauoI,GAC3Bx/L,KAAK65L,QAAQ5iI,aAAauoI,KAOlCzB,EAAkB59L,UAAUo/L,aAAe,WACvC,OAAOv/L,KAAKk3D,WAMhB6mI,EAAkB59L,UAAU45L,eAAiB,WACzC,MAAqB,aAAd/5L,KAAKs+L,MAMhBP,EAAkB59L,UAAU65L,cAAgB,WACxC,MAAqB,YAAdh6L,KAAKs+L,MAMhBP,EAAkB59L,UAAU2xK,SAAW,WACnC,OAAO,GAMXisB,EAAkB59L,UAAUs/L,uBAAyB,WACjD,OAAOz/L,KAAKu+L,gBAOhBR,EAAkB59L,UAAU2+L,WAAa,SAAUR,EAAMoB,GACrD,GAAI1/L,KAAKs+L,OAASA,EAAlB,CAIA,GADAt+L,KAAKs+L,KAAOA,EACRt+L,KAAKg6L,gBAAiB,CACtB,IAAIjvI,EAAS/qD,KAAKw+D,UAAUw/F,cACxBi6B,EAASj4L,KAAKqgK,UAAU03B,eAAehtI,GAC3C/qD,KAAKy+L,SAASzQ,SAASiK,OAEtB,CACGA,EAASj4L,KAAKy+L,SAAS3Q,WAC3B9tL,KAAKk8L,SAASptH,YAAY9uE,KAAKqgK,UAAU23B,eAAeC,IAAUyH,GAItE,GAFA1/L,KAAK8yD,aAAawB,KAAK,qBACvBt0D,KAAK8yD,aAAawB,KAAK,aAAcgqI,IAChCoB,EAAc,CACf,IAAI9oM,EAAMoJ,KAAKqgK,UAAUw3B,eACzB73L,KAAKu2B,QACDv2B,KAAKg6L,iBAAmBx2I,GAAW5sD,GACnCoJ,KAAKy+L,SAASloM,aAAaK,GAEtB4c,MAAMC,QAAQ7c,IACnBoJ,KAAKk8L,SAAS3lM,aAAaK,MAOvCmnM,EAAkB59L,UAAUs8B,QAAU,WAClC,IAAIs2B,EAAQ/yD,KACZA,KAAKy+L,SAAShiK,UACdz8B,KAAKk8L,SAASz/J,UACdz8B,KAAK65L,QAAQp9J,UACbz8B,KAAK2+L,WAAWliK,UAChBz8B,KAAK8yD,aAAawB,KAAK,WACvBt0D,KAAK8yD,aAAai9H,YAAYhvL,SAAQ,SAAUsT,EAAG9e,GAAQ,OAAOw9D,EAAMhhC,IAAIx8B,OAKhFwoM,EAAkB59L,UAAUw/L,KAAO,WAC/B3/L,KAAK8yD,aAAawB,KAAK,SAK3BypI,EAAkB59L,UAAUy/L,KAAO,WAC/B5/L,KAAK8yD,aAAawB,KAAK,SAM3BypI,EAAkB59L,UAAU02D,aAAe,SAAUl3D,GACjDK,KAAKi/L,uBAAuBpoI,aAAal3D,IAM7Co+L,EAAkB59L,UAAU22D,aAAe,WACvC,OAAO92D,KAAKi/L,uBAAuBnoI,gBAKvCinI,EAAkB59L,UAAUqgL,MAAQ,WAChCxgL,KAAKy+L,SAASzQ,SAAS,IACvBhuL,KAAKk8L,SAASptH,YAAY,KAgB9BivH,EAAkB59L,UAAUs6B,aAAe,WACvC,OAAOz6B,KAAKi/L,uBAAuBxkK,gBAMvCsjK,EAAkB59L,UAAU42D,eAAiB,SAAU7I,GACnDluD,KAAKk8L,SAASnlI,eAAe7I,GAC7BluD,KAAKy+L,SAAS1nI,eAAe7I,IAKjC6vI,EAAkB59L,UAAU0/L,kBAAoB,WAC5C,MAAO,CACH3D,SAAUl8L,KAAKk8L,SAAS/kI,aACxB2oI,UAAW9/L,KAAK65L,QAAQ1iI,aACxBsnI,SAAUz+L,KAAKy+L,SAAStnI,eAGzB4mI,EArjB2B,GA0jBtC,SAASgC,GAAQx+L,GACf,IACE,IAAIy+C,EACF76C,EACAoG,EAAI/M,UACJohD,EAAI,EACJ5gC,EAAI,GACJghL,EAAI,GACJz3L,EAAI,CAAC,GACL+2I,EAAI,SAAU/9I,GACN,IAANq+C,IAAYr+C,IAAMyd,EAAIA,EAAE9Z,QAAQ,uBAAwB,MACpDqD,EAAE/M,KAAK+F,EAAIgK,EAAEhK,GAAKyd,GACZ,IAAN4gC,IAAYr+C,GAAKyd,IACfzW,EAAE,GAAKhH,EAAIgK,EAAEhK,GAAKyd,EAAK4gC,EAAI,GACvB,IAANA,GAAiB,QAAN5gC,GAAezd,EACzBgH,EAAE,GAAKgwB,GAAOhwB,EAAE,IAAM,GAAIgD,EAAEhK,IACvB,IAANq+C,GAAW5gC,IAAMzd,GACfgH,EAAE,GAAKA,EAAE,IAAM,IAAIyW,IAAK,EAC1B4gC,GAAK,IACE,IAANA,IACMr3C,EAAE,GAAKA,EAAE,IAAM,IAAIpD,GAAK5D,EAAKyd,EAAIA,EAAIzT,EAAEhK,GAAKgK,EAAEhK,GAAMyd,EAAK4gC,EAAI,IAC/Dr+C,GAAKyd,KAAOzW,EAAE,GAAGpD,IAAM5D,EAAIyd,EAAIzT,EAAEhK,GAAKyd,IAC5CA,EAAI,IAETihL,EAAI,EACNA,EAAI1+L,EAAErG,OACN+kM,IACA,CACAA,IAAY,IAANrgJ,GAAW0/F,IAAKA,EAAE2gD,IACxB,IAAK,IAAIroM,EAAI,EAAGA,EAAI2J,EAAE0+L,GAAG/kM,OAAQtD,IAC9BooD,EAAIz+C,EAAE0+L,GAAGroM,GACF,IAANgoD,EACU,MAANI,GACGs/F,IAAM/2I,EAAI,CAACA,EAAG,GAAI,MAASq3C,EAAI,GAC/B5gC,GAAKghC,EACF,IAANJ,EACM,OAAN5gC,GAAoB,MAANghC,GACVJ,EAAI,EAAK5gC,EAAI,IACdA,EAAIghC,EAAIhhC,EAAE,GACbghL,EACAhgJ,IAAMggJ,EACHA,EAAI,GACJhhL,GAAKghC,EACF,MAANA,GAAmB,MAANA,EACZggJ,EAAIhgJ,EACC,MAANA,GACCs/F,IAAM1/F,EAAI,GACXA,IACO,MAANI,GACKJ,EAAI,EAAKz6C,EAAI6Z,EAAKA,EAAI,IAClB,MAANghC,IAAcJ,EAAI,GAAqB,MAAhBr+C,EAAE0+L,GAAGroM,EAAI,KAC/B0nJ,IACK,IAAN1/F,IAAYr3C,EAAIA,EAAE,IACjBq3C,EAAIr3C,GACJA,EAAIA,EAAE,IAAI/M,KAAKwE,KAAK2D,MAAM,KAAMi8C,EAAEzpD,MAAM,KACxCypD,EAAI,GACC,MAANI,GAAmB,OAANA,GAAoB,OAANA,GAAoB,OAANA,GACxCs/F,IAAM1/F,EAAI,GACV5gC,GAAKghC,GACR,IAANJ,GAAiB,QAAN5gC,IAAiB4gC,EAAI,EAAKr3C,EAAIA,EAAE,IAEjD,OAAO+2I,IAAK/2I,EAAErN,OAAS,EAAIqN,EAAEpS,MAAM,GAAKoS,EAAE,GAe5C,SAAS23L,GAAU9rL,GACjB,MAAsB,mBAARA,GAAqBA,aAAe4vB,QAGpD,IAAIm8J,GAAcD,GAEdE,GAA6B,WAC7B,SAASA,EAAYptL,GACjBhT,KAAKgT,QAAUA,EACfhT,KAAK21B,KAAO3iB,EACZhT,KAAK6tD,UAAW,EA6BpB,OA3BAuyI,EAAYjgM,UAAUkgM,KAAO,WACzB,IAAI/1I,EAAKtqD,KAAM6tD,EAAWvD,EAAGuD,SAAU5hD,EAAMq+C,EAAGt3C,QAChD,OAAK/G,GAGD4hD,EACI5hD,EAAI5U,YACJ2I,KAAKgT,QAAU/G,EAAI5U,WACnB2I,KAAK6tD,UAAW,GAGhB7tD,KAAK6tD,UAAW,EAGf5hD,IAAQjM,KAAK21B,KAClB31B,KAAKgT,QAAU,KAEV/G,EAAI5F,MACTrG,KAAKgT,QAAU/G,EAAI5F,KACnBrG,KAAK6tD,UAAW,IAGhB7tD,KAAKgT,QAAU/G,EAAItW,OACnBqK,KAAK6tD,UAAW,GAEb,CAAEyyI,MAAOr0L,EAAK4hD,SAAUA,IAtBpB,MAwBRuyI,EAjCqB,GAmC5BG,GAAuB,WACvB,SAASA,EAAMhrM,EAAMu6B,EAAO+L,GACxB77B,KAAKrK,OAAS,KACdqK,KAAK+sC,IAAM,KACX/sC,KAAK3I,WAAa,KAClB2I,KAAKqG,KAAO,KACZrG,KAAKqmB,MAAO,EACZrmB,KAAKzK,KAAOA,EACZyK,KAAK8vB,MAAQA,EACb9vB,KAAK67B,SAAWA,EAChB77B,KAAK8vB,MAAM+L,SAAWA,EAClB/L,EAAMn7B,MACNqL,KAAKrL,IAAMm7B,EAAMn7B,WACVm7B,EAAMn7B,KAEbm7B,EAAMjxB,MACNmB,KAAKnB,IAAMixB,EAAMjxB,WACVixB,EAAMjxB,KAOrB,OAJA0hM,EAAMpgM,UAAUysD,OAAS,WACrB,OAAO,IAAIwzI,GAAYpgM,OAE3BugM,EAAMC,aAAe,GACdD,EAxBe,GA2B1B,SAAS15K,GAAe3oB,GACpB,OAAO,IAAIqiM,GAAM,YAAa,CAAE76K,UAAWxnB,GAAQ,IAEvD,SAASuiM,GAAwBp5L,EAAOq5L,GACpC,IAAIJ,EAAQj5L,EAER84L,GAAY94L,IAAmB,MAATA,EACtBi5L,EAAQ,MAEH1/I,EAAWv5C,IAAUm8C,GAAWn8C,MACrCi5L,EAAQz5K,GAAe0uB,OAAOluC,KAE9Bi5L,GACAI,EAAQllM,KAAK8kM,GAGrB,SAASL,GAAE1qM,EAAMu6B,GAEb,IADA,IAAI+L,EAAW,GACN00B,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpC10B,EAAS00B,EAAK,GAAK/xD,UAAU+xD,GAEjC,IAAImwI,EAAU,GAWd,OAVA7kK,EAAS96B,SAAQ,SAAUsG,GACnBmM,MAAMC,QAAQpM,GACdA,EAAMtG,SAAQ,SAAUu/L,GACpBG,GAAwBH,EAAOI,MAInCD,GAAwBp5L,EAAOq5L,MAGhC,IAAIH,GAAMhrM,EAAMu6B,GAAS,GAAI4wK,GAGxC,IAAI5yJ,GAAOiyJ,GAAO5hL,KAAK8hL,IAcvB,SAASU,GAASvsL,GAChB,OAAOA,IAAQvR,OAAOuR,GAGxB,IAAIwsL,GAAaD,GAGjB,SAASE,GAAWP,GAChB,IAAIppM,EAQJ,MAPmB,cAAfopM,EAAM/qM,KACN2B,EAAO6xB,SAASlC,eAAey5K,EAAMxwK,MAAMpK,YAG3CxuB,EAAO6xB,SAASiB,cAAcs2K,EAAM/qM,MACpC4oD,GAASjnD,EAAM,GAAIopM,EAAMxwK,QAEtB54B,EAEX,SAAS4pM,GAAWR,EAAO38K,GACnB28K,EAAMppM,KACNysB,EAAWse,YAAYq+J,EAAMppM,MAG7B4pM,GAAWR,EAAMjpM,WAAYssB,GAGrC,SAASo9K,GAAU7pM,EAAM8pM,EAAWC,GAChCp+L,OAAOotB,KAAK+wK,GAAWjgM,SAAQ,SAAUozC,GACrC,GAAI,MAAMn1C,KAAKm1C,IACX,IAAK8sJ,EAAU9sJ,IAAa6sJ,EAAU7sJ,KAAc8sJ,EAAU9sJ,GAAW,CACrE,IAAIooH,EAAYpoH,EAASh+C,MAAM,GAAG0tB,cAClC3sB,EAAKixC,oBAAoBo0H,EAAWykC,EAAU7sJ,SAGhC,aAAbA,GAA4B8sJ,EAAU9sJ,IAAcwc,GAAWz5D,IACpEA,EAAKyrC,gBAAgBwR,MAG7BgK,GAASjnD,EAAM8pM,EAAWC,GAAW,SAAU9sJ,GAAY,OAAQwU,GAAaq4I,EAAU7sJ,GAAW8sJ,EAAU9sJ,OAEnH,IAAI+sJ,GAAiB,yDACrB,SAAS/iJ,GAASjnD,EAAM8pM,EAAWlxK,EAAOg8B,GACtCjpD,OAAOotB,KAAKH,GAAO/uB,SAAQ,SAAUozC,GACjC,IAAK2X,GAAaA,EAAU3X,GACxB,GAAI,MAAMn1C,KAAKm1C,GAAW,CACtB,IAAIooH,EAAYpoH,EAASh+C,MAAM,GAAG0tB,cAClC3sB,EAAKmxC,iBAAiBk0H,EAAWzsI,EAAMqkB,QAErB,cAAbA,EACLj9C,EAAKi9C,GAAYrkB,EAAMqkB,GAEL,UAAbA,GAAwBysJ,GAAW9wK,EAAMqkB,IAC9CgtJ,GAAcjqM,EAAM8pM,EAAU7sJ,GAAWrkB,EAAMqkB,IAE7B,aAAbA,KACmB,IAApBrkB,EAAMqkB,GACNj9C,EAAKyrC,gBAAgBwR,GAGrBj9C,EAAKizB,aAAagqB,EAAUrkB,EAAMqkB,QAMtD,SAASgtJ,GAAcjqM,EAAMkqM,EAAgBC,GACrCD,GACAv+L,OAAOotB,KAAKmxK,GAAgBrgM,SAAQ,SAAUugM,GAE1CpqM,EAAK0U,MAAM01L,GAAa,MAGhCz+L,OAAOotB,KAAKoxK,GAAYtgM,SAAQ,SAAUugM,GACtC,IAAI3hM,EAAQ0hM,EAAWC,GAEvBpqM,EAAK0U,MAAM01L,GACP99I,GAAW7jD,KAAWuhM,GAAeliM,KAAKsiM,GAAa3hM,EAAQ,KAAOA,KAIlF,SAAS4hM,GAAOjB,GAEZ,GADAC,GAAMC,aAAaz/L,SAAQ,SAAUygM,GAAe,OAAOphM,GAAKohM,MAC5DlB,EAAO,CACP,IAAIj6L,OAAO,EACPumD,EAAS0zI,EAAM1zI,SACnB,MAAQvmD,EAAOumD,EAAOyzI,OAElB,GADAC,EAAQj6L,EAAKi6L,MACTj6L,EAAKwnD,SACLztD,GAAKkgM,QAEJ,GAAIjpI,GAAaipI,EAAM/qM,MAAO,CAC/B,IAAIytF,EAAOs9G,EAAMmB,UAKjB,IAHKnB,EAAMvzJ,KAAOi2C,EAAKhmC,SACnBgmC,EAAKhmC,UAELsjJ,EAAMvzJ,KAAOi2C,EAAKl2D,QAAS,CAC3B,IAAIk0K,EAAYh+G,EAAKg+G,WAAa,GAClCh+G,EAAKl2D,QAAQk0K,MAMjC,SAASt6B,GAAc45B,GACnB,IAAI3qM,EAAS2qM,EAAM3qM,OACnB,OAAQA,EAAOuB,KACXvB,EAASA,EAAOA,OAEpB,OAAOA,EAAOuB,KAElB,SAASkJ,GAAKkgM,GACV,GAAKA,GAAUA,EAAM3qM,OAArB,CAGA,GAAI2qM,EAAMppM,KAAM,CACZ,IAAIysB,EAAa+iJ,GAAc45B,GACV,MAAjBA,EAAMoB,OACN/9K,EAAWe,YAAY47K,EAAMppM,MAEP,MAAjBopM,EAAMoB,QACXX,GAAUT,EAAMppM,KAAMopM,EAAMvzJ,IAAIjd,MAAOwwK,EAAMxwK,OAGrD,GAAqB,MAAjBwwK,EAAMoB,OAAgB,CACtB,IAAIr7L,OAAO,EACPumD,EAAS0zI,EAAM1zI,SACnB,MAAQvmD,EAAOumD,EAAOyzI,OAElB,GADAC,EAAQj6L,EAAKi6L,OACRj6L,EAAKwnD,SACN,GAAIwJ,GAAaipI,EAAM/qM,MAAO,CAC1B,IAAIytF,EAAOs9G,EAAMmB,UAEbz+G,EAAK2+G,eACL3+G,EAAK2+G,oBAGR,CACGh+K,EAAa+iJ,GAAc45B,GAC/BQ,GAAWR,EAAO38K,IAM9B28K,EAAM3rM,MACF2rM,EAAMmB,UACNnB,EAAM3rM,IAAI2rM,EAAMmB,WAEXnB,EAAMppM,MACXopM,EAAM3rM,IAAI2rM,EAAMppM,QAK5B,SAAS0qM,GAAgBC,EAAMvB,GAC3B,IAAIxwK,EAAQwwK,EAAMxwK,MAAO2xK,EAAYnB,EAAMmB,UAC3C,OAAIA,GACAA,EAAUT,UAAYS,EAAU3xK,MAChC2xK,EAAU3xK,MAAQwwK,EAAMxwK,MACjB2xK,GAEJ,IAAII,EAAK/xK,GAEpB,SAASgyK,GAAWxB,GAChB,IAAI3qK,EAAO2qK,EACX,MAAOA,IAAUA,EAAMj6K,KAAM,CACzB,GAAIgxC,GAAaipI,EAAM/qM,MAAO,CAC1B,IAAIooB,EAAWikL,GAAgBtB,EAAM/qM,KAAM+qM,GAC3C3iL,EAAS2iL,MAAQA,EACjBA,EAAMmB,UAAY9jL,EAClB2iL,EAAMxwK,MAAM+L,SAAWykK,EAAMzkK,SAAW,CAACle,EAAS8iJ,UAClDshC,GAAmBzB,QAGdA,EAAMppM,OACPopM,EAAMppM,KAAO2pM,GAAWP,IAE5ByB,GAAmBzB,GAEvB,GAAIA,EAAMjpM,WACNipM,EAAQA,EAAMjpM,eAEb,CACD,MAAOipM,GAASA,EAAM3qM,SAAW2qM,EAAMj6L,KAEnC,GADAi6L,EAAQA,EAAM3qM,OACV2qM,IAAU3qK,EACV,MAGR2qK,EAAQA,EAAMj6L,OAI1B,SAAS27L,GAAWj1J,EAAKuzJ,GACrB,OAAOvzJ,GAAOuzJ,GAASA,EAAM/qM,OAASw3C,EAAIx3C,QAAU+qM,EAAMzhM,KAAOyhM,EAAMzhM,MAAQkuC,EAAIluC,KAGvF,SAASkjM,GAAmBpsM,GACxB,IAAIkmC,EAAWlmC,EAAOkmC,SAClBkR,EAAMp3C,EAAOo3C,IAAMp3C,EAAOo3C,IAAI11C,WAAa,KAC3C62B,EAAO,KACX2N,EAAS96B,SAAQ,SAAUu/L,EAAOzoM,GAC9B,IAAIoqM,EAAWD,GAAWj1J,EAAKuzJ,GAC3B2B,IACA3B,EAAMvzJ,IAAMA,EACZuzJ,EAAM3qM,OAASA,EACf2qM,EAAMppM,KAAO61C,EAAI71C,KACjBopM,EAAMmB,UAAY10J,EAAI00J,UACtBnB,EAAMoB,OAAS,KAEfpB,IAAU2B,IACV3B,EAAMvzJ,IAAM,KACZuzJ,EAAM3qM,OAASA,EACf2qM,EAAMppM,KAAO,KACbopM,EAAMoB,OAAS,KAEf30J,IAAQk1J,IACR1B,GAAMC,aAAahlM,KAAKuxC,GACxBA,EAAI20J,OAAS,KAEb30J,IACAA,EAAMA,EAAI1mC,MAEA,IAAVxO,EACAlC,EAAO0B,WAAaipM,EAEfA,IACLpyK,EAAK7nB,KAAOi6L,GAEhBpyK,EAAOoyK,KAEX,IAAIhpM,EAAYwxD,GAAOjtB,GACvB,IAAKA,EAAS3gC,OACV,MAAO6xC,EACHwzJ,GAAMC,aAAahlM,KAAKuxC,GACxBA,EAAI20J,OAAS,IACb30J,EAAMA,EAAI1mC,KAGlB,MAAO0mC,GAAOz1C,EACNy1C,GAAOz1C,EAAUy1C,MAAQA,IACzBwzJ,GAAMC,aAAahlM,KAAKuxC,GACxBA,EAAI20J,OAAS,IACb30J,EAAMA,EAAI1mC,MAKtB,SAASo2B,GAAQ6jK,GACbA,EAAMoB,OAAS,IACfnB,GAAMC,aAAe,CAACF,GACtBiB,KACAhB,GAAMC,aAAe,GAEzB,SAAS0B,GAASl/G,GACd,IAAIrtD,EAAOqtD,EAAKs9G,MAChB3qK,EAAK+rK,OAAS,IACd/rK,EAAKoX,IAAMpX,EAEPA,EAAKtvB,OACLsvB,EAAKtvB,KAAKggB,MAAO,GAErBk6K,GAAMC,aAAe,GACrBsB,GAAWnsK,GACX4rK,GAAO5rK,GACHA,EAAKtvB,OACLsvB,EAAKtvB,KAAKggB,MAAO,GAGzB,SAASo6I,GAAOzuH,EAAWsuJ,GACvB,IAAI3qK,EAAO,IAAI4qK,GAAMvuJ,EAAUnoB,QAAQhG,cAAe,GAAI,CAACy8K,IAK3D,OAJA3qK,EAAKz+B,KAAO86C,EACZuuJ,GAAMC,aAAe,GACrBsB,GAAWnsK,GACX4rK,GAAO5rK,GACA,WAAc,OAAO8G,GAAQ9G,EAAKt+B,aAG7C,IA2CI8qM,GA3CAC,GAA2B,WAC3B,SAASA,EAAUtyK,GACf9vB,KAAK8vB,MAAQA,EACb9vB,KAAK7L,MAAQ,GACb6L,KAAKqiM,KAAO,GAShB,OAPAD,EAAUjiM,UAAUmiM,SAAW,SAAUnuM,GACrC,IAAI26B,EAAW6wB,EAAWA,EAAW,GAAI3/C,KAAK7L,OAAQA,GACjDw0D,GAAa3oD,KAAK7L,MAAO26B,KAC1B9uB,KAAK7L,MAAQ26B,EACbozK,GAASliM,QAGVoiM,EAbmB,GAgB1BG,GAAwB,SAAUltI,GAElC,SAASktI,EAAOzyK,GACZ,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KAIxC,OAHA+yD,EAAM5+D,MAAQ,CACVwrM,MAAM,GAEH5sI,EAkBX,OAxBAvT,EAAY+iJ,EAAQltI,GAQpBktI,EAAOpiM,UAAUy/L,KAAO,WACpB5/L,KAAKsiM,SAAS,CAAE3C,MAAM,KAE1B4C,EAAOpiM,UAAUw/L,KAAO,WACpB3/L,KAAKsiM,SAAS,CAAE3C,MAAM,KAE1B4C,EAAOpiM,UAAUsgK,OAAS,WACtB,IAAIn2G,EAAKtqD,KAAK8vB,MAAO4lC,EAAapL,EAAGoL,WAAY5C,EAAexI,EAAGwI,aACnE,OAAOhlB,GAAKq0J,KAAuBA,GAAqBliJ,EAAqB,CAAC,uBAAyB,qBAAwB,8CAAiD,wBAA0B,0BAA2B,4DAA8D,wBAA0B,0BAA2B,wCAAyC,CAAC,uBAAyB,qBAAwB,8CAAiD,wBAChe,0BAA2B,4DAA8D,wBACzF,0BAA2B,0CAA2C70B,GAAI,eAAgBprB,KAAK7L,MAAMwrM,KAAO,OAAS,QAAwB,aAAfjqI,EAA4B,UAAY,IAAI,WAC1K5C,EAAawB,KAAK,iBAAkB,cACrCuoH,GAAKt5K,IAAI,YAA4B,YAAfmyD,EAA2B,UAAY,IAAI,WAChE5C,EAAawB,KAAK,iBAAkB,aACrCuoH,GAAKt5K,IAAI,aAETg/L,EAzBgB,CA0BzBH,IAwCF,SAASI,GAAWvS,EAAIv5I,GACtB,IAAI6e,EAAO0vF,EAKX,SAASw9C,IACPx9C,EAAOzxI,MAAMrT,UAAUhK,MAAM4L,KAAKvD,WAElCwqB,OAAO0oB,aAAa6jB,GACpBA,EAAQvsC,OAAOsf,YAAW,WACxB2nJ,EAAGtsL,MAAM,KAAMshJ,KACdvuG,GAGL,OAXAA,EAAQA,GAAS,EAWV+rJ,EAGT,IAAIC,GAAaF,GAObG,GAAWD,GAkCf,SAASE,GAAW3S,EAAI4S,GACtB,IAAIh7L,EAMA46L,EAAWK,EAAO79C,EALlB89C,GAAY,EACZC,EAAO,SAASC,GAClBhT,EAAGtsL,MAAM,KAAMs/L,GACfp7L,EAAO,MAST,SAASq7L,IAGP,GAFAj+C,EAAOzxI,MAAMrT,UAAUhK,MAAM4L,KAAKvD,WAE9BukM,EAIF,OAHAC,EAAK/9C,QACL89C,GAAY,GAKdD,EAAQnoL,OAAO,IAAI+R,MAEnB7kB,EAAOA,GAAQi7L,EAOfL,EAAUx9C,GAEL69C,EAAQj7L,GAASg7L,GACpBG,EAAK/9C,GAIT,SAASu7B,IACPuiB,GAAY,EACZl7L,EAAO,KAKT,OArCAg7L,EAAWA,GAAY,EAEvBJ,EAAYE,GAASK,EAAMH,GAiC3BK,EAAU1iB,MAAQA,EAEX0iB,EAGT,IAAIC,GAAaP,GASbQ,GAAU,WACV,GAAmB,qBAARz+J,IACP,OAAOA,IASX,SAAS0+J,EAASriJ,EAAKniD,GACnB,IAAIgC,GAAU,EAQd,OAPAmgD,EAAIjiC,MAAK,SAAUukL,EAAOzrM,GACtB,OAAIyrM,EAAM,KAAOzkM,IACbgC,EAAShJ,GACF,MAIRgJ,EAEX,OAAsB,WAClB,SAAS0iM,IACLvjM,KAAKwjM,YAAc,GAuEvB,OArEA3gM,OAAOs9C,eAAeojJ,EAAQpjM,UAAW,OAAQ,CAI7CoD,IAAK,WACD,OAAOvD,KAAKwjM,YAAYtoM,QAE5B65D,YAAY,EACZ3xD,cAAc,IAMlBmgM,EAAQpjM,UAAUoD,IAAM,SAAU1E,GAC9B,IAAIhH,EAAQwrM,EAASrjM,KAAKwjM,YAAa3kM,GACnCykM,EAAQtjM,KAAKwjM,YAAY3rM,GAC7B,OAAOyrM,GAASA,EAAM,IAO1BC,EAAQpjM,UAAUwL,IAAM,SAAU9M,EAAKc,GACnC,IAAI9H,EAAQwrM,EAASrjM,KAAKwjM,YAAa3kM,IAClChH,EACDmI,KAAKwjM,YAAY3rM,GAAO,GAAK8H,EAG7BK,KAAKwjM,YAAYhoM,KAAK,CAACqD,EAAKc,KAOpC4jM,EAAQpjM,UAAUlJ,OAAS,SAAU4H,GACjC,IAAI4kM,EAAUzjM,KAAKwjM,YACf3rM,EAAQwrM,EAASI,EAAS5kM,IACzBhH,GACD4rM,EAAQzzL,OAAOnY,EAAO,IAO9B0rM,EAAQpjM,UAAU3C,IAAM,SAAUqB,GAC9B,SAAUwkM,EAASrjM,KAAKwjM,YAAa3kM,IAKzC0kM,EAAQpjM,UAAUi8K,MAAQ,WACtBp8K,KAAKwjM,YAAYxzL,OAAO,IAO5BuzL,EAAQpjM,UAAUY,QAAU,SAAU8yD,EAAU6vI,QAChC,IAARA,IAAkBA,EAAM,MAC5B,IAAK,IAAInzI,EAAK,EAAGjG,EAAKtqD,KAAKwjM,YAAajzI,EAAKjG,EAAGpvD,OAAQq1D,IAAM,CAC1D,IAAI+yI,EAAQh5I,EAAGiG,GACfsD,EAAS9xD,KAAK2hM,EAAKJ,EAAM,GAAIA,EAAM,MAGpCC,EAzEU,GAtBX,GAsGVI,GAA8B,qBAAX36K,QAA8C,qBAAbD,UAA4BC,OAAOD,WAAaA,SAGpG66K,GAAW,WACX,MAAsB,qBAAX1yH,GAA0BA,EAAO5xE,OAASA,KAC1C4xE,EAES,qBAATjgE,MAAwBA,KAAK3R,OAASA,KACtC2R,KAEW,qBAAX+X,QAA0BA,OAAO1pB,OAASA,KAC1C0pB,OAGJ4G,SAAS,cAATA,GAXI,GAoBXi0K,GAA0B,WAC1B,MAAqC,oBAA1BC,sBAIAA,sBAAsB3lL,KAAKylL,IAE/B,SAAU/vI,GAAY,OAAOvrB,YAAW,WAAc,OAAOurB,EAASnnC,KAAKC,SAAW,IAAO,KAP1E,GAW1Bo3K,GAAkB,EAStB,SAASC,GAAUnwI,EAAUnd,GACzB,IAAIutJ,GAAc,EAAOC,GAAe,EAAOC,EAAe,EAO9D,SAASC,IACDH,IACAA,GAAc,EACdpwI,KAEAqwI,GACAG,IAUR,SAASC,IACLT,GAAwBO,GAO5B,SAASC,IACL,IAAIjuJ,EAAY1pB,KAAKC,MACrB,GAAIs3K,EAAa,CAEb,GAAI7tJ,EAAY+tJ,EAAeJ,GAC3B,OAMJG,GAAe,OAGfD,GAAc,EACdC,GAAe,EACf57J,WAAWg8J,EAAiB5tJ,GAEhCytJ,EAAe/tJ,EAEnB,OAAOiuJ,EAIX,IAAIE,GAAgB,GAGhBC,GAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,UAE/EC,GAAwD,qBAArBzzJ,iBAInC0zJ,GAA0C,WAM1C,SAASA,IAML1kM,KAAK2kM,YAAa,EAMlB3kM,KAAK4kM,sBAAuB,EAM5B5kM,KAAK6kM,mBAAqB,KAM1B7kM,KAAK8kM,WAAa,GAClB9kM,KAAK+kM,iBAAmB/kM,KAAK+kM,iBAAiB5mL,KAAKne,MACnDA,KAAKglM,QAAUhB,GAAShkM,KAAKglM,QAAQ7mL,KAAKne,MAAOukM,IAgKrD,OAxJAG,EAAyBvkM,UAAU8kM,YAAc,SAAUl0J,IACjD/wC,KAAK8kM,WAAW/0L,QAAQghC,IAC1B/wC,KAAK8kM,WAAWtpM,KAAKu1C,GAGpB/wC,KAAK2kM,YACN3kM,KAAKklM,YASbR,EAAyBvkM,UAAUglM,eAAiB,SAAUp0J,GAC1D,IAAIq0J,EAAYplM,KAAK8kM,WACjBjtM,EAAQutM,EAAUr1L,QAAQghC,IAEzBl5C,GACDutM,EAAUp1L,OAAOnY,EAAO,IAGvButM,EAAUlqM,QAAU8E,KAAK2kM,YAC1B3kM,KAAKqlM,eASbX,EAAyBvkM,UAAU6kM,QAAU,WACzC,IAAIM,EAAkBtlM,KAAKulM,mBAGvBD,GACAtlM,KAAKglM,WAWbN,EAAyBvkM,UAAUolM,iBAAmB,WAElD,IAAIC,EAAkBxlM,KAAK8kM,WAAW/gK,QAAO,SAAUgN,GACnD,OAAOA,EAAS00J,eAAgB10J,EAAS20J,eAQ7C,OADAF,EAAgBzkM,SAAQ,SAAUgwC,GAAY,OAAOA,EAAS40J,qBACvDH,EAAgBtqM,OAAS,GAQpCwpM,EAAyBvkM,UAAU+kM,SAAW,WAGrCvB,KAAa3jM,KAAK2kM,aAMvB57K,SAASsf,iBAAiB,gBAAiBroC,KAAK+kM,kBAChD/7K,OAAOqf,iBAAiB,SAAUroC,KAAKglM,SACnCP,IACAzkM,KAAK6kM,mBAAqB,IAAI7zJ,iBAAiBhxC,KAAKglM,SACpDhlM,KAAK6kM,mBAAmBlzJ,QAAQ5oB,SAAU,CACtCunB,YAAY,EACZH,WAAW,EACXC,eAAe,EACfI,SAAS,MAIbznB,SAASsf,iBAAiB,qBAAsBroC,KAAKglM,SACrDhlM,KAAK4kM,sBAAuB,GAEhC5kM,KAAK2kM,YAAa,IAQtBD,EAAyBvkM,UAAUklM,YAAc,WAGxC1B,IAAc3jM,KAAK2kM,aAGxB57K,SAASof,oBAAoB,gBAAiBnoC,KAAK+kM,kBACnD/7K,OAAOmf,oBAAoB,SAAUnoC,KAAKglM,SACtChlM,KAAK6kM,oBACL7kM,KAAK6kM,mBAAmB/yJ,aAExB9xC,KAAK4kM,sBACL77K,SAASof,oBAAoB,qBAAsBnoC,KAAKglM,SAE5DhlM,KAAK6kM,mBAAqB,KAC1B7kM,KAAK4kM,sBAAuB,EAC5B5kM,KAAK2kM,YAAa,IAStBD,EAAyBvkM,UAAU4kM,iBAAmB,SAAUz6I,GAC5D,IAAIG,EAAKH,EAAGs7I,aAAcA,OAAsB,IAAPn7I,EAAgB,GAAKA,EAE1Do7I,EAAmBrB,GAAezlL,MAAK,SAAUlgB,GACjD,SAAU+mM,EAAa71L,QAAQlR,MAE/BgnM,GACA7lM,KAAKglM,WAQbN,EAAyBoB,YAAc,WAInC,OAHK9lM,KAAK+lM,YACN/lM,KAAK+lM,UAAY,IAAIrB,GAElB1kM,KAAK+lM,WAOhBrB,EAAyBqB,UAAY,KAC9BrB,EAhMkC,GA0MzCsB,GAAqB,SAAW7wM,EAAQ26B,GACxC,IAAK,IAAIygC,EAAK,EAAGjG,EAAKznD,OAAOotB,KAAKH,GAAQygC,EAAKjG,EAAGpvD,OAAQq1D,IAAM,CAC5D,IAAI1xD,EAAMyrD,EAAGiG,GACb1tD,OAAOs9C,eAAehrD,EAAQ0J,EAAK,CAC/Bc,MAAOmwB,EAAMjxB,GACbk2D,YAAY,EACZkxI,UAAU,EACV7iM,cAAc,IAGtB,OAAOjO,GASP+wM,GAAc,SAAW/wM,GAIzB,IAAIgxM,EAAchxM,GAAUA,EAAOyxB,eAAiBzxB,EAAOyxB,cAAciO,YAGzE,OAAOsxK,GAAevC,IAItBwC,GAAYC,GAAe,EAAG,EAAG,EAAG,GAOxC,SAASC,GAAQ3mM,GACb,OAAO4mM,WAAW5mM,IAAU,EAShC,SAAS6mM,GAAe7nL,GAEpB,IADA,IAAI8nL,EAAY,GACPl2I,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpCk2I,EAAUl2I,EAAK,GAAK/xD,UAAU+xD,GAElC,OAAOk2I,EAAUtrL,QAAO,SAAUtlB,EAAM09D,GACpC,IAAI5zD,EAAQgf,EAAO,UAAY40C,EAAW,UAC1C,OAAO19D,EAAOywM,GAAQ3mM,KACvB,GAQP,SAAS+mM,GAAY/nL,GAGjB,IAFA,IAAI8nL,EAAY,CAAC,MAAO,QAAS,SAAU,QACvCE,EAAW,GACNp2I,EAAK,EAAGq2I,EAAcH,EAAWl2I,EAAKq2I,EAAY1rM,OAAQq1D,IAAM,CACrE,IAAIgD,EAAWqzI,EAAYr2I,GACvB5wD,EAAQgf,EAAO,WAAa40C,GAChCozI,EAASpzI,GAAY+yI,GAAQ3mM,GAEjC,OAAOgnM,EASX,SAASE,GAAkB1xM,GACvB,IAAI2xM,EAAO3xM,EAAO4xM,UAClB,OAAOV,GAAe,EAAG,EAAGS,EAAKhzK,MAAOgzK,EAAK7yK,QAQjD,SAAS+yK,GAA0B7xM,GAG/B,IAAIm+B,EAAcn+B,EAAOm+B,YAAaE,EAAer+B,EAAOq+B,aAS5D,IAAKF,IAAgBE,EACjB,OAAO4yK,GAEX,IAAIznL,EAASunL,GAAY/wM,GAAQswC,iBAAiBtwC,GAC9CwxM,EAAWD,GAAY/nL,GACvBsoL,EAAWN,EAASvzK,KAAOuzK,EAAStzK,MACpC6zK,EAAUP,EAAS13L,IAAM03L,EAASpzK,OAKlCO,EAAQwyK,GAAQ3nL,EAAOmV,OAAQG,EAASqyK,GAAQ3nL,EAAOsV,QAqB3D,GAlByB,eAArBtV,EAAOwoL,YAOH7nM,KAAK8T,MAAM0gB,EAAQmzK,KAAc3zK,IACjCQ,GAAS0yK,GAAe7nL,EAAQ,OAAQ,SAAWsoL,GAEnD3nM,KAAK8T,MAAM6gB,EAASizK,KAAa1zK,IACjCS,GAAUuyK,GAAe7nL,EAAQ,MAAO,UAAYuoL,KAOvDE,GAAkBjyM,GAAS,CAK5B,IAAIkyM,EAAgB/nM,KAAK8T,MAAM0gB,EAAQmzK,GAAY3zK,EAC/Cg0K,EAAiBhoM,KAAK8T,MAAM6gB,EAASizK,GAAW1zK,EAMpB,IAA5Bl0B,KAAK62C,IAAIkxJ,KACTvzK,GAASuzK,GAEoB,IAA7B/nM,KAAK62C,IAAImxJ,KACTrzK,GAAUqzK,GAGlB,OAAOjB,GAAeM,EAASvzK,KAAMuzK,EAAS13L,IAAK6kB,EAAOG,GAQ9D,IAAIszK,GAAuB,WAGvB,MAAkC,qBAAvBC,mBACA,SAAUryM,GAAU,OAAOA,aAAkB+wM,GAAY/wM,GAAQqyM,oBAKrE,SAAUryM,GAAU,OAAQA,aAAkB+wM,GAAY/wM,GAAQsyM,YAC3C,oBAAnBtyM,EAAO4xM,SAVK,GAkB3B,SAASK,GAAkBjyM,GACvB,OAAOA,IAAW+wM,GAAY/wM,GAAQ4zB,SAASqI,gBAQnD,SAASs2K,GAAevyM,GACpB,OAAKwuM,GAGD4D,GAAqBpyM,GACd0xM,GAAkB1xM,GAEtB6xM,GAA0B7xM,GALtBixM,GAcf,SAASuB,GAAmBr9I,GACxB,IAAI90B,EAAI80B,EAAG90B,EAAGC,EAAI60B,EAAG70B,EAAG3B,EAAQw2B,EAAGx2B,MAAOG,EAASq2B,EAAGr2B,OAElD2zK,EAAoC,qBAApBC,gBAAkCA,gBAAkBhlM,OACpE8wB,EAAO9wB,OAAOhM,OAAO+wM,EAAOznM,WAShC,OAPA6lM,GAAmBryK,EAAM,CACrB6B,EAAGA,EAAGC,EAAGA,EAAG3B,MAAOA,EAAOG,OAAQA,EAClChlB,IAAKwmB,EACLpC,MAAOmC,EAAI1B,EACXP,OAAQU,EAASwB,EACjBrC,KAAMoC,IAEH7B,EAYX,SAAS0yK,GAAe7wK,EAAGC,EAAG3B,EAAOG,GACjC,MAAO,CAAEuB,EAAGA,EAAGC,EAAGA,EAAG3B,MAAOA,EAAOG,OAAQA,GAO/C,IAAI6zK,GAAmC,WAMnC,SAASA,EAAkB3yM,GAMvB6K,KAAK+nM,eAAiB,EAMtB/nM,KAAKgoM,gBAAkB,EAMvBhoM,KAAKioM,aAAe5B,GAAe,EAAG,EAAG,EAAG,GAC5CrmM,KAAK7K,OAASA,EA0BlB,OAlBA2yM,EAAkB3nM,UAAU+nM,SAAW,WACnC,IAAIv0K,EAAO+zK,GAAe1nM,KAAK7K,QAE/B,OADA6K,KAAKioM,aAAet0K,EACZA,EAAKG,QAAU9zB,KAAK+nM,gBACxBp0K,EAAKM,SAAWj0B,KAAKgoM,iBAQ7BF,EAAkB3nM,UAAUgoM,cAAgB,WACxC,IAAIx0K,EAAO3zB,KAAKioM,aAGhB,OAFAjoM,KAAK+nM,eAAiBp0K,EAAKG,MAC3B9zB,KAAKgoM,gBAAkBr0K,EAAKM,OACrBN,GAEJm0K,EAnD2B,GAsDlCM,GAAqC,WAOrC,SAASA,EAAoBjzM,EAAQkzM,GACjC,IAAIC,EAAcX,GAAmBU,GAOrCrC,GAAmBhmM,KAAM,CAAE7K,OAAQA,EAAQmzM,YAAaA,IAE5D,OAAOF,EAjB6B,GAoBpCG,GAAmC,WAWnC,SAASA,EAAkB10I,EAAU20I,EAAYC,GAc7C,GAPAzoM,KAAK0oM,oBAAsB,GAM3B1oM,KAAK2oM,cAAgB,IAAIvF,GACD,oBAAbvvI,EACP,MAAM,IAAIpU,UAAU,2DAExBz/C,KAAK4oM,UAAY/0I,EACjB7zD,KAAK6oM,YAAcL,EACnBxoM,KAAK8oM,aAAeL,EAoHxB,OA5GAF,EAAkBpoM,UAAUwxC,QAAU,SAAUx8C,GAC5C,IAAKqJ,UAAUtD,OACX,MAAM,IAAIukD,UAAU,4CAGxB,GAAuB,qBAAZkP,SAA6BA,mBAAmB9rD,OAA3D,CAGA,KAAM1N,aAAkB+wM,GAAY/wM,GAAQw5D,SACxC,MAAM,IAAIlP,UAAU,yCAExB,IAAIspJ,EAAe/oM,KAAK2oM,cAEpBI,EAAavrM,IAAIrI,KAGrB4zM,EAAap9L,IAAIxW,EAAQ,IAAI2yM,GAAkB3yM,IAC/C6K,KAAK6oM,YAAY5D,YAAYjlM,MAE7BA,KAAK6oM,YAAY7D,aAQrBuD,EAAkBpoM,UAAU6oM,UAAY,SAAU7zM,GAC9C,IAAKqJ,UAAUtD,OACX,MAAM,IAAIukD,UAAU,4CAGxB,GAAuB,qBAAZkP,SAA6BA,mBAAmB9rD,OAA3D,CAGA,KAAM1N,aAAkB+wM,GAAY/wM,GAAQw5D,SACxC,MAAM,IAAIlP,UAAU,yCAExB,IAAIspJ,EAAe/oM,KAAK2oM,cAEnBI,EAAavrM,IAAIrI,KAGtB4zM,EAAa9xM,OAAO9B,GACf4zM,EAAalzM,MACdmK,KAAK6oM,YAAY1D,eAAenlM,SAQxCuoM,EAAkBpoM,UAAU2xC,WAAa,WACrC9xC,KAAKipM,cACLjpM,KAAK2oM,cAAcvsB,QACnBp8K,KAAK6oM,YAAY1D,eAAenlM,OAQpCuoM,EAAkBpoM,UAAUslM,aAAe,WACvC,IAAI1yI,EAAQ/yD,KACZA,KAAKipM,cACLjpM,KAAK2oM,cAAc5nM,SAAQ,SAAUmoM,GAC7BA,EAAYhB,YACZn1I,EAAM21I,oBAAoBltM,KAAK0tM,OAU3CX,EAAkBpoM,UAAUwlM,gBAAkB,WAE1C,GAAK3lM,KAAK0lM,YAAV,CAGA,IAAIhC,EAAM1jM,KAAK8oM,aAEXrF,EAAUzjM,KAAK0oM,oBAAoB/xM,KAAI,SAAUuyM,GACjD,OAAO,IAAId,GAAoBc,EAAY/zM,OAAQ+zM,EAAYf,oBAEnEnoM,KAAK4oM,UAAU7mM,KAAK2hM,EAAKD,EAASC,GAClC1jM,KAAKipM,gBAOTV,EAAkBpoM,UAAU8oM,YAAc,WACtCjpM,KAAK0oM,oBAAoB14L,OAAO,IAOpCu4L,EAAkBpoM,UAAUulM,UAAY,WACpC,OAAO1lM,KAAK0oM,oBAAoBxtM,OAAS,GAEtCqtM,EAlJ2B,GAwJlCnD,GAA+B,qBAAZ+D,QAA0B,IAAIA,QAAY,IAAI/F,GAKjEgG,GAAgC,WAOhC,SAASA,EAAev1I,GACpB,KAAM7zD,gBAAgBopM,GAClB,MAAM,IAAI3pJ,UAAU,sCAExB,IAAKjhD,UAAUtD,OACX,MAAM,IAAIukD,UAAU,4CAExB,IAAI+oJ,EAAa9D,GAAyBoB,cACtC/0J,EAAW,IAAIw3J,GAAkB10I,EAAU20I,EAAYxoM,MAC3DolM,GAAUz5L,IAAI3L,KAAM+wC,GAExB,OAAOq4J,EAlBwB,GAqBnC,CACI,UACA,YACA,cACFroM,SAAQ,SAAUsoM,GAChBD,GAAejpM,UAAUkpM,GAAU,WAC/B,IAAI/+I,EACJ,OAAQA,EAAK86I,GAAU7hM,IAAIvD,OAAOqpM,GAAQ1lM,MAAM2mD,EAAI9rD,eAI5D,IA4BI8qM,GAAoBC,GAqBpBC,GAAoBC,GAyFpBC,GAuDAC,GA2GAC,GAAoBC,GAAoBC,GAAoBC,GAqB5DC,GA+PAC,GAAoBC,GAAoBC,GAAoBC,GAAkBC,GAhkB9ExyM,GAAQ,WAER,MAAuC,qBAA5B+rM,GAASwF,eACTxF,GAASwF,eAEbA,GALC,GAQRkB,GAAkC,SAAUj1I,GAE5C,SAASi1I,IACL,OAAkB,OAAXj1I,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAe/D,OAjBAw/C,EAAY8qJ,EAAkBj1I,GAI9Bi1I,EAAiBnqM,UAAUo3D,YAAc,SAAU5C,GAC/C,IAAI9O,EAAKjvB,GAAQ+9B,EAAGx/D,OAAQ,MAC5B6K,KAAK8vB,MAAMynC,YAAY,UAAW,CAC9BvoD,MAAO2L,OAAOkrC,EAAGxgC,aAAa,kBAGtCilL,EAAiBnqM,UAAUsgK,OAAS,WAChC,IAAI1tG,EAAQ/yD,KACZ,OAAO8tC,GAAKy7J,KAAuBA,GAAqBtpJ,EAAqB,CAAC,gCAAiC,mDAAuD,uBAAyB,6EAAkF,4CAA6C,CAAC,gCAAiC,mDAAuD,uBACnZ,6EAAkF,+CAA+C,SAAU0U,GAAM,OAAO5B,EAAMwE,YAAY5C,KAAQkoH,GAAKt5K,IAAI,YAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG5M,KAAI,SAAUqY,GACzO,OAAO8+B,GAAKw7J,KAAuBA,GAAqBrpJ,EAAqB,CAAC,mCAAqC,iEAAuE,IAAK,IAAK,2CAA4C,CAAC,mCAAqC,iEAAuE,IAAK,IAAK,6CAA8CjxC,EAAO,IAAMA,EAAO6tK,GAAKt5K,IAAI,WAAYyL,MAC9b6tK,GAAKt5K,IAAI,eAEV+mM,EAlB0B,CAmBnClI,IAGEmI,GAAsB,SAAUl1I,GAEhC,SAASk1I,IACL,OAAkB,OAAXl1I,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAc/D,OAhBAw/C,EAAY+qJ,EAAMl1I,GAIlBk1I,EAAKpqM,UAAUqqM,UAAY,SAAU71I,EAAI81I,GACrCzqM,KAAK8vB,MAAMstJ,QAAQzoH,EAAI81I,IAE3BF,EAAKpqM,UAAUsgK,OAAS,WACpB,IAAI1tG,EAAQ/yD,KACZ,OAAO8tC,GAAK27J,KAAuBA,GAAqBxpJ,EAAqB,CAAC,uBAAyB,oCAAwC,wBAAyB,CAAC,uBAAyB,oCAC9L,0BAA2B70B,GAAI,QAASprB,KAAK8vB,MAAM46K,KAAK/zM,KAAI,SAAU2zD,GACtE,IAAIvnD,EAAOunD,EAAGvnD,KAAM7E,EAAOosD,EAAGpsD,KAC1BgqM,EAAWn1I,EAAMjjC,MAAM26K,YAAc1nM,EACzC,OAAO+qC,GAAK07J,KAAuBA,GAAqBvpJ,EAAqB,CAAC,oDAAsD,4BAA8B,8DAAkE,mCAAsC,8BAAiC,mCAAqC,oCAAqC,CAAC,oDAAsD,4BAA8B,8DAAkE,mCAAsC,8BAAiC,mCAAqC,sCAAuCioJ,EAAW,UAAY,IAAI,SAAUvzI,GAAM,OAAO5B,EAAMy3I,UAAU71I,EAAI5xD,KAAU85K,GAAKt5K,IAAIrF,GAAOgqM,EAAW,OAAS,QAASA,EAAW,IAAM,KAAMrrB,GAAKt5K,IAAIrF,SAG7zBqsM,EAjBc,CAkBvBnI,IAGEuI,GAAU,KACVC,GAAgC,SAAUv1I,GAE1C,SAASu1I,EAAe96K,GACpB,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KAqCxC,OApCA+yD,EAAM83I,WAAa,SAAUJ,QACP,IAAdA,IAAwBA,EAAY,QACxC,IAAIK,EAAQ/3I,EAAMsvI,KAAKx+I,IACvBinJ,EAAMnrM,MAAQ,GACdozD,EAAMsvI,KAAKhuI,QAAQ10D,MAAQ,GAC3BozD,EAAMsvI,KAAK0I,KAAKprM,MAAQ,GACxB2jD,GAAcwnJ,EAAO,SACrB/3I,EAAMuvI,SAAS,CAAEmI,UAAWA,EAAWM,KAAM,KAAMC,oBAAqB,MAE5Ej4I,EAAMwE,YAAc,WACc,SAA1BxE,EAAM5+D,MAAMs2M,UACZ13I,EAAMk4I,mBAGNl4I,EAAMm4I,gBAGdn4I,EAAMy3I,UAAY,SAAUn2L,EAAGo2L,GACvBA,IAAc13I,EAAM5+D,MAAMs2M,WAC1B13I,EAAM83I,WAAWJ,IAGzB13I,EAAMo4I,kBAAoB,WACtBp4I,EAAMsvI,KAAK0I,KAAK/2J,SAEpB+e,EAAMq4I,WAAa,SAAUz2I,GACzB,IAAIC,EAAQD,EAAGx/D,OAAOy/D,OACR,OAAVA,QAA4B,IAAVA,OAAmB,EAASA,EAAM15D,SACpD63D,EAAMuvI,SAAS,CAAEyI,KAAMn2I,EAAM,MAGrC7B,EAAM5+D,MAAQ,CAAEs2M,UAAW,OAAQM,KAAM,KAAMC,oBAAqB,IACpEj4I,EAAM23I,KAAO,CACT,CAAE3nM,KAAM,OAAQ7E,KAAM,QACtB,CAAE6E,KAAM,MAAO7E,KAAM,QAElB60D,EA4CX,OAnFAvT,EAAYorJ,EAAgBv1I,GAyC5Bu1I,EAAezqM,UAAU8qM,iBAAmB,WACxC,IAAIl4I,EAAQ/yD,KACR40D,EAAQ50D,KAAKqiM,KAAK0I,KAAKn2I,MACvBy2I,EAAYrrM,KAAKqiM,KAAKhuI,QACtB22I,EAAsB,SAC1B,GAAc,OAAVp2I,QAA4B,IAAVA,OAAmB,EAASA,EAAM15D,OAAQ,CAC5D8vM,EAAsB,GACtB,IAAIM,EAAY12I,EAAMrL,KAAK,GACvBgiJ,EAAe,SAAU1nJ,EAAK3lD,GAC9B,OAAO60D,EAAMjjC,MAAMynC,YAAY,WAAY,CAAEnD,SAAUvQ,EAAKwQ,QAASn2D,GAAQmtM,EAAU1rM,SAE3FK,KAAK8vB,MAAMgjC,aAAawB,KAAK,mBAAoBg3I,EAAWC,EAAcZ,IAE9E3qM,KAAKsiM,SAAS,CAAE0I,oBAAqBA,KAEzCJ,EAAezqM,UAAU+qM,aAAe,WACpC,IAAIM,EAAaxrM,KAAKqiM,KAAKx+I,IACvBwnJ,EAAYrrM,KAAKqiM,KAAKhuI,QACtBD,EAAWo3I,EAAW7rM,MACtB00D,EAAUg3I,EAAU1rM,OAAS,QACjC2jD,GAAckoJ,EAAY,SACrBp3I,EAASl5D,OAIVk5D,GACAp0D,KAAK8vB,MAAMynC,YAAY,WAAY,CAAEnD,SAAUA,EAAUC,QAASA,IAJlErR,EAAWwoJ,EAAY,UAO/BZ,EAAezqM,UAAUsrM,mBAAqB,SAAU92I,GACpDA,EAAGxf,kBAEPy1J,EAAezqM,UAAU2sB,QAAU,WAC1B9sB,KAAK8vB,MAAM8vK,MACZ5/L,KAAK6qM,cAGbD,EAAezqM,UAAUsgK,OAAS,WAC9B,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK7L,MAAOs2M,EAAYngJ,EAAGmgJ,UAAWM,EAAOzgJ,EAAGygJ,KAAMC,EAAsB1gJ,EAAG0gJ,oBACxF,OAAOl9J,GAAK47J,KAAuBA,GAAqBzpJ,EAAqB,CAAC,4BAA8B,gBAAkB,SAAU,cAAe,YAAa,oCAAsC,mDAAuD,+GAAoH,+DAAiE,wEAA4E,iDAAmD,GAAI,0BAA4B,+BAAgC,8BAA+B,yFAA6F,0BAA4B,8BAA+B,gKAAuK,qBAAsB,4EAA+E,sGAA2G,qCAAuC,8CAAmD,aAAe,kBAAmB,iEAAqE,aAAe,kBAAmB,6DAA8D,CAAC,4BAA8B,gBAAkB,SAAU,cAAe,YAAa,oCAAsC,mDAAuD,+GAAoH,+DAAiE,wEAA4E,iDAAmD,GAAI,0BAA4B,+BAAgC,8BAA+B,yFAA6F,0BAA4B,8BAA+B,gKAAuK,qBAAsB,4EAA+E,sGAA2G,qCAAuC,8CAAmD,aAAe,kBAAmB,iEAAqE,aAAe,kBAAmB,+DAAgE48H,GAAKt5K,IAAI,gBAAiBgnM,GAAMvqM,KAAK0qM,KAAMD,EAAWzqM,KAAKwqM,UAAyB,QAAdC,EAAsB,QAAU,OAAQ5tB,GAAKt5K,IAAI,cAAc,SAAUsiD,GAAM,OAAQkN,EAAMsvI,KAAKx+I,IAAMgC,IAAsB,SAAd4kJ,EAAuB,QAAU,OAAQ5tB,GAAKt5K,IAAI,qBAAsB6nB,GAAI,aAAc2/K,EAAO,YAAcC,EAAqBhrM,KAAKmrM,kBAAmBnrM,KAAKyrM,mBAAoBV,EAAOA,EAAKhoM,KAAO85K,GAAKt5K,IAAI,WAAY6nB,GAAI,sBAAuBprB,KAAKmrM,kBAAmBtuB,GAAKt5K,IAAI,iBAAkBvD,KAAKorM,YAAY,SAAUvlJ,GAAM,OAAQkN,EAAMsvI,KAAK0I,KAAOllJ,IAAQg3H,GAAKt5K,IAAI,gBAAgB,SAAUsiD,GAAM,OAAQkN,EAAMsvI,KAAKhuI,QAAUxO,IAAQz6B,GAAI,oBAAqBA,GAAI,gBAAiBprB,KAAK8vB,MAAM47K,UAAW7uB,GAAKt5K,IAAI,UAAW6nB,GAAI,aAAcprB,KAAKu3D,YAAaslH,GAAKt5K,IAAI,QAEjjHqnM,EApFwB,CAqFjCxI,IAGEuJ,GAA+B,SAAUt2I,GAEzC,SAASs2I,IACL,IAAI54I,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAoBhE,OAnBA+yD,EAAMwE,YAAc,WAChB,IAAIq0I,EAAY74I,EAAMsvI,KAAKx+I,IACvBgoJ,EAAa94I,EAAMsvI,KAAKnkM,KAG5B,GAFAolD,GAAcsoJ,EAAW,SACzBtoJ,GAAcuoJ,EAAY,SACtBD,EAAUjsM,MAAMzE,OAAS,EACzB8nD,EAAW4oJ,EAAW,aAD1B,CAIA,IAAIE,EAAgB7pJ,EAAc8Q,EAAMjjC,MAAMi8K,cAAc1/H,SACxDy/H,GAAiBD,EAAWlsM,MAAMzE,OAAS,EAC3C8nD,EAAW6oJ,EAAY,SAG3B94I,EAAMjjC,MAAMynC,YAAY,UAAW,CAC/B8U,QAASu/H,EAAUjsM,MACnBysE,SAAUy/H,EAAWlsM,UAGtBozD,EA4BX,OAlDAvT,EAAYmsJ,EAAet2I,GAwB3Bs2I,EAAcxrM,UAAU0qM,WAAa,WACjC,IAAIvgJ,EAAKtqD,KAAK8vB,MAAMi8K,cAAe1/H,EAAU/hB,EAAG+hB,QAASD,EAAW9hB,EAAG8hB,SACnEw/H,EAAY5rM,KAAKqiM,KAAKx+I,IACtBgoJ,EAAa7rM,KAAKqiM,KAAKnkM,KAC3BolD,GAAcsoJ,EAAW,SACzBtoJ,GAAcuoJ,EAAY,QAAS,YACnCA,EAAWlpK,gBAAgB,YACvB0pC,IACArpB,EAAW6oJ,EAAY,YACvBA,EAAW1hL,aAAa,WAAY,aAExCyhL,EAAUjsM,MAAQ0sE,GAAW,GAC7Bw/H,EAAWlsM,MAAQysE,GAAY,IAEnCu/H,EAAcxrM,UAAU68C,QAAU,WAC9Bh9C,KAAK6qM,cAETc,EAAcxrM,UAAU2sB,QAAU,SAAUk0K,IACnCA,EAAUpB,MAAQ5/L,KAAK8vB,MAAM8vK,MAC9B5/L,KAAK6qM,cAGbc,EAAcxrM,UAAUsgK,OAAS,WAC7B,IAAI1tG,EAAQ/yD,KACZ,OAAO8tC,GAAK67J,KAAuBA,GAAqB1pJ,EAAqB,CAAC,4BAA8B,gDAAoD,sGAA2G,2DAA8D,uGAA4G,qCAAuC,8CAAmD,aAAe,kBAAmB,iEAAqE,aAAe,kBAAmB,6DAA8D,CAAC,4BAA8B,gDAAoD,sGAA2G,2DAA8D,uGAA4G,qCAAuC,8CAAmD,aAAe,kBAAmB,iEAAqE,aAAe,kBAAmB,+DAAgE48H,GAAKt5K,IAAI,eAAgBs5K,GAAKt5K,IAAI,QAAQ,SAAUsiD,GAAM,OAAQkN,EAAMsvI,KAAKx+I,IAAMgC,IAAQg3H,GAAKt5K,IAAI,cAAc,SAAUsiD,GAAM,OAAQkN,EAAMsvI,KAAKnkM,KAAO2nD,IAAQz6B,GAAI,oBAAqBA,GAAI,gBAAiBprB,KAAK8vB,MAAM47K,UAAW7uB,GAAKt5K,IAAI,UAAW6nB,GAAI,aAAcprB,KAAKu3D,YAAaslH,GAAKt5K,IAAI,QAEvoDooM,EAnDuB,CAoDhCvJ,IAGE4J,GAAa,GACbC,GAAc,GACdC,GAAgB,EAChBC,GAAgB,GAChBC,GAAgB,EAChBC,GAAgB,EAChBC,GAA0B,EAC1BC,GAA0B,EAC1BC,GAAe,EACfC,GAAgC,SAAUp3I,GAE1C,SAASo3I,EAAe38K,GACpB,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KAkBxC,OAjBA+yD,EAAM25I,qBAAuB,SAAUpiJ,GACnC,IAAIqiJ,EAAQriJ,EAAGqiJ,MAAOC,EAAQtiJ,EAAGsiJ,MAC7Bp3K,EAAIm3K,EAAQ55I,EAAM85I,WAAWz5K,KAC7BqC,EAAIm3K,EAAQ75I,EAAM85I,WAAW59L,IAC7Bha,EAAQ89D,EAAM+5I,0BAA0Bt3K,EAAGC,GAC/Cs9B,EAAMuvI,SAAS3iJ,EAAW,GAAI1qD,KAElC89D,EAAMwE,YAAc,WAChBxE,EAAMjjC,MAAMynC,YAAY,WAAY,CAChCgQ,SAAUxU,EAAM5+D,MAAMyiL,OAAS,EAC/BxvG,YAAarU,EAAM5+D,MAAM0iL,OAAS,KAG1C9jH,EAAM5+D,MAAQ,CACVyiL,QAAS,EACTC,QAAS,GAEN9jH,EAyEX,OA7FAvT,EAAYitJ,EAAgBp3I,GAsB5Bo3I,EAAetsM,UAAU4sM,eAAiB,WACtC,OAA8B,IAAvB/sM,KAAK7L,MAAM0iL,OAAgB,GAAK72K,KAAK7L,MAAM0iL,OAAS,EAAI,OAAS72K,KAAK7L,MAAMyiL,OAAS,IAEhG61B,EAAetsM,UAAU6sM,gBAAkB,SAAUn2B,EAAQD,GACzD,MAAO,CACH9iJ,OAAQ+iJ,EAAS,GAAKm1B,GACtB/3K,QAAS2iJ,EAAS,GAAKq1B,KAG/BQ,EAAetsM,UAAU8sM,iBAAmB,SAAUz3K,EAAGC,GACrD,MAAO,CACHohJ,OAAQv3K,KAAK+4B,MAAM7C,EAAIw2K,IACvBp1B,OAAQt3K,KAAK+4B,MAAM5C,EAAIw2K,MAG/BQ,EAAetsM,UAAU+sM,cAAgB,WACrC,IAAI5iJ,EAAKtqD,KAAK7L,MAAOg5M,EAAY7iJ,EAAGusH,OAAQu2B,EAAY9iJ,EAAGssH,OACvDC,EAASv3K,KAAKiG,IAAI4nM,EAAWf,IAC7Bx1B,EAASt3K,KAAKiG,IAAI6nM,EAAWlB,IAOjC,OANIiB,GAAaf,IAAiBv1B,EAASw1B,KACvCx1B,GAAU,GAEVu2B,GAAalB,IAAiBt1B,EAASu1B,KACvCv1B,GAAU,GAEP,CAAEC,OAAQA,EAAS,EAAGD,OAAQA,EAAS,IAElD61B,EAAetsM,UAAUktM,sBAAwB,WAC7C,IAAI/iJ,EAAKtqD,KAAKgtM,gBAAgBhtM,KAAK7L,MAAM0iL,OAAQ72K,KAAK7L,MAAMyiL,QAAS9iJ,EAAQw2B,EAAGx2B,MAAOG,EAASq2B,EAAGr2B,OACnG,OAAKH,GAAUG,EAGR,CAAEH,MAAOA,EAAQ04K,GAAcv4K,OAAQA,EAASu4K,GAAcroJ,QAAS,SAFnE,CAAEA,QAAS,SAI1BsoJ,EAAetsM,UAAU2sM,0BAA4B,SAAUt3K,EAAGC,GAC9D,IAAIxgC,EAAQ+K,KAAKitM,iBAAiBz3K,EAAGC,GAGrC,OAFAxgC,EAAM2hL,OAASt3K,KAAKqL,IAAIrL,KAAKiG,IAAItQ,EAAM2hL,OAAQ01B,IAA0BH,IACzEl3M,EAAM4hL,OAASv3K,KAAKqL,IAAIrL,KAAKiG,IAAItQ,EAAM4hL,OAAQ01B,IAA0BF,IAClEp3M,GAEXw3M,EAAetsM,UAAU2sB,QAAU,WAC/B,GAAK9sB,KAAK8vB,MAAM8vK,MAGX,IAA2B,IAAvB5/L,KAAK7L,MAAM0iL,SAAwC,IAAvB72K,KAAK7L,MAAMyiL,OAAe,CAC3D,IAAItsH,EAAKtqD,KAAKqiM,KAAKiL,QAAQ15K,wBAAyBR,EAAOk3B,EAAGl3B,KAAM6+B,EAAQ3H,EAAGr7C,IAC/EjP,KAAK6sM,WAAa,CACdz5K,KAAMpK,OAAOukL,YAAcn6K,EAC3BnkB,IAAK+Z,OAAOwkL,YAAcv7I,SAN9BjyD,KAAKsiM,SAAS,CAAEzrB,QAAS,EAAGD,QAAS,KAU7C61B,EAAetsM,UAAUstM,gBAAkB,SAAUC,GAGjD,IAFA,IAAI72B,EAAS62B,EAAW72B,OAAQD,EAAS82B,EAAW92B,OAChDpuG,EAAO,GACF5wE,EAAI,EAAGA,EAAIg/K,EAAQh/K,GAAK,EAAG,CAEhC,IADA,IAAIm8J,EAAQ,GACHjoJ,EAAI,EAAGA,EAAI+qK,EAAQ/qK,GAAK,EAAG,CAChC,IAAI6hM,EAAsBviL,GAAI,eAAiBxzB,EAAI,EAAI,GAAK,WAC5Dm8J,EAAMv4J,KAAKsyC,GAAK87J,KAAuBA,GAAqB3pJ,EAAqB,CAAC,eAAiB,YAAc,CAAC,eAAiB,cAAgB0tJ,IAEvJnlI,EAAKhtE,KAAKsyC,GAAK+7J,KAAuBA,GAAqB5pJ,EAAqB,CAAC,eAAiB,KAAO,UAAW,CAAC,eAAiB,KAAO,YAAa70B,GAAI,aAAc2oI,IAEhL,OAAOjmH,GAAKg8J,KAAuBA,GAAqB7pJ,EAAqB,CAAC,eAAiB,KAAO,UAAW,CAAC,eAAiB,KAAO,YAAa70B,GAAI,SAAUo9C,IAEzKikI,EAAetsM,UAAUsgK,OAAS,WAC9B,IAAI1tG,EAAQ/yD,KACR0tM,EAAa1tM,KAAKktM,gBAClBU,EAAqB5tM,KAAKqtM,wBAC9B,OAAOv/J,GAAKi8J,KAAuBA,GAAqB9pJ,EAAqB,CAAC,4BAA8B,sCAAyC,oBAAsB,2BAA4B,uBAAwB,0BAA2B,2BAA6B,WAAa,8CAAgD,KAAO,4BAA6B,CAAC,4BAA8B,sCAAyC,oBAAsB,2BAA4B,uBAAwB,0BAA2B,2BAA6B,WAAa,8CAAgD,KAAO,8BAA+B48H,GAAKt5K,IAAI,gBAAiB6nB,GAAI,oBAAoB,SAAUy6B,GAAM,OAAQkN,EAAMsvI,KAAKiL,QAAUznJ,IAAQ7lD,KAAK0sM,qBAAsB1sM,KAAKu3D,YAAav3D,KAAKytM,gBAAgBC,GAAatiL,GAAI,yBAA0BwiL,EAAoBxiL,GAAI,qBAAsBprB,KAAK+sM,mBAEz6BN,EA9FwB,CA+FjCrK,IAGEyL,GAAiC,SAAUx4I,GAE3C,SAASw4I,IACL,OAAkB,OAAXx4I,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAc/D,OAhBAw/C,EAAYquJ,EAAiBx4I,GAI7Bw4I,EAAgB1tM,UAAU68C,QAAU,WAEhCh9C,KAAKqiM,KAAKx8I,GAAGnhC,YAAY1kB,KAAK8vB,MAAM2E,OAExCo5K,EAAgB1tM,UAAU2sB,QAAU,SAAUk0K,GAE1ChhM,KAAKqiM,KAAKx8I,GAAG19C,aAAanI,KAAK8vB,MAAM2E,KAAMusK,EAAUvsK,OAEzDo5K,EAAgB1tM,UAAUsgK,OAAS,WAC/B,IAAI1tG,EAAQ/yD,KACZ,OAAO8tC,GAAKk8J,KAAuBA,GAAqB/pJ,EAAqB,CAAC,YAAa,WAAY,CAAC,YAAa,cAAc,SAAU4F,GAAM,OAAQkN,EAAMsvI,KAAKx8I,GAAKA,MAExKgoJ,EAjByB,CAkBlCzL,IAGF,SAAS0L,GAAsBv4M,GAC3B,OAAOqrD,EAAWrrD,GAAQw4M,GAA6Bx4M,GAAQA,EAEnE,SAASy4M,KACL,IAAIhrD,EAAQj6H,SAASiB,cAAc,SAC/BikL,EAAWllL,SAASiB,cAAc,SAClCkkL,EAAenlL,SAASiB,cAAc,QAC1Cg5H,EAAMj7G,UAAY,qBAClBkmK,EAAS14M,KAAO,WAChB04M,EAAStkI,SAAU,EACnBukI,EAAanmK,UAAY,SACzB,IAAIomK,EAAY,SAAU52I,GACtB,OAAO02I,EAAS5lK,iBAAiB,UAAU,SAAUssB,GACjD,IAAIgV,EAAUhV,EAAGx/D,OAAOw0E,QACpBA,EACA3mB,EAAWggG,EAAO,UAGlB1/F,GAAc0/F,EAAO,UAEzBzrF,EAAY,mBAAoB,CAAE39C,OAAQ+vD,QAKlD,OAFAq5E,EAAMt+H,YAAYupL,GAClBjrD,EAAMt+H,YAAYwpL,GACX,CACHnrM,KAAM,aACN8iD,GAAIm9F,EACJmrD,UAAWA,GAGnB,SAASJ,GAA6Bx4M,GAClC,IAAI43D,EACJ,OAAQ53D,GACJ,IAAK,UACD43D,EAAO,CACHpqD,KAAM,UACNglC,UAAW,UACXqmK,QAASvxB,GAAKt5K,IAAI,YAClBpP,MAAO,WAEX,MACJ,IAAK,OACDg5D,EAAO,CACHpqD,KAAM,OACNglC,UAAW,OACXyvB,QAAS,OACT42I,QAASvxB,GAAKt5K,IAAI,QAClBpP,MAAO,UAEX,MACJ,IAAK,SACDg5D,EAAO,CACHpqD,KAAM,SACNglC,UAAW,SACXyvB,QAAS,SACT42I,QAASvxB,GAAKt5K,IAAI,UAClBpP,MAAO,QAEX,MACJ,IAAK,SACDg5D,EAAO,CACHpqD,KAAM,SACNglC,UAAW,SACXyvB,QAAS,SACT42I,QAASvxB,GAAKt5K,IAAI,UAClBpP,MAAO,UAEX,MACJ,IAAK,KACDg5D,EAAO,CACHpqD,KAAM,KACNglC,UAAW,SACXyvB,QAAS,KACT42I,QAASvxB,GAAKt5K,IAAI,QAClBpP,MAAO,iBAEX,MACJ,IAAK,QACDg5D,EAAO,CACHpqD,KAAM,QACNglC,UAAW,QACXyvB,QAAS,aACT42I,QAASvxB,GAAKt5K,IAAI,cAClBpP,MAAO,cAEX,MACJ,IAAK,KACDg5D,EAAO,CACHpqD,KAAM,KACNglC,UAAW,cACXyvB,QAAS,aACT42I,QAASvxB,GAAKt5K,IAAI,kBAClBpP,MAAO,cAEX,MACJ,IAAK,KACDg5D,EAAO,CACHpqD,KAAM,KACNglC,UAAW,eACXyvB,QAAS,cACT42I,QAASvxB,GAAKt5K,IAAI,gBAClBpP,MAAO,eAEX,MACJ,IAAK,OACDg5D,EAAO,CACHpqD,KAAM,OACNglC,UAAW,YACXyvB,QAAS,WACT42I,QAASvxB,GAAKt5K,IAAI,QAClBpP,MAAO,YAEX,MACJ,IAAK,QACDg5D,EAAO,CACHpqD,KAAM,QACNglC,UAAW,QACXqmK,QAASvxB,GAAKt5K,IAAI,gBAClBpP,MAAO,SAEX,MACJ,IAAK,QACDg5D,EAAO,CACHpqD,KAAM,QACNglC,UAAW,QACXqmK,QAASvxB,GAAKt5K,IAAI,iBAEtB,MACJ,IAAK,OACD4pD,EAAO,CACHpqD,KAAM,OACNglC,UAAW,OACXqmK,QAASvxB,GAAKt5K,IAAI,gBAEtB,MACJ,IAAK,OACD4pD,EAAO,CACHpqD,KAAM,OACNglC,UAAW,OACXyvB,QAAS,OACT42I,QAASvxB,GAAKt5K,IAAI,QAClBpP,MAAO,QAEX,MACJ,IAAK,YACDg5D,EAAO,CACHpqD,KAAM,YACNglC,UAAW,YACXyvB,QAAS,YACT42I,QAASvxB,GAAKt5K,IAAI,oBAClBpP,MAAO,aAEX,MACJ,IAAK,SACDg5D,EAAO,CACHpqD,KAAM,SACNglC,UAAW,SACXyvB,QAAS,SACT42I,QAASvxB,GAAKt5K,IAAI,UAClBpP,MAAO,UAEX,MACJ,IAAK,UACDg5D,EAAO,CACHpqD,KAAM,UACNglC,UAAW,UACXyvB,QAAS,UACT42I,QAASvxB,GAAKt5K,IAAI,WAClBpP,MAAO,WAEX,MACJ,IAAK,aACDg5D,EAAO6gJ,KACP,MACJ,IAAK,OACD7gJ,EAAO,CACHpqD,KAAM,OACNglC,UAAW,OACXqmK,QAASvxB,GAAKt5K,IAAI,SAEtB,MAMR,MAHkB,eAAd4pD,EAAKpqD,OACLoqD,EAAKplB,WAAa,IAAM3c,GAAI,kBAEzB+hC,EAEX,SAASkhJ,GAAgB94M,EAAMkiE,GAC3B,IAAI5R,EAAK4R,EAAQ5R,GAAIjvD,EAAM6gE,EAAQ7gE,IAAKo8D,EAAQyE,EAAQzE,MAAO+4I,EAAgBt0I,EAAQs0I,cACvF,OAAQx2M,GACJ,IAAK,UACD,MAAO,CACHkrK,OAAQ,SAAU3wI,GAAS,OAAOge,GAAKm8J,KAAuBA,GAAqBhqJ,EAAqB,CAAC,IAAK,OAAQ,OAAQ,CAAC,IAAK,OAAQ,SAAUqqJ,GAAkBx6K,IACxKiY,UAAW3c,GAAI,qBACfkjL,OAAQzoJ,EACRjvD,IAAKA,GAEb,IAAK,OACD,MAAO,CACH6pK,OAAQ,SAAU3wI,GAAS,OAAOge,GAAKo8J,KAAuBA,GAAqBjqJ,EAAqB,CAAC,IAAK,OAAQ,OAAQ,CAAC,IAAK,OAAQ,SAAU0rJ,GAAe77K,IACrKiY,UAAW3c,GAAI,kBACfkjL,OAAQzoJ,EACRjvD,IAAKA,EACLm1M,cAAeA,GAEvB,IAAK,QACD,MAAO,CACHtrC,OAAQ,SAAU3wI,GAAS,OAAOge,GAAKq8J,KAAuBA,GAAqBlqJ,EAAqB,CAAC,IAAK,OAAQ,OAAQ,CAAC,IAAK,OAAQ,SAAU2qJ,GAAgB96K,IACtKiY,UAAW3c,GAAI,mBACfkjL,OAAQzoJ,EACRjvD,IAAKA,GAEb,IAAK,QACD,MAAO,CACH6pK,OAAQ,SAAU3wI,GAAS,OAAOge,GAAKs8J,KAAqBA,GAAmBnqJ,EAAqB,CAAC,IAAK,OAAQ,OAAQ,CAAC,IAAK,OAAQ,SAAUwsJ,GAAgB38K,IAClKiY,UAAW3c,GAAI,mBACfkjL,OAAQzoJ,EACRjvD,IAAKA,GAEb,IAAK,kBACD,OAAKo8D,EAGErT,EAAW,CAAE8gH,OAAQ,SAAU3wI,GAAS,OAAOge,GAAKu8J,KAAqBA,GAAmBpqJ,EAAqB,CAAC,IAAK,OAAQ,SAAU,OAAQ,CAAC,IAAK,OAAQ,SAAU,SAAU4tJ,GAAiB/9K,EAAOkjC,EAAMv+B,OAAU65K,OAAQzoJ,EAAIjvD,IAAKA,GAAOo8D,GAF/O,KAGf,QACI,OAAO,MAGnB,SAASu7I,GAAc1xL,GACnBA,EAAM2xL,OAAS3xL,EAAM3hB,SAAW2hB,EAAMknB,QAAO,SAAUopB,GAAQ,OAAOA,EAAKqhJ,UAAWtzM,OAE1F,SAASuzM,GAAkBvV,EAAcwV,GACrC,IAAIC,EAAwB,SAAUplJ,GAElC,OADAA,EAAKilJ,OAAuB,eAAdjlJ,EAAKxmD,MAAyB2rM,EACrCnlJ,GAEX,OAAO2vI,EAAa/9K,QAAO,SAAUquC,EAAKD,GACtCC,EAAIhuD,KAAK+tD,EAAK5yD,KAAI,SAAUpB,GAAQ,OAAOo5M,EAAsBb,GAAsBv4M,QACvF,IAAIsnB,EAAQ2sC,GAAKA,EAAItuD,QAAU,GAAK,GAIpC,OAHI2hB,GACA0xL,GAAc1xL,GAEX2sC,IACR,IAEP,SAASolJ,GAAiB1V,EAAcwV,GACpCxV,EAAan4L,SAAQ,SAAU8b,GAC3BA,EAAM9b,SAAQ,SAAUwoD,GAAQ,OAAQA,EAAKilJ,OAAuB,eAAdjlJ,EAAKxmD,MAAyB2rM,KACpFH,GAAc1xL,MAKtB,IA4CIgyL,GA+CAC,GA3FAC,GAAyB,GACzBC,GAAuB,SAAU35I,GAEjC,SAAS25I,IACL,IAAIj8I,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAOhE,OANA+yD,EAAMioH,gBAAkB,SAAUrmH,GACzB/9B,GAAQ+9B,EAAGx/D,OAAQ,IAAMi2B,GAAI,WAC7BwL,GAAQ+9B,EAAGx/D,OAAQ49D,EAAMjjC,MAAMq9B,KAAKmhJ,SACrCv7I,EAAMjjC,MAAM47K,aAGb34I,EA+BX,OAxCAvT,EAAYwvJ,EAAO35I,GAWnB25I,EAAM7uM,UAAU68C,QAAU,WACtBj0B,SAASsf,iBAAiB,YAAaroC,KAAKg7K,iBAC5Ch7K,KAAK8vB,MAAMgjC,aAAaM,OAAO,aAAcpzD,KAAK8vB,MAAM47K,YAE5DsD,EAAM7uM,UAAUwhM,cAAgB,WAC5B54K,SAASof,oBAAoB,YAAanoC,KAAKg7K,kBAEnDg0B,EAAM7uM,UAAU2sB,QAAU,SAAUk0K,GAChC,IAAI12I,EAAKtqD,KAAK8vB,MAAO8vK,EAAOt1I,EAAGs1I,KAAMzyI,EAAO7C,EAAG6C,KAC/C,GAAIyyI,GAAQzyI,EAAKv2D,KAAOoqM,EAAUpB,OAASA,EAAM,CAC7C,IAAIqP,EAAWtvJ,EAAW,GAAIwN,EAAKv2D,KAC/Bm9B,EAAc/zB,KAAKqiM,KAAKx8I,GAAG9xB,YAC3Bm7K,EAAYt4K,GAAQ52B,KAAKqiM,KAAKx8I,GAAI,IAAMz6B,GAAI,YAC5C+jL,EAAqBD,EAAUn7K,YAC/Bk7K,EAAS77K,KAAOW,GAAeo7K,IAC/BF,EAAS77K,KAAO+7K,EAAqBp7K,EAAcg7K,IAElDpmJ,GAAa3oD,KAAK7L,MAAM86M,SAAUA,IACnCjvM,KAAKsiM,SAAS,CAAE2M,SAAUA,MAItCD,EAAM7uM,UAAUsgK,OAAS,WACrB,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK8vB,MAAOq9B,EAAO7C,EAAG6C,KAAMyyI,EAAOt1I,EAAGs1I,KAAM8L,EAAYphJ,EAAGohJ,UAAW54I,EAAexI,EAAGwI,aAAcyE,EAAcjN,EAAGiN,YAC5H9M,EAAK0C,GAAQ,GAAI+X,EAAKza,EAAG1iB,UAAWA,OAAmB,IAAPm9B,EAAgB,GAAKA,EAAIt5D,EAAQ6+C,EAAG7+C,MAAO60J,EAASh2G,EAAGg2G,OAAQr7F,EAAK3a,EAAGshJ,cAAeA,OAAuB,IAAP3mI,EAAgB,GAAKA,EAC3KgqI,EAAazvJ,EAAWA,EAAW,CAAEwE,QAASy7I,EAAO,QAAU,QAAUh0L,GAAQ5L,KAAK7L,MAAM86M,UAChG,OAAOnhK,GAAK+gK,KAAuBA,GAAqB5uJ,EAAqB,CAAC,gCAAkC,IAAK,oBAAsB,iBAAkB,8DAAkE,iBAAmB,wCAAyC,CAAC,gCAAkC,IAAK,oBAAsB,iBAAkB,8DAAkE,iBAAmB,0CAA2C70B,GAAI,SAAU2c,EAAWqnK,GAAY,SAAUvpJ,GAAM,OAAQkN,EAAMsvI,KAAKx8I,GAAKA,IAAQz6B,GAAI,cAAeq1I,GAAUA,EAAO,CAAE3tG,aAAcA,EAAc8sI,KAAMA,EAAM8L,UAAWA,EAAWn0I,YAAaA,EAAaw0I,cAAeA,MAE1sBiD,EAzCe,CA0CxB5M,IAGEiN,GAAiB,EACrB,SAASC,GAAWC,GAChB,OAAsB,SAAUl6I,GAE5B,SAASm6I,EAAU1/K,GACf,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KAgBxC,OAfA+yD,EAAM08I,YAAc,SAAU5pJ,GAC1B,IAAIuoJ,EAAUr7I,EAAMjjC,MAAMy5B,KAAK6kJ,QAC/B,IAAKr7I,EAAMjjC,MAAM0Y,UAAY4lK,EAAS,CAClC,IAAIsB,EAAQ38I,EAAM48I,SAAS9pJ,GACvBzyB,EAAOs8K,EAAMt8K,KAAOi8K,GAAiB,KACrCp9I,EAAQy9I,EAAMzgM,IAAMogM,GAAiB,KACzC1tJ,EAAMoR,EAAMjjC,MAAM8/K,WAAW58L,QAAS,CAAEmxC,QAAS,QAAS/wB,KAAMA,EAAMnkB,IAAKgjD,IAC3Ec,EAAMjjC,MAAM8/K,WAAW58L,QAAQqU,cAAc,SAAS3P,YAAc02L,IAG5Er7I,EAAM88I,YAAc,WAChBluJ,EAAMoR,EAAMjjC,MAAM8/K,WAAW58L,QAAS,UAAW,SAErD+/C,EAAM5+D,MAAQ,CAAEylB,QAAQ,EAAO4uB,SAAU1Y,EAAM0Y,UAC/CuqB,EAAM+8I,WACC/8I,EAqBX,OAvCAvT,EAAYgwJ,EAAWn6I,GAoBvBm6I,EAAUrvM,UAAU2vM,SAAW,WAC3B,IAAI/8I,EAAQ/yD,KACRsqD,EAAKtqD,KAAK8vB,MAAOy5B,EAAOe,EAAGf,KAAMuJ,EAAexI,EAAGwI,aACnDvJ,EAAKp1D,OACL2+D,EAAaM,OAAO,sBAAsB,SAAU9I,GAChD,IAAIG,EACAyV,EAAe5V,EAAG4V,aAClBgF,EAAyC,QAAnCza,EAAKyV,EAAa3W,EAAKp1D,cAA2B,IAAPs2D,EAAgBA,EAAK,GAAI7wC,EAASsrD,EAAGtrD,OAAQ4uB,EAAW08B,EAAG18B,SAChHuqB,EAAMuvI,SAAS,CAAE1oL,SAAUA,EAAQ4uB,SAAuB,OAAbA,QAAkC,IAAbA,EAAsBA,EAAWuqB,EAAMjjC,MAAM0Y,eAI3HgnK,EAAUrvM,UAAUwvM,SAAW,SAAU9pJ,GACrC,IAAIyE,EAAKwH,GAAejM,EAAIjvB,GAAQivB,EAAI,IAAMz6B,GAAI,aAAc4mC,EAAa1H,EAAG0H,WAAYD,EAAYzH,EAAGyH,UAC3G,MAAO,CAAE3+B,KAAM4+B,EAAY/iD,IAAK42C,EAAG3xB,aAAe69B,IAEtDy9I,EAAUrvM,UAAUsgK,OAAS,WACzB,OAAO3yH,GAAKghK,KAAuBA,GAAqB7uJ,EAAqB,CAAC,cAAe,kBAAmB,sBAAuB,2BAA4B,2BAA4B,wBAAyB,wBAAyB,wBAAyB,CAAC,cAAe,kBAAmB,sBAAuB,2BAA4B,2BAA4B,wBAAyB,wBAAyB,0BAA2BsvJ,EAAkBvvM,KAAK8vB,MAAO9vB,KAAK7L,MAAMylB,OAAQ5Z,KAAKyvM,YAAazvM,KAAK6vM,YAAa7vM,KAAK2vM,SAAU3vM,KAAK7L,MAAMq0C,UAAYxoC,KAAK8vB,MAAM0Y,WAE5kBgnK,EAxCU,CAyCnBpN,IAIN,IAuDI2N,GAkDAC,GAoBAC,GAAoBC,GAwDpBC,GAAoBC,GA6NpBC,GAAoBC,GA0DpBC,GAAoBC,GAAoBC,GA+DxCC,GAAoBC,GA2DpBC,GAtkBAC,GAAgB,GAChBC,GAAmC,SAAUz7I,GAE7C,SAASy7I,IACL,IAAI/9I,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAwBhE,OAvBA+yD,EAAM08I,YAAc,WAChB18I,EAAMjjC,MAAM2/K,YAAY18I,EAAMsvI,KAAKx8I,KAEvCkN,EAAMwE,YAAc,WAChB,IAAIjN,EAAKyI,EAAMjjC,MAAOy5B,EAAOe,EAAGf,KAAMgO,EAAcjN,EAAGiN,YAAaw5I,EAAezmJ,EAAGymJ,aAAcpB,EAAWrlJ,EAAGqlJ,SAAU78I,EAAexI,EAAGwI,aAC1I0E,EAAUjO,EAAKiO,QAASz0D,EAAOwmD,EAAKxmD,KAAMiwD,EAAQzJ,EAAKyJ,MAC3D,GAAIwE,EACAD,EAAYC,OAEX,CACD,IAAIomI,EAAY5qI,EAAQ,kBAAoBjwD,EACxCgpM,EAAgBj5I,EAAawB,KAAK,QAAS,wBAAyB,CAAEspI,UAAWA,IAAa,GAC9FzwI,EAAOkhJ,GAAgBzQ,EAAW,CAClC/3I,GAAIkN,EAAMsvI,KAAKx8I,GACfjvD,IAAK+4M,EAAS58I,EAAMsvI,KAAKx8I,IACzBmN,MAAOA,EACP+4I,cAAeA,IAEf5+I,GACA4jJ,EAAa5jJ,KAIlB4F,EAwBX,OAlDAvT,EAAYsxJ,EAAmBz7I,GA4B/By7I,EAAkB3wM,UAAU68C,QAAU,WAClCh9C,KAAKgxM,gBAETF,EAAkB3wM,UAAU2sB,QAAU,SAAUk0K,GACxCA,EAAUz3I,KAAKxmD,OAAS/C,KAAK8vB,MAAMy5B,KAAKxmD,MACxC/C,KAAKgxM,gBAGbF,EAAkB3wM,UAAU6wM,aAAe,WACvC,IAAI1mJ,EAAKtqD,KAAK8vB,MAAOkhL,EAAe1mJ,EAAG0mJ,aAAcznJ,EAAOe,EAAGf,KAE3DynJ,GACAA,EAAaznJ,EAAKxmD,KAAM6uD,GAAc5xD,KAAKqiM,KAAKx8I,KAAO0D,EAAKilJ,OAASqC,GAAgB,KAG7FC,EAAkB3wM,UAAUsgK,OAAS,WACjC,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK8vB,MAAO+/K,EAAcvlJ,EAAGulJ,YAAarnK,EAAW8hB,EAAG9hB,SAAU+gB,EAAOe,EAAGf,KAAM3vC,EAAS0wC,EAAG1wC,OACnGhO,EAAQ+zC,EAAW,CAAEwE,QAASoF,EAAKilJ,OAAS,OAAS,MAAQjlJ,EAAK39C,OAClE06D,GAAmB/c,EAAKxhB,WAAa,KAAOnuB,EAAS,UAAY,IACrE,OAAOk0B,GAAKiiK,KAAuBA,GAAqB9vJ,EAAqB,CAAC,gCAAiC,0CAA6C,mBAAoB,qBAAsB,yBAA0B,wBAAyB,sBAAuB,wBAAyB,sBAAuB,2BAA4B,CAAC,gCAAiC,0CAA6C,mBAAoB,qBAAsB,yBAA0B,wBAAyB,sBAAuB,wBAAyB,sBAAuB,8BAA8B,SAAU4F,GAAM,OAAQkN,EAAMsvI,KAAKx8I,GAAKA,IAAQj6C,EAAO06D,EAAYtmE,KAAKu3D,YAAav3D,KAAKyvM,YAAaI,IAAernK,EAAU+gB,EAAKrrD,MAAQqrD,EAAK6kJ,SAAW,GAAI7kJ,EAAKrrD,MAAQ,KAExxB4yM,EAnD2B,CAoDpC1O,IACE6O,GAAgB3B,GAAWwB,IAG3BI,GAAuC,SAAU77I,GAEjD,SAAS67I,IACL,IAAIn+I,EAAmB,OAAXsC,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAchE,OAbA+yD,EAAM08I,YAAc,WAChB18I,EAAMjjC,MAAM2/K,YAAY18I,EAAMsvI,KAAKx8I,KAEvCkN,EAAMo+I,UAAY,WACd,IAAIhkJ,EAAOkhJ,GAAgB,kBAAmB,CAC1CxoJ,GAAIkN,EAAMsvI,KAAKx8I,GACfjvD,IAAKm8D,EAAMjjC,MAAM6/K,SAAS58I,EAAMsvI,KAAKx8I,IACrCmN,MAAOD,EAAMjjC,MAAMy5B,KAAKyJ,QAExB7F,GACA4F,EAAMjjC,MAAMihL,aAAa5jJ,IAG1B4F,EA4BX,OA5CAvT,EAAY0xJ,EAAuB77I,GAkBnC67I,EAAsB/wM,UAAU68C,QAAU,WACtC,IAAIsN,EAAKtqD,KAAK8vB,MAAOkhL,EAAe1mJ,EAAG0mJ,aAAcznJ,EAAOe,EAAGf,KAE/DvpD,KAAKqiM,KAAKx8I,GAAGnhC,YAAY6kC,EAAK1D,IAE1BmrJ,GACAA,EAAaznJ,EAAKxmD,KAAM6uD,GAAc5xD,KAAKqiM,KAAKx8I,KAEhD0D,EAAK4kJ,WACL5kJ,EAAK4kJ,UAAUnuM,KAAK8vB,MAAMynC,cAGlC25I,EAAsB/wM,UAAU2sB,QAAU,SAAUk0K,GAChD,IAAI12I,EACAG,EAAKzqD,KAAK8vB,MAAOy5B,EAAOkB,EAAGlB,KAAM3vC,EAAS6wC,EAAG7wC,OAAQ4uB,EAAWiiB,EAAGjiB,SACnEw4J,EAAUpnL,SAAWA,GAAUonL,EAAUx4J,WAAaA,GAC5B,QAAzB8hB,EAAKf,EAAK6nJ,iBAA8B,IAAP9mJ,GAAyBA,EAAGvoD,KAAKwnD,EAAM,CAAE3vC,OAAQA,EAAQ4uB,SAAUA,KAG7G0oK,EAAsB/wM,UAAUsgK,OAAS,WACrC,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK8vB,MAAO0Y,EAAW8hB,EAAG9hB,SAAU+gB,EAAOe,EAAGf,KACnD39C,EAAQ,CAAEu4C,QAASoF,EAAKilJ,OAAS,OAAS,gBAC1C6C,EAAc,SAAUC,GAAY,OAAQ9oK,EAAW,KAAO8oK,GAClE,OAAOxjK,GAAKkiK,KAAuBA,GAAqB/vJ,EAAqB,CAAC,6BAA8B,mBAAoB,mBAAoB,qBAAsB,yBAA0B,wBAAyB,yBAA0B,CAAC,6BAA8B,mBAAoB,mBAAoB,qBAAsB,yBAA0B,wBAAyB,4BAA4B,SAAU4F,GAAM,OAAQkN,EAAMsvI,KAAKx8I,GAAKA,IAAQj6C,EAAOwf,GAAI,wBAAyBimL,EAAYrxM,KAAKmxM,WAAYE,EAAYrxM,KAAKyvM,aAAc4B,EAAYrxM,KAAK8vB,MAAM+/K,eAEvkBqB,EA7C+B,CA8CxC9O,IACEmP,GAAoBjC,GAAW4B,IAG/BM,GAA8B,SAAUn8I,GAExC,SAASm8I,IACL,OAAkB,OAAXn8I,GAAmBA,EAAO1xD,MAAM3D,KAAMxB,YAAcwB,KAa/D,OAfAw/C,EAAYgyJ,EAAcn8I,GAI1Bm8I,EAAarxM,UAAUsgK,OAAS,WAC5B,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK8vB,MAAOjT,EAAQytC,EAAGztC,MAAO40L,EAAgBnnJ,EAAGmnJ,cACtDC,EAAa70L,EAAM2xL,OAAS,CAAErqJ,QAAS,QAAW,KAClDwtJ,EAAeF,EAAgB,CAAEttJ,QAAS,QAAW,KACzD,OAAOrW,GAAKoiK,KAAuBA,GAAqBjwJ,EAAqB,CAAC,uBAAyB,WAAa,cAAe,yBAA2B,WAAa,+BAAgC,CAAC,uBAAyB,WAAa,cAC9O,yBAA2B,WAAa,iCAAkC70B,GAAI,iBAAkBsmL,EAAY70L,EAAMlmB,KAAI,SAAU4yD,GAChI,IAAIs4I,EAAOt4I,EAAK1D,GAAK0rJ,GAAoBN,GACzC,OAAOnjK,GAAKmiK,KAAuBA,GAAqBhwJ,EAAqB,CAAC,IAAK,QAAS,OAAQ,SAAU,OAAQ,CAAC,IAAK,QAAS,OAAQ,SAAU,SAAU4hJ,EAAMt4I,EAAKxmD,KAAMgwD,EAAMjjC,MAAOy5B,MAC/Ln+B,GAAI,mBAAoBumL,IAEzBH,EAhBsB,CAiB/BpP,IAGEwP,GAAe,EACfC,GAA2C,SAAUx8I,GAErD,SAASw8I,EAA0B/hL,GAC/B,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KAYxC,OAXA+yD,EAAM++I,oBAAsB,SAAUxnJ,GAClC,IAAIn1D,EAASm1D,EAAGn1D,OACXyhC,GAAQzhC,EAAQ,IAAMi2B,GAAI,sBAC1BwL,GAAQzhC,EAAQ,UACjB49D,EAAMuvI,SAAS,CAAEyP,cAAc,EAAOC,YAAa,QAG3Dj/I,EAAM08I,YAAc,WAChB18I,EAAMjjC,MAAM2/K,YAAY18I,EAAMsvI,KAAKx8I,KAEvCkN,EAAM5+D,MAAQ,CAAE49M,cAAc,EAAOC,YAAa,MAC3Cj/I,EAmCX,OAjDAvT,EAAYqyJ,EAA2Bx8I,GAgBvCw8I,EAA0B1xM,UAAUwvM,SAAW,WAC3C,IAAIh8K,EAAO3zB,KAAK8vB,MAAM6/K,SAAS3vM,KAAKqiM,KAAKx8I,IAEzC,OADAlyB,EAAK1kB,KAAO2iM,GACLjyJ,EAAWA,EAAW,GAAIhsB,GAAO,CAAEP,KAAM,KAAMC,MAAO,MAEjEw+K,EAA0B1xM,UAAU68C,QAAU,WAC1Cj0B,SAASsf,iBAAiB,QAASroC,KAAK8xM,sBAE5CD,EAA0B1xM,UAAU2sB,QAAU,WACtC9sB,KAAK7L,MAAM49M,eAAiB/xM,KAAK7L,MAAM69M,aACvChyM,KAAKsiM,SAAS,CAAE0P,YAAahyM,KAAK2vM,cAG1CkC,EAA0B1xM,UAAUwhM,cAAgB,WAChD54K,SAASof,oBAAoB,QAASnoC,KAAK8xM,sBAE/CD,EAA0B1xM,UAAUsgK,OAAS,WACzC,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK7L,MAAO49M,EAAeznJ,EAAGynJ,aAAcC,EAAc1nJ,EAAG0nJ,YAClEvnJ,EAAKzqD,KAAK8vB,MAAO0Y,EAAWiiB,EAAGjiB,SAAU+gB,EAAOkB,EAAGlB,KAAMD,EAAQmB,EAAGnB,MAAOumJ,EAAcplJ,EAAGolJ,YAC5FoC,EAAe3oJ,EAAMvlB,QAAO,SAAUmuK,GAAgB,OAAQA,EAAa1D,UAC3EkD,EAAaO,EAAa/2M,OAAS,KAAO,CAAEipD,QAAS,QACrDguJ,EAAgBJ,EAAe,KAAO,CAAE5tJ,QAAS,QACrD,OAAOrW,GAAKsiK,KAAuBA,GAAqBnwJ,EAAqB,CAAC,uBAAyB,WAAa,qCAAsC,8CAAiD,uBAAwB,2BAA4B,0BAA2B,wBAAyB,wDAA0D,sBAAwB,mBAAoB,0BAA2B,wCAAyC,CAAC,uBAAyB,WAAa,qCAAsC,8CAAiD,uBAAwB,2BAA4B,0BAA2B,wBAAyB,wDAA0D,sBAAwB,mBAAoB,0BACryB,0CAA2C70B,GAAI,iBAAkBsmL,GAAY,SAAU7rJ,GAAM,OAAQkN,EAAMsvI,KAAKx8I,GAAKA,IAAQ0D,EAAKxhB,WAAW,WAAc,OAAOgrB,EAAMuvI,SAAS,CAAEyP,cAAc,MAAY/xM,KAAKyvM,YAAaI,EAAarnK,EAAUpd,GAAI,oBAAqBu0B,EAAWA,EAAW,GAAIwyJ,GAAgBH,IAAc,SAAUnsJ,GAAM,OAAQkN,EAAMsvI,KAAK+P,WAAavsJ,IAAQosJ,EAAa/2M,OAC1Y+2M,EAAat7M,KAAI,SAAUkmB,EAAOhlB,GAChC,IAAIyyD,EACJ,OAAOxc,GAAKqiK,KAAuBA,GAAqBlwJ,EAAqB,CAAC,wBAAyB,+BAAgC,uCAAwC,4BAA6B,4CAA6C,CAAC,wBAAyB,+BAAgC,uCAC/S,4BAA6B,8CAA+CuxJ,GAAc30L,EAAOhlB,IAAUo6M,EAAa/2M,OAAS,IAC7F,QAAlCovD,EAAK2nJ,EAAap6M,EAAQ,UAAuB,IAAPyyD,OAAgB,EAASA,EAAGkkJ,QAASz7I,EAAMjjC,UAE7F,OAEH+hL,EAlDmC,CAmD5CzP,IACEiQ,GAAwB/C,GAAWuC,IAGnCS,GAAiB,GACjBC,GAAyB,SAAUl9I,GAEnC,SAASk9I,EAAQziL,GACb,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KAwDxC,OAvDA+yD,EAAMy3I,UAAY,SAAUn2L,EAAGo2L,GAC3B,IAAI33I,EAAeC,EAAMjjC,MAAMgjC,aAC/B,GAAIC,EAAM5+D,MAAMs2M,YAAcA,EAAW,CACrC,IAAIzrI,EAAwB,UAAdyrI,EAAwB,wBAA0B,0BAChE33I,EAAawB,KAAK0K,GAClBjM,EAAMuvI,SAAS,CAAEmI,UAAWA,MAGpC13I,EAAMi+I,aAAe,SAAUjuM,EAAM+wB,GACjCi/B,EAAMy/I,aAAazvM,GAAQ+wB,GAE/Bi/B,EAAMg+I,aAAe,SAAU0B,GAC3B1/I,EAAMuvI,SAAS,CAAE6O,WAAW,EAAMsB,UAAWA,KAEjD1/I,EAAM2/I,UAAY,SAAU9U,EAAWmO,QACb,IAAlBA,IAA4BA,EAAgB,IAChD,IAAIlmJ,EAAKkN,EAAMsvI,KAAKx8I,GAAGx+B,cAAc,IAAM+D,GAAI,iBAAmB,KAAOwyK,GACzE,GAAI/3I,EAAI,CACJ,IAAIyE,EAAKwH,GAAejM,EAAIjvB,GAAQivB,EAAI,IAAMz6B,GAAI,aAAc4mC,EAAa1H,EAAG0H,WAAYD,EAAYzH,EAAGyH,UACvG5E,EAAOkhJ,GAAgBzQ,EAAW,CAClC/3I,GAAIA,EACJjvD,IAAK,CAAEw8B,KAAM4+B,EAAY/iD,IAAK42C,EAAG3xB,aAAe69B,GAChDg6I,cAAeA,IAEf5+I,GACA4F,EAAMg+I,aAAa5jJ,KAI/B4F,EAAM24I,UAAY,WACV34I,EAAM5+D,MAAMg9M,WACZp+I,EAAMuvI,SAAS,CAAE6O,WAAW,KAGpCp+I,EAAMwE,YAAc,SAAUC,EAASC,GACnC,IAAI3E,EAAeC,EAAMjjC,MAAMgjC,aAC/BA,EAAawB,KAAK,UAAWkD,EAASC,GACtC1E,EAAM24I,aAEV34I,EAAM23I,KAAO,CACT,CAAE3nM,KAAM,QAAS7E,KAAM,SACvB,CAAE6E,KAAM,UAAW7E,KAAM,YAE7B60D,EAAMy/I,aAAe,GACrBz/I,EAAM4/I,aAAelE,GAAkB3+K,EAAMopK,cAAgB,GAAInmI,EAAM27I,oBACvE37I,EAAM5+D,MAAQ,CACVm1D,MAAOyJ,EAAM4/I,aACbC,cAAe,GACfzB,WAAW,EACXsB,UAAW,GACXhI,UAAW,SAEf13I,EAAM68I,WAAa,CAAE58L,QAAS,MAC9B+/C,EAAM8/I,eAAiB,IAAIh7M,IAAM,WAAc,OAAOk7D,EAAM+/I,kBAC5D//I,EAAM+8I,WACC/8I,EA6JX,OAvNAvT,EAAY+yJ,EAASl9I,GA4DrBk9I,EAAQpyM,UAAU4yM,kBAAoB,SAAUC,EAAWzpJ,GACvD,IAAI0pJ,EAAaD,EAAUC,WAAYC,EAAYF,EAAUE,UACzDr2L,EAAQ7c,KAAK2yM,aAAaM,GAC9B1pJ,EAAOukJ,GAAsBvkJ,GACzB1sC,EACAA,EAAM7M,OAAOkjM,EAAW,EAAG3pJ,GAG3BvpD,KAAK2yM,aAAan3M,KAAK,CAAC+tD,IAE5BvpD,KAAKsiM,SAAStiM,KAAKmzM,yBAEvBZ,EAAQpyM,UAAUizM,kBAAoB,SAAUrwM,GAC5C,IAAIgwD,EAAQ/yD,KACZihD,EAAejhD,KAAK2yM,cAAc,SAAU91L,GACxC,IAAInR,GAAQ,EAUZ,OATAu1C,EAAepkC,GAAO,SAAU0sC,EAAM1xD,GAClC,OAAI0xD,EAAKxmD,OAASA,IACd2I,GAAQ,EACRmR,EAAM7M,OAAOnY,EAAO,GACpBk7D,EAAMuvI,SAASvvI,EAAMogJ,yBACd,OAIPznM,MAGhB6mM,EAAQpyM,UAAU2vM,SAAW,WACzB,IAAI/8I,EAAQ/yD,KACR8yD,EAAe9yD,KAAK8vB,MAAMgjC,aAC9B9yD,KAAK8yM,aAAe3P,IAAW,WAE3BpwI,EAAMuvI,SAAS,CAAEh5I,MAAOyJ,EAAM4/I,aAAcC,cAAe,KAC3D7/I,EAAMuvI,SAASvvI,EAAMogJ,0BACtB,KACHrgJ,EAAaM,OAAO,YAAapzD,KAAK0yM,YAE1CH,EAAQpyM,UAAUkzM,oBAAsB,WACpC,IAAIjF,EAAU,eAAkBhjL,GAAI,WAAa,+GACjDprB,KAAK4vM,WAAW58L,QAAU0+C,GAAkB08I,EAASpuM,KAAKqiM,KAAKx8I,KAEnE0sJ,EAAQpyM,UAAUuuM,iBAAmB,WACjC,MAAiC,YAA1B1uM,KAAK8vB,MAAM4lC,YAAwD,QAA5B11D,KAAK8vB,MAAMmuK,cAE7DsU,EAAQpyM,UAAUmzM,8BAAgC,SAAUJ,EAAW5pJ,EAAOzsC,EAAO02L,GACjF,IAAIC,EAAW,SAAUC,GACrB,IAAIlqJ,EAAOkqJ,EAAYjkM,MACnB+5C,GACAgqJ,EAAc/3M,KAAK+tD,IAG3B,GAAI2pJ,EAAY,EACZM,EAAS32L,OAER,CACD,IAAI62L,EAAY5qJ,GAAOQ,GACnBoqJ,GACAF,EAASE,KAIrBnB,EAAQpyM,UAAUgzM,qBAAuB,WACrC,IAAIpgJ,EAAQ/yD,KACR2zM,EAAa,EACbrgL,EAActzB,KAAKqiM,KAAKx8I,GAAGvyB,YAC3BsgL,EAAU5zM,KAAKqiM,KAAKx8I,GAAGx+B,cAAc,IAAM+D,GAAI,oBAC/CyoL,EAAeD,EAAUhiJ,GAAcgiJ,GAAW,EAClDtqJ,EAAQ,GACRspJ,EAAgB,GAChBkB,GAAQ,EAiCZ,OAhCA9zM,KAAK2yM,aAAa5xM,SAAQ,SAAUgzM,EAAcd,GAC9C,IAAIp2L,EAAQ,GACR02L,EAAgB,GACpBQ,EAAahzM,SAAQ,SAAUwoD,EAAM2pJ,GAC5B3pJ,EAAKilJ,SACNmF,GAAc5gJ,EAAMy/I,aAAajpJ,EAAKxmD,MAClC4wM,EAAargL,EAAcg/K,IAEtBwB,IACD/gJ,EAAMugJ,8BAA8BJ,EAAW5pJ,EAAOzsC,EAAO02L,GAC7DO,GAAQ,GAEZP,EAAc/3M,KAAK+tD,IAGnB1sC,EAAMrhB,KAAK+tD,OAInB1sC,EAAM3hB,SACNqzM,GAAc1xL,GACdysC,EAAM9tD,KAAKqhB,IAEX02L,EAAcr4M,SACdqzM,GAAcgF,GACdX,EAAcp3M,KAAK+3M,IAGnBN,EAAalgJ,EAAM5+D,MAAMm1D,MAAMpuD,OAAS,IACxCy4M,GAAcE,MAGf,CAAEvqJ,MAAOA,EAAOspJ,cAAeA,IAE1CL,EAAQpyM,UAAU68C,QAAU,WACQ,QAA5Bh9C,KAAK8vB,MAAMmuK,cACXj+L,KAAK8vB,MAAMgjC,aAAawB,KAAK,yBAAyB,GAG1Dt0D,KAAKsiM,SAAStiM,KAAKmzM,wBACnBnzM,KAAKqzM,sBACLrzM,KAAK6yM,eAAelhK,QAAQ3xC,KAAKqiM,KAAKx8I,KAE1C0sJ,EAAQpyM,UAAU2sB,QAAU,SAAUk0K,GAClC,IAAI12I,EAAKtqD,KAAK8vB,MAAO4lC,EAAapL,EAAGoL,WAAYuoI,EAAe3zI,EAAG2zI,aAAcnrI,EAAexI,EAAGwI,aAC/FkhJ,EAAe/V,IAAiB+C,EAAU/C,aAC1CgW,EAAcv+I,IAAesrI,EAAUtrI,WAC3C,GAAIs+I,GAAgBC,EAAa,CAE7BrF,GAAiB5uM,KAAK2yM,aAAc3yM,KAAK0uM,oBACzC,IAAI5/K,EAAW9uB,KAAKmzM,wBAChBa,GAAkC,QAAjB/V,GAAyC,aAAfvoI,KAC3C5C,EAAawB,KAAK,yBAClBxlC,EAAS27K,UAAY,SAEzBzqM,KAAKsiM,SAASxzK,KAGtByjL,EAAQpyM,UAAUwhM,cAAgB,WAC9B34K,OAAOmf,oBAAoB,SAAUnoC,KAAK8yM,cAC1C9yM,KAAK6yM,eAAe/gK,aACpBwf,GAAatxD,KAAK4vM,WAAW58L,UAEjCu/L,EAAQpyM,UAAUsgK,OAAS,WACvB,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK8vB,MAAOmuK,EAAe3zI,EAAG2zI,aAAcnrI,EAAexI,EAAGwI,aAAc4C,EAAapL,EAAGoL,WACjGjL,EAAKzqD,KAAK7L,MAAOs+M,EAAYhoJ,EAAGgoJ,UAAWtB,EAAY1mJ,EAAG0mJ,UAAW1G,EAAYhgJ,EAAGggJ,UAAWnhJ,EAAQmB,EAAGnB,MAAOspJ,EAAgBnoJ,EAAGmoJ,cACpI9iL,EAAQ,CACRgjC,aAAcA,EACd88I,WAAY5vM,KAAK4vM,WACjBpnK,SAAyB,aAAfktB,GAA8C,QAAjBuoI,GAAwC,YAAdwM,EACjElzI,YAAav3D,KAAKu3D,YAClBw5I,aAAc/wM,KAAK+wM,cAEnBmD,EAAgC,QAAjBjW,EAAyB,CAAEkW,oBAAqB,GAAM,KACzE,OAAOrmK,GAAKwiK,KAAuBA,GAAqBrwJ,EAAqB,CAAC,uBAAyB,sCAAyC,gCAAmC,4BAA8B,SAAU,cAAe,YAAa,uDAAyD,oBAAsB,qBAAsB,0BAA2B,gBAAiB,sBAAuB,uBAAwB,oBAAqB,4CAA6C,oBAAqB,oBAAqB,4BAA6B,yBAA0B,2BAA4B,oCAAqC,CAAC,uBAAyB,sCAAyC,gCAC1tB,4BAA8B,SAAU,cAAe,YAAa,uDAAyD,oBAAsB,qBAAsB,0BACzK,gBAAiB,sBAAuB,uBAAwB,oBAAqB,4CAA6C,oBAAqB,oBAAqB,4BAA6B,yBAA0B,2BAA4B,sCAAuC70B,GAAI,WAAYA,GAAI,oBAAoC,YAAfsqC,GAA6C,aAAjBuoI,EACzW,OACA,QAASsM,GAAMvqM,KAAK0qM,KAAMD,EAAWzqM,KAAKwqM,UAAWp/K,GAAI,sBAAsB,SAAUy6B,GAAM,OAAQkN,EAAMsvI,KAAKx8I,GAAKA,IAAQquJ,EAAc5qJ,EAAM3yD,KAAI,SAAUkmB,EAAOhlB,GAC1K,IAAIyyD,EACJ,OAAOxc,GAAKuiK,KAAuBA,GAAqBpwJ,EAAqB,CAAC,oBAAqB,2BAA4B,mCAAoC,kCAAmC,wBAAyB,oCAAqC,CAAC,oBAAqB,2BAA4B,mCAAoC,kCAAmC,wBAAyB,sCAAuCuxJ,GAAc30L,EAAOhlB,IAAUyxD,EAAMpuD,OAAS,IAAkC,QAA3BovD,EAAKhB,EAAMzxD,EAAQ,UAAuB,IAAPyyD,OAAgB,EAASA,EAAGkkJ,QAASz7I,EAAMi+I,aAAclhL,MAC9kBuiL,GAAuBvE,GAAsB,QAAS8E,EAAe9iL,EAAOk/K,GAAOyD,EAAWtB,EAAWr+I,EAAc9yD,KAAK0rM,UAAW1rM,KAAKu3D,cAE7Ig7I,EAxNiB,CAyN1BnQ,IAGEgS,GAA6B,SAAU/+I,GAEvC,SAAS++I,EAAYtkL,GACjB,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KAWxC,OAVA+yD,EAAM++I,oBAAsB,SAAUn9I,GAC7B/9B,GAAQ+9B,EAAGx/D,OAAQ,IAAMi2B,GAAI,kBAC9B2nC,EAAMuvI,SAAS,CAAE1rM,IAAK,QAG9Bm8D,EAAM5+D,MAAQ,CACVyC,IAAK,KACL0mL,WAAY,IAEhBvqH,EAAM+8I,WACC/8I,EAwCX,OArDAvT,EAAY40J,EAAa/+I,GAezB++I,EAAYj0M,UAAU2vM,SAAW,WAC7B,IAAI/8I,EAAQ/yD,KACZA,KAAK8vB,MAAMgjC,aAAaM,OAAO,eAAe,SAAU9I,GACpD,IAAI1zD,EAAM0zD,EAAG1zD,IAAK0mL,EAAahzH,EAAGgzH,WAClCvqH,EAAMuvI,SAAS,CAAE1rM,IAAKA,EAAK0mL,WAAYA,QAG/C82B,EAAYj0M,UAAU68C,QAAU,WAC5Bj0B,SAASsf,iBAAiB,QAASroC,KAAK8xM,sBAE5CsC,EAAYj0M,UAAUwhM,cAAgB,WAClC54K,SAASof,oBAAoB,QAASnoC,KAAK8xM,sBAE/CsC,EAAYj0M,UAAUk0M,qBAAuB,WACzC,IAAIthJ,EAAQ/yD,KACRsqD,EAAKtqD,KAAK7L,MAAOyC,EAAM0zD,EAAG1zD,IAAK0mL,EAAahzH,EAAGgzH,WACnD,OAAO1mL,EACD0mL,EAAWniK,QAAO,SAAUquC,EAAK3sC,GAC/B,IAAIy3L,EAAW,GAYf,OAXAz3L,EAAM9b,SAAQ,SAAUupD,GACpB,IAAI04F,EAAQ14F,EAAG04F,MAAOv4F,EAAKH,EAAGviB,UAAWA,OAAmB,IAAP0iB,GAAwBA,EAAIjiB,EAAW8hB,EAAG9hB,SAAU40I,EAAU9yH,EAAG8yH,QAClHm3B,EAAc,WACT/rK,IACD40I,IACArqH,EAAMuvI,SAAS,CAAE1rM,IAAK,SAG9B09M,EAAS94M,KAAKsyC,GAAKyiK,KAAuBA,GAAqBtwJ,EAAqB,CAAC,oDAAqD,uCAAyC,gGAAqG,KAAO,kDAAmD,CAAC,oDAAqD,uCAAyC,gGAAqG,KAAO,oDAAqDs0J,EAAa/rK,EAAW,YAAc,GAAIT,EAAWi7G,OAE3oBx5F,EAAIhuD,KAAKsyC,GAAK0iK,KAAuBA,GAAqBvwJ,EAAqB,CAAC,0CAA6C,uBAAwB,CAAC,0CAA6C,yBAA0Bq0J,IACtN9qJ,IACR,IACD,IAEV4qJ,EAAYj0M,UAAUsgK,OAAS,WAC3B,IAAI70J,EAAQ+zC,EAAW,CAAEwE,QAASnkD,KAAK7L,MAAMyC,IAAM,QAAU,QAAUoJ,KAAK7L,MAAMyC,KAClF,OAAOk3C,GAAK2iK,KAAqBA,GAAmBxwJ,EAAqB,CAAC,eAAiB,WAAa,6BAAgC,gBAAiB,CAAC,eAAiB,WAAa,6BAAgC,kBAAmB70B,GAAI,gBAAiBxf,EAAO5L,KAAKq0M,yBAEzQD,EAtDqB,CAuD9BhS,IAGEoS,GAAwB,SAAUn/I,GAElC,SAASm/I,EAAO1kL,GACZ,IAAIijC,EAAQsC,EAAOtzD,KAAK/B,KAAM8vB,IAAU9vB,KACxC+yD,EAAM+rI,WAAa,SAAUppI,GACrBA,IAAe3C,EAAM5+D,MAAMuhE,YAC3B3C,EAAMuvI,SAAS,CAAE5sI,WAAYA,KAGrC3C,EAAMqsI,mBAAqB,SAAUnB,GAC7BA,IAAiBlrI,EAAM5+D,MAAM8pM,cAC7BlrI,EAAMuvI,SAAS,CAAErE,aAAcA,KAGvClrI,EAAM4sI,KAAO,WACT5sI,EAAMuvI,SAAS,CAAE3C,MAAM,KAE3B5sI,EAAM6sI,KAAO,WACT7sI,EAAMuvI,SAAS,CAAE3C,MAAM,KAE3B,IAAIjqI,EAAa5lC,EAAM4lC,WAAYuoI,EAAenuK,EAAMmuK,aAOxD,OANAlrI,EAAM5+D,MAAQ,CACVuhE,WAAYA,EACZuoI,aAAcA,EACd0B,MAAM,GAEV5sI,EAAM+8I,WACC/8I,EAgCX,OA1DAvT,EAAYg1J,EAAQn/I,GA4BpBm/I,EAAOr0M,UAAU68C,QAAU,WACvB,IAAIsN,EAAKtqD,KAAK8vB,MAAM2kL,MAAOhW,EAAWn0I,EAAGm0I,SAAUvC,EAAW5xI,EAAG4xI,SAAU4D,EAAYx1I,EAAGw1I,UAC1F9/L,KAAKqiM,KAAKqS,YAAYhwL,YAAY+5K,GAClCz+L,KAAKqiM,KAAKsS,YAAYC,sBAAsB,aAAc1Y,GAC1Dl8L,KAAKqiM,KAAKsS,YAAYjwL,YAAYo7K,IAEtC0U,EAAOr0M,UAAU4yM,kBAAoB,SAAUC,EAAWzpJ,GACtDvpD,KAAK60M,QAAQ9B,kBAAkBC,EAAWzpJ,IAE9CirJ,EAAOr0M,UAAUizM,kBAAoB,SAAUrwM,GAC3C/C,KAAK60M,QAAQzB,kBAAkBrwM,IAEnCyxM,EAAOr0M,UAAUsgK,OAAS,WACtB,IAAI1tG,EAAQ/yD,KACRsqD,EAAKtqD,KAAK8vB,MAAOgjC,EAAexI,EAAGwI,aAAcqrI,EAAiB7zI,EAAG6zI,eAAgBjF,EAAe5uI,EAAG4uI,aAAcO,EAAQnvI,EAAGmvI,MAChIhvI,EAAKzqD,KAAK7L,MAAOwrM,EAAOl1I,EAAGk1I,KAAM1B,EAAexzI,EAAGwzI,aAAcvoI,EAAajL,EAAGiL,WACjFo/I,EAAmBnV,EAAO,UAAY,GACtCoV,EAAsB3pL,GAAmB,aAAfsqC,EAA4B,UAAY,WAClEs/I,EAAmB5pL,GAAI,MAAQ,IAAM6yK,EAAe,SACpDgX,EAAiB7pL,GAAI,CAAW,UAAVquK,EAAmBA,EAAQ,MACrD,OAAO3rJ,GAAK6iK,KAAqBA,GAAmB1wJ,EAAqB,CAAC,gCAAkC,GAAI,GAAI,kBAAoB,uBAAwB,mBAAoB,4BAA6B,4BAA6B,4BAA6B,0BAA2B,gDAAkD,IAAK,oBAAsB,sCAAwC,8CAAiD,IAAK,wBAA0B,8CAAgD,wEAA2E,wBAA0B,+DAAgE,cAAe,iBAAkB,2BAA4B,CAAC,gCAAkC,GAAI,GAAI,kBAAoB,uBAAwB,mBAAoB,4BAA6B,4BAA6B,4BAA6B,0BAA2B,gDAAkD,IAAK,oBAAsB,sCAAwC,8CAAiD,IAAK,wBAA0B,8CAAgD,wEAA2E,wBAA0B,+DAChzC,cAAe,iBAAkB,6BAA8Bg1J,EAAgB7pL,GAAI,aAAc0pL,GAAkB,SAAUjvJ,GAAM,OAAQkN,EAAMsvI,KAAKx8I,GAAKA,IAAQ0sJ,IAAS,SAAUsC,GAAW,OAAQ9hJ,EAAM8hJ,QAAUA,IAAa/hJ,EAAcmrI,EAAc/E,EAAcxjI,EAAYtqC,GAAI,QAAS2pL,GAAqB,SAAUlvJ,GAAM,OAAQkN,EAAMsvI,KAAK6S,cAAgBrvJ,IAAQz6B,GAAI,kBAAmBA,GAAI,gBAAiB4pL,GAAkB,SAAUnvJ,GAAM,OAAQkN,EAAMsvI,KAAKsS,YAAc9uJ,IAAQz6B,GAAI,eAAgBA,GAAI,iBAAiB,SAAUy6B,GAAM,OAAQkN,EAAMsvI,KAAKqS,YAAc7uJ,KAASs4I,GAAkBrwJ,GAAK4iK,KAAuBA,GAAqBzwJ,EAAqB,CAAC,IAAK,iBAAkB,eAAgB,OAAQ,CAAC,IAAK,iBAAkB,eAAgB,SAAUsiJ,GAAQzvI,EAAc4C,GAAa0+I,GAAathJ,IAEr0B0hJ,EAAOr0M,UAAU2vM,SAAW,WACxB,IAAIh9I,EAAe9yD,KAAK8vB,MAAMgjC,aAC9BA,EAAaM,OAAO,OAAQpzD,KAAK2/L,MACjC7sI,EAAaM,OAAO,OAAQpzD,KAAK4/L,MACjC9sI,EAAaM,OAAO,aAAcpzD,KAAK8+L,YACvChsI,EAAaM,OAAO,qBAAsBpzD,KAAKo/L,qBAE5CoV,EA3DgB,CA4DzBpS,IAOE+S,GAA+B,SAAU9/I,GAEzC,SAAS8/I,EAAc73L,GACnB,IAAIgtC,EAEA8qJ,EADAriJ,EAAQsC,EAAOtzD,KAAK/B,KAAMsd,IAAYtd,KAEtCy8B,EAAUgkI,GAAO1tG,EAAMz1C,QAAQuoC,GAAI/X,GAAK8iK,KAAqBA,GAAmB3wJ,EAAqB,CAAC,cAAe,mBAAoB,4BAA6B,qBAAsB,8BAA+B,4BAA6B,4BAA6B,0BAA2B,qBAAsB,wBAAyB,CAAC,cAAe,mBAAoB,4BAA6B,qBAAsB,8BAA+B,4BAA6B,4BAA6B,0BAA2B,qBAAsB,0BAA2Bu0J,IAAQ,SAAUa,GAAU,OAAQD,EAAaC,IAAYtiJ,EAAMD,aAAcC,EAAM8sI,oBAAqB9sI,EAAMz1C,QAAQ6gL,eAAgBprI,EAAMz1C,QAAQ47K,aAAcnmI,EAAMz1C,QAAQ2gL,aAAclrI,EAAMz1C,QAAQ4gL,gBAAiBnrI,EAAMz1C,QAAQm8K,QAa90B,OAZA1mI,EAAMkE,aAAalE,EAAMz1C,QAAQ45C,WACjCnE,EAAMiE,UAAUjE,EAAMz1C,QAAQ2W,QAC9B8+B,EAAMuiJ,UAAY,CACdvC,kBAAmBqC,EAAWrC,kBAAkB50L,KAAKi3L,GACrDhC,kBAAmBgC,EAAWhC,kBAAkBj1L,KAAKi3L,GACrD34K,QAASA,GAE4B,QAAxC6tB,EAAKyI,EAAMyrI,WAAWtF,oBAAiC,IAAP5uI,GAAyBA,EAAGvpD,SAAQ,SAAUw0M,GAC3F,IAAItC,EAAasC,EAAYtC,WAAYC,EAAYqC,EAAYrC,UAAW3pJ,EAAOgsJ,EAAYhsJ,KAC/FwJ,EAAMuiJ,UAAUvC,kBAAkB,CAAEE,WAAYA,EAAYC,UAAWA,GAAa3pJ,MAExFwJ,EAAMD,aAAawB,KAAK,SAAUvB,GAC3BA,EAgCX,OAlDAvT,EAAY21J,EAAe9/I,GAyB3B8/I,EAAcjW,QAAU,SAAU5hL,GAC9B,OAAOA,EAAQ6hL,OAAS,IAAI5F,GAAoBj8K,GAAW,IAAI63L,EAAc73L,IAOjF63L,EAAch1M,UAAU4yM,kBAAoB,SAAUnW,EAAWrzI,GAC7DvpD,KAAKs1M,UAAUvC,kBAAkBnW,EAAWrzI,IAMhD4rJ,EAAch1M,UAAUizM,kBAAoB,SAAUoC,GAClDx1M,KAAKs1M,UAAUlC,kBAAkBoC,IAKrCL,EAAch1M,UAAUs8B,QAAU,WAC9B44B,EAAOl1D,UAAUs8B,QAAQ16B,KAAK/B,MAC9BA,KAAKs1M,UAAU74K,WAEZ04K,EAnDuB,CAoDhCpX,IAOFA,GAAkBthB,YAAY,CAAC,KAAM,SAAU,CAC3Cg5B,SAAU,WACVC,QAAS,UACTC,MAAO,QACPC,QAAS,UACTC,SAAU,WACV9wI,UAAW,YACX+wI,KAAM,OACNC,OAAQ,SACR3qI,OAAQ,SACRW,KAAM,cACNiqI,KAAM,OACNC,WAAY,aACZ,iBAAkB,iBAClB,eAAgB,eAChBC,KAAM,OACNC,OAAQ,SACRC,QAAS,UACT,cAAe,cACf,mBAAoB,mBACpB,eAAgB,eAChB,eAAgB,eAChB/vI,QAAS,UACT,YAAa,YACb,oBAAqB,oBACrB,gBAAiB,gBACjB,UAAW,UACXgwI,YAAa,cACbC,GAAI,KACJC,KAAM,OACNC,OAAQ,SACRC,KAAM,OACNC,IAAK,MACL,YAAa,YACb,gBAAiB,gBACjB,kBAAmB,kBACnB,qBAAsB,qBACtB,sBAAuB,sBACvB,aAAc,aACd,gBAAiB,gBACjB,uBAAwB,uBACxB,yBAA0B,yBAC1B,wBAAyB,wBACzB,eAAgB,eAChB,oCAAqC,oCACrC,aAAc,aACd,sBAAuB,sBACvB,uBAAwB,uBACxB,kBAAmB,sB,g9XC1lyBvB,yBAA8jB,EAAG,G,sEC4FjkB,IA5FO,IAAI7uM,EAAO,CAChB8uM,EAAG,YACHC,EAAG,MACHC,GAAI,QACJC,GAAI,UACJC,GAAI,QACJC,GAAI,QACJC,GAAI,UACJC,GAAI,MACJC,GAAI,WACJC,GAAI,SACJC,GAAI,IACJC,GAAI,SACJC,GAAI,WACJC,GAAI,MACJC,GAAI,OACJC,GAAI,YACJC,GAAI,UACJC,GAAI,aACJC,GAAI,YACJC,GAAI,cACJC,GAAI,SACJC,GAAI,SACJC,GAAI,IACJC,GAAI,IACJC,GAAI,OACJC,GAAI,OACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,UACLC,IAAK,aACLC,IAAK,QACLC,IAAK,QACLC,IAAK,UACLC,IAAK,UACLC,IAAK,MACLC,IAAK,MACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KAGIjgM,EAAQ,CACjBkgM,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJxC,GAAI,IACJC,GAAI,IACJiB,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KAGHnpL,EAA6B,oBAAb7xB,WAA4B,gBAAgBd,KAAKc,UAAUqxB,WAC3EU,EAA6B,oBAAb/xB,WAA4B,iBAAiBC,KAAKD,UAAUgyB,QAC5EL,EAA4B,oBAAb3xB,WAA4B,aAAaC,KAAKD,UAAUqxB,WACvEtxB,EAA0B,oBAAbC,WAA4B,MAAMC,KAAKD,UAAUE,UAC9DsxB,EAAyB,oBAAbxxB,WAA4B,gDAAgDd,KAAKc,UAAUqxB,WACvGsqL,EAAsB9pL,IAAW9xB,IAAQ8xB,EAAO,GAAK,KAAOF,GAAS5xB,EAGhElH,EAAI,EAAGA,EAAI,GAAIA,IAAKiQ,EAAK,GAAKjQ,GAAKiQ,EAAK,GAAKjQ,GAAK29C,OAAO39C,GAGlE,IAASA,EAAI,EAAGA,GAAK,GAAIA,IAAKiQ,EAAKjQ,EAAI,KAAO,IAAMA,EAGpD,IAASA,EAAI,GAAIA,GAAK,GAAIA,IACxBiQ,EAAKjQ,GAAK29C,OAAOC,aAAa59C,EAAI,IAClCkiB,EAAMliB,GAAK29C,OAAOC,aAAa59C,GAIjC,IAAK,IAAIQ,KAAQyP,EAAWiS,EAAMyD,eAAenlB,KAAO0hB,EAAM1hB,GAAQyP,EAAKzP,IAEpE,SAASuiN,EAAQ3nL,GAGtB,IAAI4nL,EAAYF,IAAwB1nL,EAAMiX,SAAWjX,EAAMmX,QAAUnX,EAAMkX,WAC5EpZ,GAAUP,IAAOyC,EAAMoX,UAAYpX,EAAMn0B,KAA2B,GAApBm0B,EAAMn0B,IAAI3D,OACzD6H,GAAS63M,GAAa5nL,EAAMn0B,MAC7Bm0B,EAAMoX,SAAWtwB,EAAQjS,GAAMmrB,EAAMD,UACtCC,EAAMn0B,KAAO,eASf,MAPY,OAARkE,IAAeA,EAAO,UACd,OAARA,IAAeA,EAAO,UAEd,QAARA,IAAgBA,EAAO,aACf,MAARA,IAAcA,EAAO,WACb,SAARA,IAAiBA,EAAO,cAChB,QAARA,IAAgBA,EAAO,aACpBA,E,gBCrHL,EAA0B,oBAAbhE,WAA2B,qBAAqBC,KAAKD,UAAUE,UAEhF,SAAS47M,EAAiB93M,GACxB,IAEIilC,EAAK8yK,EAAMhhM,EAAOiT,EAFlB3E,EAAQrlB,EAAKnJ,MAAM,UAAWiH,EAASunB,EAAMA,EAAMltB,OAAS,GAClD,SAAV2F,IAAqBA,EAAS,KAElC,IAAK,IAAIjJ,EAAI,EAAGA,EAAIwwB,EAAMltB,OAAS,EAAGtD,IAAK,CACzC,IAAI8kJ,EAAMt0H,EAAMxwB,GAChB,GAAI,kBAAkBoH,KAAK09I,GAAQ3vH,GAAO,OACrC,GAAI,YAAY/tB,KAAK09I,GAAQ10G,GAAM,OACnC,GAAI,sBAAsBhpC,KAAK09I,GAAQo+D,GAAO,OAC9C,GAAI,cAAc97M,KAAK09I,GAAQ5iI,GAAQ,MACvC,KAAI,SAAS9a,KAAK09I,GAChB,MAAM,IAAI56I,MAAM,+BAAiC46I,GADrB,EAAO3vH,GAAO,EAAe+tL,GAAO,GAOzE,OAJI9yK,IAAOnnC,EAAS,OAASA,GACzBi6M,IAAQj6M,EAAS,QAAUA,GAC3BksB,IAAQlsB,EAAS,QAAUA,GAC3BiZ,IAASjZ,EAAS,SAAWA,GAC1BA,EAGT,SAASk6M,EAAUpkN,GACjB,IAAIwE,EAAO0H,OAAOhM,OAAO,MACzB,IAAK,IAAI6a,KAAQ/a,EAAOwE,EAAK0/M,EAAiBnpM,IAAS/a,EAAI+a,GAC3D,OAAOvW,EAGT,SAAS6/M,EAAUj4M,EAAMiwB,EAAOlZ,GAK9B,OAJIkZ,EAAMmX,SAAUpnC,EAAO,OAASA,GAChCiwB,EAAMiX,UAAWlnC,EAAO,QAAUA,GAClCiwB,EAAMkX,UAAWnnC,EAAO,QAAUA,IACxB,IAAV+W,GAAmBkZ,EAAMoX,WAAYrnC,EAAO,SAAWA,GACpDA,EAiCT,SAASk4M,EAAOC,GACd,OAAO,IAAI,YAAO,CAACprL,MAAO,CAAC2+C,cAAe0sI,EAAeD,MAO3D,SAASC,EAAeD,GACtB,IAAIvkN,EAAMokN,EAAUG,GACpB,OAAO,SAASxmN,EAAMs+B,GACpB,IAAqEooL,EAAjEr4M,EAAO43M,EAAQ3nL,GAAQqoL,EAAwB,GAAft4M,EAAK7H,QAAuB,KAAR6H,EACpDu4M,EAAS3kN,EAAIqkN,EAAUj4M,EAAMiwB,GAAQqoL,IACzC,GAAIC,GAAUA,EAAO5mN,EAAKP,MAAOO,EAAKN,SAAUM,GAAS,OAAO,EAChE,GAAI2mN,IAAWroL,EAAMoX,UAAYpX,EAAMmX,QAAUnX,EAAMkX,SAAWnnC,EAAK8c,WAAW,GAAK,OAClFu7L,EAAWvzM,EAAKmrB,EAAMD,WAAaqoL,GAAYr4M,EAAM,CAKxD,IAAIw4M,EAAW5kN,EAAIqkN,EAAUI,EAAUpoL,GAAO,IAC9C,GAAIuoL,GAAYA,EAAS7mN,EAAKP,MAAOO,EAAKN,SAAUM,GAAS,OAAO,OAC/D,GAAI2mN,GAAUroL,EAAMoX,SAAU,CAGnC,IAAIoxK,EAAY7kN,EAAIqkN,EAAUj4M,EAAMiwB,GAAO,IAC3C,GAAIwoL,GAAaA,EAAU9mN,EAAKP,MAAOO,EAAKN,SAAUM,GAAS,OAAO,EAExE,OAAO,K,oCCnGX,yBAAikB,EAAG,G,iMCApkB,IAAI+mN,EAAiB,IAKjBC,EAAe,aAEnBA,EAAav7M,UAAUyF,OAAS,SAAiBJ,GAC/C,OAAKA,EAAMtK,QACXsK,EAAQk2M,EAAarlN,KAAKmP,IAEjBxF,KAAK9E,QAAUsK,GACrBA,EAAMtK,OAASugN,GAAkBz7M,KAAK27M,WAAWn2M,IACjDxF,KAAK9E,OAASugN,GAAkBj2M,EAAMo2M,YAAY57M,OACnDA,KAAK67M,YAAYr2M,IANSxF,MAW9B07M,EAAav7M,UAAUqR,QAAU,SAAkBhM,GACjD,OAAKA,EAAMtK,OACJwgN,EAAarlN,KAAKmP,GAAOI,OAAO5F,MADXA,MAI9B07M,EAAav7M,UAAU07M,YAAc,SAAsBr2M,GACzD,OAAO,IAAIs2M,EAAO97M,KAAMwF,IAK1Bk2M,EAAav7M,UAAUhK,MAAQ,SAAgBE,EAAMD,GAInD,YAHgB,IAATC,IAAkBA,EAAO,QAClB,IAAPD,IAAgBA,EAAK4J,KAAK9E,QAE7B7E,GAAQD,EAAaslN,EAAapnN,MAC/B0L,KAAK+7M,WAAWz8M,KAAKiG,IAAI,EAAGlP,GAAOiJ,KAAKqL,IAAI3K,KAAK9E,OAAQ9E,KAKlEslN,EAAav7M,UAAUoD,IAAM,SAAc3L,GACzC,KAAIA,EAAI,GAAKA,GAAKoI,KAAK9E,QACvB,OAAO8E,KAAKg8M,SAASpkN,IAQvB8jN,EAAav7M,UAAUY,QAAU,SAAkBC,EAAG3K,EAAMD,QAC1C,IAATC,IAAkBA,EAAO,QAClB,IAAPD,IAAgBA,EAAK4J,KAAK9E,QAE7B7E,GAAQD,EACR4J,KAAKi8M,aAAaj7M,EAAG3K,EAAMD,EAAI,GAE/B4J,KAAKk8M,qBAAqBl7M,EAAG3K,EAAMD,EAAI,IAM7CslN,EAAav7M,UAAUxJ,IAAM,SAAcqK,EAAG3K,EAAMD,QAClC,IAATC,IAAkBA,EAAO,QAClB,IAAPD,IAAgBA,EAAK4J,KAAK9E,QAEjC,IAAI2F,EAAS,GAEb,OADAb,KAAKe,SAAQ,SAAU22B,EAAK9/B,GAAK,OAAOiJ,EAAOrF,KAAKwF,EAAE02B,EAAK9/B,MAAQvB,EAAMD,GAClEyK,GAMT66M,EAAarlN,KAAO,SAAeg4K,GACjC,OAAIA,aAAkBqtC,EAAuBrtC,EACtCA,GAAUA,EAAOnzK,OAAS,IAAIihN,EAAK9tC,GAAUqtC,EAAapnN,OAGnE,IAAI6nN,EAAqB,SAAUT,GACjC,SAASS,EAAK9tC,GACZqtC,EAAa35M,KAAK/B,MAClBA,KAAKquK,OAASA,EAGXqtC,IAAeS,EAAKn6M,UAAY05M,GACrCS,EAAKh8M,UAAY0C,OAAOhM,OAAQ6kN,GAAgBA,EAAav7M,WAC7Dg8M,EAAKh8M,UAAU2C,YAAcq5M,EAE7B,IAAIh5M,EAAqB,CAAEjI,OAAQ,CAAEkI,cAAc,GAAOpM,MAAO,CAAEoM,cAAc,IAyCjF,OAvCA+4M,EAAKh8M,UAAUi8M,QAAU,WACvB,OAAOp8M,KAAKquK,QAGd8tC,EAAKh8M,UAAU47M,WAAa,SAAqB1lN,EAAMD,GACrD,OAAY,GAARC,GAAaD,GAAM4J,KAAK9E,OAAiB8E,KACtC,IAAIm8M,EAAKn8M,KAAKquK,OAAOl4K,MAAME,EAAMD,KAG1C+lN,EAAKh8M,UAAU67M,SAAW,SAAmBpkN,GAC3C,OAAOoI,KAAKquK,OAAOz2K,IAGrBukN,EAAKh8M,UAAU87M,aAAe,SAAuBj7M,EAAG3K,EAAMD,EAAI4F,GAChE,IAAK,IAAIpE,EAAIvB,EAAMuB,EAAIxB,EAAIwB,IACvB,IAAqC,IAAjCoJ,EAAEhB,KAAKquK,OAAOz2K,GAAIoE,EAAQpE,GAAgB,OAAO,GAG3DukN,EAAKh8M,UAAU+7M,qBAAuB,SAA+Bl7M,EAAG3K,EAAMD,EAAI4F,GAChF,IAAK,IAAIpE,EAAIvB,EAAO,EAAGuB,GAAKxB,EAAIwB,IAC5B,IAAqC,IAAjCoJ,EAAEhB,KAAKquK,OAAOz2K,GAAIoE,EAAQpE,GAAgB,OAAO,GAG3DukN,EAAKh8M,UAAUw7M,WAAa,SAAqBn2M,GAC/C,GAAIxF,KAAK9E,OAASsK,EAAMtK,QAAUugN,EAC9B,OAAO,IAAIU,EAAKn8M,KAAKquK,OAAOlnK,OAAO3B,EAAM42M,aAG/CD,EAAKh8M,UAAUy7M,YAAc,SAAsBp2M,GACjD,GAAIxF,KAAK9E,OAASsK,EAAMtK,QAAUugN,EAC9B,OAAO,IAAIU,EAAK32M,EAAM42M,UAAUj1M,OAAOnH,KAAKquK,UAGlDlrK,EAAmBjI,OAAOqI,IAAM,WAAc,OAAOvD,KAAKquK,OAAOnzK,QAEjEiI,EAAmBnM,MAAMuM,IAAM,WAAc,OAAO,GAEpDV,OAAOiB,iBAAkBq4M,EAAKh8M,UAAWgD,GAElCg5M,EAnDe,CAoDtBT,GAIFA,EAAapnN,MAAQ,IAAI6nN,EAAK,IAE9B,IAAIL,EAAuB,SAAUJ,GACnC,SAASI,EAAO1oL,EAAMC,GACpBqoL,EAAa35M,KAAK/B,MAClBA,KAAKozB,KAAOA,EACZpzB,KAAKqzB,MAAQA,EACbrzB,KAAK9E,OAASk4B,EAAKl4B,OAASm4B,EAAMn4B,OAClC8E,KAAKhJ,MAAQsI,KAAKiG,IAAI6tB,EAAKp8B,MAAOq8B,EAAMr8B,OAAS,EA2DnD,OAxDK0kN,IAAeI,EAAO95M,UAAY05M,GACvCI,EAAO37M,UAAY0C,OAAOhM,OAAQ6kN,GAAgBA,EAAav7M,WAC/D27M,EAAO37M,UAAU2C,YAAcg5M,EAE/BA,EAAO37M,UAAUi8M,QAAU,WACzB,OAAOp8M,KAAKozB,KAAKgpL,UAAUj1M,OAAOnH,KAAKqzB,MAAM+oL,YAG/CN,EAAO37M,UAAU67M,SAAW,SAAmBpkN,GAC7C,OAAOA,EAAIoI,KAAKozB,KAAKl4B,OAAS8E,KAAKozB,KAAK7vB,IAAI3L,GAAKoI,KAAKqzB,MAAM9vB,IAAI3L,EAAIoI,KAAKozB,KAAKl4B,SAGhF4gN,EAAO37M,UAAU87M,aAAe,SAAuBj7M,EAAG3K,EAAMD,EAAI4F,GAClE,IAAIqgN,EAAUr8M,KAAKozB,KAAKl4B,OACxB,QAAI7E,EAAOgmN,IAC2D,IAAlEr8M,KAAKozB,KAAK6oL,aAAaj7M,EAAG3K,EAAMiJ,KAAKqL,IAAIvU,EAAIimN,GAAUrgN,QAEvD5F,EAAKimN,IAC6G,IAAlHr8M,KAAKqzB,MAAM4oL,aAAaj7M,EAAG1B,KAAKiG,IAAIlP,EAAOgmN,EAAS,GAAI/8M,KAAKqL,IAAI3K,KAAK9E,OAAQ9E,GAAMimN,EAASrgN,EAAQqgN,UADzG,IAKFP,EAAO37M,UAAU+7M,qBAAuB,SAA+Bl7M,EAAG3K,EAAMD,EAAI4F,GAClF,IAAIqgN,EAAUr8M,KAAKozB,KAAKl4B,OACxB,QAAI7E,EAAOgmN,IACkG,IAAzGr8M,KAAKqzB,MAAM6oL,qBAAqBl7M,EAAG3K,EAAOgmN,EAAS/8M,KAAKiG,IAAInP,EAAIimN,GAAWA,EAASrgN,EAAQqgN,QAE5FjmN,EAAKimN,IACqE,IAA1Er8M,KAAKozB,KAAK8oL,qBAAqBl7M,EAAG1B,KAAKqL,IAAItU,EAAMgmN,GAAUjmN,EAAI4F,UADnE,IAKF8/M,EAAO37M,UAAU47M,WAAa,SAAqB1lN,EAAMD,GACvD,GAAY,GAARC,GAAaD,GAAM4J,KAAK9E,OAAU,OAAO8E,KAC7C,IAAIq8M,EAAUr8M,KAAKozB,KAAKl4B,OACxB,OAAI9E,GAAMimN,EAAkBr8M,KAAKozB,KAAKj9B,MAAME,EAAMD,GAC9CC,GAAQgmN,EAAkBr8M,KAAKqzB,MAAMl9B,MAAME,EAAOgmN,EAASjmN,EAAKimN,GAC7Dr8M,KAAKozB,KAAKj9B,MAAME,EAAMgmN,GAASz2M,OAAO5F,KAAKqzB,MAAMl9B,MAAM,EAAGC,EAAKimN,KAGxEP,EAAO37M,UAAUw7M,WAAa,SAAqBn2M,GACjD,IAAIwB,EAAQhH,KAAKqzB,MAAMsoL,WAAWn2M,GAClC,GAAIwB,EAAS,OAAO,IAAI80M,EAAO97M,KAAKozB,KAAMpsB,IAG5C80M,EAAO37M,UAAUy7M,YAAc,SAAsBp2M,GACnD,IAAIwB,EAAQhH,KAAKozB,KAAKwoL,YAAYp2M,GAClC,GAAIwB,EAAS,OAAO,IAAI80M,EAAO90M,EAAOhH,KAAKqzB,QAG7CyoL,EAAO37M,UAAU07M,YAAc,SAAsBr2M,GACnD,OAAIxF,KAAKozB,KAAKp8B,OAASsI,KAAKiG,IAAIvF,KAAKqzB,MAAMr8B,MAAOwO,EAAMxO,OAAS,EACtD,IAAI8kN,EAAO97M,KAAKozB,KAAM,IAAI0oL,EAAO97M,KAAKqzB,MAAO7tB,IACjD,IAAIs2M,EAAO97M,KAAMwF,IAGnBs2M,EAjEiB,CAkExBJ,GAEEY,EAAeZ,EAEJ,I,wBC3LXa,EAAkB,IAElBC,EAAS,SAAgBlzJ,EAAOmzJ,GAClCz8M,KAAKspD,MAAQA,EACbtpD,KAAKy8M,WAAaA,GA8LpB,SAASC,EAAapzJ,EAAO/nD,GAC3B,IAAIo7M,EAOJ,OANArzJ,EAAMvoD,SAAQ,SAAUwoD,EAAM3xD,GAC5B,GAAI2xD,EAAKl1D,WAAqB,GAAPkN,IAErB,OADAo7M,EAAW/kN,GACJ,KAGJ0xD,EAAMnzD,MAAMwmN,GAhMrBH,EAAOr8M,UAAUy8M,SAAW,SAAmBzoN,EAAO0oN,GAClD,IAAIhzM,EAAS7J,KAEf,GAAuB,GAAnBA,KAAKy8M,WAAmB,OAAO,KAGnC,IADA,IAMIK,EAAOhzM,EANPnQ,EAAMqG,KAAKspD,MAAMpuD,QACbvB,IAAO,CACb,IAAI0M,EAAOrG,KAAKspD,MAAM/lD,IAAI5J,EAAM,GAChC,GAAI0M,EAAKhS,UAAW,GAAIsF,EAAK,OAI3BkjN,IACFC,EAAQ98M,KAAK+8M,UAAUpjN,EAAKqG,KAAKspD,MAAMpuD,QACvC4O,EAAUgzM,EAAMr7M,KAAKvG,QAEvB,IACI7G,EAAW2oN,EADXC,EAAY9oN,EAAMI,GAElB2oN,EAAW,GAAI7rM,EAAY,GAkC/B,OAhCArR,KAAKspD,MAAMvoD,SAAQ,SAAUwoD,EAAM3xD,GACjC,IAAK2xD,EAAKjzD,KAOR,OANKwmN,IACHA,EAAQjzM,EAAOkzM,UAAUpjN,EAAK/B,EAAI,GAClCkS,EAAUgzM,EAAMr7M,KAAKvG,QAEvB4O,SACAuH,EAAU7V,KAAK+tD,GAIjB,GAAIuzJ,EAAO,CACTzrM,EAAU7V,KAAK,IAAI2hN,EAAK5zJ,EAAK5yD,MAC7B,IAAgDA,EAA5CL,EAAOizD,EAAKjzD,KAAKK,IAAImmN,EAAM3mN,MAAM2T,IAEjCxT,GAAQ2mN,EAAUx5M,UAAUnN,GAAML,MACpCU,EAAMsmN,EAAUvmN,QAAQ+K,KAAKw7M,EAAUvmN,QAAQ+K,KAAKvG,OAAS,GAC7DgiN,EAAS1hN,KAAK,IAAI2hN,EAAKxmN,EAAK,KAAM,KAAMumN,EAAShiN,OAASmW,EAAUnW,UAEtE4O,IACInT,GAAOmmN,EAAM76M,UAAUtL,EAAKmT,QAEhCmzM,EAAUx5M,UAAU8lD,EAAKjzD,MAG3B,OAAIizD,EAAKl1D,WACPA,EAAYyoN,EAAQvzJ,EAAKl1D,UAAUsC,IAAImmN,EAAM3mN,MAAM2T,IAAYy/C,EAAKl1D,UACpE2oN,EAAY,IAAIR,EAAO3yM,EAAOy/C,MAAMnzD,MAAM,EAAGwD,GAAKiM,OAAOyL,EAAU0I,UAAU5S,OAAO+1M,IAAYrzM,EAAO4yM,WAAa,IAC7G,QAHT,IAKCz8M,KAAKspD,MAAMpuD,OAAQ,GAEf,CAAC8hN,UAAWA,EAAWC,UAAWA,EAAW5oN,UAAWA,IAKjEmoN,EAAOr8M,UAAUi9M,aAAe,SAAuBH,EAAW5oN,EAAWgpN,EAAaR,GAIxF,IAHA,IAAIS,EAAW,GAAIb,EAAaz8M,KAAKy8M,WACjCc,EAAWv9M,KAAKspD,MAAOk0J,GAAYX,GAAiBU,EAASriN,OAASqiN,EAASh6M,IAAIg6M,EAASriN,OAAS,GAAK,KAErGtD,EAAI,EAAGA,EAAIqlN,EAAUh6M,MAAM/H,OAAQtD,IAAK,CAC/C,IAAItB,EAAO2mN,EAAUh6M,MAAMrL,GAAGuJ,OAAO87M,EAAU/5M,KAAKtL,IAChD2xD,EAAO,IAAI4zJ,EAAKF,EAAUvmN,QAAQ+K,KAAK7J,GAAItB,EAAMjC,GAAYm+L,OAAS,GACtEA,EAASgrB,GAAYA,EAASr5M,MAAMolD,MACtCA,EAAOipI,EACH56L,EAAK0lN,EAAS9tM,MACX+tM,EAAWA,EAASpnN,MAAM,EAAGonN,EAASriN,OAAS,IAExDoiN,EAAS9hN,KAAK+tD,GACVl1D,IACFooN,IACApoN,EAAY,MAETwoN,IAAiBW,EAAWj0J,GAEnC,IAAIk0J,EAAWhB,EAAaY,EAAYrmN,MAKxC,OAJIymN,EAAWC,IACbH,EAAWb,EAAaa,EAAUE,GAClChB,GAAcgB,GAET,IAAIjB,EAAOe,EAAS33M,OAAO03M,GAAWb,IAG/CD,EAAOr8M,UAAU48M,UAAY,SAAoB1mN,EAAMD,GACrD,IAAIqL,EAAO,IAAI,OAMf,OALAzB,KAAKspD,MAAMvoD,SAAQ,SAAUwoD,EAAM3xD,GACjC,IAAI+lN,EAAiC,MAArBp0J,EAAKq0J,cAAwBhmN,EAAI2xD,EAAKq0J,cAAgBvnN,EAChEoL,EAAKA,KAAKvG,OAASquD,EAAKq0J,aAAe,KAC7Cn8M,EAAKQ,UAAUsnD,EAAK5yD,IAAKgnN,KACxBtnN,EAAMD,GACFqL,GAGT+6M,EAAOr8M,UAAU09M,QAAU,SAAkBlqM,GAC3C,OAAuB,GAAnB3T,KAAKy8M,WAA0Bz8M,KAC5B,IAAIw8M,EAAOx8M,KAAKspD,MAAM1jD,OAAO+N,EAAMhd,KAAI,SAAUA,GAAO,OAAO,IAAIwmN,EAAKxmN,OAAWqJ,KAAKy8M,aAQjGD,EAAOr8M,UAAU29M,QAAU,SAAkBC,EAAkBC,GAC7D,IAAKh+M,KAAKy8M,WAAc,OAAOz8M,KAE/B,IAAIi+M,EAAe,GAAIjiN,EAAQsD,KAAKiG,IAAI,EAAGvF,KAAKspD,MAAMpuD,OAAS8iN,GAE3DtnN,EAAUqnN,EAAiBrnN,QAC3BwnN,EAAWH,EAAiB96M,MAAM/H,OAClCuhN,EAAaz8M,KAAKy8M,WACtBz8M,KAAKspD,MAAMvoD,SAAQ,SAAUwoD,GAAYA,EAAKl1D,WAAaooN,MAAmBzgN,GAE9E,IAAImiN,EAAWH,EACfh+M,KAAKspD,MAAMvoD,SAAQ,SAAUwoD,GAC3B,IAAI3yD,EAAMF,EAAQ6L,YAAY47M,GAC9B,GAAW,MAAPvnN,EAAJ,CACAsnN,EAAW5+M,KAAKqL,IAAIuzM,EAAUtnN,GAC9B,IAAID,EAAMD,EAAQ+K,KAAK7K,GACvB,GAAI2yD,EAAKjzD,KAAM,CACb,IAAIA,EAAOynN,EAAiB96M,MAAMrM,GAAKuK,OAAO48M,EAAiB76M,KAAKtM,IAChEvC,EAAYk1D,EAAKl1D,WAAak1D,EAAKl1D,UAAUsC,IAAID,EAAQP,MAAMgoN,EAAW,EAAGvnN,IAC7EvC,GAAaooN,IACjBwB,EAAaziN,KAAK,IAAI2hN,EAAKxmN,EAAKL,EAAMjC,SAEtC4pN,EAAaziN,KAAK,IAAI2hN,EAAKxmN,OAE5BqF,GAGH,IADA,IAAIoiN,EAAU,GACLxmN,EAAIomN,EAAcpmN,EAAIsmN,EAAUtmN,IACrCwmN,EAAQ5iN,KAAK,IAAI2hN,EAAKzmN,EAAQ+K,KAAK7J,KACvC,IAAI0xD,EAAQtpD,KAAKspD,MAAMnzD,MAAM,EAAG6F,GAAO4J,OAAOw4M,GAASx4M,OAAOq4M,GAC1DI,EAAS,IAAI7B,EAAOlzJ,EAAOmzJ,GAI/B,OAFI4B,EAAOC,iBAAmB/B,IAC1B8B,EAASA,EAAOE,SAASv+M,KAAKspD,MAAMpuD,OAAS+iN,EAAa/iN,SACvDmjN,GAGT7B,EAAOr8M,UAAUm+M,eAAiB,WAChC,IAAI5xM,EAAQ,EAEZ,OADA1M,KAAKspD,MAAMvoD,SAAQ,SAAUwoD,GAAaA,EAAKjzD,MAAQoW,OAChDA,GAST8vM,EAAOr8M,UAAUo+M,SAAW,SAAmB91L,QAC7B,IAATA,IAAkBA,EAAOzoB,KAAKspD,MAAMpuD,QAE3C,IAAI4hN,EAAQ98M,KAAK+8M,UAAU,EAAGt0L,GAAO3e,EAAUgzM,EAAMr7M,KAAKvG,OACtDouD,EAAQ,GAAIimB,EAAS,EAsBzB,OArBAvvE,KAAKspD,MAAMvoD,SAAQ,SAAUwoD,EAAM3xD,GACjC,GAAIA,GAAK6wB,EACP6gC,EAAM9tD,KAAK+tD,GACPA,EAAKl1D,WAAak7E,SACjB,GAAIhmB,EAAKjzD,KAAM,CACpB,IAAIA,EAAOizD,EAAKjzD,KAAKK,IAAImmN,EAAM3mN,MAAM2T,IAAWnT,EAAML,GAAQA,EAAKuN,SAGnE,GAFAiG,IACInT,GAAOmmN,EAAM76M,UAAUtL,EAAKmT,GAC5BxT,EAAM,CACR,IAAIjC,EAAYk1D,EAAKl1D,WAAak1D,EAAKl1D,UAAUsC,IAAImmN,EAAM3mN,MAAM2T,IAC7DzV,GAAak7E,IACjB,IAAuDijH,EAAnDgsB,EAAU,IAAIrB,EAAKxmN,EAAIwK,SAAU7K,EAAMjC,GAAoBsc,EAAO24C,EAAMpuD,OAAS,GACjFs3L,EAASlpI,EAAMpuD,QAAUouD,EAAM34C,GAAMxM,MAAMq6M,IAC3Cl1J,EAAM34C,GAAQ6hL,EAEdlpI,EAAM9tD,KAAKgjN,SAERj1J,EAAK5yD,KACdmT,MAED9J,KAAKspD,MAAMpuD,OAAQ,GACf,IAAIshN,EAAO,EAAanmN,KAAKizD,EAAMvvC,WAAYw1D,IAGxDitI,EAAOloN,MAAQ,IAAIkoN,EAAO,EAAaloN,MAAO,GAa9C,IAAI6oN,EAAO,SAAcxmN,EAAKL,EAAMjC,EAAWupN,GAE7C59M,KAAKrJ,IAAMA,EAEXqJ,KAAK1J,KAAOA,EAIZ0J,KAAK3L,UAAYA,EAGjB2L,KAAK49M,aAAeA,GAGtBT,EAAKh9M,UAAUgE,MAAQ,SAAgBqB,GACrC,GAAIxF,KAAK1J,MAAQkP,EAAMlP,OAASkP,EAAMnR,UAAW,CAC/C,IAAIiC,EAAOkP,EAAMlP,KAAK6N,MAAMnE,KAAK1J,MACjC,GAAIA,EAAQ,OAAO,IAAI6mN,EAAK7mN,EAAKuN,SAAS1C,SAAU7K,EAAM0J,KAAK3L,aAOnE,IAAIoqN,EAAe,SAAsB7oK,EAAM8oK,EAAQC,EAAYC,GACjE5+M,KAAK41C,KAAOA,EACZ51C,KAAK0+M,OAASA,EACd1+M,KAAK2+M,WAAaA,EAClB3+M,KAAK4+M,SAAWA,GAGdlB,EAAiB,GAIrB,SAASjvL,EAAiBowL,EAAS1qN,EAAOI,EAAI+oB,GAC5C,IAAwCwgM,EAApCgB,EAAYvqN,EAAGm5B,QAAQqxL,GAC3B,GAAID,EAAa,OAAOA,EAAUE,aAE9BzqN,EAAGm5B,QAAQuxL,KAAoBJ,EAAU,IAAIJ,EAAaI,EAAQjpK,KAAMipK,EAAQH,OAAQ,KAAM,IAElG,IAAIQ,EAAW3qN,EAAGm5B,QAAQ,uBAE1B,GAAuB,GAAnBn5B,EAAG0O,MAAM/H,OACX,OAAO2jN,EACF,GAAIK,GAAYA,EAASxxL,QAAQqxL,GACtC,OAAIG,EAASxxL,QAAQqxL,GAAY9wJ,KACtB,IAAIwwJ,EAAaI,EAAQjpK,KAAKwnK,aAAa7oN,EAAI,KAAM+oB,EAAS6hM,EAAkBhrN,IACjE0qN,EAAQH,OAAQU,EAAU7qN,EAAGmC,QAAQ+K,KAAKlN,EAAG0O,MAAM/H,OAAS,IAAK2jN,EAAQD,UAExF,IAAIH,EAAaI,EAAQjpK,KAAMipK,EAAQH,OAAOtB,aAAa7oN,EAAI,KAAM+oB,EAAS6hM,EAAkBhrN,IACjF,KAAM0qN,EAAQD,UACnC,IAAmC,IAA/BrqN,EAAGm5B,QAAQ,iBAA+BwxL,IAAiD,IAArCA,EAASxxL,QAAQ,gBAQ3E,OAAIowL,EAAUvpN,EAAGm5B,QAAQ,YAGvB,IAAI+wL,EAAaI,EAAQjpK,KAAKkoK,QAAQvpN,EAAIupN,GACzBe,EAAQH,OAAOZ,QAAQvpN,EAAIupN,GAC3BuB,EAAUR,EAAQF,WAAYpqN,EAAGmC,SAAUmoN,EAAQD,UAEpE,IAAIH,EAAaI,EAAQjpK,KAAKioK,QAAQtpN,EAAGmC,QAAQ+K,MAChCo9M,EAAQH,OAAOb,QAAQtpN,EAAGmC,QAAQ+K,MAClC49M,EAAUR,EAAQF,WAAYpqN,EAAGmC,SAAUmoN,EAAQD,UAf3E,IAAIU,EAA+B,GAApBT,EAAQD,WAAkBM,IAAaL,EAAQD,UAAYrqN,EAAGk4B,MAAQ,GAAKnP,EAAQiiM,gBAC3CC,EAAajrN,EAAIsqN,EAAQF,aAC5EA,EAAaO,EAAWG,EAAUR,EAAQF,WAAYpqN,EAAGmC,SAAW0oN,EAAU7qN,EAAGmC,QAAQ+K,KAAKlN,EAAG0O,MAAM/H,OAAS,IACpH,OAAO,IAAIujN,EAAaI,EAAQjpK,KAAKwnK,aAAa7oN,EAAI+qN,EAAWnrN,EAAME,UAAUi3B,cAAgB,KAC/ChO,EAAS6hM,EAAkBhrN,IACrDqoN,EAAOloN,MAAOqqN,EAAYpqN,EAAGk4B,MAczD,SAAS+yL,EAAavC,EAAW0B,GAC/B,IAAKA,EAAc,OAAO,EAC1B,IAAK1B,EAAU55M,WAAc,OAAO,EACpC,IAAIo8M,GAAW,EAMf,OALAxC,EAAUvmN,QAAQ+K,KAAK,GAAGV,SAAQ,SAAU/E,EAAOrC,GACjD,IAAK,IAAI/B,EAAI,EAAGA,EAAI+mN,EAAWzjN,OAAQtD,GAAK,EACpCoE,GAAS2iN,EAAW/mN,EAAI,IAAM+B,GAAOglN,EAAW/mN,KAClD6nN,GAAW,MAEZA,EAGT,SAASL,EAAUzoN,GACjB,IAAIkK,EAAS,GAEb,OADAlK,EAAIoK,SAAQ,SAAUkrB,EAAOC,EAAK71B,EAAMD,GAAM,OAAOyK,EAAOrF,KAAKnF,EAAMD,MAChEyK,EAGT,SAASw+M,EAAUziN,EAAQlG,GACzB,IAAKkG,EAAU,OAAO,KAEtB,IADA,IAAIiE,EAAS,GACJjJ,EAAI,EAAGA,EAAIgF,EAAO1B,OAAQtD,GAAK,EAAG,CACzC,IAAIvB,EAAOK,EAAQC,IAAIiG,EAAOhF,GAAI,GAAIxB,EAAKM,EAAQC,IAAIiG,EAAOhF,EAAI,IAAK,GACnEvB,GAAQD,GAAMyK,EAAOrF,KAAKnF,EAAMD,GAEtC,OAAOyK,EAMT,SAAS6+M,EAAgBb,EAAS1qN,EAAOC,EAAU65D,GACjD,IAAI4uJ,EAAgBsC,EAAkBhrN,GAAQkpN,EAAc0B,EAAWx7M,IAAIpP,GAAOqB,KAAKu4B,OACnFve,GAAOy+C,EAAO4wJ,EAAQH,OAASG,EAAQjpK,MAAMgnK,SAASzoN,EAAO0oN,GACjE,GAAKrtM,EAAL,CAEA,IAAInb,EAAYmb,EAAInb,UAAUoC,QAAQ+Y,EAAIytM,UAAUhnN,KAChDkV,GAAS8iD,EAAO4wJ,EAAQjpK,KAAOipK,EAAQH,QAAQtB,aAAa5tM,EAAIytM,UAAW9oN,EAAME,UAAUi3B,cAC/B+xL,EAAaR,GAEzE8C,EAAU,IAAIlB,EAAaxwJ,EAAO9iD,EAAQqE,EAAIwtM,UAAW/uJ,EAAOz+C,EAAIwtM,UAAY7xM,EAAO,KAAM,GACjG/W,EAASob,EAAIytM,UAAU1mN,aAAalC,GAAWo5B,QAAQsxL,EAAY,CAAC9wJ,KAAMA,EAAM+wJ,aAAcW,IAAUnrN,mBAG1G,IAAIorN,GAAsB,EAAOC,EAA6B,KAK9D,SAASV,EAAkBhrN,GACzB,IAAIi6B,EAAUj6B,EAAMi6B,QACpB,GAAIyxL,GAA8BzxL,EAAS,CACzCwxL,GAAsB,EACtBC,EAA6BzxL,EAC7B,IAAK,IAAIx2B,EAAI,EAAGA,EAAIw2B,EAAQlzB,OAAQtD,IAAO,GAAIw2B,EAAQx2B,GAAGpC,KAAKsqN,qBAAsB,CACnFF,GAAsB,EACtB,OAGJ,OAAOA,EAWT,IAAIb,EAAa,IAAI,eAAU,WAC3BE,EAAkB,IAAI,eAAU,gBAsBpC,SAAS,EAAQlxL,GAGf,OAFAA,EAAS,CAAC/2B,MAAO+2B,GAAUA,EAAO/2B,OAAS,IACjCuoN,cAAexxL,GAAUA,EAAOwxL,eAAiB,KACpD,IAAI,YAAO,CAChB1gN,IAAKkgN,EAEL5qN,MAAO,CACL05B,KAAM,WACJ,OAAO,IAAI4wL,EAAajC,EAAOloN,MAAOkoN,EAAOloN,MAAO,KAAM,IAE5DqP,MAAO,SAAepP,EAAIwrN,EAAM5rN,GAC9B,OAAOs6B,EAAiBsxL,EAAM5rN,EAAOI,EAAIw5B,KAI7CA,OAAQA,EAER+B,MAAO,CACLmuB,gBAAiB,CACflF,YAAa,SAAqBrkD,EAAMyQ,GACtC,IAAI66M,EAAyB,eAAf76M,EAAE6zC,UAA6BgV,EAAKt5D,EAAKP,MAAOO,EAAKN,UAChD,eAAf+Q,EAAE6zC,WAA6BiV,EAAKv5D,EAAKP,MAAOO,EAAKN,UAEzD,OADI4rN,GAAW76M,EAAEgwC,iBACV6qK,OASjB,SAAShyJ,EAAK75D,EAAOC,GACnB,IAAI2rN,EAAOhB,EAAW/uL,SAAS77B,GAC/B,SAAK4rN,GAAgC,GAAxBA,EAAKnqK,KAAK6mK,cACnBroN,GAAYsrN,EAAgBK,EAAM5rN,EAAOC,GAAU,IAChD,GAKT,SAAS65D,EAAK95D,EAAOC,GACnB,IAAI2rN,EAAOhB,EAAW/uL,SAAS77B,GAC/B,SAAK4rN,GAAkC,GAA1BA,EAAKrB,OAAOjC,cACrBroN,GAAYsrN,EAAgBK,EAAM5rN,EAAOC,GAAU,IAChD,GAKT,SAAS6rN,EAAU9rN,GACjB,IAAI4rN,EAAOhB,EAAW/uL,SAAS77B,GAC/B,OAAO4rN,EAAOA,EAAKnqK,KAAK6mK,WAAa,I,4gDC5bvC,yBAAmkB,EAAG,G,uJCkBhkByD,EAAa,eAAnB,QAOe,OAAAA,EAAA,OAAkB,CAC/Bn9M,KAD+B,aAG/B+sB,MAAO,CACLqwL,SADK,QAELC,SAFK,QAGLC,UAAW,CACT9qN,KAAM,CAAColB,OADE,QAETyB,QAFS,GAGTkkM,UAAY,SAAAvjN,GAAD,OAAawjN,MAAMha,WAAD,MAE/B/9H,KAAM,CACJjzE,KAAM,CAAColB,OADH,QAEJyB,QAFI,EAGJkkM,UAAY,SAAAvjN,GAAD,OAAawjN,MAAMvwJ,SAASjzD,EAAV,QAIjC2c,SAAU,CACR8mM,QADQ,WAEN,uBACE,cADK,EAEL,wBAAyBxgN,KAFpB,SAGL,wBAAyBA,KAHpB,gBAIF,6CAGPygN,eATQ,WAUN,OAAOzgN,KAAKogN,UAAYpgN,KAAxB,WAIJ0gN,MAAO,CACLC,UADK,WAEH3gN,KAAA,UAAiBA,KAAK4gN,UAAU5gN,KAAhC,uBAEFqgN,UAJK,WAKHrgN,KAAA,UAAiBA,KAAK4gN,UAAU5gN,KAAhC,wBAIJg9C,QAzC+B,WAyCxB,WACL1U,YAAW,WACT,YAAiB,EAAjB,yBADF,IAKFu4K,QAAS,CACPC,qBADO,WAEL,IAAM9qJ,EAAQh2D,KAAK+gN,MAAnB,MACA,MAEA/qJ,EAAA,iBACA,IAAM/hC,EAAS+hC,EAAf,aACMkB,EAAYlH,SAAShwD,KAAD,KAAR,IAA0BumM,WAAWvmM,KANrC,WASlBg2D,EAAA,aAAqB12D,KAAA,SAArB,OAEF0hN,SAZO,WAaL,IAAMhrJ,EAAQ,qCAAd,MAMA,OAJAA,EAAA,sBACOA,EAAA,WAAP,KACAA,EAAA,gBAA0Bh2D,KAA1B,KAEA,GAEFihN,QArBO,SAqBA,GACL,4CACAjhN,KAAA,UAAiBA,KAAjB,wBAEFkhN,UAzBO,SAyBE,GAIHlhN,KAAKmhN,WAAT,KAAsBh8M,EAAA,SACpBA,EAAA,kBAGFnF,KAAA,wB,gECzGN,IAAI,EAAS,WAAa,IAAIohN,EAAIphN,KAASqhN,EAAGD,EAAIE,eAAmBp8I,EAAGk8I,EAAIG,MAAMr8I,IAAIm8I,EAAG,OAAOn8I,EAAG,MAAM,CAACs8I,YAAY,eAAe,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,OAAO,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,iCAAiC,CAACt8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIM,QAAQ,gBAAgB,CAACN,EAAIO,GAAG,2BAA2Bz8I,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,UAAU,QAAU+kN,EAAIQ,SAASvxI,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIS,cAAcT,EAAIr4L,SAAU,IAAGq4L,EAAIU,wBAAwBC,qBAAsBX,EAAIU,4BAAoC,CAACV,EAAIO,GAAG,eAA+B,QAAfP,EAAIY,OAAkB98I,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIM,QAAS,WAAaN,EAAIY,WAAY,CAACZ,EAAIO,GAAG,cAAcP,EAAI/7I,KAAM+7I,EAAIa,gBAAyC,aAAzBb,EAAIa,eAAer9M,IAAyC,GAApBw8M,EAAIr4L,SAASm5L,IAAUh9I,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIe,QAAS,KAAQ,CAACf,EAAIO,GAAG,gBAAgBP,EAAI/7I,KAAKH,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,UAAU,SAAW+kN,EAAIQ,SAASvxI,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIgB,WAAWhB,EAAIr4L,WAAUq4L,EAAIU,wBAAwBC,qBAAsBX,EAAIU,4BAAoC,CAACV,EAAIO,GAAG,kBAAkBz8I,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIiB,cAAgBjB,EAAIiB,gBAAgB,CAACjB,EAAIO,GAAG,gCAAgCz8I,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIkB,2BAA4B,KAAQ,CAAClB,EAAIO,GAAG,iCAAiC,KAAKz8I,EAAG,WAAW,CAAC7oE,MAAM,CAAC,YAAY,OAAOkmN,MAAM,CAAC5iN,MAAOyhN,EAAU,OAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIe,OAAOK,GAAKC,WAAW,WAAW,CAACv9I,EAAG,SAAS,CAACA,EAAG,eAAe,CAACk8I,EAAIO,GAAG,+CAA+Cz8I,EAAG,MAAMA,EAAG,QAAQ,CAACk8I,EAAIO,GAAG,0DAA0Dz8I,EAAG,iBAAiB,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIe,QAAS,KAAS,CAACf,EAAIO,GAAG,aAAaz8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,UAAU,MAAQ,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIsB,gBAAgB,KAAM,SAAS,CAACtB,EAAIO,GAAG,kBAAkB,IAAI,IAAI,GAAGz8I,EAAG,WAAW,CAAC7oE,MAAM,CAAC,YAAY,MAAM,WAAa,IAAIkmN,MAAM,CAAC5iN,MAAOyhN,EAA6B,0BAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIkB,0BAA0BE,GAAKC,WAAW,8BAA8B,CAACv9I,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,IAAI,GAAK,OAAO,CAAC6oE,EAAG,SAAS,CAACs8I,YAAY,gBAAgB,CAACt8I,EAAG,YAAY,CAAC7oE,MAAM,CAAC,MAAQ,UAAU,KAAO,GAAG,KAAO,KAAK,CAAC6oE,EAAG,kBAAkB,CAACk8I,EAAIO,GAAG,iCAAiC,GAAGz8I,EAAG,cAAc,CAACA,EAAG,SAAS,CAACA,EAAG,iBAAiB,CAAC7oE,MAAM,CAAC,QAAU+kN,EAAIuB,UAAU,YAAY,OAAO,aAAa,KAAK,eAAe,GAAG,gBAAgB,GAAG,UAAY,GAAG,eAAe,GAAG,MAAQ,GAAG,MAAQvB,EAAIwB,uBAAuB,MAAQ,iCAAiC,SAAW,IAAIvyI,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIyB,QAAQ,8BAA+B,yBAA0B,eAAeN,MAAM,CAAC5iN,MAAOyhN,EAAyB,sBAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAI0B,sBAAsBN,GAAKC,WAAW,4BAA4B,IAAI,GAAGv9I,EAAG,iBAAiB,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,SAAW+kN,EAAI2B,sBAAsB,MAAQ,IAAI1yI,GAAG,CAAC,MAAQ+wI,EAAIlzM,QAAQ,CAACkzM,EAAIO,GAAG,YAAYz8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,SAAW+kN,EAAI2B,sBAAsB,QAAU3B,EAAI2B,sBAAsB,MAAQ,UAAU,MAAQ,IAAI1yI,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI4B,kBAAkB5B,EAAI0B,yBAAyBG,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,SAASoxL,GAAG,WAAW,MAAO,CAAC/qH,EAAG,OAAO,CAACs8I,YAAY,iBAAiB,CAACt8I,EAAG,SAAS,CAAC7oE,MAAM,CAAC,MAAQ,KAAK,CAAC+kN,EAAIO,GAAG,iBAAiB,KAAKtd,OAAM,MAAS,CAAC+c,EAAIO,GAAG,iBAAiB,IAAI,IAAI,IAAI,IAAI,IAAI,GAAGz8I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,gCAAgC,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAanlN,MAAM,CAAC,GAAK,cAAc+kN,EAAI+B,GAAI/B,EAAQ,MAAE,SAAS73J,GAAM,OAAO2b,EAAG,MAAM,CAACs8I,YAAY,gBAAgBj+K,MAAM,CAAC,0BAA2BgmB,EAAKrnC,QAAQtsB,UAAY2zD,EAAKq2I,KAAM,OAAUr2I,EAAK3vC,OAAQ,YAAa2vC,EAAKliD,OAAQgpE,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIgC,YAAY75J,MAAS,CAAC2b,EAAG,MAAM,CAACs8I,YAAY,oBAAoB,CAACt8I,EAAG,OAAO,CAACk8I,EAAIO,GAAGP,EAAIiC,GAAG95J,EAAK9mC,iBAAgB,KAAKyiD,EAAG,MAAM,CAACo+I,WAAW,CAAC,CAACvgN,KAAK,OAAOwgN,QAAQ,SAAS5jN,OAAQyhN,EAAIoC,cAAef,WAAW,mBAAmBjB,YAAY,qBAAqB,CAACt8I,EAAG,MAAM,CAACo+I,WAAW,CAAC,CAACvgN,KAAK,OAAOwgN,QAAQ,SAAS5jN,OAAQyhN,EAAIqC,KAAK,GAAG7pM,OAAQ6oM,WAAW,oBAAoBjB,YAAY,UAAU,CAACt8I,EAAG,SAAS,CAACvwE,IAAI,WAAW0H,MAAM,CAAC,QAAU+kN,EAAIsC,cAAc,OAAS,QAAQ,gBAAkB,WAAWrzI,GAAG,CAAC,OAAS,SAASoxI,GAAQ,OAAOL,EAAIuC,eAAevC,EAAIa,qBAAqB,GAAG/8I,EAAG,MAAM,CAACo+I,WAAW,CAAC,CAACvgN,KAAK,OAAOwgN,QAAQ,SAAS5jN,MAAOyhN,EAAIqC,KAAK,GAAS,OAAEhB,WAAW,mBAAmBjB,YAAY,SAASnlN,MAAM,CAAC,GAAK,2BAA2B,CAAC6oE,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,eAAe,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,cAAc,eAAe,GAAG,MAAQ,GAAG,SAAW,GAAG,MAAQ,WAAW,KAAO,QAAQkmN,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAU,QAAEmc,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAI,UAAW8qK,IAAMC,WAAW,2CAA2C,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,eAAe,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,eAAe,eAAe,GAAG,MAAQ,GAAG,SAAW,GAAG,MAAQ,SAAS,KAAO,QAAQkmN,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAU,QAAEmc,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAI,UAAW8qK,IAAMC,WAAW,2CAA2C,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,eAAe,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,eAAe,eAAe,GAAG,MAAQ,GAAG,SAAW,GAAG,MAAQ,kBAAkB,KAAO,SAAS,MAAQ+kN,EAAI0C,MAAMvB,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAU,QAAEmc,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAI,UAAW8qK,IAAMC,WAAW,2CAA2C,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,eAAe,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,eAAe,eAAe,GAAG,MAAQ,GAAG,SAAW,GAAG,MAAQ,yBAAyB,SAAW,GAAG,MAAQ+kN,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAG9hD,SAAYwrN,EAAIr4L,SAAS66L,SAAS,GAAGlsK,KAAK,GAAG9hD,QAAU,EAAK,SAAS,KAAKsvE,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,eAAe,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,gBAAgB,eAAe,GAAG,MAAQ,GAAG,SAAW,GAAG,MAAQ,kBAAkB,SAAW,GAAG,MAAQ+kN,EAAIr4L,SAASg7L,aAAe,IAAIr3L,KAAK00L,EAAIr4L,SAASg7L,cAAcC,qBAAuB,OAAO,KAAK9+I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,eAAe,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,eAAe,eAAe,GAAG,MAAQ,GAAG,SAAW,GAAG,MAAQ,KAAK,KAAO,QAAQkmN,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAa,KAAE8qC,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAU,OAAQy5L,IAAMC,WAAW,oBAAoB,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,WAAW,CAAC7oE,MAAM,CAAC,aAAa,CAAEk3B,QAAQ,EAAMw8B,SAAS,GAAO,eAAe,GAAG,eAAe,8BAA8B,MAAQ,8BAA8B,MAAQqxJ,EAAI6C,WAAW,YAAY,OAAO,aAAa,KAAK,SAAW,GAAG,MAAQ,GAAG,SAAW,IAAI1B,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAA2B,mBAAE8qC,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAU,qBAAsBy5L,IAAMC,WAAW,kCAAkC,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,WAAW,CAAC7oE,MAAM,CAAC,aAAa,CAAE4S,KAAK,EAAM8gD,SAAS,GAAO,eAAe,GAAG,eAAe,8BAA8B,MAAQ,aAAa,MAAQqxJ,EAAI6C,WAAW,YAAY,OAAO,aAAa,KAAK,SAAW,GAAG,MAAQ,GAAG,SAAW,IAAI1B,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAiB,SAAE8qC,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAU,WAAYy5L,IAAMC,WAAW,wBAAwB,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,aAAa,CAACt8I,EAAG,aAAa,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,eAAe,eAAe,GAAG,MAAQ,oDAAoD,KAAO,QAAQkmN,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAqB,aAAE8qC,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAU,eAAgBy5L,IAAMC,WAAW,4BAA4B,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,kBAAkB,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,YAAY,CAACt8I,EAAG,aAAa,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,eAAe,eAAe,GAAG,MAAQ,gBAAgBkmN,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAc,MAAE8qC,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAU,QAASy5L,IAAMC,WAAW,qBAAqB,GAAGv9I,EAAG,MAAM,CAACs8I,YAAY,YAAY,CAACt8I,EAAG,aAAa,CAACs8I,YAAY,2BAA2BnlN,MAAM,CAAC,GAAK,eAAe,eAAe,GAAG,MAAQ,aAAakmN,MAAM,CAAC5iN,MAAOyhN,EAAIr4L,SAAc,MAAE8qC,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAIr4L,SAAU,QAASy5L,IAAMC,WAAW,qBAAqB,KAAKv9I,EAAG,MAAM,CAACs8I,YAAY,yBAAyBt8I,EAAG,aAAa,CAAC7oE,MAAM,CAAC,IAAM,MAAM,MAAQ,QAAQ,QAAU,MAAOkmN,MAAM,CAAC5iN,MAAOyhN,EAAY,SAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAI8C,SAAS1B,GAAKC,WAAW,aAAa,CAACv9I,EAAG,OAAO,CAACs8I,YAAY,gBAAgBnlN,MAAM,CAAC,KAAO,KAAK,CAAC+kN,EAAIO,GAAGP,EAAIiC,GAAGjC,EAAI+C,oBAAqB/C,EAAgB,aAAEl8I,EAAG,MAAM,CAACs8I,YAAY,SAAS,CAACt8I,EAAG,MAAM,CAACs8I,YAAY,iBAAiB,CAACt8I,EAAG,KAAK,CAACk8I,EAAIO,GAAG,mDAAmDz8I,EAAG,aAAa,CAACs8I,YAAY,eAAenlN,MAAM,CAAC,MAAQ,uBAAuBkmN,MAAM,CAAC5iN,MAAOyhN,EAAqB,kBAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIgD,kBAAkB5B,GAAKC,WAAW,uBAAuBv9I,EAAG,MAAM,CAACs8I,YAAY,cAAc,CAACt8I,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIiB,cAAgBjB,EAAIiB,gBAAgB,CAACjB,EAAIO,GAAG,cAAcz8I,EAAG,QAAQ,CAACs8I,YAAY,WAAWnlN,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAIS,cAAcT,EAAIr4L,SAAU,GAAG,MAAU,CAACq4L,EAAIO,GAAG,gBAAgB,IAAI,KAAKP,EAAI/7I,MAAM,IAClvUg/I,EAAkB,G,wOCDlB,EAAS,WAAa,IAAIjD,EAAIphN,KAASqhN,EAAGD,EAAIE,eAAmBp8I,EAAGk8I,EAAIG,MAAMr8I,IAAIm8I,EAAG,OAAOn8I,EAAG,MAAM,CAACA,EAAG,eAAe,CAAC7oE,MAAM,CAAC,QAAU+kN,EAAIkD,QAAQ,MAAQlD,EAAImD,cAAc,eAAe,gBAAgB,eAAe,CAAEC,iBAAkB,oBAAqBC,oBAAqB,QAASxB,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,MAAMoxL,GAAG,WAAW,MAAO,CAAC/qH,EAAG,YAAY,CAAC7oE,MAAM,CAAC,KAAO,KAAK,CAAC6oE,EAAG,WAAW,CAAC7oE,MAAM,CAAC,YAAY,SAAS4mN,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,YAAYoxL,GAAG,SAASt7L,GAC9d,IAAI07E,EAAK17E,EAAI07E,GACTh0E,EAAQ1H,EAAI0H,MAChB,MAAO,CAAC6oE,EAAG,QAAQk8I,EAAIsD,GAAGtD,EAAI32J,GAAG,CAACpuD,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIuD,cAAgB,KAAK,QAAQtoN,GAAM,GAAOg0E,GAAI,CAAC+wI,EAAIO,GAAG,mBAAmBY,MAAM,CAAC5iN,MAAOyhN,EAAU,OAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIe,OAAOK,GAAKC,WAAW,WAAW,CAACv9I,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,OAAO,CAACs8I,YAAY,YAAY,CAACJ,EAAIO,GAAGP,EAAIiC,IAAwB,GAArBjC,EAAIuD,aAAqB,WAAa,iBAAiB,eAAez/I,EAAG,cAAc,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,KAAK,GAAK,OAAO,CAAC6oE,EAAG,iBAAiB,CAAC7oE,MAAM,CAAC,eAAe,8BAA8B,gBAAgB,GAAG,YAAY,OAAO,aAAa,OAAO,MAAQ+kN,EAAIwD,UAAU,eAAexD,EAAI7nM,OAAO,eAAe,GAAG,gBAAgB,GAAG,MAAQ,UAAU82D,GAAG,CAAC,OAAS+wI,EAAIyD,WAAW,qBAAqB,SAASpD,GAAQL,EAAI7nM,OAAOkoM,GAAQ,sBAAsB,SAASA,GAAQL,EAAI7nM,OAAOkoM,IAASc,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAe,KAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,OAAQtC,IAAMC,WAAW,sBAAsB,GAAGv9I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,KAAK,GAAK,OAAO,CAAC6oE,EAAG,aAAa,CAAC7oE,MAAM,CAAC,SAAW,GAAG,MAAQ,YAAYkmN,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAY,EAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,IAAKtC,IAAMC,WAAW,mBAAmB,IAAI,IAAI,IAAI,GAAGv9I,EAAG,iBAAiB,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAIlzM,QAAQ,CAACkzM,EAAIO,GAAG,YAAYz8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAI2D,OAAO,CAAC3D,EAAIO,GAAG,gBAAgB,IAAI,IAAI,IAAI,KAAKtd,OAAM,GAAM,CAACxlM,IAAI,cAAcoxL,GAAG,SAASt7L,GAChiD,IAAI40D,EAAO50D,EAAI40D,KACf,MAAO,CAAC2b,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI4D,UAAUz7J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,aAAa,MAAQ,8BAA8B,GAAG6oE,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI6D,WAAW17J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,YAAY,MAAQ,uBAAuB,UAAU6oE,EAAG,aAAa,CAAC7oE,MAAM,CAAC,IAAM,MAAM,QAAU,IAAK,MAAQ,SAASkmN,MAAM,CAAC5iN,MAAOyhN,EAAY,SAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAI8C,SAAS1B,GAAKC,WAAW,aAAa,CAACv9I,EAAG,MAAM,CAACA,EAAG,OAAO,CAACs8I,YAAY,gBAAgBnlN,MAAM,CAAC,KAAO,KAAK,CAAC+kN,EAAIO,GAAG,6BAA6B,IAC7nB,EAAkB,G,YC8BtB,GACE,SAAF,kBACA,gBACI,UAAJ,cACI,cAAJ,sBAGE,KAPF,WAQI,MAAJ,CACM,cAAN,EACM,WAAN,CACQ,KAAR,GACQ,EAAR,IAEM,UAAN,EACM,OAAN,GACM,QAAN,EACM,SAAN,GACM,QAAN,CACA,CAAQ,KAAR,eAAQ,MAAR,QACA,CAAQ,KAAR,WAAQ,MAAR,KACA,CAAQ,KAAR,GAAQ,MAAR,aAIE,MAAF,CACI,OADJ,SACA,GACM,KAAN,iBAGE,QAAF,gDACA,gBACI,YAAJ,oBAEA,gBACI,SAAJ,cACI,SAAJ,cACI,QAAJ,gBAPA,IASI,KATJ,WAUA,4BACA,qBACA,eAAU,KAAV,CAAY,KAAZ,0BAAY,GAAZ,wBAAY,EAAZ,iCAAU,KAAV,cAEA,eAAU,KAAV,CAAY,KAAZ,qBAAY,GAAZ,mBAAY,EAAZ,mBAAU,KAAV,cACQ,KAAR,YAAU,KAAV,GAAU,EAAV,IACQ,KAAR,WAEQ,KAAR,aAGI,WArBJ,SAqBA,GACM,KAAN,mBACM,KAAN,2BAEI,MAzBJ,WA0BM,KAAN,YAAQ,KAAR,GAAQ,GAAR,GAAQ,EAAR,IACM,KAAN,WAEI,UA7BJ,SA6BA,GACM,KAAN,oBACM,KAAN,eACM,KAAN,uBACM,KAAN,iBACM,KAAN,mBACM,KAAN,WAEI,WArCJ,SAqCA,GACA,kDACQ,KAAR,SAAU,KAAV,EAAU,KAAV,iBAIE,QAzEF,WA0EI,KAAJ,gBC9GqW,I,kSCgBtV,gBAAW,CACxB5+M,KADwB,SAGxBmiN,cAHwB,EAKxBp1L,MAAO,CACLw5B,MAAO,CACL/zD,KADK,MAEL6mB,QAAS,iBAAM,KAEjBkB,QAAS,CACP/nB,KADO,OAEP6mB,QAAS,sBAEX+oM,OAAQ,CACN5vN,KAAM,CAACggD,OADD,OAENn5B,QAAS,iBAAM,KAEjBgpM,SAAU,CACR7vN,KAAM,CAACyuC,QADC,OAER5nB,QAAS,iBAAM,KAEjBipM,WAAY,CACV9vN,KADU,SAEV6mB,QAAS,QAEXkpM,SArBK,QAsBLC,UAtBK,QAuBLC,KAAM,CACJjwN,KADI,OAEJ6mB,QAAS,GAEXqpM,aAAc,CACZlwN,KADY,OAEZ6mB,QAAS,IAEXspM,QAAS,CACPnwN,KAAM,CAACggD,OADA,OAEPn5B,QAAS,iBAAM,KAEjBupM,UAAW,CACTpwN,KAAM,CAACyuC,QADE,OAET5nB,QAAS,iBAAM,KAEjBwpM,YAAa,CACXrwN,KADW,SAEX6mB,QAAS,QAEXypM,OAAQ,CACNtwN,KADM,OAEN6mB,QAAS,SAEX0pM,YA/CK,QAgDLC,kBAhDK,QAiDLC,iBAjDK,QAkDLzsM,OAlDK,OAmDL0sM,aAAc,CACZ1wN,KADY,SAEZ6mB,QAAS,QAEX8pM,kBAAmB,CACjB3wN,KADiB,OAEjB6mB,SAAU,IAIds7B,KAlEwB,WAmEtB,IAAIyuK,EAA+B,CACjCX,KAAMxlN,KAD2B,KAEjCylN,aAAczlN,KAFmB,aAGjCmlN,OAAQ,eAAYnlN,KAHa,QAIjColN,SAAU,eAAYplN,KAJW,UAKjC0lN,QAAS,eAAY1lN,KALY,SAMjC2lN,UAAW,eAAY3lN,KANU,WAOjCslN,SAAUtlN,KAPuB,SAQjCulN,UAAWvlN,KAAKulN,WAGdvlN,KAAJ,UACEmmN,EAAkBtjN,OAAA,SAA+B7C,KAAjD,UAbA,IAoBgB,EAIC,EAxBjB,EAgBF,EAAM,EAhBJ,EAgBI,SAhBJ,EAgBI,WAhBJ,EAgBI,QAA6B2lN,EAhBjC,EAgBiCA,UAC7BS,EAAWjB,EAAA,OAAgBC,EAAjC,OACMiB,EAAYX,EAAA,OAAiBC,EAAnC,OAEIS,EAAJ,IACE,EAAAD,EAAA,sCAAiC,eAAUC,GAA3C,KAGEC,EAAJ,IACE,EAAAF,EAAA,uCAAkC,eAAUE,GAA5C,KAGF,MAAO,CACLF,oBAIJzsM,SAAU,CACR4sM,YADQ,WAEN,OAAOtmN,KAAKkmN,mBAAqB,EAAIlmN,KAA9B,kBAAuDA,KAAKumN,cAAnE,QAEFC,UAJQ,WAKN,OAAOxmN,KAAKmmN,gBAAgBV,cAAgB,EAArC,EAEHnmN,KAAA,KAAUU,KAAKsmN,YAActmN,KAAKmmN,gBAFtC,eAIFM,UATQ,WAUN,OAAI,IAAAzmN,KAAKmmN,gBAAgBV,cAAwBzlN,KAAKspD,MAAtD,QAEQtpD,KAAKmmN,gBAAgBX,KAAtB,GAAkCxlN,KAAKmmN,gBAA9C,aAF2E,GAI7EO,SAdQ,WAeN,WAAI1mN,KAAKmmN,gBAAgBV,aAA4BzlN,KAAP,YACzCA,KAAKspD,MAAV,OAEOhqD,KAAA,IAASU,KAAT,YAA2BA,KAAKmmN,gBAAgBX,KAAOxlN,KAAKmmN,gBAAnE,cAF+B,GAIjCQ,UApBQ,WAqBN,QAAS3mN,KAAKmmN,gBAAgBT,QAA9B,QAEFkB,WAvBQ,WAwBN,MAAO,CACLpB,KAAMxlN,KAAKmmN,gBADN,KAELV,aAAczlN,KAAKmmN,gBAFd,aAGLM,UAAWzmN,KAHN,UAIL0mN,SAAU1mN,KAJL,SAKLwmN,UAAWxmN,KALN,UAMLsmN,YAAatmN,KAAKsmN,cAGtBC,cAjCQ,WAkCN,IAAIj9J,EAAQtpD,KAAKspD,MAAjB,QAMA,OAJKtpD,KAAD,kBAA0BA,KAAKkmN,mBAAnC,IACE58J,EAAQtpD,KAAKimN,aAAa38J,EAAOtpD,KAAjC,SAGF,GAEF6mN,cA1CQ,WA2CN,IAAIv9J,EAAQtpD,KAAKumN,cAAjB,QAUA,OARKvmN,KAAD,aAAqBA,KAAKkmN,mBAA9B,IACE58J,EAAQtpD,KAAK8mN,UAAbx9J,KAGGtpD,KAAD,mBAA2BA,KAAKkmN,mBAApC,IACE58J,EAAQtpD,KAAK+mN,cAAbz9J,IAGF,GAEF09J,aAvDQ,WAwDN,OAAOhnN,KAAK2mN,UAAY3mN,KAAKinN,WAAWjnN,KAAjC,eAAP,MAEFknN,YA1DQ,WA2DN,IAAMp3L,EAAQ,CACZrb,KAAMzU,KADM,KAEZmnN,UAAWnnN,KAFC,UAGZ6c,MAAO7c,KAHK,MAIZspD,MAAOtpD,KAJK,cAKZsd,QAAStd,KALG,gBAMZonN,cAAepnN,KANH,cAOZ4mN,WAAY5mN,KAPA,WAQZgnN,aAAchnN,KARF,aASZqnN,oBAAqBrnN,KAAKspD,MAAMpuD,QAGlC,UAEFosN,gBAzEQ,WA0EN,yBAAYtnN,KAAKsd,WAIrBojM,MAAO,CACL4G,gBAAiB,CACfp0K,QADe,SACR,KACD,eAAU51B,EAAd,IAEAtd,KAAA,kBAEFunN,MANe,EAOfC,WAAW,GAEbrB,gBAAiB,CACfjzK,QADe,SACR,KACD,eAAU51B,EAAd,IACAtd,KAAA,2BAEFunN,MALe,EAMfC,WAAW,GAEbhC,KAlBK,SAkBD,GACFxlN,KAAA,cAAmB,CAAEwlN,KAAA,KAEvB,uBArBK,SAqBL,GACExlN,KAAA,wBAEFylN,aAxBK,SAwBO,GACVzlN,KAAA,cAAmB,CAAEylN,aAAA,KAEvB,+BA3BK,SA2BL,GACEzlN,KAAA,kCAEFmlN,OA9BK,SA8BC,GACJnlN,KAAA,cAAmB,CAAEmlN,OAAQ,eAAY,MAE3C,yBAjCK,SAiCL,MACG,eAAUA,EAAX,IAA2BnlN,KAAKynN,MAAM,iBAAkBj0M,MAAA,QAAcxT,KAAd,UAAsCmlN,EAA9F,KAEFC,SApCK,SAoCG,GACNplN,KAAA,cAAmB,CAAEolN,SAAU,eAAY,MAE7C,2BAvCK,SAuCL,MACG,eAAUA,EAAX,IAA6BplN,KAAKynN,MAAM,mBAAoBj0M,MAAA,QAAcxT,KAAd,YAA0ColN,EAAtG,KAEFM,QA1CK,SA0CE,GACL1lN,KAAA,cAAmB,CAAE0lN,QAAS,eAAY,MAE5C,0BA7CK,SA6CL,MACG,eAAUA,EAAX,IAA4B1lN,KAAKynN,MAAM,kBAAmBj0M,MAAA,QAAcxT,KAAd,WAAwC0lN,EAAlG,KAEFC,UAhDK,SAgDI,GACP3lN,KAAA,cAAmB,CAAE2lN,UAAW,eAAY,MAE9C,4BAnDK,SAmDL,MACG,eAAUA,EAAX,IAA8B3lN,KAAKynN,MAAM,oBAAqBj0M,MAAA,QAAcxT,KAAd,aAA4C2lN,EAA1G,KAEFJ,UAtDK,SAsDI,GACPvlN,KAAA,cAAmB,CAAEulN,UAAA,KAEvB,4BAzDK,SAyDL,GACEvlN,KAAA,8BAEFslN,SA5DK,SA4DG,GACNtlN,KAAA,cAAmB,CAAEslN,SAAA,KAEvB,2BA/DK,SA+DL,GACEtlN,KAAA,6BAEFwmN,UAAW,CACTtzK,QADS,SACF,GACLlzC,KAAA,uBAEFwnN,WAAW,GAEbX,cAAe,CACb3zK,QADa,SACN,GACLlzC,KAAA,0BAEFwnN,WAAW,GAEbZ,WAAY,CACV1zK,QADU,SACH,KACD,eAAU0zK,EAAd,IACA5mN,KAAA,mBAAyBA,KAAzB,aAEFwnN,WAAW,IAIf3G,QAAS,CACP6G,OADO,SACD,aACJ,IAAIC,EAAKC,EAAT,QACIh6L,EAAOi6L,EAAX,QACMC,EAAUH,EAAA,WAAc,SAAAjmK,GAAD,OAAeA,IAA5C,KAwBA,OAtBIomK,EAAJ,GACE,IACEH,EAAA,GACA/5L,EAAA,IAGF+5L,EAAA,QACA/5L,EAAA,UACSk6L,GAAA,IAAiBl6L,EAArB,GACLA,EAAA,MACK,EAILA,EAAA,OAHA+5L,EAAA,YACA/5L,EAAA,aAMG,eAAU+5L,EAAX,IAA0B,eAAU/5L,EAAxC,KACE43L,EAAA,GAGK,CAAEmC,KAAI/5L,OAAM43L,SAErB3oM,MA9BO,SA8BF,GAAa,MAC+B7c,KAAK0nN,OAAO,EAEzD1nN,KAAKmmN,gBAFwC,QAG7CnmN,KAAKmmN,gBAHwC,UAI7CnmN,KAAKmmN,gBAJwC,SAA/C,GAAM,EADU,EACRwB,GAAF,EADU,EACK/5L,KAAiB43L,EADtB,EACsBA,KAQtCxlN,KAAA,cAAmB,CAAE0lN,UAASC,YAAWH,UAE3C/wM,KAzCO,SAyCH,GACF,GAAIjB,MAAA,QAAJ,GAAwB,OAAOxT,KAAKmnN,UAAZ,GADE,MAGmBnnN,KAAK0nN,OAAO,EAEvD1nN,KAAKmmN,gBAFsC,OAG3CnmN,KAAKmmN,gBAHsC,SAI3CnmN,KAAKmmN,gBAJsC,KAK3CnmN,KAAKmmN,gBALsC,SAM3CnmN,KAAKmmN,gBANP,WAAM,EAHoB,EAGlBwB,GAAF,EAHoB,EAGN/5L,KAAgB43L,EAHV,EAGUA,KAQpCxlN,KAAA,cAAmB,CAAEmlN,SAAQC,WAAUI,UAEzC2B,UAtDO,SAsDE,GAAkB,WACnB/B,EAAWD,EAAA,KAAW,SAAA55M,GAC1B,IAAM3T,EAAI,oCAAuC,SAAA8pD,GAAD,OAAeA,IAA/D,KACA,OAAO9pD,GAAA,GAAS,2BAATA,MAGToI,KAAA,cAAmB,CAAEmlN,SAAQC,cAE/BgC,cA9DO,SA8DM,GACXpnN,KAAA,gEACKA,KADkB,oBAAvB,IAGEwlN,KAAMxlN,KAAKkmN,kBAAoB,EAC3B5mN,KAAA,MAAYA,KAAA,IAASge,EAAA,MAAgBtd,KAAKmmN,gBAA9B,KAAoDnmN,KAD9D,YAEFsd,EAAA,MAAgBtd,KAAKmmN,gBAAgBX,QAG7CsB,UAvEO,SAuEE,GACP,IAAI3B,EAASnlN,KAAKmmN,gBAAlB,OACIf,EAAWplN,KAAKmmN,gBAApB,SAOA,OALInmN,KAAKmmN,gBAAgBT,QAAzB,SACEP,EAAS,GAAH,sBAAOnlN,KAAKmmN,gBAAT,SAAH,eAANhB,IACAC,EAAW,GAAH,sBAAOplN,KAAKmmN,gBAAT,WAAH,eAARf,KAGKplN,KAAKqlN,WAAW/7J,EAAO67J,EAAQC,EAAUplN,KAAhD,SAEFinN,WAlFO,SAkFG,GACR,OAAOjnN,KAAK4lN,YAAYt8J,EAAOtpD,KAAKmmN,gBAA7B,QAAsDnmN,KAAKmmN,gBAAlE,YAEFY,cArFO,SAqFM,GAOX,OAJI,IAAA/mN,KAAKkmN,mBAA4B58J,EAAA,QAAgBtpD,KAArD,YACEA,KAAA,qBAA4BV,KAAA,MAAYU,KAAKmmN,gBAAgBX,KAA7D,IAGKl8J,EAAA,MAAYtpD,KAAZ,UAA4BA,KAAnC,YAIJygK,OAxWwB,WAyWtB,OAAOzgK,KAAK+nN,aAAL,YAA6B/nN,KAAK+nN,aAAL,WAA0B/nN,KAA9D,gB,4GC7WW,gBAAW,CACxB+C,KADwB,gBAGxB+sB,MAAO,CACLxS,QAAS,CACP/nB,KADO,OAEPyyN,UAAU,GAEZpB,WAAY,CACVrxN,KADU,OAEVyyN,UAAU,GAEZC,oBAAqB,CACnB1yN,KADmB,MAEnB6mB,QAAS,iBAAO,CAAC,EAAG,GAAI,IAAR,KAElB8rM,SAAU,CACR3yN,KADQ,OAER6mB,QAAS,SAEX+rM,SAAU,CACR5yN,KADQ,OAER6mB,QAAS,SAEXgsM,UAAW,CACT7yN,KADS,OAET6mB,QAAS,UAEXisM,SAAU,CACR9yN,KADQ,OAER6mB,QAAS,SAEXooM,iBAAkB,CAChBjvN,KADgB,OAEhB6mB,QAAS,wCAEXqoM,oBAAqB,CACnBlvN,KADmB,OAEnB6mB,QAAS,uCAEXksM,kBArCK,QAsCLC,gBAtCK,QAuCLxC,kBAvCK,QAwCLyC,oBAxCK,QAyCLC,SAAU,CACRlzN,KADQ,OAER6mB,QAAS,iCAIb1C,SAAU,CACRgvM,oBADQ,WAEN,OAAO1oN,KAAKsd,QAAQmoM,cAAgB,GAClCzlN,KAAKsd,QAAQkoM,KAAOxlN,KAAKsd,QAAzB,cAAiDtd,KAAK4mN,WADjD,aAEL5mN,KAAK4mN,WAAWF,SAFlB,GAIFiC,gCANQ,WAMuB,WAC7B,OAAO3oN,KAAKioN,oBAAoBtxN,KAAI,SAAA0xB,GAClC,iBAAI,kBAAJ,EACY,4BAAP,QAKXw4L,QAAS,CACPuG,cADO,SACM,GACXpnN,KAAA,uBAA6B6C,OAAA,UAAkB7C,KAAlB,QAA7B,KAEF4oN,YAJO,WAKL5oN,KAAA,cAAmB,CAAEwlN,KAAM,KAE7BqD,eAPO,WAQL7oN,KAAA,cAAmB,CAAEwlN,KAAMxlN,KAAKsd,QAAQkoM,KAAO,KAEjDsD,WAVO,WAWL9oN,KAAA,cAAmB,CAAEwlN,KAAMxlN,KAAKsd,QAAQkoM,KAAO,KAEjDuD,WAbO,WAcL/oN,KAAA,cAAmB,CAAEwlN,KAAMxlN,KAAK4mN,WAAWJ,aAE7CwC,qBAhBO,SAgBa,GAClBhpN,KAAA,cAAmB,CAAEylN,eAAcD,KAAM,KAE3CyD,0BAnBO,SAmBkB,GACvB,MAAO,CACL/qN,MAAM,IAAAmqB,EAAgBroB,KAAKkpN,SAAS7kH,KAAKzkD,EAAE5/C,KAArC,qBAAiEu1C,OADlE,GAEL51C,MAAO0oB,IAGX8gM,sBAzBO,WA0BL,IAAIxpN,EAAQK,KAAKsd,QAAjB,aACM8rM,EAAeppN,KAArB,gCAEA,OAAIopN,EAAA,QAAJ,EAAqC,MAEhCA,EAAA,MAAkB,SAAAC,GAAI,OAAIA,EAAA,QAA/B,OAAsD1pN,EAAQypN,EAAR,IAE/CppN,KAAKshN,eAAe,MAAO,CAChCE,YAAa,yBACZ,CACDxhN,KAAKkpN,SAAS7kH,KAAKzkD,EAAE5/C,KADpB,kBAEDA,KAAKshN,eAAegI,EAApB,KAA6B,CAC3BjtN,MAAO,CACL,aAAc2D,KAAKwkN,kBAErB10L,MAAO,CACL0Y,SAAUxoC,KADL,oBAELspD,MAFK,EAGL3pD,QACA4pN,aAJK,EAKLC,MALK,EAMLC,SAAU,QAEZp5I,GAAI,CACFra,MAAOh2D,KAAKgpN,4BAKpBU,kBAvDO,WAwDL,IAAI7tL,EAAuC,CAA3C,KAEA,GAAI77B,KAAK4mN,WAAWN,aAAetmN,KAAK4mN,WAAxC,aAAiE,CAC/D,IAAMN,EAActmN,KAAK4mN,WAAzB,YACMH,EAAYzmN,KAAK4mN,WAAWH,UAAlC,EACMC,EAAWJ,EAActmN,KAAK4mN,WAAnB,UAA0C5mN,KAAK4mN,WAAWF,SAA1D,EAAAJ,EAEbtmN,KAAK4mN,WAFT,SAIA/qL,EAAW77B,KAAK+nN,aAAa,aACzB,CAAC/nN,KAAK+nN,aAAa,aAAc,CAAEtB,YAAWC,WAAUJ,iBACxD,CAACtmN,KAAKkpN,SAAS7kH,KAAKzkD,EAAE5/C,KAArB,aAFL,IAKF,OAAOA,KAAKshN,eAAe,MAAO,CAChC/9K,MAAO,6BADT,IAIFomL,QA1EO,SA0EA,SACL,OAAO3pN,KAAKshN,eAAe,EAApB,KAA0B,CAC/BxxL,MAAO,CACL0Y,SAAUA,GAAYxoC,KADjB,kBAEL4pN,MAFK,EAGL1rN,MAAM,GAIRmyE,GAAI,CACFr8B,SAEF33C,MAAO,CACL,aAAc2mJ,IAEf,CAAChjJ,KAAKshN,eAAeuI,EAApB,KAdJ,MAgBFC,SA3FO,WA4FL,IAAMz0N,EAAN,GACMa,EAAN,GAgCA,OA9BAb,EAAA,KAAY2K,KAAK2pN,QACf3pN,KADU,mBAEVA,KAAKsd,QAAQkoM,KACbxlN,KAAKkpN,SAAS7kH,KAAKzkD,EAHT,gCAIV5/C,KAAKkpN,SAASa,IAAM/pN,KAApB,SAAoCA,KAJtC,WAOA9J,EAAA,KAAW8J,KAAK2pN,QACd3pN,KADS,WAETA,KAFS,oBAGTA,KAAKkpN,SAAS7kH,KAAKzkD,EAHV,gCAIT5/C,KAAKkpN,SAASa,IAAM/pN,KAApB,SAAoCA,KAJtC,WAOIA,KAAJ,oBACE3K,EAAA,QAAe2K,KAAK2pN,QAClB3pN,KADa,gBAEbA,KAAKsd,QAAQkoM,KACbxlN,KAAKkpN,SAAS7kH,KAAKzkD,EAHN,iCAIb5/C,KAAKkpN,SAASa,IAAM/pN,KAApB,SAAoCA,KAJtC,YAOA9J,EAAA,KAAW8J,KAAK2pN,QACd3pN,KADS,WAETA,KAAKsd,QAAQkoM,MAAQxlN,KAAK4mN,WAA1B,YAFS,IAEyC5mN,KAAKsd,QAAQmoM,aAC/DzlN,KAAKkpN,SAAS7kH,KAAKzkD,EAHV,gCAIT5/C,KAAKkpN,SAASa,IAAM/pN,KAApB,UAAqCA,KAJvC,YAQK,CACLA,KAAKshN,eAAe,MAAO,CACzBE,YAAa,+BAFV,GAILxhN,KAAKuoN,iBAAmBvoN,KAAKshN,eAAe,OAAQ,CAACthN,KAAKsd,QAAQkoM,KAJ7D,aAKLxlN,KAAKshN,eAAe,MAAO,CACzBE,YAAa,8BANjB,MAYJ/gD,OAzMwB,WA0MtB,OAAOzgK,KAAKshN,eAAe,MAAO,CAChCE,YAAa,iBACZ,CACDxhN,KADC,wBAEDA,KAFC,oBAGDA,KALF,gB,gDCpMW,SAAAgqN,EAAA,MAAO,EAAD,KAAN,eAGN,CACPjnN,KADO,kBAGP+sB,MAAO,iCACFm6L,EAAA,QADE,OAAF,IAEHC,QAAS,CACP30N,KADO,OAEP6mB,QAAS,MAEXzc,MAAO,CACLpK,KADK,MAEL6mB,QAAS,iBAAM,KAEjB+tM,aAVK,QAWLC,SAAU,CACR70N,KADQ,MAER6mB,QAAS,iBAAM,KAEjBiuM,iBAAkB,iCACb,qBADa,kBAAF,IAEdjuM,QAAS,MAEXkuM,aAnBK,QAoBL1I,QAAS,CAAC59K,QApBL,QAqBLumL,cAAe,CACbh1N,KADa,OAEb6mB,QAAS,uCAEXouM,WAAY,CACVj1N,KADU,OAEV6mB,QAAS,uBAEXquM,YAAa,CACXl1N,KADW,OAEX6mB,QAAS,qCAEXsuM,kBAjCK,QAkCLC,YAlCK,OAmCLC,cAAe,CACbr1N,KADa,OAEb6mB,QAAS,kBAIbs7B,KAAM,iBAAO,CACXrjD,UADW,GAEXw2N,UAFW,GAGXC,qBAAsB,KAGxBpxM,SAAU,CACRqxM,UADQ,WACC,WACP,QAAS/qN,KAAKgrN,gBAAP,QAAiChrN,KAAKgrN,gBAAgBC,OAAO,SAAArzN,GAAD,OAAY,aAA/E,OAEFszN,UAJQ,WAIC,WACP,OAAOlrN,KAAKgrN,gBAAgBjsM,MAAM,SAAAnnB,GAAD,OAAY,aAA7C,OAEFuzN,qBAPQ,WAQN,OAAO,eAAmBnrN,KAA1B,cAEFgrN,gBAVQ,WAUO,WACb,OAAOhrN,KAAK8qN,qBAAqB/mL,QAAO,SAAAwlB,GAAI,OAAI,eAAhD,QAIJm3J,MAAO,CACL/gN,MAAO,CACLuzC,QADK,SACE,GAAc,WACnBlzC,KAAA,UAAiBL,EAAA,QAAa,cAE5B,OADAtL,EAAU,eAAqBk1D,EAAM,EAArC,YACA,IAFF,KAKFi+J,WAAW,GAEbnzN,UAVK,SAUI,KACH,eAAUwO,OAAA,KAAD,GAAqBA,OAAA,KAAlC,KAEA7C,KAAA,cAAoB6C,OAAA,OAApB,KAEFunN,SAAU,CACRl3K,QADQ,SACD,GAAc,WACnBlzC,KAAA,UAAiBL,EAAA,QAAa,cAE5B,OADAkrN,EAAU,eAAqBthK,EAAM,EAArC,aACA,IAFF,KAKFi+J,WAAW,GAEbqD,UAxBK,SAwBI,KAA8D,WACrE,IAAI,eAAUlrN,EAAd,IACA,IAAMswB,EAAOptB,OAAA,gBAA0B,SAAA6+C,GAAC,OAAI/hD,EAA5C,MACMyqN,EAAYn6L,EAAD,OAAoBjwB,KAAKspD,MAAMvlB,QAAO,SAAAnsC,GAAC,OAAIq4B,EAAA,SAAcslB,OAAO,eAAqB39C,EAAG,EAAzG,cAAiB,GACjBoI,KAAA,8BAIJorN,QAjGO,WAiGA,WACCC,EAAgB,CACpB,CAAC,uBADmB,WAEpB,CAAC,SAFmB,iBAGpB,CAAC,aAHmB,WAIpB,CAAC,cAJmB,uBAKpB,CAAC,eALmB,uBAMpB,CAAC,sBANmB,uCAOpB,CAAC,qBAPmB,oCAQpB,CAAC,YARmB,0BASpB,CAAC,YATH,2BAaAA,EAAA,SAAsB,YAA4B,0BAA3B,EAA2B,KAA5B,EAA4B,KAC5C,wBAAJ,IAA0C,eAASC,EAAUpzM,EAAnB,MAG5C,IAAMqzM,EAAe,CAAC,SAAD,gCAArB,eAQAA,EAAA,SAAqB,SAAA75M,GACf,wBAAJ,IAAsC,sBAI1CmvM,QAAS,CACP2K,gBADO,SACQ,GAGb,IAFA,IAAMn3N,EAAYwO,OAAA,UAAkB7C,KAApC,WAESpI,EAAT,EAAgBA,EAAIoI,KAAKgrN,gBAAzB,OAAiDpzN,IAAK,CACpD,IAAM2xD,EAAOvpD,KAAKgrN,gBAAlB,GAEA,GAAKhrN,KAAKjK,aAAV,IAEA,IAAM8I,EAAM,eAAqB0qD,EAAMvpD,KAAvC,SACA,EAAW3L,EAAA,GAAX,SACYA,EAAP,IAGP2L,KAAA,YACAA,KAAA,0BAAgC,CAAEspD,MAAOtpD,KAAT,qBAAoCL,WAEtE5J,aAjBO,SAiBK,GACV,WAAO,eAAqBwzD,EAAMvpD,KAA3B,gBAETyrN,WApBO,SAoBG,GACR,QAASzrN,KAAK3L,UAAU,eAAqBk1D,EAAMvpD,KAA5C,YAAP,GAEF0rN,OAvBO,SAuBD,GAAsC,IAAzB/rN,IAAyB,yDAAX20D,IAAW,yDAC1C,GAAKt0D,KAAKjK,aAAV,IAEA,IAAM1B,EAAY2L,KAAKmqN,aAAe,GAAKtnN,OAAA,UAAkB7C,KAA7D,WACMnB,EAAM,eAAqB0qD,EAAMvpD,KAAvC,SAKA,GAHA,EAAW3L,EAAA,GAAX,SACYA,EAAP,GAED2L,KAAKmqN,cAAT,EAA+B,CAC7B,IAAMl6L,EAAOptB,OAAA,KAAY7C,KAAzB,WACM+sC,EAAM9c,EAAA,QAAe,eAAqBjwB,KAAK3L,UAAU47B,EAAhB,IAA0BjwB,KAAzE,SACA+sC,GAAOA,IAAP,GAAsB/sC,KAAKynN,MAAM,gBAAiB,CAAEl+J,KAAMvpD,KAAK3L,UAAb,GAA6BsL,OAAO,IAExFK,KAAA,YACAs0D,GAAQt0D,KAAKynN,MAAM,gBAAiB,CAAEl+J,OAAM5pD,YAE9CgsN,WAxCO,SAwCG,GACR,OAAO3rN,KAAK6qN,UAAU,eAAqBthK,EAAMvpD,KAA1C,YAAP,GAEFsQ,OA3CO,SA2CD,GAAyB,IAAZ3Q,IAAY,yDACvBkrN,EAAY7qN,KAAKsqN,aAAe,GAAKznN,OAAA,UAAkB7C,KAA7D,WACMnB,EAAM,eAAqB0qD,EAAMvpD,KAAvC,SAEA,EAAW6qN,EAAA,IAAX,SACYA,EAAP,GAEL7qN,KAAA,YACAA,KAAA,sBAA4B,CAAEupD,OAAM5pD,WAEtCisN,gBArDO,SAqDQ,GAAW,WACxB,MAAO,CACLriK,OACAmiK,OAAS,SAAA3uN,GAAD,OAAgB,WAFnB,IAGL0uN,WAAYzrN,KAAKyrN,WAHZ,GAILn7M,OAAS,SAAAvT,GAAD,OAAgB,WAJnB,IAKL4uN,WAAY3rN,KAAK2rN,WALZ,GAMLE,SAAU7rN,KAAK6rN,WAGnBC,gBA/DO,SA+DQ,GACb,OAAO9rN,KAAKshN,eAAe,MAA3B,IAEFyK,SAlEO,SAkEC,KACN,GAAI,IAAA1E,GAA6BrnN,KAAjC,QAA+C,CAC7C,IAAM4hN,EAAU5hN,KAAKgsN,OAAO,YAAchsN,KAAKkpN,SAAS7kH,KAAKzkD,EAAE5/C,KAA/D,aACA,OAAOA,KAAK8rN,gBAAZ,GACK,OAAIzE,EAA2B,CACpC,IAAM4E,EAASjsN,KAAKgsN,OAAO,YAAchsN,KAAKkpN,SAAS7kH,KAAKzkD,EAAE5/C,KAA9D,YACA,OAAOA,KAAK8rN,gBAAZ,GACK,OAAII,EAA2B,CACpC,IAAMC,EAAYnsN,KAAKgsN,OAAO,eAAiBhsN,KAAKkpN,SAAS7kH,KAAKzkD,EAAE5/C,KAApE,eACA,OAAOA,KAAK8rN,gBAAZ,GAGF,aAEFM,SAhFO,SAgFC,GAAuB,WACvB93N,EAAQ0L,KAAK+rN,SAASj8L,EAAd,oBAAyCA,EAAA,WAAvD,aACA,SAAkB,CAAP,GAEP9vB,KAAJ,aAAI,WACKA,KAAK+nN,aAAL,4CAA0B,GAA1B,IAEL0D,WAAYzrN,KAFmB,WAG/B0rN,OAAQ1rN,KAHuB,OAI/B2rN,WAAY3rN,KAJmB,WAK/BsQ,OAAQtQ,KAAKsQ,UAIbtQ,KAAK+nN,aAAT,KACSj4L,EAAA,WAAiB,SAAAy5B,GAAD,OAAe,oBAAwB,kBAA9D,OAGF,IAEF8iK,UApGO,SAoGE,GACP,GAAIrsN,KAAJ,kBAA4B,OAAO,KAEnC,IAAM03C,EAAO,CACX5nB,MAAO,iCACF9vB,KADE,sBAAF,IAEHsd,QAASwS,EAFJ,QAGL82L,WAAY92L,EAAM82L,aAEpBv2I,GAAI,CACF,iBAAmB,SAAA1wE,GAAD,OAAgBmwB,EAAA,oBAIhCmzL,EAAc,eAAuB,UAAWjjN,KAAtD,cAEA,OAAOA,KAAKshN,eAAe,EAApB,gBACL2B,eACGvrK,KAGP40K,qBAzHO,SAyHa,GAClB,IAAMC,EAAa,oCAAH,IAEdrB,UAAWlrN,KAFM,UAGjB+qN,UAAW/qN,KAHM,UAIjBwrN,gBAAiBxrN,KAAKwrN,kBAGxB,OAAOxrN,KAAKshN,eAAe,MAAO,CAChCE,YAAa,mBACZ,CACD,eAAQxhN,KAAM,SAAUusN,GADvB,GAEDvsN,KAAKosN,SAFJ,GAGDpsN,KAAKqsN,UAHJ,GAID,eAAQrsN,KAAM,SAAUusN,GAN1B,OAWJ9rD,OA5QO,WA4QD,WACJ,OAAOzgK,KAAKshN,eAAe2I,EAAO,CAChCn6L,MAAO9vB,KADyB,OAEhCqwE,GAAI,CACF,iBAAkB,qBAAuB,eAAUtzE,EAAX,IAAsB,yBAD5D,IAEF,cAAgB,SAAAA,GAAD,OAAY,sBAFzB,IAGF,wBAA0B,SAAAA,GAAD,OAAY,gCAHnC,IAIF,iBAAmB,SAAAA,GAAD,OAAY,yBAJ5B,IAKF,mBAAqB,SAAAA,GAAD,OAAY,2BAL9B,IAMF,kBAAoB,SAAAA,GAAD,OAAY,0BAN7B,IAOF,oBAAsB,SAAAA,GAAD,OAAY,4BAP/B,IAQF6pN,WAAY,qBAAuB,eAAU7pN,EAAX,IAAsB,qBARtD,IASF,gBAAkB,SAAAA,GAChB,yBACA,4BAEF,aAAe,SAAAA,GAAD,OAAe,0BAE/BkmN,YAAa,CACX7mM,QAASpc,KAAKssN,2B,gDCrSP,SAAAtC,EAAA,eAAyB,CAEtC1G,WAAY,CACVkJ,SAAA,MAGF18L,MAAO,CACLw0L,QAAS,CACP/uN,KADO,MAEP6mB,QAAS,iBAAO,KAElBkB,QAAS,CACP/nB,KADO,OAEP6mB,QAAS,iBAAO,CACdopM,KADc,EAEdC,aAFc,GAGdN,OAHc,GAIdC,SAJc,GAKdM,QALc,GAMdC,UANc,GAOdJ,WAPc,EAQdD,UAAU,KAGdmH,SAAU,CACRl3N,KADQ,OAER6mB,QAAS,SAEX2uM,UAtBK,QAuBLG,UAvBK,QAwBLwB,YAxBK,QAyBLvC,aAzBK,QA0BLrE,YAAa9hL,SAGf68K,QAAS,CACP8L,aADO,WACK,WACJj1K,EAAO,CACX5nB,MAAO,CACLnwB,MAAOK,KADF,UAEL4sN,eAAgB5sN,KAAD,WAAmBA,KAAKkrN,WAEzC76I,GAAI,CACFra,MAAQ,SAAAj5D,GAAD,OAAgB,kCAI3B,OAAIiD,KAAK+nN,aAAT,qBACS/nN,KAAK+nN,aAAa,qBAAzB,GAGK/nN,KAAKshN,eAAeuL,EAApB,qBACLrL,YAD0C,0BAEvC9pK,KAGPo1K,YArBO,WAsBL,OAAO9sN,KAAKshN,eAAeuI,EAApB,KAA2B,CAChCrI,YADgC,4BAEhC1xL,MAAO,CACLj6B,KAAM,KAEP,CAACmK,KALJ,eCjES,SAAAgqN,EAAA,gBAAsB,CACnCjnN,KADmC,6BAGnC+sB,MAAO,CACLi9L,WAAY,CACVx3N,KADU,OAEV6mB,QAAS,8BAIbykM,QAAS,CACPmM,YADO,SACI,GAAY,WACfnxL,EAAuC,CAAC/L,EAAA,KAA9C,MAEMm9L,EAAYjtN,KAAKsd,QAAQ6nM,OAAOhyM,WAAU,SAAAuuC,GAAC,OAAIA,IAAM5xB,EAAA,KAA3D,SACMo9L,EAAcD,GAApB,EACME,EAASntN,KAAKsd,QAAQ8nM,SAA5B,GAYA,OAVAvpL,EAAA,KAAc77B,KAAKshN,eAAe,MAAO,CACvCE,YADuC,gBAEvCj+K,MAAO,CACL6pL,UADK,EAELxzM,OAFK,EAGLyzM,IAAKH,IAHA,EAILt/L,KAAMs/L,GAAeC,IAEtB,CAACntN,KARJ,iBAUOA,KAAKshN,eAAegM,EAApB,KAA2B,CAChC9L,YADgC,WAEhCnxI,GAAI,CACFr8B,MAAQ,SAAA7uC,GACNA,EAAA,kBACA,eAAmB2qB,EAAA,KAAnB,UALN,IAUFy9L,cA5BO,SA4BM,GAAc,WACzB,OAAOvtN,KAAKshN,eAAegI,EAApB,KAA6B,CAClCx5L,MAAO,CACLkzH,MAAOhjJ,KAAKkpN,SAAS7kH,KAAKzkD,EAAE5/C,KADvB,YAELspD,QACAigK,aAHK,EAILtqE,SAAUj/I,KAAKsd,QAJV,UAKL3d,MAAOK,KAAKsd,QAAQioM,UAAYvlN,KAAKsd,QAA9B,OAA+Ctd,KAAKsd,QAAQ6nM,OAL9D,GAMLqI,UAAW,CAAEC,qBAAqB,IAEpCp9I,GAAI,CACF7kC,OAAS,SAAAzuC,GAAD,OAA0B,oBAEpCkmN,YAAa,CACX5uN,UAAW,SAAAy7B,GAAK,OAAI,uBAM5B2wI,OA1DmC,SA0D7B,GACJ,IAAM5kI,EAAN,GAEMna,EAAS1hB,KAAKskN,QAAQzzM,MAAK,SAAAovL,GAAC,MAAlC,sBAAsCA,EAAA,SAClCv+K,IAAW1hB,KAAf,cACE67B,EAAA,KAAc77B,KAAKshN,eAAe,MAAO,CACvC/9K,MAAA,CAAO,sCAAP,sBAEK,eAAY7hB,EAHsB,YAKvCrlB,MAAO,CACLy3B,MAAOpS,EAAOoS,QAEf,CAAC9zB,KARJ,kBAWF,IAAM0tN,EAAc1tN,KAAKskN,QAAL,QACV,SAAArkB,GAAC,OAAI,IAAAA,EAAA,UADK,sBACmBA,EAAA,SADnB,KAEb,SAAAA,GAAC,MAAK,CACT/hM,KAAM+hM,EADG,KAETtgM,MAAOsgM,EAAEtgM,WAGRK,KAAD,aAAqB0tN,EAAzB,QACE7xL,EAAA,KAAc77B,KAAKutN,cAAnB,IAGF,IAAM79K,EAAKuwJ,EAAE,KAAM,CAACA,EAAE,MAAO,CAAEuhB,YAAa,uCAA5C,KAEMjtN,EAAK0rM,EAAE,KAAM,CAAnB,IAEA,OAAOA,EAAE,QAAS,CAChBuhB,YAAa,kDACZ,CAFH,OCzFW,SAAAwI,EAAA,gBAAsB,CACnCjnN,KADmC,8BAGnC89M,QAAS,CACP8M,iBADO,SACS,GAAyB,WACvC,OAAO3tN,KAAKshN,eAAe,OAAQ,CACjCjxI,GAAI,CACFr8B,MAAQ,SAAA7uC,GACNA,EAAA,kBACA,gBAAoBuc,EAApB,UAGH,CAPH,WASFksM,QAXO,SAWA,KAAuC,WACtCC,EAAM,SAAAhvN,GAAD,OAAiB,gBAAA+gD,EAAA,uCAA5B,KAEIkuK,EAAJ,OACIC,EAAY,CACdF,EADc,YAEdA,EAFF,sBAKA,UAIA,GACEC,EAAA,aACAC,EAAY,CACVF,EADU,kBAEVA,EAAG7tN,KAAKsd,QAAQgoM,SAAW,oBAF7B,mBAKAwI,EAAA,YACAC,EAAY,CACVF,EADU,iBAEVA,EAFF,wBAMK,CAAEC,WAAUC,UAAWA,EAAA,YAjBrB,CAAED,WAAUC,UAAWA,EAAA,YAmBlCC,UAxCO,SAwCE,GAAyB,WAC1Bt2K,EAAsE,CAC1Er7C,MAAO,CACL4xN,KADK,eAELC,MAFK,MAGL,aAAcxsM,EAAA,MAAe,IAE/B9V,MAAO,CACLkoB,MAAO,eAAcpS,EADhB,OAEL+nM,SAAU,eAAc/nM,EAAD,QAEzB6hB,MAAA,gBACU7hB,EAAA,OADH,UAAP,sBAEK,eAAYA,EAFT,WAAR,CAGEA,EAAA,SAbwE,0BAe1E2uD,GAAI,IAEAx0C,EAAN,GAEA,GAAI,sBAAAna,EAAA,QAAyC1hB,KAA7C,aACE,OAAOA,KAAKshN,eAAe,KAAM5pK,EAAM,CAAC13C,KAAxC,iBASF,GANA67B,EAAA,KACE77B,KAAK+nN,aAAarmM,EAAlB,OACI1hB,KAAK+nN,aAAarmM,EAAlB,OAAiC,CAAEA,WACnC1hB,KAAKshN,eAAe,OAAQ,CAAC5/L,EAHnC,SAMK1hB,KAAD,cAAsB0hB,EAAA,WAAoBA,EAAA,eAA9C,aAAkF,CAChFg2B,EAAA,YAAmB,kBAAM,eAAmBh2B,EAA5C,QAEA,IAAMurM,EAAYjtN,KAAKsd,QAAQ6nM,OAAOhyM,WAAU,SAAAuuC,GAAC,OAAIA,IAAMhgC,EAA3D,SACMwrM,EAAcD,GAApB,EACME,EAASntN,KAAKsd,QAAQ8nM,SAA5B,GAEA1tK,EAAA,0BAPgF,MAShD13C,KAAK4tN,QAAQV,EAA7C,GAAM,EAT0E,EAS1E,UAAaY,EAT6D,EAS7DA,SAEnBp2K,EAAA,+BAA+Bh2B,EAAA,UAAqB,IAApD,UACAg2B,EAAA,qBAEA,IACEA,EAAA,wBACAA,EAAA,cAAgBy1K,EAAS,OAAzB,QAGF,QAAIzrM,EAAA,MAAwBma,EAAA,QAAiB77B,KAA7C,eACK67B,EAAA,KAAc77B,KAAd,eAEDA,KAAKsd,QAAQioM,WAAjB,GACE1pL,EAAA,KAAc77B,KAAKshN,eAAe,OAAQ,CAAE/9K,MAAO,mCAAqC,CAACgS,OAAO03K,EAAhG,MAMJ,OAFIjtN,KAAK0sN,cAAT,IAAwBhrM,EAAA,WAA4Bma,EAAA,KAAc77B,KAAK2tN,iBAAnB,IAE7C3tN,KAAKshN,eAAe,KAAM5pK,EAAjC,KAIJ+oH,OA1GmC,WA0G7B,WACJ,OAAOzgK,KAAKshN,eAAe,QAAS,CAClCE,YAAa,uBACZ,CACDxhN,KAAKshN,eAAe,KAAMthN,KAAKskN,QAAQ3tN,KAAI,SAAA+qB,GAAM,OAAI,YAHvD,Y,UC1GU,cACZ,GAAIg2B,EAAA,OAAcA,EAAd,IAAyBA,EAAA,GAA7B,MACE,GAAIlkC,MAAA,QAAckkC,EAAA,GAAlB,OAAkC,CAChC,IAAM9/C,EAAI8/C,EAAA,iBAAsBA,EAAA,MAAhC,UACI9/C,GAAJ,GAAY8/C,EAAA,iCAELA,EAAA,GAAP,M,gBCZQ,gBACZ,IAAM7b,EAAN,GAEA,IAAK,IAAL,OACM44K,EAAA,eAAJ,IACE54K,EAAA,KAAcokK,EAAE,WAAY,CAAEkuB,QAAQ1Z,EAAtC,KAIJ,SCQa,oBAAW,CACxB1xM,KADwB,sBAGxBqrN,YAHwB,EAKxBt+L,MAAO,iCACF,UADE,OAAF,IAEHu+L,OAAQrqL,UAGVy8H,OAVwB,SAUlB,EAVkB,GAUS,IAAtB,EAAsB,EAAtB,QAAsB,EAAtB,KAAeg0C,EAAO,EAAPA,MACxB6Z,EAAA,GACA,IAAMzyL,EAAW,EAAa44K,IAA9B,GAIA,OAFA/8J,EAAO,OAAA62K,EAAA,MAAU72K,EAAM,CAAE5nB,UAErBA,EAAJ,OACSmwK,EAAEuuB,EAAwB92K,EAAjC,GAEOuoJ,EAAEwuB,EAAyB/2K,EAAlC,M,YC/BS,gBAAW,CACxB30C,KADwB,MAGxBqrN,YAHwB,EAKxBt+L,MAAO,CACLw0L,QADK,MAEL/6J,KAFK,OAGLwgK,IAAK/lL,SAGPy8H,OAXwB,SAWlB,EAXkB,GAWS,IAAtB,EAAsB,EAAtB,QAAsB,EAAtB,MAAgB/oH,EAAM,EAANA,KACnBg3K,EAAgBja,IAEhBvsI,EAAmBp4C,EAAA,aAAmB,SAAApO,GAA2B,MAC/Dma,EAAN,GACMl8B,EAAQ,eAAqBmwB,EAAD,KAAapO,EAA/C,OAEMitM,EAAWjtM,EAAjB,MACMktM,EAAal3K,EAAA,aAAoBA,EAAA,YAAvC,GACMm3K,EAAcH,EAApB,GAEA,EACE7yL,EAAA,KAAc+yL,EAAW,CAAErlK,KAAMz5B,EAAR,KAAoBpO,SAAQ/hB,WAC5CkvN,EACThzL,EAAA,QAEAA,EAAA,KAAc,MAAAl8B,IAAwB41C,OAAtC,IAGF,IAAMu5K,EAAY,QAAH,OAAWptM,EAAA,OAA1B,SAEA,OAAOu+K,EAAE,KAAM,CACb18J,OAAA,sBACE,GADK,GAAP,iBAEE,wBAAyB7hB,EAAOkyL,SAFlC,IADF,MAQF,OAAO3T,EAAE,KAAMvoJ,EAAf,MC7CW,gBAAW,CACxB30C,KADwB,YAGxBqrN,YAHwB,EAKxBt+L,MAAO,CACLnwB,MAAO,CACLpK,KADK,QAEL6mB,SAAS,GAEX2yM,YAAa,CACXx5N,KADW,OAEX6mB,QAAS,uBAEX4yM,aATK,OAULC,aAAc,CACZ15N,KADY,OAEZ6mB,QAAS,yBAIbqkJ,OArBwB,SAqBlB,EArBkB,GAqBG,IAAhB,EAAgB,EAAhB,MAAS3wI,EAAO,EAAPA,MACZ4+L,EAAgBja,IAChB54K,EAAN,GAoBA,OAlBI6yL,EAAJ,iBACE7yL,EAAA,KAAcokK,EAAE,KAAM,CACpBuhB,YAAa1xL,EAAMi/L,aAClBL,EAFH,mBAGSA,EAAJ,eACL7yL,EAAA,WAAAA,EAAQ,eAAS6yL,EAAjB,gBAGEA,EAAA,gBAAgC5+L,EAApC,OAAiD+L,EAAA,WAAAA,EAAQ,eAAS6yL,EAAjB,iBAE7CA,EAAJ,kBACE7yL,EAAA,KAAcokK,EAAE,KAAM,CACpBuhB,YAAa1xL,EAAMm/L,cAClBP,EAFH,oBAGSA,EAAJ,gBACL7yL,EAAA,WAAAA,EAAQ,eAAS6yL,EAAjB,iBAGF,KCtCW,G,UAAA,OAAA1E,EAAA,qBAAyB,CACtCjnN,KADsC,iBAGtC+sB,MAAO,CACLo/L,MADK,QAELC,YAFK,QAGLl7L,OAAQ,CAACtZ,OAAQ46B,SAGnB77B,SAAU,CACR8mM,QADQ,WAEN,uBACE,sBAAuBxgN,KADlB,MAEL,+BAAgCA,KAAF,SAAkBA,KAF3C,YAGL,6BAA8BA,KAHzB,aAIFA,KAAKovN,gBAKdvO,QAAS,CACPwO,WADO,WAEL,OAAOrvN,KAAKgsN,OAAOp+K,SAAW5tC,KAAKshN,eAAe,MAAO,CACvDE,YADuD,wBAEvD51M,MAAO,CACLqoB,OAAQ,eAAcj0B,KAAD,UAEtB,CACDA,KAAKshN,eAAe,QAASthN,KAN/B,OAM+B,gBAKnCygK,OAjCsC,SAiChC,GACJ,OAAOw/B,EAAE,MAAO,CACduhB,YADc,eAEdj+K,MAAOvjC,KAAKwgN,SACX,CACDxgN,KAAKgsN,OADJ,IAEDhsN,KAFC,aAGDA,KAAKgsN,OANP,aCrCW,gBAAW,CACxBjpN,KADwB,MAGxBqrN,YAHwB,EAKxBt+L,MAAO,CACLw0L,QADK,MAELgL,kBAFK,QAGL/lK,KAHK,OAILwgK,IAAK/lL,SAGPy8H,OAZwB,SAYlB,EAZkB,GAYS,IAAtB,EAAsB,EAAtB,QAAsB,EAAtB,MAAgB/oH,EAAM,EAANA,KACnBg3K,EAAgBja,IAEhBvsI,EAAmBp4C,EAAA,aAAmB,SAAApO,GAC1C,IAAM8+L,EAAU,CACd,4BAA4B,GAGxB3kL,EAAN,GACMl8B,EAAQ,eAAqBmwB,EAAD,KAAapO,EAA/C,OAEMitM,EAAWjtM,EAAjB,MACMktM,EAAal3K,EAAA,aAAoBA,EAAA,YAAvC,GACMm3K,EAAcH,EAApB,GAEA,EACE7yL,EAAA,KAAc+yL,EAAW,CAAErlK,KAAMz5B,EAAR,KAAoBpO,SAAQ/hB,WAC5CkvN,EACThzL,EAAA,QAEAA,EAAA,KAAc,MAAAl8B,IAAwB41C,OAAtC,IAGF,IAAMg6K,EAAoB,CACxBtvB,EAAE,MAAO,CACPuhB,YAAa,kCAFjB,IAcA,MARI,oBAAA9/L,EAAA,OAAuCoO,EAA3C,mBACEy/L,EAAA,QACEtvB,EAAE,MAAO,CACPuhB,YAAa,oCACZ,CAAC9/L,EAHN,QAOKu+K,EAAE,KAAM,CAAE18J,MAAOi9K,GAAxB,MAGF,OAAOvgB,EAAE,KAAM,OAAP,OAAO,CAAN,kBAAM,GAAP,IAAkBuhB,YAAa,mCAAvC,M,YCbJ,SAASgO,GAAT,OACE,OAAQ,SAAA9tM,GACN,IAAM/hB,EAAQ,eAAqB4pD,EAAM7nC,EAAzC,OACA,OAAOA,EAAA,OAAgBA,EAAA,WAAhB,GAAqDqiB,EAAOpkC,EAAO4Z,EAA1E,IAIJ,SAASk2M,GAAT,WASE,OAFAl2M,EAA2B,kBAAXA,EAAsBA,EAA7B,OAAT,KAEO+vC,EAAA,QAAa,SAAAC,GAGlB,IAAMmmK,EAAuBC,EAAA,MAA+BH,GAASjmK,EAAMhwC,EAHlD,SAOnBq2M,GAAqBr2M,GAAUs2M,EAAA,KAAiCL,GAASjmK,EAAMhwC,EAArF,IAEA,OAAOm2M,GAAP,KAKW,cAAA1F,EAAA,MAAO,EAAP,eAGN,CACPjnN,KADO,eAIPugN,WAAY,CACVkJ,SAAA,MAGF18L,MAAO,CACLw0L,QAAS,CACP/uN,KADO,MAEP6mB,QAAS,iBAAM,KAEjB0zM,WALK,QAMLC,WANK,QAOLrD,YAPK,QAULz4L,OAAQ,CAACtZ,OAVJ,QAWL20M,kBAXK,QAYLhgL,QAZK,OAaL4/K,MAbK,QAcLc,YAdK,OAeLC,gBAfK,QAgBLd,YAhBK,QAiBLe,cAjBK,OAkBLC,WAAY,CACV56N,KADU,OAEV6mB,QAAS,WAEX6pM,aAAc,CACZ1wN,KADY,SAEZ6mB,QAAS,QAEXg0M,UAAW,CACT76N,KAAM,CAACggD,OADE,UAETn5B,QAAS,iBAAM,KAEjBi0M,aAAc,CACZ96N,KAAM,CAAColB,OADK,QAEZyB,QAAS,IAIbs7B,KA5CO,WA6CL,MAAO,CACL44K,gBADK,GAELC,UAFK,GAGLC,OAAQ,KAIZ92M,SAAU,CACR+2M,gBADQ,WACO,WACb,IAAKzwN,KAAL,QAAmB,MAAO,GAC1B,IAAMskN,EAAUtkN,KAAKskN,QAAQvgL,QAAO,SAAAk8J,GAAC,YAAI,IAAAA,EAAA,QAA0B,wBAA0B,SAAAljM,GAAC,OAAIA,IAAMkjM,EAAxG,YACMywB,EAAgB,CAAExyN,KAAF,GAAYkvN,UAAZ,EAA6Bt5L,MAAO,OAE1D,GAAI9zB,KAAJ,WAAqB,CACnB,IAAMnI,EAAQysN,EAAA,WAAkB,SAAArkB,GAAC,MAAjC,sBAAqCA,EAAA,SACjCpoM,EAAJ,EAAeysN,EAAA,yCAAgB,GAAhB,IAAoC3kN,MAAO,uBACrD2kN,EAAA,4CAAyB,GAAuBA,EAAQzsN,KAG/D,GAAImI,KAAJ,WAAqB,CACnB,IAAM,EAAQskN,EAAA,WAAkB,SAAArkB,GAAC,MAAjC,sBAAqCA,EAAA,SACjC,EAAJ,EAAeqkB,EAAA,yCAAgB,GAAhB,IAAoC3kN,MAAO,uBACrD2kN,EAAA,4CAAyB,GAAuBA,EAAQ,KAG/D,UAEFqM,aApBQ,WAqBN,OAAO3wN,KAAK6rN,cAAW/6M,EAAY,CACjC40K,QAAS1lL,KAAKkwN,eAAiBlwN,KAAKywN,gBAAgBv1N,SAGxD01N,cAzBQ,WA0BN,OAAO5wN,KAAKywN,gBAAgBt1M,QAAiD,cAE3E,OADIuG,EAAJ,OAAiB8nC,EAAI9nC,EAAJ,OAAoBA,EAApB,MACjB,IAFF,KAKFiuM,yBA/BQ,WAgCN,OAAO3vN,KAAKskN,QAAQvgL,QAAO,SAAAriB,GAAM,OAAIA,EAAA,UAAmBA,EAAA,eAAD,gBAAvD,IAA+FA,EAAA,gBAEjGmuM,4BAlCQ,WAmCN,OAAO7vN,KAAKskN,QAAQvgL,QAAO,SAAAriB,GAAM,OAAKA,EAAD,UAAoBA,EAAA,eAAD,gBAAxD,IAAgGA,EAAA,gBAElGmvM,qBArCQ,WAsCN,OAAO,eAAmB7wN,KAA1B,cAEF8wN,qBAxCQ,WAyCN,IAAMrL,EAAezlN,KAAKsd,SAAWtd,KAAKsd,QAArB,aAA4Ctd,KAAKsd,QAAjD,aAAwEtd,KAA7F,aACMioN,EAA4DjoN,KAAKmrN,qBAAvE,oBAEA,GACElD,IACCA,EAAA,MAAyB,SAAA1+J,GAAI,MAAoB,kBAATA,EAAoBA,IAA3B,EAAmDA,EAAA,QAFvF,KAGE,CACA,IAAMwnK,EAAc9I,EAApB,GACA,MAAO,6BAAkC8I,EAAlC,MAAP,EAGF,WAIJ3F,QA5GO,WA4GA,WACCC,EAAgB,CACpB,CAAC,YADmB,0BAEpB,CAAC,eAFmB,uBAGpB,CAAC,aAHH,gBAOAA,EAAA,SAAsB,YAA4B,0BAA3B,EAA2B,KAA5B,EAA4B,KAC5C,wBAAJ,IAA0C,eAASC,EAAUpzM,EAAnB,OAI9C8kC,QAzHO,WA+HDh9C,KAAJ,kBACEgpB,OAAA,0BAAkChpB,KAAlC,YACAA,KAAA,eAIJ2hM,cArIO,WAsID3hM,KAAJ,iBACEgpB,OAAA,6BAAqChpB,KAArC,aAIJ6gN,QAAS,CACPmQ,WADO,WAELhxN,KAAA,OAAcwT,MAAA,KAAWxT,KAAKixN,IAAIhhL,iBAApB,YAAgD,SAAA9qC,GAAC,OAAIA,EAAnE,gBAEF+rN,wBAJO,SAIgB,KACrB,OAAOzB,GAAiBnmK,EAAO/vC,EAAQvZ,KAAhB,yBAA+CA,KAA/C,4BAAiFA,KAAxG,eAEFmxN,sBAPO,SAOc,SACnB,OAAOnxN,KAAKqlN,WAAW/7J,EAAO67J,EAAQC,EAAUS,EAAQ7lN,KAAxD,gBAEF4rN,gBAVO,SAUQ,GACb,IAAM97L,EAAQshM,EAAA,0CAAd,GAEA,OAAOvuN,OAAA,SAAqB,CAAEyhN,QAAStkN,KAAKywN,mBAE9CY,WAfO,SAeG,GACR,OAAIrxN,KAAJ,QAAyB,CAACA,KAAKshN,eAAe,UAAW,CAACthN,KAAxC,WAEX,eAAQA,KAAM,UAAW8vB,GAAhC,IAEFwhM,YApBO,SAoBI,GAAuB,WAChC,OAAOtxN,KAAKshN,eAAe,WAAYthN,KAAKywN,gBAAgB95N,KAAI,SAAA+qB,GAC9D,OAAO,uBAA2B,CAChC6hB,MAAO,CACLqwK,QAASlyL,EAAOkyL,gBAKxB2d,WA7BO,WA8BL,IAAM7hL,EAAK1vC,KAAKshN,eAAe,KAAM,CACnCE,YADmC,SAEnCnlN,MAAO2D,KAAK2wN,cACX,CAAC3wN,KAHJ,gBAKMzL,EAAKyL,KAAKshN,eAAe,KAAM,CACnCE,YAAa,0BACZ,CAFH,IAIA,OAAOxhN,KAAKshN,eAAe,QAAS,CAApC,KAEFkQ,WAzCO,SAyCG,GACR,IAAM95K,EAAO,CACX5nB,MAAO,iCACF9vB,KADE,sBAAF,IAEHskN,QAAStkN,KAFJ,gBAGLsd,QAASwS,EAHJ,QAILu+L,OAAQruN,KAJH,SAKL0sN,YAAa1sN,KALR,YAMLkrN,UAAWlrN,KANN,UAOL+qN,UAAW/qN,KAPN,UAQLmqN,aAAcnqN,KART,aASL8lN,YAAa9lN,KAAK8lN,cAEpBz1I,GAAI,CACF57D,KAAMqb,EADJ,KAEFjT,MAAOiT,EAFL,MAGF,oBAAqB9vB,KAAKwrN,kBAIxB3vL,EAAuC,CAAC,eAAQ77B,KAAM,SAA5D,IAEA,IAAKA,KAAL,kBAA6B,CAC3B,IAAMijN,EAAc,eAAuB,UAAWjjN,KAAtD,cACA67B,EAAA,KAAc77B,KAAKshN,eAAe,EAApB,iCAAsC,GAAtC,IAEZ2B,kBAMJ,OAFIjjN,KAAJ,SAAkB67B,EAAA,KAAc77B,KAAd,cAElB,GAEF8rN,gBA3EO,SA2EQ,GACb,OAAO9rN,KAAKshN,eAAe,KAAM,CAC/BE,YAAa,+BACZ,CACDxhN,KAAKshN,eAAe,KAAM,CACxBjlN,MAAO2D,KAAK2wN,cAJhB,MAQFvE,SApFO,SAoFC,KACN,IAAM93N,EAAQ0L,KAAK+rN,SAASj8L,EAAd,oBAAyCA,EAAA,WAAvD,aACA,SAAkB,CAAP,GAEJA,EAAA,aACH9vB,KAAKyxN,eAAe3hM,EAApB,aADGA,GAEH9vB,KAAK0xN,QAAQpoK,EAFjB,IAIFmoK,eA5FO,SA4FO,KAAuD,WACnE,OAAOzK,EAAA,KAAiB,SAAAnqM,GAGtB,OAFK,2BAA8BA,EAAnC,OAAgD,OAAU,EAAV,UAA0BA,EAA1B,SAE5C,eAAJ,MACS,qBAAwB,CAC7BA,MAAOA,EADsB,KAE7BS,QAASwS,EAFoB,QAG7Bw5B,MAAOzsC,EAHsB,MAI7BynM,QAAS,EAAKmM,kBAGT,uBAA0B5zM,EAA1B,KAAsCA,EAAtC,MAAP,OAIN80M,qBA5GO,SA4Ga,OAAoD,WAChE5tM,IAAW/jB,KAAKuwN,UAAtB,GACM10L,EAA0B,CAC9B77B,KAAKshN,eAAe,WAAY,CAAE6M,KAAM,eAAiBnuN,KAAK0xN,QAAQpoK,EADxE,KAGMmI,EAAW,kBAAM,OAAU,EAAV,aAAkC,YAAzD,KACMmgK,EAAW,kBAAM9hM,EAAA,cAAoB,CAAE41L,QAAF,GAAeC,UAAW,MAErE,GAAI3lN,KAAK+nN,aAAT,gBACElsL,EAAA,QAAiB77B,KAAKshN,eAAe,WAAY,CAAE6M,KAAM,iBAAmB,CAC1EnuN,KAAK+nN,aAAa,gBAAiB,CAAElrM,QAAO6oM,QAAS51L,EAAA,QAAlB,QAAyCw5B,QAAOg7J,QAAStkN,KAAzD,gBAA+E+jB,SAAQ2jM,OAAvF,EAAyGx2M,OAAQ0gN,WAEjJ,CACL,IAAMlK,EAAS1nN,KAAKshN,eAAe,EAApB,KAA0B,CACvCE,YADuC,OAEvC1xL,MAAO,CACL85L,MADK,EAELiI,OAAO,GAETxhJ,GAAI,CACFr8B,MAAOyd,IAER,CAACzxD,KAAKshN,eAAeuI,EAApB,KAA2B,CAAC9lM,EAAS,SATzC,YAWM7S,EAASlR,KAAKshN,eAAe,EAApB,KAA0B,CACvCE,YADuC,OAEvC1xL,MAAO,CACL85L,MADK,EAELiI,OAAO,GAETxhJ,GAAI,CACFr8B,MAAO49K,IAER,CAAC5xN,KAAKshN,eAAeuI,EAApB,KAA2B,CAT/B,aAWM9yD,EAAS/2J,KAAKshN,eAAe,KAAM,CACvCE,YADuC,aAEvCnlN,MAAO2D,KAAK2wN,cACX,CAACjJ,EAAQ,GAAT,OAAY53L,EAAA,mBAAZ,gBAHH,IAKA+L,EAAA,QAAiB77B,KAAKshN,eAAe,WAAY,CAAE6M,KAAM,iBAAmB,CAA5E,KASF,OANInuN,KAAK+nN,aAAT,kBACElsL,EAAA,KAAc77B,KAAKshN,eAAe,WAAY,CAAE6M,KAAM,kBAAoB,CACxEnuN,KAAK+nN,aAAa,iBAAkB,CAAElrM,QAAO6oM,QAAS51L,EAAA,QAAlB,QAAyCw5B,QAAOg7J,QAAStkN,KAAzD,gBAA+E+jB,SAAQ2jM,OAAQj2J,OAIhIzxD,KAAKshN,eAAewQ,EAAU,CACnCjzN,IADmC,EAEnCixB,MAAO,CACLnwB,MAAOokB,IAHX,IAOF2tM,QApKO,SAoKA,KACL,OAAO1xN,KAAK+nN,aAAax+J,KAAOvpD,KAAK+xN,cAAczoK,EAA5C,GAA4DtpD,KAAKgyN,eAAe1oK,EAAvF,IAEFyoK,cAvKO,SAuKM,KAGX,IAFA,IAAMvpJ,EAAN,GAES5wE,EAAT,EAAgBA,EAAI0xD,EAApB,OAAkC1xD,IAAK,CACrC,IAAM2xD,EAAOD,EAAb,GACAkf,EAAA,KAAUxoE,KAAK+nN,aAAax+J,KAAlB,iCACLvpD,KAAK4rN,gBADwB,IAAxB,IAER/zN,MAAOD,MAGLoI,KAAK2rN,WAAT,IACEnjJ,EAAA,KAAUxoE,KAAK+nN,aAAa,iBAAkB,CAAEx+J,OAAM+6J,QAAStkN,KAAKywN,mBAIxE,UAEFuB,eAxLO,SAwLO,KAAqC,WACjD,OAAOhyN,KAAK+nN,aAAa,iBACrBz+J,EAAA,KAAU,SAAAC,GAAI,OAAI,wBADf,MAEHD,EAAA,KAAU,SAAAC,GAAI,OAAI,sBAFtB,OAIF0oK,sBA7LO,SA6Lc,GACnB,IAAMtG,EAAa3rN,KAAK2rN,WAAxB,GACMnL,EAAU,CACd,qDAAsDmL,GAElDuG,EAAYlyN,KAAKmyN,oBAAoB5oK,EAA3C,GACM6oK,EAAcpyN,KAAKshN,eAAe,KAAM,CAC5CE,YAAa,0DACZ,CAACxhN,KAAK+nN,aAAa,iBAAkB,CAAEx+J,OAAM+6J,QAAStkN,KAAKywN,oBAE9D,OAAOzwN,KAAKshN,eAAewQ,EAAU,CACnChiM,MAAO,CACLnwB,MAAOgsN,IAER,CACD3rN,KAAKshN,eAAe,WAAY,CAAE6M,KAAM,cAAgB,CADvD,IAEDnuN,KAAKshN,eAAe,WAAY,CAAE6M,KAAM,eAAiB,CAN3D,OASFgE,oBAhNO,SAgNY,GAAkD,WAArC3R,EAAqC,uDAAlD,GACXyC,EAAc,eAAuB,QAASjjN,KAApD,cAEM03C,EAAO13C,KAAK4rN,gBAAlB,GAEA,GAAI5rN,KAAJ,WAAqB,CACnB,IAAMmuN,EAAOlL,EAAb,qBACAA,EAAA,qBAAmCkL,EAAO,kBAAMA,EAAT,IAAsB,kBAAM,wBAAqC,CACtG3M,YADsG,yBAEtG1xL,MAAO,CACLnwB,MAAO+3C,EADF,WAELlP,UAAW,mBAEb6nC,GAAI,CACFra,MAAQ,SAAAz/C,GAAD,OAAkBmhC,EAAA,eAK/B,GAAI13C,KAAJ,WAAqB,CACnB,IAAM,EAAOijN,EAAb,qBACAA,EAAA,qBAAmC,EAAO,kBAAM,EAAT,IAAsB,kBAAM,wBAA2B,CAC5FzB,YAD4F,4BAE5Fj+K,MAAO,CACL,oCAAqCmU,EAAKi0K,YAE5Ct7I,GAAI,CACFr8B,MAAQ,SAAA7uC,GACNA,EAAA,kBACAuyC,EAAA,QAAaA,EAAb,eAGH,CAAC,EAXJ,cAcF,OAAO13C,KAAKshN,eAAethN,KAAK6rN,SAAWwG,EAApC,EAAqD,CAC1DxzN,IAAK,eAAqB0qD,EAAMvpD,KAD0B,SAE1DujC,MAAO,eAAa,iCAClB,GADiB,IACH,yBAA0BmU,EAAK+zK,aAC7C,eAAoBliK,EAAMvpD,KAJ8B,YAM1D8vB,MAAO,CACLw0L,QAAStkN,KADJ,gBAELsvN,kBAAmBtvN,KAFd,kBAGLupD,OACAwgK,IAAK/pN,KAAKkpN,SAASa,KAErB9G,cACA5yI,GAAI,CAGFr8B,MAAO,kBAAM,sBAHX,IAIFuC,YAAc,SAAAvjB,GAAD,OAAuB,4BAJlC,IAKFs/L,SAAW,SAAAt/L,GAAD,OAAuB,iCAIvCu/L,QAzQO,SAyQA,GACL,IAAM76K,EAAO,oCAAH,IAERpnC,OAAQtQ,KAFG,OAGXskN,QAAStkN,KAHE,gBAIX2rN,WAAY3rN,KAJD,WAKX6rN,SAAU7rN,KALC,SAMXyrN,WAAYzrN,KAND,WAOX0rN,OAAQ1rN,KAAK0rN,SAGf,OAAI1rN,KAAK+nN,aAAT,KACS/nN,KAAK+nN,aAAatzL,KAAzB,GAGKz0B,KAAKshN,eAAe,QAAS,CAClC,eAAQthN,KAAM,eAAgB03C,GADI,GAElC13C,KAAKosN,SAASt8L,EAAd,MAFkC,GAGlC,eAAQ9vB,KAAM,cAAe03C,GAH/B,MAMF86K,WA9RO,SA8RG,GACR,IAAM96K,EAAO,CACX5nB,MAAO,gBACLxS,QAASwS,EADJ,QAEL82L,WAAY92L,EAFP,WAGL00L,iBAHK,uCAIFxkN,KAAKmrN,sBAEV96I,GAAI,CACF,iBAAmB,SAAA1wE,GAAD,OAAgBmwB,EAAA,mBAEpC0gM,OAAQxwN,KAVG,OAWXskN,QAAStkN,KAAKywN,iBAGV50L,EAA0B,CAC9B,eAAQ77B,KAAM,SAAU03C,GAD1B,IAWA,OAPK13C,KAAL,mBACE67B,EAAA,KAAc77B,KAAKshN,eAAe,EAApB,iCAAiC,GAAjC,IAEZ2B,YAAa,eAAuB,UAAWjjN,KAAZ,kBAIvC,GAEFssN,qBA1TO,SA0Ta,GAClB,IAAMmG,EAAc,CAClBx+L,OAAQj0B,KADU,OAElBmvN,YAAanvN,KAFK,YAGlBkvN,MAAOlvN,KAAKkvN,OAqBd,OAAOlvN,KAAKshN,eAAe,EAAc,CACvCxxL,MAAO2iM,GACN,CACDzyN,KAAK0yN,UAAU,MAAO,eAAQ1yN,KAAM,MAAO8vB,GAD1C,IAED9vB,KAAKqxN,WAFJ,GAGDrxN,KAAKsxN,YAHJ,GAIDtxN,KAAKwxN,WAJJ,GAKDxxN,KAAKuyN,QALJ,GAMDvyN,KAAK0yN,UAAU,SAAU1yN,KAAKwyN,WARhC,OAWFE,UA9VO,SA8VE,KACP,OAAO1yN,KAAKshN,eAAe,WAAY,CAAE6M,QAAzC,KAIJ1tD,OA9eO,WA8eD,WACJ,OAAOzgK,KAAKshN,eAAe2I,EAAO,CAChCn6L,MAAO,iCACF9vB,KADE,QAAF,IAEHimN,aAAcjmN,KAFT,wBAGLqlN,WAAYrlN,KAHP,sBAILylN,aAAczlN,KAAK8wN,uBAErBzgJ,GAAI,CACF,iBAAkB,cAChB,kBAAuBtzE,EAAA,SAAvB,IACC,eAAUA,EAAX,IAAsB,yBAAtB,IAEF,cAAgB,SAAAA,GAAD,OAAe,sBAL5B,IAMF,wBAA0B,SAAAA,GAAD,OAAe,gCANtC,IAOF,iBAAmB,SAAAA,GAAD,OAA0B,yBAP1C,IAQF,mBAAqB,SAAAA,GAAD,OAA4B,2BAR9C,IASF,kBAAoB,SAAAA,GAAD,OAA0B,0BAT3C,IAUF,oBAAsB,SAAAA,GAAD,OAA4B,4BAV/C,IAWF6pN,WAAY,qBAA6C,eAAU7pN,EAAX,IAAsB,qBAX5E,IAYF,gBAAkB,SAAAA,GAChB,yBACA,4BAEF,aAAe,SAAAA,GAAD,OAAe,0BAE/BkmN,YAAa,CACX7mM,QAASpc,KAAKssN,2B,8EC7kBlB7qB,GAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,GAAAA,GAAiB,QAmBhC,IAAkBA,GAAW,CAACkxB,gBAAA,KAAcC,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,WAAA,OAAWC,OAAA,KAAKC,aAAA,KAAWC,WAAA,GAAWC,WAAA,KAAQC,QAAA,KAAKC,aAAA,KAAUC,WAAA,KAAQC,aAAA,KAAUC,YAAA,OCtC7J,IAAI,GAAS,WAAa,IAAIrS,EAAIphN,KAASqhN,EAAGD,EAAIE,eAAmBp8I,EAAGk8I,EAAIG,MAAMr8I,IAAIm8I,EAAG,OAAOn8I,EAAG,MAAM,CAACA,EAAG,eAAe,CAAC7oE,MAAM,CAAC,QAAU+kN,EAAIkD,QAAQ,MAAQlD,EAAIsS,YAAY,eAAe,gBAAgB,eAAe,CAAElP,iBAAkB,oBAAqBC,oBAAqB,QAASxB,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,MAAMoxL,GAAG,WAAW,MAAO,CAAC/qH,EAAG,YAAY,CAAC7oE,MAAM,CAAC,KAAO,KAAK,CAAC6oE,EAAG,WAAW,CAAC7oE,MAAM,CAAC,YAAY,SAAS4mN,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,YAAYoxL,GAAG,SAASt7L,GAC5d,IAAI07E,EAAK17E,EAAI07E,GACTh0E,EAAQ1H,EAAI0H,MAChB,MAAO,CAAC6oE,EAAG,QAAQk8I,EAAIsD,GAAGtD,EAAI32J,GAAG,CAACpuD,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIuD,cAAgB,KAAK,QAAQtoN,GAAM,GAAOg0E,GAAI,CAAC+wI,EAAIO,GAAG,mBAAmBY,MAAM,CAAC5iN,MAAOyhN,EAAU,OAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIe,OAAOK,GAAKC,WAAW,WAAW,CAACv9I,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,OAAO,CAACs8I,YAAY,YAAY,CAACJ,EAAIO,GAAGP,EAAIiC,IAAwB,GAArBjC,EAAIuD,aAAqB,WAAa,iBAAiB,+BAA+Bz/I,EAAG,cAAc,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,KAAK,GAAK,OAAO,CAAC6oE,EAAG,iBAAiB,CAAC7oE,MAAM,CAAC,eAAe,8BAA8B,gBAAgB,GAAG,MAAQ+kN,EAAIuS,SAAS,YAAY,OAAO,aAAa,OAAO,eAAevS,EAAI7nM,OAAO,eAAe,GAAG,gBAAgB,GAAG,MAAQ,0BAA0B82D,GAAG,CAAC,qBAAqB,SAASoxI,GAAQL,EAAI7nM,OAAOkoM,GAAQ,sBAAsB,SAASA,GAAQL,EAAI7nM,OAAOkoM,IAASc,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAe,KAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,OAAQtC,IAAMC,WAAW,sBAAsB,IAAI,IAAI,IAAI,GAAGv9I,EAAG,iBAAiB,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAIlzM,QAAQ,CAACkzM,EAAIO,GAAG,YAAYz8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAI2D,OAAO,CAAC3D,EAAIO,GAAG,gBAAgB,IAAI,IAAI,IAAI,KAAKtd,OAAM,GAAM,CAACxlM,IAAI,cAAcoxL,GAAG,SAASt7L,GACzzC,IAAI40D,EAAO50D,EAAI40D,KACf,MAAO,CAAC2b,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI4D,UAAUz7J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,aAAa,MAAQ,8BAA8B,GAAG6oE,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI6D,WAAW17J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,YAAY,MAAQ,uBAAuB,UAAU6oE,EAAG,aAAa,CAAC7oE,MAAM,CAAC,IAAM,MAAM,QAAU,IAAK,MAAQ,SAASkmN,MAAM,CAAC5iN,MAAOyhN,EAAY,SAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAI8C,SAAS1B,GAAKC,WAAW,aAAa,CAACv9I,EAAG,MAAM,CAACA,EAAG,OAAO,CAACs8I,YAAY,gBAAgBnlN,MAAM,CAAC,KAAO,KAAK,CAAC+kN,EAAIO,GAAG,6CAA6C,IAC7oB,GAAkB,GC4BtB,IACE,SAAF,kBACA,gBACI,SAAJ,aACI,YAAJ,oBAGE,KAPF,WAQI,MAAJ,CACM,WAAN,CACQ,KAAR,IAEM,UAAN,EACM,cAAN,EACM,OAAN,GACM,QAAN,EACM,SAAN,GACM,QAAN,CACA,CAAQ,KAAR,eAAQ,MAAR,QACA,CAAQ,KAAR,GAAQ,MAAR,aAIE,MAAF,CACI,OADJ,SACA,GACM,KAAN,gBAGE,QAAF,gDACA,gBACI,WAAJ,mBAEA,gBACI,SAAJ,cACI,SAAJ,cACI,QAAJ,gBAPA,IASI,KATJ,WAUA,4BACA,qBACA,eAAU,KAAV,CAAY,KAAZ,0BAAY,GAAZ,yBAAU,KAAV,YAEA,eAAU,KAAV,CAAY,KAAZ,0BAAY,GAAZ,wBAAY,SAAZ,aAAU,KAAV,YACQ,KAAR,YAAU,KAAV,IACQ,KAAR,WAEQ,KAAR,aAGI,MArBJ,WAsBM,KAAN,YAAQ,KAAR,IACM,KAAN,WAEI,UAzBJ,SAyBA,GACM,KAAN,YACM,KAAN,mBACM,KAAN,eACM,KAAN,uBACM,KAAN,WAEI,WAhCJ,SAgCA,GACA,kDACQ,KAAR,SAAU,KAAV,EAAU,KAAV,eAIE,QAlEF,WAmEI,KAAJ,eCrGgW,MCQ5V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,MAAiB,QAkBhC,IAAkB,GAAW,CAACgR,gBAAA,KAAcC,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,WAAA,OAAWC,OAAA,KAAKC,aAAA,KAAWC,WAAA,GAAWC,WAAA,KAAQC,QAAA,KAAKC,aAAA,KAAUC,WAAA,KAAQE,YAAA,OCrCnJ,IAAI,GAAS,WAAa,IAAIrS,EAAIphN,KAASqhN,EAAGD,EAAIE,eAAmBp8I,EAAGk8I,EAAIG,MAAMr8I,IAAIm8I,EAAG,OAAOn8I,EAAG,MAAM,CAACA,EAAG,eAAe,CAAC7oE,MAAM,CAAC,QAAU+kN,EAAIkD,QAAQ,MAAQlD,EAAIwS,YAAY,eAAe,gBAAgB,eAAe,CAAEpP,iBAAkB,oBAAqBC,oBAAqB,QAASxB,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,MAAMoxL,GAAG,WAAW,MAAO,CAAC/qH,EAAG,YAAY,CAAC7oE,MAAM,CAAC,KAAO,KAAK,CAAC6oE,EAAG,WAAW,CAAC7oE,MAAM,CAAC,YAAY,SAAS4mN,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,YAAYoxL,GAAG,SAASt7L,GAC5d,IAAI07E,EAAK17E,EAAI07E,GACTh0E,EAAQ1H,EAAI0H,MAChB,MAAO,CAAC6oE,EAAG,QAAQk8I,EAAIsD,GAAGtD,EAAI32J,GAAG,CAACpuD,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ+wI,EAAI1yM,MAAM,QAAQrS,GAAM,GAAOg0E,GAAI,CAAC+wI,EAAIO,GAAG,mBAAmBY,MAAM,CAAC5iN,MAAOyhN,EAAU,OAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIe,OAAOK,GAAKC,WAAW,WAAW,CAACv9I,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,OAAO,CAACs8I,YAAY,YAAY,CAACJ,EAAIO,GAAGP,EAAIiC,IAAwB,GAArBjC,EAAIuD,aAAqB,WAAa,iBAAiB,2BAA2Bz/I,EAAG,cAAc,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,KAAK,GAAK,OAAO,CAAC6oE,EAAG,iBAAiB,CAAC7oE,MAAM,CAAC,eAAe,8BAA8B,gBAAgB,GAAG,MAAQ+kN,EAAIyS,SAAS,YAAY,OAAO,aAAa,OAAO,eAAezS,EAAI7nM,OAAO,eAAe,GAAG,gBAAgB,GAAG,MAAQ,sBAAsB82D,GAAG,CAAC,qBAAqB,SAASoxI,GAAQL,EAAI7nM,OAAOkoM,GAAQ,sBAAsB,SAASA,GAAQL,EAAI7nM,OAAOkoM,IAASc,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAe,KAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,OAAQtC,IAAMC,WAAW,sBAAsB,IAAI,IAAI,IAAI,GAAGv9I,EAAG,iBAAiB,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAIlzM,QAAQ,CAACkzM,EAAIO,GAAG,YAAYz8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAI2D,OAAO,CAAC3D,EAAIO,GAAG,gBAAgB,IAAI,IAAI,IAAI,KAAKtd,OAAM,GAAM,CAACxlM,IAAI,cAAcoxL,GAAG,SAASt7L,GACjxC,IAAI40D,EAAO50D,EAAI40D,KACf,MAAO,CAAC2b,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI4D,UAAUz7J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,aAAa,MAAQ,8BAA8B,GAAG6oE,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI6D,WAAW17J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,YAAY,MAAQ,uBAAuB,UAAU6oE,EAAG,aAAa,CAAC7oE,MAAM,CAAC,IAAM,MAAM,QAAU,IAAK,MAAQ,SAASkmN,MAAM,CAAC5iN,MAAOyhN,EAAY,SAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAI8C,SAAS1B,GAAKC,WAAW,aAAa,CAACv9I,EAAG,MAAM,CAACA,EAAG,OAAO,CAACs8I,YAAY,gBAAgBnlN,MAAM,CAAC,KAAO,KAAK,CAAC+kN,EAAIO,GAAG,yCAAyC,IACzoB,GAAkB,GC4BtB,IACE,SAAF,kBACA,gBACI,SAAJ,cACI,YAAJ,oBAGE,KAPF,WAQI,MAAJ,CACM,WAAN,CACQ,KAAR,IAEM,OAAN,GACM,UAAN,EACM,cAAN,EACM,OAAN,GACM,QAAN,EACM,SAAN,GACM,QAAN,CACA,CAAQ,KAAR,eAAQ,MAAR,QACA,CAAQ,KAAR,GAAQ,MAAR,aAIE,MAAF,CACI,OADJ,SACA,GACM,KAAN,iBAGE,QAAF,gDACA,gBACI,YAAJ,oBAEA,gBACI,SAAJ,cACI,SAAJ,cACI,QAAJ,gBAPA,IASI,KATJ,WAUA,4BACA,qBACA,eAAU,KAAV,CAAY,KAAZ,0BAAY,GAAZ,yBAAU,KAAV,YAEA,eAAU,KAAV,CAAY,KAAZ,0BAAY,GAAZ,wBAAY,SAAZ,aAAU,KAAV,YACQ,KAAR,YAAU,KAAV,IACQ,KAAR,WAEQ,KAAR,aAGI,IArBJ,WAqBM,IAAN,OACM,KAAN,gBACM,KAAN,YAAQ,KAAR,IACM,KAAN,gCAAQ,EAAR,cAEI,MA1BJ,WA2BM,KAAN,YAAQ,KAAR,IACM,KAAN,WAEI,UA9BJ,SA8BA,GACM,KAAN,YACM,KAAN,oBACM,KAAN,eACM,KAAN,uBACM,KAAN,WAEI,WArCJ,SAqCA,GACA,kDACQ,KAAR,SAAU,KAAV,EAAU,KAAV,eAIE,QAxEF,WAyEI,KAAJ,gBC3GgW,MCQ5V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,MAAiB,QAkBhC,IAAkB,GAAW,CAACgR,gBAAA,KAAcC,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,WAAA,OAAWC,OAAA,KAAKC,aAAA,KAAWC,WAAA,GAAWC,WAAA,KAAQC,QAAA,KAAKC,aAAA,KAAUC,WAAA,KAAQE,YAAA,OCrCnJ,IAAI,GAAS,WAAa,IAAIrS,EAAIphN,KAASqhN,EAAGD,EAAIE,eAAmBp8I,EAAGk8I,EAAIG,MAAMr8I,IAAIm8I,EAAG,OAAOn8I,EAAG,MAAM,CAACA,EAAG,eAAe,CAAC7oE,MAAM,CAAC,QAAU+kN,EAAIkD,QAAQ,MAAQlD,EAAI0S,YAAY,eAAe,gBAAgB,eAAe,CAAEtP,iBAAkB,oBAAqBC,oBAAqB,QAASxB,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,MAAMoxL,GAAG,WAAW,MAAO,CAAC/qH,EAAG,YAAY,CAAC7oE,MAAM,CAAC,KAAO,KAAK,CAAC6oE,EAAG,WAAW,CAAC7oE,MAAM,CAAC,YAAY,SAAS4mN,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,YAAYoxL,GAAG,SAASt7L,GAC5d,IAAI07E,EAAK17E,EAAI07E,GACTh0E,EAAQ1H,EAAI0H,MAChB,MAAO,CAAC6oE,EAAG,QAAQk8I,EAAIsD,GAAGtD,EAAI32J,GAAG,CAACpuD,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ+wI,EAAI1yM,MAAM,QAAQrS,GAAM,GAAOg0E,GAAI,CAAC+wI,EAAIO,GAAG,mBAAmBY,MAAM,CAAC5iN,MAAOyhN,EAAU,OAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIe,OAAOK,GAAKC,WAAW,WAAW,CAACv9I,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,OAAO,CAACs8I,YAAY,YAAY,CAACJ,EAAIO,GAAGP,EAAIiC,IAAwB,GAArBjC,EAAIuD,aAAqB,WAAa,iBAAiB,0BAA0Bz/I,EAAG,cAAc,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,KAAK,GAAK,OAAO,CAAC6oE,EAAG,iBAAiB,CAAC7oE,MAAM,CAAC,eAAe,8BAA8B,gBAAgB,GAAG,aAAa,OAAO,YAAY,OAAO,MAAQ+kN,EAAI2S,QAAQ,eAAe3S,EAAI7nM,OAAO,eAAe,GAAG,gBAAgB,GAAG,MAAQ,qBAAqB82D,GAAG,CAAC,qBAAqB,SAASoxI,GAAQL,EAAI7nM,OAAOkoM,GAAQ,sBAAsB,SAASA,GAAQL,EAAI7nM,OAAOkoM,IAASc,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAe,KAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,OAAQtC,IAAMC,WAAW,sBAAsB,IAAI,IAAI,IAAI,GAAGv9I,EAAG,iBAAiB,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAIlzM,QAAQ,CAACkzM,EAAIO,GAAG,YAAYz8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAI2D,OAAO,CAAC3D,EAAIO,GAAG,gBAAgB,IAAI,IAAI,IAAI,KAAKtd,OAAM,GAAM,CAACxlM,IAAI,cAAcoxL,GAAG,SAASt7L,GAC9wC,IAAI40D,EAAO50D,EAAI40D,KACf,MAAO,CAAC2b,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI4D,UAAUz7J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,aAAa,MAAQ,8BAA8B,GAAG6oE,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI6D,WAAW17J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,YAAY,MAAQ,uBAAuB,UAAU6oE,EAAG,aAAa,CAAC7oE,MAAM,CAAC,IAAM,MAAM,QAAU,IAAK,MAAQ,SAASkmN,MAAM,CAAC5iN,MAAOyhN,EAAY,SAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAI8C,SAAS1B,GAAKC,WAAW,aAAa,CAACv9I,EAAG,MAAM,CAACA,EAAG,OAAO,CAACs8I,YAAY,gBAAgBnlN,MAAM,CAAC,KAAO,KAAK,CAAC+kN,EAAIO,GAAG,wCAAwC,IACxoB,GAAkB,G,wBC8BtB,IACE,SAAF,kBACA,gBACI,QAAJ,cACI,YAAJ,oBAGE,KAPF,WAQI,MAAJ,CACM,WAAN,CACQ,KAAR,IAEM,OAAN,GACM,UAAN,EACM,cAAN,EACM,OAAN,GACM,KAAN,GACM,QAAN,EACM,SAAN,GACM,QAAN,CACA,CAAQ,KAAR,eAAQ,MAAR,QACA,CAAQ,KAAR,GAAQ,MAAR,aAIE,MAAF,CACI,OADJ,SACA,GACA,8BAAQ,IAAR,MAGE,QAAF,8CACI,aAAJ,2CAAM,IAAN,QACM,KAAN,iBACA,MACA,gBACI,YAAJ,oBAEA,gBACI,SAAJ,cACI,SAAJ,cACI,QAAJ,gBAVA,IAYI,KAZJ,WAaA,4BACA,qBACA,eAAU,KAAV,CAAY,KAAZ,0BAAY,GAAZ,yBAAU,KAAV,YAEA,eAAU,KAAV,CAAY,KAAZ,0BAAY,GAAZ,wBAAY,SAAZ,aAAU,KAAV,YACQ,KAAR,YAAU,KAAV,IACQ,KAAR,WAEQ,KAAR,aAGI,IAxBJ,WAwBM,IAAN,OACM,KAAN,gBACM,KAAN,gCAAQ,EAAR,cAEI,MA5BJ,WA6BM,KAAN,YAAQ,KAAR,IACM,KAAN,WAEI,UAhCJ,SAgCA,GACM,KAAN,YACM,KAAN,oBACM,KAAN,eACM,KAAN,uBACM,KAAN,WAEI,WAvCJ,SAuCA,GACA,kDACQ,KAAR,SAAU,KAAV,EAAU,KAAV,eAIE,QA3EF,WA4EI,KAAJ,gBChHgW,MCQ5V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,MAAiB,QAkBhC,IAAkB,GAAW,CAACgR,gBAAA,KAAcC,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,WAAA,OAAWC,OAAA,KAAKC,aAAA,KAAWC,WAAA,GAAWC,WAAA,KAAQC,QAAA,KAAKC,aAAA,KAAUC,WAAA,KAAQE,YAAA,OCrCnJ,IAAI,GAAS,WAAa,IAAIrS,EAAIphN,KAASqhN,EAAGD,EAAIE,eAAmBp8I,EAAGk8I,EAAIG,MAAMr8I,IAAIm8I,EAAG,OAAOn8I,EAAG,MAAM,CAACA,EAAG,eAAe,CAAC7oE,MAAM,CAAC,QAAU+kN,EAAIkD,QAAQ,MAAQlD,EAAI4S,aAAa,eAAe,gBAAgB,eAAe,CAAExP,iBAAkB,oBAAqBC,oBAAqB,QAASxB,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,MAAMoxL,GAAG,WAAW,MAAO,CAAC/qH,EAAG,YAAY,CAAC7oE,MAAM,CAAC,KAAO,KAAK,CAAC6oE,EAAG,WAAW,CAAC7oE,MAAM,CAAC,YAAY,SAAS4mN,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,YAAYoxL,GAAG,SAASt7L,GAC7d,IAAI07E,EAAK17E,EAAI07E,GACTh0E,EAAQ1H,EAAI0H,MAChB,MAAO,CAAC6oE,EAAG,QAAQk8I,EAAIsD,GAAGtD,EAAI32J,GAAG,CAACpuD,MAAM,CAAC,MAAQ,WAAWg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQL,EAAIuD,cAAgB,KAAK,QAAQtoN,GAAM,GAAOg0E,GAAI,CAAC+wI,EAAIO,GAAG,mBAAmBY,MAAM,CAAC5iN,MAAOyhN,EAAU,OAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIe,OAAOK,GAAKC,WAAW,WAAW,CAACv9I,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,OAAO,CAACs8I,YAAY,YAAY,CAACJ,EAAIO,GAAGP,EAAIiC,IAAwB,GAArBjC,EAAIuD,aAAqB,WAAa,iBAAiB,cAAcz/I,EAAG,cAAc,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,IAAI,GAAK,MAAM,CAAC6oE,EAAG,WAAW,CAAC7oE,MAAM,CAAC,MAAQ,CAAC,QAAQ,SAAS,YAAY,MAAQ,OAAOkmN,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAe,KAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,OAAQtC,IAAMC,WAAW,sBAAsB,GAAGv9I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,IAAI,GAAK,MAAM,CAAC6oE,EAAG,eAAe,CAAC7oE,MAAM,CAAC,MAAQ,UAAUkmN,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAiB,OAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,SAAUtC,IAAMC,WAAW,wBAAwB,GAAGv9I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,KAAK,GAAK,OAAO,CAAC6oE,EAAG,eAAe,CAAC7oE,MAAM,CAAC,MAAQ,YAAYkmN,MAAM,CAAC5iN,MAAOyhN,EAAI0D,WAAe,KAAEjxJ,SAAS,SAAU2uJ,GAAMpB,EAAIyC,KAAKzC,EAAI0D,WAAY,OAAQtC,IAAMC,WAAW,sBAAsB,IAAI,IAAI,IAAI,GAAGv9I,EAAG,iBAAiB,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAIlzM,QAAQ,CAACkzM,EAAIO,GAAG,YAAYz8I,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,MAAQ,gBAAgB,KAAO,IAAIg0E,GAAG,CAAC,MAAQ+wI,EAAI2D,OAAO,CAAC3D,EAAIO,GAAG,gBAAgB,IAAI,IAAI,IAAI,KAAKtd,OAAM,GAAM,CAACxlM,IAAI,cAAcoxL,GAAG,SAASt7L,GACx9C,IAAI40D,EAAO50D,EAAI40D,KACf,MAAO,CAAC2b,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI4D,UAAUz7J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,aAAa,MAAQ,8BAA8B,GAAG6oE,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,IAAIg0E,GAAG,CAAC,MAAQ,SAASoxI,GAAQ,OAAOL,EAAI6D,WAAW17J,MAAS,CAAC2b,EAAG,oBAAoB,CAAC7oE,MAAM,CAAC,KAAO,YAAY,MAAQ,uBAAuB,UAAU6oE,EAAG,aAAa,CAAC7oE,MAAM,CAAC,IAAM,MAAM,QAAU,IAAK,MAAQ,SAASkmN,MAAM,CAAC5iN,MAAOyhN,EAAY,SAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAI8C,SAAS1B,GAAKC,WAAW,aAAa,CAACv9I,EAAG,MAAM,CAACA,EAAG,OAAO,CAACs8I,YAAY,gBAAgBnlN,MAAM,CAAC,KAAO,KAAK,CAAC+kN,EAAIO,GAAG,6BAA6B,IAC7nB,GAAkB,GCgCtB,IACE,SAAF,kBACA,gBACI,QAAJ,aACI,aAAJ,qBAGE,KAPF,WAQI,MAAJ,CACM,WAAN,CACQ,KAAR,GACQ,KAAR,GACQ,OAAR,IAEM,OAAN,GACM,UAAN,EACM,cAAN,EACM,QAAN,EACM,SAAN,GACM,QAAN,CACA,CAAQ,KAAR,MAAQ,MAAR,QACA,CAAQ,KAAR,SAAQ,MAAR,UACA,CAAQ,KAAR,WAAQ,MAAR,QACA,CAAQ,KAAR,GAAQ,MAAR,aAIE,QAAF,gDACA,gBACI,UAAJ,kBAEA,gBACI,SAAJ,cACI,SAAJ,cACI,QAAJ,gBAPA,IASI,GATJ,WAUM,OAAN,sDAEI,UAZJ,WAaM,OAAN,iGAEI,KAfJ,WAgBA,yDACA,qBACA,eAAU,KAAV,CAAY,KAAZ,qBAAY,KAAZ,qBAAY,OAAZ,uBAAY,GAAZ,kBAAU,KAAV,aAEA,eAAU,KAAV,CAAY,KAAZ,qBAAY,KAAZ,qBAAY,OAAZ,uBAAY,SAAZ,aAAU,KAAV,aACQ,KAAR,YAAU,KAAV,GAAU,KAAV,GAAU,OAAV,IACQ,KAAR,WAEQ,KAAR,aAGI,MA3BJ,WA4BM,KAAN,YAAQ,KAAR,GAAQ,KAAR,GAAQ,OAAR,IACM,KAAN,WAEI,UA/BJ,SA+BA,GACM,KAAN,YAEM,KAAN,eACM,KAAN,YACQ,KAAR,OACQ,KAAR,OACQ,OAAR,SACQ,GAAR,MAEM,KAAN,WAEI,WA3CJ,SA2CA,GACA,kDACQ,KAAR,SAAU,KAAV,EAAU,KAAV,gBAIE,QA5EF,cCtCmW,M,yBCQ/V,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIa,MAAiB,QAmBhC,IAAkB,GAAW,CAACiR,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,WAAA,OAAWC,OAAA,KAAKC,aAAA,KAAWC,WAAA,GAAWC,WAAA,KAAQC,QAAA,KAAK/J,UAAA,KAAQgK,aAAA,KAAUC,WAAA,KAAQU,cAAA,KAAWR,YAAA,OCtCxJ,IAAI,GAAS,WAAa,IAAIrS,EAAIphN,KAASqhN,EAAGD,EAAIE,eAAmBp8I,EAAGk8I,EAAIG,MAAMr8I,IAAIm8I,EAAG,OAAOn8I,EAAG,MAAM,CAACA,EAAG,cAAc,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC7oE,MAAM,CAAC,KAAO,KAAK,GAAK,KAAK,GAAK,OAAO,CAAC6oE,EAAG,iBAAiB,CAAC7oE,MAAM,CAAC,SAAW,GAAG,eAAe,8BAA8B,MAAQ+kN,EAAI95J,KAAK,SAAW,GAAG,MAAQ,GAAG,eAAe85J,EAAI7nM,OAAO,eAAe,GAAG,gBAAgB,GAAG,YAAY,OAAO,aAAa,KAAK,MAAQ,sBAAsB,gBAAgB,IAAI82D,GAAG,CAAC,MAAQ+wI,EAAI8S,iBAAiB,qBAAqB,SAASzS,GAAQL,EAAI7nM,OAAOkoM,GAAQ,sBAAsB,SAASA,GAAQL,EAAI7nM,OAAOkoM,IAASwB,YAAY7B,EAAI8B,GAAG,CAAC,CAACrkN,IAAI,YAAYoxL,GAAG,SAASv4I,GAAM,MAAO,CAACwtB,EAAG,SAASk8I,EAAI32J,GAAG,CAACpuD,MAAM,CAAC,cAAcq7C,EAAKy8K,SAAS,MAAQ,IAAI9jJ,GAAG,CAAC,MAAQ34B,EAAKg0K,OAAO,cAAc,SAASjK,GAAQ,OAAOL,EAAIlwM,OAAOwmC,EAAK6R,SAAS,SAAS7R,EAAKr7C,OAAM,GAAO,CAAC+kN,EAAIO,GAAGP,EAAIiC,GAAG3rK,EAAK6R,KAAKxmD,cAAcw/M,MAAM,CAAC5iN,MAAOyhN,EAAwB,qBAAEvtJ,SAAS,SAAU2uJ,GAAMpB,EAAIgT,qBAAqB5R,GAAKC,WAAW,2BAA2B,IAAI,IAAI,IAAI,IAAI,IACxiC,GAAkB,GCctB,IACE,KADF,WAEI,MAAJ,CACM,KAAN,GACM,OAAN,GACM,KAAN,GACM,MAAN,KAGE,SAAF,iCACA,gBACI,iBAAJ,yBAFA,IAII,qBAJJ,WAKM,OAAN,yBAGE,QAAF,gDACA,gBACI,gBAAJ,8BAEA,gBACI,SAAJ,cACI,QAAJ,gBANA,IAQI,OARJ,SAQA,GACM,KAAN,SAAQ,KAAR,EAAQ,KAAR,kBAEI,OAXJ,SAWA,GACM,OAAN,sBAAQ,OAAR,wCAIQ,OAHR,mCACU,EAAV,QAEA,IACA,KAEI,iBAnBJ,SAmBA,GACM,KAAN,UAAQ,KAAR,EAAQ,KAAR,oBAGE,QAxCF,WAwCI,IAAJ,OACI,KAAJ,oCAIM,EAAN,iBC5DqW,M,aCOjW,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,MAAiB,QAUhC,IAAkB,GAAW,CAACkQ,gBAAA,KAAcI,UAAA,OAAUzF,MAAA,QAAM2F,OAAA,KAAKC,aAAA,KAAWG,QAAA,O,2BCJxEviJ,I,UAAW,WAUX,OATAA,GAAWjuE,OAAO01B,QAAU,SAAkBqnB,GAC1C,IAAK,IAAIr0C,EAAG3T,EAAI,EAAG2J,EAAI/C,UAAUtD,OAAQtD,EAAI2J,EAAG3J,IAE5C,IAAK,IAAIqb,KADT1H,EAAI/M,UAAU5G,GACA2T,EACN1I,OAAO1C,UAAUod,eAAexb,KAAKwJ,EAAG0H,KACxC2sC,EAAE3sC,GAAK1H,EAAE0H,IAErB,OAAO2sC,GAEJkxB,GAASntE,MAAM3D,KAAMxB,aAEhC,SAASuyE,GAAc36E,EAAIC,EAAMypD,GAC7B,GAAIA,GAA6B,IAArBthD,UAAUtD,OAClB,IAAK,IAA4B6kD,EAAxBnoD,EAAI,EAAGooD,EAAI3pD,EAAK6E,OAAYtD,EAAIooD,EAAGpoD,KACpCmoD,GAAQnoD,KAAKvB,IACR0pD,IACDA,EAAKvsC,MAAMrT,UAAUhK,MAAM4L,KAAK1L,EAAM,EAAGuB,IAC7CmoD,EAAGnoD,GAAKvB,EAAKuB,IAGzB,OAAOxB,EAAG+Q,OAAO44C,GAAMvsC,MAAMrT,UAAUhK,MAAM4L,KAAK1L,IAGtD,IAAIg+N,GAAe,CACf,OACA,SACA,cACA,QACA,OACA,UACA,QACA,sBACA,kCAEAC,GAAkB,CAClBp2B,gBAAiB,WACjBvE,aAAc,GACd1lK,OAAQ,QACRgqK,aAAc,YAEds2B,GAAe,CACf78K,KAAM,WACF,IAAIqb,EAAQ/yD,KACRw0N,EAAe,GACnBH,GAAatzN,SAAQ,SAAUiyB,GAC3BwhM,EAAaxhM,GAAS,WAElB,IADA,IAAIiyH,EAAO,GACF10F,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpC00F,EAAK10F,GAAM/xD,UAAU+xD,GAEzBwC,EAAM00J,MAAM9jN,MAAMovD,EAAOge,GAAc,CAAC/9C,GAAQiyH,QAGxD,IAAI3nI,EAAUwzD,GAASA,GAAS,GAAI9wE,KAAKsd,SAAU,CAAE4gL,gBAAiBl+L,KAAKk+L,gBAAiBvE,aAAc35L,KAAK25L,aAAc1lK,OAAQj0B,KAAKi0B,OAAQgqK,aAAcj+L,KAAKi+L,aAAc1uH,OAAQilJ,IAM3L,OALA3xN,OAAOotB,KAAKqkM,IAAiBvzN,SAAQ,SAAUlC,GACtCye,EAAQze,KACTye,EAAQze,GAAOy1N,GAAgBz1N,OAGhC,CAAE8+L,OAAQ,KAAM2pB,gBAAiBhqM,IAE5CujM,QAAS,CACL4T,OAAQ,SAAUC,GAGd,IAFA,IAAIpqK,EACA26F,EAAO,GACF10F,EAAK,EAAGA,EAAK/xD,UAAUtD,OAAQq1D,IACpC00F,EAAK10F,EAAK,GAAK/xD,UAAU+xD,GAE7B,IAAI1vD,EAAS,KAIb,OAHIb,KAAK29L,OAAO+2B,KACZ7zN,GAAUypD,EAAKtqD,KAAK29L,QAAQ+2B,GAAY/wN,MAAM2mD,EAAI26F,IAE/CpkJ,IAGf8zN,UAAW,WACP,IAAI5hK,EAAQ/yD,KACZq0N,GAAatzN,SAAQ,SAAUiyB,GAC3B+/B,EAAM4qI,OAAO5rK,IAAIiB,MAErBhzB,KAAK29L,OAAOlhK,YAKhBm4L,GAAW,CACX7xN,KAAM,gBACNinN,OAAQ,CAACuK,IACTzkM,MAAO,CACHmuK,aAAc,CACV1oM,KAAMggD,QAEVthB,OAAQ,CACJ1+B,KAAMggD,QAEV2oJ,gBAAiB,CACb3oM,KAAMggD,QAEVokJ,aAAc,CACVpkM,KAAMggD,QAEVj4B,QAAS,CACL/nB,KAAMsN,SAGd69M,MAAO,CACHziB,aAAc,SAAU42B,GACpB70N,KAAK29L,OAAOyB,mBAAmBy1B,IAEnC5gM,OAAQ,SAAU4gM,GACd70N,KAAK29L,OAAO1pK,OAAO4gM,KAG3B73K,QAAS,WACL,IAAI1/B,EAAUwzD,GAASA,GAAS,GAAI9wE,KAAKsnN,iBAAkB,CAAEzhK,GAAI7lD,KAAK+gN,MAAM+T,gBAC5E90N,KAAK29L,OAAS,IAAI,QAAOrgL,IAE7BujM,QAAS,CACLkU,eAAgB,WACZ,OAAO/0N,KAAK+gN,MAAM+T,iBAK9B,SAASE,GAAmBruD,EAAU/6J,EAAO4W,EAAQyyM,EAASC,EAAsBC,EAAoCC,EAAYC,EAAgBC,EAAmBC,GACzI,mBAAfH,IACPE,EAAoBD,EACpBA,EAAiBD,EACjBA,GAAa,GAGjB,IAeIjhK,EAfA72C,EAA4B,oBAAXkF,EAAwBA,EAAOlF,QAAUkF,EAkD9D,GAhDImkJ,GAAYA,EAASlG,SACrBnjJ,EAAQmjJ,OAASkG,EAASlG,OAC1BnjJ,EAAQ+mM,gBAAkB19C,EAAS09C,gBACnC/mM,EAAQk4M,WAAY,EAEhBN,IACA53M,EAAQ8wM,YAAa,IAIzB6G,IACA33M,EAAQm4M,SAAWR,GAGnBE,GAEAhhK,EAAO,SAAUj1C,GAEbA,EACIA,GACKlf,KAAK01N,QAAU11N,KAAK01N,OAAOC,YAC3B31N,KAAKrK,QAAUqK,KAAKrK,OAAO+/N,QAAU11N,KAAKrK,OAAO+/N,OAAOC,WAE5Dz2M,GAA0C,qBAAxB02M,sBACnB12M,EAAU02M,qBAGVhqN,GACAA,EAAM7J,KAAK/B,KAAMs1N,EAAkBp2M,IAGnCA,GAAWA,EAAQ22M,uBACnB32M,EAAQ22M,sBAAsBnnN,IAAIymN,IAK1C73M,EAAQw4M,aAAe3hK,GAElBvoD,IACLuoD,EAAOihK,EACD,SAAUl2M,GACRtT,EAAM7J,KAAK/B,KAAMu1N,EAAqBr2M,EAASlf,KAAK+1N,MAAMC,SAASC,cAErE,SAAU/2M,GACRtT,EAAM7J,KAAK/B,KAAMq1N,EAAen2M,MAGxCi1C,EACA,GAAI72C,EAAQ8wM,WAAY,CAEpB,IAAI8H,EAAmB54M,EAAQmjJ,OAC/BnjJ,EAAQmjJ,OAAS,SAAkCw/B,EAAG/gL,GAElD,OADAi1C,EAAKpyD,KAAKmd,GACHg3M,EAAiBj2B,EAAG/gL,QAG9B,CAED,IAAIi3M,EAAW74M,EAAQ84M,aACvB94M,EAAQ84M,aAAeD,EAAW,GAAGhvN,OAAOgvN,EAAUhiK,GAAQ,CAACA,GAGvE,OAAO3xC,EAIX,IAAI6zM,GAAmBzB,GAEnB0B,GAAmB,WACnB,IAAIlV,EAAMphN,KACNqhN,EAAKD,EAAIE,eACTp8I,EAAKk8I,EAAIG,MAAMr8I,IAAMm8I,EACzB,OAAOn8I,EAAG,MAAO,CAAEvwE,IAAK,mBAExB4hO,GAA4B,GAChCD,GAAiBE,eAAgB,EAEjC,IAAIC,QAA0B3lN,EAE1B4lN,QAAqB5lN,EAErB6lN,QAA8B7lN,EAE9B8lN,IAAmC,EAInCC,GAAoC7B,GAAmB,CAAEv0D,OAAQ61D,GAAkBjS,gBAAiBkS,IAA6BE,GAAyBJ,GAAkBK,GAAoBE,GAAkCD,IAA6B,OAAO7lN,OAAWA,OAAWA,GA+B5RgmN,GAAiB,WACjB,IAAI1V,EAAMphN,KACNqhN,EAAKD,EAAIE,eACTp8I,EAAKk8I,EAAIG,MAAMr8I,IAAMm8I,EACzB,OAAOn8I,EAAG,MAAO,CAAEvwE,IAAK,yBAG5BmiO,GAAeN,eAAgB,EAE/B,I,uCCjIA,IACA,qGACA,KAFA,WAGA,OACA,aACA,2BACA,+BACA,yBACA,2BACA,0BACA,aACA,6BACA,YACA,gBACA,gBACA,WACA,OAEA,eACA,kBACA,iBACA,sBACA,mBACA,kBACA,cACA,qCACA,eACA,sCACA,yBACA,qBACA,iBAGA,OACA,iBACA,WACA,YACA,SACA,OACA,0BACA,0CACA,qCACA,oCACA,wBACA,gCAEA,UACA,kBACA,QACA,eACA,aACA,mBACA,mBACA,YACA,qBACA,gBACA,OACA,UACA,aACA,SACA,MACA,YACA,cACA,qBAKA,2BACA,gBACA,iBACA,+BACA,6BACA,6BACA,6BACA,iCACA,uCACA,2BACA,mBAGA,yCACA,gBACA,wCACA,iCACA,mCACA,+BACA,gCACA,2CACA,2BACA,+CATA,IAWA,WAXA,SAWA,KACA,aACA,oCACA,wCAEA,iBACA,8CAGA,WApBA,WAqBA,+BACA,uBAEA,YAxBA,SAwBA,cAEA,sBAEA,+BACA,yBAEA,YACA,uBACA,8BAEA,sGAGA,cAtCA,SAsCA,kBACA,+EACA,4BACA,kBACA,gBACA,mBAEA,qBACA,iCAEA,SADA,qBACA,EACA,gBACA,YACA,eACA,MACA,UACA,aACA,MACA,SACA,aACA,MACA,UACA,eACA,MAKA,+BACA,gEAEA,2DACA,0BAIA,OACA,oGACA,wFACA,4FACA,2FACA,kBACA,uBAKA,oDACA,4BACA,iDACA,mDACA,0BACA,OACA,oBACA,wCACA,gDACA,MACA,kDACA,cACA,cACA,4BACA,SACA,oBACA,wCAEA,kBACA,kBACA,mBACA,+BAEA,4CACA,kBACA,mBACA,mBAEA,cACA,kEACA,iBAQA,GAHA,2CAEA,iEACA,OACA,2DACA,kBACA,sBACA,QACA,wCACA,oCACA,0BACA,8BACA,cACA,UACA,iBACA,sBACA,qBACA,mBACA,kBACA,kFAMA,cACA,6BACA,qBAGA,iBACA,0EAGA,yBA1JA,SA0JA,cAEA,+BACA,8EAGA,WAhKA,WAiKA,0CACA,4CAGA,wBArKA,SAqKA,GACA,sBAEA,QAxKA,SAwKA,GACA,sBAEA,gBA3KA,SA2KA,gBACA,qCAIA,sCACA,+FAGA,IACA,gCAGA,uBACA,kCACA,qCAKA,6FAEA,WACA,YACA,gBACA,8BACA,yBACA,eACA,IAEA,iBAzMA,SAyMA,GACA,eACA,mCACA,kCACA,yCAEA,uBACA,gBACA,0BACA,0CACA,mBACA,4BACA,gDAKA,aAGA,eACA,kBACA,mBACA,6BACA,0CACA,mBACA,4BACA,gDAKA,WAOA,UAEA,MAlPA,WAmPA,gCACA,mCAEA,kBAtPA,SAsPA,cACA,8BACA,mFACA,kBACA,eAgDA,cACA,iEACA,4BAjDA,oEACA,kBACA,wBAEA,eAGA,kBACA,iHACA,kBACA,gDAIA,6DAwBA,OAvBA,kCAGA,gFACA,iEAGA,4DACA,mLAEA,4FACA,6DACA,4FACA,iFACA,iFAGA,kDACA,yCAEA,gCACA,gCAIA,cACA,mEACA,kCAWA,QAhTA,SAgTA,kBACA,mBAEM,KAAN,MAEM,KAAN,0CACA,kBACQ,EAAR,MACQ,EAAR,eAGA,eA3TA,SA2TA,GACA,kDAGA,QAhZA,WAgZA,WACA,kBACA,kCACA,8BACA,2DACA,sEACA,uBACA,0BACA,kBAJA,uBAKA,yBALA,IAKA,0CACA,kEACA,yDAPA,8BAWA,uBACA,qBACA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AOA,GACPC,OAAQA,GACRC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,OAAQA,GACRC,WAAYA,GACZC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNltD,QAASA,GACTmtD,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,QAASA,GACTC,OAAQA,GACRC,QAASA,GACTC,SAAUA,GACVC,UAAWA,GACXC,SAAUA,GACVC,QAASA,GACTC,gBAAiBA,GACjBC,cAAeA,GACfC,SAAUA,GACVC,OAAQA,GACRC,SAAUA,GACVC,OAAQA,GACRC,aAAcA,GACdC,YAAaA,GACbC,cAAeA,GACfC,kBAAmBA,GACnBC,kBAAmBA,GACnBC,mBAAoBA,GACpBC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPvyD,MAAOA,GACPwyD,IAAKA,GACLC,QAASA,GACTC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,IAAKA,GACLnnD,OAAQA,GACRonD,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,SAAUA,GACVC,QAASA,GACTC,SAAUA,GACVC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACP84D,OAAQ74D,GACRC,KAAMA,GACNC,KAAMA,GACN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AWA,GACXC,eAAgBA,GAChBC,KAAMA,GACNC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,UAAWA,GACXC,WAAYA,GACZC,MAAOA,GACPC,QAASA,GACTC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,UAAWA,GACXC,WAAYA,GACZC,KAAMA,GACN24B,OAAQ14B,GACR24B,OAAQ14B,GACRC,KAAMA,GACNC,cAAeA,GACfC,gBAAiBA,GACjBC,eAAgBA,GAChBC,iBAAkBA,GAClBC,GAAIA,GACJC,GAAIA,GACJC,IAAKA,GACLC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,QAASA,GACTC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,OAAQA,GACRC,QAASA,GACTC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,OAAQA,GACR42B,OAAQ32B,GACR42B,OAAQ32B,GACRC,KAAMA,GACN22B,MAAO12B,GACP22B,MAAO12B,GACPC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACN41B,OAAQ31B,GACR41B,OAAQ31B,GACRC,IAAKA,GACLC,MAAOA,GACPC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,MAAOA,GACPC,IAAKA,GACLC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,qBAAsBA,GACtBC,eAAgBA,GAChBC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,GAAIA,GACJC,GAAIA,GACJC,IAAKA,GACLC,MAAOA,GACPC,QAASA,GACT8zB,KAAM7zB,GACN8zB,KAAM7zB,GACNC,OAAQA,GACRC,KAAMA,GACNC,QAASA,GACTC,IAAKA,GACLC,GAAIA,GACJC,KAAMA,GACNC,KAAMA,GACNuzB,OAAQtzB,GACRuzB,OAAQtzB,GACRC,KAAMA,GACNszB,OAAQrzB,GACRszB,OAAQrzB,GACRC,SAAUA,GACVC,OAAQA,GACRC,OAAQA,GACRmzB,KAAMlzB,GACNmzB,KAAMlzB,GACNC,MAAOA,GACPC,QAASA,GACTC,UAAWA,GACXC,YAAaA,GACbC,gBAAiBA,GACjB8yB,KAAM7yB,GACNC,SAAUA,GACVC,IAAKA,GACLC,OAAQA,GACRC,MAAOA,GACPl/F,KAAMA,GACNm/F,SAAUA,GACVC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,QAASA,GACTC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,OAAQA,GACRC,MAAOA,GACPC,GAAIA,GACJC,GAAIA,GACJC,UAAWA,GACXC,IAAKA,GACLC,OAAQA,GACRC,QAASA,GACTC,OAAQA,GACRC,SAAUA,GACVC,MAAOA,GACPC,QAASA,GACTC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,UAAWA,GACX4wB,OAAQ3wB,GACRC,QAASA,GACTC,QAASA,GACTC,GAAIA,GACJC,cAAeA,GACfC,SAAUA,GACVC,KAAMA,GACNC,KAAMA,GACNqwB,MAAOpwB,GACPC,KAAMA,GACNC,GAAIA,GACJC,GAAIA,GACJC,MAAOA,GACPC,WAAYA,GACZC,KAAMA,GACNC,YAAaA,GACbC,SAAUA,GACVC,cAAeA,GACfC,mBAAoBA,GACpBC,cAAeA,GACfC,OAAQA,GACRC,YAAaA,GACbC,SAAUA,GACVC,SAAUA,GACV9oG,IAAKA,GACL+oG,IAAKA,GACLC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GACNC,QAASA,GACTC,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVl6G,KAAMA,GACNm6G,aAAcA,GACdC,WAAYA,GACZC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,YAAaA,GACbC,QAASA,GACTC,MAAOA,GACPC,QAASA,GACTmtB,KAAMltB,GACNmtB,KAAMltB,GACNC,MAAOA,GACPC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,SAAUA,GACVC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACP54H,MAAOA,GACP64H,OAAQA,GACRysB,MAAOxsB,GACPC,OAAQA,GACRC,MAAOA,GACPC,QAASA,GACTC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,UAAWA,GACXC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,KAAMA,GACNC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,QAASA,GACTC,MAAOA,GACPC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,SAAUA,GACVC,MAAOA,GACPC,GAAIA,GAC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GAChBC,oBAAqBA,GACrBC,YAAaA,GACbC,OAAQA,GACRC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,gBAAiBA,GACjBC,YAAaA,GACbC,MAAOA,GACPxoH,IAAKA,GACLyoH,IAAKA,GACLC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,SAAUA,GACVC,UAAWA,GACXC,YAAaA,GACbC,UAAWA,GACXC,WAAYA,GACZC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,WAAYA,GACZC,KAAMA,GACNC,YAAaA,GACbC,SAAUA,GACVC,cAAeA,GACfC,mBAAoBA,GACpBC,cAAeA,GACfC,OAAQA,GACRC,YAAaA,GACbC,SAAUA,GACVC,SAAUA,GACVC,QAASA,GACTC,SAAUA,GACVC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACN2a,KAAM1a,GACN2a,KAAM1a,GACN2a,KAAM1a,GACNC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,QAASA,GACTC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,SAAUA,GACVC,cAAeA,GACfC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,SAAUA,GACVC,UAAWA,GACXC,UAAWA,GACXC,WAAYA,GACZC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,OAAQA,GACR6Y,MAAO5Y,GACPn8D,IAAKA,GACL7wE,OAAQA,GACRitI,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,IA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","file":"js/chunk-2d5cb22d.175713b4.js","sourcesContent":["import { liftTarget, replaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, AllSelection, TextSelection } from 'prosemirror-state';\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Delete the selection, if there is one.\nfunction deleteSelection(state, dispatch) {\n if (state.selection.empty) { return false }\n if (dispatch) { dispatch(state.tr.deleteSelection().scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and at the start of a textblock, try to\n// reduce the distance between that block and the one before it—if\n// there's a block directly before it that can be joined, join them.\n// If not, try to move the selected block closer to the next one in\n// the document structure by lifting it out of its parent or moving it\n// into a parent of the previous block. Will use the view for accurate\n// (bidi-aware) start-of-textblock detection if given.\nfunction joinBackward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n { return false }\n\n var $cut = findCutBefore($cursor);\n\n // If there is no node before this, try to lift\n if (!$cut) {\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n var before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n { return true }\n\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n var delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n var tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n }\n\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\nfunction textblockAt(node, side, only) {\n for (; node; node = (side == \"start\" ? node.firstChild : node.lastChild)) {\n if (node.isTextblock) { return true }\n if (only && node.childCount != 1) { return false }\n }\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the start of a textblock, select\n// the node before that textblock, if possible. This is intended to be\n// bound to keys like backspace, after\n// [`joinBackward`](#commands.joinBackward) or other deleting\n// commands, as a fall-back behavior when the schema doesn't allow\n// deletion at the selected point.\nfunction selectNodeBackward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0) { return false }\n $cut = findCutBefore($head);\n }\n var node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView()); }\n return true\n}\n\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0) { return $pos.doc.resolve($pos.before(i + 1)) }\n if ($pos.node(i).type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and the cursor is at the end of a\n// textblock, try to reduce or remove the boundary between that block\n// and the one after it, either by joining them or by moving the other\n// block closer to this one in the tree structure. Will use the view\n// for accurate start-of-textblock detection if given.\nfunction joinForward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n { return false }\n\n var $cut = findCutAfter($cursor);\n\n // If there is no node after this, there's nothing to do\n if (!$cut) { return false }\n\n var after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch)) { return true }\n\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n var delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n var tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n }\n\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the end of a textblock, select\n// the node coming after that textblock, if possible. This is intended\n// to be bound to keys like delete, after\n// [`joinForward`](#commands.joinForward) and similar deleting\n// commands, to provide a fall-back behavior when the schema doesn't\n// allow deletion at the selected point.\nfunction selectNodeForward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n { return false }\n $cut = findCutAfter($head);\n }\n var node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView()); }\n return true\n}\n\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n var parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount) { return $pos.doc.resolve($pos.after(i + 1)) }\n if (parent.type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block or, if there is a text selection, the\n// closest ancestor block of the selection that can be joined, with\n// the sibling above it.\nfunction joinUp(state, dispatch) {\n var sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from)) { return false }\n point = sel.from;\n } else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null) { return false }\n }\n if (dispatch) {\n var tr = state.tr.join(point);\n if (nodeSel) { tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize)); }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block, or the closest ancestor of the selection\n// that can be joined, with the sibling after it.\nfunction joinDown(state, dispatch) {\n var sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to)) { return false }\n point = sel.to;\n } else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null) { return false }\n }\n if (dispatch)\n { dispatch(state.tr.join(point).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Lift the selected block, or the closest ancestor block of the\n// selection that can be lifted, out of its parent node.\nfunction lift(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the selection is in a node whose type has a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, replace the\n// selection with a newline character.\nfunction newlineInCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n if (dispatch) { dispatch(state.tr.insertText(\"\\n\").scrollIntoView()); }\n return true\n}\n\nfunction defaultBlockAt(match) {\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n if (type.isTextblock && !type.hasRequiredAttrs()) { return type }\n }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// When the selection is in a node with a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, create a\n// default block after the code block, and move the cursor there.\nfunction exitCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n var above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!above.canReplaceWith(after, after, type)) { return false }\n if (dispatch) {\n var pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If a block node is selected, create an empty paragraph before (if\n// it is its parent's first child) or after it.\nfunction createParagraphNear(state, dispatch) {\n var sel = state.selection;\n var $from = sel.$from;\n var $to = sel.$to;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent) { return false }\n var type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock) { return false }\n if (dispatch) {\n var side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n var tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the cursor is in an empty textblock that can be lifted, lift the\n// block.\nfunction liftEmptyBlock(state, dispatch) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || $cursor.parent.content.size) { return false }\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n var before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch) { dispatch(state.tr.split(before).scrollIntoView()); }\n return true\n }\n }\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Split the parent block of the selection. If the selection is a text\n// selection, also delete its content.\nfunction splitBlock(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos)) { return false }\n if (dispatch) { dispatch(state.tr.split($from.pos).scrollIntoView()); }\n return true\n }\n\n if (!$from.parent.isBlock) { return false }\n\n if (dispatch) {\n var atEnd = $to.parentOffset == $to.parent.content.size;\n var tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection) { tr.deleteSelection(); }\n var deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n var types = atEnd && deflt ? [{type: deflt}] : null;\n var can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt && [{type: deflt}])) {\n types = [{type: deflt}];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n var first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n { tr.setNodeMarkup(tr.mapping.map($from.before()), deflt); }\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Acts like [`splitBlock`](#commands.splitBlock), but without\n// resetting the set of active marks at the cursor.\nfunction splitBlockKeepMarks(state, dispatch) {\n return splitBlock(state, dispatch && (function (tr) {\n var marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) { tr.ensureMarks(marks); }\n dispatch(tr);\n }))\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Move the selection to the node wrapping the current selection, if\n// any. (Will not select the document node.)\nfunction selectParentNode(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var to = ref.to;\n var pos;\n var same = $from.sharedDepth(to);\n if (same == 0) { return false }\n pos = $from.before(same);\n if (dispatch) { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos))); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Select the whole document.\nfunction selectAll(state, dispatch) {\n if (dispatch) { dispatch(state.tr.setSelection(new AllSelection(state.doc))); }\n return true\n}\n\nfunction joinMaybeClear(state, $pos, dispatch) {\n var before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type)) { return false }\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch) { dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView()); }\n return true\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n { return false }\n if (dispatch)\n { dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView()); }\n return true\n}\n\nfunction deleteBarrier(state, $cut, dispatch) {\n var before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating) { return false }\n if (joinMaybeClear(state, $cut, dispatch)) { return true }\n\n var canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n var end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (var i = conn.length - 1; i >= 0; i--)\n { wrap = Fragment.from(conn[i].create(null, wrap)); }\n wrap = Fragment.from(before.copy(wrap));\n var tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n var joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt)) { tr.join(joinAt); }\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n var selAfter = Selection.findFrom($cut, 1);\n var range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n var at = before, wrap$1 = [];\n for (;;) {\n wrap$1.push(at);\n if (at.isTextblock) { break }\n at = at.lastChild;\n }\n var afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild) { afterDepth++; }\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n var end$1 = Fragment.empty;\n for (var i$1 = wrap$1.length - 1; i$1 >= 0; i$1--) { end$1 = Fragment.from(wrap$1[i$1].copy(end$1)); }\n var tr$1 = state.tr.step(new ReplaceAroundStep($cut.pos - wrap$1.length, $cut.pos + after.nodeSize,\n $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth,\n new Slice(end$1, wrap$1.length, 0), 0, true));\n dispatch(tr$1.scrollIntoView());\n }\n return true\n }\n }\n\n return false\n}\n\nfunction selectTextblockSide(side) {\n return function(state, dispatch) {\n var sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n var depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth) { return false }\n depth--;\n }\n if (!$pos.node(depth).isTextblock) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(TextSelection.create(\n state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth)))); }\n return true\n }\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Moves the cursor to the start of current text block.\nvar selectTextblockStart = selectTextblockSide(-1);\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Moves the cursor to the end of current text block.\nvar selectTextblockEnd = selectTextblockSide(1);\n\n// Parameterized commands\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Wrap the selection in a node of the given type with the given\n// attributes.\nfunction wrapIn(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping) { return false }\n if (dispatch) { dispatch(state.tr.wrap(range, wrapping).scrollIntoView()); }\n return true\n }\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that tries to set the selected textblocks to the\n// given node type with the given attributes.\nfunction setBlockType(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var from = ref.from;\n var to = ref.to;\n var applicable = false;\n state.doc.nodesBetween(from, to, function (node, pos) {\n if (applicable) { return false }\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs)) { return }\n if (node.type == nodeType) {\n applicable = true;\n } else {\n var $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n if (!applicable) { return false }\n if (dispatch) { dispatch(state.tr.setBlockType(from, to, nodeType, attrs).scrollIntoView()); }\n return true\n }\n}\n\nfunction markApplies(doc, ranges, type) {\n var loop = function ( i ) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var can = $from.depth == 0 ? doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, function (node) {\n if (can) { return false }\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can) { return { v: true } }\n };\n\n for (var i = 0; i < ranges.length; i++) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\n// :: (MarkType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command function that toggles the given mark with the\n// given attributes. Will return `false` when the current selection\n// doesn't support that mark. This will remove the mark if any marks\n// of that type exist in the selection, or add it otherwise. If the\n// selection is empty, this applies to the [stored\n// marks](#state.EditorState.storedMarks) instead of a range of the\n// document.\nfunction toggleMark(markType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var empty = ref.empty;\n var $cursor = ref.$cursor;\n var ranges = ref.ranges;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) { return false }\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n { dispatch(state.tr.removeStoredMark(markType)); }\n else\n { dispatch(state.tr.addStoredMark(markType.create(attrs))); }\n } else {\n var has = false, tr = state.tr;\n for (var i = 0; !has && i < ranges.length; i++) {\n var ref$1 = ranges[i];\n var $from = ref$1.$from;\n var $to = ref$1.$to;\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref$2 = ranges[i$1];\n var $from$1 = ref$2.$from;\n var $to$1 = ref$2.$to;\n if (has) {\n tr.removeMark($from$1.pos, $to$1.pos, markType);\n } else {\n var from = $from$1.pos, to = $to$1.pos, start = $from$1.nodeAfter, end = $to$1.nodeBefore;\n var spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n var spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) { from += spaceStart; to -= spaceEnd; }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true\n }\n}\n\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return function (tr) {\n if (!tr.isGeneric) { return dispatch(tr) }\n\n var ranges = [];\n for (var i = 0; i < tr.mapping.maps.length; i++) {\n var map = tr.mapping.maps[i];\n for (var j = 0; j < ranges.length; j++)\n { ranges[j] = map.map(ranges[j]); }\n map.forEach(function (_s, _e, from, to) { return ranges.push(from, to); });\n }\n\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n var joinable = [];\n for (var i$1 = 0; i$1 < ranges.length; i$1 += 2) {\n var from = ranges[i$1], to = ranges[i$1 + 1];\n var $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (var index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n var after = parent.maybeChild(index);\n if (!after) { break }\n if (index && joinable.indexOf(pos) == -1) {\n var before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n { joinable.push(pos); }\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort(function (a, b) { return a - b; });\n for (var i$2 = joinable.length - 1; i$2 >= 0; i$2--) {\n if (canJoin(tr.doc, joinable[i$2])) { tr.join(joinable[i$2]); }\n }\n dispatch(tr);\n }\n}\n\n// :: ((state: EditorState, ?(tr: Transaction)) → bool, union<(before: Node, after: Node) → bool, [string]>) → (state: EditorState, ?(tr: Transaction)) → bool\n// Wrap a command so that, when it produces a transform that causes\n// two joinable nodes to end up next to each other, those are joined.\n// Nodes are considered joinable when they are of the same type and\n// when the `isJoinable` predicate returns true for them or, if an\n// array of strings was passed, if their node type name is in that\n// array.\nfunction autoJoin(command, isJoinable) {\n if (Array.isArray(isJoinable)) {\n var types = isJoinable;\n isJoinable = function (node) { return types.indexOf(node.type.name) > -1; };\n }\n return function (state, dispatch, view) { return command(state, dispatch && wrapDispatchForJoin(dispatch, isJoinable), view); }\n}\n\n// :: (...[(EditorState, ?(tr: Transaction), ?EditorView) → bool]) → (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// Combine a number of command functions into a single function (which\n// calls them one by one until one returns true).\nfunction chainCommands() {\n var commands = [], len = arguments.length;\n while ( len-- ) commands[ len ] = arguments[ len ];\n\n return function(state, dispatch, view) {\n for (var i = 0; i < commands.length; i++)\n { if (commands[i](state, dispatch, view)) { return true } }\n return false\n }\n}\n\nvar backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nvar del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n\n// :: Object\n// A basic keymap containing bindings not specific to any schema.\n// Binds the following keys (when multiple commands are listed, they\n// are chained with [`chainCommands`](#commands.chainCommands)):\n//\n// * **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n// * **Mod-Enter** to `exitCode`\n// * **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n// * **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-a** to `selectAll`\nvar pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n\n// :: Object\n// A copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n// **Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n// **Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\n// Ctrl-Delete.\nvar macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (var key in pcBaseKeymap) { macBaseKeymap[key] = pcBaseKeymap[key]; }\n\n// declare global: os, navigator\nvar mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n : typeof os != \"undefined\" ? os.platform() == \"darwin\" : false;\n\n// :: Object\n// Depending on the detected platform, this will hold\n// [`pcBasekeymap`](#commands.pcBaseKeymap) or\n// [`macBaseKeymap`](#commands.macBaseKeymap).\nvar baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockKeepMarks, toggleMark, wrapIn };\n//# sourceMappingURL=index.es.js.map\n","import { ReplaceError, Slice, Fragment, MarkType } from 'prosemirror-model';\n\n// Mappable:: interface\n// There are several things that positions can be mapped through.\n// Such objects conform to this interface.\n//\n// map:: (pos: number, assoc: ?number) → number\n// Map a position through this object. When given, `assoc` (should\n// be -1 or 1, defaults to 1) determines with which side the\n// position is associated, which determines in which direction to\n// move when a chunk of content is inserted at the mapped position.\n//\n// mapResult:: (pos: number, assoc: ?number) → MapResult\n// Map a position, and return an object containing additional\n// information about the mapping. The result's `deleted` field tells\n// you whether the position was deleted (completely enclosed in a\n// replaced range) during the mapping. When content on only one side\n// is deleted, the position itself is only considered deleted when\n// `assoc` points in the direction of the deleted content.\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\n\nvar lower16 = 0xffff;\nvar factor16 = Math.pow(2, 16);\n\nfunction makeRecover(index, offset) { return index + offset * factor16 }\nfunction recoverIndex(value) { return value & lower16 }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16 }\n\n// ::- An object representing a mapped position with extra\n// information.\nvar MapResult = function MapResult(pos, deleted, recover) {\n if ( deleted === void 0 ) deleted = false;\n if ( recover === void 0 ) recover = null;\n\n // :: number The mapped version of the position.\n this.pos = pos;\n // :: bool Tells you whether the position was deleted, that is,\n // whether the step removed its surroundings from the document.\n this.deleted = deleted;\n this.recover = recover;\n};\n\n// :: class extends Mappable\n// A map describing the deletions and insertions made by a step, which\n// can be used to find the correspondence between positions in the\n// pre-step version of a document and the same position in the\n// post-step version.\nvar StepMap = function StepMap(ranges, inverted) {\n if ( inverted === void 0 ) inverted = false;\n\n if (!ranges.length && StepMap.empty) { return StepMap.empty }\n this.ranges = ranges;\n this.inverted = inverted;\n};\n\nStepMap.prototype.recover = function recover (value) {\n var diff = 0, index = recoverIndex(value);\n if (!this.inverted) { for (var i = 0; i < index; i++)\n { diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1]; } }\n return this.ranges[index * 3] + diff + recoverOffset(value)\n};\n\n// : (number, ?number) → MapResult\nStepMap.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\n// : (number, ?number) → number\nStepMap.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, true) };\n\nStepMap.prototype._map = function _map (pos, assoc, simple) {\n var diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n var side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n var result = start + diff + (side < 0 ? 0 : newSize);\n if (simple) { return result }\n var recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n return new MapResult(result, assoc < 0 ? pos != start : pos != end, recover)\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff)\n};\n\nStepMap.prototype.touches = function touches (pos, recover) {\n var diff = 0, index = recoverIndex(recover);\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3) { return true }\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false\n};\n\n// :: ((oldStart: number, oldEnd: number, newStart: number, newEnd: number))\n// Calls the given function on each of the changed ranges included in\n// this map.\nStepMap.prototype.forEach = function forEach (f) {\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0, diff = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n};\n\n// :: () → StepMap\n// Create an inverted version of this map. The result can be used to\n// map positions in the post-step document to the pre-step document.\nStepMap.prototype.invert = function invert () {\n return new StepMap(this.ranges, !this.inverted)\n};\n\nStepMap.prototype.toString = function toString () {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges)\n};\n\n// :: (n: number) → StepMap\n// Create a map that moves all positions by offset `n` (which may be\n// negative). This can be useful when applying steps meant for a\n// sub-document to a larger document, or vice-versa.\nStepMap.offset = function offset (n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n])\n};\n\n// :: StepMap\n// A StepMap that contains no changed ranges.\nStepMap.empty = new StepMap([]);\n\n// :: class extends Mappable\n// A mapping represents a pipeline of zero or more [step\n// maps](#transform.StepMap). It has special provisions for losslessly\n// handling mapping positions through a series of steps in which some\n// steps are inverted versions of earlier steps. (This comes up when\n// ‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\n// collaboration or history management.)\nvar Mapping = function Mapping(maps, mirror, from, to) {\n // :: [StepMap]\n // The step maps in this mapping.\n this.maps = maps || [];\n // :: number\n // The starting position in the `maps` array, used when `map` or\n // `mapResult` is called.\n this.from = from || 0;\n // :: number\n // The end position in the `maps` array.\n this.to = to == null ? this.maps.length : to;\n this.mirror = mirror;\n};\n\n// :: (?number, ?number) → Mapping\n// Create a mapping that maps only through a part of this one.\nMapping.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.maps.length;\n\n return new Mapping(this.maps, this.mirror, from, to)\n};\n\nMapping.prototype.copy = function copy () {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to)\n};\n\n// :: (StepMap, ?number)\n// Add a step map to the end of this mapping. If `mirrors` is\n// given, it should be the index of the step map that is the mirror\n// image of this one.\nMapping.prototype.appendMap = function appendMap (map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null) { this.setMirror(this.maps.length - 1, mirrors); }\n};\n\n// :: (Mapping)\n// Add all the step maps in a given mapping to this one (preserving\n// mirroring information).\nMapping.prototype.appendMapping = function appendMapping (mapping) {\n for (var i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : null);\n }\n};\n\n// :: (number) → ?number\n// Finds the offset of the step map that mirrors the map at the\n// given offset, in this mapping (as per the second argument to\n// `appendMap`).\nMapping.prototype.getMirror = function getMirror (n) {\n if (this.mirror) { for (var i = 0; i < this.mirror.length; i++)\n { if (this.mirror[i] == n) { return this.mirror[i + (i % 2 ? -1 : 1)] } } }\n};\n\nMapping.prototype.setMirror = function setMirror (n, m) {\n if (!this.mirror) { this.mirror = []; }\n this.mirror.push(n, m);\n};\n\n// :: (Mapping)\n// Append the inverse of the given mapping to this one.\nMapping.prototype.appendMappingInverted = function appendMappingInverted (mapping) {\n for (var i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : null);\n }\n};\n\n// :: () → Mapping\n// Create an inverted version of this mapping.\nMapping.prototype.invert = function invert () {\n var inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse\n};\n\n// : (number, ?number) → number\n// Map a position through this mapping.\nMapping.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n\n if (this.mirror) { return this._map(pos, assoc, true) }\n for (var i = this.from; i < this.to; i++)\n { pos = this.maps[i].map(pos, assoc); }\n return pos\n};\n\n// : (number, ?number) → MapResult\n// Map a position through this mapping, returning a mapping\n// result.\nMapping.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\nMapping.prototype._map = function _map (pos, assoc, simple) {\n var deleted = false;\n\n for (var i = this.from; i < this.to; i++) {\n var map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n var corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue\n }\n }\n\n if (result.deleted) { deleted = true; }\n pos = result.pos;\n }\n\n return simple ? pos : new MapResult(pos, deleted)\n};\n\nfunction TransformError(message) {\n var err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err\n}\n\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n\n// ::- Abstraction to build up and track an array of\n// [steps](#transform.Step) representing a document transformation.\n//\n// Most transforming methods return the `Transform` object itself, so\n// that they can be chained.\nvar Transform = function Transform(doc) {\n // :: Node\n // The current document (the result of applying the steps in the\n // transform).\n this.doc = doc;\n // :: [Step]\n // The steps in this transform.\n this.steps = [];\n // :: [Node]\n // The documents before each of the steps.\n this.docs = [];\n // :: Mapping\n // A mapping with the maps for each of the steps in this transform.\n this.mapping = new Mapping;\n};\n\nvar prototypeAccessors = { before: { configurable: true },docChanged: { configurable: true } };\n\n// :: Node The starting document.\nprototypeAccessors.before.get = function () { return this.docs.length ? this.docs[0] : this.doc };\n\n// :: (step: Step) → this\n// Apply a new step in this transform, saving the result. Throws an\n// error when the step fails.\nTransform.prototype.step = function step (object) {\n var result = this.maybeStep(object);\n if (result.failed) { throw new TransformError(result.failed) }\n return this\n};\n\n// :: (Step) → StepResult\n// Try to apply a step in this transformation, ignoring it if it\n// fails. Returns the step result.\nTransform.prototype.maybeStep = function maybeStep (step) {\n var result = step.apply(this.doc);\n if (!result.failed) { this.addStep(step, result.doc); }\n return result\n};\n\n// :: bool\n// True when the document has been changed (when there are any\n// steps).\nprototypeAccessors.docChanged.get = function () {\n return this.steps.length > 0\n};\n\nTransform.prototype.addStep = function addStep (step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n};\n\nObject.defineProperties( Transform.prototype, prototypeAccessors );\n\nfunction mustOverride() { throw new Error(\"Override me\") }\n\nvar stepsByID = Object.create(null);\n\n// ::- A step object represents an atomic change. It generally applies\n// only to the document it was created for, since the positions\n// stored in it will only make sense for that document.\n//\n// New steps are defined by creating classes that extend `Step`,\n// overriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\n// methods, and registering your class with a unique\n// JSON-serialization identifier using\n// [`Step.jsonID`](#transform.Step^jsonID).\nvar Step = function Step () {};\n\nStep.prototype.apply = function apply (_doc) { return mustOverride() };\n\n// :: () → StepMap\n// Get the step map that represents the changes made by this step,\n// and which can be used to transform between positions in the old\n// and the new document.\nStep.prototype.getMap = function getMap () { return StepMap.empty };\n\n// :: (doc: Node) → Step\n// Create an inverted version of this step. Needs the document as it\n// was before the step as argument.\nStep.prototype.invert = function invert (_doc) { return mustOverride() };\n\n// :: (mapping: Mappable) → ?Step\n// Map this step through a mappable thing, returning either a\n// version of that step with its positions adjusted, or `null` if\n// the step was entirely deleted by the mapping.\nStep.prototype.map = function map (_mapping) { return mustOverride() };\n\n// :: (other: Step) → ?Step\n// Try to merge this step with another one, to be applied directly\n// after it. Returns the merged step when possible, null if the\n// steps can't be merged.\nStep.prototype.merge = function merge (_other) { return null };\n\n// :: () → Object\n// Create a JSON-serializeable representation of this step. When\n// defining this for a custom subclass, make sure the result object\n// includes the step type's [JSON id](#transform.Step^jsonID) under\n// the `stepType` property.\nStep.prototype.toJSON = function toJSON () { return mustOverride() };\n\n// :: (Schema, Object) → Step\n// Deserialize a step from its JSON representation. Will call\n// through to the step class' own implementation of this method.\nStep.fromJSON = function fromJSON (schema, json) {\n if (!json || !json.stepType) { throw new RangeError(\"Invalid input for Step.fromJSON\") }\n var type = stepsByID[json.stepType];\n if (!type) { throw new RangeError((\"No step type \" + (json.stepType) + \" defined\")) }\n return type.fromJSON(schema, json)\n};\n\n// :: (string, constructor)\n// To be able to serialize steps to JSON, each step needs a string\n// ID to attach to its JSON representation. Use this method to\n// register an ID for your step classes. Try to pick something\n// that's unlikely to clash with steps from other modules.\nStep.jsonID = function jsonID (id, stepClass) {\n if (id in stepsByID) { throw new RangeError(\"Duplicate use of step JSON ID \" + id) }\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass\n};\n\n// ::- The result of [applying](#transform.Step.apply) a step. Contains either a\n// new document or a failure value.\nvar StepResult = function StepResult(doc, failed) {\n // :: ?Node The transformed document.\n this.doc = doc;\n // :: ?string Text providing information about a failed step.\n this.failed = failed;\n};\n\n// :: (Node) → StepResult\n// Create a successful step result.\nStepResult.ok = function ok (doc) { return new StepResult(doc, null) };\n\n// :: (string) → StepResult\n// Create a failed step result.\nStepResult.fail = function fail (message) { return new StepResult(null, message) };\n\n// :: (Node, number, number, Slice) → StepResult\n// Call [`Node.replace`](#model.Node.replace) with the given\n// arguments. Create a successful result if it succeeds, and a\n// failed one if it throws a `ReplaceError`.\nStepResult.fromReplace = function fromReplace (doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice))\n } catch (e) {\n if (e instanceof ReplaceError) { return StepResult.fail(e.message) }\n throw e\n }\n};\n\n// ::- Replace a part of the document with a slice of new content.\nvar ReplaceStep = /*@__PURE__*/(function (Step) {\n function ReplaceStep(from, to, slice, structure) {\n Step.call(this);\n // :: number\n // The start position of the replaced range.\n this.from = from;\n // :: number\n // The end position of the replaced range.\n this.to = to;\n // :: Slice\n // The slice to insert.\n this.slice = slice;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceStep.__proto__ = Step;\n ReplaceStep.prototype = Object.create( Step && Step.prototype );\n ReplaceStep.prototype.constructor = ReplaceStep;\n\n ReplaceStep.prototype.apply = function apply (doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n { return StepResult.fail(\"Structure replace would overwrite content\") }\n return StepResult.fromReplace(doc, this.from, this.to, this.slice)\n };\n\n ReplaceStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.to - this.from, this.slice.size])\n };\n\n ReplaceStep.prototype.invert = function invert (doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to))\n };\n\n ReplaceStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted) { return null }\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice)\n };\n\n ReplaceStep.prototype.merge = function merge (other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure) { return null }\n\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n var slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure)\n } else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n var slice$1 = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice$1, this.structure)\n } else {\n return null\n }\n };\n\n ReplaceStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replace\", from: this.from, to: this.to};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\") }\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure)\n };\n\n return ReplaceStep;\n}(Step));\n\nStep.jsonID(\"replace\", ReplaceStep);\n\n// ::- Replace a part of the document with a slice of content, but\n// preserve a range of the replaced content by moving it into the\n// slice.\nvar ReplaceAroundStep = /*@__PURE__*/(function (Step) {\n function ReplaceAroundStep(from, to, gapFrom, gapTo, slice, insert, structure) {\n Step.call(this);\n // :: number\n // The start position of the replaced range.\n this.from = from;\n // :: number\n // The end position of the replaced range.\n this.to = to;\n // :: number\n // The start of preserved range.\n this.gapFrom = gapFrom;\n // :: number\n // The end of preserved range.\n this.gapTo = gapTo;\n // :: Slice\n // The slice to insert.\n this.slice = slice;\n // :: number\n // The position in the slice where the preserved range should be\n // inserted.\n this.insert = insert;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceAroundStep.__proto__ = Step;\n ReplaceAroundStep.prototype = Object.create( Step && Step.prototype );\n ReplaceAroundStep.prototype.constructor = ReplaceAroundStep;\n\n ReplaceAroundStep.prototype.apply = function apply (doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n { return StepResult.fail(\"Structure gap-replace would overwrite content\") }\n\n var gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n { return StepResult.fail(\"Gap is not a flat range\") }\n var inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted) { return StepResult.fail(\"Content does not fit in gap\") }\n return StepResult.fromReplace(doc, this.from, this.to, inserted)\n };\n\n ReplaceAroundStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert])\n };\n\n ReplaceAroundStep.prototype.invert = function invert (doc) {\n var gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap,\n this.from + this.insert, this.from + this.insert + gap,\n doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from),\n this.gapFrom - this.from, this.structure)\n };\n\n ReplaceAroundStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n var gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deleted && to.deleted) || gapFrom < from.pos || gapTo > to.pos) { return null }\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure)\n };\n\n ReplaceAroundStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceAroundStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\") }\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo,\n Slice.fromJSON(schema, json.slice), json.insert, !!json.structure)\n };\n\n return ReplaceAroundStep;\n}(Step));\n\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\n\nfunction contentBetween(doc, from, to) {\n var $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n var next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf) { return true }\n next = next.firstChild;\n dist--;\n }\n }\n return false\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end))\n}\n\n// :: (NodeRange) → ?number\n// Try to find a target depth to which the content in the given range\n// can be lifted. Will not go across\n// [isolating](#model.NodeSpec.isolating) parent nodes.\nfunction liftTarget(range) {\n var parent = range.parent;\n var content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (var depth = range.depth;; --depth) {\n var node = range.$from.node(depth);\n var index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n { return depth }\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex)) { break }\n }\n}\n\n// :: (NodeRange, number) → this\n// Split the content in the given range off from its parent, if there\n// is sibling content before or after it, and move it up the tree to\n// the depth specified by `target`. You'll probably want to use\n// [`liftTarget`](#transform.liftTarget) to compute `target`, to make\n// sure the lift is valid.\nTransform.prototype.lift = function(range, target) {\n var $from = range.$from;\n var $to = range.$to;\n var depth = range.depth;\n\n var gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n var start = gapStart, end = gapEnd;\n\n var before = Fragment.empty, openStart = 0;\n for (var d = depth, splitting = false; d > target; d--)\n { if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n } else {\n start--;\n } }\n var after = Fragment.empty, openEnd = 0;\n for (var d$1 = depth, splitting$1 = false; d$1 > target; d$1--)\n { if (splitting$1 || $to.after(d$1 + 1) < $to.end(d$1)) {\n splitting$1 = true;\n after = Fragment.from($to.node(d$1).copy(after));\n openEnd++;\n } else {\n end++;\n } }\n\n return this.step(new ReplaceAroundStep(start, end, gapStart, gapEnd,\n new Slice(before.append(after), openStart, openEnd),\n before.size - openStart, true))\n};\n\n// :: (NodeRange, NodeType, ?Object, ?NodeRange) → ?[{type: NodeType, attrs: ?Object}]\n// Try to find a valid way to wrap the content in the given range in a\n// node of the given type. May introduce extra nodes around and inside\n// the wrapper node, if necessary. Returns null if no valid wrapping\n// could be found. When `innerRange` is given, that range's content is\n// used as the content to fit into the wrapping, instead of the\n// content of `range`.\nfunction findWrapping(range, nodeType, attrs, innerRange) {\n if ( innerRange === void 0 ) innerRange = range;\n\n var around = findWrappingOutside(range, nodeType);\n var inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner) { return null }\n return around.map(withAttrs).concat({type: nodeType, attrs: attrs}).concat(inner.map(withAttrs))\n}\n\nfunction withAttrs(type) { return {type: type, attrs: null} }\n\nfunction findWrappingOutside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around) { return null }\n var outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null\n}\n\nfunction findWrappingInside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var inner = parent.child(startIndex);\n var inside = type.contentMatch.findWrapping(inner.type);\n if (!inside) { return null }\n var lastType = inside.length ? inside[inside.length - 1] : type;\n var innerMatch = lastType.contentMatch;\n for (var i = startIndex; innerMatch && i < endIndex; i++)\n { innerMatch = innerMatch.matchType(parent.child(i).type); }\n if (!innerMatch || !innerMatch.validEnd) { return null }\n return inside\n}\n\n// :: (NodeRange, [{type: NodeType, attrs: ?Object}]) → this\n// Wrap the given [range](#model.NodeRange) in the given set of wrappers.\n// The wrappers are assumed to be valid in this position, and should\n// probably be computed with [`findWrapping`](#transform.findWrapping).\nTransform.prototype.wrap = function(range, wrappers) {\n var content = Fragment.empty;\n for (var i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n var match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n { throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\") }\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n\n var start = range.start, end = range.end;\n return this.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true))\n};\n\n// :: (number, ?number, NodeType, ?Object) → this\n// Set the type of all textblocks (partly) between `from` and `to` to\n// the given node type with the given attributes.\nTransform.prototype.setBlockType = function(from, to, type, attrs) {\n var this$1 = this;\n if ( to === void 0 ) to = from;\n\n if (!type.isTextblock) { throw new RangeError(\"Type given to setBlockType should be a textblock\") }\n var mapFrom = this.steps.length;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(this$1.doc, this$1.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n this$1.clearIncompatible(this$1.mapping.slice(mapFrom).map(pos, 1), type);\n var mapping = this$1.mapping.slice(mapFrom);\n var startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n this$1.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1,\n new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false\n }\n });\n return this\n};\n\nfunction canChangeType(doc, pos, type) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type)\n}\n\n// :: (number, ?NodeType, ?Object, ?[Mark]) → this\n// Change the type, attributes, and/or marks of the node at `pos`.\n// When `type` isn't given, the existing node type is preserved,\nTransform.prototype.setNodeMarkup = function(pos, type, attrs, marks) {\n var node = this.doc.nodeAt(pos);\n if (!node) { throw new RangeError(\"No node at given position\") }\n if (!type) { type = node.type; }\n var newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n { return this.replaceWith(pos, pos + node.nodeSize, newNode) }\n\n if (!type.validContent(node.content))\n { throw new RangeError(\"Invalid content for node type \" + type.name) }\n\n return this.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1,\n new Slice(Fragment.from(newNode), 0, 0), 1, true))\n};\n\n// :: (Node, number, number, ?[?{type: NodeType, attrs: ?Object}]) → bool\n// Check whether splitting at the given position is allowed.\nfunction canSplit(doc, pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = doc.resolve(pos), base = $pos.depth - depth;\n var innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n { return false }\n for (var d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n var node = $pos.node(d), index$1 = $pos.index(d);\n if (node.type.spec.isolating) { return false }\n var rest = node.content.cutByIndex(index$1, node.childCount);\n var after = (typesAfter && typesAfter[i]) || node;\n if (after != node) { rest = rest.replaceChild(0, after.type.create(after.attrs)); }\n if (!node.canReplace(index$1 + 1, node.childCount) || !after.type.validContent(rest))\n { return false }\n }\n var index = $pos.indexAfter(base);\n var baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type)\n}\n\n// :: (number, ?number, ?[?{type: NodeType, attrs: ?Object}]) → this\n// Split the node at the given position, and optionally, if `depth` is\n// greater than one, any number of nodes above that. By default, the\n// parts split off will inherit the node type of the original node.\n// This can be changed by passing an array of types and attributes to\n// use after the split.\nTransform.prototype.split = function(pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = this.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (var d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n var typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n return this.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true))\n};\n\n// :: (Node, number) → bool\n// Test whether the blocks before and after a given position can be\n// joined.\nfunction canJoin(doc, pos) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1)\n}\n\nfunction joinable(a, b) {\n return a && b && !a.isLeaf && a.canAppend(b)\n}\n\n// :: (Node, number, ?number) → ?number\n// Find an ancestor of the given position that can be joined to the\n// block before (or after if `dir` is positive). Returns the joinable\n// point, if any.\nfunction joinPoint(doc, pos, dir) {\n if ( dir === void 0 ) dir = -1;\n\n var $pos = doc.resolve(pos);\n for (var d = $pos.depth;; d--) {\n var before = (void 0), after = (void 0), index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n } else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n } else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1)) { return pos }\n if (d == 0) { break }\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\n\n// :: (number, ?number) → this\n// Join the blocks around the given position. If depth is 2, their\n// last and first siblings are also joined, and so on.\nTransform.prototype.join = function(pos, depth) {\n if ( depth === void 0 ) depth = 1;\n\n var step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n return this.step(step)\n};\n\n// :: (Node, number, NodeType) → ?number\n// Try to find a point where a node of the given type can be inserted\n// near `pos`, by searching up the node hierarchy when `pos` itself\n// isn't a valid place but is at the start or end of a node. Return\n// null if no position was found.\nfunction insertPoint(doc, pos, nodeType) {\n var $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType)) { return pos }\n\n if ($pos.parentOffset == 0)\n { for (var d = $pos.depth - 1; d >= 0; d--) {\n var index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType)) { return $pos.before(d + 1) }\n if (index > 0) { return null }\n } }\n if ($pos.parentOffset == $pos.parent.content.size)\n { for (var d$1 = $pos.depth - 1; d$1 >= 0; d$1--) {\n var index$1 = $pos.indexAfter(d$1);\n if ($pos.node(d$1).canReplaceWith(index$1, index$1, nodeType)) { return $pos.after(d$1 + 1) }\n if (index$1 < $pos.node(d$1).childCount) { return null }\n } }\n}\n\n// :: (Node, number, Slice) → ?number\n// Finds a position at or around the given position where the given\n// slice can be inserted. Will look at parent nodes' nearest boundary\n// and try there, even if the original position wasn't directly at the\n// start or end of that node. Returns null when no position was found.\nfunction dropPoint(doc, pos, slice) {\n var $pos = doc.resolve(pos);\n if (!slice.content.size) { return pos }\n var content = slice.content;\n for (var i = 0; i < slice.openStart; i++) { content = content.firstChild.content; }\n for (var pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (var d = $pos.depth; d >= 0; d--) {\n var bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n var insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n var parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n } else {\n var wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n { return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1) }\n }\n }\n return null\n}\n\nfunction mapFragment(fragment, f, parent) {\n var mapped = [];\n for (var i = 0; i < fragment.childCount; i++) {\n var child = fragment.child(i);\n if (child.content.size) { child = child.copy(mapFragment(child.content, f, child)); }\n if (child.isInline) { child = f(child, parent, i); }\n mapped.push(child);\n }\n return Fragment.fromArray(mapped)\n}\n\n// ::- Add a mark to all inline content between two positions.\nvar AddMarkStep = /*@__PURE__*/(function (Step) {\n function AddMarkStep(from, to, mark) {\n Step.call(this);\n // :: number\n // The start of the marked range.\n this.from = from;\n // :: number\n // The end of the marked range.\n this.to = to;\n // :: Mark\n // The mark to add.\n this.mark = mark;\n }\n\n if ( Step ) AddMarkStep.__proto__ = Step;\n AddMarkStep.prototype = Object.create( Step && Step.prototype );\n AddMarkStep.prototype.constructor = AddMarkStep;\n\n AddMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n var parent = $from.node($from.sharedDepth(this.to));\n var slice = new Slice(mapFragment(oldSlice.content, function (node, parent) {\n if (!node.isAtom || !parent.type.allowsMarkType(this$1.mark.type)) { return node }\n return node.mark(this$1.mark.addToSet(node.marks))\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n AddMarkStep.prototype.invert = function invert () {\n return new RemoveMarkStep(this.from, this.to, this.mark)\n };\n\n AddMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new AddMarkStep(from.pos, to.pos, this.mark)\n };\n\n AddMarkStep.prototype.merge = function merge (other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new AddMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n AddMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n AddMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\") }\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return AddMarkStep;\n}(Step));\n\nStep.jsonID(\"addMark\", AddMarkStep);\n\n// ::- Remove a mark from all inline content between two positions.\nvar RemoveMarkStep = /*@__PURE__*/(function (Step) {\n function RemoveMarkStep(from, to, mark) {\n Step.call(this);\n // :: number\n // The start of the unmarked range.\n this.from = from;\n // :: number\n // The end of the unmarked range.\n this.to = to;\n // :: Mark\n // The mark to remove.\n this.mark = mark;\n }\n\n if ( Step ) RemoveMarkStep.__proto__ = Step;\n RemoveMarkStep.prototype = Object.create( Step && Step.prototype );\n RemoveMarkStep.prototype.constructor = RemoveMarkStep;\n\n RemoveMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to);\n var slice = new Slice(mapFragment(oldSlice.content, function (node) {\n return node.mark(this$1.mark.removeFromSet(node.marks))\n }), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n RemoveMarkStep.prototype.invert = function invert () {\n return new AddMarkStep(this.from, this.to, this.mark)\n };\n\n RemoveMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new RemoveMarkStep(from.pos, to.pos, this.mark)\n };\n\n RemoveMarkStep.prototype.merge = function merge (other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new RemoveMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n RemoveMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n RemoveMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\") }\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return RemoveMarkStep;\n}(Step));\n\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n\n// :: (number, number, Mark) → this\n// Add the given mark to the inline content between `from` and `to`.\nTransform.prototype.addMark = function(from, to, mark) {\n var this$1 = this;\n\n var removed = [], added = [], removing = null, adding = null;\n this.doc.nodesBetween(from, to, function (node, pos, parent) {\n if (!node.isInline) { return }\n var marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n var start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n var newSet = mark.addToSet(marks);\n\n for (var i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n { removing.to = end; }\n else\n { removed.push(removing = new RemoveMarkStep(start, end, marks[i])); }\n }\n }\n\n if (adding && adding.to == start)\n { adding.to = end; }\n else\n { added.push(adding = new AddMarkStep(start, end, mark)); }\n }\n });\n\n removed.forEach(function (s) { return this$1.step(s); });\n added.forEach(function (s) { return this$1.step(s); });\n return this\n};\n\n// :: (number, number, ?union) → this\n// Remove marks from inline nodes between `from` and `to`. When `mark`\n// is a single mark, remove precisely that mark. When it is a mark type,\n// remove all marks of that type. When it is null, remove all marks of\n// any type.\nTransform.prototype.removeMark = function(from, to, mark) {\n var this$1 = this;\n if ( mark === void 0 ) mark = null;\n\n var matched = [], step = 0;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (!node.isInline) { return }\n step++;\n var toRemove = null;\n if (mark instanceof MarkType) {\n var set = node.marks, found;\n while (found = mark.isInSet(set)) {\n(toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n } else if (mark) {\n if (mark.isInSet(node.marks)) { toRemove = [mark]; }\n } else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n var end = Math.min(pos + node.nodeSize, to);\n for (var i = 0; i < toRemove.length; i++) {\n var style = toRemove[i], found$1 = (void 0);\n for (var j = 0; j < matched.length; j++) {\n var m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style)) { found$1 = m; }\n }\n if (found$1) {\n found$1.to = end;\n found$1.step = step;\n } else {\n matched.push({style: style, from: Math.max(pos, from), to: end, step: step});\n }\n }\n }\n });\n matched.forEach(function (m) { return this$1.step(new RemoveMarkStep(m.from, m.to, m.style)); });\n return this\n};\n\n// :: (number, NodeType, ?ContentMatch) → this\n// Removes all marks and nodes from the content of the node at `pos`\n// that don't match the given new parent node type. Accepts an\n// optional starting [content match](#model.ContentMatch) as third\n// argument.\nTransform.prototype.clearIncompatible = function(pos, parentType, match) {\n if ( match === void 0 ) match = parentType.contentMatch;\n\n var node = this.doc.nodeAt(pos);\n var delSteps = [], cur = pos + 1;\n for (var i = 0; i < node.childCount; i++) {\n var child = node.child(i), end = cur + child.nodeSize;\n var allowed = match.matchType(child.type, child.attrs);\n if (!allowed) {\n delSteps.push(new ReplaceStep(cur, end, Slice.empty));\n } else {\n match = allowed;\n for (var j = 0; j < child.marks.length; j++) { if (!parentType.allowsMarkType(child.marks[j].type))\n { this.step(new RemoveMarkStep(cur, end, child.marks[j])); } }\n }\n cur = end;\n }\n if (!match.validEnd) {\n var fill = match.fillBefore(Fragment.empty, true);\n this.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (var i$1 = delSteps.length - 1; i$1 >= 0; i$1--) { this.step(delSteps[i$1]); }\n return this\n};\n\n// :: (Node, number, ?number, ?Slice) → ?Step\n// ‘Fit’ a slice into a given position in the document, producing a\n// [step](#transform.Step) that inserts it. Will return null if\n// there's no meaningful way to insert the slice here, or inserting it\n// would be a no-op (an empty slice over an empty range).\nfunction replaceStep(doc, from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n if (from == to && !slice.size) { return null }\n\n var $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice)) { return new ReplaceStep(from, to, slice) }\n return new Fitter($from, $to, slice).fit()\n}\n\n// :: (number, ?number, ?Slice) → this\n// Replace the part of the document between `from` and `to` with the\n// given `slice`.\nTransform.prototype.replace = function(from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n var step = replaceStep(this.doc, from, to, slice);\n if (step) { this.step(step); }\n return this\n};\n\n// :: (number, number, union) → this\n// Replace the given range with the given content, which may be a\n// fragment, node, or array of nodes.\nTransform.prototype.replaceWith = function(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the content between the given positions.\nTransform.prototype.delete = function(from, to) {\n return this.replace(from, to, Slice.empty)\n};\n\n// :: (number, union) → this\n// Insert the given content at the given position.\nTransform.prototype.insert = function(pos, content) {\n return this.replaceWith(pos, pos, content)\n};\n\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content)\n}\n\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nvar Fitter = function Fitter($from, $to, slice) {\n this.$to = $to;\n this.$from = $from;\n this.unplaced = slice;\n\n this.frontier = [];\n for (var i = 0; i <= $from.depth; i++) {\n var node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n\n this.placed = Fragment.empty;\n for (var i$1 = $from.depth; i$1 > 0; i$1--)\n { this.placed = Fragment.from($from.node(i$1).copy(this.placed)); }\n};\n\nvar prototypeAccessors$1 = { depth: { configurable: true } };\n\nprototypeAccessors$1.depth.get = function () { return this.frontier.length - 1 };\n\nFitter.prototype.fit = function fit () {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n var fit = this.findFittable();\n if (fit) { this.placeNodes(fit); }\n else { this.openMore() || this.dropNode(); }\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n var moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n var $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to) { return null }\n\n // If closing to `$to` succeeded, create a step\n var content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--; openEnd--;\n }\n var slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n { return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize) }\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n { return new ReplaceStep($from.pos, $to.pos, slice) }\n};\n\n// Find a position on the start spine of `this.unplaced` that has\n// content that can be moved somewhere on the frontier. Returns two\n// depths, one for the slice and one for the frontier.\nFitter.prototype.findFittable = function findFittable () {\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (var pass = 1; pass <= 2; pass++) {\n for (var sliceDepth = this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n var fragment = (void 0), parent = (void 0);\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n } else {\n fragment = this.unplaced.content;\n }\n var first = fragment.firstChild;\n for (var frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n var ref = this.frontier[frontierDepth];\n var type = ref.type;\n var match = ref.match;\n var wrap = (void 0), inject = (void 0);\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : type.compatibleContent(parent.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, inject: inject} }\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, wrap: wrap} }\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type)) { break }\n }\n }\n }\n};\n\nFitter.prototype.openMore = function openMore () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf) { return false }\n this.unplaced = new Slice(content, openStart + 1,\n Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true\n};\n\nFitter.prototype.dropNode = function dropNode () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n var openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1,\n openAtEnd ? openStart - 1 : openEnd);\n } else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n};\n\n// : ({sliceDepth: number, frontierDepth: number, parent: ?Node, wrap: ?[NodeType], inject: ?Fragment})\n// Move content from the unplaced slice at `sliceDepth` to the\n// frontier node at `frontierDepth`. Close that frontier node when\n// applicable.\nFitter.prototype.placeNodes = function placeNodes (ref) {\n var sliceDepth = ref.sliceDepth;\n var frontierDepth = ref.frontierDepth;\n var parent = ref.parent;\n var inject = ref.inject;\n var wrap = ref.wrap;\n\n while (this.depth > frontierDepth) { this.closeFrontierNode(); }\n if (wrap) { for (var i = 0; i < wrap.length; i++) { this.openFrontierNode(wrap[i]); } }\n\n var slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n var openStart = slice.openStart - sliceDepth;\n var taken = 0, add = [];\n var ref$1 = this.frontier[frontierDepth];\n var match = ref$1.match;\n var type = ref$1.type;\n if (inject) {\n for (var i$1 = 0; i$1 < inject.childCount; i$1++) { add.push(inject.child(i$1)); }\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n var openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n var next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches) { break }\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0,\n taken == fragment.childCount ? openEndCount : -1));\n }\n }\n var toEnd = taken == fragment.childCount;\n if (!toEnd) { openEndCount = -1; }\n\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n { this.closeFrontierNode(); }\n\n // Add new frontier nodes for any open nodes at the end.\n for (var i$2 = 0, cur = fragment; i$2 < openEndCount; i$2++) {\n var node = cur.lastChild;\n this.frontier.push({type: node.type, match: node.contentMatchAt(node.childCount)});\n cur = node.content;\n }\n\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1),\n sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n};\n\nFitter.prototype.mustMoveInline = function mustMoveInline () {\n if (!this.$to.parent.isTextblock || this.$to.end() == this.$to.pos) { return -1 }\n var top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth)) { return -1 }\n\n var ref = this.$to;\n var depth = ref.depth;\n var after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth)) { ++after; }\n return after\n};\n\nFitter.prototype.findCloseLevel = function findCloseLevel ($to) {\n scan: for (var i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n var ref = this.frontier[i];\n var match = ref.match;\n var type = ref.type;\n var dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n var fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit) { continue }\n for (var d = i - 1; d >= 0; d--) {\n var ref$1 = this.frontier[d];\n var match$1 = ref$1.match;\n var type$1 = ref$1.type;\n var matches = contentAfterFits($to, d, type$1, match$1, true);\n if (!matches || matches.childCount) { continue scan }\n }\n return {depth: i, fit: fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to}\n }\n};\n\nFitter.prototype.close = function close ($to) {\n var close = this.findCloseLevel($to);\n if (!close) { return null }\n\n while (this.depth > close.depth) { this.closeFrontierNode(); }\n if (close.fit.childCount) { this.placed = addToFragment(this.placed, close.depth, close.fit); }\n $to = close.move;\n for (var d = close.depth + 1; d <= $to.depth; d++) {\n var node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to\n};\n\nFitter.prototype.openFrontierNode = function openFrontierNode (type, attrs, content) {\n var top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({type: type, match: type.contentMatch});\n};\n\nFitter.prototype.closeFrontierNode = function closeFrontierNode () {\n var open = this.frontier.pop();\n var add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount) { this.placed = addToFragment(this.placed, this.frontier.length, add); }\n};\n\nObject.defineProperties( Fitter.prototype, prototypeAccessors$1 );\n\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0) { return fragment.cutByIndex(count) }\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)))\n}\n\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0) { return fragment.append(content) }\n return fragment.replaceChild(fragment.childCount - 1,\n fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)))\n}\n\nfunction contentAt(fragment, depth) {\n for (var i = 0; i < depth; i++) { fragment = fragment.firstChild.content; }\n return fragment\n}\n\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0) { return node }\n var frag = node.content;\n if (openStart > 1)\n { frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0)); }\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0) { frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true)); }\n }\n return node.copy(frag)\n}\n\nfunction contentAfterFits($to, depth, type, match, open) {\n var node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type)) { return null }\n var fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null\n}\n\nfunction invalidMarks(type, fragment, start) {\n for (var i = start; i < fragment.childCount; i++)\n { if (!type.allowsMarks(fragment.child(i).marks)) { return true } }\n return false\n}\n\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent\n}\n\n// :: (number, number, Slice) → this\n// Replace a range of the document with a given slice, using `from`,\n// `to`, and the slice's [`openStart`](#model.Slice.openStart) property\n// as hints, rather than fixed start and end points. This method may\n// grow the replaced area or close open nodes in the slice in order to\n// get a fit that is more in line with WYSIWYG expectations, by\n// dropping fully covered parent nodes of the replaced region when\n// they are marked [non-defining as context](#model.NodeSpec.definingAsContext), or\n// including an open parent node from the slice that _is_ marked as\n// [defining its content](#model.NodeSpec.definingForContent).\n//\n// This is the method, for example, to handle paste. The similar\n// [`replace`](#transform.Transform.replace) method is a more\n// primitive tool which will _not_ move the start and end of its given\n// range, and is useful in situations where you need more precise\n// control over what happens.\nTransform.prototype.replaceRange = function(from, to, slice) {\n if (!slice.size) { return this.deleteRange(from, to) }\n\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n { return this.step(new ReplaceStep(from, to, slice)) }\n\n var targetDepths = coveredDepths($from, this.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0) { targetDepths.pop(); }\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n var preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (var d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n var spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating) { break }\n if (targetDepths.indexOf(d) > -1) { preferredTarget = d; }\n else if ($from.before(d) == pos) { targetDepths.splice(1, 0, -d); }\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n var preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n\n var leftNodes = [], preferredDepth = slice.openStart;\n for (var content = slice.content, i = 0;; i++) {\n var node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart) { break }\n content = node.content;\n }\n // Back up if the node directly above openStart, or the node above\n // that separated only by a non-defining textblock node, is defining.\n if (preferredDepth > 0 && definesContent(leftNodes[preferredDepth - 1].type) &&\n $from.node(preferredTargetIndex).type != leftNodes[preferredDepth - 1].type)\n { preferredDepth -= 1; }\n else if (preferredDepth >= 2 &&\n leftNodes[preferredDepth - 1].isTextblock &&\n definesContent(leftNodes[preferredDepth - 2].type) &&\n $from.node(preferredTargetIndex).type != leftNodes[preferredDepth - 2].type)\n { preferredDepth -= 2; }\n\n for (var j = slice.openStart; j >= 0; j--) {\n var openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n var insert = leftNodes[openDepth];\n if (!insert) { continue }\n for (var i$1 = 0; i$1 < targetDepths.length; i$1++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n var targetDepth = targetDepths[(i$1 + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) { expand = false; targetDepth = -targetDepth; }\n var parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n { return this.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to,\n new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth),\n openDepth, slice.openEnd)) }\n }\n }\n\n var startSteps = this.steps.length;\n for (var i$2 = targetDepths.length - 1; i$2 >= 0; i$2--) {\n this.replace(from, to, slice);\n if (this.steps.length > startSteps) { break }\n var depth = targetDepths[i$2];\n if (depth < 0) { continue }\n from = $from.before(depth); to = $to.after(depth);\n }\n return this\n};\n\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n var first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n var match = parent.contentMatchAt(0);\n var start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment\n}\n\n// :: (number, number, Node) → this\n// Replace the given range with a node, but use `from` and `to` as\n// hints, rather than precise positions. When from and to are the same\n// and are at the start or end of a parent node in which the given\n// node doesn't fit, this method may _move_ them out towards a parent\n// that does allow the given node to be placed. When the given range\n// completely covers a parent node, this method may completely replace\n// that parent node.\nTransform.prototype.replaceRangeWith = function(from, to, node) {\n if (!node.isInline && from == to && this.doc.resolve(from).parent.content.size) {\n var point = insertPoint(this.doc, from, node.type);\n if (point != null) { from = to = point; }\n }\n return this.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the given range, expanding it to cover fully covered\n// parent nodes until a valid replace is found.\nTransform.prototype.deleteRange = function(from, to) {\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n var covered = coveredDepths($from, $to);\n for (var i = 0; i < covered.length; i++) {\n var depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n { return this.delete($from.start(depth), $to.end(depth)) }\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n { return this.delete($from.before(depth), $to.after(depth)) }\n }\n for (var d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n { return this.delete($from.before(d), to) }\n }\n return this.delete(from, to)\n};\n\n// : (ResolvedPos, ResolvedPos) → [number]\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n var result = [], minDepth = Math.min($from.depth, $to.depth);\n for (var d = minDepth; d >= 0; d--) {\n var start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating) { break }\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n { result.push(d); }\n }\n return result\n}\n\nexport { AddMarkStep, MapResult, Mapping, RemoveMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n//# sourceMappingURL=index.es.js.map\n","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nvar orderedmap = OrderedMap;\n\nexport default orderedmap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (var i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n { return a.childCount == b.childCount ? null : pos }\n\n var childA = a.child(i), childB = b.child(i);\n if (childA == childB) { pos += childA.nodeSize; continue }\n\n if (!childA.sameMarkup(childB)) { return pos }\n\n if (childA.isText && childA.text != childB.text) {\n for (var j = 0; childA.text[j] == childB.text[j]; j++)\n { pos++; }\n return pos\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null) { return inner }\n }\n pos += childA.nodeSize;\n }\n}\n\nfunction findDiffEnd(a, b, posA, posB) {\n for (var iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n { return iA == iB ? null : {a: posA, b: posB} }\n\n var childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size; posB -= size;\n continue\n }\n\n if (!childA.sameMarkup(childB)) { return {a: posA, b: posB} }\n\n if (childA.isText && childA.text != childB.text) {\n var same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++; posA--; posB--;\n }\n return {a: posA, b: posB}\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner) { return inner }\n }\n posA -= size; posB -= size;\n }\n}\n\n// ::- A fragment represents a node's collection of child nodes.\n//\n// Like nodes, fragments are persistent data structures, and you\n// should not mutate them or their content. Rather, you create new\n// instances whenever needed. The API tries to make this easy.\nvar Fragment = function Fragment(content, size) {\n this.content = content;\n // :: number\n // The size of the fragment, which is the total of the size of its\n // content nodes.\n this.size = size || 0;\n if (size == null) { for (var i = 0; i < content.length; i++)\n { this.size += content[i].nodeSize; } }\n};\n\nvar prototypeAccessors = { firstChild: { configurable: true },lastChild: { configurable: true },childCount: { configurable: true } };\n\n// :: (number, number, (node: Node, start: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes between the given two\n// positions (relative to start of this fragment). Doesn't descend\n// into a node when the callback returns `false`.\nFragment.prototype.nodesBetween = function nodesBetween (from, to, f, nodeStart, parent) {\n if ( nodeStart === void 0 ) nodeStart = 0;\n\n for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent, i) !== false && child.content.size) {\n var start = pos + 1;\n child.nodesBetween(Math.max(0, from - start),\n Math.min(child.content.size, to - start),\n f, nodeStart + start);\n }\n pos = end;\n }\n};\n\n// :: ((node: Node, pos: number, parent: Node) → ?bool)\n// Call the given callback for every descendant node. The callback\n// may return `false` to prevent traversal of a given node's children.\nFragment.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.size, f);\n};\n\n// :: (number, number, ?string, ?union) → string\n// Extract the text between `from` and `to`. See the same method on\n// [`Node`](#model.Node.textBetween).\nFragment.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n var text = \"\", separated = true;\n this.nodesBetween(from, to, function (node, pos) {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos);\n separated = !blockSeparator;\n } else if (node.isLeaf && leafText) {\n text += typeof leafText === 'function' ? leafText(node): leafText;\n separated = !blockSeparator;\n } else if (!separated && node.isBlock) {\n text += blockSeparator;\n separated = true;\n }\n }, 0);\n return text\n};\n\n// :: (Fragment) → Fragment\n// Create a new fragment containing the combined content of this\n// fragment and the other.\nFragment.prototype.append = function append (other) {\n if (!other.size) { return this }\n if (!this.size) { return other }\n var last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++) { content.push(other.content[i]); }\n return new Fragment(content, this.size + other.size)\n};\n\n// :: (number, ?number) → Fragment\n// Cut out the sub-fragment between the two given positions.\nFragment.prototype.cut = function cut (from, to) {\n if (to == null) { to = this.size; }\n if (from == 0 && to == this.size) { return this }\n var result = [], size = 0;\n if (to > from) { for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n { child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos)); }\n else\n { child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1)); }\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n } }\n return new Fragment(result, size)\n};\n\nFragment.prototype.cutByIndex = function cutByIndex (from, to) {\n if (from == to) { return Fragment.empty }\n if (from == 0 && to == this.content.length) { return this }\n return new Fragment(this.content.slice(from, to))\n};\n\n// :: (number, Node) → Fragment\n// Create a new fragment in which the node at the given index is\n// replaced by the given node.\nFragment.prototype.replaceChild = function replaceChild (index, node) {\n var current = this.content[index];\n if (current == node) { return this }\n var copy = this.content.slice();\n var size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by prepending the given node to this\n// fragment.\nFragment.prototype.addToStart = function addToStart (node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by appending the given node to this\n// fragment.\nFragment.prototype.addToEnd = function addToEnd (node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize)\n};\n\n// :: (Fragment) → bool\n// Compare this fragment to another one.\nFragment.prototype.eq = function eq (other) {\n if (this.content.length != other.content.length) { return false }\n for (var i = 0; i < this.content.length; i++)\n { if (!this.content[i].eq(other.content[i])) { return false } }\n return true\n};\n\n// :: ?Node\n// The first child of the fragment, or `null` if it is empty.\nprototypeAccessors.firstChild.get = function () { return this.content.length ? this.content[0] : null };\n\n// :: ?Node\n// The last child of the fragment, or `null` if it is empty.\nprototypeAccessors.lastChild.get = function () { return this.content.length ? this.content[this.content.length - 1] : null };\n\n// :: number\n// The number of child nodes in this fragment.\nprototypeAccessors.childCount.get = function () { return this.content.length };\n\n// :: (number) → Node\n// Get the child node at the given index. Raise an error when the\n// index is out of range.\nFragment.prototype.child = function child (index) {\n var found = this.content[index];\n if (!found) { throw new RangeError(\"Index \" + index + \" out of range for \" + this) }\n return found\n};\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nFragment.prototype.maybeChild = function maybeChild (index) {\n return this.content[index]\n};\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nFragment.prototype.forEach = function forEach (f) {\n for (var i = 0, p = 0; i < this.content.length; i++) {\n var child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n};\n\n// :: (Fragment) → ?number\n// Find the first position at which this fragment and another\n// fragment differ, or `null` if they are the same.\nFragment.prototype.findDiffStart = function findDiffStart$1 (other, pos) {\n if ( pos === void 0 ) pos = 0;\n\n return findDiffStart(this, other, pos)\n};\n\n// :: (Fragment) → ?{a: number, b: number}\n// Find the first position, searching from the end, at which this\n// fragment and the given fragment differ, or `null` if they are the\n// same. Since this position will not be the same in both nodes, an\n// object with two separate positions is returned.\nFragment.prototype.findDiffEnd = function findDiffEnd$1 (other, pos, otherPos) {\n if ( pos === void 0 ) pos = this.size;\n if ( otherPos === void 0 ) otherPos = other.size;\n\n return findDiffEnd(this, other, pos, otherPos)\n};\n\n// : (number, ?number) → {index: number, offset: number}\n// Find the index and inner offset corresponding to a given relative\n// position in this fragment. The result object will be reused\n// (overwritten) the next time the function is called. (Not public.)\nFragment.prototype.findIndex = function findIndex (pos, round) {\n if ( round === void 0 ) round = -1;\n\n if (pos == 0) { return retIndex(0, pos) }\n if (pos == this.size) { return retIndex(this.content.length, pos) }\n if (pos > this.size || pos < 0) { throw new RangeError((\"Position \" + pos + \" outside of fragment (\" + (this) + \")\")) }\n for (var i = 0, curPos = 0;; i++) {\n var cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0) { return retIndex(i + 1, end) }\n return retIndex(i, curPos)\n }\n curPos = end;\n }\n};\n\n// :: () → string\n// Return a debugging string that describes this fragment.\nFragment.prototype.toString = function toString () { return \"<\" + this.toStringInner() + \">\" };\n\nFragment.prototype.toStringInner = function toStringInner () { return this.content.join(\", \") };\n\n// :: () → ?Object\n// Create a JSON-serializeable representation of this fragment.\nFragment.prototype.toJSON = function toJSON () {\n return this.content.length ? this.content.map(function (n) { return n.toJSON(); }) : null\n};\n\n// :: (Schema, ?Object) → Fragment\n// Deserialize a fragment from its JSON representation.\nFragment.fromJSON = function fromJSON (schema, value) {\n if (!value) { return Fragment.empty }\n if (!Array.isArray(value)) { throw new RangeError(\"Invalid input for Fragment.fromJSON\") }\n return new Fragment(value.map(schema.nodeFromJSON))\n};\n\n// :: ([Node]) → Fragment\n// Build a fragment from an array of nodes. Ensures that adjacent\n// text nodes with the same marks are joined together.\nFragment.fromArray = function fromArray (array) {\n if (!array.length) { return Fragment.empty }\n var joined, size = 0;\n for (var i = 0; i < array.length; i++) {\n var node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined) { joined = array.slice(0, i); }\n joined[joined.length - 1] = node.withText(joined[joined.length - 1].text + node.text);\n } else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size)\n};\n\n// :: (?union) → Fragment\n// Create a fragment from something that can be interpreted as a set\n// of nodes. For `null`, it returns the empty fragment. For a\n// fragment, the fragment itself. For a node or array of nodes, a\n// fragment containing those nodes.\nFragment.from = function from (nodes) {\n if (!nodes) { return Fragment.empty }\n if (nodes instanceof Fragment) { return nodes }\n if (Array.isArray(nodes)) { return this.fromArray(nodes) }\n if (nodes.attrs) { return new Fragment([nodes], nodes.nodeSize) }\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"))\n};\n\nObject.defineProperties( Fragment.prototype, prototypeAccessors );\n\nvar found = {index: 0, offset: 0};\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found\n}\n\n// :: Fragment\n// An empty fragment. Intended to be reused whenever a node doesn't\n// contain anything (rather than allocating a new empty fragment for\n// each leaf node).\nFragment.empty = new Fragment([], 0);\n\nfunction compareDeep(a, b) {\n if (a === b) { return true }\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\")) { return false }\n var array = Array.isArray(a);\n if (Array.isArray(b) != array) { return false }\n if (array) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!compareDeep(a[i], b[i])) { return false } }\n } else {\n for (var p in a) { if (!(p in b) || !compareDeep(a[p], b[p])) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n }\n return true\n}\n\n// ::- A mark is a piece of information that can be attached to a node,\n// such as it being emphasized, in code font, or a link. It has a type\n// and optionally a set of attributes that provide further information\n// (such as the target of the link). Marks are created through a\n// `Schema`, which controls which types exist and which\n// attributes they have.\nvar Mark = function Mark(type, attrs) {\n // :: MarkType\n // The type of this mark.\n this.type = type;\n // :: Object\n // The attributes associated with this mark.\n this.attrs = attrs;\n};\n\n// :: ([Mark]) → [Mark]\n// Given a set of marks, create a new set which contains this one as\n// well, in the right position. If this mark is already in the set,\n// the set itself is returned. If any marks that are set to be\n// [exclusive](#model.MarkSpec.excludes) with this mark are present,\n// those are replaced by this one.\nMark.prototype.addToSet = function addToSet (set) {\n var copy, placed = false;\n for (var i = 0; i < set.length; i++) {\n var other = set[i];\n if (this.eq(other)) { return set }\n if (this.type.excludes(other.type)) {\n if (!copy) { copy = set.slice(0, i); }\n } else if (other.type.excludes(this.type)) {\n return set\n } else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy) { copy = set.slice(0, i); }\n copy.push(this);\n placed = true;\n }\n if (copy) { copy.push(other); }\n }\n }\n if (!copy) { copy = set.slice(); }\n if (!placed) { copy.push(this); }\n return copy\n};\n\n// :: ([Mark]) → [Mark]\n// Remove this mark from the given set, returning a new set. If this\n// mark is not in the set, the set itself is returned.\nMark.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i]))\n { return set.slice(0, i).concat(set.slice(i + 1)) } }\n return set\n};\n\n// :: ([Mark]) → bool\n// Test whether this mark is in the given set of marks.\nMark.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i])) { return true } }\n return false\n};\n\n// :: (Mark) → bool\n// Test whether this mark has the same type and attributes as\n// another mark.\nMark.prototype.eq = function eq (other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs))\n};\n\n// :: () → Object\n// Convert this mark to a JSON-serializeable representation.\nMark.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n return obj\n};\n\n// :: (Schema, Object) → Mark\nMark.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Mark.fromJSON\") }\n var type = schema.marks[json.type];\n if (!type) { throw new RangeError((\"There is no mark type \" + (json.type) + \" in this schema\")) }\n return type.create(json.attrs)\n};\n\n// :: ([Mark], [Mark]) → bool\n// Test whether two sets of marks are identical.\nMark.sameSet = function sameSet (a, b) {\n if (a == b) { return true }\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++)\n { if (!a[i].eq(b[i])) { return false } }\n return true\n};\n\n// :: (?union) → [Mark]\n// Create a properly sorted mark set from null, a single mark, or an\n// unsorted array of marks.\nMark.setFrom = function setFrom (marks) {\n if (!marks || marks.length == 0) { return Mark.none }\n if (marks instanceof Mark) { return [marks] }\n var copy = marks.slice();\n copy.sort(function (a, b) { return a.type.rank - b.type.rank; });\n return copy\n};\n\n// :: [Mark] The empty set of marks.\nMark.none = [];\n\n// ReplaceError:: class extends Error\n// Error type raised by [`Node.replace`](#model.Node.replace) when\n// given an invalid replacement.\n\nfunction ReplaceError(message) {\n var err = Error.call(this, message);\n err.__proto__ = ReplaceError.prototype;\n return err\n}\n\nReplaceError.prototype = Object.create(Error.prototype);\nReplaceError.prototype.constructor = ReplaceError;\nReplaceError.prototype.name = \"ReplaceError\";\n\n// ::- A slice represents a piece cut out of a larger document. It\n// stores not only a fragment, but also the depth up to which nodes on\n// both side are ‘open’ (cut through).\nvar Slice = function Slice(content, openStart, openEnd) {\n // :: Fragment The slice's content.\n this.content = content;\n // :: number The open depth at the start.\n this.openStart = openStart;\n // :: number The open depth at the end.\n this.openEnd = openEnd;\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\n// :: number\n// The size this slice would add when inserted into a document.\nprototypeAccessors$1.size.get = function () {\n return this.content.size - this.openStart - this.openEnd\n};\n\nSlice.prototype.insertAt = function insertAt (pos, fragment) {\n var content = insertInto(this.content, pos + this.openStart, fragment, null);\n return content && new Slice(content, this.openStart, this.openEnd)\n};\n\nSlice.prototype.removeBetween = function removeBetween (from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd)\n};\n\n// :: (Slice) → bool\n// Tests whether this slice is equal to another slice.\nSlice.prototype.eq = function eq (other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd\n};\n\nSlice.prototype.toString = function toString () {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\"\n};\n\n// :: () → ?Object\n// Convert a slice to a JSON-serializable representation.\nSlice.prototype.toJSON = function toJSON () {\n if (!this.content.size) { return null }\n var json = {content: this.content.toJSON()};\n if (this.openStart > 0) { json.openStart = this.openStart; }\n if (this.openEnd > 0) { json.openEnd = this.openEnd; }\n return json\n};\n\n// :: (Schema, ?Object) → Slice\n// Deserialize a slice from its JSON representation.\nSlice.fromJSON = function fromJSON (schema, json) {\n if (!json) { return Slice.empty }\n var openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n { throw new RangeError(\"Invalid input for Slice.fromJSON\") }\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd)\n};\n\n// :: (Fragment, ?bool) → Slice\n// Create a slice from a fragment by taking the maximum possible\n// open value on both side of the fragment.\nSlice.maxOpen = function maxOpen (fragment, openIsolating) {\n if ( openIsolating === void 0 ) openIsolating=true;\n\n var openStart = 0, openEnd = 0;\n for (var n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild) { openStart++; }\n for (var n$1 = fragment.lastChild; n$1 && !n$1.isLeaf && (openIsolating || !n$1.type.spec.isolating); n$1 = n$1.lastChild) { openEnd++; }\n return new Slice(fragment, openStart, openEnd)\n};\n\nObject.defineProperties( Slice.prototype, prototypeAccessors$1 );\n\nfunction removeRange(content, from, to) {\n var ref = content.findIndex(from);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n var ref$1 = content.findIndex(to);\n var indexTo = ref$1.index;\n var offsetTo = ref$1.offset;\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText) { throw new RangeError(\"Removing non-flat range\") }\n return content.cut(0, from).append(content.cut(to))\n }\n if (index != indexTo) { throw new RangeError(\"Removing non-flat range\") }\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)))\n}\n\nfunction insertInto(content, dist, insert, parent) {\n var ref = content.findIndex(dist);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert)) { return null }\n return content.cut(0, dist).append(insert).append(content.cut(dist))\n }\n var inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner))\n}\n\n// :: Slice\n// The empty slice.\nSlice.empty = new Slice(Fragment.empty, 0, 0);\n\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n { throw new ReplaceError(\"Inserted content deeper than insertion position\") }\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n { throw new ReplaceError(\"Inconsistent open depths\") }\n return replaceOuter($from, $to, slice, 0)\n}\n\nfunction replaceOuter($from, $to, slice, depth) {\n var index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n var inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner))\n } else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth))\n } else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n var parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)))\n } else {\n var ref = prepareSliceForReplace(slice, $from);\n var start = ref.start;\n var end = ref.end;\n return close(node, replaceThreeWay($from, start, end, $to, depth))\n }\n}\n\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n { throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name) }\n}\n\nfunction joinable($before, $after, depth) {\n var node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node\n}\n\nfunction addNode(child, target) {\n var last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n { target[last] = child.withText(target[last].text + child.text); }\n else\n { target.push(child); }\n}\n\nfunction addRange($start, $end, depth, target) {\n var node = ($end || $start).node(depth);\n var startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n } else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (var i = startIndex; i < endIndex; i++) { addNode(node.child(i), target); }\n if ($end && $end.depth == depth && $end.textOffset)\n { addNode($end.nodeBefore, target); }\n}\n\nfunction close(node, content) {\n if (!node.type.validContent(content))\n { throw new ReplaceError(\"Invalid content for node \" + node.type.name) }\n return node.copy(content)\n}\n\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n var openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n var openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n\n var content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n } else {\n if (openStart)\n { addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content); }\n addRange($start, $end, depth, content);\n if (openEnd)\n { addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content); }\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction replaceTwoWay($from, $to, depth) {\n var content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n var type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction prepareSliceForReplace(slice, $along) {\n var extra = $along.depth - slice.openStart, parent = $along.node(extra);\n var node = parent.copy(slice.content);\n for (var i = extra - 1; i >= 0; i--)\n { node = $along.node(i).copy(Fragment.from(node)); }\n return {start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra)}\n}\n\n// ::- You can [_resolve_](#model.Node.resolve) a position to get more\n// information about it. Objects of this class represent such a\n// resolved position, providing various pieces of context information,\n// and some helper methods.\n//\n// Throughout this interface, methods that take an optional `depth`\n// parameter will interpret undefined as `this.depth` and negative\n// numbers as `this.depth + value`.\nvar ResolvedPos = function ResolvedPos(pos, path, parentOffset) {\n // :: number The position that was resolved.\n this.pos = pos;\n this.path = path;\n // :: number\n // The number of levels the parent node is from the root. If this\n // position points directly into the root node, it is 0. If it\n // points into a top-level paragraph, 1, and so on.\n this.depth = path.length / 3 - 1;\n // :: number The offset this position has into its parent node.\n this.parentOffset = parentOffset;\n};\n\nvar prototypeAccessors$2 = { parent: { configurable: true },doc: { configurable: true },textOffset: { configurable: true },nodeAfter: { configurable: true },nodeBefore: { configurable: true } };\n\nResolvedPos.prototype.resolveDepth = function resolveDepth (val) {\n if (val == null) { return this.depth }\n if (val < 0) { return this.depth + val }\n return val\n};\n\n// :: Node\n// The parent node that the position points into. Note that even if\n// a position points into a text node, that node is not considered\n// the parent—text nodes are ‘flat’ in this model, and have no content.\nprototypeAccessors$2.parent.get = function () { return this.node(this.depth) };\n\n// :: Node\n// The root node in which the position was resolved.\nprototypeAccessors$2.doc.get = function () { return this.node(0) };\n\n// :: (?number) → Node\n// The ancestor node at the given level. `p.node(p.depth)` is the\n// same as `p.parent`.\nResolvedPos.prototype.node = function node (depth) { return this.path[this.resolveDepth(depth) * 3] };\n\n// :: (?number) → number\n// The index into the ancestor at the given level. If this points at\n// the 3rd node in the 2nd paragraph on the top level, for example,\n// `p.index(0)` is 1 and `p.index(1)` is 2.\nResolvedPos.prototype.index = function index (depth) { return this.path[this.resolveDepth(depth) * 3 + 1] };\n\n// :: (?number) → number\n// The index pointing after this position into the ancestor at the\n// given level.\nResolvedPos.prototype.indexAfter = function indexAfter (depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1)\n};\n\n// :: (?number) → number\n// The (absolute) position at the start of the node at the given\n// level.\nResolvedPos.prototype.start = function start (depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1\n};\n\n// :: (?number) → number\n// The (absolute) position at the end of the node at the given\n// level.\nResolvedPos.prototype.end = function end (depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size\n};\n\n// :: (?number) → number\n// The (absolute) position directly before the wrapping node at the\n// given level, or, when `depth` is `this.depth + 1`, the original\n// position.\nResolvedPos.prototype.before = function before (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position before the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1]\n};\n\n// :: (?number) → number\n// The (absolute) position directly after the wrapping node at the\n// given level, or the original position when `depth` is `this.depth + 1`.\nResolvedPos.prototype.after = function after (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position after the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize\n};\n\n// :: number\n// When this position points into a text node, this returns the\n// distance between the position and the start of the text node.\n// Will be zero for positions that point between nodes.\nprototypeAccessors$2.textOffset.get = function () { return this.pos - this.path[this.path.length - 1] };\n\n// :: ?Node\n// Get the node directly after the position, if any. If the position\n// points into a text node, only the part of that node after the\n// position is returned.\nprototypeAccessors$2.nodeAfter.get = function () {\n var parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount) { return null }\n var dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child\n};\n\n// :: ?Node\n// Get the node directly before the position, if any. If the\n// position points into a text node, only the part of that node\n// before the position is returned.\nprototypeAccessors$2.nodeBefore.get = function () {\n var index = this.index(this.depth);\n var dOff = this.pos - this.path[this.path.length - 1];\n if (dOff) { return this.parent.child(index).cut(0, dOff) }\n return index == 0 ? null : this.parent.child(index - 1)\n};\n\n// :: (number, ?number) → number\n// Get the position at the given index in the parent node at the\n// given depth (which defaults to `this.depth`).\nResolvedPos.prototype.posAtIndex = function posAtIndex (index, depth) {\n depth = this.resolveDepth(depth);\n var node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (var i = 0; i < index; i++) { pos += node.child(i).nodeSize; }\n return pos\n};\n\n// :: () → [Mark]\n// Get the marks at this position, factoring in the surrounding\n// marks' [`inclusive`](#model.MarkSpec.inclusive) property. If the\n// position is at the start of a non-empty node, the marks of the\n// node after it (if any) are returned.\nResolvedPos.prototype.marks = function marks () {\n var parent = this.parent, index = this.index();\n\n // In an empty parent, return the empty array\n if (parent.content.size == 0) { return Mark.none }\n\n // When inside a text node, just return the text node's marks\n if (this.textOffset) { return parent.child(index).marks }\n\n var main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) { var tmp = main; main = other; other = tmp; }\n\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n var marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n\n return marks\n};\n\n// :: (ResolvedPos) → ?[Mark]\n// Get the marks after the current position, if any, except those\n// that are non-inclusive and not present at position `$end`. This\n// is mostly useful for getting the set of marks to preserve after a\n// deletion. Will return `null` if this position is at the end of\n// its parent node or its parent node isn't a textblock (in which\n// case no marks should be preserved).\nResolvedPos.prototype.marksAcross = function marksAcross ($end) {\n var after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline) { return null }\n\n var marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n return marks\n};\n\n// :: (number) → number\n// The depth up to which this position and the given (non-resolved)\n// position share the same parent nodes.\nResolvedPos.prototype.sharedDepth = function sharedDepth (pos) {\n for (var depth = this.depth; depth > 0; depth--)\n { if (this.start(depth) <= pos && this.end(depth) >= pos) { return depth } }\n return 0\n};\n\n// :: (?ResolvedPos, ?(Node) → bool) → ?NodeRange\n// Returns a range based on the place where this position and the\n// given position diverge around block content. If both point into\n// the same textblock, for example, a range around that textblock\n// will be returned. If they point into different blocks, the range\n// around those blocks in their shared ancestor is returned. You can\n// pass in an optional predicate that will be called with a parent\n// node to see if a range into that parent is acceptable.\nResolvedPos.prototype.blockRange = function blockRange (other, pred) {\n if ( other === void 0 ) other = this;\n\n if (other.pos < this.pos) { return other.blockRange(this) }\n for (var d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n { if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n { return new NodeRange(this, other, d) } }\n};\n\n// :: (ResolvedPos) → bool\n// Query whether the given position shares the same parent node.\nResolvedPos.prototype.sameParent = function sameParent (other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the greater of this and the given position.\nResolvedPos.prototype.max = function max (other) {\n return other.pos > this.pos ? other : this\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the smaller of this and the given position.\nResolvedPos.prototype.min = function min (other) {\n return other.pos < this.pos ? other : this\n};\n\nResolvedPos.prototype.toString = function toString () {\n var str = \"\";\n for (var i = 1; i <= this.depth; i++)\n { str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1); }\n return str + \":\" + this.parentOffset\n};\n\nResolvedPos.resolve = function resolve (doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size)) { throw new RangeError(\"Position \" + pos + \" out of range\") }\n var path = [];\n var start = 0, parentOffset = pos;\n for (var node = doc;;) {\n var ref = node.content.findIndex(parentOffset);\n var index = ref.index;\n var offset = ref.offset;\n var rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem) { break }\n node = node.child(index);\n if (node.isText) { break }\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset)\n};\n\nResolvedPos.resolveCached = function resolveCached (doc, pos) {\n for (var i = 0; i < resolveCache.length; i++) {\n var cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc) { return cached }\n }\n var result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result\n};\n\nObject.defineProperties( ResolvedPos.prototype, prototypeAccessors$2 );\n\nvar resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n\n// ::- Represents a flat range of content, i.e. one that starts and\n// ends in the same node.\nvar NodeRange = function NodeRange($from, $to, depth) {\n // :: ResolvedPos A resolved position along the start of the\n // content. May have a `depth` greater than this object's `depth`\n // property, since these are the positions that were used to\n // compute the range, not re-resolved positions directly at its\n // boundaries.\n this.$from = $from;\n // :: ResolvedPos A position along the end of the content. See\n // caveat for [`$from`](#model.NodeRange.$from).\n this.$to = $to;\n // :: number The depth of the node that this range points into.\n this.depth = depth;\n};\n\nvar prototypeAccessors$1$1 = { start: { configurable: true },end: { configurable: true },parent: { configurable: true },startIndex: { configurable: true },endIndex: { configurable: true } };\n\n// :: number The position at the start of the range.\nprototypeAccessors$1$1.start.get = function () { return this.$from.before(this.depth + 1) };\n// :: number The position at the end of the range.\nprototypeAccessors$1$1.end.get = function () { return this.$to.after(this.depth + 1) };\n\n// :: Node The parent node that the range points into.\nprototypeAccessors$1$1.parent.get = function () { return this.$from.node(this.depth) };\n// :: number The start index of the range in the parent node.\nprototypeAccessors$1$1.startIndex.get = function () { return this.$from.index(this.depth) };\n// :: number The end index of the range in the parent node.\nprototypeAccessors$1$1.endIndex.get = function () { return this.$to.indexAfter(this.depth) };\n\nObject.defineProperties( NodeRange.prototype, prototypeAccessors$1$1 );\n\nvar emptyAttrs = Object.create(null);\n\n// ::- This class represents a node in the tree that makes up a\n// ProseMirror document. So a document is an instance of `Node`, with\n// children that are also instances of `Node`.\n//\n// Nodes are persistent data structures. Instead of changing them, you\n// create new ones with the content you want. Old ones keep pointing\n// at the old document shape. This is made cheaper by sharing\n// structure between the old and new data as much as possible, which a\n// tree shape like this (without back pointers) makes easy.\n//\n// **Do not** directly mutate the properties of a `Node` object. See\n// [the guide](/docs/guide/#doc) for more information.\nvar Node = function Node(type, attrs, content, marks) {\n // :: NodeType\n // The type of node that this is.\n this.type = type;\n\n // :: Object\n // An object mapping attribute names to values. The kind of\n // attributes allowed and required are\n // [determined](#model.NodeSpec.attrs) by the node type.\n this.attrs = attrs;\n\n // :: Fragment\n // A container holding the node's children.\n this.content = content || Fragment.empty;\n\n // :: [Mark]\n // The marks (things like whether it is emphasized or part of a\n // link) applied to this node.\n this.marks = marks || Mark.none;\n};\n\nvar prototypeAccessors$3 = { nodeSize: { configurable: true },childCount: { configurable: true },textContent: { configurable: true },firstChild: { configurable: true },lastChild: { configurable: true },isBlock: { configurable: true },isTextblock: { configurable: true },inlineContent: { configurable: true },isInline: { configurable: true },isText: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true } };\n\n// text:: ?string\n// For text nodes, this contains the node's text content.\n\n// :: number\n// The size of this node, as defined by the integer-based [indexing\n// scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n// amount of characters. For other leaf nodes, it is one. For\n// non-leaf nodes, it is the size of the content plus two (the start\n// and end token).\nprototypeAccessors$3.nodeSize.get = function () { return this.isLeaf ? 1 : 2 + this.content.size };\n\n// :: number\n// The number of children that the node has.\nprototypeAccessors$3.childCount.get = function () { return this.content.childCount };\n\n// :: (number) → Node\n// Get the child node at the given index. Raises an error when the\n// index is out of range.\nNode.prototype.child = function child (index) { return this.content.child(index) };\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nNode.prototype.maybeChild = function maybeChild (index) { return this.content.maybeChild(index) };\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nNode.prototype.forEach = function forEach (f) { this.content.forEach(f); };\n\n// :: (number, number, (node: Node, pos: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes recursively between\n// the given two positions that are relative to start of this node's\n// content. The callback is invoked with the node, its\n// parent-relative position, its parent node, and its child index.\n// When the callback returns false for a given node, that node's\n// children will not be recursed over. The last parameter can be\n// used to specify a starting position to count from.\nNode.prototype.nodesBetween = function nodesBetween (from, to, f, startPos) {\n if ( startPos === void 0 ) startPos = 0;\n\n this.content.nodesBetween(from, to, f, startPos, this);\n};\n\n// :: ((node: Node, pos: number, parent: Node, index: number) → ?bool)\n// Call the given callback for every descendant node. Doesn't\n// descend into a node when the callback returns `false`.\nNode.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.content.size, f);\n};\n\n// :: string\n// Concatenates all the text nodes found in this fragment and its\n// children.\nprototypeAccessors$3.textContent.get = function () { return this.textBetween(0, this.content.size, \"\") };\n\n// :: (number, number, ?string, ?union string>) → string\n// Get all text between positions `from` and `to`. When\n// `blockSeparator` is given, it will be inserted to separate text\n// from different block nodes. When `leafText` is given, it'll be\n// inserted for every non-text leaf node encountered.\nNode.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText)\n};\n\n// :: ?Node\n// Returns this node's first child, or `null` if there are no\n// children.\nprototypeAccessors$3.firstChild.get = function () { return this.content.firstChild };\n\n// :: ?Node\n// Returns this node's last child, or `null` if there are no\n// children.\nprototypeAccessors$3.lastChild.get = function () { return this.content.lastChild };\n\n// :: (Node) → bool\n// Test whether two nodes represent the same piece of document.\nNode.prototype.eq = function eq (other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content))\n};\n\n// :: (Node) → bool\n// Compare the markup (type, attributes, and marks) of this node to\n// those of another. Returns `true` if both have the same markup.\nNode.prototype.sameMarkup = function sameMarkup (other) {\n return this.hasMarkup(other.type, other.attrs, other.marks)\n};\n\n// :: (NodeType, ?Object, ?[Mark]) → bool\n// Check whether this node's markup correspond to the given type,\n// attributes, and marks.\nNode.prototype.hasMarkup = function hasMarkup (type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none)\n};\n\n// :: (?Fragment) → Node\n// Create a new node with the same markup as this node, containing\n// the given content (or empty, if no content is given).\nNode.prototype.copy = function copy (content) {\n if ( content === void 0 ) content = null;\n\n if (content == this.content) { return this }\n return new this.constructor(this.type, this.attrs, content, this.marks)\n};\n\n// :: ([Mark]) → Node\n// Create a copy of this node, with the given set of marks instead\n// of the node's own marks.\nNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new this.constructor(this.type, this.attrs, this.content, marks)\n};\n\n// :: (number, ?number) → Node\n// Create a copy of this node with only the content between the\n// given positions. If `to` is not given, it defaults to the end of\n// the node.\nNode.prototype.cut = function cut (from, to) {\n if (from == 0 && to == this.content.size) { return this }\n return this.copy(this.content.cut(from, to))\n};\n\n// :: (number, ?number) → Slice\n// Cut out the part of the document between the given positions, and\n// return it as a `Slice` object.\nNode.prototype.slice = function slice (from, to, includeParents) {\n if ( to === void 0 ) to = this.content.size;\n if ( includeParents === void 0 ) includeParents = false;\n\n if (from == to) { return Slice.empty }\n\n var $from = this.resolve(from), $to = this.resolve(to);\n var depth = includeParents ? 0 : $from.sharedDepth(to);\n var start = $from.start(depth), node = $from.node(depth);\n var content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth)\n};\n\n// :: (number, number, Slice) → Node\n// Replace the part of the document between the given positions with\n// the given slice. The slice must 'fit', meaning its open sides\n// must be able to connect to the surrounding content, and its\n// content nodes must be valid children for the node they are placed\n// into. If any of this is violated, an error of type\n// [`ReplaceError`](#model.ReplaceError) is thrown.\nNode.prototype.replace = function replace$1 (from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice)\n};\n\n// :: (number) → ?Node\n// Find the node directly after the given position.\nNode.prototype.nodeAt = function nodeAt (pos) {\n for (var node = this;;) {\n var ref = node.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n node = node.maybeChild(index);\n if (!node) { return null }\n if (offset == pos || node.isText) { return node }\n pos -= offset + 1;\n }\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node after the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childAfter = function childAfter (pos) {\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n return {node: this.content.maybeChild(index), index: index, offset: offset}\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node before the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childBefore = function childBefore (pos) {\n if (pos == 0) { return {node: null, index: 0, offset: 0} }\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n if (offset < pos) { return {node: this.content.child(index), index: index, offset: offset} }\n var node = this.content.child(index - 1);\n return {node: node, index: index - 1, offset: offset - node.nodeSize}\n};\n\n// :: (number) → ResolvedPos\n// Resolve the given position in the document, returning an\n// [object](#model.ResolvedPos) with information about its context.\nNode.prototype.resolve = function resolve (pos) { return ResolvedPos.resolveCached(this, pos) };\n\nNode.prototype.resolveNoCache = function resolveNoCache (pos) { return ResolvedPos.resolve(this, pos) };\n\n// :: (number, number, union) → bool\n// Test whether a given mark or mark type occurs in this document\n// between the two given positions.\nNode.prototype.rangeHasMark = function rangeHasMark (from, to, type) {\n var found = false;\n if (to > from) { this.nodesBetween(from, to, function (node) {\n if (type.isInSet(node.marks)) { found = true; }\n return !found\n }); }\n return found\n};\n\n// :: bool\n// True when this is a block (non-inline node)\nprototypeAccessors$3.isBlock.get = function () { return this.type.isBlock };\n\n// :: bool\n// True when this is a textblock node, a block node with inline\n// content.\nprototypeAccessors$3.isTextblock.get = function () { return this.type.isTextblock };\n\n// :: bool\n// True when this node allows inline content.\nprototypeAccessors$3.inlineContent.get = function () { return this.type.inlineContent };\n\n// :: bool\n// True when this is an inline node (a text node or a node that can\n// appear among text).\nprototypeAccessors$3.isInline.get = function () { return this.type.isInline };\n\n// :: bool\n// True when this is a text node.\nprototypeAccessors$3.isText.get = function () { return this.type.isText };\n\n// :: bool\n// True when this is a leaf node.\nprototypeAccessors$3.isLeaf.get = function () { return this.type.isLeaf };\n\n// :: bool\n// True when this is an atom, i.e. when it does not have directly\n// editable content. This is usually the same as `isLeaf`, but can\n// be configured with the [`atom` property](#model.NodeSpec.atom) on\n// a node's spec (typically used when the node is displayed as an\n// uneditable [node view](#view.NodeView)).\nprototypeAccessors$3.isAtom.get = function () { return this.type.isAtom };\n\n// :: () → string\n// Return a string representation of this node for debugging\n// purposes.\nNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n var name = this.type.name;\n if (this.content.size)\n { name += \"(\" + this.content.toStringInner() + \")\"; }\n return wrapMarks(this.marks, name)\n};\n\n// :: (number) → ContentMatch\n// Get the content match in this node at the given index.\nNode.prototype.contentMatchAt = function contentMatchAt (index) {\n var match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match) { throw new Error(\"Called contentMatchAt on a node with invalid content\") }\n return match\n};\n\n// :: (number, number, ?Fragment, ?number, ?number) → bool\n// Test whether replacing the range between `from` and `to` (by\n// child index) with the given replacement fragment (which defaults\n// to the empty fragment) would leave the node's content valid. You\n// can optionally pass `start` and `end` indices into the\n// replacement fragment.\nNode.prototype.canReplace = function canReplace (from, to, replacement, start, end) {\n if ( replacement === void 0 ) replacement = Fragment.empty;\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = replacement.childCount;\n\n var one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n var two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd) { return false }\n for (var i = start; i < end; i++) { if (!this.type.allowsMarks(replacement.child(i).marks)) { return false } }\n return true\n};\n\n// :: (number, number, NodeType, ?[Mark]) → bool\n// Test whether replacing the range `from` to `to` (by index) with a\n// node of the given type would leave the node's content valid.\nNode.prototype.canReplaceWith = function canReplaceWith (from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks)) { return false }\n var start = this.contentMatchAt(from).matchType(type);\n var end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false\n};\n\n// :: (Node) → bool\n// Test whether the given node's content could be appended to this\n// node. If that node is empty, this will only return true if there\n// is at least one node type that can appear in both nodes (to avoid\n// merging completely incompatible nodes).\nNode.prototype.canAppend = function canAppend (other) {\n if (other.content.size) { return this.canReplace(this.childCount, this.childCount, other.content) }\n else { return this.type.compatibleContent(other.type) }\n};\n\n// :: ()\n// Check whether this node and its descendants conform to the\n// schema, and raise error when they do not.\nNode.prototype.check = function check () {\n if (!this.type.validContent(this.content))\n { throw new RangeError((\"Invalid content for node \" + (this.type.name) + \": \" + (this.content.toString().slice(0, 50)))) }\n var copy = Mark.none;\n for (var i = 0; i < this.marks.length; i++) { copy = this.marks[i].addToSet(copy); }\n if (!Mark.sameSet(copy, this.marks))\n { throw new RangeError((\"Invalid collection of marks for node \" + (this.type.name) + \": \" + (this.marks.map(function (m) { return m.type.name; })))) }\n this.content.forEach(function (node) { return node.check(); });\n};\n\n// :: () → Object\n// Return a JSON-serializeable representation of this node.\nNode.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n if (this.content.size)\n { obj.content = this.content.toJSON(); }\n if (this.marks.length)\n { obj.marks = this.marks.map(function (n) { return n.toJSON(); }); }\n return obj\n};\n\n// :: (Schema, Object) → Node\n// Deserialize a node from its JSON representation.\nNode.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Node.fromJSON\") }\n var marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks)) { throw new RangeError(\"Invalid mark data for Node.fromJSON\") }\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\") { throw new RangeError(\"Invalid text node in JSON\") }\n return schema.text(json.text, marks)\n }\n var content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks)\n};\n\nObject.defineProperties( Node.prototype, prototypeAccessors$3 );\n\nvar TextNode = /*@__PURE__*/(function (Node) {\n function TextNode(type, attrs, content, marks) {\n Node.call(this, type, attrs, null, marks);\n\n if (!content) { throw new RangeError(\"Empty text nodes are not allowed\") }\n\n this.text = content;\n }\n\n if ( Node ) TextNode.__proto__ = Node;\n TextNode.prototype = Object.create( Node && Node.prototype );\n TextNode.prototype.constructor = TextNode;\n\n var prototypeAccessors$1 = { textContent: { configurable: true },nodeSize: { configurable: true } };\n\n TextNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n return wrapMarks(this.marks, JSON.stringify(this.text))\n };\n\n prototypeAccessors$1.textContent.get = function () { return this.text };\n\n TextNode.prototype.textBetween = function textBetween (from, to) { return this.text.slice(from, to) };\n\n prototypeAccessors$1.nodeSize.get = function () { return this.text.length };\n\n TextNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks)\n };\n\n TextNode.prototype.withText = function withText (text) {\n if (text == this.text) { return this }\n return new TextNode(this.type, this.attrs, text, this.marks)\n };\n\n TextNode.prototype.cut = function cut (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.text.length;\n\n if (from == 0 && to == this.text.length) { return this }\n return this.withText(this.text.slice(from, to))\n };\n\n TextNode.prototype.eq = function eq (other) {\n return this.sameMarkup(other) && this.text == other.text\n };\n\n TextNode.prototype.toJSON = function toJSON () {\n var base = Node.prototype.toJSON.call(this);\n base.text = this.text;\n return base\n };\n\n Object.defineProperties( TextNode.prototype, prototypeAccessors$1 );\n\n return TextNode;\n}(Node));\n\nfunction wrapMarks(marks, str) {\n for (var i = marks.length - 1; i >= 0; i--)\n { str = marks[i].type.name + \"(\" + str + \")\"; }\n return str\n}\n\n// ::- Instances of this class represent a match state of a node\n// type's [content expression](#model.NodeSpec.content), and can be\n// used to find out whether further content matches here, and whether\n// a given position is a valid end of the node.\nvar ContentMatch = function ContentMatch(validEnd) {\n // :: bool\n // True when this match state represents a valid end of the node.\n this.validEnd = validEnd;\n this.next = [];\n this.wrapCache = [];\n};\n\nvar prototypeAccessors$4 = { inlineContent: { configurable: true },defaultType: { configurable: true },edgeCount: { configurable: true } };\n\nContentMatch.parse = function parse (string, nodeTypes) {\n var stream = new TokenStream(string, nodeTypes);\n if (stream.next == null) { return ContentMatch.empty }\n var expr = parseExpr(stream);\n if (stream.next) { stream.err(\"Unexpected trailing text\"); }\n var match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match\n};\n\n// :: (NodeType) → ?ContentMatch\n// Match a node type, returning a match after that node if\n// successful.\nContentMatch.prototype.matchType = function matchType (type) {\n for (var i = 0; i < this.next.length; i += 2)\n { if (this.next[i] == type) { return this.next[i + 1] } }\n return null\n};\n\n// :: (Fragment, ?number, ?number) → ?ContentMatch\n// Try to match a fragment. Returns the resulting match when\n// successful.\nContentMatch.prototype.matchFragment = function matchFragment (frag, start, end) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = frag.childCount;\n\n var cur = this;\n for (var i = start; cur && i < end; i++)\n { cur = cur.matchType(frag.child(i).type); }\n return cur\n};\n\nprototypeAccessors$4.inlineContent.get = function () {\n var first = this.next[0];\n return first ? first.isInline : false\n};\n\n// :: ?NodeType\n// Get the first matching node type at this match position that can\n// be generated.\nprototypeAccessors$4.defaultType.get = function () {\n for (var i = 0; i < this.next.length; i += 2) {\n var type = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs())) { return type }\n }\n};\n\nContentMatch.prototype.compatible = function compatible (other) {\n for (var i = 0; i < this.next.length; i += 2)\n { for (var j = 0; j < other.next.length; j += 2)\n { if (this.next[i] == other.next[j]) { return true } } }\n return false\n};\n\n// :: (Fragment, bool, ?number) → ?Fragment\n// Try to match the given fragment, and if that fails, see if it can\n// be made to match by inserting nodes in front of it. When\n// successful, return a fragment of inserted nodes (which may be\n// empty if nothing had to be inserted). When `toEnd` is true, only\n// return a fragment if the resulting match goes to the end of the\n// content expression.\nContentMatch.prototype.fillBefore = function fillBefore (after, toEnd, startIndex) {\n if ( toEnd === void 0 ) toEnd = false;\n if ( startIndex === void 0 ) startIndex = 0;\n\n var seen = [this];\n function search(match, types) {\n var finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n { return Fragment.from(types.map(function (tp) { return tp.createAndFill(); })) }\n\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i], next = match.next[i + 1];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n var found = search(next, types.concat(type));\n if (found) { return found }\n }\n }\n }\n\n return search(this, [])\n};\n\n// :: (NodeType) → ?[NodeType]\n// Find a set of wrapping node types that would allow a node of the\n// given type to appear at this position. The result may be empty\n// (when it fits directly) and will be null when no such wrapping\n// exists.\nContentMatch.prototype.findWrapping = function findWrapping (target) {\n for (var i = 0; i < this.wrapCache.length; i += 2)\n { if (this.wrapCache[i] == target) { return this.wrapCache[i + 1] } }\n var computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed\n};\n\nContentMatch.prototype.computeWrapping = function computeWrapping (target) {\n var seen = Object.create(null), active = [{match: this, type: null, via: null}];\n while (active.length) {\n var current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n var result = [];\n for (var obj = current; obj.type; obj = obj.via)\n { result.push(obj.type); }\n return result.reverse()\n }\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || match.next[i + 1].validEnd)) {\n active.push({match: type.contentMatch, type: type, via: current});\n seen[type.name] = true;\n }\n }\n }\n};\n\n// :: number\n// The number of outgoing edges this node has in the finite\n// automaton that describes the content expression.\nprototypeAccessors$4.edgeCount.get = function () {\n return this.next.length >> 1\n};\n\n// :: (number) → {type: NodeType, next: ContentMatch}\n// Get the _n_​th outgoing edge from this node in the finite\n// automaton that describes the content expression.\nContentMatch.prototype.edge = function edge (n) {\n var i = n << 1;\n if (i >= this.next.length) { throw new RangeError((\"There's no \" + n + \"th edge in this content match\")) }\n return {type: this.next[i], next: this.next[i + 1]}\n};\n\nContentMatch.prototype.toString = function toString () {\n var seen = [];\n function scan(m) {\n seen.push(m);\n for (var i = 1; i < m.next.length; i += 2)\n { if (seen.indexOf(m.next[i]) == -1) { scan(m.next[i]); } }\n }\n scan(this);\n return seen.map(function (m, i) {\n var out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (var i$1 = 0; i$1 < m.next.length; i$1 += 2)\n { out += (i$1 ? \", \" : \"\") + m.next[i$1].name + \"->\" + seen.indexOf(m.next[i$1 + 1]); }\n return out\n }).join(\"\\n\")\n};\n\nObject.defineProperties( ContentMatch.prototype, prototypeAccessors$4 );\n\nContentMatch.empty = new ContentMatch(true);\n\nvar TokenStream = function TokenStream(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\") { this.tokens.pop(); }\n if (this.tokens[0] == \"\") { this.tokens.shift(); }\n};\n\nvar prototypeAccessors$1$2 = { next: { configurable: true } };\n\nprototypeAccessors$1$2.next.get = function () { return this.tokens[this.pos] };\n\nTokenStream.prototype.eat = function eat (tok) { return this.next == tok && (this.pos++ || true) };\n\nTokenStream.prototype.err = function err (str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\") };\n\nObject.defineProperties( TokenStream.prototype, prototypeAccessors$1$2 );\n\nfunction parseExpr(stream) {\n var exprs = [];\n do { exprs.push(parseExprSeq(stream)); }\n while (stream.eat(\"|\"))\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n}\n\nfunction parseExprSeq(stream) {\n var exprs = [];\n do { exprs.push(parseExprSubscript(stream)); }\n while (stream.next && stream.next != \")\" && stream.next != \"|\")\n return exprs.length == 1 ? exprs[0] : {type: \"seq\", exprs: exprs}\n}\n\nfunction parseExprSubscript(stream) {\n var expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n { expr = {type: \"plus\", expr: expr}; }\n else if (stream.eat(\"*\"))\n { expr = {type: \"star\", expr: expr}; }\n else if (stream.eat(\"?\"))\n { expr = {type: \"opt\", expr: expr}; }\n else if (stream.eat(\"{\"))\n { expr = parseExprRange(stream, expr); }\n else { break }\n }\n return expr\n}\n\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next)) { stream.err(\"Expected number, got '\" + stream.next + \"'\"); }\n var result = Number(stream.next);\n stream.pos++;\n return result\n}\n\nfunction parseExprRange(stream, expr) {\n var min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\") { max = parseNum(stream); }\n else { max = -1; }\n }\n if (!stream.eat(\"}\")) { stream.err(\"Unclosed braced range\"); }\n return {type: \"range\", min: min, max: max, expr: expr}\n}\n\nfunction resolveName(stream, name) {\n var types = stream.nodeTypes, type = types[name];\n if (type) { return [type] }\n var result = [];\n for (var typeName in types) {\n var type$1 = types[typeName];\n if (type$1.groups.indexOf(name) > -1) { result.push(type$1); }\n }\n if (result.length == 0) { stream.err(\"No node type or group '\" + name + \"' found\"); }\n return result\n}\n\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n var expr = parseExpr(stream);\n if (!stream.eat(\")\")) { stream.err(\"Missing closing paren\"); }\n return expr\n } else if (!/\\W/.test(stream.next)) {\n var exprs = resolveName(stream, stream.next).map(function (type) {\n if (stream.inline == null) { stream.inline = type.isInline; }\n else if (stream.inline != type.isInline) { stream.err(\"Mixing inline and block content\"); }\n return {type: \"name\", value: type}\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n } else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n\n// The code below helps compile a regular-expression-like language\n// into a deterministic finite automaton. For a good introduction to\n// these concepts, see https://swtch.com/~rsc/regexp/regexp1.html\n\n// : (Object) → [[{term: ?any, to: number}]]\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n var nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa\n\n function node() { return nfa.push([]) - 1 }\n function edge(from, to, term) {\n var edge = {term: term, to: to};\n nfa[from].push(edge);\n return edge\n }\n function connect(edges, to) { edges.forEach(function (edge) { return edge.to = to; }); }\n\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce(function (out, expr) { return out.concat(compile(expr, from)); }, [])\n } else if (expr.type == \"seq\") {\n for (var i = 0;; i++) {\n var next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1) { return next }\n connect(next, from = node());\n }\n } else if (expr.type == \"star\") {\n var loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)]\n } else if (expr.type == \"plus\") {\n var loop$1 = node();\n connect(compile(expr.expr, from), loop$1);\n connect(compile(expr.expr, loop$1), loop$1);\n return [edge(loop$1)]\n } else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from))\n } else if (expr.type == \"range\") {\n var cur = from;\n for (var i$1 = 0; i$1 < expr.min; i$1++) {\n var next$1 = node();\n connect(compile(expr.expr, cur), next$1);\n cur = next$1;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n } else {\n for (var i$2 = expr.min; i$2 < expr.max; i$2++) {\n var next$2 = node();\n edge(cur, next$2);\n connect(compile(expr.expr, cur), next$2);\n cur = next$2;\n }\n }\n return [edge(cur)]\n } else if (expr.type == \"name\") {\n return [edge(from, null, expr.value)]\n }\n }\n}\n\nfunction cmp(a, b) { return b - a }\n\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n var result = [];\n scan(node);\n return result.sort(cmp)\n\n function scan(node) {\n var edges = nfa[node];\n if (edges.length == 1 && !edges[0].term) { return scan(edges[0].to) }\n result.push(node);\n for (var i = 0; i < edges.length; i++) {\n var ref = edges[i];\n var term = ref.term;\n var to = ref.to;\n if (!term && result.indexOf(to) == -1) { scan(to); }\n }\n }\n}\n\n// : ([[{term: ?any, to: number}]]) → ContentMatch\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n var labeled = Object.create(null);\n return explore(nullFrom(nfa, 0))\n\n function explore(states) {\n var out = [];\n states.forEach(function (node) {\n nfa[node].forEach(function (ref) {\n var term = ref.term;\n var to = ref.to;\n\n if (!term) { return }\n var known = out.indexOf(term), set = known > -1 && out[known + 1];\n nullFrom(nfa, to).forEach(function (node) {\n if (!set) { out.push(term, set = []); }\n if (set.indexOf(node) == -1) { set.push(node); }\n });\n });\n });\n var state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (var i = 0; i < out.length; i += 2) {\n var states$1 = out[i + 1].sort(cmp);\n state.next.push(out[i], labeled[states$1.join(\",\")] || explore(states$1));\n }\n return state\n }\n}\n\nfunction checkForDeadEnds(match, stream) {\n for (var i = 0, work = [match]; i < work.length; i++) {\n var state = work[i], dead = !state.validEnd, nodes = [];\n for (var j = 0; j < state.next.length; j += 2) {\n var node = state.next[j], next = state.next[j + 1];\n nodes.push(node.name);\n if (dead && !(node.isText || node.hasRequiredAttrs())) { dead = false; }\n if (work.indexOf(next) == -1) { work.push(next); }\n }\n if (dead) { stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\"); }\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n var defaults = Object.create(null);\n for (var attrName in attrs) {\n var attr = attrs[attrName];\n if (!attr.hasDefault) { return null }\n defaults[attrName] = attr.default;\n }\n return defaults\n}\n\nfunction computeAttrs(attrs, value) {\n var built = Object.create(null);\n for (var name in attrs) {\n var given = value && value[name];\n if (given === undefined) {\n var attr = attrs[name];\n if (attr.hasDefault) { given = attr.default; }\n else { throw new RangeError(\"No value supplied for attribute \" + name) }\n }\n built[name] = given;\n }\n return built\n}\n\nfunction initAttrs(attrs) {\n var result = Object.create(null);\n if (attrs) { for (var name in attrs) { result[name] = new Attribute(attrs[name]); } }\n return result\n}\n\n// ::- Node types are objects allocated once per `Schema` and used to\n// [tag](#model.Node.type) `Node` instances. They contain information\n// about the node type, such as its name and what kind of node it\n// represents.\nvar NodeType = function NodeType(name, schema, spec) {\n // :: string\n // The name the node type has in this schema.\n this.name = name;\n\n // :: Schema\n // A link back to the `Schema` the node type belongs to.\n this.schema = schema;\n\n // :: NodeSpec\n // The spec that this type is based on\n this.spec = spec;\n\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n\n this.defaultAttrs = defaultAttrs(this.attrs);\n\n // :: ContentMatch\n // The starting match of the node type's content expression.\n this.contentMatch = null;\n\n // : ?[MarkType]\n // The set of marks allowed in this node. `null` means all marks\n // are allowed.\n this.markSet = null;\n\n // :: bool\n // True if this node type has inline content.\n this.inlineContent = null;\n\n // :: bool\n // True if this is a block type\n this.isBlock = !(spec.inline || name == \"text\");\n\n // :: bool\n // True if this is the text node type.\n this.isText = name == \"text\";\n};\n\nvar prototypeAccessors$5 = { isInline: { configurable: true },isTextblock: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true },whitespace: { configurable: true } };\n\n// :: bool\n// True if this is an inline type.\nprototypeAccessors$5.isInline.get = function () { return !this.isBlock };\n\n// :: bool\n// True if this is a textblock type, a block that contains inline\n// content.\nprototypeAccessors$5.isTextblock.get = function () { return this.isBlock && this.inlineContent };\n\n// :: bool\n// True for node types that allow no content.\nprototypeAccessors$5.isLeaf.get = function () { return this.contentMatch == ContentMatch.empty };\n\n// :: bool\n// True when this node is an atom, i.e. when it does not have\n// directly editable content.\nprototypeAccessors$5.isAtom.get = function () { return this.isLeaf || this.spec.atom };\n\n// :: union<\"pre\", \"normal\">\n// The node type's [whitespace](#view.NodeSpec.whitespace) option.\nprototypeAccessors$5.whitespace.get = function () { return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\") };\n\n// :: () → bool\n// Tells you whether this node type has any required attributes.\nNodeType.prototype.hasRequiredAttrs = function hasRequiredAttrs () {\n for (var n in this.attrs) { if (this.attrs[n].isRequired) { return true } }\n return false\n};\n\nNodeType.prototype.compatibleContent = function compatibleContent (other) {\n return this == other || this.contentMatch.compatible(other.contentMatch)\n};\n\nNodeType.prototype.computeAttrs = function computeAttrs$1 (attrs) {\n if (!attrs && this.defaultAttrs) { return this.defaultAttrs }\n else { return computeAttrs(this.attrs, attrs) }\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Create a `Node` of this type. The given attributes are\n// checked and defaulted (you can pass `null` to use the type's\n// defaults entirely, if no required attributes exist). `content`\n// may be a `Fragment`, a node, an array of nodes, or\n// `null`. Similarly `marks` may be `null` to default to the empty\n// set of marks.\nNodeType.prototype.create = function create (attrs, content, marks) {\n if (this.isText) { throw new Error(\"NodeType.create can't construct text nodes\") }\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Like [`create`](#model.NodeType.create), but check the given content\n// against the node type's content restrictions, and throw an error\n// if it doesn't match.\nNodeType.prototype.createChecked = function createChecked (attrs, content, marks) {\n content = Fragment.from(content);\n if (!this.validContent(content))\n { throw new RangeError(\"Invalid content for node \" + this.name) }\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → ?Node\n// Like [`create`](#model.NodeType.create), but see if it is necessary to\n// add nodes to the start or end of the given fragment to make it\n// fit the node. If no fitting wrapping can be found, return null.\n// Note that, due to the fact that required nodes can always be\n// created, this will always succeed if you pass null or\n// `Fragment.empty` as content.\nNodeType.prototype.createAndFill = function createAndFill (attrs, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n var before = this.contentMatch.fillBefore(content);\n if (!before) { return null }\n content = before.append(content);\n }\n var after = this.contentMatch.matchFragment(content).fillBefore(Fragment.empty, true);\n if (!after) { return null }\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks))\n};\n\n// :: (Fragment) → bool\n// Returns true if the given fragment is valid content for this node\n// type with the given attributes.\nNodeType.prototype.validContent = function validContent (content) {\n var result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd) { return false }\n for (var i = 0; i < content.childCount; i++)\n { if (!this.allowsMarks(content.child(i).marks)) { return false } }\n return true\n};\n\n// :: (MarkType) → bool\n// Check whether the given mark type is allowed in this node.\nNodeType.prototype.allowsMarkType = function allowsMarkType (markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1\n};\n\n// :: ([Mark]) → bool\n// Test whether the given set of marks are allowed in this node.\nNodeType.prototype.allowsMarks = function allowsMarks (marks) {\n if (this.markSet == null) { return true }\n for (var i = 0; i < marks.length; i++) { if (!this.allowsMarkType(marks[i].type)) { return false } }\n return true\n};\n\n// :: ([Mark]) → [Mark]\n// Removes the marks that are not allowed in this node from the given set.\nNodeType.prototype.allowedMarks = function allowedMarks (marks) {\n if (this.markSet == null) { return marks }\n var copy;\n for (var i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy) { copy = marks.slice(0, i); }\n } else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.empty\n};\n\nNodeType.compile = function compile (nodes, schema) {\n var result = Object.create(null);\n nodes.forEach(function (name, spec) { return result[name] = new NodeType(name, schema, spec); });\n\n var topType = schema.spec.topNode || \"doc\";\n if (!result[topType]) { throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\") }\n if (!result.text) { throw new RangeError(\"Every schema needs a 'text' type\") }\n for (var _ in result.text.attrs) { throw new RangeError(\"The text node type should not have attributes\") }\n\n return result\n};\n\nObject.defineProperties( NodeType.prototype, prototypeAccessors$5 );\n\n// Attribute descriptors\n\nvar Attribute = function Attribute(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n};\n\nvar prototypeAccessors$1$3 = { isRequired: { configurable: true } };\n\nprototypeAccessors$1$3.isRequired.get = function () {\n return !this.hasDefault\n};\n\nObject.defineProperties( Attribute.prototype, prototypeAccessors$1$3 );\n\n// Marks\n\n// ::- Like nodes, marks (which are associated with nodes to signify\n// things like emphasis or being part of a link) are\n// [tagged](#model.Mark.type) with type objects, which are\n// instantiated once per `Schema`.\nvar MarkType = function MarkType(name, rank, schema, spec) {\n // :: string\n // The name of the mark type.\n this.name = name;\n\n // :: Schema\n // The schema that this mark type instance is part of.\n this.schema = schema;\n\n // :: MarkSpec\n // The spec on which the type is based.\n this.spec = spec;\n\n this.attrs = initAttrs(spec.attrs);\n\n this.rank = rank;\n this.excluded = null;\n var defaults = defaultAttrs(this.attrs);\n this.instance = defaults && new Mark(this, defaults);\n};\n\n// :: (?Object) → Mark\n// Create a mark of this type. `attrs` may be `null` or an object\n// containing only some of the mark's attributes. The others, if\n// they have defaults, will be added.\nMarkType.prototype.create = function create (attrs) {\n if (!attrs && this.instance) { return this.instance }\n return new Mark(this, computeAttrs(this.attrs, attrs))\n};\n\nMarkType.compile = function compile (marks, schema) {\n var result = Object.create(null), rank = 0;\n marks.forEach(function (name, spec) { return result[name] = new MarkType(name, rank++, schema, spec); });\n return result\n};\n\n// :: ([Mark]) → [Mark]\n// When there is a mark of this type in the given set, a new set\n// without it is returned. Otherwise, the input set is returned.\nMarkType.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++) { if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n } }\n return set\n};\n\n// :: ([Mark]) → ?Mark\n// Tests whether there is a mark of this type in the given set.\nMarkType.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (set[i].type == this) { return set[i] } }\n};\n\n// :: (MarkType) → bool\n// Queries whether a given mark type is\n// [excluded](#model.MarkSpec.excludes) by this one.\nMarkType.prototype.excludes = function excludes (other) {\n return this.excluded.indexOf(other) > -1\n};\n\n// SchemaSpec:: interface\n// An object describing a schema, as passed to the [`Schema`](#model.Schema)\n// constructor.\n//\n// nodes:: union, OrderedMap>\n// The node types in this schema. Maps names to\n// [`NodeSpec`](#model.NodeSpec) objects that describe the node type\n// associated with that name. Their order is significant—it\n// determines which [parse rules](#model.NodeSpec.parseDOM) take\n// precedence by default, and which nodes come first in a given\n// [group](#model.NodeSpec.group).\n//\n// marks:: ?union, OrderedMap>\n// The mark types that exist in this schema. The order in which they\n// are provided determines the order in which [mark\n// sets](#model.Mark.addToSet) are sorted and in which [parse\n// rules](#model.MarkSpec.parseDOM) are tried.\n//\n// topNode:: ?string\n// The name of the default top-level node for the schema. Defaults\n// to `\"doc\"`.\n\n// NodeSpec:: interface\n//\n// content:: ?string\n// The content expression for this node, as described in the [schema\n// guide](/docs/guide/#schema.content_expressions). When not given,\n// the node does not allow any content.\n//\n// marks:: ?string\n// The marks that are allowed inside of this node. May be a\n// space-separated string referring to mark names or groups, `\"_\"`\n// to explicitly allow all marks, or `\"\"` to disallow marks. When\n// not given, nodes with inline content default to allowing all\n// marks, other nodes default to not allowing marks.\n//\n// group:: ?string\n// The group or space-separated groups to which this node belongs,\n// which can be referred to in the content expressions for the\n// schema.\n//\n// inline:: ?bool\n// Should be set to true for inline nodes. (Implied for text nodes.)\n//\n// atom:: ?bool\n// Can be set to true to indicate that, though this isn't a [leaf\n// node](#model.NodeType.isLeaf), it doesn't have directly editable\n// content and should be treated as a single unit in the view.\n//\n// attrs:: ?Object\n// The attributes that nodes of this type get.\n//\n// selectable:: ?bool\n// Controls whether nodes of this type can be selected as a [node\n// selection](#state.NodeSelection). Defaults to true for non-text\n// nodes.\n//\n// draggable:: ?bool\n// Determines whether nodes of this type can be dragged without\n// being selected. Defaults to false.\n//\n// code:: ?bool\n// Can be used to indicate that this node contains code, which\n// causes some commands to behave differently.\n//\n// whitespace:: ?union<\"pre\", \"normal\">\n// Controls way whitespace in this a node is parsed. The default is\n// `\"normal\"`, which causes the [DOM parser](#model.DOMParser) to\n// collapse whitespace in normal mode, and normalize it (replacing\n// newlines and such with spaces) otherwise. `\"pre\"` causes the\n// parser to preserve spaces inside the node. When this option isn't\n// given, but [`code`](#model.NodeSpec.code) is true, `whitespace`\n// will default to `\"pre\"`. Note that this option doesn't influence\n// the way the node is rendered—that should be handled by `toDOM`\n// and/or styling.\n//\n// defining:: ?bool\n// Determines whether this node is considered an important parent\n// node during replace operations (such as paste). Non-defining (the\n// default) nodes get dropped when their entire content is replaced,\n// whereas defining nodes persist and wrap the inserted content.\n// Likewise, in _inserted_ content the defining parents of the\n// content are preserved when possible. Typically,\n// non-default-paragraph textblock types, and possibly list items,\n// are marked as defining.\n//\n// isolating:: ?bool\n// When enabled (default is false), the sides of nodes of this type\n// count as boundaries that regular editing operations, like\n// backspacing or lifting, won't cross. An example of a node that\n// should probably have this enabled is a table cell.\n//\n// toDOM:: ?(node: Node) → DOMOutputSpec\n// Defines the default way a node of this type should be serialized\n// to DOM/HTML (as used by\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)).\n// Should return a DOM node or an [array\n// structure](#model.DOMOutputSpec) that describes one, with an\n// optional number zero (“hole”) in it to indicate where the node's\n// content should be inserted.\n//\n// For text nodes, the default is to create a text DOM node. Though\n// it is possible to create a serializer where text is rendered\n// differently, this is not supported inside the editor, so you\n// shouldn't override that in your text node spec.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this node, which can be\n// used by [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) to\n// automatically derive a parser. The `node` field in the rules is\n// implied (the name of this node will be filled in automatically).\n// If you supply your own parser, you do not need to also specify\n// parsing rules in your schema.\n//\n// toDebugString:: ?(node: Node) -> string\n// Defines the default way a node of this type should be serialized\n// to a string representation for debugging (e.g. in error messages).\n\n// MarkSpec:: interface\n//\n// attrs:: ?Object\n// The attributes that marks of this type get.\n//\n// inclusive:: ?bool\n// Whether this mark should be active when the cursor is positioned\n// at its end (or at its start when that is also the start of the\n// parent node). Defaults to true.\n//\n// excludes:: ?string\n// Determines which other marks this mark can coexist with. Should\n// be a space-separated strings naming other marks or groups of marks.\n// When a mark is [added](#model.Mark.addToSet) to a set, all marks\n// that it excludes are removed in the process. If the set contains\n// any mark that excludes the new mark but is not, itself, excluded\n// by the new mark, the mark can not be added an the set. You can\n// use the value `\"_\"` to indicate that the mark excludes all\n// marks in the schema.\n//\n// Defaults to only being exclusive with marks of the same type. You\n// can set it to an empty string (or any string not containing the\n// mark's own name) to allow multiple marks of a given type to\n// coexist (as long as they have different attributes).\n//\n// group:: ?string\n// The group or space-separated groups to which this mark belongs.\n//\n// spanning:: ?bool\n// Determines whether marks of this type can span multiple adjacent\n// nodes when serialized to DOM/HTML. Defaults to true.\n//\n// toDOM:: ?(mark: Mark, inline: bool) → DOMOutputSpec\n// Defines the default way marks of this type should be serialized\n// to DOM/HTML. When the resulting spec contains a hole, that is\n// where the marked content is placed. Otherwise, it is appended to\n// the top node.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this mark (see the\n// corresponding [node spec field](#model.NodeSpec.parseDOM)). The\n// `mark` field in the rules is implied.\n\n// AttributeSpec:: interface\n//\n// Used to [define](#model.NodeSpec.attrs) attributes on nodes or\n// marks.\n//\n// default:: ?any\n// The default value for this attribute, to use when no explicit\n// value is provided. Attributes that have no default must be\n// provided whenever a node or mark of a type that has them is\n// created.\n\n// ::- A document schema. Holds [node](#model.NodeType) and [mark\n// type](#model.MarkType) objects for the nodes and marks that may\n// occur in conforming documents, and provides functionality for\n// creating and deserializing such documents.\nvar Schema = function Schema(spec) {\n // :: SchemaSpec\n // The [spec](#model.SchemaSpec) on which the schema is based,\n // with the added guarantee that its `nodes` and `marks`\n // properties are\n // [`OrderedMap`](https://github.com/marijnh/orderedmap) instances\n // (not raw objects).\n this.spec = {};\n for (var prop in spec) { this.spec[prop] = spec[prop]; }\n this.spec.nodes = OrderedMap.from(spec.nodes);\n this.spec.marks = OrderedMap.from(spec.marks);\n\n // :: Object\n // An object mapping the schema's node names to node type objects.\n this.nodes = NodeType.compile(this.spec.nodes, this);\n\n // :: Object\n // A map from mark names to mark type objects.\n this.marks = MarkType.compile(this.spec.marks, this);\n\n var contentExprCache = Object.create(null);\n for (var prop$1 in this.nodes) {\n if (prop$1 in this.marks)\n { throw new RangeError(prop$1 + \" can not be both a node and a mark\") }\n var type = this.nodes[prop$1], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (var prop$2 in this.marks) {\n var type$1 = this.marks[prop$2], excl = type$1.spec.excludes;\n type$1.excluded = excl == null ? [type$1] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n\n // :: NodeType\n // The type of the [default top node](#model.SchemaSpec.topNode)\n // for this schema.\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n\n // :: Object\n // An object for storing whatever values modules may want to\n // compute and cache per schema. (If you want to store something\n // in it, try to use property names unlikely to clash.)\n this.cached = Object.create(null);\n this.cached.wrappings = Object.create(null);\n};\n\n// :: (union, ?Object, ?union, ?[Mark]) → Node\n// Create a node in this schema. The `type` may be a string or a\n// `NodeType` instance. Attributes will be extended\n// with defaults, `content` may be a `Fragment`,\n// `null`, a `Node`, or an array of nodes.\nSchema.prototype.node = function node (type, attrs, content, marks) {\n if (typeof type == \"string\")\n { type = this.nodeType(type); }\n else if (!(type instanceof NodeType))\n { throw new RangeError(\"Invalid node type: \" + type) }\n else if (type.schema != this)\n { throw new RangeError(\"Node type from different schema used (\" + type.name + \")\") }\n\n return type.createChecked(attrs, content, marks)\n};\n\n// :: (string, ?[Mark]) → Node\n// Create a text node in the schema. Empty text nodes are not\n// allowed.\nSchema.prototype.text = function text (text$1, marks) {\n var type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text$1, Mark.setFrom(marks))\n};\n\n// :: (union, ?Object) → Mark\n// Create a mark with the given type and attributes.\nSchema.prototype.mark = function mark (type, attrs) {\n if (typeof type == \"string\") { type = this.marks[type]; }\n return type.create(attrs)\n};\n\n// :: (Object) → Node\n// Deserialize a node from its JSON representation. This method is\n// bound.\nSchema.prototype.nodeFromJSON = function nodeFromJSON (json) {\n return Node.fromJSON(this, json)\n};\n\n// :: (Object) → Mark\n// Deserialize a mark from its JSON representation. This method is\n// bound.\nSchema.prototype.markFromJSON = function markFromJSON (json) {\n return Mark.fromJSON(this, json)\n};\n\nSchema.prototype.nodeType = function nodeType (name) {\n var found = this.nodes[name];\n if (!found) { throw new RangeError(\"Unknown node type: \" + name) }\n return found\n};\n\nfunction gatherMarks(schema, marks) {\n var found = [];\n for (var i = 0; i < marks.length; i++) {\n var name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n } else {\n for (var prop in schema.marks) {\n var mark$1 = schema.marks[prop];\n if (name == \"_\" || (mark$1.spec.group && mark$1.spec.group.split(\" \").indexOf(name) > -1))\n { found.push(ok = mark$1); }\n }\n }\n if (!ok) { throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\") }\n }\n return found\n}\n\n// ParseOptions:: interface\n// These are the options recognized by the\n// [`parse`](#model.DOMParser.parse) and\n// [`parseSlice`](#model.DOMParser.parseSlice) methods.\n//\n// preserveWhitespace:: ?union\n// By default, whitespace is collapsed as per HTML's rules. Pass\n// `true` to preserve whitespace, but normalize newlines to\n// spaces, and `\"full\"` to preserve whitespace entirely.\n//\n// findPositions:: ?[{node: dom.Node, offset: number}]\n// When given, the parser will, beside parsing the content,\n// record the document positions of the given DOM positions. It\n// will do so by writing to the objects, adding a `pos` property\n// that holds the document position. DOM positions that are not\n// in the parsed content will not be written to.\n//\n// from:: ?number\n// The child node index to start parsing from.\n//\n// to:: ?number\n// The child node index to stop parsing at.\n//\n// topNode:: ?Node\n// By default, the content is parsed into the schema's default\n// [top node type](#model.Schema.topNodeType). You can pass this\n// option to use the type and attributes from a different node\n// as the top container.\n//\n// topMatch:: ?ContentMatch\n// Provide the starting content match that content parsed into the\n// top node is matched against.\n//\n// context:: ?ResolvedPos\n// A set of additional nodes to count as\n// [context](#model.ParseRule.context) when parsing, above the\n// given [top node](#model.ParseOptions.topNode).\n\n// ParseRule:: interface\n// A value that describes how to parse a given DOM node or inline\n// style as a ProseMirror node or mark.\n//\n// tag:: ?string\n// A CSS selector describing the kind of DOM elements to match. A\n// single rule should have _either_ a `tag` or a `style` property.\n//\n// namespace:: ?string\n// The namespace to match. This should be used with `tag`.\n// Nodes are only matched when the namespace matches or this property\n// is null.\n//\n// style:: ?string\n// A CSS property name to match. When given, this rule matches\n// inline styles that list that property. May also have the form\n// `\"property=value\"`, in which case the rule only matches if the\n// property's value exactly matches the given value. (For more\n// complicated filters, use [`getAttrs`](#model.ParseRule.getAttrs)\n// and return false to indicate that the match failed.) Rules\n// matching styles may only produce [marks](#model.ParseRule.mark),\n// not nodes.\n//\n// priority:: ?number\n// Can be used to change the order in which the parse rules in a\n// schema are tried. Those with higher priority come first. Rules\n// without a priority are counted as having priority 50. This\n// property is only meaningful in a schema—when directly\n// constructing a parser, the order of the rule array is used.\n//\n// consuming:: ?boolean\n// By default, when a rule matches an element or style, no further\n// rules get a chance to match it. By setting this to `false`, you\n// indicate that even when this rule matches, other rules that come\n// after it should also run.\n//\n// context:: ?string\n// When given, restricts this rule to only match when the current\n// context—the parent nodes into which the content is being\n// parsed—matches this expression. Should contain one or more node\n// names or node group names followed by single or double slashes.\n// For example `\"paragraph/\"` means the rule only matches when the\n// parent node is a paragraph, `\"blockquote/paragraph/\"` restricts\n// it to be in a paragraph that is inside a blockquote, and\n// `\"section//\"` matches any position inside a section—a double\n// slash matches any sequence of ancestor nodes. To allow multiple\n// different contexts, they can be separated by a pipe (`|`)\n// character, as in `\"blockquote/|list_item/\"`.\n//\n// node:: ?string\n// The name of the node type to create when this rule matches. Only\n// valid for rules with a `tag` property, not for style rules. Each\n// rule should have one of a `node`, `mark`, or `ignore` property\n// (except when it appears in a [node](#model.NodeSpec.parseDOM) or\n// [mark spec](#model.MarkSpec.parseDOM), in which case the `node`\n// or `mark` property will be derived from its position).\n//\n// mark:: ?string\n// The name of the mark type to wrap the matched content in.\n//\n// ignore:: ?bool\n// When true, ignore content that matches this rule.\n//\n// closeParent:: ?bool\n// When true, finding an element that matches this rule will close\n// the current node.\n//\n// skip:: ?bool\n// When true, ignore the node that matches this rule, but do parse\n// its content.\n//\n// attrs:: ?Object\n// Attributes for the node or mark created by this rule. When\n// `getAttrs` is provided, it takes precedence.\n//\n// getAttrs:: ?(union) → ?union\n// A function used to compute the attributes for the node or mark\n// created by this rule. Can also be used to describe further\n// conditions the DOM element or style must match. When it returns\n// `false`, the rule won't match. When it returns null or undefined,\n// that is interpreted as an empty/default set of attributes.\n//\n// Called with a DOM Element for `tag` rules, and with a string (the\n// style's value) for `style` rules.\n//\n// contentElement:: ?union\n// For `tag` rules that produce non-leaf nodes or marks, by default\n// the content of the DOM element is parsed as content of the mark\n// or node. If the child nodes are in a descendent node, this may be\n// a CSS selector string that the parser must use to find the actual\n// content element, or a function that returns the actual content\n// element to the parser.\n//\n// getContent:: ?(dom.Node, schema: Schema) → Fragment\n// Can be used to override the content of a matched node. When\n// present, instead of parsing the node's child nodes, the result of\n// this function is used.\n//\n// preserveWhitespace:: ?union\n// Controls whether whitespace should be preserved when parsing the\n// content inside the matched element. `false` means whitespace may\n// be collapsed, `true` means that whitespace should be preserved\n// but newlines normalized to spaces, and `\"full\"` means that\n// newlines should also be preserved.\n\n// ::- A DOM parser represents a strategy for parsing DOM content into\n// a ProseMirror document conforming to a given schema. Its behavior\n// is defined by an array of [rules](#model.ParseRule).\nvar DOMParser = function DOMParser(schema, rules) {\n var this$1 = this;\n\n // :: Schema\n // The schema into which the parser parses.\n this.schema = schema;\n // :: [ParseRule]\n // The set of [parse rules](#model.ParseRule) that the parser\n // uses, in order of precedence.\n this.rules = rules;\n this.tags = [];\n this.styles = [];\n\n rules.forEach(function (rule) {\n if (rule.tag) { this$1.tags.push(rule); }\n else if (rule.style) { this$1.styles.push(rule); }\n });\n\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(function (r) {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node) { return false }\n var node = schema.nodes[r.node];\n return node.contentMatch.matchType(node)\n });\n};\n\n// :: (dom.Node, ?ParseOptions) → Node\n// Parse a document from the content of a DOM node.\nDOMParser.prototype.parse = function parse (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, false);\n context.addAll(dom, null, options.from, options.to);\n return context.finish()\n};\n\n// :: (dom.Node, ?ParseOptions) → Slice\n// Parses the content of the given DOM node, like\n// [`parse`](#model.DOMParser.parse), and takes the same set of\n// options. But unlike that method, which produces a whole node,\n// this one returns a slice that is open at the sides, meaning that\n// the schema constraints aren't applied to the start of nodes to\n// the left of the input and the end of nodes at the end.\nDOMParser.prototype.parseSlice = function parseSlice (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, true);\n context.addAll(dom, null, options.from, options.to);\n return Slice.maxOpen(context.finish())\n};\n\nDOMParser.prototype.matchTag = function matchTag (dom, context, after) {\n for (var i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n var rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n var result = rule.getAttrs(dom);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n }\n};\n\nDOMParser.prototype.matchStyle = function matchStyle (prop, value, context, after) {\n for (var i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n var rule = this.styles[i];\n if (rule.style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n rule.style.length > prop.length &&\n (rule.style.charCodeAt(prop.length) != 61 || rule.style.slice(prop.length + 1) != value))\n { continue }\n if (rule.getAttrs) {\n var result = rule.getAttrs(value);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n};\n\n// : (Schema) → [ParseRule]\nDOMParser.schemaRules = function schemaRules (schema) {\n var result = [];\n function insert(rule) {\n var priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n var next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority) { break }\n }\n result.splice(i, 0, rule);\n }\n\n var loop = function ( name ) {\n var rules = schema.marks[name].spec.parseDOM;\n if (rules) { rules.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.mark = name;\n }); }\n };\n\n for (var name in schema.marks) loop( name );\n var loop$1 = function ( name ) {\n var rules$1 = schema.nodes[name$1].spec.parseDOM;\n if (rules$1) { rules$1.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.node = name$1;\n }); }\n };\n\n for (var name$1 in schema.nodes) loop$1();\n return result\n};\n\n// :: (Schema) → DOMParser\n// Construct a DOM parser using the parsing rules listed in a\n// schema's [node specs](#model.NodeSpec.parseDOM), reordered by\n// [priority](#model.ParseRule.priority).\nDOMParser.fromSchema = function fromSchema (schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)))\n};\n\n// : Object The block-level tags in HTML5\nvar blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\n\n// : Object The tags that we normally ignore.\nvar ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\n\n// : Object List tags.\nvar listTags = {ol: true, ul: true};\n\n// Using a bitfield for node context options\nvar OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\n\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null) { return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0) }\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT\n}\n\nvar NodeContext = function NodeContext(type, attrs, marks, pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.solid = solid;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n this.options = options;\n this.content = [];\n // Marks applied to this node itself\n this.marks = marks;\n // Marks applied to its children\n this.activeMarks = Mark.none;\n // Marks that can't apply here, but will be used in children if possible\n this.pendingMarks = pendingMarks;\n // Nested Marks with same type\n this.stashMarks = [];\n};\n\nNodeContext.prototype.findWrapping = function findWrapping (node) {\n if (!this.match) {\n if (!this.type) { return [] }\n var fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n } else {\n var start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap\n } else {\n return null\n }\n }\n }\n return this.match.findWrapping(node.type)\n};\n\nNodeContext.prototype.finish = function finish (openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n var last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n if (last.text.length == m[0].length) { this.content.pop(); }\n else { this.content[this.content.length - 1] = last.withText(last.text.slice(0, last.text.length - m[0].length)); }\n }\n }\n var content = Fragment.from(this.content);\n if (!openEnd && this.match)\n { content = content.append(this.match.fillBefore(Fragment.empty, true)); }\n return this.type ? this.type.create(this.attrs, content, this.marks) : content\n};\n\nNodeContext.prototype.popFromStashMark = function popFromStashMark (mark) {\n for (var i = this.stashMarks.length - 1; i >= 0; i--)\n { if (mark.eq(this.stashMarks[i])) { return this.stashMarks.splice(i, 1)[0] } }\n};\n\nNodeContext.prototype.applyPending = function applyPending (nextType) {\n for (var i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n var mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n};\n\nNodeContext.prototype.inlineContext = function inlineContext (node) {\n if (this.type) { return this.type.inlineContent }\n if (this.content.length) { return this.content[0].isInline }\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase())\n};\n\nvar ParseContext = function ParseContext(parser, options, open) {\n // : DOMParser The parser we are using.\n this.parser = parser;\n // : Object The options passed to this parse.\n this.options = options;\n this.isOpen = open;\n var topNode = options.topNode, topContext;\n var topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (open ? OPT_OPEN_LEFT : 0);\n if (topNode)\n { topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true,\n options.topMatch || topNode.type.contentMatch, topOptions); }\n else if (open)\n { topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions); }\n else\n { topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions); }\n this.nodes = [topContext];\n // : [Mark] The current set of marks\n this.open = 0;\n this.find = options.findPositions;\n this.needsBlock = false;\n};\n\nvar prototypeAccessors$6 = { top: { configurable: true },currentPos: { configurable: true } };\n\nprototypeAccessors$6.top.get = function () {\n return this.nodes[this.open]\n};\n\n// : (dom.Node)\n// Add a DOM node to the content. Text is inserted as text node,\n// otherwise, the node is passed to `addElement` or, if it has a\n// `style` attribute, `addElementWithStyles`.\nParseContext.prototype.addDOM = function addDOM (dom) {\n if (dom.nodeType == 3) {\n this.addTextNode(dom);\n } else if (dom.nodeType == 1) {\n var style = dom.getAttribute(\"style\");\n var marks = style ? this.readStyles(parseStyles(style)) : null, top = this.top;\n if (marks != null) { for (var i = 0; i < marks.length; i++) { this.addPendingMark(marks[i]); } }\n this.addElement(dom);\n if (marks != null) { for (var i$1 = 0; i$1 < marks.length; i$1++) { this.removePendingMark(marks[i$1], top); } }\n }\n};\n\nParseContext.prototype.addTextNode = function addTextNode (dom) {\n var value = dom.nodeValue;\n var top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n var nodeBefore = top.content[top.content.length - 1];\n var domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n { value = value.slice(1); }\n }\n } else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n } else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value) { this.insertNode(this.parser.schema.text(value)); }\n this.findInText(dom);\n } else {\n this.findInside(dom);\n }\n};\n\n// : (dom.Element, ?ParseRule)\n// Try to find a handler for the given tag and use that to parse. If\n// none is found, the element's content nodes are added directly.\nParseContext.prototype.addElement = function addElement (dom, matchAfter) {\n var name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists) { normalizeList(dom); }\n var rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n } else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent) { this.open = Math.max(0, this.open - 1); }\n else if (rule && rule.skip.nodeType) { dom = rule.skip; }\n var sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n sync = true;\n if (!top.type) { this.needsBlock = true; }\n } else if (!dom.firstChild) {\n this.leafFallback(dom);\n return\n }\n this.addAll(dom);\n if (sync) { this.sync(top); }\n this.needsBlock = oldNeedsBlock;\n } else {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : null);\n }\n};\n\n// Called for leaf DOM nodes that would otherwise be ignored\nParseContext.prototype.leafFallback = function leafFallback (dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n { this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\")); }\n};\n\n// Called for ignored nodes\nParseContext.prototype.ignoreFallback = function ignoreFallback (dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n { this.findPlace(this.parser.schema.text(\"-\")); }\n};\n\n// Run any style parser associated with the node's styles. Either\n// return an array of marks, or null to indicate some of the styles\n// had a rule with `ignore` set.\nParseContext.prototype.readStyles = function readStyles (styles) {\n var marks = Mark.none;\n style: for (var i = 0; i < styles.length; i += 2) {\n for (var after = null;;) {\n var rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule) { continue style }\n if (rule.ignore) { return null }\n marks = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(marks);\n if (rule.consuming === false) { after = rule; }\n else { break }\n }\n }\n return marks\n};\n\n// : (dom.Element, ParseRule) → bool\n// Look up a handler for the given node. If none are found, return\n// false. Otherwise, apply it, use its return value to drive the way\n// the node's content is wrapped, and return true.\nParseContext.prototype.addElementByRule = function addElementByRule (dom, rule, continueAfter) {\n var this$1 = this;\n\n var sync, nodeType, markType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs, rule.preserveWhitespace);\n } else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n } else {\n markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n var startIn = this.top;\n\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n } else if (continueAfter) {\n this.addElement(dom, continueAfter);\n } else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(function (node) { return this$1.insertNode(node); });\n } else {\n var contentDOM = rule.contentElement;\n if (typeof contentDOM == \"string\") { contentDOM = dom.querySelector(contentDOM); }\n else if (typeof contentDOM == \"function\") { contentDOM = contentDOM(dom); }\n if (!contentDOM) { contentDOM = dom; }\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, sync);\n }\n if (sync) { this.sync(startIn); this.open--; }\n if (mark) { this.removePendingMark(mark, startIn); }\n};\n\n// : (dom.Node, ?NodeBuilder, ?number, ?number)\n// Add all child nodes between `startIndex` and `endIndex` (or the\n// whole node, if not given). If `sync` is passed, use it to\n// synchronize after every block element.\nParseContext.prototype.addAll = function addAll (parent, sync, startIndex, endIndex) {\n var index = startIndex || 0;\n for (var dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild,\n end = endIndex == null ? null : parent.childNodes[endIndex];\n dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n if (sync && blockTags.hasOwnProperty(dom.nodeName.toLowerCase()))\n { this.sync(sync); }\n }\n this.findAtPoint(parent, index);\n};\n\n// Try to find a way to fit the given node type into the current\n// context. May add intermediate wrappers and/or leave non-solid\n// nodes that we're in.\nParseContext.prototype.findPlace = function findPlace (node) {\n var route, sync;\n for (var depth = this.open; depth >= 0; depth--) {\n var cx = this.nodes[depth];\n var found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length) { break }\n }\n if (cx.solid) { break }\n }\n if (!route) { return false }\n this.sync(sync);\n for (var i = 0; i < route.length; i++)\n { this.enterInner(route[i], null, false); }\n return true\n};\n\n// : (Node) → ?Node\n// Try to insert the given node, adjusting the context when needed.\nParseContext.prototype.insertNode = function insertNode (node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n var block = this.textblockFromContext();\n if (block) { this.enterInner(block); }\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(node.type);\n if (top.match) { top.match = top.match.matchType(node.type); }\n var marks = top.activeMarks;\n for (var i = 0; i < node.marks.length; i++)\n { if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n { marks = node.marks[i].addToSet(marks); } }\n top.content.push(node.mark(marks));\n return true\n }\n return false\n};\n\n// : (NodeType, ?Object) → bool\n// Try to start a node of the given type, adjusting the context when\n// necessary.\nParseContext.prototype.enter = function enter (type, attrs, preserveWS) {\n var ok = this.findPlace(type.create(attrs));\n if (ok) { this.enterInner(type, attrs, true, preserveWS); }\n return ok\n};\n\n// Open a node of the given type\nParseContext.prototype.enterInner = function enterInner (type, attrs, solid, preserveWS) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type, attrs);\n var options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0) { options |= OPT_OPEN_LEFT; }\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n};\n\n// Make sure all nodes above this.open are finished and added to\n// their parents\nParseContext.prototype.closeExtra = function closeExtra (openEnd) {\n var i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--) { this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd)); }\n this.nodes.length = this.open + 1;\n }\n};\n\nParseContext.prototype.finish = function finish () {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen)\n};\n\nParseContext.prototype.sync = function sync (to) {\n for (var i = this.open; i >= 0; i--) { if (this.nodes[i] == to) {\n this.open = i;\n return\n } }\n};\n\nprototypeAccessors$6.currentPos.get = function () {\n this.closeExtra();\n var pos = 0;\n for (var i = this.open; i >= 0; i--) {\n var content = this.nodes[i].content;\n for (var j = content.length - 1; j >= 0; j--)\n { pos += content[j].nodeSize; }\n if (i) { pos++; }\n }\n return pos\n};\n\nParseContext.prototype.findAtPoint = function findAtPoint (parent, offset) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findInside = function findInside (parent) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findAround = function findAround (parent, content, before) {\n if (parent != content && this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n var pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n { this.find[i].pos = this.currentPos; }\n }\n } }\n};\n\nParseContext.prototype.findInText = function findInText (textNode) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n { this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset); }\n } }\n};\n\n// : (string) → bool\n// Determines whether the given [context\n// string](#ParseRule.context) matches this context.\nParseContext.prototype.matchesContext = function matchesContext (context) {\n var this$1 = this;\n\n if (context.indexOf(\"|\") > -1)\n { return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this) }\n\n var parts = context.split(\"/\");\n var option = this.options.context;\n var useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n var minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n var match = function (i, depth) {\n for (; i >= 0; i--) {\n var part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0) { continue }\n for (; depth >= minDepth; depth--)\n { if (match(i - 1, depth)) { return true } }\n return false\n } else {\n var next = depth > 0 || (depth == 0 && useRoot) ? this$1.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n { return false }\n depth--;\n }\n }\n return true\n };\n return match(parts.length - 1, this.open)\n};\n\nParseContext.prototype.textblockFromContext = function textblockFromContext () {\n var $context = this.options.context;\n if ($context) { for (var d = $context.depth; d >= 0; d--) {\n var deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs) { return deflt }\n } }\n for (var name in this.parser.schema.nodes) {\n var type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs) { return type }\n }\n};\n\nParseContext.prototype.addPendingMark = function addPendingMark (mark) {\n var found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found) { this.top.stashMarks.push(found); }\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n};\n\nParseContext.prototype.removePendingMark = function removePendingMark (mark, upto) {\n for (var depth = this.open; depth >= 0; depth--) {\n var level = this.nodes[depth];\n var found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n } else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n var stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n { level.activeMarks = stashMark.addToSet(level.activeMarks); }\n }\n if (level == upto) { break }\n }\n};\n\nObject.defineProperties( ParseContext.prototype, prototypeAccessors$6 );\n\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (var child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n var name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n } else if (name == \"li\") {\n prevItem = child;\n } else if (name) {\n prevItem = null;\n }\n }\n}\n\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector)\n}\n\n// : (string) → [string]\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n var re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style)) { result.push(m[1], m[2].trim()); }\n return result\n}\n\nfunction copy(obj) {\n var copy = {};\n for (var prop in obj) { copy[prop] = obj[prop]; }\n return copy\n}\n\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n var nodes = nodeType.schema.nodes;\n var loop = function ( name ) {\n var parent = nodes[name];\n if (!parent.allowsMarkType(markType)) { return }\n var seen = [], scan = function (match) {\n seen.push(match);\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n var next = ref.next;\n if (type == nodeType) { return true }\n if (seen.indexOf(next) < 0 && scan(next)) { return true }\n }\n };\n if (scan(parent.contentMatch)) { return { v: true } }\n };\n\n for (var name in nodes) {\n var returned = loop( name );\n\n if ( returned ) return returned.v;\n }\n}\n\nfunction findSameMarkInSet(mark, set) {\n for (var i = 0; i < set.length; i++) {\n if (mark.eq(set[i])) { return set[i] }\n }\n}\n\n// DOMOutputSpec:: interface\n// A description of a DOM structure. Can be either a string, which is\n// interpreted as a text node, a DOM node, which is interpreted as\n// itself, a `{dom: Node, contentDOM: ?Node}` object, or an array.\n//\n// An array describes a DOM element. The first value in the array\n// should be a string—the name of the DOM element, optionally prefixed\n// by a namespace URL and a space. If the second element is plain\n// object, it is interpreted as a set of attributes for the element.\n// Any elements after that (including the 2nd if it's not an attribute\n// object) are interpreted as children of the DOM elements, and must\n// either be valid `DOMOutputSpec` values, or the number zero.\n//\n// The number zero (pronounced “hole”) is used to indicate the place\n// where a node's child nodes should be inserted. If it occurs in an\n// output spec, it should be the only child element in its parent\n// node.\n\n// ::- A DOM serializer knows how to convert ProseMirror nodes and\n// marks of various types to DOM nodes.\nvar DOMSerializer = function DOMSerializer(nodes, marks) {\n // :: Object<(node: Node) → DOMOutputSpec>\n // The node serialization functions.\n this.nodes = nodes || {};\n // :: Object\n // The mark serialization functions.\n this.marks = marks || {};\n};\n\n// :: (Fragment, ?Object) → dom.DocumentFragment\n// Serialize the content of this fragment to a DOM fragment. When\n// not in the browser, the `document` option, containing a DOM\n// document, should be passed so that the serializer can create\n// nodes.\nDOMSerializer.prototype.serializeFragment = function serializeFragment (fragment, options, target) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n if (!target) { target = doc(options).createDocumentFragment(); }\n\n var top = target, active = null;\n fragment.forEach(function (node) {\n if (active || node.marks.length) {\n if (!active) { active = []; }\n var keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n var next = node.marks[rendered];\n if (!this$1.marks[next.type.name]) { rendered++; continue }\n if (!next.eq(active[keep]) || next.type.spec.spanning === false) { break }\n keep += 2; rendered++;\n }\n while (keep < active.length) {\n top = active.pop();\n active.pop();\n }\n while (rendered < node.marks.length) {\n var add = node.marks[rendered++];\n var markDOM = this$1.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push(add, top);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this$1.serializeNodeInner(node, options));\n });\n\n return target\n};\n\nDOMSerializer.prototype.serializeNodeInner = function serializeNodeInner (node, options) {\n if ( options === void 0 ) options = {};\n\n var ref =\n DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n var dom = ref.dom;\n var contentDOM = ref.contentDOM;\n if (contentDOM) {\n if (node.isLeaf)\n { throw new RangeError(\"Content hole not allowed in a leaf node spec\") }\n if (options.onContent)\n { options.onContent(node, contentDOM, options); }\n else\n { this.serializeFragment(node.content, options, contentDOM); }\n }\n return dom\n};\n\n// :: (Node, ?Object) → dom.Node\n// Serialize this node to a DOM node. This can be useful when you\n// need to serialize a part of a document, as opposed to the whole\n// document. To serialize a whole document, use\n// [`serializeFragment`](#model.DOMSerializer.serializeFragment) on\n// its [content](#model.Node.content).\nDOMSerializer.prototype.serializeNode = function serializeNode (node, options) {\n if ( options === void 0 ) options = {};\n\n var dom = this.serializeNodeInner(node, options);\n for (var i = node.marks.length - 1; i >= 0; i--) {\n var wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n(wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom\n};\n\nDOMSerializer.prototype.serializeMark = function serializeMark (mark, inline, options) {\n if ( options === void 0 ) options = {};\n\n var toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline))\n};\n\n// :: (dom.Document, DOMOutputSpec) → {dom: dom.Node, contentDOM: ?dom.Node}\n// Render an [output spec](#model.DOMOutputSpec) to a DOM node. If\n// the spec has a hole (zero) in it, `contentDOM` will point at the\n// node with the hole.\nDOMSerializer.renderSpec = function renderSpec (doc, structure, xmlNS) {\n if ( xmlNS === void 0 ) xmlNS = null;\n\n if (typeof structure == \"string\")\n { return {dom: doc.createTextNode(structure)} }\n if (structure.nodeType != null)\n { return {dom: structure} }\n if (structure.dom && structure.dom.nodeType != null)\n { return structure }\n var tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n var contentDOM = null, dom = xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName);\n var attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (var name in attrs) { if (attrs[name] != null) {\n var space$1 = name.indexOf(\" \");\n if (space$1 > 0) { dom.setAttributeNS(name.slice(0, space$1), name.slice(space$1 + 1), attrs[name]); }\n else { dom.setAttribute(name, attrs[name]); }\n } }\n }\n for (var i = start; i < structure.length; i++) {\n var child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n { throw new RangeError(\"Content hole must be the only child of its parent node\") }\n return {dom: dom, contentDOM: dom}\n } else {\n var ref = DOMSerializer.renderSpec(doc, child, xmlNS);\n var inner = ref.dom;\n var innerContent = ref.contentDOM;\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM) { throw new RangeError(\"Multiple content holes\") }\n contentDOM = innerContent;\n }\n }\n }\n return {dom: dom, contentDOM: contentDOM}\n};\n\n// :: (Schema) → DOMSerializer\n// Build a serializer using the [`toDOM`](#model.NodeSpec.toDOM)\n// properties in a schema's node and mark specs.\nDOMSerializer.fromSchema = function fromSchema (schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)))\n};\n\n// : (Schema) → Object<(node: Node) → DOMOutputSpec>\n// Gather the serializers in a schema's node specs into an object.\n// This can be useful as a base to build a custom serializer from.\nDOMSerializer.nodesFromSchema = function nodesFromSchema (schema) {\n var result = gatherToDOM(schema.nodes);\n if (!result.text) { result.text = function (node) { return node.text; }; }\n return result\n};\n\n// : (Schema) → Object<(mark: Mark) → DOMOutputSpec>\n// Gather the serializers in a schema's mark specs into an object.\nDOMSerializer.marksFromSchema = function marksFromSchema (schema) {\n return gatherToDOM(schema.marks)\n};\n\nfunction gatherToDOM(obj) {\n var result = {};\n for (var name in obj) {\n var toDOM = obj[name].spec.toDOM;\n if (toDOM) { result[name] = toDOM; }\n }\n return result\n}\n\nfunction doc(options) {\n // declare global: window\n return options.document || window.document\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n//# sourceMappingURL=index.es.js.map\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tableKK.vue?vue&type=style&index=0&id=5cf887bb&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tableKK.vue?vue&type=style&index=0&id=5cf887bb&lang=stylus&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nvar classesById = Object.create(null);\n\n// ::- Superclass for editor selections. Every selection type should\n// extend this. Should not be instantiated directly.\nvar Selection = function Selection($anchor, $head, ranges) {\n // :: [SelectionRange]\n // The ranges covered by the selection.\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n // :: ResolvedPos\n // The resolved anchor of the selection (the side that stays in\n // place when the selection is modified).\n this.$anchor = $anchor;\n // :: ResolvedPos\n // The resolved head of the selection (the side that moves when\n // the selection is modified).\n this.$head = $head;\n};\n\nvar prototypeAccessors = { anchor: { configurable: true },head: { configurable: true },from: { configurable: true },to: { configurable: true },$from: { configurable: true },$to: { configurable: true },empty: { configurable: true } };\n\n// :: number\n// The selection's anchor, as an unresolved position.\nprototypeAccessors.anchor.get = function () { return this.$anchor.pos };\n\n// :: number\n// The selection's head.\nprototypeAccessors.head.get = function () { return this.$head.pos };\n\n// :: number\n// The lower bound of the selection's main range.\nprototypeAccessors.from.get = function () { return this.$from.pos };\n\n// :: number\n// The upper bound of the selection's main range.\nprototypeAccessors.to.get = function () { return this.$to.pos };\n\n// :: ResolvedPos\n// The resolved lowerbound of the selection's main range.\nprototypeAccessors.$from.get = function () {\n return this.ranges[0].$from\n};\n\n// :: ResolvedPos\n// The resolved upper bound of the selection's main range.\nprototypeAccessors.$to.get = function () {\n return this.ranges[0].$to\n};\n\n// :: bool\n// Indicates whether the selection contains any content.\nprototypeAccessors.empty.get = function () {\n var ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++)\n { if (ranges[i].$from.pos != ranges[i].$to.pos) { return false } }\n return true\n};\n\n// eq:: (Selection) → bool\n// Test whether the selection is the same as another selection.\n\n// map:: (doc: Node, mapping: Mappable) → Selection\n// Map this selection through a [mappable](#transform.Mappable) thing. `doc`\n// should be the new document to which we are mapping.\n\n// :: () → Slice\n// Get the content of this selection as a slice.\nSelection.prototype.content = function content () {\n return this.$from.node(0).slice(this.from, this.to, true)\n};\n\n// :: (Transaction, ?Slice)\n// Replace the selection with a slice or, if no slice is given,\n// delete the selection. Will append to the given transaction.\nSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n var lastNode = content.content.lastChild, lastParent = null;\n for (var i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref = ranges[i$1];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i$1 ? Slice.empty : content);\n if (i$1 == 0)\n { selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1); }\n }\n};\n\n// :: (Transaction, Node)\n// Replace the selection with the given node, appending the changes\n// to the given transaction.\nSelection.prototype.replaceWith = function replaceWith (tr, node) {\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n var from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n } else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n};\n\n// toJSON:: () → Object\n// Convert the selection to a JSON representation. When implementing\n// this for a custom selection class, make sure to give the object a\n// `type` property whose value matches the ID under which you\n// [registered](#state.Selection^jsonID) your class.\n\n// :: (ResolvedPos, number, ?bool) → ?Selection\n// Find a valid cursor or leaf node selection starting at the given\n// position and searching back if `dir` is negative, and forward if\n// positive. When `textOnly` is true, only consider cursor\n// selections. Will return null when no valid selection position is\n// found.\nSelection.findFrom = function findFrom ($pos, dir, textOnly) {\n var inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner) { return inner }\n\n for (var depth = $pos.depth - 1; depth >= 0; depth--) {\n var found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found) { return found }\n }\n};\n\n// :: (ResolvedPos, ?number) → Selection\n// Find a valid cursor or leaf node selection near the given\n// position. Searches forward first by default, but if `bias` is\n// negative, it will search backwards first.\nSelection.near = function near ($pos, bias) {\n if ( bias === void 0 ) bias = 1;\n\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0))\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the start of\n// the given document. Will return an\n// [`AllSelection`](#state.AllSelection) if no valid position\n// exists.\nSelection.atStart = function atStart (doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc)\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the end of the\n// given document.\nSelection.atEnd = function atEnd (doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc)\n};\n\n// :: (Node, Object) → Selection\n// Deserialize the JSON representation of a selection. Must be\n// implemented for custom classes (as a static class method).\nSelection.fromJSON = function fromJSON (doc, json) {\n if (!json || !json.type) { throw new RangeError(\"Invalid input for Selection.fromJSON\") }\n var cls = classesById[json.type];\n if (!cls) { throw new RangeError((\"No selection type \" + (json.type) + \" defined\")) }\n return cls.fromJSON(doc, json)\n};\n\n// :: (string, constructor)\n// To be able to deserialize selections from JSON, custom selection\n// classes must register themselves with an ID string, so that they\n// can be disambiguated. Try to pick something that's unlikely to\n// clash with classes from other modules.\nSelection.jsonID = function jsonID (id, selectionClass) {\n if (id in classesById) { throw new RangeError(\"Duplicate use of selection JSON ID \" + id) }\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass\n};\n\n// :: () → SelectionBookmark\n// Get a [bookmark](#state.SelectionBookmark) for this selection,\n// which is a value that can be mapped without having access to a\n// current document, and later resolved to a real selection for a\n// given document again. (This is used mostly by the history to\n// track and restore old selections.) The default implementation of\n// this method just converts the selection to a text selection and\n// returns the bookmark for that.\nSelection.prototype.getBookmark = function getBookmark () {\n return TextSelection.between(this.$anchor, this.$head).getBookmark()\n};\n\nObject.defineProperties( Selection.prototype, prototypeAccessors );\n\n// :: bool\n// Controls whether, when a selection of this type is active in the\n// browser, the selected range should be visible to the user. Defaults\n// to `true`.\nSelection.prototype.visible = true;\n\n// SelectionBookmark:: interface\n// A lightweight, document-independent representation of a selection.\n// You can define a custom bookmark type for a custom selection class\n// to make the history handle it well.\n//\n// map:: (mapping: Mapping) → SelectionBookmark\n// Map the bookmark through a set of changes.\n//\n// resolve:: (doc: Node) → Selection\n// Resolve the bookmark to a real selection again. This may need to\n// do some error checking and may fall back to a default (usually\n// [`TextSelection.between`](#state.TextSelection^between)) if\n// mapping made the bookmark invalid.\n\n// ::- Represents a selected range in a document.\nvar SelectionRange = function SelectionRange($from, $to) {\n // :: ResolvedPos\n // The lower bound of the range.\n this.$from = $from;\n // :: ResolvedPos\n // The upper bound of the range.\n this.$to = $to;\n};\n\n// ::- A text selection represents a classical editor selection, with\n// a head (the moving side) and anchor (immobile side), both of which\n// point into textblock nodes. It can be empty (a regular cursor\n// position).\nvar TextSelection = /*@__PURE__*/(function (Selection) {\n function TextSelection($anchor, $head) {\n if ( $head === void 0 ) $head = $anchor;\n\n Selection.call(this, $anchor, $head);\n }\n\n if ( Selection ) TextSelection.__proto__ = Selection;\n TextSelection.prototype = Object.create( Selection && Selection.prototype );\n TextSelection.prototype.constructor = TextSelection;\n\n var prototypeAccessors$1 = { $cursor: { configurable: true } };\n\n // :: ?ResolvedPos\n // Returns a resolved position if this is a cursor selection (an\n // empty text selection), and null otherwise.\n prototypeAccessors$1.$cursor.get = function () { return this.$anchor.pos == this.$head.pos ? this.$head : null };\n\n TextSelection.prototype.map = function map (doc, mapping) {\n var $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent) { return Selection.near($head) }\n var $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head)\n };\n\n TextSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n Selection.prototype.replace.call(this, tr, content);\n if (content == Slice.empty) {\n var marks = this.$from.marksAcross(this.$to);\n if (marks) { tr.ensureMarks(marks); }\n }\n };\n\n TextSelection.prototype.eq = function eq (other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head\n };\n\n TextSelection.prototype.getBookmark = function getBookmark () {\n return new TextBookmark(this.anchor, this.head)\n };\n\n TextSelection.prototype.toJSON = function toJSON () {\n return {type: \"text\", anchor: this.anchor, head: this.head}\n };\n\n TextSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n { throw new RangeError(\"Invalid input for TextSelection.fromJSON\") }\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head))\n };\n\n // :: (Node, number, ?number) → TextSelection\n // Create a text selection from non-resolved positions.\n TextSelection.create = function create (doc, anchor, head) {\n if ( head === void 0 ) head = anchor;\n\n var $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head))\n };\n\n // :: (ResolvedPos, ResolvedPos, ?number) → Selection\n // Return a text selection that spans the given positions or, if\n // they aren't text positions, find a text selection near them.\n // `bias` determines whether the method searches forward (default)\n // or backwards (negative number) first. Will fall back to calling\n // [`Selection.near`](#state.Selection^near) when the document\n // doesn't contain a valid text position.\n TextSelection.between = function between ($anchor, $head, bias) {\n var dPos = $anchor.pos - $head.pos;\n if (!bias || dPos) { bias = dPos >= 0 ? 1 : -1; }\n if (!$head.parent.inlineContent) {\n var found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found) { $head = found.$head; }\n else { return Selection.near($head, bias) }\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n } else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0)) { $anchor = $head; }\n }\n }\n return new TextSelection($anchor, $head)\n };\n\n Object.defineProperties( TextSelection.prototype, prototypeAccessors$1 );\n\n return TextSelection;\n}(Selection));\n\nSelection.jsonID(\"text\", TextSelection);\n\nvar TextBookmark = function TextBookmark(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n};\nTextBookmark.prototype.map = function map (mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head))\n};\nTextBookmark.prototype.resolve = function resolve (doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head))\n};\n\n// ::- A node selection is a selection that points at a single node.\n// All nodes marked [selectable](#model.NodeSpec.selectable) can be\n// the target of a node selection. In such a selection, `from` and\n// `to` point directly before and after the selected node, `anchor`\n// equals `from`, and `head` equals `to`..\nvar NodeSelection = /*@__PURE__*/(function (Selection) {\n function NodeSelection($pos) {\n var node = $pos.nodeAfter;\n var $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n Selection.call(this, $pos, $end);\n // :: Node The selected node.\n this.node = node;\n }\n\n if ( Selection ) NodeSelection.__proto__ = Selection;\n NodeSelection.prototype = Object.create( Selection && Selection.prototype );\n NodeSelection.prototype.constructor = NodeSelection;\n\n NodeSelection.prototype.map = function map (doc, mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n var $pos = doc.resolve(pos);\n if (deleted) { return Selection.near($pos) }\n return new NodeSelection($pos)\n };\n\n NodeSelection.prototype.content = function content () {\n return new Slice(Fragment.from(this.node), 0, 0)\n };\n\n NodeSelection.prototype.eq = function eq (other) {\n return other instanceof NodeSelection && other.anchor == this.anchor\n };\n\n NodeSelection.prototype.toJSON = function toJSON () {\n return {type: \"node\", anchor: this.anchor}\n };\n\n NodeSelection.prototype.getBookmark = function getBookmark () { return new NodeBookmark(this.anchor) };\n\n NodeSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\")\n { throw new RangeError(\"Invalid input for NodeSelection.fromJSON\") }\n return new NodeSelection(doc.resolve(json.anchor))\n };\n\n // :: (Node, number) → NodeSelection\n // Create a node selection from non-resolved positions.\n NodeSelection.create = function create (doc, from) {\n return new this(doc.resolve(from))\n };\n\n // :: (Node) → bool\n // Determines whether the given node may be selected as a node\n // selection.\n NodeSelection.isSelectable = function isSelectable (node) {\n return !node.isText && node.type.spec.selectable !== false\n };\n\n return NodeSelection;\n}(Selection));\n\nNodeSelection.prototype.visible = false;\n\nSelection.jsonID(\"node\", NodeSelection);\n\nvar NodeBookmark = function NodeBookmark(anchor) {\n this.anchor = anchor;\n};\nNodeBookmark.prototype.map = function map (mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos)\n};\nNodeBookmark.prototype.resolve = function resolve (doc) {\n var $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node)) { return new NodeSelection($pos) }\n return Selection.near($pos)\n};\n\n// ::- A selection type that represents selecting the whole document\n// (which can not necessarily be expressed with a text selection, when\n// there are for example leaf block nodes at the start or end of the\n// document).\nvar AllSelection = /*@__PURE__*/(function (Selection) {\n function AllSelection(doc) {\n Selection.call(this, doc.resolve(0), doc.resolve(doc.content.size));\n }\n\n if ( Selection ) AllSelection.__proto__ = Selection;\n AllSelection.prototype = Object.create( Selection && Selection.prototype );\n AllSelection.prototype.constructor = AllSelection;\n\n AllSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n var sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection)) { tr.setSelection(sel); }\n } else {\n Selection.prototype.replace.call(this, tr, content);\n }\n };\n\n AllSelection.prototype.toJSON = function toJSON () { return {type: \"all\"} };\n\n AllSelection.fromJSON = function fromJSON (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.map = function map (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.eq = function eq (other) { return other instanceof AllSelection };\n\n AllSelection.prototype.getBookmark = function getBookmark () { return AllBookmark };\n\n return AllSelection;\n}(Selection));\n\nSelection.jsonID(\"all\", AllSelection);\n\nvar AllBookmark = {\n map: function map() { return this },\n resolve: function resolve(doc) { return new AllSelection(doc) }\n};\n\n// FIXME we'll need some awareness of text direction when scanning for selections\n\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text) {\n if (node.inlineContent) { return TextSelection.create(doc, pos) }\n for (var i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n var child = node.child(i);\n if (!child.isAtom) {\n var inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner) { return inner }\n } else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0))\n }\n pos += child.nodeSize * dir;\n }\n}\n\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n var last = tr.steps.length - 1;\n if (last < startLen) { return }\n var step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) { return }\n var map = tr.mapping.maps[last], end;\n map.forEach(function (_from, _to, _newFrom, newTo) { if (end == null) { end = newTo; } });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nvar UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n\n// ::- An editor state transaction, which can be applied to a state to\n// create an updated state. Use\n// [`EditorState.tr`](#state.EditorState.tr) to create an instance.\n//\n// Transactions track changes to the document (they are a subclass of\n// [`Transform`](#transform.Transform)), but also other state changes,\n// like selection updates and adjustments of the set of [stored\n// marks](#state.EditorState.storedMarks). In addition, you can store\n// metadata properties in a transaction, which are extra pieces of\n// information that client code or plugins can use to describe what a\n// transacion represents, so that they can update their [own\n// state](#state.StateField) accordingly.\n//\n// The [editor view](#view.EditorView) uses a few metadata properties:\n// it will attach a property `\"pointer\"` with the value `true` to\n// selection transactions directly caused by mouse or touch input, and\n// a `\"uiEvent\"` property of that may be `\"paste\"`, `\"cut\"`, or `\"drop\"`.\nvar Transaction = /*@__PURE__*/(function (Transform) {\n function Transaction(state) {\n Transform.call(this, state.doc);\n // :: number\n // The timestamp associated with this transaction, in the same\n // format as `Date.now()`.\n this.time = Date.now();\n this.curSelection = state.selection;\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // :: ?[Mark]\n // The stored marks set by this transaction, if any.\n this.storedMarks = state.storedMarks;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n }\n\n if ( Transform ) Transaction.__proto__ = Transform;\n Transaction.prototype = Object.create( Transform && Transform.prototype );\n Transaction.prototype.constructor = Transaction;\n\n var prototypeAccessors = { selection: { configurable: true },selectionSet: { configurable: true },storedMarksSet: { configurable: true },isGeneric: { configurable: true },scrolledIntoView: { configurable: true } };\n\n // :: Selection\n // The transaction's current selection. This defaults to the editor\n // selection [mapped](#state.Selection.map) through the steps in the\n // transaction, but can be overwritten with\n // [`setSelection`](#state.Transaction.setSelection).\n prototypeAccessors.selection.get = function () {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection\n };\n\n // :: (Selection) → Transaction\n // Update the transaction's current selection. Will determine the\n // selection that the editor gets when the transaction is applied.\n Transaction.prototype.setSelection = function setSelection (selection) {\n if (selection.$from.doc != this.doc)\n { throw new RangeError(\"Selection passed to setSelection must point at the current document\") }\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this\n };\n\n // :: bool\n // Whether the selection was explicitly updated by this transaction.\n prototypeAccessors.selectionSet.get = function () {\n return (this.updated & UPDATED_SEL) > 0\n };\n\n // :: (?[Mark]) → Transaction\n // Set the current stored marks.\n Transaction.prototype.setStoredMarks = function setStoredMarks (marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this\n };\n\n // :: ([Mark]) → Transaction\n // Make sure the current stored marks or, if that is null, the marks\n // at the selection, match the given set of marks. Does nothing if\n // this is already the case.\n Transaction.prototype.ensureMarks = function ensureMarks (marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n { this.setStoredMarks(marks); }\n return this\n };\n\n // :: (Mark) → Transaction\n // Add a mark to the set of stored marks.\n Transaction.prototype.addStoredMark = function addStoredMark (mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: (union) → Transaction\n // Remove a mark or mark type from the set of stored marks.\n Transaction.prototype.removeStoredMark = function removeStoredMark (mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: bool\n // Whether the stored marks were explicitly set for this transaction.\n prototypeAccessors.storedMarksSet.get = function () {\n return (this.updated & UPDATED_MARKS) > 0\n };\n\n Transaction.prototype.addStep = function addStep (step, doc) {\n Transform.prototype.addStep.call(this, step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n };\n\n // :: (number) → Transaction\n // Update the timestamp for the transaction.\n Transaction.prototype.setTime = function setTime (time) {\n this.time = time;\n return this\n };\n\n // :: (Slice) → Transaction\n // Replace the current selection with the given slice.\n Transaction.prototype.replaceSelection = function replaceSelection (slice) {\n this.selection.replace(this, slice);\n return this\n };\n\n // :: (Node, ?bool) → Transaction\n // Replace the selection with the given node. When `inheritMarks` is\n // true and the content is inline, it inherits the marks from the\n // place where it is inserted.\n Transaction.prototype.replaceSelectionWith = function replaceSelectionWith (node, inheritMarks) {\n var selection = this.selection;\n if (inheritMarks !== false)\n { node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none))); }\n selection.replaceWith(this, node);\n return this\n };\n\n // :: () → Transaction\n // Delete the selection.\n Transaction.prototype.deleteSelection = function deleteSelection () {\n this.selection.replace(this);\n return this\n };\n\n // :: (string, from: ?number, to: ?number) → Transaction\n // Replace the given range, or the selection if no range is given,\n // with a text node containing the given string.\n Transaction.prototype.insertText = function insertText (text, from, to) {\n if ( to === void 0 ) to = from;\n\n var schema = this.doc.type.schema;\n if (from == null) {\n if (!text) { return this.deleteSelection() }\n return this.replaceSelectionWith(schema.text(text), true)\n } else {\n if (!text) { return this.deleteRange(from, to) }\n var marks = this.storedMarks;\n if (!marks) {\n var $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty) { this.setSelection(Selection.near(this.selection.$to)); }\n return this\n }\n };\n\n // :: (union, any) → Transaction\n // Store a metadata property in this transaction, keyed either by\n // name or by plugin.\n Transaction.prototype.setMeta = function setMeta (key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this\n };\n\n // :: (union) → any\n // Retrieve a metadata property for a given name or plugin.\n Transaction.prototype.getMeta = function getMeta (key) {\n return this.meta[typeof key == \"string\" ? key : key.key]\n };\n\n // :: bool\n // Returns true if this transaction doesn't contain any metadata,\n // and can thus safely be extended.\n prototypeAccessors.isGeneric.get = function () {\n for (var _ in this.meta) { return false }\n return true\n };\n\n // :: () → Transaction\n // Indicate that the editor should scroll the selection into view\n // when updated to the state produced by this transaction.\n Transaction.prototype.scrollIntoView = function scrollIntoView () {\n this.updated |= UPDATED_SCROLL;\n return this\n };\n\n prototypeAccessors.scrolledIntoView.get = function () {\n return (this.updated & UPDATED_SCROLL) > 0\n };\n\n Object.defineProperties( Transaction.prototype, prototypeAccessors );\n\n return Transaction;\n}(Transform));\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self)\n}\n\nvar FieldDesc = function FieldDesc(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n};\n\nvar baseFields = [\n new FieldDesc(\"doc\", {\n init: function init(config) { return config.doc || config.schema.topNodeType.createAndFill() },\n apply: function apply(tr) { return tr.doc }\n }),\n\n new FieldDesc(\"selection\", {\n init: function init(config, instance) { return config.selection || Selection.atStart(instance.doc) },\n apply: function apply(tr) { return tr.selection }\n }),\n\n new FieldDesc(\"storedMarks\", {\n init: function init(config) { return config.storedMarks || null },\n apply: function apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null }\n }),\n\n new FieldDesc(\"scrollToSelection\", {\n init: function init() { return 0 },\n apply: function apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev }\n })\n];\n\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nvar Configuration = function Configuration(schema, plugins) {\n var this$1 = this;\n\n this.schema = schema;\n this.fields = baseFields.concat();\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n if (plugins) { plugins.forEach(function (plugin) {\n if (this$1.pluginsByKey[plugin.key])\n { throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\") }\n this$1.plugins.push(plugin);\n this$1.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n { this$1.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin)); }\n }); }\n};\n\n// ::- The state of a ProseMirror editor is represented by an object\n// of this type. A state is a persistent data structure—it isn't\n// updated, but rather a new state value is computed from an old one\n// using the [`apply`](#state.EditorState.apply) method.\n//\n// A state holds a number of built-in fields, and plugins can\n// [define](#state.PluginSpec.state) additional fields.\nvar EditorState = function EditorState(config) {\n this.config = config;\n};\n\nvar prototypeAccessors$1 = { schema: { configurable: true },plugins: { configurable: true },tr: { configurable: true } };\n\n// doc:: Node\n// The current document.\n\n// selection:: Selection\n// The selection.\n\n// storedMarks:: ?[Mark]\n// A set of marks to apply to the next input. Will be null when\n// no explicit marks have been set.\n\n// :: Schema\n// The schema of the state's document.\nprototypeAccessors$1.schema.get = function () {\n return this.config.schema\n};\n\n// :: [Plugin]\n// The plugins that are active in this state.\nprototypeAccessors$1.plugins.get = function () {\n return this.config.plugins\n};\n\n// :: (Transaction) → EditorState\n// Apply the given transaction to produce a new state.\nEditorState.prototype.apply = function apply (tr) {\n return this.applyTransaction(tr).state\n};\n\n// : (Transaction) → bool\nEditorState.prototype.filterTransaction = function filterTransaction (tr, ignore) {\n if ( ignore === void 0 ) ignore = -1;\n\n for (var i = 0; i < this.config.plugins.length; i++) { if (i != ignore) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n { return false }\n } }\n return true\n};\n\n// :: (Transaction) → {state: EditorState, transactions: [Transaction]}\n// Verbose variant of [`apply`](#state.EditorState.apply) that\n// returns the precise transactions that were applied (which might\n// be influenced by the [transaction\n// hooks](#state.PluginSpec.filterTransaction) of\n// plugins) along with the new state.\nEditorState.prototype.applyTransaction = function applyTransaction (rootTr) {\n if (!this.filterTransaction(rootTr)) { return {state: this, transactions: []} }\n\n var trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n var haveNew = false;\n for (var i = 0; i < this.config.plugins.length; i++) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n var n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n var tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (var j = 0; j < this.config.plugins.length; j++)\n { seen.push(j < i ? {state: newState, n: trs.length} : {state: this, n: 0}); }\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen) { seen[i] = {state: newState, n: trs.length}; }\n }\n }\n if (!haveNew) { return {state: newState, transactions: trs} }\n }\n};\n\n// : (Transaction) → EditorState\nEditorState.prototype.applyInner = function applyInner (tr) {\n if (!tr.before.eq(this.doc)) { throw new RangeError(\"Applying a mismatched transaction\") }\n var newInstance = new EditorState(this.config), fields = this.config.fields;\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n for (var i$1 = 0; i$1 < applyListeners.length; i$1++) { applyListeners[i$1](this, tr, newInstance); }\n return newInstance\n};\n\n// :: Transaction\n// Start a [transaction](#state.Transaction) from this state.\nprototypeAccessors$1.tr.get = function () { return new Transaction(this) };\n\n// :: (Object) → EditorState\n// Create a new state.\n//\n// config::- Configuration options. Must contain `schema` or `doc` (or both).\n//\n// schema:: ?Schema\n// The schema to use (only relevant if no `doc` is specified).\n//\n// doc:: ?Node\n// The starting document.\n//\n// selection:: ?Selection\n// A valid selection in the document.\n//\n// storedMarks:: ?[Mark]\n// The initial set of [stored marks](#state.EditorState.storedMarks).\n//\n// plugins:: ?[Plugin]\n// The plugins that should be active in this state.\nEditorState.create = function create (config) {\n var $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n var instance = new EditorState($config);\n for (var i = 0; i < $config.fields.length; i++)\n { instance[$config.fields[i].name] = $config.fields[i].init(config, instance); }\n return instance\n};\n\n// :: (Object) → EditorState\n// Create a new state based on this one, but with an adjusted set of\n// active plugins. State fields that exist in both sets of plugins\n// are kept unchanged. Those that no longer exist are dropped, and\n// those that are new are initialized using their\n// [`init`](#state.StateField.init) method, passing in the new\n// configuration object..\n//\n// config::- configuration options\n//\n// plugins:: [Plugin]\n// New set of active plugins.\nEditorState.prototype.reconfigure = function reconfigure (config) {\n var $config = new Configuration(this.schema, config.plugins);\n var fields = $config.fields, instance = new EditorState($config);\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance\n};\n\n// :: (?union, string, number>) → Object\n// Serialize this state to JSON. If you want to serialize the state\n// of plugins, pass an object mapping property names to use in the\n// resulting JSON object to plugin objects. The argument may also be\n// a string or number, in which case it is ignored, to support the\n// way `JSON.stringify` calls `toString` methods.\nEditorState.prototype.toJSON = function toJSON (pluginFields) {\n var result = {doc: this.doc.toJSON(), selection: this.selection.toJSON()};\n if (this.storedMarks) { result.storedMarks = this.storedMarks.map(function (m) { return m.toJSON(); }); }\n if (pluginFields && typeof pluginFields == 'object') { for (var prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n { throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\") }\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON) { result[prop] = state.toJSON.call(plugin, this[plugin.key]); }\n } }\n return result\n};\n\n// :: (Object, Object, ?Object) → EditorState\n// Deserialize a JSON representation of a state. `config` should\n// have at least a `schema` field, and should contain array of\n// plugins to initialize the state with. `pluginFields` can be used\n// to deserialize the state of plugins, by associating plugin\n// instances with the property names they use in the JSON object.\n//\n// config::- configuration options\n//\n// schema:: Schema\n// The schema to use.\n//\n// plugins:: ?[Plugin]\n// The set of active plugins.\nEditorState.fromJSON = function fromJSON (config, json, pluginFields) {\n if (!json) { throw new RangeError(\"Invalid input for EditorState.fromJSON\") }\n if (!config.schema) { throw new RangeError(\"Required config field 'schema' missing\") }\n var $config = new Configuration(config.schema, config.plugins);\n var instance = new EditorState($config);\n $config.fields.forEach(function (field) {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n } else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n } else if (field.name == \"storedMarks\") {\n if (json.storedMarks) { instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON); }\n } else {\n if (pluginFields) { for (var prop in pluginFields) {\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n // This field belongs to a plugin mapped to a JSON field, read it from there.\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return\n }\n } }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance\n};\n\n// Kludge to allow the view to track mappings between different\n// instances of a state.\n//\n// FIXME this is no longer needed as of prosemirror-view 1.9.0,\n// though due to backwards-compat we should probably keep it around\n// for a while (if only as a no-op)\nEditorState.addApplyListener = function addApplyListener (f) {\n applyListeners.push(f);\n};\nEditorState.removeApplyListener = function removeApplyListener (f) {\n var found = applyListeners.indexOf(f);\n if (found > -1) { applyListeners.splice(found, 1); }\n};\n\nObject.defineProperties( EditorState.prototype, prototypeAccessors$1 );\n\nvar applyListeners = [];\n\n// PluginSpec:: interface\n//\n// This is the type passed to the [`Plugin`](#state.Plugin)\n// constructor. It provides a definition for a plugin.\n//\n// props:: ?EditorProps\n// The [view props](#view.EditorProps) added by this plugin. Props\n// that are functions will be bound to have the plugin instance as\n// their `this` binding.\n//\n// state:: ?StateField\n// Allows a plugin to define a [state field](#state.StateField), an\n// extra slot in the state object in which it can keep its own data.\n//\n// key:: ?PluginKey\n// Can be used to make this a keyed plugin. You can have only one\n// plugin with a given key in a given state, but it is possible to\n// access the plugin's configuration and state through the key,\n// without having access to the plugin instance object.\n//\n// view:: ?(EditorView) → Object\n// When the plugin needs to interact with the editor view, or\n// set something up in the DOM, use this field. The function\n// will be called when the plugin's state is associated with an\n// editor view.\n//\n// return::-\n// Should return an object with the following optional\n// properties:\n//\n// update:: ?(view: EditorView, prevState: EditorState)\n// Called whenever the view's state is updated.\n//\n// destroy:: ?()\n// Called when the view is destroyed or receives a state\n// with different plugins.\n//\n// filterTransaction:: ?(Transaction, EditorState) → bool\n// When present, this will be called before a transaction is\n// applied by the state, allowing the plugin to cancel it (by\n// returning false).\n//\n// appendTransaction:: ?(transactions: [Transaction], oldState: EditorState, newState: EditorState) → ?Transaction\n// Allows the plugin to append another transaction to be applied\n// after the given array of transactions. When another plugin\n// appends a transaction after this was called, it is called again\n// with the new state and new transactions—but only the new\n// transactions, i.e. it won't be passed transactions that it\n// already saw.\n\nfunction bindProps(obj, self, target) {\n for (var prop in obj) {\n var val = obj[prop];\n if (val instanceof Function) { val = val.bind(self); }\n else if (prop == \"handleDOMEvents\") { val = bindProps(val, self, {}); }\n target[prop] = val;\n }\n return target\n}\n\n// ::- Plugins bundle functionality that can be added to an editor.\n// They are part of the [editor state](#state.EditorState) and\n// may influence that state and the view that contains it.\nvar Plugin = function Plugin(spec) {\n // :: EditorProps\n // The [props](#view.EditorProps) exported by this plugin.\n this.props = {};\n if (spec.props) { bindProps(spec.props, this, this.props); }\n // :: Object\n // The plugin's [spec object](#state.PluginSpec).\n this.spec = spec;\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n};\n\n// :: (EditorState) → any\n// Extract the plugin's state field from an editor state.\nPlugin.prototype.getState = function getState (state) { return state[this.key] };\n\n// StateField:: interface\n// A plugin spec may provide a state field (under its\n// [`state`](#state.PluginSpec.state) property) of this type, which\n// describes the state it wants to keep. Functions provided here are\n// always called with the plugin instance as their `this` binding.\n//\n// init:: (config: Object, instance: EditorState) → T\n// Initialize the value of the field. `config` will be the object\n// passed to [`EditorState.create`](#state.EditorState^create). Note\n// that `instance` is a half-initialized state instance, and will\n// not have values for plugin fields initialized after this one.\n//\n// apply:: (tr: Transaction, value: T, oldState: EditorState, newState: EditorState) → T\n// Apply the given transaction to this state field, producing a new\n// field value. Note that the `newState` argument is again a partially\n// constructed state does not yet contain the state from plugins\n// coming after this one.\n//\n// toJSON:: ?(value: T) → *\n// Convert this field to JSON. Optional, can be left off to disable\n// JSON serialization for the field.\n//\n// fromJSON:: ?(config: Object, value: *, state: EditorState) → T\n// Deserialize the JSON representation of this field. Note that the\n// `state` argument is again a half-initialized state.\n\nvar keys = Object.create(null);\n\nfunction createKey(name) {\n if (name in keys) { return name + \"$\" + ++keys[name] }\n keys[name] = 0;\n return name + \"$\"\n}\n\n// ::- A key is used to [tag](#state.PluginSpec.key)\n// plugins in a way that makes it possible to find them, given an\n// editor state. Assigning a key does mean only one plugin of that\n// type can be active in a state.\nvar PluginKey = function PluginKey(name) {\nif ( name === void 0 ) name = \"key\";\n this.key = createKey(name); };\n\n// :: (EditorState) → ?Plugin\n// Get the active plugin with this key, if any, from an editor\n// state.\nPluginKey.prototype.get = function get (state) { return state.config.pluginsByKey[this.key] };\n\n// :: (EditorState) → ?any\n// Get the plugin's state from an editor state.\nPluginKey.prototype.getState = function getState (state) { return state[this.key] };\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n//# sourceMappingURL=index.es.js.map\n","import { TextSelection, NodeSelection, Selection, AllSelection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, DOMParser, Slice } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nvar result = {};\n\nif (typeof navigator != \"undefined\" && typeof document != \"undefined\") {\n var ie_edge = /Edge\\/(\\d+)/.exec(navigator.userAgent);\n var ie_upto10 = /MSIE \\d/.test(navigator.userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);\n\n var ie = result.ie = !!(ie_upto10 || ie_11up || ie_edge);\n result.ie_version = ie_upto10 ? document.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : null;\n result.gecko = !ie && /gecko\\/(\\d+)/i.test(navigator.userAgent);\n result.gecko_version = result.gecko && +(/Firefox\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n var chrome = !ie && /Chrome\\/(\\d+)/.exec(navigator.userAgent);\n result.chrome = !!chrome;\n result.chrome_version = chrome && +chrome[1];\n // Is true for both iOS and iPadOS for convenience\n result.safari = !ie && /Apple Computer/.test(navigator.vendor);\n result.ios = result.safari && (/Mobile\\/\\w+/.test(navigator.userAgent) || navigator.maxTouchPoints > 2);\n result.mac = result.ios || /Mac/.test(navigator.platform);\n result.android = /Android \\d/.test(navigator.userAgent);\n result.webkit = \"webkitFontSmoothing\" in document.documentElement.style;\n result.webkit_version = result.webkit && +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n}\n\nvar domIndex = function(node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node) { return index }\n }\n};\n\nvar parentNode = function(node) {\n var parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent\n};\n\nvar reusedRange = null;\n\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nvar textRange = function(node, from, to) {\n var range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range\n};\n\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nvar isEquivalentPosition = function(node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1))\n};\n\nvar atomElements = /^(img|br|input|textarea|hr)$/i;\n\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff) { return true }\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n var parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n { return false }\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n } else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\") { return false }\n off = dir < 0 ? nodeSize(node) : 0;\n } else {\n return false\n }\n }\n}\n\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isOnEdge(node, offset, parent) {\n for (var atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent) { return true }\n var index = domIndex(node);\n node = node.parentNode;\n if (!node) { return false }\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\n\nfunction hasBlockDesc(dom) {\n var desc;\n for (var cur = dom; cur; cur = cur.parentNode) { if (desc = cur.pmViewDesc) { break } }\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom)\n}\n\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nvar selectionCollapsed = function(domSel) {\n var collapsed = domSel.isCollapsed;\n if (collapsed && result.chrome && domSel.rangeCount && !domSel.getRangeAt(0).collapsed)\n { collapsed = false; }\n return collapsed\n};\n\nfunction keyEvent(keyCode, key) {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event\n}\n\nfunction windowRect(doc) {\n return {left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight}\n}\n\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side]\n}\n\nfunction clientRect(node) {\n var rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n var scaleX = (rect.width / node.offsetWidth) || 1;\n var scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return {left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY}\n}\n\nfunction scrollRectIntoView(view, rect, startDOM) {\n var scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n var doc = view.dom.ownerDocument;\n for (var parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent) { break }\n if (parent.nodeType != 1) { continue }\n var atTop = parent == doc.body || parent.nodeType != 1;\n var bounding = atTop ? windowRect(doc) : clientRect(parent);\n var moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n { moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\")); }\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n { moveY = rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\"); }\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n { moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\")); }\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n { moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\"); }\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n } else {\n var startX = parent.scrollLeft, startY = parent.scrollTop;\n if (moveY) { parent.scrollTop += moveY; }\n if (moveX) { parent.scrollLeft += moveX; }\n var dX = parent.scrollLeft - startX, dY = parent.scrollTop - startY;\n rect = {left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY};\n }\n }\n if (atTop) { break }\n }\n}\n\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n var rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n var refDOM, refTop;\n for (var x = (rect.left + rect.right) / 2, y = startY + 1;\n y < Math.min(innerHeight, rect.bottom); y += 5) {\n var dom = view.root.elementFromPoint(x, y);\n if (dom == view.dom || !view.dom.contains(dom)) { continue }\n var localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break\n }\n }\n return {refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom)}\n}\n\nfunction scrollStack(dom) {\n var stack = [], doc = dom.ownerDocument;\n for (; dom; dom = parentNode(dom)) {\n stack.push({dom: dom, top: dom.scrollTop, left: dom.scrollLeft});\n if (dom == doc) { break }\n }\n return stack\n}\n\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos(ref) {\n var refDOM = ref.refDOM;\n var refTop = ref.refTop;\n var stack = ref.stack;\n\n var newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\n\nfunction restoreScrollStack(stack, dTop) {\n for (var i = 0; i < stack.length; i++) {\n var ref = stack[i];\n var dom = ref.dom;\n var top = ref.top;\n var left = ref.left;\n if (dom.scrollTop != top + dTop) { dom.scrollTop = top + dTop; }\n if (dom.scrollLeft != left) { dom.scrollLeft = left; }\n }\n}\n\nvar preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive) { return dom.setActive() } // in IE\n if (preventScrollSupported) { return dom.focus(preventScrollSupported) }\n\n var stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = {preventScroll: true};\n return true\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\n\nfunction findOffsetInNode(node, coords) {\n var closest, dxClosest = 2e8, coordsClosest, offset = 0;\n var rowBot = coords.top, rowTop = coords.top;\n for (var child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n var rects = (void 0);\n if (child.nodeType == 1) { rects = child.getClientRects(); }\n else if (child.nodeType == 3) { rects = textRange(child).getClientRects(); }\n else { continue }\n\n for (var i = 0; i < rects.length; i++) {\n var rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n var dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {left: rect.right < coords.left ? rect.right : rect.left, top: coords.top} : coords;\n if (child.nodeType == 1 && dx)\n { offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0); }\n continue\n }\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n { offset = childIndex + 1; }\n }\n }\n if (closest && closest.nodeType == 3) { return findOffsetInText(closest, coordsClosest) }\n if (!closest || (dxClosest && closest.nodeType == 1)) { return {node: node, offset: offset} }\n return findOffsetInNode(closest, coordsClosest)\n}\n\nfunction findOffsetInText(node, coords) {\n var len = node.nodeValue.length;\n var range = document.createRange();\n for (var i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n var rect = singleRect(range, 1);\n if (rect.top == rect.bottom) { continue }\n if (inRect(coords, rect))\n { return {node: node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0)} }\n }\n return {node: node, offset: 0}\n}\n\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1&&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1\n}\n\nfunction targetKludge(dom, coords) {\n var parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n { return parent }\n return dom\n}\n\nfunction posFromElement(view, elt, coords) {\n var ref = findOffsetInNode(elt, coords);\n var node = ref.node;\n var offset = ref.offset;\n var bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n var rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias)\n}\n\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n var outside = -1;\n for (var cur = node;;) {\n if (cur == view.dom) { break }\n var desc = view.docView.nearestDesc(cur, true);\n if (!desc) { return null }\n if (desc.node.isBlock && desc.parent) {\n var rect = desc.dom.getBoundingClientRect();\n if (rect.left > coords.left || rect.top > coords.top) { outside = desc.posBefore; }\n else if (rect.right < coords.left || rect.bottom < coords.top) { outside = desc.posAfter; }\n else { break }\n }\n cur = desc.dom.parentNode;\n }\n return outside > -1 ? outside : view.docView.posFromDOM(node, offset)\n}\n\nfunction elementFromPoint(element, coords, box) {\n var len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (var startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n var child = element.childNodes[i];\n if (child.nodeType == 1) {\n var rects = child.getClientRects();\n for (var j = 0; j < rects.length; j++) {\n var rect = rects[j];\n if (inRect(coords, rect)) { return elementFromPoint(child, coords, rect) }\n }\n }\n if ((i = (i + 1) % len) == startI) { break }\n }\n }\n return element\n}\n\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n var assign, assign$1;\n\n var doc = view.dom.ownerDocument, node, offset;\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n var pos$1 = doc.caretPositionFromPoint(coords.left, coords.top);\n if (pos$1) { ((assign = pos$1, node = assign.offsetNode, offset = assign.offset)); }\n } catch (_) {}\n }\n if (!node && doc.caretRangeFromPoint) {\n var range = doc.caretRangeFromPoint(coords.left, coords.top);\n if (range) { ((assign$1 = range, node = assign$1.startContainer, offset = assign$1.startOffset)); }\n }\n\n var elt = (view.root.elementFromPoint ? view.root : doc).elementFromPoint(coords.left, coords.top + 1), pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n var box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box)) { return null }\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt) { return null }\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (result.safari) {\n for (var p = elt; node && p; p = parentNode(p))\n { if (p.draggable) { node = offset = null; } }\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (result.gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n var next = node.childNodes[offset], box$1;\n if (next.nodeName == \"IMG\" && (box$1 = next.getBoundingClientRect()).right <= coords.left &&\n box$1.bottom > coords.top)\n { offset++; }\n }\n }\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n { pos = view.state.doc.content.size; }\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n { pos = posFromCaret(view, node, offset, coords); }\n }\n if (pos == null) { pos = posFromElement(view, elt, coords); }\n\n var desc = view.docView.nearestDesc(elt, true);\n return {pos: pos, inside: desc ? desc.posAtStart - desc.border : -1}\n}\n\nfunction singleRect(object, bias) {\n var rects = object.getClientRects();\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1]\n}\n\nvar BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n\n// : (EditorView, number, number) → {left: number, top: number, right: number, bottom: number}\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n var ref = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n var node = ref.node;\n var offset = ref.offset;\n\n var supportEmptyRange = result.webkit || result.gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n var rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (result.gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n var rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n var rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n { return flattenV(rectAfter, rectAfter.left < rectBefore.left) }\n }\n }\n return rect\n } else {\n var from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) { to++; takeSide = -1; }\n else if (side >= 0 && offset == node.nodeValue.length) { from--; takeSide = 1; }\n else if (side < 0) { from--; }\n else { to ++; }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0)\n }\n }\n\n // Return a horizontal line in block context\n if (!view.state.doc.resolve(pos).parent.inlineContent) {\n if (offset && (side < 0 || offset == nodeSize(node))) {\n var before = node.childNodes[offset - 1];\n if (before.nodeType == 1) { return flattenH(before.getBoundingClientRect(), false) }\n }\n if (offset < nodeSize(node)) {\n var after = node.childNodes[offset];\n if (after.nodeType == 1) { return flattenH(after.getBoundingClientRect(), true) }\n }\n return flattenH(node.getBoundingClientRect(), side >= 0)\n }\n\n // Inline, not in text node (this is not Bidi-safe)\n if (offset && (side < 0 || offset == nodeSize(node))) {\n var before$1 = node.childNodes[offset - 1];\n var target = before$1.nodeType == 3 ? textRange(before$1, nodeSize(before$1) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before$1.nodeType == 1 && (before$1.nodeName != \"BR\" || !before$1.nextSibling) ? before$1 : null;\n if (target) { return flattenV(singleRect(target, 1), false) }\n }\n if (offset < nodeSize(node)) {\n var after$1 = node.childNodes[offset];\n while (after$1.pmViewDesc && after$1.pmViewDesc.ignoreForCoords) { after$1 = after$1.nextSibling; }\n var target$1 = !after$1 ? null : after$1.nodeType == 3 ? textRange(after$1, 0, (supportEmptyRange ? 0 : 1))\n : after$1.nodeType == 1 ? after$1 : null;\n if (target$1) { return flattenV(singleRect(target$1, -1), true) }\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0)\n}\n\nfunction flattenV(rect, left) {\n if (rect.width == 0) { return rect }\n var x = left ? rect.left : rect.right;\n return {top: rect.top, bottom: rect.bottom, left: x, right: x}\n}\n\nfunction flattenH(rect, top) {\n if (rect.height == 0) { return rect }\n var y = top ? rect.top : rect.bottom;\n return {top: y, bottom: y, left: rect.left, right: rect.right}\n}\n\nfunction withFlushedState(view, state, f) {\n var viewState = view.state, active = view.root.activeElement;\n if (viewState != state) { view.updateState(state); }\n if (active != view.dom) { view.focus(); }\n try {\n return f()\n } finally {\n if (viewState != state) { view.updateState(viewState); }\n if (active != view.dom && active) { active.focus(); }\n }\n}\n\n// : (EditorView, number, number)\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n var sel = state.selection;\n var $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, function () {\n var ref = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n var dom = ref.node;\n for (;;) {\n var nearest = view.docView.nearestDesc(dom, true);\n if (!nearest) { break }\n if (nearest.node.isBlock) { dom = nearest.dom; break }\n dom = nearest.dom.parentNode;\n }\n var coords = coordsAtPos(view, $pos.pos, 1);\n for (var child = dom.firstChild; child; child = child.nextSibling) {\n var boxes = (void 0);\n if (child.nodeType == 1) { boxes = child.getClientRects(); }\n else if (child.nodeType == 3) { boxes = textRange(child, 0, child.nodeValue.length).getClientRects(); }\n else { continue }\n for (var i = 0; i < boxes.length; i++) {\n var box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n { return false }\n }\n }\n return true\n })\n}\n\nvar maybeRTL = /[\\u0590-\\u08ac]/;\n\nfunction endOfTextblockHorizontal(view, state, dir) {\n var ref = state.selection;\n var $head = ref.$head;\n if (!$head.parent.isTextblock) { return false }\n var offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n var sel = view.root.getSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n { return dir == \"left\" || dir == \"backward\" ? atStart : atEnd }\n\n return withFlushedState(view, state, function () {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n var oldRange = sel.getRangeAt(0), oldNode = sel.focusNode, oldOff = sel.focusOffset;\n var oldBidiLevel = sel.caretBidiLevel; // Only for Firefox\n sel.modify(\"move\", dir, \"character\");\n var parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n var result = !parentDOM.contains(sel.focusNode.nodeType == 1 ? sel.focusNode : sel.focusNode.parentNode) ||\n (oldNode == sel.focusNode && oldOff == sel.focusOffset);\n // Restore the previous selection\n sel.removeAllRanges();\n sel.addRange(oldRange);\n if (oldBidiLevel != null) { sel.caretBidiLevel = oldBidiLevel; }\n return result\n })\n}\n\nvar cachedState = null, cachedDir = null, cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir) { return cachedResult }\n cachedState = state; cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir)\n}\n\n// NodeView:: interface\n//\n// By default, document nodes are rendered using the result of the\n// [`toDOM`](#model.NodeSpec.toDOM) method of their spec, and managed\n// entirely by the editor. For some use cases, such as embedded\n// node-specific editing interfaces, you want more control over\n// the behavior of a node's in-editor representation, and need to\n// [define](#view.EditorProps.nodeViews) a custom node view.\n//\n// Mark views only support `dom` and `contentDOM`, and don't support\n// any of the node view methods.\n//\n// Objects returned as node views must conform to this interface.\n//\n// dom:: ?dom.Node\n// The outer DOM node that represents the document node. When not\n// given, the default strategy is used to create a DOM node.\n//\n// contentDOM:: ?dom.Node\n// The DOM node that should hold the node's content. Only meaningful\n// if the node view also defines a `dom` property and if its node\n// type is not a leaf node type. When this is present, ProseMirror\n// will take care of rendering the node's children into it. When it\n// is not present, the node view itself is responsible for rendering\n// (or deciding not to render) its child nodes.\n//\n// update:: ?(node: Node, decorations: [Decoration], innerDecorations: DecorationSource) → bool\n// When given, this will be called when the view is updating itself.\n// It will be given a node (possibly of a different type), an array\n// of active decorations around the node (which are automatically\n// drawn, and the node view may ignore if it isn't interested in\n// them), and a [decoration source](#view.DecorationSource) that\n// represents any decorations that apply to the content of the node\n// (which again may be ignored). It should return true if it was\n// able to update to that node, and false otherwise. If the node\n// view has a `contentDOM` property (or no `dom` property), updating\n// its child nodes will be handled by ProseMirror.\n//\n// selectNode:: ?()\n// Can be used to override the way the node's selected status (as a\n// node selection) is displayed.\n//\n// deselectNode:: ?()\n// When defining a `selectNode` method, you should also provide a\n// `deselectNode` method to remove the effect again.\n//\n// setSelection:: ?(anchor: number, head: number, root: dom.Document)\n// This will be called to handle setting the selection inside the\n// node. The `anchor` and `head` positions are relative to the start\n// of the node. By default, a DOM selection will be created between\n// the DOM positions corresponding to those positions, but if you\n// override it you can do something else.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to prevent the editor view from trying to handle some\n// or all DOM events that bubble up from the node view. Events for\n// which this returns true are not handled by the editor.\n//\n// ignoreMutation:: ?(dom.MutationRecord) → bool\n// Called when a DOM\n// [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)\n// or a selection change happens within the view. When the change is\n// a selection change, the record will have a `type` property of\n// `\"selection\"` (which doesn't occur for native mutation records).\n// Return false if the editor should re-read the selection or\n// re-parse the range around the mutation, true if it can safely be\n// ignored.\n//\n// destroy:: ?()\n// Called when the node view is removed from the editor or the whole\n// editor is destroyed. (Not available for marks.)\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\n\nvar NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nvar ViewDesc = function ViewDesc(parent, children, dom, contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n};\n\nvar prototypeAccessors = { size: { configurable: true },border: { configurable: true },posBefore: { configurable: true },posAtStart: { configurable: true },posAfter: { configurable: true },posAtEnd: { configurable: true },contentLost: { configurable: true },domAtom: { configurable: true },ignoreForCoords: { configurable: true } };\n\n// Used to check whether a given description corresponds to a\n// widget/mark/node.\nViewDesc.prototype.matchesWidget = function matchesWidget () { return false };\nViewDesc.prototype.matchesMark = function matchesMark () { return false };\nViewDesc.prototype.matchesNode = function matchesNode () { return false };\nViewDesc.prototype.matchesHack = function matchesHack (_nodeName) { return false };\n\n// : () → ?ParseRule\n// When parsing in-editor content (in domchange.js), we allow\n// descriptions to determine the parse rules that should be used to\n// parse them.\nViewDesc.prototype.parseRule = function parseRule () { return null };\n\n// : (dom.Event) → bool\n// Used by the editor's event handler to ignore events that come\n// from certain descs.\nViewDesc.prototype.stopEvent = function stopEvent () { return false };\n\n// The size of the content represented by this desc.\nprototypeAccessors.size.get = function () {\n var size = 0;\n for (var i = 0; i < this.children.length; i++) { size += this.children[i].size; }\n return size\n};\n\n// For block nodes, this represents the space taken up by their\n// start/end tokens.\nprototypeAccessors.border.get = function () { return 0 };\n\nViewDesc.prototype.destroy = function destroy () {\n this.parent = null;\n if (this.dom.pmViewDesc == this) { this.dom.pmViewDesc = null; }\n for (var i = 0; i < this.children.length; i++)\n { this.children[i].destroy(); }\n};\n\nViewDesc.prototype.posBeforeChild = function posBeforeChild (child) {\n for (var i = 0, pos = this.posAtStart; i < this.children.length; i++) {\n var cur = this.children[i];\n if (cur == child) { return pos }\n pos += cur.size;\n }\n};\n\nprototypeAccessors.posBefore.get = function () {\n return this.parent.posBeforeChild(this)\n};\n\nprototypeAccessors.posAtStart.get = function () {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0\n};\n\nprototypeAccessors.posAfter.get = function () {\n return this.posBefore + this.size\n};\n\nprototypeAccessors.posAtEnd.get = function () {\n return this.posAtStart + this.size - 2 * this.border\n};\n\n// : (dom.Node, number, ?number) → number\nViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n var domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this)) { domBefore = domBefore.previousSibling; }\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart\n } else {\n var domAfter, desc$1;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc$1 = domAfter.pmViewDesc) && desc$1.parent == this)) { domAfter = domAfter.nextSibling; }\n return domAfter ? this.posBeforeChild(desc$1) : this.posAtEnd\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n var atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n } else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n } else if (this.dom.firstChild) {\n if (offset == 0) { for (var search = dom;; search = search.parentNode) {\n if (search == this.dom) { atEnd = false; break }\n if (search.parentNode.firstChild != search) { break }\n } }\n if (atEnd == null && offset == dom.childNodes.length) { for (var search$1 = dom;; search$1 = search$1.parentNode) {\n if (search$1 == this.dom) { atEnd = true; break }\n if (search$1.parentNode.lastChild != search$1) { break }\n } }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart\n};\n\n// Scan up the dom finding the first desc that is a descendant of\n// this one.\nViewDesc.prototype.nearestDesc = function nearestDesc (dom, onlyNodes) {\n for (var first = true, cur = dom; cur; cur = cur.parentNode) {\n var desc = this.getDesc(cur);\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && desc.nodeDOM &&\n !(desc.nodeDOM.nodeType == 1 ? desc.nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : desc.nodeDOM == dom))\n { first = false; }\n else\n { return desc }\n }\n }\n};\n\nViewDesc.prototype.getDesc = function getDesc (dom) {\n var desc = dom.pmViewDesc;\n for (var cur = desc; cur; cur = cur.parent) { if (cur == this) { return desc } }\n};\n\nViewDesc.prototype.posFromDOM = function posFromDOM (dom, offset, bias) {\n for (var scan = dom; scan; scan = scan.parentNode) {\n var desc = this.getDesc(scan);\n if (desc) { return desc.localPosFromDOM(dom, offset, bias) }\n }\n return -1\n};\n\n// : (number) → ?NodeViewDesc\n// Find the desc for the node after the given pos, if any. (When a\n// parent node overrode rendering, there might not be one.)\nViewDesc.prototype.descAt = function descAt (pos) {\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) { child = child.children[0]; }\n return child\n }\n if (pos < end) { return child.descAt(pos - offset - child.border) }\n offset = end;\n }\n};\n\n// : (number, number) → {node: dom.Node, offset: number}\nViewDesc.prototype.domFromPos = function domFromPos (pos, side) {\n if (!this.contentDOM) { return {node: this.dom, offset: 0} }\n // First find the position in the child array\n var i = 0, offset = 0;\n for (var curPos = 0; i < this.children.length; i++) {\n var child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) { offset = pos - curPos; break }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset) { return this.children[i].domFromPos(offset - this.children[i].border, side) }\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (var prev = (void 0); i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.widget.type.side >= 0; i--) {}\n // Scan towards the first useable node\n if (side <= 0) {\n var prev$1, enter = true;\n for (;; i--, enter = false) {\n prev$1 = i ? this.children[i - 1] : null;\n if (!prev$1 || prev$1.dom.parentNode == this.contentDOM) { break }\n }\n if (prev$1 && side && enter && !prev$1.border && !prev$1.domAtom) { return prev$1.domFromPos(prev$1.size, side) }\n return {node: this.contentDOM, offset: prev$1 ? domIndex(prev$1.dom) + 1 : 0}\n } else {\n var next, enter$1 = true;\n for (;; i++, enter$1 = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM) { break }\n }\n if (next && enter$1 && !next.border && !next.domAtom) { return next.domFromPos(0, side) }\n return {node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length}\n }\n};\n\n// Used to find a DOM range in a single parent for a given changed\n// range.\nViewDesc.prototype.parseRange = function parseRange (from, to, base) {\n if ( base === void 0 ) base = 0;\n\n if (this.children.length == 0)\n { return {node: this.contentDOM, from: from, to: to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length} }\n\n var fromOffset = -1, toOffset = -1;\n for (var offset = base, i = 0;; i++) {\n var child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n var childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n { return child.parseRange(from, to, childBase) }\n\n from = offset;\n for (var j = i; j > 0; j--) {\n var prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break\n }\n from -= prev.size;\n }\n if (fromOffset == -1) { fromOffset = 0; }\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (var j$1 = i + 1; j$1 < this.children.length; j$1++) {\n var next = this.children[j$1];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break\n }\n to += next.size;\n }\n if (toOffset == -1) { toOffset = this.contentDOM.childNodes.length; }\n break\n }\n offset = end;\n }\n return {node: this.contentDOM, from: from, to: to, fromOffset: fromOffset, toOffset: toOffset}\n};\n\nViewDesc.prototype.emptyChildAt = function emptyChildAt (side) {\n if (this.border || !this.contentDOM || !this.children.length) { return false }\n var child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side)\n};\n\n// : (number) → dom.Node\nViewDesc.prototype.domAfterPos = function domAfterPos (pos) {\n var ref = this.domFromPos(pos, 0);\n var node = ref.node;\n var offset = ref.offset;\n if (node.nodeType != 1 || offset == node.childNodes.length)\n { throw new RangeError(\"No node after pos \" + pos) }\n return node.childNodes[offset]\n};\n\n// : (number, number, dom.Document)\n// View descs are responsible for setting any selection that falls\n// entirely inside of them, so that custom implementations can do\n// custom things with the selection. Note that this falls apart when\n// a selection starts in such a node and ends in another, in which\n// case we just use whatever domFromPos produces as a best effort.\nViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n // If the selection falls entirely in a child, give it to that child\n var from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n { return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force) }\n offset = end;\n }\n\n var anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n var headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n var domSel = root.getSelection();\n\n var brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((result.gecko || result.safari) && anchor == head) {\n var node = anchorDOM.node;\n var offset$1 = anchorDOM.offset;\n if (node.nodeType == 3) {\n brKludge = offset$1 && node.nodeValue[offset$1 - 1] == \"\\n\";\n // Issue #1128\n if (brKludge && offset$1 == node.nodeValue.length) {\n for (var scan = node, after = (void 0); scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n { anchorDOM = headDOM = {node: after.parentNode, offset: domIndex(after) + 1}; }\n break\n }\n var desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock) { break }\n }\n }\n } else {\n var prev = node.childNodes[offset$1 - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (result.gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n var after$1 = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after$1 && after$1.contentEditable == \"false\") { force = true; }\n }\n\n if (!(force || brKludge && result.safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n { return }\n\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n var domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head) { domSel.extend(headDOM.node, headDOM.offset); }\n domSelExtended = true;\n } catch (err) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n if (!(err instanceof DOMException)) { throw err }\n // declare global: DOMException\n }\n }\n if (!domSelExtended) {\n if (anchor > head) { var tmp = anchorDOM; anchorDOM = headDOM; headDOM = tmp; }\n var range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n};\n\n// : (dom.MutationRecord) → bool\nViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return !this.contentDOM && mutation.type != \"selection\"\n};\n\nprototypeAccessors.contentLost.get = function () {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM)\n};\n\n// Remove a subtree of the element tree that has been touched\n// by a DOM change, so that the next update will redraw it.\nViewDesc.prototype.markDirty = function markDirty (from, to) {\n for (var offset = 0, i = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n var startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM)) { child.dirty = NODE_DIRTY; }\n else { child.markDirty(from - startInside, to - startInside); }\n return\n } else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n};\n\nViewDesc.prototype.markParentsDirty = function markParentsDirty () {\n var level = 1;\n for (var node = this.parent; node; node = node.parent, level++) {\n var dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty) { node.dirty = dirty; }\n }\n};\n\nprototypeAccessors.domAtom.get = function () { return false };\n\nprototypeAccessors.ignoreForCoords.get = function () { return false };\n\nObject.defineProperties( ViewDesc.prototype, prototypeAccessors );\n\n// Reused array to avoid allocating fresh arrays for things that will\n// stay empty anyway.\nvar nothing = [];\n\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nvar WidgetViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function WidgetViewDesc(parent, widget, view, pos) {\n var self, dom = widget.type.toDOM;\n if (typeof dom == \"function\") { dom = dom(view, function () {\n if (!self) { return pos }\n if (self.parent) { return self.parent.posBeforeChild(self) }\n }); }\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n var wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = false;\n dom.classList.add(\"ProseMirror-widget\");\n }\n ViewDesc.call(this, parent, nothing, dom, null);\n this.widget = widget;\n self = this;\n }\n\n if ( ViewDesc ) WidgetViewDesc.__proto__ = ViewDesc;\n WidgetViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n WidgetViewDesc.prototype.constructor = WidgetViewDesc;\n\n var prototypeAccessors$1 = { domAtom: { configurable: true } };\n\n WidgetViewDesc.prototype.matchesWidget = function matchesWidget (widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type)\n };\n\n WidgetViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n\n WidgetViewDesc.prototype.stopEvent = function stopEvent (event) {\n var stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false\n };\n\n WidgetViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection\n };\n\n WidgetViewDesc.prototype.destroy = function destroy () {\n this.widget.type.destroy(this.dom);\n ViewDesc.prototype.destroy.call(this);\n };\n\n prototypeAccessors$1.domAtom.get = function () { return true };\n\n Object.defineProperties( WidgetViewDesc.prototype, prototypeAccessors$1 );\n\n return WidgetViewDesc;\n}(ViewDesc));\n\nvar CompositionViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function CompositionViewDesc(parent, dom, textDOM, text) {\n ViewDesc.call(this, parent, nothing, dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n\n if ( ViewDesc ) CompositionViewDesc.__proto__ = ViewDesc;\n CompositionViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n CompositionViewDesc.prototype.constructor = CompositionViewDesc;\n\n var prototypeAccessors$2 = { size: { configurable: true } };\n\n prototypeAccessors$2.size.get = function () { return this.text.length };\n\n CompositionViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset) {\n if (dom != this.textDOM) { return this.posAtStart + (offset ? this.size : 0) }\n return this.posAtStart + offset\n };\n\n CompositionViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.textDOM, offset: pos}\n };\n\n CompositionViewDesc.prototype.ignoreMutation = function ignoreMutation (mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue\n };\n\n Object.defineProperties( CompositionViewDesc.prototype, prototypeAccessors$2 );\n\n return CompositionViewDesc;\n}(ViewDesc));\n\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nvar MarkViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function MarkViewDesc(parent, mark, dom, contentDOM) {\n ViewDesc.call(this, parent, [], dom, contentDOM);\n this.mark = mark;\n }\n\n if ( ViewDesc ) MarkViewDesc.__proto__ = ViewDesc;\n MarkViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n MarkViewDesc.prototype.constructor = MarkViewDesc;\n\n MarkViewDesc.create = function create (parent, mark, inline, view) {\n var custom = view.nodeViews[mark.type.name];\n var spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n { spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline)); }\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom)\n };\n\n MarkViewDesc.prototype.parseRule = function parseRule () {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView) { return null }\n return {mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM}\n };\n\n MarkViewDesc.prototype.matchesMark = function matchesMark (mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark) };\n\n MarkViewDesc.prototype.markDirty = function markDirty (from, to) {\n ViewDesc.prototype.markDirty.call(this, from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n var parent = this.parent;\n while (!parent.node) { parent = parent.parent; }\n if (parent.dirty < this.dirty) { parent.dirty = this.dirty; }\n this.dirty = NOT_DIRTY;\n }\n };\n\n MarkViewDesc.prototype.slice = function slice (from, to, view) {\n var copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n var nodes = this.children, size = this.size;\n if (to < size) { nodes = replaceNodes(nodes, to, size, view); }\n if (from > 0) { nodes = replaceNodes(nodes, 0, from, view); }\n for (var i = 0; i < nodes.length; i++) { nodes[i].parent = copy; }\n copy.children = nodes;\n return copy\n };\n\n return MarkViewDesc;\n}(ViewDesc));\n\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nvar NodeViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n ViewDesc.call(this, parent, node.isLeaf ? nothing : [], dom, contentDOM);\n this.nodeDOM = nodeDOM;\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n if (contentDOM) { this.updateChildren(view, pos); }\n }\n\n if ( ViewDesc ) NodeViewDesc.__proto__ = ViewDesc;\n NodeViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n NodeViewDesc.prototype.constructor = NodeViewDesc;\n\n var prototypeAccessors$3 = { size: { configurable: true },border: { configurable: true },domAtom: { configurable: true } };\n\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n NodeViewDesc.create = function create (parent, node, outerDeco, innerDeco, view, pos) {\n var assign;\n\n var custom = view.nodeViews[node.type.name], descObj;\n var spec = custom && custom(node, view, function () {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj) { return pos }\n if (descObj.parent) { return descObj.parent.posBeforeChild(descObj) }\n }, outerDeco, innerDeco);\n\n var dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom) { dom = document.createTextNode(node.text); }\n else if (dom.nodeType != 3) { throw new RangeError(\"Text must be rendered as a DOM text node\") }\n } else if (!dom) {\n((assign = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)), dom = assign.dom, contentDOM = assign.contentDOM));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
\n if (!dom.hasAttribute(\"contenteditable\")) { dom.contentEditable = false; }\n if (node.type.spec.draggable) { dom.draggable = true; }\n }\n\n var nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n\n if (spec)\n { return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM,\n spec, view, pos + 1) }\n else if (node.isText)\n { return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) }\n else\n { return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos + 1) }\n };\n\n NodeViewDesc.prototype.parseRule = function parseRule () {\n var this$1 = this;\n\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView) { return null }\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n var rule = {node: this.node.type.name, attrs: this.node.attrs};\n if (this.node.type.whitespace == \"pre\") { rule.preserveWhitespace = \"full\"; }\n if (this.contentDOM && !this.contentLost) { rule.contentElement = this.contentDOM; }\n else { rule.getContent = function () { return this$1.contentDOM ? Fragment.empty : this$1.node.content; }; }\n return rule\n };\n\n NodeViewDesc.prototype.matchesNode = function matchesNode (node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco)\n };\n\n prototypeAccessors$3.size.get = function () { return this.node.nodeSize };\n\n prototypeAccessors$3.border.get = function () { return this.node.isLeaf ? 0 : 1 };\n\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n NodeViewDesc.prototype.updateChildren = function updateChildren (view, pos) {\n var this$1 = this;\n\n var inline = this.node.inlineContent, off = pos;\n var composition = view.composing && this.localCompositionInfo(view, pos);\n var localComposition = composition && composition.pos > -1 ? composition : null;\n var compositionInChild = composition && composition.pos < 0;\n var updater = new ViewTreeUpdater(this, localComposition && localComposition.node);\n iterDeco(this.node, this.innerDeco, function (widget, i, insideNode) {\n if (widget.spec.marks)\n { updater.syncToMarks(widget.spec.marks, inline, view); }\n else if (widget.type.side >= 0 && !insideNode)\n { updater.syncToMarks(i == this$1.node.childCount ? Mark.none : this$1.node.child(i).marks, inline, view); }\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, function (child, outerDeco, innerDeco, i) {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n var compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ; else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ; else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i)) ; else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks(nothing, inline, view);\n if (this.node.isTextblock) { updater.addTextblockHacks(); }\n updater.destroyRest();\n\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition) { this.protectLocalComposition(view, localComposition); }\n renderDescs(this.contentDOM, this.children, view);\n if (result.ios) { iosHacks(this.dom); }\n }\n };\n\n NodeViewDesc.prototype.localCompositionInfo = function localCompositionInfo (view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n var ref = view.state.selection;\n var from = ref.from;\n var to = ref.to;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size) { return }\n var sel = view.root.getSelection();\n var textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode)) { return }\n\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n var text = textNode.nodeValue;\n var textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : {node: textNode, pos: textPos, text: text}\n } else {\n return {node: textNode, pos: -1}\n }\n };\n\n NodeViewDesc.prototype.protectLocalComposition = function protectLocalComposition (view, ref) {\n var node = ref.node;\n var pos = ref.pos;\n var text = ref.text;\n\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node)) { return }\n\n // Create a composition view for the orphaned nodes\n var topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM) { break }\n while (topNode.previousSibling) { topNode.parentNode.removeChild(topNode.previousSibling); }\n while (topNode.nextSibling) { topNode.parentNode.removeChild(topNode.nextSibling); }\n if (topNode.pmViewDesc) { topNode.pmViewDesc = null; }\n }\n var desc = new CompositionViewDesc(this, topNode, node, text);\n view.compositionNodes.push(desc);\n\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n };\n\n // : (Node, [Decoration], DecorationSource, EditorView) → bool\n // If this desc be updated to match the given node decoration,\n // do so and return true.\n NodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node)) { return false }\n this.updateInner(node, outerDeco, innerDeco, view);\n return true\n };\n\n NodeViewDesc.prototype.updateInner = function updateInner (node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM) { this.updateChildren(view, this.posAtStart); }\n this.dirty = NOT_DIRTY;\n };\n\n NodeViewDesc.prototype.updateOuterDeco = function updateOuterDeco (outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco)) { return }\n var needsWrap = this.nodeDOM.nodeType != 1;\n var oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM,\n computeOuterDeco(this.outerDeco, this.node, needsWrap),\n computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = null;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n };\n\n // Mark this node as being the selected node.\n NodeViewDesc.prototype.selectNode = function selectNode () {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.draggable = true; }\n };\n\n // Remove selected node marking from this node.\n NodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.removeAttribute(\"draggable\"); }\n };\n\n prototypeAccessors$3.domAtom.get = function () { return this.node.isAtom };\n\n Object.defineProperties( NodeViewDesc.prototype, prototypeAccessors$3 );\n\n return NodeViewDesc;\n}(ViewDesc));\n\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n return new NodeViewDesc(null, doc, outerDeco, innerDeco, dom, dom, dom, view, 0)\n}\n\nvar TextViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view);\n }\n\n if ( NodeViewDesc ) TextViewDesc.__proto__ = NodeViewDesc;\n TextViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n TextViewDesc.prototype.constructor = TextViewDesc;\n\n var prototypeAccessors$4 = { domAtom: { configurable: true } };\n\n TextViewDesc.prototype.parseRule = function parseRule () {\n var skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco) { skip = skip.parentNode; }\n return {skip: skip || true}\n };\n\n TextViewDesc.prototype.update = function update (node, outerDeco, _, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node)) { return false }\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM) { view.trackWrites = null; }\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true\n };\n\n TextViewDesc.prototype.inParent = function inParent () {\n var parentDOM = this.parent.contentDOM;\n for (var n = this.nodeDOM; n; n = n.parentNode) { if (n == parentDOM) { return true } }\n return false\n };\n\n TextViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.nodeDOM, offset: pos}\n };\n\n TextViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n if (dom == this.nodeDOM) { return this.posAtStart + Math.min(offset, this.node.text.length) }\n return NodeViewDesc.prototype.localPosFromDOM.call(this, dom, offset, bias)\n };\n\n TextViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\"\n };\n\n TextViewDesc.prototype.slice = function slice (from, to, view) {\n var node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view)\n };\n\n TextViewDesc.prototype.markDirty = function markDirty (from, to) {\n NodeViewDesc.prototype.markDirty.call(this, from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n { this.dirty = NODE_DIRTY; }\n };\n\n prototypeAccessors$4.domAtom.get = function () { return false };\n\n Object.defineProperties( TextViewDesc.prototype, prototypeAccessors$4 );\n\n return TextViewDesc;\n}(NodeViewDesc));\n\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nvar TrailingHackViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function TrailingHackViewDesc () {\n ViewDesc.apply(this, arguments);\n }\n\n if ( ViewDesc ) TrailingHackViewDesc.__proto__ = ViewDesc;\n TrailingHackViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n TrailingHackViewDesc.prototype.constructor = TrailingHackViewDesc;\n\n var prototypeAccessors$5 = { domAtom: { configurable: true },ignoreForCoords: { configurable: true } };\n\n TrailingHackViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n TrailingHackViewDesc.prototype.matchesHack = function matchesHack (nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName };\n prototypeAccessors$5.domAtom.get = function () { return true };\n prototypeAccessors$5.ignoreForCoords.get = function () { return this.dom.nodeName == \"IMG\" };\n\n Object.defineProperties( TrailingHackViewDesc.prototype, prototypeAccessors$5 );\n\n return TrailingHackViewDesc;\n}(ViewDesc));\n\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nvar CustomNodeViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n\n if ( NodeViewDesc ) CustomNodeViewDesc.__proto__ = NodeViewDesc;\n CustomNodeViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n CustomNodeViewDesc.prototype.constructor = CustomNodeViewDesc;\n\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n CustomNodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY) { return false }\n if (this.spec.update) {\n var result = this.spec.update(node, outerDeco, innerDeco);\n if (result) { this.updateInner(node, outerDeco, innerDeco, view); }\n return result\n } else if (!this.contentDOM && !node.isLeaf) {\n return false\n } else {\n return NodeViewDesc.prototype.update.call(this, node, outerDeco, innerDeco, view)\n }\n };\n\n CustomNodeViewDesc.prototype.selectNode = function selectNode () {\n this.spec.selectNode ? this.spec.selectNode() : NodeViewDesc.prototype.selectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.spec.deselectNode ? this.spec.deselectNode() : NodeViewDesc.prototype.deselectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : NodeViewDesc.prototype.setSelection.call(this, anchor, head, root, force);\n };\n\n CustomNodeViewDesc.prototype.destroy = function destroy () {\n if (this.spec.destroy) { this.spec.destroy(); }\n NodeViewDesc.prototype.destroy.call(this);\n };\n\n CustomNodeViewDesc.prototype.stopEvent = function stopEvent (event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false\n };\n\n CustomNodeViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : NodeViewDesc.prototype.ignoreMutation.call(this, mutation)\n };\n\n return CustomNodeViewDesc;\n}(NodeViewDesc));\n\n// : (dom.Node, [ViewDesc])\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n var dom = parentDOM.firstChild, written = false;\n for (var i = 0; i < descs.length; i++) {\n var desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) { dom = rm(dom); written = true; }\n dom = dom.nextSibling;\n } else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n var pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) { dom = rm(dom); written = true; }\n if (written && view.trackWrites == parentDOM) { view.trackWrites = null; }\n}\n\nfunction OuterDecoLevel(nodeName) {\n if (nodeName) { this.nodeName = nodeName; }\n}\nOuterDecoLevel.prototype = Object.create(null);\n\nvar noDeco = [new OuterDecoLevel];\n\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0) { return noDeco }\n\n var top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n\n for (var i = 0; i < outerDeco.length; i++) {\n var attrs = outerDeco[i].type.attrs;\n if (!attrs) { continue }\n if (attrs.nodeName)\n { result.push(top = new OuterDecoLevel(attrs.nodeName)); }\n\n for (var name in attrs) {\n var val = attrs[name];\n if (val == null) { continue }\n if (needsWrap && result.length == 1)\n { result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\")); }\n if (name == \"class\") { top.class = (top.class ? top.class + \" \" : \"\") + val; }\n else if (name == \"style\") { top.style = (top.style ? top.style + \";\" : \"\") + val; }\n else if (name != \"nodeName\") { top[name] = val; }\n }\n }\n\n return result\n}\n\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco) { return nodeDOM }\n\n var curDOM = nodeDOM;\n for (var i = 0; i < curComputed.length; i++) {\n var deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n var parent = (void 0);\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.tagName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n } else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM\n}\n\nfunction patchAttributes(dom, prev, cur) {\n for (var name in prev)\n { if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n { dom.removeAttribute(name); } }\n for (var name$1 in cur)\n { if (name$1 != \"class\" && name$1 != \"style\" && name$1 != \"nodeName\" && cur[name$1] != prev[name$1])\n { dom.setAttribute(name$1, cur[name$1]); } }\n if (prev.class != cur.class) {\n var prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : nothing;\n var curList = cur.class ? cur.class.split(\" \").filter(Boolean) : nothing;\n for (var i = 0; i < prevList.length; i++) { if (curList.indexOf(prevList[i]) == -1)\n { dom.classList.remove(prevList[i]); } }\n for (var i$1 = 0; i$1 < curList.length; i$1++) { if (prevList.indexOf(curList[i$1]) == -1)\n { dom.classList.add(curList[i$1]); } }\n if (dom.classList.length == 0)\n { dom.removeAttribute(\"class\"); }\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n var prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n { dom.style.removeProperty(m[1]); }\n }\n if (cur.style)\n { dom.style.cssText += cur.style; }\n }\n}\n\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1))\n}\n\n// : ([Decoration], [Decoration]) → bool\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!a[i].type.eq(b[i].type)) { return false } }\n return true\n}\n\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n var next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next\n}\n\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nvar ViewTreeUpdater = function ViewTreeUpdater(top, lockedNode) {\n this.top = top;\n this.lock = lockedNode;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n\n this.preMatch = preMatch(top.node.content, top);\n};\n\n// Destroy and remove the children between the given indices in\n// `this.top`.\nViewTreeUpdater.prototype.destroyBetween = function destroyBetween (start, end) {\n if (start == end) { return }\n for (var i = start; i < end; i++) { this.top.children[i].destroy(); }\n this.top.children.splice(start, end - start);\n this.changed = true;\n};\n\n// Destroy all remaining children in `this.top`.\nViewTreeUpdater.prototype.destroyRest = function destroyRest () {\n this.destroyBetween(this.index, this.top.children.length);\n};\n\n// : ([Mark], EditorView)\n// Sync the current stack of mark descs with the given array of\n// marks, reusing existing mark descs when possible.\nViewTreeUpdater.prototype.syncToMarks = function syncToMarks (marks, inline, view) {\n var keep = 0, depth = this.stack.length >> 1;\n var maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1]).matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n { keep++; }\n\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n var found = -1;\n for (var i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n if (this.top.children[i].matchesMark(marks[depth])) { found = i; break }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n } else {\n var markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n};\n\n// : (Node, [Decoration], DecorationSource) → bool\n// Try to find a node desc matching the given data. Skip over it and\n// return true when successful.\nViewTreeUpdater.prototype.findNodeMatch = function findNodeMatch (node, outerDeco, innerDeco, index) {\n var found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n } else {\n for (var i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n var child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break\n }\n }\n }\n if (found < 0) { return false }\n this.destroyBetween(this.index, found);\n this.index++;\n return true\n};\n\nViewTreeUpdater.prototype.updateNodeAt = function updateNodeAt (node, outerDeco, innerDeco, index, view) {\n var child = this.top.children[index];\n if (!child.update(node, outerDeco, innerDeco, view)) { return false }\n this.destroyBetween(this.index, index);\n this.index = index + 1;\n return true\n};\n\nViewTreeUpdater.prototype.findIndexWithChild = function findIndexWithChild (domNode) {\n for (;;) {\n var parent = domNode.parentNode;\n if (!parent) { return -1 }\n if (parent == this.top.contentDOM) {\n var desc = domNode.pmViewDesc;\n if (desc) { for (var i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc) { return i }\n } }\n return -1\n }\n domNode = parent;\n }\n};\n\n// : (Node, [Decoration], DecorationSource, EditorView, Fragment, number) → bool\n// Try to update the next node, if any, to the given data. Checks\n// pre-matches to avoid overwriting nodes that could still be used.\nViewTreeUpdater.prototype.updateNextNode = function updateNextNode (node, outerDeco, innerDeco, view, index) {\n for (var i = this.index; i < this.top.children.length; i++) {\n var next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n var preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index) { return false }\n var nextDOM = next.dom;\n\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n var locked = this.lock && (nextDOM == this.lock || nextDOM.nodeType == 1 && nextDOM.contains(this.lock.parentNode)) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM) { this.changed = true; }\n this.index++;\n return true\n }\n break\n }\n }\n return false\n};\n\n// : (Node, [Decoration], DecorationSource, EditorView)\n// Insert the node as a newly created node desc.\nViewTreeUpdater.prototype.addNode = function addNode (node, outerDeco, innerDeco, view, pos) {\n this.top.children.splice(this.index++, 0, NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos));\n this.changed = true;\n};\n\nViewTreeUpdater.prototype.placeWidget = function placeWidget (widget, view, pos) {\n var next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) && (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n } else {\n var desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n};\n\n// Make sure a textblock looks and behaves correctly in\n// contentEditable.\nViewTreeUpdater.prototype.addTextblockHacks = function addTextblockHacks () {\n var lastChild = this.top.children[this.index - 1];\n while (lastChild instanceof MarkViewDesc) { lastChild = lastChild.children[lastChild.children.length - 1]; }\n\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text)) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((result.safari || result.chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n { this.addHackNode(\"IMG\"); }\n this.addHackNode(\"BR\");\n }\n};\n\nViewTreeUpdater.prototype.addHackNode = function addHackNode (nodeName) {\n if (this.index < this.top.children.length && this.top.children[this.index].matchesHack(nodeName)) {\n this.index++;\n } else {\n var dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\") { dom.className = \"ProseMirror-trailingBreak\"; }\n this.top.children.splice(this.index++, 0, new TrailingHackViewDesc(this.top, nothing, dom, null));\n this.changed = true;\n }\n};\n\n// : (Fragment, [ViewDesc]) → {index: number, matched: Map, matches: ViewDesc[]}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n var curDesc = parentDesc, descI = curDesc.children.length;\n var fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n var desc = (void 0);\n for (;;) {\n if (descI) {\n var next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n } else {\n desc = next;\n descI--;\n break\n }\n } else if (curDesc == parentDesc) {\n break outer\n } else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n var node = desc.node;\n if (!node) { continue }\n if (node != frag.child(fI - 1)) { break }\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return {index: fI, matched: matched, matches: matches.reverse()}\n}\n\nfunction compareSide(a, b) { return a.type.side - b.type.side }\n\n// : (ViewDesc, DecorationSource, (Decoration, number), (Node, [Decoration], DecorationSource, number))\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n var locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (var i = 0; i < parent.childCount; i++) {\n var child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return\n }\n\n var decoIndex = 0, active = [], restNode = null;\n for (var parentIndex = 0;;) {\n if (decoIndex < locals.length && locals[decoIndex].to == offset) {\n var widget = locals[decoIndex++], widgets = (void 0);\n while (decoIndex < locals.length && locals[decoIndex].to == offset)\n { (widgets || (widgets = [widget])).push(locals[decoIndex++]); }\n if (widgets) {\n widgets.sort(compareSide);\n for (var i$1 = 0; i$1 < widgets.length; i$1++) { onWidget(widgets[i$1], parentIndex, !!restNode); }\n } else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n\n var child$1 = (void 0), index = (void 0);\n if (restNode) {\n index = -1;\n child$1 = restNode;\n restNode = null;\n } else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child$1 = parent.child(parentIndex++);\n } else {\n break\n }\n\n for (var i$2 = 0; i$2 < active.length; i$2++) { if (active[i$2].to <= offset) { active.splice(i$2--, 1); } }\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n { active.push(locals[decoIndex++]); }\n\n var end = offset + child$1.nodeSize;\n if (child$1.isText) {\n var cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt) { cutAt = locals[decoIndex].from; }\n for (var i$3 = 0; i$3 < active.length; i$3++) { if (active[i$3].to < cutAt) { cutAt = active[i$3].to; } }\n if (cutAt < end) {\n restNode = child$1.cut(cutAt - offset);\n child$1 = child$1.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n\n var outerDeco = !active.length ? nothing\n : child$1.isInline && !child$1.isLeaf ? active.filter(function (d) { return !d.inline; })\n : active.slice();\n onNode(child$1, outerDeco, deco.forChild(offset, child$1), index);\n offset = end;\n }\n}\n\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n var oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3) { return node }\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n { return node.childNodes[offset] }\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n } else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n } else {\n return null\n }\n }\n}\n\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (var i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n var child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText) { continue }\n var str = child.text;\n while (i < frag.childCount) {\n var next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText) { break }\n str += next.text;\n }\n if (pos >= from) {\n var found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n { return childStart + found }\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n { return to }\n }\n }\n return -1\n}\n\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n var result = [];\n for (var i = 0, off = 0; i < nodes.length; i++) {\n var child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n } else {\n if (start < from) { result.push(child.slice(0, from - start, view)); }\n if (replacement) {\n result.push(replacement);\n replacement = null;\n }\n if (end > to) { result.push(child.slice(to - start, child.size, view)); }\n }\n }\n return result\n}\n\nfunction selectionFromDOM(view, origin) {\n var domSel = view.root.getSelection(), doc = view.state.doc;\n if (!domSel.focusNode) { return null }\n var nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n var head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n if (head < 0) { return null }\n var $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node) { nearestDesc = nearestDesc.parent; }\n if (nearestDesc && nearestDesc.node.isAtom && NodeSelection.isSelectable(nearestDesc.node) && nearestDesc.parent\n && !(nearestDesc.node.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n var pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n } else {\n var anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n if (anchor < 0) { return null }\n $anchor = doc.resolve(anchor);\n }\n\n if (!selection) {\n var bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection\n}\n\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom)\n}\n\nfunction selectionToDOM(view, force) {\n var sel = view.state.selection;\n syncNodeSelection(view, sel);\n\n if (!editorOwnsSelection(view)) { return }\n\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.mouseDown && view.mouseDown.allowDefault && result.chrome) {\n var domSel = view.root.getSelection(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset,\n curSel.anchorNode, curSel.anchorOffset)) {\n view.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return\n }\n }\n\n view.domObserver.disconnectSelection();\n\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n } else {\n var anchor = sel.anchor;\n var head = sel.head;\n var resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n { resetEditableFrom = temporarilyEditableNear(view, sel.from); }\n if (!sel.empty && !sel.$from.parent.inlineContent)\n { resetEditableTo = temporarilyEditableNear(view, sel.to); }\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom) { resetEditable(resetEditableFrom); }\n if (resetEditableTo) { resetEditable(resetEditableTo); }\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n } else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document) { removeClassOnSelectionChange(view); }\n }\n }\n\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\n\nvar brokenSelectBetweenUneditable = result.safari || result.chrome && result.chrome_version < 63;\n\nfunction temporarilyEditableNear(view, pos) {\n var ref = view.docView.domFromPos(pos, 0);\n var node = ref.node;\n var offset = ref.offset;\n var after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n var before = offset ? node.childNodes[offset - 1] : null;\n if (result.safari && after && after.contentEditable == \"false\") { return setEditable(after) }\n if ((!after || after.contentEditable == \"false\") && (!before || before.contentEditable == \"false\")) {\n if (after) { return setEditable(after) }\n else if (before) { return setEditable(before) }\n }\n}\n\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (result.safari && element.draggable) { element.draggable = false; element.wasDraggable = true; }\n return element\n}\n\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) { element.draggable = true; element.wasDraggable = null; }\n}\n\nfunction removeClassOnSelectionChange(view) {\n var doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n var domSel = view.root.getSelection();\n var node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.hideSelectionGuard = function () {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n setTimeout(function () {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n { view.dom.classList.remove(\"ProseMirror-hideselection\"); }\n }, 20);\n }\n });\n}\n\nfunction selectCursorWrapper(view) {\n var domSel = view.root.getSelection(), range = document.createRange();\n var node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img) { range.setEnd(node.parentNode, domIndex(node) + 1); }\n else { range.setEnd(node, 0); }\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && result.ie && result.ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\n\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n var desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc) { desc.selectNode(); }\n view.lastSelectedViewDesc = desc;\n }\n } else {\n clearNodeSelection(view);\n }\n}\n\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n { view.lastSelectedViewDesc.deselectNode(); }\n view.lastSelectedViewDesc = null;\n }\n}\n\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", function (f) { return f(view, $anchor, $head); })\n || TextSelection.between($anchor, $head, bias)\n}\n\nfunction hasFocusAndSelection(view) {\n if (view.editable && view.root.activeElement != view.dom) { return false }\n return hasSelection(view)\n}\n\nfunction hasSelection(view) {\n var sel = view.root.getSelection();\n if (!sel.anchorNode) { return false }\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode))\n } catch(_) {\n return false\n }\n}\n\nfunction anchorInRightPlace(view) {\n var anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n var domSel = view.root.getSelection();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset)\n}\n\nfunction moveSelectionBlock(state, dir) {\n var ref = state.selection;\n var $anchor = ref.$anchor;\n var $head = ref.$head;\n var $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n var $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir)\n}\n\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true\n}\n\nfunction selectHorizontally(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false\n } else if (view.endOfTextblock(dir > 0 ? \"right\" : \"left\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection)) { return apply(view, next) }\n return false\n } else if (!(result.mac && mods.indexOf(\"m\") > -1)) {\n var $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText) { return false }\n var nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM)) { return false }\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head))\n } else if (result.webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)))\n } else {\n return false\n }\n }\n } else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from))\n } else {\n var next$1 = moveSelectionBlock(view.state, dir);\n if (next$1) { return apply(view, next$1) }\n return false\n }\n}\n\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isIgnorable(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dom.nextSibling || dom.nodeName != \"BR\")\n}\n\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesLeft(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (result.gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset])) { force = true; }\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break\n } else {\n var before = node.childNodes[offset - 1];\n if (isIgnorable(before)) {\n moveNode = node;\n moveOffset = --offset;\n } else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n } else { break }\n }\n } else if (isBlockNode(node)) {\n break\n } else {\n var prev = node.previousSibling;\n while (prev && isIgnorable(prev)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = 0;\n } else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force) { setSelFocus(view, sel, node, offset); }\n else if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesRight(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var len = nodeLen(node);\n var moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1) { break }\n var after = node.childNodes[offset];\n if (isIgnorable(after)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else { break }\n } else if (isBlockNode(node)) {\n break\n } else {\n var next = node.nextSibling;\n while (next && isIgnorable(next)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = len = 0;\n } else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\nfunction isBlockNode(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock\n}\n\nfunction setSelFocus(view, sel, node, offset) {\n if (selectionCollapsed(sel)) {\n var range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n var state = view.state;\n // If no state update ends up happening, reset the selection.\n setTimeout(function () {\n if (view.state == state) { selectionToDOM(view); }\n }, 50);\n}\n\n// : (EditorState, number)\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1) { return false }\n if (result.mac && mods.indexOf(\"m\") > -1) { return false }\n var $from = sel.$from;\n var $to = sel.$to;\n\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n { return apply(view, next) }\n }\n if (!$from.parent.inlineContent) {\n var side = dir < 0 ? $from : $to;\n var beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false\n }\n return false\n}\n\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return true }\n var ref = view.state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n var empty = ref.empty;\n if (!$head.sameParent($anchor)) { return true }\n if (!empty) { return false }\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) { return true }\n var nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n var tr = view.state.tr;\n if (dir < 0) { tr.delete($head.pos - nextNode.nodeSize, $head.pos); }\n else { tr.delete($head.pos, $head.pos + nextNode.nodeSize); }\n view.dispatch(tr);\n return true\n }\n return false\n}\n\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!result.safari || view.state.selection.$head.parentOffset > 0) { return }\n var ref = view.root.getSelection();\n var focusNode = ref.focusNode;\n var focusOffset = ref.focusOffset;\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n var child = focusNode.firstChild;\n switchEditable(view, child, true);\n setTimeout(function () { return switchEditable(view, child, false); }, 20);\n }\n}\n\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\n\nfunction getMods(event) {\n var result = \"\";\n if (event.ctrlKey) { result += \"c\"; }\n if (event.metaKey) { result += \"m\"; }\n if (event.altKey) { result += \"a\"; }\n if (event.shiftKey) { result += \"s\"; }\n return result\n}\n\nfunction captureKeyDown(view, event) {\n var code = event.keyCode, mods = getMods(event);\n if (code == 8 || (result.mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodesLeft(view)\n } else if (code == 46 || (result.mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodesRight(view)\n } else if (code == 13 || code == 27) { // Enter, Esc\n return true\n } else if (code == 37) { // Left arrow\n return selectHorizontally(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 39) { // Right arrow\n return selectHorizontally(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (code == 38) { // Up arrow\n return selectVertically(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 40) { // Down arrow\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (mods == (result.mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true\n }\n return false\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\n\nfunction parseBetween(view, from_, to_) {\n var ref = view.docView.parseRange(from_, to_);\n var parent = ref.node;\n var fromOffset = ref.fromOffset;\n var toOffset = ref.toOffset;\n var from = ref.from;\n var to = ref.to;\n\n var domSel = view.root.getSelection(), find = null, anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{node: anchor, offset: domSel.anchorOffset}];\n if (!selectionCollapsed(domSel))\n { find.push({node: domSel.focusNode, offset: domSel.focusOffset}); }\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (result.chrome && view.lastKeyCode === 8) {\n for (var off = toOffset; off > fromOffset; off--) {\n var node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) { toOffset = off; break }\n if (!desc || desc.size) { break }\n }\n }\n var startDoc = view.state.doc;\n var parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n var $from = startDoc.resolve(from);\n\n var sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n editableContent: true,\n findPositions: find,\n ruleFromNode: ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n var anchor$1 = find[0].pos, head = find[1] && find[1].pos;\n if (head == null) { head = anchor$1; }\n sel = {anchor: anchor$1 + from, head: head + from};\n }\n return {doc: doc, sel: sel, from: from, to: to}\n}\n\nfunction ruleFromNode(dom) {\n var desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule()\n } else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (result.safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n var skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return {skip: skip}\n } else if (dom.parentNode.lastChild == dom || result.safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return {ignore: true}\n }\n } else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return {ignore: true}\n }\n}\n\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n if (from < 0) {\n var origin = view.lastSelectionTime > Date.now() - 50 ? view.lastSelectionOrigin : null;\n var newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n var tr$1 = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\") { tr$1.setMeta(\"pointer\", true); }\n else if (origin == \"key\") { tr$1.scrollIntoView(); }\n view.dispatch(tr$1);\n }\n return\n }\n\n var $before = view.state.doc.resolve(from);\n var shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n\n var sel = view.state.selection;\n var parse = parseBetween(view, from, to);\n\n // Chrome sometimes leaves the cursor before the inserted text when\n // composing after a cursor wrapper. This moves it forward.\n if (result.chrome && view.cursorWrapper && parse.sel && parse.sel.anchor == view.cursorWrapper.deco.from) {\n var text = view.cursorWrapper.deco.type.toDOM.nextSibling;\n var size = text && text.nodeValue ? text.nodeValue.length : 1;\n parse.sel = {anchor: parse.sel.anchor + size, head: parse.sel.anchor + size};\n }\n\n var doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n var preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.lastKeyCode === 8 && Date.now() - 100 < view.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n } else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.lastKeyCode = null;\n\n var change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = {start: sel.from, endA: sel.to, endB: sel.to};\n } else if ((result.ios && view.lastIOSEnter > Date.now() - 225 || result.android) &&\n addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n } else {\n if (parse.sel) {\n var sel$1 = resolveSelection(view, view.state.doc, parse.sel);\n if (sel$1 && !sel$1.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel$1)); }\n }\n return\n }\n }\n view.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n } else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (result.ie && result.ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n\n var $from = parse.doc.resolveNoCache(change.start - parse.from);\n var $to = parse.doc.resolveNoCache(change.endB - parse.from);\n var inlineChange = $from.sameParent($to) && $from.parent.inlineContent;\n var nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((result.ios && view.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) {\n if (result.android && result.chrome) { view.domObserver.suppressSelectionUpdates(); } // #820\n return\n }\n\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (result.chrome && result.android && change.toB == change.from)\n { view.lastAndroidDelete = Date.now(); }\n\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (result.android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(function () {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n\n var chFrom = change.start, chTo = change.endA;\n\n var tr, storedMarks, markChange, $from1;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (result.ie && result.ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(function () { return selectionToDOM(view); }, 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n } else if ( // Adding or removing a mark\n change.endA == change.endB && ($from1 = doc.resolve(change.start)) &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset),\n $from1.parent.content.cut($from1.parentOffset, change.endA - $from1.start())))\n ) {\n tr = view.state.tr;\n if (markChange.type == \"add\") { tr.addMark(chFrom, chTo, markChange.mark); }\n else { tr.removeMark(chFrom, chTo, markChange.mark); }\n } else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n var text$1 = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", function (f) { return f(view, chFrom, chTo, text$1); })) { return }\n tr = view.state.tr.insertText(text$1, chFrom, chTo);\n }\n }\n\n if (!tr)\n { tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from)); }\n if (parse.sel) {\n var sel$2 = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel$2 && !(result.chrome && result.android && view.composing && sel$2.empty &&\n (change.start != change.endB || view.lastAndroidDelete < Date.now() - 100) &&\n (sel$2.head == chFrom || sel$2.head == tr.mapping.map(chTo) - 1) ||\n result.ie && sel$2.empty && sel$2.head == chFrom))\n { tr.setSelection(sel$2); }\n }\n if (storedMarks) { tr.ensureMarks(storedMarks); }\n view.dispatch(tr.scrollIntoView());\n}\n\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size) { return null }\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head))\n}\n\n// : (Fragment, Fragment) → ?{mark: Mark, type: string}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n var curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n var added = curMarks, removed = prevMarks, type, mark, update;\n for (var i = 0; i < prevMarks.length; i++) { added = prevMarks[i].removeFromSet(added); }\n for (var i$1 = 0; i$1 < curMarks.length; i$1++) { removed = curMarks[i$1].removeFromSet(removed); }\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = function (node) { return node.mark(mark.addToSet(node.marks)); };\n } else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = function (node) { return node.mark(mark.removeFromSet(node.marks)); };\n } else {\n return null\n }\n var updated = [];\n for (var i$2 = 0; i$2 < prev.childCount; i$2++) { updated.push(update(prev.child(i$2))); }\n if (Fragment.from(updated).eq(cur)) { return {mark: mark, type: type} }\n}\n\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n { return false }\n\n var $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n { return false }\n var $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n { return false }\n\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content)\n}\n\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n var depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n var next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end\n}\n\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n var start = a.findDiffStart(b, pos);\n if (start == null) { return null }\n var ref = a.findDiffEnd(b, pos + a.size, pos + b.size);\n var endA = ref.a;\n var endB = ref.b;\n if (preferredSide == \"end\") {\n var adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n var move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n } else if (endB < start) {\n var move$1 = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move$1;\n endA = start + (endA - endB);\n endB = start;\n }\n return {start: start, endA: endA, endB: endB}\n}\n\nfunction serializeForClipboard(view, slice) {\n var context = [];\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n var node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n\n var serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n var doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, {document: doc}));\n\n var firstChild = wrap.firstChild, needsWrap;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (var i = needsWrap.length - 1; i >= 0; i--) {\n var wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild) { wrapper.appendChild(wrap.firstChild); }\n wrap.appendChild(wrapper);\n if (needsWrap[i] != \"tbody\") {\n openStart++;\n openEnd++;\n }\n }\n firstChild = wrap.firstChild;\n }\n\n if (firstChild && firstChild.nodeType == 1)\n { firstChild.setAttribute(\"data-pm-slice\", (openStart + \" \" + openEnd + \" \" + (JSON.stringify(context)))); }\n\n var text = view.someProp(\"clipboardTextSerializer\", function (f) { return f(slice); }) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n\n return {dom: wrap, text: text}\n}\n\n// : (EditorView, string, string, ?bool, ResolvedPos) → ?Slice\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n var dom, inCode = $context.parent.type.spec.code, slice;\n if (!html && !text) { return null }\n var asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", function (f) { text = f(text, inCode || plainText); });\n if (inCode) { return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty }\n var parsed = view.someProp(\"clipboardTextParser\", function (f) { return f(text, $context, plainText); });\n if (parsed) {\n slice = parsed;\n } else {\n var marks = $context.marks();\n var ref = view.state;\n var schema = ref.schema;\n var serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(function (block) {\n var p = dom.appendChild(document.createElement(\"p\"));\n if (block) { p.appendChild(serializer.serializeNode(schema.text(block, marks))); }\n });\n }\n } else {\n view.someProp(\"transformPastedHTML\", function (f) { html = f(html); });\n dom = readHTML(html);\n if (result.webkit) { restoreReplacedSpaces(dom); }\n }\n\n var contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n var sliceData = contextNode && /^(\\d+) (\\d+) (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\"));\n if (!slice) {\n var parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode: function ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName)) { return {ignore: true} }\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[3]);\n } else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n var openStart = 0, openEnd = 0;\n for (var node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating;\n openStart++, node = node.firstChild) {}\n for (var node$1 = slice.content.lastChild; openEnd < slice.openEnd && !node$1.type.spec.isolating;\n openEnd++, node$1 = node$1.lastChild) {}\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n return slice\n}\n\nvar inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2) { return fragment }\n var loop = function ( d ) {\n var parent = $context.node(d);\n var match = parent.contentMatchAt($context.index(d));\n var lastWrap = (void 0), result = [];\n fragment.forEach(function (node) {\n if (!result) { return }\n var wrap = match.findWrapping(node.type), inLast;\n if (!wrap) { return result = null }\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n } else {\n if (result.length) { result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length); }\n var wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type, wrapped.attrs);\n lastWrap = wrap;\n }\n });\n if (result) { return { v: Fragment.from(result) } }\n };\n\n for (var d = $context.depth; d >= 0; d--) {\n var returned = loop( d );\n\n if ( returned ) return returned.v;\n }\n return fragment\n}\n\nfunction withWrappers(node, wrap, from) {\n if ( from === void 0 ) from = 0;\n\n for (var i = wrap.length - 1; i >= from; i--)\n { node = wrap[i].create(null, Fragment.from(node)); }\n return node\n}\n\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n var inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner) { return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner)) }\n var match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n { return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1)))) }\n }\n}\n\nfunction closeRight(node, depth) {\n if (depth == 0) { return node }\n var fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n var fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill))\n}\n\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n var node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (depth < to - 1) { inner = closeRange(inner, side, from, to, depth + 1, openEnd); }\n if (depth >= from)\n { inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, fragment.childCount > 1 || openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true)); }\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner))\n}\n\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n { slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd); }\n if (openEnd < slice.openEnd)\n { slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd); }\n return slice\n}\n\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"..\"` the table cells are ignored.\nvar wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\n\nvar _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"))\n}\n\nfunction readHTML(html) {\n var metas = /^(\\s*]*>)*/.exec(html);\n if (metas) { html = html.slice(metas[0].length); }\n var elt = detachedDoc().createElement(\"div\");\n var firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n { html = wrap.map(function (n) { return \"<\" + n + \">\"; }).join(\"\") + html + wrap.map(function (n) { return \"\"; }).reverse().join(\"\"); }\n elt.innerHTML = html;\n if (wrap) { for (var i = 0; i < wrap.length; i++) { elt = elt.querySelector(wrap[i]) || elt; } }\n return elt\n}\n\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n var nodes = dom.querySelectorAll(result.chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n { node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node); }\n }\n}\n\nfunction addContext(slice, context) {\n if (!slice.size) { return slice }\n var schema = slice.content.firstChild.type.schema, array;\n try { array = JSON.parse(context); }\n catch(e) { return slice }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n for (var i = array.length - 2; i >= 0; i -= 2) {\n var type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs()) { break }\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++; openEnd++;\n }\n return new Slice(content, openStart, openEnd)\n}\n\nvar observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nvar useCharData = result.ie && result.ie_version <= 11;\n\nvar SelectionState = function SelectionState() {\n this.anchorNode = this.anchorOffset = this.focusNode = this.focusOffset = null;\n};\n\nSelectionState.prototype.set = function set (sel) {\n this.anchorNode = sel.anchorNode; this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode; this.focusOffset = sel.focusOffset;\n};\n\nSelectionState.prototype.eq = function eq (sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset\n};\n\nvar DOMObserver = function DOMObserver(view, handleDOMChange) {\n var this$1 = this;\n\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(function (mutations) {\n for (var i = 0; i < mutations.length; i++) { this$1.queue.push(mutations[i]); }\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (result.ie && result.ie_version <= 11 && mutations.some(\n function (m) { return m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length; }))\n { this$1.flushSoon(); }\n else\n { this$1.flush(); }\n });\n this.currentSelection = new SelectionState;\n if (useCharData) {\n this.onCharData = function (e) {\n this$1.queue.push({target: e.target, type: \"characterData\", oldValue: e.prevValue});\n this$1.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n this.suppressingSelectionUpdates = false;\n};\n\nDOMObserver.prototype.flushSoon = function flushSoon () {\n var this$1 = this;\n\n if (this.flushingSoon < 0)\n { this.flushingSoon = window.setTimeout(function () { this$1.flushingSoon = -1; this$1.flush(); }, 20); }\n};\n\nDOMObserver.prototype.forceFlush = function forceFlush () {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n};\n\nDOMObserver.prototype.start = function start () {\n if (this.observer)\n { this.observer.observe(this.view.dom, observeOptions); }\n if (useCharData)\n { this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.connectSelection();\n};\n\nDOMObserver.prototype.stop = function stop () {\n var this$1 = this;\n\n if (this.observer) {\n var take = this.observer.takeRecords();\n if (take.length) {\n for (var i = 0; i < take.length; i++) { this.queue.push(take[i]); }\n window.setTimeout(function () { return this$1.flush(); }, 20);\n }\n this.observer.disconnect();\n }\n if (useCharData) { this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.disconnectSelection();\n};\n\nDOMObserver.prototype.connectSelection = function connectSelection () {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.disconnectSelection = function disconnectSelection () {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.suppressSelectionUpdates = function suppressSelectionUpdates () {\n var this$1 = this;\n\n this.suppressingSelectionUpdates = true;\n setTimeout(function () { return this$1.suppressingSelectionUpdates = false; }, 50);\n};\n\nDOMObserver.prototype.onSelectionChange = function onSelectionChange () {\n if (!hasFocusAndSelection(this.view)) { return }\n if (this.suppressingSelectionUpdates) { return selectionToDOM(this.view) }\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (result.ie && result.ie_version <= 11 && !this.view.state.selection.empty) {\n var sel = this.view.root.getSelection();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n { return this.flushSoon() }\n }\n this.flush();\n};\n\nDOMObserver.prototype.setCurSelection = function setCurSelection () {\n this.currentSelection.set(this.view.root.getSelection());\n};\n\nDOMObserver.prototype.ignoreSelectionChange = function ignoreSelectionChange (sel) {\n if (sel.rangeCount == 0) { return true }\n var container = sel.getRangeAt(0).commonAncestorContainer;\n var desc = this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({type: \"selection\", target: container.nodeType == 3 ? container.parentNode : container})) {\n this.setCurSelection();\n return true\n }\n};\n\nDOMObserver.prototype.flush = function flush () {\n if (!this.view.docView || this.flushingSoon > -1) { return }\n var mutations = this.observer ? this.observer.takeRecords() : [];\n if (this.queue.length) {\n mutations = this.queue.concat(mutations);\n this.queue.length = 0;\n }\n\n var sel = this.view.root.getSelection();\n var newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasSelection(this.view) && !this.ignoreSelectionChange(sel);\n\n var from = -1, to = -1, typeOver = false, added = [];\n if (this.view.editable) {\n for (var i = 0; i < mutations.length; i++) {\n var result$1 = this.registerMutation(mutations[i], added);\n if (result$1) {\n from = from < 0 ? result$1.from : Math.min(result$1.from, from);\n to = to < 0 ? result$1.to : Math.max(result$1.to, to);\n if (result$1.typeOver) { typeOver = true; }\n }\n }\n }\n\n if (result.gecko && added.length > 1) {\n var brs = added.filter(function (n) { return n.nodeName == \"BR\"; });\n if (brs.length == 2) {\n var a = brs[0];\n var b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode) { b.remove(); }\n else { a.remove(); }\n }\n }\n\n if (from > -1 || newSel) {\n if (from > -1) {\n this.view.docView.markDirty(from, to);\n checkCSS(this.view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (this.view.docView && this.view.docView.dirty) { this.view.updateState(this.view.state); }\n else if (!this.currentSelection.eq(sel)) { selectionToDOM(this.view); }\n this.currentSelection.set(sel);\n }\n};\n\nDOMObserver.prototype.registerMutation = function registerMutation (mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1) { return null }\n var desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n { return null }\n if (!desc || desc.ignoreMutation(mut)) { return null }\n\n if (mut.type == \"childList\") {\n for (var i = 0; i < mut.addedNodes.length; i++) { added.push(mut.addedNodes[i]); }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n { return {from: desc.posBefore, to: desc.posAfter} }\n var prev = mut.previousSibling, next = mut.nextSibling;\n if (result.ie && result.ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (var i$1 = 0; i$1 < mut.addedNodes.length; i$1++) {\n var ref = mut.addedNodes[i$1];\n var previousSibling = ref.previousSibling;\n var nextSibling = ref.nextSibling;\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0) { prev = previousSibling; }\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0) { next = nextSibling; }\n }\n }\n var fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n var from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n var toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n var to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return {from: from, to: to}\n } else if (mut.type == \"attributes\") {\n return {from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border}\n } else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n }\n }\n};\n\nvar cssChecked = false;\n\nfunction checkCSS(view) {\n if (cssChecked) { return }\n cssChecked = true;\n if (getComputedStyle(view.dom).whiteSpace == \"normal\")\n { console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\"); }\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nvar handlers = {}, editHandlers = {};\n\nfunction initInput(view) {\n view.shiftKey = false;\n view.mouseDown = null;\n view.lastKeyCode = null;\n view.lastKeyCodeTime = 0;\n view.lastClick = {time: 0, x: 0, y: 0, type: \"\"};\n view.lastSelectionOrigin = null;\n view.lastSelectionTime = 0;\n\n view.lastIOSEnter = 0;\n view.lastIOSEnterFallbackTimeout = null;\n view.lastAndroidDelete = 0;\n\n view.composing = false;\n view.composingTimeout = null;\n view.compositionNodes = [];\n view.compositionEndedAt = -2e8;\n\n view.domObserver = new DOMObserver(view, function (from, to, typeOver, added) { return readDOMChange(view, from, to, typeOver, added); });\n view.domObserver.start();\n // Used by hacks like the beforeinput handler to check whether anything happened in the DOM\n view.domChangeCount = 0;\n\n view.eventHandlers = Object.create(null);\n var loop = function ( event ) {\n var handler = handlers[event];\n view.dom.addEventListener(event, view.eventHandlers[event] = function (event) {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n { handler(view, event); }\n });\n };\n\n for (var event in handlers) loop( event );\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (result.safari) { view.dom.addEventListener(\"input\", function () { return null; }); }\n\n ensureListeners(view);\n}\n\nfunction setSelectionOrigin(view, origin) {\n view.lastSelectionOrigin = origin;\n view.lastSelectionTime = Date.now();\n}\n\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (var type in view.eventHandlers)\n { view.dom.removeEventListener(type, view.eventHandlers[type]); }\n clearTimeout(view.composingTimeout);\n clearTimeout(view.lastIOSEnterFallbackTimeout);\n}\n\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", function (currentHandlers) {\n for (var type in currentHandlers) { if (!view.eventHandlers[type])\n { view.dom.addEventListener(type, view.eventHandlers[type] = function (event) { return runCustomHandler(view, event); }); } }\n });\n}\n\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", function (handlers) {\n var handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false\n })\n}\n\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles) { return true }\n if (event.defaultPrevented) { return false }\n for (var node = event.target; node != view.dom; node = node.parentNode)\n { if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n { return false } }\n return true\n}\n\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n { handlers[event.type](view, event); }\n}\n\neditHandlers.keydown = function (view, event) {\n view.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event)) { return }\n view.lastKeyCode = event.keyCode;\n view.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (result.android && result.chrome && event.keyCode == 13) { return }\n if (event.keyCode != 229) { view.domObserver.forceFlush(); }\n\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (result.ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n var now = Date.now();\n view.lastIOSEnter = now;\n view.lastIOSEnterFallbackTimeout = setTimeout(function () {\n if (view.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n view.lastIOSEnter = 0;\n }\n }, 200);\n } else if (view.someProp(\"handleKeyDown\", function (f) { return f(view, event); }) || captureKeyDown(view, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"key\");\n }\n};\n\neditHandlers.keyup = function (view, e) {\n if (e.keyCode == 16) { view.shiftKey = false; }\n};\n\neditHandlers.keypress = function (view, event) {\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || result.mac && event.metaKey) { return }\n\n if (view.someProp(\"handleKeyPress\", function (f) { return f(view, event); })) {\n event.preventDefault();\n return\n }\n\n var sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n var text = String.fromCharCode(event.charCode);\n if (!view.someProp(\"handleTextInput\", function (f) { return f(view, sel.$from.pos, sel.$to.pos, text); }))\n { view.dispatch(view.state.tr.insertText(text).scrollIntoView()); }\n event.preventDefault();\n }\n};\n\nfunction eventCoords(event) { return {left: event.clientX, top: event.clientY} }\n\nfunction isNear(event, click) {\n var dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100\n}\n\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside);\n var loop = function ( i ) {\n if (view.someProp(propName, function (f) { return i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false); }))\n { return { v: true } }\n };\n\n for (var i = $pos.depth + 1; i > 0; i--) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\nfunction updateSelection(view, selection, origin) {\n if (!view.focused) { view.focus(); }\n var tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\") { tr.setMeta(\"pointer\", true); }\n view.dispatch(tr);\n}\n\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true\n }\n return false\n}\n\nfunction selectClickedNode(view, inside) {\n if (inside == -1) { return false }\n var sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection) { selectedNode = sel.node; }\n\n var $pos = view.state.doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n { selectAt = $pos.before(sel.$from.depth); }\n else\n { selectAt = $pos.before(i); }\n break\n }\n }\n\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true\n } else {\n return false\n }\n}\n\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", function (f) { return f(view, pos, event); }) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside))\n}\n\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", function (f) { return f(view, pos, event); })\n}\n\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", function (f) { return f(view, pos, event); }) ||\n defaultTripleClick(view, inside, event)\n}\n\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0) { return false }\n var doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true\n }\n return false\n }\n\n var $pos = doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n var nodePos = $pos.before(i);\n if (node.inlineContent)\n { updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\"); }\n else if (NodeSelection.isSelectable(node))\n { updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\"); }\n else\n { continue }\n return true\n }\n}\n\nfunction forceDOMFlush(view) {\n return endComposition(view)\n}\n\nvar selectNodeModifier = result.mac ? \"metaKey\" : \"ctrlKey\";\n\nhandlers.mousedown = function (view, event) {\n view.shiftKey = event.shiftKey;\n var flushed = forceDOMFlush(view);\n var now = Date.now(), type = \"singleClick\";\n if (now - view.lastClick.time < 500 && isNear(event, view.lastClick) && !event[selectNodeModifier]) {\n if (view.lastClick.type == \"singleClick\") { type = \"doubleClick\"; }\n else if (view.lastClick.type == \"doubleClick\") { type = \"tripleClick\"; }\n }\n view.lastClick = {time: now, x: event.clientX, y: event.clientY, type: type};\n\n var pos = view.posAtCoords(eventCoords(event));\n if (!pos) { return }\n\n if (type == \"singleClick\") {\n if (view.mouseDown) { view.mouseDown.done(); }\n view.mouseDown = new MouseDown(view, pos, event, flushed);\n } else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\n\nvar MouseDown = function MouseDown(view, pos, event, flushed) {\n var this$1 = this;\n\n this.view = view;\n this.startDoc = view.state.doc;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.selectNode = event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n this.delayedSelectionSync = false;\n\n var targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n } else {\n var $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n\n this.mightDrag = null;\n\n var target = flushed ? null : event.target;\n var targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n\n var ref = view.state;\n var selection = ref.selection;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n { this.mightDrag = {node: targetNode,\n pos: targetPos,\n addAttr: this.target && !this.target.draggable,\n setUneditable: this.target && result.gecko && !this.target.hasAttribute(\"contentEditable\")}; }\n\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.draggable = true; }\n if (this.mightDrag.setUneditable)\n { setTimeout(function () {\n if (this$1.view.mouseDown == this$1) { this$1.target.setAttribute(\"contentEditable\", \"false\"); }\n }, 20); }\n this.view.domObserver.start();\n }\n\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n};\n\nMouseDown.prototype.done = function done () {\n var this$1 = this;\n\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.removeAttribute(\"draggable\"); }\n if (this.mightDrag.setUneditable) { this.target.removeAttribute(\"contentEditable\"); }\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync) { setTimeout(function () { return selectionToDOM(this$1.view); }); }\n this.view.mouseDown = null;\n};\n\nMouseDown.prototype.up = function up (event) {\n this.done();\n\n if (!this.view.dom.contains(event.target.nodeType == 3 ? event.target.parentNode : event.target))\n { return }\n\n var pos = this.pos;\n if (this.view.state.doc != this.startDoc) { pos = this.view.posAtCoords(eventCoords(event)); }\n\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n } else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n } else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (result.safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (result.chrome && !(this.view.state.selection instanceof TextSelection) &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from),\n Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n } else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n};\n\nMouseDown.prototype.move = function move (event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n { this.allowDefault = true; }\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0) { this.done(); }\n};\n\nhandlers.touchdown = function (view) {\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\n\nhandlers.contextmenu = function (view) { return forceDOMFlush(view); };\n\nfunction inOrNearComposition(view, event) {\n if (view.composing) { return true }\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (result.safari && Math.abs(event.timeStamp - view.compositionEndedAt) < 500) {\n view.compositionEndedAt = -2e8;\n return true\n }\n return false\n}\n\n// Drop active composition after 5 seconds of inactivity on Android\nvar timeoutComposition = result.android ? 5000 : -1;\n\neditHandlers.compositionstart = editHandlers.compositionupdate = function (view) {\n if (!view.composing) {\n view.domObserver.flush();\n var state = view.state;\n var $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(function (m) { return m.type.spec.inclusive === false; })))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n } else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (result.gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n var sel = view.root.getSelection();\n for (var node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n var before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before) { break }\n if (before.nodeType == 3) {\n sel.collapse(before, before.nodeValue.length);\n break\n } else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\n\neditHandlers.compositionend = function (view, event) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = event.timeStamp;\n scheduleComposeEnd(view, 20);\n }\n};\n\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.composingTimeout);\n if (delay > -1) { view.composingTimeout = setTimeout(function () { return endComposition(view); }, delay); }\n}\n\nfunction clearComposition(view) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.compositionNodes.length > 0) { view.compositionNodes.pop().markParentsDirty(); }\n}\n\nfunction timestampFromCustomEvent() {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp\n}\n\nfunction endComposition(view, forceUpdate) {\n if (result.android && view.domObserver.flushingSoon >= 0) { return }\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n var sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel)); }\n else { view.updateState(view.state); }\n return true\n }\n return false\n}\n\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode) { return }\n var wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n var sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(function () {\n if (wrap.parentNode) { wrap.parentNode.removeChild(wrap); }\n view.focus();\n }, 50);\n}\n\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nvar brokenClipboardAPI = (result.ie && result.ie_version < 15) ||\n (result.ios && result.webkit_version < 604);\n\nhandlers.copy = editHandlers.cut = function (view, e) {\n var sel = view.state.selection, cut = e.type == \"cut\";\n if (sel.empty) { return }\n\n // IE and Edge's clipboard interface is completely broken\n var data = brokenClipboardAPI ? null : e.clipboardData;\n var slice = sel.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n if (data) {\n e.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n } else {\n captureCopy(view, dom);\n }\n if (cut) { view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\")); }\n};\n\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null\n}\n\nfunction capturePaste(view, e) {\n if (!view.dom.parentNode) { return }\n var plainText = view.shiftKey || view.state.selection.$from.parent.type.spec.code;\n var target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText) { target.contentEditable = \"true\"; }\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n setTimeout(function () {\n view.focus();\n if (target.parentNode) { target.parentNode.removeChild(target); }\n if (plainText) { doPaste(view, target.value, null, e); }\n else { doPaste(view, target.textContent, target.innerHTML, e); }\n }, 50);\n}\n\nfunction doPaste(view, text, html, e) {\n var slice = parseFromClipboard(view, text, html, view.shiftKey, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", function (f) { return f(view, e, slice || Slice.empty); })) { return true }\n if (!slice) { return false }\n\n var singleNode = sliceSingleNode(slice);\n var tr = singleNode ? view.state.tr.replaceSelectionWith(singleNode, view.shiftKey) : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true\n}\n\neditHandlers.paste = function (view, e) {\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !result.android) { return }\n var data = brokenClipboardAPI ? null : e.clipboardData;\n if (data && doPaste(view, data.getData(\"text/plain\"), data.getData(\"text/html\"), e)) { e.preventDefault(); }\n else { capturePaste(view, e); }\n};\n\nvar Dragging = function Dragging(slice, move) {\n this.slice = slice;\n this.move = move;\n};\n\nvar dragCopyModifier = result.mac ? \"altKey\" : \"ctrlKey\";\n\nhandlers.dragstart = function (view, e) {\n var mouseDown = view.mouseDown;\n if (mouseDown) { mouseDown.done(); }\n if (!e.dataTransfer) { return }\n\n var sel = view.state.selection;\n var pos = sel.empty ? null : view.posAtCoords(eventCoords(e));\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1: sel.to)) ; else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)));\n } else if (e.target && e.target.nodeType == 1) {\n var desc = view.docView.nearestDesc(e.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n { view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore))); }\n }\n var slice = view.state.selection.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n e.dataTransfer.clearData();\n e.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n e.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI) { e.dataTransfer.setData(\"text/plain\", text); }\n view.dragging = new Dragging(slice, !e[dragCopyModifier]);\n};\n\nhandlers.dragend = function (view) {\n var dragging = view.dragging;\n window.setTimeout(function () {\n if (view.dragging == dragging) { view.dragging = null; }\n }, 50);\n};\n\neditHandlers.dragover = editHandlers.dragenter = function (_, e) { return e.preventDefault(); };\n\neditHandlers.drop = function (view, e) {\n var dragging = view.dragging;\n view.dragging = null;\n\n if (!e.dataTransfer) { return }\n\n var eventPos = view.posAtCoords(eventCoords(e));\n if (!eventPos) { return }\n var $mouse = view.state.doc.resolve(eventPos.pos);\n if (!$mouse) { return }\n var slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n } else {\n slice = parseFromClipboard(view, e.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"),\n brokenClipboardAPI ? null : e.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n var move = dragging && !e[dragCopyModifier];\n if (view.someProp(\"handleDrop\", function (f) { return f(view, e, slice || Slice.empty, move); })) {\n e.preventDefault();\n return\n }\n if (!slice) { return }\n\n e.preventDefault();\n var insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null) { insertPos = $mouse.pos; }\n\n var tr = view.state.tr;\n if (move) { tr.deleteSelection(); }\n\n var pos = tr.mapping.map(insertPos);\n var isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n var beforeInsert = tr.doc;\n if (isNode)\n { tr.replaceRangeWith(pos, pos, slice.content.firstChild); }\n else\n { tr.replaceRange(pos, pos, slice); }\n if (tr.doc.eq(beforeInsert)) { return }\n\n var $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n } else {\n var end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach(function (_from, _to, _newFrom, newTo) { return end = newTo; });\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\n\nhandlers.focus = function (view) {\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(function () {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.root.getSelection()))\n { selectionToDOM(view); }\n }, 20);\n }\n};\n\nhandlers.blur = function (view, e) {\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (e.relatedTarget && view.dom.contains(e.relatedTarget))\n { view.domObserver.currentSelection.set({}); }\n view.focused = false;\n }\n};\n\nhandlers.beforeinput = function (view, event) {\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (result.chrome && result.android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n var domChangeCount = view.domChangeCount;\n setTimeout(function () {\n if (view.domChangeCount != domChangeCount) { return } // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) { return }\n var ref = view.state.selection;\n var $cursor = ref.$cursor;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0) { view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView()); }\n }, 50);\n }\n};\n\n// Make sure all handlers get registered\nfor (var prop in editHandlers) { handlers[prop] = editHandlers[prop]; }\n\nfunction compareObjs(a, b) {\n if (a == b) { return true }\n for (var p in a) { if (a[p] !== b[p]) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n return true\n}\n\nvar WidgetType = function WidgetType(toDOM, spec) {\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n this.toDOM = toDOM;\n};\n\nWidgetType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var ref = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n var pos = ref.pos;\n var deleted = ref.deleted;\n return deleted ? null : new Decoration(pos - offset, pos - offset, this)\n};\n\nWidgetType.prototype.valid = function valid () { return true };\n\nWidgetType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)))\n};\n\nWidgetType.prototype.destroy = function destroy (node) {\n if (this.spec.destroy) { this.spec.destroy(node); }\n};\n\nvar InlineType = function InlineType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nInlineType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n var to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this)\n};\n\nInlineType.prototype.valid = function valid (_, span) { return span.from < span.to };\n\nInlineType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\nInlineType.is = function is (span) { return span.type instanceof InlineType };\n\nvar NodeType = function NodeType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nNodeType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted) { return null }\n var to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos) { return null }\n return new Decoration(from.pos - offset, to.pos - offset, this)\n};\n\nNodeType.prototype.valid = function valid (node, span) {\n var ref = node.content.findIndex(span.from);\n var index = ref.index;\n var offset = ref.offset;\n var child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to\n};\n\nNodeType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\n// ::- Decoration objects can be provided to the view through the\n// [`decorations` prop](#view.EditorProps.decorations). They come in\n// several variants—see the static members of this class for details.\nvar Decoration = function Decoration(from, to, type) {\n // :: number\n // The start position of the decoration.\n this.from = from;\n // :: number\n // The end position. Will be the same as `from` for [widget\n // decorations](#view.Decoration^widget).\n this.to = to;\n this.type = type;\n};\n\nvar prototypeAccessors$1 = { spec: { configurable: true },inline: { configurable: true } };\n\nDecoration.prototype.copy = function copy (from, to) {\n return new Decoration(from, to, this.type)\n};\n\nDecoration.prototype.eq = function eq (other, offset) {\n if ( offset === void 0 ) offset = 0;\n\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to\n};\n\nDecoration.prototype.map = function map (mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset)\n};\n\n// :: (number, union<(view: EditorView, getPos: () → number) → dom.Node, dom.Node>, ?Object) → Decoration\n// Creates a widget decoration, which is a DOM node that's shown in\n// the document at the given position. It is recommended that you\n// delay rendering the widget by passing a function that will be\n// called when the widget is actually drawn in a view, but you can\n// also directly pass a DOM node. `getPos` can be used to find the\n// widget's current document position.\n//\n// spec::- These options are supported:\n//\n// side:: ?number\n// Controls which side of the document position this widget is\n// associated with. When negative, it is drawn before a cursor\n// at its position, and content inserted at that position ends\n// up after the widget. When zero (the default) or positive, the\n// widget is drawn after the cursor and content inserted there\n// ends up before the widget.\n//\n// When there are multiple widgets at a given position, their\n// `side` values determine the order in which they appear. Those\n// with lower values appear first. The ordering of widgets with\n// the same `side` value is unspecified.\n//\n// When `marks` is null, `side` also determines the marks that\n// the widget is wrapped in—those of the node before when\n// negative, those of the node after when positive.\n//\n// marks:: ?[Mark]\n// The precise set of marks to draw around the widget.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to control which DOM events, when they bubble out\n// of this widget, the editor view should ignore.\n//\n// ignoreSelection:: ?bool\n// When set (defaults to false), selection changes inside the\n// widget are ignored, and don't cause ProseMirror to try and\n// re-sync the selection with its selection state.\n//\n// key:: ?string\n// When comparing decorations of this type (in order to decide\n// whether it needs to be redrawn), ProseMirror will by default\n// compare the widget DOM node by identity. If you pass a key,\n// that key will be compared instead, which can be useful when\n// you generate decorations on the fly and don't want to store\n// and reuse DOM nodes. Make sure that any widgets with the same\n// key are interchangeable—if widgets differ in, for example,\n// the behavior of some event handler, they should get\n// different keys.\n//\n// destroy:: ?(node: dom.Node)\n// Called when the widget decoration is removed as a result of\n// mapping\nDecoration.widget = function widget (pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates an inline decoration, which adds the given attributes to\n// each inline node between `from` and `to`.\n//\n// spec::- These options are recognized:\n//\n// inclusiveStart:: ?bool\n// Determines how the left side of the decoration is\n// [mapped](#transform.Position_Mapping) when content is\n// inserted directly at that position. By default, the decoration\n// won't include the new content, but you can set this to `true`\n// to make it inclusive.\n//\n// inclusiveEnd:: ?bool\n// Determines how the right side of the decoration is mapped.\n// See\n// [`inclusiveStart`](#view.Decoration^inline^spec.inclusiveStart).\nDecoration.inline = function inline (from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates a node decoration. `from` and `to` should point precisely\n// before and after a node in the document. That node, and only that\n// node, will receive the given attributes.\n//\n// spec::-\n//\n// Optional information to store with the decoration. It\n// is also used when comparing decorators for equality.\nDecoration.node = function node (from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec))\n};\n\n// :: Object\n// The spec provided when creating this decoration. Can be useful\n// if you've stored extra information in that object.\nprototypeAccessors$1.spec.get = function () { return this.type.spec };\n\nprototypeAccessors$1.inline.get = function () { return this.type instanceof InlineType };\n\nObject.defineProperties( Decoration.prototype, prototypeAccessors$1 );\n\n// DecorationAttrs:: interface\n// A set of attributes to add to a decorated node. Most properties\n// simply directly correspond to DOM attributes of the same name,\n// which will be set to the property's value. These are exceptions:\n//\n// class:: ?string\n// A CSS class name or a space-separated set of class names to be\n// _added_ to the classes that the node already had.\n//\n// style:: ?string\n// A string of CSS to be _added_ to the node's existing `style` property.\n//\n// nodeName:: ?string\n// When non-null, the target node is wrapped in a DOM element of\n// this type (and the other attributes are applied to this element).\n\nvar none = [], noSpec = {};\n\n// :: class extends DecorationSource\n// A collection of [decorations](#view.Decoration), organized in\n// such a way that the drawing algorithm can efficiently use and\n// compare them. This is a persistent data structure—it is not\n// modified, updates create a new value.\nvar DecorationSet = function DecorationSet(local, children) {\n this.local = local && local.length ? local : none;\n this.children = children && children.length ? children : none;\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Create a set of decorations, using the structure of the given\n// document.\nDecorationSet.create = function create (doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty\n};\n\n// :: (?number, ?number, ?(spec: Object) → bool) → [Decoration]\n// Find all decorations in this set which touch the given range\n// (including decorations that start or end directly at the\n// boundaries) and match the given predicate on their spec. When\n// `start` and `end` are omitted, all decorations in the set are\n// considered. When `predicate` isn't given, all decorations are\n// assumed to match.\nDecorationSet.prototype.find = function find (start, end, predicate) {\n var result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result\n};\n\nDecorationSet.prototype.findInner = function findInner (start, end, result, offset, predicate) {\n for (var i = 0; i < this.local.length; i++) {\n var span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n { result.push(span.copy(span.from + offset, span.to + offset)); }\n }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3) {\n if (this.children[i$1] < end && this.children[i$1 + 1] > start) {\n var childOff = this.children[i$1] + 1;\n this.children[i$1 + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n};\n\n// :: (Mapping, Node, ?Object) → DecorationSet\n// Map the set of decorations in response to a change in the\n// document.\n//\n// options::- An optional set of options.\n//\n// onRemove:: ?(decorationSpec: Object)\n// When given, this function will be called for each decoration\n// that gets dropped as a result of the mapping, passing the\n// spec of that decoration.\nDecorationSet.prototype.map = function map (mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0) { return this }\n return this.mapInner(mapping, doc, 0, 0, options || noSpec)\n};\n\nDecorationSet.prototype.mapInner = function mapInner (mapping, node, offset, oldOffset, options) {\n var newLocal;\n for (var i = 0; i < this.local.length; i++) {\n var mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped)) { (newLocal || (newLocal = [])).push(mapped); }\n else if (options.onRemove) { options.onRemove(this.local[i].spec); }\n }\n\n if (this.children.length)\n { return mapChildren(this.children, newLocal, mapping, node, offset, oldOffset, options) }\n else\n { return newLocal ? new DecorationSet(newLocal.sort(byPos)) : empty }\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Add the given array of decorations to the ones in the set,\n// producing a new set. Needs access to the current document to\n// create the appropriate tree structure.\nDecorationSet.prototype.add = function add (doc, decorations) {\n if (!decorations.length) { return this }\n if (this == empty) { return DecorationSet.create(doc, decorations) }\n return this.addInner(doc, decorations, 0)\n};\n\nDecorationSet.prototype.addInner = function addInner (doc, decorations, offset) {\n var this$1 = this;\n\n var children, childIndex = 0;\n doc.forEach(function (childNode, childOffset) {\n var baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset))) { return }\n\n if (!children) { children = this$1.children.slice(); }\n while (childIndex < children.length && children[childIndex] < childOffset) { childIndex += 3; }\n if (children[childIndex] == childOffset)\n { children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1); }\n else\n { children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec)); }\n childIndex += 3;\n });\n\n var local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (var i = 0; i < local.length; i++) { if (!local[i].type.valid(doc, local[i])) { local.splice(i--, 1); } }\n\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local,\n children || this.children)\n};\n\n// :: ([Decoration]) → DecorationSet\n// Create a new set that contains the decorations in this set, minus\n// the ones in the given array.\nDecorationSet.prototype.remove = function remove (decorations) {\n if (decorations.length == 0 || this == empty) { return this }\n return this.removeInner(decorations, 0)\n};\n\nDecorationSet.prototype.removeInner = function removeInner (decorations, offset) {\n var children = this.children, local = this.local;\n for (var i = 0; i < children.length; i += 3) {\n var found = (void 0), from = children[i] + offset, to = children[i + 1] + offset;\n for (var j = 0, span = (void 0); j < decorations.length; j++) { if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null\n ;(found || (found = [])).push(span);\n }\n } }\n if (!found) { continue }\n if (children == this.children) { children = this.children.slice(); }\n var removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n } else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length) { for (var i$1 = 0, span$1 = (void 0); i$1 < decorations.length; i$1++) { if (span$1 = decorations[i$1]) {\n for (var j$1 = 0; j$1 < local.length; j$1++) { if (local[j$1].eq(span$1, offset)) {\n if (local == this.local) { local = this.local.slice(); }\n local.splice(j$1--, 1);\n } }\n } } }\n if (children == this.children && local == this.local) { return this }\n return local.length || children.length ? new DecorationSet(local, children) : empty\n};\n\nDecorationSet.prototype.forChild = function forChild (offset, node) {\n if (this == empty) { return this }\n if (node.isLeaf) { return DecorationSet.empty }\n\n var child, local;\n for (var i = 0; i < this.children.length; i += 3) { if (this.children[i] >= offset) {\n if (this.children[i] == offset) { child = this.children[i + 2]; }\n break\n } }\n var start = offset + 1, end = start + node.content.size;\n for (var i$1 = 0; i$1 < this.local.length; i$1++) {\n var dec = this.local[i$1];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n var from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to) { (local || (local = [])).push(dec.copy(from, to)); }\n }\n }\n if (local) {\n var localSet = new DecorationSet(local.sort(byPos));\n return child ? new DecorationGroup([localSet, child]) : localSet\n }\n return child || empty\n};\n\nDecorationSet.prototype.eq = function eq (other) {\n if (this == other) { return true }\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length) { return false }\n for (var i = 0; i < this.local.length; i++)\n { if (!this.local[i].eq(other.local[i])) { return false } }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3)\n { if (this.children[i$1] != other.children[i$1] ||\n this.children[i$1 + 1] != other.children[i$1 + 1] ||\n !this.children[i$1 + 2].eq(other.children[i$1 + 2])) { return false } }\n return true\n};\n\nDecorationSet.prototype.locals = function locals (node) {\n return removeOverlap(this.localsInner(node))\n};\n\nDecorationSet.prototype.localsInner = function localsInner (node) {\n if (this == empty) { return none }\n if (node.inlineContent || !this.local.some(InlineType.is)) { return this.local }\n var result = [];\n for (var i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n { result.push(this.local[i]); }\n }\n return result\n};\n\n// DecorationSource:: interface\n// An object that can [provide](#view.EditorProps.decorations)\n// decorations. Implemented by [`DecorationSet`](#view.DecorationSet),\n// and passed to [node views](#view.EditorProps.nodeViews).\n//\n// map:: (Mapping, Node) → DecorationSource\n// Map the set of decorations in response to a change in the\n// document.\n\nvar empty = new DecorationSet();\n\n// :: DecorationSet\n// The empty set of decorations.\nDecorationSet.empty = empty;\n\nDecorationSet.removeOverlap = removeOverlap;\n\n// :- An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nvar DecorationGroup = function DecorationGroup(members) {\n this.members = members;\n};\n\nDecorationGroup.prototype.map = function map (mapping, doc) {\n var mappedDecos = this.members.map(\n function (member) { return member.map(mapping, doc, noSpec); }\n );\n return DecorationGroup.from(mappedDecos)\n};\n\nDecorationGroup.prototype.forChild = function forChild (offset, child) {\n if (child.isLeaf) { return DecorationSet.empty }\n var found = [];\n for (var i = 0; i < this.members.length; i++) {\n var result = this.members[i].forChild(offset, child);\n if (result == empty) { continue }\n if (result instanceof DecorationGroup) { found = found.concat(result.members); }\n else { found.push(result); }\n }\n return DecorationGroup.from(found)\n};\n\nDecorationGroup.prototype.eq = function eq (other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length) { return false }\n for (var i = 0; i < this.members.length; i++)\n { if (!this.members[i].eq(other.members[i])) { return false } }\n return true\n};\n\nDecorationGroup.prototype.locals = function locals (node) {\n var result, sorted = true;\n for (var i = 0; i < this.members.length; i++) {\n var locals = this.members[i].localsInner(node);\n if (!locals.length) { continue }\n if (!result) {\n result = locals;\n } else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (var j = 0; j < locals.length; j++) { result.push(locals[j]); }\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none\n};\n\n// : ([DecorationSet]) → union\n// Create a group for the given array of decoration sets, or return\n// a single set when possible.\nDecorationGroup.from = function from (members) {\n switch (members.length) {\n case 0: return empty\n case 1: return members[0]\n default: return new DecorationGroup(members)\n }\n};\n\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n var children = oldChildren.slice();\n\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n var shift = function (oldStart, oldEnd, newStart, newEnd) {\n for (var i = 0; i < children.length; i += 3) {\n var end = children[i + 1], dSize = (void 0);\n if (end == -1 || oldStart > end + oldOffset) { continue }\n if (oldEnd >= children[i] + oldOffset) {\n children[i + 1] = -1;\n } else if (newStart >= offset && (dSize = (newEnd - newStart) - (oldEnd - oldStart))) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n };\n for (var i = 0; i < mapping.maps.length; i++) { mapping.maps[i].forEach(shift); }\n\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n var mustRebuild = false;\n for (var i$1 = 0; i$1 < children.length; i$1 += 3) { if (children[i$1 + 1] == -1) { // Touched nodes\n var from = mapping.map(oldChildren[i$1] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue\n }\n // Must read oldChildren because children was tagged with -1\n var to = mapping.map(oldChildren[i$1 + 1] + oldOffset, -1), toLocal = to - offset;\n var ref = node.content.findIndex(fromLocal);\n var index = ref.index;\n var childOffset = ref.offset;\n var childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n var mapped = children[i$1 + 2].mapInner(mapping, childNode, from + 1, oldChildren[i$1] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i$1] = fromLocal;\n children[i$1 + 1] = toLocal;\n children[i$1 + 2] = mapped;\n } else {\n children[i$1 + 1] = -2;\n mustRebuild = true;\n }\n } else {\n mustRebuild = true;\n }\n } }\n\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n var decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal || [], mapping,\n offset, oldOffset, options);\n var built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (var i$2 = 0; i$2 < children.length; i$2 += 3) { if (children[i$2 + 1] < 0) {\n children.splice(i$2, 3);\n i$2 -= 3;\n } }\n for (var i$3 = 0, j = 0; i$3 < built.children.length; i$3 += 3) {\n var from$1 = built.children[i$3];\n while (j < children.length && children[j] < from$1) { j += 3; }\n children.splice(j, 0, built.children[i$3], built.children[i$3 + 1], built.children[i$3 + 2]);\n }\n }\n\n return new DecorationSet(newLocal && newLocal.sort(byPos), children)\n}\n\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length) { return spans }\n var result = [];\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result\n}\n\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (var i = 0; i < set.local.length; i++) {\n var mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped) { decorations.push(mapped); }\n else if (options.onRemove) { options.onRemove(set.local[i].spec); }\n }\n for (var i$1 = 0; i$1 < set.children.length; i$1 += 3)\n { gather(set.children[i$1 + 2], set.children[i$1] + oldOffset + 1); }\n }\n for (var i = 0; i < children.length; i += 3) { if (children[i + 1] == -1)\n { gather(children[i + 2], oldChildren[i] + oldOffset + 1); } }\n\n return decorations\n}\n\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf) { return null }\n var end = offset + node.nodeSize, found = null;\n for (var i = 0, span = (void 0); i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n(found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found\n}\n\nfunction withoutNulls(array) {\n var result = [];\n for (var i = 0; i < array.length; i++)\n { if (array[i] != null) { result.push(array[i]); } }\n return result\n}\n\n// : ([Decoration], Node, number) → DecorationSet\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n var children = [], hasNulls = false;\n node.forEach(function (childNode, localStart) {\n var found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n var subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n { children.push(localStart, localStart + childNode.nodeSize, subtree); }\n }\n });\n var locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (var i = 0; i < locals.length; i++) { if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove) { options.onRemove(locals[i].spec); }\n locals.splice(i--, 1);\n } }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty\n}\n\n// : (Decoration, Decoration) → number\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to\n}\n\n// : ([Decoration]) → [Decoration]\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n var working = spans;\n for (var i = 0; i < working.length - 1; i++) {\n var span = working[i];\n if (span.from != span.to) { for (var j = i + 1; j < working.length; j++) {\n var next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans) { working = spans.slice(); }\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue\n } else {\n if (next.from < span.to) {\n if (working == spans) { working = spans.slice(); }\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break\n }\n } }\n }\n return working\n}\n\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0) { i++; }\n array.splice(i, 0, deco);\n}\n\n// : (EditorView) → union\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n var found = [];\n view.someProp(\"decorations\", function (f) {\n var result = f(view.state);\n if (result && result != empty) { found.push(result); }\n });\n if (view.cursorWrapper)\n { found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco])); }\n return DecorationGroup.from(found)\n}\n\n// ::- An editor view manages the DOM structure that represents an\n// editable document. Its state and behavior are determined by its\n// [props](#view.DirectEditorProps).\nvar EditorView = function EditorView(place, props) {\n this._props = props;\n // :: EditorState\n // The view's current [state](#state.EditorState).\n this.state = props.state;\n\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n\n this.dispatch = this.dispatch.bind(this);\n\n this._root = null;\n this.focused = false;\n // Kludge used to work around a Chrome bug\n this.trackWrites = null;\n\n // :: dom.Element\n // An editable DOM node containing the document. (You probably\n // should not directly interfere with its content.)\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild) { place.appendChild(this.dom); }\n else if (place.apply) { place(this.dom); }\n else if (place.mount) { this.mounted = true; }\n }\n\n // :: bool\n // Indicates whether the editor is currently [editable](#view.EditorProps.editable).\n this.editable = getEditable(this);\n this.markCursor = null;\n this.cursorWrapper = null;\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n\n this.lastSelectedViewDesc = null;\n // :: ?{slice: Slice, move: bool}\n // When editor content is being dragged, this object contains\n // information about the dragged slice and whether it is being\n // copied or moved. At any other time, it is null.\n this.dragging = null;\n\n initInput(this);\n\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n this.updatePluginViews();\n};\n\nvar prototypeAccessors$2 = { props: { configurable: true },root: { configurable: true },isDestroyed: { configurable: true } };\n\n// composing:: boolean\n// Holds `true` when a\n// [composition](https://developer.mozilla.org/en-US/docs/Mozilla/IME_handling_guide)\n// is active.\n\n// :: DirectEditorProps\n// The view's current [props](#view.EditorProps).\nprototypeAccessors$2.props.get = function () {\n if (this._props.state != this.state) {\n var prev = this._props;\n this._props = {};\n for (var name in prev) { this._props[name] = prev[name]; }\n this._props.state = this.state;\n }\n return this._props\n};\n\n// :: (DirectEditorProps)\n// Update the view's props. Will immediately cause an update to\n// the DOM.\nEditorView.prototype.update = function update (props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents) { ensureListeners(this); }\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, true);\n};\n\n// :: (DirectEditorProps)\n// Update the view by updating existing props object with the object\n// given as argument. Equivalent to `view.update(Object.assign({},\n// view.props, props))`.\nEditorView.prototype.setProps = function setProps (props) {\n var updated = {};\n for (var name in this._props) { updated[name] = this._props[name]; }\n updated.state = this.state;\n for (var name$1 in props) { updated[name$1] = props[name$1]; }\n this.update(updated);\n};\n\n// :: (EditorState)\n// Update the editor's `state` prop, without touching any of the\n// other props.\nEditorView.prototype.updateState = function updateState (state) {\n this.updateStateInner(state, this.state.plugins != state.plugins);\n};\n\nEditorView.prototype.updateStateInner = function updateStateInner (state, reconfigured) {\n var this$1 = this;\n\n var prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n if (reconfigured) {\n var nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n ensureListeners(this);\n }\n\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n var innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n\n var scroll = reconfigured ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n var updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection)) { updateSel = true; }\n var oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n var forceSelUpdate = updateDoc && (result.ie || result.chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n var chromeKludge = result.chrome ? (this.trackWrites = this.root.getSelection().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites) { forceSelUpdate = true; }\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.mouseDown && this.domObserver.currentSelection.eq(this.root.getSelection()) && anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n } else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n\n this.updatePluginViews(prev);\n\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n } else if (scroll == \"to selection\") {\n var startDOM = this.root.getSelection().focusNode;\n if (this.someProp(\"handleScrollToSelection\", function (f) { return f(this$1); }))\n ; // Handled\n else if (state.selection instanceof NodeSelection)\n { scrollRectIntoView(this, this.docView.domAfterPos(state.selection.from).getBoundingClientRect(), startDOM); }\n else\n { scrollRectIntoView(this, this.coordsAtPos(state.selection.head, 1), startDOM); }\n } else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n};\n\nEditorView.prototype.destroyPluginViews = function destroyPluginViews () {\n var view;\n while (view = this.pluginViews.pop()) { if (view.destroy) { view.destroy(); } }\n};\n\nEditorView.prototype.updatePluginViews = function updatePluginViews (prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (var i = 0; i < this.directPlugins.length; i++) {\n var plugin = this.directPlugins[i];\n if (plugin.spec.view) { this.pluginViews.push(plugin.spec.view(this)); }\n }\n for (var i$1 = 0; i$1 < this.state.plugins.length; i$1++) {\n var plugin$1 = this.state.plugins[i$1];\n if (plugin$1.spec.view) { this.pluginViews.push(plugin$1.spec.view(this)); }\n }\n } else {\n for (var i$2 = 0; i$2 < this.pluginViews.length; i$2++) {\n var pluginView = this.pluginViews[i$2];\n if (pluginView.update) { pluginView.update(this, prevState); }\n }\n }\n};\n\n// :: (string, ?(prop: *) → *) → *\n// Goes over the values of a prop, first those provided directly,\n// then those from plugins given to the view, then from plugins in\n// the state (in order), and calls `f` every time a non-undefined\n// value is found. When `f` returns a truthy value, that is\n// immediately returned. When `f` isn't provided, it is treated as\n// the identity function (the prop value is returned directly).\nEditorView.prototype.someProp = function someProp (propName, f) {\n var prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop)) { return value }\n for (var i = 0; i < this.directPlugins.length; i++) {\n var prop$1 = this.directPlugins[i].props[propName];\n if (prop$1 != null && (value = f ? f(prop$1) : prop$1)) { return value }\n }\n var plugins = this.state.plugins;\n if (plugins) { for (var i$1 = 0; i$1 < plugins.length; i$1++) {\n var prop$2 = plugins[i$1].props[propName];\n if (prop$2 != null && (value = f ? f(prop$2) : prop$2)) { return value }\n } }\n};\n\n// :: () → bool\n// Query whether the view has focus.\nEditorView.prototype.hasFocus = function hasFocus () {\n return this.root.activeElement == this.dom\n};\n\n// :: ()\n// Focus the editor.\nEditorView.prototype.focus = function focus () {\n this.domObserver.stop();\n if (this.editable) { focusPreventScroll(this.dom); }\n selectionToDOM(this);\n this.domObserver.start();\n};\n\n// :: union\n// Get the document root in which the editor exists. This will\n// usually be the top-level `document`, but might be a [shadow\n// DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n// root if the editor is inside one.\nprototypeAccessors$2.root.get = function () {\n var cached = this._root;\n if (cached == null) { for (var search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection) { Object.getPrototypeOf(search).getSelection = function () { return document.getSelection(); }; }\n return this._root = search\n }\n } }\n return cached || document\n};\n\n// :: ({left: number, top: number}) → ?{pos: number, inside: number}\n// Given a pair of viewport coordinates, return the document\n// position that corresponds to them. May return null if the given\n// coordinates aren't inside of the editor. When an object is\n// returned, its `pos` property is the position nearest to the\n// coordinates, and its `inside` property holds the position of the\n// inner node that the position falls inside of, or -1 if it is at\n// the top level, not in any node.\nEditorView.prototype.posAtCoords = function posAtCoords$1 (coords) {\n return posAtCoords(this, coords)\n};\n\n// :: (number, number) → {left: number, right: number, top: number, bottom: number}\n// Returns the viewport rectangle at a given document position.\n// `left` and `right` will be the same number, as this returns a\n// flat cursor-ish rectangle. If the position is between two things\n// that aren't directly adjacent, `side` determines which element is\n// used. When < 0, the element before the position is used,\n// otherwise the element after.\nEditorView.prototype.coordsAtPos = function coordsAtPos$1 (pos, side) {\n if ( side === void 0 ) side = 1;\n\n return coordsAtPos(this, pos, side)\n};\n\n// :: (number, number) → {node: dom.Node, offset: number}\n// Find the DOM position that corresponds to the given document\n// position. When `side` is negative, find the position as close as\n// possible to the content before the position. When positive,\n// prefer positions close to the content after the position. When\n// zero, prefer as shallow a position as possible.\n//\n// Note that you should **not** mutate the editor's internal DOM,\n// only inspect it (and even that is usually not necessary).\nEditorView.prototype.domAtPos = function domAtPos (pos, side) {\n if ( side === void 0 ) side = 0;\n\n return this.docView.domFromPos(pos, side)\n};\n\n// :: (number) → ?dom.Node\n// Find the DOM node that represents the document node after the\n// given position. May return `null` when the position doesn't point\n// in front of a node or if the node is inside an opaque node view.\n//\n// This is intended to be able to call things like\n// `getBoundingClientRect` on that DOM node. Do **not** mutate the\n// editor DOM directly, or add styling this way, since that will be\n// immediately overriden by the editor as it redraws the node.\nEditorView.prototype.nodeDOM = function nodeDOM (pos) {\n var desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null\n};\n\n// :: (dom.Node, number, ?number) → number\n// Find the document position that corresponds to a given DOM\n// position. (Whenever possible, it is preferable to inspect the\n// document structure directly, rather than poking around in the\n// DOM, but sometimes—for example when interpreting an event\n// target—you don't have a choice.)\n//\n// The `bias` parameter can be used to influence which side of a DOM\n// node to use when the position is inside a leaf node.\nEditorView.prototype.posAtDOM = function posAtDOM (node, offset, bias) {\n if ( bias === void 0 ) bias = -1;\n\n var pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null) { throw new RangeError(\"DOM position not inside the editor\") }\n return pos\n};\n\n// :: (union<\"up\", \"down\", \"left\", \"right\", \"forward\", \"backward\">, ?EditorState) → bool\n// Find out whether the selection is at the end of a textblock when\n// moving in a given direction. When, for example, given `\"left\"`,\n// it will return true if moving left from the current cursor\n// position would leave that position's parent textblock. Will apply\n// to the view's current state by default, but it is possible to\n// pass a different state.\nEditorView.prototype.endOfTextblock = function endOfTextblock$1 (dir, state) {\n return endOfTextblock(this, state || this.state, dir)\n};\n\n// :: ()\n// Removes the editor from the DOM and destroys all [node\n// views](#view.NodeView).\nEditorView.prototype.destroy = function destroy () {\n if (!this.docView) { return }\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n } else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n};\n\n// :: boolean\n// This is true when the view has been\n// [destroyed](#view.EditorView.destroy) (and thus should not be\n// used anymore).\nprototypeAccessors$2.isDestroyed.get = function () {\n return this.docView == null\n};\n\n// Used for testing.\nEditorView.prototype.dispatchEvent = function dispatchEvent$1 (event) {\n return dispatchEvent(this, event)\n};\n\n// :: (Transaction)\n// Dispatch a transaction. Will call\n// [`dispatchTransaction`](#view.DirectEditorProps.dispatchTransaction)\n// when given, and otherwise defaults to applying the transaction to\n// the current state and calling\n// [`updateState`](#view.EditorView.updateState) with the result.\n// This method is bound to the view instance, so that it can be\n// easily passed around.\nEditorView.prototype.dispatch = function dispatch (tr) {\n var dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction) { dispatchTransaction.call(this, tr); }\n else { this.updateState(this.state.apply(tr)); }\n};\n\nObject.defineProperties( EditorView.prototype, prototypeAccessors$2 );\n\nfunction computeDocDeco(view) {\n var attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n attrs.translate = \"no\";\n\n view.someProp(\"attributes\", function (value) {\n if (typeof value == \"function\") { value = value(view.state); }\n if (value) { for (var attr in value) {\n if (attr == \"class\")\n { attrs.class += \" \" + value[attr]; }\n if (attr == \"style\") {\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n }\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n { attrs[attr] = String(value[attr]); }\n } }\n });\n\n return [Decoration.node(0, view.state.doc.content.size, attrs)]\n}\n\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n var dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = {dom: dom, deco: Decoration.widget(view.state.selection.head, dom, {raw: true, marks: view.markCursor})};\n } else {\n view.cursorWrapper = null;\n }\n}\n\nfunction getEditable(view) {\n return !view.someProp(\"editable\", function (value) { return value(view.state) === false; })\n}\n\nfunction selectionContextChanged(sel1, sel2) {\n var depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth)\n}\n\nfunction buildNodeViews(view) {\n var result = {};\n view.someProp(\"nodeViews\", function (obj) {\n for (var prop in obj) { if (!Object.prototype.hasOwnProperty.call(result, prop))\n { result[prop] = obj[prop]; } }\n });\n return result\n}\n\nfunction changedNodeViews(a, b) {\n var nA = 0, nB = 0;\n for (var prop in a) {\n if (a[prop] != b[prop]) { return true }\n nA++;\n }\n for (var _ in b) { nB++; }\n return nA != nB\n}\n\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n { throw new RangeError(\"Plugins passed directly to the view must not have a state component\") }\n}\n\n// EditorProps:: interface\n//\n// Props are configuration values that can be passed to an editor view\n// or included in a plugin. This interface lists the supported props.\n//\n// The various event-handling functions may all return `true` to\n// indicate that they handled the given event. The view will then take\n// care to call `preventDefault` on the event, except with\n// `handleDOMEvents`, where the handler itself is responsible for that.\n//\n// How a prop is resolved depends on the prop. Handler functions are\n// called one at a time, starting with the base props and then\n// searching through the plugins (in order of appearance) until one of\n// them returns true. For some props, the first plugin that yields a\n// value gets precedence.\n//\n// handleDOMEvents:: ?Object<(view: EditorView, event: dom.Event) → bool>\n// Can be an object mapping DOM event type names to functions that\n// handle them. Such functions will be called before any handling\n// ProseMirror does of events fired on the editable DOM element.\n// Contrary to the other event handling props, when returning true\n// from such a function, you are responsible for calling\n// `preventDefault` yourself (or not, if you want to allow the\n// default behavior).\n//\n// handleKeyDown:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Called when the editor receives a `keydown` event.\n//\n// handleKeyPress:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Handler for `keypress` events.\n//\n// handleTextInput:: ?(view: EditorView, from: number, to: number, text: string) → bool\n// Whenever the user directly input text, this handler is called\n// before the input is applied. If it returns `true`, the default\n// behavior of actually inserting the text is suppressed.\n//\n// handleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a click, from the inside out. The\n// `direct` flag will be true for the inner node.\n//\n// handleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is clicked, after `handleClickOn` handlers\n// have been called.\n//\n// handleDoubleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a double click.\n//\n// handleDoubleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is double-clicked, after `handleDoubleClickOn`.\n//\n// handleTripleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a triple click.\n//\n// handleTripleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is triple-clicked, after `handleTripleClickOn`.\n//\n// handlePaste:: ?(view: EditorView, event: dom.ClipboardEvent, slice: Slice) → bool\n// Can be used to override the behavior of pasting. `slice` is the\n// pasted content parsed by the editor, but you can directly access\n// the event to get at the raw content.\n//\n// handleDrop:: ?(view: EditorView, event: dom.Event, slice: Slice, moved: bool) → bool\n// Called when something is dropped on the editor. `moved` will be\n// true if this drop moves from the current selection (which should\n// thus be deleted).\n//\n// handleScrollToSelection:: ?(view: EditorView) → bool\n// Called when the view, after updating its state, tries to scroll\n// the selection into view. A handler function may return false to\n// indicate that it did not handle the scrolling and further\n// handlers or the default behavior should be tried.\n//\n// createSelectionBetween:: ?(view: EditorView, anchor: ResolvedPos, head: ResolvedPos) → ?Selection\n// Can be used to override the way a selection is created when\n// reading a DOM selection between the given anchor and head.\n//\n// domParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading editor changes\n// from the DOM. Defaults to calling\n// [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) on the\n// editor's schema.\n//\n// transformPastedHTML:: ?(html: string) → string\n// Can be used to transform pasted HTML text, _before_ it is parsed,\n// for example to clean it up.\n//\n// clipboardParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading content from\n// the clipboard. When not given, the value of the\n// [`domParser`](#view.EditorProps.domParser) prop is used.\n//\n// transformPastedText:: ?(text: string, plain: bool) → string\n// Transform pasted plain text. The `plain` flag will be true when\n// the text is pasted as plain text.\n//\n// clipboardTextParser:: ?(text: string, $context: ResolvedPos, plain: bool) → Slice\n// A function to parse text from the clipboard into a document\n// slice. Called after\n// [`transformPastedText`](#view.EditorProps.transformPastedText).\n// The default behavior is to split the text into lines, wrap them\n// in `

` tags, and call\n// [`clipboardParser`](#view.EditorProps.clipboardParser) on it.\n// The `plain` flag will be true when the text is pasted as plain text.\n//\n// transformPasted:: ?(Slice) → Slice\n// Can be used to transform pasted content before it is applied to\n// the document.\n//\n// nodeViews:: ?Object<(node: Node, view: EditorView, getPos: () → number, decorations: [Decoration], innerDecorations: DecorationSource) → NodeView>\n// Allows you to pass custom rendering and behavior logic for nodes\n// and marks. Should map node and mark names to constructor\n// functions that produce a [`NodeView`](#view.NodeView) object\n// implementing the node's display behavior. For nodes, the third\n// argument `getPos` is a function that can be called to get the\n// node's current position, which can be useful when creating\n// transactions to update it. For marks, the third argument is a\n// boolean that indicates whether the mark's content is inline.\n//\n// `decorations` is an array of node or inline decorations that are\n// active around the node. They are automatically drawn in the\n// normal way, and you will usually just want to ignore this, but\n// they can also be used as a way to provide context information to\n// the node view without adding it to the document itself.\n//\n// `innerDecorations` holds the decorations for the node's content.\n// You can safely ignore this if your view has no content or a\n// `contentDOM` property, since the editor will draw the decorations\n// on the content. But if you, for example, want to create a nested\n// editor with the content, it may make sense to provide it with the\n// inner decorations.\n//\n// clipboardSerializer:: ?DOMSerializer\n// The DOM serializer to use when putting content onto the\n// clipboard. If not given, the result of\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)\n// will be used. This object will only have its\n// [`serializeFragment`](#model.DOMSerializer.serializeFragment)\n// method called, and you may provide an alternative object type\n// implementing a compatible method.\n//\n// clipboardTextSerializer:: ?(Slice) → string\n// A function that will be called to get the text for the current\n// selection when copying text to the clipboard. By default, the\n// editor will use [`textBetween`](#model.Node.textBetween) on the\n// selected range.\n//\n// decorations:: ?(state: EditorState) → ?DecorationSource\n// A set of [document decorations](#view.Decoration) to show in the\n// view.\n//\n// editable:: ?(state: EditorState) → bool\n// When this returns false, the content of the view is not directly\n// editable.\n//\n// attributes:: ?union, (EditorState) → ?Object>\n// Control the DOM attributes of the editable element. May be either\n// an object or a function going from an editor state to an object.\n// By default, the element will get a class `\"ProseMirror\"`, and\n// will have its `contentEditable` attribute determined by the\n// [`editable` prop](#view.EditorProps.editable). Additional classes\n// provided here will be added to the class. For other attributes,\n// the value provided first (as in\n// [`someProp`](#view.EditorView.someProp)) will be used.\n//\n// scrollThreshold:: ?union\n// Determines the distance (in pixels) between the cursor and the\n// end of the visible viewport at which point, when scrolling the\n// cursor into view, scrolling takes place. Defaults to 0.\n//\n// scrollMargin:: ?union\n// Determines the extra space (in pixels) that is left above or\n// below the cursor when it is scrolled into view. Defaults to 5.\n\n// DirectEditorProps:: interface extends EditorProps\n//\n// The props object given directly to the editor view supports two\n// fields that can't be used in plugins:\n//\n// state:: EditorState\n// The current state of the editor.\n//\n// plugins:: [Plugin]\n// A set of plugins to use in the view, applying their [plugin\n// view](#state.PluginSpec.view) and\n// [props](#state.PluginSpec.props). Passing plugins with a state\n// component (a [state field](#state.PluginSpec.state) field or a\n// [transaction](#state.PluginSpec.filterTransaction) filter or\n// appender) will result in an error, since such plugins must be\n// present in the state to work.\n//\n// dispatchTransaction:: ?(tr: Transaction)\n// The callback over which to send transactions (state updates)\n// produced by the view. If you specify this, you probably want to\n// make sure this ends up calling the view's\n// [`updateState`](#view.EditorView.updateState) method with a new\n// state that has the transaction\n// [applied](#state.EditorState.apply). The callback will be bound to have\n// the view instance as its `this` binding.\n\nexport { Decoration, DecorationSet, EditorView, endComposition as __endComposition, parseFromClipboard as __parseFromClipboard, serializeForClipboard as __serializeForClipboard };\n//# sourceMappingURL=index.es.js.map\n","/**\n * @toast-ui/editor\n * @version 3.1.3 | Thu Feb 10 2022\n * @author NHN FE Development Lab \n * @license MIT\n */\n\nimport { Fragment, Schema, Slice, NodeRange, Mark as Mark$1, DOMParser, Node as Node$3 } from 'prosemirror-model';\nimport { DecorationSet, Decoration, EditorView } from 'prosemirror-view';\nimport { ReplaceAroundStep, liftTarget, canSplit, StepMap } from 'prosemirror-transform';\nimport { TextSelection, Plugin, PluginKey, EditorState, AllSelection, Selection, SelectionRange, NodeSelection } from 'prosemirror-state';\nimport { keymap } from 'prosemirror-keymap';\nimport { deleteSelection, selectAll, baseKeymap, chainCommands, joinForward, newlineInCode, setBlockType, wrapIn, toggleMark as toggleMark$1, exitCode } from 'prosemirror-commands';\nimport { InputRule, inputRules } from 'prosemirror-inputrules';\nimport { undo, redo, history, undoDepth } from 'prosemirror-history';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics$1 = function(d, b) {\r\n extendStatics$1 = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics$1(d, b);\r\n};\r\n\r\nfunction __extends$1(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics$1(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign$1 = function() {\r\n __assign$1 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign$1.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArray$1(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n}\n\n/**\n * @fileoverview Execute the provided callback once for each property of object which actually exist.\n * @author NHN FE Development Lab \n */\n\n/**\n * Execute the provided callback once for each property of object which actually exist.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the property\n * 2) The name of the property\n * 3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * // ES6\n * import forEachOwnProperties from 'tui-code-snippet/collection/forEachOwnProperties';\n * \n * // CommonJS\n * const forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); \n *\n * let sum = 0;\n *\n * forEachOwnProperties({a:1,b:2,c:3}, function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachOwnProperties$2(obj, iteratee, context) {\n var key;\n\n context = context || null;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (iteratee.call(context, obj[key], key, obj) === false) {\n break;\n }\n }\n }\n}\n\nvar forEachOwnProperties_1 = forEachOwnProperties$2;\n\n/**\n * @fileoverview Extend the target object from other objects.\n * @author NHN FE Development Lab \n */\n\n/**\n * @module object\n */\n\n/**\n * Extend the target object from other objects.\n * @param {object} target - Object that will be extended\n * @param {...object} objects - Objects as sources\n * @returns {object} Extended object\n * @memberof module:object\n */\nfunction extend(target, objects) { // eslint-disable-line no-unused-vars\n var hasOwnProp = Object.prototype.hasOwnProperty;\n var source, prop, i, len;\n\n for (i = 1, len = arguments.length; i < len; i += 1) {\n source = arguments[i];\n for (prop in source) {\n if (hasOwnProp.call(source, prop)) {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\n\nvar extend_1 = extend;\n\n/**\n * @fileoverview Check whether the given variable is a string or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is a string or not.\n * If the given variable is a string, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is string?\n * @memberof module:type\n */\nfunction isString$3(obj) {\n return typeof obj === 'string' || obj instanceof String;\n}\n\nvar isString_1 = isString$3;\n\n/**\n * @fileoverview Check whether the given variable is an instance of Array or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is an instance of Array or not.\n * If the given variable is an instance of Array, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is array instance?\n * @memberof module:type\n */\nfunction isArray$3(obj) {\n return obj instanceof Array;\n}\n\nvar isArray_1 = isArray$3;\n\n/**\n * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order.\n * @author NHN FE Development Lab \n */\n\n/**\n * Execute the provided callback once for each element present\n * in the array(or Array-like object) in ascending order.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the element\n * 2) The index of the element\n * 3) The array(or Array-like object) being traversed\n * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * // ES6\n * import forEachArray from 'tui-code-snippet/collection/forEachArray';\n * \n * // CommonJS\n * const forEachArray = require('tui-code-snippet/collection/forEachArray'); \n *\n * let sum = 0;\n *\n * forEachArray([1,2,3], function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachArray$3(arr, iteratee, context) {\n var index = 0;\n var len = arr.length;\n\n context = context || null;\n\n for (; index < len; index += 1) {\n if (iteratee.call(context, arr[index], index, arr) === false) {\n break;\n }\n }\n}\n\nvar forEachArray_1 = forEachArray$3;\n\n/**\n * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist.\n * @author NHN FE Development Lab \n */\n\nvar isArray$2 = isArray_1;\nvar forEachArray$2 = forEachArray_1;\nvar forEachOwnProperties$1 = forEachOwnProperties_1;\n\n/**\n * @module collection\n */\n\n/**\n * Execute the provided callback once for each property of object(or element of array) which actually exist.\n * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example).\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the property(or The value of the element)\n * 2) The name of the property(or The index of the element)\n * 3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * // ES6\n * import forEach from 'tui-code-snippet/collection/forEach'; \n * \n * // CommonJS\n * const forEach = require('tui-code-snippet/collection/forEach'); \n *\n * let sum = 0;\n *\n * forEach([1,2,3], function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n *\n * // In case of Array-like object\n * const array = Array.prototype.slice.call(arrayLike); // change to array\n * forEach(array, function(value){\n * sum += value;\n * });\n */\nfunction forEach$4(obj, iteratee, context) {\n if (isArray$2(obj)) {\n forEachArray$2(obj, iteratee, context);\n } else {\n forEachOwnProperties$1(obj, iteratee, context);\n }\n}\n\nvar forEach_1 = forEach$4;\n\n/**\n * @fileoverview Setting element style\n * @author NHN FE Development Lab \n */\n\nvar isString$2 = isString_1;\nvar forEach$3 = forEach_1;\n\n/**\n * Setting element style\n * @param {(HTMLElement|SVGElement)} element - element to setting style\n * @param {(string|object)} key - style prop name or {prop: value} pair object\n * @param {string} [value] - style value\n * @memberof module:domUtil\n */\nfunction css(element, key, value) {\n var style = element.style;\n\n if (isString$2(key)) {\n style[key] = value;\n\n return;\n }\n\n forEach$3(key, function(v, k) {\n style[k] = v;\n });\n}\n\nvar css_1 = css;\n\n/* eslint-disable complexity */\n\nvar isArray$1 = isArray_1;\n\n/**\n * @module array\n */\n\n/**\n * Returns the first index at which a given element can be found in the array\n * from start index(default 0), or -1 if it is not present.\n * It compares searchElement to elements of the Array using strict equality\n * (the same method used by the ===, or triple-equals, operator).\n * @param {*} searchElement Element to locate in the array\n * @param {Array} array Array that will be traversed.\n * @param {number} startIndex Start index in array for searching (default 0)\n * @returns {number} the First index at which a given element, or -1 if it is not present\n * @memberof module:array\n * @example\n * // ES6\n * import inArray from 'tui-code-snippet/array/inArray';\n * \n * // CommonJS\n * const inArray = require('tui-code-snippet/array/inArray');\n *\n * const arr = ['one', 'two', 'three', 'four'];\n * const idx1 = inArray('one', arr, 3); // -1\n * const idx2 = inArray('one', arr); // 0\n */\nfunction inArray$4(searchElement, array, startIndex) {\n var i;\n var length;\n startIndex = startIndex || 0;\n\n if (!isArray$1(array)) {\n return -1;\n }\n\n if (Array.prototype.indexOf) {\n return Array.prototype.indexOf.call(array, searchElement, startIndex);\n }\n\n length = array.length;\n for (i = startIndex; startIndex >= 0 && i < length; i += 1) {\n if (array[i] === searchElement) {\n return i;\n }\n }\n\n return -1;\n}\n\nvar inArray_1 = inArray$4;\n\n/**\n * @fileoverview Check whether the given variable is undefined or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is undefined or not.\n * If the given variable is undefined, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is undefined?\n * @memberof module:type\n */\nfunction isUndefined$4(obj) {\n return obj === undefined; // eslint-disable-line no-undefined\n}\n\nvar isUndefined_1 = isUndefined$4;\n\n/**\n * @fileoverview Get HTML element's design classes.\n * @author NHN FE Development Lab \n */\n\nvar isUndefined$3 = isUndefined_1;\n\n/**\n * Get HTML element's design classes.\n * @param {(HTMLElement|SVGElement)} element target element\n * @returns {string} element css class name\n * @memberof module:domUtil\n */\nfunction getClass$3(element) {\n if (!element || !element.className) {\n return '';\n }\n\n if (isUndefined$3(element.className.baseVal)) {\n return element.className;\n }\n\n return element.className.baseVal;\n}\n\nvar getClass_1 = getClass$3;\n\n/**\n * @fileoverview Set className value\n * @author NHN FE Development Lab \n */\n\nvar isArray = isArray_1;\nvar isUndefined$2 = isUndefined_1;\n\n/**\n * Set className value\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {(string|string[])} cssClass - class names\n * @private\n */\nfunction setClassName$2(element, cssClass) {\n cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass;\n\n cssClass = cssClass.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n if (isUndefined$2(element.className.baseVal)) {\n element.className = cssClass;\n\n return;\n }\n\n element.className.baseVal = cssClass;\n}\n\nvar _setClassName = setClassName$2;\n\n/**\n * @fileoverview Add css class to element\n * @author NHN FE Development Lab \n */\n\nvar forEach$2 = forEach_1;\nvar inArray$3 = inArray_1;\nvar getClass$2 = getClass_1;\nvar setClassName$1 = _setClassName;\n\n/**\n * domUtil module\n * @module domUtil\n */\n\n/**\n * Add css class to element\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {...string} cssClass - css classes to add\n * @memberof module:domUtil\n */\nfunction addClass(element) {\n var cssClass = Array.prototype.slice.call(arguments, 1);\n var classList = element.classList;\n var newClass = [];\n var origin;\n\n if (classList) {\n forEach$2(cssClass, function(name) {\n element.classList.add(name);\n });\n\n return;\n }\n\n origin = getClass$2(element);\n\n if (origin) {\n cssClass = [].concat(origin.split(/\\s+/), cssClass);\n }\n\n forEach$2(cssClass, function(cls) {\n if (inArray$3(cls, newClass) < 0) {\n newClass.push(cls);\n }\n });\n\n setClassName$1(element, newClass);\n}\n\nvar addClass_1 = addClass;\n\n/**\n * @fileoverview Remove css class from element\n * @author NHN FE Development Lab \n */\n\nvar forEachArray$1 = forEachArray_1;\nvar inArray$2 = inArray_1;\nvar getClass$1 = getClass_1;\nvar setClassName = _setClassName;\n\n/**\n * Remove css class from element\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {...string} cssClass - css classes to remove\n * @memberof module:domUtil\n */\nfunction removeClass(element) {\n var cssClass = Array.prototype.slice.call(arguments, 1);\n var classList = element.classList;\n var origin, newClass;\n\n if (classList) {\n forEachArray$1(cssClass, function(name) {\n classList.remove(name);\n });\n\n return;\n }\n\n origin = getClass$1(element).split(/\\s+/);\n newClass = [];\n forEachArray$1(origin, function(name) {\n if (inArray$2(name, cssClass) < 0) {\n newClass.push(name);\n }\n });\n\n setClassName(element, newClass);\n}\n\nvar removeClass_1 = removeClass;\n\n/**\n * @fileoverview Check whether the given variable is a number or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is a number or not.\n * If the given variable is a number, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is number?\n * @memberof module:type\n */\nfunction isNumber(obj) {\n return typeof obj === 'number' || obj instanceof Number;\n}\n\nvar isNumber_1 = isNumber;\n\n/**\n * @fileoverview Check whether the given variable is null or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is null or not.\n * If the given variable(arguments[0]) is null, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is null?\n * @memberof module:type\n */\nfunction isNull$1(obj) {\n return obj === null;\n}\n\nvar isNull_1 = isNull$1;\n\n/**\n * @fileoverview Request image ping.\n * @author NHN FE Development Lab \n */\n\nvar forEachOwnProperties = forEachOwnProperties_1;\n\n/**\n * @module request\n */\n\n/**\n * Request image ping.\n * @param {String} url url for ping request\n * @param {Object} trackingInfo infos for make query string\n * @returns {HTMLElement}\n * @memberof module:request\n * @example\n * // ES6\n * import imagePing from 'tui-code-snippet/request/imagePing';\n * \n * // CommonJS\n * const imagePing = require('tui-code-snippet/request/imagePing');\n *\n * imagePing('https://www.google-analytics.com/collect', {\n * v: 1,\n * t: 'event',\n * tid: 'trackingid',\n * cid: 'cid',\n * dp: 'dp',\n * dh: 'dh'\n * });\n */\nfunction imagePing$1(url, trackingInfo) {\n var trackingElement = document.createElement('img');\n var queryString = '';\n forEachOwnProperties(trackingInfo, function(value, key) {\n queryString += '&' + key + '=' + value;\n });\n queryString = queryString.substring(1);\n\n trackingElement.src = url + '?' + queryString;\n\n trackingElement.style.display = 'none';\n document.body.appendChild(trackingElement);\n document.body.removeChild(trackingElement);\n\n return trackingElement;\n}\n\nvar imagePing_1 = imagePing$1;\n\n/**\n * @fileoverview Send hostname on DOMContentLoaded.\n * @author NHN FE Development Lab \n */\n\nvar isUndefined$1 = isUndefined_1;\nvar imagePing = imagePing_1;\n\nvar ms7days = 7 * 24 * 60 * 60 * 1000;\n\n/**\n * Check if the date has passed 7 days\n * @param {number} date - milliseconds\n * @returns {boolean}\n * @private\n */\nfunction isExpired(date) {\n var now = new Date().getTime();\n\n return now - date > ms7days;\n}\n\n/**\n * Send hostname on DOMContentLoaded.\n * To prevent hostname set tui.usageStatistics to false.\n * @param {string} appName - application name\n * @param {string} trackingId - GA tracking ID\n * @ignore\n */\nfunction sendHostname(appName, trackingId) {\n var url = 'https://www.google-analytics.com/collect';\n var hostname = location.hostname;\n var hitType = 'event';\n var eventCategory = 'use';\n var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics';\n var date = window.localStorage.getItem(applicationKeyForStorage);\n\n // skip if the flag is defined and is set to false explicitly\n if (!isUndefined$1(window.tui) && window.tui.usageStatistics === false) {\n return;\n }\n\n // skip if not pass seven days old\n if (date && !isExpired(date)) {\n return;\n }\n\n window.localStorage.setItem(applicationKeyForStorage, new Date().getTime());\n\n setTimeout(function() {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n imagePing(url, {\n v: 1,\n t: hitType,\n tid: trackingId,\n cid: hostname,\n dp: hostname,\n dh: appName,\n el: appName,\n ec: eventCategory\n });\n }\n }, 1000);\n}\n\nvar sendHostname_1 = sendHostname;\n\n/Mac/.test(navigator.platform);\nvar reSpaceMoreThanOne = /[\\u0020]+/g;\nvar reEscapeChars$1 = /[>(){}[\\]+-.!#|]/g;\nvar reEscapeHTML = /<([a-zA-Z_][a-zA-Z0-9\\-._]*)(\\s|[^\\\\/>])*\\/?>|<(\\/)([a-zA-Z_][a-zA-Z0-9\\-._]*)\\s*\\/?>||<([a-zA-Z_][a-zA-Z0-9\\-.:/]*)>/g;\nvar reEscapeBackSlash = /\\\\[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\\\\]/g;\nvar reEscapePairedChars = /[*_~`]/g;\nvar reMdImageSyntax = /!\\[.*\\]\\(.*\\)/g;\nvar reEscapedCharInLinkSyntax = /[[\\]]/g; //\nvar XMLSPECIAL$1 = '[&<>\"]';\nvar reXmlSpecial$1 = new RegExp(XMLSPECIAL$1, 'g');\nfunction replaceUnsafeChar$1(char) {\n switch (char) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n default:\n return char;\n }\n}\nfunction escapeXml$1(text) {\n if (reXmlSpecial$1.test(text)) {\n return text.replace(reXmlSpecial$1, replaceUnsafeChar$1);\n }\n return text;\n}\nfunction sendHostName() {\n sendHostname_1('editor', 'UA-129966929-1');\n}\nfunction includes(arr, targetItem) {\n return arr.indexOf(targetItem) !== -1;\n}\nvar availableLinkAttributes = ['rel', 'target', 'hreflang', 'type'];\nvar reMarkdownTextToEscapeMap = {\n codeblock: /(^ {4}[^\\n]+\\n*)+/,\n thematicBreak: /^ *((\\* *){3,}|(- *){3,} *|(_ *){3,}) */,\n atxHeading: /^(#{1,6}) +[\\s\\S]+/,\n seTextheading: /^([^\\n]+)\\n *(=|-){2,} */,\n blockquote: /^( *>[^\\n]+.*)+/,\n list: /^ *(\\*+|-+|\\d+\\.) [\\s\\S]+/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? */,\n link: /!?\\[.*\\]\\(.*\\)/,\n reflink: /!?\\[.*\\]\\s*\\[([^\\]]*)\\]/,\n verticalBar: /\\u007C/,\n fencedCodeblock: /^((`|~){3,})/,\n};\nfunction sanitizeLinkAttribute(attribute) {\n if (!attribute) {\n return null;\n }\n var linkAttributes = {};\n availableLinkAttributes.forEach(function (key) {\n if (!isUndefined_1(attribute[key])) {\n linkAttributes[key] = attribute[key];\n }\n });\n return linkAttributes;\n}\nfunction repeat$1(text, count) {\n var result = '';\n for (var i = 0; i < count; i += 1) {\n result += text;\n }\n return result;\n}\nfunction isNeedEscapeText(text) {\n var needEscape = false;\n forEachOwnProperties_1(reMarkdownTextToEscapeMap, function (reMarkdownTextToEscape) {\n if (reMarkdownTextToEscape.test(text)) {\n needEscape = true;\n }\n return !needEscape;\n });\n return needEscape;\n}\nfunction escapeTextForLink(text) {\n var imageSyntaxRanges = [];\n var result = reMdImageSyntax.exec(text);\n while (result) {\n imageSyntaxRanges.push([result.index, result.index + result[0].length]);\n result = reMdImageSyntax.exec(text);\n }\n return text.replace(reEscapedCharInLinkSyntax, function (matched, offset) {\n var isDelimiter = imageSyntaxRanges.some(function (range) { return offset > range[0] && offset < range[1]; });\n return isDelimiter ? matched : \"\\\\\" + matched;\n });\n}\nfunction escape$1(text) {\n var replacer = function (matched) { return \"\\\\\" + matched; };\n var escapedText = text.replace(reSpaceMoreThanOne, ' ');\n if (reEscapeBackSlash.test(escapedText)) {\n escapedText = escapedText.replace(reEscapeBackSlash, replacer);\n }\n escapedText = escapedText.replace(reEscapePairedChars, replacer);\n if (reEscapeHTML.test(escapedText)) {\n escapedText = escapedText.replace(reEscapeHTML, replacer);\n }\n if (isNeedEscapeText(escapedText)) {\n escapedText = escapedText.replace(reEscapeChars$1, replacer);\n }\n return escapedText;\n}\nfunction quote(text) {\n var result;\n if (text.indexOf('\"') === -1) {\n result = '\"\"';\n }\n else {\n result = text.indexOf(\"'\") === -1 ? \"''\" : '()';\n }\n return result[0] + text + result[1];\n}\nfunction isNil(value) {\n return isNull_1(value) || isUndefined_1(value);\n}\nfunction shallowEqual(o1, o2) {\n if (o1 === null && o1 === o2) {\n return true;\n }\n if (typeof o1 !== 'object' || typeof o2 !== 'object' || isNil(o1) || isNil(o2)) {\n return o1 === o2;\n }\n for (var key in o1) {\n if (o1[key] !== o2[key]) {\n return false;\n }\n }\n for (var key in o2) {\n if (!(key in o1)) {\n return false;\n }\n }\n return true;\n}\nfunction last$1(arr) {\n return arr[arr.length - 1];\n}\nfunction between$1(value, min, max) {\n return value >= min && value <= max;\n}\nfunction isObject$1(obj) {\n return typeof obj === 'object' && obj !== null;\n}\nfunction deepMergedCopy(targetObj, obj) {\n var resultObj = __assign$1({}, targetObj);\n if (targetObj && obj) {\n Object.keys(obj).forEach(function (prop) {\n if (isObject$1(resultObj[prop])) {\n if (Array.isArray(obj[prop])) {\n resultObj[prop] = deepCopyArray(obj[prop]);\n }\n else if (resultObj.hasOwnProperty(prop)) {\n resultObj[prop] = deepMergedCopy(resultObj[prop], obj[prop]);\n }\n else {\n resultObj[prop] = deepCopy(obj[prop]);\n }\n }\n else {\n resultObj[prop] = obj[prop];\n }\n });\n }\n return resultObj;\n}\nfunction deepCopyArray(items) {\n return items.map(function (item) {\n if (isObject$1(item)) {\n return Array.isArray(item) ? deepCopyArray(item) : deepCopy(item);\n }\n return item;\n });\n}\nfunction deepCopy(obj) {\n var keys = Object.keys(obj);\n if (!keys.length) {\n return obj;\n }\n return keys.reduce(function (acc, prop) {\n if (isObject$1(obj[prop])) {\n acc[prop] = Array.isArray(obj[prop]) ? deepCopyArray(obj[prop]) : deepCopy(obj[prop]);\n }\n else {\n acc[prop] = obj[prop];\n }\n return acc;\n }, {});\n}\nfunction assign(targetObj, obj) {\n if (obj === void 0) { obj = {}; }\n Object.keys(obj).forEach(function (prop) {\n if (targetObj.hasOwnProperty(prop) && typeof targetObj[prop] === 'object') {\n if (Array.isArray(obj[prop])) {\n targetObj[prop] = obj[prop];\n }\n else {\n assign(targetObj[prop], obj[prop]);\n }\n }\n else {\n targetObj[prop] = obj[prop];\n }\n });\n return targetObj;\n}\nfunction getSortedNumPair(valueA, valueB) {\n return valueA > valueB ? [valueB, valueA] : [valueA, valueB];\n}\n\n/**\n * @fileoverview Transform the Array-like object to Array.\n * @author NHN FE Development Lab \n */\n\nvar forEachArray = forEachArray_1;\n\n/**\n * Transform the Array-like object to Array.\n * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used.\n * @param {*} arrayLike Array-like object\n * @returns {Array} Array\n * @memberof module:collection\n * @example\n * // ES6\n * import toArray from 'tui-code-snippet/collection/toArray'; \n * \n * // CommonJS\n * const toArray = require('tui-code-snippet/collection/toArray'); \n *\n * const arrayLike = {\n * 0: 'one',\n * 1: 'two',\n * 2: 'three',\n * 3: 'four',\n * length: 4\n * };\n * const result = toArray(arrayLike);\n *\n * alert(result instanceof Array); // true\n * alert(result); // one,two,three,four\n */\nfunction toArray$1(arrayLike) {\n var arr;\n try {\n arr = Array.prototype.slice.call(arrayLike);\n } catch (e) {\n arr = [];\n forEachArray(arrayLike, function(value) {\n arr.push(value);\n });\n }\n\n return arr;\n}\n\nvar toArray_1 = toArray$1;\n\nfunction createParagraph(schema, content) {\n var paragraph = schema.nodes.paragraph;\n if (!content) {\n return paragraph.createAndFill();\n }\n return paragraph.create(null, isString_1(content) ? schema.text(content) : content);\n}\nfunction createTextNode$1(schema, text, marks) {\n return schema.text(text, marks);\n}\nfunction createTextSelection(tr, from, to) {\n if (to === void 0) { to = from; }\n var contentSize = tr.doc.content.size;\n var size = contentSize > 0 ? contentSize - 1 : 1;\n return TextSelection.create(tr.doc, Math.min(from, size), Math.min(to, size));\n}\nfunction addParagraph(tr, _a, schema) {\n var pos = _a.pos;\n tr.replaceWith(pos, pos, createParagraph(schema));\n return tr.setSelection(createTextSelection(tr, pos + 1));\n}\nfunction replaceTextNode(_a) {\n var state = _a.state, from = _a.from, startIndex = _a.startIndex, endIndex = _a.endIndex, createText = _a.createText;\n var tr = state.tr, doc = state.doc, schema = state.schema;\n for (var i = startIndex; i <= endIndex; i += 1) {\n var _b = doc.child(i), nodeSize = _b.nodeSize, textContent = _b.textContent, content = _b.content;\n var text = createText(textContent);\n var node = text ? createTextNode$1(schema, text) : Fragment.empty;\n var mappedFrom = tr.mapping.map(from);\n var mappedTo = mappedFrom + content.size;\n tr.replaceWith(mappedFrom, mappedTo, node);\n from += nodeSize;\n }\n return tr;\n}\nfunction splitAndExtendBlock(tr, pos, text, node) {\n var textLen = text.length;\n tr.split(pos)\n .delete(pos - textLen, pos)\n .insert(tr.mapping.map(pos), node)\n .setSelection(createTextSelection(tr, tr.mapping.map(pos) - textLen));\n}\n\nfunction getMdStartLine(mdNode) {\n return mdNode.sourcepos[0][0];\n}\nfunction getMdEndLine(mdNode) {\n return mdNode.sourcepos[1][0];\n}\nfunction getMdStartCh(mdNode) {\n return mdNode.sourcepos[0][1];\n}\nfunction getMdEndCh(mdNode) {\n return mdNode.sourcepos[1][1];\n}\nfunction isHTMLNode(mdNode) {\n var type = mdNode.type;\n return type === 'htmlBlock' || type === 'htmlInline';\n}\nfunction isStyledInlineNode(mdNode) {\n var type = mdNode.type;\n return (type === 'strike' ||\n type === 'strong' ||\n type === 'emph' ||\n type === 'code' ||\n type === 'link' ||\n type === 'image');\n}\nfunction isCodeBlockNode(mdNode) {\n return mdNode && mdNode.type === 'codeBlock';\n}\nfunction isListNode$1(mdNode) {\n return mdNode && (mdNode.type === 'item' || mdNode.type === 'list');\n}\nfunction isOrderedListNode(mdNode) {\n return isListNode$1(mdNode) && mdNode.listData.type === 'ordered';\n}\nfunction isBulletListNode(mdNode) {\n return isListNode$1(mdNode) && mdNode.listData.type !== 'ordered';\n}\nfunction isTableCellNode(mdNode) {\n return mdNode && (mdNode.type === 'tableCell' || mdNode.type === 'tableDelimCell');\n}\nfunction isInlineNode$1(mdNode) {\n switch (mdNode.type) {\n case 'code':\n case 'text':\n case 'emph':\n case 'strong':\n case 'strike':\n case 'link':\n case 'image':\n case 'htmlInline':\n case 'linebreak':\n case 'softbreak':\n case 'customInline':\n return true;\n default:\n return false;\n }\n}\nfunction findClosestNode(mdNode, condition, includeSelf) {\n if (includeSelf === void 0) { includeSelf = true; }\n mdNode = includeSelf ? mdNode : mdNode.parent;\n while (mdNode && mdNode.type !== 'document') {\n if (condition(mdNode)) {\n return mdNode;\n }\n mdNode = mdNode.parent;\n }\n return null;\n}\nfunction traverseParentNodes(mdNode, iteratee, includeSelf) {\n if (includeSelf === void 0) { includeSelf = true; }\n mdNode = includeSelf ? mdNode : mdNode.parent;\n while (mdNode && mdNode.type !== 'document') {\n iteratee(mdNode);\n mdNode = mdNode.parent;\n }\n}\nfunction addOffsetPos(originPos, offset) {\n return [originPos[0], originPos[1] + offset];\n}\nfunction setOffsetPos(originPos, newOffset) {\n return [originPos[0], newOffset];\n}\nfunction getInlineMarkdownText(mdNode) {\n var text = mdNode.firstChild.literal;\n switch (mdNode.type) {\n case 'emph':\n return \"*\" + text + \"*\";\n case 'strong':\n return \"**\" + text + \"**\";\n case 'strike':\n return \"~~\" + text + \"~~\";\n case 'code':\n return \"`\" + text + \"`\";\n case 'link':\n case 'image':\n /* eslint-disable no-case-declarations */\n var _a = mdNode, destination = _a.destination, title = _a.title;\n var delim = mdNode.type === 'link' ? '' : '!';\n return delim + \"[\" + text + \"](\" + destination + (title ? \" \\\"\" + title + \"\\\"\" : '') + \")\";\n default:\n return null;\n }\n}\nfunction isContainer$2(node) {\n switch (node.type) {\n case 'document':\n case 'blockQuote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'strike':\n case 'link':\n case 'image':\n case 'table':\n case 'tableHead':\n case 'tableBody':\n case 'tableRow':\n case 'tableCell':\n case 'tableDelimRow':\n case 'customInline':\n return true;\n default:\n return false;\n }\n}\nfunction getChildrenText$1(node) {\n var buffer = [];\n var walker = node.walker();\n var event = null;\n while ((event = walker.next())) {\n var childNode = event.node;\n if (childNode.type === 'text') {\n buffer.push(childNode.literal);\n }\n }\n return buffer.join('');\n}\n\nvar widgetRules = [];\nvar widgetRuleMap = {};\nvar reWidgetPrefix = /\\$\\$widget\\d+\\s/;\nfunction unwrapWidgetSyntax(text) {\n var index = text.search(reWidgetPrefix);\n if (index !== -1) {\n var rest = text.substring(index);\n var replaced = rest.replace(reWidgetPrefix, '').replace('$$', '');\n text = text.substring(0, index);\n text += unwrapWidgetSyntax(replaced);\n }\n return text;\n}\nfunction createWidgetContent(info, text) {\n return \"$$\" + info + \" \" + text + \"$$\";\n}\nfunction widgetToDOM(info, text) {\n var _a = widgetRuleMap[info], rule = _a.rule, toDOM = _a.toDOM;\n text = unwrapWidgetSyntax(text).match(rule)[0];\n return toDOM(text);\n}\nfunction getWidgetRules() {\n return widgetRules;\n}\nfunction setWidgetRules(rules) {\n widgetRules = rules;\n widgetRules.forEach(function (rule, index) {\n widgetRuleMap[\"widget\" + index] = rule;\n });\n}\nfunction mergeNodes(nodes, text, schema, ruleIndex) {\n return nodes.concat(createNodesWithWidget(text, schema, ruleIndex));\n}\n/**\n * create nodes with plain text and replace text matched to the widget rules with the widget node\n * For example, in case the text and widget rules as below\n *\n * text: $test plain text #test\n * widget rules: [{ rule: /$.+/ }, { rule: /#.+/ }]\n *\n * The creating node process is recursive and is as follows.\n *\n * in first widget rule(/$.+/)\n * $test -> widget node\n * plain text -> match with next widget rule\n * #test -> match with next widget rule\n *\n * in second widget rule(/#.+/)\n * plain text -> text node(no rule for matching)\n * #test -> widget node\n */\nfunction createNodesWithWidget(text, schema, ruleIndex) {\n if (ruleIndex === void 0) { ruleIndex = 0; }\n var nodes = [];\n var rule = (widgetRules[ruleIndex] || {}).rule;\n var nextRuleIndex = ruleIndex + 1;\n text = unwrapWidgetSyntax(text);\n if (rule && rule.test(text)) {\n var index = void 0;\n while ((index = text.search(rule)) !== -1) {\n var prev = text.substring(0, index);\n // get widget node on first splitted text using next widget rule\n if (prev) {\n nodes = mergeNodes(nodes, prev, schema, nextRuleIndex);\n }\n // build widget node using current widget rule\n text = text.substring(index);\n var literal = text.match(rule)[0];\n var info = \"widget\" + ruleIndex;\n nodes.push(schema.nodes.widget.create({ info: info }, schema.text(createWidgetContent(info, literal))));\n text = text.substring(literal.length);\n }\n // get widget node on last splitted text using next widget rule\n if (text) {\n nodes = mergeNodes(nodes, text, schema, nextRuleIndex);\n }\n }\n else if (text) {\n nodes =\n ruleIndex < widgetRules.length - 1\n ? mergeNodes(nodes, text, schema, nextRuleIndex)\n : [schema.text(text)];\n }\n return nodes;\n}\nfunction getWidgetContent(widgetNode) {\n var event;\n var text = '';\n var walker = widgetNode.walker();\n while ((event = walker.next())) {\n var node = event.node, entering = event.entering;\n if (entering) {\n if (node !== widgetNode && node.type !== 'text') {\n text += getInlineMarkdownText(node);\n // skip the children\n walker.resumeAt(widgetNode, false);\n walker.next();\n }\n else if (node.type === 'text') {\n text += node.literal;\n }\n }\n }\n return text;\n}\n\nfunction getDefaultCommands() {\n return {\n deleteSelection: function () { return deleteSelection; },\n selectAll: function () { return selectAll; },\n undo: function () { return undo; },\n redo: function () { return redo; },\n };\n}\n\nfunction placeholder(options) {\n return new Plugin({\n props: {\n decorations: function (state) {\n var doc = state.doc;\n if (options.text &&\n doc.childCount === 1 &&\n doc.firstChild.isTextblock &&\n doc.firstChild.content.size === 0) {\n var placeHolder = document.createElement('span');\n addClass_1(placeHolder, 'placeholder');\n if (options.className) {\n addClass_1(placeHolder, options.className);\n }\n placeHolder.textContent = options.text;\n return DecorationSet.create(doc, [Decoration.widget(1, placeHolder)]);\n }\n return null;\n },\n },\n });\n}\n\n/**\n * @fileoverview Check element has specific css class\n * @author NHN FE Development Lab \n */\n\nvar inArray$1 = inArray_1;\nvar getClass = getClass_1;\n\n/**\n * Check element has specific css class\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {string} cssClass - css class\n * @returns {boolean}\n * @memberof module:domUtil\n */\nfunction hasClass(element, cssClass) {\n var origin;\n\n if (element.classList) {\n return element.classList.contains(cssClass);\n }\n\n origin = getClass(element).split(/\\s+/);\n\n return inArray$1(cssClass, origin) > -1;\n}\n\nvar hasClass_1 = hasClass;\n\n/**\n * @fileoverview Check element match selector\n * @author NHN FE Development Lab \n */\n\nvar inArray = inArray_1;\nvar toArray = toArray_1;\n\nvar elProto = Element.prototype;\nvar matchSelector = elProto.matches ||\n elProto.webkitMatchesSelector ||\n elProto.mozMatchesSelector ||\n elProto.msMatchesSelector ||\n function(selector) {\n var doc = this.document || this.ownerDocument;\n\n return inArray(this, toArray(doc.querySelectorAll(selector))) > -1;\n };\n\n/**\n * Check element match selector\n * @param {HTMLElement} element - element to check\n * @param {string} selector - selector to check\n * @returns {boolean} is selector matched to element?\n * @memberof module:domUtil\n */\nfunction matches(element, selector) {\n return matchSelector.call(element, selector);\n}\n\nvar matches_1 = matches;\n\nvar TAG_NAME = '[A-Za-z][A-Za-z0-9-]*';\nvar ATTRIBUTE_NAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar UNQUOTED_VALUE = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar SINGLE_QUOTED_VALUE = \"'[^']*'\";\nvar DOUBLE_QUOTED_VALUE = '\"[^\"]*\"';\nvar ATTRIBUTE_VALUE = \"(?:\" + UNQUOTED_VALUE + \"|\" + SINGLE_QUOTED_VALUE + \"|\" + DOUBLE_QUOTED_VALUE + \")\";\nvar ATTRIBUTE_VALUE_SPEC = \"\" + '(?:\\\\s*=\\\\s*' + ATTRIBUTE_VALUE + \")\";\nvar ATTRIBUTE$1 = \"\" + '(?:\\\\s+' + ATTRIBUTE_NAME + ATTRIBUTE_VALUE_SPEC + \"?)\";\nvar OPEN_TAG = \"<(\" + TAG_NAME + \")(\" + ATTRIBUTE$1 + \")*\\\\s*/?>\";\nvar CLOSE_TAG = \"]\";\nvar HTML_TAG = \"(?:\" + OPEN_TAG + \"|\" + CLOSE_TAG + \")\";\nvar reHTMLTag = new RegExp(\"^\" + HTML_TAG, 'i');\nvar reBR = //i;\nvar reHTMLComment = /|/;\nvar ALTERNATIVE_TAG_FOR_BR = '

';\n\nfunction isPositionInBox(style, offsetX, offsetY) {\n var left = parseInt(style.left, 10);\n var top = parseInt(style.top, 10);\n var width = parseInt(style.width, 10) + parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n var height = parseInt(style.height, 10) + parseInt(style.paddingTop, 10) + parseInt(style.paddingBottom, 10);\n return offsetX >= left && offsetX <= left + width && offsetY >= top && offsetY <= top + height;\n}\nvar CLS_PREFIX = 'toastui-editor-';\nfunction cls() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n var result = [];\n for (var _a = 0, names_1 = names; _a < names_1.length; _a++) {\n var name_1 = names_1[_a];\n var className = void 0;\n if (Array.isArray(name_1)) {\n className = name_1[0] ? name_1[1] : null;\n }\n else {\n className = name_1;\n }\n if (className) {\n result.push(\"\" + CLS_PREFIX + className);\n }\n }\n return result.join(' ');\n}\nfunction clsWithMdPrefix() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n return names.map(function (className) { return CLS_PREFIX + \"md-\" + className; }).join(' ');\n}\nfunction isTextNode(node) {\n return (node === null || node === void 0 ? void 0 : node.nodeType) === Node.TEXT_NODE;\n}\nfunction isElemNode(node) {\n return node && node.nodeType === Node.ELEMENT_NODE;\n}\nfunction findNodes(element, selector) {\n var nodeList = toArray_1(element.querySelectorAll(selector));\n if (nodeList.length) {\n return nodeList;\n }\n return [];\n}\nfunction appendNodes(node, nodesToAppend) {\n nodesToAppend = isArray_1(nodesToAppend) ? toArray_1(nodesToAppend) : [nodesToAppend];\n nodesToAppend.forEach(function (nodeToAppend) {\n node.appendChild(nodeToAppend);\n });\n}\nfunction insertBeforeNode(insertedNode, node) {\n if (node.parentNode) {\n node.parentNode.insertBefore(insertedNode, node);\n }\n}\nfunction removeNode$1(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction unwrapNode(node) {\n var result = [];\n while (node.firstChild) {\n result.push(node.firstChild);\n if (node.parentNode) {\n node.parentNode.insertBefore(node.firstChild, node);\n }\n }\n removeNode$1(node);\n return result;\n}\nfunction toggleClass(element, className, state) {\n if (isUndefined_1(state)) {\n state = !hasClass_1(element, className);\n }\n var toggleFn = state ? addClass_1 : removeClass_1;\n toggleFn(element, className);\n}\nfunction createElementWith(contents, target) {\n var container = document.createElement('div');\n if (isString_1(contents)) {\n container.innerHTML = contents;\n }\n else {\n container.appendChild(contents);\n }\n var firstChild = container.firstChild;\n if (target) {\n target.appendChild(firstChild);\n }\n return firstChild;\n}\nfunction getOuterWidth(el) {\n var computed = window.getComputedStyle(el);\n return (['margin-left', 'margin-right'].reduce(function (acc, type) { return acc + parseInt(computed.getPropertyValue(type), 10); }, 0) + el.offsetWidth);\n}\nfunction closest(node, found) {\n var condition;\n if (isString_1(found)) {\n condition = function (target) { return matches_1(target, found); };\n }\n else {\n condition = function (target) { return target === found; };\n }\n while (node && node !== document) {\n if (isElemNode(node) && condition(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n}\nfunction getTotalOffset(el, root) {\n var offsetTop = 0;\n var offsetLeft = 0;\n while (el && el !== root) {\n var top_1 = el.offsetTop, left = el.offsetLeft, offsetParent = el.offsetParent;\n offsetTop += top_1;\n offsetLeft += left;\n if (offsetParent === root.offsetParent) {\n break;\n }\n el = el.offsetParent;\n }\n return { offsetTop: offsetTop, offsetLeft: offsetLeft };\n}\nfunction setAttributes(attributes, element) {\n Object.keys(attributes).forEach(function (attrName) {\n if (isNil(attributes[attrName])) {\n element.removeAttribute(attrName);\n }\n else {\n element.setAttribute(attrName, attributes[attrName]);\n }\n });\n}\nfunction replaceBRWithEmptyBlock(html) {\n // remove br in paragraph to compatible with markdown\n var replacedHTML = html.replace(/

<\\/p>/gi, '

');\n var reHTMLTag = new RegExp(HTML_TAG, 'ig');\n var htmlTagMatched = replacedHTML.match(reHTMLTag);\n htmlTagMatched === null || htmlTagMatched === void 0 ? void 0 : htmlTagMatched.forEach(function (htmlTag, index) {\n if (reBR.test(htmlTag)) {\n var alternativeTag = ALTERNATIVE_TAG_FOR_BR;\n if (index) {\n var prevTag = htmlTagMatched[index - 1];\n var openTagMatched = prevTag.match(OPEN_TAG);\n if (openTagMatched && !/br/i.test(openTagMatched[1])) {\n var tagName = openTagMatched[1];\n alternativeTag = \"<\" + tagName + \">\";\n }\n }\n replacedHTML = replacedHTML.replace(reBR, alternativeTag);\n }\n });\n return replacedHTML;\n}\n\nvar pluginKey$1 = new PluginKey('widget');\nvar MARGIN = 5;\nvar PopupWidget = /** @class */ (function () {\n function PopupWidget(view, eventEmitter) {\n var _this = this;\n this.popup = null;\n this.removeWidget = function () {\n if (_this.popup) {\n _this.rootEl.removeChild(_this.popup);\n _this.popup = null;\n }\n };\n this.rootEl = view.dom.parentElement;\n this.eventEmitter = eventEmitter;\n this.eventEmitter.listen('blur', this.removeWidget);\n this.eventEmitter.listen('loadUI', function () {\n _this.rootEl = closest(view.dom.parentElement, \".\" + cls('defaultUI'));\n });\n this.eventEmitter.listen('removePopupWidget', this.removeWidget);\n }\n PopupWidget.prototype.update = function (view) {\n var widget = pluginKey$1.getState(view.state);\n this.removeWidget();\n if (widget) {\n var node = widget.node, style = widget.style;\n var _a = view.coordsAtPos(widget.pos), top_1 = _a.top, left = _a.left, bottom = _a.bottom;\n var height = bottom - top_1;\n var rect = this.rootEl.getBoundingClientRect();\n var relTopPos = top_1 - rect.top;\n css_1(node, { opacity: '0' });\n this.rootEl.appendChild(node);\n css_1(node, {\n position: 'absolute',\n left: left - rect.left + MARGIN + \"px\",\n top: (style === 'bottom' ? relTopPos + height - MARGIN : relTopPos - height) + \"px\",\n opacity: '1',\n });\n this.popup = node;\n view.focus();\n }\n };\n PopupWidget.prototype.destroy = function () {\n this.eventEmitter.removeEventHandler('blur', this.removeWidget);\n };\n return PopupWidget;\n}());\nfunction addWidget(eventEmitter) {\n return new Plugin({\n key: pluginKey$1,\n state: {\n init: function () {\n return null;\n },\n apply: function (tr) {\n return tr.getMeta('widget');\n },\n },\n view: function (editorView) {\n return new PopupWidget(editorView, eventEmitter);\n },\n });\n}\n\nfunction addDefaultImageBlobHook(eventEmitter) {\n eventEmitter.listen('addImageBlobHook', function (blob, callback) {\n var reader = new FileReader();\n reader.onload = function (_a) {\n var target = _a.target;\n return callback(target.result);\n };\n reader.readAsDataURL(blob);\n });\n}\nfunction emitImageBlobHook(eventEmitter, blob, type) {\n var hook = function (imageUrl, altText) {\n eventEmitter.emit('command', 'addImage', {\n imageUrl: imageUrl,\n altText: altText || blob.name || 'image',\n });\n };\n eventEmitter.emit('addImageBlobHook', blob, hook, type);\n}\nfunction pasteImageOnly(items) {\n var images = toArray_1(items).filter(function (_a) {\n var type = _a.type;\n return type.indexOf('image') !== -1;\n });\n if (images.length === 1) {\n var item = images[0];\n if (item) {\n return item.getAsFile();\n }\n }\n return null;\n}\n\nfunction dropImage(_a) {\n var eventEmitter = _a.eventEmitter;\n return new Plugin({\n props: {\n handleDOMEvents: {\n drop: function (_, ev) {\n var _a;\n var items = (_a = ev.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;\n if (items) {\n forEachArray_1(items, function (item) {\n if (item.type.indexOf('image') !== -1) {\n ev.preventDefault();\n ev.stopPropagation();\n emitImageBlobHook(eventEmitter, item, ev.type);\n return false;\n }\n return true;\n });\n }\n return true;\n },\n },\n },\n });\n}\n\nvar Node$2 = /** @class */ (function () {\n function Node() {\n }\n Object.defineProperty(Node.prototype, \"type\", {\n get: function () {\n return 'node';\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.setContext = function (context) {\n this.context = context;\n };\n return Node;\n}());\n\nfunction widgetNodeView(pmNode) {\n var dom = document.createElement('span');\n var node = widgetToDOM(pmNode.attrs.info, pmNode.textContent);\n dom.className = 'tui-widget';\n dom.appendChild(node);\n return { dom: dom };\n}\nfunction isWidgetNode(pmNode) {\n return pmNode.type.name === 'widget';\n}\nvar Widget = /** @class */ (function (_super) {\n __extends$1(Widget, _super);\n function Widget() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Widget.prototype, \"name\", {\n get: function () {\n return 'widget';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n info: { default: null },\n },\n group: 'inline',\n inline: true,\n content: 'text*',\n selectable: false,\n atom: true,\n toDOM: function () {\n return ['span', { class: 'tui-widget' }, 0];\n },\n parseDOM: [\n {\n tag: 'span.tui-widget',\n getAttrs: function (dom) {\n var text = dom.textContent;\n var _a = text.match(/\\$\\$(widget\\d+)/), info = _a[1];\n return { info: info };\n },\n },\n ],\n };\n },\n enumerable: false,\n configurable: true\n });\n return Widget;\n}(Node$2));\n\nvar EditorBase = /** @class */ (function () {\n function EditorBase(eventEmitter) {\n this.timer = null;\n this.el = document.createElement('div');\n this.el.className = 'toastui-editor';\n this.eventEmitter = eventEmitter;\n this.placeholder = { text: '' };\n }\n EditorBase.prototype.createState = function () {\n return EditorState.create({\n schema: this.schema,\n plugins: this.createPlugins(),\n });\n };\n EditorBase.prototype.initEvent = function () {\n var _a = this, eventEmitter = _a.eventEmitter, view = _a.view, editorType = _a.editorType;\n view.dom.addEventListener('focus', function () { return eventEmitter.emit('focus', editorType); });\n view.dom.addEventListener('blur', function () { return eventEmitter.emit('blur', editorType); });\n };\n EditorBase.prototype.emitChangeEvent = function (tr) {\n this.eventEmitter.emit('caretChange', this.editorType);\n if (tr.docChanged) {\n this.eventEmitter.emit('change', this.editorType);\n }\n };\n Object.defineProperty(EditorBase.prototype, \"defaultPlugins\", {\n get: function () {\n var rules = this.createInputRules();\n var plugins = __spreadArray$1(__spreadArray$1([], this.keymaps), [\n keymap(__assign$1({ 'Shift-Enter': baseKeymap.Enter }, baseKeymap)),\n history(),\n placeholder(this.placeholder),\n addWidget(this.eventEmitter),\n dropImage(this.context),\n ]);\n return rules ? plugins.concat(rules) : plugins;\n },\n enumerable: false,\n configurable: true\n });\n EditorBase.prototype.createInputRules = function () {\n var widgetRules = getWidgetRules();\n var rules = widgetRules.map(function (_a) {\n var rule = _a.rule;\n return new InputRule(rule, function (state, match, start, end) {\n var schema = state.schema, tr = state.tr, doc = state.doc;\n var allMatched = match.input.match(new RegExp(rule, 'g'));\n var pos = doc.resolve(start);\n var parent = pos.parent;\n var count = 0;\n if (isWidgetNode(parent)) {\n parent = pos.node(pos.depth - 1);\n }\n parent.forEach(function (child) { return isWidgetNode(child) && (count += 1); });\n // replace the content only if the count of matched rules in whole text is greater than current widget node count\n if (allMatched.length > count) {\n var content = last$1(allMatched);\n var nodes = createNodesWithWidget(content, schema);\n // adjust start position based on widget content\n return tr.replaceWith(end - content.length + 1, end, nodes);\n }\n return null;\n });\n });\n return rules.length ? inputRules({ rules: rules }) : null;\n };\n EditorBase.prototype.clearTimer = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n };\n EditorBase.prototype.createSchema = function () {\n return new Schema({\n nodes: this.specs.nodes,\n marks: this.specs.marks,\n });\n };\n EditorBase.prototype.createKeymaps = function (useCommandShortcut) {\n var _a = getDefaultCommands(), undo = _a.undo, redo = _a.redo;\n var allKeymaps = this.specs.keymaps(useCommandShortcut);\n var historyKeymap = {\n 'Mod-z': undo(),\n 'Shift-Mod-z': redo(),\n };\n return useCommandShortcut ? allKeymaps.concat(keymap(historyKeymap)) : allKeymaps;\n };\n EditorBase.prototype.createCommands = function () {\n return this.specs.commands(this.view);\n };\n EditorBase.prototype.createPluginProps = function () {\n var _this = this;\n return this.extraPlugins.map(function (plugin) { return plugin(_this.eventEmitter); });\n };\n EditorBase.prototype.focus = function () {\n var _this = this;\n this.clearTimer();\n // prevent the error for IE11\n this.timer = setTimeout(function () {\n _this.view.focus();\n _this.view.dispatch(_this.view.state.tr.scrollIntoView());\n });\n };\n EditorBase.prototype.blur = function () {\n this.view.dom.blur();\n };\n EditorBase.prototype.destroy = function () {\n var _this = this;\n this.clearTimer();\n this.view.destroy();\n Object.keys(this).forEach(function (prop) {\n delete _this[prop];\n });\n };\n EditorBase.prototype.moveCursorToStart = function (focus) {\n var tr = this.view.state.tr;\n this.view.dispatch(tr.setSelection(createTextSelection(tr, 1)).scrollIntoView());\n if (focus) {\n this.focus();\n }\n };\n EditorBase.prototype.moveCursorToEnd = function (focus) {\n var tr = this.view.state.tr;\n this.view.dispatch(tr.setSelection(createTextSelection(tr, tr.doc.content.size - 1)).scrollIntoView());\n if (focus) {\n this.focus();\n }\n };\n EditorBase.prototype.setScrollTop = function (top) {\n this.view.dom.scrollTop = top;\n };\n EditorBase.prototype.getScrollTop = function () {\n return this.view.dom.scrollTop;\n };\n EditorBase.prototype.setPlaceholder = function (text) {\n this.placeholder.text = text;\n this.view.dispatch(this.view.state.tr.scrollIntoView());\n };\n EditorBase.prototype.setHeight = function (height) {\n css_1(this.el, { height: height + \"px\" });\n };\n EditorBase.prototype.setMinHeight = function (minHeight) {\n css_1(this.el, { minHeight: minHeight + \"px\" });\n };\n EditorBase.prototype.getElement = function () {\n return this.el;\n };\n return EditorBase;\n}());\n\n/**\n * @fileoverview Check whether the given variable is a function or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is a function or not.\n * If the given variable is a function, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is function?\n * @memberof module:type\n */\nfunction isFunction(obj) {\n return obj instanceof Function;\n}\n\nvar isFunction_1 = isFunction;\n\nvar defaultCommandShortcuts = [\n 'Enter',\n 'Shift-Enter',\n 'Mod-Enter',\n 'Tab',\n 'Shift-Tab',\n 'Delete',\n 'Backspace',\n 'Mod-Delete',\n 'Mod-Backspace',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Mod-d',\n 'Mod-D',\n 'Alt-ArrowUp',\n 'Alt-ArrowDown',\n];\nfunction execCommand(view, command, payload) {\n view.focus();\n return command(payload)(view.state, view.dispatch, view);\n}\nvar SpecManager = /** @class */ (function () {\n function SpecManager(specs) {\n this.specs = specs;\n }\n Object.defineProperty(SpecManager.prototype, \"nodes\", {\n get: function () {\n return this.specs\n .filter(function (spec) { return spec.type === 'node'; })\n .reduce(function (nodes, _a) {\n var _b;\n var name = _a.name, schema = _a.schema;\n return __assign$1(__assign$1({}, nodes), (_b = {}, _b[name] = schema, _b));\n }, {});\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SpecManager.prototype, \"marks\", {\n get: function () {\n return this.specs\n .filter(function (spec) { return spec.type === 'mark'; })\n .reduce(function (marks, _a) {\n var _b;\n var name = _a.name, schema = _a.schema;\n return __assign$1(__assign$1({}, marks), (_b = {}, _b[name] = schema, _b));\n }, {});\n },\n enumerable: false,\n configurable: true\n });\n SpecManager.prototype.commands = function (view, addedCommands) {\n var specCommands = this.specs\n .filter(function (_a) {\n var commands = _a.commands;\n return commands;\n })\n .reduce(function (allCommands, spec) {\n var commands = {};\n var specCommand = spec.commands();\n if (isFunction_1(specCommand)) {\n commands[spec.name] = function (payload) { return execCommand(view, specCommand, payload); };\n }\n else {\n Object.keys(specCommand).forEach(function (name) {\n commands[name] = function (payload) { return execCommand(view, specCommand[name], payload); };\n });\n }\n return __assign$1(__assign$1({}, allCommands), commands);\n }, {});\n var defaultCommands = getDefaultCommands();\n Object.keys(defaultCommands).forEach(function (name) {\n specCommands[name] = function (payload) { return execCommand(view, defaultCommands[name], payload); };\n });\n if (addedCommands) {\n Object.keys(addedCommands).forEach(function (name) {\n specCommands[name] = function (payload) { return execCommand(view, addedCommands[name], payload); };\n });\n }\n return specCommands;\n };\n SpecManager.prototype.keymaps = function (useCommandShortcut) {\n var specKeymaps = this.specs.filter(function (spec) { return spec.keymaps; }).map(function (spec) { return spec.keymaps(); });\n return specKeymaps.map(function (keys) {\n if (!useCommandShortcut) {\n Object.keys(keys).forEach(function (key) {\n if (!includes(defaultCommandShortcuts, key)) {\n delete keys[key];\n }\n });\n }\n return keymap(keys);\n });\n };\n SpecManager.prototype.setContext = function (context) {\n this.specs.forEach(function (spec) {\n spec.setContext(context);\n });\n };\n return SpecManager;\n}());\n\nfunction resolveSelectionPos(selection) {\n var from = selection.from, to = selection.to;\n if (selection instanceof AllSelection) {\n return [from + 1, to - 1];\n }\n return [from, to];\n}\nfunction getMdLine(resolvedPos) {\n return resolvedPos.index(0) + 1;\n}\nfunction getWidgetNodePos(node, chPos, direction) {\n if (direction === void 0) { direction = 1; }\n var additionalPos = 0;\n node.forEach(function (child, pos) {\n // add or subtract widget node tag\n if (isWidgetNode(child) && pos + 2 < chPos) {\n additionalPos += 2 * direction;\n }\n });\n return additionalPos;\n}\nfunction getEditorToMdPos(doc, from, to) {\n if (to === void 0) { to = from; }\n var collapsed = from === to;\n var startResolvedPos = doc.resolve(from);\n var startLine = getMdLine(startResolvedPos);\n var endLine = startLine;\n var startOffset = startResolvedPos.start(1);\n var endOffset = startOffset;\n if (!collapsed) {\n // prevent the end offset from pointing to the root document position\n var endResolvedPos = doc.resolve(to === doc.content.size ? to - 1 : to);\n endOffset = endResolvedPos.start(1);\n endLine = getMdLine(endResolvedPos);\n // To resolve the end offset excluding document tag size\n if (endResolvedPos.pos === doc.content.size) {\n to = doc.content.size - 2;\n }\n }\n var startCh = Math.max(from - startOffset + 1, 1);\n var endCh = Math.max(to - endOffset + 1, 1);\n return [\n [startLine, startCh + getWidgetNodePos(doc.child(startLine - 1), startCh, -1)],\n [endLine, endCh + getWidgetNodePos(doc.child(endLine - 1), endCh, -1)],\n ];\n}\nfunction getStartPosListPerLine(doc, endIndex) {\n var startPosListPerLine = [];\n for (var i = 0, pos = 0; i < endIndex; i += 1) {\n var child = doc.child(i);\n startPosListPerLine[i] = pos;\n pos += child.nodeSize;\n }\n return startPosListPerLine;\n}\nfunction getMdToEditorPos(doc, startPos, endPos) {\n var startPosListPerLine = getStartPosListPerLine(doc, endPos[0]);\n var startIndex = startPos[0] - 1;\n var endIndex = endPos[0] - 1;\n var startNode = doc.child(startIndex);\n var endNode = doc.child(endIndex);\n // calculate the position corresponding to the line\n var from = startPosListPerLine[startIndex];\n var to = startPosListPerLine[endIndex];\n // calculate the position corresponding to the character offset of the line\n from += startPos[1] + getWidgetNodePos(startNode, startPos[1] - 1);\n to += endPos[1] + getWidgetNodePos(endNode, endPos[1] - 1);\n return [from, Math.min(to, doc.content.size)];\n}\nfunction getRangeInfo(selection) {\n var $from = selection.$from, $to = selection.$to;\n var from = selection.from, to = selection.to;\n var doc = $from.doc;\n if (selection instanceof AllSelection) {\n $from = doc.resolve(from + 1);\n $to = doc.resolve(to - 1);\n }\n if ($from.depth === 0) {\n $from = doc.resolve(from - 1);\n $to = $from;\n }\n return {\n startFromOffset: $from.start(1),\n endFromOffset: $to.start(1),\n startToOffset: $from.end(1),\n endToOffset: $to.end(1),\n startIndex: $from.index(0),\n endIndex: $to.index(0),\n from: $from.pos,\n to: $to.pos,\n };\n}\nfunction getNodeContentOffsetRange(doc, targetIndex) {\n var startOffset = 1;\n var endOffset = 1;\n for (var i = 0, offset = 0; i < doc.childCount; i += 1) {\n var nodeSize = doc.child(i).nodeSize;\n // calculate content start, end offset(not node offset)\n startOffset = offset + 1;\n endOffset = offset + nodeSize - 1;\n if (i === targetIndex) {\n break;\n }\n offset += nodeSize;\n }\n return { startOffset: startOffset, endOffset: endOffset };\n}\n\nvar HEADING = 'heading';\nvar BLOCK_QUOTE = 'blockQuote';\nvar LIST_ITEM = 'listItem';\nvar TABLE = 'table';\nvar TABLE_CELL = 'tableCell';\nvar CODE_BLOCK = 'codeBlock';\nvar THEMATIC_BREAK = 'thematicBreak';\nvar LINK = 'link';\nvar CODE = 'code';\nvar META = 'meta';\nvar DELIM = 'delimiter';\nvar TASK_DELIM = 'taskDelimiter';\nvar TEXT = 'markedText';\nvar HTML = 'html';\nvar CUSTOM_BLOCK = 'customBlock';\nvar delimSize = {\n strong: 2,\n emph: 1,\n strike: 2,\n};\nfunction markInfo(start, end, type, attrs) {\n return { start: start, end: end, spec: { type: type, attrs: attrs } };\n}\nfunction heading$1(_a, start, end) {\n var level = _a.level, headingType = _a.headingType;\n var marks = [markInfo(start, end, HEADING, { level: level })];\n if (headingType === 'atx') {\n marks.push(markInfo(start, addOffsetPos(start, level), DELIM));\n }\n else {\n marks.push(markInfo(setOffsetPos(end, 0), end, HEADING, { seText: true }));\n }\n return marks;\n}\nfunction emphasisAndStrikethrough(_a, start, end) {\n var type = _a.type;\n var startDelimPos = addOffsetPos(start, delimSize[type]);\n var endDelimPos = addOffsetPos(end, -delimSize[type]);\n return [\n markInfo(startDelimPos, endDelimPos, type),\n markInfo(start, startDelimPos, DELIM),\n markInfo(endDelimPos, end, DELIM),\n ];\n}\nfunction markLink(start, end, linkTextStart, lastChildCh) {\n return [\n markInfo(start, end, LINK),\n markInfo(setOffsetPos(start, linkTextStart[1] + 1), setOffsetPos(end, lastChildCh), LINK, {\n desc: true,\n }),\n markInfo(setOffsetPos(end, lastChildCh + 2), addOffsetPos(end, -1), LINK, { url: true }),\n ];\n}\nfunction image$1(_a, start, end) {\n var lastChild = _a.lastChild;\n var lastChildCh = lastChild ? getMdEndCh(lastChild) + 1 : 3; // 3: length of '![]'\n var linkTextEnd = addOffsetPos(start, 1);\n return __spreadArray$1([markInfo(start, linkTextEnd, META)], markLink(start, end, linkTextEnd, lastChildCh));\n}\nfunction link(_a, start, end) {\n var lastChild = _a.lastChild, extendedAutolink = _a.extendedAutolink;\n var lastChildCh = lastChild ? getMdEndCh(lastChild) + 1 : 2; // 2: length of '[]'\n return extendedAutolink\n ? [markInfo(start, end, LINK, { desc: true })]\n : markLink(start, end, start, lastChildCh);\n}\nfunction code(_a, start, end) {\n var tickCount = _a.tickCount;\n var openDelimEnd = addOffsetPos(start, tickCount);\n var closeDelimStart = addOffsetPos(end, -tickCount);\n return [\n markInfo(start, end, CODE),\n markInfo(start, openDelimEnd, CODE, { start: true }),\n markInfo(openDelimEnd, closeDelimStart, CODE, { marked: true }),\n markInfo(closeDelimStart, end, CODE, { end: true }),\n ];\n}\nfunction lineBackground(parent, start, end, prefix) {\n var defaultBackground = {\n start: start,\n end: end,\n spec: {\n attrs: { className: prefix + \"-line-background\", codeStart: start[0], codeEnd: end[0] },\n },\n lineBackground: true,\n };\n return parent.type !== 'item' && parent.type !== 'blockQuote'\n ? [\n __assign$1(__assign$1({}, defaultBackground), { end: start, spec: { attrs: { className: prefix + \"-line-background start\" } } }),\n __assign$1(__assign$1({}, defaultBackground), { start: [Math.min(start[0] + 1, end[0]), start[1]] }),\n ]\n : null;\n}\nfunction codeBlock$1(node, start, end, endLine) {\n var fenceOffset = node.fenceOffset, fenceLength = node.fenceLength, fenceChar = node.fenceChar, info = node.info, infoPadding = node.infoPadding, parent = node.parent;\n var fenceEnd = fenceOffset + fenceLength;\n var marks = [markInfo(setOffsetPos(start, 1), end, CODE_BLOCK)];\n if (fenceChar) {\n marks.push(markInfo(start, addOffsetPos(start, fenceEnd), DELIM));\n }\n if (info) {\n marks.push(markInfo(addOffsetPos(start, fenceLength), addOffsetPos(start, fenceLength + infoPadding + info.length), META));\n }\n var codeBlockEnd = \"^(\\\\s{0,4})(\" + fenceChar + \"{\" + fenceLength + \",})\";\n var reCodeBlockEnd = new RegExp(codeBlockEnd);\n if (reCodeBlockEnd.test(endLine)) {\n marks.push(markInfo(setOffsetPos(end, 1), end, DELIM));\n }\n var lineBackgroundMarkInfo = lineBackground(parent, start, end, 'code-block');\n return lineBackgroundMarkInfo ? marks.concat(lineBackgroundMarkInfo) : marks;\n}\nfunction customBlock$2(node, start, end) {\n var _a = node, offset = _a.offset, syntaxLength = _a.syntaxLength, info = _a.info, parent = _a.parent;\n var syntaxEnd = offset + syntaxLength;\n var marks = [markInfo(setOffsetPos(start, 1), end, CUSTOM_BLOCK)];\n marks.push(markInfo(start, addOffsetPos(start, syntaxEnd), DELIM));\n if (info) {\n marks.push(markInfo(addOffsetPos(start, syntaxEnd), addOffsetPos(start, syntaxLength + info.length), META));\n }\n marks.push(markInfo(setOffsetPos(end, 1), end, DELIM));\n var lineBackgroundMarkInfo = lineBackground(parent, start, end, 'custom-block');\n return lineBackgroundMarkInfo ? marks.concat(lineBackgroundMarkInfo) : marks;\n}\nfunction markListItemChildren(node, markType) {\n var marks = [];\n while (node) {\n var type = node.type;\n if (type === 'paragraph' || type === 'codeBlock') {\n marks.push(markInfo([getMdStartLine(node), getMdStartCh(node) - 1], [getMdEndLine(node), getMdEndCh(node) + 1], markType));\n }\n node = node.next;\n }\n return marks;\n}\nfunction markParagraphInBlockQuote(node) {\n var marks = [];\n while (node) {\n marks.push(markInfo([getMdStartLine(node), getMdStartCh(node)], [getMdEndLine(node), getMdEndCh(node) + 1], TEXT));\n node = node.next;\n }\n return marks;\n}\nfunction blockQuote$2(node, start, end) {\n var marks = node.parent && node.parent.type !== 'blockQuote' ? [markInfo(start, end, BLOCK_QUOTE)] : [];\n if (node.firstChild) {\n var childMarks = [];\n if (node.firstChild.type === 'paragraph') {\n childMarks = markParagraphInBlockQuote(node.firstChild.firstChild);\n }\n else if (node.firstChild.type === 'list') {\n childMarks = markListItemChildren(node.firstChild, TEXT);\n }\n marks = __spreadArray$1(__spreadArray$1([], marks), childMarks);\n }\n return marks;\n}\nfunction getSpecOfListItemStyle(node) {\n var depth = 0;\n while (node.parent.parent && node.parent.parent.type === 'item') {\n node = node.parent.parent;\n depth += 1;\n }\n var attrs = [{ odd: true }, { even: true }][depth % 2];\n return [LIST_ITEM, __assign$1(__assign$1({}, attrs), { listStyle: true })];\n}\nfunction item$1(node, start) {\n var _a = node.listData, padding = _a.padding, task = _a.task;\n var spec = getSpecOfListItemStyle(node);\n var marks = [markInfo.apply(void 0, __spreadArray$1([start, addOffsetPos(start, padding)], spec))];\n if (task) {\n marks.push(markInfo(addOffsetPos(start, padding), addOffsetPos(start, padding + 3), TASK_DELIM));\n marks.push(markInfo(addOffsetPos(start, padding + 1), addOffsetPos(start, padding + 2), META));\n }\n return marks.concat(markListItemChildren(node.firstChild, TEXT));\n}\nvar markNodeFuncMap = {\n heading: heading$1,\n strong: emphasisAndStrikethrough,\n emph: emphasisAndStrikethrough,\n strike: emphasisAndStrikethrough,\n link: link,\n image: image$1,\n code: code,\n codeBlock: codeBlock$1,\n blockQuote: blockQuote$2,\n item: item$1,\n customBlock: customBlock$2,\n};\nvar simpleMarkClassNameMap = {\n thematicBreak: THEMATIC_BREAK,\n table: TABLE,\n tableCell: TABLE_CELL,\n htmlInline: HTML,\n};\nfunction getMarkInfo(node, start, end, endLine) {\n var type = node.type;\n if (isFunction_1(markNodeFuncMap[type])) {\n // @ts-ignore\n return markNodeFuncMap[type](node, start, end, endLine);\n }\n if (simpleMarkClassNameMap[type]) {\n return [markInfo(start, end, simpleMarkClassNameMap[type])];\n }\n return null;\n}\n\nvar removingBackgroundIndexMap = {};\nfunction syntaxHighlight(_a) {\n var schema = _a.schema, toastMark = _a.toastMark;\n return new Plugin({\n appendTransaction: function (transactions, _, newState) {\n var tr = transactions[0];\n var newTr = newState.tr;\n if (tr.docChanged) {\n var markInfo_1 = [];\n var editResult = tr.getMeta('editResult');\n editResult.forEach(function (result) {\n var nodes = result.nodes, removedNodeRange = result.removedNodeRange;\n if (nodes.length) {\n markInfo_1 = markInfo_1.concat(getMarkForRemoving(newTr, nodes));\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var parent_1 = nodes_1[_i];\n var walker = parent_1.walker();\n var event_1 = walker.next();\n while (event_1) {\n var node = event_1.node, entering = event_1.entering;\n if (entering) {\n markInfo_1 = markInfo_1.concat(getMarkForAdding(node, toastMark));\n }\n event_1 = walker.next();\n }\n }\n }\n else if (removedNodeRange) {\n var maxIndex = newTr.doc.childCount - 1;\n var _a = removedNodeRange.line, startLine = _a[0], endLine = _a[1];\n var startIndex = Math.min(startLine, maxIndex);\n var endIndex = Math.min(endLine, maxIndex);\n // cache the index to remove code block, custom block background when there are no adding nodes\n for (var i = startIndex; i <= endIndex; i += 1) {\n removingBackgroundIndexMap[i] = true;\n }\n }\n });\n appendMarkTr(newTr, schema, markInfo_1);\n }\n return newTr.setMeta('widget', tr.getMeta('widget'));\n },\n });\n}\nfunction isDifferentBlock(doc, index, attrs) {\n return Object.keys(attrs).some(function (name) { return attrs[name] !== doc.child(index).attrs[name]; });\n}\nfunction addLineBackground(tr, doc, paragraph, blockPosInfo, attrs) {\n if (attrs === void 0) { attrs = {}; }\n var startIndex = blockPosInfo.startIndex, endIndex = blockPosInfo.endIndex, from = blockPosInfo.from, to = blockPosInfo.to;\n var shouldChangeBlockType = false;\n for (var i = startIndex; i <= endIndex; i += 1) {\n // prevent to remove background of the node that need to have background\n delete removingBackgroundIndexMap[i];\n shouldChangeBlockType = isDifferentBlock(doc, i, attrs);\n }\n if (shouldChangeBlockType) {\n tr.setBlockType(from, to, paragraph, attrs);\n }\n}\nfunction appendMarkTr(tr, schema, marks) {\n var doc = tr.doc;\n var paragraph = schema.nodes.paragraph;\n // get start position per line for lazy calculation\n var startPosListPerLine = getStartPosListPerLine(doc, doc.childCount);\n marks.forEach(function (_a) {\n var start = _a.start, end = _a.end, spec = _a.spec, lineBackground = _a.lineBackground;\n var startIndex = Math.min(start[0], doc.childCount) - 1;\n var endIndex = Math.min(end[0], doc.childCount) - 1;\n var startNode = doc.child(startIndex);\n var endNode = doc.child(endIndex);\n // calculate the position corresponding to the line\n var from = startPosListPerLine[startIndex];\n var to = startPosListPerLine[endIndex];\n // calculate the position corresponding to the character offset of the line\n from += start[1] + getWidgetNodePos(startNode, start[1] - 1);\n to += end[1] + getWidgetNodePos(endNode, end[1] - 1);\n if (spec) {\n if (lineBackground) {\n var posInfo = { from: from, to: to, startIndex: startIndex, endIndex: endIndex };\n addLineBackground(tr, doc, paragraph, posInfo, spec.attrs);\n }\n else {\n tr.addMark(from, to, schema.mark(spec.type, spec.attrs));\n }\n }\n else {\n tr.removeMark(from, to);\n }\n });\n removeBlockBackground(tr, startPosListPerLine, paragraph);\n}\nfunction removeBlockBackground(tr, startPosListPerLine, paragraph) {\n Object.keys(removingBackgroundIndexMap).forEach(function (index) {\n var startIndex = Number(index);\n // get the end position of the current line with the next node start position.\n var endIndex = Math.min(Number(index) + 1, tr.doc.childCount - 1);\n var from = startPosListPerLine[startIndex];\n // subtract '1' for getting end position of the line\n var to = startPosListPerLine[endIndex] - 1;\n if (startIndex === endIndex) {\n to += 2;\n }\n tr.setBlockType(from, to, paragraph);\n });\n}\nfunction cacheIndexToRemoveBackground(doc, start, end) {\n var skipLines = [];\n removingBackgroundIndexMap = {};\n for (var i = start[0] - 1; i < end[0]; i += 1) {\n var node = doc.child(i);\n var codeEnd = node.attrs.codeEnd;\n var codeStart = node.attrs.codeStart;\n if (codeStart && codeEnd && !includes(skipLines, codeStart)) {\n skipLines.push(codeStart);\n codeEnd = Math.min(codeEnd, doc.childCount);\n // should subtract '1' to markdown line position\n // because markdown parser has '1'(not zero) as the start number\n var startIndex = codeStart - 1;\n var endIndex = end[0];\n for (var index = startIndex; index < endIndex; index += 1) {\n removingBackgroundIndexMap[index] = true;\n }\n }\n }\n}\nfunction getMarkForRemoving(_a, nodes) {\n var doc = _a.doc;\n var start = nodes[0].sourcepos[0];\n var _b = last$1(nodes).sourcepos, end = _b[1];\n var startPos = [start[0], start[1]];\n var endPos = [end[0], end[1] + 1];\n var marks = [];\n cacheIndexToRemoveBackground(doc, start, end);\n marks.push({ start: startPos, end: endPos });\n return marks;\n}\nfunction getMarkForAdding(node, toastMark) {\n var lineTexts = toastMark.getLineTexts();\n var startPos = [getMdStartLine(node), getMdStartCh(node)];\n var endPos = [getMdEndLine(node), getMdEndCh(node) + 1];\n var markInfo = getMarkInfo(node, startPos, endPos, lineTexts[endPos[0] - 1]);\n return markInfo !== null && markInfo !== void 0 ? markInfo : [];\n}\n\nvar defaultToolbarStateKeys = [\n 'taskList',\n 'orderedList',\n 'bulletList',\n 'table',\n 'strong',\n 'emph',\n 'strike',\n 'heading',\n 'thematicBreak',\n 'blockQuote',\n 'code',\n 'codeBlock',\n 'indent',\n 'outdent',\n];\nfunction getToolbarStateType$1(mdNode) {\n var type = mdNode.type;\n if (isListNode$1(mdNode)) {\n if (mdNode.listData.task) {\n return 'taskList';\n }\n return mdNode.listData.type === 'ordered' ? 'orderedList' : 'bulletList';\n }\n if (type.indexOf('table') !== -1) {\n return 'table';\n }\n if (!includes(defaultToolbarStateKeys, type)) {\n return null;\n }\n return type;\n}\nfunction getToolbarState$1(targetNode) {\n var toolbarState = {\n indent: { active: false, disabled: true },\n outdent: { active: false, disabled: true },\n };\n var listEnabled = true;\n traverseParentNodes(targetNode, function (mdNode) {\n var type = getToolbarStateType$1(mdNode);\n if (!type) {\n return;\n }\n if (type === 'bulletList' || type === 'orderedList') {\n // to apply the nearlist list state in the nested list\n if (listEnabled) {\n toolbarState[type] = { active: true };\n toolbarState.indent.disabled = false;\n toolbarState.outdent.disabled = false;\n listEnabled = false;\n }\n }\n else {\n toolbarState[type] = { active: true };\n }\n });\n return toolbarState;\n}\nfunction previewHighlight(_a) {\n var toastMark = _a.toastMark, eventEmitter = _a.eventEmitter;\n return new Plugin({\n view: function () {\n return {\n update: function (view, prevState) {\n var state = view.state;\n var doc = state.doc, selection = state.selection;\n if (prevState && prevState.doc.eq(doc) && prevState.selection.eq(selection)) {\n return;\n }\n var from = selection.from;\n var startChOffset = state.doc.resolve(from).start();\n var line = state.doc.content.findIndex(from).index + 1;\n var ch = from - startChOffset;\n if (from === startChOffset) {\n ch += 1;\n }\n var cursorPos = [line, ch];\n var mdNode = toastMark.findNodeAtPosition(cursorPos);\n var toolbarState = getToolbarState$1(mdNode);\n eventEmitter.emit('changeToolbarState', {\n cursorPos: cursorPos,\n mdNode: mdNode,\n toolbarState: toolbarState,\n });\n eventEmitter.emit('setFocusedNode', mdNode);\n },\n };\n },\n });\n}\n\nvar Doc$1 = /** @class */ (function (_super) {\n __extends$1(Doc, _super);\n function Doc() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Doc.prototype, \"name\", {\n get: function () {\n return 'doc';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Doc.prototype, \"schema\", {\n get: function () {\n return {\n content: 'block+',\n };\n },\n enumerable: false,\n configurable: true\n });\n return Doc;\n}(Node$2));\n\nvar Mark = /** @class */ (function () {\n function Mark() {\n }\n Object.defineProperty(Mark.prototype, \"type\", {\n get: function () {\n return 'mark';\n },\n enumerable: false,\n configurable: true\n });\n Mark.prototype.setContext = function (context) {\n this.context = context;\n };\n return Mark;\n}());\n\nfunction getTextByMdLine(doc, mdLine) {\n return getTextContent(doc, mdLine - 1);\n}\nfunction getTextContent(doc, index) {\n return doc.child(index).textContent;\n}\n\nvar reBlockQuote = /^\\s*> ?/;\nvar BlockQuote$1 = /** @class */ (function (_super) {\n __extends$1(BlockQuote, _super);\n function BlockQuote() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(BlockQuote.prototype, \"name\", {\n get: function () {\n return 'blockQuote';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BlockQuote.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('block-quote') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n BlockQuote.prototype.createBlockQuoteText = function (text, isBlockQuote) {\n return isBlockQuote ? text.replace(reBlockQuote, '').trim() : \"> \" + text.trim();\n };\n BlockQuote.prototype.extendBlockQuote = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, doc = _a.doc, tr = _a.tr, schema = _a.schema;\n var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, to = _b.to;\n var textContent = getTextContent(doc, endIndex);\n var isBlockQuote = reBlockQuote.test(textContent);\n if (isBlockQuote && to > endFromOffset && selection.empty) {\n var isEmpty = !textContent.replace(reBlockQuote, '').trim();\n if (isEmpty) {\n tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));\n }\n else {\n var slicedText = textContent.slice(to - endFromOffset).trim();\n var node = createTextNode$1(schema, _this.createBlockQuoteText(slicedText));\n splitAndExtendBlock(tr, endToOffset, slicedText, node);\n }\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n BlockQuote.prototype.commands = function () {\n var _this = this;\n return function () { return function (state, dispatch) {\n var selection = state.selection, doc = state.doc;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n var isBlockQuote = reBlockQuote.test(getTextContent(doc, startIndex));\n var tr = replaceTextNode({\n state: state,\n startIndex: startIndex,\n endIndex: endIndex,\n from: startFromOffset,\n createText: function (textContent) { return _this.createBlockQuoteText(textContent, isBlockQuote); },\n });\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));\n return true;\n }; };\n };\n BlockQuote.prototype.keymaps = function () {\n var blockQuoteCommand = this.commands()();\n return {\n 'alt-q': blockQuoteCommand,\n 'alt-Q': blockQuoteCommand,\n Enter: this.extendBlockQuote(),\n };\n };\n return BlockQuote;\n}(Mark));\n\nvar reList = /(^\\s*)([-*+] |[\\d]+\\. )/;\nvar reOrderedList = /(^\\s*)([\\d])+\\.( \\[[ xX]])? /;\nvar reOrderedListGroup = /^(\\s*)((\\d+)([.)]\\s(?:\\[(?:x|\\s)\\]\\s)?))(.*)/;\nvar reCanBeTaskList = /(^\\s*)([-*+]|[\\d]+\\.)( \\[[ xX]])? /;\nvar reBulletListGroup = /^(\\s*)([-*+]+(\\s(?:\\[(?:x|\\s)\\]\\s)?))(.*)/;\nvar reTaskList = /(^\\s*)([-*+] |[\\d]+\\. )(\\[[ xX]] )/;\nvar reBulletTaskList = /(^\\s*)([-*+])( \\[[ xX]]) /;\nfunction getListType(text) {\n return reOrderedList.test(text) ? 'ordered' : 'bullet';\n}\nfunction getListDepth(mdNode) {\n var depth = 0;\n while (mdNode && mdNode.type !== 'document') {\n if (mdNode.type === 'list') {\n depth += 1;\n }\n mdNode = mdNode.parent;\n }\n return depth;\n}\nfunction findSameDepthList(toastMark, currentLine, depth, backward) {\n var lineTexts = toastMark.getLineTexts();\n var lineLen = lineTexts.length;\n var result = [];\n var line = currentLine;\n while (backward ? line < lineLen : line > 1) {\n line = backward ? line + 1 : line - 1;\n var mdNode = toastMark.findFirstNodeAtLine(line);\n var currentListDepth = getListDepth(mdNode);\n if (currentListDepth === depth) {\n result.push({ line: line, depth: depth, mdNode: mdNode });\n }\n else if (currentListDepth < depth) {\n break;\n }\n }\n return result;\n}\nfunction getSameDepthItems(_a) {\n var toastMark = _a.toastMark, mdNode = _a.mdNode, line = _a.line;\n var depth = getListDepth(mdNode);\n var forwardList = findSameDepthList(toastMark, line, depth, false).reverse();\n var backwardList = findSameDepthList(toastMark, line, depth, true);\n return forwardList.concat([{ line: line, depth: depth, mdNode: mdNode }]).concat(backwardList);\n}\nfunction textToBullet(text) {\n if (!reList.test(text)) {\n return \"* \" + text;\n }\n var type = getListType(text);\n if (type === 'bullet' && reCanBeTaskList.test(text)) {\n text = text.replace(reBulletTaskList, '$1$2 ');\n }\n else if (type === 'ordered') {\n text = text.replace(reOrderedList, '$1* ');\n }\n return text;\n}\nfunction textToOrdered(text, ordinalNum) {\n if (!reList.test(text)) {\n return ordinalNum + \". \" + text;\n }\n var type = getListType(text);\n if (type === 'bullet' || (type === 'ordered' && reCanBeTaskList.test(text))) {\n text = text.replace(reCanBeTaskList, \"$1\" + ordinalNum + \". \");\n }\n else if (type === 'ordered') {\n // eslint-disable-next-line prefer-destructuring\n var start = reOrderedListGroup.exec(text)[3];\n if (Number(start) !== ordinalNum) {\n text = text.replace(reOrderedList, \"$1\" + ordinalNum + \". \");\n }\n }\n return text;\n}\nfunction getChangedInfo(doc, sameDepthItems, type, start) {\n if (start === void 0) { start = 0; }\n var firstIndex = Number.MAX_VALUE;\n var lastIndex = 0;\n var changedResults = sameDepthItems.map(function (_a, index) {\n var line = _a.line;\n firstIndex = Math.min(line - 1, firstIndex);\n lastIndex = Math.max(line - 1, lastIndex);\n var text = getTextByMdLine(doc, line);\n text = type === 'bullet' ? textToBullet(text) : textToOrdered(text, index + 1 + start);\n return { text: text, line: line };\n });\n return { changedResults: changedResults, firstIndex: firstIndex, lastIndex: lastIndex };\n}\nfunction getBulletOrOrdered(type, context) {\n var sameDepthListInfo = getSameDepthItems(context);\n return getChangedInfo(context.doc, sameDepthListInfo, type);\n}\nvar otherListToList = {\n bullet: function (context) {\n return getBulletOrOrdered('bullet', context);\n },\n ordered: function (context) {\n return getBulletOrOrdered('ordered', context);\n },\n task: function (_a) {\n var mdNode = _a.mdNode, doc = _a.doc, line = _a.line;\n var text = getTextByMdLine(doc, line);\n if (mdNode.listData.task) {\n text = text.replace(reTaskList, '$1$2');\n }\n else if (isListNode$1(mdNode)) {\n text = text.replace(reList, '$1$2[ ] ');\n }\n return { changedResults: [{ text: text, line: line }] };\n },\n};\nvar otherNodeToList = {\n bullet: function (_a) {\n var doc = _a.doc, line = _a.line;\n var lineText = getTextByMdLine(doc, line);\n var changedResults = [{ text: \"* \" + lineText, line: line }];\n return { changedResults: changedResults };\n },\n ordered: function (_a) {\n var toastMark = _a.toastMark, doc = _a.doc, line = _a.line, startLine = _a.startLine;\n var lineText = getTextByMdLine(doc, line);\n var firstOrderedListNum = 1;\n var firstOrderedListLine = startLine;\n var skipped = 0;\n for (var i = startLine - 1; i > 0; i -= 1) {\n var mdNode = toastMark.findFirstNodeAtLine(i);\n var text = getTextByMdLine(doc, i);\n var canBeListNode = text && !!findClosestNode(mdNode, function (targetNode) { return isListNode$1(targetNode); });\n var searchResult = reOrderedListGroup.exec(getTextByMdLine(doc, i));\n if (!searchResult && !canBeListNode) {\n break;\n }\n if (!searchResult && canBeListNode) {\n skipped += 1;\n continue;\n }\n var _b = searchResult, indent = _b[1], start = _b[3];\n // basis on one depth list\n if (!indent) {\n firstOrderedListNum = Number(start);\n firstOrderedListLine = i;\n break;\n }\n }\n var ordinalNum = firstOrderedListNum + line - firstOrderedListLine - skipped;\n var changedResults = [{ text: ordinalNum + \". \" + lineText, line: line }];\n return { changedResults: changedResults };\n },\n task: function (_a) {\n var doc = _a.doc, line = _a.line;\n var lineText = getTextByMdLine(doc, line);\n var changedResults = [{ text: \"* [ ] \" + lineText, line: line }];\n return { changedResults: changedResults };\n },\n};\nvar extendList = {\n bullet: function (_a) {\n var line = _a.line, doc = _a.doc;\n var lineText = getTextByMdLine(doc, line);\n var _b = reBulletListGroup.exec(lineText), indent = _b[1], delimiter = _b[2];\n return { listSyntax: \"\" + indent + delimiter };\n },\n ordered: function (_a) {\n var toastMark = _a.toastMark, line = _a.line, mdNode = _a.mdNode, doc = _a.doc;\n var depth = getListDepth(mdNode);\n var lineText = getTextByMdLine(doc, line);\n var _b = reOrderedListGroup.exec(lineText), indent = _b[1], start = _b[3], delimiter = _b[4];\n var ordinalNum = Number(start) + 1;\n var listSyntax = \"\" + indent + ordinalNum + delimiter;\n var backwardList = findSameDepthList(toastMark, line, depth, true);\n var filteredList = backwardList.filter(function (info) {\n var searchResult = reOrderedListGroup.exec(getTextByMdLine(doc, info.line));\n return (searchResult &&\n searchResult[1].length === indent.length &&\n !!findClosestNode(info.mdNode, function (targetNode) { return isOrderedListNode(targetNode); }));\n });\n return __assign$1({ listSyntax: listSyntax }, getChangedInfo(doc, filteredList, 'ordered', ordinalNum));\n },\n};\nfunction getReorderedListInfo(doc, schema, line, ordinalNum, prevIndentLength) {\n var nodes = [];\n var lineText = getTextByMdLine(doc, line);\n var searchResult = reOrderedListGroup.exec(lineText);\n while (searchResult) {\n var indent = searchResult[1], delimiter = searchResult[4], text = searchResult[5];\n var indentLength = indent.length;\n if (indentLength === prevIndentLength) {\n nodes.push(createTextNode$1(schema, \"\" + indent + ordinalNum + delimiter + text));\n ordinalNum += 1;\n line += 1;\n }\n else if (indentLength > prevIndentLength) {\n var nestedListInfo = getReorderedListInfo(doc, schema, line, 1, indentLength);\n line = nestedListInfo.line;\n nodes = nodes.concat(nestedListInfo.nodes);\n }\n if (indentLength < prevIndentLength || line > doc.childCount) {\n break;\n }\n lineText = getTextByMdLine(doc, line);\n searchResult = reOrderedListGroup.exec(lineText);\n }\n return { nodes: nodes, line: line };\n}\n\nvar reStartSpace = /(^\\s{1,4})(.*)/;\nfunction isBlockUnit(from, to, text) {\n return from < to || reList.test(text) || reBlockQuote.test(text);\n}\nfunction isInTableCellNode(doc, schema, selection) {\n var $pos = selection.$from;\n if ($pos.depth === 0) {\n $pos = doc.resolve($pos.pos - 1);\n }\n var node = $pos.node(1);\n var startOffset = $pos.start(1);\n var contentSize = node.content.size;\n return (node.rangeHasMark(0, contentSize, schema.marks.table) &&\n $pos.pos - startOffset !== contentSize &&\n $pos.pos !== startOffset);\n}\nfunction createSelection(tr, posInfo) {\n var from = posInfo.from, to = posInfo.to;\n if (posInfo.type === 'indent') {\n var softTabLen = 4;\n from += softTabLen;\n to += (posInfo.lineLen + 1) * softTabLen;\n }\n else {\n var spaceLenList = posInfo.spaceLenList;\n from -= spaceLenList[0];\n for (var i = 0; i < spaceLenList.length; i += 1) {\n to -= spaceLenList[i];\n }\n }\n return createTextSelection(tr, from, to);\n}\nvar Paragraph$1 = /** @class */ (function (_super) {\n __extends$1(Paragraph, _super);\n function Paragraph() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Paragraph.prototype, \"name\", {\n get: function () {\n return 'paragraph';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Paragraph.prototype, \"schema\", {\n get: function () {\n return {\n content: 'inline*',\n attrs: {\n className: { default: null },\n codeStart: { default: null },\n codeEnd: { default: null },\n },\n selectable: false,\n group: 'block',\n parseDOM: [{ tag: 'div' }],\n toDOM: function (_a) {\n var attrs = _a.attrs;\n return attrs.className\n ? ['div', { class: clsWithMdPrefix(attrs.className) }, 0]\n : ['div', 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Paragraph.prototype.reorderList = function (startLine, endLine) {\n var _a = this.context, view = _a.view, toastMark = _a.toastMark, schema = _a.schema;\n var _b = view.state, tr = _b.tr, selection = _b.selection, doc = _b.doc;\n var mdNode = toastMark.findFirstNodeAtLine(startLine);\n var topListNode = mdNode;\n while (mdNode && !isBulletListNode(mdNode) && mdNode.parent.type !== 'document') {\n mdNode = mdNode.parent;\n if (isOrderedListNode(mdNode)) {\n topListNode = mdNode;\n break;\n }\n }\n if (topListNode) {\n startLine = topListNode.sourcepos[0][0];\n }\n var _c = reOrderedListGroup.exec(getTextByMdLine(doc, startLine)), indent = _c[1], start = _c[3];\n var indentLen = indent.length;\n var _d = getReorderedListInfo(doc, schema, startLine, Number(start), indentLen), line = _d.line, nodes = _d.nodes;\n endLine = Math.max(endLine, line - 1);\n var startOffset = getNodeContentOffsetRange(doc, startLine - 1).startOffset;\n for (var i = startLine - 1; i <= endLine - 1; i += 1) {\n var _e = doc.child(i), nodeSize = _e.nodeSize, content = _e.content;\n var mappedFrom = tr.mapping.map(startOffset);\n var mappedTo = mappedFrom + content.size;\n tr.replaceWith(mappedFrom, mappedTo, nodes[i - startLine + 1]);\n startOffset += nodeSize;\n }\n var newSelection = createTextSelection(tr, selection.from, selection.to);\n view.dispatch(tr.setSelection(newSelection));\n };\n Paragraph.prototype.indent = function (tabKey) {\n var _this = this;\n if (tabKey === void 0) { tabKey = false; }\n return function () { return function (state, dispatch) {\n var schema = state.schema, selection = state.selection, doc = state.doc;\n var _a = getRangeInfo(selection), from = _a.from, to = _a.to, startFromOffset = _a.startFromOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n if (tabKey && isInTableCellNode(doc, schema, selection)) {\n return false;\n }\n var startLineText = getTextContent(doc, startIndex);\n if ((tabKey && isBlockUnit(from, to, startLineText)) ||\n (!tabKey && reList.test(startLineText))) {\n var tr = replaceTextNode({\n state: state,\n from: startFromOffset,\n startIndex: startIndex,\n endIndex: endIndex,\n createText: function (textContent) { return \" \" + textContent; },\n });\n var posInfo = {\n type: 'indent',\n from: from,\n to: to,\n lineLen: endIndex - startIndex,\n };\n dispatch(tr.setSelection(createSelection(tr, posInfo)));\n if (reOrderedListGroup.test(startLineText)) {\n _this.reorderList(startIndex + 1, endIndex + 1);\n }\n }\n else if (tabKey) {\n dispatch(state.tr.insert(to, createTextNode$1(schema, ' ')));\n }\n return true;\n }; };\n };\n Paragraph.prototype.outdent = function (tabKey) {\n var _this = this;\n if (tabKey === void 0) { tabKey = false; }\n return function () { return function (state, dispatch) {\n var selection = state.selection, doc = state.doc, schema = state.schema;\n var _a = getRangeInfo(selection), from = _a.from, to = _a.to, startFromOffset = _a.startFromOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n if (tabKey && isInTableCellNode(doc, schema, selection)) {\n return false;\n }\n var startLineText = getTextContent(doc, startIndex);\n if ((tabKey && isBlockUnit(from, to, startLineText)) ||\n (!tabKey && reList.test(startLineText))) {\n var spaceLenList_1 = [];\n var tr = replaceTextNode({\n state: state,\n from: startFromOffset,\n startIndex: startIndex,\n endIndex: endIndex,\n createText: function (textContent) {\n var searchResult = reStartSpace.exec(textContent);\n spaceLenList_1.push(searchResult ? searchResult[1].length : 0);\n return textContent.replace(reStartSpace, '$2');\n },\n });\n var posInfo = { type: 'outdent', from: from, to: to, spaceLenList: spaceLenList_1 };\n dispatch(tr.setSelection(createSelection(tr, posInfo)));\n if (reOrderedListGroup.test(startLineText)) {\n _this.reorderList(startIndex + 1, endIndex + 1);\n }\n }\n else if (tabKey) {\n var startText = startLineText.slice(0, to - startFromOffset);\n var startTextWithoutSpace = startText.replace(/\\s{1,4}$/, '');\n var deletStart = to - (startText.length - startTextWithoutSpace.length);\n dispatch(state.tr.delete(deletStart, to));\n }\n return true;\n }; };\n };\n Paragraph.prototype.deleteLines = function () {\n var _this = this;\n return function (state, dispatch) {\n var view = _this.context.view;\n var _a = getRangeInfo(state.selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;\n var deleteRange = function () {\n dispatch(state.tr.deleteRange(startFromOffset, endToOffset));\n return true;\n };\n return chainCommands(deleteRange, joinForward)(state, dispatch, view);\n };\n };\n Paragraph.prototype.moveDown = function () {\n return function (state, dispatch) {\n var doc = state.doc, tr = state.tr, selection = state.selection, schema = state.schema;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, endIndex = _a.endIndex;\n if (endIndex < doc.content.childCount - 1) {\n var _b = doc.child(endIndex + 1), nodeSize = _b.nodeSize, textContent = _b.textContent;\n tr.delete(endToOffset, endToOffset + nodeSize)\n .split(startFromOffset)\n // subtract 2(start, end tag length) to insert prev line\n .insert(tr.mapping.map(startFromOffset) - 2, createTextNode$1(schema, textContent));\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n Paragraph.prototype.moveUp = function () {\n return function (state, dispatch) {\n var tr = state.tr, doc = state.doc, selection = state.selection, schema = state.schema;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex;\n if (startIndex > 0) {\n var _b = doc.child(startIndex - 1), nodeSize = _b.nodeSize, textContent = _b.textContent;\n tr.delete(startFromOffset - nodeSize, startFromOffset)\n .split(tr.mapping.map(endToOffset))\n .insert(tr.mapping.map(endToOffset), createTextNode$1(schema, textContent));\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n Paragraph.prototype.commands = function () {\n return {\n indent: this.indent(),\n outdent: this.outdent(),\n };\n };\n Paragraph.prototype.keymaps = function () {\n return {\n Tab: this.indent(true)(),\n 'Shift-Tab': this.outdent(true)(),\n 'Mod-d': this.deleteLines(),\n 'Mod-D': this.deleteLines(),\n 'Alt-ArrowUp': this.moveUp(),\n 'Alt-ArrowDown': this.moveDown(),\n };\n };\n return Paragraph;\n}(Node$2));\n\nvar Text$1 = /** @class */ (function (_super) {\n __extends$1(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Text.prototype, \"name\", {\n get: function () {\n return 'text';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"schema\", {\n get: function () {\n return {\n group: 'inline',\n };\n },\n enumerable: false,\n configurable: true\n });\n return Text;\n}(Node$2));\n\nvar reHeading = /^#{1,6}\\s/;\nvar Heading$1 = /** @class */ (function (_super) {\n __extends$1(Heading, _super);\n function Heading() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Heading.prototype, \"name\", {\n get: function () {\n return 'heading';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Heading.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n level: { default: 1 },\n seText: { default: false },\n },\n toDOM: function (_a) {\n var attrs = _a.attrs;\n var level = attrs.level, seText = attrs.seText;\n var classNames = \"heading|heading\" + level;\n if (seText) {\n classNames += '|delimiter|setext';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Heading.prototype.createHeadingText = function (level, text, curHeadingSyntax) {\n var textContent = text.replace(curHeadingSyntax, '').trim();\n var headingText = '';\n while (level > 0) {\n headingText += '#';\n level -= 1;\n }\n return headingText + \" \" + textContent;\n };\n Heading.prototype.commands = function () {\n var _this = this;\n return function (payload) { return function (state, dispatch) {\n var level = payload.level;\n var _a = getRangeInfo(state.selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n var tr = replaceTextNode({\n state: state,\n from: startFromOffset,\n startIndex: startIndex,\n endIndex: endIndex,\n createText: function (textContent) {\n var matchedHeading = textContent.match(reHeading);\n var curHeadingSyntax = matchedHeading ? matchedHeading[0] : '';\n return _this.createHeadingText(level, textContent, curHeadingSyntax);\n },\n });\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));\n return true;\n }; };\n };\n return Heading;\n}(Mark));\n\nvar fencedCodeBlockSyntax = '```';\nvar CodeBlock$1 = /** @class */ (function (_super) {\n __extends$1(CodeBlock, _super);\n function CodeBlock() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(CodeBlock.prototype, \"name\", {\n get: function () {\n return 'codeBlock';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CodeBlock.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('code-block') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n CodeBlock.prototype.commands = function () {\n return function () { return function (state, dispatch) {\n var selection = state.selection, schema = state.schema, tr = state.tr;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;\n var fencedNode = createTextNode$1(schema, fencedCodeBlockSyntax);\n // add fenced start block\n tr.insert(startFromOffset, fencedNode).split(startFromOffset + fencedCodeBlockSyntax.length);\n // add fenced end block\n tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), fencedNode);\n dispatch(tr.setSelection(\n // subtract fenced syntax length and open, close tag(2)\n createTextSelection(tr, tr.mapping.map(endToOffset) - (fencedCodeBlockSyntax.length + 2))));\n return true;\n }; };\n };\n CodeBlock.prototype.keepIndentation = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, doc = _a.doc, schema = _a.schema;\n var toastMark = _this.context.toastMark;\n var _b = getRangeInfo(selection), startFromOffset = _b.startFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, from = _b.from, to = _b.to;\n var textContent = getTextContent(doc, endIndex);\n if (from === to && textContent.trim()) {\n var matched = textContent.match(/^\\s+/);\n var mdNode = toastMark.findFirstNodeAtLine(endIndex + 1);\n if (isCodeBlockNode(mdNode) && matched) {\n var spaces = matched[0];\n var slicedText = textContent.slice(to - startFromOffset);\n var node = createTextNode$1(schema, spaces + slicedText);\n splitAndExtendBlock(tr, endToOffset, slicedText, node);\n dispatch(tr);\n return true;\n }\n }\n return false;\n };\n };\n CodeBlock.prototype.keymaps = function () {\n var codeBlockCommand = this.commands()();\n return {\n 'Shift-Mod-p': codeBlockCommand,\n 'Shift-Mod-P': codeBlockCommand,\n Enter: this.keepIndentation(),\n };\n };\n return CodeBlock;\n}(Mark));\n\nvar reEmptyTable = /\\||\\s/g;\nfunction createTableHeader(columnCount) {\n return [createTableRow(columnCount), createTableRow(columnCount, true)];\n}\nfunction createTableBody$1(columnCount, rowCount) {\n var bodyRows = [];\n for (var i = 0; i < rowCount; i += 1) {\n bodyRows.push(createTableRow(columnCount));\n }\n return bodyRows;\n}\nfunction createTableRow(columnCount, delim) {\n var row = '|';\n for (var i = 0; i < columnCount; i += 1) {\n row += delim ? ' --- |' : ' |';\n }\n return row;\n}\nfunction createTargetTypes(moveNext) {\n return moveNext\n ? { type: 'next', parentType: 'tableHead', childType: 'firstChild' }\n : { type: 'prev', parentType: 'tableBody', childType: 'lastChild' };\n}\nvar Table$1 = /** @class */ (function (_super) {\n __extends$1(Table, _super);\n function Table() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Table.prototype, \"name\", {\n get: function () {\n return 'table';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Table.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('table') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Table.prototype.extendTable = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, doc = _a.doc, tr = _a.tr, schema = _a.schema;\n if (!selection.empty) {\n return false;\n }\n var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, to = _b.to;\n var textContent = getTextContent(doc, endIndex);\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var mdPos = [endIndex + 1, to - endFromOffset + 1];\n var mdNode = _this.context.toastMark.findNodeAtPosition(mdPos);\n var cellNode = findClosestNode(mdNode, function (node) {\n return isTableCellNode(node) &&\n (node.parent.type === 'tableDelimRow' || node.parent.parent.type === 'tableBody');\n });\n if (cellNode) {\n var isEmpty = !textContent.replace(reEmptyTable, '').trim();\n var parent_1 = cellNode.parent;\n var columnCount = parent_1.parent.parent.columns.length;\n var row = createTableRow(columnCount);\n if (isEmpty) {\n tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));\n }\n else {\n tr\n .split(endToOffset)\n .insert(tr.mapping.map(endToOffset), createTextNode$1(schema, row))\n // should subtract `2` to selection end position considering ` |` text\n .setSelection(createTextSelection(tr, tr.mapping.map(endToOffset) - 2));\n }\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n Table.prototype.moveTableCell = function (moveNext) {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr;\n var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endIndex = _b.endIndex, to = _b.to;\n var mdPos = [endIndex + 1, to - endFromOffset];\n var mdNode = _this.context.toastMark.findNodeAtPosition(mdPos);\n var cellNode = findClosestNode(mdNode, function (node) { return isTableCellNode(node); });\n if (cellNode) {\n var parent_2 = cellNode.parent;\n var _c = createTargetTypes(moveNext), type = _c.type, parentType = _c.parentType, childType = _c.childType;\n var chOffset = getMdEndCh(cellNode);\n if (cellNode[type]) {\n chOffset = getMdEndCh(cellNode[type]) - 1;\n }\n else {\n var row = !parent_2[type] && parent_2.parent.type === parentType\n ? parent_2.parent[type][childType]\n : parent_2[type];\n if (type === 'next') {\n // if there is next row, the base offset would be end position of the next row's first child.\n // Otherwise, the base offset is zero.\n var baseOffset = row ? getMdEndCh(row[childType]) : 0;\n // calculate tag(open, close) position('2') for selection\n chOffset += baseOffset + 2;\n }\n else if (type === 'prev') {\n // if there is prev row, the target position would be '-4' for calculating ' |' characters and tag(open, close)\n // Otherwise, the target position is zero.\n chOffset = row ? -4 : 0;\n }\n }\n dispatch(tr.setSelection(createTextSelection(tr, endFromOffset + chOffset)));\n return true;\n }\n return false;\n };\n };\n Table.prototype.addTable = function () {\n return function (payload) { return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, schema = _a.schema;\n var _b = payload, columnCount = _b.columnCount, rowCount = _b.rowCount;\n var endToOffset = getRangeInfo(selection).endToOffset;\n var headerRows = createTableHeader(columnCount);\n var bodyRows = createTableBody$1(columnCount, rowCount - 1);\n var rows = __spreadArray$1(__spreadArray$1([], headerRows), bodyRows);\n rows.forEach(function (row) {\n tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), createTextNode$1(schema, row));\n });\n // should add `4` to selection position considering `| ` text and start block tag length\n dispatch(tr.setSelection(createTextSelection(tr, endToOffset + 4)));\n return true;\n }; };\n };\n Table.prototype.commands = function () {\n return { addTable: this.addTable() };\n };\n Table.prototype.keymaps = function () {\n return {\n Enter: this.extendTable(),\n Tab: this.moveTableCell(true),\n 'Shift-Tab': this.moveTableCell(false),\n };\n };\n return Table;\n}(Mark));\n\nvar thematicBreakSyntax = '***';\nvar ThematicBreak$1 = /** @class */ (function (_super) {\n __extends$1(ThematicBreak, _super);\n function ThematicBreak() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ThematicBreak.prototype, \"name\", {\n get: function () {\n return 'thematicBreak';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ThematicBreak.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('thematic-break') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n ThematicBreak.prototype.hr = function () {\n return function () { return function (state, dispatch) {\n var selection = state.selection, schema = state.schema, tr = state.tr;\n var _a = getRangeInfo(selection), from = _a.from, to = _a.to, endToOffset = _a.endToOffset;\n var node = createTextNode$1(schema, thematicBreakSyntax);\n tr\n .split(from)\n .replaceWith(tr.mapping.map(from), tr.mapping.map(to), node)\n .split(tr.mapping.map(to)).setSelection(createTextSelection(tr, tr.mapping.map(endToOffset)));\n dispatch(tr);\n return true;\n }; };\n };\n ThematicBreak.prototype.commands = function () {\n return { hr: this.hr() };\n };\n ThematicBreak.prototype.keymaps = function () {\n var lineCommand = this.hr()();\n return { 'Mod-l': lineCommand, 'Mod-L': lineCommand };\n };\n return ThematicBreak;\n}(Mark));\n\nfunction cannotBeListNode(_a, line) {\n var type = _a.type, sourcepos = _a.sourcepos;\n // eslint-disable-next-line prefer-destructuring\n var startLine = sourcepos[0][0];\n return line <= startLine && (type === 'codeBlock' || type === 'heading' || type.match('table'));\n}\nvar ListItem$1 = /** @class */ (function (_super) {\n __extends$1(ListItem, _super);\n function ListItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ListItem.prototype, \"name\", {\n get: function () {\n return 'listItem';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ListItem.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n odd: { default: false },\n even: { default: false },\n listStyle: { default: false },\n },\n toDOM: function (_a) {\n var attrs = _a.attrs;\n var odd = attrs.odd, even = attrs.even, listStyle = attrs.listStyle;\n var classNames = 'list-item';\n if (listStyle) {\n classNames += '|list-item-style';\n }\n if (odd) {\n classNames += '|list-item-odd';\n }\n if (even) {\n classNames += '|list-item-even';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n ListItem.prototype.extendList = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, doc = _a.doc, schema = _a.schema, tr = _a.tr;\n var toastMark = _this.context.toastMark;\n var _b = getRangeInfo(selection), to = _b.to, startFromOffset = _b.startFromOffset, endFromOffset = _b.endFromOffset, endIndex = _b.endIndex, endToOffset = _b.endToOffset;\n var textContent = getTextContent(doc, endIndex);\n var isList = reList.test(textContent);\n if (!isList || selection.from === startFromOffset || !selection.empty) {\n return false;\n }\n var isEmpty = !textContent.replace(reCanBeTaskList, '').trim();\n if (isEmpty) {\n tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));\n }\n else {\n var commandType = getListType(textContent);\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var mdNode = toastMark.findFirstNodeAtLine(endIndex + 1);\n var slicedText = textContent.slice(to - endFromOffset);\n var context = { toastMark: toastMark, mdNode: mdNode, doc: doc, line: endIndex + 1 };\n var _c = extendList[commandType](context), listSyntax = _c.listSyntax, changedResults = _c.changedResults;\n // change ordinal number of backward ordered list\n if (changedResults === null || changedResults === void 0 ? void 0 : changedResults.length) {\n // split the block\n tr.split(to);\n // set first ordered list info\n changedResults.unshift({ text: listSyntax + slicedText, line: endIndex + 1 });\n _this.changeToListPerLine(tr, changedResults, {\n from: to,\n // don't subtract 1 because the line has increased through 'split' command.\n startLine: changedResults[0].line,\n endLine: last$1(changedResults).line,\n });\n var pos = tr.mapping.map(endToOffset) - slicedText.length;\n tr.setSelection(createTextSelection(tr, pos));\n }\n else {\n var node = createTextNode$1(schema, listSyntax + slicedText);\n splitAndExtendBlock(tr, endToOffset, slicedText, node);\n }\n }\n dispatch(tr);\n return true;\n };\n };\n ListItem.prototype.toList = function (commandType) {\n var _this = this;\n return function () { return function (_a, dispatch) {\n var doc = _a.doc, tr = _a.tr, selection = _a.selection;\n var toastMark = _this.context.toastMark;\n var rangeInfo = getRangeInfo(selection);\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var startLine = rangeInfo.startIndex + 1;\n var endLine = rangeInfo.endIndex + 1;\n var endToOffset = rangeInfo.endToOffset;\n var skipLines = [];\n for (var line = startLine; line <= endLine; line += 1) {\n var mdNode = toastMark.findFirstNodeAtLine(line);\n if (mdNode && cannotBeListNode(mdNode, line)) {\n break;\n }\n // to skip unnecessary processing\n if (skipLines.indexOf(line) !== -1) {\n continue;\n }\n var context = { toastMark: toastMark, mdNode: mdNode, doc: doc, line: line, startLine: startLine };\n var changedResults = (isListNode$1(mdNode)\n ? otherListToList[commandType](context)\n : otherNodeToList[commandType](context)).changedResults;\n var endOffset = _this.changeToListPerLine(tr, changedResults, {\n from: getNodeContentOffsetRange(doc, changedResults[0].line - 1).startOffset,\n startLine: changedResults[0].line,\n endLine: last$1(changedResults).line,\n indexDiff: 1,\n });\n endToOffset = Math.max(endOffset, endToOffset);\n if (changedResults) {\n skipLines = skipLines.concat(changedResults.map(function (info) { return info.line; }));\n }\n }\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));\n return true;\n }; };\n };\n ListItem.prototype.changeToListPerLine = function (tr, changedResults, _a) {\n var from = _a.from, startLine = _a.startLine, endLine = _a.endLine, _b = _a.indexDiff, indexDiff = _b === void 0 ? 0 : _b;\n var maxEndOffset = 0;\n var _loop_1 = function (i) {\n var _c = tr.doc.child(i), nodeSize = _c.nodeSize, content = _c.content;\n var mappedFrom = tr.mapping.map(from);\n var mappedTo = mappedFrom + content.size;\n var changedResult = changedResults.filter(function (result) { return result.line - indexDiff === i; })[0];\n if (changedResult) {\n tr.replaceWith(mappedFrom, mappedTo, createTextNode$1(this_1.context.schema, changedResult.text));\n maxEndOffset = Math.max(maxEndOffset, from + content.size);\n }\n from += nodeSize;\n };\n var this_1 = this;\n for (var i = startLine - indexDiff; i <= endLine - indexDiff; i += 1) {\n _loop_1(i);\n }\n return maxEndOffset;\n };\n ListItem.prototype.toggleTask = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, doc = _a.doc, schema = _a.schema;\n var toastMark = _this.context.toastMark;\n var _b = getRangeInfo(selection), startIndex = _b.startIndex, endIndex = _b.endIndex;\n var newTr = null;\n for (var i = startIndex; i <= endIndex; i += 1) {\n var mdNode = toastMark.findFirstNodeAtLine(i + 1);\n if (isListNode$1(mdNode) && mdNode.listData.task) {\n var _c = mdNode.listData, checked = _c.checked, padding = _c.padding;\n var stateChar = checked ? ' ' : 'x';\n var mdPos = mdNode.sourcepos[0];\n var startOffset = getNodeContentOffsetRange(doc, mdPos[0] - 1).startOffset;\n startOffset += mdPos[1] + padding;\n newTr = tr.replaceWith(startOffset, startOffset + 1, schema.text(stateChar));\n }\n }\n if (newTr) {\n dispatch(newTr);\n return true;\n }\n return false;\n };\n };\n ListItem.prototype.commands = function () {\n return {\n bulletList: this.toList('bullet'),\n orderedList: this.toList('ordered'),\n taskList: this.toList('task'),\n };\n };\n ListItem.prototype.keymaps = function () {\n var bulletCommand = this.toList('bullet')();\n var orderedCommand = this.toList('ordered')();\n var taskCommand = this.toList('task')();\n var togleTaskCommand = this.toggleTask();\n return {\n 'Mod-u': bulletCommand,\n 'Mod-U': bulletCommand,\n 'Mod-o': orderedCommand,\n 'Mod-O': orderedCommand,\n 'alt-t': taskCommand,\n 'alt-T': taskCommand,\n 'Shift-Ctrl-x': togleTaskCommand,\n 'Shift-Ctrl-X': togleTaskCommand,\n Enter: this.extendList(),\n };\n };\n return ListItem;\n}(Mark));\n\nfunction toggleMark(condition, syntax) {\n return function () { return function (_a, dispatch) {\n var tr = _a.tr, selection = _a.selection;\n var conditionFn = !isFunction_1(condition)\n ? function (text) { return condition.test(text); }\n : condition;\n var syntaxLen = syntax.length;\n var doc = tr.doc;\n var _b = resolveSelectionPos(selection), from = _b[0], to = _b[1];\n var prevPos = Math.max(from - syntaxLen, 1);\n var nextPos = Math.min(to + syntaxLen, doc.content.size - 1);\n var slice = selection.content();\n var textContent = slice.content.textBetween(0, slice.content.size, '\\n');\n var prevText = doc.textBetween(prevPos, from, '\\n');\n var nextText = doc.textBetween(to, nextPos, '\\n');\n textContent = \"\" + prevText + textContent + nextText;\n if (prevText && nextText && conditionFn(textContent)) {\n tr.delete(nextPos - syntaxLen, nextPos).delete(prevPos, prevPos + syntaxLen);\n }\n else {\n tr.insertText(syntax, to).insertText(syntax, from);\n var newSelection = selection.empty\n ? createTextSelection(tr, from + syntaxLen)\n : createTextSelection(tr, from + syntaxLen, to + syntaxLen);\n tr.setSelection(newSelection);\n }\n dispatch(tr);\n return true;\n }; };\n}\n\nvar reStrong = /^(\\*{2}|_{2}).*([\\s\\S]*)\\1$/m;\nvar strongSyntax = '**';\nvar Strong$1 = /** @class */ (function (_super) {\n __extends$1(Strong, _super);\n function Strong() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Strong.prototype, \"name\", {\n get: function () {\n return 'strong';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Strong.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('strong') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Strong.prototype.bold = function () {\n return toggleMark(reStrong, strongSyntax);\n };\n Strong.prototype.commands = function () {\n return { bold: this.bold() };\n };\n Strong.prototype.keymaps = function () {\n var boldCommand = this.bold()();\n return { 'Mod-b': boldCommand, 'Mod-B': boldCommand };\n };\n return Strong;\n}(Mark));\n\nvar reStrike = /^(~{2}).*([\\s\\S]*)\\1$/m;\nvar strikeSyntax = '~~';\nvar Strike$1 = /** @class */ (function (_super) {\n __extends$1(Strike, _super);\n function Strike() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Strike.prototype, \"name\", {\n get: function () {\n return 'strike';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Strike.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('strike') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Strike.prototype.commands = function () {\n return toggleMark(reStrike, strikeSyntax);\n };\n Strike.prototype.keymaps = function () {\n var strikeCommand = this.commands()();\n return { 'Mod-s': strikeCommand, 'Mod-S': strikeCommand };\n };\n return Strike;\n}(Mark));\n\nvar reEmph = /^(\\*|_).*([\\s\\S]*)\\1$/m;\nvar emphSyntax = '*';\nvar Emph$1 = /** @class */ (function (_super) {\n __extends$1(Emph, _super);\n function Emph() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Emph.prototype, \"name\", {\n get: function () {\n return 'emph';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Emph.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('emph') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Emph.prototype.italic = function () {\n return toggleMark(reEmph, emphSyntax);\n };\n Emph.prototype.commands = function () {\n return { italic: this.italic() };\n };\n Emph.prototype.keymaps = function () {\n var italicCommand = this.italic()();\n return { 'Mod-i': italicCommand, 'Mod-I': italicCommand };\n };\n return Emph;\n}(Mark));\n\nvar reCode = /^(`).*([\\s\\S]*)\\1$/m;\nvar codeSyntax = '`';\nvar Code$1 = /** @class */ (function (_super) {\n __extends$1(Code, _super);\n function Code() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Code.prototype, \"name\", {\n get: function () {\n return 'code';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Code.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n start: { default: false },\n end: { default: false },\n marked: { default: false },\n },\n toDOM: function (mark) {\n var _a = mark.attrs, start = _a.start, end = _a.end, marked = _a.marked;\n var classNames = 'code';\n if (start) {\n classNames += '|delimiter|start';\n }\n if (end) {\n classNames += '|delimiter|end';\n }\n if (marked) {\n classNames += '|marked-text';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Code.prototype.commands = function () {\n return toggleMark(reCode, codeSyntax);\n };\n Code.prototype.keymaps = function () {\n var codeCommand = this.commands()();\n return { 'Shift-Mod-c': codeCommand, 'Shift-Mod-C': codeCommand };\n };\n return Code;\n}(Mark));\n\nvar Link$1 = /** @class */ (function (_super) {\n __extends$1(Link, _super);\n function Link() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Link.prototype, \"name\", {\n get: function () {\n return 'link';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Link.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n url: { default: false },\n desc: { default: false },\n },\n toDOM: function (_a) {\n var attrs = _a.attrs;\n var url = attrs.url, desc = attrs.desc;\n var classNames = 'link';\n if (url) {\n classNames += '|link-url|marked-text';\n }\n if (desc) {\n classNames += '|link-desc|marked-text';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Link.prototype.addLinkOrImage = function (commandType) {\n return function (payload) { return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, schema = _a.schema;\n var _b = resolveSelectionPos(selection), from = _b[0], to = _b[1];\n var _c = payload, linkText = _c.linkText, altText = _c.altText, linkUrl = _c.linkUrl, imageUrl = _c.imageUrl;\n var text = linkText;\n var url = linkUrl;\n var syntax = '';\n if (commandType === 'image') {\n text = altText;\n url = imageUrl;\n syntax = '!';\n }\n text = escapeTextForLink(text);\n syntax += \"[\" + text + \"](\" + url + \")\";\n dispatch(tr.replaceWith(from, to, createTextNode$1(schema, syntax)));\n return true;\n }; };\n };\n Link.prototype.commands = function () {\n return {\n addImage: this.addLinkOrImage('image'),\n addLink: this.addLinkOrImage('link'),\n };\n };\n return Link;\n}(Mark));\n\nvar TaskDelimiter = /** @class */ (function (_super) {\n __extends$1(TaskDelimiter, _super);\n function TaskDelimiter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(TaskDelimiter.prototype, \"name\", {\n get: function () {\n return 'taskDelimiter';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskDelimiter.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('delimiter', 'list-item') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return TaskDelimiter;\n}(Mark));\nvar Delimiter = /** @class */ (function (_super) {\n __extends$1(Delimiter, _super);\n function Delimiter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Delimiter.prototype, \"name\", {\n get: function () {\n return 'delimiter';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Delimiter.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('delimiter') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return Delimiter;\n}(Mark));\nvar Meta = /** @class */ (function (_super) {\n __extends$1(Meta, _super);\n function Meta() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Meta.prototype, \"name\", {\n get: function () {\n return 'meta';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Meta.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('meta') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return Meta;\n}(Mark));\nvar MarkedText = /** @class */ (function (_super) {\n __extends$1(MarkedText, _super);\n function MarkedText() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(MarkedText.prototype, \"name\", {\n get: function () {\n return 'markedText';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MarkedText.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('marked-text') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return MarkedText;\n}(Mark));\nvar TableCell = /** @class */ (function (_super) {\n __extends$1(TableCell, _super);\n function TableCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(TableCell.prototype, \"name\", {\n get: function () {\n return 'tableCell';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TableCell.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('table-cell') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return TableCell;\n}(Mark));\n\nvar Html = /** @class */ (function (_super) {\n __extends$1(Html, _super);\n function Html() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Html.prototype, \"name\", {\n get: function () {\n return 'html';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Html.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('html') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return Html;\n}(Mark));\n\nvar customBlockSyntax = '$$';\nvar CustomBlock$1 = /** @class */ (function (_super) {\n __extends$1(CustomBlock, _super);\n function CustomBlock() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(CustomBlock.prototype, \"name\", {\n get: function () {\n return 'customBlock';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomBlock.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('custom-block') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n CustomBlock.prototype.commands = function () {\n return function (payload) { return function (state, dispatch) {\n var selection = state.selection, schema = state.schema, tr = state.tr;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;\n if (!(payload === null || payload === void 0 ? void 0 : payload.info)) {\n return false;\n }\n var customBlock = \"\" + customBlockSyntax + payload.info;\n var startNode = createTextNode$1(schema, customBlock);\n var endNode = createTextNode$1(schema, customBlockSyntax);\n tr.insert(startFromOffset, startNode).split(startFromOffset + customBlock.length);\n tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), endNode);\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset) - (customBlockSyntax.length + 2))));\n return true;\n }; };\n };\n return CustomBlock;\n}(Mark));\n\nvar reTaskMarkerKey = /x|backspace/i;\nvar reTaskMarker = /^\\[(\\s*)(x?)(\\s*)\\](?:\\s+)/i;\nfunction smartTask(_a) {\n var schema = _a.schema, toastMark = _a.toastMark;\n return new Plugin({\n props: {\n handleDOMEvents: {\n keyup: function (view, ev) {\n var _a;\n var _b = view.state, doc = _b.doc, tr = _b.tr, selection = _b.selection;\n if (selection.empty && reTaskMarkerKey.test(ev.key)) {\n var _c = getRangeInfo(selection), startIndex = _c.startIndex, startFromOffset = _c.startFromOffset, from = _c.from;\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var mdPos = [startIndex + 1, from - startFromOffset + 1];\n var mdNode = toastMark.findNodeAtPosition(mdPos);\n var paraNode = findClosestNode(mdNode, function (node) { var _a; return node.type === 'paragraph' && ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.type) === 'item'; });\n if ((_a = paraNode === null || paraNode === void 0 ? void 0 : paraNode.firstChild) === null || _a === void 0 ? void 0 : _a.literal) {\n var firstChild = paraNode.firstChild;\n var matched = firstChild.literal.match(reTaskMarker);\n if (matched) {\n var startMdPos = firstChild.sourcepos[0];\n var startSpaces = matched[1], stateChar = matched[2], lastSpaces = matched[3];\n var spaces = startSpaces.length + lastSpaces.length;\n var startOffset = getNodeContentOffsetRange(doc, startMdPos[0] - 1).startOffset;\n var startPos = startMdPos[1] + startOffset;\n if (stateChar) {\n var addedPos = spaces ? spaces + 1 : 0;\n tr.replaceWith(startPos, addedPos + startPos, schema.text(stateChar));\n view.dispatch(tr);\n }\n else if (!spaces) {\n tr.insertText(' ', startPos);\n view.dispatch(tr);\n }\n }\n }\n }\n return false;\n },\n },\n },\n });\n}\n\nvar EVENT_TYPE = 'cut';\nvar reLineEnding$2 = /\\r\\n|\\n|\\r/;\nvar MdEditor = /** @class */ (function (_super) {\n __extends$1(MdEditor, _super);\n function MdEditor(eventEmitter, options) {\n var _this = _super.call(this, eventEmitter) || this;\n var toastMark = options.toastMark, _a = options.useCommandShortcut, useCommandShortcut = _a === void 0 ? true : _a, _b = options.mdPlugins, mdPlugins = _b === void 0 ? [] : _b;\n _this.editorType = 'markdown';\n _this.el.classList.add('md-mode');\n _this.toastMark = toastMark;\n _this.extraPlugins = mdPlugins;\n _this.specs = _this.createSpecs();\n _this.schema = _this.createSchema();\n _this.context = _this.createContext();\n _this.keymaps = _this.createKeymaps(useCommandShortcut);\n _this.view = _this.createView();\n _this.commands = _this.createCommands();\n _this.specs.setContext(__assign$1(__assign$1({}, _this.context), { view: _this.view }));\n _this.createClipboard();\n // To prevent unnecessary focus setting during initial rendering\n _this.eventEmitter.listen('changePreviewTabWrite', function (isMarkdownTabMounted) {\n return _this.toggleActive(true, isMarkdownTabMounted);\n });\n _this.eventEmitter.listen('changePreviewTabPreview', function () { return _this.toggleActive(false); });\n _this.initEvent();\n return _this;\n }\n MdEditor.prototype.toggleActive = function (active, isMarkdownTabMounted) {\n toggleClass(this.el, 'active', active);\n if (active) {\n if (!isMarkdownTabMounted) {\n this.focus();\n }\n }\n else {\n this.blur();\n }\n };\n MdEditor.prototype.createClipboard = function () {\n var _this = this;\n this.clipboard = document.createElement('textarea');\n this.clipboard.className = cls('pseudo-clipboard');\n this.clipboard.addEventListener('paste', function (ev) {\n var clipboardData = ev.clipboardData || window.clipboardData;\n var items = clipboardData && clipboardData.items;\n if (items) {\n var containRtfItem = toArray_1(items).some(function (item) { return item.kind === 'string' && item.type === 'text/rtf'; });\n // if it contains rtf, it's most likely copy paste from office -> no image\n if (!containRtfItem) {\n var imageBlob = pasteImageOnly(items);\n if (imageBlob) {\n ev.preventDefault();\n emitImageBlobHook(_this.eventEmitter, imageBlob, ev.type);\n }\n }\n }\n });\n // process the pasted data in input event for IE11\n this.clipboard.addEventListener('input', function (ev) {\n var text = ev.target.value;\n _this.replaceSelection(text);\n ev.preventDefault();\n ev.target.value = '';\n });\n this.el.insertBefore(this.clipboard, this.view.dom);\n };\n MdEditor.prototype.createContext = function () {\n return {\n toastMark: this.toastMark,\n schema: this.schema,\n eventEmitter: this.eventEmitter,\n };\n };\n MdEditor.prototype.createSpecs = function () {\n return new SpecManager([\n new Doc$1(),\n new Paragraph$1(),\n new Widget(),\n new Text$1(),\n new Heading$1(),\n new BlockQuote$1(),\n new CodeBlock$1(),\n new CustomBlock$1(),\n new Table$1(),\n new TableCell(),\n new ThematicBreak$1(),\n new ListItem$1(),\n new Strong$1(),\n new Strike$1(),\n new Emph$1(),\n new Code$1(),\n new Link$1(),\n new Delimiter(),\n new TaskDelimiter(),\n new MarkedText(),\n new Meta(),\n new Html(),\n ]);\n };\n MdEditor.prototype.createPlugins = function () {\n return this.defaultPlugins.concat(__spreadArray$1([\n syntaxHighlight(this.context),\n previewHighlight(this.context),\n smartTask(this.context)\n ], this.createPluginProps()));\n };\n MdEditor.prototype.createView = function () {\n var _this = this;\n return new EditorView(this.el, {\n state: this.createState(),\n dispatchTransaction: function (tr) {\n _this.updateMarkdown(tr);\n var state = _this.view.state.applyTransaction(tr).state;\n _this.view.updateState(state);\n _this.emitChangeEvent(tr);\n },\n handleKeyDown: function (_, ev) {\n if ((ev.metaKey || ev.ctrlKey) && ev.key.toUpperCase() === 'V') {\n _this.clipboard.focus();\n }\n _this.eventEmitter.emit('keydown', _this.editorType, ev);\n return false;\n },\n handleDOMEvents: {\n copy: function (_, ev) { return _this.captureCopy(ev); },\n cut: function (_, ev) { return _this.captureCopy(ev, EVENT_TYPE); },\n scroll: function () {\n _this.eventEmitter.emit('scroll', 'editor');\n return true;\n },\n keyup: function (_, ev) {\n _this.eventEmitter.emit('keyup', _this.editorType, ev);\n return false;\n },\n },\n nodeViews: {\n widget: widgetNodeView,\n },\n });\n };\n MdEditor.prototype.createCommands = function () {\n return this.specs.commands(this.view);\n };\n MdEditor.prototype.captureCopy = function (ev, type) {\n ev.preventDefault();\n var _a = this.view.state, selection = _a.selection, tr = _a.tr;\n if (selection.empty) {\n return true;\n }\n var text = this.getChanged(selection.content());\n if (ev.clipboardData) {\n ev.clipboardData.setData('text/plain', text);\n }\n else {\n window.clipboardData.setData('Text', text);\n }\n if (type === EVENT_TYPE) {\n this.view.dispatch(tr.deleteSelection().scrollIntoView().setMeta('uiEvent', EVENT_TYPE));\n }\n return true;\n };\n MdEditor.prototype.updateMarkdown = function (tr) {\n var _this = this;\n if (tr.docChanged) {\n tr.steps.forEach(function (step, index) {\n if (step.slice && !(step instanceof ReplaceAroundStep)) {\n var doc = tr.docs[index];\n var _a = [step.from, step.to], from = _a[0], to = _a[1];\n var _b = getEditorToMdPos(doc, from, to), startPos = _b[0], endPos = _b[1];\n var changed = _this.getChanged(step.slice);\n if (startPos[0] === endPos[0] && startPos[1] === endPos[1] && changed === '') {\n changed = '\\n';\n }\n var editResult = _this.toastMark.editMarkdown(startPos, endPos, changed);\n _this.eventEmitter.emit('updatePreview', editResult);\n tr.setMeta('editResult', editResult).scrollIntoView();\n }\n });\n }\n };\n MdEditor.prototype.getChanged = function (slice) {\n var changed = '';\n var from = 0;\n var to = slice.content.size;\n slice.content.nodesBetween(from, to, function (node, pos) {\n if (node.isText) {\n changed += node.text.slice(Math.max(from, pos) - pos, to - pos);\n }\n else if (node.isBlock && pos > 0) {\n changed += '\\n';\n }\n });\n return changed;\n };\n MdEditor.prototype.setSelection = function (start, end) {\n if (end === void 0) { end = start; }\n var tr = this.view.state.tr;\n var _a = getMdToEditorPos(tr.doc, start, end), from = _a[0], to = _a[1];\n this.view.dispatch(tr.setSelection(createTextSelection(tr, from, to)).scrollIntoView());\n };\n MdEditor.prototype.replaceSelection = function (text, start, end) {\n var newTr;\n var _a = this.view.state, tr = _a.tr, schema = _a.schema, doc = _a.doc;\n var lineTexts = text.split(reLineEnding$2);\n var nodes = lineTexts.map(function (lineText) {\n return createParagraph(schema, createNodesWithWidget(lineText, schema));\n });\n var slice = new Slice(Fragment.from(nodes), 1, 1);\n this.focus();\n if (start && end) {\n var _b = getMdToEditorPos(doc, start, end), from = _b[0], to = _b[1];\n newTr = tr.replaceRange(from, to, slice);\n }\n else {\n newTr = tr.replaceSelection(slice);\n }\n this.view.dispatch(newTr.scrollIntoView());\n };\n MdEditor.prototype.deleteSelection = function (start, end) {\n var newTr;\n var _a = this.view.state, tr = _a.tr, doc = _a.doc;\n if (start && end) {\n var _b = getMdToEditorPos(doc, start, end), from = _b[0], to = _b[1];\n newTr = tr.deleteRange(from, to);\n }\n else {\n newTr = tr.deleteSelection();\n }\n this.view.dispatch(newTr.scrollIntoView());\n };\n MdEditor.prototype.getSelectedText = function (start, end) {\n var _a = this.view.state, doc = _a.doc, selection = _a.selection;\n var from = selection.from, to = selection.to;\n if (start && end) {\n var pos = getMdToEditorPos(doc, start, end);\n from = pos[0];\n to = pos[1];\n }\n return doc.textBetween(from, to, '\\n');\n };\n MdEditor.prototype.getSelection = function () {\n var _a = this.view.state.selection, from = _a.from, to = _a.to;\n return getEditorToMdPos(this.view.state.tr.doc, from, to);\n };\n MdEditor.prototype.setMarkdown = function (markdown, cursorToEnd) {\n if (cursorToEnd === void 0) { cursorToEnd = true; }\n var lineTexts = markdown.split(reLineEnding$2);\n var _a = this.view.state, tr = _a.tr, doc = _a.doc, schema = _a.schema;\n var nodes = lineTexts.map(function (lineText) {\n return createParagraph(schema, createNodesWithWidget(lineText, schema));\n });\n this.view.dispatch(tr.replaceWith(0, doc.content.size, nodes));\n if (cursorToEnd) {\n this.moveCursorToEnd(true);\n }\n };\n MdEditor.prototype.addWidget = function (node, style, mdPos) {\n var _a = this.view.state, tr = _a.tr, doc = _a.doc, selection = _a.selection;\n var pos = mdPos ? getMdToEditorPos(doc, mdPos, mdPos)[0] : selection.to;\n this.view.dispatch(tr.setMeta('widget', { pos: pos, node: node, style: style }));\n };\n MdEditor.prototype.replaceWithWidget = function (start, end, text) {\n var _a = this.view.state, tr = _a.tr, schema = _a.schema, doc = _a.doc;\n var pos = getMdToEditorPos(doc, start, end);\n var nodes = createNodesWithWidget(text, schema);\n this.view.dispatch(tr.replaceWith(pos[0], pos[1], nodes));\n };\n MdEditor.prototype.getRangeInfoOfNode = function (pos) {\n var _a = this.view.state, doc = _a.doc, selection = _a.selection;\n var mdPos = pos || getEditorToMdPos(doc, selection.from)[0];\n var mdNode = this.toastMark.findNodeAtPosition(mdPos);\n if (mdNode.type === 'text' && mdNode.parent.type !== 'paragraph') {\n mdNode = mdNode.parent;\n }\n // add 1 sync for prosemirror position\n mdNode.sourcepos[1][1] += 1;\n return { range: mdNode.sourcepos, type: mdNode.type };\n };\n MdEditor.prototype.getMarkdown = function () {\n return this.toastMark\n .getLineTexts()\n .map(function (lineText) { return unwrapWidgetSyntax(lineText); })\n .join('\\n');\n };\n MdEditor.prototype.getToastMark = function () {\n return this.toastMark;\n };\n return MdEditor;\n}(EditorBase));\n\n/**\n * @fileoverview Get event collection for specific HTML element\n * @author NHN FE Development Lab \n */\n\nvar EVENT_KEY = '_feEventKey';\n\n/**\n * Get event collection for specific HTML element\n * @param {HTMLElement} element - HTML element\n * @param {string} type - event type\n * @returns {array}\n * @private\n */\nfunction safeEvent$2(element, type) {\n var events = element[EVENT_KEY];\n var handlers;\n\n if (!events) {\n events = element[EVENT_KEY] = {};\n }\n\n handlers = events[type];\n if (!handlers) {\n handlers = events[type] = [];\n }\n\n return handlers;\n}\n\nvar _safeEvent = safeEvent$2;\n\n/**\n * @fileoverview Unbind DOM events\n * @author NHN FE Development Lab \n */\n\nvar isString$1 = isString_1;\nvar forEach$1 = forEach_1;\n\nvar safeEvent$1 = _safeEvent;\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {function} [handler] - handler function\n * @memberof module:domEvent\n * @example\n * // Following the example of domEvent#on\n * \n * // Unbind one event from an element.\n * off(div, 'click', toggle);\n * \n * // Unbind multiple events with a same handler from multiple elements at once.\n * // Use event names splitted by a space.\n * off(element, 'mouseenter mouseleave', changeColor);\n * \n * // Unbind multiple events with different handlers from an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * off(div, {\n * keydown: highlight,\n * keyup: dehighlight\n * });\n * \n * // Unbind events without handlers.\n * off(div, 'drag');\n */\nfunction off(element, types, handler) {\n if (isString$1(types)) {\n forEach$1(types.split(/\\s+/g), function(type) {\n unbindEvent(element, type, handler);\n });\n\n return;\n }\n\n forEach$1(types, function(func, type) {\n unbindEvent(element, type, func);\n });\n}\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {string} type - events name\n * @param {function} [handler] - handler function\n * @private\n */\nfunction unbindEvent(element, type, handler) {\n var events = safeEvent$1(element, type);\n var index;\n\n if (!handler) {\n forEach$1(events, function(item) {\n removeHandler(element, type, item.wrappedHandler);\n });\n events.splice(0, events.length);\n } else {\n forEach$1(events, function(item, idx) {\n if (handler === item.handler) {\n removeHandler(element, type, item.wrappedHandler);\n index = idx;\n\n return false;\n }\n\n return true;\n });\n events.splice(index, 1);\n }\n}\n\n/**\n * Remove an event handler\n * @param {HTMLElement} element - An element to remove an event\n * @param {string} type - event type\n * @param {function} handler - event handler\n * @private\n */\nfunction removeHandler(element, type, handler) {\n if ('removeEventListener' in element) {\n element.removeEventListener(type, handler);\n } else if ('detachEvent' in element) {\n element.detachEvent('on' + type, handler);\n }\n}\n\nvar off_1 = off;\n\n/**\n * @fileoverview Bind DOM events\n * @author NHN FE Development Lab \n */\n\nvar isString = isString_1;\nvar forEach = forEach_1;\n\nvar safeEvent = _safeEvent;\n\n/**\n * Bind DOM events.\n * @param {HTMLElement} element - element to bind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {(function|object)} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @memberof module:domEvent\n * @example\n * const div = document.querySelector('div');\n * \n * // Bind one event to an element.\n * on(div, 'click', toggle);\n * \n * // Bind multiple events with a same handler to multiple elements at once.\n * // Use event names splitted by a space.\n * on(div, 'mouseenter mouseleave', changeColor);\n * \n * // Bind multiple events with different handlers to an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * on(div, {\n * keydown: highlight,\n * keyup: dehighlight\n * });\n * \n * // Set a context for handler method.\n * const name = 'global';\n * const repository = {name: 'CodeSnippet'};\n * on(div, 'drag', function() {\n * console.log(this.name);\n * }, repository);\n * // Result when you drag a div: \"CodeSnippet\"\n */\nfunction on(element, types, handler, context) {\n if (isString(types)) {\n forEach(types.split(/\\s+/g), function(type) {\n bindEvent(element, type, handler, context);\n });\n\n return;\n }\n\n forEach(types, function(func, type) {\n bindEvent(element, type, func, handler);\n });\n}\n\n/**\n * Bind DOM events\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @private\n */\nfunction bindEvent(element, type, handler, context) {\n /**\n * Event handler\n * @param {Event} e - event object\n */\n function eventHandler(e) {\n handler.call(context || element, e || window.event);\n }\n\n if ('addEventListener' in element) {\n element.addEventListener(type, eventHandler);\n } else if ('attachEvent' in element) {\n element.attachEvent('on' + type, eventHandler);\n }\n memorizeHandler(element, type, handler, eventHandler);\n}\n\n/**\n * Memorize DOM event handler for unbinding.\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function that user passed at on() use\n * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features\n * @private\n */\nfunction memorizeHandler(element, type, handler, wrappedHandler) {\n var events = safeEvent(element, type);\n var existInEvents = false;\n\n forEach(events, function(obj) {\n if (obj.handler === handler) {\n existInEvents = true;\n\n return false;\n }\n\n return true;\n });\n\n if (!existInEvents) {\n events.push({\n handler: handler,\n wrappedHandler: wrappedHandler\n });\n }\n}\n\nvar on_1 = on;\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode$1(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode$1.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode$1.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode$1.componentChars = \"-_.!~*'()\";\n\n\nvar encode_1 = encode$1;\n\nvar lib = {};\n\nvar decode = {};\n\nvar Aacute$1 = \"Á\";\nvar aacute$1 = \"á\";\nvar Abreve = \"Ă\";\nvar abreve = \"ă\";\nvar ac = \"∾\";\nvar acd = \"∿\";\nvar acE = \"∾̳\";\nvar Acirc$1 = \"Â\";\nvar acirc$1 = \"â\";\nvar acute$1 = \"´\";\nvar Acy = \"А\";\nvar acy = \"а\";\nvar AElig$1 = \"Æ\";\nvar aelig$1 = \"æ\";\nvar af = \"⁡\";\nvar Afr = \"𝔄\";\nvar afr = \"𝔞\";\nvar Agrave$1 = \"À\";\nvar agrave$1 = \"à\";\nvar alefsym = \"ℵ\";\nvar aleph = \"ℵ\";\nvar Alpha = \"Α\";\nvar alpha = \"α\";\nvar Amacr = \"Ā\";\nvar amacr = \"ā\";\nvar amalg = \"⨿\";\nvar amp$2 = \"&\";\nvar AMP$1 = \"&\";\nvar andand = \"⩕\";\nvar And = \"⩓\";\nvar and = \"∧\";\nvar andd = \"⩜\";\nvar andslope = \"⩘\";\nvar andv = \"⩚\";\nvar ang = \"∠\";\nvar ange = \"⦤\";\nvar angle = \"∠\";\nvar angmsdaa = \"⦨\";\nvar angmsdab = \"⦩\";\nvar angmsdac = \"⦪\";\nvar angmsdad = \"⦫\";\nvar angmsdae = \"⦬\";\nvar angmsdaf = \"⦭\";\nvar angmsdag = \"⦮\";\nvar angmsdah = \"⦯\";\nvar angmsd = \"∡\";\nvar angrt = \"∟\";\nvar angrtvb = \"⊾\";\nvar angrtvbd = \"⦝\";\nvar angsph = \"∢\";\nvar angst = \"Å\";\nvar angzarr = \"⍼\";\nvar Aogon = \"Ą\";\nvar aogon = \"ą\";\nvar Aopf = \"𝔸\";\nvar aopf = \"𝕒\";\nvar apacir = \"⩯\";\nvar ap = \"≈\";\nvar apE = \"⩰\";\nvar ape = \"≊\";\nvar apid = \"≋\";\nvar apos$1 = \"'\";\nvar ApplyFunction = \"⁡\";\nvar approx = \"≈\";\nvar approxeq = \"≊\";\nvar Aring$1 = \"Å\";\nvar aring$1 = \"å\";\nvar Ascr = \"𝒜\";\nvar ascr = \"𝒶\";\nvar Assign = \"≔\";\nvar ast = \"*\";\nvar asymp = \"≈\";\nvar asympeq = \"≍\";\nvar Atilde$1 = \"Ã\";\nvar atilde$1 = \"ã\";\nvar Auml$1 = \"Ä\";\nvar auml$1 = \"ä\";\nvar awconint = \"∳\";\nvar awint = \"⨑\";\nvar backcong = \"≌\";\nvar backepsilon = \"϶\";\nvar backprime = \"‵\";\nvar backsim = \"∽\";\nvar backsimeq = \"⋍\";\nvar Backslash = \"∖\";\nvar Barv = \"⫧\";\nvar barvee = \"⊽\";\nvar barwed = \"⌅\";\nvar Barwed = \"⌆\";\nvar barwedge = \"⌅\";\nvar bbrk = \"⎵\";\nvar bbrktbrk = \"⎶\";\nvar bcong = \"≌\";\nvar Bcy = \"Б\";\nvar bcy = \"б\";\nvar bdquo = \"„\";\nvar becaus = \"∵\";\nvar because = \"∵\";\nvar Because = \"∵\";\nvar bemptyv = \"⦰\";\nvar bepsi = \"϶\";\nvar bernou = \"ℬ\";\nvar Bernoullis = \"ℬ\";\nvar Beta = \"Β\";\nvar beta = \"β\";\nvar beth = \"ℶ\";\nvar between = \"≬\";\nvar Bfr = \"𝔅\";\nvar bfr = \"𝔟\";\nvar bigcap = \"⋂\";\nvar bigcirc = \"◯\";\nvar bigcup = \"⋃\";\nvar bigodot = \"⨀\";\nvar bigoplus = \"⨁\";\nvar bigotimes = \"⨂\";\nvar bigsqcup = \"⨆\";\nvar bigstar = \"★\";\nvar bigtriangledown = \"▽\";\nvar bigtriangleup = \"△\";\nvar biguplus = \"⨄\";\nvar bigvee = \"⋁\";\nvar bigwedge = \"⋀\";\nvar bkarow = \"⤍\";\nvar blacklozenge = \"⧫\";\nvar blacksquare = \"▪\";\nvar blacktriangle = \"▴\";\nvar blacktriangledown = \"▾\";\nvar blacktriangleleft = \"◂\";\nvar blacktriangleright = \"▸\";\nvar blank = \"␣\";\nvar blk12 = \"▒\";\nvar blk14 = \"░\";\nvar blk34 = \"▓\";\nvar block = \"█\";\nvar bne = \"=⃥\";\nvar bnequiv = \"≡⃥\";\nvar bNot = \"⫭\";\nvar bnot = \"⌐\";\nvar Bopf = \"𝔹\";\nvar bopf = \"𝕓\";\nvar bot = \"⊥\";\nvar bottom = \"⊥\";\nvar bowtie = \"⋈\";\nvar boxbox = \"⧉\";\nvar boxdl = \"┐\";\nvar boxdL = \"╕\";\nvar boxDl = \"╖\";\nvar boxDL = \"╗\";\nvar boxdr = \"┌\";\nvar boxdR = \"╒\";\nvar boxDr = \"╓\";\nvar boxDR = \"╔\";\nvar boxh = \"─\";\nvar boxH = \"═\";\nvar boxhd = \"┬\";\nvar boxHd = \"╤\";\nvar boxhD = \"╥\";\nvar boxHD = \"╦\";\nvar boxhu = \"┴\";\nvar boxHu = \"╧\";\nvar boxhU = \"╨\";\nvar boxHU = \"╩\";\nvar boxminus = \"⊟\";\nvar boxplus = \"⊞\";\nvar boxtimes = \"⊠\";\nvar boxul = \"┘\";\nvar boxuL = \"╛\";\nvar boxUl = \"╜\";\nvar boxUL = \"╝\";\nvar boxur = \"└\";\nvar boxuR = \"╘\";\nvar boxUr = \"╙\";\nvar boxUR = \"╚\";\nvar boxv = \"│\";\nvar boxV = \"║\";\nvar boxvh = \"┼\";\nvar boxvH = \"╪\";\nvar boxVh = \"╫\";\nvar boxVH = \"╬\";\nvar boxvl = \"┤\";\nvar boxvL = \"╡\";\nvar boxVl = \"╢\";\nvar boxVL = \"╣\";\nvar boxvr = \"├\";\nvar boxvR = \"╞\";\nvar boxVr = \"╟\";\nvar boxVR = \"╠\";\nvar bprime = \"‵\";\nvar breve = \"˘\";\nvar Breve = \"˘\";\nvar brvbar$1 = \"¦\";\nvar bscr = \"𝒷\";\nvar Bscr = \"ℬ\";\nvar bsemi = \"⁏\";\nvar bsim = \"∽\";\nvar bsime = \"⋍\";\nvar bsolb = \"⧅\";\nvar bsol = \"\\\\\";\nvar bsolhsub = \"⟈\";\nvar bull = \"•\";\nvar bullet = \"•\";\nvar bump = \"≎\";\nvar bumpE = \"⪮\";\nvar bumpe = \"≏\";\nvar Bumpeq = \"≎\";\nvar bumpeq = \"≏\";\nvar Cacute = \"Ć\";\nvar cacute = \"ć\";\nvar capand = \"⩄\";\nvar capbrcup = \"⩉\";\nvar capcap = \"⩋\";\nvar cap = \"∩\";\nvar Cap = \"⋒\";\nvar capcup = \"⩇\";\nvar capdot = \"⩀\";\nvar CapitalDifferentialD = \"ⅅ\";\nvar caps = \"∩︀\";\nvar caret = \"⁁\";\nvar caron = \"ˇ\";\nvar Cayleys = \"ℭ\";\nvar ccaps = \"⩍\";\nvar Ccaron = \"Č\";\nvar ccaron = \"č\";\nvar Ccedil$1 = \"Ç\";\nvar ccedil$1 = \"ç\";\nvar Ccirc = \"Ĉ\";\nvar ccirc = \"ĉ\";\nvar Cconint = \"∰\";\nvar ccups = \"⩌\";\nvar ccupssm = \"⩐\";\nvar Cdot = \"Ċ\";\nvar cdot = \"ċ\";\nvar cedil$1 = \"¸\";\nvar Cedilla = \"¸\";\nvar cemptyv = \"⦲\";\nvar cent$1 = \"¢\";\nvar centerdot = \"·\";\nvar CenterDot = \"·\";\nvar cfr = \"𝔠\";\nvar Cfr = \"ℭ\";\nvar CHcy = \"Ч\";\nvar chcy = \"ч\";\nvar check = \"✓\";\nvar checkmark = \"✓\";\nvar Chi = \"Χ\";\nvar chi = \"χ\";\nvar circ = \"ˆ\";\nvar circeq = \"≗\";\nvar circlearrowleft = \"↺\";\nvar circlearrowright = \"↻\";\nvar circledast = \"⊛\";\nvar circledcirc = \"⊚\";\nvar circleddash = \"⊝\";\nvar CircleDot = \"⊙\";\nvar circledR = \"®\";\nvar circledS = \"Ⓢ\";\nvar CircleMinus = \"⊖\";\nvar CirclePlus = \"⊕\";\nvar CircleTimes = \"⊗\";\nvar cir = \"○\";\nvar cirE = \"⧃\";\nvar cire = \"≗\";\nvar cirfnint = \"⨐\";\nvar cirmid = \"⫯\";\nvar cirscir = \"⧂\";\nvar ClockwiseContourIntegral = \"∲\";\nvar CloseCurlyDoubleQuote = \"”\";\nvar CloseCurlyQuote = \"’\";\nvar clubs = \"♣\";\nvar clubsuit = \"♣\";\nvar colon = \":\";\nvar Colon = \"∷\";\nvar Colone = \"⩴\";\nvar colone = \"≔\";\nvar coloneq = \"≔\";\nvar comma = \",\";\nvar commat = \"@\";\nvar comp = \"∁\";\nvar compfn = \"∘\";\nvar complement = \"∁\";\nvar complexes = \"ℂ\";\nvar cong = \"≅\";\nvar congdot = \"⩭\";\nvar Congruent = \"≡\";\nvar conint = \"∮\";\nvar Conint = \"∯\";\nvar ContourIntegral = \"∮\";\nvar copf = \"𝕔\";\nvar Copf = \"ℂ\";\nvar coprod = \"∐\";\nvar Coproduct = \"∐\";\nvar copy$1 = \"©\";\nvar COPY$1 = \"©\";\nvar copysr = \"℗\";\nvar CounterClockwiseContourIntegral = \"∳\";\nvar crarr = \"↵\";\nvar cross = \"✗\";\nvar Cross = \"⨯\";\nvar Cscr = \"𝒞\";\nvar cscr = \"𝒸\";\nvar csub = \"⫏\";\nvar csube = \"⫑\";\nvar csup = \"⫐\";\nvar csupe = \"⫒\";\nvar ctdot = \"⋯\";\nvar cudarrl = \"⤸\";\nvar cudarrr = \"⤵\";\nvar cuepr = \"⋞\";\nvar cuesc = \"⋟\";\nvar cularr = \"↶\";\nvar cularrp = \"⤽\";\nvar cupbrcap = \"⩈\";\nvar cupcap = \"⩆\";\nvar CupCap = \"≍\";\nvar cup = \"∪\";\nvar Cup = \"⋓\";\nvar cupcup = \"⩊\";\nvar cupdot = \"⊍\";\nvar cupor = \"⩅\";\nvar cups = \"∪︀\";\nvar curarr = \"↷\";\nvar curarrm = \"⤼\";\nvar curlyeqprec = \"⋞\";\nvar curlyeqsucc = \"⋟\";\nvar curlyvee = \"⋎\";\nvar curlywedge = \"⋏\";\nvar curren$1 = \"¤\";\nvar curvearrowleft = \"↶\";\nvar curvearrowright = \"↷\";\nvar cuvee = \"⋎\";\nvar cuwed = \"⋏\";\nvar cwconint = \"∲\";\nvar cwint = \"∱\";\nvar cylcty = \"⌭\";\nvar dagger = \"†\";\nvar Dagger = \"‡\";\nvar daleth = \"ℸ\";\nvar darr = \"↓\";\nvar Darr = \"↡\";\nvar dArr = \"⇓\";\nvar dash = \"‐\";\nvar Dashv = \"⫤\";\nvar dashv = \"⊣\";\nvar dbkarow = \"⤏\";\nvar dblac = \"˝\";\nvar Dcaron = \"Ď\";\nvar dcaron = \"ď\";\nvar Dcy = \"Д\";\nvar dcy = \"д\";\nvar ddagger = \"‡\";\nvar ddarr = \"⇊\";\nvar DD = \"ⅅ\";\nvar dd = \"ⅆ\";\nvar DDotrahd = \"⤑\";\nvar ddotseq = \"⩷\";\nvar deg$1 = \"°\";\nvar Del = \"∇\";\nvar Delta = \"Δ\";\nvar delta = \"δ\";\nvar demptyv = \"⦱\";\nvar dfisht = \"⥿\";\nvar Dfr = \"𝔇\";\nvar dfr = \"𝔡\";\nvar dHar = \"⥥\";\nvar dharl = \"⇃\";\nvar dharr = \"⇂\";\nvar DiacriticalAcute = \"´\";\nvar DiacriticalDot = \"˙\";\nvar DiacriticalDoubleAcute = \"˝\";\nvar DiacriticalGrave = \"`\";\nvar DiacriticalTilde = \"˜\";\nvar diam = \"⋄\";\nvar diamond = \"⋄\";\nvar Diamond = \"⋄\";\nvar diamondsuit = \"♦\";\nvar diams = \"♦\";\nvar die = \"¨\";\nvar DifferentialD = \"ⅆ\";\nvar digamma = \"ϝ\";\nvar disin = \"⋲\";\nvar div = \"÷\";\nvar divide$1 = \"÷\";\nvar divideontimes = \"⋇\";\nvar divonx = \"⋇\";\nvar DJcy = \"Ђ\";\nvar djcy = \"ђ\";\nvar dlcorn = \"⌞\";\nvar dlcrop = \"⌍\";\nvar dollar = \"$\";\nvar Dopf = \"𝔻\";\nvar dopf = \"𝕕\";\nvar Dot = \"¨\";\nvar dot = \"˙\";\nvar DotDot = \"⃜\";\nvar doteq = \"≐\";\nvar doteqdot = \"≑\";\nvar DotEqual = \"≐\";\nvar dotminus = \"∸\";\nvar dotplus = \"∔\";\nvar dotsquare = \"⊡\";\nvar doublebarwedge = \"⌆\";\nvar DoubleContourIntegral = \"∯\";\nvar DoubleDot = \"¨\";\nvar DoubleDownArrow = \"⇓\";\nvar DoubleLeftArrow = \"⇐\";\nvar DoubleLeftRightArrow = \"⇔\";\nvar DoubleLeftTee = \"⫤\";\nvar DoubleLongLeftArrow = \"⟸\";\nvar DoubleLongLeftRightArrow = \"⟺\";\nvar DoubleLongRightArrow = \"⟹\";\nvar DoubleRightArrow = \"⇒\";\nvar DoubleRightTee = \"⊨\";\nvar DoubleUpArrow = \"⇑\";\nvar DoubleUpDownArrow = \"⇕\";\nvar DoubleVerticalBar = \"∥\";\nvar DownArrowBar = \"⤓\";\nvar downarrow = \"↓\";\nvar DownArrow = \"↓\";\nvar Downarrow = \"⇓\";\nvar DownArrowUpArrow = \"⇵\";\nvar DownBreve = \"̑\";\nvar downdownarrows = \"⇊\";\nvar downharpoonleft = \"⇃\";\nvar downharpoonright = \"⇂\";\nvar DownLeftRightVector = \"⥐\";\nvar DownLeftTeeVector = \"⥞\";\nvar DownLeftVectorBar = \"⥖\";\nvar DownLeftVector = \"↽\";\nvar DownRightTeeVector = \"⥟\";\nvar DownRightVectorBar = \"⥗\";\nvar DownRightVector = \"⇁\";\nvar DownTeeArrow = \"↧\";\nvar DownTee = \"⊤\";\nvar drbkarow = \"⤐\";\nvar drcorn = \"⌟\";\nvar drcrop = \"⌌\";\nvar Dscr = \"𝒟\";\nvar dscr = \"𝒹\";\nvar DScy = \"Ѕ\";\nvar dscy = \"ѕ\";\nvar dsol = \"⧶\";\nvar Dstrok = \"Đ\";\nvar dstrok = \"đ\";\nvar dtdot = \"⋱\";\nvar dtri = \"▿\";\nvar dtrif = \"▾\";\nvar duarr = \"⇵\";\nvar duhar = \"⥯\";\nvar dwangle = \"⦦\";\nvar DZcy = \"Џ\";\nvar dzcy = \"џ\";\nvar dzigrarr = \"⟿\";\nvar Eacute$1 = \"É\";\nvar eacute$1 = \"é\";\nvar easter = \"⩮\";\nvar Ecaron = \"Ě\";\nvar ecaron = \"ě\";\nvar Ecirc$1 = \"Ê\";\nvar ecirc$1 = \"ê\";\nvar ecir = \"≖\";\nvar ecolon = \"≕\";\nvar Ecy = \"Э\";\nvar ecy = \"э\";\nvar eDDot = \"⩷\";\nvar Edot = \"Ė\";\nvar edot = \"ė\";\nvar eDot = \"≑\";\nvar ee = \"ⅇ\";\nvar efDot = \"≒\";\nvar Efr = \"𝔈\";\nvar efr = \"𝔢\";\nvar eg = \"⪚\";\nvar Egrave$1 = \"È\";\nvar egrave$1 = \"è\";\nvar egs = \"⪖\";\nvar egsdot = \"⪘\";\nvar el = \"⪙\";\nvar Element$1 = \"∈\";\nvar elinters = \"⏧\";\nvar ell = \"ℓ\";\nvar els = \"⪕\";\nvar elsdot = \"⪗\";\nvar Emacr = \"Ē\";\nvar emacr = \"ē\";\nvar empty = \"∅\";\nvar emptyset = \"∅\";\nvar EmptySmallSquare = \"◻\";\nvar emptyv = \"∅\";\nvar EmptyVerySmallSquare = \"▫\";\nvar emsp13 = \" \";\nvar emsp14 = \" \";\nvar emsp = \" \";\nvar ENG = \"Ŋ\";\nvar eng = \"ŋ\";\nvar ensp = \" \";\nvar Eogon = \"Ę\";\nvar eogon = \"ę\";\nvar Eopf = \"𝔼\";\nvar eopf = \"𝕖\";\nvar epar = \"⋕\";\nvar eparsl = \"⧣\";\nvar eplus = \"⩱\";\nvar epsi = \"ε\";\nvar Epsilon = \"Ε\";\nvar epsilon = \"ε\";\nvar epsiv = \"ϵ\";\nvar eqcirc = \"≖\";\nvar eqcolon = \"≕\";\nvar eqsim = \"≂\";\nvar eqslantgtr = \"⪖\";\nvar eqslantless = \"⪕\";\nvar Equal = \"⩵\";\nvar equals = \"=\";\nvar EqualTilde = \"≂\";\nvar equest = \"≟\";\nvar Equilibrium = \"⇌\";\nvar equiv = \"≡\";\nvar equivDD = \"⩸\";\nvar eqvparsl = \"⧥\";\nvar erarr = \"⥱\";\nvar erDot = \"≓\";\nvar escr = \"ℯ\";\nvar Escr = \"ℰ\";\nvar esdot = \"≐\";\nvar Esim = \"⩳\";\nvar esim = \"≂\";\nvar Eta = \"Η\";\nvar eta = \"η\";\nvar ETH$1 = \"Ð\";\nvar eth$1 = \"ð\";\nvar Euml$1 = \"Ë\";\nvar euml$1 = \"ë\";\nvar euro = \"€\";\nvar excl = \"!\";\nvar exist = \"∃\";\nvar Exists = \"∃\";\nvar expectation = \"ℰ\";\nvar exponentiale = \"ⅇ\";\nvar ExponentialE = \"ⅇ\";\nvar fallingdotseq = \"≒\";\nvar Fcy = \"Ф\";\nvar fcy = \"ф\";\nvar female = \"♀\";\nvar ffilig = \"ffi\";\nvar fflig = \"ff\";\nvar ffllig = \"ffl\";\nvar Ffr = \"𝔉\";\nvar ffr = \"𝔣\";\nvar filig = \"fi\";\nvar FilledSmallSquare = \"◼\";\nvar FilledVerySmallSquare = \"▪\";\nvar fjlig = \"fj\";\nvar flat = \"♭\";\nvar fllig = \"fl\";\nvar fltns = \"▱\";\nvar fnof = \"ƒ\";\nvar Fopf = \"𝔽\";\nvar fopf = \"𝕗\";\nvar forall = \"∀\";\nvar ForAll = \"∀\";\nvar fork = \"⋔\";\nvar forkv = \"⫙\";\nvar Fouriertrf = \"ℱ\";\nvar fpartint = \"⨍\";\nvar frac12$1 = \"½\";\nvar frac13 = \"⅓\";\nvar frac14$1 = \"¼\";\nvar frac15 = \"⅕\";\nvar frac16 = \"⅙\";\nvar frac18 = \"⅛\";\nvar frac23 = \"⅔\";\nvar frac25 = \"⅖\";\nvar frac34$1 = \"¾\";\nvar frac35 = \"⅗\";\nvar frac38 = \"⅜\";\nvar frac45 = \"⅘\";\nvar frac56 = \"⅚\";\nvar frac58 = \"⅝\";\nvar frac78 = \"⅞\";\nvar frasl = \"⁄\";\nvar frown = \"⌢\";\nvar fscr = \"𝒻\";\nvar Fscr = \"ℱ\";\nvar gacute = \"ǵ\";\nvar Gamma = \"Γ\";\nvar gamma = \"γ\";\nvar Gammad = \"Ϝ\";\nvar gammad = \"ϝ\";\nvar gap = \"⪆\";\nvar Gbreve = \"Ğ\";\nvar gbreve = \"ğ\";\nvar Gcedil = \"Ģ\";\nvar Gcirc = \"Ĝ\";\nvar gcirc = \"ĝ\";\nvar Gcy = \"Г\";\nvar gcy = \"г\";\nvar Gdot = \"Ġ\";\nvar gdot = \"ġ\";\nvar ge = \"≥\";\nvar gE = \"≧\";\nvar gEl = \"⪌\";\nvar gel = \"⋛\";\nvar geq = \"≥\";\nvar geqq = \"≧\";\nvar geqslant = \"⩾\";\nvar gescc = \"⪩\";\nvar ges = \"⩾\";\nvar gesdot = \"⪀\";\nvar gesdoto = \"⪂\";\nvar gesdotol = \"⪄\";\nvar gesl = \"⋛︀\";\nvar gesles = \"⪔\";\nvar Gfr = \"𝔊\";\nvar gfr = \"𝔤\";\nvar gg = \"≫\";\nvar Gg = \"⋙\";\nvar ggg = \"⋙\";\nvar gimel = \"ℷ\";\nvar GJcy = \"Ѓ\";\nvar gjcy = \"ѓ\";\nvar gla = \"⪥\";\nvar gl = \"≷\";\nvar glE = \"⪒\";\nvar glj = \"⪤\";\nvar gnap = \"⪊\";\nvar gnapprox = \"⪊\";\nvar gne = \"⪈\";\nvar gnE = \"≩\";\nvar gneq = \"⪈\";\nvar gneqq = \"≩\";\nvar gnsim = \"⋧\";\nvar Gopf = \"𝔾\";\nvar gopf = \"𝕘\";\nvar grave = \"`\";\nvar GreaterEqual = \"≥\";\nvar GreaterEqualLess = \"⋛\";\nvar GreaterFullEqual = \"≧\";\nvar GreaterGreater = \"⪢\";\nvar GreaterLess = \"≷\";\nvar GreaterSlantEqual = \"⩾\";\nvar GreaterTilde = \"≳\";\nvar Gscr = \"𝒢\";\nvar gscr = \"ℊ\";\nvar gsim = \"≳\";\nvar gsime = \"⪎\";\nvar gsiml = \"⪐\";\nvar gtcc = \"⪧\";\nvar gtcir = \"⩺\";\nvar gt$2 = \">\";\nvar GT$1 = \">\";\nvar Gt = \"≫\";\nvar gtdot = \"⋗\";\nvar gtlPar = \"⦕\";\nvar gtquest = \"⩼\";\nvar gtrapprox = \"⪆\";\nvar gtrarr = \"⥸\";\nvar gtrdot = \"⋗\";\nvar gtreqless = \"⋛\";\nvar gtreqqless = \"⪌\";\nvar gtrless = \"≷\";\nvar gtrsim = \"≳\";\nvar gvertneqq = \"≩︀\";\nvar gvnE = \"≩︀\";\nvar Hacek = \"ˇ\";\nvar hairsp = \" \";\nvar half = \"½\";\nvar hamilt = \"ℋ\";\nvar HARDcy = \"Ъ\";\nvar hardcy = \"ъ\";\nvar harrcir = \"⥈\";\nvar harr = \"↔\";\nvar hArr = \"⇔\";\nvar harrw = \"↭\";\nvar Hat = \"^\";\nvar hbar = \"ℏ\";\nvar Hcirc = \"Ĥ\";\nvar hcirc = \"ĥ\";\nvar hearts = \"♥\";\nvar heartsuit = \"♥\";\nvar hellip = \"…\";\nvar hercon = \"⊹\";\nvar hfr = \"𝔥\";\nvar Hfr = \"ℌ\";\nvar HilbertSpace = \"ℋ\";\nvar hksearow = \"⤥\";\nvar hkswarow = \"⤦\";\nvar hoarr = \"⇿\";\nvar homtht = \"∻\";\nvar hookleftarrow = \"↩\";\nvar hookrightarrow = \"↪\";\nvar hopf = \"𝕙\";\nvar Hopf = \"ℍ\";\nvar horbar = \"―\";\nvar HorizontalLine = \"─\";\nvar hscr = \"𝒽\";\nvar Hscr = \"ℋ\";\nvar hslash = \"ℏ\";\nvar Hstrok = \"Ħ\";\nvar hstrok = \"ħ\";\nvar HumpDownHump = \"≎\";\nvar HumpEqual = \"≏\";\nvar hybull = \"⁃\";\nvar hyphen = \"‐\";\nvar Iacute$1 = \"Í\";\nvar iacute$1 = \"í\";\nvar ic = \"⁣\";\nvar Icirc$1 = \"Î\";\nvar icirc$1 = \"î\";\nvar Icy = \"И\";\nvar icy = \"и\";\nvar Idot = \"İ\";\nvar IEcy = \"Е\";\nvar iecy = \"е\";\nvar iexcl$1 = \"¡\";\nvar iff = \"⇔\";\nvar ifr = \"𝔦\";\nvar Ifr = \"ℑ\";\nvar Igrave$1 = \"Ì\";\nvar igrave$1 = \"ì\";\nvar ii = \"ⅈ\";\nvar iiiint = \"⨌\";\nvar iiint = \"∭\";\nvar iinfin = \"⧜\";\nvar iiota = \"℩\";\nvar IJlig = \"IJ\";\nvar ijlig = \"ij\";\nvar Imacr = \"Ī\";\nvar imacr = \"ī\";\nvar image = \"ℑ\";\nvar ImaginaryI = \"ⅈ\";\nvar imagline = \"ℐ\";\nvar imagpart = \"ℑ\";\nvar imath = \"ı\";\nvar Im = \"ℑ\";\nvar imof = \"⊷\";\nvar imped = \"Ƶ\";\nvar Implies = \"⇒\";\nvar incare = \"℅\";\nvar infin = \"∞\";\nvar infintie = \"⧝\";\nvar inodot = \"ı\";\nvar intcal = \"⊺\";\nvar int = \"∫\";\nvar Int = \"∬\";\nvar integers = \"ℤ\";\nvar Integral = \"∫\";\nvar intercal = \"⊺\";\nvar Intersection = \"⋂\";\nvar intlarhk = \"⨗\";\nvar intprod = \"⨼\";\nvar InvisibleComma = \"⁣\";\nvar InvisibleTimes = \"⁢\";\nvar IOcy = \"Ё\";\nvar iocy = \"ё\";\nvar Iogon = \"Į\";\nvar iogon = \"į\";\nvar Iopf = \"𝕀\";\nvar iopf = \"𝕚\";\nvar Iota = \"Ι\";\nvar iota = \"ι\";\nvar iprod = \"⨼\";\nvar iquest$1 = \"¿\";\nvar iscr = \"𝒾\";\nvar Iscr = \"ℐ\";\nvar isin = \"∈\";\nvar isindot = \"⋵\";\nvar isinE = \"⋹\";\nvar isins = \"⋴\";\nvar isinsv = \"⋳\";\nvar isinv = \"∈\";\nvar it = \"⁢\";\nvar Itilde = \"Ĩ\";\nvar itilde = \"ĩ\";\nvar Iukcy = \"І\";\nvar iukcy = \"і\";\nvar Iuml$1 = \"Ï\";\nvar iuml$1 = \"ï\";\nvar Jcirc = \"Ĵ\";\nvar jcirc = \"ĵ\";\nvar Jcy = \"Й\";\nvar jcy = \"й\";\nvar Jfr = \"𝔍\";\nvar jfr = \"𝔧\";\nvar jmath = \"ȷ\";\nvar Jopf = \"𝕁\";\nvar jopf = \"𝕛\";\nvar Jscr = \"𝒥\";\nvar jscr = \"𝒿\";\nvar Jsercy = \"Ј\";\nvar jsercy = \"ј\";\nvar Jukcy = \"Є\";\nvar jukcy = \"є\";\nvar Kappa = \"Κ\";\nvar kappa = \"κ\";\nvar kappav = \"ϰ\";\nvar Kcedil = \"Ķ\";\nvar kcedil = \"ķ\";\nvar Kcy = \"К\";\nvar kcy = \"к\";\nvar Kfr = \"𝔎\";\nvar kfr = \"𝔨\";\nvar kgreen = \"ĸ\";\nvar KHcy = \"Х\";\nvar khcy = \"х\";\nvar KJcy = \"Ќ\";\nvar kjcy = \"ќ\";\nvar Kopf = \"𝕂\";\nvar kopf = \"𝕜\";\nvar Kscr = \"𝒦\";\nvar kscr = \"𝓀\";\nvar lAarr = \"⇚\";\nvar Lacute = \"Ĺ\";\nvar lacute = \"ĺ\";\nvar laemptyv = \"⦴\";\nvar lagran = \"ℒ\";\nvar Lambda = \"Λ\";\nvar lambda = \"λ\";\nvar lang = \"⟨\";\nvar Lang = \"⟪\";\nvar langd = \"⦑\";\nvar langle = \"⟨\";\nvar lap = \"⪅\";\nvar Laplacetrf = \"ℒ\";\nvar laquo$1 = \"«\";\nvar larrb = \"⇤\";\nvar larrbfs = \"⤟\";\nvar larr = \"←\";\nvar Larr = \"↞\";\nvar lArr = \"⇐\";\nvar larrfs = \"⤝\";\nvar larrhk = \"↩\";\nvar larrlp = \"↫\";\nvar larrpl = \"⤹\";\nvar larrsim = \"⥳\";\nvar larrtl = \"↢\";\nvar latail = \"⤙\";\nvar lAtail = \"⤛\";\nvar lat = \"⪫\";\nvar late = \"⪭\";\nvar lates = \"⪭︀\";\nvar lbarr = \"⤌\";\nvar lBarr = \"⤎\";\nvar lbbrk = \"❲\";\nvar lbrace = \"{\";\nvar lbrack = \"[\";\nvar lbrke = \"⦋\";\nvar lbrksld = \"⦏\";\nvar lbrkslu = \"⦍\";\nvar Lcaron = \"Ľ\";\nvar lcaron = \"ľ\";\nvar Lcedil = \"Ļ\";\nvar lcedil = \"ļ\";\nvar lceil = \"⌈\";\nvar lcub = \"{\";\nvar Lcy = \"Л\";\nvar lcy = \"л\";\nvar ldca = \"⤶\";\nvar ldquo = \"“\";\nvar ldquor = \"„\";\nvar ldrdhar = \"⥧\";\nvar ldrushar = \"⥋\";\nvar ldsh = \"↲\";\nvar le = \"≤\";\nvar lE = \"≦\";\nvar LeftAngleBracket = \"⟨\";\nvar LeftArrowBar = \"⇤\";\nvar leftarrow = \"←\";\nvar LeftArrow = \"←\";\nvar Leftarrow = \"⇐\";\nvar LeftArrowRightArrow = \"⇆\";\nvar leftarrowtail = \"↢\";\nvar LeftCeiling = \"⌈\";\nvar LeftDoubleBracket = \"⟦\";\nvar LeftDownTeeVector = \"⥡\";\nvar LeftDownVectorBar = \"⥙\";\nvar LeftDownVector = \"⇃\";\nvar LeftFloor = \"⌊\";\nvar leftharpoondown = \"↽\";\nvar leftharpoonup = \"↼\";\nvar leftleftarrows = \"⇇\";\nvar leftrightarrow = \"↔\";\nvar LeftRightArrow = \"↔\";\nvar Leftrightarrow = \"⇔\";\nvar leftrightarrows = \"⇆\";\nvar leftrightharpoons = \"⇋\";\nvar leftrightsquigarrow = \"↭\";\nvar LeftRightVector = \"⥎\";\nvar LeftTeeArrow = \"↤\";\nvar LeftTee = \"⊣\";\nvar LeftTeeVector = \"⥚\";\nvar leftthreetimes = \"⋋\";\nvar LeftTriangleBar = \"⧏\";\nvar LeftTriangle = \"⊲\";\nvar LeftTriangleEqual = \"⊴\";\nvar LeftUpDownVector = \"⥑\";\nvar LeftUpTeeVector = \"⥠\";\nvar LeftUpVectorBar = \"⥘\";\nvar LeftUpVector = \"↿\";\nvar LeftVectorBar = \"⥒\";\nvar LeftVector = \"↼\";\nvar lEg = \"⪋\";\nvar leg = \"⋚\";\nvar leq = \"≤\";\nvar leqq = \"≦\";\nvar leqslant = \"⩽\";\nvar lescc = \"⪨\";\nvar les = \"⩽\";\nvar lesdot = \"⩿\";\nvar lesdoto = \"⪁\";\nvar lesdotor = \"⪃\";\nvar lesg = \"⋚︀\";\nvar lesges = \"⪓\";\nvar lessapprox = \"⪅\";\nvar lessdot = \"⋖\";\nvar lesseqgtr = \"⋚\";\nvar lesseqqgtr = \"⪋\";\nvar LessEqualGreater = \"⋚\";\nvar LessFullEqual = \"≦\";\nvar LessGreater = \"≶\";\nvar lessgtr = \"≶\";\nvar LessLess = \"⪡\";\nvar lesssim = \"≲\";\nvar LessSlantEqual = \"⩽\";\nvar LessTilde = \"≲\";\nvar lfisht = \"⥼\";\nvar lfloor = \"⌊\";\nvar Lfr = \"𝔏\";\nvar lfr = \"𝔩\";\nvar lg = \"≶\";\nvar lgE = \"⪑\";\nvar lHar = \"⥢\";\nvar lhard = \"↽\";\nvar lharu = \"↼\";\nvar lharul = \"⥪\";\nvar lhblk = \"▄\";\nvar LJcy = \"Љ\";\nvar ljcy = \"љ\";\nvar llarr = \"⇇\";\nvar ll = \"≪\";\nvar Ll = \"⋘\";\nvar llcorner = \"⌞\";\nvar Lleftarrow = \"⇚\";\nvar llhard = \"⥫\";\nvar lltri = \"◺\";\nvar Lmidot = \"Ŀ\";\nvar lmidot = \"ŀ\";\nvar lmoustache = \"⎰\";\nvar lmoust = \"⎰\";\nvar lnap = \"⪉\";\nvar lnapprox = \"⪉\";\nvar lne = \"⪇\";\nvar lnE = \"≨\";\nvar lneq = \"⪇\";\nvar lneqq = \"≨\";\nvar lnsim = \"⋦\";\nvar loang = \"⟬\";\nvar loarr = \"⇽\";\nvar lobrk = \"⟦\";\nvar longleftarrow = \"⟵\";\nvar LongLeftArrow = \"⟵\";\nvar Longleftarrow = \"⟸\";\nvar longleftrightarrow = \"⟷\";\nvar LongLeftRightArrow = \"⟷\";\nvar Longleftrightarrow = \"⟺\";\nvar longmapsto = \"⟼\";\nvar longrightarrow = \"⟶\";\nvar LongRightArrow = \"⟶\";\nvar Longrightarrow = \"⟹\";\nvar looparrowleft = \"↫\";\nvar looparrowright = \"↬\";\nvar lopar = \"⦅\";\nvar Lopf = \"𝕃\";\nvar lopf = \"𝕝\";\nvar loplus = \"⨭\";\nvar lotimes = \"⨴\";\nvar lowast = \"∗\";\nvar lowbar = \"_\";\nvar LowerLeftArrow = \"↙\";\nvar LowerRightArrow = \"↘\";\nvar loz = \"◊\";\nvar lozenge = \"◊\";\nvar lozf = \"⧫\";\nvar lpar = \"(\";\nvar lparlt = \"⦓\";\nvar lrarr = \"⇆\";\nvar lrcorner = \"⌟\";\nvar lrhar = \"⇋\";\nvar lrhard = \"⥭\";\nvar lrm = \"‎\";\nvar lrtri = \"⊿\";\nvar lsaquo = \"‹\";\nvar lscr = \"𝓁\";\nvar Lscr = \"ℒ\";\nvar lsh = \"↰\";\nvar Lsh = \"↰\";\nvar lsim = \"≲\";\nvar lsime = \"⪍\";\nvar lsimg = \"⪏\";\nvar lsqb = \"[\";\nvar lsquo = \"‘\";\nvar lsquor = \"‚\";\nvar Lstrok = \"Ł\";\nvar lstrok = \"ł\";\nvar ltcc = \"⪦\";\nvar ltcir = \"⩹\";\nvar lt$2 = \"<\";\nvar LT$1 = \"<\";\nvar Lt = \"≪\";\nvar ltdot = \"⋖\";\nvar lthree = \"⋋\";\nvar ltimes = \"⋉\";\nvar ltlarr = \"⥶\";\nvar ltquest = \"⩻\";\nvar ltri = \"◃\";\nvar ltrie = \"⊴\";\nvar ltrif = \"◂\";\nvar ltrPar = \"⦖\";\nvar lurdshar = \"⥊\";\nvar luruhar = \"⥦\";\nvar lvertneqq = \"≨︀\";\nvar lvnE = \"≨︀\";\nvar macr$1 = \"¯\";\nvar male = \"♂\";\nvar malt = \"✠\";\nvar maltese = \"✠\";\nvar map = \"↦\";\nvar mapsto = \"↦\";\nvar mapstodown = \"↧\";\nvar mapstoleft = \"↤\";\nvar mapstoup = \"↥\";\nvar marker = \"▮\";\nvar mcomma = \"⨩\";\nvar Mcy = \"М\";\nvar mcy = \"м\";\nvar mdash = \"—\";\nvar mDDot = \"∺\";\nvar measuredangle = \"∡\";\nvar MediumSpace = \" \";\nvar Mellintrf = \"ℳ\";\nvar Mfr = \"𝔐\";\nvar mfr = \"𝔪\";\nvar mho = \"℧\";\nvar micro$1 = \"µ\";\nvar midast = \"*\";\nvar midcir = \"⫰\";\nvar mid = \"∣\";\nvar middot$1 = \"·\";\nvar minusb = \"⊟\";\nvar minus = \"−\";\nvar minusd = \"∸\";\nvar minusdu = \"⨪\";\nvar MinusPlus = \"∓\";\nvar mlcp = \"⫛\";\nvar mldr = \"…\";\nvar mnplus = \"∓\";\nvar models = \"⊧\";\nvar Mopf = \"𝕄\";\nvar mopf = \"𝕞\";\nvar mp = \"∓\";\nvar mscr = \"𝓂\";\nvar Mscr = \"ℳ\";\nvar mstpos = \"∾\";\nvar Mu = \"Μ\";\nvar mu = \"μ\";\nvar multimap = \"⊸\";\nvar mumap = \"⊸\";\nvar nabla = \"∇\";\nvar Nacute = \"Ń\";\nvar nacute = \"ń\";\nvar nang = \"∠⃒\";\nvar nap = \"≉\";\nvar napE = \"⩰̸\";\nvar napid = \"≋̸\";\nvar napos = \"ʼn\";\nvar napprox = \"≉\";\nvar natural = \"♮\";\nvar naturals = \"ℕ\";\nvar natur = \"♮\";\nvar nbsp$1 = \" \";\nvar nbump = \"≎̸\";\nvar nbumpe = \"≏̸\";\nvar ncap = \"⩃\";\nvar Ncaron = \"Ň\";\nvar ncaron = \"ň\";\nvar Ncedil = \"Ņ\";\nvar ncedil = \"ņ\";\nvar ncong = \"≇\";\nvar ncongdot = \"⩭̸\";\nvar ncup = \"⩂\";\nvar Ncy = \"Н\";\nvar ncy = \"н\";\nvar ndash = \"–\";\nvar nearhk = \"⤤\";\nvar nearr = \"↗\";\nvar neArr = \"⇗\";\nvar nearrow = \"↗\";\nvar ne = \"≠\";\nvar nedot = \"≐̸\";\nvar NegativeMediumSpace = \"​\";\nvar NegativeThickSpace = \"​\";\nvar NegativeThinSpace = \"​\";\nvar NegativeVeryThinSpace = \"​\";\nvar nequiv = \"≢\";\nvar nesear = \"⤨\";\nvar nesim = \"≂̸\";\nvar NestedGreaterGreater = \"≫\";\nvar NestedLessLess = \"≪\";\nvar NewLine = \"\\n\";\nvar nexist = \"∄\";\nvar nexists = \"∄\";\nvar Nfr = \"𝔑\";\nvar nfr = \"𝔫\";\nvar ngE = \"≧̸\";\nvar nge = \"≱\";\nvar ngeq = \"≱\";\nvar ngeqq = \"≧̸\";\nvar ngeqslant = \"⩾̸\";\nvar nges = \"⩾̸\";\nvar nGg = \"⋙̸\";\nvar ngsim = \"≵\";\nvar nGt = \"≫⃒\";\nvar ngt = \"≯\";\nvar ngtr = \"≯\";\nvar nGtv = \"≫̸\";\nvar nharr = \"↮\";\nvar nhArr = \"⇎\";\nvar nhpar = \"⫲\";\nvar ni = \"∋\";\nvar nis = \"⋼\";\nvar nisd = \"⋺\";\nvar niv = \"∋\";\nvar NJcy = \"Њ\";\nvar njcy = \"њ\";\nvar nlarr = \"↚\";\nvar nlArr = \"⇍\";\nvar nldr = \"‥\";\nvar nlE = \"≦̸\";\nvar nle = \"≰\";\nvar nleftarrow = \"↚\";\nvar nLeftarrow = \"⇍\";\nvar nleftrightarrow = \"↮\";\nvar nLeftrightarrow = \"⇎\";\nvar nleq = \"≰\";\nvar nleqq = \"≦̸\";\nvar nleqslant = \"⩽̸\";\nvar nles = \"⩽̸\";\nvar nless = \"≮\";\nvar nLl = \"⋘̸\";\nvar nlsim = \"≴\";\nvar nLt = \"≪⃒\";\nvar nlt = \"≮\";\nvar nltri = \"⋪\";\nvar nltrie = \"⋬\";\nvar nLtv = \"≪̸\";\nvar nmid = \"∤\";\nvar NoBreak = \"⁠\";\nvar NonBreakingSpace = \" \";\nvar nopf = \"𝕟\";\nvar Nopf = \"ℕ\";\nvar Not = \"⫬\";\nvar not$1 = \"¬\";\nvar NotCongruent = \"≢\";\nvar NotCupCap = \"≭\";\nvar NotDoubleVerticalBar = \"∦\";\nvar NotElement = \"∉\";\nvar NotEqual = \"≠\";\nvar NotEqualTilde = \"≂̸\";\nvar NotExists = \"∄\";\nvar NotGreater = \"≯\";\nvar NotGreaterEqual = \"≱\";\nvar NotGreaterFullEqual = \"≧̸\";\nvar NotGreaterGreater = \"≫̸\";\nvar NotGreaterLess = \"≹\";\nvar NotGreaterSlantEqual = \"⩾̸\";\nvar NotGreaterTilde = \"≵\";\nvar NotHumpDownHump = \"≎̸\";\nvar NotHumpEqual = \"≏̸\";\nvar notin = \"∉\";\nvar notindot = \"⋵̸\";\nvar notinE = \"⋹̸\";\nvar notinva = \"∉\";\nvar notinvb = \"⋷\";\nvar notinvc = \"⋶\";\nvar NotLeftTriangleBar = \"⧏̸\";\nvar NotLeftTriangle = \"⋪\";\nvar NotLeftTriangleEqual = \"⋬\";\nvar NotLess = \"≮\";\nvar NotLessEqual = \"≰\";\nvar NotLessGreater = \"≸\";\nvar NotLessLess = \"≪̸\";\nvar NotLessSlantEqual = \"⩽̸\";\nvar NotLessTilde = \"≴\";\nvar NotNestedGreaterGreater = \"⪢̸\";\nvar NotNestedLessLess = \"⪡̸\";\nvar notni = \"∌\";\nvar notniva = \"∌\";\nvar notnivb = \"⋾\";\nvar notnivc = \"⋽\";\nvar NotPrecedes = \"⊀\";\nvar NotPrecedesEqual = \"⪯̸\";\nvar NotPrecedesSlantEqual = \"⋠\";\nvar NotReverseElement = \"∌\";\nvar NotRightTriangleBar = \"⧐̸\";\nvar NotRightTriangle = \"⋫\";\nvar NotRightTriangleEqual = \"⋭\";\nvar NotSquareSubset = \"⊏̸\";\nvar NotSquareSubsetEqual = \"⋢\";\nvar NotSquareSuperset = \"⊐̸\";\nvar NotSquareSupersetEqual = \"⋣\";\nvar NotSubset = \"⊂⃒\";\nvar NotSubsetEqual = \"⊈\";\nvar NotSucceeds = \"⊁\";\nvar NotSucceedsEqual = \"⪰̸\";\nvar NotSucceedsSlantEqual = \"⋡\";\nvar NotSucceedsTilde = \"≿̸\";\nvar NotSuperset = \"⊃⃒\";\nvar NotSupersetEqual = \"⊉\";\nvar NotTilde = \"≁\";\nvar NotTildeEqual = \"≄\";\nvar NotTildeFullEqual = \"≇\";\nvar NotTildeTilde = \"≉\";\nvar NotVerticalBar = \"∤\";\nvar nparallel = \"∦\";\nvar npar = \"∦\";\nvar nparsl = \"⫽⃥\";\nvar npart = \"∂̸\";\nvar npolint = \"⨔\";\nvar npr = \"⊀\";\nvar nprcue = \"⋠\";\nvar nprec = \"⊀\";\nvar npreceq = \"⪯̸\";\nvar npre = \"⪯̸\";\nvar nrarrc = \"⤳̸\";\nvar nrarr = \"↛\";\nvar nrArr = \"⇏\";\nvar nrarrw = \"↝̸\";\nvar nrightarrow = \"↛\";\nvar nRightarrow = \"⇏\";\nvar nrtri = \"⋫\";\nvar nrtrie = \"⋭\";\nvar nsc = \"⊁\";\nvar nsccue = \"⋡\";\nvar nsce = \"⪰̸\";\nvar Nscr = \"𝒩\";\nvar nscr = \"𝓃\";\nvar nshortmid = \"∤\";\nvar nshortparallel = \"∦\";\nvar nsim = \"≁\";\nvar nsime = \"≄\";\nvar nsimeq = \"≄\";\nvar nsmid = \"∤\";\nvar nspar = \"∦\";\nvar nsqsube = \"⋢\";\nvar nsqsupe = \"⋣\";\nvar nsub = \"⊄\";\nvar nsubE = \"⫅̸\";\nvar nsube = \"⊈\";\nvar nsubset = \"⊂⃒\";\nvar nsubseteq = \"⊈\";\nvar nsubseteqq = \"⫅̸\";\nvar nsucc = \"⊁\";\nvar nsucceq = \"⪰̸\";\nvar nsup = \"⊅\";\nvar nsupE = \"⫆̸\";\nvar nsupe = \"⊉\";\nvar nsupset = \"⊃⃒\";\nvar nsupseteq = \"⊉\";\nvar nsupseteqq = \"⫆̸\";\nvar ntgl = \"≹\";\nvar Ntilde$1 = \"Ñ\";\nvar ntilde$1 = \"ñ\";\nvar ntlg = \"≸\";\nvar ntriangleleft = \"⋪\";\nvar ntrianglelefteq = \"⋬\";\nvar ntriangleright = \"⋫\";\nvar ntrianglerighteq = \"⋭\";\nvar Nu = \"Ν\";\nvar nu = \"ν\";\nvar num = \"#\";\nvar numero = \"№\";\nvar numsp = \" \";\nvar nvap = \"≍⃒\";\nvar nvdash = \"⊬\";\nvar nvDash = \"⊭\";\nvar nVdash = \"⊮\";\nvar nVDash = \"⊯\";\nvar nvge = \"≥⃒\";\nvar nvgt = \">⃒\";\nvar nvHarr = \"⤄\";\nvar nvinfin = \"⧞\";\nvar nvlArr = \"⤂\";\nvar nvle = \"≤⃒\";\nvar nvlt = \"<⃒\";\nvar nvltrie = \"⊴⃒\";\nvar nvrArr = \"⤃\";\nvar nvrtrie = \"⊵⃒\";\nvar nvsim = \"∼⃒\";\nvar nwarhk = \"⤣\";\nvar nwarr = \"↖\";\nvar nwArr = \"⇖\";\nvar nwarrow = \"↖\";\nvar nwnear = \"⤧\";\nvar Oacute$1 = \"Ó\";\nvar oacute$1 = \"ó\";\nvar oast = \"⊛\";\nvar Ocirc$1 = \"Ô\";\nvar ocirc$1 = \"ô\";\nvar ocir = \"⊚\";\nvar Ocy = \"О\";\nvar ocy = \"о\";\nvar odash = \"⊝\";\nvar Odblac = \"Ő\";\nvar odblac = \"ő\";\nvar odiv = \"⨸\";\nvar odot = \"⊙\";\nvar odsold = \"⦼\";\nvar OElig = \"Œ\";\nvar oelig = \"œ\";\nvar ofcir = \"⦿\";\nvar Ofr = \"𝔒\";\nvar ofr = \"𝔬\";\nvar ogon = \"˛\";\nvar Ograve$1 = \"Ò\";\nvar ograve$1 = \"ò\";\nvar ogt = \"⧁\";\nvar ohbar = \"⦵\";\nvar ohm = \"Ω\";\nvar oint = \"∮\";\nvar olarr = \"↺\";\nvar olcir = \"⦾\";\nvar olcross = \"⦻\";\nvar oline = \"‾\";\nvar olt = \"⧀\";\nvar Omacr = \"Ō\";\nvar omacr = \"ō\";\nvar Omega = \"Ω\";\nvar omega = \"ω\";\nvar Omicron = \"Ο\";\nvar omicron = \"ο\";\nvar omid = \"⦶\";\nvar ominus = \"⊖\";\nvar Oopf = \"𝕆\";\nvar oopf = \"𝕠\";\nvar opar = \"⦷\";\nvar OpenCurlyDoubleQuote = \"“\";\nvar OpenCurlyQuote = \"‘\";\nvar operp = \"⦹\";\nvar oplus = \"⊕\";\nvar orarr = \"↻\";\nvar Or = \"⩔\";\nvar or = \"∨\";\nvar ord = \"⩝\";\nvar order = \"ℴ\";\nvar orderof = \"ℴ\";\nvar ordf$1 = \"ª\";\nvar ordm$1 = \"º\";\nvar origof = \"⊶\";\nvar oror = \"⩖\";\nvar orslope = \"⩗\";\nvar orv = \"⩛\";\nvar oS = \"Ⓢ\";\nvar Oscr = \"𝒪\";\nvar oscr = \"ℴ\";\nvar Oslash$1 = \"Ø\";\nvar oslash$1 = \"ø\";\nvar osol = \"⊘\";\nvar Otilde$1 = \"Õ\";\nvar otilde$1 = \"õ\";\nvar otimesas = \"⨶\";\nvar Otimes = \"⨷\";\nvar otimes = \"⊗\";\nvar Ouml$1 = \"Ö\";\nvar ouml$1 = \"ö\";\nvar ovbar = \"⌽\";\nvar OverBar = \"‾\";\nvar OverBrace = \"⏞\";\nvar OverBracket = \"⎴\";\nvar OverParenthesis = \"⏜\";\nvar para$1 = \"¶\";\nvar parallel = \"∥\";\nvar par = \"∥\";\nvar parsim = \"⫳\";\nvar parsl = \"⫽\";\nvar part = \"∂\";\nvar PartialD = \"∂\";\nvar Pcy = \"П\";\nvar pcy = \"п\";\nvar percnt = \"%\";\nvar period = \".\";\nvar permil = \"‰\";\nvar perp = \"⊥\";\nvar pertenk = \"‱\";\nvar Pfr = \"𝔓\";\nvar pfr = \"𝔭\";\nvar Phi = \"Φ\";\nvar phi = \"φ\";\nvar phiv = \"ϕ\";\nvar phmmat = \"ℳ\";\nvar phone = \"☎\";\nvar Pi = \"Π\";\nvar pi = \"π\";\nvar pitchfork = \"⋔\";\nvar piv = \"ϖ\";\nvar planck = \"ℏ\";\nvar planckh = \"ℎ\";\nvar plankv = \"ℏ\";\nvar plusacir = \"⨣\";\nvar plusb = \"⊞\";\nvar pluscir = \"⨢\";\nvar plus = \"+\";\nvar plusdo = \"∔\";\nvar plusdu = \"⨥\";\nvar pluse = \"⩲\";\nvar PlusMinus = \"±\";\nvar plusmn$1 = \"±\";\nvar plussim = \"⨦\";\nvar plustwo = \"⨧\";\nvar pm = \"±\";\nvar Poincareplane = \"ℌ\";\nvar pointint = \"⨕\";\nvar popf = \"𝕡\";\nvar Popf = \"ℙ\";\nvar pound$1 = \"£\";\nvar prap = \"⪷\";\nvar Pr = \"⪻\";\nvar pr = \"≺\";\nvar prcue = \"≼\";\nvar precapprox = \"⪷\";\nvar prec = \"≺\";\nvar preccurlyeq = \"≼\";\nvar Precedes = \"≺\";\nvar PrecedesEqual = \"⪯\";\nvar PrecedesSlantEqual = \"≼\";\nvar PrecedesTilde = \"≾\";\nvar preceq = \"⪯\";\nvar precnapprox = \"⪹\";\nvar precneqq = \"⪵\";\nvar precnsim = \"⋨\";\nvar pre = \"⪯\";\nvar prE = \"⪳\";\nvar precsim = \"≾\";\nvar prime = \"′\";\nvar Prime = \"″\";\nvar primes = \"ℙ\";\nvar prnap = \"⪹\";\nvar prnE = \"⪵\";\nvar prnsim = \"⋨\";\nvar prod = \"∏\";\nvar Product = \"∏\";\nvar profalar = \"⌮\";\nvar profline = \"⌒\";\nvar profsurf = \"⌓\";\nvar prop = \"∝\";\nvar Proportional = \"∝\";\nvar Proportion = \"∷\";\nvar propto = \"∝\";\nvar prsim = \"≾\";\nvar prurel = \"⊰\";\nvar Pscr = \"𝒫\";\nvar pscr = \"𝓅\";\nvar Psi = \"Ψ\";\nvar psi = \"ψ\";\nvar puncsp = \" \";\nvar Qfr = \"𝔔\";\nvar qfr = \"𝔮\";\nvar qint = \"⨌\";\nvar qopf = \"𝕢\";\nvar Qopf = \"ℚ\";\nvar qprime = \"⁗\";\nvar Qscr = \"𝒬\";\nvar qscr = \"𝓆\";\nvar quaternions = \"ℍ\";\nvar quatint = \"⨖\";\nvar quest = \"?\";\nvar questeq = \"≟\";\nvar quot$2 = \"\\\"\";\nvar QUOT$1 = \"\\\"\";\nvar rAarr = \"⇛\";\nvar race = \"∽̱\";\nvar Racute = \"Ŕ\";\nvar racute = \"ŕ\";\nvar radic = \"√\";\nvar raemptyv = \"⦳\";\nvar rang = \"⟩\";\nvar Rang = \"⟫\";\nvar rangd = \"⦒\";\nvar range = \"⦥\";\nvar rangle = \"⟩\";\nvar raquo$1 = \"»\";\nvar rarrap = \"⥵\";\nvar rarrb = \"⇥\";\nvar rarrbfs = \"⤠\";\nvar rarrc = \"⤳\";\nvar rarr = \"→\";\nvar Rarr = \"↠\";\nvar rArr = \"⇒\";\nvar rarrfs = \"⤞\";\nvar rarrhk = \"↪\";\nvar rarrlp = \"↬\";\nvar rarrpl = \"⥅\";\nvar rarrsim = \"⥴\";\nvar Rarrtl = \"⤖\";\nvar rarrtl = \"↣\";\nvar rarrw = \"↝\";\nvar ratail = \"⤚\";\nvar rAtail = \"⤜\";\nvar ratio = \"∶\";\nvar rationals = \"ℚ\";\nvar rbarr = \"⤍\";\nvar rBarr = \"⤏\";\nvar RBarr = \"⤐\";\nvar rbbrk = \"❳\";\nvar rbrace = \"}\";\nvar rbrack = \"]\";\nvar rbrke = \"⦌\";\nvar rbrksld = \"⦎\";\nvar rbrkslu = \"⦐\";\nvar Rcaron = \"Ř\";\nvar rcaron = \"ř\";\nvar Rcedil = \"Ŗ\";\nvar rcedil = \"ŗ\";\nvar rceil = \"⌉\";\nvar rcub = \"}\";\nvar Rcy = \"Р\";\nvar rcy = \"р\";\nvar rdca = \"⤷\";\nvar rdldhar = \"⥩\";\nvar rdquo = \"”\";\nvar rdquor = \"”\";\nvar rdsh = \"↳\";\nvar real = \"ℜ\";\nvar realine = \"ℛ\";\nvar realpart = \"ℜ\";\nvar reals = \"ℝ\";\nvar Re = \"ℜ\";\nvar rect = \"▭\";\nvar reg$1 = \"®\";\nvar REG$1 = \"®\";\nvar ReverseElement = \"∋\";\nvar ReverseEquilibrium = \"⇋\";\nvar ReverseUpEquilibrium = \"⥯\";\nvar rfisht = \"⥽\";\nvar rfloor = \"⌋\";\nvar rfr = \"𝔯\";\nvar Rfr = \"ℜ\";\nvar rHar = \"⥤\";\nvar rhard = \"⇁\";\nvar rharu = \"⇀\";\nvar rharul = \"⥬\";\nvar Rho = \"Ρ\";\nvar rho = \"ρ\";\nvar rhov = \"ϱ\";\nvar RightAngleBracket = \"⟩\";\nvar RightArrowBar = \"⇥\";\nvar rightarrow = \"→\";\nvar RightArrow = \"→\";\nvar Rightarrow = \"⇒\";\nvar RightArrowLeftArrow = \"⇄\";\nvar rightarrowtail = \"↣\";\nvar RightCeiling = \"⌉\";\nvar RightDoubleBracket = \"⟧\";\nvar RightDownTeeVector = \"⥝\";\nvar RightDownVectorBar = \"⥕\";\nvar RightDownVector = \"⇂\";\nvar RightFloor = \"⌋\";\nvar rightharpoondown = \"⇁\";\nvar rightharpoonup = \"⇀\";\nvar rightleftarrows = \"⇄\";\nvar rightleftharpoons = \"⇌\";\nvar rightrightarrows = \"⇉\";\nvar rightsquigarrow = \"↝\";\nvar RightTeeArrow = \"↦\";\nvar RightTee = \"⊢\";\nvar RightTeeVector = \"⥛\";\nvar rightthreetimes = \"⋌\";\nvar RightTriangleBar = \"⧐\";\nvar RightTriangle = \"⊳\";\nvar RightTriangleEqual = \"⊵\";\nvar RightUpDownVector = \"⥏\";\nvar RightUpTeeVector = \"⥜\";\nvar RightUpVectorBar = \"⥔\";\nvar RightUpVector = \"↾\";\nvar RightVectorBar = \"⥓\";\nvar RightVector = \"⇀\";\nvar ring = \"˚\";\nvar risingdotseq = \"≓\";\nvar rlarr = \"⇄\";\nvar rlhar = \"⇌\";\nvar rlm = \"‏\";\nvar rmoustache = \"⎱\";\nvar rmoust = \"⎱\";\nvar rnmid = \"⫮\";\nvar roang = \"⟭\";\nvar roarr = \"⇾\";\nvar robrk = \"⟧\";\nvar ropar = \"⦆\";\nvar ropf = \"𝕣\";\nvar Ropf = \"ℝ\";\nvar roplus = \"⨮\";\nvar rotimes = \"⨵\";\nvar RoundImplies = \"⥰\";\nvar rpar = \")\";\nvar rpargt = \"⦔\";\nvar rppolint = \"⨒\";\nvar rrarr = \"⇉\";\nvar Rrightarrow = \"⇛\";\nvar rsaquo = \"›\";\nvar rscr = \"𝓇\";\nvar Rscr = \"ℛ\";\nvar rsh = \"↱\";\nvar Rsh = \"↱\";\nvar rsqb = \"]\";\nvar rsquo = \"’\";\nvar rsquor = \"’\";\nvar rthree = \"⋌\";\nvar rtimes = \"⋊\";\nvar rtri = \"▹\";\nvar rtrie = \"⊵\";\nvar rtrif = \"▸\";\nvar rtriltri = \"⧎\";\nvar RuleDelayed = \"⧴\";\nvar ruluhar = \"⥨\";\nvar rx = \"℞\";\nvar Sacute = \"Ś\";\nvar sacute = \"ś\";\nvar sbquo = \"‚\";\nvar scap = \"⪸\";\nvar Scaron = \"Š\";\nvar scaron = \"š\";\nvar Sc = \"⪼\";\nvar sc = \"≻\";\nvar sccue = \"≽\";\nvar sce = \"⪰\";\nvar scE = \"⪴\";\nvar Scedil = \"Ş\";\nvar scedil = \"ş\";\nvar Scirc = \"Ŝ\";\nvar scirc = \"ŝ\";\nvar scnap = \"⪺\";\nvar scnE = \"⪶\";\nvar scnsim = \"⋩\";\nvar scpolint = \"⨓\";\nvar scsim = \"≿\";\nvar Scy = \"С\";\nvar scy = \"с\";\nvar sdotb = \"⊡\";\nvar sdot = \"⋅\";\nvar sdote = \"⩦\";\nvar searhk = \"⤥\";\nvar searr = \"↘\";\nvar seArr = \"⇘\";\nvar searrow = \"↘\";\nvar sect$1 = \"§\";\nvar semi = \";\";\nvar seswar = \"⤩\";\nvar setminus = \"∖\";\nvar setmn = \"∖\";\nvar sext = \"✶\";\nvar Sfr = \"𝔖\";\nvar sfr = \"𝔰\";\nvar sfrown = \"⌢\";\nvar sharp = \"♯\";\nvar SHCHcy = \"Щ\";\nvar shchcy = \"щ\";\nvar SHcy = \"Ш\";\nvar shcy = \"ш\";\nvar ShortDownArrow = \"↓\";\nvar ShortLeftArrow = \"←\";\nvar shortmid = \"∣\";\nvar shortparallel = \"∥\";\nvar ShortRightArrow = \"→\";\nvar ShortUpArrow = \"↑\";\nvar shy$1 = \"­\";\nvar Sigma = \"Σ\";\nvar sigma = \"σ\";\nvar sigmaf = \"ς\";\nvar sigmav = \"ς\";\nvar sim = \"∼\";\nvar simdot = \"⩪\";\nvar sime = \"≃\";\nvar simeq = \"≃\";\nvar simg = \"⪞\";\nvar simgE = \"⪠\";\nvar siml = \"⪝\";\nvar simlE = \"⪟\";\nvar simne = \"≆\";\nvar simplus = \"⨤\";\nvar simrarr = \"⥲\";\nvar slarr = \"←\";\nvar SmallCircle = \"∘\";\nvar smallsetminus = \"∖\";\nvar smashp = \"⨳\";\nvar smeparsl = \"⧤\";\nvar smid = \"∣\";\nvar smile = \"⌣\";\nvar smt = \"⪪\";\nvar smte = \"⪬\";\nvar smtes = \"⪬︀\";\nvar SOFTcy = \"Ь\";\nvar softcy = \"ь\";\nvar solbar = \"⌿\";\nvar solb = \"⧄\";\nvar sol = \"/\";\nvar Sopf = \"𝕊\";\nvar sopf = \"𝕤\";\nvar spades = \"♠\";\nvar spadesuit = \"♠\";\nvar spar = \"∥\";\nvar sqcap = \"⊓\";\nvar sqcaps = \"⊓︀\";\nvar sqcup = \"⊔\";\nvar sqcups = \"⊔︀\";\nvar Sqrt = \"√\";\nvar sqsub = \"⊏\";\nvar sqsube = \"⊑\";\nvar sqsubset = \"⊏\";\nvar sqsubseteq = \"⊑\";\nvar sqsup = \"⊐\";\nvar sqsupe = \"⊒\";\nvar sqsupset = \"⊐\";\nvar sqsupseteq = \"⊒\";\nvar square = \"□\";\nvar Square = \"□\";\nvar SquareIntersection = \"⊓\";\nvar SquareSubset = \"⊏\";\nvar SquareSubsetEqual = \"⊑\";\nvar SquareSuperset = \"⊐\";\nvar SquareSupersetEqual = \"⊒\";\nvar SquareUnion = \"⊔\";\nvar squarf = \"▪\";\nvar squ = \"□\";\nvar squf = \"▪\";\nvar srarr = \"→\";\nvar Sscr = \"𝒮\";\nvar sscr = \"𝓈\";\nvar ssetmn = \"∖\";\nvar ssmile = \"⌣\";\nvar sstarf = \"⋆\";\nvar Star = \"⋆\";\nvar star = \"☆\";\nvar starf = \"★\";\nvar straightepsilon = \"ϵ\";\nvar straightphi = \"ϕ\";\nvar strns = \"¯\";\nvar sub = \"⊂\";\nvar Sub = \"⋐\";\nvar subdot = \"⪽\";\nvar subE = \"⫅\";\nvar sube = \"⊆\";\nvar subedot = \"⫃\";\nvar submult = \"⫁\";\nvar subnE = \"⫋\";\nvar subne = \"⊊\";\nvar subplus = \"⪿\";\nvar subrarr = \"⥹\";\nvar subset = \"⊂\";\nvar Subset = \"⋐\";\nvar subseteq = \"⊆\";\nvar subseteqq = \"⫅\";\nvar SubsetEqual = \"⊆\";\nvar subsetneq = \"⊊\";\nvar subsetneqq = \"⫋\";\nvar subsim = \"⫇\";\nvar subsub = \"⫕\";\nvar subsup = \"⫓\";\nvar succapprox = \"⪸\";\nvar succ = \"≻\";\nvar succcurlyeq = \"≽\";\nvar Succeeds = \"≻\";\nvar SucceedsEqual = \"⪰\";\nvar SucceedsSlantEqual = \"≽\";\nvar SucceedsTilde = \"≿\";\nvar succeq = \"⪰\";\nvar succnapprox = \"⪺\";\nvar succneqq = \"⪶\";\nvar succnsim = \"⋩\";\nvar succsim = \"≿\";\nvar SuchThat = \"∋\";\nvar sum = \"∑\";\nvar Sum = \"∑\";\nvar sung = \"♪\";\nvar sup1$1 = \"¹\";\nvar sup2$1 = \"²\";\nvar sup3$1 = \"³\";\nvar sup = \"⊃\";\nvar Sup = \"⋑\";\nvar supdot = \"⪾\";\nvar supdsub = \"⫘\";\nvar supE = \"⫆\";\nvar supe = \"⊇\";\nvar supedot = \"⫄\";\nvar Superset = \"⊃\";\nvar SupersetEqual = \"⊇\";\nvar suphsol = \"⟉\";\nvar suphsub = \"⫗\";\nvar suplarr = \"⥻\";\nvar supmult = \"⫂\";\nvar supnE = \"⫌\";\nvar supne = \"⊋\";\nvar supplus = \"⫀\";\nvar supset = \"⊃\";\nvar Supset = \"⋑\";\nvar supseteq = \"⊇\";\nvar supseteqq = \"⫆\";\nvar supsetneq = \"⊋\";\nvar supsetneqq = \"⫌\";\nvar supsim = \"⫈\";\nvar supsub = \"⫔\";\nvar supsup = \"⫖\";\nvar swarhk = \"⤦\";\nvar swarr = \"↙\";\nvar swArr = \"⇙\";\nvar swarrow = \"↙\";\nvar swnwar = \"⤪\";\nvar szlig$1 = \"ß\";\nvar Tab = \"\\t\";\nvar target = \"⌖\";\nvar Tau = \"Τ\";\nvar tau = \"τ\";\nvar tbrk = \"⎴\";\nvar Tcaron = \"Ť\";\nvar tcaron = \"ť\";\nvar Tcedil = \"Ţ\";\nvar tcedil = \"ţ\";\nvar Tcy = \"Т\";\nvar tcy = \"т\";\nvar tdot = \"⃛\";\nvar telrec = \"⌕\";\nvar Tfr = \"𝔗\";\nvar tfr = \"𝔱\";\nvar there4 = \"∴\";\nvar therefore = \"∴\";\nvar Therefore = \"∴\";\nvar Theta = \"Θ\";\nvar theta = \"θ\";\nvar thetasym = \"ϑ\";\nvar thetav = \"ϑ\";\nvar thickapprox = \"≈\";\nvar thicksim = \"∼\";\nvar ThickSpace = \"  \";\nvar ThinSpace = \" \";\nvar thinsp = \" \";\nvar thkap = \"≈\";\nvar thksim = \"∼\";\nvar THORN$1 = \"Þ\";\nvar thorn$1 = \"þ\";\nvar tilde = \"˜\";\nvar Tilde = \"∼\";\nvar TildeEqual = \"≃\";\nvar TildeFullEqual = \"≅\";\nvar TildeTilde = \"≈\";\nvar timesbar = \"⨱\";\nvar timesb = \"⊠\";\nvar times$1 = \"×\";\nvar timesd = \"⨰\";\nvar tint = \"∭\";\nvar toea = \"⤨\";\nvar topbot = \"⌶\";\nvar topcir = \"⫱\";\nvar top = \"⊤\";\nvar Topf = \"𝕋\";\nvar topf = \"𝕥\";\nvar topfork = \"⫚\";\nvar tosa = \"⤩\";\nvar tprime = \"‴\";\nvar trade = \"™\";\nvar TRADE = \"™\";\nvar triangle = \"▵\";\nvar triangledown = \"▿\";\nvar triangleleft = \"◃\";\nvar trianglelefteq = \"⊴\";\nvar triangleq = \"≜\";\nvar triangleright = \"▹\";\nvar trianglerighteq = \"⊵\";\nvar tridot = \"◬\";\nvar trie = \"≜\";\nvar triminus = \"⨺\";\nvar TripleDot = \"⃛\";\nvar triplus = \"⨹\";\nvar trisb = \"⧍\";\nvar tritime = \"⨻\";\nvar trpezium = \"⏢\";\nvar Tscr = \"𝒯\";\nvar tscr = \"𝓉\";\nvar TScy = \"Ц\";\nvar tscy = \"ц\";\nvar TSHcy = \"Ћ\";\nvar tshcy = \"ћ\";\nvar Tstrok = \"Ŧ\";\nvar tstrok = \"ŧ\";\nvar twixt = \"≬\";\nvar twoheadleftarrow = \"↞\";\nvar twoheadrightarrow = \"↠\";\nvar Uacute$1 = \"Ú\";\nvar uacute$1 = \"ú\";\nvar uarr = \"↑\";\nvar Uarr = \"↟\";\nvar uArr = \"⇑\";\nvar Uarrocir = \"⥉\";\nvar Ubrcy = \"Ў\";\nvar ubrcy = \"ў\";\nvar Ubreve = \"Ŭ\";\nvar ubreve = \"ŭ\";\nvar Ucirc$1 = \"Û\";\nvar ucirc$1 = \"û\";\nvar Ucy = \"У\";\nvar ucy = \"у\";\nvar udarr = \"⇅\";\nvar Udblac = \"Ű\";\nvar udblac = \"ű\";\nvar udhar = \"⥮\";\nvar ufisht = \"⥾\";\nvar Ufr = \"𝔘\";\nvar ufr = \"𝔲\";\nvar Ugrave$1 = \"Ù\";\nvar ugrave$1 = \"ù\";\nvar uHar = \"⥣\";\nvar uharl = \"↿\";\nvar uharr = \"↾\";\nvar uhblk = \"▀\";\nvar ulcorn = \"⌜\";\nvar ulcorner = \"⌜\";\nvar ulcrop = \"⌏\";\nvar ultri = \"◸\";\nvar Umacr = \"Ū\";\nvar umacr = \"ū\";\nvar uml$1 = \"¨\";\nvar UnderBar = \"_\";\nvar UnderBrace = \"⏟\";\nvar UnderBracket = \"⎵\";\nvar UnderParenthesis = \"⏝\";\nvar Union = \"⋃\";\nvar UnionPlus = \"⊎\";\nvar Uogon = \"Ų\";\nvar uogon = \"ų\";\nvar Uopf = \"𝕌\";\nvar uopf = \"𝕦\";\nvar UpArrowBar = \"⤒\";\nvar uparrow = \"↑\";\nvar UpArrow = \"↑\";\nvar Uparrow = \"⇑\";\nvar UpArrowDownArrow = \"⇅\";\nvar updownarrow = \"↕\";\nvar UpDownArrow = \"↕\";\nvar Updownarrow = \"⇕\";\nvar UpEquilibrium = \"⥮\";\nvar upharpoonleft = \"↿\";\nvar upharpoonright = \"↾\";\nvar uplus = \"⊎\";\nvar UpperLeftArrow = \"↖\";\nvar UpperRightArrow = \"↗\";\nvar upsi = \"υ\";\nvar Upsi = \"ϒ\";\nvar upsih = \"ϒ\";\nvar Upsilon = \"Υ\";\nvar upsilon = \"υ\";\nvar UpTeeArrow = \"↥\";\nvar UpTee = \"⊥\";\nvar upuparrows = \"⇈\";\nvar urcorn = \"⌝\";\nvar urcorner = \"⌝\";\nvar urcrop = \"⌎\";\nvar Uring = \"Ů\";\nvar uring = \"ů\";\nvar urtri = \"◹\";\nvar Uscr = \"𝒰\";\nvar uscr = \"𝓊\";\nvar utdot = \"⋰\";\nvar Utilde = \"Ũ\";\nvar utilde = \"ũ\";\nvar utri = \"▵\";\nvar utrif = \"▴\";\nvar uuarr = \"⇈\";\nvar Uuml$1 = \"Ü\";\nvar uuml$1 = \"ü\";\nvar uwangle = \"⦧\";\nvar vangrt = \"⦜\";\nvar varepsilon = \"ϵ\";\nvar varkappa = \"ϰ\";\nvar varnothing = \"∅\";\nvar varphi = \"ϕ\";\nvar varpi = \"ϖ\";\nvar varpropto = \"∝\";\nvar varr = \"↕\";\nvar vArr = \"⇕\";\nvar varrho = \"ϱ\";\nvar varsigma = \"ς\";\nvar varsubsetneq = \"⊊︀\";\nvar varsubsetneqq = \"⫋︀\";\nvar varsupsetneq = \"⊋︀\";\nvar varsupsetneqq = \"⫌︀\";\nvar vartheta = \"ϑ\";\nvar vartriangleleft = \"⊲\";\nvar vartriangleright = \"⊳\";\nvar vBar = \"⫨\";\nvar Vbar = \"⫫\";\nvar vBarv = \"⫩\";\nvar Vcy = \"В\";\nvar vcy = \"в\";\nvar vdash = \"⊢\";\nvar vDash = \"⊨\";\nvar Vdash = \"⊩\";\nvar VDash = \"⊫\";\nvar Vdashl = \"⫦\";\nvar veebar = \"⊻\";\nvar vee = \"∨\";\nvar Vee = \"⋁\";\nvar veeeq = \"≚\";\nvar vellip = \"⋮\";\nvar verbar = \"|\";\nvar Verbar = \"‖\";\nvar vert = \"|\";\nvar Vert = \"‖\";\nvar VerticalBar = \"∣\";\nvar VerticalLine = \"|\";\nvar VerticalSeparator = \"❘\";\nvar VerticalTilde = \"≀\";\nvar VeryThinSpace = \" \";\nvar Vfr = \"𝔙\";\nvar vfr = \"𝔳\";\nvar vltri = \"⊲\";\nvar vnsub = \"⊂⃒\";\nvar vnsup = \"⊃⃒\";\nvar Vopf = \"𝕍\";\nvar vopf = \"𝕧\";\nvar vprop = \"∝\";\nvar vrtri = \"⊳\";\nvar Vscr = \"𝒱\";\nvar vscr = \"𝓋\";\nvar vsubnE = \"⫋︀\";\nvar vsubne = \"⊊︀\";\nvar vsupnE = \"⫌︀\";\nvar vsupne = \"⊋︀\";\nvar Vvdash = \"⊪\";\nvar vzigzag = \"⦚\";\nvar Wcirc = \"Ŵ\";\nvar wcirc = \"ŵ\";\nvar wedbar = \"⩟\";\nvar wedge = \"∧\";\nvar Wedge = \"⋀\";\nvar wedgeq = \"≙\";\nvar weierp = \"℘\";\nvar Wfr = \"𝔚\";\nvar wfr = \"𝔴\";\nvar Wopf = \"𝕎\";\nvar wopf = \"𝕨\";\nvar wp = \"℘\";\nvar wr = \"≀\";\nvar wreath = \"≀\";\nvar Wscr = \"𝒲\";\nvar wscr = \"𝓌\";\nvar xcap = \"⋂\";\nvar xcirc = \"◯\";\nvar xcup = \"⋃\";\nvar xdtri = \"▽\";\nvar Xfr = \"𝔛\";\nvar xfr = \"𝔵\";\nvar xharr = \"⟷\";\nvar xhArr = \"⟺\";\nvar Xi = \"Ξ\";\nvar xi = \"ξ\";\nvar xlarr = \"⟵\";\nvar xlArr = \"⟸\";\nvar xmap = \"⟼\";\nvar xnis = \"⋻\";\nvar xodot = \"⨀\";\nvar Xopf = \"𝕏\";\nvar xopf = \"𝕩\";\nvar xoplus = \"⨁\";\nvar xotime = \"⨂\";\nvar xrarr = \"⟶\";\nvar xrArr = \"⟹\";\nvar Xscr = \"𝒳\";\nvar xscr = \"𝓍\";\nvar xsqcup = \"⨆\";\nvar xuplus = \"⨄\";\nvar xutri = \"△\";\nvar xvee = \"⋁\";\nvar xwedge = \"⋀\";\nvar Yacute$1 = \"Ý\";\nvar yacute$1 = \"ý\";\nvar YAcy = \"Я\";\nvar yacy = \"я\";\nvar Ycirc = \"Ŷ\";\nvar ycirc = \"ŷ\";\nvar Ycy = \"Ы\";\nvar ycy = \"ы\";\nvar yen$1 = \"¥\";\nvar Yfr = \"𝔜\";\nvar yfr = \"𝔶\";\nvar YIcy = \"Ї\";\nvar yicy = \"ї\";\nvar Yopf = \"𝕐\";\nvar yopf = \"𝕪\";\nvar Yscr = \"𝒴\";\nvar yscr = \"𝓎\";\nvar YUcy = \"Ю\";\nvar yucy = \"ю\";\nvar yuml$1 = \"ÿ\";\nvar Yuml = \"Ÿ\";\nvar Zacute = \"Ź\";\nvar zacute = \"ź\";\nvar Zcaron = \"Ž\";\nvar zcaron = \"ž\";\nvar Zcy = \"З\";\nvar zcy = \"з\";\nvar Zdot = \"Ż\";\nvar zdot = \"ż\";\nvar zeetrf = \"ℨ\";\nvar ZeroWidthSpace = \"​\";\nvar Zeta = \"Ζ\";\nvar zeta = \"ζ\";\nvar zfr = \"𝔷\";\nvar Zfr = \"ℨ\";\nvar ZHcy = \"Ж\";\nvar zhcy = \"ж\";\nvar zigrarr = \"⇝\";\nvar zopf = \"𝕫\";\nvar Zopf = \"ℤ\";\nvar Zscr = \"𝒵\";\nvar zscr = \"𝓏\";\nvar zwj = \"‍\";\nvar zwnj = \"‌\";\nvar require$$1$1 = {\n\tAacute: Aacute$1,\n\taacute: aacute$1,\n\tAbreve: Abreve,\n\tabreve: abreve,\n\tac: ac,\n\tacd: acd,\n\tacE: acE,\n\tAcirc: Acirc$1,\n\tacirc: acirc$1,\n\tacute: acute$1,\n\tAcy: Acy,\n\tacy: acy,\n\tAElig: AElig$1,\n\taelig: aelig$1,\n\taf: af,\n\tAfr: Afr,\n\tafr: afr,\n\tAgrave: Agrave$1,\n\tagrave: agrave$1,\n\talefsym: alefsym,\n\taleph: aleph,\n\tAlpha: Alpha,\n\talpha: alpha,\n\tAmacr: Amacr,\n\tamacr: amacr,\n\tamalg: amalg,\n\tamp: amp$2,\n\tAMP: AMP$1,\n\tandand: andand,\n\tAnd: And,\n\tand: and,\n\tandd: andd,\n\tandslope: andslope,\n\tandv: andv,\n\tang: ang,\n\tange: ange,\n\tangle: angle,\n\tangmsdaa: angmsdaa,\n\tangmsdab: angmsdab,\n\tangmsdac: angmsdac,\n\tangmsdad: angmsdad,\n\tangmsdae: angmsdae,\n\tangmsdaf: angmsdaf,\n\tangmsdag: angmsdag,\n\tangmsdah: angmsdah,\n\tangmsd: angmsd,\n\tangrt: angrt,\n\tangrtvb: angrtvb,\n\tangrtvbd: angrtvbd,\n\tangsph: angsph,\n\tangst: angst,\n\tangzarr: angzarr,\n\tAogon: Aogon,\n\taogon: aogon,\n\tAopf: Aopf,\n\taopf: aopf,\n\tapacir: apacir,\n\tap: ap,\n\tapE: apE,\n\tape: ape,\n\tapid: apid,\n\tapos: apos$1,\n\tApplyFunction: ApplyFunction,\n\tapprox: approx,\n\tapproxeq: approxeq,\n\tAring: Aring$1,\n\taring: aring$1,\n\tAscr: Ascr,\n\tascr: ascr,\n\tAssign: Assign,\n\tast: ast,\n\tasymp: asymp,\n\tasympeq: asympeq,\n\tAtilde: Atilde$1,\n\tatilde: atilde$1,\n\tAuml: Auml$1,\n\tauml: auml$1,\n\tawconint: awconint,\n\tawint: awint,\n\tbackcong: backcong,\n\tbackepsilon: backepsilon,\n\tbackprime: backprime,\n\tbacksim: backsim,\n\tbacksimeq: backsimeq,\n\tBackslash: Backslash,\n\tBarv: Barv,\n\tbarvee: barvee,\n\tbarwed: barwed,\n\tBarwed: Barwed,\n\tbarwedge: barwedge,\n\tbbrk: bbrk,\n\tbbrktbrk: bbrktbrk,\n\tbcong: bcong,\n\tBcy: Bcy,\n\tbcy: bcy,\n\tbdquo: bdquo,\n\tbecaus: becaus,\n\tbecause: because,\n\tBecause: Because,\n\tbemptyv: bemptyv,\n\tbepsi: bepsi,\n\tbernou: bernou,\n\tBernoullis: Bernoullis,\n\tBeta: Beta,\n\tbeta: beta,\n\tbeth: beth,\n\tbetween: between,\n\tBfr: Bfr,\n\tbfr: bfr,\n\tbigcap: bigcap,\n\tbigcirc: bigcirc,\n\tbigcup: bigcup,\n\tbigodot: bigodot,\n\tbigoplus: bigoplus,\n\tbigotimes: bigotimes,\n\tbigsqcup: bigsqcup,\n\tbigstar: bigstar,\n\tbigtriangledown: bigtriangledown,\n\tbigtriangleup: bigtriangleup,\n\tbiguplus: biguplus,\n\tbigvee: bigvee,\n\tbigwedge: bigwedge,\n\tbkarow: bkarow,\n\tblacklozenge: blacklozenge,\n\tblacksquare: blacksquare,\n\tblacktriangle: blacktriangle,\n\tblacktriangledown: blacktriangledown,\n\tblacktriangleleft: blacktriangleleft,\n\tblacktriangleright: blacktriangleright,\n\tblank: blank,\n\tblk12: blk12,\n\tblk14: blk14,\n\tblk34: blk34,\n\tblock: block,\n\tbne: bne,\n\tbnequiv: bnequiv,\n\tbNot: bNot,\n\tbnot: bnot,\n\tBopf: Bopf,\n\tbopf: bopf,\n\tbot: bot,\n\tbottom: bottom,\n\tbowtie: bowtie,\n\tboxbox: boxbox,\n\tboxdl: boxdl,\n\tboxdL: boxdL,\n\tboxDl: boxDl,\n\tboxDL: boxDL,\n\tboxdr: boxdr,\n\tboxdR: boxdR,\n\tboxDr: boxDr,\n\tboxDR: boxDR,\n\tboxh: boxh,\n\tboxH: boxH,\n\tboxhd: boxhd,\n\tboxHd: boxHd,\n\tboxhD: boxhD,\n\tboxHD: boxHD,\n\tboxhu: boxhu,\n\tboxHu: boxHu,\n\tboxhU: boxhU,\n\tboxHU: boxHU,\n\tboxminus: boxminus,\n\tboxplus: boxplus,\n\tboxtimes: boxtimes,\n\tboxul: boxul,\n\tboxuL: boxuL,\n\tboxUl: boxUl,\n\tboxUL: boxUL,\n\tboxur: boxur,\n\tboxuR: boxuR,\n\tboxUr: boxUr,\n\tboxUR: boxUR,\n\tboxv: boxv,\n\tboxV: boxV,\n\tboxvh: boxvh,\n\tboxvH: boxvH,\n\tboxVh: boxVh,\n\tboxVH: boxVH,\n\tboxvl: boxvl,\n\tboxvL: boxvL,\n\tboxVl: boxVl,\n\tboxVL: boxVL,\n\tboxvr: boxvr,\n\tboxvR: boxvR,\n\tboxVr: boxVr,\n\tboxVR: boxVR,\n\tbprime: bprime,\n\tbreve: breve,\n\tBreve: Breve,\n\tbrvbar: brvbar$1,\n\tbscr: bscr,\n\tBscr: Bscr,\n\tbsemi: bsemi,\n\tbsim: bsim,\n\tbsime: bsime,\n\tbsolb: bsolb,\n\tbsol: bsol,\n\tbsolhsub: bsolhsub,\n\tbull: bull,\n\tbullet: bullet,\n\tbump: bump,\n\tbumpE: bumpE,\n\tbumpe: bumpe,\n\tBumpeq: Bumpeq,\n\tbumpeq: bumpeq,\n\tCacute: Cacute,\n\tcacute: cacute,\n\tcapand: capand,\n\tcapbrcup: capbrcup,\n\tcapcap: capcap,\n\tcap: cap,\n\tCap: Cap,\n\tcapcup: capcup,\n\tcapdot: capdot,\n\tCapitalDifferentialD: CapitalDifferentialD,\n\tcaps: caps,\n\tcaret: caret,\n\tcaron: caron,\n\tCayleys: Cayleys,\n\tccaps: ccaps,\n\tCcaron: Ccaron,\n\tccaron: ccaron,\n\tCcedil: Ccedil$1,\n\tccedil: ccedil$1,\n\tCcirc: Ccirc,\n\tccirc: ccirc,\n\tCconint: Cconint,\n\tccups: ccups,\n\tccupssm: ccupssm,\n\tCdot: Cdot,\n\tcdot: cdot,\n\tcedil: cedil$1,\n\tCedilla: Cedilla,\n\tcemptyv: cemptyv,\n\tcent: cent$1,\n\tcenterdot: centerdot,\n\tCenterDot: CenterDot,\n\tcfr: cfr,\n\tCfr: Cfr,\n\tCHcy: CHcy,\n\tchcy: chcy,\n\tcheck: check,\n\tcheckmark: checkmark,\n\tChi: Chi,\n\tchi: chi,\n\tcirc: circ,\n\tcirceq: circeq,\n\tcirclearrowleft: circlearrowleft,\n\tcirclearrowright: circlearrowright,\n\tcircledast: circledast,\n\tcircledcirc: circledcirc,\n\tcircleddash: circleddash,\n\tCircleDot: CircleDot,\n\tcircledR: circledR,\n\tcircledS: circledS,\n\tCircleMinus: CircleMinus,\n\tCirclePlus: CirclePlus,\n\tCircleTimes: CircleTimes,\n\tcir: cir,\n\tcirE: cirE,\n\tcire: cire,\n\tcirfnint: cirfnint,\n\tcirmid: cirmid,\n\tcirscir: cirscir,\n\tClockwiseContourIntegral: ClockwiseContourIntegral,\n\tCloseCurlyDoubleQuote: CloseCurlyDoubleQuote,\n\tCloseCurlyQuote: CloseCurlyQuote,\n\tclubs: clubs,\n\tclubsuit: clubsuit,\n\tcolon: colon,\n\tColon: Colon,\n\tColone: Colone,\n\tcolone: colone,\n\tcoloneq: coloneq,\n\tcomma: comma,\n\tcommat: commat,\n\tcomp: comp,\n\tcompfn: compfn,\n\tcomplement: complement,\n\tcomplexes: complexes,\n\tcong: cong,\n\tcongdot: congdot,\n\tCongruent: Congruent,\n\tconint: conint,\n\tConint: Conint,\n\tContourIntegral: ContourIntegral,\n\tcopf: copf,\n\tCopf: Copf,\n\tcoprod: coprod,\n\tCoproduct: Coproduct,\n\tcopy: copy$1,\n\tCOPY: COPY$1,\n\tcopysr: copysr,\n\tCounterClockwiseContourIntegral: CounterClockwiseContourIntegral,\n\tcrarr: crarr,\n\tcross: cross,\n\tCross: Cross,\n\tCscr: Cscr,\n\tcscr: cscr,\n\tcsub: csub,\n\tcsube: csube,\n\tcsup: csup,\n\tcsupe: csupe,\n\tctdot: ctdot,\n\tcudarrl: cudarrl,\n\tcudarrr: cudarrr,\n\tcuepr: cuepr,\n\tcuesc: cuesc,\n\tcularr: cularr,\n\tcularrp: cularrp,\n\tcupbrcap: cupbrcap,\n\tcupcap: cupcap,\n\tCupCap: CupCap,\n\tcup: cup,\n\tCup: Cup,\n\tcupcup: cupcup,\n\tcupdot: cupdot,\n\tcupor: cupor,\n\tcups: cups,\n\tcurarr: curarr,\n\tcurarrm: curarrm,\n\tcurlyeqprec: curlyeqprec,\n\tcurlyeqsucc: curlyeqsucc,\n\tcurlyvee: curlyvee,\n\tcurlywedge: curlywedge,\n\tcurren: curren$1,\n\tcurvearrowleft: curvearrowleft,\n\tcurvearrowright: curvearrowright,\n\tcuvee: cuvee,\n\tcuwed: cuwed,\n\tcwconint: cwconint,\n\tcwint: cwint,\n\tcylcty: cylcty,\n\tdagger: dagger,\n\tDagger: Dagger,\n\tdaleth: daleth,\n\tdarr: darr,\n\tDarr: Darr,\n\tdArr: dArr,\n\tdash: dash,\n\tDashv: Dashv,\n\tdashv: dashv,\n\tdbkarow: dbkarow,\n\tdblac: dblac,\n\tDcaron: Dcaron,\n\tdcaron: dcaron,\n\tDcy: Dcy,\n\tdcy: dcy,\n\tddagger: ddagger,\n\tddarr: ddarr,\n\tDD: DD,\n\tdd: dd,\n\tDDotrahd: DDotrahd,\n\tddotseq: ddotseq,\n\tdeg: deg$1,\n\tDel: Del,\n\tDelta: Delta,\n\tdelta: delta,\n\tdemptyv: demptyv,\n\tdfisht: dfisht,\n\tDfr: Dfr,\n\tdfr: dfr,\n\tdHar: dHar,\n\tdharl: dharl,\n\tdharr: dharr,\n\tDiacriticalAcute: DiacriticalAcute,\n\tDiacriticalDot: DiacriticalDot,\n\tDiacriticalDoubleAcute: DiacriticalDoubleAcute,\n\tDiacriticalGrave: DiacriticalGrave,\n\tDiacriticalTilde: DiacriticalTilde,\n\tdiam: diam,\n\tdiamond: diamond,\n\tDiamond: Diamond,\n\tdiamondsuit: diamondsuit,\n\tdiams: diams,\n\tdie: die,\n\tDifferentialD: DifferentialD,\n\tdigamma: digamma,\n\tdisin: disin,\n\tdiv: div,\n\tdivide: divide$1,\n\tdivideontimes: divideontimes,\n\tdivonx: divonx,\n\tDJcy: DJcy,\n\tdjcy: djcy,\n\tdlcorn: dlcorn,\n\tdlcrop: dlcrop,\n\tdollar: dollar,\n\tDopf: Dopf,\n\tdopf: dopf,\n\tDot: Dot,\n\tdot: dot,\n\tDotDot: DotDot,\n\tdoteq: doteq,\n\tdoteqdot: doteqdot,\n\tDotEqual: DotEqual,\n\tdotminus: dotminus,\n\tdotplus: dotplus,\n\tdotsquare: dotsquare,\n\tdoublebarwedge: doublebarwedge,\n\tDoubleContourIntegral: DoubleContourIntegral,\n\tDoubleDot: DoubleDot,\n\tDoubleDownArrow: DoubleDownArrow,\n\tDoubleLeftArrow: DoubleLeftArrow,\n\tDoubleLeftRightArrow: DoubleLeftRightArrow,\n\tDoubleLeftTee: DoubleLeftTee,\n\tDoubleLongLeftArrow: DoubleLongLeftArrow,\n\tDoubleLongLeftRightArrow: DoubleLongLeftRightArrow,\n\tDoubleLongRightArrow: DoubleLongRightArrow,\n\tDoubleRightArrow: DoubleRightArrow,\n\tDoubleRightTee: DoubleRightTee,\n\tDoubleUpArrow: DoubleUpArrow,\n\tDoubleUpDownArrow: DoubleUpDownArrow,\n\tDoubleVerticalBar: DoubleVerticalBar,\n\tDownArrowBar: DownArrowBar,\n\tdownarrow: downarrow,\n\tDownArrow: DownArrow,\n\tDownarrow: Downarrow,\n\tDownArrowUpArrow: DownArrowUpArrow,\n\tDownBreve: DownBreve,\n\tdowndownarrows: downdownarrows,\n\tdownharpoonleft: downharpoonleft,\n\tdownharpoonright: downharpoonright,\n\tDownLeftRightVector: DownLeftRightVector,\n\tDownLeftTeeVector: DownLeftTeeVector,\n\tDownLeftVectorBar: DownLeftVectorBar,\n\tDownLeftVector: DownLeftVector,\n\tDownRightTeeVector: DownRightTeeVector,\n\tDownRightVectorBar: DownRightVectorBar,\n\tDownRightVector: DownRightVector,\n\tDownTeeArrow: DownTeeArrow,\n\tDownTee: DownTee,\n\tdrbkarow: drbkarow,\n\tdrcorn: drcorn,\n\tdrcrop: drcrop,\n\tDscr: Dscr,\n\tdscr: dscr,\n\tDScy: DScy,\n\tdscy: dscy,\n\tdsol: dsol,\n\tDstrok: Dstrok,\n\tdstrok: dstrok,\n\tdtdot: dtdot,\n\tdtri: dtri,\n\tdtrif: dtrif,\n\tduarr: duarr,\n\tduhar: duhar,\n\tdwangle: dwangle,\n\tDZcy: DZcy,\n\tdzcy: dzcy,\n\tdzigrarr: dzigrarr,\n\tEacute: Eacute$1,\n\teacute: eacute$1,\n\teaster: easter,\n\tEcaron: Ecaron,\n\tecaron: ecaron,\n\tEcirc: Ecirc$1,\n\tecirc: ecirc$1,\n\tecir: ecir,\n\tecolon: ecolon,\n\tEcy: Ecy,\n\tecy: ecy,\n\teDDot: eDDot,\n\tEdot: Edot,\n\tedot: edot,\n\teDot: eDot,\n\tee: ee,\n\tefDot: efDot,\n\tEfr: Efr,\n\tefr: efr,\n\teg: eg,\n\tEgrave: Egrave$1,\n\tegrave: egrave$1,\n\tegs: egs,\n\tegsdot: egsdot,\n\tel: el,\n\tElement: Element$1,\n\telinters: elinters,\n\tell: ell,\n\tels: els,\n\telsdot: elsdot,\n\tEmacr: Emacr,\n\temacr: emacr,\n\tempty: empty,\n\temptyset: emptyset,\n\tEmptySmallSquare: EmptySmallSquare,\n\temptyv: emptyv,\n\tEmptyVerySmallSquare: EmptyVerySmallSquare,\n\temsp13: emsp13,\n\temsp14: emsp14,\n\temsp: emsp,\n\tENG: ENG,\n\teng: eng,\n\tensp: ensp,\n\tEogon: Eogon,\n\teogon: eogon,\n\tEopf: Eopf,\n\teopf: eopf,\n\tepar: epar,\n\teparsl: eparsl,\n\teplus: eplus,\n\tepsi: epsi,\n\tEpsilon: Epsilon,\n\tepsilon: epsilon,\n\tepsiv: epsiv,\n\teqcirc: eqcirc,\n\teqcolon: eqcolon,\n\teqsim: eqsim,\n\teqslantgtr: eqslantgtr,\n\teqslantless: eqslantless,\n\tEqual: Equal,\n\tequals: equals,\n\tEqualTilde: EqualTilde,\n\tequest: equest,\n\tEquilibrium: Equilibrium,\n\tequiv: equiv,\n\tequivDD: equivDD,\n\teqvparsl: eqvparsl,\n\terarr: erarr,\n\terDot: erDot,\n\tescr: escr,\n\tEscr: Escr,\n\tesdot: esdot,\n\tEsim: Esim,\n\tesim: esim,\n\tEta: Eta,\n\teta: eta,\n\tETH: ETH$1,\n\teth: eth$1,\n\tEuml: Euml$1,\n\teuml: euml$1,\n\teuro: euro,\n\texcl: excl,\n\texist: exist,\n\tExists: Exists,\n\texpectation: expectation,\n\texponentiale: exponentiale,\n\tExponentialE: ExponentialE,\n\tfallingdotseq: fallingdotseq,\n\tFcy: Fcy,\n\tfcy: fcy,\n\tfemale: female,\n\tffilig: ffilig,\n\tfflig: fflig,\n\tffllig: ffllig,\n\tFfr: Ffr,\n\tffr: ffr,\n\tfilig: filig,\n\tFilledSmallSquare: FilledSmallSquare,\n\tFilledVerySmallSquare: FilledVerySmallSquare,\n\tfjlig: fjlig,\n\tflat: flat,\n\tfllig: fllig,\n\tfltns: fltns,\n\tfnof: fnof,\n\tFopf: Fopf,\n\tfopf: fopf,\n\tforall: forall,\n\tForAll: ForAll,\n\tfork: fork,\n\tforkv: forkv,\n\tFouriertrf: Fouriertrf,\n\tfpartint: fpartint,\n\tfrac12: frac12$1,\n\tfrac13: frac13,\n\tfrac14: frac14$1,\n\tfrac15: frac15,\n\tfrac16: frac16,\n\tfrac18: frac18,\n\tfrac23: frac23,\n\tfrac25: frac25,\n\tfrac34: frac34$1,\n\tfrac35: frac35,\n\tfrac38: frac38,\n\tfrac45: frac45,\n\tfrac56: frac56,\n\tfrac58: frac58,\n\tfrac78: frac78,\n\tfrasl: frasl,\n\tfrown: frown,\n\tfscr: fscr,\n\tFscr: Fscr,\n\tgacute: gacute,\n\tGamma: Gamma,\n\tgamma: gamma,\n\tGammad: Gammad,\n\tgammad: gammad,\n\tgap: gap,\n\tGbreve: Gbreve,\n\tgbreve: gbreve,\n\tGcedil: Gcedil,\n\tGcirc: Gcirc,\n\tgcirc: gcirc,\n\tGcy: Gcy,\n\tgcy: gcy,\n\tGdot: Gdot,\n\tgdot: gdot,\n\tge: ge,\n\tgE: gE,\n\tgEl: gEl,\n\tgel: gel,\n\tgeq: geq,\n\tgeqq: geqq,\n\tgeqslant: geqslant,\n\tgescc: gescc,\n\tges: ges,\n\tgesdot: gesdot,\n\tgesdoto: gesdoto,\n\tgesdotol: gesdotol,\n\tgesl: gesl,\n\tgesles: gesles,\n\tGfr: Gfr,\n\tgfr: gfr,\n\tgg: gg,\n\tGg: Gg,\n\tggg: ggg,\n\tgimel: gimel,\n\tGJcy: GJcy,\n\tgjcy: gjcy,\n\tgla: gla,\n\tgl: gl,\n\tglE: glE,\n\tglj: glj,\n\tgnap: gnap,\n\tgnapprox: gnapprox,\n\tgne: gne,\n\tgnE: gnE,\n\tgneq: gneq,\n\tgneqq: gneqq,\n\tgnsim: gnsim,\n\tGopf: Gopf,\n\tgopf: gopf,\n\tgrave: grave,\n\tGreaterEqual: GreaterEqual,\n\tGreaterEqualLess: GreaterEqualLess,\n\tGreaterFullEqual: GreaterFullEqual,\n\tGreaterGreater: GreaterGreater,\n\tGreaterLess: GreaterLess,\n\tGreaterSlantEqual: GreaterSlantEqual,\n\tGreaterTilde: GreaterTilde,\n\tGscr: Gscr,\n\tgscr: gscr,\n\tgsim: gsim,\n\tgsime: gsime,\n\tgsiml: gsiml,\n\tgtcc: gtcc,\n\tgtcir: gtcir,\n\tgt: gt$2,\n\tGT: GT$1,\n\tGt: Gt,\n\tgtdot: gtdot,\n\tgtlPar: gtlPar,\n\tgtquest: gtquest,\n\tgtrapprox: gtrapprox,\n\tgtrarr: gtrarr,\n\tgtrdot: gtrdot,\n\tgtreqless: gtreqless,\n\tgtreqqless: gtreqqless,\n\tgtrless: gtrless,\n\tgtrsim: gtrsim,\n\tgvertneqq: gvertneqq,\n\tgvnE: gvnE,\n\tHacek: Hacek,\n\thairsp: hairsp,\n\thalf: half,\n\thamilt: hamilt,\n\tHARDcy: HARDcy,\n\thardcy: hardcy,\n\tharrcir: harrcir,\n\tharr: harr,\n\thArr: hArr,\n\tharrw: harrw,\n\tHat: Hat,\n\thbar: hbar,\n\tHcirc: Hcirc,\n\thcirc: hcirc,\n\thearts: hearts,\n\theartsuit: heartsuit,\n\thellip: hellip,\n\thercon: hercon,\n\thfr: hfr,\n\tHfr: Hfr,\n\tHilbertSpace: HilbertSpace,\n\thksearow: hksearow,\n\thkswarow: hkswarow,\n\thoarr: hoarr,\n\thomtht: homtht,\n\thookleftarrow: hookleftarrow,\n\thookrightarrow: hookrightarrow,\n\thopf: hopf,\n\tHopf: Hopf,\n\thorbar: horbar,\n\tHorizontalLine: HorizontalLine,\n\thscr: hscr,\n\tHscr: Hscr,\n\thslash: hslash,\n\tHstrok: Hstrok,\n\thstrok: hstrok,\n\tHumpDownHump: HumpDownHump,\n\tHumpEqual: HumpEqual,\n\thybull: hybull,\n\thyphen: hyphen,\n\tIacute: Iacute$1,\n\tiacute: iacute$1,\n\tic: ic,\n\tIcirc: Icirc$1,\n\ticirc: icirc$1,\n\tIcy: Icy,\n\ticy: icy,\n\tIdot: Idot,\n\tIEcy: IEcy,\n\tiecy: iecy,\n\tiexcl: iexcl$1,\n\tiff: iff,\n\tifr: ifr,\n\tIfr: Ifr,\n\tIgrave: Igrave$1,\n\tigrave: igrave$1,\n\tii: ii,\n\tiiiint: iiiint,\n\tiiint: iiint,\n\tiinfin: iinfin,\n\tiiota: iiota,\n\tIJlig: IJlig,\n\tijlig: ijlig,\n\tImacr: Imacr,\n\timacr: imacr,\n\timage: image,\n\tImaginaryI: ImaginaryI,\n\timagline: imagline,\n\timagpart: imagpart,\n\timath: imath,\n\tIm: Im,\n\timof: imof,\n\timped: imped,\n\tImplies: Implies,\n\tincare: incare,\n\t\"in\": \"∈\",\n\tinfin: infin,\n\tinfintie: infintie,\n\tinodot: inodot,\n\tintcal: intcal,\n\tint: int,\n\tInt: Int,\n\tintegers: integers,\n\tIntegral: Integral,\n\tintercal: intercal,\n\tIntersection: Intersection,\n\tintlarhk: intlarhk,\n\tintprod: intprod,\n\tInvisibleComma: InvisibleComma,\n\tInvisibleTimes: InvisibleTimes,\n\tIOcy: IOcy,\n\tiocy: iocy,\n\tIogon: Iogon,\n\tiogon: iogon,\n\tIopf: Iopf,\n\tiopf: iopf,\n\tIota: Iota,\n\tiota: iota,\n\tiprod: iprod,\n\tiquest: iquest$1,\n\tiscr: iscr,\n\tIscr: Iscr,\n\tisin: isin,\n\tisindot: isindot,\n\tisinE: isinE,\n\tisins: isins,\n\tisinsv: isinsv,\n\tisinv: isinv,\n\tit: it,\n\tItilde: Itilde,\n\titilde: itilde,\n\tIukcy: Iukcy,\n\tiukcy: iukcy,\n\tIuml: Iuml$1,\n\tiuml: iuml$1,\n\tJcirc: Jcirc,\n\tjcirc: jcirc,\n\tJcy: Jcy,\n\tjcy: jcy,\n\tJfr: Jfr,\n\tjfr: jfr,\n\tjmath: jmath,\n\tJopf: Jopf,\n\tjopf: jopf,\n\tJscr: Jscr,\n\tjscr: jscr,\n\tJsercy: Jsercy,\n\tjsercy: jsercy,\n\tJukcy: Jukcy,\n\tjukcy: jukcy,\n\tKappa: Kappa,\n\tkappa: kappa,\n\tkappav: kappav,\n\tKcedil: Kcedil,\n\tkcedil: kcedil,\n\tKcy: Kcy,\n\tkcy: kcy,\n\tKfr: Kfr,\n\tkfr: kfr,\n\tkgreen: kgreen,\n\tKHcy: KHcy,\n\tkhcy: khcy,\n\tKJcy: KJcy,\n\tkjcy: kjcy,\n\tKopf: Kopf,\n\tkopf: kopf,\n\tKscr: Kscr,\n\tkscr: kscr,\n\tlAarr: lAarr,\n\tLacute: Lacute,\n\tlacute: lacute,\n\tlaemptyv: laemptyv,\n\tlagran: lagran,\n\tLambda: Lambda,\n\tlambda: lambda,\n\tlang: lang,\n\tLang: Lang,\n\tlangd: langd,\n\tlangle: langle,\n\tlap: lap,\n\tLaplacetrf: Laplacetrf,\n\tlaquo: laquo$1,\n\tlarrb: larrb,\n\tlarrbfs: larrbfs,\n\tlarr: larr,\n\tLarr: Larr,\n\tlArr: lArr,\n\tlarrfs: larrfs,\n\tlarrhk: larrhk,\n\tlarrlp: larrlp,\n\tlarrpl: larrpl,\n\tlarrsim: larrsim,\n\tlarrtl: larrtl,\n\tlatail: latail,\n\tlAtail: lAtail,\n\tlat: lat,\n\tlate: late,\n\tlates: lates,\n\tlbarr: lbarr,\n\tlBarr: lBarr,\n\tlbbrk: lbbrk,\n\tlbrace: lbrace,\n\tlbrack: lbrack,\n\tlbrke: lbrke,\n\tlbrksld: lbrksld,\n\tlbrkslu: lbrkslu,\n\tLcaron: Lcaron,\n\tlcaron: lcaron,\n\tLcedil: Lcedil,\n\tlcedil: lcedil,\n\tlceil: lceil,\n\tlcub: lcub,\n\tLcy: Lcy,\n\tlcy: lcy,\n\tldca: ldca,\n\tldquo: ldquo,\n\tldquor: ldquor,\n\tldrdhar: ldrdhar,\n\tldrushar: ldrushar,\n\tldsh: ldsh,\n\tle: le,\n\tlE: lE,\n\tLeftAngleBracket: LeftAngleBracket,\n\tLeftArrowBar: LeftArrowBar,\n\tleftarrow: leftarrow,\n\tLeftArrow: LeftArrow,\n\tLeftarrow: Leftarrow,\n\tLeftArrowRightArrow: LeftArrowRightArrow,\n\tleftarrowtail: leftarrowtail,\n\tLeftCeiling: LeftCeiling,\n\tLeftDoubleBracket: LeftDoubleBracket,\n\tLeftDownTeeVector: LeftDownTeeVector,\n\tLeftDownVectorBar: LeftDownVectorBar,\n\tLeftDownVector: LeftDownVector,\n\tLeftFloor: LeftFloor,\n\tleftharpoondown: leftharpoondown,\n\tleftharpoonup: leftharpoonup,\n\tleftleftarrows: leftleftarrows,\n\tleftrightarrow: leftrightarrow,\n\tLeftRightArrow: LeftRightArrow,\n\tLeftrightarrow: Leftrightarrow,\n\tleftrightarrows: leftrightarrows,\n\tleftrightharpoons: leftrightharpoons,\n\tleftrightsquigarrow: leftrightsquigarrow,\n\tLeftRightVector: LeftRightVector,\n\tLeftTeeArrow: LeftTeeArrow,\n\tLeftTee: LeftTee,\n\tLeftTeeVector: LeftTeeVector,\n\tleftthreetimes: leftthreetimes,\n\tLeftTriangleBar: LeftTriangleBar,\n\tLeftTriangle: LeftTriangle,\n\tLeftTriangleEqual: LeftTriangleEqual,\n\tLeftUpDownVector: LeftUpDownVector,\n\tLeftUpTeeVector: LeftUpTeeVector,\n\tLeftUpVectorBar: LeftUpVectorBar,\n\tLeftUpVector: LeftUpVector,\n\tLeftVectorBar: LeftVectorBar,\n\tLeftVector: LeftVector,\n\tlEg: lEg,\n\tleg: leg,\n\tleq: leq,\n\tleqq: leqq,\n\tleqslant: leqslant,\n\tlescc: lescc,\n\tles: les,\n\tlesdot: lesdot,\n\tlesdoto: lesdoto,\n\tlesdotor: lesdotor,\n\tlesg: lesg,\n\tlesges: lesges,\n\tlessapprox: lessapprox,\n\tlessdot: lessdot,\n\tlesseqgtr: lesseqgtr,\n\tlesseqqgtr: lesseqqgtr,\n\tLessEqualGreater: LessEqualGreater,\n\tLessFullEqual: LessFullEqual,\n\tLessGreater: LessGreater,\n\tlessgtr: lessgtr,\n\tLessLess: LessLess,\n\tlesssim: lesssim,\n\tLessSlantEqual: LessSlantEqual,\n\tLessTilde: LessTilde,\n\tlfisht: lfisht,\n\tlfloor: lfloor,\n\tLfr: Lfr,\n\tlfr: lfr,\n\tlg: lg,\n\tlgE: lgE,\n\tlHar: lHar,\n\tlhard: lhard,\n\tlharu: lharu,\n\tlharul: lharul,\n\tlhblk: lhblk,\n\tLJcy: LJcy,\n\tljcy: ljcy,\n\tllarr: llarr,\n\tll: ll,\n\tLl: Ll,\n\tllcorner: llcorner,\n\tLleftarrow: Lleftarrow,\n\tllhard: llhard,\n\tlltri: lltri,\n\tLmidot: Lmidot,\n\tlmidot: lmidot,\n\tlmoustache: lmoustache,\n\tlmoust: lmoust,\n\tlnap: lnap,\n\tlnapprox: lnapprox,\n\tlne: lne,\n\tlnE: lnE,\n\tlneq: lneq,\n\tlneqq: lneqq,\n\tlnsim: lnsim,\n\tloang: loang,\n\tloarr: loarr,\n\tlobrk: lobrk,\n\tlongleftarrow: longleftarrow,\n\tLongLeftArrow: LongLeftArrow,\n\tLongleftarrow: Longleftarrow,\n\tlongleftrightarrow: longleftrightarrow,\n\tLongLeftRightArrow: LongLeftRightArrow,\n\tLongleftrightarrow: Longleftrightarrow,\n\tlongmapsto: longmapsto,\n\tlongrightarrow: longrightarrow,\n\tLongRightArrow: LongRightArrow,\n\tLongrightarrow: Longrightarrow,\n\tlooparrowleft: looparrowleft,\n\tlooparrowright: looparrowright,\n\tlopar: lopar,\n\tLopf: Lopf,\n\tlopf: lopf,\n\tloplus: loplus,\n\tlotimes: lotimes,\n\tlowast: lowast,\n\tlowbar: lowbar,\n\tLowerLeftArrow: LowerLeftArrow,\n\tLowerRightArrow: LowerRightArrow,\n\tloz: loz,\n\tlozenge: lozenge,\n\tlozf: lozf,\n\tlpar: lpar,\n\tlparlt: lparlt,\n\tlrarr: lrarr,\n\tlrcorner: lrcorner,\n\tlrhar: lrhar,\n\tlrhard: lrhard,\n\tlrm: lrm,\n\tlrtri: lrtri,\n\tlsaquo: lsaquo,\n\tlscr: lscr,\n\tLscr: Lscr,\n\tlsh: lsh,\n\tLsh: Lsh,\n\tlsim: lsim,\n\tlsime: lsime,\n\tlsimg: lsimg,\n\tlsqb: lsqb,\n\tlsquo: lsquo,\n\tlsquor: lsquor,\n\tLstrok: Lstrok,\n\tlstrok: lstrok,\n\tltcc: ltcc,\n\tltcir: ltcir,\n\tlt: lt$2,\n\tLT: LT$1,\n\tLt: Lt,\n\tltdot: ltdot,\n\tlthree: lthree,\n\tltimes: ltimes,\n\tltlarr: ltlarr,\n\tltquest: ltquest,\n\tltri: ltri,\n\tltrie: ltrie,\n\tltrif: ltrif,\n\tltrPar: ltrPar,\n\tlurdshar: lurdshar,\n\tluruhar: luruhar,\n\tlvertneqq: lvertneqq,\n\tlvnE: lvnE,\n\tmacr: macr$1,\n\tmale: male,\n\tmalt: malt,\n\tmaltese: maltese,\n\t\"Map\": \"⤅\",\n\tmap: map,\n\tmapsto: mapsto,\n\tmapstodown: mapstodown,\n\tmapstoleft: mapstoleft,\n\tmapstoup: mapstoup,\n\tmarker: marker,\n\tmcomma: mcomma,\n\tMcy: Mcy,\n\tmcy: mcy,\n\tmdash: mdash,\n\tmDDot: mDDot,\n\tmeasuredangle: measuredangle,\n\tMediumSpace: MediumSpace,\n\tMellintrf: Mellintrf,\n\tMfr: Mfr,\n\tmfr: mfr,\n\tmho: mho,\n\tmicro: micro$1,\n\tmidast: midast,\n\tmidcir: midcir,\n\tmid: mid,\n\tmiddot: middot$1,\n\tminusb: minusb,\n\tminus: minus,\n\tminusd: minusd,\n\tminusdu: minusdu,\n\tMinusPlus: MinusPlus,\n\tmlcp: mlcp,\n\tmldr: mldr,\n\tmnplus: mnplus,\n\tmodels: models,\n\tMopf: Mopf,\n\tmopf: mopf,\n\tmp: mp,\n\tmscr: mscr,\n\tMscr: Mscr,\n\tmstpos: mstpos,\n\tMu: Mu,\n\tmu: mu,\n\tmultimap: multimap,\n\tmumap: mumap,\n\tnabla: nabla,\n\tNacute: Nacute,\n\tnacute: nacute,\n\tnang: nang,\n\tnap: nap,\n\tnapE: napE,\n\tnapid: napid,\n\tnapos: napos,\n\tnapprox: napprox,\n\tnatural: natural,\n\tnaturals: naturals,\n\tnatur: natur,\n\tnbsp: nbsp$1,\n\tnbump: nbump,\n\tnbumpe: nbumpe,\n\tncap: ncap,\n\tNcaron: Ncaron,\n\tncaron: ncaron,\n\tNcedil: Ncedil,\n\tncedil: ncedil,\n\tncong: ncong,\n\tncongdot: ncongdot,\n\tncup: ncup,\n\tNcy: Ncy,\n\tncy: ncy,\n\tndash: ndash,\n\tnearhk: nearhk,\n\tnearr: nearr,\n\tneArr: neArr,\n\tnearrow: nearrow,\n\tne: ne,\n\tnedot: nedot,\n\tNegativeMediumSpace: NegativeMediumSpace,\n\tNegativeThickSpace: NegativeThickSpace,\n\tNegativeThinSpace: NegativeThinSpace,\n\tNegativeVeryThinSpace: NegativeVeryThinSpace,\n\tnequiv: nequiv,\n\tnesear: nesear,\n\tnesim: nesim,\n\tNestedGreaterGreater: NestedGreaterGreater,\n\tNestedLessLess: NestedLessLess,\n\tNewLine: NewLine,\n\tnexist: nexist,\n\tnexists: nexists,\n\tNfr: Nfr,\n\tnfr: nfr,\n\tngE: ngE,\n\tnge: nge,\n\tngeq: ngeq,\n\tngeqq: ngeqq,\n\tngeqslant: ngeqslant,\n\tnges: nges,\n\tnGg: nGg,\n\tngsim: ngsim,\n\tnGt: nGt,\n\tngt: ngt,\n\tngtr: ngtr,\n\tnGtv: nGtv,\n\tnharr: nharr,\n\tnhArr: nhArr,\n\tnhpar: nhpar,\n\tni: ni,\n\tnis: nis,\n\tnisd: nisd,\n\tniv: niv,\n\tNJcy: NJcy,\n\tnjcy: njcy,\n\tnlarr: nlarr,\n\tnlArr: nlArr,\n\tnldr: nldr,\n\tnlE: nlE,\n\tnle: nle,\n\tnleftarrow: nleftarrow,\n\tnLeftarrow: nLeftarrow,\n\tnleftrightarrow: nleftrightarrow,\n\tnLeftrightarrow: nLeftrightarrow,\n\tnleq: nleq,\n\tnleqq: nleqq,\n\tnleqslant: nleqslant,\n\tnles: nles,\n\tnless: nless,\n\tnLl: nLl,\n\tnlsim: nlsim,\n\tnLt: nLt,\n\tnlt: nlt,\n\tnltri: nltri,\n\tnltrie: nltrie,\n\tnLtv: nLtv,\n\tnmid: nmid,\n\tNoBreak: NoBreak,\n\tNonBreakingSpace: NonBreakingSpace,\n\tnopf: nopf,\n\tNopf: Nopf,\n\tNot: Not,\n\tnot: not$1,\n\tNotCongruent: NotCongruent,\n\tNotCupCap: NotCupCap,\n\tNotDoubleVerticalBar: NotDoubleVerticalBar,\n\tNotElement: NotElement,\n\tNotEqual: NotEqual,\n\tNotEqualTilde: NotEqualTilde,\n\tNotExists: NotExists,\n\tNotGreater: NotGreater,\n\tNotGreaterEqual: NotGreaterEqual,\n\tNotGreaterFullEqual: NotGreaterFullEqual,\n\tNotGreaterGreater: NotGreaterGreater,\n\tNotGreaterLess: NotGreaterLess,\n\tNotGreaterSlantEqual: NotGreaterSlantEqual,\n\tNotGreaterTilde: NotGreaterTilde,\n\tNotHumpDownHump: NotHumpDownHump,\n\tNotHumpEqual: NotHumpEqual,\n\tnotin: notin,\n\tnotindot: notindot,\n\tnotinE: notinE,\n\tnotinva: notinva,\n\tnotinvb: notinvb,\n\tnotinvc: notinvc,\n\tNotLeftTriangleBar: NotLeftTriangleBar,\n\tNotLeftTriangle: NotLeftTriangle,\n\tNotLeftTriangleEqual: NotLeftTriangleEqual,\n\tNotLess: NotLess,\n\tNotLessEqual: NotLessEqual,\n\tNotLessGreater: NotLessGreater,\n\tNotLessLess: NotLessLess,\n\tNotLessSlantEqual: NotLessSlantEqual,\n\tNotLessTilde: NotLessTilde,\n\tNotNestedGreaterGreater: NotNestedGreaterGreater,\n\tNotNestedLessLess: NotNestedLessLess,\n\tnotni: notni,\n\tnotniva: notniva,\n\tnotnivb: notnivb,\n\tnotnivc: notnivc,\n\tNotPrecedes: NotPrecedes,\n\tNotPrecedesEqual: NotPrecedesEqual,\n\tNotPrecedesSlantEqual: NotPrecedesSlantEqual,\n\tNotReverseElement: NotReverseElement,\n\tNotRightTriangleBar: NotRightTriangleBar,\n\tNotRightTriangle: NotRightTriangle,\n\tNotRightTriangleEqual: NotRightTriangleEqual,\n\tNotSquareSubset: NotSquareSubset,\n\tNotSquareSubsetEqual: NotSquareSubsetEqual,\n\tNotSquareSuperset: NotSquareSuperset,\n\tNotSquareSupersetEqual: NotSquareSupersetEqual,\n\tNotSubset: NotSubset,\n\tNotSubsetEqual: NotSubsetEqual,\n\tNotSucceeds: NotSucceeds,\n\tNotSucceedsEqual: NotSucceedsEqual,\n\tNotSucceedsSlantEqual: NotSucceedsSlantEqual,\n\tNotSucceedsTilde: NotSucceedsTilde,\n\tNotSuperset: NotSuperset,\n\tNotSupersetEqual: NotSupersetEqual,\n\tNotTilde: NotTilde,\n\tNotTildeEqual: NotTildeEqual,\n\tNotTildeFullEqual: NotTildeFullEqual,\n\tNotTildeTilde: NotTildeTilde,\n\tNotVerticalBar: NotVerticalBar,\n\tnparallel: nparallel,\n\tnpar: npar,\n\tnparsl: nparsl,\n\tnpart: npart,\n\tnpolint: npolint,\n\tnpr: npr,\n\tnprcue: nprcue,\n\tnprec: nprec,\n\tnpreceq: npreceq,\n\tnpre: npre,\n\tnrarrc: nrarrc,\n\tnrarr: nrarr,\n\tnrArr: nrArr,\n\tnrarrw: nrarrw,\n\tnrightarrow: nrightarrow,\n\tnRightarrow: nRightarrow,\n\tnrtri: nrtri,\n\tnrtrie: nrtrie,\n\tnsc: nsc,\n\tnsccue: nsccue,\n\tnsce: nsce,\n\tNscr: Nscr,\n\tnscr: nscr,\n\tnshortmid: nshortmid,\n\tnshortparallel: nshortparallel,\n\tnsim: nsim,\n\tnsime: nsime,\n\tnsimeq: nsimeq,\n\tnsmid: nsmid,\n\tnspar: nspar,\n\tnsqsube: nsqsube,\n\tnsqsupe: nsqsupe,\n\tnsub: nsub,\n\tnsubE: nsubE,\n\tnsube: nsube,\n\tnsubset: nsubset,\n\tnsubseteq: nsubseteq,\n\tnsubseteqq: nsubseteqq,\n\tnsucc: nsucc,\n\tnsucceq: nsucceq,\n\tnsup: nsup,\n\tnsupE: nsupE,\n\tnsupe: nsupe,\n\tnsupset: nsupset,\n\tnsupseteq: nsupseteq,\n\tnsupseteqq: nsupseteqq,\n\tntgl: ntgl,\n\tNtilde: Ntilde$1,\n\tntilde: ntilde$1,\n\tntlg: ntlg,\n\tntriangleleft: ntriangleleft,\n\tntrianglelefteq: ntrianglelefteq,\n\tntriangleright: ntriangleright,\n\tntrianglerighteq: ntrianglerighteq,\n\tNu: Nu,\n\tnu: nu,\n\tnum: num,\n\tnumero: numero,\n\tnumsp: numsp,\n\tnvap: nvap,\n\tnvdash: nvdash,\n\tnvDash: nvDash,\n\tnVdash: nVdash,\n\tnVDash: nVDash,\n\tnvge: nvge,\n\tnvgt: nvgt,\n\tnvHarr: nvHarr,\n\tnvinfin: nvinfin,\n\tnvlArr: nvlArr,\n\tnvle: nvle,\n\tnvlt: nvlt,\n\tnvltrie: nvltrie,\n\tnvrArr: nvrArr,\n\tnvrtrie: nvrtrie,\n\tnvsim: nvsim,\n\tnwarhk: nwarhk,\n\tnwarr: nwarr,\n\tnwArr: nwArr,\n\tnwarrow: nwarrow,\n\tnwnear: nwnear,\n\tOacute: Oacute$1,\n\toacute: oacute$1,\n\toast: oast,\n\tOcirc: Ocirc$1,\n\tocirc: ocirc$1,\n\tocir: ocir,\n\tOcy: Ocy,\n\tocy: ocy,\n\todash: odash,\n\tOdblac: Odblac,\n\todblac: odblac,\n\todiv: odiv,\n\todot: odot,\n\todsold: odsold,\n\tOElig: OElig,\n\toelig: oelig,\n\tofcir: ofcir,\n\tOfr: Ofr,\n\tofr: ofr,\n\togon: ogon,\n\tOgrave: Ograve$1,\n\tograve: ograve$1,\n\togt: ogt,\n\tohbar: ohbar,\n\tohm: ohm,\n\toint: oint,\n\tolarr: olarr,\n\tolcir: olcir,\n\tolcross: olcross,\n\toline: oline,\n\tolt: olt,\n\tOmacr: Omacr,\n\tomacr: omacr,\n\tOmega: Omega,\n\tomega: omega,\n\tOmicron: Omicron,\n\tomicron: omicron,\n\tomid: omid,\n\tominus: ominus,\n\tOopf: Oopf,\n\toopf: oopf,\n\topar: opar,\n\tOpenCurlyDoubleQuote: OpenCurlyDoubleQuote,\n\tOpenCurlyQuote: OpenCurlyQuote,\n\toperp: operp,\n\toplus: oplus,\n\torarr: orarr,\n\tOr: Or,\n\tor: or,\n\tord: ord,\n\torder: order,\n\torderof: orderof,\n\tordf: ordf$1,\n\tordm: ordm$1,\n\torigof: origof,\n\toror: oror,\n\torslope: orslope,\n\torv: orv,\n\toS: oS,\n\tOscr: Oscr,\n\toscr: oscr,\n\tOslash: Oslash$1,\n\toslash: oslash$1,\n\tosol: osol,\n\tOtilde: Otilde$1,\n\totilde: otilde$1,\n\totimesas: otimesas,\n\tOtimes: Otimes,\n\totimes: otimes,\n\tOuml: Ouml$1,\n\touml: ouml$1,\n\tovbar: ovbar,\n\tOverBar: OverBar,\n\tOverBrace: OverBrace,\n\tOverBracket: OverBracket,\n\tOverParenthesis: OverParenthesis,\n\tpara: para$1,\n\tparallel: parallel,\n\tpar: par,\n\tparsim: parsim,\n\tparsl: parsl,\n\tpart: part,\n\tPartialD: PartialD,\n\tPcy: Pcy,\n\tpcy: pcy,\n\tpercnt: percnt,\n\tperiod: period,\n\tpermil: permil,\n\tperp: perp,\n\tpertenk: pertenk,\n\tPfr: Pfr,\n\tpfr: pfr,\n\tPhi: Phi,\n\tphi: phi,\n\tphiv: phiv,\n\tphmmat: phmmat,\n\tphone: phone,\n\tPi: Pi,\n\tpi: pi,\n\tpitchfork: pitchfork,\n\tpiv: piv,\n\tplanck: planck,\n\tplanckh: planckh,\n\tplankv: plankv,\n\tplusacir: plusacir,\n\tplusb: plusb,\n\tpluscir: pluscir,\n\tplus: plus,\n\tplusdo: plusdo,\n\tplusdu: plusdu,\n\tpluse: pluse,\n\tPlusMinus: PlusMinus,\n\tplusmn: plusmn$1,\n\tplussim: plussim,\n\tplustwo: plustwo,\n\tpm: pm,\n\tPoincareplane: Poincareplane,\n\tpointint: pointint,\n\tpopf: popf,\n\tPopf: Popf,\n\tpound: pound$1,\n\tprap: prap,\n\tPr: Pr,\n\tpr: pr,\n\tprcue: prcue,\n\tprecapprox: precapprox,\n\tprec: prec,\n\tpreccurlyeq: preccurlyeq,\n\tPrecedes: Precedes,\n\tPrecedesEqual: PrecedesEqual,\n\tPrecedesSlantEqual: PrecedesSlantEqual,\n\tPrecedesTilde: PrecedesTilde,\n\tpreceq: preceq,\n\tprecnapprox: precnapprox,\n\tprecneqq: precneqq,\n\tprecnsim: precnsim,\n\tpre: pre,\n\tprE: prE,\n\tprecsim: precsim,\n\tprime: prime,\n\tPrime: Prime,\n\tprimes: primes,\n\tprnap: prnap,\n\tprnE: prnE,\n\tprnsim: prnsim,\n\tprod: prod,\n\tProduct: Product,\n\tprofalar: profalar,\n\tprofline: profline,\n\tprofsurf: profsurf,\n\tprop: prop,\n\tProportional: Proportional,\n\tProportion: Proportion,\n\tpropto: propto,\n\tprsim: prsim,\n\tprurel: prurel,\n\tPscr: Pscr,\n\tpscr: pscr,\n\tPsi: Psi,\n\tpsi: psi,\n\tpuncsp: puncsp,\n\tQfr: Qfr,\n\tqfr: qfr,\n\tqint: qint,\n\tqopf: qopf,\n\tQopf: Qopf,\n\tqprime: qprime,\n\tQscr: Qscr,\n\tqscr: qscr,\n\tquaternions: quaternions,\n\tquatint: quatint,\n\tquest: quest,\n\tquesteq: questeq,\n\tquot: quot$2,\n\tQUOT: QUOT$1,\n\trAarr: rAarr,\n\trace: race,\n\tRacute: Racute,\n\tracute: racute,\n\tradic: radic,\n\traemptyv: raemptyv,\n\trang: rang,\n\tRang: Rang,\n\trangd: rangd,\n\trange: range,\n\trangle: rangle,\n\traquo: raquo$1,\n\trarrap: rarrap,\n\trarrb: rarrb,\n\trarrbfs: rarrbfs,\n\trarrc: rarrc,\n\trarr: rarr,\n\tRarr: Rarr,\n\trArr: rArr,\n\trarrfs: rarrfs,\n\trarrhk: rarrhk,\n\trarrlp: rarrlp,\n\trarrpl: rarrpl,\n\trarrsim: rarrsim,\n\tRarrtl: Rarrtl,\n\trarrtl: rarrtl,\n\trarrw: rarrw,\n\tratail: ratail,\n\trAtail: rAtail,\n\tratio: ratio,\n\trationals: rationals,\n\trbarr: rbarr,\n\trBarr: rBarr,\n\tRBarr: RBarr,\n\trbbrk: rbbrk,\n\trbrace: rbrace,\n\trbrack: rbrack,\n\trbrke: rbrke,\n\trbrksld: rbrksld,\n\trbrkslu: rbrkslu,\n\tRcaron: Rcaron,\n\trcaron: rcaron,\n\tRcedil: Rcedil,\n\trcedil: rcedil,\n\trceil: rceil,\n\trcub: rcub,\n\tRcy: Rcy,\n\trcy: rcy,\n\trdca: rdca,\n\trdldhar: rdldhar,\n\trdquo: rdquo,\n\trdquor: rdquor,\n\trdsh: rdsh,\n\treal: real,\n\trealine: realine,\n\trealpart: realpart,\n\treals: reals,\n\tRe: Re,\n\trect: rect,\n\treg: reg$1,\n\tREG: REG$1,\n\tReverseElement: ReverseElement,\n\tReverseEquilibrium: ReverseEquilibrium,\n\tReverseUpEquilibrium: ReverseUpEquilibrium,\n\trfisht: rfisht,\n\trfloor: rfloor,\n\trfr: rfr,\n\tRfr: Rfr,\n\trHar: rHar,\n\trhard: rhard,\n\trharu: rharu,\n\trharul: rharul,\n\tRho: Rho,\n\trho: rho,\n\trhov: rhov,\n\tRightAngleBracket: RightAngleBracket,\n\tRightArrowBar: RightArrowBar,\n\trightarrow: rightarrow,\n\tRightArrow: RightArrow,\n\tRightarrow: Rightarrow,\n\tRightArrowLeftArrow: RightArrowLeftArrow,\n\trightarrowtail: rightarrowtail,\n\tRightCeiling: RightCeiling,\n\tRightDoubleBracket: RightDoubleBracket,\n\tRightDownTeeVector: RightDownTeeVector,\n\tRightDownVectorBar: RightDownVectorBar,\n\tRightDownVector: RightDownVector,\n\tRightFloor: RightFloor,\n\trightharpoondown: rightharpoondown,\n\trightharpoonup: rightharpoonup,\n\trightleftarrows: rightleftarrows,\n\trightleftharpoons: rightleftharpoons,\n\trightrightarrows: rightrightarrows,\n\trightsquigarrow: rightsquigarrow,\n\tRightTeeArrow: RightTeeArrow,\n\tRightTee: RightTee,\n\tRightTeeVector: RightTeeVector,\n\trightthreetimes: rightthreetimes,\n\tRightTriangleBar: RightTriangleBar,\n\tRightTriangle: RightTriangle,\n\tRightTriangleEqual: RightTriangleEqual,\n\tRightUpDownVector: RightUpDownVector,\n\tRightUpTeeVector: RightUpTeeVector,\n\tRightUpVectorBar: RightUpVectorBar,\n\tRightUpVector: RightUpVector,\n\tRightVectorBar: RightVectorBar,\n\tRightVector: RightVector,\n\tring: ring,\n\trisingdotseq: risingdotseq,\n\trlarr: rlarr,\n\trlhar: rlhar,\n\trlm: rlm,\n\trmoustache: rmoustache,\n\trmoust: rmoust,\n\trnmid: rnmid,\n\troang: roang,\n\troarr: roarr,\n\trobrk: robrk,\n\tropar: ropar,\n\tropf: ropf,\n\tRopf: Ropf,\n\troplus: roplus,\n\trotimes: rotimes,\n\tRoundImplies: RoundImplies,\n\trpar: rpar,\n\trpargt: rpargt,\n\trppolint: rppolint,\n\trrarr: rrarr,\n\tRrightarrow: Rrightarrow,\n\trsaquo: rsaquo,\n\trscr: rscr,\n\tRscr: Rscr,\n\trsh: rsh,\n\tRsh: Rsh,\n\trsqb: rsqb,\n\trsquo: rsquo,\n\trsquor: rsquor,\n\trthree: rthree,\n\trtimes: rtimes,\n\trtri: rtri,\n\trtrie: rtrie,\n\trtrif: rtrif,\n\trtriltri: rtriltri,\n\tRuleDelayed: RuleDelayed,\n\truluhar: ruluhar,\n\trx: rx,\n\tSacute: Sacute,\n\tsacute: sacute,\n\tsbquo: sbquo,\n\tscap: scap,\n\tScaron: Scaron,\n\tscaron: scaron,\n\tSc: Sc,\n\tsc: sc,\n\tsccue: sccue,\n\tsce: sce,\n\tscE: scE,\n\tScedil: Scedil,\n\tscedil: scedil,\n\tScirc: Scirc,\n\tscirc: scirc,\n\tscnap: scnap,\n\tscnE: scnE,\n\tscnsim: scnsim,\n\tscpolint: scpolint,\n\tscsim: scsim,\n\tScy: Scy,\n\tscy: scy,\n\tsdotb: sdotb,\n\tsdot: sdot,\n\tsdote: sdote,\n\tsearhk: searhk,\n\tsearr: searr,\n\tseArr: seArr,\n\tsearrow: searrow,\n\tsect: sect$1,\n\tsemi: semi,\n\tseswar: seswar,\n\tsetminus: setminus,\n\tsetmn: setmn,\n\tsext: sext,\n\tSfr: Sfr,\n\tsfr: sfr,\n\tsfrown: sfrown,\n\tsharp: sharp,\n\tSHCHcy: SHCHcy,\n\tshchcy: shchcy,\n\tSHcy: SHcy,\n\tshcy: shcy,\n\tShortDownArrow: ShortDownArrow,\n\tShortLeftArrow: ShortLeftArrow,\n\tshortmid: shortmid,\n\tshortparallel: shortparallel,\n\tShortRightArrow: ShortRightArrow,\n\tShortUpArrow: ShortUpArrow,\n\tshy: shy$1,\n\tSigma: Sigma,\n\tsigma: sigma,\n\tsigmaf: sigmaf,\n\tsigmav: sigmav,\n\tsim: sim,\n\tsimdot: simdot,\n\tsime: sime,\n\tsimeq: simeq,\n\tsimg: simg,\n\tsimgE: simgE,\n\tsiml: siml,\n\tsimlE: simlE,\n\tsimne: simne,\n\tsimplus: simplus,\n\tsimrarr: simrarr,\n\tslarr: slarr,\n\tSmallCircle: SmallCircle,\n\tsmallsetminus: smallsetminus,\n\tsmashp: smashp,\n\tsmeparsl: smeparsl,\n\tsmid: smid,\n\tsmile: smile,\n\tsmt: smt,\n\tsmte: smte,\n\tsmtes: smtes,\n\tSOFTcy: SOFTcy,\n\tsoftcy: softcy,\n\tsolbar: solbar,\n\tsolb: solb,\n\tsol: sol,\n\tSopf: Sopf,\n\tsopf: sopf,\n\tspades: spades,\n\tspadesuit: spadesuit,\n\tspar: spar,\n\tsqcap: sqcap,\n\tsqcaps: sqcaps,\n\tsqcup: sqcup,\n\tsqcups: sqcups,\n\tSqrt: Sqrt,\n\tsqsub: sqsub,\n\tsqsube: sqsube,\n\tsqsubset: sqsubset,\n\tsqsubseteq: sqsubseteq,\n\tsqsup: sqsup,\n\tsqsupe: sqsupe,\n\tsqsupset: sqsupset,\n\tsqsupseteq: sqsupseteq,\n\tsquare: square,\n\tSquare: Square,\n\tSquareIntersection: SquareIntersection,\n\tSquareSubset: SquareSubset,\n\tSquareSubsetEqual: SquareSubsetEqual,\n\tSquareSuperset: SquareSuperset,\n\tSquareSupersetEqual: SquareSupersetEqual,\n\tSquareUnion: SquareUnion,\n\tsquarf: squarf,\n\tsqu: squ,\n\tsquf: squf,\n\tsrarr: srarr,\n\tSscr: Sscr,\n\tsscr: sscr,\n\tssetmn: ssetmn,\n\tssmile: ssmile,\n\tsstarf: sstarf,\n\tStar: Star,\n\tstar: star,\n\tstarf: starf,\n\tstraightepsilon: straightepsilon,\n\tstraightphi: straightphi,\n\tstrns: strns,\n\tsub: sub,\n\tSub: Sub,\n\tsubdot: subdot,\n\tsubE: subE,\n\tsube: sube,\n\tsubedot: subedot,\n\tsubmult: submult,\n\tsubnE: subnE,\n\tsubne: subne,\n\tsubplus: subplus,\n\tsubrarr: subrarr,\n\tsubset: subset,\n\tSubset: Subset,\n\tsubseteq: subseteq,\n\tsubseteqq: subseteqq,\n\tSubsetEqual: SubsetEqual,\n\tsubsetneq: subsetneq,\n\tsubsetneqq: subsetneqq,\n\tsubsim: subsim,\n\tsubsub: subsub,\n\tsubsup: subsup,\n\tsuccapprox: succapprox,\n\tsucc: succ,\n\tsucccurlyeq: succcurlyeq,\n\tSucceeds: Succeeds,\n\tSucceedsEqual: SucceedsEqual,\n\tSucceedsSlantEqual: SucceedsSlantEqual,\n\tSucceedsTilde: SucceedsTilde,\n\tsucceq: succeq,\n\tsuccnapprox: succnapprox,\n\tsuccneqq: succneqq,\n\tsuccnsim: succnsim,\n\tsuccsim: succsim,\n\tSuchThat: SuchThat,\n\tsum: sum,\n\tSum: Sum,\n\tsung: sung,\n\tsup1: sup1$1,\n\tsup2: sup2$1,\n\tsup3: sup3$1,\n\tsup: sup,\n\tSup: Sup,\n\tsupdot: supdot,\n\tsupdsub: supdsub,\n\tsupE: supE,\n\tsupe: supe,\n\tsupedot: supedot,\n\tSuperset: Superset,\n\tSupersetEqual: SupersetEqual,\n\tsuphsol: suphsol,\n\tsuphsub: suphsub,\n\tsuplarr: suplarr,\n\tsupmult: supmult,\n\tsupnE: supnE,\n\tsupne: supne,\n\tsupplus: supplus,\n\tsupset: supset,\n\tSupset: Supset,\n\tsupseteq: supseteq,\n\tsupseteqq: supseteqq,\n\tsupsetneq: supsetneq,\n\tsupsetneqq: supsetneqq,\n\tsupsim: supsim,\n\tsupsub: supsub,\n\tsupsup: supsup,\n\tswarhk: swarhk,\n\tswarr: swarr,\n\tswArr: swArr,\n\tswarrow: swarrow,\n\tswnwar: swnwar,\n\tszlig: szlig$1,\n\tTab: Tab,\n\ttarget: target,\n\tTau: Tau,\n\ttau: tau,\n\ttbrk: tbrk,\n\tTcaron: Tcaron,\n\ttcaron: tcaron,\n\tTcedil: Tcedil,\n\ttcedil: tcedil,\n\tTcy: Tcy,\n\ttcy: tcy,\n\ttdot: tdot,\n\ttelrec: telrec,\n\tTfr: Tfr,\n\ttfr: tfr,\n\tthere4: there4,\n\ttherefore: therefore,\n\tTherefore: Therefore,\n\tTheta: Theta,\n\ttheta: theta,\n\tthetasym: thetasym,\n\tthetav: thetav,\n\tthickapprox: thickapprox,\n\tthicksim: thicksim,\n\tThickSpace: ThickSpace,\n\tThinSpace: ThinSpace,\n\tthinsp: thinsp,\n\tthkap: thkap,\n\tthksim: thksim,\n\tTHORN: THORN$1,\n\tthorn: thorn$1,\n\ttilde: tilde,\n\tTilde: Tilde,\n\tTildeEqual: TildeEqual,\n\tTildeFullEqual: TildeFullEqual,\n\tTildeTilde: TildeTilde,\n\ttimesbar: timesbar,\n\ttimesb: timesb,\n\ttimes: times$1,\n\ttimesd: timesd,\n\ttint: tint,\n\ttoea: toea,\n\ttopbot: topbot,\n\ttopcir: topcir,\n\ttop: top,\n\tTopf: Topf,\n\ttopf: topf,\n\ttopfork: topfork,\n\ttosa: tosa,\n\ttprime: tprime,\n\ttrade: trade,\n\tTRADE: TRADE,\n\ttriangle: triangle,\n\ttriangledown: triangledown,\n\ttriangleleft: triangleleft,\n\ttrianglelefteq: trianglelefteq,\n\ttriangleq: triangleq,\n\ttriangleright: triangleright,\n\ttrianglerighteq: trianglerighteq,\n\ttridot: tridot,\n\ttrie: trie,\n\ttriminus: triminus,\n\tTripleDot: TripleDot,\n\ttriplus: triplus,\n\ttrisb: trisb,\n\ttritime: tritime,\n\ttrpezium: trpezium,\n\tTscr: Tscr,\n\ttscr: tscr,\n\tTScy: TScy,\n\ttscy: tscy,\n\tTSHcy: TSHcy,\n\ttshcy: tshcy,\n\tTstrok: Tstrok,\n\ttstrok: tstrok,\n\ttwixt: twixt,\n\ttwoheadleftarrow: twoheadleftarrow,\n\ttwoheadrightarrow: twoheadrightarrow,\n\tUacute: Uacute$1,\n\tuacute: uacute$1,\n\tuarr: uarr,\n\tUarr: Uarr,\n\tuArr: uArr,\n\tUarrocir: Uarrocir,\n\tUbrcy: Ubrcy,\n\tubrcy: ubrcy,\n\tUbreve: Ubreve,\n\tubreve: ubreve,\n\tUcirc: Ucirc$1,\n\tucirc: ucirc$1,\n\tUcy: Ucy,\n\tucy: ucy,\n\tudarr: udarr,\n\tUdblac: Udblac,\n\tudblac: udblac,\n\tudhar: udhar,\n\tufisht: ufisht,\n\tUfr: Ufr,\n\tufr: ufr,\n\tUgrave: Ugrave$1,\n\tugrave: ugrave$1,\n\tuHar: uHar,\n\tuharl: uharl,\n\tuharr: uharr,\n\tuhblk: uhblk,\n\tulcorn: ulcorn,\n\tulcorner: ulcorner,\n\tulcrop: ulcrop,\n\tultri: ultri,\n\tUmacr: Umacr,\n\tumacr: umacr,\n\tuml: uml$1,\n\tUnderBar: UnderBar,\n\tUnderBrace: UnderBrace,\n\tUnderBracket: UnderBracket,\n\tUnderParenthesis: UnderParenthesis,\n\tUnion: Union,\n\tUnionPlus: UnionPlus,\n\tUogon: Uogon,\n\tuogon: uogon,\n\tUopf: Uopf,\n\tuopf: uopf,\n\tUpArrowBar: UpArrowBar,\n\tuparrow: uparrow,\n\tUpArrow: UpArrow,\n\tUparrow: Uparrow,\n\tUpArrowDownArrow: UpArrowDownArrow,\n\tupdownarrow: updownarrow,\n\tUpDownArrow: UpDownArrow,\n\tUpdownarrow: Updownarrow,\n\tUpEquilibrium: UpEquilibrium,\n\tupharpoonleft: upharpoonleft,\n\tupharpoonright: upharpoonright,\n\tuplus: uplus,\n\tUpperLeftArrow: UpperLeftArrow,\n\tUpperRightArrow: UpperRightArrow,\n\tupsi: upsi,\n\tUpsi: Upsi,\n\tupsih: upsih,\n\tUpsilon: Upsilon,\n\tupsilon: upsilon,\n\tUpTeeArrow: UpTeeArrow,\n\tUpTee: UpTee,\n\tupuparrows: upuparrows,\n\turcorn: urcorn,\n\turcorner: urcorner,\n\turcrop: urcrop,\n\tUring: Uring,\n\turing: uring,\n\turtri: urtri,\n\tUscr: Uscr,\n\tuscr: uscr,\n\tutdot: utdot,\n\tUtilde: Utilde,\n\tutilde: utilde,\n\tutri: utri,\n\tutrif: utrif,\n\tuuarr: uuarr,\n\tUuml: Uuml$1,\n\tuuml: uuml$1,\n\tuwangle: uwangle,\n\tvangrt: vangrt,\n\tvarepsilon: varepsilon,\n\tvarkappa: varkappa,\n\tvarnothing: varnothing,\n\tvarphi: varphi,\n\tvarpi: varpi,\n\tvarpropto: varpropto,\n\tvarr: varr,\n\tvArr: vArr,\n\tvarrho: varrho,\n\tvarsigma: varsigma,\n\tvarsubsetneq: varsubsetneq,\n\tvarsubsetneqq: varsubsetneqq,\n\tvarsupsetneq: varsupsetneq,\n\tvarsupsetneqq: varsupsetneqq,\n\tvartheta: vartheta,\n\tvartriangleleft: vartriangleleft,\n\tvartriangleright: vartriangleright,\n\tvBar: vBar,\n\tVbar: Vbar,\n\tvBarv: vBarv,\n\tVcy: Vcy,\n\tvcy: vcy,\n\tvdash: vdash,\n\tvDash: vDash,\n\tVdash: Vdash,\n\tVDash: VDash,\n\tVdashl: Vdashl,\n\tveebar: veebar,\n\tvee: vee,\n\tVee: Vee,\n\tveeeq: veeeq,\n\tvellip: vellip,\n\tverbar: verbar,\n\tVerbar: Verbar,\n\tvert: vert,\n\tVert: Vert,\n\tVerticalBar: VerticalBar,\n\tVerticalLine: VerticalLine,\n\tVerticalSeparator: VerticalSeparator,\n\tVerticalTilde: VerticalTilde,\n\tVeryThinSpace: VeryThinSpace,\n\tVfr: Vfr,\n\tvfr: vfr,\n\tvltri: vltri,\n\tvnsub: vnsub,\n\tvnsup: vnsup,\n\tVopf: Vopf,\n\tvopf: vopf,\n\tvprop: vprop,\n\tvrtri: vrtri,\n\tVscr: Vscr,\n\tvscr: vscr,\n\tvsubnE: vsubnE,\n\tvsubne: vsubne,\n\tvsupnE: vsupnE,\n\tvsupne: vsupne,\n\tVvdash: Vvdash,\n\tvzigzag: vzigzag,\n\tWcirc: Wcirc,\n\twcirc: wcirc,\n\twedbar: wedbar,\n\twedge: wedge,\n\tWedge: Wedge,\n\twedgeq: wedgeq,\n\tweierp: weierp,\n\tWfr: Wfr,\n\twfr: wfr,\n\tWopf: Wopf,\n\twopf: wopf,\n\twp: wp,\n\twr: wr,\n\twreath: wreath,\n\tWscr: Wscr,\n\twscr: wscr,\n\txcap: xcap,\n\txcirc: xcirc,\n\txcup: xcup,\n\txdtri: xdtri,\n\tXfr: Xfr,\n\txfr: xfr,\n\txharr: xharr,\n\txhArr: xhArr,\n\tXi: Xi,\n\txi: xi,\n\txlarr: xlarr,\n\txlArr: xlArr,\n\txmap: xmap,\n\txnis: xnis,\n\txodot: xodot,\n\tXopf: Xopf,\n\txopf: xopf,\n\txoplus: xoplus,\n\txotime: xotime,\n\txrarr: xrarr,\n\txrArr: xrArr,\n\tXscr: Xscr,\n\txscr: xscr,\n\txsqcup: xsqcup,\n\txuplus: xuplus,\n\txutri: xutri,\n\txvee: xvee,\n\txwedge: xwedge,\n\tYacute: Yacute$1,\n\tyacute: yacute$1,\n\tYAcy: YAcy,\n\tyacy: yacy,\n\tYcirc: Ycirc,\n\tycirc: ycirc,\n\tYcy: Ycy,\n\tycy: ycy,\n\tyen: yen$1,\n\tYfr: Yfr,\n\tyfr: yfr,\n\tYIcy: YIcy,\n\tyicy: yicy,\n\tYopf: Yopf,\n\tyopf: yopf,\n\tYscr: Yscr,\n\tyscr: yscr,\n\tYUcy: YUcy,\n\tyucy: yucy,\n\tyuml: yuml$1,\n\tYuml: Yuml,\n\tZacute: Zacute,\n\tzacute: zacute,\n\tZcaron: Zcaron,\n\tzcaron: zcaron,\n\tZcy: Zcy,\n\tzcy: zcy,\n\tZdot: Zdot,\n\tzdot: zdot,\n\tzeetrf: zeetrf,\n\tZeroWidthSpace: ZeroWidthSpace,\n\tZeta: Zeta,\n\tzeta: zeta,\n\tzfr: zfr,\n\tZfr: Zfr,\n\tZHcy: ZHcy,\n\tzhcy: zhcy,\n\tzigrarr: zigrarr,\n\tzopf: zopf,\n\tZopf: Zopf,\n\tZscr: Zscr,\n\tzscr: zscr,\n\tzwj: zwj,\n\tzwnj: zwnj\n};\n\nvar Aacute = \"Á\";\nvar aacute = \"á\";\nvar Acirc = \"Â\";\nvar acirc = \"â\";\nvar acute = \"´\";\nvar AElig = \"Æ\";\nvar aelig = \"æ\";\nvar Agrave = \"À\";\nvar agrave = \"à\";\nvar amp$1 = \"&\";\nvar AMP = \"&\";\nvar Aring = \"Å\";\nvar aring = \"å\";\nvar Atilde = \"Ã\";\nvar atilde = \"ã\";\nvar Auml = \"Ä\";\nvar auml = \"ä\";\nvar brvbar = \"¦\";\nvar Ccedil = \"Ç\";\nvar ccedil = \"ç\";\nvar cedil = \"¸\";\nvar cent = \"¢\";\nvar copy = \"©\";\nvar COPY = \"©\";\nvar curren = \"¤\";\nvar deg = \"°\";\nvar divide = \"÷\";\nvar Eacute = \"É\";\nvar eacute = \"é\";\nvar Ecirc = \"Ê\";\nvar ecirc = \"ê\";\nvar Egrave = \"È\";\nvar egrave = \"è\";\nvar ETH = \"Ð\";\nvar eth = \"ð\";\nvar Euml = \"Ë\";\nvar euml = \"ë\";\nvar frac12 = \"½\";\nvar frac14 = \"¼\";\nvar frac34 = \"¾\";\nvar gt$1 = \">\";\nvar GT = \">\";\nvar Iacute = \"Í\";\nvar iacute = \"í\";\nvar Icirc = \"Î\";\nvar icirc = \"î\";\nvar iexcl = \"¡\";\nvar Igrave = \"Ì\";\nvar igrave = \"ì\";\nvar iquest = \"¿\";\nvar Iuml = \"Ï\";\nvar iuml = \"ï\";\nvar laquo = \"«\";\nvar lt$1 = \"<\";\nvar LT = \"<\";\nvar macr = \"¯\";\nvar micro = \"µ\";\nvar middot = \"·\";\nvar nbsp = \" \";\nvar not = \"¬\";\nvar Ntilde = \"Ñ\";\nvar ntilde = \"ñ\";\nvar Oacute = \"Ó\";\nvar oacute = \"ó\";\nvar Ocirc = \"Ô\";\nvar ocirc = \"ô\";\nvar Ograve = \"Ò\";\nvar ograve = \"ò\";\nvar ordf = \"ª\";\nvar ordm = \"º\";\nvar Oslash = \"Ø\";\nvar oslash = \"ø\";\nvar Otilde = \"Õ\";\nvar otilde = \"õ\";\nvar Ouml = \"Ö\";\nvar ouml = \"ö\";\nvar para = \"¶\";\nvar plusmn = \"±\";\nvar pound = \"£\";\nvar quot$1 = \"\\\"\";\nvar QUOT = \"\\\"\";\nvar raquo = \"»\";\nvar reg = \"®\";\nvar REG = \"®\";\nvar sect = \"§\";\nvar shy = \"­\";\nvar sup1 = \"¹\";\nvar sup2 = \"²\";\nvar sup3 = \"³\";\nvar szlig = \"ß\";\nvar THORN = \"Þ\";\nvar thorn = \"þ\";\nvar times = \"×\";\nvar Uacute = \"Ú\";\nvar uacute = \"ú\";\nvar Ucirc = \"Û\";\nvar ucirc = \"û\";\nvar Ugrave = \"Ù\";\nvar ugrave = \"ù\";\nvar uml = \"¨\";\nvar Uuml = \"Ü\";\nvar uuml = \"ü\";\nvar Yacute = \"Ý\";\nvar yacute = \"ý\";\nvar yen = \"¥\";\nvar yuml = \"ÿ\";\nvar require$$1 = {\n\tAacute: Aacute,\n\taacute: aacute,\n\tAcirc: Acirc,\n\tacirc: acirc,\n\tacute: acute,\n\tAElig: AElig,\n\taelig: aelig,\n\tAgrave: Agrave,\n\tagrave: agrave,\n\tamp: amp$1,\n\tAMP: AMP,\n\tAring: Aring,\n\taring: aring,\n\tAtilde: Atilde,\n\tatilde: atilde,\n\tAuml: Auml,\n\tauml: auml,\n\tbrvbar: brvbar,\n\tCcedil: Ccedil,\n\tccedil: ccedil,\n\tcedil: cedil,\n\tcent: cent,\n\tcopy: copy,\n\tCOPY: COPY,\n\tcurren: curren,\n\tdeg: deg,\n\tdivide: divide,\n\tEacute: Eacute,\n\teacute: eacute,\n\tEcirc: Ecirc,\n\tecirc: ecirc,\n\tEgrave: Egrave,\n\tegrave: egrave,\n\tETH: ETH,\n\teth: eth,\n\tEuml: Euml,\n\teuml: euml,\n\tfrac12: frac12,\n\tfrac14: frac14,\n\tfrac34: frac34,\n\tgt: gt$1,\n\tGT: GT,\n\tIacute: Iacute,\n\tiacute: iacute,\n\tIcirc: Icirc,\n\ticirc: icirc,\n\tiexcl: iexcl,\n\tIgrave: Igrave,\n\tigrave: igrave,\n\tiquest: iquest,\n\tIuml: Iuml,\n\tiuml: iuml,\n\tlaquo: laquo,\n\tlt: lt$1,\n\tLT: LT,\n\tmacr: macr,\n\tmicro: micro,\n\tmiddot: middot,\n\tnbsp: nbsp,\n\tnot: not,\n\tNtilde: Ntilde,\n\tntilde: ntilde,\n\tOacute: Oacute,\n\toacute: oacute,\n\tOcirc: Ocirc,\n\tocirc: ocirc,\n\tOgrave: Ograve,\n\tograve: ograve,\n\tordf: ordf,\n\tordm: ordm,\n\tOslash: Oslash,\n\toslash: oslash,\n\tOtilde: Otilde,\n\totilde: otilde,\n\tOuml: Ouml,\n\touml: ouml,\n\tpara: para,\n\tplusmn: plusmn,\n\tpound: pound,\n\tquot: quot$1,\n\tQUOT: QUOT,\n\traquo: raquo,\n\treg: reg,\n\tREG: REG,\n\tsect: sect,\n\tshy: shy,\n\tsup1: sup1,\n\tsup2: sup2,\n\tsup3: sup3,\n\tszlig: szlig,\n\tTHORN: THORN,\n\tthorn: thorn,\n\ttimes: times,\n\tUacute: Uacute,\n\tuacute: uacute,\n\tUcirc: Ucirc,\n\tucirc: ucirc,\n\tUgrave: Ugrave,\n\tugrave: ugrave,\n\tuml: uml,\n\tUuml: Uuml,\n\tuuml: uuml,\n\tYacute: Yacute,\n\tyacute: yacute,\n\tyen: yen,\n\tyuml: yuml\n};\n\nvar amp = \"&\";\nvar apos = \"'\";\nvar gt = \">\";\nvar lt = \"<\";\nvar quot = \"\\\"\";\nvar require$$0$1 = {\n\tamp: amp,\n\tapos: apos,\n\tgt: gt,\n\tlt: lt,\n\tquot: quot\n};\n\nvar decode_codepoint = {};\n\nvar require$$0 = {\n\t\"0\": 65533,\n\t\"128\": 8364,\n\t\"130\": 8218,\n\t\"131\": 402,\n\t\"132\": 8222,\n\t\"133\": 8230,\n\t\"134\": 8224,\n\t\"135\": 8225,\n\t\"136\": 710,\n\t\"137\": 8240,\n\t\"138\": 352,\n\t\"139\": 8249,\n\t\"140\": 338,\n\t\"142\": 381,\n\t\"145\": 8216,\n\t\"146\": 8217,\n\t\"147\": 8220,\n\t\"148\": 8221,\n\t\"149\": 8226,\n\t\"150\": 8211,\n\t\"151\": 8212,\n\t\"152\": 732,\n\t\"153\": 8482,\n\t\"154\": 353,\n\t\"155\": 8250,\n\t\"156\": 339,\n\t\"158\": 382,\n\t\"159\": 376\n};\n\nvar __importDefault$2 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(decode_codepoint, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault$2(require$$0);\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint$2 = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint$2(codePoint);\n}\ndecode_codepoint.default = decodeCodePoint;\n\nvar __importDefault$1 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(decode, \"__esModule\", { value: true });\ndecode.decodeHTML = decode.decodeHTMLStrict = decode.decodeXML = void 0;\nvar entities_json_1$1 = __importDefault$1(require$$1$1);\nvar legacy_json_1 = __importDefault$1(require$$1);\nvar xml_json_1$1 = __importDefault$1(require$$0$1);\nvar decode_codepoint_1 = __importDefault$1(decode_codepoint);\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\ndecode.decodeXML = getStrictDecoder(xml_json_1$1.default);\ndecode.decodeHTMLStrict = getStrictDecoder(entities_json_1$1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\ndecode.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1$1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1$1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n\nvar encode = {};\n\nvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(encode, \"__esModule\", { value: true });\nencode.escapeUTF8 = encode.escape = encode.encodeNonAsciiHTML = encode.encodeHTML = encode.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require$$0$1);\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nencode.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require$$1$1);\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nencode.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nencode.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nencode.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nencode.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = decode;\nvar encode_1 = encode;\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode$1(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode$1;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode$1(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode$1;\nvar encode_2 = encode;\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = decode;\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n}(lib));\n\nvar ENTITY = '&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});';\nvar C_BACKSLASH$1 = 92;\nvar reBackslashOrAmp = /[\\\\&]/;\nvar ESCAPABLE = '[!\"#$%&\\'()*+,./:;<=>?@[\\\\\\\\\\\\]^_`{|}~-]';\nvar reEntityOrEscapedChar = new RegExp(\"\\\\\\\\\" + ESCAPABLE + \"|\" + ENTITY, 'gi');\nvar XMLSPECIAL = '[&<>\"]';\nvar reXmlSpecial = new RegExp(XMLSPECIAL, 'g');\nvar unescapeChar = function (s) {\n if (s.charCodeAt(0) === C_BACKSLASH$1) {\n return s.charAt(1);\n }\n return lib.decodeHTML(s);\n};\n// Replace entities and backslash escapes with literal characters.\nfunction unescapeString(s) {\n if (reBackslashOrAmp.test(s)) {\n return s.replace(reEntityOrEscapedChar, unescapeChar);\n }\n return s;\n}\nfunction normalizeURI(uri) {\n try {\n return encode_1(uri);\n }\n catch (err) {\n return uri;\n }\n}\nfunction replaceUnsafeChar(s) {\n switch (s) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n default:\n return s;\n }\n}\nfunction escapeXml(s) {\n if (reXmlSpecial.test(s)) {\n return s.replace(reXmlSpecial, replaceUnsafeChar);\n }\n return s;\n}\nfunction repeat(str, count) {\n var arr = [];\n for (var i = 0; i < count; i++) {\n arr.push(str);\n }\n return arr.join('');\n}\nfunction isEmpty(str) {\n if (!str) {\n return true;\n }\n return !/[^ \\t]+/.test(str);\n}\n\nvar NodeWalker = /** @class */ (function () {\n function NodeWalker(root) {\n this.current = root;\n this.root = root;\n this.entering = true;\n }\n NodeWalker.prototype.next = function () {\n var cur = this.current;\n var entering = this.entering;\n if (cur === null) {\n return null;\n }\n var container = isContainer$1(cur);\n if (entering && container) {\n if (cur.firstChild) {\n this.current = cur.firstChild;\n this.entering = true;\n }\n else {\n // stay on node but exit\n this.entering = false;\n }\n }\n else if (cur === this.root) {\n this.current = null;\n }\n else if (cur.next === null) {\n this.current = cur.parent;\n this.entering = false;\n }\n else {\n this.current = cur.next;\n this.entering = true;\n }\n return { entering: entering, node: cur };\n };\n NodeWalker.prototype.resumeAt = function (node, entering) {\n this.current = node;\n this.entering = entering === true;\n };\n return NodeWalker;\n}());\n\nfunction isContainer$1(node) {\n switch (node.type) {\n case 'document':\n case 'blockQuote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'strike':\n case 'link':\n case 'image':\n case 'table':\n case 'tableHead':\n case 'tableBody':\n case 'tableRow':\n case 'tableCell':\n case 'tableDelimRow':\n case 'customInline':\n return true;\n default:\n return false;\n }\n}\nvar lastNodeId = 1;\nvar nodeMap = {};\nfunction getNodeById(id) {\n return nodeMap[id];\n}\nfunction removeNodeById(id) {\n delete nodeMap[id];\n}\nfunction removeAllNode() {\n nodeMap = {};\n}\nvar Node$1 = /** @class */ (function () {\n function Node(nodeType, sourcepos) {\n this.parent = null;\n this.prev = null;\n this.next = null;\n // only for container node\n this.firstChild = null;\n this.lastChild = null;\n // only for leaf node\n this.literal = null;\n if (nodeType === 'document') {\n this.id = -1;\n }\n else {\n this.id = lastNodeId++;\n }\n this.type = nodeType;\n this.sourcepos = sourcepos;\n nodeMap[this.id] = this;\n }\n Node.prototype.isContainer = function () {\n return isContainer$1(this);\n };\n Node.prototype.unlink = function () {\n if (this.prev) {\n this.prev.next = this.next;\n }\n else if (this.parent) {\n this.parent.firstChild = this.next;\n }\n if (this.next) {\n this.next.prev = this.prev;\n }\n else if (this.parent) {\n this.parent.lastChild = this.prev;\n }\n this.parent = null;\n this.next = null;\n this.prev = null;\n };\n Node.prototype.replaceWith = function (node) {\n this.insertBefore(node);\n this.unlink();\n };\n Node.prototype.insertAfter = function (sibling) {\n sibling.unlink();\n sibling.next = this.next;\n if (sibling.next) {\n sibling.next.prev = sibling;\n }\n sibling.prev = this;\n this.next = sibling;\n if (this.parent) {\n sibling.parent = this.parent;\n if (!sibling.next) {\n sibling.parent.lastChild = sibling;\n }\n }\n };\n Node.prototype.insertBefore = function (sibling) {\n sibling.unlink();\n sibling.prev = this.prev;\n if (sibling.prev) {\n sibling.prev.next = sibling;\n }\n sibling.next = this;\n this.prev = sibling;\n sibling.parent = this.parent;\n if (!sibling.prev) {\n sibling.parent.firstChild = sibling;\n }\n };\n Node.prototype.appendChild = function (child) {\n child.unlink();\n child.parent = this;\n if (this.lastChild) {\n this.lastChild.next = child;\n child.prev = this.lastChild;\n this.lastChild = child;\n }\n else {\n this.firstChild = child;\n this.lastChild = child;\n }\n };\n Node.prototype.prependChild = function (child) {\n child.unlink();\n child.parent = this;\n if (this.firstChild) {\n this.firstChild.prev = child;\n child.next = this.firstChild;\n this.firstChild = child;\n }\n else {\n this.firstChild = child;\n this.lastChild = child;\n }\n };\n Node.prototype.walker = function () {\n return new NodeWalker(this);\n };\n return Node;\n}());\nvar BlockNode = /** @class */ (function (_super) {\n __extends(BlockNode, _super);\n function BlockNode(nodeType, sourcepos) {\n var _this = _super.call(this, nodeType, sourcepos) || this;\n // temporal data (for parsing)\n _this.open = true;\n _this.lineOffsets = null;\n _this.stringContent = null;\n _this.lastLineBlank = false;\n _this.lastLineChecked = false;\n _this.type = nodeType;\n return _this;\n }\n return BlockNode;\n}(Node$1));\nvar ListNode = /** @class */ (function (_super) {\n __extends(ListNode, _super);\n function ListNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.listData = null;\n return _this;\n }\n return ListNode;\n}(BlockNode));\nvar HeadingNode = /** @class */ (function (_super) {\n __extends(HeadingNode, _super);\n function HeadingNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.level = 0;\n _this.headingType = 'atx';\n return _this;\n }\n return HeadingNode;\n}(BlockNode));\nvar CodeBlockNode = /** @class */ (function (_super) {\n __extends(CodeBlockNode, _super);\n function CodeBlockNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isFenced = false;\n _this.fenceChar = null;\n _this.fenceLength = 0;\n _this.fenceOffset = -1;\n _this.info = null;\n _this.infoPadding = 0;\n return _this;\n }\n return CodeBlockNode;\n}(BlockNode));\nvar TableNode = /** @class */ (function (_super) {\n __extends(TableNode, _super);\n function TableNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.columns = [];\n return _this;\n }\n return TableNode;\n}(BlockNode));\nvar TableCellNode = /** @class */ (function (_super) {\n __extends(TableCellNode, _super);\n function TableCellNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.startIdx = 0;\n _this.endIdx = 0;\n _this.paddingLeft = 0;\n _this.paddingRight = 0;\n _this.ignored = false;\n return _this;\n }\n return TableCellNode;\n}(BlockNode));\nvar RefDefNode = /** @class */ (function (_super) {\n __extends(RefDefNode, _super);\n function RefDefNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.title = '';\n _this.dest = '';\n _this.label = '';\n return _this;\n }\n return RefDefNode;\n}(BlockNode));\nvar CustomBlockNode = /** @class */ (function (_super) {\n __extends(CustomBlockNode, _super);\n function CustomBlockNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.syntaxLength = 0;\n _this.offset = -1;\n _this.info = '';\n return _this;\n }\n return CustomBlockNode;\n}(BlockNode));\nvar HtmlBlockNode = /** @class */ (function (_super) {\n __extends(HtmlBlockNode, _super);\n function HtmlBlockNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.htmlBlockType = -1;\n return _this;\n }\n return HtmlBlockNode;\n}(BlockNode));\nvar LinkNode = /** @class */ (function (_super) {\n __extends(LinkNode, _super);\n function LinkNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.destination = null;\n _this.title = null;\n _this.extendedAutolink = false;\n return _this;\n }\n return LinkNode;\n}(Node$1));\nvar CodeNode = /** @class */ (function (_super) {\n __extends(CodeNode, _super);\n function CodeNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.tickCount = 0;\n return _this;\n }\n return CodeNode;\n}(Node$1));\nvar CustomInlineNode = /** @class */ (function (_super) {\n __extends(CustomInlineNode, _super);\n function CustomInlineNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.info = '';\n return _this;\n }\n return CustomInlineNode;\n}(Node$1));\nfunction createNode$1(type, sourcepos) {\n switch (type) {\n case 'heading':\n return new HeadingNode(type, sourcepos);\n case 'list':\n case 'item':\n return new ListNode(type, sourcepos);\n case 'link':\n case 'image':\n return new LinkNode(type, sourcepos);\n case 'codeBlock':\n return new CodeBlockNode(type, sourcepos);\n case 'htmlBlock':\n return new HtmlBlockNode(type, sourcepos);\n case 'table':\n return new TableNode(type, sourcepos);\n case 'tableCell':\n return new TableCellNode(type, sourcepos);\n case 'document':\n case 'paragraph':\n case 'blockQuote':\n case 'thematicBreak':\n case 'tableRow':\n case 'tableBody':\n case 'tableHead':\n case 'frontMatter':\n return new BlockNode(type, sourcepos);\n case 'code':\n return new CodeNode(type, sourcepos);\n case 'refDef':\n return new RefDefNode(type, sourcepos);\n case 'customBlock':\n return new CustomBlockNode(type, sourcepos);\n case 'customInline':\n return new CustomInlineNode(type, sourcepos);\n default:\n return new Node$1(type, sourcepos);\n }\n}\nfunction isCodeBlock(node) {\n return node.type === 'codeBlock';\n}\nfunction isHtmlBlock(node) {\n return node.type === 'htmlBlock';\n}\nfunction isHeading(node) {\n return node.type === 'heading';\n}\nfunction isList(node) {\n return node.type === 'list';\n}\nfunction isTable(node) {\n return node.type === 'table';\n}\nfunction isRefDef(node) {\n return node.type === 'refDef';\n}\nfunction isCustomBlock(node) {\n return node.type === 'customBlock';\n}\nfunction isCustomInline(node) {\n return node.type === 'customInline';\n}\nfunction text$1(s, sourcepos) {\n var node = createNode$1('text', sourcepos);\n node.literal = s;\n return node;\n}\n\nvar TAGNAME = '[A-Za-z][A-Za-z0-9-]*';\nvar ATTRIBUTENAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar UNQUOTEDVALUE = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar SINGLEQUOTEDVALUE = \"'[^']*'\";\nvar DOUBLEQUOTEDVALUE = '\"[^\"]*\"';\nvar ATTRIBUTEVALUE = \"(?:\" + UNQUOTEDVALUE + \"|\" + SINGLEQUOTEDVALUE + \"|\" + DOUBLEQUOTEDVALUE + \")\";\nvar ATTRIBUTEVALUESPEC = \"\" + '(?:\\\\s*=\\\\s*' + ATTRIBUTEVALUE + \")\";\nvar ATTRIBUTE = \"\" + '(?:\\\\s+' + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + \"?)\";\nvar OPENTAG = \"<\" + TAGNAME + ATTRIBUTE + \"*\\\\s*/?>\";\nvar CLOSETAG = \"]\";\nvar HTMLCOMMENT = '|';\nvar PROCESSINGINSTRUCTION = '[<][?].*?[?][>]';\nvar DECLARATION = ']*>';\nvar CDATA = '';\nvar HTMLTAG = \"(?:\" + OPENTAG + \"|\" + CLOSETAG + \"|\" + HTMLCOMMENT + \"|\" + PROCESSINGINSTRUCTION + \"|\" + DECLARATION + \"|\" + CDATA + \")\";\nvar reHtmlTag = new RegExp(\"^\" + HTMLTAG, 'i');\n\n// derived from https://github.com/mathiasbynens/String.fromCodePoint\n/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */\nvar fromCodePoint;\nif (String.fromCodePoint) {\n fromCodePoint = function (_) {\n try {\n return String.fromCodePoint(_);\n }\n catch (e) {\n if (e instanceof RangeError) {\n return String.fromCharCode(0xfffd);\n }\n throw e;\n }\n };\n}\nelse {\n var stringFromCharCode_1 = String.fromCharCode;\n var floor_1 = Math.floor;\n fromCodePoint = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = args.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(args[index]);\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n floor_1(codePoint) !== codePoint // not an integer\n ) {\n return String.fromCharCode(0xfffd);\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n }\n else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = (codePoint % 0x400) + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode_1.apply(void 0, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n}\nvar fromCodePoint$1 = fromCodePoint;\n\nvar DOMAIN = '(?:[w-]+.)*[A-Za-z0-9-]+.[A-Za-z0-9-]+';\nvar PATH = '[^<\\\\s]*[^ lastIdx) {\n newNodes.push(text$1(literal.substring(lastIdx, range[0]), sourcepos(lastIdx, range[0] - 1)));\n }\n var linkNode = createNode$1('link', sourcepos.apply(void 0, range));\n linkNode.appendChild(text$1(linkText, sourcepos.apply(void 0, range)));\n linkNode.destination = url;\n linkNode.extendedAutolink = true;\n newNodes.push(linkNode);\n lastIdx = range[1] + 1;\n }\n if (lastIdx < literal.length) {\n newNodes.push(text$1(literal.substring(lastIdx), sourcepos(lastIdx, literal.length - 1)));\n }\n for (var _c = 0, newNodes_1 = newNodes; _c < newNodes_1.length; _c++) {\n var newNode = newNodes_1[_c];\n node.insertBefore(newNode);\n }\n node.unlink();\n }\n };\n while ((event = walker.next())) {\n _loop_1();\n }\n}\n\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n// normalize a reference in reference link (remove []s, trim,\n// collapse internal space, unicode case fold.\n// See commonmark/commonmark.js#168.\nfunction normalizeReference(str) {\n return str\n .slice(1, str.length - 1)\n .trim()\n .replace(/[ \\t\\r\\n]+/, ' ')\n .toLowerCase()\n .toUpperCase();\n}\nfunction iterateObject(obj, iteratee) {\n Object.keys(obj).forEach(function (key) {\n iteratee(key, obj[key]);\n });\n}\nfunction omit(obj) {\n var propNames = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n propNames[_i - 1] = arguments[_i];\n }\n var resultMap = __assign({}, obj);\n propNames.forEach(function (key) {\n delete resultMap[key];\n });\n return resultMap;\n}\nfunction isEmptyObj(obj) {\n return !Object.keys(obj).length;\n}\nfunction clearObj(obj) {\n Object.keys(obj).forEach(function (key) {\n delete obj[key];\n });\n}\n\nvar C_NEWLINE = 10;\nvar C_ASTERISK = 42;\nvar C_UNDERSCORE = 95;\nvar C_BACKTICK = 96;\nvar C_OPEN_BRACKET$1 = 91;\nvar C_CLOSE_BRACKET = 93;\nvar C_TILDE = 126;\nvar C_LESSTHAN$1 = 60;\nvar C_BANG = 33;\nvar C_BACKSLASH = 92;\nvar C_AMPERSAND = 38;\nvar C_OPEN_PAREN = 40;\nvar C_CLOSE_PAREN = 41;\nvar C_COLON = 58;\nvar C_SINGLEQUOTE = 39;\nvar C_DOUBLEQUOTE = 34;\nvar C_DOLLAR = 36;\n// Some regexps used in inline parser:\nvar ESCAPED_CHAR = \"\\\\\\\\\" + ESCAPABLE;\nvar rePunctuation = new RegExp(/[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/);\nvar reLinkTitle = new RegExp(\"^(?:\\\"(\" + ESCAPED_CHAR + \"|[^\\\"\\\\x00])*\\\"\" +\n \"|\" +\n (\"'(\" + ESCAPED_CHAR + \"|[^'\\\\x00])*'\") +\n \"|\" +\n (\"\\\\((\" + ESCAPED_CHAR + \"|[^()\\\\x00])*\\\\))\"));\nvar reLinkDestinationBraces = /^(?:<(?:[^<>\\n\\\\\\x00]|\\\\.)*>)/;\nvar reEscapable = new RegExp(\"^\" + ESCAPABLE);\nvar reEntityHere = new RegExp(\"^\" + ENTITY, 'i');\nvar reTicks = /`+/;\nvar reTicksHere = /^`+/;\nvar reEllipses = /\\.\\.\\./g;\nvar reDash = /--+/g;\nvar reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\nvar reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\\x00-\\x20]*>/i;\nvar reSpnl = /^ *(?:\\n *)?/;\nvar reWhitespaceChar = /^[ \\t\\n\\x0b\\x0c\\x0d]/;\nvar reUnicodeWhitespaceChar = /^\\s/;\nvar reFinalSpace = / *$/;\nvar reInitialSpace = /^ */;\nvar reSpaceAtEndOfLine = /^ *(?:\\n|$)/;\nvar reLinkLabel = /^\\[(?:[^\\\\\\[\\]]|\\\\.){0,1000}\\]/;\n// Matches a string of non-special characters.\nvar reMain = /^[^\\n`\\[\\]\\\\!<&*_'\"~$]+/m;\nvar InlineParser = /** @class */ (function () {\n function InlineParser(options) {\n // An InlineParser keeps track of a subject (a string to be parsed)\n // and a position in that subject.\n this.subject = '';\n this.delimiters = null; // used by handleDelim method\n this.brackets = null;\n this.pos = 0;\n this.lineStartNum = 0;\n this.lineIdx = 0;\n this.lineOffsets = [0];\n this.linePosOffset = 0;\n this.refMap = {};\n this.refLinkCandidateMap = {};\n this.refDefCandidateMap = {};\n this.options = options;\n }\n InlineParser.prototype.sourcepos = function (start, end) {\n var linePosOffset = this.linePosOffset + this.lineOffsets[this.lineIdx];\n var lineNum = this.lineStartNum + this.lineIdx;\n var startpos = [lineNum, start + linePosOffset];\n if (typeof end === 'number') {\n return [startpos, [lineNum, end + linePosOffset]];\n }\n return startpos;\n };\n InlineParser.prototype.nextLine = function () {\n this.lineIdx += 1;\n this.linePosOffset = -this.pos;\n };\n // If re matches at current position in the subject, advance\n // position in subject and return the match; otherwise return null.\n InlineParser.prototype.match = function (re) {\n var m = re.exec(this.subject.slice(this.pos));\n if (m === null) {\n return null;\n }\n this.pos += m.index + m[0].length;\n return m[0];\n };\n // Returns the code for the character at the current subject position, or -1\n // there are no more characters.\n InlineParser.prototype.peek = function () {\n if (this.pos < this.subject.length) {\n return this.subject.charCodeAt(this.pos);\n }\n return -1;\n };\n // Parse zero or more space characters, including at most one newline\n InlineParser.prototype.spnl = function () {\n this.match(reSpnl);\n return true;\n };\n // All of the parsers below try to match something at the current position\n // in the subject. If they succeed in matching anything, they\n // return the inline matched, advancing the subject.\n // Attempt to parse backticks, adding either a backtick code span or a\n // literal sequence of backticks.\n InlineParser.prototype.parseBackticks = function (block) {\n var startpos = this.pos + 1;\n var ticks = this.match(reTicksHere);\n if (ticks === null) {\n return false;\n }\n var afterOpenTicks = this.pos;\n var matched;\n while ((matched = this.match(reTicks)) !== null) {\n if (matched === ticks) {\n var contents = this.subject.slice(afterOpenTicks, this.pos - ticks.length);\n var sourcepos = this.sourcepos(startpos, this.pos);\n var lines = contents.split('\\n');\n if (lines.length > 1) {\n var lastLine = last(lines);\n this.lineIdx += lines.length - 1;\n this.linePosOffset = -(this.pos - lastLine.length - ticks.length);\n sourcepos[1] = this.sourcepos(this.pos);\n contents = lines.join(' ');\n }\n var node = createNode$1('code', sourcepos);\n if (contents.length > 0 &&\n contents.match(/[^ ]/) !== null &&\n contents[0] == ' ' &&\n contents[contents.length - 1] == ' ') {\n node.literal = contents.slice(1, contents.length - 1);\n }\n else {\n node.literal = contents;\n }\n node.tickCount = ticks.length;\n block.appendChild(node);\n return true;\n }\n }\n // If we got here, we didn't match a closing backtick sequence.\n this.pos = afterOpenTicks;\n block.appendChild(text$1(ticks, this.sourcepos(startpos, this.pos - 1)));\n return true;\n };\n // Parse a backslash-escaped special character, adding either the escaped\n // character, a hard line break (if the backslash is followed by a newline),\n // or a literal backslash to the block's children. Assumes current character\n // is a backslash.\n InlineParser.prototype.parseBackslash = function (block) {\n var subj = this.subject;\n var node;\n this.pos += 1;\n var startpos = this.pos;\n if (this.peek() === C_NEWLINE) {\n this.pos += 1;\n node = createNode$1('linebreak', this.sourcepos(this.pos - 1, this.pos));\n block.appendChild(node);\n this.nextLine();\n }\n else if (reEscapable.test(subj.charAt(this.pos))) {\n block.appendChild(text$1(subj.charAt(this.pos), this.sourcepos(startpos, this.pos)));\n this.pos += 1;\n }\n else {\n block.appendChild(text$1('\\\\', this.sourcepos(startpos, startpos)));\n }\n return true;\n };\n // Attempt to parse an autolink (URL or email in pointy brackets).\n InlineParser.prototype.parseAutolink = function (block) {\n var m;\n var dest;\n var node;\n var startpos = this.pos + 1;\n if ((m = this.match(reEmailAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = createNode$1('link', this.sourcepos(startpos, this.pos));\n node.destination = normalizeURI(\"mailto:\" + dest);\n node.title = '';\n node.appendChild(text$1(dest, this.sourcepos(startpos + 1, this.pos - 1)));\n block.appendChild(node);\n return true;\n }\n if ((m = this.match(reAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = createNode$1('link', this.sourcepos(startpos, this.pos));\n node.destination = normalizeURI(dest);\n node.title = '';\n node.appendChild(text$1(dest, this.sourcepos(startpos + 1, this.pos - 1)));\n block.appendChild(node);\n return true;\n }\n return false;\n };\n // Attempt to parse a raw HTML tag.\n InlineParser.prototype.parseHtmlTag = function (block) {\n var startpos = this.pos + 1;\n var m = this.match(reHtmlTag);\n if (m === null) {\n return false;\n }\n var node = createNode$1('htmlInline', this.sourcepos(startpos, this.pos));\n node.literal = m;\n block.appendChild(node);\n return true;\n };\n // Scan a sequence of characters with code cc, and return information about\n // the number of delimiters and whether they are positioned such that\n // they can open and/or close emphasis or strong emphasis. A utility\n // function for strong/emph parsing.\n InlineParser.prototype.scanDelims = function (cc) {\n var numdelims = 0;\n var startpos = this.pos;\n if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n numdelims++;\n this.pos++;\n }\n else {\n while (this.peek() === cc) {\n numdelims++;\n this.pos++;\n }\n }\n if (numdelims === 0 || (numdelims < 2 && (cc === C_TILDE || cc === C_DOLLAR))) {\n this.pos = startpos;\n return null;\n }\n var charBefore = startpos === 0 ? '\\n' : this.subject.charAt(startpos - 1);\n var ccAfter = this.peek();\n var charAfter;\n if (ccAfter === -1) {\n charAfter = '\\n';\n }\n else {\n charAfter = fromCodePoint$1(ccAfter);\n }\n var afterIsWhitespace = reUnicodeWhitespaceChar.test(charAfter);\n var afterIsPunctuation = rePunctuation.test(charAfter);\n var beforeIsWhitespace = reUnicodeWhitespaceChar.test(charBefore);\n var beforeIsPunctuation = rePunctuation.test(charBefore);\n var leftFlanking = !afterIsWhitespace && (!afterIsPunctuation || beforeIsWhitespace || beforeIsPunctuation);\n var rightFlanking = !beforeIsWhitespace && (!beforeIsPunctuation || afterIsWhitespace || afterIsPunctuation);\n var canOpen;\n var canClose;\n if (cc === C_UNDERSCORE) {\n canOpen = leftFlanking && (!rightFlanking || beforeIsPunctuation);\n canClose = rightFlanking && (!leftFlanking || afterIsPunctuation);\n }\n else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n canOpen = leftFlanking && !rightFlanking;\n canClose = rightFlanking;\n }\n else if (cc === C_DOLLAR) {\n canOpen = !afterIsWhitespace;\n canClose = !beforeIsWhitespace;\n }\n else {\n canOpen = leftFlanking;\n canClose = rightFlanking;\n }\n this.pos = startpos;\n return { numdelims: numdelims, canOpen: canOpen, canClose: canClose };\n };\n // Handle a delimiter marker for emphasis or a quote.\n InlineParser.prototype.handleDelim = function (cc, block) {\n var res = this.scanDelims(cc);\n if (!res) {\n return false;\n }\n var numdelims = res.numdelims;\n var startpos = this.pos + 1;\n var contents;\n this.pos += numdelims;\n if (cc === C_SINGLEQUOTE) {\n contents = '\\u2019';\n }\n else if (cc === C_DOUBLEQUOTE) {\n contents = '\\u201C';\n }\n else {\n contents = this.subject.slice(startpos - 1, this.pos);\n }\n var node = text$1(contents, this.sourcepos(startpos, this.pos));\n block.appendChild(node);\n // Add entry to stack for this opener\n if ((res.canOpen || res.canClose) &&\n (this.options.smart || (cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE))) {\n this.delimiters = {\n cc: cc,\n numdelims: numdelims,\n origdelims: numdelims,\n node: node,\n previous: this.delimiters,\n next: null,\n canOpen: res.canOpen,\n canClose: res.canClose,\n };\n if (this.delimiters.previous) {\n this.delimiters.previous.next = this.delimiters;\n }\n }\n return true;\n };\n InlineParser.prototype.removeDelimiter = function (delim) {\n if (delim.previous !== null) {\n delim.previous.next = delim.next;\n }\n if (delim.next === null) {\n // top of stack\n this.delimiters = delim.previous;\n }\n else {\n delim.next.previous = delim.previous;\n }\n };\n InlineParser.prototype.removeDelimitersBetween = function (bottom, top) {\n if (bottom.next !== top) {\n bottom.next = top;\n top.previous = bottom;\n }\n };\n /**\n * Process all delimiters - emphasis, strong emphasis, strikethrough(gfm)\n * If the smart punctuation options is true,\n * convert single/double quotes to corresponding unicode characters.\n **/\n InlineParser.prototype.processEmphasis = function (stackBottom) {\n var _a;\n var opener;\n var closer;\n var oldCloser;\n var openerInl, closerInl;\n var openerFound;\n var oddMatch = false;\n var openersBottom = (_a = {},\n _a[C_UNDERSCORE] = [stackBottom, stackBottom, stackBottom],\n _a[C_ASTERISK] = [stackBottom, stackBottom, stackBottom],\n _a[C_SINGLEQUOTE] = [stackBottom],\n _a[C_DOUBLEQUOTE] = [stackBottom],\n _a[C_TILDE] = [stackBottom],\n _a[C_DOLLAR] = [stackBottom],\n _a);\n // find first closer above stackBottom:\n closer = this.delimiters;\n while (closer !== null && closer.previous !== stackBottom) {\n closer = closer.previous;\n }\n // move forward, looking for closers, and handling each\n while (closer !== null) {\n var closercc = closer.cc;\n var closerEmph = closercc === C_UNDERSCORE || closercc === C_ASTERISK;\n if (!closer.canClose) {\n closer = closer.next;\n }\n else {\n // found emphasis closer. now look back for first matching opener:\n opener = closer.previous;\n openerFound = false;\n while (opener !== null &&\n opener !== stackBottom &&\n opener !== openersBottom[closercc][closerEmph ? closer.origdelims % 3 : 0]) {\n oddMatch =\n closerEmph &&\n (closer.canOpen || opener.canClose) &&\n closer.origdelims % 3 !== 0 &&\n (opener.origdelims + closer.origdelims) % 3 === 0;\n if (opener.cc === closer.cc && opener.canOpen && !oddMatch) {\n openerFound = true;\n break;\n }\n opener = opener.previous;\n }\n oldCloser = closer;\n if (closerEmph || closercc === C_TILDE || closercc === C_DOLLAR) {\n if (!openerFound) {\n closer = closer.next;\n }\n else if (opener) {\n // (null opener check for type narrowing)\n // calculate actual number of delimiters used from closer\n var useDelims = closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1;\n var emptyDelims = closerEmph ? 0 : 1;\n openerInl = opener.node;\n closerInl = closer.node;\n // build contents for new emph element\n var nodeType = closerEmph\n ? useDelims === 1\n ? 'emph'\n : 'strong'\n : 'strike';\n if (closercc === C_DOLLAR) {\n nodeType = 'customInline';\n }\n var newNode = createNode$1(nodeType);\n var openerEndPos = openerInl.sourcepos[1];\n var closerStartPos = closerInl.sourcepos[0];\n newNode.sourcepos = [\n [openerEndPos[0], openerEndPos[1] - useDelims + 1],\n [closerStartPos[0], closerStartPos[1] + useDelims - 1],\n ];\n openerInl.sourcepos[1][1] -= useDelims;\n closerInl.sourcepos[0][1] += useDelims;\n openerInl.literal = openerInl.literal.slice(useDelims);\n closerInl.literal = closerInl.literal.slice(useDelims);\n opener.numdelims -= useDelims;\n closer.numdelims -= useDelims;\n // remove used delimiters from stack elts and inlines\n var tmp = openerInl.next;\n var next = void 0;\n while (tmp && tmp !== closerInl) {\n next = tmp.next;\n tmp.unlink();\n newNode.appendChild(tmp);\n tmp = next;\n }\n // build custom inline node\n if (closercc === C_DOLLAR) {\n var textNode = newNode.firstChild;\n var literal = textNode.literal || '';\n var info = literal.split(/\\s/)[0];\n newNode.info = info;\n if (literal.length <= info.length) {\n textNode.unlink();\n }\n else {\n textNode.sourcepos[0][1] += info.length;\n textNode.literal = literal.replace(info + \" \", '');\n }\n }\n openerInl.insertAfter(newNode);\n // remove elts between opener and closer in delimiters stack\n this.removeDelimitersBetween(opener, closer);\n // if opener has 0 delims, remove it and the inline\n // if opener has 1 delims and character is tilde, remove delimiter only\n if (opener.numdelims <= emptyDelims) {\n if (opener.numdelims === 0) {\n openerInl.unlink();\n }\n this.removeDelimiter(opener);\n }\n // if closer has 0 delims, remove it and the inline\n // if closer has 1 delims and character is tilde, remove delimiter only\n if (closer.numdelims <= emptyDelims) {\n if (closer.numdelims === 0) {\n closerInl.unlink();\n }\n var tempstack = closer.next;\n this.removeDelimiter(closer);\n closer = tempstack;\n }\n }\n }\n else if (closercc === C_SINGLEQUOTE) {\n closer.node.literal = '\\u2019';\n if (openerFound) {\n opener.node.literal = '\\u2018';\n }\n closer = closer.next;\n }\n else if (closercc === C_DOUBLEQUOTE) {\n closer.node.literal = '\\u201D';\n if (openerFound) {\n opener.node.literal = '\\u201C';\n }\n closer = closer.next;\n }\n if (!openerFound) {\n // Set lower bound for future searches for openers:\n openersBottom[closercc][closerEmph ? oldCloser.origdelims % 3 : 0] = oldCloser.previous;\n if (!oldCloser.canOpen) {\n // We can remove a closer that can't be an opener,\n // once we've seen there's no matching opener:\n this.removeDelimiter(oldCloser);\n }\n }\n }\n }\n // remove all delimiters\n while (this.delimiters !== null && this.delimiters !== stackBottom) {\n this.removeDelimiter(this.delimiters);\n }\n };\n // Attempt to parse link title (sans quotes), returning the string\n // or null if no match.\n InlineParser.prototype.parseLinkTitle = function () {\n var title = this.match(reLinkTitle);\n if (title === null) {\n return null;\n }\n // chop off quotes from title and unescape:\n return unescapeString(title.substr(1, title.length - 2));\n };\n // Attempt to parse link destination, returning the string or null if no match.\n InlineParser.prototype.parseLinkDestination = function () {\n var res = this.match(reLinkDestinationBraces);\n if (res === null) {\n if (this.peek() === C_LESSTHAN$1) {\n return null;\n }\n // @TODO handrolled parser; res should be null or the string\n var savepos = this.pos;\n var openparens = 0;\n var c = void 0;\n while ((c = this.peek()) !== -1) {\n if (c === C_BACKSLASH && reEscapable.test(this.subject.charAt(this.pos + 1))) {\n this.pos += 1;\n if (this.peek() !== -1) {\n this.pos += 1;\n }\n }\n else if (c === C_OPEN_PAREN) {\n this.pos += 1;\n openparens += 1;\n }\n else if (c === C_CLOSE_PAREN) {\n if (openparens < 1) {\n break;\n }\n else {\n this.pos += 1;\n openparens -= 1;\n }\n }\n else if (reWhitespaceChar.exec(fromCodePoint$1(c)) !== null) {\n break;\n }\n else {\n this.pos += 1;\n }\n }\n if (this.pos === savepos && c !== C_CLOSE_PAREN) {\n return null;\n }\n if (openparens !== 0) {\n return null;\n }\n res = this.subject.substr(savepos, this.pos - savepos);\n return normalizeURI(unescapeString(res));\n } // chop off surrounding <..>:\n return normalizeURI(unescapeString(res.substr(1, res.length - 2)));\n };\n // Attempt to parse a link label, returning number of characters parsed.\n InlineParser.prototype.parseLinkLabel = function () {\n var m = this.match(reLinkLabel);\n if (m === null || m.length > 1001) {\n return 0;\n }\n return m.length;\n };\n // Add open bracket to delimiter stack and add a text node to block's children.\n InlineParser.prototype.parseOpenBracket = function (block) {\n var startpos = this.pos;\n this.pos += 1;\n var node = text$1('[', this.sourcepos(this.pos, this.pos));\n block.appendChild(node);\n // Add entry to stack for this opener\n this.addBracket(node, startpos, false);\n return true;\n };\n // IF next character is [, and ! delimiter to delimiter stack and\n // add a text node to block's children. Otherwise just add a text node.\n InlineParser.prototype.parseBang = function (block) {\n var startpos = this.pos;\n this.pos += 1;\n if (this.peek() === C_OPEN_BRACKET$1) {\n this.pos += 1;\n var node = text$1('![', this.sourcepos(this.pos - 1, this.pos));\n block.appendChild(node);\n // Add entry to stack for this opener\n this.addBracket(node, startpos + 1, true);\n }\n else {\n var node = text$1('!', this.sourcepos(this.pos, this.pos));\n block.appendChild(node);\n }\n return true;\n };\n // Try to match close bracket against an opening in the delimiter\n // stack. Add either a link or image, or a plain [ character,\n // to block's children. If there is a matching delimiter,\n // remove it from the delimiter stack.\n InlineParser.prototype.parseCloseBracket = function (block) {\n var dest = null;\n var title = null;\n var matched = false;\n this.pos += 1;\n var startpos = this.pos;\n // get last [ or ![\n var opener = this.brackets;\n if (opener === null) {\n // no matched opener, just return a literal\n block.appendChild(text$1(']', this.sourcepos(startpos, startpos)));\n return true;\n }\n if (!opener.active) {\n // no matched opener, just return a literal\n block.appendChild(text$1(']', this.sourcepos(startpos, startpos)));\n // take opener off brackets stack\n this.removeBracket();\n return true;\n }\n // If we got here, open is a potential opener\n var isImage = opener.image;\n // Check to see if we have a link/image\n var savepos = this.pos;\n // Inline link?\n if (this.peek() === C_OPEN_PAREN) {\n this.pos++;\n if (this.spnl() &&\n (dest = this.parseLinkDestination()) !== null &&\n this.spnl() &&\n // make sure there's a space before the title:\n ((reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&\n (title = this.parseLinkTitle())) ||\n true) &&\n this.spnl() &&\n this.peek() === C_CLOSE_PAREN) {\n this.pos += 1;\n matched = true;\n }\n else {\n this.pos = savepos;\n }\n }\n var refLabel = '';\n if (!matched) {\n // Next, see if there's a link label\n var beforelabel = this.pos;\n var n = this.parseLinkLabel();\n if (n > 2) {\n refLabel = this.subject.slice(beforelabel, beforelabel + n);\n }\n else if (!opener.bracketAfter) {\n // Empty or missing second label means to use the first label as the reference.\n // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.\n refLabel = this.subject.slice(opener.index, startpos);\n }\n if (n === 0) {\n // If shortcut reference link, rewind before spaces we skipped.\n this.pos = savepos;\n }\n if (refLabel) {\n refLabel = normalizeReference(refLabel);\n // lookup rawlabel in refMap\n var link = this.refMap[refLabel];\n if (link) {\n dest = link.destination;\n title = link.title;\n matched = true;\n }\n }\n }\n if (matched) {\n var node = createNode$1(isImage ? 'image' : 'link');\n node.destination = dest;\n node.title = title || '';\n node.sourcepos = [opener.startpos, this.sourcepos(this.pos)];\n var tmp = opener.node.next;\n var next = void 0;\n while (tmp) {\n next = tmp.next;\n tmp.unlink();\n node.appendChild(tmp);\n tmp = next;\n }\n block.appendChild(node);\n this.processEmphasis(opener.previousDelimiter);\n this.removeBracket();\n opener.node.unlink();\n // We remove this bracket and processEmphasis will remove later delimiters.\n // Now, for a link, we also deactivate earlier link openers.\n // (no links in links)\n if (!isImage) {\n opener = this.brackets;\n while (opener !== null) {\n if (!opener.image) {\n opener.active = false; // deactivate this opener\n }\n opener = opener.previous;\n }\n }\n if (this.options.referenceDefinition) {\n this.refLinkCandidateMap[block.id] = { node: block, refLabel: refLabel };\n }\n return true;\n } // no match\n this.removeBracket(); // remove this opener from stack\n this.pos = startpos;\n block.appendChild(text$1(']', this.sourcepos(startpos, startpos)));\n if (this.options.referenceDefinition) {\n this.refLinkCandidateMap[block.id] = { node: block, refLabel: refLabel };\n }\n return true;\n };\n InlineParser.prototype.addBracket = function (node, index, image) {\n if (this.brackets !== null) {\n this.brackets.bracketAfter = true;\n }\n this.brackets = {\n node: node,\n startpos: this.sourcepos(index + (image ? 0 : 1)),\n previous: this.brackets,\n previousDelimiter: this.delimiters,\n index: index,\n image: image,\n active: true,\n };\n };\n InlineParser.prototype.removeBracket = function () {\n if (this.brackets) {\n this.brackets = this.brackets.previous;\n }\n };\n // Attempt to parse an entity.\n InlineParser.prototype.parseEntity = function (block) {\n var m;\n var startpos = this.pos + 1;\n if ((m = this.match(reEntityHere))) {\n block.appendChild(text$1(lib.decodeHTML(m), this.sourcepos(startpos, this.pos)));\n return true;\n }\n return false;\n };\n // Parse a run of ordinary characters, or a single character with\n // a special meaning in markdown, as a plain string.\n InlineParser.prototype.parseString = function (block) {\n var m;\n var startpos = this.pos + 1;\n if ((m = this.match(reMain))) {\n if (this.options.smart) {\n var lit = m.replace(reEllipses, '\\u2026').replace(reDash, function (chars) {\n var enCount = 0;\n var emCount = 0;\n if (chars.length % 3 === 0) {\n // If divisible by 3, use all em dashes\n emCount = chars.length / 3;\n }\n else if (chars.length % 2 === 0) {\n // If divisible by 2, use all en dashes\n enCount = chars.length / 2;\n }\n else if (chars.length % 3 === 2) {\n // If 2 extra dashes, use en dash for last 2; em dashes for rest\n enCount = 1;\n emCount = (chars.length - 2) / 3;\n }\n else {\n // Use en dashes for last 4 hyphens; em dashes for rest\n enCount = 2;\n emCount = (chars.length - 4) / 3;\n }\n return repeat('\\u2014', emCount) + repeat('\\u2013', enCount);\n });\n block.appendChild(text$1(lit, this.sourcepos(startpos, this.pos)));\n }\n else {\n var node = text$1(m, this.sourcepos(startpos, this.pos));\n block.appendChild(node);\n }\n return true;\n }\n return false;\n };\n // Parse a newline. If it was preceded by two spaces, return a hard\n // line break; otherwise a soft line break.\n InlineParser.prototype.parseNewline = function (block) {\n this.pos += 1; // assume we're at a \\n\n // check previous node for trailing spaces\n var lastc = block.lastChild;\n if (lastc && lastc.type === 'text' && lastc.literal[lastc.literal.length - 1] === ' ') {\n var hardbreak = lastc.literal[lastc.literal.length - 2] === ' ';\n var litLen = lastc.literal.length;\n lastc.literal = lastc.literal.replace(reFinalSpace, '');\n var finalSpaceLen = litLen - lastc.literal.length;\n lastc.sourcepos[1][1] -= finalSpaceLen;\n block.appendChild(createNode$1(hardbreak ? 'linebreak' : 'softbreak', this.sourcepos(this.pos - finalSpaceLen, this.pos)));\n }\n else {\n block.appendChild(createNode$1('softbreak', this.sourcepos(this.pos, this.pos)));\n }\n this.nextLine();\n this.match(reInitialSpace); // gobble leading spaces in next line\n return true;\n };\n // Attempt to parse a link reference, modifying refmap.\n InlineParser.prototype.parseReference = function (block, refMap) {\n if (!this.options.referenceDefinition) {\n return 0;\n }\n this.subject = block.stringContent;\n this.pos = 0;\n var title = null;\n var startpos = this.pos;\n // label:\n var matchChars = this.parseLinkLabel();\n if (matchChars === 0) {\n return 0;\n }\n var rawlabel = this.subject.substr(0, matchChars);\n // colon:\n if (this.peek() === C_COLON) {\n this.pos++;\n }\n else {\n this.pos = startpos;\n return 0;\n }\n // link url\n this.spnl();\n var dest = this.parseLinkDestination();\n if (dest === null) {\n this.pos = startpos;\n return 0;\n }\n var beforetitle = this.pos;\n this.spnl();\n if (this.pos !== beforetitle) {\n title = this.parseLinkTitle();\n }\n if (title === null) {\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n }\n // make sure we're at line end:\n var atLineEnd = true;\n if (this.match(reSpaceAtEndOfLine) === null) {\n if (title === '') {\n atLineEnd = false;\n }\n else {\n // the potential title we found is not at the line end,\n // but it could still be a legal link reference if we\n // discard the title\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n // and instead check if the link URL is at the line end\n atLineEnd = this.match(reSpaceAtEndOfLine) !== null;\n }\n }\n if (!atLineEnd) {\n this.pos = startpos;\n return 0;\n }\n var normalLabel = normalizeReference(rawlabel);\n if (normalLabel === '') {\n // label must contain non-whitespace characters\n this.pos = startpos;\n return 0;\n }\n var sourcepos = this.getReferenceDefSourcepos(block);\n block.sourcepos[0][0] = sourcepos[1][0] + 1;\n var node = createNode$1('refDef', sourcepos);\n node.title = title;\n node.dest = dest;\n node.label = normalLabel;\n block.insertBefore(node);\n if (!refMap[normalLabel]) {\n refMap[normalLabel] = createRefDefState(node);\n }\n else {\n this.refDefCandidateMap[node.id] = node;\n }\n return this.pos - startpos;\n };\n InlineParser.prototype.mergeTextNodes = function (walker) {\n var event;\n var textNodes = [];\n while ((event = walker.next())) {\n var entering = event.entering, node = event.node;\n if (entering && node.type === 'text') {\n textNodes.push(node);\n }\n else if (textNodes.length === 1) {\n textNodes = [];\n }\n else if (textNodes.length > 1) {\n var firstNode = textNodes[0];\n var lastNode = textNodes[textNodes.length - 1];\n if (firstNode.sourcepos && lastNode.sourcepos) {\n firstNode.sourcepos[1] = lastNode.sourcepos[1];\n }\n firstNode.next = lastNode.next;\n if (firstNode.next) {\n firstNode.next.prev = firstNode;\n }\n for (var i = 1; i < textNodes.length; i += 1) {\n firstNode.literal += textNodes[i].literal;\n textNodes[i].unlink();\n }\n textNodes = [];\n }\n }\n };\n InlineParser.prototype.getReferenceDefSourcepos = function (block) {\n var lines = block.stringContent.split(/\\n|\\r\\n/);\n var passedUrlLine = false;\n var quotationCount = 0;\n var lastLineOffset = { line: 0, ch: 0 };\n for (var i = 0; i < lines.length; i += 1) {\n var line = lines[i];\n if (reWhitespaceChar.test(line)) {\n break;\n }\n if (/\\:/.test(line) && quotationCount === 0) {\n if (passedUrlLine) {\n break;\n }\n var lineOffset = line.indexOf(':') === line.length - 1 ? i + 1 : i;\n lastLineOffset = { line: lineOffset, ch: lines[lineOffset].length };\n passedUrlLine = true;\n }\n // should consider extendable title\n var matched = line.match(/'|\"/g);\n if (matched) {\n quotationCount += matched.length;\n }\n if (quotationCount === 2) {\n lastLineOffset = { line: i, ch: line.length };\n break;\n }\n }\n return [\n [block.sourcepos[0][0], block.sourcepos[0][1]],\n [block.sourcepos[0][0] + lastLineOffset.line, lastLineOffset.ch],\n ];\n };\n // Parse the next inline element in subject, advancing subject position.\n // On success, add the result to block's children and return true.\n // On failure, return false.\n InlineParser.prototype.parseInline = function (block) {\n var _a;\n var res = false;\n var c = this.peek();\n if (c === -1) {\n return false;\n }\n switch (c) {\n case C_NEWLINE:\n res = this.parseNewline(block);\n break;\n case C_BACKSLASH:\n res = this.parseBackslash(block);\n break;\n case C_BACKTICK:\n res = this.parseBackticks(block);\n break;\n case C_ASTERISK:\n case C_UNDERSCORE:\n case C_TILDE:\n case C_DOLLAR:\n res = this.handleDelim(c, block);\n break;\n case C_SINGLEQUOTE:\n case C_DOUBLEQUOTE:\n res = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.smart) && this.handleDelim(c, block);\n break;\n case C_OPEN_BRACKET$1:\n res = this.parseOpenBracket(block);\n break;\n case C_BANG:\n res = this.parseBang(block);\n break;\n case C_CLOSE_BRACKET:\n res = this.parseCloseBracket(block);\n break;\n case C_LESSTHAN$1:\n res = this.parseAutolink(block) || this.parseHtmlTag(block);\n break;\n case C_AMPERSAND:\n res = this.parseEntity(block);\n break;\n default:\n res = this.parseString(block);\n break;\n }\n if (!res) {\n this.pos += 1;\n block.appendChild(text$1(fromCodePoint$1(c), this.sourcepos(this.pos, this.pos + 1)));\n }\n return true;\n };\n // Parse string content in block into inline children,\n // using refmap to resolve references.\n InlineParser.prototype.parse = function (block) {\n this.subject = block.stringContent.trim();\n this.pos = 0;\n this.delimiters = null;\n this.brackets = null;\n this.lineOffsets = block.lineOffsets || [0];\n this.lineIdx = 0;\n this.linePosOffset = 0;\n this.lineStartNum = block.sourcepos[0][0];\n if (isHeading(block)) {\n this.lineOffsets[0] += block.level + 1;\n }\n while (this.parseInline(block)) { }\n block.stringContent = null; // allow raw string to be garbage collected\n this.processEmphasis(null);\n this.mergeTextNodes(block.walker());\n var _a = this.options, extendedAutolinks = _a.extendedAutolinks, customParser = _a.customParser;\n if (extendedAutolinks) {\n convertExtAutoLinks(block.walker(), extendedAutolinks);\n }\n if (customParser && block.firstChild) {\n var event_1;\n var walker = block.firstChild.walker();\n while ((event_1 = walker.next())) {\n var node = event_1.node, entering = event_1.entering;\n if (customParser[node.type]) {\n customParser[node.type](node, { entering: entering, options: this.options });\n }\n }\n }\n };\n return InlineParser;\n}());\n\nvar reTaskListItemMarker = /^\\[([ \\txX])\\][ \\t]+/;\n// finalize for block handler\nfunction taskListItemFinalize(_, block) {\n if (block.firstChild && block.firstChild.type === 'paragraph') {\n var p = block.firstChild;\n var m = p.stringContent.match(reTaskListItemMarker);\n if (m) {\n var mLen = m[0].length;\n p.stringContent = p.stringContent.substring(mLen - 1);\n p.sourcepos[0][1] += mLen;\n p.lineOffsets[0] += mLen;\n block.listData.task = true;\n block.listData.checked = /[xX]/.test(m[1]);\n }\n }\n}\n\nvar table = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableHead' || t === 'tableBody';\n },\n acceptsLines: false,\n};\nvar tableBody$1 = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableRow';\n },\n acceptsLines: false,\n};\nvar tableHead$1 = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableRow' || t === 'tableDelimRow';\n },\n acceptsLines: false,\n};\nvar tableDelimRow = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableDelimCell';\n },\n acceptsLines: false,\n};\nvar tableDelimCell = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\nvar tableRow = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableCell';\n },\n acceptsLines: false,\n};\nvar tableCell = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\n\nvar CODE_INDENT = 4;\nvar C_TAB = 9;\nvar C_GREATERTHAN = 62;\nvar C_LESSTHAN = 60;\nvar C_SPACE = 32;\nvar C_OPEN_BRACKET = 91;\nvar reNonSpace = /[^ \\t\\f\\v\\r\\n]/;\nvar reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;\n// Returns true if block ends with a blank line, descending if needed\n// into lists and sublists.\nfunction endsWithBlankLine(block) {\n var curBlock = block;\n while (curBlock) {\n if (curBlock.lastLineBlank) {\n return true;\n }\n var t = curBlock.type;\n if (!curBlock.lastLineChecked && (t === 'list' || t === 'item')) {\n curBlock.lastLineChecked = true;\n curBlock = curBlock.lastChild;\n }\n else {\n curBlock.lastLineChecked = true;\n break;\n }\n }\n return false;\n}\nfunction peek(ln, pos) {\n if (pos < ln.length) {\n return ln.charCodeAt(pos);\n }\n return -1;\n}\n// Returns true if string contains only space characters.\nfunction isBlank(s) {\n return !reNonSpace.test(s);\n}\nfunction isSpaceOrTab(c) {\n return c === C_SPACE || c === C_TAB;\n}\n\nvar reClosingCustomBlock = /^\\$\\$$/;\nvar customBlock$1 = {\n continue: function (parser, container) {\n var line = parser.currentLine;\n var match = line.match(reClosingCustomBlock);\n if (match) {\n // closing custom block\n parser.lastLineLength = match[0].length;\n parser.finalize(container, parser.lineNumber);\n return 2 /* Finished */;\n }\n // skip optional spaces of custom block offset\n var i = container.offset;\n while (i > 0 && isSpaceOrTab(peek(line, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n return 0 /* Go */;\n },\n finalize: function (_, block) {\n if (block.stringContent === null) {\n return;\n }\n // first line becomes info string\n var content = block.stringContent;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n var infoString = firstLine.match(/^(\\s*)(.*)/);\n block.info = unescapeString(infoString[2].trim());\n block.literal = rest;\n block.stringContent = null;\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\n\nvar noop = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar document$1 = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t !== 'item';\n },\n acceptsLines: false,\n};\nvar list = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function (_, block) {\n var item = block.firstChild;\n while (item) {\n // check for non-final list item ending with blank line:\n if (endsWithBlankLine(item) && item.next) {\n block.listData.tight = false;\n break;\n }\n // recurse into children of list item, to see if there are\n // spaces between any of them:\n var subitem = item.firstChild;\n while (subitem) {\n if (endsWithBlankLine(subitem) && (item.next || subitem.next)) {\n block.listData.tight = false;\n break;\n }\n subitem = subitem.next;\n }\n item = item.next;\n }\n },\n canContain: function (t) {\n return t === 'item';\n },\n acceptsLines: false,\n};\nvar blockQuote$1 = {\n continue: function (parser) {\n var ln = parser.currentLine;\n if (!parser.indented && peek(ln, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n if (isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n }\n else {\n return 1 /* Stop */;\n }\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t !== 'item';\n },\n acceptsLines: false,\n};\nvar item = {\n continue: function (parser, container) {\n if (parser.blank) {\n if (container.firstChild === null) {\n // Blank line after empty list item\n return 1 /* Stop */;\n }\n parser.advanceNextNonspace();\n }\n else if (parser.indent >= container.listData.markerOffset + container.listData.padding) {\n parser.advanceOffset(container.listData.markerOffset + container.listData.padding, true);\n }\n else {\n return 1 /* Stop */;\n }\n return 0 /* Go */;\n },\n finalize: taskListItemFinalize,\n canContain: function (t) {\n return t !== 'item';\n },\n acceptsLines: false,\n};\nvar heading = {\n continue: function () {\n // a heading can never container > 1 line, so fail to match:\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\nvar thematicBreak$1 = {\n continue: function () {\n // a thematic break can never container > 1 line, so fail to match:\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\nvar codeBlock = {\n continue: function (parser, container) {\n var ln = parser.currentLine;\n var indent = parser.indent;\n if (container.isFenced) {\n // fenced\n var match = indent <= 3 &&\n ln.charAt(parser.nextNonspace) === container.fenceChar &&\n ln.slice(parser.nextNonspace).match(reClosingCodeFence);\n if (match && match[0].length >= container.fenceLength) {\n // closing fence - we're at end of line, so we can return\n parser.lastLineLength = parser.offset + indent + match[0].length;\n parser.finalize(container, parser.lineNumber);\n return 2 /* Finished */;\n }\n // skip optional spaces of fence offset\n var i = container.fenceOffset;\n while (i > 0 && isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n }\n else {\n // indented\n if (indent >= CODE_INDENT) {\n parser.advanceOffset(CODE_INDENT, true);\n }\n else if (parser.blank) {\n parser.advanceNextNonspace();\n }\n else {\n return 1 /* Stop */;\n }\n }\n return 0 /* Go */;\n },\n finalize: function (_, block) {\n var _a;\n if (block.stringContent === null) {\n return;\n }\n if (block.isFenced) {\n // fenced\n // first line becomes info string\n var content = block.stringContent;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n var infoString = firstLine.match(/^(\\s*)(.*)/);\n block.infoPadding = infoString[1].length;\n block.info = unescapeString(infoString[2].trim());\n block.literal = rest;\n }\n else {\n // indented\n block.literal = (_a = block.stringContent) === null || _a === void 0 ? void 0 : _a.replace(/(\\n *)+$/, '\\n');\n }\n block.stringContent = null; // allow GC\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar htmlBlock$1 = {\n continue: function (parser, container) {\n return parser.blank && (container.htmlBlockType === 6 || container.htmlBlockType === 7)\n ? 1 /* Stop */\n : 0 /* Go */;\n },\n finalize: function (_, block) {\n var _a;\n block.literal = ((_a = block.stringContent) === null || _a === void 0 ? void 0 : _a.replace(/(\\n *)+$/, '')) || null;\n block.stringContent = null; // allow GC\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar paragraph = {\n continue: function (parser) {\n return parser.blank ? 1 /* Stop */ : 0 /* Go */;\n },\n finalize: function (parser, block) {\n if (block.stringContent === null) {\n return;\n }\n var pos;\n var hasReferenceDefs = false;\n // try parsing the beginning as link reference definitions:\n while (peek(block.stringContent, 0) === C_OPEN_BRACKET &&\n (pos = parser.inlineParser.parseReference(block, parser.refMap))) {\n block.stringContent = block.stringContent.slice(pos);\n hasReferenceDefs = true;\n }\n if (hasReferenceDefs && isBlank(block.stringContent)) {\n block.unlink();\n }\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar refDef = noop;\nvar frontMatter$2 = noop;\nvar blockHandlers = {\n document: document$1,\n list: list,\n blockQuote: blockQuote$1,\n item: item,\n heading: heading,\n thematicBreak: thematicBreak$1,\n codeBlock: codeBlock,\n htmlBlock: htmlBlock$1,\n paragraph: paragraph,\n table: table,\n tableBody: tableBody$1,\n tableHead: tableHead$1,\n tableRow: tableRow,\n tableCell: tableCell,\n tableDelimRow: tableDelimRow,\n tableDelimCell: tableDelimCell,\n refDef: refDef,\n customBlock: customBlock$1,\n frontMatter: frontMatter$2,\n};\n\nfunction parseRowContent(content) {\n var startIdx = 0;\n var offset = 0;\n var cells = [];\n for (var i = 0; i < content.length; i += 1) {\n if (content[i] === '|' && content[i - 1] !== '\\\\') {\n var cell = content.substring(startIdx, i);\n if (startIdx === 0 && isEmpty(cell)) {\n offset = i + 1;\n }\n else {\n cells.push(cell);\n }\n startIdx = i + 1;\n }\n }\n if (startIdx < content.length) {\n var cell = content.substring(startIdx, content.length);\n if (!isEmpty(cell)) {\n cells.push(cell);\n }\n }\n return [offset, cells];\n}\nfunction generateTableCells(cellType, contents, lineNum, chPos) {\n var cells = [];\n for (var _i = 0, contents_1 = contents; _i < contents_1.length; _i++) {\n var content = contents_1[_i];\n var preSpaces = content.match(/^[ \\t]+/);\n var paddingLeft = preSpaces ? preSpaces[0].length : 0;\n var paddingRight = void 0, trimmed = void 0;\n if (paddingLeft === content.length) {\n paddingLeft = 0;\n paddingRight = 0;\n trimmed = '';\n }\n else {\n var postSpaces = content.match(/[ \\t]+$/);\n paddingRight = postSpaces ? postSpaces[0].length : 0;\n trimmed = content.slice(paddingLeft, content.length - paddingRight);\n }\n var chPosStart = chPos + paddingLeft;\n var tableCell = createNode$1(cellType, [\n [lineNum, chPos],\n [lineNum, chPos + content.length - 1],\n ]);\n tableCell.stringContent = trimmed.replace(/\\\\\\|/g, '|'); // replace esacped pipe(\\|)\n tableCell.startIdx = cells.length;\n tableCell.endIdx = cells.length;\n tableCell.lineOffsets = [chPosStart - 1];\n tableCell.paddingLeft = paddingLeft;\n tableCell.paddingRight = paddingRight;\n cells.push(tableCell);\n chPos += content.length + 1;\n }\n return cells;\n}\nfunction getColumnFromDelimCell(cellNode) {\n var align = null;\n var content = cellNode.stringContent;\n var firstCh = content[0];\n var lastCh = content[content.length - 1];\n if (lastCh === ':') {\n align = firstCh === ':' ? 'center' : 'right';\n }\n else if (firstCh === ':') {\n align = 'left';\n }\n return { align: align };\n}\nvar tableHead = function (parser, container) {\n var stringContent = container.stringContent;\n if (container.type === 'paragraph' && !parser.indented && !parser.blank) {\n var lastNewLineIdx = stringContent.length - 1;\n var lastLineStartIdx = stringContent.lastIndexOf('\\n', lastNewLineIdx - 1) + 1;\n var headerContent = stringContent.slice(lastLineStartIdx, lastNewLineIdx);\n var delimContent = parser.currentLine.slice(parser.nextNonspace);\n var _a = parseRowContent(headerContent), headerOffset = _a[0], headerCells = _a[1];\n var _b = parseRowContent(delimContent), delimOffset = _b[0], delimCells = _b[1];\n var reValidDelimCell_1 = /^[ \\t]*:?-+:?[ \\t]*$/;\n if (\n // not checking if the number of header cells and delimiter cells are the same\n // to consider the case of merged-column (via plugin)\n !headerCells.length ||\n !delimCells.length ||\n delimCells.some(function (cell) { return !reValidDelimCell_1.test(cell); }) ||\n // to prevent to regard setTextHeading as tabel delim cell with 'disallowDeepHeading' option\n (delimCells.length === 1 && delimContent.indexOf('|') !== 0)) {\n return 0 /* None */;\n }\n var lineOffsets = container.lineOffsets;\n var firstLineNum = parser.lineNumber - 1;\n var firstLineStart = last(lineOffsets) + 1;\n var table = createNode$1('table', [\n [firstLineNum, firstLineStart],\n [parser.lineNumber, parser.offset],\n ]);\n // eslint-disable-next-line arrow-body-style\n table.columns = delimCells.map(function () { return ({ align: null }); });\n container.insertAfter(table);\n if (lineOffsets.length === 1) {\n container.unlink();\n }\n else {\n container.stringContent = stringContent.slice(0, lastLineStartIdx);\n var paraLastLineStartIdx = stringContent.lastIndexOf('\\n', lastLineStartIdx - 2) + 1;\n var paraLastLineLen = lastLineStartIdx - paraLastLineStartIdx - 1;\n parser.lastLineLength = lineOffsets[lineOffsets.length - 2] + paraLastLineLen;\n parser.finalize(container, firstLineNum - 1);\n }\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n var tableHead_1 = createNode$1('tableHead', [\n [firstLineNum, firstLineStart],\n [parser.lineNumber, parser.offset],\n ]);\n table.appendChild(tableHead_1);\n var tableHeadRow_1 = createNode$1('tableRow', [\n [firstLineNum, firstLineStart],\n [firstLineNum, firstLineStart + headerContent.length - 1],\n ]);\n var tableDelimRow_1 = createNode$1('tableDelimRow', [\n [parser.lineNumber, parser.nextNonspace + 1],\n [parser.lineNumber, parser.offset],\n ]);\n tableHead_1.appendChild(tableHeadRow_1);\n tableHead_1.appendChild(tableDelimRow_1);\n generateTableCells('tableCell', headerCells, firstLineNum, firstLineStart + headerOffset).forEach(function (cellNode) {\n tableHeadRow_1.appendChild(cellNode);\n });\n var delimCellNodes = generateTableCells('tableDelimCell', delimCells, parser.lineNumber, parser.nextNonspace + 1 + delimOffset);\n delimCellNodes.forEach(function (cellNode) {\n tableDelimRow_1.appendChild(cellNode);\n });\n table.columns = delimCellNodes.map(getColumnFromDelimCell);\n parser.tip = table;\n return 2 /* Leaf */;\n }\n return 0 /* None */;\n};\nvar tableBody = function (parser, container) {\n if ((container.type !== 'table' && container.type !== 'tableBody') ||\n (!parser.blank && parser.currentLine.indexOf('|') === -1)) {\n return 0 /* None */;\n }\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n if (parser.blank) {\n var table_1 = container;\n if (container.type === 'tableBody') {\n table_1 = container.parent;\n parser.finalize(container, parser.lineNumber - 1);\n }\n parser.finalize(table_1, parser.lineNumber - 1);\n return 0 /* None */;\n }\n var tableBody = container;\n if (container.type === 'table') {\n tableBody = parser.addChild('tableBody', parser.nextNonspace);\n tableBody.stringContent = null;\n }\n var tableRow = createNode$1('tableRow', [\n [parser.lineNumber, parser.nextNonspace + 1],\n [parser.lineNumber, parser.currentLine.length],\n ]);\n tableBody.appendChild(tableRow);\n var table = tableBody.parent;\n var content = parser.currentLine.slice(parser.nextNonspace);\n var _a = parseRowContent(content), offset = _a[0], cellContents = _a[1];\n generateTableCells('tableCell', cellContents, parser.lineNumber, parser.nextNonspace + 1 + offset).forEach(function (cellNode, idx) {\n if (idx >= table.columns.length) {\n cellNode.ignored = true;\n }\n tableRow.appendChild(cellNode);\n });\n return 2 /* Leaf */;\n};\n\nvar reCustomBlock = /^(\\$\\$)(\\s*[a-zA-Z])+/;\nvar reCanBeCustomInline = /^(\\$\\$)(\\s*[a-zA-Z])+.*(\\$\\$)/;\nvar customBlock = function (parser) {\n var match;\n if (!parser.indented &&\n !reCanBeCustomInline.test(parser.currentLine) &&\n (match = parser.currentLine.match(reCustomBlock))) {\n var syntaxLength = match[1].length;\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('customBlock', parser.nextNonspace);\n container.syntaxLength = syntaxLength;\n container.offset = parser.indent;\n parser.advanceNextNonspace();\n parser.advanceOffset(syntaxLength, false);\n return 2 /* Leaf */;\n }\n return 0 /* None */;\n};\n\nvar reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;\nvar reHtmlBlockOpen = [\n /./,\n /^<(?:script|pre|style)(?:\\s|>|$)/i,\n /^/,\n /\\?>/,\n />/,\n /\\]\\]>/,\n];\nvar reMaybeSpecial = /^[#`~*+_=<>0-9-;$]/;\nvar reLineEnding$1 = /\\r\\n|\\n|\\r/;\nfunction document$2() {\n return createNode$1('document', [\n [1, 1],\n [0, 0],\n ]);\n}\nvar defaultOptions$1 = {\n smart: false,\n tagFilter: false,\n extendedAutolinks: false,\n disallowedHtmlBlockTags: [],\n referenceDefinition: false,\n disallowDeepHeading: false,\n customParser: null,\n frontMatter: false,\n};\nvar Parser = /** @class */ (function () {\n function Parser(options) {\n this.options = __assign(__assign({}, defaultOptions$1), options);\n this.doc = document$2();\n this.tip = this.doc;\n this.oldtip = this.doc;\n this.lineNumber = 0;\n this.offset = 0;\n this.column = 0;\n this.nextNonspace = 0;\n this.nextNonspaceColumn = 0;\n this.indent = 0;\n this.currentLine = '';\n this.indented = false;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.allClosed = true;\n this.lastMatchedContainer = this.doc;\n this.refMap = {};\n this.refLinkCandidateMap = {};\n this.refDefCandidateMap = {};\n this.lastLineLength = 0;\n this.lines = [];\n if (this.options.frontMatter) {\n blockHandlers.frontMatter = frontMatter;\n blockStarts.unshift(frontMatter$1);\n }\n this.inlineParser = new InlineParser(this.options);\n }\n Parser.prototype.advanceOffset = function (count, columns) {\n if (columns === void 0) { columns = false; }\n var currentLine = this.currentLine;\n var charsToTab, charsToAdvance;\n var c;\n while (count > 0 && (c = currentLine[this.offset])) {\n if (c === '\\t') {\n charsToTab = 4 - (this.column % 4);\n if (columns) {\n this.partiallyConsumedTab = charsToTab > count;\n charsToAdvance = charsToTab > count ? count : charsToTab;\n this.column += charsToAdvance;\n this.offset += this.partiallyConsumedTab ? 0 : 1;\n count -= charsToAdvance;\n }\n else {\n this.partiallyConsumedTab = false;\n this.column += charsToTab;\n this.offset += 1;\n count -= 1;\n }\n }\n else {\n this.partiallyConsumedTab = false;\n this.offset += 1;\n this.column += 1; // assume ascii; block starts are ascii\n count -= 1;\n }\n }\n };\n Parser.prototype.advanceNextNonspace = function () {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n this.partiallyConsumedTab = false;\n };\n Parser.prototype.findNextNonspace = function () {\n var currentLine = this.currentLine;\n var i = this.offset;\n var cols = this.column;\n var c;\n while ((c = currentLine.charAt(i)) !== '') {\n if (c === ' ') {\n i++;\n cols++;\n }\n else if (c === '\\t') {\n i++;\n cols += 4 - (cols % 4);\n }\n else {\n break;\n }\n }\n this.blank = c === '\\n' || c === '\\r' || c === '';\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = this.nextNonspaceColumn - this.column;\n this.indented = this.indent >= CODE_INDENT;\n };\n // Add a line to the block at the tip. We assume the tip\n // can accept lines -- that check should be done before calling this.\n Parser.prototype.addLine = function () {\n if (this.partiallyConsumedTab) {\n this.offset += 1; // skip over tab\n // add space characters:\n var charsToTab = 4 - (this.column % 4);\n this.tip.stringContent += repeat(' ', charsToTab);\n }\n if (this.tip.lineOffsets) {\n this.tip.lineOffsets.push(this.offset);\n }\n else {\n this.tip.lineOffsets = [this.offset];\n }\n this.tip.stringContent += this.currentLine.slice(this.offset) + \"\\n\";\n };\n // Add block of type tag as a child of the tip. If the tip can't\n // accept children, close and finalize it and try its parent,\n // and so on til we find a block that can accept children.\n Parser.prototype.addChild = function (tag, offset) {\n while (!blockHandlers[this.tip.type].canContain(tag)) {\n this.finalize(this.tip, this.lineNumber - 1);\n }\n var columnNumber = offset + 1; // offset 0 = column 1\n var newBlock = createNode$1(tag, [\n [this.lineNumber, columnNumber],\n [0, 0],\n ]);\n newBlock.stringContent = '';\n this.tip.appendChild(newBlock);\n this.tip = newBlock;\n return newBlock;\n };\n // Finalize and close any unmatched blocks.\n Parser.prototype.closeUnmatchedBlocks = function () {\n if (!this.allClosed) {\n // finalize any blocks not matched\n while (this.oldtip !== this.lastMatchedContainer) {\n var parent_1 = this.oldtip.parent;\n this.finalize(this.oldtip, this.lineNumber - 1);\n this.oldtip = parent_1;\n }\n this.allClosed = true;\n }\n };\n // Finalize a block. Close it and do any necessary postprocessing,\n // e.g. creating stringContent from strings, setting the 'tight'\n // or 'loose' status of a list, and parsing the beginnings\n // of paragraphs for reference definitions. Reset the tip to the\n // parent of the closed block.\n Parser.prototype.finalize = function (block, lineNumber) {\n var above = block.parent;\n block.open = false;\n block.sourcepos[1] = [lineNumber, this.lastLineLength];\n blockHandlers[block.type].finalize(this, block);\n this.tip = above;\n };\n // Walk through a block & children recursively, parsing string content\n // into inline content where appropriate.\n Parser.prototype.processInlines = function (block) {\n var event;\n var customParser = this.options.customParser;\n var walker = block.walker();\n this.inlineParser.refMap = this.refMap;\n this.inlineParser.refLinkCandidateMap = this.refLinkCandidateMap;\n this.inlineParser.refDefCandidateMap = this.refDefCandidateMap;\n this.inlineParser.options = this.options;\n while ((event = walker.next())) {\n var node = event.node, entering = event.entering;\n var t = node.type;\n if (customParser && customParser[t]) {\n customParser[t](node, { entering: entering, options: this.options });\n }\n if (!entering &&\n (t === 'paragraph' ||\n t === 'heading' ||\n (t === 'tableCell' && !node.ignored))) {\n this.inlineParser.parse(node);\n }\n }\n };\n // Analyze a line of text and update the document appropriately.\n // We parse markdown text by calling this on each line of input,\n // then finalizing the document.\n Parser.prototype.incorporateLine = function (ln) {\n var container = this.doc;\n this.oldtip = this.tip;\n this.offset = 0;\n this.column = 0;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.lineNumber += 1;\n // replace NUL characters for security\n if (ln.indexOf('\\u0000') !== -1) {\n ln = ln.replace(/\\0/g, '\\uFFFD');\n }\n this.currentLine = ln;\n // For each containing block, try to parse the associated line start.\n // Bail out on failure: container will point to the last matching block.\n // Set allMatched to false if not all containers match.\n var allMatched = true;\n var lastChild;\n while ((lastChild = container.lastChild) && lastChild.open) {\n container = lastChild;\n this.findNextNonspace();\n switch (blockHandlers[container.type]['continue'](this, container)) {\n case 0 /* Go */: // we've matched, keep going\n break;\n case 1 /* Stop */: // we've failed to match a block\n allMatched = false;\n break;\n case 2 /* Finished */: // we've hit end of line for fenced code close and can return\n this.lastLineLength = ln.length;\n return;\n default:\n throw new Error('continue returned illegal value, must be 0, 1, or 2');\n }\n if (!allMatched) {\n container = container.parent; // back up to last matching block\n break;\n }\n }\n this.allClosed = container === this.oldtip;\n this.lastMatchedContainer = container;\n var matchedLeaf = container.type !== 'paragraph' && blockHandlers[container.type].acceptsLines;\n var blockStartsLen = blockStarts.length;\n // Unless last matched container is a code block, try new container starts,\n // adding children to the last matched container:\n while (!matchedLeaf) {\n this.findNextNonspace();\n // this is a little performance optimization:\n if (container.type !== 'table' &&\n container.type !== 'tableBody' &&\n container.type !== 'paragraph' &&\n !this.indented &&\n !reMaybeSpecial.test(ln.slice(this.nextNonspace))) {\n this.advanceNextNonspace();\n break;\n }\n var i = 0;\n while (i < blockStartsLen) {\n var res = blockStarts[i](this, container);\n if (res === 1 /* Container */) {\n container = this.tip;\n break;\n }\n else if (res === 2 /* Leaf */) {\n container = this.tip;\n matchedLeaf = true;\n break;\n }\n else {\n i++;\n }\n }\n if (i === blockStartsLen) {\n // nothing matched\n this.advanceNextNonspace();\n break;\n }\n }\n // What remains at the offset is a text line. Add the text to the\n // appropriate container.\n // First check for a lazy paragraph continuation:\n if (!this.allClosed && !this.blank && this.tip.type === 'paragraph') {\n // lazy paragraph continuation\n this.addLine();\n }\n else {\n // not a lazy continuation\n // finalize any blocks not matched\n this.closeUnmatchedBlocks();\n if (this.blank && container.lastChild) {\n container.lastChild.lastLineBlank = true;\n }\n var t = container.type;\n // Block quote lines are never blank as they start with >\n // and we don't count blanks in fenced code for purposes of tight/loose\n // lists or breaking out of lists. We also don't set _lastLineBlank\n // on an empty list item, or if we just closed a fenced block.\n var lastLineBlank = this.blank &&\n !(t === 'blockQuote' ||\n (isCodeBlock(container) && container.isFenced) ||\n (t === 'item' && !container.firstChild && container.sourcepos[0][0] === this.lineNumber));\n // propagate lastLineBlank up through parents:\n var cont = container;\n while (cont) {\n cont.lastLineBlank = lastLineBlank;\n cont = cont.parent;\n }\n if (blockHandlers[t].acceptsLines) {\n this.addLine();\n // if HtmlBlock, check for end condition\n if (isHtmlBlock(container) &&\n container.htmlBlockType >= 1 &&\n container.htmlBlockType <= 5 &&\n reHtmlBlockClose[container.htmlBlockType].test(this.currentLine.slice(this.offset))) {\n this.lastLineLength = ln.length;\n this.finalize(container, this.lineNumber);\n }\n }\n else if (this.offset < ln.length && !this.blank) {\n // create paragraph container for line\n container = this.addChild('paragraph', this.offset);\n this.advanceNextNonspace();\n this.addLine();\n }\n }\n this.lastLineLength = ln.length;\n };\n // The main parsing function. Returns a parsed document AST.\n Parser.prototype.parse = function (input, lineTexts) {\n this.doc = document$2();\n this.tip = this.doc;\n this.lineNumber = 0;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = '';\n var lines = input.split(reLineEnding$1);\n var len = lines.length;\n this.lines = lineTexts ? lineTexts : lines;\n if (this.options.referenceDefinition) {\n this.clearRefMaps();\n }\n if (input.charCodeAt(input.length - 1) === C_NEWLINE) {\n // ignore last blank line created by final newline\n len -= 1;\n }\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n while (this.tip) {\n this.finalize(this.tip, len);\n }\n this.processInlines(this.doc);\n return this.doc;\n };\n Parser.prototype.partialParseStart = function (lineNumber, lines) {\n this.doc = document$2();\n this.tip = this.doc;\n this.lineNumber = lineNumber - 1;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = '';\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n return this.doc;\n };\n Parser.prototype.partialParseExtends = function (lines) {\n for (var i = 0; i < lines.length; i++) {\n this.incorporateLine(lines[i]);\n }\n };\n Parser.prototype.partialParseFinish = function () {\n while (this.tip) {\n this.finalize(this.tip, this.lineNumber);\n }\n this.processInlines(this.doc);\n };\n Parser.prototype.setRefMaps = function (refMap, refLinkCandidateMap, refDefCandidateMap) {\n this.refMap = refMap;\n this.refLinkCandidateMap = refLinkCandidateMap;\n this.refDefCandidateMap = refDefCandidateMap;\n };\n Parser.prototype.clearRefMaps = function () {\n [this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap].forEach(function (map) {\n clearObj(map);\n });\n };\n return Parser;\n}());\n\nfunction comparePos(p1, p2) {\n if (p1[0] < p2[0]) {\n return 1 /* LT */;\n }\n if (p1[0] > p2[0]) {\n return -1 /* GT */;\n }\n if (p1[1] < p2[1]) {\n return 1 /* LT */;\n }\n if (p1[1] > p2[1]) {\n return -1 /* GT */;\n }\n return 0 /* EQ */;\n}\nfunction compareRangeAndPos(_a, pos) {\n var startPos = _a[0], endPos = _a[1];\n if (comparePos(endPos, pos) === 1 /* LT */) {\n return 1 /* LT */;\n }\n if (comparePos(startPos, pos) === -1 /* GT */) {\n return -1 /* GT */;\n }\n return 0 /* EQ */;\n}\nfunction removeNextUntil(node, last) {\n if (node.parent !== last.parent || node === last) {\n return;\n }\n var next = node.next;\n while (next && next !== last) {\n var temp = next.next;\n for (var _i = 0, _a = ['parent', 'prev', 'next']; _i < _a.length; _i++) {\n var type = _a[_i];\n if (next[type]) {\n removeNodeById(next[type].id);\n next[type] = null;\n }\n }\n next = temp;\n }\n node.next = last.next;\n if (last.next) {\n last.next.prev = node;\n }\n else {\n node.parent.lastChild = node;\n }\n}\nfunction getChildNodes(parent) {\n var nodes = [];\n var curr = parent.firstChild;\n while (curr) {\n nodes.push(curr);\n curr = curr.next;\n }\n return nodes;\n}\nfunction insertNodesBefore(target, nodes) {\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n target.insertBefore(node);\n }\n}\nfunction prependChildNodes(parent, nodes) {\n for (var i = nodes.length - 1; i >= 0; i -= 1) {\n parent.prependChild(nodes[i]);\n }\n}\nfunction updateNextLineNumbers(base, diff) {\n if (!base || !base.parent || diff === 0) {\n return;\n }\n var walker = base.parent.walker();\n walker.resumeAt(base, true);\n var event;\n while ((event = walker.next())) {\n var node = event.node, entering = event.entering;\n if (entering) {\n node.sourcepos[0][0] += diff;\n node.sourcepos[1][0] += diff;\n }\n }\n}\nfunction compareRangeAndLine(_a, line) {\n var startPos = _a[0], endPos = _a[1];\n if (endPos[0] < line) {\n return 1 /* LT */;\n }\n if (startPos[0] > line) {\n return -1 /* GT */;\n }\n return 0 /* EQ */;\n}\nfunction findChildNodeAtLine(parent, line) {\n var node = parent.firstChild;\n while (node) {\n var comp = compareRangeAndLine(node.sourcepos, line);\n if (comp === 0 /* EQ */) {\n return node;\n }\n if (comp === -1 /* GT */) {\n // To consider that top line is blank line\n return node.prev || node;\n }\n node = node.next;\n }\n return parent.lastChild;\n}\nfunction lastLeafNode(node) {\n while (node.lastChild) {\n node = node.lastChild;\n }\n return node;\n}\nfunction sameLineTopAncestor(node) {\n while (node.parent &&\n node.parent.type !== 'document' &&\n node.parent.sourcepos[0][0] === node.sourcepos[0][0]) {\n node = node.parent;\n }\n return node;\n}\nfunction findFirstNodeAtLine(parent, line) {\n var node = parent.firstChild;\n var prev = null;\n while (node) {\n var comp = compareRangeAndLine(node.sourcepos, line);\n if (comp === 0 /* EQ */) {\n if (node.sourcepos[0][0] === line || !node.firstChild) {\n return node;\n }\n prev = node;\n node = node.firstChild;\n }\n else if (comp === -1 /* GT */) {\n break;\n }\n else {\n prev = node;\n node = node.next;\n }\n }\n if (prev) {\n return sameLineTopAncestor(lastLeafNode(prev));\n }\n return null;\n}\nfunction findNodeAtPosition(parent, pos) {\n var node = parent;\n var prev = null;\n while (node) {\n var comp = compareRangeAndPos(node.sourcepos, pos);\n if (comp === 0 /* EQ */) {\n if (node.firstChild) {\n prev = node;\n node = node.firstChild;\n }\n else {\n return node;\n }\n }\n else if (comp === -1 /* GT */) {\n return prev;\n }\n else if (node.next) {\n node = node.next;\n }\n else {\n return prev;\n }\n }\n return node;\n}\nfunction findNodeById(id) {\n return getNodeById(id) || null;\n}\nfunction invokeNextUntil(callback, start, end) {\n if (end === void 0) { end = null; }\n if (start) {\n var walker = start.walker();\n while (start && start !== end) {\n callback(start);\n var next = walker.next();\n if (next) {\n start = next.node;\n }\n else {\n break;\n }\n }\n }\n}\nfunction isUnlinked(id) {\n var node = findNodeById(id);\n if (!node) {\n return true;\n }\n while (node && node.type !== 'document') {\n // eslint-disable-next-line no-loop-func\n if (!node.parent && !node.prev && !node.next) {\n return true;\n }\n node = node.parent;\n }\n return false;\n}\n\nvar reLineEnding = /\\r\\n|\\n|\\r/;\nfunction canBeContinuedListItem(lineText) {\n var spaceMatch = lineText.match(/^[ \\t]+/);\n if (spaceMatch && (spaceMatch[0].length >= 2 || /\\t/.test(spaceMatch[0]))) {\n return true;\n }\n var leftTrimmed = spaceMatch ? lineText.slice(spaceMatch.length) : lineText;\n return reBulletListMarker.test(leftTrimmed) || reOrderedListMarker.test(leftTrimmed);\n}\nfunction canBeContinuedTableBody(lineText) {\n return !isBlank(lineText) && lineText.indexOf('|') !== -1;\n}\nfunction createRefDefState(node) {\n var id = node.id, title = node.title, sourcepos = node.sourcepos, dest = node.dest;\n return {\n id: id,\n title: title,\n sourcepos: sourcepos,\n unlinked: false,\n destination: dest,\n };\n}\nvar ToastMark = /** @class */ (function () {\n function ToastMark(contents, options) {\n this.refMap = {};\n this.refLinkCandidateMap = {};\n this.refDefCandidateMap = {};\n this.referenceDefinition = !!(options === null || options === void 0 ? void 0 : options.referenceDefinition);\n this.parser = new Parser(options);\n this.parser.setRefMaps(this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap);\n this.eventHandlerMap = { change: [] };\n contents = contents || '';\n this.lineTexts = contents.split(reLineEnding);\n this.root = this.parser.parse(contents, this.lineTexts);\n }\n ToastMark.prototype.updateLineTexts = function (startPos, endPos, newText) {\n var _a;\n var startLine = startPos[0], startCol = startPos[1];\n var endLine = endPos[0], endCol = endPos[1];\n var newLines = newText.split(reLineEnding);\n var newLineLen = newLines.length;\n var startLineText = this.lineTexts[startLine - 1];\n var endLineText = this.lineTexts[endLine - 1];\n newLines[0] = startLineText.slice(0, startCol - 1) + newLines[0];\n newLines[newLineLen - 1] = newLines[newLineLen - 1] + endLineText.slice(endCol - 1);\n var removedLineLen = endLine - startLine + 1;\n (_a = this.lineTexts).splice.apply(_a, __spreadArray([startLine - 1, removedLineLen], newLines));\n return newLineLen - removedLineLen;\n };\n ToastMark.prototype.updateRootNodeState = function () {\n if (this.lineTexts.length === 1 && this.lineTexts[0] === '') {\n this.root.lastLineBlank = true;\n this.root.sourcepos = [\n [1, 1],\n [1, 0],\n ];\n return;\n }\n if (this.root.lastChild) {\n this.root.lastLineBlank = this.root.lastChild.lastLineBlank;\n }\n var lineTexts = this.lineTexts;\n var idx = lineTexts.length - 1;\n while (lineTexts[idx] === '') {\n idx -= 1;\n }\n if (lineTexts.length - 2 > idx) {\n idx += 1;\n }\n this.root.sourcepos[1] = [idx + 1, lineTexts[idx].length];\n };\n ToastMark.prototype.replaceRangeNodes = function (startNode, endNode, newNodes) {\n if (!startNode) {\n if (endNode) {\n insertNodesBefore(endNode, newNodes);\n removeNodeById(endNode.id);\n endNode.unlink();\n }\n else {\n prependChildNodes(this.root, newNodes);\n }\n }\n else {\n insertNodesBefore(startNode, newNodes);\n removeNextUntil(startNode, endNode);\n [startNode.id, endNode.id].forEach(function (id) { return removeNodeById(id); });\n startNode.unlink();\n }\n };\n ToastMark.prototype.getNodeRange = function (startPos, endPos) {\n var startNode = findChildNodeAtLine(this.root, startPos[0]);\n var endNode = findChildNodeAtLine(this.root, endPos[0]);\n // extend node range to include a following block which doesn't have preceding blank line\n if (endNode && endNode.next && endPos[0] + 1 === endNode.next.sourcepos[0][0]) {\n endNode = endNode.next;\n }\n return [startNode, endNode];\n };\n ToastMark.prototype.trigger = function (eventName, param) {\n this.eventHandlerMap[eventName].forEach(function (handler) {\n handler(param);\n });\n };\n ToastMark.prototype.extendEndLine = function (line) {\n while (this.lineTexts[line] === '') {\n line += 1;\n }\n return line;\n };\n ToastMark.prototype.parseRange = function (startNode, endNode, startLine, endLine) {\n // extends starting range if the first node can be a continued list item\n if (startNode &&\n startNode.prev &&\n ((isList(startNode.prev) && canBeContinuedListItem(this.lineTexts[startLine - 1])) ||\n (isTable(startNode.prev) && canBeContinuedTableBody(this.lineTexts[startLine - 1])))) {\n startNode = startNode.prev;\n startLine = startNode.sourcepos[0][0];\n }\n var editedLines = this.lineTexts.slice(startLine - 1, endLine);\n var root = this.parser.partialParseStart(startLine, editedLines);\n // extends ending range if the following node can be a fenced code block or a continued list item\n var nextNode = endNode ? endNode.next : this.root.firstChild;\n var lastChild = root.lastChild;\n var isOpenedLastChildCodeBlock = lastChild && isCodeBlock(lastChild) && lastChild.open;\n var isOpenedLastChildCustomBlock = lastChild && isCustomBlock(lastChild) && lastChild.open;\n var isLastChildList = lastChild && isList(lastChild);\n while (((isOpenedLastChildCodeBlock || isOpenedLastChildCustomBlock) && nextNode) ||\n (isLastChildList && nextNode && (nextNode.type === 'list' || nextNode.sourcepos[0][1] >= 2))) {\n var newEndLine = this.extendEndLine(nextNode.sourcepos[1][0]);\n this.parser.partialParseExtends(this.lineTexts.slice(endLine, newEndLine));\n if (!startNode) {\n startNode = endNode;\n }\n endNode = nextNode;\n endLine = newEndLine;\n nextNode = nextNode.next;\n }\n this.parser.partialParseFinish();\n var newNodes = getChildNodes(root);\n return { newNodes: newNodes, extStartNode: startNode, extEndNode: endNode };\n };\n ToastMark.prototype.getRemovedNodeRange = function (extStartNode, extEndNode) {\n if (!extStartNode ||\n (extStartNode && isRefDef(extStartNode)) ||\n (extEndNode && isRefDef(extEndNode))) {\n return null;\n }\n return {\n id: [extStartNode.id, extEndNode.id],\n line: [extStartNode.sourcepos[0][0] - 1, extEndNode.sourcepos[1][0] - 1],\n };\n };\n ToastMark.prototype.markDeletedRefMap = function (extStartNode, extEndNode) {\n var _this = this;\n if (!isEmptyObj(this.refMap)) {\n var markDeleted = function (node) {\n if (isRefDef(node)) {\n var refDefState = _this.refMap[node.label];\n if (refDefState && node.id === refDefState.id) {\n refDefState.unlinked = true;\n }\n }\n };\n if (extStartNode) {\n invokeNextUntil(markDeleted, extStartNode.parent, extEndNode);\n }\n if (extEndNode) {\n invokeNextUntil(markDeleted, extEndNode);\n }\n }\n };\n ToastMark.prototype.replaceWithNewRefDefState = function (nodes) {\n var _this = this;\n if (!isEmptyObj(this.refMap)) {\n var replaceWith_1 = function (node) {\n if (isRefDef(node)) {\n var label = node.label;\n var refDefState = _this.refMap[label];\n if (!refDefState || refDefState.unlinked) {\n _this.refMap[label] = createRefDefState(node);\n }\n }\n };\n nodes.forEach(function (node) {\n invokeNextUntil(replaceWith_1, node);\n });\n }\n };\n ToastMark.prototype.replaceWithRefDefCandidate = function () {\n var _this = this;\n if (!isEmptyObj(this.refDefCandidateMap)) {\n iterateObject(this.refDefCandidateMap, function (_, candidate) {\n var label = candidate.label, sourcepos = candidate.sourcepos;\n var refDefState = _this.refMap[label];\n if (!refDefState ||\n refDefState.unlinked ||\n refDefState.sourcepos[0][0] > sourcepos[0][0]) {\n _this.refMap[label] = createRefDefState(candidate);\n }\n });\n }\n };\n ToastMark.prototype.getRangeWithRefDef = function (startLine, endLine, startNode, endNode, lineDiff) {\n if (this.referenceDefinition && !isEmptyObj(this.refMap)) {\n var prevNode = findChildNodeAtLine(this.root, startLine - 1);\n var nextNode = findChildNodeAtLine(this.root, endLine + 1);\n if (prevNode && isRefDef(prevNode) && prevNode !== startNode && prevNode !== endNode) {\n startNode = prevNode;\n startLine = startNode.sourcepos[0][0];\n }\n if (nextNode && isRefDef(nextNode) && nextNode !== startNode && nextNode !== endNode) {\n endNode = nextNode;\n endLine = this.extendEndLine(endNode.sourcepos[1][0] + lineDiff);\n }\n }\n return [startNode, endNode, startLine, endLine];\n };\n ToastMark.prototype.parse = function (startPos, endPos, lineDiff) {\n if (lineDiff === void 0) { lineDiff = 0; }\n var range = this.getNodeRange(startPos, endPos);\n var startNode = range[0], endNode = range[1];\n var startLine = startNode ? Math.min(startNode.sourcepos[0][0], startPos[0]) : startPos[0];\n var endLine = this.extendEndLine((endNode ? Math.max(endNode.sourcepos[1][0], endPos[0]) : endPos[0]) + lineDiff);\n var parseResult = this.parseRange.apply(this, this.getRangeWithRefDef(startLine, endLine, startNode, endNode, lineDiff));\n var newNodes = parseResult.newNodes, extStartNode = parseResult.extStartNode, extEndNode = parseResult.extEndNode;\n var removedNodeRange = this.getRemovedNodeRange(extStartNode, extEndNode);\n var nextNode = extEndNode ? extEndNode.next : this.root.firstChild;\n if (this.referenceDefinition) {\n this.markDeletedRefMap(extStartNode, extEndNode);\n this.replaceRangeNodes(extStartNode, extEndNode, newNodes);\n this.replaceWithNewRefDefState(newNodes);\n }\n else {\n this.replaceRangeNodes(extStartNode, extEndNode, newNodes);\n }\n return { nodes: newNodes, removedNodeRange: removedNodeRange, nextNode: nextNode };\n };\n ToastMark.prototype.parseRefLink = function () {\n var _this = this;\n var result = [];\n if (!isEmptyObj(this.refMap)) {\n iterateObject(this.refMap, function (label, value) {\n if (value.unlinked) {\n delete _this.refMap[label];\n }\n iterateObject(_this.refLinkCandidateMap, function (_, candidate) {\n var node = candidate.node, refLabel = candidate.refLabel;\n if (refLabel === label) {\n result.push(_this.parse(node.sourcepos[0], node.sourcepos[1]));\n }\n });\n });\n }\n return result;\n };\n ToastMark.prototype.removeUnlinkedCandidate = function () {\n if (!isEmptyObj(this.refDefCandidateMap)) {\n [this.refLinkCandidateMap, this.refDefCandidateMap].forEach(function (candidateMap) {\n iterateObject(candidateMap, function (id) {\n if (isUnlinked(id)) {\n delete candidateMap[id];\n }\n });\n });\n }\n };\n ToastMark.prototype.editMarkdown = function (startPos, endPos, newText) {\n var lineDiff = this.updateLineTexts(startPos, endPos, newText);\n var parseResult = this.parse(startPos, endPos, lineDiff);\n var editResult = omit(parseResult, 'nextNode');\n updateNextLineNumbers(parseResult.nextNode, lineDiff);\n this.updateRootNodeState();\n var result = [editResult];\n if (this.referenceDefinition) {\n this.removeUnlinkedCandidate();\n this.replaceWithRefDefCandidate();\n result = result.concat(this.parseRefLink());\n }\n this.trigger('change', result);\n return result;\n };\n ToastMark.prototype.getLineTexts = function () {\n return this.lineTexts;\n };\n ToastMark.prototype.getRootNode = function () {\n return this.root;\n };\n ToastMark.prototype.findNodeAtPosition = function (pos) {\n var node = findNodeAtPosition(this.root, pos);\n if (!node || node === this.root) {\n return null;\n }\n return node;\n };\n ToastMark.prototype.findFirstNodeAtLine = function (line) {\n return findFirstNodeAtLine(this.root, line);\n };\n ToastMark.prototype.on = function (eventName, callback) {\n this.eventHandlerMap[eventName].push(callback);\n };\n ToastMark.prototype.off = function (eventName, callback) {\n var handlers = this.eventHandlerMap[eventName];\n var idx = handlers.indexOf(callback);\n handlers.splice(idx, 1);\n };\n ToastMark.prototype.findNodeById = function (id) {\n return findNodeById(id);\n };\n ToastMark.prototype.removeAllNode = function () {\n removeAllNode();\n };\n return ToastMark;\n}());\n\nvar disallowedTags = [\n 'title',\n 'textarea',\n 'style',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'script',\n 'plaintext',\n];\nvar reDisallowedTag = new RegExp(\"<(/?(?:\" + disallowedTags.join('|') + \")[^>]*>)\", 'ig');\nfunction filterDisallowedTags(str) {\n if (reDisallowedTag.test(str)) {\n return str.replace(reDisallowedTag, function (_, group) { return \"<\" + group; });\n }\n return str;\n}\n\nvar baseConvertors$1 = {\n heading: function (node, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: \"h\" + node.level,\n outerNewLine: true,\n };\n },\n text: function (node) {\n return {\n type: 'text',\n content: node.literal,\n };\n },\n softbreak: function (_, _a) {\n var options = _a.options;\n return {\n type: 'html',\n content: options.softbreak,\n };\n },\n linebreak: function () {\n return {\n type: 'html',\n content: '
\\n',\n };\n },\n emph: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'em',\n };\n },\n strong: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'strong',\n };\n },\n paragraph: function (node, _a) {\n var _b;\n var entering = _a.entering;\n var grandparent = (_b = node.parent) === null || _b === void 0 ? void 0 : _b.parent;\n if (grandparent && grandparent.type === 'list') {\n if (grandparent.listData.tight) {\n return null;\n }\n }\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'p',\n outerNewLine: true,\n };\n },\n thematicBreak: function () {\n return {\n type: 'openTag',\n tagName: 'hr',\n outerNewLine: true,\n selfClose: true,\n };\n },\n blockQuote: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'blockquote',\n outerNewLine: true,\n innerNewLine: true,\n };\n },\n list: function (node, _a) {\n var entering = _a.entering;\n var _b = node.listData, type = _b.type, start = _b.start;\n var tagName = type === 'bullet' ? 'ul' : 'ol';\n var attributes = {};\n if (tagName === 'ol' && start !== null && start !== 1) {\n attributes.start = start.toString();\n }\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: tagName,\n attributes: attributes,\n outerNewLine: true,\n };\n },\n item: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'li',\n outerNewLine: true,\n };\n },\n htmlInline: function (node, _a) {\n var options = _a.options;\n var content = options.tagFilter ? filterDisallowedTags(node.literal) : node.literal;\n return { type: 'html', content: content };\n },\n htmlBlock: function (node, _a) {\n var options = _a.options;\n var content = options.tagFilter ? filterDisallowedTags(node.literal) : node.literal;\n if (options.nodeId) {\n return [\n { type: 'openTag', tagName: 'div', outerNewLine: true },\n { type: 'html', content: content },\n { type: 'closeTag', tagName: 'div', outerNewLine: true },\n ];\n }\n return { type: 'html', content: content, outerNewLine: true };\n },\n code: function (node) {\n return [\n { type: 'openTag', tagName: 'code' },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'code' },\n ];\n },\n codeBlock: function (node) {\n var infoStr = node.info;\n var infoWords = infoStr ? infoStr.split(/\\s+/) : [];\n var codeClassNames = [];\n if (infoWords.length > 0 && infoWords[0].length > 0) {\n codeClassNames.push(\"language-\" + escapeXml(infoWords[0]));\n }\n return [\n { type: 'openTag', tagName: 'pre', outerNewLine: true },\n { type: 'openTag', tagName: 'code', classNames: codeClassNames },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'code' },\n { type: 'closeTag', tagName: 'pre', outerNewLine: true },\n ];\n },\n link: function (node, _a) {\n var entering = _a.entering;\n if (entering) {\n var _b = node, title = _b.title, destination = _b.destination;\n return {\n type: 'openTag',\n tagName: 'a',\n attributes: __assign({ href: escapeXml(destination) }, (title && { title: escapeXml(title) })),\n };\n }\n return { type: 'closeTag', tagName: 'a' };\n },\n image: function (node, _a) {\n var getChildrenText = _a.getChildrenText, skipChildren = _a.skipChildren;\n var _b = node, title = _b.title, destination = _b.destination;\n skipChildren();\n return {\n type: 'openTag',\n tagName: 'img',\n selfClose: true,\n attributes: __assign({ src: escapeXml(destination), alt: getChildrenText(node) }, (title && { title: escapeXml(title) })),\n };\n },\n customBlock: function (node, context, convertors) {\n var info = node.info.trim().toLowerCase();\n var customConvertor = convertors[info];\n if (customConvertor) {\n try {\n return customConvertor(node, context);\n }\n catch (e) {\n console.warn(\"[@toast-ui/editor] - The error occurred when \" + info + \" block node was parsed in markdown renderer: \" + e);\n }\n }\n return [\n { type: 'openTag', tagName: 'div', outerNewLine: true },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'div', outerNewLine: true },\n ];\n },\n frontMatter: function (node) {\n return [\n {\n type: 'openTag',\n tagName: 'div',\n outerNewLine: true,\n // Because front matter is metadata, it should not be render.\n attributes: { style: 'white-space: pre; display: none;' },\n },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'div', outerNewLine: true },\n ];\n },\n customInline: function (node, context, convertors) {\n var _a = node, info = _a.info, firstChild = _a.firstChild;\n var nomalizedInfo = info.trim().toLowerCase();\n var customConvertor = convertors[nomalizedInfo];\n var entering = context.entering;\n if (customConvertor) {\n try {\n return customConvertor(node, context);\n }\n catch (e) {\n console.warn(\"[@toast-ui/editor] - The error occurred when \" + nomalizedInfo + \" inline node was parsed in markdown renderer: \" + e);\n }\n }\n return entering\n ? [\n { type: 'openTag', tagName: 'span' },\n { type: 'text', content: \"$$\" + info + (firstChild ? ' ' : '') },\n ]\n : [\n { type: 'text', content: '$$' },\n { type: 'closeTag', tagName: 'span' },\n ];\n },\n};\n\nvar gfmConvertors = {\n strike: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'del',\n };\n },\n item: function (node, _a) {\n var entering = _a.entering;\n var _b = node.listData, checked = _b.checked, task = _b.task;\n if (entering) {\n var itemTag = {\n type: 'openTag',\n tagName: 'li',\n outerNewLine: true,\n };\n if (task) {\n return [\n itemTag,\n {\n type: 'openTag',\n tagName: 'input',\n selfClose: true,\n attributes: __assign(__assign({}, (checked && { checked: '' })), { disabled: '', type: 'checkbox' }),\n },\n {\n type: 'text',\n content: ' ',\n },\n ];\n }\n return itemTag;\n }\n return {\n type: 'closeTag',\n tagName: 'li',\n outerNewLine: true,\n };\n },\n table: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'table',\n outerNewLine: true,\n };\n },\n tableHead: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'thead',\n outerNewLine: true,\n };\n },\n tableBody: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'tbody',\n outerNewLine: true,\n };\n },\n tableRow: function (node, _a) {\n var entering = _a.entering;\n if (entering) {\n return {\n type: 'openTag',\n tagName: 'tr',\n outerNewLine: true,\n };\n }\n var result = [];\n if (node.lastChild) {\n var columnLen = node.parent.parent.columns.length;\n var lastColIdx = node.lastChild.endIdx;\n for (var i = lastColIdx + 1; i < columnLen; i += 1) {\n result.push({\n type: 'openTag',\n tagName: 'td',\n outerNewLine: true,\n }, {\n type: 'closeTag',\n tagName: 'td',\n outerNewLine: true,\n });\n }\n }\n result.push({\n type: 'closeTag',\n tagName: 'tr',\n outerNewLine: true,\n });\n return result;\n },\n tableCell: function (node, _a) {\n var entering = _a.entering;\n if (node.ignored) {\n return {\n type: 'text',\n content: '',\n };\n }\n var tablePart = node.parent.parent;\n var tagName = tablePart.type === 'tableHead' ? 'th' : 'td';\n var table = tablePart.parent;\n var columnInfo = table.columns[node.startIdx];\n var attributes = (columnInfo === null || columnInfo === void 0 ? void 0 : columnInfo.align) ? { align: columnInfo.align } : null;\n if (entering) {\n return __assign({ type: 'openTag', tagName: tagName, outerNewLine: true }, (attributes && { attributes: attributes }));\n }\n return {\n type: 'closeTag',\n tagName: tagName,\n outerNewLine: true,\n };\n },\n};\n\nvar defaultOptions = {\n softbreak: '\\n',\n gfm: false,\n tagFilter: false,\n nodeId: false,\n};\nfunction getChildrenText(node) {\n var buffer = [];\n var walker = node.walker();\n var event = null;\n while ((event = walker.next())) {\n var node_1 = event.node;\n if (node_1.type === 'text') {\n buffer.push(node_1.literal);\n }\n }\n return buffer.join('');\n}\nvar Renderer = /** @class */ (function () {\n function Renderer(customOptions) {\n this.buffer = [];\n this.options = __assign(__assign({}, defaultOptions), customOptions);\n this.convertors = this.createConvertors();\n delete this.options.convertors;\n }\n Renderer.prototype.createConvertors = function () {\n var convertors = __assign({}, baseConvertors$1);\n if (this.options.gfm) {\n convertors = __assign(__assign({}, convertors), gfmConvertors);\n }\n if (this.options.convertors) {\n var customConvertors_1 = this.options.convertors;\n var nodeTypes = Object.keys(customConvertors_1);\n var defaultConvertors_1 = __assign(__assign({}, baseConvertors$1), gfmConvertors);\n nodeTypes.forEach(function (nodeType) {\n var orgConvertor = convertors[nodeType];\n var convertor = customConvertors_1[nodeType];\n var convertorType = Object.keys(defaultConvertors_1).indexOf(nodeType) === -1\n ? nodeType.toLowerCase()\n : nodeType;\n if (orgConvertor) {\n convertors[convertorType] = function (node, context, convertors) {\n context.origin = function () { return orgConvertor(node, context, convertors); };\n return convertor(node, context);\n };\n }\n else {\n convertors[convertorType] = convertor;\n }\n });\n }\n return convertors;\n };\n Renderer.prototype.getConvertors = function () {\n return this.convertors;\n };\n Renderer.prototype.getOptions = function () {\n return this.options;\n };\n Renderer.prototype.render = function (rootNode) {\n var _this = this;\n this.buffer = [];\n var walker = rootNode.walker();\n var event = null;\n var _loop_1 = function () {\n var node = event.node, entering = event.entering;\n var convertor = this_1.convertors[node.type];\n if (!convertor) {\n return \"continue\";\n }\n var skipped = false;\n var context = {\n entering: entering,\n leaf: !isContainer$1(node),\n options: this_1.options,\n getChildrenText: getChildrenText,\n skipChildren: function () {\n skipped = true;\n },\n };\n var converted = isCustomBlock(node) || isCustomInline(node)\n ? convertor(node, context, this_1.convertors)\n : convertor(node, context);\n if (converted) {\n var htmlNodes = Array.isArray(converted) ? converted : [converted];\n htmlNodes.forEach(function (htmlNode, index) {\n if (htmlNode.type === 'openTag' && _this.options.nodeId && index === 0) {\n if (!htmlNode.attributes) {\n htmlNode.attributes = {};\n }\n htmlNode.attributes['data-nodeid'] = String(node.id);\n }\n _this.renderHTMLNode(htmlNode);\n });\n if (skipped) {\n walker.resumeAt(node, false);\n walker.next();\n }\n }\n };\n var this_1 = this;\n while ((event = walker.next())) {\n _loop_1();\n }\n this.addNewLine();\n return this.buffer.join('');\n };\n Renderer.prototype.renderHTMLNode = function (node) {\n switch (node.type) {\n case 'openTag':\n case 'closeTag':\n this.renderElementNode(node);\n break;\n case 'text':\n this.renderTextNode(node);\n break;\n case 'html':\n this.renderRawHtmlNode(node);\n break;\n // no-default-case\n }\n };\n Renderer.prototype.generateOpenTagString = function (node) {\n var _this = this;\n var tagName = node.tagName, classNames = node.classNames, attributes = node.attributes;\n this.buffer.push(\"<\" + tagName);\n if (classNames && classNames.length > 0) {\n this.buffer.push(\" class=\\\"\" + classNames.join(' ') + \"\\\"\");\n }\n if (attributes) {\n Object.keys(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n _this.buffer.push(\" \" + attrName + \"=\\\"\" + attrValue + \"\\\"\");\n });\n }\n if (node.selfClose) {\n this.buffer.push(' /');\n }\n this.buffer.push('>');\n };\n Renderer.prototype.generateCloseTagString = function (_a) {\n var tagName = _a.tagName;\n this.buffer.push(\"\");\n };\n Renderer.prototype.addNewLine = function () {\n if (this.buffer.length && last(last(this.buffer)) !== '\\n') {\n this.buffer.push('\\n');\n }\n };\n Renderer.prototype.addOuterNewLine = function (node) {\n if (node.outerNewLine) {\n this.addNewLine();\n }\n };\n Renderer.prototype.addInnerNewLine = function (node) {\n if (node.innerNewLine) {\n this.addNewLine();\n }\n };\n Renderer.prototype.renderTextNode = function (node) {\n this.buffer.push(escapeXml(node.content));\n };\n Renderer.prototype.renderRawHtmlNode = function (node) {\n this.addOuterNewLine(node);\n this.buffer.push(node.content);\n this.addOuterNewLine(node);\n };\n Renderer.prototype.renderElementNode = function (node) {\n if (node.type === 'openTag') {\n this.addOuterNewLine(node);\n this.generateOpenTagString(node);\n if (node.selfClose) {\n this.addOuterNewLine(node);\n }\n else {\n this.addInnerNewLine(node);\n }\n }\n else {\n this.addInnerNewLine(node);\n this.generateCloseTagString(node);\n this.addOuterNewLine(node);\n }\n };\n return Renderer;\n}());\n\n/*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\n\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\n\nvar regExpTest = unapply(RegExp.prototype.test);\n\nvar typeErrorCreate = unconstruct(TypeError);\n\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\n\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html$2 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\nvar mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\nvar text = freeze(['#text']);\n\nvar html$1$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\nvar svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.3';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html$2), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Parsing of strict XHTML documents */\n var PARSER_MEDIA_TYPE = void 0;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc = void 0;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$2);\n addToSet(ALLOWED_ATTR, html$1$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/