{"version":3,"sources":["webpack:///../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js"],"names":["extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","ACTIVE","LOAD","PROCESS","ICON","TEXTWRAP","DROPIN","DROPNEXT","FULLROW","SELECTED","DISABLE","CHECK","CHECKBOXWRAP","FOCUS","treeAriaAttr","treeRole","itemRole","listRole","itemText","wrapperRole","FieldsSettings","_super","apply","ActionSettings","NodeAnimationSettings","effect","duration","easing","TreeView","options","element","_this","call","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isInteracted","isRightClick","mouseDownStatus","isDropIn","OldCheckedData","isHiddenItem","TreeView_1","getModuleName","preRender","checkActionNodes","parentNodeCheck","dragStartAction","isAnimate","keyConfigs","escape","end","enter","f2","home","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","space","shiftSpace","ctrlSpace","listBaseOption","expandCollapse","showIcon","expandIconClass","ariaAttributes","expandIconPosition","itemCreated","e","beforeNodeCreate","enableHtmlSanitizer","itemNavigable","fullRowNavigable","updateListProp","fields","aniObj","treeList","isLoaded","isInitalExpand","index","setTouchClass","DDTTreeData","JSON","parse","stringify","dataSource","selectedNodes","setProperties","checkedNodes","expandedNodes","getPersistData","addOnPersist","render","initialRender","initialize","setDataBinding","setDisabledMode","setExpandOnType","disabled","setRipple","wireEditingEvents","allowEditing","setDragAndDrop","allowDragAndDrop","wireEvents","renderComplete","setAttribute","isArray","id","setCssClass","cssClass","setEnableRtl","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","templateComplier","nodeTemplate","classList","add","remove","enableRtl","rippleModel","selector","ignore","rippleFn","iconModel","isCenterRipple","rippleIconFn","isEnabled","setMultiSelect","template","document","querySelectorAll","querySelector","innerHTML","trim","push","isOffline","offline","ready","then","pop","treeData","result","isNumberTypeId","getType","setRootData","renderItems","finalize","catch","trigger","error","executeQuery","getQuery","rootData","mapper","value","query","columns","clone","prop","getActualProperties","_i","_a","keys","col","indexOf","select","from","tableName","addSorting","sortOrder","text","parentID","where","parseFloat","dataType","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","undefined","isChildObject","child","isSorted","level","sortedData","getSortedData","ulElement","createList","createElement","appendChild","rootNodes","loadOnDemand","renderChildNodes","parseInt","toString","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultData","executeLocal","isChecked","resultId","checkDisabledState","hasChildren","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","enablePersistence","checkNodes","count","parentEle","changeState","childNodes","preElement","childCheckedElement","indeterminate","data","contains","node","nodeId","getAttribute","OldCheckedNodes","_loop_1","j","this_1","findIndex","nodeCheck","checkedParent","checkedChild","subChildItems","len","checkboxEle","touchClass","icon","item","insertBefore","checkValue","curData","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","selected","expanded","focusIn","textEle","dataId","renderNodeTemplate","eventArgs","nodeData","selectable","firstElementChild","style","cursor","rippleSpan","parentElement","action","actionValue","ds","groupBy","cusQuery","group","getDataSource","grpItem","itemObj","items","list","isFromExpandAll","expandChild","updateAttributes","eNodes","filter","updateList","updateCheckedProp","iNodes","k","sNodes","selectNode","cNodes","disableExpandAttr","nodes","concat","ensureIndeterminate","liElement","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkDisabledChildren","checkBoxEle","getElementsByClassName","checkedCount","matchedChildNodes","oldChildCount","dataUid_1","rootNodeChecked_1","childNodeChecked_1","forEach","childNode","HTMLElement","parentNodeChecked","parentNode","some","oldNode","getSelectedChildNodeDetails","parentUL","currentParent","dataUid","childKey","parentKey","matchesDataUid","matchNode","childNodePid","map","checkedNodeId","getNodeObject","childElement","checkBoxes","childCheck","isFilter","checkbox","dataUID","closest","li","childIds","parentCheck","checkedState","currentLoadData","isNodeChecked","splice","ele","doCheckBoxAction","doCheck","liEle","updateFieldChecked","updateOldCheckedData","getNodeData","reverse","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","currLi","parent_1","updateIndeterminate","check","subChild","updateChildIndeterminate","parent","indeterminateData","getTreeData","subId","childElementCheck","innerChild","wrapper","state","isPrevent","isAdd","nodeCheckAction","getCheckEvent","observedArgs","cancel","ariaState","frameSpan","removeCheck","ensureStateChange","checked","firstUl","setNodeFocusable","allowTextWrap","updateWrap","renderReactTemplates","hasPid","doExpandAction","isIE","ulEle","liList","calculateWrap","nextElementSibling","height","offsetHeight","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","arr","expandCallback","eUid","callback","doSelectionAction","sUids","sNode","selectGivenNodes","clickHandler","event","isDevice","originalEvent","changedTouches","isIos","elementFromPoint","clientX","clientY","preventContextMenu","which","rippleElement","rippleIcons","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","dataManager","uncheckedItems","childIndex","expandNode","loaded","hideSpinner","start_1","end_1","ul_1","liEle_1","setHeight","activeElement_1","animate","name","animation","expand","timingFunction","begin","overflow","progress","args","display","animateHeight","expandedNode","ul","addExpand","expandArgs","getExpandEvent","collapseAll","colArgs","nodeCollapseAction","start","activeElement","collapse","collapsedNode","removeExpand","toRemove","removeAttribute","visibility","currentHeight","timeStamp","parentLi","eicon","showSpinner","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","doDisableAction","getFields","nodeLevel","dataLevel","getChildMapper","obj","parentId","isRoot","getChildGroup","findChildNodes","findNestedChildNodes","tempField","i_1","objlen","tempArray","idField","items_1","nestedChildNodes","cIcons","curLi","multiSelect","ctrlKey","isActive","unselectNode","getSelectEvent","nodeSelectAction","metaKey","removeSelectAll","shiftKey","startNode","startIndex","endIndex","temp","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","focusOut","updateIdAttr","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","nodeName","liEles","getId","icon_1","keyActionHandler","inpEle","blur","oldText","preventDefault","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","focusNode","pos","getBoundingClientRect","getScrollParent","parentPos","bottom","scrollTop","top","isVisibleInViewport","scrollIntoView","txtWrap","left","window","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","scrollHeight","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","childMatchesCheckedNodes","getChildItems","filteredChildItems","itemValue","String","childStateChange","currentItem","requiresUpdate","shouldPreventUpdate","htmlAttributes","class","childIsCheck","newCheck","validateCheck","length_1","hierChildId","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","selectedItem","fNode","ariaChecked","lastChild","previousSibling","nextSibling","prevNode","endNode","preNode","focus","focusedElement","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","pid","checkboxElement","nodeFields","textContent","tempArr","isStringTemplate","root","slice","destroyTemplate","clearTemplate","reRenderNodes","removeChild","oldClass","newClass","split","editingHandler","oldInpEle","updateOldText","innerEle","className","attrs","getEditEvent","outerHTML","widthSize_1","offsetWidth","isReact","setTimeout","renderTextBox","widthSize","innerHtml","inputObj","createInput","properties","container","width","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","destroy","crudOperation","appendNewText","isInput","updateText","triggerEvent","getNode","newData","innerText","sanitize","getChildNodeObject","newList","toBind","initializeDrag","destroyDrag","virtualEle","dragObj","enableTailMode","enableAutoScroll","dragArea","dragTarget","enableTapHold","tapHoldThreshold","helper","sender","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","cloneNode","children","DRAGITEM","nLen","cNode","body","dragData","dragStart","listItem","getDragEvent","draggedNode","intDestroy","dragCancelAction","drag","cursorAt","targetTouches","dragAction","dragStop","removeVirtualEle","dropTarget","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","out","default","over","drop","dropAction","getOffsetX","touchList","offsetX","getOffsetY","offsetY","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","liArray","dragInstance","draggable","ej2_instances","droppedElement","appendNode","draggedElement","dropAsChildNode","dropAsSiblingNode","pre","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","collapseIcon","childElementCount","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","iconCss","iconClass","position","dropTar","parent_2","parent_3","hasAttribute","clonedNode","droppedNode","droppedNodeData","dropIndex","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","currentLevel","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons_1","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","dropIcon1","createListItemFromJson","offsetParent","refNode","toUpperCase","url","navigateUrl","updated","childObj","nodeType","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","l","slelen","enodes","nodelen","cnodes","m","names","field","getMapperProp","fieldName","touchEditObj","tap","isDoubleTapped","tapCount","wireClickEvent","touchClickObj","wireExpandOnEvent","touchExpandObj","mouseDownHandler","keyboardModule","keyAction","bind","eventName","unWireEvents","matched","el","secondTap","firstTap","setCheckedNodes","nodeChecked","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","a","isParentNodeCheck","updatePosition","isRefreshChild","childValue","updateChildPosition","currID","found","dynamicState","operation","newNode","prevent","crud","matchedArr","changes","addedRecords","deletedRecords","changedRecords","nodesID","fromTable","saveChanges","deleteSuccess","dmFailure","update","editSucess","insert","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","onPropertyChanged","newProp","oldProp","onLoaded","addNodes","ensureVisible","beginEdit","disableNodes","enableNodes","parentsId","expandAll","behavior","preventAnimation","getAllCheckedNodes","getDisabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","parentData","refreshData","newliEle","newTextEle","newIcon","fullEle","tooltip","attr","removeNodes","updateNode","firstNode"],"mappings":"2FAAA,sCACMA,EADN,wEAAIC,GACED,EAAgB,SAAUE,EAAGC,GAQ/B,OAPAH,EAAgBI,OAAOC,gBAAkB,CACvCC,UAAW,cACAC,OAAS,SAAUL,EAAGC,GACjCD,EAAEI,UAAYH,IACX,SAAUD,EAAGC,GAChB,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MAEhCN,EAAGC,IAEnB,SAAUD,EAAGC,GAElB,SAASO,IACPC,KAAKC,YAAcV,EAFrBF,EAAcE,EAAGC,GAIjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,IAAIH,KAG/EK,EAAwC,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAEEjB,EAFEkB,EAAIC,UAAUC,OAChBC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,EAE7F,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QAAW,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,GAC/Q,OAAOH,EAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAe1DM,EAAO,aAEPC,EAAc,qBACdC,EAAa,oBACbC,EAAW,cACXC,EAAW,cAGXC,EAAa,gBAEbC,EAAS,WACTC,EAAO,kBACPC,EAAU,YACVC,EAAO,UACPC,EAAW,iBAWXC,EAAS,YACTC,EAAW,cAIXC,EAAU,YACVC,EAAW,aAGXC,EAAU,YAEVC,EAAQ,UAERC,EAAe,sBAKfC,EAAQ,eAQRC,EAAe,CACjBC,SAAU,QACVC,SAAU,WACVC,SAAU,QACVC,SAAU,GACVC,YAAa,IAKXC,EAA8B,SAAUC,GAE1C,SAASD,IACP,OAAkB,OAAXC,GAAmBA,EAAOC,MAAM7C,KAAMU,YAAcV,KAmB7D,OArBAV,EAAUqD,EAAgBC,GAI1BxC,EAAW,CAAC,YAAS,UAAWuC,EAAezC,UAAW,aAAS,GACnEE,EAAW,CAAC,YAAS,KAAMuC,EAAezC,UAAW,kBAAc,GACnEE,EAAW,CAAC,YAAS,aAAcuC,EAAezC,UAAW,gBAAY,GACzEE,EAAW,CAAC,YAAS,gBAAiBuC,EAAezC,UAAW,mBAAe,GAC/EE,EAAW,CAAC,YAAS,mBAAoBuC,EAAezC,UAAW,sBAAkB,GACrFE,EAAW,CAAC,YAAS,YAAauC,EAAezC,UAAW,eAAW,GACvEE,EAAW,CAAC,YAAS,OAAQuC,EAAezC,UAAW,UAAM,GAC7DE,EAAW,CAAC,YAAS,aAAcuC,EAAezC,UAAW,gBAAY,GACzEE,EAAW,CAAC,YAAS,cAAeuC,EAAezC,UAAW,iBAAa,GAC3EE,EAAW,CAAC,YAAS,aAAcuC,EAAezC,UAAW,gBAAY,GACzEE,EAAW,CAAC,YAAS,OAAQuC,EAAezC,UAAW,aAAS,GAChEE,EAAW,CAAC,YAAS,eAAgBuC,EAAezC,UAAW,kBAAc,GAC7EE,EAAW,CAAC,YAAS,aAAcuC,EAAezC,UAAW,gBAAY,GACzEE,EAAW,CAAC,YAAS,OAAQuC,EAAezC,UAAW,iBAAa,GACpEE,EAAW,CAAC,YAAS,SAAUuC,EAAezC,UAAW,YAAQ,GACjEE,EAAW,CAAC,YAAS,YAAauC,EAAezC,UAAW,eAAW,GACvEE,EAAW,CAAC,YAAS,gBAAiBuC,EAAezC,UAAW,mBAAe,GACxEyC,EAtByB,CAuBhC,KAKEG,EAA8B,SAAUF,GAE1C,SAASE,IACP,OAAkB,OAAXF,GAAmBA,EAAOC,MAAM7C,KAAMU,YAAcV,KAK7D,OAPAV,EAAUwD,EAAgBF,GAI1BxC,EAAW,CAAC,YAAS,cAAe0C,EAAe5C,UAAW,cAAU,GACxEE,EAAW,CAAC,YAAS,MAAO0C,EAAe5C,UAAW,gBAAY,GAClEE,EAAW,CAAC,YAAS,WAAY0C,EAAe5C,UAAW,cAAU,GAC9D4C,EARyB,CAShC,KAKEC,EAAqC,SAAUH,GAEjD,SAASG,IACP,OAAkB,OAAXH,GAAmBA,EAAOC,MAAM7C,KAAMU,YAAcV,KAY7D,OAdAV,EAAUyD,EAAuBH,GAIjCxC,EAAW,CAAC,YAAQ,CAClB4C,OAAQ,UACRC,SAAU,IACVC,OAAQ,UACPJ,IAAkBC,EAAsB7C,UAAW,gBAAY,GAClEE,EAAW,CAAC,YAAQ,CAClB4C,OAAQ,YACRC,SAAU,IACVC,OAAQ,UACPJ,IAAkBC,EAAsB7C,UAAW,cAAU,GACzD6C,EAfgC,CAgBvC,KAaEI,EAAwB,SAAUP,GAEpC,SAASO,EAASC,EAASC,GACzB,IAAIC,EAAQV,EAAOW,KAAKvD,KAAMoD,EAASC,IAAYrD,KAoBnD,OAnBAsD,EAAME,aAAc,EACpBF,EAAMG,eAAgB,EACtBH,EAAMI,eAAiB,GACvBJ,EAAMK,YAAc,GACpBL,EAAMM,SAAW,GACjBN,EAAMO,WAAa,GACnBP,EAAMQ,eAAiB,GACvBR,EAAMS,eAAgB,EACtBT,EAAMU,kBAAmB,EACzBV,EAAMW,aAAc,EACpBX,EAAMY,eAAgB,EAEtBZ,EAAMa,eAAgB,EACtBb,EAAMc,cAAe,EACrBd,EAAMe,cAAe,EACrBf,EAAMgB,iBAAkB,EACxBhB,EAAMiB,UAAW,EACjBjB,EAAMkB,eAAiB,GACvBlB,EAAMmB,cAAe,EACdnB,EAimKT,IAAIoB,EAgDJ,OAvqKApF,EAAU6D,EAAUP,GAwBpB8B,EAAavB,EAObA,EAASjD,UAAUyE,cAAgB,WACjC,MAAO,YAOTxB,EAASjD,UAAU0E,UAAY,WAC7B,IAAItB,EAAQtD,KACZA,KAAK6E,iBAAmB,GACxB7E,KAAK8E,gBAAkB,GACvB9E,KAAK+E,iBAAkB,EACvB/E,KAAKgF,WAAY,EACjBhF,KAAKiF,WAAa,CAChBC,OAAQ,SACRC,IAAK,MACLC,MAAO,QACPC,GAAI,KACJC,KAAM,OACNC,SAAU,YACVC,SAAU,YACVC,UAAW,aACXC,OAAQ,UACRC,SAAU,iBACVC,OAAQ,eACRC,UAAW,aACXC,SAAU,YACVC,QAAS,WACTC,MAAO,SACPC,UAAW,kBACXC,QAAS,gBACTC,WAAY,cACZC,UAAW,aACXC,SAAU,YACVC,OAAQ,uBACRC,KAAM,qBACNC,QAAS,mBACTC,OAAQ,kBACRC,MAAO,iBACPC,MAAO,QACPC,WAAY,cACZC,UAAW,cAEb7G,KAAK8G,eAAiB,CACpBC,gBAAgB,EAChBC,UAAU,EACVC,gBAAiB7F,EACjB8F,eAAgB7E,EAChB8E,mBAAoB,OACpBC,YAAa,SAAUC,GACrB/D,EAAMgE,iBAAiBD,IAEzBE,oBAAqBvH,KAAKuH,oBAC1BC,cAAexH,KAAKyH,kBAEtBzH,KAAK0H,eAAe1H,KAAK2H,QACzB3H,KAAK4H,OAAS,IAAI,IAAU,IAC5B5H,KAAK6H,SAAW,GAChB7H,KAAK8H,UAAW,EAChB9H,KAAK+H,gBAAiB,EACtB/H,KAAK8D,eAAiB,GACtB9D,KAAKgI,MAAQ,EACbhI,KAAKiI,gBACLjI,KAAKkI,YAAcC,KAAKC,MAAMD,KAAKE,UAAUrI,KAAK2H,OAAOW,aACrD,YAAMtI,KAAKuI,gBACbvI,KAAKwI,cAAc,CACjBD,cAAe,KACd,GAED,YAAMvI,KAAKyI,eACbzI,KAAKwI,cAAc,CACjBC,aAAc,KACb,GAED,YAAMzI,KAAK0I,eACb1I,KAAKwI,cAAc,CACjBE,cAAe,KACd,GAEH1I,KAAK+H,gBAAiB,GAS1B5E,EAASjD,UAAUyI,eAAiB,WAElC,OAAO3I,KAAK4I,aADI,CAAC,gBAAiB,eAAgB,mBASpDzF,EAASjD,UAAU2I,OAAS,WAC1B7I,KAAK8I,eAAgB,EACrB9I,KAAK+I,aACL/I,KAAKgJ,gBAAe,GACpBhJ,KAAKiJ,kBACLjJ,KAAKkJ,kBACAlJ,KAAKmJ,UACRnJ,KAAKoJ,YAEPpJ,KAAKqJ,kBAAkBrJ,KAAKsJ,cAC5BtJ,KAAKuJ,eAAevJ,KAAKwJ,kBACpBxJ,KAAKmJ,UACRnJ,KAAKyJ,aAEPzJ,KAAK8I,eAAgB,EACrB9I,KAAK0J,kBAEPvG,EAASjD,UAAU6I,WAAa,WAC9B/I,KAAKqD,QAAQsG,aAAa,OAAQ,SAC7B,YAAM3J,KAAK2H,OAAOW,aAAe1I,MAAMgK,QAAQ5J,KAAK2H,OAAOW,aAAiD,IAAlCtI,KAAK2H,OAAOW,WAAW3H,QACpGX,KAAKqD,QAAQsG,aAAa,wBAAyB3J,KAAKqD,QAAQwG,GAAK,WAEvE7J,KAAK8J,YAAY,KAAM9J,KAAK+J,UAC5B/J,KAAKgK,eACLhK,KAAKiK,WAAWjK,KAAKkK,eACrBlK,KAAKmK,cACLnK,KAAKoK,eAAiBpK,KAAKqK,iBAAiBrK,KAAKsK,eAEnDnH,EAASjD,UAAU+I,gBAAkB,WAC/BjJ,KAAKmJ,UACPnJ,KAAKqD,QAAQkH,UAAUC,IApPd,cAqPTxK,KAAKqD,QAAQsG,aAAa,gBAAiB,UAE3C3J,KAAKqD,QAAQkH,UAAUE,OAvPd,cAwPTzK,KAAKqD,QAAQsG,aAAa,gBAAiB,WAG/CxG,EAASjD,UAAU8J,aAAe,YAC/BhK,KAAK0K,UAAY,IAAW,MAAa,CAAC1K,KAAKqD,SA1R1C,UA4RRF,EAASjD,UAAUkJ,UAAY,WAC7B,IACIuB,EAAc,CAChBC,SAFY,6BAGZC,OAAQ,IAAMjJ,EAAW,OAASD,EAA1B,8BAA4EQ,GAEtFnC,KAAK8K,SAAW,aAAa9K,KAAKqD,QAASsH,GAC3C,IAAII,EAAY,CACdH,SAAU,IAAMhJ,EAAW,OAASD,EACpCqJ,gBAAgB,GAElBhL,KAAKiL,aAAe,aAAajL,KAAKqD,QAAS0H,IAEjD5H,EAASjD,UAAU+J,WAAa,SAAUiB,IACvCA,EAAY,IAAW,MAAa,CAAClL,KAAKqD,SAhS7B,mBAkShBF,EAASjD,UAAUiL,eAAiB,SAAUD,GACxCA,EACFlL,KAAKqD,QAAQsG,aAAa,uBAAwB,QAElD3J,KAAKqD,QAAQsG,aAAa,uBAAwB,UAGtDxG,EAASjD,UAAUmK,iBAAmB,SAAUe,GAC9C,GAAIA,EAAU,CACZpL,KAAKiE,aAAc,EACnBjE,KAAKqD,QAAQkH,UAAUC,IArTX,iBAsTZ,IACE,MAAwB,mBAAbY,GAA2BC,SAASC,iBAAiBF,GAAUzK,OACjE,YAAQ0K,SAASE,cAAcH,GAAUI,UAAUC,QAEnD,YAAQL,GAEjB,MAAO/D,GACP,OAAO,YAAQ+D,IAGnBpL,KAAKqD,QAAQkH,UAAUE,OAhUT,kBAmUhBtH,EAASjD,UAAU8I,eAAiB,SAAUhF,GAC5C,IAAIV,EAAQtD,KACZA,KAAK6H,SAAS6D,KAAK,SACf1L,KAAK2H,OAAOW,sBAAsB,KACpCtI,KAAK2L,UAAY3L,KAAK2H,OAAOW,WAAWA,WAAWsD,QAC/C5L,KAAK2H,OAAOW,WAAWuD,MACzB7L,KAAK2H,OAAOW,WAAWuD,MAAMC,MAAK,SAAUzE,GAC1C/D,EAAMqI,UAAYrI,EAAMqE,OAAOW,WAAWA,WAAWsD,QACjDtI,EAAMqE,OAAOW,sBAAsB,KAAehF,EAAMqI,YAC1DrI,EAAMuE,SAASkE,MACfzI,EAAM0I,SAAW3E,EAAE4E,OACnB3I,EAAM4I,eAAiB5I,EAAM6I,UAC7B7I,EAAM8I,cACN9I,EAAM+I,aAAY,GACY,IAA1B/I,EAAMuE,SAASlH,QAAiB2C,EAAMwE,UACxCxE,EAAMgJ,eAGTC,OAAM,SAAUlF,GACjB/D,EAAMkJ,QAAQ,gBAAiB,CAC7BC,MAAOpF,OAIXrH,KAAK2H,OAAOW,WAAWoE,aAAa1M,KAAK2M,SAAS3M,KAAK2H,SAASmE,MAAK,SAAUzE,GAC7E/D,EAAMuE,SAASkE,MACfzI,EAAM0I,SAAW3E,EAAE4E,OACnB3I,EAAM4I,eAAiB5I,EAAM6I,UAC7B7I,EAAM8I,cACFpI,IACFV,EAAMU,kBAAmB,GAE3BV,EAAM+I,aAAY,GAClB/I,EAAMU,kBAAmB,EACK,IAA1BV,EAAMuE,SAASlH,QAAiB2C,EAAMwE,UACxCxE,EAAMgJ,cAEPC,OAAM,SAAUlF,GACjB/D,EAAMkJ,QAAQ,gBAAiB,CAC7BC,MAAOpF,SAKbrH,KAAK6H,SAASkE,MACV,YAAM/L,KAAK2H,OAAOW,YACpBtI,KAAK4M,SAAW5M,KAAKgM,SAAW,IAEhChM,KAAKgM,SAAW7D,KAAKC,MAAMD,KAAKE,UAAUrI,KAAK2H,OAAOW,aACtDtI,KAAKoM,eAEPpM,KAAKkM,eAAiBlM,KAAKmM,UAC3BnM,KAAKqM,aAAY,IAEU,IAAzBrM,KAAK6H,SAASlH,QAAiBX,KAAK8H,UACtC9H,KAAKsM,YAGTnJ,EAASjD,UAAUyM,SAAW,SAAUE,EAAQC,QAChC,IAAVA,IACFA,EAAQ,MAEV,IACIC,EADAC,EAAU,GAEd,GAAKH,EAAOE,MAcVA,EAAQF,EAAOE,MAAME,YAdJ,CACjBF,EAAQ,IAAI,IAEZ,IADA,IAAIG,EAAOlN,KAAKmN,oBAAoBN,GAC3BO,EAAK,EAAGC,EAAK5N,OAAO6N,KAAKJ,GAAOE,EAAKC,EAAG1M,OAAQyM,IAAM,CAC7D,IAAIG,EAAMF,EAAGD,GACD,eAARG,GAAgC,cAARA,GAA+B,UAARA,GAAqBV,EAAO,GAAKU,IAAgB,QAARA,IAAwD,IAAvCP,EAAQQ,QAAQX,EAAO,GAAKU,KACvIP,EAAQtB,KAAKmB,EAAO,GAAKU,IAG7BR,EAAMU,OAAOT,GACTvN,OAAOS,UAAUJ,eAAeyD,KAAK2J,EAAM,cAC7CH,EAAMW,KAAKb,EAAOc,WAStB,OAJA,IAASC,WAAW5N,KAAK6N,UAAWhB,EAAOiB,KAAMf,GAC5C,YAAMD,IAAW,YAAMD,EAAOkB,WACjChB,EAAMiB,MAAMnB,EAAOkB,SAAU,QAAS/N,KAAKkM,eAAiB+B,WAAWnB,GAASA,GAE3EC,GAET5J,EAASjD,UAAUiM,QAAU,WAC3B,QAAOnM,KAAKgM,SAAS,IAA2D,iBAA/C,YAAShM,KAAK2H,OAAOkC,GAAI7J,KAAKgM,SAAS,KAE1E7I,EAASjD,UAAUkM,YAAc,WAE/B,GADApM,KAAKkO,SAAWlO,KAAKmO,YAAYnO,KAAKgM,SAAUhM,KAAK2H,QAC/B,IAAlB3H,KAAKkO,SAAgB,CACvBlO,KAAKoO,YAAcpO,KAAKqO,eAAerO,KAAKgM,SAAUhM,KAAK2H,OAAOoG,UAClE,IAAIO,EAAYtO,KAAKuO,cAAcvO,KAAKgM,cAAUwC,GAAW,GACzD,YAAMF,GACRtO,KAAK4M,SAAW,GAEhB5M,KAAK4M,SAAW0B,OAGlBtO,KAAK4M,SAAW5M,KAAKgM,UAGzB7I,EAASjD,UAAUuO,cAAgB,WACjC,MAAiC,iBAAtBzO,KAAK2H,OAAO+G,OAMzBvL,EAASjD,UAAUmM,YAAc,SAAUsC,GACzC3O,KAAK8G,eAAeI,eAAe0H,MAAQ,EAC3C,IAAIC,EAAa7O,KAAK8O,cAAc9O,KAAK4M,UACzC5M,KAAK+O,UAAY,IAASC,WAAWhP,KAAKiP,cAAeN,EAAW3O,KAAK4M,SAAWiC,EAAY7O,KAAK8G,gBACrG9G,KAAKqD,QAAQ6L,YAAYlP,KAAK+O,WAC9B,IAAII,EAAYnP,KAAK+O,UAAUzD,iBAAiB,gBAChD,IAA0B,IAAtBtL,KAAKoP,aAEP,IADA,IAAIpO,EAAI,EACDA,EAAImO,EAAUxO,QACnBX,KAAKqP,iBAAiBF,EAAUG,SAAStO,EAAEuO,WAAY,MAAM,EAAM,MAAM,GACzEvO,KAIqB,IADT,aAAU,IAAMO,EAAYvB,KAAKqD,SACnC1C,QAAgBwO,GAAkC,IAArBA,EAAUxO,QAAgBX,KAAKoP,eACxEpP,KAAKwP,aAAaxP,KAAKqD,SAEzBrD,KAAK8E,gBAAkB,GACvB9E,KAAKyP,gBAAkB,GACvBzP,KAAK0P,2BACD1P,KAAK2P,WAAa3P,KAAK4P,eAAiB5P,KAAK8H,UAC/C9H,KAAK6P,0BAQT1M,EAASjD,UAAUwP,yBAA2B,WAE5C,GADA1P,KAAK6D,WAAa,GACd7D,KAAKgM,UAAYhM,KAAK4P,aAAc,CACtC,GAAsB,IAAlB5P,KAAKkO,SAAgB,CAGvB,IAFA,IAAIrB,EAAS7M,KAAK2H,OACdmI,EAAa,IAAI,IAAY9P,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMnB,EAAOmD,UAAW,SAAS,GAAM,IACvGhP,EAAI,EAAGA,EAAI8O,EAAWnP,OAAQK,IAAK,CAC1C,IAAIiP,EAAWH,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMiG,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,KAI5I,IAH6C,IAAzCvP,KAAKyI,aAAa+E,QAAQyC,IAAqBjQ,KAAK8H,UACtD9H,KAAKkQ,mBAAmBD,EAAUH,EAAW9O,IAE3C8O,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOwI,aAGrD,IAFA,IAAItG,EAAKiG,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IACxDuG,EAAY,IAAI,IAAYpQ,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMnB,EAAOkB,SAAU,QAASlE,GAAI,IACnG6E,EAAQ,EAAGA,EAAQ0B,EAAUzP,OAAQ+N,IAAS,CACrD,IAAI2B,EAAUD,EAAUd,SAASZ,EAAMa,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMuG,EAAUd,SAASZ,EAAMa,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MACrG,IAAxCvP,KAAKyI,aAAa+E,QAAQ6C,IAAmBrQ,KAAK2P,WACpD3P,KAAKkQ,mBAAmBG,EAASD,EAAU1B,KAKnD,IAAS1N,EAAI,EAAGA,EAAIhB,KAAKyI,aAAa9H,OAAQK,IAAK,CACjD,IAAIsP,EAAWtQ,KAAK2H,OAChB4I,EAAa,IAAI,IAAYvQ,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMsC,EAASzG,GAAI,QAAS7J,KAAKyI,aAAa6G,SAAStO,EAAEuO,WAAY,MAAM,IAKpJ,GAJIgB,EAAW,IAAMvQ,KAAK2P,YACxB3P,KAAKwQ,sBAAsBF,EAAUC,GACrCvQ,KAAKyQ,wBAAwBF,EAAW,KAEtCA,EAAW5P,OAAS,EAAG,CACzB,IAAI+P,EAAYH,EAAW,GAAGvQ,KAAK2H,OAAOkC,IAAM0G,EAAW,GAAGvQ,KAAK2H,OAAOkC,IAAI0F,WAAa,KACvFvP,KAAKyI,aAAa+E,QAAQkD,IAAc,IAA6C,IAAxC1Q,KAAK6D,WAAW2J,QAAQkD,IACvE1Q,KAAK6D,WAAW6H,KAAKgF,GAIzB,IADA,IAAIC,EAAc,IAAI,IAAY3Q,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMsC,EAASvC,SAAU,QAAS/N,KAAKyI,aAAa6G,SAAStO,EAAEuO,WAAY,MAAM,IAClJvH,EAAQ,EAAGA,EAAQ2I,EAAYhQ,OAAQqH,IAAS,CACnD0I,EAAYC,EAAYrB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM8G,EAAYrB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MACzG,IAA1CvP,KAAKyI,aAAa+E,QAAQkD,IAAqB1Q,KAAK2P,WACtD3P,KAAKkQ,mBAAmBQ,EAAWC,EAAY3I,IAE7ChI,KAAKyI,aAAa+E,QAAQkD,IAAc,IAA6C,IAAxC1Q,KAAK6D,WAAW2J,QAAQkD,IACvE1Q,KAAK6D,WAAW6H,KAAKgF,UAItB,GAAsB,IAAlB1Q,KAAKkO,UAAkBlO,KAAK2H,OAAOW,sBAAsB,KAAetI,KAAK2L,UAAW,CACjG,IAAS3D,EAAQ,EAAGA,EAAQhI,KAAKgM,SAASrL,OAAQqH,IAAS,CACzD,IAAI4I,EAAU5Q,KAAKgM,SAASsD,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM7J,KAAKgM,SAASsD,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,GACrJvP,KAAKgM,SAASsD,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOqI,aAAehQ,KAAK8H,WAAoD,IAAxC9H,KAAKyI,aAAa+E,QAAQoD,IACtH5Q,KAAKkQ,mBAAmBU,EAAS5Q,KAAKgM,SAAShE,IAE7ChI,KAAKyI,aAAa+E,QAAQoD,IAAY,IAA2C,IAAtC5Q,KAAK6D,WAAW2J,QAAQoD,IACrE5Q,KAAK6D,WAAW6H,KAAKkF,GAEvB,IAAIC,EAAa,YAAS7Q,KAAK2H,OAAO+G,MAAMa,WAAYvP,KAAKgM,SAASsD,SAAStH,EAAMuH,WAAY,MAC7FsB,GACF7Q,KAAK8Q,sBAAsBD,EAAY7Q,KAAKgM,SAASsD,SAAStH,EAAMuH,WAAY,MAGpFvP,KAAK6D,WAAa7D,KAAK+Q,kBAAoB/Q,KAAKyI,aAAezI,KAAK6D,WAEtE7D,KAAKwI,cAAc,CACjBC,aAAczI,KAAK6D,aAClB,KAWPV,EAASjD,UAAUsQ,sBAAwB,SAAU3D,EAAQmE,GAC3D,IAAInH,EAAKmH,EAAW,GAAGhR,KAAK2H,OAAOoG,UAAYiD,EAAW,GAAGhR,KAAK2H,OAAOoG,UAAUwB,WAAa,KAC5F0B,EAAQ,EACR5N,EAAUrD,KAAKqD,QAAQkI,cAAc,cAAgByF,EAAW,GAAGhR,KAAK2H,OAAOkC,IAAM,MACrFqH,EAAYlR,KAAKqD,QAAQkI,cAAc,cAAgByF,EAAW,GAAGhR,KAAK2H,OAAOoG,UAAY,MACjG,GAAK1K,GAAY6N,GAgBV,GAAIA,EAAW,CACR,aAAO,IAAMhP,EAAOgP,IAE9BlR,KAAKmR,YAAYD,EAAW,gBAAiB,MAAM,GAAM,QAnBjC,EACgB,IAAtClR,KAAK8E,gBAAgB0I,QAAQ3D,IAC/B7J,KAAK8E,gBAAgB4G,KAAK7B,GAG5B,IADA,IAAIuH,EAAapR,KAAKuO,cAAcvO,KAAKgM,SAAUnC,GAC1C7I,EAAI,EAAGA,EAAIoQ,EAAWzQ,OAAQK,IAAK,CAC1C,IAAIqP,EAAUe,EAAW9B,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMuH,EAAW9B,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MAC/F,IAAxCvP,KAAKyI,aAAa+E,QAAQ6C,IAC5BY,IAEEA,IAAUG,EAAWzQ,SAA6C,IAAnCX,KAAKyI,aAAa+E,QAAQ3D,IAC3D7J,KAAKkQ,mBAAmBrG,GAG5B,IAAIwH,EAAa,IAAI,IAAYrR,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMnB,EAAOhD,GAAI,QAASA,GAAI,IACvG7J,KAAKwQ,sBAAsB3D,EAAQwE,KAcvClO,EAASjD,UAAU2P,uBAAyB,WAC1C,IACIyB,EADAC,EAAgB,aAAU,UAAqBvR,KAAKqD,SAEpDmO,EAAOxR,KAAKgM,SACZhM,KAAKqD,QAAQkH,UAAUkH,SAAS,iBAClCD,EAAOxR,KAAKkI,aAEd,IAAK,IAAIlH,EAAI,EAAGA,EAAIuQ,EAAc5Q,OAAQK,IAAK,CAC7C,IAAI0Q,EAAO,YAAQH,EAAcjC,SAAStO,EAAEuO,WAAY,KAAM,IAAMlO,GAChEsQ,EAASD,EAAKE,aAAa,YAAYrC,WACvCsC,OAAkB,EAClB7R,KAAKqD,QAAQkH,UAAUkH,SAAS,iBAClCI,EAAkB,IAAI,IAAY7R,KAAKwE,gBAAgBuL,cAAa,IAAI,KAAQ/B,MAAM,WAAY,QAAS2D,GAAQ,KAGnHL,EADoB,IAAlBtR,KAAKkO,SACe,IAAI,IAAYsD,GAAMzB,cAAa,IAAI,KAAQ/B,MAAMhO,KAAK2H,OAAOoG,SAAU,QAAS4D,GAAQ,IAE5F3R,KAAKuO,cAAciD,EAAMG,GAEjD,IAAIV,EAAQ,EACZ,GAAIK,EAAqB,CAYvB,IAXA,IAAIQ,EAAU,SAAUC,GACtB,IAAI1B,EAAUiB,EAAoBhC,SAASyC,EAAExC,WAAY,KAAKyC,EAAOrK,OAAOkC,IAAI0F,aAClC,IAA1CyC,EAAOvJ,aAAa+E,QAAQ6C,IAErB2B,EAAO3O,QAAQkH,UAAUkH,SAAS,iBAErC,IAFuDI,EAAgBI,WAAU,SAAU5K,GACjG,OAAOA,EAAM,KAAMgJ,OAFnBY,KAOAe,EAAShS,KACJ+R,EAAI,EAAGA,EAAIT,EAAoB3Q,OAAQoR,IAC9CD,EAAQC,GAEV,GAAId,IAAUK,EAAoB3Q,OAAQ,CACxC,IAAIuR,EAAYR,EAAKE,aAAa,aACY,IAA1C5R,KAAKyI,aAAa+E,QAAQ0E,IAC5BlS,KAAKkQ,mBAAmBgC,GAE1BlS,KAAKmR,YAAYO,EAAM,QAAS,MAAM,GAAM,QACzB,IAAVT,GAA4C,IAA7BjR,KAAKyI,aAAa9H,QAC1CX,KAAKmR,YAAYO,EAAM,UAAW,MAAM,GAAM,MAYtDvO,EAASjD,UAAUuQ,wBAA0B,SAAUe,GACrD,IAAInO,GAEFA,EADoB,IAAlBrD,KAAKkO,SACGlO,KAAKqD,QAAQkI,cAAc,cAAgBiG,EAAKxR,KAAK2H,OAAOoG,UAAY,MAExE/N,KAAKqD,QAAQkI,cAAc,cAAgBiG,EAAKxR,KAAK2H,OAAOkC,IAAM,OAIxD,SADFxG,EAAQuO,aAAa,iBAErC5R,KAAKmR,YAAY9N,EAAS,gBAAiB,MAAM,GAAM,GAE9B,IAAlBrD,KAAKkO,WACyD,IAAnElO,KAAK8E,gBAAgB0I,QAAQgE,EAAKxR,KAAK2H,OAAOkC,IAAI0F,aACpDvP,KAAK8E,gBAAgB4G,KAAK8F,EAAKxR,KAAK2H,OAAOkC,IAAI0F,aAYrDpM,EAASjD,UAAU4Q,sBAAwB,SAAUD,EAAY7E,GAG/D,IAFA,IAAIiF,EAAQ,EACRkB,EAAgBnG,EAAShM,KAAK2H,OAAOkC,IAAMmC,EAAShM,KAAK2H,OAAOkC,IAAI0F,WAAa,GAC5EvH,EAAQ,EAAGA,EAAQ6I,EAAWlQ,OAAQqH,IAAS,CACtD,IAAIoK,EAAevB,EAAWvB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgH,EAAWvB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,GACpJsB,EAAWvB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOqI,aAAehQ,KAAK8H,WAAyD,IAA7C9H,KAAKyI,aAAa+E,QAAQ4E,IACnHpS,KAAKkQ,mBAAmBkC,EAAcvB,EAAW7I,KAED,IAA9ChI,KAAKyI,aAAa+E,QAAQ2E,KAAsE,IAA7CnS,KAAKyI,aAAa+E,QAAQ4E,IAAwBpS,KAAK2P,WAC5G3P,KAAKkQ,mBAAmBkC,EAAcvB,EAAW7I,KAEF,IAA7ChI,KAAKyI,aAAa+E,QAAQ4E,IAAwBpS,KAAK2P,WACzDsB,IAEEjR,KAAKyI,aAAa+E,QAAQ4E,IAAiB,IAAgD,IAA3CpS,KAAK6D,WAAW2J,QAAQ4E,IAC1EpS,KAAK6D,WAAW6H,KAAK0G,GAEvB,IAAIC,EAAgB,YAASrS,KAAK2H,OAAO+G,MAAMa,WAAYsB,EAAWvB,SAAStH,EAAMuH,WAAY,MAC7F8C,GAAiBA,EAAc1R,UACe,IAA5CX,KAAKyP,gBAAgBjC,QAAQxB,IAC/BhM,KAAKyP,gBAAgB/D,KAAKM,GAE5BhM,KAAK8Q,sBAAsBuB,EAAexB,EAAWvB,SAAStH,EAAMuH,WAAY,OAE9E0B,IAAUJ,EAAWlQ,QAAUX,KAAK2P,YAA2D,IAA9C3P,KAAKyI,aAAa+E,QAAQ2E,IAC7EnS,KAAKkQ,mBAAmBiC,EAAenG,GAG3C,GAAc,IAAViF,GAAejR,KAAK2P,UAAW,CACjC3P,KAAKyQ,wBAAwBzE,GAC7B,IAAK,IAAIsG,EAAM,EAAGA,EAAMtS,KAAKyP,gBAAgB9O,OAAQ2R,IAC/CtG,IAAahM,KAAKyP,gBAAgBH,SAASgD,EAAI/C,WAAY,MAAQvP,KAAKyP,gBAAgBH,SAASgD,EAAI/C,WAAY,MACnHvP,KAAKyQ,wBAAwBzQ,KAAKyP,gBAAgBH,SAASgD,EAAI/C,WAAY,MAIjFvP,KAAKyP,gBAAkB,IAEzBtM,EAASjD,UAAUoH,iBAAmB,SAAUD,GAC9C,GAAIrH,KAAK4P,aAAc,CACrB,IAAI2C,EAAc,YAAevS,KAAKiP,eAAe,EAAM,CACzDlF,SAAU/J,KAAKwS,aAEjBD,EAAYhI,UAAUC,IAAIrI,GAC1B,IAAIsQ,EAAO,aAAO,OAASrR,EAAa,SAAWD,EAAakG,EAAEqL,MAC9D7I,EAAKxC,EAAEqL,KAAKd,aAAa,YAC7BvK,EAAEqL,KAAKtB,WAAW,GAAGuB,aAAaJ,EAAalL,EAAEqL,KAAKtB,WAAW,GAAGA,WAAW,YAAMqB,GAAQ,EAAI,IACjG,IAAIG,EAAa,YAASvL,EAAEM,OAAOqI,UAAW3I,EAAEwL,SAC5C7S,KAAKyI,aAAa+E,QAAQ3D,IAAO,GACnC,aAAO,WAAqB0I,GAAahI,UAAUC,IAAItI,GACvDmF,EAAEqL,KAAK/I,aAAa,eAAgB,QACpC3J,KAAK8S,SAASzL,EAAEqL,OACN,YAAME,IAAyC,SAA1BA,EAAWrD,WAK1ClI,EAAEqL,KAAK/I,aAAa,eAAgB,UAJpC,aAAO,WAAqB4I,GAAahI,UAAUC,IAAItI,GACvDmF,EAAEqL,KAAK/I,aAAa,eAAgB,QACpC3J,KAAK8S,SAASzL,EAAEqL,OAIlB,IAAIK,EAAQ,aAAO,WAAqBR,GACxC,IAAa/H,IAAIuI,EAAO,YAAa/S,KAAKgT,kBAAmBhT,MAC7D,IAAawK,IAAIuI,EAAO,UAAW/S,KAAKgT,kBAAmBhT,MAEzDA,KAAKkK,eACPlK,KAAKiT,cAAc5L,EAAEqL,MAEnB1S,KAAKkT,sBAAwB7L,EAAEqL,KAAKnI,UAAUkH,SAASzP,IACzDqF,EAAEqL,KAAK/I,aAAa,gBAAiB,SAEvC,IAAIhC,EAASN,EAAEM,OAKf,GAJA3H,KAAKmT,eAAe9L,EAAGM,EAAOyL,SAAUpR,GACxChC,KAAKmT,eAAe9L,EAAGM,EAAO0L,SAtsBnB,cAusBXhM,EAAEqL,KAAK/I,aAAa,WAAY,MAChC,IAAaa,IAAInD,EAAEqL,KAAM,QAAS1S,KAAKsT,QAAStT,OAC3C,YAAMA,KAAKoK,gBAAiB,CAC/B,IAAImJ,EAAUlM,EAAEqL,KAAKnH,cAAc,IAAMjK,GACrCkS,EAASnM,EAAEqL,KAAKd,aAAa,YACjC2B,EAAQ/H,UAAY,GACpBxL,KAAKyT,mBAAmBpM,EAAEwL,QAASU,EAASC,GAE9C,IAAIE,EAAY,CACdhC,KAAMrK,EAAEqL,KACRiB,SAAUtM,EAAEwL,QACZ/E,KAAMzG,EAAEyG,MAEL9N,KAAKwD,cACRxD,KAAKwM,QAAQ,WAAYkH,IACiB,IAAtCrM,EAAEwL,QAAQ7S,KAAK2H,OAAOiM,aAA0B5T,KAAK4P,eACvDvI,EAAEqL,KAAKnI,UAAUC,IArsBL,aAssBKnD,EAAEqL,KAAKmB,kBACbC,MAAMC,OAAS,iBAIhC5Q,EAASjD,UAAU8S,kBAAoB,SAAU3L,GAC/C,IAAI2M,EAAa,aAAO,sBAAsB3M,EAAE/G,OAAO2T,eACvD,YAAmB5M,EAAG2M,IAExB7Q,EAASjD,UAAUiT,eAAiB,SAAU9L,EAAG6M,EAAQnK,GACvD,IAAIyH,EAAOnK,EAAEwL,QACTsB,EAAc,YAASD,EAAQ1C,GAC9B,YAAM2C,IAA2C,UAA3BA,EAAY5E,YACrClI,EAAEqL,KAAKnI,UAAUC,IAAIT,IAGzB5G,EAASjD,UAAUiO,YAAc,SAAUiG,EAAIvH,GAC7C,GAAI7M,KAAK2H,OAAOW,sBAAsB,IAAa,CACjD,IAAK,IAAItH,EAAI,EAAGA,EAAIoT,EAAGzT,OAAQK,IAC7B,GAAIhB,KAAK2L,WACP,GAA4B,iBAAjBkB,EAAO6B,OAAsB,YAAM,YAAS7B,EAAO6B,MAAO0F,EAAG9E,SAAStO,EAAEuO,WAAY,SAAW,YAAM,YAAS1C,EAAOkB,SAAUqG,EAAG9E,SAAStO,EAAEuO,WAAY,OAClK,OAAO,OAEJ,GAA4B,iBAAjB1C,EAAO6B,OAAsB,YAAM,YAAS7B,EAAO6B,MAAO0F,EAAG9E,SAAStO,EAAEuO,WAAY,OACpG,OAAO,EAGX,OAAO,EAEAvO,EAAI,EAAb,IAAK,IAAWsR,EAAM8B,EAAGzT,OAAQK,EAAIsR,EAAKtR,IAAK,CAC7C,GAA4B,iBAAjB6L,EAAO6B,SAAwB,YAAM,YAAS7B,EAAO6B,MAAO0F,EAAG9E,SAAStO,EAAEuO,WAAY,QAAU9P,OAAOS,UAAUJ,eAAeyD,KAAK6Q,EAAG9E,SAAStO,EAAEuO,WAAY,KAAM1C,EAAO6B,QACrL,OAAO,EAET,GAAI1O,KAAKyO,gBACP,OAAO,EAET,IAAK,YAAM,YAAS5B,EAAOkB,SAAUqG,EAAG9E,SAAStO,EAAEuO,WAAY,SAAW,YAAM,YAAS1C,EAAOsD,YAAaiE,EAAG9E,SAAStO,EAAEuO,WAAY,OACrI,OAAO,EAGX,OAAO,GAETpM,EAASjD,UAAUmO,eAAiB,SAAU/F,EAAY+L,GAIxD,IAHA,IAAIC,GAAW,IAAI,KAAQC,MAAMF,GAC7BD,EAAK,IAASI,cAAclM,EAAYgM,GACxCG,EAAU,GACL1C,EAAI,EAAGA,EAAIqC,EAAGzT,OAAQoR,IAAK,CAClC,IAAI2C,EAAUN,EAAG9E,SAASyC,EAAExC,WAAY,KAAKoF,MAC7CF,EAAQ/I,KAAKgJ,GAEf,OAAOD,GAETtR,EAASjD,UAAU4O,cAAgB,SAAU8F,GAI3C,OAHIA,GAA2B,SAAnB5U,KAAK6N,YACf+G,EAAO,IAASJ,cAAcI,EAAM,IAAShH,WAAW5N,KAAK6N,UAAW7N,KAAK2H,OAAOmG,QAE/E8G,GAETzR,EAASjD,UAAUsP,aAAe,SAAUnM,EAASwR,EAAiBC,GACpE,IAAIxR,EAAQtD,KAIZ,GAHK6U,GACH7U,KAAK+U,iBAAiB1R,IAEnByR,EAAa,CAChB,IAAIE,EAAS,aAAU,cAAgB3R,GAMvC,IALKrD,KAAKoP,cAAgBpP,KAAK2H,OAAOW,sBAAsB,MAC1DtI,KAAK+H,eAAiB/H,KAAKgM,SAASiJ,QAAO,SAAU5N,GACnD,OAAoC,IAA7BA,EAAE/D,EAAMqE,OAAO0L,aACrB1S,OAAS,GAAWX,KAAK+H,iBAEzB/H,KAAK+H,eACR,IAAK,IAAI/G,EAAI,EAAGA,EAAIgU,EAAOrU,OAAQK,IACjChB,KAAKqP,iBAAiB2F,EAAO1F,SAAStO,EAAEuO,WAAY,MAGxD,aAAYyF,EAnyBH,cAqyBNH,GACH7U,KAAKkV,aAEHlV,KAAK8H,UACP9H,KAAKmV,qBAGThS,EAASjD,UAAU6U,iBAAmB,SAAU1R,GAE9C,IADA,IAAI+R,EAAS,aAAU,cAAa/R,GAC3BgS,EAAI,EAAGA,EAAID,EAAOzU,OAAQ0U,IACjCD,EAAO9F,SAAS+F,EAAE9F,WAAY,KAAK5F,aAAa,MAnyB1C,cAqyBR,GAAI3J,KAAK8H,SAAU,CAEjB,IADA,IAAIwN,EAAS,aAAU,IAAMtT,EAAUqB,GAC9BrC,EAAI,EAAGA,EAAIsU,EAAO3U,OAAQK,IAAK,CACtChB,KAAKuV,WAAWD,EAAOhG,SAAStO,EAAEuO,WAAY,KAAM,MACpD,MAEF,aAAY+F,EAAQtT,GAGtB,IADA,IAAIwT,EAAS,aAAU,IAAMnU,EAAN,oBAA4CgC,GAC1D0O,EAAI,EAAGA,EAAIyD,EAAO7U,OAAQoR,IAAK,CACtC,IAAIU,EAAO,aAAO,OAAS9Q,EAAM6T,EAAOlG,SAASyC,EAAExC,WAAY,MAC3DkD,GAAQA,EAAKlI,UAAUkH,SAASrQ,IAClCpB,KAAKyV,kBAAkBD,EAAOlG,SAASyC,EAAExC,WAAY,QAI3DpM,EAASjD,UAAUiV,kBAAoB,WACrC,GAAInV,KAAK4P,aAAc,CACrB,IAAI8F,EAAQ,GAAGC,OAAO,GAAI3V,KAAKyI,cAC/BzI,KAAKwI,cAAc,CACjBC,aAAciN,IACb,KAGPvS,EAASjD,UAAU0V,oBAAsB,WACvC,GAAI5V,KAAK2P,UAGP,IAFA,IAAIkG,EAAY,aAAU,KAAM7V,KAAKqD,SAE5BrC,EAAI,EAAGA,EAAI6U,EAAUlV,OAAQK,IAChC6U,EAAUvG,SAAStO,EAAEuO,WAAY,KAAKhF,UAAUkH,SAASpQ,KAC/C,aAAO,IAAME,EAAYsU,EAAUvG,SAAStO,EAAEuO,WAAY,MAEpEvP,KAAK8V,uBAAuBD,EAAUvG,SAAStO,EAAEuO,WAAY,MAE7DvP,KAAK+V,sBAAsBF,EAAUvG,SAAStO,EAAEuO,WAAY,WAKlE,KAAIgC,EAAgB,aAAU,UAAqBvR,KAAKqD,SACxD,IAASrC,EAAI,EAAGA,EAAIuQ,EAAc5Q,OAAQK,IACxCuQ,EAAcjC,SAAStO,EAAEuO,WAAY,KAAKhF,UAAUE,OAr1BxC,YAy1BlBtH,EAASjD,UAAU4V,uBAAyB,SAAUzS,GACpD,IAAK,YAAMA,GAAU,CACnB,GAAIA,EAAQkH,UAAUkH,SAASvQ,GAC7B,OAEF,IAAI6N,EAAY1L,EACZA,EAAQkH,UAAUkH,SAASpQ,KAC7B0N,EAAY,aAAO,IAAMxN,EAAY8B,IAEvC,IAAIoF,EAAe,aAAU,IAAMtG,EAAe,KAAOD,EAAO6M,GAC5DiH,EAAqB,aAAU,UAAqBjH,GACpD2G,EAAQ,aAAU1V,KAAKiW,sBAAwB,IAAM5U,EAAW,IAAMA,EAAW,SAAWY,EAAU,IAAK8M,GAC3GmH,EAAc7S,EAAQ8S,uBAAuBhU,GAAc,GAC3D8O,EAAQyE,EAAM/U,OACdyV,EAAe3N,EAAa9H,OAC5B0V,EAAoB,GACpBC,EAAgB,GAChBC,EAAYlT,EAAQuO,aAAa,YACjC4E,GAAoB,EACpBC,GAAqB,EACzBf,EAAMgB,SAAQ,SAAUC,GAClBA,aAAqBC,cAEH,SADFD,EAAU/E,aAAa,gBAEvC6E,GAAqB,EAErBD,GAAoB,MAI1B,IAAIK,GAAoB,EACxB,GAAI7W,KAAKqD,QAAQkH,UAAUkH,SAAS,eAAgB,CAElD2E,EADsB,IAAI,IAAYpW,KAAKwE,gBAAgBuL,cAAa,IAAI,KAAQ/B,MAAM,WAAY,QAASuI,GAAW,IAC3F5V,OAC/B,IAAImW,EAAa,IAAI,IAAY9W,KAAKwE,gBAAgBuL,cAAa,IAAI,KAAQ/B,MAAM,cAAe,SAAS,GAAM,IAC/G8I,EAAWnW,OAAS,GAAK8V,IAAuBzW,KAAKwE,eAAeuS,MAAK,SAAUC,GACrF,OAAOA,EAAQnN,KAAO0M,OAC2B,IAA7CvW,KAAK8E,gBAAgB0I,QAAQ+I,MACjCH,EAAeU,EAAWnW,OAC1BkW,GAAoB,GAQtB5F,GALsB,IAAlBjR,KAAKkO,SACM,IAAI,IAAYlO,KAAKkI,aAAa6H,cAAa,IAAI,KAAQ/B,MAAMhO,KAAK2H,OAAOoG,SAAU,QAASwI,GAAW,IAE3GvW,KAAKuO,cAAcvO,KAAKkI,YAAaqO,IAEjC5V,OAErB,GAAIX,KAAK2P,WAAa3P,KAAK4P,gBAAkB5P,KAAK2H,OAAOW,sBAAsB,KAE7E+N,EAD+BrW,KAAKiX,4BAA4BV,GAEhED,EAAgB,IAAI,IAAYtW,KAAK6E,kBAAkBkL,cAAa,IAAI,KAAQ/B,MAAM,WAAY,QAASuI,GAAW,IAExH,GAAc,IAAVtF,GAAgC,IAAjBmF,EACjB,OACSnF,IAAUmF,GAAgBS,GAAqB5F,EAAQ,IAAMqF,EAAc3V,SAAW0V,EAAkB1V,QAAU2V,EAAc3V,SAAW0V,EAAkB1V,SAAoC,IAAzB2V,EAAc3V,QAA6C,IAA7B0V,EAAkB1V,QAAgB6V,GAAqBxW,KAAK2P,WAAa3P,KAAK4P,aAC7R5P,KAAKmR,YAAY+E,EAAa,QAAS,MAAM,GAAM,GAC1CE,EAAe,IAAMS,GAAqB7W,KAAK2P,WAAa3P,KAAK4P,cAEjEwG,EAAe,GAAKJ,EAAmBrV,OAAS,EADzDX,KAAKmR,YAAY+E,EAAa,gBAAiB,MAAM,GAAM,GAGjC,IAAjBE,GACTpW,KAAKmR,YAAY+E,EAAa,UAAW,MAAM,GAAM,GAEvD,IAAIgB,EAAW,YAAQ7T,EAAS,IAAM9B,GACtC,IAAK,YAAM2V,GAAW,CACpB,IAAIC,EAAgB,YAAQD,EAAU,IAAM7V,GAC5CrB,KAAK8V,uBAAuBqB,MAIlChU,EAASjD,UAAU+W,4BAA8B,SAAUG,GACzD,IAAI9T,EAAQtD,KACRqX,EAAwC,iBAAtBrX,KAAK2H,OAAO+G,MAAqB1O,KAAK2H,OAAO+G,MAAQ,KACvE8E,EAASxT,KAAK2H,OAAOkC,GACrByN,EAAYtX,KAAK2H,OAAOoG,SACxBwJ,EAAiB,SAAUZ,GAC7B,IAAK,YAAMU,IAAaA,KAAYV,GAAa/W,MAAMgK,QAAQ+M,EAAUU,IAAY,CACnF,IAAIG,EAAYb,EAAUnD,GAC1B,IAAK,YAAMgE,GACT,OAAOA,EAAUjI,aAAe6H,MAE7B,CACL,IAAIK,EAAed,EAAUW,GAC7B,IAAK,YAAMG,GACT,OAAOA,EAAalI,aAAe6H,EAGvC,OAAO,GAET,OAAOpX,KAAKyI,aAAaiP,KAAI,SAAUC,GACrC,OAAOrU,EAAMsU,cAAcD,MAC1B1C,QAAO,SAAU0B,GAClB,OAAIA,GAAkC,iBAAdA,GAA0BU,KAAYV,GAEhC,IAAnBrT,EAAM4K,UAAuC,iBAAdyI,IAA2BW,KAAaX,GAAaU,KAAYV,KADlGY,EAAeZ,OAO5BxT,EAASjD,UAAU6V,sBAAwB,SAAU1S,EAASgE,EAAGwN,GAC/D,IAAIvR,EAAQtD,KACZ,IAAK,YAAMqD,GAAU,CACnB,IAAIwU,EAAe,aAAO,IAAMtW,EAAY8B,GACxCyU,OAAa,EACjB,IAAK,YAAMD,GAAe,CACxB,IAAIE,EAAanY,MAAM8N,KAAKmK,EAAavM,iBAAiB,OAC1DwM,EAAa,aAAU,IAAM3V,EAAc0V,GACvC7X,KAAKgY,WACPF,EAAalY,MAAM8N,KAAKoK,GAAY7C,QAAO,SAAUgD,GACnD,IAAIC,EAAUD,EAASE,QAAQ,MAAMvG,aAAa,YAClD,OAAmB,OAAZsG,IAA6D,IAAzC5U,EAAMmF,aAAa+E,QAAQ0K,MAExDH,EAAanY,MAAM8N,KAAKqK,GAAY9C,QAAO,SAAUmD,GACnD,IAAIC,EAAWD,EAAGxG,aAAa,YAC/B,OAAoB,OAAbyG,IAA+D,IAA1C/U,EAAMmF,aAAa+E,QAAQ6K,MAE/B,IAAtBP,EAAWnX,SACbmX,EAAa,aAAU,IAAM3V,EAAc0V,GAC3CE,EAAanY,MAAM8N,KAAKmK,EAAavM,iBAAiB,SAM1D,IAHA,IAAI0E,EAAY3M,EAAQ8S,uBAn9BZ,WAm9BkD,GAAG5L,UAAUkH,SAASvP,GAChFoW,EAAcjV,EAAQ8S,uBAp9Bd,WAo9BoD,GAAG5L,UAAUkH,SAt9BjE,UAu9BR8G,OAAe,EACVvQ,EAAQ,EAAGA,EAAQ8P,EAAWnX,OAAQqH,IAAS,CACtD,IAAIqI,EAAU0H,EAAWzI,SAAStH,EAAMuH,WAAY,KAAKqC,aAAa,YACtE,GAAK,YAAM5R,KAAKwY,kBAAqB,YAAM,YAASxY,KAAK2H,OAAOqI,UAAWhQ,KAAKwY,gBAAgBlJ,SAAStH,EAAMuH,WAAY,OASpH,CACL,IAAIkJ,EAAgBX,EAAWxI,SAAStH,EAAMuH,WAAY,KAAK4G,uBAl+BvD,WAk+B6F,GAAG5L,UAAUkH,SAASvP,GACvH8N,GAEOyI,IAAkBzY,KAAK8H,WAEiB,IAAxC9H,KAAKyI,aAAa+E,QAAQ6C,IAAmBrQ,KAAK8H,WAAawQ,GAAetI,GAHvFuI,EAAe,QAKNR,EAAWzI,SAAStH,EAAMuH,WAAY,KAAKhF,UAAUkH,SAj+BhE,iBAi+BoF,YAAYzR,KAAK8E,kBAAoB9E,KAAK2P,YAAcK,GAAasI,KAA2D,IAA3CtY,KAAK8E,gBAAgB0I,QAAQ6C,IAGzK,IAAlBrQ,KAAKkO,WAAmB,YAAYlO,KAAK8E,kBAAoB9E,KAAK2P,YAAcK,GAAasI,KAA2D,IAA3CtY,KAAK8E,gBAAgB0I,QAAQ6C,IAFnJkI,EAAe,gBACfvY,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQ6C,GAAU,IAKnEkI,EAAe,eAvBjBA,EAAe,YAASvY,KAAK2H,OAAOqI,UAAWhQ,KAAKwY,gBAAgBlJ,SAAStH,EAAMuH,WAAY,MAAQ,QAAU,WAC/F,IAAdvP,KAAK2Y,MACPJ,EAAevI,EAAY,QAAU,WAElB,YAAjBuI,IAA+B,YAAYvY,KAAK8E,kBAAoB9E,KAAK2P,YAAwD,IAA3C3P,KAAK8E,gBAAgB0I,QAAQ6C,KACrHrQ,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQ6C,GAAU,GACnEkI,EAAe,iBAoBnBvY,KAAKmR,YAAY2G,EAAWxI,SAAStH,EAAMuH,WAAY,KAAMgJ,EAAclR,GAAG,GAAM,IAGpFrH,KAAK2P,WAAa3P,KAAK8H,WAAa+M,GACtC7U,KAAK6P,2BAIX1M,EAASjD,UAAU0Y,iBAAmB,SAAUlD,EAAOmD,GACrD,GAAK,YAAMnD,GAqCJ,CACL,IAAIoC,EAAa,aAAU,IAAM3V,EAAcnC,KAAKqD,SACpD,GAAIrD,KAAKoP,aACP,IAAK,IAAIpH,EAAQ,EAAGA,EAAQ8P,EAAWnX,OAAQqH,IAAS,CAClD8Q,EAAQ,YAAQhB,EAAWxI,SAAStH,EAAMuH,WAAY,KAAM,IAAMlO,GACtErB,KAAK+Y,mBAAmBjB,EAAWxI,SAAStH,EAAMuH,WAAY,KAAMsJ,GACpE7Y,KAAKmR,YAAY2G,EAAWxI,SAAStH,EAAMuH,WAAY,KAAMsJ,EAAU,QAAU,UAAW,KAAM,KAAM,KAAMA,GAC9G7Y,KAAKgZ,qBAAqB,CAAChZ,KAAKiZ,YAAYH,UAG9C,IAAS9Q,EAAQ,EAAGA,EAAQ8P,EAAWnX,OAAQqH,IAAS,CAClD8Q,EAAQ,YAAQhB,EAAWxI,SAAStH,EAAMuH,WAAY,KAAM,IAAMlO,GACtErB,KAAK+Y,mBAAmBjB,EAAWxI,SAAStH,EAAMuH,WAAY,KAAMsJ,GACpE7Y,KAAKmR,YAAY2G,EAAWxI,SAAStH,EAAMuH,WAAY,KAAMsJ,EAAU,QAAU,WACjF7Y,KAAKgZ,qBAAqB,CAAChZ,KAAKiZ,YAAYH,UAnD/B,CACjBpD,EAAMwD,UACN,IAAK,IAAI5G,EAAMoD,EAAM/U,OAAS,EAAG2R,GAAO,EAAGA,IAAO,CAChD,IAAIwG,EAAQ9Y,KAAKmZ,WAAWzD,EAAMpG,SAASgD,EAAI/C,WAAY,MAC3D,GAAI,YAAMuJ,GAAV,CAEE,GAAa,MADTpH,EAAOgE,EAAMpD,EAAMoD,EAAM/U,QAAU+U,EAAMpD,EAAMoD,EAAM/U,QAAQ4O,WAAamG,EAAMpG,SAASgD,EAAI/C,WAAY,KAAOmG,EAAMpG,SAASgD,EAAI/C,WAAY,KAAKA,WAAa,OAClJsJ,GAAWnH,EAC5B1R,KAAKoZ,oBAAoB1H,EAAMgE,GAC/B1V,KAAKqZ,kBAAkB3H,EAAMmH,QACxB,IAAyC,IAArC7Y,KAAKyI,aAAa+E,QAAQkE,IAAyB,KAATA,IAAgBmH,EAAS,CAC5E7Y,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQkE,GAAO,GAC1D,IAAIb,EAAa7Q,KAAKuO,cAAcvO,KAAKgM,SAAU0F,GACnD,GAAIb,EAAY,CACd,IAAK,IAAI7P,EAAI,EAAGA,EAAI6P,EAAWlQ,OAAQK,IAAK,CAC1C,IAAI6I,EAAKgH,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgH,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,KACtI,IAAuC,IAAnCvP,KAAKyI,aAAa+E,QAAQ3D,GAAY,CACxC7J,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQ3D,GAAK,GACxD,IAAI8O,EAAM3Y,KAAKqD,QAAQkI,cAAc,cAAgB1B,EAAK,MACtD8O,GACF3Y,KAAKmR,YAAYwH,EAAK,UAAW,QAIK,IAAxC3Y,KAAK8E,gBAAgB0I,QAAQkE,IAC/B1R,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQkE,GAAO,GAGhEA,GACF1R,KAAKqZ,kBAAkB3H,EAAMmH,GAE/B7Y,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQ+J,EAAM,YAAa,WA1BpE,CA8BA,IAAI6H,EAAW,aAAO,IAAMhY,EAAa,KAAOY,EAAc2W,GAC9D9Y,KAAKwZ,kBAAkBD,GAAWV,EAASC,EAAO,QAoBtD,GAAIpD,EACF,IAAK,IAAI3D,EAAI,EAAGA,EAAI2D,EAAM/U,OAAS,EAAGoR,IAAK,CACzC,IAAIL,EAAOgE,EAAMpG,SAASyC,EAAExC,WAAY,KAAOmG,EAAMpG,SAASyC,EAAExC,WAAY,KAAKA,WAAa,GACzFsJ,GACH7Y,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQ+J,EAAM,YAAa,MAIlE1R,KAAK2P,WACP3P,KAAK6P,0BAGT1M,EAASjD,UAAU6Y,mBAAqB,SAAUd,EAAUY,GAC1D,IAAIY,EAAS,YAAQxB,EAAU,IAAM5W,GACjCwI,EAAK4P,EAAO7H,aAAa,YAEC,SADZ5R,KAAKiZ,YAAYQ,GACnBzJ,WAAyB6I,GACvC7Y,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQkC,EAAI,YAAa,OAWlE1G,EAASjD,UAAUmZ,kBAAoB,SAAU3H,EAAMmH,GACrD,GAAsB,IAAlB7Y,KAAKkO,SAAgB,CACvB,IAAI+C,EAAQ,EACRhB,EAAW,IAAI,IAAYjQ,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMhO,KAAK2H,OAAOkC,GAAI,QAAS6H,GAAM,IAC5G,GAAIzB,EAAS,GAAI,CACf,IAAIpG,EAAKoG,EAAS,GAAGjQ,KAAK2H,OAAOkC,IAAMoG,EAAS,GAAGjQ,KAAK2H,OAAOkC,IAAI0F,WAAa,KAC5EmK,EAAWzJ,EAAS,GAAGjQ,KAAK2H,OAAOoG,UAAYkC,EAAS,GAAGjQ,KAAK2H,OAAOoG,UAAUwB,WAAa,KAC9F0E,EAAgBjU,KAAKqD,QAAQkI,cAAc,cAAgBmO,EAAW,MACtErW,EAAUrD,KAAKqD,QAAQkI,cAAc,cAAgB1B,EAAK,MAC1DuH,EAAapR,KAAKuO,cAAcvO,KAAKgM,SAAU0N,GACnD,GAAItI,EACF,IAAK,IAAIpQ,EAAI,EAAGA,EAAIoQ,EAAWzQ,OAAQK,IAAK,CAC1C,IAAIqP,EAAUe,EAAW9B,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMuH,EAAW9B,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MAC/F,IAAxCvP,KAAKyI,aAAa+E,QAAQ6C,IAC5BY,KAImC,IAArCjR,KAAKyI,aAAa+E,QAAQkE,IAAgBuC,GAAiBpK,IAAO6H,GAAQ1R,KAAK2P,UACjF3P,KAAKmR,YAAY8C,EAAe,gBAAiB,OACH,IAArCjU,KAAKyI,aAAa+E,QAAQkE,IAAgBrO,GAAWwG,IAAO6H,IAASmH,EAC9E7Y,KAAKmR,YAAY9N,EAAS,UAAW,OACS,IAArCrD,KAAKyI,aAAa+E,QAAQkE,IAAgBrO,GAAWwG,IAAO6H,GAAQmH,EAC7E7Y,KAAKmR,YAAY9N,EAAS,QAAS,OACW,IAArCrD,KAAKyI,aAAa+E,QAAQkE,KAAiBrO,GAAW4Q,GAAiBpK,IAAO6H,GAAQ1R,KAAK2P,WAAuB,IAAVsB,EACjHjR,KAAKmR,YAAY8C,EAAe,gBAAiB,OACH,IAArCjU,KAAKyI,aAAa+E,QAAQkE,KAAiBrO,GAAW4Q,GAAiBpK,IAAO6H,GAAQ1R,KAAK2P,WAAuB,IAAVsB,EACjHjR,KAAKmR,YAAY8C,EAAe,UAAW,MACjC5Q,GAAY4Q,GAAiBpK,IAAO6H,IAAQ1R,KAAK2P,WAC3D3P,KAAK2Z,oBAAoBjI,EAAMmH,SAG9B,GAAsB,IAAlB7Y,KAAKkO,UAAkBlO,KAAK2H,OAAOW,sBAAsB,KAAetI,KAAK2L,UACtF,CAAI9B,OAAK,EACLoK,OAAgB,EADpB,IAEI2F,OAAQ,EACZ,IAAS5Y,EAAI,EAAGA,EAAIhB,KAAKgM,SAASrL,OAAQK,IAAK,CAC7C6I,EAAK7J,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM7J,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,GAExIqK,GADA3F,EAAgBjU,KAAKqD,QAAQkI,cAAc,cAAgB1B,EAAK,OACxC,aAAO,IAAM3H,EAAO+R,GAAiB,MACtB,IAAnCjU,KAAKyI,aAAa+E,QAAQ3D,IAAcoK,GAAiB2F,IAAUf,GACrE7Y,KAAKmR,YAAY8C,EAAe,UAAW,MAE7C,IAAI4F,EAAW,YAAS7Z,KAAK2H,OAAO+G,MAAMa,WAAYvP,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,MACvFsK,GACF7Z,KAAK8Z,yBAAyBD,EAAUhQ,EAAI6H,EAAMmH,EAAShP,MAanE1G,EAASjD,UAAUyZ,oBAAsB,SAAUjI,EAAMmH,GACvD,IAEIkB,EAFAC,EAAoBha,KAAKia,YAAYvI,GACrCT,EAAQ,EAEU,IAAlBjR,KAAKkO,WACP6L,EAASC,EAAkB,GAAGha,KAAK2H,OAAOoG,UAAYiM,EAAkB,GAAGha,KAAK2H,OAAOoG,UAAUwB,WAAa,MAEhH,IAAI6B,EAAapR,KAAKuO,cAAcvO,KAAKgM,SAAU+N,GACnD,GAAI3I,EACF,IAAK,IAAIpQ,EAAI,EAAGA,EAAIoQ,EAAWzQ,OAAQK,IAAK,CAC1C,IAAIqP,EAAUe,EAAW9B,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMuH,EAAW9B,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MAC/F,IAAxCvP,KAAKyI,aAAa+E,QAAQ6C,IAC5BY,IAIN,IAAIgD,EAAgBjU,KAAKqD,QAAQkI,cAAc,cAAgBwO,EAAS,MACpE9F,GAAiB4E,IAETA,GAAW5E,IAA2D,IAA1CjU,KAAK8E,gBAAgB0I,QAAQuM,IAA4B,IAAV9I,EADrFjR,KAAKmR,YAAY8C,EAAe,gBAAiB,OAGvC4E,GAAW5E,IAA2D,IAA1CjU,KAAK8E,gBAAgB0I,QAAQuM,IAA4B,IAAV9I,EACrFjR,KAAKmR,YAAY8C,EAAe,UAAW,MACjCA,IACL4E,IAAkD,IAAvC7Y,KAAKyI,aAAa+E,QAAQuM,KAA4D,IAA1C/Z,KAAK8E,gBAAgB0I,QAAQuM,GAE9ElB,IAAkD,IAAvC7Y,KAAKyI,aAAa+E,QAAQuM,KAA4D,IAA1C/Z,KAAK8E,gBAAgB0I,QAAQuM,GAC7F/Z,KAAK8E,gBAAgB4G,KAAKqO,GAChBlB,IAAkD,IAAvC7Y,KAAKyI,aAAa+E,QAAQuM,KAA4D,IAA1C/Z,KAAK8E,gBAAgB0I,QAAQuM,IAA4B,IAAV9I,GAChHjR,KAAK8E,gBAAgB4G,KAAKqO,GAJ1B/Z,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQuM,GAAS,GAMpE/Z,KAAK2Z,oBAAoBI,EAAQlB,IACU,IAAvC7Y,KAAKyI,aAAa+E,QAAQuM,IAAmBlB,GAC/C7Y,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQuM,GAAS,KAelE5W,EAASjD,UAAU4Z,yBAA2B,SAAUD,EAAUE,EAAQrI,EAAMmH,EAASnK,GAEvF,IADA,IAAIuC,EAAQ,EACHc,EAAI,EAAGA,EAAI8H,EAASlZ,OAAQoR,IAAK,CACxC,IAAImI,EAAQL,EAASvK,SAASyC,EAAExC,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgQ,EAASvK,SAASyC,EAAExC,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,IAC3F,IAAtCvP,KAAKyI,aAAa+E,QAAQ0M,IAC5BjJ,IAEF,IAAIgD,EAAgBjU,KAAKqD,QAAQkI,cAAc,cAAgBwO,EAAS,MACpExI,EAAgB0C,EAAgB,aAAO,UAAqBA,GAAiB,KAC7E2F,EAAQ3F,EAAgB,aAAO,IAAM/R,EAAO+R,GAAiB,KAC7D5Q,EAAUrD,KAAKqD,QAAQkI,cAAc,cAAgB2O,EAAQ,MAC7DC,EAAoB9W,EAAU,aAAO,IAAMnB,EAAOmB,GAAW,KACjE,IAAyC,IAArCrD,KAAKyI,aAAa+E,QAAQkE,IAAgBuC,GAAiBiG,IAAUxI,GAAQ1R,KAAK2P,UACpF3P,KAAKmR,YAAY8C,EAAe,gBAAiB,WAC5C,IAAyC,IAArCjU,KAAKyI,aAAa+E,QAAQkE,KAAgBuC,GAAkB5Q,GAAW6W,IAAUxI,GAASmH,GAU9F,IAAyC,IAArC7Y,KAAKyI,aAAa+E,QAAQkE,IAAgBrO,GAAW6W,IAAUxI,IAASmH,EACjF7Y,KAAKmR,YAAY9N,EAAS,UAAW,WAChC,IAAyC,IAArCrD,KAAKyI,aAAa+E,QAAQkE,IAAgBH,GAAiB2I,IAAUxI,GAAQ1R,KAAK2P,WAAuB,IAAVsB,IAAgB4H,EACxHtH,EAAchH,UAAUE,OAttCZ,eAutCP,IAAyC,IAArCzK,KAAKyI,aAAa+E,QAAQkE,KAAiBrO,GAAWuW,GAASM,IAAUxI,GAAkB,IAAVT,EAC1FjR,KAAKmR,YAAY8C,EAAe,UAAW,WACtC,IAA0C,IAAtCjU,KAAKyI,aAAa+E,QAAQ0M,IAAiB7W,GAAW8W,GAA+B,IAAVlJ,EACpFjR,KAAKmR,YAAY9N,EAAS,UAAW,WAChC,IAAKA,IAAY4Q,GAAiBiG,IAAUxI,IAAkD,IAA1C1R,KAAK8E,gBAAgB0I,QAAQuM,IAAkB/Z,KAAK2P,UAAW,CACxH,IAAIkI,EAAe7X,KAAKqD,QAAQkI,cAAc,cAAgBmD,EAAQ,MAClEmK,GAAqB,IAAV5H,EACbjR,KAAKmR,YAAY0G,EAAc,gBAAiB,MACvCgB,GAAW5H,IAAU4I,EAASlZ,SAAiD,IAAvCX,KAAKyI,aAAa+E,QAAQuM,GAC3E/Z,KAAKkQ,mBAAmB6J,GACdlB,GAAqB,IAAV5H,IAAyD,IAA1CjR,KAAK8E,gBAAgB0I,QAAQuM,IACjE/Z,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQuM,KAEb,IAA1C/Z,KAAK8E,gBAAgB0I,QAAQuM,IAC/B/Z,KAAK8E,gBAAgB4G,KAAKqO,SA3BxB/Z,KAAK2P,UACP3P,KAAKmR,YAAY8C,EAAe,UAAW,MAE7B,IAAVhD,EACFjR,KAAKmR,YAAY8C,EAAe,gBAAiB,MAEjDjU,KAAKmR,YAAY8C,EAAe,UAAW,MAwBjD,IAAImG,EAAa,YAASpa,KAAK2H,OAAO+G,MAAMa,WAAYsK,EAASvK,SAASyC,EAAExC,WAAY,MACpF6K,GACFpa,KAAK8Z,yBAAyBM,EAAYF,EAAOxI,EAAMmH,EAASnK,KAItEvL,EAASjD,UAAUiR,YAAc,SAAUkJ,EAASC,EAAOjT,EAAGkT,EAAWC,EAAO3B,GAC9E,IACInF,EADApQ,EAAQtD,KAERyZ,EAAS,YAAQY,EAAS,IAAMhZ,IAC/BrB,KAAKiW,uBAAyBwD,IAAWA,EAAOlP,UAAUkH,SAASxP,IAAYjC,KAAK2D,cAA8E,IAA/D3D,KAAK2D,YAAY6J,QAAQiM,EAAO7H,aAAa,gBAGjJyI,IAAYZ,IACdY,EAAU,aAAO,IAAMlY,EAAcsX,IAElCc,EASHva,KAAKya,gBAAgBJ,EAASC,EAAOb,EAAQ/F,EAAWrM,EAAGkT,EAAWC,EAAO3B,IAR7E7Y,KAAK6E,iBAAmB,GACxB6O,EAAY1T,KAAK0a,cAAcjB,EAAQa,EAAOjT,GAC9CrH,KAAKwM,QAAQ,eAAgBkH,GAAW,SAAUiH,GAC3CA,EAAaC,QAChBtX,EAAMmX,gBAAgBJ,EAASC,EAAOb,EAAQkB,EAActT,EAAGkT,EAAWC,EAAO3B,SAOzF1V,EAASjD,UAAUua,gBAAkB,SAAUJ,EAASC,EAAOb,EAAQ/F,EAAWrM,EAAGkT,EAAWC,EAAO3B,GACrG,IAAIgC,EACAC,EAAYT,EAAQlE,uBApwCR,WAowC8C,GAoB9D,GAnBc,UAAVmE,GAAsBQ,EAAUvQ,UAAUkH,SAASvP,GAKlC,YAAVoY,IAAwBQ,EAAUvQ,UAAUkH,SAASvP,IAAU4Y,EAAUvQ,UAAUkH,SA5wC9E,YA6wCd,aAAY,CAACqJ,GAAY,CAAC5Y,EA7wCZ,WA8wCdlC,KAAK+a,YAAYtB,GACjBoB,EAAY,SACO,kBAAVP,GAA6Bta,KAAK2P,YAC3CmL,EAAUvQ,UAAUE,OAAOvI,GAC3B4Y,EAAUvQ,UAAUC,IAlxCN,UAmxCdxK,KAAK+a,YAAYtB,GACjBoB,EAAY,UAZZC,EAAUvQ,UAAUE,OAxwCN,UAywCdqQ,EAAUvQ,UAAUC,IAAItI,GACxBlC,KAAK8S,SAAS2G,GACdoB,EAAY,QAWdA,EAAsB,UAAVP,EAAoB,OAAmB,YAAVA,EAAsB,QAAUO,EACpE,YAAMA,IACTpB,EAAO9P,aAAa,eAAgBkR,GAElCL,EAAO,CACT,IAAIhJ,EAAO,GAAGmE,OAAO,GAAI3V,KAAK6E,kBAC9B6O,EAAY1T,KAAK0a,cAAcjB,EAAQa,EAAOjT,GAC1C,YAAYkT,KACd7G,EAAUlC,KAAOA,QAGLhD,IAAZqK,GACF7Y,KAAKgb,kBAAkBvB,EAAQZ,GAE5B0B,GACE,YAAMM,KACTpB,EAAO9P,aAAa,eAAgBkR,GACpCnH,EAAUlC,KAAK,GAAGyJ,QAAUJ,EAC5B7a,KAAKwM,QAAQ,cAAekH,GAC5B1T,KAAK6E,iBAAmB,KAI9B1B,EAASjD,UAAU4S,SAAW,SAAUgG,GACtC,IAAIjP,EAAKiP,EAAMlH,aAAa,YACvB,YAAM/H,KAA0C,IAAnC7J,KAAKyI,aAAa+E,QAAQ3D,IAC1C7J,KAAKkQ,mBAAmBrG,IAG5B1G,EAASjD,UAAU6a,YAAc,SAAUjC,GACzC,IAAI9Q,EAAQhI,KAAKyI,aAAa+E,QAAQsL,EAAMlH,aAAa,aACrD5J,GAAS,GACXhI,KAAKyI,aAAaiQ,OAAO1Q,EAAO,IAGpC7E,EAASjD,UAAUwa,cAAgB,SAAUjB,EAAQvF,EAAQ7M,GAC3DrH,KAAK6E,iBAAiB6G,KAAK1L,KAAKiZ,YAAYQ,IAC5C,IAAI9F,EAAW3T,KAAK6E,iBACpB,MAAO,CACLqP,OAAQA,EACR0G,QAAQ,EACRxW,cAAc,YAAMiD,GACpBqK,KAAM+H,EACNjI,KAAMmC,IAGVxQ,EAASjD,UAAUoM,SAAW,WAC5B,IAAI4O,EAAU,aAAO,IAAM3Z,EAAYvB,KAAKqD,SACvC,YAAkB6X,KACrBA,EAAQvR,aAAa,OAAQtH,EAAaC,UAC1CtC,KAAKmL,eAAenL,KAAKkT,qBACzBlT,KAAKmb,mBACDnb,KAAKob,eACPpb,KAAKqb,aAEPrb,KAAKsb,uBACLtb,KAAKub,SAASvb,KAAK4M,SAAS,IAAKnN,OAAOS,UAAUJ,eAAeyD,KAAKvD,KAAK4M,SAAS,GAAI5M,KAAK2H,OAAOoG,UACpG/N,KAAKwb,mBAGTrY,EAASjD,UAAUiK,YAAc,YAC9BnK,KAAKob,cAAgB,IAAW,MAAa,CAACpb,KAAKqD,SAl3CzC,eAm3CP,IAAQoY,OACTzb,KAAKob,cAAgB,IAAW,MAAa,CAACpb,KAAKqD,SAn3CzC,cAs3CfF,EAASjD,UAAUmb,WAAa,SAAUK,GACxC,GAAK1b,KAAKkK,cAKV,IAFA,IAAI4O,EAAQ4C,EAAQ,aAAU,IAAMra,EAAUqa,GAAS1b,KAAK2b,OACxDhb,EAASmY,EAAMnY,OACVK,EAAI,EAAGA,EAAIL,EAAQK,IAC1BhB,KAAK4b,cAAc9C,EAAMxJ,SAAStO,EAAEuO,WAAY,OAGpDpM,EAASjD,UAAU0b,cAAgB,SAAU9C,GAC3C,IAAIzV,EAAU,aAAO,IAAMtB,EAAS+W,GAChCzV,GAAWA,EAAQwY,qBACrBxY,EAAQyQ,MAAMgI,OAAS9b,KAAKob,cAAgB/X,EAAQwY,mBAAmBE,aAAe,KAAO,KAGjG5Y,EAASjD,UAAUsb,eAAiB,WAClC,IAAIlY,EAAQtD,KACRgc,EAAQhc,KAAK0I,cAMjB,IALK1I,KAAKoP,cAAgBpP,KAAK2H,OAAOW,sBAAsB,MAC1DtI,KAAK+H,eAAiB/H,KAAKgM,SAASiJ,QAAO,SAAU5N,GACnD,OAAoC,IAA7BA,EAAE/D,EAAMqE,OAAO0L,aACrB1S,OAAS,GAAWX,KAAK+H,gBAE1B/H,KAAK+H,gBAAkBiU,EAAMrb,OAAS,EAIxC,GAHAX,KAAKwI,cAAc,CACjBE,cAAe,KACd,GACC1I,KAAK2H,OAAOW,sBAAsB,IACpCtI,KAAKic,iBAAiBD,OACjB,CACL,IAAK,IAAIhb,EAAI,EAAGA,EAAIgb,EAAMrb,OAAQK,IAAK,CACrC,IAAIkb,EAAQ,aAAO,cAAgBF,EAAM1M,SAAStO,EAAEuO,WAAY,KAAO,KAAMvP,KAAKqD,SAClF,GAAK,YAAM6Y,GAMLF,EAAM1M,SAAStO,EAAEuO,WAAY,OAA4E,IAApEvP,KAAK8D,eAAe0J,QAAQwO,EAAM1M,SAAStO,EAAEuO,WAAY,OAChGvP,KAAK8D,eAAe4H,KAAKsQ,EAAM1M,SAAStO,EAAEuO,WAAY,KAAKA,gBAP/D,CACE,IAAIkD,EAAO,aAAO,IAAMrR,EAAY,aAAO,IAAMQ,EAAUsa,IACtD,YAAMzJ,IACTzS,KAAKmc,aAAaD,EAAOzJ,EAAM,OASrCzS,KAAKoc,sBAGPpc,KAAKoc,kBAGTjZ,EAASjD,UAAU+b,iBAAmB,SAAUI,GAC9C,IAAI/Y,EAAQtD,KACZA,KAAKsc,eAAeD,EAAIrc,KAAKgI,QAAQ,WACnC1E,EAAM0E,QACF1E,EAAM0E,MAAQqU,EAAI1b,OACpB2C,EAAM2Y,iBAAiBI,GAEvB/Y,EAAM8Y,oBAGNpc,KAAKgI,MAAQ,IACfhI,KAAKgI,MAAQ,IAGjB7E,EAASjD,UAAUoc,eAAiB,SAAUC,EAAMC,GAClD,IAAIN,EAAQ,aAAO,cAAgBK,EAAO,KAAMvc,KAAKqD,SACrD,GAAK,YAAM6Y,GAOTM,QAPiB,CACjB,IAAI/J,EAAO,aAAO,IAAMrR,EAAY,aAAO,IAAMQ,EAAUsa,IACtD,YAAMzJ,IACTzS,KAAKmc,aAAaD,EAAOzJ,EAAM,MAAM,EAAO+J,GAE9CA,MAKJrZ,EAASjD,UAAUkc,eAAiB,WAKlC,GAJApc,KAAKyc,oBACLzc,KAAKmV,oBACLnV,KAAKgF,WAAY,EACjBhF,KAAK+H,gBAAiB,IAChB/H,KAAK8H,UAAY9H,KAAK+D,iBAAmB/D,KAAKmE,cAAe,CACjE,IAAIuP,EAAY,CACdlC,KAAMxR,KAAKgM,UAEbhM,KAAKwM,QAAQ,YAAakH,GAE5B1T,KAAK8H,UAAW,EAChB9H,KAAKmE,eAAgB,GAEvBhB,EAASjD,UAAUuc,kBAAoB,WACrC,IAAInH,EAAS,aAAU,IAAMtT,EAAUhC,KAAKqD,SACxCqZ,EAAQ1c,KAAKuI,cACjB,GAAImU,EAAM/b,OAAS,EAAG,CACpBX,KAAKwI,cAAc,CACjBD,cAAe,KACd,GACH,IAAK,IAAIvH,EAAI,EAAGA,EAAI0b,EAAM/b,OAAQK,IAAK,CACrC,IAAI2b,EAAQ,aAAO,cAAgBD,EAAMpN,SAAStO,EAAEuO,WAAY,KAAO,KAAMvP,KAAKqD,SAMlF,GALIsZ,IAAUA,EAAMpS,UAAUkH,SAAS,YACrCzR,KAAKuV,WAAWoH,EAAO,MAAM,GAE7B3c,KAAKuI,cAAcmD,KAAKgR,EAAMpN,SAAStO,EAAEuO,WAAY,OAElDvP,KAAKkT,oBACR,YAIJlT,KAAK4c,iBAAiBtH,GAExB,aAAYA,EAAQtT,IAEtBmB,EAASjD,UAAU0c,iBAAmB,SAAUtH,GAC9C,IAAK,IAAItU,EAAI,EAAGA,EAAIsU,EAAO3U,SACpB2U,EAAOhG,SAAStO,EAAEuO,WAAY,KAAKhF,UAAUkH,SAAS,cACzDzR,KAAKuV,WAAWD,EAAOhG,SAAStO,EAAEuO,WAAY,KAAM,MAAM,GAEvDvP,KAAKkT,qBAJuBlS,OASrCmC,EAASjD,UAAU2c,aAAe,SAAUC,GAC1C,IAAIxc,EAAS,IAAQyc,UAAYD,EAAME,cAAcC,iBAAmB,IAAQC,MAAQ7R,SAAS8R,iBAAiBL,EAAME,cAAcC,eAAe,GAAGG,QAASN,EAAME,cAAcC,eAAe,GAAGI,SAAWP,EAAME,cAAc1c,OAEtO,GADA,IAAamK,OAAOzK,KAAKqD,QAAS,cAAerD,KAAKsd,oBACjDhd,IAAUN,KAAK+E,gBAApB,CAGE,IAAIwF,EAAYjK,EAAOiK,UACnB6N,EAAK,YAAQ9X,EAAQ,IAAMe,GAC/B,GAAK+W,KAAMA,EAAG7N,UAAUkH,SA/8CV,cA+8CuClH,EAAUkH,SAASrQ,IAAemJ,EAAUkH,SAAStQ,IAA1G,CAEO,GAAkC,IAA9B2b,EAAME,cAAcO,MAAa,CAC1C,IAAIC,EAAgB,aAAO,oBAAoBpF,GAC3CqF,EAAc,aAAO,IAAM9b,EAAMyW,GAGrC,GAFApY,KAAK0d,cACL1d,KAAK2d,gBAAgBvF,GACjBpY,KAAK4P,eAAiBwI,EAAG7N,UAAUkH,SAAS,aAAc,CAC5D,IAAImM,EAAe,YAAQtd,EAAQ,IAAM6B,GACzC,IAAK,YAAMyb,GAAe,CACxB,IAAIC,EAAe,aAAO,WAAqBD,GAG/C,OAFA5d,KAAKwZ,kBAAkBoE,EAAcC,EAAatT,UAAUkH,SAASvP,GAAQkW,EAAI0E,EAAME,oBACvFhd,KAAK8d,kBAAkBhB,EAAME,cAAe5E,IAI5C7N,EAAUkH,SAASrQ,GACrBpB,KAAKmc,aAAa/D,EAAI9X,EAAQwc,GACrBvS,EAAUkH,SAAStQ,GAC5BnB,KAAK+d,aAAa3F,EAAI9X,EAAQwc,GACrBU,GAAiBC,EACtBA,EAAYlT,UAAUkH,SA7+CvB,aA6+C2CgM,EAAYlT,UAAUkH,SAASrQ,GAC3EpB,KAAKmc,aAAa/D,EAAIqF,EAAaX,GAC1BW,EAAYlT,UAAUkH,SA/+C9B,aA++CkDgM,EAAYlT,UAAUkH,SAAStQ,GAClFnB,KAAK+d,aAAa3F,EAAIqF,EAAaX,GACzBvS,EAAUkH,SAASlQ,IAAgBgJ,EAAUkH,SAASpQ,IAChErB,KAAKge,aAAa5F,EAAI0E,EAAME,eAAe,GAGxCzS,EAAUkH,SAASlQ,IAAgBgJ,EAAUkH,SAASpQ,IACzDrB,KAAKge,aAAa5F,EAAI0E,EAAME,eAAe,GAIf,IAA9BF,EAAME,cAAcO,QACtBvd,KAAKqE,cAAe,GAEtBrE,KAAK8d,kBAAkBhB,EAAME,cAAe5E,MAGhDjV,EAASjD,UAAU+d,iBAAmB,SAAU5D,EAAS6D,EAAS7W,GAChE,IAAIqM,EAAY1T,KAAK0a,cAAcL,EAAS6D,EAAU,UAAY,QAAS7W,GAC3EqM,EAAUlC,KAAOkC,EAAUlC,KAAKkH,OAAO,EAAGhF,EAAUlC,KAAK7Q,OAAS,GAClEX,KAAKwM,QAAQ,cAAekH,IAE9BvQ,EAASjD,UAAU8Y,qBAAuB,SAAUxH,GAClD,IA2BMxJ,EA3BF1E,EAAQtD,KACRme,EAAc,IAAI,IAAY3M,GAC9BX,EAAasN,EAAYpO,cAAa,IAAI,KAAQ/B,MAAM,YAAa,QAAS,QAAQ,IACtFoQ,EAAiBD,EAAYpO,cAAa,IAAI,KAAQ/B,MAAM,YAAa,QAAS,SAAS,IAC/F,GAAIoQ,EAAezd,OAAS,IAIX,KAHXqH,EAAQhI,KAAKwE,eAAeyN,WAAU,SAAU5K,GAClD,OAAOA,EAAM,KAAM+W,EAAe,GAAO,OAEzB,CAChBpe,KAAKwE,eAAekU,OAAO1Q,EAAO,GAClC,IAAIoJ,EAAapR,KAAKwE,eAAeyQ,QAAO,SAAU5N,GACpD,OAAOA,EAAY,WAAM+W,EAAe,GAAO,MAYjD,YAVIhN,EAAWzQ,OAAS,GACtByQ,EAAWsF,SAAQ,SAAUhI,GAC3B,IAAI2P,EAAa/a,EAAMkB,eAAeyN,WAAU,SAAU5K,GACxD,OAAOA,EAAM,KAAMqH,EAAM7E,OAEP,IAAhBwU,GACF/a,EAAMkB,eAAekU,OAAO2F,EAAY,OAOlD,GAAIxN,EAAWlQ,OAAS,IAIP,KAHXqH,EAAQhI,KAAKwE,eAAeyN,WAAU,SAAU5K,GAClD,OAAOA,EAAM,KAAMwJ,EAAW,GAAO,OAIrC,YADA7Q,KAAKwE,eAAekH,KAAKmF,EAAW,KAK1C1N,EAASjD,UAAU4d,kBAAoB,SAAUzW,EAAG+Q,GAClD,IAAI1E,EAAY,CACdoJ,MAAOzV,EACPqK,KAAM0G,GAERpY,KAAKwM,QAAQ,cAAekH,IAE9BvQ,EAASjD,UAAUoe,WAAa,SAAU7E,EAAQhH,EAAM8L,GACtD,IAAIjb,EAAQtD,KAQZ,GAPAA,KAAKsb,uBACD7I,EAAKlI,UAAUkH,SAAShQ,IAC1BzB,KAAKwe,YAAY/L,GAEdzS,KAAK8I,eACR2J,EAAKlI,UAAUC,IAAI,gBAEN,IAAX+T,IAA8B,IAAXA,GAAmB9E,EAAOlP,UAAUkH,SAAS,eAClE,IAA2B,IAAvBzR,KAAKyD,cAAwB,CAC/B,aAAY,CAACgP,GAAOrR,GACpB,YAAS,CAACqR,GAAOtR,GACjB,IAAIsd,EAAU,EACVC,EAAQ,EACRC,EAAO,aAAO,IAAMpd,EAAYkY,GAChCmF,EAAUnF,EACd,GAAIzZ,KAAKgF,YAAchF,KAAKwD,YAAa,CACvCxD,KAAK6e,UAAUD,EAASD,GACxB,IAAIG,EAAkB,aAAO,IAAMzd,EAAW,IAAMG,EAAQiY,GAC5DzZ,KAAK4H,OAAOmX,QAAQJ,EAAM,CACxBK,KAAMhf,KAAKif,UAAUC,OAAOlc,OAC5BC,SAA6C,IAAnCjD,KAAKif,UAAUC,OAAOjc,UAAoC,WAAlB,IAA6B,IAAMjD,KAAKif,UAAUC,OAAOjc,SAC3Gkc,eAAgBnf,KAAKif,UAAUC,OAAOhc,OACtCkc,MAAO,WACLR,EAAQ9K,MAAMuL,SAAW,UACpB,YAAkBP,IAAoBA,aAA2BlI,aACpEkI,EAAgBvU,UAAUC,IArkDd,sBAukDdiU,EAAUG,EAAQ7C,aAClB2C,EAAQ,aAAO,IAAM9c,EAAU6X,GAAQsC,cAEzCuD,SAAU,SAAUC,GAClBA,EAAKlc,QAAQyQ,MAAM0L,QAAU,QAC7Blc,EAAMmc,cAAcF,EAAMd,EAASC,IAErCvZ,IAAK,SAAUoa,GACbA,EAAKlc,QAAQyQ,MAAM0L,QAAU,SACxB,YAAkBV,IAAoBA,aAA2BlI,aACpEkI,EAAgBvU,UAAUE,OAjlDd,sBAmlDdnH,EAAMoc,aAAad,EAASD,EAAMlM,WAItCzS,KAAK0f,aAAad,EAASD,EAAMlM,SAI5B,aAAO,IAAMlR,EAAYkY,GAC/B3F,MAAM0L,QAAU,OACfxf,KAAK2H,OAAOW,sBAAsB,MAAgB,IACpDtI,KAAKyD,eAAgB,GAGrBzD,KAAK8I,eACP2J,EAAKlI,UAAUC,IAAI,gBAGvBrH,EAASjD,UAAUwf,aAAe,SAAUjG,EAAQkG,EAAIlN,GACtDkN,EAAG7L,MAAM0L,QAAU,QACnB/F,EAAO3F,MAAM0L,QAAU,QACvB/F,EAAO3F,MAAMuL,SAAW,GACxB5F,EAAO3F,MAAMgI,OAAS,GACtB,aAAY,CAACrJ,GAAO/Q,GACpB1B,KAAK4f,UAAUnG,GACXzZ,KAAKob,eAAiBpb,KAAK8H,UAAY9H,KAAKkE,gBAC9ClE,KAAKqb,WAAW5B,GAChBzZ,KAAKkE,eAAgB,GAEnBlE,KAAK8H,UAAY9H,KAAK6f,aAAe7f,KAAKwD,cAC5CxD,KAAK6f,WAAa7f,KAAK8f,eAAerG,EAAQ,MAC9CzZ,KAAK6f,WAAWzb,aAAepE,KAAKoE,aACpCpE,KAAKwM,QAAQ,eAAgBxM,KAAK6f,aAEhC7f,KAAKyE,cACPzE,KAAK+f,YAAY,CAAC/f,KAAKiZ,YAAYQ,GAAQ5P,MAG/C1G,EAASjD,UAAU0f,UAAY,SAAU9G,GACvCA,EAAMnP,aAAa,gBAAiB,QACpC,aAAY,CAACmP,GA1oDG,oBA2oDhB,IAAIjP,EAAKiP,EAAMlH,aAAa,YACvB,YAAM/H,KAA2C,IAApC7J,KAAK0I,cAAc8E,QAAQ3D,IAC3C7J,KAAK0I,cAAcgD,KAAK7B,IAG5B1G,EAASjD,UAAU6d,aAAe,SAAUtE,EAAQhH,EAAMpL,GACxD,IAMI2Y,EANA1c,EAAQtD,KACRyS,EAAKlI,UAAUkH,SAAS/P,KAG1B,YAAS,CAAC+Q,GAAO/Q,GAGf1B,KAAK8H,UACPkY,EAAUhgB,KAAK8f,eAAerG,EAAQpS,GACtCrH,KAAKoE,aAAe4b,EAAQ5b,aAC5BpE,KAAKwM,QAAQ,iBAAkBwT,GAAS,SAAUrF,GAC5CA,EAAaC,OACf,aAAY,CAACnI,GAAO/Q,GAEpB4B,EAAM2c,mBAAmBxG,EAAQhH,EAAMkI,OAI3C3a,KAAKigB,mBAAmBxG,EAAQhH,EAAMuN,KAG1C7c,EAASjD,UAAU+f,mBAAqB,SAAUxG,EAAQhH,EAAMuN,GAC9D,IAAI1c,EAAQtD,KACZ,aAAY,CAACyS,GAAOtR,GACpB,YAAS,CAACsR,GAAOrR,GACjB,IAAI8e,EAAQ,EACR/a,EAAM,EACNwa,EAAK,aAAO,IAAMpe,EAAYkY,GAC9BX,EAAQW,EACR0G,EAAgB,aAAO,IAAM9e,EAAW,IAAMG,EAAQiY,GACtDzZ,KAAKgF,UACPhF,KAAK4H,OAAOmX,QAAQY,EAAI,CACtBX,KAAMhf,KAAKif,UAAUmB,SAASpd,OAC9BC,SAA+C,IAArCjD,KAAKif,UAAUmB,SAASnd,UAAoC,WAAlB,IAA6B,IAAMjD,KAAKif,UAAUmB,SAASnd,SAC/Gkc,eAAgBnf,KAAKif,UAAUmB,SAASld,OACxCkc,MAAO,WACLtG,EAAMhF,MAAMuL,SAAW,UAClB,YAAkBc,IAAkBA,aAAyBvJ,aAChEuJ,EAAc5V,UAAUC,IAxqDR,sBA0qDlB0V,EAAQ,aAAO,IAAMte,EAAU6X,GAAQsC,aACvC5W,EAAM2T,EAAMiD,cAEduD,SAAU,SAAUC,GAClBjc,EAAMmc,cAAcF,EAAMW,EAAO/a,IAEnCA,IAAK,SAAUoa,GACbA,EAAKlc,QAAQyQ,MAAM0L,QAAU,QACxB,YAAkBW,IAAkBA,aAAyBvJ,aAChEuJ,EAAc5V,UAAUE,OAnrDR,sBAqrDlBnH,EAAM+c,cAAcvH,EAAO6G,EAAIlN,EAAMuN,MAIzChgB,KAAKqgB,cAAcvH,EAAO6G,EAAIlN,EAAMuN,IAGxC7c,EAASjD,UAAUmgB,cAAgB,SAAUvH,EAAO6G,EAAIlN,EAAMuN,GAC5DL,EAAG7L,MAAM0L,QAAU,OACnB1G,EAAMhF,MAAMuL,SAAW,GACvBvG,EAAMhF,MAAMgI,OAAS,GACrB,aAAY,CAACrJ,GAAO/Q,GACpB1B,KAAKsgB,aAAaxH,GACd9Y,KAAK8H,YACPkY,EAAUhgB,KAAK8f,eAAehH,EAAO,OAC7B1U,aAAepE,KAAKoE,aAC5BpE,KAAKwM,QAAQ,gBAAiBwT,KAGlC7c,EAASjD,UAAUogB,aAAe,SAAUxH,EAAOyH,GAC7CA,EACFzH,EAAM0H,gBAAgB,iBAEtBxgB,KAAKyV,kBAAkBqD,GAEzB,IAAI9Q,EAAQhI,KAAK0I,cAAc8E,QAAQsL,EAAMlH,aAAa,aACtD5J,GAAS,GACXhI,KAAK0I,cAAcgQ,OAAO1Q,EAAO,IAGrC7E,EAASjD,UAAUuV,kBAAoB,SAAUqD,GAC/CA,EAAMnP,aAAa,gBAAiB,SACpC,YAAS,CAACmP,GApuDM,qBAsuDlB3V,EAASjD,UAAU2e,UAAY,SAAUpF,EAAQkG,GAC/CA,EAAG7L,MAAM0L,QAAU,QACnBG,EAAG7L,MAAM2M,WAAa,SACtBhH,EAAO3F,MAAMgI,OAASrC,EAAOsC,aAAe,KAC5C4D,EAAG7L,MAAM0L,QAAU,OACnBG,EAAG7L,MAAM2M,WAAa,IAExBtd,EAASjD,UAAUuf,cAAgB,SAAUF,EAAMW,EAAO/a,GACxD,IAAI,YAAkBoa,EAAKlc,QAAQ4Q,eAAnC,CAGA,IACIyM,GAAiBvb,EAAM+a,KADVX,EAAKtc,SAAWsc,EAAKoB,WAAapB,EAAKtc,UACRid,EAChDX,EAAKlc,QAAQ4Q,cAAcH,MAAMgI,OAAS4E,EAAgB,OAE5Dvd,EAASjD,UAAUmP,iBAAmB,SAAUuR,EAAU9L,EAAa0H,EAAU+B,EAAQ1J,GACvF,IAMIhE,EANAvN,EAAQtD,KACR6gB,EAAQ,aAAO,OAASlf,EAAMif,GAClC,IAAI,YAAMC,GAKV,GAFA7gB,KAAK8gB,YAAYD,GAEb7gB,KAAK2H,OAAOW,sBAAsB,IAAa,CACjD,IAAIsG,EAAQ5O,KAAK+gB,QAAQH,EAAU,IAAMrf,GAAYZ,OACjDqgB,EAAWhhB,KAAKihB,eAAejhB,KAAK2H,OAAQiH,EAAO,GACvD,GAAI,YAAMoS,IAAa,YAAMA,EAAS1Y,YAGpC,OAFA,YAAOuY,QACP7gB,KAAKsgB,aAAaM,GAAU,GAG9B5gB,KAAK6H,SAAS6D,KAAK,SACf1L,KAAK2H,OAAOW,sBAAsB,KAAetI,KAAK2L,WACxD3L,KAAK6H,SAASkE,MACd8E,EAAa7Q,KAAKuO,cAAcvO,KAAKgM,SAAU4U,EAAShP,aAAa,aACrE5R,KAAKkhB,UAAUrQ,EAAYmQ,EAAUH,EAAOD,EAAU9L,EAAa0H,EAAU+B,IAE7EyC,EAAS1Y,WAAWoE,aAAa1M,KAAK2M,SAASqU,EAAUJ,EAAShP,aAAa,cAAc9F,MAAK,SAAUzE,GAC1G/D,EAAMuE,SAASkE,MACf8E,EAAaxJ,EAAE4E,OACQ,IAAnB3I,EAAM4K,WACR5K,EAAM4K,SAAW,GAEnB5K,EAAM4d,UAAUrQ,EAAYmQ,EAAUH,EAAOD,EAAU9L,EAAa0H,EAAU+B,MAC7EhS,OAAM,SAAUlF,GACjB/D,EAAMkJ,QAAQ,gBAAiB,CAC7BC,MAAOpF,WAIR,CAGL,GAFAwJ,EAAa7Q,KAAKuO,cAAcvO,KAAKgM,SAAU4U,EAAShP,aAAa,aAAa,EAAO3D,WAAW2S,EAAShP,aAAa,eAAiB,GAC3I5R,KAAKwY,gBAAkBxY,KAAK8O,cAAc+B,GACtC,YAAMA,IAAqC,IAAtBA,EAAWlQ,OAMlC,OALA,YAAOkgB,GACHA,EAAMtW,UAAUkH,SAAShQ,IAC3BzB,KAAKwe,YAAYqC,QAEnB7gB,KAAKsgB,aAAaM,GAAU,GAG5B5gB,KAAK8G,eAAeI,eAAe0H,MAAQX,WAAW2S,EAAShP,aAAa,eAAiB,EAC7FgP,EAAS1R,YAAY,IAASF,WAAWhP,KAAKiP,cAAejP,KAAKwY,gBAAiBxY,KAAK8G,iBACxF9G,KAAKse,WAAWsC,EAAUC,EAAOtC,GACjCve,KAAKmhB,0BAA0BtQ,GAC/B7Q,KAAKohB,gBAAgBR,EAAU/L,GAC/B7U,KAAKwP,aAAaoR,EAAU/L,EAAiBC,GAC7C9U,KAAKqhB,iBAAiBxQ,GACtB7Q,KAAKshB,eAAeV,EAAU9L,EAAayJ,EAAQ1J,KAIzD1R,EAASjD,UAAUghB,UAAY,SAAUrQ,EAAYhE,EAAQgU,EAAOD,EAAU9L,EAAa0H,EAAU+B,GAEnG,GADAve,KAAKwY,gBAAkB3H,EACnB,YAAMA,IAAqC,IAAtBA,EAAWlQ,OAClC,YAAOkgB,GACP7gB,KAAKsgB,aAAaM,GAAU,OACvB,CAEL,GADA5gB,KAAK0H,eAAemF,GAChB7M,KAAK2H,OAAOW,sBAAsB,MAAgBtI,KAAK2L,UAAW,CACpE,IAAI9B,EAAK+W,EAAShP,aAAa,YAC3B+B,EAAW3T,KAAK4X,cAAc/N,GAClC,aAAS,QAASgH,EAAY8C,GAEhC3T,KAAK8G,eAAeI,eAAe0H,MAAQX,WAAW2S,EAAShP,aAAa,eAAiB,EAC7FgP,EAAS1R,YAAY,IAASF,WAAWhP,KAAKiP,cAAe4B,EAAY7Q,KAAK8G,iBAC9E9G,KAAKse,WAAWsC,EAAUC,EAAOtC,GACjCve,KAAKmhB,0BAA0BtQ,GAC/B7Q,KAAKohB,gBAAgBR,GACrB5gB,KAAKwP,aAAaoR,GAClB5gB,KAAKqhB,iBAAiBxQ,GACtB7Q,KAAKshB,eAAeV,EAAU9L,EAAayJ,GAEzC/B,GACFA,IAEE1H,GACF9U,KAAK0I,cAAcgD,KAAKkV,EAAShP,aAAa,aAEnB,IAAzB5R,KAAK6H,SAASlH,QAAiBX,KAAK8H,UACtC9H,KAAKsM,YAGTnJ,EAASjD,UAAUmhB,iBAAmB,SAAUxQ,GAC9C,IAAI,YAAM7Q,KAAK2D,cAA4C,IAA5B3D,KAAK2D,YAAYhD,OAIhD,IADA,IAAIK,EAAI,EACDA,EAAI6P,EAAWlQ,QAAQ,CAC5B,IAAIkJ,EAAKgH,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgH,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,UAC7Gf,IAArBxO,KAAK2D,cAA+D,IAAlC3D,KAAK2D,YAAY6J,QAAQ3D,IAC7D7J,KAAKuhB,gBAAgB,CAAC1X,IAExB7I,MASJmC,EAASjD,UAAUihB,0BAA4B,SAAUzL,GAIvD,IAAI1U,EAHJ,IAAI,YAAMhB,KAAKuI,gBAAgD,IAA9BvI,KAAKuI,cAAc5H,OAIpD,IAAKK,EAAI,EAAGA,EAAI0U,EAAM/U,OAAQK,IAAK,CACjC,IAAI6I,EAAK6L,EAAMpG,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM6L,EAAMpG,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,UACjGf,IAAvBxO,KAAKuI,gBAAmE,IAApCvI,KAAKuI,cAAciF,QAAQ3D,IACjE7J,KAAKyc,sBAIXtZ,EAASjD,UAAUkhB,gBAAkB,SAAU/d,EAASwR,GAClD7U,KAAK4P,eACP5P,KAAK2Y,IAAM3Y,KAAK0D,eAAiB1D,KAAK0D,eAAe8J,QAAQnK,EAAQuO,aAAa,aAAe,KAC7F5R,KAAK2P,YACP3P,KAAK+V,sBAAsB1S,EAAS,KAAMwR,KACtCA,IAAkB,aAAO,IAAM3S,EAAOlC,KAAKqD,UAAY,aAAO,UAAqBrD,KAAKqD,YAC1FrD,KAAK8V,uBAAuBzS,KAIlCrD,KAAKwY,gBAAkB,MAEzBrV,EAASjD,UAAUshB,UAAY,SAAU3U,EAAQ4U,EAAWC,GAC1D,OAAID,IAAcC,EACT7U,EAEA7M,KAAKwhB,UAAUxhB,KAAK2hB,eAAe9U,GAAS4U,EAAWC,EAAY,IAG9Eve,EAASjD,UAAU+gB,eAAiB,SAAUpU,EAAQ4U,EAAWC,GAC/D,OAAID,IAAcC,EACT1hB,KAAK2hB,eAAe9U,GAEpB7M,KAAKihB,eAAejhB,KAAK2hB,eAAe9U,GAAS4U,EAAWC,EAAY,IAGnFve,EAASjD,UAAUyhB,eAAiB,SAAU9U,GAC5C,MAA+B,iBAAjBA,EAAO6B,OAAsB,YAAM7B,EAAO6B,OAAS7B,EAASA,EAAO6B,OAEnFvL,EAASjD,UAAUqO,cAAgB,SAAUqT,EAAKC,EAAUC,EAAQlT,GAClE,IAIIwC,EAJA9N,EAAQtD,KAKZ,QAJe,IAAX8hB,IACFA,GAAS,GAGP,YAAMF,GACR,OAAOxQ,EAET,GAAsB,IAAlBpR,KAAKkO,SACP,OAAOlO,KAAK+hB,cAAc/hB,KAAKoO,YAAayT,EAAUC,GAExD,GAAiC,iBAAtB9hB,KAAK2H,OAAO+G,MACrB,OAAO1O,KAAKgiB,eAAeJ,EAAK5hB,KAAK2H,OAAOkC,GAAIgY,IAAa7hB,KAAKiiB,qBAAqBL,EAAKC,EAAUjT,IAAU,GAElH,GAAI5O,KAAKyO,gBAAiB,CAGxB,IAFA,IAAIyT,EAAa,YAAMtT,GAAuB5O,KAAK2H,OAAO+G,MAA1B1O,KAAK2H,OACjC3G,EAAI,EACDA,EAAI4N,IACJ,YAAMsT,EAAUxT,QACnBwT,EAAYA,EAAUxT,MAIxB1N,IAEFhB,KAAK0H,eAAewa,GACpB,IAAIla,EAAQ4Z,EAAI3P,WAAU,SAAUT,GAClC,OAAO,YAASlO,EAAMqE,OAAOkC,GAAI2H,IAAS,YAASlO,EAAMqE,OAAOkC,GAAI2H,GAAMjC,aAAesS,KAE3F,IAAe,IAAX7Z,EACF,OAAO,YAAS,QAAS4Z,EAAItS,SAAStH,EAAMuH,WAAY,MAE1D,IAAe,IAAXvH,EACF,IAAK,IAAIma,EAAM,EAAGC,EAASR,EAAIjhB,OAAQwhB,EAAMC,EAAQD,IAAO,CAC1D,IAAIE,EAAY,YAAS,QAAST,EAAItS,SAAS6S,EAAI5S,WAAY,MAC3D8O,EAAc,YAAMgE,IAElB,EAF+BA,EAAUpQ,WAAU,SAAUT,GACjE,OAAO,YAASlO,EAAMqE,OAAO+G,MAAM7E,GAAI2H,IAAS,YAASlO,EAAMqE,OAAO+G,MAAM7E,GAAI2H,GAAMjC,aAAesS,KAEvG,IAAoB,IAAhBxD,EACF,OAAO,YAAS,QAASgE,EAAU/S,SAAS+O,EAAW9O,WAAY,MAC9D,IAAK,YAAM8S,SAEG7T,KADnB4C,EAAapR,KAAKuO,cAAc8T,EAAWR,GAAU,EAAOjT,IAE1D,OAMV,OAAOwC,GAETjO,EAASjD,UAAU8hB,eAAiB,SAAUrN,EAAO2N,EAAST,GAC5D,IAAI7Z,EAAQ2M,EAAM1C,WAAU,SAAUT,GACpC,IAAI1E,EAAQ,YAASwV,EAAS9Q,GAC9B,OAAO1E,GAASA,EAAMyC,aAAesS,KAEvC,OAAe,IAAX7Z,EACK,YAAShI,KAAK2H,OAAO+G,MAAOiG,EAAM3M,IAEpC,MAET7E,EAASjD,UAAU+hB,qBAAuB,SAAUtN,EAAOkN,EAAUjT,GACnE,IAAK,IAAIxB,EAAK,EAAGmV,EAAU5N,EAAOvH,EAAKmV,EAAQ5hB,OAAQyM,IAAM,CAC3D,IAAIsF,EAAO6P,EAAQnV,GACfiV,EAAY,YAASriB,KAAK2H,OAAO+G,MAAOgE,GAC5C,IAAK,YAAM2P,GAAY,CACrB,IAAIjR,EAAapR,KAAKgiB,eAAeK,EAAWriB,KAAK2H,OAAOkC,GAAIgY,GAChE,GAAIzQ,EACF,OAAOA,EAET,IAAIoR,EAAmBxiB,KAAKuO,cAAc8T,EAAWR,GAAU,EAAOjT,GACtE,GAAI4T,GAAoBA,EAAiB7hB,OAAS,EAChD,OAAO6hB,KAMfrf,EAASjD,UAAU6hB,cAAgB,SAAUvQ,EAAMqQ,EAAUC,GAE3D,IAAI,YAAMtQ,GAGV,IAAK,IAAIxQ,EAAI,EAAGohB,EAAS5Q,EAAK7Q,OAAQK,EAAIohB,EAAQphB,IAAK,CACrD,GAAK,YAAMwQ,EAAKlC,SAAStO,EAAEuO,WAAY,KAAK,KAAQ,YAAM,YAASvP,KAAK2H,OAAOoG,SAAUyD,EAAKlC,SAAStO,EAAEuO,WAAY,KAAK,KAInH,OAAIuS,EACFtQ,EAAKlC,SAAStO,EAAEuO,WAAY,KAE5B,GANP,GAAI,YAASvP,KAAK2H,OAAOoG,SAAUyD,EAAKlC,SAAStO,EAAEuO,WAAY,KAAK,IAAIA,aAAesS,EACrF,OAAOrQ,EAAKlC,SAAStO,EAAEuO,WAAY,OAU3CpM,EAASjD,UAAUohB,eAAiB,SAAUje,EAASyR,EAAayJ,EAAQ1J,GAC1E,GAAIC,EAEF,IADA,IAAI2N,EAAS,aAAU,IAAMrhB,EAAYiC,GAChCrC,EAAI,EAAGsR,EAAMmQ,EAAO9hB,OAAQK,EAAIsR,EAAKtR,IAAK,CACjD,IAAIyR,EAAOgQ,EAAOnT,SAAStO,EAAEuO,WAAY,KACzC,GAAIlM,EAAQkI,cAAc,cAAgBkX,EAAOnT,SAAStO,EAAEuO,WAAY,KAAM,CAC5E,IAAImT,EAAQ,YAAQjQ,EAAM,IAAMpR,GAChCrB,KAAK6f,WAAa7f,KAAK8f,eAAe4C,EAAO,OAC9B,IAAXnE,GACFve,KAAKwM,QAAQ,gBAAiBxM,KAAK6f,YAErC7f,KAAKqP,iBAAiBqT,EAAO5N,EAAa,KAAMyJ,EAAQ1J,MAKhE1R,EAASjD,UAAU8d,aAAe,SAAU5F,EAAI/Q,EAAGsb,GAC5CvK,EAAG7N,UAAUkH,SAAS,eACrBzR,KAAKkT,sBAAwB7L,GAAKA,EAAEub,SAAWD,IAAgB3iB,KAAK6iB,SAASzK,GAC/EpY,KAAK8iB,aAAa1K,EAAI/Q,GAEtBrH,KAAKuV,WAAW6C,EAAI/Q,EAAGsb,KAI7Bxf,EAASjD,UAAU2iB,SAAW,SAAUzK,GACtC,QAAOA,EAAG7N,UAAUkH,SAASjQ,IAE/B2B,EAASjD,UAAUqV,WAAa,SAAU6C,EAAI/Q,EAAGsb,GAC/C,IAKIjP,EALApQ,EAAQtD,KACR,YAAMoY,KAAQpY,KAAKkT,qBAAuBlT,KAAK6iB,SAASzK,KAAQ,YAAM/Q,GACxErH,KAAK2d,gBAAgBvF,GAInBpY,KAAK8H,UACP4L,EAAY1T,KAAK+iB,eAAe3K,EAAI,SAAU/Q,GAC9CrH,KAAKwM,QAAQ,gBAAiBkH,GAAW,SAAUiH,GAC5CA,EAAaC,QAAWD,EAAajJ,KAAKnH,UAAUkH,SA//D7C,cAggEVnO,EAAM0f,iBAAiB5K,EAAI/Q,EAAGsT,EAAcgI,OAIhD3iB,KAAKgjB,iBAAiB5K,EAAI/Q,EAAGqM,EAAWiP,IAG5Cxf,EAASjD,UAAU8iB,iBAAmB,SAAU5K,EAAI/Q,EAAGqM,EAAWiP,GAIhE,GAHK3iB,KAAKkT,sBAAwByP,GAAiBtb,KAAKA,GAAOA,EAAEub,SAAWvb,EAAE4b,WAC5EjjB,KAAKkjB,kBAEHljB,KAAKkT,qBAAuB7L,GAAKA,EAAE8b,SAAU,CAC1CnjB,KAAKojB,YACRpjB,KAAKojB,UAAYhL,GAEnB,IAAIiL,EAAarjB,KAAK2b,OAAOnO,QAAQxN,KAAKojB,WACtCE,EAAWtjB,KAAK2b,OAAOnO,QAAQ4K,GACnC,GAAIiL,EAAaC,EAAU,CACzB,IAAIC,EAAOF,EACXA,EAAaC,EACbA,EAAWC,EAEb,IAAK,IAAIviB,EAAIqiB,EAAYriB,GAAKsiB,EAAUtiB,IAAK,CAC3C,IAAIwiB,EAAWxjB,KAAK2b,OAAOrM,SAAStO,EAAEuO,WAAY,KAC9C,YAAUiU,KAAcA,EAASjZ,UAAUkH,SAAS,cACtDzR,KAAKyjB,UAAUD,SAInBxjB,KAAKojB,UAAYhL,EACjBpY,KAAKyjB,UAAUrL,GAEbpY,KAAK8H,WACP4L,EAAUC,SAAW3T,KAAKiZ,YAAYb,GACtCpY,KAAKwM,QAAQ,eAAgBkH,GAC7B1T,KAAKqE,cAAe,GAEtBrE,KAAKqE,cAAe,GAEtBlB,EAASjD,UAAU4iB,aAAe,SAAU1K,EAAI/Q,GAC9C,IACIqM,EADApQ,EAAQtD,KAERA,KAAK8H,UACP4L,EAAY1T,KAAK+iB,eAAe3K,EAAI,YAAa/Q,GACjDrH,KAAKwM,QAAQ,gBAAiBkH,GAAW,SAAUiH,GAC5CA,EAAaC,QAChBtX,EAAMogB,mBAAmBtL,EAAIuC,OAIjC3a,KAAK0jB,mBAAmBtL,EAAI1E,IAGhCvQ,EAASjD,UAAUwjB,mBAAqB,SAAUtL,EAAI1E,GACpD1T,KAAK2jB,aAAavL,GAClBpY,KAAK2d,gBAAgBvF,GACjBpY,KAAK8H,WACP4L,EAAUC,SAAW3T,KAAKiZ,YAAYb,GACtCpY,KAAKwM,QAAQ,eAAgBkH,KAGjCvQ,EAASjD,UAAUyd,gBAAkB,SAAUvF,GAC7C,IAAK,YAAMA,GAAK,CACd,IAAIwL,EAAc5jB,KAAK6jB,iBACnBD,IACF,aAAY,CAACA,GAAcxhB,GAC3BwhB,EAAYja,aAAa,WAAY,OAEvC,YAAS,CAACyO,GAAKhW,GACfgW,EAAGzO,aAAa,WAAY,KAC5B,IAAaa,IAAI4N,EAAI,OAAQpY,KAAK8jB,SAAU9jB,MAC5CA,KAAK+jB,aAAaH,EAAaxL,KAGnCjV,EAASjD,UAAUujB,UAAY,SAAU3K,GACvCA,EAAMnP,aAAa,gBAAiB,QACpC,YAAS,CAACmP,GAAQtX,GAClB,IAAIqI,EAAKiP,EAAMlH,aAAa,YACvB,YAAM/H,KAA2C,IAApC7J,KAAKuI,cAAciF,QAAQ3D,IAC3C7J,KAAKuI,cAAcmD,KAAK7B,IAG5B1G,EAASjD,UAAUyjB,aAAe,SAAU7K,GACtC9Y,KAAKkT,oBACP4F,EAAMnP,aAAa,gBAAiB,SAEpCmP,EAAM0H,gBAAgB,iBAExB,aAAY,CAAC1H,GAAQtX,GACrB,IAAIwG,EAAQhI,KAAKuI,cAAciF,QAAQsL,EAAMlH,aAAa,aACtD5J,GAAS,GACXhI,KAAKuI,cAAcmQ,OAAO1Q,EAAO,IAGrC7E,EAASjD,UAAUgjB,gBAAkB,WAEnC,IADA,IAAIc,EAAahkB,KAAKqD,QAAQiI,iBAAiB,IAAM9J,GAC5C4L,EAAK,EAAG6W,EAAeD,EAAY5W,EAAK6W,EAAatjB,OAAQyM,IAAM,CAC1E,IAAIuL,EAAMsL,EAAa7W,GACnBpN,KAAKkT,oBACPyF,EAAIhP,aAAa,gBAAiB,SAElCgP,EAAI6H,gBAAgB,iBAGxB,aAAYwD,EAAYxiB,GACxBxB,KAAKwI,cAAc,CACjBD,cAAe,KACd,IAELpF,EAASjD,UAAU6iB,eAAiB,SAAUtJ,EAAQvF,EAAQ7M,GAC5D,IAAIsM,EAAW3T,KAAKiZ,YAAYQ,GAChC,MAAO,CACLvF,OAAQA,EACR0G,QAAQ,EACRxW,cAAc,YAAMiD,GACpBqK,KAAM+H,EACN9F,SAAUA,IAGdxQ,EAASjD,UAAUgJ,gBAAkB,WACnClJ,KAAKkkB,aAAiC,SAAlBlkB,KAAKmkB,SAAsB,IAAQpH,SAAW,QAAU,WAAa/c,KAAKmkB,UAEhGhhB,EAASjD,UAAUkkB,cAAgB,SAAU/c,GAC3C,IAAI/G,EAAS,IAAQyc,UAAY1V,EAAE2V,cAAcC,iBAAmB,IAAQC,MAAQ7R,SAAS8R,iBAAiB9V,EAAE2V,cAAcC,eAAe,GAAGG,QAAS/V,EAAE2V,cAAcC,eAAe,GAAGI,SAAWhW,EAAE2V,cAAc1c,QACjNA,GAAUA,EAAOiK,UAAUkH,SA/pExB,YA+pE2CnR,EAAOiK,UAAUkH,SAASvQ,IAASZ,EAAOiK,UAAUkH,SAASlQ,IAAejB,EAAOiK,UAAUkH,SAASpQ,IAAaf,EAAOiK,UAAUkH,SAAS9P,IAAS3B,KAAK4P,cAAgB,YAAQtP,EAAQ,IAAM6B,IAGlPnC,KAAKqkB,qBAAqB,YAAQ/jB,EAAQ,IAAMe,GAAWgG,IAG/DlE,EAASjD,UAAUmkB,qBAAuB,SAAU5K,EAAQpS,GAC1D,IAAIoL,EAAO,aAAO,OAAS9Q,EAAM8X,GACjC,GAAKhH,IAAQA,EAAKlI,UAAUkH,SAAS/P,GAArC,CAGE,IAAI6I,EAAYkI,EAAKlI,UACjBA,EAAUkH,SAASrQ,GACrBpB,KAAKmc,aAAa1C,EAAQhH,EAAMpL,GACvBkD,EAAUkH,SAAStQ,IAC5BnB,KAAK+d,aAAatE,EAAQhH,EAAMpL,KAItClE,EAASjD,UAAUic,aAAe,SAAU1C,EAAQhH,EAAMpL,EAAGyN,EAAa0H,EAAU3H,GAClF,IAAIvR,EAAQtD,KACRyS,EAAKlI,UAAUkH,SAAS/P,KAG1B,YAAS,CAAC+Q,GAAO/Q,GAEf1B,KAAK8H,WAAa9H,KAAKwD,aACzBxD,KAAK6f,WAAa7f,KAAK8f,eAAerG,EAAQpS,GAC9CrH,KAAKoE,aAAepE,KAAK6f,WAAWzb,aACpCpE,KAAKwM,QAAQ,gBAAiBxM,KAAK6f,YAAY,SAAUlF,GACnDA,EAAaC,OACf,aAAY,CAACnI,GAAO/Q,GAEpB4B,EAAMghB,iBAAiB7K,EAAQhH,EAAMqC,EAAa0H,EAAU3H,OAIhE7U,KAAKskB,iBAAiB7K,EAAQhH,EAAMqC,EAAa0H,EAAU3H,KAG/D1R,EAASjD,UAAUokB,iBAAmB,SAAU7K,EAAQhH,EAAMqC,EAAa0H,EAAU3H,GACnF,IAAI8K,EAAK,aAAO,IAAMpe,EAAYkY,GAClC,GAAIkG,GAAsB,OAAhBA,EAAG4E,SACXvkB,KAAKse,WAAW7E,EAAQhH,OACnB,CACLzS,KAAKkE,eAAgB,EACrBlE,KAAKqP,iBAAiBoK,EAAQ3E,EAAa0H,EAAU,KAAM3H,GAE3D,IADA,IAAI2P,EAAS,aAAU,IAAMnjB,EAAUoY,GAC9BzY,EAAI,EAAGA,EAAIwjB,EAAO7jB,OAAQK,IAAK,CACtC,IAAI6I,EAAK7J,KAAKykB,MAAMD,EAAOlV,SAAStO,EAAEuO,WAAY,MAClD,IAAyC,IAArCvP,KAAK8D,eAAe0J,QAAQ3D,SAAsC2E,IAAxBxO,KAAK8D,eAA8B,CAC/E,IAAI4gB,EAAS,aAAO,IAAMtjB,EAAY,aAAO,IAAMQ,EAAU4iB,EAAOlV,SAAStO,EAAEuO,WAAY,OACtF,YAAMmV,IACT1kB,KAAKmc,aAAaqI,EAAOlV,SAAStO,EAAEuO,WAAY,KAAMmV,EAAQ,MAEhE1kB,KAAK8D,eAAe4U,OAAO1Y,KAAK8D,eAAe0J,QAAQ3D,GAAK,OAKpE1G,EAASjD,UAAUykB,iBAAmB,SAAUtd,GAC9C,IAAI/D,EAAQtD,KACRM,EAAS+G,EAAE/G,OACXsjB,EAAc5jB,KAAK6jB,iBACvB,GAAIvjB,GAAUA,EAAOiK,UAAUkH,SA/tEvB,WA+tER,CACE,IAAImT,EAAStkB,EACI,UAAb+G,EAAE6M,OACJ0Q,EAAOC,OACe,WAAbxd,EAAE6M,SACX0Q,EAAO9X,MAAQ9M,KAAK8kB,QACpBF,EAAOC,YANX,CAUAxd,EAAE0d,iBACF,IAAIrR,EAAY,CACdkH,QAAQ,EACRkC,MAAOzV,EACPqK,KAAMkS,GAER5jB,KAAKwM,QAAQ,WAAYkH,GAAW,SAAUiH,GAC5C,IAAKA,EAAaC,OAChB,OAAQvT,EAAE6M,QACR,IAAK,QACC5Q,EAAMsM,aACRtM,EAAM0hB,UAAU3d,GAEhB/D,EAAM0a,aAAa4F,EAAavc,GAElC,MACF,IAAK,YACH/D,EAAM2hB,UAAS3hB,EAAMoH,UAA0BrD,GAC/C,MACF,IAAK,WACH/D,EAAM2hB,WAAS3hB,EAAMoH,UAA0BrD,GAC/C,MACF,IAAK,YACH/D,EAAM4hB,gBAAe,EAAM7d,GAC3B,MACF,IAAK,WACL,IAAK,WACL,IAAK,SACH/D,EAAM6hB,cAAa,GACnB,MACF,IAAK,UACH7hB,EAAM4hB,gBAAe,EAAO7d,GAC5B,MACF,IAAK,SACL,IAAK,SACL,IAAK,OACH/D,EAAM6hB,cAAa,GACnB,MACF,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,SACH7hB,EAAM8hB,kBAAiB,GACvB,MACF,IAAK,MACL,IAAK,WACL,IAAK,UACL,IAAK,QACH9hB,EAAM8hB,kBAAiB,GACvB,MACF,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,aACL,IAAK,YACH9hB,EAAM0a,aAAa4F,EAAavc,GAChC,MACF,IAAK,KACC/D,EAAMgG,eAAiBsa,EAAYrZ,UAAUkH,SAAS,cACxDnO,EAAM+hB,cAAczB,GAEtB,MACF,IAAK,QACH,GAAItgB,EAAM4P,oBAAqB,CAC7B,IAAIoC,EAAS,aAAU,IAAMjU,EAAW,SAAWG,EAAS,IAAK8B,EAAMD,SACvEC,EAAMsZ,iBAAiBtH,UAOnCnS,EAASjD,UAAUolB,gBAAkB,SAAUC,GAC7C,IAAIC,EAAYxlB,KAAK6jB,iBAAiBtY,cAAc,IAAM3J,GACtD6jB,EAAMD,EAAUE,wBAChB3L,EAAS/Z,KAAK2lB,gBAAgB3lB,KAAKqD,SACvC,IAAK,YAAM0W,GAAS,CAClB,IAAI6L,EAAY7L,EAAO2L,wBACnBD,EAAII,OAASD,EAAUC,OACzB9L,EAAO+L,WAAaL,EAAII,OAASD,EAAUC,OAClCJ,EAAIM,IAAMH,EAAUG,MAC7BhM,EAAO+L,WAAaF,EAAUG,IAAMN,EAAIM,KAG5B/lB,KAAKgmB,oBAAoBR,IAEvCA,EAAUS,eAAeV,IAG7BpiB,EAASjD,UAAU8lB,oBAAsB,SAAUE,GACjD,IAAIT,EAAMS,EAAQR,wBAClB,OAAOD,EAAIM,KAAO,GAAKN,EAAIU,MAAQ,GAAKV,EAAII,SAAWO,OAAOC,aAAehb,SAASib,gBAAgBC,eAAiBd,EAAIe,QAAUJ,OAAOK,YAAcpb,SAASib,gBAAgBI,cAErLvjB,EAASjD,UAAUylB,gBAAkB,SAAUjU,GAC7C,OAAI,YAAMA,GACD,KAEFA,EAAKiV,aAAejV,EAAK6U,aAAe7U,EAAO1R,KAAK2lB,gBAAgBjU,EAAKuC,gBAElF9Q,EAASjD,UAAUglB,eAAiB,SAAU0B,EAAWvf,GACvD,GAAIrH,KAAKkT,oBAAqB,CAC5B,IAAI0Q,EAAc5jB,KAAK6jB,iBACnBgD,EAAWD,EAAY5mB,KAAK8mB,YAAYlD,GAAe5jB,KAAK+mB,YAAYnD,GAC5E5jB,KAAK0d,cACL1d,KAAK2d,gBAAgBkJ,GACrB7mB,KAAKge,aAAa6I,EAAUxf,GAAG,GAC/BrH,KAAKslB,iBAAiBsB,QAEtB5mB,KAAKmlB,aAAayB,IAGtBzjB,EAASjD,UAAU8kB,UAAY,SAAU3d,GACvC,IAAIuc,EAAc5jB,KAAK6jB,iBACnBmD,EAAY,aAAO,IAAM7kB,EAAcyhB,GACvC5T,EAAY,aAAO,YAAsBgX,GAAWzc,UAAUkH,SAASvP,GACtE0hB,EAAYrZ,UAAUkH,SAAS,cACuC,IAArEmS,EAAYzN,uBAAuB,uBAAuBxV,QAC5DX,KAAKwZ,kBAAkBwN,EAAWhX,EAAW4T,EAAavc,IAIhElE,EAASjD,UAAUsZ,kBAAoB,SAAUwN,EAAW9I,EAAS9F,EAAI/Q,GACvE,IAAI/D,EAAQtD,KACRyZ,EAAS,YAAQuN,EAAW,IAAM3lB,GACtCrB,KAAK6E,iBAAmB,GACxB,IAAIgW,EAAaqD,EAAmB,QAAT,OACtB,YAAMrD,IACTpB,EAAO9P,aAAa,eAAgBkR,GAEtC,IAAInH,EAAY1T,KAAK0a,cAAcjB,EAAQyE,EAAU,UAAY,QAAS7W,GAC1ErH,KAAKwM,QAAQ,eAAgBkH,GAAW,SAAUiH,GAC3CA,EAAaC,QAChBtX,EAAM2jB,mBAAmBD,EAAW9I,EAAS9F,EAAIuC,EAActT,OAIrElE,EAASjD,UAAU+mB,mBAAqB,SAAUD,EAAW9I,EAAS9F,EAAI1E,EAAWrM,GACnF,IAAkE,IAA9DrH,KAAK0D,eAAe8J,QAAQ4K,EAAGxG,aAAa,eAC9C5R,KAAK0D,eAAegI,KAAK0M,EAAGxG,aAAa,aACrC5R,KAAK2P,WAAW,CAClB,IAAIjB,EAAQ1O,KAAKuO,cAAcvO,KAAKgM,SAAUoM,EAAGxG,aAAa,aAChD,OAAVlD,EACF1O,KAAKknB,aAAaxY,EAAO1O,KAAK0D,eAAgB,KAAM,MAAM,GAE1DgL,EAAQ,KAKd,GADA1O,KAAKmR,YAAY6V,EAAW9I,EAAU,UAAY,QAAS7W,GAAG,GAC1DrH,KAAK2P,UAAW,CAClB3P,KAAK+V,sBAAsBqC,GAC3BpY,KAAKgZ,qBAAqB,CAAChZ,KAAKiZ,YAAYb,KAC5CpY,KAAK8V,uBAAuB,YAAQ,YAAQsC,EAAI,IAAM7W,GAAa,IAAMF,IACzE,IAAIwX,OAAU,EACW,UAArBnF,EAAUQ,OACZ2E,GAAU,EACoB,YAArBnF,EAAUQ,SACnB2E,GAAU,GAEZ7Y,KAAKgb,kBAAkB5C,EAAIS,GAE7B7Y,KAAKie,iBAAiB+I,EAAW9I,EAAS7W,IAS5ClE,EAASjD,UAAU8a,kBAAoB,SAAU5C,EAAIS,GACnD,IAAIvV,EAAQtD,KACR6X,EAAe,aAAO,IAAMtW,EAAY6W,GACxC+O,EAAc/O,EAAGxG,aAAa,YAC9B/E,EAAS7M,KAAK2H,OAClB,GAAsB,IAAlB3H,KAAKkO,UAAkBlO,KAAK2P,UAAW,CACzC,IAAIG,EAAa,IAAI,IAAY9P,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMnB,EAAOkB,SAAU,QAASoZ,GAAa,IAClHC,EAA2BtX,EAAWmF,QAAO,SAAUvC,GACzD,OAAmE,IAA5DpP,EAAMmF,aAAa+E,QAAQkF,EAAK7F,EAAOhD,IAAI0F,cACjDvP,OAC6C,IAA5CA,KAAKyI,aAAa+E,QAAQ2Z,IAAuBC,EAAyBzmB,SAAWmP,EAAWnP,QAAUX,KAAKgY,UAC7GoP,EAAyBzmB,OAAS,IACpCmP,EAAasX,GAGjB,IAAK,IAAIpmB,EAAI,EAAGA,EAAI8O,EAAWnP,OAAQK,IAAK,CAC1C,IAAIiP,EAAWH,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMiG,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,KACxI2O,EAAUpO,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOqI,WAAaF,EAAWR,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOqI,WAAWT,WAAa,KACzJ,IAAgD,IAA5CvP,KAAKyI,aAAa+E,QAAQ2Z,KAAgE,IAAzCnnB,KAAKyI,aAAa+E,QAAQyC,GAAkB,CAC/FjQ,KAAKkQ,mBAAmBD,EAAUH,EAAW9O,IAC7C,IAAI6P,EAAa7Q,KAAKuO,cAAcvO,KAAKgM,SAAUiE,GACnDjQ,KAAKqnB,cAAcxW,EAAYgI,IACiB,IAA5C7Y,KAAK8E,gBAAgB0I,QAAQyC,IAC/BjQ,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQyC,GAAW,QAEjE,IAAgD,IAA5CjQ,KAAKyI,aAAa+E,QAAQ2Z,IAAwC,OAAjBtP,IAAkE,IAAzC7X,KAAKyI,aAAa+E,QAAQyC,IAK7G,GAJAjQ,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQyC,GAAW,GAC9C,SAAZiO,GACFle,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQsI,EAAU,YAAa,OAEtB,IAA5CjQ,KAAKyI,aAAa+E,QAAQ2Z,IAAwC,OAAjBtP,IAAqE,IAA5C7X,KAAK8E,gBAAgB0I,QAAQyC,GAAkB,CAC3H,IAAImB,EAAapR,KAAKuO,cAAcvO,KAAKgM,SAAUiE,GACnDjQ,KAAKqnB,cAAcjW,EAAYyH,IACiB,IAA5C7Y,KAAK8E,gBAAgB0I,QAAQyC,IAC/BjQ,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQyC,GAAW,QAGnE,CACDY,EAAa7Q,KAAKuO,cAAcvO,KAAKgM,SAAUiE,GACnDjQ,KAAKqnB,cAAcxW,EAAYgI,UAG9B,GAAsB,IAAlB7Y,KAAKkO,UAAmBlO,KAAK2P,UAmBjC,CAEL,GADIkB,EAAa7Q,KAAKuO,cAAcvO,KAAKgM,SAAUmb,GACnC,CACd,IAAIG,EAAqBzW,EAAWoE,QAAO,SAAUvC,GACnD,IAAI6U,EAAYC,OAAO9U,EAAKjT,OAAO6N,KAAKoF,GAAM,KAC9C,OAAkD,IAA3CpP,EAAMmF,aAAa+E,QAAQ+Z,MAEhCD,EAAmB3mB,OAAS,GAAKkQ,EAAWlQ,QAAUX,KAAKgY,WAC7DnH,EAAayW,GAEftnB,KAAKynB,iBAAiB5W,EAAYsW,EAAatP,EAAcgB,SA5B/D,GAAKA,EAWH,IAAS7X,EAAI,EAAGA,EAAIhB,KAAKgM,SAASrL,OAAQK,IAAK,CAC7C,IAAI0P,EAAY1Q,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM7J,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MACrG,IAA1CvP,KAAKyI,aAAa+E,QAAQkD,IAC5B1Q,KAAKkQ,mBAAmBQ,EAAW1Q,KAAKgM,SAAShL,QAdzC,CAEZ,IADA,IAAI2P,EAAc,IAAI,IAAY3Q,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMnB,EAAOmD,UAAW,SAAS,GAAM,IACxGhP,EAAI,EAAGA,EAAI2P,EAAYhQ,OAAQK,IAAK,CAC3C,IAAI6I,EAAK8G,EAAYrB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM8G,EAAYrB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MACjG,IAAnCvP,KAAKyI,aAAa+E,QAAQ3D,IAC5B7J,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQ3D,GAAK,GAE1D7J,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQkC,EAAI,YAAa,MAEhE7J,KAAKyI,aAAe,KAuB1BtF,EAASjD,UAAUgQ,mBAAqB,SAAUD,EAAUyX,GAC1D,IAAIC,EAAiB3nB,KAAKiW,sBAC1B,IAAK0R,EAAgB,CACnB,IAAIC,GAAsB,EAC1B,GAAI5nB,KAAKoP,cAAgBpP,KAAK2H,OAAOkgB,iBACnCH,EAAc,YAAMA,GAAeA,EAAc1nB,KAAK4X,cAAc3H,IAC/D,YAAMyX,IAAc,CACvB,IAAIG,EAAiBH,EAAY1nB,KAAK2H,OAAOkgB,gBACzCA,IAAmB,YAAMA,EAAeC,SAAqD,IAA3CD,EAAeC,MAAMta,QAAQvL,KACjF2lB,GAAsB,GAI5B,IAAI/R,EAAY,aAAO,cAAiB5F,EAAW,KAAOjQ,KAAKqD,SAC/DskB,EAAiB9R,GAAaA,EAAUtL,UAAUkH,SAASxP,IAAmD,IAAxCjC,KAAK2D,YAAY6J,QAAQyC,IAAoB2X,EAEjHD,GACF3nB,KAAKyI,aAAaiD,KAAKuE,IAG3B9M,EAASjD,UAAUmnB,cAAgB,SAAUxW,EAAYgI,GACvD,IAAK,IAAI7X,EAAI,EAAGA,EAAI6P,EAAWlQ,OAAQK,IAAK,CAC1C,IAAIqP,EAAUQ,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgH,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,KACvIwY,EAAelX,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOqI,WAAaa,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOqI,WAAWT,WAAa,MAClH,IAAxCvP,KAAKyI,aAAa+E,QAAQ6C,IAAoBwI,GAChD7Y,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQ6C,GAAU,IAEnB,IAAxCrQ,KAAKyI,aAAa+E,QAAQ6C,IAAmBwI,GAC/C7Y,KAAKkQ,mBAAmBG,EAASQ,EAAW7P,IAEzB,SAAjB+mB,GAA4BlP,GAC9B7Y,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQ0I,EAAS,YAAa,MAErE,IAAIgC,EAAgBrS,KAAKuO,cAAcvO,KAAKgM,SAAUqE,GAClDgC,EAAc1R,OAAS,GACzBX,KAAKqnB,cAAchV,EAAewG,KAaxC1V,EAASjD,UAAUunB,iBAAmB,SAAU5W,EAAYkJ,EAAQlC,EAAcgB,GAChF,IAAK,IAAI7X,EAAI,EAAGA,EAAI6P,EAAWlQ,OAAQK,IAAK,CAC1C,IAAIoR,EAAevB,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgH,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,GAC5I2O,EAAUrN,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOqI,WAAaa,EAAWvB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOqI,WAAWT,WAAa,KACrJvP,KAAK2P,WACoC,IAAvC3P,KAAKyI,aAAa+E,QAAQuM,KAA+D,IAA7C/Z,KAAKyI,aAAa+E,QAAQ4E,IACxEpS,KAAKkQ,mBAAmBkC,EAAcvB,EAAW7P,KACG,IAAhDhB,KAAK8E,gBAAgB0I,QAAQ4E,IAC/BpS,KAAK8E,gBAAgB4T,OAAO1Y,KAAK8E,gBAAgB0I,QAAQ4E,GAAe,KAE1B,IAAvCpS,KAAKyI,aAAa+E,QAAQuM,KAA+D,IAA7C/Z,KAAKyI,aAAa+E,QAAQ4E,IAAyByG,IACxG7Y,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQ4E,GAAe,GAClD,SAAZ8L,GACFle,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQyK,EAAc,YAAa,OAGlEpS,KAAK2P,YACVkJ,GAO8C,IAA7C7Y,KAAKyI,aAAa+E,QAAQ4E,IAC5BpS,KAAKkQ,mBAAmBkC,EAAcvB,EAAW7P,MAPF,IAA7ChB,KAAKyI,aAAa+E,QAAQ4E,IAC5BpS,KAAKyI,aAAaiQ,OAAO1Y,KAAKyI,aAAa+E,QAAQ4E,GAAe,GAEpEpS,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQyK,EAAc,YAAa,MACxEpS,KAAKyI,aAAe,KAOxB,IAAIoR,EAAW7Z,KAAKuO,cAAc,CAACsC,EAAWvB,SAAStO,EAAEuO,WAAY,MAAO6C,GACxEyH,GACF7Z,KAAKynB,iBAAiB5N,EAAUE,EAAQlC,EAAcgB,KAK5D1V,EAASjD,UAAUgnB,aAAe,SAAUxY,EAAOsZ,EAAU/M,EAASlD,EAAYkQ,GAChF,GAAIvZ,EACF,IAAK,IAAIwZ,EAAW,EAAGA,EAAWxZ,EAAM/N,OAAQunB,IAAY,CAC1D,IAAI7X,EAAU,YAASrQ,KAAK2H,OAAOkC,GAAI6E,EAAMY,SAAS4Y,EAAS3Y,WAAY,MACvEqK,EAAQ5Z,KAAKqD,QAAQkI,cAAc,cAAgB8E,EAAU,OAE3C,IAAlB4X,IAAgF,IAArDjoB,KAAK0D,eAAe8J,QAAQ6C,EAAQd,cACnD,OAAVqK,IAAmB,YAAMlL,EAAMY,SAAS4Y,EAAS3Y,WAAY,KAAKvP,KAAK2H,OAAOqI,cAAyD,IAA1CgY,EAASxa,QAAQ6C,EAAQd,aAAqC,IAAfwI,GAAgC,IAAZkD,MAC1F,IAApEvM,EAAMY,SAAS4Y,EAAS3Y,WAAY,KAAKvP,KAAK2H,OAAOqI,YAAoC,IAAZiL,EAC/E+M,EAAStc,KAAK2E,EAAQd,YAEtBwI,EAAa,KAEfA,GAAiF,IAApErJ,EAAMY,SAAS4Y,EAAS3Y,WAAY,KAAKvP,KAAK2H,OAAOqI,YAAoC,IAAZiL,EAAgB,EAAI,OAIpE,IAA1C+M,EAASxa,QAAQ6C,EAAQd,aAAsB,YAAM0L,IACvD+M,EAAStc,KAAK2E,EAAQd,YAExB,IAAI4Y,EAAc,YAASnoB,KAAK2H,OAAO+G,MAAMa,WAAYb,EAAMY,SAAS4Y,EAAS3Y,WAAY,MAE7F,IAAoF,IAAhF,YAASvP,KAAK2H,OAAOwI,YAAazB,EAAMY,SAAS4Y,EAAS3Y,WAAY,OAAkB4Y,EAAa,CACvG,IAAIte,EAAK,YAAS7J,KAAK2H,OAAOkC,GAAI6E,EAAMY,SAAS4Y,EAAS3Y,WAAY,MAClE6Y,OAAY,GAEdA,EADoB,IAAlBpoB,KAAKkO,SACKlO,KAAKuO,cAAcvO,KAAKgM,SAAUnC,EAAG0F,YAErC4Y,KAGR,YAAMF,GACRjoB,KAAKknB,aAAakB,EAAWJ,EAAU/M,EAASlD,GAEhD/X,KAAKknB,aAAakB,EAAWJ,EAAU/M,EAASlD,EAAYkQ,GAE9DlQ,EAAa,MAGjBA,EAAa,OAInB5U,EAASjD,UAAU+kB,SAAW,SAAUoD,EAAYhhB,GAClD,IAAIuc,EAAc5jB,KAAK6jB,iBACnBpR,EAAO,aAAO,OAAS9Q,EAAMiiB,GACjC,GAAIyE,EAAY,CACd,IAAK5V,EACH,OACSA,EAAKlI,UAAUkH,SAASrQ,GACjCpB,KAAKmc,aAAayH,EAAanR,EAAMpL,GAErCrH,KAAKsoB,cAAc1E,GAAa,QAGlC,GAAInR,GAAQA,EAAKlI,UAAUkH,SAAStQ,GAClCnB,KAAK+d,aAAa6F,EAAanR,EAAMpL,OAChC,CACL,IAAIuZ,EAAW,YAAQ,YAAQgD,EAAa,IAAMriB,GAAa,IAAMF,GACrE,IAAKuf,EACH,OAEKA,EAASrW,UAAUkH,SAAS,eAC/BzR,KAAKuoB,SAAS3E,EAAahD,GAC3B5gB,KAAKslB,iBAAgB,MAM/BniB,EAASjD,UAAUilB,aAAe,SAAUyB,GAC1C,IAAIhD,EAAc5jB,KAAK6jB,iBACvB7jB,KAAKsoB,cAAc1E,EAAagD,IAElCzjB,EAASjD,UAAUklB,iBAAmB,SAAUoD,GAC9C,IAAI5E,EAAc5jB,KAAK6jB,iBACnB4E,EAAWD,EAAcxoB,KAAK0oB,cAAgB1oB,KAAK2oB,aAClDF,EAASle,UAAUkH,SAAS,eAC/BzR,KAAKuoB,SAAS3E,EAAa6E,GAC3BzoB,KAAKslB,gBAAgBkD,KAGzBrlB,EAASjD,UAAU2jB,eAAiB,WAClC,IAAI+E,EACAC,EAAQ,aAAO,IAAMxnB,EAAW,iBAAkBrB,KAAKqD,SAC3D,IAAK,YAAMwlB,GAAQ,CACjB,IAAIC,EAAcD,EAAMjX,aAAa,gBACjB,UAAhBkX,GAA2C,UAAhBA,IAC7B9oB,KAAKgY,UAAW,GAMpB,OAHI,YAAM6Q,KACRD,EAAe,aAAO,IAAMvnB,EAAUrB,KAAKqD,UAEtC,YAAMwlB,GAAS,YAAMD,GAAgB5oB,KAAKqD,QAAQwQ,kBAAoB+U,EAAeC,GAE9F1lB,EAASjD,UAAUooB,cAAgB,SAAUlQ,EAAIwO,GAC/C,IAAIC,EAAWD,EAAY5mB,KAAK8mB,YAAY1O,GAAMpY,KAAK+mB,YAAY3O,GAGnE,GAFApY,KAAKuoB,SAASnQ,EAAIyO,GAClB7mB,KAAKslB,iBAAiBsB,GAClBC,EAAStc,UAAUkH,SAAS,aAAc,CAC5C,IAAIsX,EAAYlC,EAASkC,UACO,MAA5BlC,EAASmC,iBAA2BnC,EAAStc,UAAUkH,SAAS,aAClEzR,KAAKsoB,cAAczB,GAAU,GACI,MAAxBA,EAASoC,aAAuBpC,EAAStc,UAAUkH,SAAS,qBAEpC,MAAxBoV,EAASoC,aAAuBF,EAAUxe,UAAUkH,SAAS7P,GADtE5B,KAAKsoB,cAAczB,GAAU,GAI7B7mB,KAAKsoB,cAAczB,EAAUD,KAInCzjB,EAASjD,UAAU4mB,YAAc,SAAU1O,GACzC,IACIyO,EADA7e,EAAQhI,KAAK2b,OAAOnO,QAAQ4K,GAEhC,GAGE,GAFApQ,IACA6e,EAAW7mB,KAAK2b,OAAOrM,SAAStH,EAAMuH,WAAY,KAC9C,YAAMsX,GACR,OAAOzO,SAED,YAAUyO,IACpB,OAAOA,GAET1jB,EAASjD,UAAU6mB,YAAc,SAAU3O,GACzC,IACI8Q,EADAlhB,EAAQhI,KAAK2b,OAAOnO,QAAQ4K,GAEhC,GAGE,GAFApQ,IACAkhB,EAAWlpB,KAAK2b,OAAOrM,SAAStH,EAAMuH,WAAY,KAC9C,YAAM2Z,GACR,OAAO9Q,SAED,YAAU8Q,IACpB,OAAOA,GAET/lB,EAASjD,UAAUwoB,YAAc,WAC/B,IACID,EADAzgB,EAAQ,EAEZ,GACEygB,EAAWzoB,KAAK2b,OAAOrM,SAAStH,EAAMuH,WAAY,KAClDvH,WACQ,YAAUygB,IACpB,OAAOA,GAETtlB,EAASjD,UAAUyoB,WAAa,WAC9B,IACIQ,EADAnhB,EAAQhI,KAAK2b,OAAOhb,OAAS,EAEjC,GACEwoB,EAAUnpB,KAAK2b,OAAOrM,SAAStH,EAAMuH,WAAY,KACjDvH,WACQ,YAAUmhB,IACpB,OAAOA,GAEThmB,EAASjD,UAAUqoB,SAAW,SAAUa,EAASvC,GAC/C,aAAY,CAACuC,GAAUhnB,GACvBgnB,EAAQzf,aAAa,WAAY,MAC5Bkd,EAAStc,UAAUkH,SAAS,eAC/B,YAAS,CAACoV,GAAWzkB,GACrBykB,EAASld,aAAa,WAAY,KAClCkd,EAASwC,QACT,IAAa7e,IAAIqc,EAAU,OAAQ7mB,KAAK8jB,SAAU9jB,MAClDA,KAAK+jB,aAAaqF,EAASvC,KAG/B1jB,EAASjD,UAAU6jB,aAAe,SAAUqF,EAASvC,GACnD7mB,KAAKqD,QAAQmd,gBAAgB,yBACzB4I,GACFA,EAAQ5I,gBAAgB,MAE1BqG,EAASld,aAAa,KAAM3J,KAAKqD,QAAQwG,GAAK,WAC9C7J,KAAKqD,QAAQsG,aAAa,wBAAyB3J,KAAKqD,QAAQwG,GAAK,YAEvE1G,EAASjD,UAAUoT,QAAU,WAC3B,IAAKtT,KAAKsE,gBAAiB,CACzB,IAAIglB,EAAiBtpB,KAAK6jB,iBACtByF,EAAe/e,UAAUkH,SAAS,cACpC6X,EAAe3f,aAAa,WAAY,MACxC3J,KAAKmlB,cAAa,KAElBmE,EAAe3f,aAAa,WAAY,KACxC,YAAS,CAAC2f,GAAiBlnB,GAC3B,IAAaoI,IAAI8e,EAAgB,OAAQtpB,KAAK8jB,SAAU9jB,OAE1DA,KAAKsE,iBAAkB,IAG3BnB,EAASjD,UAAU4jB,SAAW,SAAUhH,GACtC,IAAIwM,EAAiBtpB,KAAK6jB,iBACtB/G,EAAMxc,SAAWgpB,IACnB,aAAY,CAACA,GAAiBlnB,GAC9B,IAAaqI,OAAO6e,EAAgB,OAAQtpB,KAAK8jB,YAGrD3gB,EAASjD,UAAUqpB,YAAc,SAAUliB,GACzC,IAAI,IAAQ0V,SAAZ,CAGA,IAAIzc,EAAS+G,EAAE/G,OACXiK,EAAYjK,EAAOiK,UACnBif,EAAY,YAAQlpB,EAAQ,IAAMe,IACjCmoB,GAAajf,EAAUkH,SAASlQ,IAAegJ,EAAUkH,SAASpQ,GACrErB,KAAK0d,cAGD8L,IAAcA,EAAUjf,UAAUkH,SAAS,cAC7CzR,KAAKypB,SAASD,KAIpBrmB,EAASjD,UAAUupB,SAAW,SAAUrR,GACjCA,EAAG7N,UAAUkH,SA7wFV,YA6wF8B2G,EAAG7N,UAAUkH,SApuFnC,eAquFdzR,KAAK0d,cACL,YAAS,CAACtF,GA/wFJ,aAkxFVjV,EAASjD,UAAUwpB,aAAe,WAChC1pB,KAAK0d,eAEPva,EAASjD,UAAUwd,YAAc,WAC/B,IAAIiM,EAAc,aAAU,WAAa3pB,KAAKqD,SAC1CsmB,GAAeA,EAAYhpB,QAC7B,aAAYgpB,EAxxFN,YA2xFVxmB,EAASjD,UAAU+Y,YAAc,SAAUQ,EAAQmQ,GACjD,IAAK,YAAMnQ,IAAWA,EAAOlP,UAAUkH,SAASpQ,KAAc,YAAM,YAAQoY,EAAQ,gBAAmB,YAAQA,EAAQ,cAAelP,UAAUkH,SAASvQ,GAAO,CAC9J,IAAI2I,EAAK4P,EAAO7H,aAAa,YACzB9D,EAAO9N,KAAK6pB,QAAQpQ,EAAQmQ,GAC5BE,EAAQ,YAAQrQ,EAAO3C,WAAY,IAAMzV,GACzC0oB,EAAMD,EAAQA,EAAMlY,aAAa,YAAc,KAC/CwB,EAAWqG,EAAOlP,UAAUkH,SAASjQ,GACrCoS,GAAa6F,EAAOlP,UAAUkH,SAzvFpB,aA0vFV4B,EAAoD,SAAzCoG,EAAO7H,aAAa,iBAC/BzB,EAAuD,OAAzCsJ,EAAO7H,aAAa,kBAA8G,OAA1E,aAAO,IAAMxQ,EAAYqY,IAAW,aAAO,IAAMtY,EAAasY,IACpIwB,EAAU,KACV+O,EAAkB,aAAO,IAAM7nB,EAAcsX,GAIjD,OAHIzZ,KAAK4P,cAAgBoa,IACvB/O,EAAUxB,EAAO7H,aAAa,iBAEzB,CACL/H,GAAIA,EACJiE,KAAMA,EACNC,SAAUgc,EACV3W,SAAUA,EACVQ,WAAYA,EACZP,SAAUA,EACVrD,UAAWiL,EACX9K,YAAaA,GAGjB,MAAO,CACLtG,GAAI,GACJiE,KAAM,GACNC,SAAU,GACVqF,UAAU,EACVC,UAAU,EACVrD,UAAW,GACXG,aAAa,IAGjBhN,EAASjD,UAAU2pB,QAAU,SAAUpQ,EAAQmQ,GAC7C,GAAIA,EAAQ,CACV,IAAIjW,EAAW3T,KAAK4X,cAAc6B,EAAO7H,aAAa,aAClDhD,EAAQX,WAAWwL,EAAO7H,aAAa,eACvCqY,EAAajqB,KAAKwhB,UAAUxhB,KAAK2H,OAAQiH,EAAO,GACpD,OAAO,YAASqb,EAAWnc,KAAM6F,GAEnC,OAAO,aAAO,IAAMrS,EAAUmY,GAAQyQ,aAExC/mB,EAASjD,UAAU4f,eAAiB,SAAUrG,EAAQpS,GACpD,IAAIsM,EAAW3T,KAAKiZ,YAAYQ,GAChC,MAAO,CACLmB,QAAQ,EACRxW,cAAc,YAAMiD,GACpBqK,KAAM+H,EACN9F,SAAUA,EACVmJ,MAAOzV,IAGXlE,EAASjD,UAAUuT,mBAAqB,SAAUjC,EAAM+B,EAASC,GAC/D,IAAI2W,EAAUnqB,KAAKoK,eAAeoH,EAAMxR,KAAM,eAAiBwT,EAAQxT,KAAKqD,QAAQwG,GAAK,eAAgB7J,KAAKoqB,sBAAkB5b,EAAW+E,EAASvT,KAAKqqB,MACrJF,IACFA,EAAUvqB,MAAMM,UAAUoqB,MAAM/mB,KAAK4mB,GACrC,YAAOA,EAAS5W,KAGpBpQ,EAASjD,UAAUqqB,gBAAkB,SAAUzR,GAC7C9Y,KAAKwqB,cAAc,CAAC,eAAiB1R,EAAMlH,aAAa,eAE1DzO,EAASjD,UAAUuqB,cAAgB,WACjCzqB,KAAK0H,eAAe1H,KAAK2H,QACrB,IAAQ8T,MACVzb,KAAK+O,UAAY/O,KAAKqD,QAAQkI,cAAc,uBAC5CvL,KAAK+O,UAAUkF,cAAcyW,YAAY1qB,KAAK+O,YAE9C/O,KAAKqD,QAAQmI,UAAY,GAEtB,YAAMxL,KAAKoK,iBACdpK,KAAKwqB,gBAEPxqB,KAAKiI,gBACLjI,KAAKwI,cAAc,CACjBD,cAAe,GACfE,aAAc,GACdC,cAAe,KACd,GACH1I,KAAK0D,eAAiB,GACtB1D,KAAK8H,UAAW,EAChB9H,KAAKgJ,gBAAe,IAEtB7F,EAASjD,UAAU4J,YAAc,SAAU6gB,EAAUC,GAC9C,YAAMD,IAA0B,KAAbA,GACtB,aAAY,CAAC3qB,KAAKqD,SAAUsnB,EAASE,MAAM,MAExC,YAAMD,IAA0B,KAAbA,GACtB,YAAS,CAAC5qB,KAAKqD,SAAUunB,EAASC,MAAM,OAG5C1nB,EAASjD,UAAU4qB,eAAiB,SAAUzjB,GAC5C,IAAI/G,EAAS+G,EAAE/G,OACf,MAAKA,GAAUA,EAAOiK,UAAUkH,SAASvQ,IAASZ,EAAOiK,UAAUkH,SAASlQ,IAAejB,EAAOiK,UAAUkH,SAASpQ,IAAaf,EAAOiK,UAAUkH,SAAS9P,IAASrB,EAAOiK,UAAUkH,SAr3F9K,YAq3FiMnR,EAAOiK,UAAUkH,SAp3F7M,kBAo3Fb,CAGE,IAAIqH,EAAQ,YAAQxY,EAAQ,IAAMe,GAClCrB,KAAKqlB,cAAcvM,KAGvB3V,EAASjD,UAAUmlB,cAAgB,SAAUvM,GAC3C,IAAIxV,EAAQtD,KACR+qB,EAAY,aAAO,gBAAiB/qB,KAAKqD,SACzC0nB,GACFA,EAAUlG,OAEZ,IAAItR,EAAU,aAAO,IAAMjS,EAAUwX,GACrC9Y,KAAKgrB,cAAclS,GACnB,IAAImS,EAAWjrB,KAAKiP,cAAc,QAAS,CACzCic,UAn4FU,eAo4FVC,MAAO,CACLre,MAAO9M,KAAK8kB,WAGZpR,EAAY1T,KAAKorB,aAAatS,EAAO,KAAMmS,EAASI,WACxDrrB,KAAKwM,QAAQ,cAAekH,GAAW,SAAUiH,GAC/C,IAAKA,EAAaC,OAAQ,CACxB,IACI0Q,EADW/X,EAAQgY,YAAc,EACR,KAC7B,YAAS,CAACzS,GA54FJ,aA64FD,YAAMxV,EAAM8G,iBACf9G,EAAMinB,gBAAgBzR,GAGpBxV,EAAMkoB,QACRC,YAAW,WACTnoB,EAAMooB,cAAchY,EAAWH,EAAS+X,KACvC,GAEHhoB,EAAMooB,cAAchY,EAAWH,EAAS+X,QAKhDnoB,EAASjD,UAAUwrB,cAAgB,SAAUhY,EAAWH,EAASoY,GAC/DpY,EAAQ/H,UAAYkI,EAAUkY,UAC9B,IAAIhH,EAAS,aAAO,gBAAiBrR,GACrCvT,KAAK6rB,SAAW,IAAMC,YAAY,CAChCzoB,QAASuhB,EACTmH,WAAY,CACVrhB,UAAW1K,KAAK0K,YAEjB1K,KAAKiP,eACRjP,KAAK6rB,SAASG,UAAUlY,MAAMmY,MAAQN,EACtC/G,EAAOyE,QACP,IAAI6C,EAAWtH,EACfsH,EAASC,kBAAkB,EAAGD,EAASpf,MAAMnM,QAC7CX,KAAKosB,gBAAgBxH,IAEvBzhB,EAASjD,UAAU8qB,cAAgB,SAAUlS,GAC3C,IAAIjP,EAAKiP,EAAMlH,aAAa,YAC5B5R,KAAKqsB,SAAWrsB,KAAK4X,cAAc/N,GACnC,IAAI+E,EAAQX,WAAW6K,EAAMlH,aAAa,eAC1C5R,KAAKssB,WAAatsB,KAAKwhB,UAAUxhB,KAAK2H,OAAQiH,EAAO,GACrD5O,KAAK8kB,QAAU,YAAS9kB,KAAKssB,WAAWxe,KAAM9N,KAAKqsB,WAErDlpB,EAASjD,UAAUqsB,cAAgB,SAAUllB,GAC3C,GAAK,aAAO,gBAAiBrH,KAAKqD,SAAlC,CAGA,IAAI/C,EAAS+G,EAAE/G,OACXksB,EAAUlsB,EAAOwM,MACjB2f,EAAS,YAAQnsB,EAAQ,IAAMgB,GAC/BwX,EAAQ,YAAQxY,EAAQ,IAAMe,GAClC,YAAOrB,KAAK6rB,SAASG,WACrB,IAAMU,QAAQ,CACZrpB,QAAS/C,EACTyrB,WAAY/rB,KAAK+rB,aAEf/rB,KAAK2H,OAAOW,sBAAsB,MAAgBtI,KAAK2L,UACzD3L,KAAK2sB,cAAc,SAAU,KAAM7T,EAAO0T,EAAS,KAAM,MAAM,GAE/DxsB,KAAK4sB,cAAc9T,EAAO2T,EAAQD,GAAS,GAE7C,IAAa/hB,OAAOnK,EAAQ,OAAQN,KAAKusB,eACzCvsB,KAAK6rB,SAAW,KAChB,YAAOvrB,GACPA,EAAS,OAEX6C,EAASjD,UAAU0sB,cAAgB,SAAU9T,EAAO2T,EAAQD,EAASK,GACnE,IAAIvpB,EAAQtD,KACR0T,EAAY1T,KAAKorB,aAAatS,EAAO0T,EAAS,MAClDxsB,KAAKwM,QAAQ,aAAckH,GAAW,SAAUiH,GAC9C6R,EAAU7R,EAAaC,OAASD,EAAamK,QAAUnK,EAAa6R,QACpElpB,EAAMwpB,WAAWhU,EAAO2T,EAAQD,EAASK,GACrClS,EAAamK,UAAY0H,GAC3BlpB,EAAMypB,aAAa,aAAc,CAACzpB,EAAM0pB,QAAQlU,SAItD3V,EAASjD,UAAU4sB,WAAa,SAAUhU,EAAO2T,EAAQD,EAASK,GAChE,IAAII,EAAU,aAASjtB,KAAKssB,WAAWxe,KAAM0e,EAASxsB,KAAKqsB,UAC3D,GAAK,YAAMrsB,KAAKoK,gBAMVpK,KAAKuH,oBACPklB,EAAOS,UAAY,IAAmBC,SAASX,GAE/CC,EAAOjhB,UAAYghB,MATU,CAC/BC,EAAOS,UAAY,GACnB,IAAI1Z,EAASsF,EAAMlH,aAAa,YAChC5R,KAAKyT,mBAAmBwZ,EAASR,EAAQjZ,GACzCxT,KAAKsb,uBAQHuR,IACF,aAAY,CAAC/T,GAl+FL,aAm+FRA,EAAMuQ,QACN,IAAa7e,IAAIsO,EAAO,OAAQ9Y,KAAK8jB,SAAU9jB,MAC/C,YAAS,CAAC8Y,GAAQ1W,IAEhBpC,KAAKob,eACPpb,KAAK4b,cAAc9C,IAGvB3V,EAASjD,UAAUiZ,WAAa,SAAUR,GACxC,OAAI,YAAMA,GACD,KACiB,iBAARA,EACT3Y,KAAKqD,QAAQkI,cAAc,cAAgBoN,EAAM,MAChC,iBAARA,EACT,YAAWA,GAEX,MAGXxV,EAASjD,UAAUukB,MAAQ,SAAU9L,GACnC,OAAI,YAAMA,GACD,KACiB,iBAARA,EACTA,EACiB,iBAARA,EACT,YAAWA,GAAK/G,aAAa,YAE7B,MAGXzO,EAASjD,UAAUkrB,aAAe,SAAUtS,EAAO0T,EAAS5H,GAE1D,MAAO,CACLhK,QAAQ,EACR4R,QAASA,EACT9a,KAAMoH,EACNnF,SALS3T,KAAKiZ,YAAYH,GAM1BgM,QAAS9kB,KAAK8kB,QACd8G,UAAWhH,IAGfzhB,EAASjD,UAAU0X,cAAgB,SAAU/N,GAE3C,IAAI,YAAMA,GAAV,CAEO,GAAsB,IAAlB7J,KAAKkO,SAQd,OAAOlO,KAAKotB,mBAAmBptB,KAAKgM,SAAUhM,KAAK2H,OAAQkC,GAP3D,IAAK,IAAI7I,EAAI,EAAGohB,EAASpiB,KAAKgM,SAASrL,OAAQK,EAAIohB,EAAQphB,IAAK,CAC9D,IAAIwS,EAAS,YAASxT,KAAK2H,OAAOkC,GAAI7J,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,MAC3E,IAAK,YAAMvP,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,QAAU,YAAMiE,IAAWA,EAAOjE,aAAe1F,EAC/F,OAAO7J,KAAKgM,SAASsD,SAAStO,EAAEuO,WAAY,QAQpDpM,EAASjD,UAAUktB,mBAAqB,SAAUxL,EAAK/U,EAAQhD,GAC7D,IAAIwjB,EACJ,GAAI,YAAMzL,GACR,OAAOyL,EAET,IAAK,IAAIrsB,EAAI,EAAGohB,EAASR,EAAIjhB,OAAQK,EAAIohB,EAAQphB,IAAK,CACpD,IAAIwS,EAAS,YAAS3G,EAAOhD,GAAI+X,EAAItS,SAAStO,EAAEuO,WAAY,MAC5D,GAAIqS,EAAItS,SAAStO,EAAEuO,WAAY,MAAQiE,GAAUA,EAAOjE,aAAe1F,EACrE,OAAO+X,EAAItS,SAAStO,EAAEuO,WAAY,KAC7B,GAA4B,iBAAjB1C,EAAO6B,OAAuB,YAAM,YAAS7B,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,QAMjG,GAAIvP,KAAK2H,OAAOW,sBAAsB,MAAgB,YAAM,YAAS,QAASsZ,EAAItS,SAAStO,EAAEuO,WAAY,OAAQ,CAGtH,QAAgBf,KADhB6e,EAAUrtB,KAAKotB,mBAAmB,YADtB,QACsCxL,EAAItS,SAAStO,EAAEuO,WAAY,MAAOvP,KAAK2hB,eAAe9U,GAAShD,IAE/G,WAEG,GAAI7J,KAAKyO,gBAAiB,CAE3B2B,EAAY,YADD,QACoBwR,EAAItS,SAAStO,EAAEuO,WAAY,MAE9D,QAAgBf,KADhB6e,EAAUrtB,KAAKotB,mBAAmBhd,EAAWpQ,KAAK2hB,eAAe9U,GAAShD,IAExE,WAjB4G,CAC9G,IAAIuG,EAAY,YAASvD,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,MAElE,QAAgBf,KADhB6e,EAAUrtB,KAAKotB,mBAAmBhd,EAAWpQ,KAAK2hB,eAAe9U,GAAShD,IAExE,OAiBN,OAAOwjB,GAETlqB,EAASjD,UAAUqJ,eAAiB,SAAU+jB,GACxCA,IAAWttB,KAAKmJ,SAClBnJ,KAAKutB,iBAELvtB,KAAKwtB,eAGTrqB,EAASjD,UAAUqtB,eAAiB,WAClC,IACIE,EADAnqB,EAAQtD,KAEZA,KAAK0tB,QAAU,IAAI,IAAU1tB,KAAKqD,QAAS,CACzCsqB,gBAAgB,EAChBC,kBAAkB,EAClBC,SAAU7tB,KAAK6tB,SACfC,WAAY,IAAMlsB,EAClBmsB,eAAe,EACfC,iBAAkB,IAClBC,OAAQ,SAAU5mB,GAChB/D,EAAMwqB,WAAazmB,EAAE6mB,OAAO5tB,OAC5B,IAAI6tB,EAAW,YAAQ7qB,EAAMwqB,WAAY,IAAM5sB,GAC3CktB,EAAW,YAAQ9qB,EAAMwqB,WAAY,IAAMlsB,GAK/C,GAJA0B,EAAM+qB,OAAS,YAAQ/qB,EAAMwqB,WAAY,IAAMzsB,GAC3CiC,EAAM4G,gBAAkBkkB,GAAY9qB,EAAMwqB,WAAWvjB,UAAUkH,SAAS1P,KAC1EqsB,EAAW9qB,EAAMwqB,WAAWjS,qBAEzBvY,EAAMwqB,aAAezmB,EAAEhE,QAAQirB,WAAWH,KAAcC,GAAY9qB,EAAMwqB,WAAWvjB,UAAUkH,SAASvQ,IAASoC,EAAMwqB,WAAWvjB,UAAUkH,SAASlQ,IAAe+B,EAAMwqB,WAAWvjB,UAAUkH,SAASpQ,IAAaiC,EAAM+qB,OAAO9jB,UAAUkH,SAAS,aACxP,OAAO,EAET,IAAI8c,EAAWH,EAASI,WAAU,GAClC,GAAI,YAAM,aAAO,OAAS7sB,EAAM4sB,IAAY,CAC1C,IAAI9b,EAAOnP,EAAM2L,cAAc,MAAO,CACpCic,UAAWvpB,EAAO,IAAMP,IAE1BmtB,EAAS5b,aAAaF,EAAM8b,EAASE,SAAS,IAEhD,IAAI1kB,EAAW2kB,eAAiBxtB,EAAO,IAAMoC,EAAMyG,SAAW,KAAOzG,EAAMoH,UA9lGzE,QA8lG2F,KAC7F+iB,EAAanqB,EAAM2L,cAAc,MAAO,CACtCic,UAAWnhB,KAEFmF,YAAYqf,GACvB,IAAII,EAAOrrB,EAAMiF,cAAc5H,OAC/B,GAAIguB,EAAO,GAAKrrB,EAAM4P,qBAAuB5P,EAAM+qB,OAAO9jB,UAAUkH,SAASjQ,GAAS,CACpF,IAAIotB,EAAQtrB,EAAM2L,cAAc,OAAQ,CACtCic,UAtlGI,eAulGJ1f,UAAW,GAAKmjB,IAElBlB,EAAWve,YAAY0f,GAKzB,OAHAvjB,SAASwjB,KAAK3f,YAAYue,GAC1BpiB,SAASwjB,KAAK/a,MAAMC,OAAS,GAC7BzQ,EAAMwrB,SAAWxrB,EAAM2V,YAAY3V,EAAM+qB,QAClCZ,GAETsB,UAAW,SAAU1nB,GACnB,YAAS,CAAC/D,EAAMD,SA7mGT,cA8mGP,IACIuL,EADAogB,EAAW,YAAQ3nB,EAAE/G,OAAQ,gBAE7B0uB,IACFpgB,EAAQU,SAAS0f,EAASpd,aAAa,cAAe,KAExD,IAAI8B,EAAYpQ,EAAM2rB,aAAa5nB,EAAEyV,MAAOxZ,EAAO,KAAM+D,EAAE/G,OAAQ,KAAMmtB,EAAY7e,GACjF8E,EAAUwb,YAAY3kB,UAAUkH,SAznG9B,cA0nGJnO,EAAMoqB,QAAQyB,WAAW9nB,EAAEyV,OAC3BxZ,EAAM8rB,iBAAiB3B,IAEvBnqB,EAAMkJ,QAAQ,gBAAiBkH,GAAW,SAAUiH,GAC9CA,EAAaC,QACftX,EAAMoqB,QAAQyB,WAAW9nB,EAAEyV,OAC3BxZ,EAAM8rB,iBAAiB3B,IAEvBnqB,EAAMyB,iBAAkB,MAKhCsqB,KAAM,SAAUhoB,GACd/D,EAAMoqB,QAAQllB,cAAc,CAC1B8mB,SAAU,CACRvJ,KAAM,YAAM1e,EAAEyV,MAAMyS,gBAAkB,IAAQxS,SAAW,IAAM,MAGnEzZ,EAAMksB,WAAWnoB,EAAGomB,IAEtBgC,SAAU,SAAUpoB,GAClB,aAAY,CAAC/D,EAAMD,SA3oGZ,cA4oGFgE,EAAE/G,OAAOiK,UAAUkH,SAAS,cAC/BnO,EAAMosB,mBAER,IAAIC,EAAatoB,EAAE/G,OAEfsvB,EAAW,YAAQD,EAAY,gBAG9BA,GAAeC,IAClB,YAAOvoB,EAAE4mB,QACT5iB,SAASwjB,KAAK/a,MAAMC,OAAS,IAE/B,IACInF,EADAogB,EAAW,YAAQW,EAAY,gBAE/BX,IACFpgB,EAAQU,SAAS0f,EAASpd,aAAa,cAAe,KAExD,IAAI8B,EAAYpQ,EAAM2rB,aAAa5nB,EAAEyV,MAAOxZ,EAAOqsB,EAAYA,EAAY,KAAMtoB,EAAE4mB,OAAQrf,GAC3F8E,EAAUmc,qBAdgB,EAe1BvsB,EAAMkJ,QAAQ,eAAgBkH,GAAW,SAAUiH,GACjDrX,EAAMwsB,WAAanV,EAAaoV,kBAChCzsB,EAAMG,cAAgBkX,EAAakV,oBAC/BlV,EAAaC,SACXvT,EAAE4mB,OAAOnX,YACX,YAAOzP,EAAE4mB,QAEX5iB,SAASwjB,KAAK/a,MAAMC,OAAS,IACX,EACd4b,EAAWplB,UAAUkH,SAAS,cAChCnO,EAAMosB,oBAGVpsB,EAAMyB,iBAAkB,QAI9B/E,KAAKgwB,QAAU,IAAI,IAAUhwB,KAAKqD,QAAS,CACzC4sB,IAAK,SAAU5oB,IACR,YAAMA,KAAOA,EAAE/G,OAAOiK,UAAUkH,SAjrG/B,cAirGoDnO,EAAM0sB,QAAQlB,SAASoB,SAAW5sB,EAAM0sB,QAAQlB,SAASoB,QAAQjC,OAAO1jB,UAAUkH,SAASvQ,KACnJmK,SAASwjB,KAAK/a,MAAMC,OAAS,gBAGjCoc,KAAM,WACJ9kB,SAASwjB,KAAK/a,MAAMC,OAAS,IAE/Bqc,KAAM,SAAU/oB,GACd/D,EAAM+sB,WAAWhpB,GACjB/D,EAAMosB,uBAIZvsB,EAASjD,UAAUkvB,iBAAmB,SAAU3B,GAC9C,YAAOA,GACP,aAAY,CAACztB,KAAKqD,SAjsGP,cAksGXrD,KAAK+E,iBAAkB,GAEzB5B,EAASjD,UAAUowB,WAAa,SAAUxT,EAAOxc,GAC/C,IAAIiwB,EAAYzT,EAAMG,eACtB,OAAIsT,GAAaA,EAAU5vB,OAAS,EAC3B4vB,EAAU,GAAGnT,QAAU9c,EAAOolB,wBAAwBS,KAEtDrJ,EAAM0T,SAGjBrtB,EAASjD,UAAUuwB,WAAa,SAAU3T,EAAOxc,GAC/C,IAAIiwB,EAAYzT,EAAMG,eACtB,OAAIsT,GAAaA,EAAU5vB,OAAS,EAC3B4vB,EAAU,GAAGlT,QAAU/c,EAAOolB,wBAAwBK,IAEtDjJ,EAAM4T,SAGjBvtB,EAASjD,UAAUsvB,WAAa,SAAUnoB,EAAGomB,GAC3C,IAAImC,EAAW,YAAQvoB,EAAE/G,OAAQ,gBAC7BqwB,EAAW,YAAQtpB,EAAE/G,OAAQ,IAAMsB,GACnC6Q,EAAO,aAAO,OAAS9Q,EAAM8rB,GACjC,aAAY,CAAChb,GAAO,CAAC5Q,EAAQC,EAptGnB,aACD,cAotGT9B,KAAKuE,UAAW,EAChBvE,KAAK0vB,mBACLrkB,SAASwjB,KAAK/a,MAAMC,OAAS,GAC7B,IAAIxJ,EAAYlD,EAAE/G,OAAOiK,UACrBuS,EAAQzV,EAAEyV,MACV4T,EAAU1wB,KAAKywB,WAAW3T,EAAOzV,EAAE/G,QACnCkwB,EAAUxwB,KAAKswB,WAAWxT,EAAOzV,EAAE/G,QAIvC,GAHIN,KAAKkK,gBAAkBymB,IAAa,YAAMpmB,IAAcA,EAAUkH,SAAS1P,KAC7E4uB,EAAWtpB,EAAE/G,OAAOub,oBAElB+T,EAAU,CACZ,IAAIgB,EAAS,YAAQvpB,EAAE/G,OAAQ,IAAMe,GACjCuc,EAAe,YAAQvW,EAAE/G,OAAQ,IAAM6B,GACvCie,EAAW,YAAQ/Y,EAAE/G,OAAQ,IAAMa,GACnC+d,EAAS,YAAQ7X,EAAE/G,OAAQ,IAAMc,GACrC,IAAKwuB,EAASrlB,UAAUkH,SAASvQ,IAASyvB,IAAaC,EAAOtC,WAAWtuB,KAAKquB,UAAYruB,KAAK6wB,aAAa7wB,KAAKquB,OAAQuC,GACvH,GAAI5wB,KAAKiE,aAAe2sB,EAAQ,CAC9B,IAAIE,EAAiB,aAAO9wB,KAAKkK,cAAgB,IAAMnI,EAAU,IAAMH,EAAUgvB,GACjF,GAAIvpB,IAAM6X,IAAWkB,GAAYsQ,EAAU,IAAM9S,GAAgBsB,GAAUwR,EAAU,GAAKtQ,GAAYoQ,EAAU,EAAG,CACjH,IAAIxoB,EAAQhI,KAAKkK,cAAgB,EAAI,EACrClK,KAAK+wB,gBAAgBH,EAAQne,EAAMzK,QAC9B,GAAIX,IAAM6X,IAAWkB,IAAaxC,GAAgBkT,GAAkBJ,EAAUI,EAAe/U,aAAe,IAAMmD,GAAUwR,EAAU,IAAMtQ,GAAYoQ,EAAU,GAAI,CACvKxoB,EAAQhI,KAAKkK,cAAgB,EAAI,EACrClK,KAAK+wB,gBAAgBH,EAAQne,EAAMzK,QAEnC,YAAS,CAACyK,GAAO5Q,GACjB7B,KAAKuE,UAAW,OAGlB,GAAIqsB,GAAUvpB,IAAM6X,IAAWkB,GAAYsQ,EAAU,IAAM9S,GAAgBsB,GAAUwR,EAAU,GAAKtQ,GAAYoQ,EAAU,EAAG,CACvHxoB,EAAQhI,KAAKkK,cAAgB,EAAI,EACrClK,KAAK+wB,gBAAgBH,EAAQne,EAAMzK,QAC9B,GAAI4oB,GAAUvpB,IAAM6X,IAAWkB,GAAY/Y,EAAE/G,OAAOyb,aAAe,GAAK2U,EAAUrpB,EAAE/G,OAAOyb,aAAe,KAAO6B,GAAgBsB,GAAUwR,EAAU,IAAMtQ,GAAYoQ,EAAU,GAAI,CACtLxoB,EAAQhI,KAAKkK,cAAgB,EAAI,EACrClK,KAAK+wB,gBAAgBH,EAAQne,EAAMzK,QAEnC,YAAS,CAACyK,GAAO5Q,GACjB7B,KAAKuE,UAAW,MAGW,OAAtB8C,EAAE/G,OAAOikB,UAAsBqM,EAAOtC,WAAWtuB,KAAKquB,SAAYruB,KAAK6wB,aAAa7wB,KAAKquB,OAAQuC,GAGjGvpB,EAAE/G,OAAOiK,UAAUkH,SAnwGtB,aAowGN,YAAS,CAACgB,GAAO3Q,GAEjB,YAAS,CAAC2Q,GAnwGJ,eA8vGN,YAAS,CAACA,GAAO3Q,GACjB9B,KAAKgxB,iBAAiB3pB,SAOxB,YAAS,CAACoL,GArwGH,aAswGPpH,SAASwjB,KAAK/a,MAAMC,OAAS,cAE/B,IACInF,EADAogB,EAAW,YAAQ3nB,EAAE/G,OAAQ,gBAE7B0uB,IACFpgB,EAAQU,SAAS0f,EAASpd,aAAa,cAAe,KAExD,IAAI8B,EAAY1T,KAAKivB,aAAa5nB,EAAEyV,MAAO9c,KAAMqH,EAAE/G,OAAQ+G,EAAE/G,OAAQ,KAAMmtB,EAAY7e,GACnF8E,EAAUud,eACZ,aAAY,CAACxe,GAAOiB,EAAUud,eAEhCjxB,KAAKwM,QAAQ,eAAgBkH,GACzBA,EAAUud,eACZ,YAAS,CAACxe,GAAOiB,EAAUud,gBAG/B9tB,EAASjD,UAAU6wB,gBAAkB,SAAUH,EAAQne,EAAMzK,GAC3D,YAAS,CAACyK,GAAO3Q,GACjB,IAAIovB,EAASlxB,KAAKiP,cAAc,MAAO,CACrCic,UA7xGQ,cA+xGV0F,EAAOje,aAAaue,EAAQN,EAAOnC,SAASnf,SAAStH,EAAMuH,WAAY,OAEzEpM,EAASjD,UAAUmwB,WAAa,SAAUhpB,GAUxC,IATA,IAGIqmB,EACA9e,EAJAkO,EAAQzV,EAAEyV,MACV4T,EAAU1wB,KAAKywB,WAAW3T,EAAOzV,EAAE/G,QACnCqvB,EAAatoB,EAAE/G,OAGf8vB,GAAO,EACPzc,EAAW,GACXwd,EAAU,GACVC,EAAe/pB,EAAEynB,SAASuC,UACrBrwB,EAAI,EAAGA,EAAIowB,EAAaE,cAAc3wB,OAAQK,IACrD,GAAIowB,EAAaE,cAAchiB,SAAStO,EAAEuO,WAAY,eAAgB7K,EAAY,CAChFgpB,EAAU0D,EAAaE,cAAchiB,SAAStO,EAAEuO,WAAY,KAC5D,MAGJ,GAAIme,GAAWA,EAAQI,WAAY,CACjC,IAAIA,EAAaJ,EAAQI,WACrBO,EAAS,YAAQP,EAAY,IAAMzsB,GACnCuvB,EAAS,YAAQjB,EAAY,IAAMtuB,GAOvC,GANA8vB,EAAQzlB,KAAK2iB,GACC,MAAVuC,GAAkBjB,EAAWplB,UAAUkH,SAASvQ,KAClD0vB,EAASjB,EAAW9b,mBAEtB,YAAOxM,EAAEkqB,gBACTlmB,SAASwjB,KAAK/a,MAAMC,OAAS,IACxB6c,GAAUA,EAAOtC,WAAWD,IAAWruB,KAAK6wB,aAAaxC,EAAQuC,GAIpE,YAHI5wB,KAAK2H,OAAOW,sBAAsB,MAAgB,IACpDtI,KAAKyD,eAAgB,IAIzB,GAAIiqB,EAAQxa,qBAAuBmb,EAAO9jB,UAAUkH,SAASjQ,GAAS,CACpE,IAAI8T,EAAS,aAAU,IAAM9T,EAAQksB,EAAQrqB,SAE7C,GADA8tB,EAAU7b,EACNjO,EAAE/G,OAAOyb,cAAgB,IAAM2U,EAAUrpB,EAAE/G,OAAOyb,aAAe,IAAM2U,EAAU,EACnF,IAAS1vB,EAAIsU,EAAO3U,OAAS,EAAGK,GAAK,EAAGA,IAClC4vB,EAAOtC,WAAWhZ,EAAOhG,SAAStO,EAAEuO,WAAY,OAASvP,KAAK6wB,aAAavb,EAAOhG,SAAStO,EAAEuO,WAAY,KAAMqhB,IAGnH5wB,KAAKwxB,WAAW7B,EAAYra,EAAOhG,SAAStO,EAAEuO,WAAY,KAAMqhB,EAAQvpB,EAAGqmB,EAASgD,QAGtF,IAAS1vB,EAAI,EAAGA,EAAIsU,EAAO3U,OAAQK,IAC7B4vB,EAAOtC,WAAWhZ,EAAOhG,SAAStO,EAAEuO,WAAY,OAASvP,KAAK6wB,aAAavb,EAAOhG,SAAStO,EAAEuO,WAAY,KAAMqhB,IAGnH5wB,KAAKwxB,WAAW7B,EAAYra,EAAOhG,SAAStO,EAAEuO,WAAY,KAAMqhB,EAAQvpB,EAAGqmB,EAASgD,QAIxF1wB,KAAKwxB,WAAW7B,EAAYtB,EAAQuC,EAAQvpB,EAAGqmB,EAASgD,GAE1D9hB,EAAQU,SAAS+e,EAAOzc,aAAa,cAAe,IACpDwe,GAAO,EAELpwB,KAAK2H,OAAOW,sBAAsB,MAAgB,IACpDtI,KAAKyD,eAAgB,GAEvB,IAASzC,EAAI,EAAGA,EAAImwB,EAAQxwB,OAAQK,IAClC2S,EAASjI,KAAK1L,KAAKgtB,QAAQmE,EAAQ7hB,SAAStO,EAAEuO,WAAY,OAE5DvP,KAAKwM,QAAQ,cAAexM,KAAKivB,aAAa5nB,EAAEyV,MAAO4Q,EAASiC,EAAYtoB,EAAE/G,OAAQ+G,EAAEynB,SAAS2C,eAAgB,KAAM7iB,EAAOwhB,IAC1H1C,EAAQrqB,QAAQwG,KAAO7J,KAAKqD,QAAQwG,KACtC6jB,EAAQX,aAAa,cAAepZ,GACpC3T,KAAKmE,eAAgB,EACrBnE,KAAK2H,OAAOW,WAAatI,KAAKgM,UAEhChM,KAAK+sB,aAAa,cAAepZ,IAEnCxQ,EAASjD,UAAUsxB,WAAa,SAAU7B,EAAYtB,EAAQuC,EAAQvpB,EAAGqmB,EAASgD,GAChF,IAAI9S,EAAe,YAAQ+R,EAAY,IAAMxtB,GACzCie,EAAW,YAAQ/Y,EAAE/G,OAAQ,IAAMa,GACnC+d,EAAS,YAAQ7X,EAAE/G,OAAQ,IAAMc,GAChCitB,EAAO9jB,UAAUkH,SAAS,cAAiBmM,KAAiBsB,GAAU7X,EAAEyV,MAAM4T,QAAU,GAAKtQ,GAAY/Y,EAAEyV,MAAM0T,QAAU,GAAKtR,GAAU7X,EAAEyV,MAAM4T,QAAU,IAAMtQ,GAAY/Y,EAAEyV,MAAM0T,QAAU,KAAOtR,IAAWkB,GAarNpgB,KAAK0xB,gBAAgBrD,EAAQuC,EAAQlD,EAAS,KAAMrmB,EAAGqpB,GAAS,EAAMf,GAZ1C,OAAxBA,EAAWpL,SACbvkB,KAAK2xB,kBAAkBtD,EAAQuC,EAAQvpB,EAAGqmB,GACjCiC,EAAW9b,mBAAqB8b,EAAWplB,UAAUkH,SAASvQ,GACzB,OAA1CyuB,EAAW9b,kBAAkB0Q,UAC/BvkB,KAAK2xB,kBAAkBtD,EAAQuC,EAAQvpB,EAAGqmB,GAEnCiC,EAAWplB,UAAUkH,SAAS,uBAAyBke,EAAWplB,UAAUkH,SAAS,qBAC9FzR,KAAK2xB,kBAAkBtD,EAAQuC,EAAQvpB,EAAGqmB,GAE1C1tB,KAAK0xB,gBAAgBrD,EAAQuC,EAAQlD,EAAS,KAAMrmB,EAAGqpB,EAAS,KAAMf,GAKtE3vB,KAAK4P,cACP5P,KAAK4V,uBAGTzS,EAASjD,UAAUyxB,kBAAoB,SAAUtD,EAAQuC,EAAQvpB,EAAGqmB,GAClE,IAGIkE,EAHAC,EAAS,YAAQjB,EAAQ,IAAMrvB,GAC/BuwB,EAAe,YAAQzD,EAAQ,IAAM9sB,GACrCwwB,EAAe,YAAQD,EAAc,IAAMzwB,GAa/C,GAXIgG,EAAE/G,OAAOyb,aAAe,GAAK1U,EAAEyV,MAAM4T,QAAUrpB,EAAE/G,OAAOyb,aAAe,EACzE6V,GAAM,EACGvqB,EAAEyV,MAAM4T,QAAU,EAC3BkB,GAAM,GACGvqB,EAAE/G,OAAOiK,UAAUkH,SAAS,sBAAwBpK,EAAE/G,OAAOiK,UAAUkH,SAAS,yBACrFpK,EAAEyV,MAAM4T,QAAU,GAAKrpB,EAAEyV,MAAM0T,QAAU,EAC3CoB,GAAM,GACGvqB,EAAEyV,MAAM4T,QAAU,IAAMrpB,EAAEyV,MAAM0T,QAAU,MACnDoB,GAAM,IAGNvqB,EAAE/G,OAAOiK,UAAUkH,SAAS,sBAAwBpK,EAAE/G,OAAOiK,UAAUkH,SAAS,sBAAuB,CACzG,IAAInR,EAAS+G,EAAE/G,OAAO6X,QAAQ,MAC9B0Z,EAAOlf,aAAa0b,EAAQuD,EAAMtxB,EAASA,EAAOub,yBAElDgW,EAAOlf,aAAa0b,EAAQuD,EAAMvqB,EAAE/G,OAAS+G,EAAE/G,OAAOub,oBAExD7b,KAAKgyB,SAAS3D,EAAQuC,EAAQiB,EAAQD,EAAKlE,GAC3C1tB,KAAKiyB,cAAcH,EAAcC,GACjC/xB,KAAKkyB,gBAAgB7D,GACjBX,EAAQrqB,QAAQwG,KAAO7J,KAAKqD,QAAQwG,GACtC7J,KAAKkV,cAELwY,EAAQyE,iBACRnyB,KAAKmyB,mBAGThvB,EAASjD,UAAUwxB,gBAAkB,SAAUrD,EAAQuC,EAAQlD,EAAS1lB,EAAOX,EAAGoe,EAAKvH,EAASyR,GAC9F,IAGImB,EAHAgB,EAAe,YAAQzD,EAAQ,IAAM9sB,GACrCwwB,EAAe,YAAQD,EAAc,IAAMzwB,GAC3C+wB,EAAe,YAAQxB,EAAQ,IAAMrvB,GAKzC,GAHI8F,GAAKA,EAAE/G,SACTwwB,EAAiB,aAAO9wB,KAAKkK,cAAgB,IAAMnI,EAAU,IAAMH,EAAUgvB,IAE3EvpB,IAAMoe,EAAM,IAAMkK,EAAWplB,UAAUkH,SAAS,cAAgBke,EAAWplB,UAAUkH,SAAS,eAAiBmf,EAAO7H,UAAUxe,UAAUkH,SAAS,gBAAkByM,EACvKkU,EAAazf,aAAa0b,EAAQuC,GAClC5wB,KAAKgyB,SAAS3D,EAAQuC,EAAQwB,GAAc,EAAM1E,QAC7C,GAAIrmB,GAAKA,EAAE/G,OAAOyb,aAAe,GAAK0J,EAAMpe,EAAE/G,OAAOyb,aAAe,KAAOmC,IAAYle,KAAKiE,YACjGmuB,EAAazf,aAAa0b,EAAQuC,EAAO/U,oBACzC7b,KAAKgyB,SAAS3D,EAAQuC,EAAQwB,GAAc,EAAO1E,QAC9C,GAAI1tB,KAAKiE,aAAe6sB,GAAkBrL,EAAMqL,EAAe/U,aAAe,KAAOmC,EAC1FkU,EAAazf,aAAa0b,EAAQuC,EAAO/U,oBACzC7b,KAAKgyB,SAAS3D,EAAQuC,EAAQwB,GAAc,EAAO1E,OAC9C,CACL,IAAImE,EAAS7xB,KAAKqyB,aAAazB,GAC3B0B,EAAW,YAAkBtqB,GAA6D,KAApD6pB,EAAOzgB,WAAW9B,SAAStH,EAAMuH,WAAY,KACvFsiB,EAAOlf,aAAa0b,EAAQiE,GAC5BtyB,KAAKgyB,SAAS3D,EAAQiE,EAAST,GAAQ,EAAMnE,GAE/C1tB,KAAKiyB,cAAcH,EAAcC,GACjC/xB,KAAKkyB,gBAAgB7D,GACjBX,EAAQrqB,QAAQwG,KAAO7J,KAAKqD,QAAQwG,GACtC7J,KAAKkV,cAELwY,EAAQyE,iBACRnyB,KAAKmyB,mBAGThvB,EAASjD,UAAU8xB,SAAW,SAAU3D,EAAQuC,EAAQiB,EAAQD,EAAKlE,GACnE,IAAI6E,EAAe,YAAQV,EAAQ,IAAMxwB,GACrCwI,EAAK7J,KAAKykB,MAAM4J,GAChBmE,EAAc9E,EAAQ+E,iBAAiB/E,EAAQ1hB,SAAU0hB,EAAQ/lB,OAAQkC,EAAI,KAAM,MAAM,GACzF6oB,EAAQ1yB,KAAKykB,MAAMmM,GACnB5oB,EAAQhI,KAAK2yB,WAAW3yB,KAAKgM,SAAUhM,KAAK2H,OAAQ+qB,GACpD7Q,EAAW7hB,KAAKykB,MAAM8N,GAC1B,GAAsB,IAAlBvyB,KAAKkO,SAAgB,CACvBlO,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQka,EAAU,eAAe,GACtE,IAAI4D,EAAM,YAAMzd,GAAShI,KAAKgM,SAASrL,OAASixB,EAAM5pB,EAAQA,EAAQ,EACtE,GAAI,YAAM6Z,KAAc7hB,KAAKub,cACpBiX,EAAY,GAAGxyB,KAAK2H,OAAOoG,cAC7B,CACL,IAAI6kB,EAAU5yB,KAAKkM,eAAiB+B,WAAW4T,GAAYA,EAC3D,aAAS7hB,KAAK2H,OAAOoG,SAAU6kB,EAASJ,EAAY,IAGtD,GADAxyB,KAAKgM,SAAS0M,OAAO+M,EAAK,EAAG+M,EAAY,IACrC9E,EAAQrqB,QAAQwG,KAAO7J,KAAKqD,QAAQwG,GAAI,CAC1C,IAAIuG,EAAYsd,EAAQmF,iBAAiBhpB,GACzC4b,IACA,IAAK,IAAIzkB,EAAI,EAAGsR,EAAMlC,EAAUzP,OAAQK,EAAIsR,EAAKtR,IAC/ChB,KAAKgM,SAAS0M,OAAO+M,EAAK,EAAGrV,EAAUd,SAAStO,EAAEuO,WAAY,MAC9DkW,IAEFiI,EAAQtf,YAAcsf,EAAQrf,eAAeqf,EAAQ1hB,SAAU0hB,EAAQ/lB,OAAOoG,UAEhF/N,KAAKoO,YAAcpO,KAAKqO,eAAerO,KAAKgM,SAAUhM,KAAK2H,OAAOoG,eAElE/N,KAAK8yB,aAAa9yB,KAAKgM,SAAUhM,KAAK2H,OAAQka,EAAU2Q,EAAaZ,EAAM5pB,EAAQA,EAAQ,IAG/F7E,EAASjD,UAAUmyB,aAAe,SAAUzB,GAC1C,IAAImC,EAAW,aAAO,OAAS3xB,EAAa,SAAWD,EAAayvB,GAChEmC,GAAYA,EAASxoB,UAAUkH,SAASrQ,KAAsC,IAAvBpB,KAAKyD,eAC9DzD,KAAKmc,aAAayU,EAAQmC,EAAU,MAEtC,IAAIlB,EAAS,aAAO,IAAMtwB,EAAYqvB,KACX,IAAvB5wB,KAAKyD,gBAA2BouB,GAAUkB,GAC5C/yB,KAAKqP,iBAAiBuhB,GAExBiB,EAAS,aAAO,IAAMtwB,EAAYqvB,IAC7B,YAAMiB,IAAW7xB,KAAKyD,eAA4D,SAAzCmtB,EAAOhf,aAAa,mBAChEigB,EAAO/d,MAAM0L,QAAU,QAEpB,YAAMqS,KAAkC,IAAvB7xB,KAAKyD,gBACzBouB,EAAO/d,MAAM0L,QAAU,SAErB,YAAMqS,KAAkC,IAAvB7xB,KAAKyD,iBACpB,YAAMsvB,IACR,IAASC,aAAahzB,KAAKiP,cAAe2hB,EAAQxvB,EAAYpB,KAAK8G,iBAEjE2L,EAAO,aAAO,OAASrR,EAAa,SAAWD,EAAayvB,KAE9Dne,EAAKlI,UAAUC,IAAI,qBAErBqnB,EAAS,IAASoB,WAAWjzB,KAAKiP,cAAe,GAAI,KAAMjP,KAAK8G,gBAChE8pB,EAAO1hB,YAAY2iB,GACfpf,EACF,aAAY,CAACA,GAAOtR,GAEpB,IAAS6xB,aAAahzB,KAAKiP,cAAe2hB,EAAQxvB,EAAYpB,KAAK8G,gBAErE8pB,EAAOjnB,aAAa,gBAAiB,SACrCkoB,EAAO/d,MAAM0L,QAAU,QAEzB,GAAI,YAAMqS,GAAS,CACjB,IAOIpf,EAPA8M,EAAOvf,KAAK6f,YACZ,YAAMN,IAASA,GAAsB,kBAAdA,EAAKP,OAC9Bhf,KAAKwM,QAAQ,gBAAiBxM,KAAK8f,eAAe8Q,EAAQ,OAExD,YAAMmC,IACR,IAASC,aAAahzB,KAAKiP,cAAe2hB,EAAQzvB,EAAanB,KAAK8G,iBAElE2L,EAAO,aAAO,OAASrR,EAAa,SAAWD,EAAayvB,MAI9D,IAASoC,aAAahzB,KAAKiP,cAAe2hB,EAAQzvB,EAAanB,KAAK8G,gBACpE2L,EAAO,aAAO,OAAS9Q,EAAMivB,IAH7B,aAAY,CAACne,GAAOrR,GAMtBywB,EAAS,IAASoB,WAAWjzB,KAAKiP,cAAe,GAAI,KAAMjP,KAAK8G,gBAChE8pB,EAAO1hB,YAAY2iB,GACnB7xB,KAAK4f,UAAUgR,GACf5wB,KAAKwM,QAAQ,eAAgBxM,KAAK8f,eAAe8Q,EAAQ,OAE3D,IAAIsC,EAAe,aAAO,OAAS/xB,EAAayvB,GAMhD,OALK,YAAMiB,IAAWqB,GAAgBlzB,KAAKyD,eAA4D,SAAzCmtB,EAAOhf,aAAa,mBAChF,aAAY,CAACshB,GAAe/xB,GAC5ByvB,EAAOjnB,aAAa,gBAAiB,SACrC,YAAS,CAACupB,GAAe9xB,IAEpBywB,GAET1uB,EAASjD,UAAU+xB,cAAgB,SAAUH,EAAcC,GACzD,GAAIA,GAAmD,IAAnCD,EAAaqB,kBAAyB,CACxD,IAAIC,EAAW,aAAO,OAASzxB,EAAMowB,GACrC,YAAOD,GACP,YAAOsB,GACP,IAAIvR,EAAW7hB,KAAKykB,MAAMsN,GAC1B/xB,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQka,EAAU,eAAe,GACtE7hB,KAAKsgB,aAAayR,GAAc,KAGpC5uB,EAASjD,UAAUgyB,gBAAkB,SAAU7D,GAC7C,IAAIzf,EAAQ5O,KAAK+gB,QAAQsN,EAAQ,IAAM9sB,GAAYZ,OACnD0tB,EAAO1kB,aAAa,aAAc,GAAKiF,GACvC5O,KAAKqzB,qBAAqB,aAAO,IAAM9xB,EAAY8sB,GAASzf,EAAQ,IAEtEzL,EAASjD,UAAUmzB,qBAAuB,SAAUhwB,EAASuL,GAC3D,IAAK,YAAMvL,GAET,IADA,IAAImS,EAASnS,EAAQ+N,WACZpQ,EAAI,EAAGsR,EAAMkD,EAAO7U,OAAQK,EAAIsR,EAAKtR,IAAK,CACjD,IAAI8X,EAAQtD,EAAOlG,SAAStO,EAAEuO,WAAY,KAC1CuJ,EAAMnP,aAAa,aAAc,GAAKiF,GACtC5O,KAAKqzB,qBAAqB,aAAO,IAAM9xB,EAAYuX,GAAQlK,EAAQ,KAIzEzL,EAASjD,UAAU8wB,iBAAmB,SAAU3pB,GAC9C,IAAIuqB,EACA9U,EAAQzV,EAAEyV,MACV4T,EAAU1wB,KAAKywB,WAAW3T,EAAOzV,EAAE/G,QACnCowB,EAAUrpB,EAAE/G,OAAOyb,aAAe,EACpC6V,GAAM,EACGlB,EAAU,IACnBkB,GAAM,GAER,IAAIV,EAASlxB,KAAKiP,cAAc,MAAO,CACrCic,UA/jHQ,cAikHNljB,EAAQhI,KAAKkK,cAAgB0nB,EAAM,EAAI,EAAIA,EAAM,EAAI,EACzDvqB,EAAE/G,OAAOqS,aAAaue,EAAQ7pB,EAAE/G,OAAOmuB,SAASnf,SAAStH,EAAMuH,WAAY,OAE7EpM,EAASjD,UAAUwvB,iBAAmB,WACpC,IAAI4D,EAAS,aAAO,cAChBA,GACF,YAAOA,IAGXnwB,EAASjD,UAAUstB,YAAc,WAC3BxtB,KAAK0tB,SAAW1tB,KAAKgwB,UACvBhwB,KAAK0tB,QAAQhB,UACb1sB,KAAKgwB,QAAQtD,YAGjBvpB,EAASjD,UAAU+uB,aAAe,SAAUnS,EAAO8E,EAAK+N,EAAYrvB,EAAQizB,EAAUhF,EAAU3f,EAAOwhB,GACrG,IAAIQ,EAASjB,EAAa,YAAQA,EAAY,IAAMtuB,GAAY,KAC5DmyB,EAAW5C,EAAS5wB,KAAKiZ,YAAY2X,GAAU,KAC/C1B,EAActN,EAAMA,EAAIyM,OAASkF,EACjCE,EAAkB7R,EAAMA,EAAIkN,SAAW,KACvC4E,EAAY/D,EAAa3vB,KAAK+gB,QAAQ4O,EAAY,IAAMtuB,GAAY,KACpEsyB,EAAe/R,EAAIyM,OAAOpa,cAC1B6b,EAAalO,EAAIyM,OAAS,YAAQsF,EAAc,IAAMtyB,GAAY,KAClEuyB,EAAe,KACfC,EAAa,KACbC,EAAU,CAAChyB,EAAUD,EAvlHf,aACD,aAulHLkyB,EAAY,KACZriB,GAAgB,IAAT0e,EAAgBlB,EAAc0B,EACrC5oB,EAAQ0J,EAAO,YAAQA,EAAM,kBAAoB,KACjD1Q,EAAI,EACJgzB,EAAW,KAGf,GAFAlE,EAAalO,EAAIyM,QAAyB,OAAfyB,EAAsB,YAAQ6D,EAAc,IAAMzyB,GAAQ4uB,EACrFA,GAAsB,IAATM,EAAgBpwB,KAAK8vB,WAAaA,EAC3CvB,EACF,KAAOvtB,EAAI,GAAG,CACZ,GAAI,aAAO,IAAMW,EAAM4sB,GAAUhkB,UAAUkH,SAASqiB,EAAQxkB,SAAStO,EAAEuO,WAAY,MAAO,CACxFwkB,EAAYD,EAAQxkB,SAAStO,EAAEuO,WAAY,KAC3C,MAEFvO,IAGJ,GAAIgH,EAAO,CACT,IAAIisB,EAAU,EACd,IAAKjzB,EAAI,EAAGA,EAAIgH,EAAMmrB,kBAAmBnyB,IAAK,CAE5C,GADAizB,GAAmB,IAAT7D,GAAiBpoB,EAAMymB,SAASnf,SAAStO,EAAEuO,WAAY,OAAS2f,GAAe0B,IAAW1B,IAAgB+E,EAAUA,GACjH,IAAT7D,GAAiBpoB,EAAMymB,SAASnf,SAAStO,EAAEuO,WAAY,KAAKhF,UAAUkH,SAAS,WAAY,CAC7FoiB,EAAa/W,EAAM4T,SAAW,GAAK1vB,EAAI,EAAIA,EAC3C,MACK,GAAIgH,EAAMymB,SAASnf,SAAStO,EAAEuO,WAAY,OAASmC,EAAM,CACjDoL,EAAM4T,QAAnBmD,EAAmC7yB,EACnC,OAGJ6yB,EAAyB,IAAZI,IAAkBJ,EAAaA,EAC5CG,EAAWh0B,KAAKuE,SAAW,SAAWuY,EAAM4T,QAAU,EAAI,SAAW,QAcvE,GAZIf,IAEAiE,EADuB,IAArBF,EAAU/yB,OACG,KACNgvB,EAAWplB,UAAUkH,SAASpQ,GACxBqyB,EAAU,GAEVA,EAAU,IAGzB9C,IAAW1B,IACb0E,EAAehD,GAEbjB,GAAcrvB,EAAOyb,cAAgB,IAAMe,EAAM4T,QAAUpwB,EAAOyb,aAAe,IAAMe,EAAM4T,QAAU,IACzGkD,EAAehD,GACF,IAATR,GAAe,CACjBxhB,IAAUA,EACV,IAAIslB,EAAWN,EAAe,aAAO,iBAAkBA,GAAgB,KAEvE,GADAC,EAAaK,EAAWA,EAASzF,SAAS9tB,OAAS,IAC7CX,KAAK2H,OAAOW,sBAAsB,MAA6B,OAAb4rB,GAAqBN,EAAc,CACzF,IAAIO,EAAWP,EAAaQ,aAAa,YAAcp0B,KAAKuO,cAAcvO,KAAK2H,OAAOW,WAAYsrB,EAAahiB,aAAa,YAAYrC,YAAc,KACtJskB,EAAaM,EAAWA,EAASxzB,OAAS,GAIhD,MAAO,CACLia,QAAQ,EACRyZ,WAAY9F,EACZzR,MAAOA,EACPoS,YAAaA,EACbuE,gBAAiBA,EACjBa,YAAa1D,EACb2D,gBAAiBf,EACjBgB,UAAWX,EACXY,UAAW7lB,EACXmhB,kBAAmBD,EACnBH,WAAYiE,EACZ3C,cAAe8C,EACfzzB,OAAQA,EACR0zB,SAAUA,IAGd7wB,EAASjD,UAAUw0B,WAAa,SAAUC,GACxC,IAAIriB,EAAMtS,KAAK2b,OAAOhb,OACtB,GAAIg0B,EACF,IAAK,IAAI3zB,EAAI,EAAGA,EAAIsR,EAAKtR,IACvBhB,KAAKiT,cAAcjT,KAAK2b,OAAOrM,SAAStO,EAAEuO,WAAY,WAGxD,IAASvO,EAAI,EAAGA,EAAIsR,EAAKtR,IAAK,CAC5B,IAAI4zB,EAAS,aAAO,IAAM7yB,EAAS/B,KAAK2b,OAAOrM,SAAStO,EAAEuO,WAAY,MACtE,YAAOqlB,KAIbzxB,EAASjD,UAAU+S,cAAgB,SAAUP,GAC3C,IAAIkiB,EAAS50B,KAAKiP,cAAc,MAAO,CACrCic,UAAWnpB,IAEb2Q,EAAKC,aAAaiiB,EAAQliB,EAAKtB,WAAW,KAE5CjO,EAASjD,UAAU20B,eAAiB,SAAUF,GAC5C,GAAIA,EAEF,IADA,IACSvnB,EAAK,EAAG0nB,EADJ,aAAU,IAAMzzB,EAAW,+BAAgCrB,KAAKqD,SACzC+J,EAAK0nB,EAASn0B,OAAQyM,IAAM,CACpD0nB,EAAS1nB,GACfzD,aAAa,gBAAiB,cAIpC,IADA,IACS0D,EAAK,EAAG0nB,EADJ,aAAU,IAAM1zB,EAAW,0BAA2BrB,KAAKqD,SACpCgK,EAAK0nB,EAASp0B,OAAQ0M,IAAM,CACpD0nB,EAAS1nB,GACfmT,gBAAgB,mBAI1Brd,EAASjD,UAAU80B,gBAAkB,SAAU3xB,EAASuL,EAAOqmB,EAAoBC,GAEjF,GADAA,EAAe,YAAMA,GAAgB,EAAIA,EACrCtmB,EAAQ,IAAM,YAAMvL,GAEtB,IADA,IAAImS,EAASxV,KAAKm1B,gBAAgBF,EAAoB5xB,EAAQ+N,YACrDpQ,EAAI,EAAGsR,EAAMkD,EAAO7U,OAAQK,EAAIsR,EAAKtR,IAAK,CACjD,IAAI8X,EAAQtD,EAAOlG,SAAStO,EAAEuO,WAAY,KACtCkD,EAAO,aAAO,IAAMtR,EAAa,aAAO,IAAMS,EAAUkX,IACxDoc,GAAgBtmB,IAAU,YAAM6D,IAClCzS,KAAK+d,aAAajF,EAAOrG,EAAM,MAEjCzS,KAAKg1B,gBAAgB,aAAO,IAAMzzB,EAAYuX,GAAQlK,EAAOqmB,EAAoBC,EAAe,KAItG/xB,EAASjD,UAAUk1B,iBAAmB,SAAUH,GAE9C,IADA,IAAIxS,EAASziB,KAAKm1B,gBAAgBF,EAAoB,aAAU,IAAM9zB,EAAanB,KAAKqD,UAC/ErC,EAAI,EAAGsR,EAAMmQ,EAAO9hB,OAAQK,EAAIsR,EAAKtR,IAAK,CACjD,IAAIyR,EAAOgQ,EAAOnT,SAAStO,EAAEuO,WAAY,KACrCuJ,EAAQ,YAAQrG,EAAM,IAAMpR,GAChCrB,KAAK+d,aAAajF,EAAOrG,EAAM,QAGnCtP,EAASjD,UAAUm1B,cAAgB,SAAUhyB,EAASuL,EAAOqmB,GAC3D,GAAIrmB,EAAQ,IAAM,YAAMvL,GAEtB,IADA,IAAI2R,EAAShV,KAAKm1B,gBAAgBF,EAAoB5xB,EAAQ+N,YACrDpQ,EAAI,EAAGsR,EAAM0C,EAAOrU,OAAQK,EAAIsR,EAAKtR,IAAK,CACjD,IAAI8X,EAAQ9D,EAAO1F,SAAStO,EAAEuO,WAAY,KACtCkD,EAAO,aAAO,IAAMrR,EAAY,aAAO,IAAMQ,EAAUkX,IACtD,YAAMrG,IACTzS,KAAKmc,aAAarD,EAAOrG,EAAM,MAEjCzS,KAAKq1B,cAAc,aAAO,IAAM9zB,EAAYuX,GAAQlK,EAAQ,EAAGqmB,KAIrE9xB,EAASjD,UAAUo1B,eAAiB,SAAUL,GAE5C,IADA,IACS7nB,EAAK,EAAGmoB,EADJv1B,KAAKm1B,gBAAgBF,EAAoB,aAAU,IAAM7zB,EAAYpB,KAAKqD,UACnD+J,EAAKmoB,EAAS50B,OAAQyM,IAAM,CAC9D,IAAIqF,EAAO8iB,EAASnoB,GAChB0L,EAAQ,YAAQrG,EAAM,IAAMpR,GAChCrB,KAAKmc,aAAarD,EAAOrG,EAAM,MAAM,EAAM,MAAM,KAGrDtP,EAASjD,UAAUi1B,gBAAkB,SAAUF,EAAoBvf,GACjE,IAAI8f,EAAS51B,MAAMM,UAAUoqB,MAAM/mB,KAAKmS,GACxC,GAAIuf,EACF,IAAK,IAAIj0B,EAAI,EAAGA,EAAIw0B,EAAO70B,OAAQK,IAC5B,YAAUw0B,EAAOlmB,SAAStO,EAAEuO,WAAY,QAC3CimB,EAAO9c,OAAO1X,EAAG,GACjBA,KAIN,OAAOw0B,GAETryB,EAASjD,UAAUu1B,WAAa,SAAU/jB,GACxC,IAAIogB,EAAe,YAAQpgB,EAAM,IAAMnQ,GACnCwwB,EAAe,YAAQD,EAAc,IAAMzwB,GAC1C,YAAMrB,KAAKoK,iBACdpK,KAAKuqB,gBAAgB7Y,GAEvB,YAAOA,GACP1R,KAAKiyB,cAAcH,EAAcC,GACjC/xB,KAAK01B,WAAWhkB,IAElBvO,EAASjD,UAAUiyB,eAAiB,WAClCnyB,KAAKkV,aACLlV,KAAK21B,sBACL31B,KAAK41B,uBAEPzyB,EAASjD,UAAUgV,WAAa,WAC9BlV,KAAK2b,OAAS/b,MAAMM,UAAUoqB,MAAM/mB,KAAK,aAAU,IAAMlC,EAAUrB,KAAKqD,WAE1EF,EAASjD,UAAUy1B,oBAAsB,WACvC31B,KAAKwI,cAAc,CACjBD,cAAe,KACd,GACH,IAAI+M,EAAS,aAAU,IAAM9T,EAAQxB,KAAKqD,SAC1CrD,KAAK4c,iBAAiBtH,IAExBnS,EAASjD,UAAU01B,oBAAsB,WACvC51B,KAAKwI,cAAc,CACjBE,cAAe,KACd,GAEH,IADA,IAAIsM,EAAS,aAAU,yBAA0BhV,KAAKqD,SAC7CrC,EAAI,EAAGsR,EAAM0C,EAAOrU,OAAQK,EAAIsR,EAAKtR,IAC5ChB,KAAK4f,UAAU5K,EAAO1F,SAAStO,EAAEuO,WAAY,OAGjDpM,EAASjD,UAAUw1B,WAAa,SAAUhkB,GACxC,GAAsB,IAAlB1R,KAAKkO,SAAgB,CACvB,IAAI2nB,EAAK,IAAI,IAAY71B,KAAKgM,UAC1BnC,EAAK7J,KAAKykB,MAAM/S,GAChBF,EAAO,GACPskB,EAAQ91B,KAAKkM,eAAiB+B,WAAWpE,GAAMA,EACnD2H,EAAKxR,KAAK2H,OAAOkC,IAAMisB,EACvBD,EAAGprB,OAAOzK,KAAK2H,OAAOkC,GAAI2H,GAC1BxR,KAAK6yB,iBAAiBhpB,OACjB,CACDA,EAAK7J,KAAKykB,MAAM/S,GACpB1R,KAAKyyB,iBAAiBzyB,KAAKgM,SAAUhM,KAAK2H,OAAQkC,EAAI,KAAM,MAAM,KAGtE1G,EAASjD,UAAU2yB,iBAAmB,SAAUhR,GAC9C,IAAIrM,EAASxV,KAAK+hB,cAAc/hB,KAAKoO,YAAayT,GAAU,GACxDzR,EAAY,GAChB,GAAIoF,EACF,IAAK,IAAIxU,EAAI,EAAGsR,EAAMkD,EAAO7U,OAAQK,EAAIsR,EAAKtR,IAAK,CACjD,IAAI60B,EAAK,IAAI,IAAY71B,KAAKgM,UAC1BnC,EAAK,YAAS7J,KAAK2H,OAAOkC,GAAI2L,EAAOlG,SAAStO,EAAEuO,WAAY,MAAMA,WAClEiC,EAAO,GACPukB,EAAS/1B,KAAKkM,eAAiB+B,WAAWpE,GAAMA,EACpD2H,EAAKxR,KAAK2H,OAAOkC,IAAMksB,EACvB,IAAIpiB,EAAWkiB,EAAGprB,OAAOzK,KAAK2H,OAAOkC,GAAI2H,GACzCpB,EAAU1E,KAAKiI,EAAS,IACxB3T,KAAK6yB,iBAAiBhpB,GAG1B,OAAOuG,GAETjN,EAASjD,UAAU81B,cAAgB,SAAUtgB,EAAO9K,EAAUqrB,GAC5D,IAAK,IAAIj1B,EAAI,EAAGsR,EAAMoD,EAAM/U,OAAQK,EAAIsR,EAAKtR,IAAK,CAChD,IAAI8X,EAAQ9Y,KAAKmZ,WAAWzD,EAAMpG,SAAStO,EAAEuO,WAAY,MACzD,IAAI,YAAMuJ,GAAV,CAGA,IAAIrG,EAAO,aAAO,IAAM7H,EAAU,aAAO,IAAMhJ,EAAUkX,IACpD,YAAMrG,KACLwjB,EACFj2B,KAAKmc,aAAarD,EAAOrG,EAAM,MAE/BzS,KAAK+d,aAAajF,EAAOrG,EAAM,UAKvCtP,EAASjD,UAAUg2B,cAAgB,SAAUxgB,EAAOkb,EAAQ5oB,EAAOmuB,EAAUC,GAC3E,GAAqB,IAAjB1gB,EAAM/U,OAAV,CAGA,IAAI2U,EAAStV,KAAK8O,cAAc4G,GAC5B9G,EAAQgiB,EAAS3iB,WAAW2iB,EAAOhf,aAAa,eAAiB,EAAI,EACrEukB,GACFn2B,KAAKq2B,aAAaznB,GAEpB,IAEI0nB,EAWAzE,EAbAzZ,EAAK,IAASme,uBAAuBv2B,KAAKiP,cAAeqG,EAAQtV,KAAK8G,eAAgB8H,GACtF/E,EAAK7J,KAAKykB,MAAMmM,GAEf,YAAkBA,KACrB0F,EAAY,aAAO,OAAS30B,EAAMivB,IAEd,IAAlB5wB,KAAKkO,UAAkBooB,GAAaA,EAAU/rB,UAAUkH,SAASrQ,IAAepB,KAAKyD,gBAAkB,YAAMzD,KAAKqD,QAAQmzB,gBAAkBx2B,KAAKqD,QAAQmzB,aAAaviB,cAAc1J,UAAUkH,SAAS,mBACzMzR,KAAKyD,eAAgB,GAED,IAAlBzD,KAAKkO,WACPlO,KAAK8yB,aAAa9yB,KAAKgM,SAAUhM,KAAK2H,OAAQkC,EAAI6L,EAAO1N,GACzDhI,KAAKkE,eAAgB,GAMrB2tB,EAHGuE,IACMxF,EAAS5wB,KAAKqyB,aAAazB,GAAU,aAAO,IAAMrvB,EAAYvB,KAAKqD,UAI9E,IAAIozB,EAAW,YAAkBzuB,GAA6D,KAApD6pB,EAAOzgB,WAAW9B,SAAStH,EAAMuH,WAAY,KACvF,IAAKvP,KAAKkE,eAAmC,IAAlBlE,KAAKkO,SAAgB,CAC9C,IAAIqR,EAAOvf,KAAK6f,WAChB,GAAI4W,GAA8B,SAAnBz2B,KAAK6N,UAAsB,CACxC,IAAK,IAAI7M,EAAI,EAAGA,EAAIoX,EAAGzX,OAAQK,IAC7B6wB,EAAOlf,aAAayF,EAAG9I,SAAStO,EAAEuO,WAAY,KAAMknB,GAEtD,KAAsB,IAAlBz2B,KAAKkO,UAAmB,YAAkB0iB,IAAY5wB,KAAKyD,eAAkB,YAAMzD,KAAKqD,QAAQmzB,eAAkBx2B,KAAKqD,QAAQmzB,aAAaviB,cAAc1J,UAAUkH,SAAS,kBAC/KzR,KAAKyD,eAAgB,GACjBsvB,EAAW,aAAO,OAASpxB,EAAMivB,KACrBmC,EAASxoB,UAAUkH,SAASrQ,KAAgB,YAAMme,IAAuB,kBAAdA,EAAKP,OAC9Ehf,KAAKmc,aAAayU,EAAQmC,EAAU,MAI1C,IAAK0D,IAA+B,cAAnBz2B,KAAK6N,WAAgD,eAAnB7N,KAAK6N,WACtD,GAAiC,IAA7BgkB,EAAOzgB,WAAWzQ,OAAc,CAClC,IAASK,EAAI,EAAGA,EAAIoX,EAAGzX,OAAQK,IAC7B6wB,EAAOlf,aAAayF,EAAG9I,SAAStO,EAAEuO,WAAY,KAAMknB,GAIpD,IAAI1D,EAFN,KAAsB,IAAlB/yB,KAAKkO,UAAmB,YAAkB0iB,IAAY5wB,KAAKyD,eAAkB,YAAMzD,KAAKqD,QAAQmzB,eAAkBx2B,KAAKqD,QAAQmzB,aAAaviB,cAAc1J,UAAUkH,SAAS,kBAC/KzR,KAAKyD,eAAgB,GACjBsvB,EAAW,aAAO,OAASpxB,EAAMivB,KACrBmC,EAASxoB,UAAUkH,SAASrQ,KAAgB,YAAMme,IAAuB,kBAAdA,EAAKP,OAC9Ehf,KAAKmc,aAAayU,EAAQmC,EAAU,UAIxC,KAAIvd,EAASqc,EAAOzgB,WACpB,IAASpQ,EAAI,EAAGA,EAAIoX,EAAGzX,OAAQK,IAC7B,IAAK,IAAI+Q,EAAI,EAAGA,EAAIyD,EAAO7U,OAAQoR,IAAK,CAEtC,GADqC,cAAnB/R,KAAK6N,UAA4B2H,EAAOlG,SAASyC,EAAExC,WAAY,KAAK2a,YAAYwM,cAAgBte,EAAG9I,SAAStO,EAAEuO,WAAY,KAAK2d,UAAUwJ,cAAgBlhB,EAAOlG,SAASyC,EAAExC,WAAY,KAAK2a,YAAYwM,cAAgBte,EAAG9I,SAAStO,EAAEuO,WAAY,KAAK2d,UAAUwJ,cAClQ,CACf7E,EAAOlf,aAAayF,EAAG9I,SAAStO,EAAEuO,WAAY,KAAMiG,EAAOlG,SAASyC,EAAExC,WAAY,MAClF,MAEFsiB,EAAOlf,aAAayF,EAAG9I,SAAStO,EAAEuO,WAAY,KAAMiG,EAAOA,EAAO7U,WAM5E,GAAsB,IAAlBX,KAAKkO,SAAgB,CACvBlO,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQkC,EAAI,eAAe,GAChE,IAAI6oB,EAAQ1yB,KAAKykB,MAAMgS,GACnBhR,EAAM,YAAMiN,GAAS1yB,KAAKgM,SAASrL,OAASX,KAAK2yB,WAAW3yB,KAAKgM,SAAUhM,KAAK2H,OAAQ+qB,GAC5F,IAAS3gB,EAAI,EAAGA,EAAI2D,EAAM/U,OAAQoR,IAAK,CACrC,IAAK,YAAMlI,GAAK,CACd,IAAIksB,EAAS/1B,KAAKkM,eAAiB+B,WAAWpE,GAAMA,EACpD,aAAS7J,KAAK2H,OAAOoG,SAAUgoB,EAAQrgB,EAAMpG,SAASyC,EAAExC,WAAY,MAEtEvP,KAAKgM,SAAS0M,OAAO+M,EAAK,EAAG/P,EAAMpG,SAASyC,EAAExC,WAAY,MAC1DkW,KAGJzlB,KAAKwP,aAAaqiB,KAEpB1uB,EAASjD,UAAUm2B,aAAe,SAAUznB,GAC1C,IAAI/B,EAAmB,IAAV+B,EAAc5O,KAAK2H,OAAS3H,KAAKihB,eAAejhB,KAAK2H,OAAQiH,EAAQ,EAAG,GACrF5O,KAAK0H,eAAemF,IAEtB1J,EAASjD,UAAUwH,eAAiB,SAAUmF,GAC5C,IAAIK,EAAOlN,KAAKmN,oBAAoBN,GACpC7M,KAAK8G,eAAea,OAASuF,EAC7BlN,KAAK8G,eAAea,OAAOgvB,IAAMl3B,OAAOS,UAAUJ,eAAeyD,KAAK2J,EAAM,eAAiBA,EAAK0pB,YAAc,eAElHzzB,EAASjD,UAAUyyB,WAAa,SAAU/Q,EAAK/U,EAAQhD,GAErD,IADA,IAAI4b,EAAM,KACDzkB,EAAI,EAAGohB,EAASR,EAAIjhB,OAAQK,EAAIohB,EAAQphB,IAAK,CACpD,IAAI2Q,EAAS,YAAS9E,EAAOhD,GAAI+X,EAAItS,SAAStO,EAAEuO,WAAY,MAC5D,GAAIqS,EAAItS,SAAStO,EAAEuO,WAAY,MAAQoC,GAAUA,EAAOpC,aAAe1F,EACrE,OAAO7I,EACF,GAA4B,iBAAjB6L,EAAO6B,OAAuB,YAAM,YAAS7B,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,QAMjG,GAAIvP,KAAK2H,OAAOW,sBAAsB,MAAgB,YAAM,YAAS,QAASsZ,EAAItS,SAAStO,EAAEuO,WAAY,OAAQ,CACtH,IAAIoF,EAAQ,YAAS,QAASiN,EAAItS,SAAStO,EAAEuO,WAAY,MAEzD,GAAY,QADZkW,EAAMzlB,KAAK2yB,WAAWhe,EAAO3U,KAAK2hB,eAAe9U,GAAShD,IAExD,WAV4G,CAC9G,IAAI2H,EAAO,YAAS3E,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,MAE7D,GAAY,QADZkW,EAAMzlB,KAAK2yB,WAAWnhB,EAAMxR,KAAK2hB,eAAe9U,GAAShD,IAEvD,OAUN,OAAO4b,GAETtiB,EAASjD,UAAU4yB,aAAe,SAAUlR,EAAK/U,EAAQhD,EAAI2H,EAAMxJ,GACjE,IAAI6uB,EACJ,GAAI,YAAMhtB,GAAK,CACb7B,EAAQ,YAAMA,GAAS4Z,EAAIjhB,OAASqH,EACpC,IAAK,IAAIqN,EAAI,EAAG/C,EAAMd,EAAK7Q,OAAQ0U,EAAI/C,EAAK+C,IAC1CuM,EAAIlJ,OAAO1Q,EAAO,EAAGwJ,EAAKlC,SAAS+F,EAAE9F,WAAY,MACjDvH,IAEF,OAAO6uB,EAET,IAAK,IAAI71B,EAAI,EAAGohB,EAASR,EAAIjhB,OAAQK,EAAIohB,EAAQphB,IAAK,CACpD,IAAI2Q,EAAS,YAAS9E,EAAOhD,GAAI+X,EAAItS,SAAStO,EAAEuO,WAAY,MAC5D,GAAIqS,EAAItS,SAAStO,EAAEuO,WAAY,MAAQoC,GAAUA,EAAOpC,aAAe1F,EAAI,CACzE,GAA4B,iBAAjBgD,EAAO6B,OAAsBjP,OAAOS,UAAUJ,eAAeyD,KAAKqe,EAAItS,SAAStO,EAAEuO,WAAY,KAAM1C,EAAO6B,QAA4D,OAAlDkT,EAAItS,SAAStO,EAAEuO,WAAY,KAAK1C,EAAO6B,QAAmB1O,KAAK2H,OAAOW,sBAAsB,KAAe7I,OAAOS,UAAUJ,eAAeyD,KAAKqe,EAAItS,SAAStO,EAAEuO,WAAY,KAAM,SAAU,CACxT,IAAIhP,EAA8B,iBAAjBsM,EAAO6B,MAAqB7B,EAAO6B,MAAQ,QACxD0B,EAAY,YAAS7P,EAAKqhB,EAAItS,SAAStO,EAAEuO,WAAY,MACrD,YAAMa,KACRA,EAAY,IAEdpI,EAAQ,YAAMA,GAASoI,EAAUzP,OAASqH,EAC1C,IAASqN,EAAI,EAAG/C,EAAMd,EAAK7Q,OAAQ0U,EAAI/C,EAAK+C,IAC1CjF,EAAUsI,OAAO1Q,EAAO,EAAGwJ,EAAKlC,SAAS+F,EAAE9F,WAAY,MACvDvH,QAEG,CACDzH,EAA8B,iBAAjBsM,EAAO6B,MAAqB7B,EAAO6B,MAAQ,QAC5DkT,EAAItS,SAAStO,EAAEuO,WAAY,KAAK,GAAKhP,GAAOiR,EAE9C,OAAO,EACF,GAA4B,iBAAjB3E,EAAO6B,OAAuB,YAAM,YAAS7B,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,QAMjG,GAAIvP,KAAK2H,OAAOW,sBAAsB,MAAgB,YAAM,YAAS,QAASsZ,EAAItS,SAAStO,EAAEuO,WAAY,OAAQ,CAClHa,EAAY,YAAS,QAASwR,EAAItS,SAAStO,EAAEuO,WAAY,MAE7D,QAAgBf,KADhBqoB,EAAU72B,KAAK8yB,aAAa1iB,EAAWpQ,KAAK2hB,eAAe9U,GAAShD,EAAI2H,EAAMxJ,IAE5E,WAV4G,CAC9G,IAAI8uB,EAAW,YAASjqB,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,MAEjE,QAAgBf,KADhBqoB,EAAU72B,KAAK8yB,aAAagE,EAAU92B,KAAK2hB,eAAe9U,GAAShD,EAAI2H,EAAMxJ,IAE3E,OAUN,OAAO6uB,GAET1zB,EAASjD,UAAUqhB,gBAAkB,SAAU7L,GAC7C,IAAI7R,EAAa7D,KAAK+2B,SAASrhB,GAC3BshB,EAAUh3B,KAAKi3B,aAAapzB,GAChC7D,KAAK4D,SAAW,GAChB,IAAK,IAAI5C,EAAI,EAAGsR,EAAM0kB,EAAQr2B,OAAQK,EAAIsR,EAAKtR,IAAK,CAClD,IAAI6I,EAAKmtB,EAAQ1nB,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WACzD1F,IAAwC,IAAlC7J,KAAK2D,YAAY6J,QAAQ3D,IACjC7J,KAAK2D,YAAY+H,KAAK7B,GAExB,IAAIiP,EAAQ9Y,KAAKmZ,WAAWtP,GACxBiP,IACFA,EAAMnP,aAAa,gBAAiB,QACpC,YAAS,CAACmP,GAAQ7W,MAIxBkB,EAASjD,UAAUg3B,eAAiB,SAAUxhB,GAE5C,IADA,IAAIyhB,EAAWn3B,KAAK+2B,SAASrhB,GACpB1U,EAAI,EAAGsR,EAAM6kB,EAASx2B,OAAQK,EAAIsR,EAAKtR,IAAK,CACnD,IAAI8X,EAAQ9Y,KAAKmZ,WAAWge,EAAS7nB,SAAStO,EAAEuO,WAAY,MACxD1F,EAAKstB,EAAS7nB,SAAStO,EAAEuO,WAAY,KACrC1F,IAAwC,IAAlC7J,KAAK2D,YAAY6J,QAAQ3D,IACjC7J,KAAK2D,YAAY+U,OAAO1Y,KAAK2D,YAAY6J,QAAQ3D,GAAK,GAEpDiP,IACFA,EAAM0H,gBAAgB,iBACtB,aAAY,CAAC1H,GAAQ7W,MAI3BkB,EAASjD,UAAU62B,SAAW,SAAUrhB,GAEtC,IADA,IAAIshB,EAAU,GACLh2B,EAAI,EAAGsR,EAAMoD,EAAM/U,OAAQK,EAAIsR,EAAKtR,IAAK,CAChD,IAAI6I,OAAK,EACuC,iBAArC6L,EAAMpG,SAAStO,EAAEuO,WAAY,KACtC1F,EAAK6L,EAAMpG,SAAStO,EAAEuO,WAAY,KAAOmG,EAAMpG,SAAStO,EAAEuO,WAAY,KAAKA,WAAa,KAClC,iBAAtCmG,EAAMpG,SAAStO,EAAEuO,WAAY,OAC7C1F,EAAK6L,EAAMpG,SAAStO,EAAEuO,WAAY,KAAOmG,EAAMpG,SAAStO,EAAEuO,WAAY,KAAKqC,aAAa,YAAYrC,WAAa,OAEtF,IAAzBynB,EAAQxpB,QAAQ3D,IAClBmtB,EAAQtrB,KAAK7B,GAGjB,OAAOmtB,GAET7zB,EAASjD,UAAU+2B,aAAe,SAAUvlB,GAC1C,IAAIpO,EAAQtD,KACZ,GAAsB,IAAlBA,KAAKkO,SACPlO,KAAK4D,SAAW5D,KAAKgM,SAASiJ,QAAO,SAAUzD,GAC7C,OAA0F,IAAnFE,EAAKlE,QAAQgE,EAAKlO,EAAMqE,OAAOkC,IAAM2H,EAAKlO,EAAMqE,OAAOkC,IAAI0F,WAAa,cAE5E,GAAsB,IAAlBvP,KAAKkO,SACd,IAAK,IAAImH,EAAI,EAAGA,EAAIrV,KAAKgM,SAASrL,OAAQ0U,IAAK,CAC7C,IAAIxL,EAAK7J,KAAKgM,SAASsD,SAAS+F,EAAE9F,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM7J,KAAKgM,SAASsD,SAAS+F,EAAE9F,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MAClH,IAAtBmC,EAAKlE,QAAQ3D,IACf7J,KAAK4D,SAAS8H,KAAK1L,KAAKgM,SAASsD,SAAS+F,EAAE9F,WAAY,MAE1D,IAAIsB,EAAa,YAAS7Q,KAAK2H,OAAO+G,MAAMa,WAAYvP,KAAKgM,SAASsD,SAAS+F,EAAE9F,WAAY,MACzFsB,GACF7Q,KAAKo3B,kBAAkBvmB,EAAYa,GAIzC,OAAO1R,KAAK4D,UAEdT,EAASjD,UAAUk3B,kBAAoB,SAAUprB,EAAU0J,GACzD,IAAK,IAAIL,EAAI,EAAGA,EAAIrJ,EAASrL,OAAQ0U,IAAK,CACxC,IAAIxL,EAAKmC,EAASsD,SAAS+F,EAAE9F,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMmC,EAASsD,SAAS+F,EAAE9F,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MACvG,IAAvBmG,EAAMlI,QAAQ3D,IAChB7J,KAAK4D,SAAS8H,KAAKM,EAASsD,SAAS+F,EAAE9F,WAAY,MAErD,IAAIsB,EAAa,YAAS7Q,KAAK2H,OAAO+G,MAAMa,WAAYvD,EAASsD,SAAS+F,EAAE9F,WAAY,MACpFsB,GACF7Q,KAAKo3B,kBAAkBvmB,EAAY6E,KAIzCvS,EAASjD,UAAU+H,cAAgB,WACjC,IAAI0Q,EAAM,YAAQ3Y,KAAKqD,QAAS,aAChCrD,KAAKwS,WAAa,YAAMmG,GAAO,GAviIvB,WAyiIVxV,EAASjD,UAAUm3B,kBAAoB,WACrCr3B,KAAKs3B,YAAYt3B,KAAKgM,SAAUhM,KAAK2H,OAAQ,CAAC,WAAY,aAE1D,IADA,IAAI4vB,EAAWv3B,KAAKuI,cACXivB,EAAI,EAAGC,EAASF,EAAS52B,OAAQ62B,EAAIC,EAAQD,IACpDx3B,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQ4vB,EAASjoB,SAASkoB,EAAEjoB,WAAY,KAAM,YAAY,GAGjG,IADA,IAAImoB,EAAS13B,KAAK0I,cACT2M,EAAI,EAAGsiB,EAAUD,EAAO/2B,OAAQ0U,EAAIsiB,EAAStiB,IACpDrV,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQ+vB,EAAOpoB,SAAS+F,EAAE9F,WAAY,KAAM,YAAY,GAE/F,GAAIvP,KAAK4P,aAAc,CACrB5P,KAAKs3B,YAAYt3B,KAAKgM,SAAUhM,KAAK2H,OAAQ,CAAC,cAC9C,IAAIiwB,EAAS53B,KAAKyI,aACTovB,EAAI,EAAb,IAAgBF,EAAUC,EAAOj3B,OAAQk3B,EAAIF,EAASE,IACpD73B,KAAKsZ,YAAYtZ,KAAKgM,SAAUhM,KAAK2H,OAAQiwB,EAAOtoB,SAASuoB,EAAEtoB,WAAY,KAAM,aAAa,KAIpGpM,EAASjD,UAAUo3B,YAAc,SAAU1V,EAAK/U,EAAQirB,GACtD,IAAI,YAAMlW,KAAQ,YAAM/U,GAGxB,IAAK,IAAI7L,EAAI,EAAGohB,EAASR,EAAIjhB,OAAQK,EAAIohB,EAAQphB,IAAK,CACpD,IAAK,IAAI+Q,EAAI,EAAGA,EAAI+lB,EAAMn3B,OAAQoR,IAAK,CACrC,IAAIgmB,EAAQ/3B,KAAKg4B,cAAcnrB,EAAQirB,EAAMxoB,SAASyC,EAAExC,WAAY,MAC/D,YAAMqS,EAAItS,SAAStO,EAAEuO,WAAY,KAAK,GAAKwoB,YACvCnW,EAAItS,SAAStO,EAAEuO,WAAY,KAAK,GAAKwoB,GAGpB,iBAAjBlrB,EAAO6B,OAAuB,YAAM,YAAS7B,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,OAEtFvP,KAAK2H,OAAOW,sBAAsB,MAAgB,YAAM,YAAS,QAASsZ,EAAItS,SAAStO,EAAEuO,WAAY,QAC9GvP,KAAKs3B,YAAY,YAAS,QAAS1V,EAAItS,SAAStO,EAAEuO,WAAY,MAAOvP,KAAK2hB,eAAe9U,GAASirB,GAFlG93B,KAAKs3B,YAAY,YAASzqB,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,MAAOvP,KAAK2hB,eAAe9U,GAASirB,KAM7G30B,EAASjD,UAAU83B,cAAgB,SAAUnrB,EAAQorB,GACnD,OAAQA,GACN,IAAK,WACH,OAAQ,YAAMprB,EAAOuG,UAA8B,WAAlBvG,EAAOuG,SAC1C,IAAK,WACH,OAAQ,YAAMvG,EAAOwG,UAA8B,WAAlBxG,EAAOwG,SAC1C,IAAK,YACH,OAAQ,YAAMxG,EAAOmD,WAAgC,YAAnBnD,EAAOmD,UAC3C,IAAK,cACH,OAAQ,YAAMnD,EAAOsD,aAAoC,cAArBtD,EAAOsD,YAC7C,QACE,OAAO8nB,IAGb90B,EAASjD,UAAUoZ,YAAc,SAAUsI,EAAK/U,EAAQhD,EAAItJ,EAAKuM,GAC/D,IAAI,YAAMjD,GAEH,GAAsB,IAAlB7J,KAAKkO,SAAgB,CAC9B,IAAI4nB,EAAQ91B,KAAKkM,eAAiB+B,WAAWpE,GAAMA,EAC/CiG,EAAa,IAAI,IAAY9P,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMnB,EAAOhD,GAAI,QAASisB,GAAO,IAC1G,aAAS91B,KAAKg4B,cAAcnrB,EAAQtM,GAAMuM,EAAOgD,EAAW,SAE5D9P,KAAKyyB,iBAAiB7Q,EAAK/U,EAAQhD,EAAItJ,EAAKuM,IAGhD3J,EAASjD,UAAUuyB,iBAAmB,SAAU7Q,EAAK/U,EAAQhD,EAAItJ,EAAKuM,EAAOrC,GAC3E,IAAI+nB,EACJ,GAAI,YAAM5Q,GACR,OAAO4Q,EAET,IAAK,IAAIxxB,EAAI,EAAGohB,EAASR,EAAIjhB,OAAQK,EAAIohB,EAAQphB,IAAK,CACpD,IAAI2Q,EAAS,YAAS9E,EAAOhD,GAAI+X,EAAItS,SAAStO,EAAEuO,WAAY,MAC5D,GAAIqS,EAAItS,SAAStO,EAAEuO,WAAY,OAAS,YAAMoC,IAAWA,EAAOpC,aAAe1F,EAO7E,OANIY,EACF+nB,EAAc5Q,EAAIlJ,OAAO1X,EAAG,IAE5B,aAAShB,KAAKg4B,cAAcnrB,EAAQtM,GAAMuM,EAAO8U,EAAItS,SAAStO,EAAEuO,WAAY,MAC5EijB,EAAc,IAETA,EACF,GAA4B,iBAAjB3lB,EAAO6B,OAAuB,YAAM,YAAS7B,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,QAMjG,GAAIvP,KAAK2H,OAAOW,sBAAsB,MAAgB,YAAM,YAAS,QAASsZ,EAAItS,SAAStO,EAAEuO,WAAY,OAAQ,CACtH,IAAIsB,EAAa,YAAS,QAAS+Q,EAAItS,SAAStO,EAAEuO,WAAY,MAE9D,QAAoBf,KADpBgkB,EAAcxyB,KAAKyyB,iBAAiB5hB,EAAY7Q,KAAK2hB,eAAe9U,GAAShD,EAAItJ,EAAKuM,EAAOrC,IAE3F,WAV4G,CAC9G,IAAI2F,EAAY,YAASvD,EAAO6B,MAAOkT,EAAItS,SAAStO,EAAEuO,WAAY,MAElE,QAAoBf,KADpBgkB,EAAcxyB,KAAKyyB,iBAAiBriB,EAAWpQ,KAAK2hB,eAAe9U,GAAShD,EAAItJ,EAAKuM,EAAOrC,IAE1F,OAUN,OAAO+nB,GAETrvB,EAASjD,UAAU6sB,aAAe,SAAU7Y,EAAQxC,GAElD,GADA1R,KAAKsb,uBACU,aAAXpH,EAAuB,CAEzB,IADA,IAAIP,EAAW,GACN3S,EAAI,EAAGA,EAAI0Q,EAAK/Q,OAAQK,IAC/B2S,EAASjI,KAAK1L,KAAKgtB,QAAQhtB,KAAKmZ,WAAW,YAAMzH,EAAKpC,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,KAAO,YAAS7J,KAAK2H,OAAOkC,GAAI6H,EAAKpC,SAAStO,EAAEuO,WAAY,MAAMA,WAAa,QAE/KmC,EAAOiC,EAET,IAAID,EAAY,CACdlC,KAAMxR,KAAKgM,SACXkI,OAAQA,EACRP,SAAUjC,GAEZ1R,KAAKwM,QAAQ,oBAAqBkH,IAEpCvQ,EAASjD,UAAUksB,gBAAkB,SAAUxH,GAC7C,IAAapa,IAAIoa,EAAQ,OAAQ5kB,KAAKusB,cAAevsB,OAEvDmD,EAASjD,UAAUmJ,kBAAoB,SAAUikB,GAC/C,IAAIhqB,EAAQtD,KACRstB,IAAWttB,KAAKmJ,SAClBnJ,KAAKk4B,aAAe,IAAI,IAAMl4B,KAAKqD,QAAS,CAC1C80B,IAAK,SAAU9wB,GACT/D,EAAM80B,eAAe/wB,IAAqB,IAAfA,EAAEgxB,WAC/BhxB,EAAE2V,cAAc+H,iBAChBzhB,EAAMwnB,eAAezjB,EAAE2V,mBAKzBhd,KAAKk4B,cACPl4B,KAAKk4B,aAAaxL,WAIxBvpB,EAASjD,UAAUo4B,eAAiB,SAAUhL,GAC5C,IAAIhqB,EAAQtD,KACRstB,EACFttB,KAAKu4B,cAAgB,IAAI,IAAMv4B,KAAKqD,QAAS,CAC3C80B,IAAK,SAAU9wB,GACb/D,EAAMuZ,aAAaxV,MAInBrH,KAAKu4B,eACPv4B,KAAKu4B,cAAc7L,WAIzBvpB,EAASjD,UAAUs4B,kBAAoB,SAAUlL,GAC/C,IAAIhqB,EAAQtD,KACRstB,EACFttB,KAAKy4B,eAAiB,IAAI,IAAMz4B,KAAKqD,QAAS,CAC5C80B,IAAK,SAAU9wB,IACe,UAAvB/D,EAAM4gB,cAAmD,aAAvB5gB,EAAM4gB,cAA+B5gB,EAAM80B,eAAe/wB,IAAqB,IAAfA,EAAEgxB,WAA6C,IAA1BhxB,EAAE2V,cAAcO,OAC1Ija,EAAM8gB,cAAc/c,MAKtBrH,KAAKy4B,gBACPz4B,KAAKy4B,eAAe/L,WAI1BvpB,EAASjD,UAAUw4B,iBAAmB,SAAUrxB,GAC9CrH,KAAKsE,iBAAkB,GACnB+C,EAAE8b,UAAY9b,EAAEub,UAClBvb,EAAE0d,iBAEA1d,EAAEub,SAAW5iB,KAAKkT,qBACpB,IAAa1I,IAAIxK,KAAKqD,QAAS,cAAerD,KAAKsd,mBAAoBtd,OAG3EmD,EAASjD,UAAUod,mBAAqB,SAAUjW,GAChDA,EAAE0d,kBAEJ5hB,EAASjD,UAAUuJ,WAAa,WAC9B,IAAae,IAAIxK,KAAKqD,QAAS,YAAarD,KAAK04B,iBAAkB14B,MACnEA,KAAKs4B,gBAAe,GACM,SAAtBt4B,KAAKkkB,cACPlkB,KAAKw4B,mBAAkB,GAEzB,IAAahuB,IAAIxK,KAAKqD,QAAS,YAAarD,KAAKupB,YAAavpB,MAC9D,IAAawK,IAAIxK,KAAKqD,QAAS,WAAYrD,KAAK0pB,aAAc1pB,MAC9DA,KAAK24B,eAAiB,IAAI,IAAe34B,KAAKqD,QAAS,CACrDu1B,UAAW54B,KAAK2kB,iBAAiBkU,KAAK74B,MACtCiF,WAAYjF,KAAKiF,WACjB6zB,UAAW,aAGf31B,EAASjD,UAAU64B,aAAe,WAChC,IAAatuB,OAAOzK,KAAKqD,QAAS,YAAarD,KAAK04B,kBACpD14B,KAAKs4B,gBAAe,GACpBt4B,KAAKw4B,mBAAkB,GACvB,IAAa/tB,OAAOzK,KAAKqD,QAAS,YAAarD,KAAKupB,aACpD,IAAa9e,OAAOzK,KAAKqD,QAAS,WAAYrD,KAAK0pB,cAC9C1pB,KAAKmJ,UACRnJ,KAAK24B,eAAejM,WAGxBvpB,EAASjD,UAAU6gB,QAAU,SAAU1d,EAASuH,GAG9C,IAFA,IAAIouB,EAAU,GACVC,EAAK51B,EAAQyT,YACT,YAAMmiB,IACR,YAAQA,EAAIruB,IACdouB,EAAQttB,KAAKutB,GAEfA,EAAKA,EAAGniB,WAEV,OAAOkiB,GAET71B,EAASjD,UAAUk4B,eAAiB,SAAU/wB,GAC5C,IACI6xB,EADA54B,EAAS+G,EAAE2V,cAAc1c,OAS7B,OAPIA,GAAU+G,EAAEgxB,WACK,IAAfhxB,EAAEgxB,SACJr4B,KAAKm5B,SAAW,YAAQ74B,EAAQ,IAAMe,GACd,IAAfgG,EAAEgxB,WACXa,EAAY,YAAQ54B,EAAQ,IAAMe,KAG/BrB,KAAKm5B,WAAaD,GAE3B/1B,EAASjD,UAAU2wB,aAAe,SAAU9W,EAAQrL,GAElD,IADA,IAAIgD,EAAOhD,EAAMoI,YACT,YAAMpF,IAAO,CACnB,GAAIA,IAASqI,EACX,OAAO,EAETrI,EAAOA,EAAKoF,WAEd,OAAO,GAET3T,EAASjD,UAAU4gB,YAAc,SAAUzd,GACzC,YAAS,CAACA,GAAU5B,GACpB,YAAc,CACZnB,OAAQ+C,EACR4oB,MAAO,IAAQlP,SAAW,GAAK,IAC9B/c,KAAKiP,eACR,YAAY5L,IAEdF,EAASjD,UAAUse,YAAc,SAAUnb,GACzC,YAAYA,GACZA,EAAQmI,UAAY,GACpB,aAAY,CAACnI,GAAU5B,IAEzB0B,EAASjD,UAAUk5B,gBAAkB,SAAU1jB,IAC7CA,EAAQvN,KAAKC,MAAMD,KAAKE,UAAUqN,KACxB/U,OAAS,GAAiC,mBAArBX,KAAKq5B,aAA8Br5B,KAAKq5B,YAAY14B,OAAS,IAC1FX,KAAKgY,UAAW,GAElBhY,KAAKs5B,WAAWt5B,KAAKyI,cACrBzI,KAAKu5B,iBAAiB7jB,GAClBA,EAAM/U,OAAS,GACjBX,KAAKw5B,SAAS9jB,IAWlBvS,EAASjD,UAAUkZ,oBAAsB,SAAU1H,EAAMgE,GAIvD,QAHc,IAAVA,IACFA,EAAQ,IAEY,IAAlB1V,KAAKkO,SAAgB,CACvB,IAAIrB,EAAS7M,KAAK2H,OACdmI,EAAa,IAAI,IAAY9P,KAAKgM,UAAU+D,cAAa,IAAI,KAAQ/B,MAAMnB,EAAOhD,GAAI,QAAS6H,GAAM,IACzG,GAAI5B,EAAW,KACb9P,KAAKy5B,mBAAmB3pB,EAAY4B,EAAM5B,EAAW,GAAI4F,GACrD1V,KAAK2P,WAAW,CAIlB,IAHA,IAAI+pB,EAAW5pB,EAAW,GAAG9P,KAAK2H,OAAOoG,UAAY+B,EAAW,GAAG9P,KAAK2H,OAAOoG,UAAUwB,WAAa,KAClG6B,EAAapR,KAAKuO,cAAcvO,KAAKgM,SAAU0tB,GAC/CzoB,EAAQ,EACHqB,EAAM,EAAGA,EAAMlB,EAAWzQ,OAAQ2R,IAAO,CAChD,IAAIjC,EAAUe,EAAW9B,SAASgD,EAAI/C,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,YAC3B,IAAxCvP,KAAKyI,aAAa+E,QAAQ6C,IAC5BY,IAGAA,IAAUG,EAAWzQ,SAAmD,IAAzCX,KAAKyI,aAAa+E,QAAQksB,IAAoBA,GAC/E15B,KAAKkQ,mBAAmBwpB,SAIzB,GAAsB,IAAlB15B,KAAKkO,SACd,IAAK,IAAIyrB,EAAI,EAAGA,EAAI35B,KAAKgM,SAASrL,OAAQg5B,IAAK,CAE7C,IADY35B,KAAKgM,SAASsD,SAASqqB,EAAEpqB,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAM7J,KAAKgM,SAASsD,SAASqqB,EAAEpqB,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,MACjImC,IAA6C,IAArC1R,KAAKyI,aAAa+E,QAAQkE,GAAc,CAC5D1R,KAAKkQ,mBAAmBwB,GACxB,MAEF,IAAIb,EAAa,YAAS7Q,KAAK2H,OAAO+G,MAAMa,WAAYvP,KAAKgM,SAASsD,SAASqqB,EAAEpqB,WAAY,MACzFsB,GACF7Q,KAAKy5B,mBAAmB5oB,EAAYa,EAAM1R,KAAKgM,SAASsD,SAASqqB,EAAEpqB,WAAY,KAAMmG,KAe7FvS,EAASjD,UAAUu5B,mBAAqB,SAAU5oB,EAAYa,EAAM1F,EAAU0J,GAI5E,IAAIvD,OAHU,IAAVuD,IACFA,EAAQ,IAGV,IAAIzE,EAAQ,EACZ,GAAsB,IAAlBjR,KAAKkO,SAAgB,CACnBlC,IACFmG,EAAgBnG,EAAShM,KAAK2H,OAAOkC,IAAMmC,EAAShM,KAAK2H,OAAOkC,IAAI0F,WAAa,MAEnF,IAAK,IAAIvH,EAAQ,EAAGA,EAAQ6I,EAAWlQ,OAAQqH,IAAS,CACtD,IAAIgd,EAAYnU,EAAWvB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgH,EAAWvB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,KACjJvD,GAAYmG,GAAiBnS,KAAK2P,YACc,IAA9C3P,KAAKyI,aAAa+E,QAAQ2E,KAAmE,IAA1CnS,KAAKyI,aAAa+E,QAAQwX,IAC/EhlB,KAAKkQ,mBAAmB8U,EAAWnU,EAAW7I,IAG9Cgd,IAActT,IAA6C,IAArC1R,KAAKyI,aAAa+E,QAAQkE,IAClD1R,KAAKkQ,mBAAmBwB,GAE1B,IAAIW,EAAgBrS,KAAKuO,cAAcvO,KAAKgM,SAAUgZ,GAClD4U,EAAqC,IAAjBlkB,EAAM/U,QAAgB+U,EAAM,KAAOsP,GACvD3S,EAAc1R,SAAW+Q,EAAK/Q,QAAUi5B,IAC1C55B,KAAKy5B,mBAAmBpnB,EAAeX,EAAM1F,QAG5C,CACDA,IACFmG,EAAgBnG,EAAShM,KAAK2H,OAAOkC,IAAMmC,EAAShM,KAAK2H,OAAOkC,IAAI0F,WAAa,IAEnF,IAASvH,EAAQ,EAAGA,EAAQ6I,EAAWlQ,OAAQqH,IAAS,CACtD,IAAIoK,EAAevB,EAAWvB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAMgH,EAAWvB,SAAStH,EAAMuH,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAa,GACpJqqB,EAAsC,IAAlB,CAACloB,GAAM/Q,QAAiC,IAAjB+U,EAAM/U,OACjDqL,GAAYmG,GAAiBnS,KAAK2P,aACc,IAA9C3P,KAAKyI,aAAa+E,QAAQ2E,KAAsE,IAA7CnS,KAAKyI,aAAa+E,QAAQ4E,IAAyBA,IAAiBV,IAAQkoB,GACjI55B,KAAKkQ,mBAAmBkC,EAAcvB,EAAW7I,KAGjDoK,IAAiBV,IAA6C,IAArC1R,KAAKyI,aAAa+E,QAAQkE,IACrD1R,KAAKkQ,mBAAmBwB,IAEtBW,EAAgB,YAASrS,KAAK2H,OAAO+G,MAAMa,WAAYsB,EAAWvB,SAAStH,EAAMuH,WAAY,QAE/FvP,KAAKy5B,mBAAmBpnB,EAAeX,EAAMb,EAAWvB,SAAStH,EAAMuH,WAAY,OAEpC,IAA7CvP,KAAKyI,aAAa+E,QAAQ4E,IAAwBpS,KAAK2P,WACzDsB,IAEEA,IAAUJ,EAAWlQ,SAAwD,IAA9CX,KAAKyI,aAAa+E,QAAQ2E,IAAyBnS,KAAK2P,WACzF3P,KAAKkQ,mBAAmBiC,EAAenG,MAK/C7I,EAASjD,UAAUq5B,iBAAmB,SAAU7jB,GAC9C,IAAK,IAAI1U,EAAI,EAAGA,EAAI0U,EAAM/U,OAAQK,IAChChB,KAAKoZ,oBAAoB1D,EAAMpG,SAAStO,EAAEuO,WAAY,KAAMmG,IAGhEvS,EAASjD,UAAU25B,eAAiB,SAAUhwB,EAAIojB,EAAS6M,EAAgBC,GACzE,GAAsB,IAAlB/5B,KAAKkO,SAAgB,CACvB,IAAIuX,EAAMzlB,KAAK2yB,WAAW3yB,KAAKgM,SAAUhM,KAAK2H,OAAQkC,GAEtD,GADA7J,KAAKgM,SAAS0M,OAAO+M,EAAK,EAAGwH,GACzB6M,EAAgB,CAClB95B,KAAK6yB,iBAAiBhpB,GACtB,IAAK,IAAIkI,EAAI,EAAGA,EAAIgoB,EAAWp5B,OAAQoR,IACrC/R,KAAKgM,SAAS0M,OAAO+M,EAAK,EAAGsU,EAAWzqB,SAASyC,EAAExC,WAAY,MAC/DkW,IAGJzlB,KAAKoO,YAAcpO,KAAKqO,eAAerO,KAAKgM,SAAUhM,KAAK2H,OAAOoG,eAElE/N,KAAKg6B,oBAAoBh6B,KAAKgM,SAAUhM,KAAK2H,OAAQkC,EAAI,CAACojB,QAAUze,IAGxErL,EAASjD,UAAU85B,oBAAsB,SAAUhuB,EAAUa,EAAQotB,EAAQhN,EAASjlB,GAEpF,IADA,IAAIkyB,EACKl5B,EAAI,EAAGohB,EAASpW,EAASrL,OAAQK,EAAIohB,EAAQphB,IAAK,CACzD,IAAI2Q,EAAS,YAAS9E,EAAOhD,GAAImC,EAASsD,SAAStO,EAAEuO,WAAY,MACjE,GAAIvD,EAASsD,SAAStO,EAAEuO,WAAY,MAAQoC,GAAUA,EAAOpC,aAAe0qB,EAE1E,OADAjuB,EAASsD,SAAStO,EAAEuO,WAAY,KAAO0d,EAAQ,IACxC,EACF,GAA4B,iBAAjBpgB,EAAO6B,OAAuB,YAAM,YAAS7B,EAAO6B,MAAO1C,EAASsD,SAAStO,EAAEuO,WAAY,QAMtG,GAAIvP,KAAK2H,OAAOW,sBAAsB,MAAgB,YAAM,YAAS,QAAS0D,EAASsD,SAAStO,EAAEuO,WAAY,OAAQ,CAC3H,IAAIa,EAAY,YAAS,QAASpE,EAASsD,SAAStO,EAAEuO,WAAY,MAElE,QAAcf,KADd0rB,EAAQl6B,KAAKg6B,oBAAoB5pB,EAAWpQ,KAAK2hB,eAAe9U,GAASotB,EAAQhN,EAASjlB,IAExF,WAViH,CACnH,IAAI8uB,EAAW,YAASjqB,EAAO6B,MAAO1C,EAASsD,SAAStO,EAAEuO,WAAY,MAEtE,QAAcf,KADd0rB,EAAQl6B,KAAKg6B,oBAAoBlD,EAAU92B,KAAK2hB,eAAe9U,GAASotB,EAAQhN,EAASjlB,IAEvF,OAUN,OAAOkyB,GAET/2B,EAASjD,UAAUi6B,aAAe,WAChCn6B,KAAKuJ,eAAevJ,KAAKwJ,kBACzBxJ,KAAKqJ,kBAAkBrJ,KAAKsJ,cACvBtJ,KAAKmJ,UAIRnJ,KAAK+4B,eACL/4B,KAAK8K,WACL9K,KAAKiL,iBALLjL,KAAKyJ,aACLzJ,KAAKoJ,cAOTjG,EAASjD,UAAUysB,cAAgB,SAAUyN,EAAW1kB,EAAOpV,EAAQksB,EAAS6N,EAASryB,EAAOsyB,GAC9F,IAKIC,EALAj3B,EAAQtD,KACRwR,EAAOxR,KAAK2H,OAAOW,WACnBkyB,EAAa,GACbztB,EAAQ/M,KAAK2M,SAAS3M,KAAK2H,QAC3BpH,EAAMP,KAAK2H,OAAOkC,GAElB4wB,EAAU,CACZC,aAAc,GACdC,eAAgB,GAChBC,eAAgB,IAEdC,EAAU,GACVnlB,EACFmlB,EAAU76B,KAAK+2B,SAASrhB,GACfpV,IACY,iBAAVA,EACTu6B,EAAQ,GAAKv6B,EAAOiP,WACO,iBAAXjP,IAChBu6B,EAAQ,GAAKv6B,EAAOsR,aAAa,YAAYrC,aAGjD,IAAK,IAAIvO,EAAI,EAAGsR,EAAMuoB,EAAQl6B,OAAQK,EAAIsR,EAAKtR,IAAK,CAClD,IAAI8X,EAAQ9Y,KAAKmZ,WAAW0hB,EAAQvrB,SAAStO,EAAEuO,WAAY,MAC3D,IAAI,YAAkBuJ,GAAtB,CAGA,IAAI0Z,EAAcxyB,KAAK4X,cAAcijB,EAAQvrB,SAAStO,EAAEuO,WAAY,MACpEirB,EAAW9uB,KAAK8mB,IAElB,OAAQ4H,GACN,IAAK,SACkB,IAAjB1kB,EAAM/U,OACR45B,EAAO/oB,EAAK/G,OAAOlK,EAAKi6B,EAAW,GAAIztB,EAAM+tB,UAAW/tB,IAExD0tB,EAAQE,eAAiBH,EACzBD,EAAO/oB,EAAKupB,YAAYN,EAASl6B,EAAKwM,EAAM+tB,UAAW/tB,IAEzDwtB,EAAKzuB,MAAK,WACR,OAAOxI,EAAM03B,cAAcH,MAC1BtuB,OAAM,SAAUlF,GACjB,OAAO/D,EAAM23B,UAAU5zB,MAEzB,MACF,IAAK,SACHmzB,EAAW,GAAGx6B,KAAK2H,OAAOmG,MAAQ0e,GAClC+N,EAAO/oB,EAAK0pB,OAAO36B,EAAKi6B,EAAW,GAAIztB,EAAM+tB,UAAW/tB,IACnDjB,MAAK,WACR,OAAOxI,EAAM63B,WAAW76B,EAAQksB,EAAS8N,MACxC/tB,OAAM,SAAUlF,GACjB,OAAO/D,EAAM23B,UAAU5zB,EAAG/G,EAAQg6B,MAEpC,MACF,IAAK,SACH,GAAuB,IAAnBD,EAAQ15B,OACV45B,EAAO/oB,EAAK4pB,OAAOf,EAAQ,GAAIttB,EAAM+tB,UAAW/tB,OAC3C,CACL,IAAIsP,EAAM,GACV,IAASrb,EAAI,EAAGsR,EAAM+nB,EAAQ15B,OAAQK,EAAIsR,EAAKtR,IAC7Cqb,EAAI3Q,KAAK2uB,EAAQ/qB,SAAStO,EAAEuO,WAAY,MAE1CkrB,EAAQC,aAAere,EACvBke,EAAO/oB,EAAKupB,YAAYN,EAASl6B,EAAKwM,EAAM+tB,UAAW/tB,GAEzDwtB,EAAKzuB,MAAK,WACR,IAAI8kB,EAASttB,EAAM6V,WAAW7Y,GAC9BgD,EAAM+3B,WAAWhB,EAASzJ,EAAQ5oB,GAClC1E,EAAMG,eAAgB,KACrB8I,OAAM,SAAUlF,GACjB,OAAO/D,EAAM23B,UAAU5zB,QAK/BlE,EAASjD,UAAU86B,cAAgB,SAAUtlB,GAE3C,IADA,IAAI/B,EAAW,GACN3S,EAAI,EAAGsR,EAAMoD,EAAM/U,OAAQK,EAAIsR,EAAKtR,IAAK,CAChD,IAAI8X,EAAQ9Y,KAAKmZ,WAAWzD,EAAMpG,SAAStO,EAAEuO,WAAY,MACzDoE,EAASjI,KAAK1L,KAAKgtB,QAAQlU,IACvB,YAAMA,IAGV9Y,KAAKy1B,WAAW3c,GAElB9Y,KAAKmyB,iBACiB,IAAlBnyB,KAAKkO,WACPlO,KAAKoO,YAAcpO,KAAKqO,eAAerO,KAAKgM,SAAUhM,KAAK2H,OAAOoG,WAEpE/N,KAAK+sB,aAAa,aAAcpZ,IAElCxQ,EAASjD,UAAUi7B,WAAa,SAAU76B,EAAQksB,EAAS8N,GACzD,IAAIxhB,EAAQ9Y,KAAKmZ,WAAW7Y,GACxBmsB,EAAS,aAAO,IAAMnrB,EAAUwX,GACpC9Y,KAAK4sB,cAAc9T,EAAO2T,EAAQD,EAAS8N,IAE7Cn3B,EAASjD,UAAUm7B,WAAa,SAAU3lB,EAAOkb,EAAQ5oB,GACvD,IACI6pB,EADAvuB,EAAQtD,KAERyS,EAAOme,EAASA,EAAOrlB,cAAc,IAAM5J,GAAQ,KACnDivB,GAAUne,GAAQA,EAAKlI,UAAUkH,SAASrQ,IAA0D,OAA3CwvB,EAAOrlB,cAAc,IAAMhK,GACtFvB,KAAKqP,iBAAiBuhB,EAAQ,MAAM,WAClCiB,EAASjB,EAAOrlB,cAAc,IAAMhK,GACpC+B,EAAM4yB,cAAcxgB,EAAOkb,EAAQ5oB,GAAO,EAAM6pB,GAChDvuB,EAAMypB,aAAa,WAAYrX,OAGjC1V,KAAKk2B,cAAcxgB,EAAOkb,EAAQ5oB,GAAO,GACzChI,KAAK+sB,aAAa,WAAYrX,KAGlCvS,EAASjD,UAAU+6B,UAAY,SAAU5zB,EAAG/G,EAAQg6B,GAC9Ch6B,GACFN,KAAKs7B,mBAAmBh7B,EAAQg6B,GAElCt6B,KAAKwM,QAAQ,gBAAiB,CAC5BC,MAAOpF,KAGXlE,EAASjD,UAAUo7B,mBAAqB,SAAUh7B,EAAQg6B,GACxD,IAAIxhB,EAAQ9Y,KAAKmZ,WAAW7Y,GACxBmsB,EAAS,aAAO,IAAMnrB,EAAUwX,GACpC9Y,KAAK8sB,WAAWhU,EAAO2T,EAAQzsB,KAAK8kB,QAASwV,IAE/Cn3B,EAASjD,UAAUq7B,wBAA0B,SAAU7pB,EAAMF,EAAMgqB,GACjE,IAAIl4B,EAAQtD,KACRgI,EAAQwJ,EAAKS,WAAU,SAAUT,GACnC,OAAOA,EAAKlO,EAAMqE,OAAOkC,KAAO2H,EAAKlO,EAAMqE,OAAOkC,IAAI0F,aAAemC,KAEvE,IAAe,IAAX1J,EACF,IAAK,IAAIhH,EAAI,EAAGA,EAAIwQ,EAAK7Q,OAAQK,IAAK,CACpC,IAAI6P,EAAa,YAAS7Q,KAAK2H,OAAO+G,MAAMa,WAAYiC,EAAKlC,SAAStO,EAAEuO,WAAY,MACpF,IAAK,YAAMsB,GAAa,CAItB,IAAe,KAHf7I,EAAQ6I,EAAWoB,WAAU,SAAUT,GACrC,OAAOA,EAAKlO,EAAMqE,OAAOkC,KAAO2H,EAAKlO,EAAMqE,OAAOkC,IAAI0F,aAAemC,MAIhE,CACL8pB,EAAU9vB,KAAK8F,EAAKlC,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,YAChEvP,KAAKu7B,wBAAwB/pB,EAAKlC,SAAStO,EAAEuO,WAAY,KAAKvP,KAAK2H,OAAOkC,IAAI0F,WAAYvP,KAAKgM,SAAUwvB,GACzG,MAJAx7B,KAAKu7B,wBAAwB7pB,EAAMb,EAAY2qB,IASvD,OAAOA,GAUTr4B,EAASjD,UAAUu7B,kBAAoB,SAAUC,EAASC,GACxD,IAAK,IAAIvuB,EAAK,EAAGC,EAAK5N,OAAO6N,KAAKouB,GAAUtuB,EAAKC,EAAG1M,OAAQyM,IAAM,CAEhE,OADWC,EAAGD,IAEZ,IAAK,mBACHpN,KAAKuJ,eAAevJ,KAAKwJ,kBACzB,MACF,IAAK,WACCxJ,KAAKwJ,mBACPxJ,KAAK0tB,QAAQG,SAAW7tB,KAAK6tB,UAE/B,MACF,IAAK,eACH7tB,KAAKqJ,kBAAkBrJ,KAAKsJ,cAC5B,MACF,IAAK,sBACH,GAAItJ,KAAKuI,cAAc5H,OAAS,EAAG,CACjC,IAAIgc,EAAQ3c,KAAKmZ,WAAWnZ,KAAKuI,cAAc,IAC/CvI,KAAK8H,UAAW,EAChB9H,KAAKkjB,kBACLljB,KAAKuV,WAAWoH,EAAO,MACvB3c,KAAK8H,UAAW,EAElB9H,KAAKmL,eAAenL,KAAKkT,qBACzBlT,KAAK60B,eAAe70B,KAAKkT,qBACzB,MACF,IAAK,gBACHlT,KAAKmK,cACLnK,KAAKqb,aACL,MACF,IAAK,eACClT,KAAKE,UAAUszB,EAAQlzB,gBAAkBN,KAAKE,UAAUqzB,EAAQjzB,eAC9DzI,KAAK4P,eACP5P,KAAKyI,aAAekzB,EAAQlzB,aAC5BzI,KAAKo5B,gBAAgBsC,EAAQjzB,eAGjC,MACF,IAAK,YACCzI,KAAK4P,eACP5P,KAAK2P,UAAY+rB,EAAQ/rB,UACzB3P,KAAK4V,uBAEP,MACF,IAAK,WACH5V,KAAK8J,YAAY6xB,EAAQ5xB,SAAU2xB,EAAQ3xB,UAC3C,MACF,IAAK,YACH/J,KAAKgK,eACL,MACF,IAAK,gBACHhK,KAAKgF,WAAY,EACjBhF,KAAKwI,cAAc,CACjBE,cAAe,KACd,GACH1I,KAAK+f,cACL/f,KAAK+H,gBAAiB,EACtB/H,KAAKwI,cAAc,CACjBE,cAAe,YAAMgzB,EAAQhzB,eAAiB,GAAKgzB,EAAQhzB,gBAC1D,GACH1I,KAAKwb,iBACLxb,KAAK+H,gBAAiB,EACtB/H,KAAKgF,WAAY,EACjB,MACF,IAAK,WACHhF,KAAKw4B,mBAAkB,GACvBx4B,KAAKkJ,kBACqB,SAAtBlJ,KAAKkkB,cAA4BlkB,KAAKmJ,UACxCnJ,KAAKw4B,mBAAkB,GAEzB,MACF,IAAK,WACHx4B,KAAKiJ,kBACLjJ,KAAKm6B,eACL,MACF,IAAK,SACHn6B,KAAKgF,WAAY,EACjBhF,KAAK+D,eAAgB,EACrB/D,KAAK8I,eAAgB,EAEhB9I,KAAKwrB,WAAWxrB,KAAKwrB,SAAaxrB,KAAK2H,OAAOW,sBAAsB,OAClEtI,KAAKqD,QAAQkH,UAAUkH,SAAS,iBACnCzR,KAAKkI,YAAcC,KAAKC,MAAMD,KAAKE,UAAUrI,KAAK2H,OAAOW,cAE3DtI,KAAKyqB,iBAEPzqB,KAAK8I,eAAgB,EACrB9I,KAAKgF,WAAY,EACjBhF,KAAK+D,eAAgB,EACrB,MACF,IAAK,gBACH/D,KAAKiK,WAAWjK,KAAKkK,eACrBlK,KAAK00B,WAAW10B,KAAKkK,eACjBlK,KAAKob,gBACPpb,KAAKmK,cACLnK,KAAKqb,cAEP,MACF,IAAK,eACH,IAA0B,IAAtBrb,KAAKoP,eAA2BpP,KAAK47B,SAAU,CAGjD,IAFA,IAAIlmB,EAAQ1V,KAAKqD,QAAQiI,iBAAiB,MACtCtK,EAAI,EACDA,EAAI0U,EAAM/U,QACyD,SAApE+U,EAAMpG,SAAStO,EAAEuO,WAAY,KAAKqC,aAAa,kBACjD5R,KAAKqP,iBAAiBqG,EAAMpG,SAAStO,EAAEuO,WAAY,MAAM,EAAM,MAAM,GAEvEvO,IAEFhB,KAAK47B,UAAW,EAElB,MACF,IAAK,eACH57B,KAAKiE,aAAc,EACnBjE,KAAKoK,eAAiBpK,KAAKqK,iBAAiBrK,KAAKsK,cACjDtK,KAAKyqB,gBACL,MACF,IAAK,gBACHzqB,KAAKkjB,kBACLljB,KAAKwI,cAAc,CACjBD,cAAemzB,EAAQnzB,gBACtB,GACHvI,KAAKyc,oBACL,MACF,IAAK,eACL,IAAK,wBAGL,IAAK,YACHzc,KAAKyqB,gBACL,MACF,IAAK,mBACHzqB,KAAKwI,cAAc,CACjBf,iBAAkBi0B,EAAQj0B,mBACzB,GACHzH,KAAK8G,eAAeU,cAAgBk0B,EAAQj0B,iBAC5CzH,KAAKyqB,mBAUbtnB,EAASjD,UAAUwsB,QAAU,WAC3B1sB,KAAKwqB,gBACLxqB,KAAKqD,QAAQmd,gBAAgB,yBAC7BxgB,KAAK+4B,eACL/4B,KAAKqJ,mBAAkB,GAClBrJ,KAAKmJ,WACRnJ,KAAK8K,WACL9K,KAAKiL,gBAEPjL,KAAK8J,YAAY9J,KAAK+J,SAAU,MAChC/J,KAAKuJ,gBAAe,GACpBvJ,KAAKiK,YAAW,GACZjK,KAAK+O,WAAa/O,KAAK+O,UAAUkF,eACnCjU,KAAK+O,UAAUkF,cAAcyW,YAAY1qB,KAAK+O,WAEhD/O,KAAK+O,UAAY,KACjB/O,KAAK2b,OAAS,KACd3b,KAAKojB,UAAY,KACjBpjB,KAAKm5B,SAAW,KAChBn5B,KAAK6f,WAAa,KAClB7f,KAAKquB,OAAS,KACdruB,KAAK8tB,WAAa,KAClB9tB,KAAK8vB,WAAa,KAClB9vB,KAAK0tB,QAAU,KACf1tB,KAAKgwB,QAAU,KACfhwB,KAAK6rB,SAAW,KAChB7rB,KAAKk4B,aAAe,KACpBl4B,KAAKy4B,eAAiB,KACtBz4B,KAAKu4B,cAAgB,KACrB31B,EAAO1C,UAAUwsB,QAAQnpB,KAAKvD,OAYhCmD,EAASjD,UAAU27B,SAAW,SAAUnmB,EAAOpV,EAAQ0H,EAAO6nB,GAC5D,IAAI,YAAMna,GAAV,CAGAA,EAAQvN,KAAKC,MAAMD,KAAKE,UAAUqN,IAClC,IAAIkb,EAAS5wB,KAAKmZ,WAAW7Y,GAE7B,GADAN,KAAKyD,cAAgBosB,EACjB7vB,KAAK2H,OAAOW,sBAAsB,IAC/BtI,KAAK2L,UAGR3L,KAAKq7B,WAAW3lB,EAAOkb,EAAQ5oB,GAF/BhI,KAAK2sB,cAAc,SAAU,KAAMrsB,EAAQ,KAAMoV,EAAO1N,EAAOhI,KAAKyD,oBAIjE,GAAsB,IAAlBzD,KAAKkO,SACdlO,KAAKk2B,cAAcxgB,EAAOkb,EAAQ5oB,OAC7B,CACL,GAAI4oB,EACF5wB,KAAKk2B,cAAcxgB,EAAOkb,EAAQ5oB,OAC7B,CACL0N,EAAQ1V,KAAK8O,cAAc4G,GAC3B,IAAK,IAAI1U,EAAI,EAAGA,EAAI0U,EAAM/U,OAAQK,IAAK,CACrC,IAAI+oB,EAAM,YAAS/pB,KAAK2H,OAAOoG,SAAU2H,EAAMpG,SAAStO,EAAEuO,WAAY,MACtEqhB,EAAS7G,EAAM/pB,KAAKmZ,WAAW4Q,EAAIxa,YAAcwa,GAC5C,YAAkBA,IAAQ,YAAkB6G,KAC/C5wB,KAAKyE,cAAe,EACpBzE,KAAKyD,eAAgB,EACrBzD,KAAK87B,cAAc/R,GACnB/pB,KAAKyD,cAAgBosB,EACrB7vB,KAAKyE,cAAe,EACpBmsB,EAAS5wB,KAAKmZ,WAAW4Q,EAAIxa,aAE/BvP,KAAKk2B,cAAc,CAACxgB,EAAMpG,SAAStO,EAAEuO,WAAY,MAAOqhB,EAAQ5oB,IAGpEhI,KAAKoO,YAAcpO,KAAKqO,eAAerO,KAAKgM,SAAUhM,KAAK2H,OAAOoG,UAEpE/N,KAAKmb,mBACLnb,KAAK0P,2BACD1P,KAAK4P,cAAgBghB,GACvB5wB,KAAK8V,uBAAuB8a,GAE1B5wB,KAAK2H,OAAOW,sBAAsB,MAAgB,IACpDtI,KAAKyD,eAAgB,EACrBzD,KAAK+sB,aAAa,WAAYrX,MAWlCvS,EAASjD,UAAU67B,UAAY,SAAUrqB,GACvC,IAAIiH,EAAM3Y,KAAKmZ,WAAWzH,GACtB,YAAMiH,IAAQ3Y,KAAKmJ,UAGvBnJ,KAAKqlB,cAAc1M,IASrBxV,EAASjD,UAAUs5B,SAAW,SAAU9jB,GAClC1V,KAAK4P,cACP5P,KAAK4Y,iBAAiBlD,GAAO,IAajCvS,EAASjD,UAAU6f,YAAc,SAAUrK,EAAO9G,EAAOqmB,GAClD,YAAMvf,GAGL9G,EAAQ,EACV5O,KAAKg1B,gBAAgB,aAAO,IAAMzzB,EAAYvB,KAAKqD,SAAUuL,EAAOqmB,GAEpEj1B,KAAKo1B,iBAAiBH,GALxBj1B,KAAKg2B,cAActgB,EAAOvU,GAAa,IAe3CgC,EAASjD,UAAU87B,aAAe,SAAUtmB,GACrC,YAAMA,IACT1V,KAAKuhB,gBAAgB7L,IASzBvS,EAASjD,UAAU+7B,YAAc,SAAUvmB,GACpC,YAAMA,IACT1V,KAAKk3B,eAAexhB,IAWxBvS,EAASjD,UAAU47B,cAAgB,SAAUpqB,GAC3C,IAAIwqB,EAAY,GAChB,GAAsB,IAAlBl8B,KAAKkO,SAEP,IADA,IAAIyF,EAAW3T,KAAKia,YAAYvI,GACL,IAApBiC,EAAShT,SAAiB,YAAMgT,EAAS,GAAG3T,KAAK2H,OAAOoG,YAC7DmuB,EAAUxwB,KAAKiI,EAAS,GAAG3T,KAAK2H,OAAOoG,UAAUwB,YACjDoE,EAAW3T,KAAKia,YAAYtG,EAAS,GAAG3T,KAAK2H,OAAOoG,UAAUwB,iBAErC,IAAlBvP,KAAKkO,WACdguB,EAAYl8B,KAAKu7B,wBAAwB7pB,EAAM1R,KAAKgM,SAAUkwB,IAEhEl8B,KAAKm8B,UAAUD,EAAUhjB,UAAW,KAAM,KAAMlZ,KAAKyE,cACrD,IAAIqU,EAAQ9Y,KAAKmZ,WAAWzH,GAC5B,IAAK,YAAMoH,GAAQ,CACjB,GAAmB,iBAARpH,EAAkB,CAC3B,IAAIqP,EAAU/gB,KAAK+gB,QAAQjI,EAAO,IAAMzX,GACxCrB,KAAKm8B,UAAUpb,GAEjB0K,YAAW,WACT3S,EAAMmN,eAAe,CACnBmW,SAAU,aAEX,OAcPj5B,EAASjD,UAAUi8B,UAAY,SAAUzmB,EAAO9G,EAAOqmB,EAAoBoH,GACzEr8B,KAAKgF,WAAaq3B,EACb,YAAM3mB,GAGL9G,EAAQ,EACV5O,KAAKq1B,cAAc,aAAO,IAAM9zB,EAAYvB,KAAKqD,SAAUuL,EAAOqmB,IAElEj1B,KAAKs1B,eAAeL,GACfj1B,KAAKoP,eAAgBpP,KAAKqD,QAAQkH,UAAUkH,SAAS,iBACxDzR,KAAK+U,iBAAiB/U,KAAKqD,SAC3BrD,KAAKkV,eARTlV,KAAKg2B,cAActgB,EAAOtU,GAAY,GAYxCpB,KAAKgF,WAAY,GAOnB7B,EAASjD,UAAUo8B,mBAAqB,WAEtC,OADiBt8B,KAAKyI,cAQxBtF,EAASjD,UAAUq8B,iBAAmB,WAEpC,OADoBv8B,KAAK2D,aAS3BR,EAASjD,UAAU8sB,QAAU,SAAUtb,GACrC,IAAIiH,EAAM3Y,KAAKmZ,WAAWzH,GAC1B,OAAO1R,KAAKiZ,YAAYN,GAAK,IAa/BxV,EAASjD,UAAU+Z,YAAc,SAAUvI,GACzC,IAAI7H,EAAK7J,KAAKykB,MAAM/S,GAEpB,GADA1R,KAAKq3B,oBACD,YAAMxtB,GACR,OAAO7J,KAAKgM,SAEZ,IAAIwF,EAAOxR,KAAK4X,cAAc/N,GAC9B,OAAO,YAAM2H,GAAQ,GAAK,CAACA,IAY/BrO,EAASjD,UAAUs8B,UAAY,SAAUC,EAAan8B,EAAQ0H,EAAO6nB,GACnE,IAAI,YAAM4M,IAAuC,IAAvBA,EAAY97B,OAAtC,CAGA,IAAIiwB,EAAS5wB,KAAKmZ,WAAW7Y,GACzBqT,EAAW,GACX,YAAMid,KACR5wB,KAAKyE,cAAe,EACpBzE,KAAK87B,cAAcx7B,GACnBN,KAAKyE,cAAe,EACpBmsB,EAAS5wB,KAAKmZ,WAAW7Y,IAE3B,IAAK,IAAIU,EAAI,EAAGA,EAAIy7B,EAAY97B,OAAQK,IAAK,CAC3C,IAAIqtB,EAASruB,KAAKmZ,WAAWsjB,EAAYntB,SAAStO,EAAEuO,WAAY,MAChEoE,EAASjI,KAAK1L,KAAKgtB,QAAQqB,IACvB,YAAMA,IAAWuC,EAAOtC,WAAWD,IAAWruB,KAAK6wB,aAAaxC,EAAQuC,KAG5E5wB,KAAKyD,cAAgBosB,EACrB7vB,KAAK0xB,gBAAgBrD,EAAQuC,EAAQ5wB,KAAMgI,EAAO,KAAM,KAAM,KAAM4oB,IAElE5wB,KAAK2H,OAAOW,sBAAsB,MAAgB,IACpDtI,KAAKyD,eAAgB,GAEvBzD,KAAK+sB,aAAa,YAAapZ,KAkBjCxQ,EAASjD,UAAUw8B,YAAc,SAAUp8B,EAAQ2sB,GACjD,IAAI,YAAM3sB,KAAW,YAAM2sB,GAA3B,CAGA,IAAI6M,GAAiB,EACrB,GAAsB,IAAlB95B,KAAKkO,UAAkB+e,EAAQtsB,OAAS,EAC1Cm5B,GAAiB,OACZ,GAAsB,IAAlB95B,KAAKkO,UAAqC,IAAnB+e,EAAQtsB,OAAc,CACtD,IAAIg8B,EAAoB,YAAS38B,KAAK2H,OAAO+G,MAAMa,WAAY0d,EAAQ,IAClE,YAAM0P,KACT7C,GAAiB,GAGrB,IAII8C,EACAC,EALA/jB,EAAQ9Y,KAAKmZ,WAAW7Y,GACxBuJ,EAAKiP,EAAQA,EAAMlH,aAAa,YAActR,EAASA,EAAOiP,WAAa,KAK/E,GAJAvP,KAAK88B,YAAc98B,KAAK4X,cAAc/N,GACtCojB,EAAU9kB,KAAKC,MAAMD,KAAKE,UAAU4kB,IAGd,IAAlBjtB,KAAKkO,UAAkB4rB,EAAgB,CACzC,IAAK,IAAIzkB,EAAI,EAAGA,EAAI4X,EAAQtsB,OAAQ0U,IAClC,GAAI,YAAM4X,EAAQ3d,SAAS+F,EAAE9F,WAAY,KAAKvP,KAAK2H,OAAOoG,WAAY,CACpE8uB,EAAa5P,EAAQ3d,SAAS+F,EAAE9F,WAAY,KAC5C0d,EAAQvU,OAAOrD,EAAG,GAClB,MAGJunB,EAAc,YAAO,GAAI58B,KAAK88B,YAAaD,QAE3CD,EAAc,YAAO,GAAI58B,KAAK88B,YAAa7P,EAAQ,IAErD,GAAI,YAAMnU,GACR9Y,KAAK65B,eAAehwB,EAAI+yB,EAAa9C,EAAgB7M,OADvD,CAIAjtB,KAAKwD,aAAc,EACnB,IAAIoL,EAAQX,WAAW6K,EAAMlH,aAAa,eACtCmrB,EAAW,IAASxG,uBAAuBv2B,KAAKiP,cAAe,CAAC2tB,GAAc58B,KAAK8G,eAAgB8H,GACnG+Q,EAAK,aAAO,IAAMpe,EAAYuX,GAC9BjI,EAAa,YAAS7Q,KAAK2H,OAAO+G,MAAMa,WAAYqtB,GACxD,GAAI9C,GAAkBna,GAAMma,IAAmB,YAAMjpB,GAAa,CAChE,IAAIK,EAAY4H,EAAM7E,cAClBjM,EAAQpI,MAAMM,UAAUsN,QAAQjK,KAAK2N,EAAUE,WAAY0H,GAC/D,aAAOA,GACP5H,EAAUyB,aAAaoqB,EAAS,GAAI7rB,EAAUE,WAAW9B,SAAStH,EAAMuH,WAAY,MACpFvP,KAAK65B,eAAehwB,EAAI+yB,EAAa9C,EAAgB7M,GACjD6M,GAAkBna,GACpB3f,KAAKm8B,UAAU,CAACtyB,QAEb,CACL,IAAI4iB,EAAS,aAAO,IAAM7qB,EAAUkX,GAChCkkB,EAAa,aAAO,IAAMp7B,EAAUm7B,EAAS,IAC7CtqB,EAAO,aAAO,OAAS9Q,EAAM8qB,GAC7BwQ,EAAU,aAAO,OAASt7B,EAAMq7B,GAChCvqB,GAAQwqB,IACNA,EAAQ1yB,UAAUkH,SAASrQ,IAAeqR,EAAKlI,UAAUkH,SAAStQ,IACpE,aAAY,CAAC87B,GAAU77B,GACvB,YAAS,CAAC67B,GAAU97B,IACX87B,EAAQ1yB,UAAUkH,SAAStQ,IAAgBsR,EAAKlI,UAAUkH,SAASrQ,IAC5E,aAAY,CAAC67B,GAAU97B,GACvB,YAAS,CAAC87B,GAAU77B,IACXqR,EAAKlI,UAAUkH,SAAS,gBACjC,YAAS,CAACwrB,GAAU,gBAGxB,aAAOxQ,GACP,IAAIyQ,EAAU,aAAO,IAAMn7B,EAAS+W,GACpCokB,EAAQpmB,WAAWnE,aAAaqqB,EAAYE,EAAQjU,aACpDjpB,KAAK65B,eAAehwB,EAAI+yB,EAAa9C,EAAgB7M,GAMvD,GAJAnU,EAAQ9Y,KAAKmZ,WAAW7Y,GACpBs8B,EAAY58B,KAAK2H,OAAOw1B,UAC1BrkB,EAAMnP,aAAa,QAASizB,EAAY58B,KAAK2H,OAAOw1B,UAElD19B,OAAOS,UAAUJ,eAAeyD,KAAKq5B,EAAa58B,KAAK2H,OAAOkgB,iBAAmB+U,EAAY58B,KAAK2H,OAAOkgB,gBAAiB,CAC5H,IAAIuV,EAAO,GACX,YAAMA,EAAMR,EAAY58B,KAAK2H,OAAOkgB,iBAChCuV,EAAKtV,OACP,YAAS,CAAChP,GAAQskB,EAAKtV,MAAM+C,MAAM,aAC5BuS,EAAKtV,OAEZ,YAAWhP,EAAOskB,IAGkB,IAApCp9B,KAAKuI,cAAciF,QAAQ3D,KAC7BiP,EAAMnP,aAAa,gBAAiB,QACpC,YAAS,CAACmP,GAAQtX,IAEpBxB,KAAKwD,aAAc,EACnBxD,KAAK+sB,aAAa,cAAe,CAAC/sB,KAAKgtB,QAAQlU,QAQjD3V,EAASjD,UAAUm9B,YAAc,SAAU3nB,GACpC,YAAMA,KACL1V,KAAK2H,OAAOW,sBAAsB,MAAgBtI,KAAK2L,UACzD3L,KAAK2sB,cAAc,SAAUjX,GAE7B1V,KAAKg7B,cAActlB,KAWzBvS,EAASjD,UAAUo9B,WAAa,SAAUh9B,EAAQksB,GAChD,IAAIlpB,EAAQtD,KACZ,IAAI,YAAMM,KAAW,YAAMksB,IAAaxsB,KAAKsJ,aAA7C,CAGA,IAAIwP,EAAQ9Y,KAAKmZ,WAAW7Y,GAC5B,IAAI,YAAMwY,GAAV,CAGA,IAAI2T,EAAS,aAAO,IAAMnrB,EAAUwX,GACpC9Y,KAAKgrB,cAAclS,GACnB,IAAIpF,EAAY1T,KAAKorB,aAAatS,EAAO,KAAM,MAC/C9Y,KAAKwM,QAAQ,cAAekH,GAAW,SAAUiH,GAC1CA,EAAaC,SACZtX,EAAMqE,OAAOW,sBAAsB,MAAgBhF,EAAMqI,UAC3DrI,EAAMqpB,cAAc,SAAU,KAAMrsB,EAAQksB,EAAS,KAAM,MAAM,GAEjElpB,EAAMspB,cAAc9T,EAAO2T,EAAQD,GAAS,UAYpDrpB,EAASjD,UAAUo5B,WAAa,SAAU5jB,GACpC1V,KAAK4P,cACP5P,KAAK4Y,iBAAiBlD,GAAO,IAGjCvS,EAASjD,UAAUib,iBAAmB,WACpC,IAAIoiB,EAAY,aAAO,IAAMl8B,EAAUrB,KAAKqD,SACxCk6B,IACFA,EAAU5zB,aAAa,WAAY,KACnC3J,KAAK+jB,aAAa,KAAMwZ,KAI5Bn9B,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,wBAAoB,GACtEE,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,oBAAgB,GAClEE,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,2BAAuB,GACzEE,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,qBAAiB,GACnEE,EAAW,CAAC,YAAQ,GAAI2C,IAAyBI,EAASjD,UAAW,iBAAa,GAClFE,EAAW,CAAC,eAAa+C,EAASjD,UAAW,oBAAgB,GAC7DE,EAAW,CAAC,aAAS,IAAQ+C,EAASjD,UAAW,6BAAyB,GAC1EE,EAAW,CAAC,YAAS,KAAM+C,EAASjD,UAAW,gBAAY,GAC3DE,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,gBAAY,GAC9DE,EAAW,CAAC,YAAS,OAAQ+C,EAASjD,UAAW,gBAAY,GAC7DE,EAAW,CAAC,aAAS,IAAQ+C,EAASjD,UAAW,2BAAuB,GACxEE,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,yBAAqB,GACvEE,EAAW,CAAC,eAAa+C,EAASjD,UAAW,qBAAiB,GAC9DE,EAAW,CAAC,YAAS,SAAU+C,EAASjD,UAAW,gBAAY,GAC/DE,EAAW,CAAC,YAAQ,GAAIuC,IAAkBQ,EAASjD,UAAW,cAAU,GACxEE,EAAW,CAAC,aAAS,IAAQ+C,EAASjD,UAAW,qBAAiB,GAClEE,EAAW,CAAC,aAAS,IAAQ+C,EAASjD,UAAW,oBAAgB,GACjEE,EAAW,CAAC,eAAa+C,EAASjD,UAAW,cAAU,GACvDE,EAAW,CAAC,eAAa+C,EAASjD,UAAW,oBAAgB,GAC7DE,EAAW,CAAC,eAAa+C,EAASjD,UAAW,qBAAiB,GAC9DE,EAAW,CAAC,YAAS,SAAU+C,EAASjD,UAAW,iBAAa,GAChEE,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,oBAAgB,GAClEE,EAAW,CAAC,aAAS,IAAQ+C,EAASjD,UAAW,iBAAa,GAC9DE,EAAW,CAAC,aAAS,IAAS+C,EAASjD,UAAW,wBAAoB,GACtEE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,qBAAiB,GAC3DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,eAAW,GACrDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,iBAAa,GACvDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,yBAAqB,GAC/DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,gBAAY,GACtDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,iBAAa,GACvDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,gBAAY,GACtDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,mBAAe,GACzDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,oBAAgB,GAC1DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,mBAAe,GACzDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,qBAAiB,GAC3DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,sBAAkB,GAC5DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,oBAAgB,GAC1DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,qBAAiB,GAC3DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,oBAAgB,GAC1DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,mBAAe,GACzDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,kBAAc,GACxDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,mBAAe,GACzDE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,oBAAgB,GAC1DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,qBAAiB,GAC3DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,oBAAgB,GAC1DE,EAAW,CAAC,eAAU+C,EAASjD,UAAW,qBAAiB,GAC3DiD,EAAWuB,EAAatE,EAAW,CAAC,KAAwB+C,GAvqKlC,CAyqK1B","file":"5532b8ad-angular.js","sourcesContent":["var __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate = this && this.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-treeview-checkbox';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('child')], FieldsSettings.prototype, \"child\", void 0);\n __decorate([Property([])], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([Property('expanded')], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([Property('hasChildren')], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([Property('htmlAttributes')], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('iconCss')], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([Property('id')], FieldsSettings.prototype, \"id\", void 0);\n __decorate([Property('imageUrl')], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([Property('isChecked')], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([Property('parentID')], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([Property(null)], FieldsSettings.prototype, \"query\", void 0);\n __decorate([Property('selectable')], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([Property('selected')], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([Property(null)], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([Property('text')], FieldsSettings.prototype, \"text\", void 0);\n __decorate([Property('tooltip')], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([Property('navigateUrl')], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty);\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('SlideDown')], ActionSettings.prototype, \"effect\", void 0);\n __decorate([Property(400)], ActionSettings.prototype, \"duration\", void 0);\n __decorate([Property('linear')], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty);\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Complex({\n effect: 'SlideUp',\n duration: 400,\n easing: 'linear'\n }, ActionSettings)], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([Complex({\n effect: 'SlideDown',\n duration: 400,\n easing: 'linear'\n }, ActionSettings)], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty);\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n * <div id=\"tree\"></div>\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n _this.isDropIn = false;\n _this.OldCheckedData = [];\n _this.isHiddenItem = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n if (isNOU(this.selectedNodes)) {\n this.setProperties({\n selectedNodes: []\n }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({\n checkedNodes: []\n }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({\n expandedNodes: []\n }, true);\n } else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n if (!isNOU(this.fields.dataSource) && Array.isArray(this.fields.dataSource) && this.fields.dataSource.length !== 0) {\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n }\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n } else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n } else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n } else {\n return compile(template);\n }\n } catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', {\n error: e\n });\n });\n } else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', {\n error: e\n });\n });\n }\n } else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n } else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) {\n value = null;\n }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[\"\" + col] && col !== 'url' && columns.indexOf(mapper[\"\" + col]) === -1) {\n columns.push(mapper[\"\" + col]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(prop, 'tableName')) {\n query.from(mapper.tableName);\n }\n } else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', this.isNumberTypeId ? parseFloat(value) : value);\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? typeof getValue(this.fields.id, this.treeData[0]) === 'number' ? true : false : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n } else {\n this.rootData = rootItems;\n }\n } else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n } else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[parseInt(i.toString(), 10)], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if (parentEle.length === 1 && rootNodes && rootNodes.length !== 0 || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n *\n * @returns {void}\n */\n TreeView.prototype.updateCheckedStateFromDS = function () {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id] ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !this.isLoaded) {\n this.checkDisabledState(resultId, resultData[i]);\n }\n if (resultData[parseInt(i.toString(), 10)][this.fields.hasChildren]) {\n var id = resultData[parseInt(i.toString(), 10)][this.fields.id];\n var childData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', id, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[parseInt(child.toString(), 10)][this.fields.id] ? childData[parseInt(child.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkDisabledState(childId, childData[child]);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[parseInt(index.toString(), 10)][this.fields.id] ? checkedData[parseInt(index.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedId, checkedData[index]);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n } else if (this.dataType === 2 || this.fields.dataSource instanceof DataManager && this.isOffline) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[parseInt(index.toString(), 10)][this.fields.id] ? this.treeData[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (this.treeData[parseInt(index.toString(), 10)][this.fields.isChecked] && !this.isLoaded && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkDisabledState(fieldId, this.treeData[index]);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(index.toString(), 10)]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[parseInt(index.toString(), 10)]);\n }\n }\n this.validNodes = this.enablePersistence ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({\n checkedNodes: this.validNodes\n }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n *\n * @param {FieldsSettingsModel} mapper - The mapper object containing field settings.\n * @param {Object[]} checkNodes - The array of checked nodes.\n * @returns {void}\n * @private\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id] ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n }\n var preElement = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n } else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n *\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n var data = this.treeData;\n if (this.element.classList.contains('e-filtering')) {\n data = this.DDTTreeData;\n }\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[parseInt(i.toString(), 10)], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n var OldCheckedNodes = void 0;\n if (this.element.classList.contains('e-filtering')) {\n OldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', nodeId, true));\n }\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(data).executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n } else {\n childCheckedElement = this.getChildNodes(data, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n var _loop_1 = function (j) {\n var childId = childCheckedElement[parseInt(j.toString(), 10)][this_1.fields.id].toString();\n if (this_1.checkedNodes.indexOf(childId) !== -1) {\n count++;\n } else if (this_1.element.classList.contains('e-filtering') && OldCheckedNodes.findIndex(function (e) {\n return e['id'] === childId;\n }) !== -1) {\n count++;\n }\n };\n var this_1 = this;\n for (var j = 0; j < childCheckedElement.length; j++) {\n _loop_1(j);\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkDisabledState(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n } else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n *\n * @param {Object} data - The data object to check for indeterminate state.\n * @returns {void}\n * @private\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n } else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n } else if (this.dataType === 2) {\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n *\n * @param {Object[]} childItems - The array of child items to update the checked state.\n * @param {Object} treeData - The tree data object containing field values.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (childItems[parseInt(index.toString(), 10)][this.fields.isChecked] && !this.isLoaded && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1) {\n this.parentCheckData.push(treeData);\n }\n this.updateChildCheckState(subChildItems, childItems[parseInt(index.toString(), 10)]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if (treeData !== this.parentCheckData[parseInt(len.toString(), 10)] && this.parentCheckData[parseInt(len.toString(), 10)]) {\n this.checkIndeterminateState(this.parentCheckData[parseInt(len.toString(), 10)]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, {\n cssClass: this.touchClass\n });\n checkboxEle.classList.add(CHECKBOXWRAP);\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n } else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n } else {\n e.item.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute('tabindex', '-1');\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n var firstChild = e.item.firstElementChild;\n firstChild.style.cursor = 'not-allowed';\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if (typeof mapper.child === 'string' && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) && !isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n } else if (typeof mapper.child === 'string' && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if (typeof mapper.child === 'string' && (!isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) || Object.prototype.hasOwnProperty.call(ds[parseInt(i.toString(), 10)], mapper.child))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)])) || !isNOU(getValue(mapper.hasChildren, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[parseInt(j.toString(), 10)].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element, isFromExpandAll, expandChild) {\n var _this = this;\n if (!isFromExpandAll) {\n this.updateAttributes(element);\n }\n if (!expandChild) {\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) {\n return e[_this.fields.expanded] === true;\n }).length > 0 ? true : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[parseInt(i.toString(), 10)]);\n }\n }\n removeClass(eNodes, EXPANDED);\n }\n if (!isFromExpandAll) {\n this.updateList();\n }\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateAttributes = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[parseInt(k.toString(), 10)].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[parseInt(j.toString(), 10)]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[parseInt(j.toString(), 10)]);\n }\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({\n checkedNodes: nodes\n }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[parseInt(i.toString(), 10)].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[parseInt(i.toString(), 10)]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[parseInt(i.toString(), 10)]);\n } else {\n this.ensureChildCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n }\n }\n } else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[parseInt(i.toString(), 10)].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECKBOXWRAP + ' .' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll(this.checkDisabledChildren ? '.' + LISTITEM : '.' + LISTITEM + ':not(.' + DISABLE + ')', ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n var count = nodes.length;\n var checkedCount = checkedNodes.length;\n var matchedChildNodes = [];\n var oldChildCount = [];\n var dataUid_1 = element.getAttribute('data-uid');\n var rootNodeChecked_1 = true;\n var childNodeChecked_1 = false;\n nodes.forEach(function (childNode) {\n if (childNode instanceof HTMLElement) {\n var ariaChecked = childNode.getAttribute('aria-checked');\n if (ariaChecked === 'true') {\n childNodeChecked_1 = true;\n } else {\n rootNodeChecked_1 = false;\n }\n }\n });\n var parentNodeChecked = false;\n if (this.element.classList.contains('e-filtering')) {\n var oldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n checkedCount = oldCheckedNodes.length;\n var parentNode = new DataManager(this.OldCheckedData).executeLocal(new Query().where('hasChildren', 'equal', true, true));\n if (parentNode.length > 0 && childNodeChecked_1 && (this.OldCheckedData.some(function (oldNode) {\n return oldNode.id === dataUid_1;\n }) || this.parentNodeCheck.indexOf(dataUid_1) !== -1)) {\n checkedCount = parentNode.length;\n parentNodeChecked = true;\n }\n var childItems = [];\n if (this.dataType === 1) {\n childItems = new DataManager(this.DDTTreeData).executeLocal(new Query().where(this.fields.parentID, 'equal', dataUid_1, true));\n } else {\n childItems = this.getChildNodes(this.DDTTreeData, dataUid_1);\n }\n count = childItems.length;\n }\n if (this.autoCheck && this.showCheckBox && !(this.fields.dataSource instanceof DataManager)) {\n var selectedChildNodeDetails = this.getSelectedChildNodeDetails(dataUid_1);\n matchedChildNodes = selectedChildNodeDetails;\n oldChildCount = new DataManager(this.checkActionNodes).executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n }\n if (count === 0 && checkedCount === 0) {\n return;\n } else if (count === checkedCount || parentNodeChecked && count > 0 && (oldChildCount.length === matchedChildNodes.length || oldChildCount.length !== matchedChildNodes.length) && oldChildCount.length !== 0 && matchedChildNodes.length !== 0 && rootNodeChecked_1 && this.autoCheck && this.showCheckBox) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n } else if (checkedCount > 0 && !parentNodeChecked && this.autoCheck && this.showCheckBox) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n } else if (checkedCount > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n } else if (checkedCount === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.getSelectedChildNodeDetails = function (dataUid) {\n var _this = this;\n var childKey = typeof this.fields.child === 'string' ? this.fields.child : null;\n var dataId = this.fields.id;\n var parentKey = this.fields.parentID;\n var matchesDataUid = function (childNode) {\n if (!isNOU(childKey) && childKey in childNode && Array.isArray(childNode[childKey])) {\n var matchNode = childNode[dataId];\n if (!isNOU(matchNode)) {\n return matchNode.toString() === dataUid;\n }\n } else {\n var childNodePid = childNode[parentKey];\n if (!isNOU(childNodePid)) {\n return childNodePid.toString() === dataUid;\n }\n }\n return false;\n };\n return this.checkedNodes.map(function (checkedNodeId) {\n return _this.getNodeObject(checkedNodeId);\n }).filter(function (childNode) {\n if (childNode && typeof childNode === 'object' && childKey in childNode) {\n return matchesDataUid(childNode);\n } else if (_this.dataType !== 2 && typeof childNode === 'object' && (parentKey in childNode || childKey in childNode)) {\n return matchesDataUid(childNode);\n }\n return false;\n });\n };\n TreeView.prototype.ensureChildCheckState = function (element, e, isFromExpandAll) {\n var _this = this;\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n var childCheck = Array.from(childElement.querySelectorAll('li'));\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n if (this.isFilter) {\n checkBoxes = Array.from(checkBoxes).filter(function (checkbox) {\n var dataUID = checkbox.closest('li').getAttribute('data-uid');\n return dataUID !== null && _this.checkedNodes.indexOf(dataUID) !== -1;\n });\n childCheck = Array.from(childCheck).filter(function (li) {\n var childIds = li.getAttribute('data-uid');\n return childIds !== null && _this.checkedNodes.indexOf(childIds) !== -1;\n });\n if (checkBoxes.length === 0) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n childCheck = Array.from(childElement.querySelectorAll('li'));\n }\n }\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[parseInt(index.toString(), 10)].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if (checkedState === 'uncheck' && !isUndefined(this.parentNodeCheck) && this.autoCheck && this.parentNodeCheck.indexOf(childId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n } else {\n var isNodeChecked = checkBoxes[parseInt(index.toString(), 10)].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n } else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n } else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n } else if (childCheck[parseInt(index.toString(), 10)].classList.contains(CHILD) && !isUndefined(this.parentNodeCheck) && this.autoCheck && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n } else if (this.dataType === 1 && !isUndefined(this.parentNodeCheck) && this.autoCheck && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n } else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded && !isFromExpandAll) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n if (!isNOU(nodes)) {\n nodes.reverse();\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[parseInt(len.toString(), 10)]);\n if (isNOU(liEle)) {\n var node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[parseInt(len.toString(), 10)] ? nodes[parseInt(len.toString(), 10)].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node, nodes);\n this.dynamicCheckState(node, doCheck);\n } else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n } else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n var liEle = closest(checkBoxes[parseInt(index.toString(), 10)], '.' + LISTITEM);\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n this.updateOldCheckedData([this.getNodeData(liEle)]);\n }\n } else {\n for (var index = 0; index < checkBoxes.length; index++) {\n var liEle = closest(checkBoxes[parseInt(index.toString(), 10)], '.' + LISTITEM);\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck');\n this.updateOldCheckedData([this.getNodeData(liEle)]);\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[parseInt(j.toString(), 10)] ? nodes[parseInt(j.toString(), 10)].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id] ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && id === node && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && element && id === node && !doCheck) {\n this.changeState(element, 'uncheck', null);\n } else if (this.checkedNodes.indexOf(node) !== -1 && element && id === node && doCheck) {\n this.changeState(element, 'check', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && id === node && this.autoCheck && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && id === node && this.autoCheck && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n } else if (!element && !parentElement && id === node && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n } else if (this.dataType === 2 || this.fields.dataSource instanceof DataManager && this.isOffline) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[parseInt(i.toString(), 10)][this.fields.id] ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[parseInt(i.toString(), 10)]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id] ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n } else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n } else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n } else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n *\n * @param {Object[]} subChild - Array of child nodes\n * @param {string} parent - Parent identifier\n * @param {string} node - Current node identifier\n * @param {boolean} doCheck - Boolean indicating whether to perform a check\n * @param {string} [child] - Optional child identifier\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[parseInt(j.toString(), 10)][this.fields.id] ? subChild[parseInt(j.toString(), 10)][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && subId === node && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && subId === node && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n } else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n } else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n } else if (this.checkedNodes.indexOf(node) === -1 && element && subId === node && !doCheck) {\n this.changeState(element, 'uncheck', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && subId === node && this.autoCheck && count === 0 && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n } else if (this.checkedNodes.indexOf(node) === -1 && !element && check && subId === node && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n } else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n } else if (!element && !parentElement && subId === node || this.parentNodeCheck.indexOf(parent) !== -1 && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n } else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkDisabledState(parent);\n } else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[parseInt(j.toString(), 10)]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!this.checkDisabledChildren && currLi && (currLi.classList.contains(DISABLE) || this.disableNode && this.disableNode.indexOf(currLi.getAttribute('data-uid')) !== -1)) {\n return;\n }\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n } else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n } else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n } else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return {\n action: action,\n cancel: false,\n isInteracted: isNOU(e) ? false : true,\n node: currLi,\n data: nodeData\n };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n this.setNodeFocusable();\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? Object.prototype.hasOwnProperty.call(this.rootData[0], this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) {\n return e[_this.fields.expanded] === true;\n }).length > 0 ? true : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({\n expandedNodes: []\n }, true);\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n } else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n } else {\n if (eUids[parseInt(i.toString(), 10)] && this.expandChildren.indexOf(eUids[parseInt(i.toString(), 10)]) === -1) {\n this.expandChildren.push(eUids[parseInt(i.toString(), 10)].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n } else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var _this = this;\n this.expandCallback(arr[this.index], function () {\n _this.index++;\n if (_this.index < arr.length) {\n _this.expandGivenNodes(arr);\n } else {\n _this.afterFinalized();\n }\n });\n if (this.index > 0) {\n this.index = 0;\n }\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n callback();\n } else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = {\n data: this.treeData\n };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({\n selectedNodes: []\n }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (sNode && !sNode.classList.contains('e-active')) {\n this.selectNode(sNode, null, true);\n } else {\n this.selectedNodes.push(sUids[parseInt(i.toString(), 10)]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n } else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[parseInt(i.toString(), 10)].classList.contains('e-disable')) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && event.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n } else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE))) {\n return;\n } else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n } else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n } else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n } else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n } else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n } else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.updateOldCheckedData = function (data) {\n var _this = this;\n var dataManager = new DataManager(data);\n var childItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'true', true));\n var uncheckedItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'false', true));\n if (uncheckedItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) {\n return e['id'] === uncheckedItems[0]['id'];\n });\n if (index !== -1) {\n this.OldCheckedData.splice(index, 1);\n var childNodes = this.OldCheckedData.filter(function (e) {\n return e['parentID'] === uncheckedItems[0]['id'];\n });\n if (childNodes.length > 0) {\n childNodes.forEach(function (child) {\n var childIndex = _this.OldCheckedData.findIndex(function (e) {\n return e['id'] === child.id;\n });\n if (childIndex !== -1) {\n _this.OldCheckedData.splice(childIndex, 1);\n }\n });\n }\n return;\n }\n }\n if (childItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) {\n return e['id'] === childItems[0]['id'];\n });\n if (index === -1) {\n this.OldCheckedData.push(childItems[0]);\n return;\n }\n }\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || loaded === true && currLi.classList.contains('e-expanded')) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n if (this.isAnimate && !this.isRefreshed) {\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration === 0 && animationMode === 'Enable' ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function () {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n _this.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n } else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n } else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n if (this.isHiddenItem) {\n this.collapseAll([this.getNodeData(currLi).id]);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n } else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n } else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n } else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration === 0 && animationMode === 'Enable' ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function () {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n _this.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n } else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n } else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n if (isNullOrUndefined(args.element.parentElement)) {\n return;\n }\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded, isFromExpandAll) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n } else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', {\n error: e\n });\n });\n }\n } else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n if (eicon.classList.contains(LOAD)) {\n this.hideSpinner(eicon);\n }\n this.removeExpand(parentLi, true);\n return;\n } else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi, isFromExpandAll);\n this.finalizeNode(parentLi, isFromExpandAll, expandChild);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded, isFromExpandAll);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n } else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n if (isNOU(this.disableNode) || this.disableNode.length === 0) {\n return;\n }\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n *\n * @param {Object[]} nodes - Array of nodes\n * @returns {void}\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n if (isNOU(this.selectedNodes) || this.selectedNodes.length === 0) {\n return;\n }\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[parseInt(i.toString(), 10)][this.fields.id] ? nodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element, isFromExpandAll) {\n if (this.showCheckBox) {\n this.ele = this.checkedElement ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element, null, isFromExpandAll);\n if (isFromExpandAll ? select('.' + CHECK, this.element) || select('.' + INDETERMINATE, this.element) : true) {\n this.ensureParentCheckState(element);\n }\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n } else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n } else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return typeof mapper.child === 'string' || isNOU(mapper.child) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) {\n isRoot = false;\n }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n if (typeof this.fields.child === 'string') {\n return this.findChildNodes(obj, this.fields.id, parentId) || this.findNestedChildNodes(obj, parentId, level) || [];\n }\n if (this.isChildObject()) {\n var tempField = !isNOU(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNOU(tempField.child)) {\n tempField = tempField.child;\n } else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) {\n return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId;\n });\n if (index !== -1) {\n return getValue('child', obj[parseInt(index.toString(), 10)]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[parseInt(i_1.toString(), 10)]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) {\n return getValue(_this.fields.child.id, data) && getValue(_this.fields.child.id, data).toString() === parentId;\n }) : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[parseInt(childIndex.toString(), 10)]);\n } else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.findChildNodes = function (items, idField, parentId) {\n var index = items.findIndex(function (data) {\n var value = getValue(idField, data);\n return value && value.toString() === parentId;\n });\n if (index !== -1) {\n return getValue(this.fields.child, items[index]);\n }\n return null;\n };\n TreeView.prototype.findNestedChildNodes = function (items, parentId, level) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var tempArray = getValue(this.fields.child, item);\n if (!isNOU(tempArray)) {\n var childNodes = this.findChildNodes(tempArray, this.fields.id, parentId);\n if (childNodes) {\n return childNodes;\n }\n var nestedChildNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (nestedChildNodes && nestedChildNodes.length > 0) {\n return nestedChildNodes;\n }\n }\n }\n return undefined;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[parseInt(i.toString(), 10)][0]) && !isNOU(getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]))) {\n if (getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]).toString() === parentId) {\n return data[parseInt(i.toString(), 10)];\n }\n } else if (isRoot) {\n return data[parseInt(i.toString(), 10)];\n } else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded, isFromExpandAll) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n if (element.querySelector('.e-icons') !== cIcons[parseInt(i.toString(), 10)]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded, isFromExpandAll);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && (e && e.ctrlKey || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n } else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || !this.allowMultiSelection && this.isActive(li) && !isNOU(e)) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n } else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || !multiSelect && (!e || e && !(e.ctrlKey || e.metaKey))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[parseInt(i.toString(), 10)];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n } else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n } else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute('tabindex', '-1');\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n } else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n } else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({\n selectedNodes: []\n }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return {\n action: action,\n cancel: false,\n isInteracted: isNOU(e) ? false : true,\n node: currLi,\n nodeData: nodeData\n };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = this.expandOn === 'Auto' ? Browser.isDevice ? 'Click' : 'DblClick' : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = Browser.isDevice && e.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(e.originalEvent.changedTouches[0].clientX, e.originalEvent.changedTouches[0].clientY) : e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) || target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n } else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n } else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n } else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback, isFromExpandAll) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n } else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n } else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n });\n } else {\n this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback, isFromExpandAll) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n } else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback, null, isFromExpandAll);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[parseInt(i.toString(), 10)]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[parseInt(i.toString(), 10)]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[parseInt(i.toString(), 10)], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n } else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n } else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n } else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) && pos.right <= (window.innerWidth || document.documentElement.clientWidth);\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return node.scrollHeight > node.clientHeight ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n } else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName('e-checkbox-disabled').length === 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n if (child !== null) {\n this.allCheckNode(child, this.checkedElement, null, null, false);\n } else {\n child = null;\n }\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.updateOldCheckedData([this.getNodeData(li)]);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n } else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n *\n * @param {Element} li - The list item element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var _this = this;\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n var childMatchesCheckedNodes = resultData.filter(function (item) {\n return _this.checkedNodes.indexOf(item[mapper.id].toString()) !== -1;\n }, this);\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && childMatchesCheckedNodes.length !== resultData.length && this.isFilter) {\n if (childMatchesCheckedNodes.length > 0) {\n resultData = childMatchesCheckedNodes;\n }\n }\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id] ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n var isCheck = resultData[parseInt(i.toString(), 10)][this.fields.isChecked] ? resultData[parseInt(i.toString(), 10)][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkDisabledState(resultId, resultData[i]);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n } else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null && this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null || this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n } else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n } else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[parseInt(i.toString(), 10)][this.fields.id] ? checkedData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n } else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[parseInt(i.toString(), 10)][this.fields.id] ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkDisabledState(checkedId, this.treeData[i]);\n }\n }\n }\n } else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n var filteredChildItems = childItems.filter(function (item) {\n var itemValue = String(item[Object.keys(item)[0]]);\n return _this.checkedNodes.indexOf(itemValue) !== -1;\n });\n if (filteredChildItems.length > 0 && childItems.length && this.isFilter) {\n childItems = filteredChildItems;\n }\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.checkDisabledState = function (resultId, currentItem) {\n var requiresUpdate = this.checkDisabledChildren;\n if (!requiresUpdate) {\n var shouldPreventUpdate = true;\n if (this.loadOnDemand && this.fields.htmlAttributes) {\n currentItem = isNOU(currentItem) ? currentItem : this.getNodeObject(resultId);\n if (!isNOU(currentItem)) {\n var htmlAttributes = currentItem[this.fields.htmlAttributes];\n if (htmlAttributes && !isNOU(htmlAttributes.class) && htmlAttributes.class.indexOf(DISABLE) !== -1) {\n shouldPreventUpdate = false;\n }\n }\n }\n var liElement = select(\"[data-uid=\\\"\" + resultId + \"\\\"]\", this.element);\n requiresUpdate = liElement ? !liElement.classList.contains(DISABLE) : this.disableNode.indexOf(resultId) === -1 && shouldPreventUpdate;\n }\n if (requiresUpdate) {\n this.checkedNodes.push(resultId);\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n var childIsCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked] ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkDisabledState(childId, childItems[i]);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n *\n * @param {Object[]} childItems - Array of child items\n * @param {string} parent - Parent identifier\n * @param {Element} childElement - Child DOM element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n var isCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked] ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n } else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n } else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n } else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[parseInt(i.toString(), 10)]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (check === null && !isNOU(child[parseInt(length_1.toString(), 10)][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1 || childCheck === 0 || checked === 2) {\n if (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) {\n newCheck.push(childId.toString());\n } else {\n childCheck = null;\n }\n childCheck = child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2 ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[parseInt(length_1.toString(), 10)]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[parseInt(length_1.toString(), 10)]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n } else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n if (isNOU(validateCheck)) {\n this.allCheckNode(childId_1, newCheck, checked, childCheck);\n } else {\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n }\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n } else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n } else {\n this.focusNextNode(focusedNode, true);\n }\n } else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n } else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n } else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (!isNOU(fNode)) {\n var ariaChecked = fNode.getAttribute('aria-checked');\n if (ariaChecked === 'mixed' || ariaChecked === 'false') {\n this.isFilter = false;\n }\n }\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? isNOU(selectedItem) ? this.element.firstElementChild : selectedItem : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n } else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n } else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n } else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[parseInt(index.toString(), 10)];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[parseInt(index.toString(), 10)];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute('tabindex', '-1');\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n if (focusedElement.classList.contains('e-disable')) {\n focusedElement.setAttribute('tabindex', '-1');\n this.navigateNode(true);\n } else {\n focusedElement.setAttribute('tabindex', '0');\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n }\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target === focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n if (Browser.isDevice) {\n return;\n }\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n } else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n TreeView.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) && !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = currLi.getAttribute('aria-expanded') === 'true' ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id,\n text: text,\n parentID: pid,\n selected: selected,\n selectable: selectable,\n expanded: expanded,\n isChecked: checked,\n hasChildren: hasChildren\n };\n }\n return {\n id: '',\n text: '',\n parentID: '',\n selected: false,\n expanded: false,\n isChecked: '',\n hasChildren: false\n };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return {\n cancel: false,\n isInteracted: isNOU(e) ? false : true,\n node: currLi,\n nodeData: nodeData,\n event: e\n };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n } else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({\n selectedNodes: [],\n checkedNodes: [],\n expandedNodes: []\n }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) || target.classList.contains(ICON) || target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n } else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle);\n }\n };\n TreeView.prototype.createTextbox = function (liEle) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', {\n className: TREEINPUT,\n attrs: {\n value: this.oldText\n }\n });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var widthSize_1 = inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, widthSize_1);\n }, 5);\n } else {\n _this.renderTextBox(eventArgs, textEle, widthSize_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, widthSize) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputObj.container.style.width = widthSize;\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n Input.destroy({\n element: target,\n properties: this.properties\n });\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n } else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n EventHandler.remove(target, 'blur', this.inputFocusOut);\n this.inputObj = null;\n detach(target);\n target = null;\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n } else {\n if (this.enableHtmlSanitizer) {\n txtEle.innerText = SanitizeHtmlHelper.sanitize(newText);\n } else {\n txtEle.innerHTML = newText;\n }\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n } else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n } else if (typeof ele === 'object') {\n return getElement(ele);\n } else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n } else if (typeof ele === 'string') {\n return ele;\n } else if (typeof ele === 'object') {\n return getElement(ele).getAttribute('data-uid');\n } else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return {\n cancel: false,\n newText: newText,\n node: liEle,\n nodeData: data,\n oldText: this.oldText,\n innerHtml: inpEle\n };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n } else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeData[parseInt(i.toString(), 10)]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[parseInt(i.toString(), 10)];\n }\n }\n } else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && dataId && dataId.toString() === id) {\n return obj[parseInt(i.toString(), 10)];\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n } else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n } else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true,\n enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap || _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) || _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = dragWrap.cloneNode(true);\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = _this.createElement('div', {\n className: ICON + ' ' + EXPANDABLE\n });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = _this.createElement('div', {\n className: cssClass\n });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = _this.createElement('span', {\n className: DROPCOUNT,\n innerHTML: '' + nLen\n });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n } else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n } else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({\n cursorAt: {\n top: !isNOU(e.event.targetTouches) || Browser.isDevice ? 60 : -20\n }\n });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n if (!e.target.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = closest(dropTarget, '.' + DROPPABLE);\n // eslint-disable-next-line\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n if (dropTarget.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) && _this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT)) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function () {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n _this.removeVirtualEle();\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.getOffsetX = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientX - target.getBoundingClientRect().left;\n } else {\n return event.offsetX;\n }\n };\n TreeView.prototype.getOffsetY = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientY - target.getBoundingClientRect().top;\n } else {\n return event.offsetY;\n }\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.isDropIn = false;\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var offsetX = this.getOffsetX(event, e.target);\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || dropWrap && !dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if (e && !expand && !collapse && offsetY < 7 && !checkWrapper || expand && offsetY < 5 || collapse && offsetX < 3) {\n var index = this.fullRowSelect ? 1 : 0;\n this.appendIndicator(dropLi, icon, index);\n } else if (e && !expand && !collapse && !checkWrapper && templateTarget && offsetY > templateTarget.offsetHeight - 10 || expand && offsetY > 19 || collapse && offsetX > 19) {\n var index = this.fullRowSelect ? 2 : 1;\n this.appendIndicator(dropLi, icon, index);\n } else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n } else {\n if (dropLi && e && !expand && !collapse && offsetY < 7 && !checkWrapper || expand && offsetY < 5 || collapse && offsetX < 3) {\n var index = this.fullRowSelect ? 1 : 0;\n this.appendIndicator(dropLi, icon, index);\n } else if (dropLi && e && !expand && !collapse && e.target.offsetHeight > 0 && offsetY > e.target.offsetHeight - 10 && !checkWrapper || expand && offsetY > 19 || collapse && offsetX > 19) {\n var index = this.fullRowSelect ? 2 : 1;\n this.appendIndicator(dropLi, icon, index);\n } else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n } else if (e.target.nodeName === 'LI' && !dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n } else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n } else {\n addClass([icon], DROPOUT);\n }\n } else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', {\n className: SIBLING\n });\n dropLi.insertBefore(virEle, dropLi.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.dropAction = function (e) {\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var nodeData = [];\n var liArray = [];\n var dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[parseInt(i.toString(), 10)] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = closest(dragTarget, '.' + LISTITEM);\n var dropLi = closest(dropTarget, '.' + LISTITEM);\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) || this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n } else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) || this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n } else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[parseInt(i.toString(), 10)]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && (expand && e.event.offsetY < 5 || collapse && e.event.offsetX < 3 || expand && e.event.offsetY > 19 || collapse && e.event.offsetX > 19 || !expand && !collapse)) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n } else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n } else if (dropTarget.classList.contains('e-icon-collapsible') || dropTarget.classList.contains('e-icon-expandable')) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n } else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, null, dropTarget);\n }\n } else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true, dropTarget);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n } else if (e.event.offsetY < 2) {\n pre = true;\n } else if (e.target.classList.contains('e-icon-expandable') || e.target.classList.contains('e-icon-collapsible')) {\n if (e.event.offsetY < 5 || e.event.offsetX < 3) {\n pre = true;\n } else if (e.event.offsetY > 15 || e.event.offsetX > 17) {\n pre = false;\n }\n }\n if (e.target.classList.contains('e-icon-expandable') || e.target.classList.contains('e-icon-collapsible')) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n } else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n } else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck, dropTarget) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7 && !dropTarget.classList.contains('e-sibling') || dropTarget.classList.contains('e-sibling') && !dropLi.lastChild.classList.contains('e-sibling')) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n } else if (e && e.target.offsetHeight > 0 && pos > e.target.offsetHeight - 10 && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n } else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n } else {\n var dropUl = this.expandParent(dropLi);\n var childLi = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n } else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : pre ? index : index + 1;\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n } else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[parseInt(i.toString(), 10)]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n } else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand && !(dropLi.getAttribute('aria-expanded') === 'true')) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n } else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || args && args.name !== 'nodeExpanding') {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n } else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n var collapseIcon = select('div.' + COLLAPSIBLE, dropLi);\n if (!isNOU(dropUl) && collapseIcon && this.preventExpand && !(dropLi.getAttribute('aria-expanded') === 'true')) {\n removeClass([collapseIcon], COLLAPSIBLE);\n dropLi.setAttribute('aria-expanded', 'false');\n addClass([collapseIcon], EXPANDABLE);\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n if (offsetY > e.target.offsetHeight - 2) {\n pre = false;\n } else if (offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', {\n className: SIBLING\n });\n var index = this.fullRowSelect ? pre ? 1 : 2 : pre ? 0 : 1;\n e.target.insertBefore(virEle, e.target.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = drop === true ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = obj.dragLi && dragParent === null ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = drop === true ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[parseInt(i.toString(), 10)])) {\n iconClass = iconCss[parseInt(i.toString(), 10)];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = drop !== true && index.children[parseInt(i.toString(), 10)] === draggedNode && dropLi !== draggedNode ? ++dropTar : dropTar;\n if (drop !== true && index.children[parseInt(i.toString(), 10)].classList.contains('e-hover')) {\n indexValue = event.offsetY >= 23 ? i + 1 : i;\n break;\n } else if (index.children[parseInt(i.toString(), 10)] === node) {\n indexValue = event.offsetY >= 23 ? i : i;\n break;\n }\n }\n indexValue = dropTar !== 0 ? --indexValue : indexValue;\n position = this.isDropIn ? 'Inside' : event.offsetY < 7 ? 'Before' : 'After';\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n } else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n } else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = parent_2 ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ? this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = parent_3 ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[parseInt(i.toString(), 10)]);\n }\n } else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[parseInt(i.toString(), 10)]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', {\n className: FULLROW\n });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n } else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes, currentLevel) {\n currentLevel = isNOU(currentLevel) ? 1 : currentLevel;\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (currentLevel >= level && !isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level, excludeHiddenNodes, currentLevel + 1);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var _i = 0, eIcons_1 = eIcons; _i < eIcons_1.length; _i++) {\n var icon = eIcons_1[_i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[parseInt(i.toString(), 10)])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({\n selectedNodes: []\n }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({\n expandedNodes: []\n }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n } else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[parseInt(i.toString(), 10)]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n if (toExpand) {\n this.expandAction(liEle, icon, null);\n } else {\n this.collapseNode(liEle, icon, null);\n }\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n } else {\n dropUl = dropEle;\n }\n var refNode = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && (this.sortOrder === 'Ascending' || this.sortOrder === 'Descending')) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n } else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = this.sortOrder === 'Ascending' ? cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() > li[parseInt(i.toString(), 10)].innerText.toUpperCase() : cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() < li[parseInt(i.toString(), 10)].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[parseInt(j.toString(), 10)]);\n break;\n }\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[parseInt(j.toString(), 10)]);\n }\n this.treeData.splice(pos, 0, nodes[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = level === 1 ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = Object.prototype.hasOwnProperty.call(prop, 'navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n return i;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var data = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var items = getValue('child', obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n if (typeof mapper.child === 'string' && Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], mapper.child) && obj[parseInt(i.toString(), 10)][mapper.child] !== null || this.fields.dataSource instanceof DataManager && Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], 'child')) {\n var key = typeof mapper.child === 'string' ? mapper.child : 'child';\n var childData = getValue(key, obj[parseInt(i.toString(), 10)]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n } else {\n var key = typeof mapper.child === 'string' ? mapper.child : 'child';\n obj[parseInt(i.toString(), 10)][\"\" + key] = data;\n }\n return true;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[parseInt(i.toString(), 10)][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[parseInt(i.toString(), 10)]);\n var id = strNodes[parseInt(i.toString(), 10)];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[parseInt(i.toString(), 10)] == 'string') {\n id = nodes[parseInt(i.toString(), 10)] ? nodes[parseInt(i.toString(), 10)].toString() : null;\n } else if (typeof nodes[parseInt(i.toString(), 10)] === 'object') {\n id = nodes[parseInt(i.toString(), 10)] ? nodes[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() : null;\n }\n if (validID.indexOf(id) === -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n } else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[parseInt(k.toString(), 10)][this.fields.id] ? this.treeData[parseInt(k.toString(), 10)][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[parseInt(k.toString(), 10)][this.fields.id] ? treeData[parseInt(k.toString(), 10)][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[parseInt(l.toString(), 10)], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[parseInt(k.toString(), 10)], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[parseInt(m.toString(), 10)], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[parseInt(j.toString(), 10)]);\n if (!isNOU(obj[parseInt(i.toString(), 10)][\"\" + field])) {\n delete obj[parseInt(i.toString(), 10)][\"\" + field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue(mapper.child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue('child', obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n if (isNOU(id)) {\n return;\n } else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n } else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && !isNOU(nodeId) && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n } else {\n setValue(this.getMapperProp(mapper, key), value, obj[parseInt(i.toString(), 10)]);\n removedData = [];\n }\n return removedData;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childItems = getValue('child', obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[parseInt(i.toString(), 10)][this.fields.id]) ? getValue(this.fields.id, node[parseInt(i.toString(), 10)]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = {\n data: this.treeData,\n action: action,\n nodeData: node\n };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n _this.editingHandler(e.originalEvent);\n }\n }\n });\n } else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n _this.clickHandler(e);\n }\n });\n } else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || _this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2) && e.originalEvent.which !== 3) {\n _this.expandHandler(e);\n }\n }\n });\n } else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n } else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return this.firstTap === secondTap;\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n if (nodes.length > 1 && typeof this.nodeChecked === 'function' && this.nodeChecked.length > 0) {\n this.isFilter = true;\n }\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setValidCheckedNode = function (node, nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0], nodes);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[parseInt(len.toString(), 10)][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkDisabledState(parent_4);\n }\n }\n }\n } else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[parseInt(a.toString(), 10)][this.fields.id] ? this.treeData[parseInt(a.toString(), 10)][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(a.toString(), 10)]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[parseInt(a.toString(), 10)], nodes);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n *\n * @param {Object[]} childItems - The child items to check.\n * @param {string} node - The node to set the check state for.\n * @param {Object} [treeData] - The optional tree data.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData, nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkDisabledState(checkNode, childItems[index]);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n var isParentNodeCheck = nodes.length === 1 && nodes[0] === checkNode;\n if (subChildItems.length === node.length || isParentNodeCheck) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n } else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n var isParentNodeCheck = [node].length === 1 && nodes.length === 0;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && (checkedChild === node || isParentNodeCheck)) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[parseInt(index.toString(), 10)]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[parseInt(i.toString(), 10)], nodes);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n } else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[parseInt(i.toString(), 10)]);\n if (treeData[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === currID) {\n treeData[parseInt(i.toString(), 10)] = newData[0];\n return true;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n } else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n } else if (target) {\n if (typeof target == 'string') {\n nodesID[0] = target.toString();\n } else if (typeof target === 'object') {\n nodesID[0] = target.getAttribute('data-uid').toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[parseInt(i.toString(), 10)]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length === 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n } else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () {\n return _this.deleteSuccess(nodesID);\n }).catch(function (e) {\n return _this.dmFailure(e);\n });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function () {\n return _this.editSucess(target, newText, prevent);\n }).catch(function (e) {\n return _this.dmFailure(e, target, prevent);\n });\n break;\n case 'insert':\n if (newNode.length === 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n } else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[parseInt(i.toString(), 10)]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) {\n return _this.dmFailure(e);\n });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var _this = this;\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) && dropLi.querySelector('.' + PARENTITEM) === null) {\n this.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n _this.addGivenNodes(nodes, dropLi, index, true, dropUl);\n _this.triggerEvent('addNodes', nodes);\n });\n } else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', {\n error: e\n });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[parseInt(i.toString(), 10)]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n } else {\n parentsID.push(data[parseInt(i.toString(), 10)][this.fields.id].toString());\n this.getHierarchicalParentId(data[parseInt(i.toString(), 10)][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeViewModel} newProp - The new property value.\n * @param {TreeViewModel} oldProp - The old property value.\n * @returns {void}\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (JSON.stringify(oldProp.checkedNodes) !== JSON.stringify(newProp.checkedNodes)) {\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({\n expandedNodes: []\n }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({\n expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes\n }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n if (!this.element.classList.contains('e-filtering')) {\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n }\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[parseInt(i.toString(), 10)].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[parseInt(i.toString(), 10)], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({\n selectedNodes: newProp.selectedNodes\n }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n case 'checkDisabledChildren':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({\n fullRowNavigable: newProp.fullRowNavigable\n }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @returns {void}\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n *\n * @param { object } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n } else {\n this.addSuccess(nodes, dropLi, index);\n }\n } else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n } else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n } else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[parseInt(i.toString(), 10)]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n if (!isNullOrUndefined(pid) && isNullOrUndefined(dropLi)) {\n this.isHiddenItem = true;\n this.preventExpand = false;\n this.ensureVisible(pid);\n this.preventExpand = preventTargetExpand;\n this.isHiddenItem = false;\n dropLi = this.getElement(pid.toString());\n }\n this.addGivenNodes([nodes[parseInt(i.toString(), 10)]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.setNodeFocusable();\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {void}\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n * @returns {void}\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n } else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n } else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType === 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length !== 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n } else if (this.dataType === 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse(), null, null, this.isHiddenItem);\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () {\n liEle.scrollIntoView({\n behavior: 'smooth'\n });\n }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n * @param {boolean} preventAnimation - Prevent the expand animation when expanding all nodes.\n * @returns {void}\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes, preventAnimation) {\n this.isAnimate = !preventAnimation;\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n } else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n } else {\n this.expandAllNodes(excludeHiddenNodes);\n if (!this.loadOnDemand || this.element.classList.contains('e-filtering')) {\n this.updateAttributes(this.element);\n this.updateList();\n }\n }\n }\n this.isAnimate = true;\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} - An array of strings representing the unique identifiers of checked nodes.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} An array of strings representing the unique identifiers of disabled nodes.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {Object} - The data associated with the specified node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n * @returns {Object} - The tree data associated with the specified node or element.\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n } else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n *\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n if (isNOU(sourceNodes) || sourceNodes.length === 0) {\n return;\n }\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n this.isHiddenItem = true;\n this.ensureVisible(target);\n this.isHiddenItem = false;\n dropLi = this.getElement(target);\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index, null, null, null, dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n *\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {Object[]} newData - Specifies the new data of TreeView node.\n * @returns {void}\n * ```typescript\n * var treeObj = document.getElementById(\"treeview\").ej2_instances[0];\n * var data = treeObj.getTreeData(\"01\");\n * var newData = {\n * id: data[0].id,\n * name: \"new Text\",\n * };\n * treeObj.refreshNode(\"01\", [newData]);\n * ```\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var isRefreshChild = false;\n if (this.dataType === 1 && newData.length > 1) {\n isRefreshChild = true;\n } else if (this.dataType === 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n var id = liEle ? liEle.getAttribute('data-uid') : target ? target.toString() : null;\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n var newNodeData;\n var parentData;\n if (this.dataType === 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[parseInt(k.toString(), 10)][this.fields.parentID])) {\n parentData = newData[parseInt(k.toString(), 10)];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n } else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if (isRefreshChild && ul || isRefreshChild && !isNOU(childItems)) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[parseInt(index.toString(), 10)]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n } else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n } else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n } else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute('title', newNodeData[this.fields.tooltip]);\n }\n if (Object.prototype.hasOwnProperty.call(newNodeData, this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n } else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n } else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text only when the `allowEditing` property is enabled.\n *\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n } else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n TreeView.prototype.setNodeFocusable = function () {\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n };\n var TreeView_1;\n __decorate([Property(false)], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([Complex({}, NodeAnimationSettings)], TreeView.prototype, \"animation\", void 0);\n __decorate([Property()], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"checkDisabledChildren\", void 0);\n __decorate([Property('')], TreeView.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"disabled\", void 0);\n __decorate([Property(null)], TreeView.prototype, \"dragArea\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([Property()], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([Property('Auto')], TreeView.prototype, \"expandOn\", void 0);\n __decorate([Complex({}, FieldsSettings)], TreeView.prototype, \"fields\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([Property()], TreeView.prototype, \"locale\", void 0);\n __decorate([Property()], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([Property()], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([Property('None')], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([Event()], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([Event()], TreeView.prototype, \"created\", void 0);\n __decorate([Event()], TreeView.prototype, \"dataBound\", void 0);\n __decorate([Event()], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([Event()], TreeView.prototype, \"drawNode\", void 0);\n __decorate([Event()], TreeView.prototype, \"destroyed\", void 0);\n __decorate([Event()], TreeView.prototype, \"keyPress\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([NotifyPropertyChanges], TreeView);\n return TreeView;\n}(Component);\nexport { TreeView };"],"sourceRoot":""}