{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/kendo.treeview.draganddrop.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.treeview.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","1069","1128","1477","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","$","kendo","window","ui","proxy","extend","VISIBILITY","KSTATEHOVER","INPUTSELECTOR","DROPHINTTEMPLATE","HierarchicalDragAndDrop","Class","init","element","options","this","hovered","dragstart","noop","drag","drop","dragend","_draggable","Draggable","ignore","filter","autoScroll","cursorOffset","left","top","support","mobileOS","zoomLevel","hint","_hint","dragcancel","$angular","holdToDrag","hintText","_removeTouchHover","touch","find","removeClass","_hintStatus","newStatus","statusElement","trim","className","replace","e","source","currentTarget","closest","itemSelector","preventDefault","reorderable","dropHint","css","appendTo","hoveredItem","itemHeight","itemTop","itemContent","delta","insertOnTop","insertOnBottom","addChild","itemData","position","status","target","dropTarget","eventTarget","container","allowedContainers","length","contains","itemFromTarget","item","_outerHeight","content","getOffset","y","location","_lastHover","toggleClass","dropHintContainer","first","last","originalEvent","pageY","pageX","x","substring","setStatus","value","indexOf","remove","destination","eventArgs","dropPrevented","dropPositionFrom","valid","setValid","newValid","dropped","destroy","jQuery","1059","1284","1476","TreeView","subGroup","nodeContents","nodeIcon","spriteRe","data","template","isArray","Array","Widget","HierarchicalDataSource","keys","NS","TEMP_NS","SELECT","CHECK","NAVIGATE","EXPAND","CHANGE","ERROR","CHECKED","INDETERMINATE","COLLAPSE","DRAGSTART","DRAG","DROP","DRAGEND","DATABOUND","CLICK","KENDOKEYDOWN","UNDEFINED","KTREEVIEW","VISIBLE","NODE","STRING","ARIACHECKED","ARIASELECTED","ARIADISABLED","ARIAEXPANDED","DISABLED","bindings","text","url","spriteCssClass","imageUrl","isJQueryInstance","obj","isDomElement","o","HTMLElement","nodeType","nodeName","contentChild","node","result","children","templateNoWith","code","useWithBlock","checkboxes","insertAction","indexOffset","nodeData","referenceNode","parentNode","group","parent","is","_dataSourceMove","dataSource","model","referenceItem","dataItem","referenceNodeIndex","index","_insert","moveContents","tmp","toLowerCase","nextSibling","nodeValue","test","insertBefore","firstChild","appendChild","updateNodeHtml","wrapper","toggleButton","checkbox","innerWrapper","hasClass","prependTo","append","eq","addClass","DataBoundWidget","list","that","inferred","hasDataSource","loadOnDemand","prototype","_dataSourceUids","_animation","_accessors","_templates","root","_wrapper","_group","_tabindex","attr","_dataSource","_attachEvents","_dragging","_syncHtmlAndDataSource","autoBind","_progress","fetch","checkChildren","updateIndeterminate","_ariaId","format","notify","clickableItems","MOUSEENTER","_clickHandler","_click","on","_toggleButtonClick","_keydown","_keypress","_focus","_blur","_mousedown","_checkboxChange","_checkboxLabelClick","_retryRequest","focus","previousSibling","prop","trigger","i","uid","itemCheckbox","view","uidAttr","expandedAttr","checkboxesEnabled","items","expanded","checked","next","animationOptions","animation","hasCollapseAnimation","collapse","expand","reverse","effects","hide","enabled","dragAndDrop","dragging","widget","_hintText","prevAll","sourceNode","statusClass","setStatusClass","navigationTarget","_tempPreventNavigation","destinationNode","state","dropPosition","triggerDragEnd","insertAfter","ev","off","templates","dragClue","treeview","fieldAccessor","_fieldAccessor","_checkboxes","setAttributes","attributes","hasOwnProperty","wrapperCssClass","firstLevel","cssClass","groupLength","textClass","isLink","selected","toggleButtonClass","groupAttributes","groupCssClass","itemElement","loading","retry","setDataSource","one","_bindDataSource","_refreshHandler","refresh","_errorHandler","_error","bind","_unbindDataSource","unbind","silentRead","recursiveRead","_initChildren","fields","field","create","events","name","duration","messages","requestFailed","dataTextField","textField","fieldName","fieldBindings","count","map","expr","join","setOptions","fn","_trigger","eventName","_setChecked","datasource","isFunction","nodes","_setCheckedValue","_setIndeterminate","siblings","all","indeterminate","subnodes","_bubbleIndeterminate","skipDownward","_skip","set","isChecked","_preventChange","toggle","browser","msie","edge","_clickTarget","current","_focusable","select","clickTarget","_nextVisible","scrollContainer","containers","offsets","documentElement","document","scrollHeight","clientHeight","push","scrollTop","focusElement","_enabled","skipSelf","wrapperRe","itemRe","_expanded","nextParent","_previousVisible","lastChild","prev","key","keyCode","focused","rtl","isRtl","RIGHT","LEFT","DOWN","UP","HOME","END","ENTER","SPACEBAR","matchToFocus","delay","focusedNode","get","isPrintable","_match","clearTimeout","_matchTimer","setTimeout","_matchNextByText","startIndex","textNodes","shouldNavigate","contents","href","wrapperClasses","wrap","_getSelectedNode","groupElement","_nodes","groupData","each","_updateNodeClasses","defaultTemplate","textWrap","_processNodes","callback","getByUid","_dataItem","_insertNode","insertCallback","collapsed","childrenData","updatedGroupLength","nodeHtml","_renderItem","angular","elements","_renderGroup","hasChildren","_updateNodes","nodeWrapper","isCollapsed","context","render","setCheckedState","findByUid","end","html","_toggle","removeAttr","ns","_appendItems","dataItems","viewItems","rootItems","_refreshChildren","child","empty","_refreshRoot","groupHtml","parentElement","_angularItems","action","level","bubble","_remove","_loaded","load","retryHtml","enable","arguments","_current","direction","height","kendoStop","kendoAnimate","reset","complete","force","showProgress","loadingText","Math","min","_objectOrSelf","referenceDataItem","destTreeview","destDataSource","loadPromise","Deferred","resolve","promise","_toObservableData","ObservableArray","toJSON","splice","concat","success","loadModel","inserted","add","max","done","keepData","prevSibling","detach","findByText","getAttribute","expandPath","path","nodeIds","slice","proceed","shift","then","nodeElement","_parentIds","parents","unshift","expandTo","Node","r","renderItems","len","plugin"],"mappings":"2GAAAA,EAAOC,QACE,SAAUC,GAET,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUJ,QAGnC,IAAID,EAASG,EAAiBE,GAAY,CACzCJ,QAAS,GACTK,GAAID,EACJE,QAAQ,GAUT,OANAL,EAAQG,GAAUG,KAAKR,EAAOC,QAASD,EAAQA,EAAOC,QAASG,GAG/DJ,EAAOO,QAAS,EAGTP,EAAOC,QAcf,OATAG,EAAoBK,EAAIP,EAGxBE,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,GAGjBP,EAAoB,GAvC5B,CA0CC,CAEJQ,EACA,SAAUZ,EAAQC,EAASG,GAEhCJ,EAAOC,QAAUG,EAAoB,OAKhCS,EACA,SAAUb,EAAQC,GAEvBD,EAAOC,QAAU,WAAa,MAAM,IAAIa,MAAM,oCAKzCC,KACA,SAAUf,EAAQC,GAEvBD,EAAOC,QAAU,EAAQ,SAIpBe,KACA,SAAUhB,EAAQC,GAEvBD,EAAOC,QAAU,EAAQ,SAIpBgB,KACA,SAAUjB,EAAQC,EAASG,GAEhC,IAAIc,EAAgCC,EAA8BC,GAA8B,SAAUC,EAAGC,GACvGH,EAA+B,CAAEf,EAAoB,MAAOA,EAAoB,OAASc,EAAiC,EAAKE,EAA2E,oBAAnCF,EAAiDA,EAA+BK,MAAMtB,EAASkB,GAAiCD,OAAmEM,IAAlCJ,IAAgDpB,EAAOC,QAAUmB,IAD/S,EAE7F,WAkQH,OAxPA,SAAUK,EAAGD,GACT,IAAIE,EAAQC,OAAOD,MACfE,EAAKF,EAAME,GACXC,EAAQJ,EAAEI,MACVC,EAASL,EAAEK,OACXC,EAAa,aACbC,EAAc,gBACdC,EAAgB,8KAChBC,EAAmB,yHAKvBN,EAAGO,wBAA0BT,EAAMU,MAAMN,OAAO,CAC5CO,KAAM,SAAUC,EAASC,GACrBC,KAAKF,QAAUA,EACfE,KAAKC,QAAUH,EACfE,KAAKD,QAAUT,EAAO,CAClBY,UAAWjB,EAAEkB,KAAMC,KAAMnB,EAAEkB,KAAME,KAAMpB,EAAEkB,KAAMG,QAASrB,EAAEkB,MAC3DJ,GAEHC,KAAKO,WAAa,IAAInB,EAAGoB,UAAUV,EAAS,CACxCW,OAAQhB,EACRiB,OAAQX,EAAQW,OAChBC,WAAYZ,EAAQY,WACpBC,aAAc,CACVC,KAAM,GACNC,IAAK5B,EAAM6B,QAAQC,UAAY,GAAK9B,EAAM6B,QAAQE,YAAc,IAEpEC,KAAM7B,EAAMW,KAAKmB,MAAOnB,MACxBE,UAAWb,EAAMW,KAAKE,UAAWF,MACjCoB,WAAY/B,EAAMW,KAAKoB,WAAYpB,MACnCI,KAAMf,EAAMW,KAAKI,KAAMJ,MACvBM,QAASjB,EAAMW,KAAKM,QAASN,MAC7BqB,SAAUtB,EAAQsB,SAClBC,WAAYvB,EAAQuB,cAI5BH,MAAO,SAASrB,GACZ,MAAO,sEAEKE,KAAKD,QAAQwB,SAASzB,GAC1B,UAGZ0B,kBAAmB,WACXtC,EAAM6B,QAAQU,OAASzB,KAAKC,UAC5BD,KAAKC,QAAQyB,KAAK,IAAMlC,GAAamC,YAAYnC,GACjDQ,KAAKC,SAAU,IAIvB2B,YAAa,SAASC,GAClB,IAAIC,EAAgB9B,KAAKO,WAAWW,KAAKQ,KAAK,kBAAkB,GAEhE,IAAIG,EAGA,OAAO3C,EAAM6C,KAAKD,EAAcE,UAAUC,QAAQ,4BAA6B,KAF/EH,EAAcE,UAAY,wBAA0BH,GAM5D3B,UAAW,SAAUgC,GACjBlC,KAAKmC,OAASD,EAAEE,cAAcC,QAAQrC,KAAKD,QAAQuC,cAE/CtC,KAAKD,QAAQG,UAAUF,KAAKmC,SAC5BD,EAAEK,iBAGFvC,KAAKD,QAAQyC,YACbxC,KAAKyC,SAAWxD,EAAES,GACbgD,IAAInD,EAAY,UAChBoD,SAAS3C,KAAKF,SAEnBE,KAAKyC,SAAWxD,KAIxBmB,KAAM,SAAU8B,GACZ,IAIIU,EAAaC,EAAYC,EAASC,EAAaC,EAC/CC,EAAaC,EAAgBC,EAC7BC,EAAUC,EAAUC,EANpBvD,EAAUC,KAAKD,QACfoC,EAASnC,KAAKmC,OACdoB,EAASvD,KAAKwD,WAAavE,EAAEC,EAAMuE,YAAYvB,IAC/CwB,EAAYH,EAAOlB,QAAQtC,EAAQ4D,mBAKlCD,EAAUE,OAIJzB,EAAO,IAAMoB,EAAO,IAAMxD,EAAQ8D,SAAS1B,EAAO,GAAIoB,EAAO,IAEpED,EAAS,cAGTA,EAAS,oBAETF,EAAWrD,EAAQ+D,eAAeP,GAClCX,EAAcQ,EAASW,KAEnBnB,EAAYgB,QACZ5D,KAAKwB,oBACLqB,EAAa3D,EAAM8E,aAAapB,GAChCG,EAAcK,EAASa,QAEnBlE,EAAQyC,aACRQ,EAAQH,GAAcE,EAAYa,OAAS,EAAI,EAAI,GACnDd,EAAU5D,EAAMgF,UAAUtB,GAAa9B,IAEvCmC,EAAcf,EAAEiC,EAAEC,SAAYtB,EAAUE,EACxCE,EAAkBJ,EAAUD,EAAaG,EAASd,EAAEiC,EAAEC,SACtDjB,EAAWJ,EAAYa,SAAWX,IAAgBC,IAElDC,GAAW,EACXF,GAAc,EACdC,GAAiB,GAGrBlD,KAAKC,UAAUkD,GAAWO,EAE1B1D,KAAKyC,SAASC,IAAInD,EAAY4D,EAAW,SAAW,WAEhDnD,KAAKqE,YAAcrE,KAAKqE,WAAW,IAAMtB,EAAY,IACrD/C,KAAKqE,WAAW1C,YAAYnC,GAGhCQ,KAAKqE,WAAatB,EAAYuB,YAAY9E,EAAa2D,GAEnDA,EACAG,EAAS,YAETD,EAAWT,EAAYS,WACvBA,EAASvC,KAAOmC,EAAc,EAAIJ,EAElC7C,KAAKyC,SAASC,IAAIW,GACbJ,EAAc,YAAc,YAC5BlD,EAAQwE,kBAAkB3B,IAE3BK,GAAeG,EAASoB,QACxBlB,EAAS,iBAGTJ,GAAkBE,EAASqB,OAC3BnB,EAAS,qBAGVC,EAAO,IAAMvD,KAAKyC,SAAS,KAC9BzC,KAAKqE,YACLrE,KAAKqE,WAAW1C,YAAYnC,GAO5B8D,EAJCrE,EAAE4E,SAAS7D,KAAKF,QAAQ,GAAI4D,EAAU,IAI9B,aAFA,cAjEjBJ,EAAS,aACTtD,KAAKwB,qBAuETxB,KAAKD,QAAQK,KAAK,CACdsE,cAAexC,EAAEwC,cACjBvC,OAAQA,EACRoB,OAAQA,EACRoB,MAAOzC,EAAEiC,EAAEC,SACXQ,MAAO1C,EAAE2C,EAAET,SACXd,OAAQA,EAAOwB,UAAU,GACzBC,UAAW,SAASC,GAChB1B,EAAS0B,KAIoB,IAAjC1B,EAAO2B,QAAQ,eACfjF,KAAKyC,SAASC,IAAInD,EAAY,UAGlCS,KAAK4B,YAAY0B,IAGrBlC,WAAY,WACRpB,KAAKyC,SAASyC,UAGlB5E,QAAS,SAAU4B,GACf,IAEIiD,EAGAC,EAAWC,EALXhC,EAAW,OACXlB,EAASnC,KAAKmC,OAEdM,EAAWzC,KAAKyC,SAChBe,EAAaxD,KAAKwD,WAGU,WAA5Bf,EAASC,IAAInD,IACb8D,EAAWrD,KAAKD,QAAQuF,iBAAiB7C,GACzC0C,EAAc1C,EAASJ,QAAQrC,KAAKD,QAAQuC,eACrCkB,IACP2B,EAAc3B,EAAWnB,QAAQrC,KAAKD,QAAQuC,cAGzC6C,EAAYvB,SACbuB,EAAc3B,EAAWnB,QAAQrC,KAAKD,QAAQ4D,qBAItDyB,EAAY,CACRV,cAAexC,EAAEwC,cACjBvC,OAAQA,EAAO,GACfgD,YAAaA,EAAY,GACzBI,MAA6B,cAAtBvF,KAAK4B,cACZ4D,SAAU,SAASC,GACfzF,KAAKuF,MAAQE,GAEjBjC,WAAYA,EAAW,GACvBH,SAAUA,GAGdgC,EAAgBrF,KAAKD,QAAQM,KAAK+E,GAElC3C,EAASyC,SACTlF,KAAKwB,oBACDxB,KAAKqE,YACLrE,KAAKqE,WAAW1C,YAAYnC,GAG3B4F,EAAUG,QAASF,GAKxBrF,KAAKO,WAAWmF,SAAU,EAE1B1F,KAAKD,QAAQO,QAAQ,CACjBoE,cAAexC,EAAEwC,cACjBvC,OAAQA,EACRgD,YAAaA,EACb9B,SAAUA,KAVVrD,KAAKO,WAAWmF,QAAUN,EAAUG,OAc5CI,QAAS,WACL3F,KAAKqE,WAAarE,KAAKC,QAAU,KACjCD,KAAKO,WAAWoF,aAlP5B,CAsPGxG,OAAOD,MAAM0G,QAETzG,OAAOD,QAEXtB,EAAoB,Q,sBCpVxB,YAAAJ,EAAA,QACS,SAAUE,GAET,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUJ,QAGnC,IAAID,EAASG,EAAiBE,GAAY,CACzCJ,QAAS,GACTK,GAAID,EACJE,QAAQ,GAUT,OANAL,EAAQG,GAAUG,KAAKR,EAAOC,QAASD,EAAQA,EAAOC,QAASG,GAG/DJ,EAAOO,QAAS,EAGTP,EAAOC,QAcf,OATAG,EAAoBK,EAAIP,EAGxBE,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,GAGjBP,EAAoB,GAvC5B,CA0CC,CAEJQ,EACA,SAAUZ,EAAQC,EAASG,GAEhCJ,EAAOC,QAAUG,EAAoB,OAKhCS,EACA,SAAUb,EAAQC,GAEvBD,EAAOC,QAAU,WAAa,MAAM,IAAIa,MAAM,oCAKzCuH,KACA,SAAUrI,EAAQC,GAEvBD,EAAOC,QAAU,EAAQ,SAIpBc,KACA,SAAUf,EAAQC,GAEvBD,EAAOC,QAAU,EAAQ,SAIpBqI,KACA,SAAUtI,EAAQC,GAEvBD,EAAOC,QAAU,EAAQ,SAIpBsI,KACA,SAAUvI,EAAQC,EAASG,GAEhC,IAAIc,EAAgCC,EAA8BC,GAA0D,SAASgH,IAAS,SAAU/G,EAAGC,GACrJH,EAA+B,CAAEf,EAAoB,MAAOA,EAAoB,OAASc,EAAiC,EAAKE,EAA2E,oBAAnCF,EAAiDA,EAA+BK,MAAMtB,EAASkB,GAAiCD,OAAmEM,IAAlCJ,IAAgDpB,EAAOC,QAAUmB,IADjQ,EAE3I,WA+0EH,OA9zEA,SAAUK,EAAGD,GACT,IAuCIgH,EACAC,EAAUC,EAAcC,EACxBC,EAzCAlH,EAAQC,OAAOD,MACfE,EAAKF,EAAME,GACXiH,EAAOnH,EAAMmH,KACb/G,EAASL,EAAEK,OACXgH,EAAWpH,EAAMoH,SACjBC,EAAUC,MAAMD,QAChBE,EAASrH,EAAGqH,OACZC,EAAyBL,EAAKK,uBAC9BrH,EAAQJ,EAAEI,MACVsH,EAAOzH,EAAMyH,KACbC,EAAK,iBACLC,EAAU,qBACVC,EAAS,SACTC,EAAQ,QACRC,EAAW,WACXC,EAAS,SACTC,EAAS,SACTC,EAAQ,QACRC,EAAU,UACVC,EAAgB,gBAChBC,EAAW,WACXC,EAAY,YACZC,EAAO,OACPC,EAAO,OACPC,EAAU,UACVC,EAAY,YACZC,EAAQ,QACRC,EAAe,eACfC,EAAY,YACZtI,EAAc,gBACduI,EAAY,aACZC,EAAU,WACVC,EAAO,UACPC,EAAS,SACTC,EAAc,eACdC,EAAe,gBACfC,EAAe,gBACfC,EAAe,gBACfC,EAAW,mBAIXC,EAAW,CACPC,KAAM,gBACNC,IAAK,eACLC,eAAgB,0BAChBC,SAAU,qBAEdC,EAAmB,SAASC,GACxB,OAAQA,aAAe5J,EAAM0G,QAAY,GAAiBkD,aAAe,GAE7EC,EAAe,SAAUC,GACrB,MAC2B,kBAAhBC,YAA2BD,aAAaC,YAC/CD,GAAkB,kBAANA,GAAiC,IAAfA,EAAEE,iBAAyBF,EAAEG,WAAajB,GAIpF,SAASkB,EAAa1I,GAClB,OAAO,SAAS2I,GACZ,IAAIC,EAASD,EAAKE,SAAS,0BAM3B,OAJKD,EAAO1F,SACR0F,EAASD,GAGNC,EAAOC,SAAS7I,IAI/B,SAAS8I,EAAeC,GACpB,OAAOvK,EAAMoH,SAASmD,EAAM,CAAEC,cAAc,IAShD,SAASC,EAAWN,GACf,OAAOA,EAAK3H,KAAK,kDAGtB,SAASkI,GAAaC,GAClB,OAAO,SAAUC,EAAUC,GACvBA,EAAgBA,EAAc1H,QAAQ4F,GAEtC,IACI+B,EADAC,EAAQF,EAAcG,SAO1B,OAJID,EAAMC,SAASC,GAAG,QAClBH,EAAaC,EAAMC,UAGhBlK,KAAKoK,gBAAgBN,EAAUG,EAAOD,GAAY,SAAUK,EAAYC,GAC3E,IAAIC,EAAgBvK,KAAKwK,SAAST,GAC9BU,EAAqBF,EAAgBA,EAAcL,SAASjF,QAAQsF,GAAiBR,EAAcW,QAEvG,OAAO1K,KAAK2K,QAAQN,EAAWhE,OAAQiE,EAAOG,EAAqBZ,OAO/E,SAASe,GAAavB,EAAM3F,GACxB,IAAImH,EAEJ,MAAOxB,GAAuC,MAA/BA,EAAKF,SAAS2B,cACzBD,EAAMxB,EACNA,EAAOA,EAAK0B,YAEQ,GAAhBF,EAAI3B,WACJ2B,EAAIG,UAAY9L,EAAM6C,KAAK8I,EAAIG,YAG/B5E,EAAS6E,KAAKJ,EAAI7I,WAClB0B,EAAUwH,aAAaL,EAAKnH,EAAUyH,YAEtCzH,EAAU0H,YAAYP,GAKlC,SAASQ,GAAehC,GACpB,IAAIiC,EAAUjC,EAAKE,SAAS,OACxBU,EAAQZ,EAAKE,SAAS,MACtBgC,EAAeD,EAAQ/B,SAAS,WAChCiC,EAAWnC,EAAKE,SAAS,wBACzBkC,EAAeH,EAAQ/B,SAAS,SAEhCF,EAAKqC,SAAS,gBAIbJ,EAAQ1H,SACT0H,EAAUrM,EAAE,WAAW0M,UAAUtC,KAGhCkC,EAAa3H,QAAUqG,EAAMrG,OAC9B2H,EAAetM,EAAE,2BAA2B0M,UAAUL,GAC9CrB,EAAMrG,QAAWqG,EAAMV,WAAW3F,SAC1C2H,EAAarG,SACb+E,EAAM/E,UAGNsG,EAAS5H,QACT3E,EAAE,uCAAuC0D,SAAS2I,GAASM,OAAOJ,GAGjEC,EAAa7H,SACd6H,EAAepC,EAAKE,SAAS,KAAKsC,GAAG,GAAGC,SAAS,eAE5CL,EAAa7H,SACd6H,EAAexM,EAAE,0BAGrBwM,EAAa9I,SAAS2I,GAElBA,EAAQ1H,QACRgH,GAAaU,EAAQ,GAAGP,YAAaU,EAAa,MAvF9DxF,EAAWmD,EAAa,YACxBlD,EAAekD,EAAa,uBAC5BjD,EAAW,SAASkD,GAChB,OAAOA,EAAKE,SAAS,OAAOA,SAAS,YA2BzCnD,EAAW,WA8DXJ,EAAW9G,EAAME,GAAG2M,gBAAgBzM,OAAO,CACvCO,KAAM,SAAUC,EAASC,GACrB,IAGIiM,EAHAC,EAAOjM,KACPkM,GAAW,EACXC,EAAgBpM,KAAaA,EAAQsK,WAGrC9D,EAAQxG,KACRA,EAAU,CAAEsK,WAAYtK,IAGxBA,UAAkBA,EAAQqM,cAAgBtE,GAAavB,EAAQxG,EAAQsK,cACvEtK,EAAQqM,cAAe,GAG3B3F,EAAO4F,UAAUxM,KAAK7B,KAAKiO,EAAMnM,EAASC,GAE1CD,EAAUmM,EAAKnM,QACfC,EAAUkM,EAAKlM,QAEfkM,EAAKK,gBAAkB,GAEvBN,EAAQlM,EAAQqK,GAAG,OAASrK,GACpBA,EAAQ4L,SAAS3D,IAAcjI,EAAQyJ,SAAS,MAExD2C,GAAYC,GAAiBH,EAAKpI,OAE9BsI,IACAnM,EAAQsK,WAAW2B,KAAOA,GAG9BC,EAAKM,aAELN,EAAKO,aAELP,EAAKQ,aAGA3M,EAAQ4L,SAAS3D,IASlBkE,EAAKX,QAAUxL,EACfmM,EAAKS,KAAO5M,EAAQyJ,SAAS,MAAMsC,GAAG,KATtCI,EAAKU,WAEDX,IACAC,EAAKS,KAAO5M,EACZmM,EAAKW,OAAOX,EAAKX,WAQzBW,EAAKY,YAELZ,EAAKX,QAAQwB,KAAK,OAAQ,QAC1Bb,EAAKX,QAAQ5J,KAAK,OAAOoL,KAAK,OAAQ,QAEtCb,EAAKc,YAAYb,GAEjBD,EAAKe,gBAELf,EAAKgB,YAEAf,EAMDD,EAAKiB,yBALDnN,EAAQoN,WACRlB,EAAKmB,WAAU,GACfnB,EAAK5B,WAAWgD,SAMpBtN,EAAQ4J,YAAc5J,EAAQ4J,WAAW2D,eACzCrB,EAAKsB,sBAGLtB,EAAKnM,QAAQ,GAAGhC,KAChBmO,EAAKuB,QAAUtO,EAAMuO,OAAO,gBAAiBxB,EAAKnM,QAAQ,GAAGhC,KAGjEoB,EAAMwO,OAAOzB,IAGjBe,cAAe,WACX,IAAIf,EAAOjM,KACP2N,EAAiB,iDACjBC,EAAa,aAEjB3B,EAAK4B,cAAgBxO,EAAM4M,EAAK6B,OAAQ7B,GAExCA,EAAKX,QACAyC,GAAGH,EAAahH,EAAI,0BAA0B,SAAS1E,GAAKA,EAAEK,oBAC9DwL,GAAGH,EAAahH,EAAI+G,GAAgB,WAAc1O,EAAEe,MAAM8L,SAAStM,MACnEuO,GAAG,aAAenH,EAAI+G,GAAgB,WAAc1O,EAAEe,MAAM2B,YAAYnC,MACxEuO,GAAGnG,EAAQhB,EAAI+G,EAAgB1B,EAAK4B,eACpCE,GAAG,WAAanH,EAAI,+BAAgCvH,EAAM4M,EAAK+B,mBAAoB/B,IACnF8B,GAAGnG,EAAQhB,EAAI,4BAA6BvH,EAAM4M,EAAK+B,mBAAoB/B,IAC3E8B,GAAG,UAAYnH,EAAIqF,EAAM5M,EAAM4M,EAAKgC,SAAUhC,IAC9C8B,GAAG,WAAanH,EAAIvH,EAAM4M,EAAKiC,UAAWjC,IAC1C8B,GAAG,QAAUnH,EAAIvH,EAAM4M,EAAKkC,OAAQlC,IACpC8B,GAAG,OAASnH,EAAIvH,EAAM4M,EAAKmC,MAAOnC,IAClC8B,GAAG,YAAcnH,EAAI,gEAAiEvH,EAAM4M,EAAKoC,WAAYpC,IAC7G8B,GAAG,SAAWnH,EAAI,gCAAiCvH,EAAM4M,EAAKqC,gBAAiBrC,IAC/E8B,GAAG,QAAUnH,EAAI,iBAAkBvH,EAAM4M,EAAKsC,oBAAqBtC,IACnE8B,GAAG,QAAUnH,EAAI,mBAAoBvH,EAAM4M,EAAKuC,cAAevC,IAC/D8B,GAAG,QAAUnH,EAAI,4BAA4B,SAAS1E,GAAKA,EAAEK,oBAC7DwL,GAAG,QAAUnH,GAAI,SAAS1E,GACvB,IAAIqB,EAAStE,EAAEiD,EAAEqB,QAEZA,EAAO4G,GAAG,oBAAuB5G,EAAO7B,KAAK,uCAAuCyI,GAAG,oBACxF8B,EAAKwC,YAKrBF,oBAAqB,SAASrM,GAC1B,IAAIsJ,EAAWvM,EAAEiD,EAAEqB,OAAOmL,iBAEtBlD,EAASrB,GAAG,gBAIhBqB,EAASmD,KAAK,WAAYnD,EAASmD,KAAK,YACxCnD,EAASoD,QAAQ,YAGrB1B,uBAAwB,SAAUR,EAAMrC,GACpCqC,EAAOA,GAAQ1M,KAAK0M,KACpBrC,EAAaA,GAAcrK,KAAKqK,WAChC,IAKIwE,EACA9K,EACAyG,EACAsE,EACAC,EATA1I,EAAOgE,EAAW2E,OAClBC,EAAU/P,EAAM4N,KAAK,OACrBoC,EAAehQ,EAAM4N,KAAK,YAC1BqC,EAAoBnP,KAAKD,QAAQ4J,WACjCyF,EAAQ1C,EAAKnD,SAAS,MAO1B,IAAKsF,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC1BrE,EAAWnE,EAAKwI,GAChBC,EAAMtE,EAASsE,IACf/K,EAAOqL,EAAMvD,GAAGgD,GAChB9K,EAAK+I,KAAK,OAAQ,YACbA,KAAKmC,EAASH,GACdhC,KAAK1E,EAAcrE,EAAK2H,SAAS,qBAEtClB,EAAS6E,SAAuC,SAA5BtL,EAAK+I,KAAKoC,GAE1BC,IACAJ,EAAepF,EAAW5F,GAC1ByG,EAAS8E,QAAUP,EAAaJ,KAAKvH,GACrC2H,EAAajC,KAAK,KAAM,IAAMgC,GAC9BC,EAAaQ,KAAK,qBAAqBzC,KAAK,MAAO,IAAMgC,IAG7D9O,KAAKkN,uBAAuBnJ,EAAKwF,SAAS,MAAOiB,EAASjB,WAIlEgD,WAAY,WACR,IAAIxM,EAAUC,KAAKD,QACfyP,EAAmBzP,EAAQ0P,UAC3BC,EAAuBF,EAAiBG,UAAY,YAAaH,EAAiBG,SAClFA,EAAWrQ,EAAO,GAAIkQ,EAAiBI,OAAQJ,EAAiBG,UAE/DD,IACDC,EAAWrQ,EAAOqQ,EAAU,CAACE,SAAS,MAGjB,IAArBL,IACAA,EAAmB,CACfI,OAAQ,CAAEE,QAAS,IACnBH,SAAU,CAAEI,MAAM,EAAMD,QAAS,MAIzCN,EAAiBG,SAAWrQ,EAAOqQ,EAAU,CAACI,MAAM,IACpDhQ,EAAQ0P,UAAYD,GAGxBvC,UAAW,WACP,IAAI+C,EAAUhQ,KAAKD,QAAQkQ,YACvBC,EAAWlQ,KAAKkQ,SAEpB,GAAIF,IAAYE,EAAU,CACtB,IAAIC,EAASnQ,KAEbA,KAAKkQ,SAAW,IAAI9Q,EAAGO,wBAAwBK,KAAKF,QAAS,CACzD0C,aAAa,EACbnB,SAAUrB,KAAKD,QAAQsB,SACvBV,WAAYX,KAAKD,QAAQY,WACzBD,OAAQ,mCACRiD,kBAAmB,cACnBrB,aAAc,sBACdf,SAAUlC,EAAMW,KAAKoQ,UAAWpQ,MAChC6D,SAAU,SAAS1B,EAAQgD,GACvB,OAAOlG,EAAE4E,SAAS1B,EAAQgD,IAE9BZ,kBAAmB,SAASR,GACxB,OAAOA,GAEXD,eAAgB,SAASP,GACrB,IAAIQ,EAAOR,EAAOlB,QAAQ,wBAC1B,MAAO,CACH0B,KAAMA,EACNE,QAASV,EAAOlB,QAAQ,SACxBmC,MAAOT,EAAK2H,SAAS,SACrBjH,KAAMV,EAAK2H,SAAS,WAG5BpG,iBAAkB,SAAS7C,GACvB,OAAOA,EAAS4N,QAAQ,SAASzM,OAAS,EAAI,QAAU,UAE5D1D,UAAW,SAASiC,GAChB,OAAOgO,EAAOvB,QAAQrH,EAAW,CAAE+I,WAAYnO,EAAO,MAE1D/B,KAAM,SAASL,GACXoQ,EAAOvB,QAAQpH,EAAM,CACjB9C,cAAe3E,EAAQ2E,cACvB4L,WAAYvQ,EAAQoC,OAAO,GAC3BqB,WAAYzD,EAAQwD,OAAO,GAC3BoB,MAAO5E,EAAQ4E,MACfC,MAAO7E,EAAQ6E,MACf2L,YAAaxQ,EAAQuD,OACrBkN,eAAgBzQ,EAAQgF,aAGhC1E,KAAM,SAASN,GACX,IAAIyD,EAAavE,EAAEc,EAAQyD,YACvBiN,EAAmBjN,EAAWnB,QAAQ,KAM1C,OAJGoO,GAAoBA,EAAiB3D,KAAK,SACzCqD,EAAOO,uBAAuBD,GAG3BN,EAAOvB,QAAQnH,EAAM,CACxB/C,cAAe3E,EAAQ2E,cACvB4L,WAAYvQ,EAAQoC,OACpBwO,gBAAiB5Q,EAAQoF,YACzBI,MAAOxF,EAAQwF,MACfC,SAAU,SAASoL,GACf5Q,KAAKuF,MAAQqL,EACb7Q,EAAQyF,SAASoL,IAErBpN,WAAYzD,EAAQyD,WACpBqN,aAAc9Q,EAAQsD,YAG9B/C,QAAS,SAASP,GACd,IAAIoC,EAASpC,EAAQoC,OACjBgD,EAAcpF,EAAQoF,YACtB9B,EAAWtD,EAAQsD,SAEvB,SAASyN,EAAe3O,GAChBgO,EAAOpQ,QAAQ4J,YAAcwG,EAAOpQ,QAAQ4J,WAAW2D,eACvD6C,EAAO5C,sBAGX4C,EAAOvB,QAAQlH,EAAS,CACpBhD,cAAe3E,EAAQ2E,cACvB4L,WAAYnO,GAAUA,EAAO,GAC7BwO,gBAAiBxL,EAAY,GAC7B0L,aAAcxN,IAMN,QAAZA,EACA8M,EAAOvE,OAAOzJ,EAAQgD,EAAa2L,IAEnB,UAAZzN,EACAlB,EAASgO,EAAOjF,aAAa/I,EAAQgD,GAClB,SAAZ9B,IACPlB,EAASgO,EAAOY,YAAY5O,EAAQgD,IAGxC2L,EAAe3O,YAInB6N,GAAWE,IACnBA,EAASvK,UACT3F,KAAKkQ,SAAW,OAIxBQ,uBAAwB,SAASrH,GAC7BA,EAAK0E,GAAGnG,EAAQhB,EAAKC,GAAS,SAAUmK,GACpCA,EAAGzO,iBACH8G,EAAK4H,IAAIrJ,EAAQhB,EAAKC,OAI9BuJ,UAAW,SAAS/G,GAChB,OAAOrJ,KAAKkR,UAAUC,SAAS,CAC3BpN,KAAM/D,KAAKwK,SAASnB,GACpB+H,SAAUpR,KAAKD,WAIvB0M,WAAY,WACR,IAAIR,EAAOjM,KACPD,EAAUkM,EAAKlM,QACfsR,EAAgBhS,EAAM4M,EAAKqF,eAAgBrF,GAE3ClM,EAAQuG,iBAAmBvG,EAAQuG,UAAY4B,EAC/CnI,EAAQuG,SAAWA,EAASvG,EAAQuG,UAC5BvG,EAAQuG,WAChBvG,EAAQuG,SAAWkD,EACf,gBAAkB6H,EAAc,QAAhC,sIASRpF,EAAKsF,cAELtF,EAAKiF,UAAY,CACbM,cAAe,SAAUzN,GACrB,IAAIuF,EAAS,GACTmI,EAAa1N,EAAK+I,MAAQ,GAE9B,IAAK,IAAIA,KAAQ2E,EACVA,EAAWC,eAAe5E,IAAkB,UAATA,IAClCxD,GAAUwD,EAAO,KAAQ2E,EAAW3E,GAAQ,MAIpD,OAAOxD,GAEXqI,gBAAiB,SAAU1H,EAAOlG,GAC9B,IAAIuF,EAAS,SACToB,EAAQ3G,EAAK2G,MAUjB,OARIT,EAAM2H,YAAwB,IAAVlH,IACpBpB,GAAU,YAGVoB,GAAST,EAAMrG,OAAO,IACtB0F,GAAU,WAGPA,GAEXuI,SAAU,SAAS5H,EAAOlG,GACtB,IAAIuF,EAAS,GACToB,EAAQ3G,EAAK2G,MACboH,EAAc7H,EAAMrG,OAAS,EAcjC,OAZIqG,EAAM2H,YAAwB,IAAVlH,IACpBpB,GAAU,UAIVA,GADU,IAAVoB,GAAeA,GAASoH,EACd,QACHpH,GAASoH,EACN,QAEA,QAGPxI,GAEXyI,UAAW,SAAShO,EAAMiO,GACtB,IAAI1I,EAAS,OAcb,OAZI0I,IACA1I,GAAU,YAGO,IAAjBvF,EAAKiM,UACL1G,GAAU,sBAGQ,IAAlBvF,EAAKkO,WACL3I,GAAU,qBAGPA,GAEX4I,kBAAmB,SAASnO,GACxB,IAAIuF,EAAS,SAQb,OANsB,IAAlBvF,EAAKsL,SACL/F,GAAU,cAEVA,GAAU,gBAGPA,GAEX6I,gBAAiB,SAASlI,GACtB,IAAIwH,EAAa,GAMjB,OAJKxH,EAAM2H,aACPH,EAAa,gBAGVA,IAAiC,IAAnBxH,EAAMoF,SAAoB,wBAA0B,KAE7E+C,cAAe,SAASnI,GACpB,IAAI4H,EAAW,UAMf,OAJI5H,EAAM2H,aACNC,GAAY,qBAGTA,GAEXV,SAAU3H,EACN,qCAEJS,MAAOT,EACH,6HAIJzG,YAAayG,EACT,oBAAsB6H,EAAc,YAApC,wCAC4BA,EAAc,kBAD1C,2MAYJgB,YAAa7I,EACT,oDACiB6H,EAAc,OAD/B,2dAqBJtN,KAAMyF,EACF,4GAEItK,EAAM4N,KAAK,OAFf,+aAeJwF,QAAS9I,EACL,qEAEJ+I,MAAO/I,EACH,iHAMZ4F,MAAO,WACH,OAAOpP,KAAKF,QAAQ4B,KAAK,8BAG7B8Q,cAAe,SAASnI,GACpB,IAAItK,EAAUC,KAAKD,QAEnBA,EAAQsK,WAAaA,EAErBrK,KAAKsM,gBAAkB,GAEvBtM,KAAK+M,cAEDhN,EAAQ4J,YAAc5J,EAAQ4J,WAAW2D,eACzCtN,KAAKqK,WAAWoI,IAAI,SAAUxT,EAAEI,MAAMW,KAAKuN,oBAAqBvN,KAAM,OAGtEA,KAAKD,QAAQoN,UACbnN,KAAKqK,WAAWgD,SAIxBqF,gBAAiB,WACb1S,KAAK2S,gBAAkBtT,EAAMW,KAAK4S,QAAS5S,MAC3CA,KAAK6S,cAAgBxT,EAAMW,KAAK8S,OAAQ9S,MAExCA,KAAKqK,WAAW0I,KAAK7L,EAAQlH,KAAK2S,iBAClC3S,KAAKqK,WAAW0I,KAAK5L,EAAOnH,KAAK6S,gBAGrCG,kBAAmB,WACf,IAAI3I,EAAarK,KAAKqK,WAElBA,IACAA,EAAW4I,OAAO/L,EAAQlH,KAAK2S,iBAC/BtI,EAAW4I,OAAO9L,EAAOnH,KAAK6S,iBAItC9F,YAAa,SAASmG,GAClB,IAAIjH,EAAOjM,KACPD,EAAUkM,EAAKlM,QACfsK,EAAatK,EAAQsK,WAEzB,SAAS8I,EAAc9M,GACnB,IAAK,IAAIwI,EAAI,EAAGA,EAAIxI,EAAKzC,OAAQiL,IAC7BxI,EAAKwI,GAAGuE,gBAER/M,EAAKwI,GAAGtF,SAAS8D,QAEjB8F,EAAc9M,EAAKwI,GAAGtF,SAASyF,QAIvC3E,EAAa9D,EAAQ8D,GAAc,CAAEhE,KAAMgE,GAAeA,EAE1D4B,EAAK+G,oBAEA3I,EAAWgJ,SACZhJ,EAAWgJ,OAAS,CAChB,CAAEC,MAAO,QACT,CAAEA,MAAO,OACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,cAIjBrH,EAAK5B,WAAaA,EAAa3D,EAAuB6M,OAAOlJ,GAEzD6I,IACA7I,EAAWgD,QAEX8F,EAAc9I,EAAW2E,SAG7B/C,EAAKyG,mBAGTc,OAAQ,CACJjM,EACAC,EACAC,EACAC,EAEAC,EAEAV,EACAK,EACAR,EACAI,EACAF,EACAD,EACAc,GAGJ9H,QAAS,CACL0T,KAAM,WACNpJ,WAAY,GACZoF,UAAW,CACPG,OAAQ,CACJE,QAAS,kBACT4D,SAAU,KACX/D,SAAU,CACT+D,SAAU,MAGlBC,SAAU,CACNrB,QAAS,aACTsB,cAAe,kBACfrB,MAAO,SAEXtC,aAAa,EACbtG,YAAY,EACZwD,UAAU,EACVxM,YAAY,EACZyL,cAAc,EACd9F,SAAU,GACVuN,cAAe,MAGnBrH,WAAY,WACR,IAEIqC,EAAGyE,EAAOQ,EAFV7H,EAAOjM,KACPD,EAAUkM,EAAKlM,QAEfD,EAAUmM,EAAKnM,QAEnB,IAAK+O,KAAKrG,EACN8K,EAAQvT,EAAQyI,EAASqG,IACzBiF,EAAYhU,EAAQgN,KAAK5N,EAAM4N,KAAK+B,EAAI,YAEnCyE,GAASQ,IACVR,EAAQQ,GAGPR,IACDA,EAAQzE,GAGPtI,EAAQ+M,KACTA,EAAQ,CAACA,IAGbvT,EAAQyI,EAASqG,IAAMyE,GAK/BhC,eAAgB,SAASyC,GACrB,IAAIC,EAAgBhU,KAAKD,QAAQyI,EAASuL,IACtCE,EAAQD,EAAcpQ,OACtB0F,EAAS,oBAeb,OAbc,IAAV2K,EACA3K,GAAU,gBAAkByK,EAAY,OAExCzK,GAAU,iBACErK,EAAEiV,IAAIF,GAAe,SAASnP,GAC1B,MAAO,uBAAyB3F,EAAMiV,KAAKtP,GAAK,OACjDuP,KAAK,KAAO,KAE3B9K,GAAU,wCAA0C2K,EAAQ,cAGhE3K,GAAU,KAEHA,GAGX+K,WAAY,SAAStU,GACjB0G,EAAO6N,GAAGD,WAAWrW,KAAKgC,KAAMD,GAEhCC,KAAKuM,aAELvM,KAAKiN,YAELjN,KAAKyM,cAGT8H,SAAU,SAAUC,EAAWnL,GAC3B,OAAOrJ,KAAK4O,QAAQ4F,EAAW,CAC3BnL,KAAMA,EAAKhH,QAAQ4F,GAAM,MAIjCwM,YAAa,SAASC,EAAY1P,GAC9B,GAAK0P,GAAexV,EAAMyV,WAAWD,EAAW1F,MAIhD,IAAK,IAAIH,EAAI,EAAG+F,EAAQF,EAAW1F,OAAQH,EAAI+F,EAAMhR,OAAQiL,KACjC,IAArB+F,EAAM/F,GAAGmB,SACRhQ,KAAK6U,iBAAiBD,EAAM/F,GAAI7J,GAGhC4P,EAAM/F,GAAGtF,UACTvJ,KAAKyU,YAAYG,EAAM/F,GAAGtF,SAAUvE,IAKhD6P,iBAAkB,SAAUxL,EAAMrE,GAC9BqE,EAAKjC,GAAWpC,GAGpB8P,kBAAmB,SAASzL,GACxB,IACI0L,EAAUnR,EAEViL,EAHA5E,EAAQhE,EAASoD,GAEjB2L,GAAM,EAGV,GAAK/K,EAAMrG,SAIXmR,EAAWpL,EAAWM,EAAMV,YAE5B3F,EAASmR,EAASnR,OAEbA,GAAL,CAEO,GAAIA,EAAS,GAChB,IAAKiL,EAAI,EAAGA,EAAIjL,EAAQiL,IACpB,GAAIkG,EAASlG,GAAGS,SAAWyF,EAASlG,EAAE,GAAGS,SACrCyF,EAASlG,GAAGoG,eAAiBF,EAASlG,EAAE,GAAGoG,cAAe,CAC1DD,GAAM,EACN,YAIRA,GAAOD,EAAS,GAAGE,cAKvB,OAFA5L,EAAKyD,KAAK3E,EAAa6M,EAAMD,EAAS,GAAGzF,QAAU,SAE5C3F,EAAWN,GACbhD,KAAKgB,GAAgB2N,GACrBrG,KAAKtH,GAAgB2N,GACrBrG,KAAKvH,EAAS4N,GAAOD,EAAS,GAAGzF,WAG1C/B,oBAAqB,SAASlE,GAE1BA,EAAOA,GAAQrJ,KAAKsL,QAEpB,IACIuD,EACArD,EACAhB,EAHA0K,EAAWjP,EAASoD,GAAME,WAK9B,GAAI2L,EAAStR,OAAQ,CACjB,IAAKiL,EAAI,EAAGA,EAAIqG,EAAStR,OAAQiL,IAC7B7O,KAAKuN,oBAAoB2H,EAASrJ,GAAGgD,IAGzC,GAAIxF,EAAKc,GAAG,eACR,OAGJqB,EAAWxL,KAAK8U,kBAAkBzL,GAElCmB,EAAWxK,KAAKwK,SAASnB,GAErBmC,GAAYA,EAASmD,KAAKvH,GAC1BoD,EAAS8E,SAAU,EAEf9E,UACOA,EAAS8E,UAMhC6F,qBAAsB,SAAS9L,EAAM+L,GAEjC,GAAK/L,EAAKzF,OAAV,CAIKwR,GAEDpV,KAAKuN,oBAAoBlE,GAG7B,IACImC,EADAxB,EAAahK,KAAKkK,OAAOb,GAGzBW,EAAWpG,SACX5D,KAAK8U,kBAAkB9K,GAEvBwB,EAAWxB,EAAWT,SAAS,OAAO7H,KAAK,4CAE3C1B,KAAKqV,OAAQ,GACwB,IAAjC7J,EAASmD,KAAKtH,GACdrH,KAAKwK,SAASR,GAAYsL,IAAIlO,EAASoE,EAASmD,KAAKvH,IAGrDpH,KAAKwK,SAASR,GAAYsL,IAAIlO,GAAS,GAG3CpH,KAAKqV,OAAQ,EAEbrV,KAAKmV,qBAAqBnL,GAAY,MAI9CsE,gBAAiB,SAASpM,GACtB,IAAI+J,EAAOjM,KACPwL,EAAWvM,EAAEiD,EAAEqB,QACfgS,EAAY/J,EAASmD,KAAKvH,GAC1BiC,EAAOmC,EAASnJ,QAAQ4F,GACxBuC,EAAWxK,KAAKwK,SAASnB,GAEzBrJ,KAAKwV,iBAILhL,EAAS8E,SAAWiG,IACpB/K,EAAS8K,IAAIlO,EAASmO,GACtBlM,EAAKyD,KAAK3E,EAAaoN,GACvBvV,KAAKuU,SAASxN,EAAOsC,IAGrBmC,EAASrB,GAAG,YACZ8B,EAAKsI,SAASvN,EAAUqC,GACxB4C,EAAKwC,WAIbT,mBAAoB,SAAU9L,GAC1B,IAAImH,EAAOpK,EAAEiD,EAAEE,eAAeC,QAAQ4F,GAElCoB,EAAKc,GAAG,2BAIZnK,KAAKyV,OAAOpM,IAGhBgF,WAAY,SAASnM,GACjB,IAAI+J,EAAOjM,KACPoC,EAAgBnD,EAAEiD,EAAEE,eACpBiH,EAAOpK,EAAEiD,EAAEE,eAAeC,QAAQ4F,GAClCyN,EAAUxW,EAAM6B,QAAQ2U,QAExBrM,EAAKc,GAAG,6BAKPuL,EAAQC,MAAQD,EAAQE,OAASxT,EAAc+H,GAAG,eAC/C/H,EAAcuM,KAAKtH,IACnB4E,EAAKuJ,gBAAiB,EAEtBpT,EAAcuM,KAAKvH,GAAUhF,EAAcuM,KAAKvH,IAChDhF,EAAcwM,QAAQ1H,GAEtB9E,EAAc2L,GAAGnG,EAAQhB,GAAI,SAAU1E,GACnCA,EAAEK,oBAGN0J,EAAKuJ,gBAAiB,IAEtBpT,EAAc6O,IAAIrJ,EAAQhB,GAC1BqF,EAAKuJ,gBAAiB,IAI9BvJ,EAAK4J,aAAexM,EACpB4C,EAAK6J,QAAQzM,KAGjB0M,WAAY,SAAU1M,GAClB,OAAOA,GAAQA,EAAKzF,QAAUyF,EAAKc,GAAG,cAAgBd,EAAK3H,KAAK,SAAS8C,QAAQkH,SAASnD,IAG9F4F,OAAQ,WACJ,IAAI2H,EAAU9V,KAAKgW,SACfC,EAAcjW,KAAK6V,aAGnB3W,EAAM6B,QAAQU,QAIdwU,GAAeA,EAAYrS,SAC3BkS,EAAUG,GAGTjW,KAAK+V,WAAWD,KACjBA,EAAU9V,KAAK8V,WAGd9V,KAAK+V,WAAWD,KACjBA,EAAU9V,KAAKkW,aAAajX,MAGhCe,KAAK8V,QAAQA,KAGjBrH,MAAO,WACH,IAKII,EALAvD,EAAUtL,KAAKsL,QACf6K,EAAkB7K,EAAQ,GAC1B8K,EAAa,GACbC,EAAU,GACVC,EAAkBC,SAASD,gBAG/B,GACIH,EAAkBA,EAAgBnM,WAE9BmM,EAAgBK,aAAeL,EAAgBM,eAC/CL,EAAWM,KAAKP,GAChBE,EAAQK,KAAKP,EAAgBQ,kBAE5BR,GAAmBG,GAI5B,IAFApX,EAAM0X,aAAatL,GAEduD,EAAI,EAAGA,EAAIuH,EAAWxS,OAAQiL,IAC/BuH,EAAWvH,GAAG8H,UAAYN,EAAQxH,IAI1CT,MAAO,WACHpO,KAAK8V,UAAUpU,KAAK,SAAS8C,QAAQ7C,YAAY,oBAGrDkV,SAAU,SAASxN,GACf,OAAQA,EAAKE,SAAS,OAAOA,SAAS,SAASmC,SAASnD,IAG5D2B,OAAQ,SAASb,GACb,IAEIC,EACAwN,EAHAC,EAAY,iBACZC,EAAS,oBAIF3N,GAAQnB,IACfmB,EAAOrJ,KAAKF,QAAQ4B,KAAK2H,IAGxBN,EAAaM,KACdA,EAAOA,EAAK,IAGhByN,EAAWE,EAAO/L,KAAK5B,EAAKrH,WAE5B,GACIqH,EAAOA,EAAKW,WAERgN,EAAO/L,KAAK5B,EAAKrH,aACb8U,EACAxN,EAASD,EAETyN,GAAW,UAGbC,EAAU9L,KAAK5B,EAAKrH,aAAesH,GAE7C,OAAOrK,EAAEqK,IAGb4M,aAAc,SAAS7M,GACnB,IAEIC,EAFA2C,EAAOjM,KACPqP,EAAWpD,EAAKgL,UAAU5N,GAG9B,SAAS6N,EAAW7N,GAChB,MAAOA,EAAKzF,SAAWyF,EAAKkG,OAAO3L,OAC/ByF,EAAO4C,EAAK/B,OAAOb,GAGvB,OAAIA,EAAKkG,OAAO3L,OACLyF,EAAKkG,OAELlG,EAiBf,OAbKA,EAAKzF,QAAWyF,EAAKc,GAAG,YAElBkF,GACP/F,EAASrD,EAASoD,GAAME,WAAW/E,QAG9B8E,EAAO1F,SACR0F,EAAS4N,EAAW7N,KAGxBC,EAAS4N,EAAW7N,GATpBC,EAAS2C,EAAKS,KAAKnD,WAAWsC,GAAG,GAY9BvC,GAGX6N,iBAAkB,SAAS9N,GACvB,IACI+N,EACA9N,EAFA2C,EAAOjM,KAIX,IAAKqJ,EAAKzF,QAAUyF,EAAKgO,OAAOzT,OAAQ,CAEhC0F,EADAD,EAAKzF,OACIyF,EAAKgO,OAELpL,EAAKS,KAAKnD,WAAW9E,OAGlC,MAAOwH,EAAKgL,UAAU3N,GAAS,CAG3B,GAFA8N,EAAYnR,EAASqD,GAAQC,WAAW9E,QAEnC2S,EAAUxT,OACX,MAGJ0F,EAAS8N,QAGb9N,EAAS2C,EAAK/B,OAAOb,IAASA,EAGlC,OAAOC,GAGX2E,SAAU,SAAS/L,GACf,IAEIqB,EAFA0I,EAAOjM,KACPsX,EAAMpV,EAAEqV,QAERC,EAAUvL,EAAK6J,UACfzG,EAAWpD,EAAKgL,UAAUO,GAC1BhM,EAAWgM,EAAQ9V,KAAK,uBAAuB8C,QAAQ9C,KAAK,aAC5D+V,EAAMvY,EAAM6B,QAAQ2W,MAAMzL,EAAKnM,SAE/BoC,EAAEqB,QAAUrB,EAAEE,iBAIZqV,GAAOH,GAAO3Q,EAAKgR,OAAWF,GAAOH,GAAO3Q,EAAKiR,KAC/CvI,EACA9L,EAAS0I,EAAKiK,aAAasB,GACnBA,EAAQ9V,KAAK,SAAS8C,QAAQkH,SAASnD,IAC/C0D,EAAK2D,OAAO4H,IAEPC,GAAOH,GAAO3Q,EAAKiR,MAAUH,GAAOH,GAAO3Q,EAAKgR,MACrDtI,IAAamI,EAAQ9V,KAAK,SAAS8C,QAAQkH,SAASnD,GACpD0D,EAAK0D,SAAS6H,IAEdjU,EAAS0I,EAAK/B,OAAOsN,GAEhBvL,EAAK4K,SAAStT,KACfA,EAASvE,IAGVsY,GAAO3Q,EAAKkR,KACnBtU,EAAS0I,EAAKiK,aAAasB,GACpBF,GAAO3Q,EAAKmR,GACnBvU,EAAS0I,EAAKkL,iBAAiBK,GACxBF,GAAO3Q,EAAKoR,KACnBxU,EAAS0I,EAAKiK,aAAajX,KACpBqY,GAAO3Q,EAAKqR,IACnBzU,EAAS0I,EAAKkL,iBAAiBlY,KACxBqY,GAAO3Q,EAAKsR,OAAUT,EAAQ9V,KAAK,SAAS8C,QAAQkH,SAASnD,GAM7D+O,GAAO3Q,EAAKuR,UAAY1M,EAAS5H,SACpC4T,EAAQ9V,KAAK,SAAS8C,QAAQkH,SAASnD,KACvCiD,EAASmD,KAAKvH,GAAUoE,EAASmD,KAAKvH,IACjCf,KAAKgB,GAAe,GACpBsH,KAAKtH,GAAe,GAEzB4E,EAAKqC,gBAAgB,CAAE/K,OAAQiI,KAEnCjI,EAASiU,GAbJA,EAAQ9V,KAAK,SAAS8C,QAAQkH,SAAS,qBACnCO,EAAKsI,SAASzN,EAAQ0Q,IACvBvL,EAAK+J,OAAOwB,GAcpBjU,IACArB,EAAEK,iBAEEiV,EAAQ,IAAMjU,EAAO,KACrB0I,EAAKsI,SAASvN,EAAUzD,GACxB0I,EAAK6J,QAAQvS,OAKzB2K,UAAW,SAAUhM,GACjB,IAGIiW,EAHAlM,EAAOjM,KACPoY,EAAQ,IACRC,EAAcpM,EAAK6J,UAAUwC,IAAI,GAEjChB,EAAMpV,EAAEoV,IACRiB,EAA6B,IAAfjB,EAAI1T,OAEjB2U,IAIAtM,EAAKuM,SACNvM,EAAKuM,OAAS,IAGlBvM,EAAKuM,QAAUlB,EACfmB,aAAaxM,EAAKyM,aAClBzM,EAAKyM,YAAcC,YAAW,WAC1B1M,EAAKuM,OAAS,KACfJ,GAEHD,EAAeE,GACCpM,EAAK2M,iBACDpS,MAAM6F,UAAUpH,QAAQjH,KAAKiO,EAAKnM,QAAQ4B,KAAK,WAC/C2W,GAAcpM,EAAKuM,QAGlCL,EAAavU,SACduU,EAAelM,EAAK2M,kBAAkB,EAAG3M,EAAKuM,SAG9CL,EAAaG,IAAI,IAAMH,EAAaG,IAAI,KAAOD,IAC/CpM,EAAKsI,SAASvN,EAAUmR,GACxBlM,EAAK6J,QAAQqC,MAIrBS,iBAAkB,SAASC,EAAYpQ,GACnC,IAAI3I,EAAUE,KAAKF,QACfgZ,EAAYhZ,EAAQ4B,KAAK,SAAShB,QAAO,SAASmO,EAAG/O,GACrD,OAAQ+O,EAAIgK,GACJ5Z,EAAEa,GAASqK,GAAG,aACoC,IAAlDlL,EAAEa,GAAS2I,OAAOqC,cAAc7F,QAAQwD,MAGpD,OAAOqQ,EAAUjN,GAAG,GAAGxJ,QAAQ4F,IAGnC6F,OAAQ,SAAU5L,GACd,IAII6W,EAJA9M,EAAOjM,KACPqJ,EAAOpK,EAAEiD,EAAEE,eACX4W,EAAW9S,EAAamD,EAAKhH,QAAQ4F,IACrCgR,EAAO5P,EAAKyD,KAAK,QAIjBiM,EADAE,EACyB,KAARA,GAAeA,EAAKhU,QAAQ,IAAMjF,KAAKF,QAAQhC,GAAK,MAAQ,EAE5Dkb,EAASpV,SAAWoV,EAASzP,WAAW3F,OAGzDmV,GACA7W,EAAEK,iBAGD8G,EAAKqC,SAAS,sBAAyBO,EAAKsI,SAASzN,EAAQuC,IAC9D4C,EAAK+J,OAAO3M,IAIpBsD,SAAU,WACN,IAEIrB,EAASoB,EAFTT,EAAOjM,KACPF,EAAUmM,EAAKnM,QAEfoZ,EAAiB,sBAEjBpZ,EAAQqK,GAAG,OACXmB,EAAUxL,EAAQqZ,KAAK,WAAWjP,SAClCwC,EAAO5M,IAEPwL,EAAUxL,EACV4M,EAAOpB,EAAQ/B,SAAS,MAAMsC,GAAG,IAGrCI,EAAKX,QAAUA,EAAQQ,SAASoN,GAChCjN,EAAKS,KAAOA,GAGhB0M,iBAAkB,WACd,OAAOpZ,KAAKF,QAAQ4B,KAAK,qBAAqBW,QAAQ4F,IAG1D2E,OAAQ,SAAS7I,GACb,IAAIkI,EAAOjM,KACP4R,EAAa7N,EAAK2H,SAAS3D,GAC3BkC,EAAQ,CACJ2H,WAAYA,EACZvC,SAAUuC,GAAc3F,EAAKgL,UAAUlT,IAE3CsV,EAAetV,EAAKwF,SAAS,MAEjC8P,EACKvN,SAASG,EAAKiF,UAAUkB,cAAcnI,IACtCvH,IAAI,UAAWuH,EAAMoF,SAAW,GAAK,QAEtCuC,GACAyH,EAAavM,KAAK,OAAQ,SAG9Bb,EAAKqN,OAAOD,EAAcpP,IAG9BqP,OAAQ,SAASD,EAAcE,GAC3B,IAEIzP,EAFAmC,EAAOjM,KACP4U,EAAQyE,EAAa9P,SAAS,MAGlCgQ,EAAYja,EAAO,CAAEsE,OAAQgR,EAAMhR,QAAU2V,GAE7C3E,EAAM4E,MAAK,SAAS3K,EAAGxF,GACnBA,EAAOpK,EAAEoK,GAETS,EAAW,CAAEY,MAAOmE,EAAGQ,SAAUpD,EAAKgL,UAAU5N,IAEhDgC,GAAehC,GAEf4C,EAAKwN,mBAAmBpQ,EAAMkQ,EAAWzP,GAGzCmC,EAAKW,OAAOvD,OAIpBkI,YAAa,WACT,IAEImI,EAFA3Z,EAAUC,KAAKD,QACf4J,EAAa5J,EAAQ4J,WAGrBA,IACA+P,EAAkB,6IAGd/P,EAAW8J,OACXiG,GAAmB,UAAY/P,EAAW8J,KAAO,KAGrDiG,GAAmB,iGAEnB/P,EAAarK,EAAO,CAChBgH,SAAUoT,GACX3Z,EAAQ4J,mBAEAA,EAAWrD,UAAY4B,IAC9ByB,EAAWrD,SAAWA,EAASqD,EAAWrD,WAG9CvG,EAAQ4J,WAAaA,IAI7B8P,mBAAoB,SAAUpQ,EAAMkQ,EAAWzP,GAC3C,IAAIwB,EAAUjC,EAAKE,SAAS,OACxBU,EAAQZ,EAAKE,SAAS,MACtB2H,EAAYlR,KAAKkR,UAErB,IAAI7H,EAAKqC,SAAS,cAAlB,CAIA5B,EAAWA,GAAY,GACvBA,EAASuF,gBAAkBvF,EAASuF,UAAYvH,EAAYgC,EAASuF,SAAWrP,KAAKiX,UAAU5N,GAC/FS,EAASY,aAAeZ,EAASY,OAAS5C,EAAYgC,EAASY,MAAQrB,EAAKqB,QAC5EZ,EAASkG,eAAiBlG,EAASkG,SAAWlI,EAAYgC,EAASkG,SAAW1E,EAAQ/B,SAAS,SAASmC,SAAS,oBAEjH6N,EAAYA,GAAa,GACzBA,EAAU3H,kBAAoB2H,EAAU3H,YAAc9J,EAAYyR,EAAU3H,WAAavI,EAAKa,SAASA,SAASwB,SAAS3D,GACzHwR,EAAU3V,cAAgB2V,EAAU3V,QAAUkE,EAAYyR,EAAU3V,OAASyF,EAAKa,SAASX,WAAW3F,OAGtGyF,EAAK1H,YAAY,kBACZmK,SAASoF,EAAUS,gBAAgB4H,EAAWzP,IAGnDwB,EAAQ3J,YAAY,qBACZmK,SAASoF,EAAUW,SAAS0H,EAAWzP,IAG/C,IAAI6P,EAAWrO,EAAQ/B,SAAS,SAC5ByI,EAAS2H,EAAS,IAA4C,KAAtCA,EAAS,GAAGxQ,SAAS2B,cACjD6O,EAAShY,YAAY,gDAChBmK,SAASoF,EAAUa,UAAUjI,EAAUkI,KAGxC/H,EAAMrG,QAA2C,QAAjCyF,EAAKyD,KAAK,uBAC1BxB,EAAQ/B,SAAS,WAAW5H,YAAY,2BACnCmK,SAASoF,EAAUgB,kBAAkBpI,IAE1CG,EAAM6B,SAAS,cAKvB8N,cAAe,SAAShF,EAAOiF,GAG3B,IAFA,IAAI5N,EAAOjM,KACPoP,EAAQnD,EAAKnM,QAAQ4B,KAAKkT,GACrB/F,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC9BgL,EAAS7b,KAAKiO,EAAM4C,EAAG5P,EAAEmQ,EAAMP,IAAIxM,QAAQ4F,KAInDuC,SAAU,SAASnB,GACf,IAAIyF,EAAM7P,EAAEoK,GAAMhH,QAAQ4F,GAAM6E,KAAK5N,EAAM4N,KAAK,QAC5CzC,EAAarK,KAAKqK,WAEtB,OAAOA,GAAcA,EAAWyP,SAAShL,IAG7CiL,UAAW,SAAS1Q,GAChB,IAAIyF,EAAM7P,EAAEoK,GAAMhH,QAAQ4F,GAAM6E,KAAK5N,EAAM4N,KAAK,QAC5CzC,EAAarK,KAAKqK,WAEtB,OAAOA,GAAcrK,KAAKsM,gBAAgBwC,IAG9CkL,YAAa,SAASlQ,EAAUY,EAAOV,EAAYiQ,EAAgBC,GAC/D,IAGIC,EAKG9Q,EAAMwF,EAAG9K,EAAqBoH,EAAYiM,EAR7CnL,EAAOjM,KACPiK,EAAQhE,EAAS+D,GACjBoQ,EAAqBnQ,EAAMV,WAAW3F,OAAS,EAE/C2V,EAAY,CACR3H,WAAY5H,EAAW0B,SAAS3D,GAChCsH,UAAW6K,EACXtW,OAAQwW,GACMC,EAAW,GAC7BzO,EAAS,SAAS7H,EAAMkG,GACpBlG,EAAKpB,SAASsH,IAGtB,IAAK4E,EAAI,EAAGA,EAAI/E,EAASlG,OAAQiL,IAC7B9K,EAAO+F,EAAS+E,GAEhB9K,EAAK2G,MAAQA,EAAQmE,EAErBwL,GAAYpO,EAAKqO,YAAY,CACzBrQ,MAAOsP,EACPxV,KAAMA,IAMd,GAFAsF,EAAOpK,EAAEob,GAEJhR,EAAKzF,OAAV,CAiCA,IA7BAqI,EAAKsO,QAAQ,WAAW,WACpB,MAAO,CACHC,SAAUnR,EAAKiP,MACfjS,KAAMyD,EAASoK,KAAI,SAASnQ,GACxB,MAAO,CAAEyG,SAAUzG,UAK1BkG,EAAMrG,SACPqG,EAAQhL,EAAEgN,EAAKwO,aAAa,CACxBxQ,MAAOsP,KACP5W,SAASqH,IAGjBiQ,EAAe5Q,EAAMY,GAEjBD,EAAW0B,SAAS,YACpBL,GAAerB,GACfiC,EAAKwN,mBAAmBzP,EAAYuP,EAAW,CAAClK,UAAW6K,KAG/D/O,EAAa9B,EAAKgO,OAAO7S,QACzB4S,EAAY/N,EAAKkG,OAAO9K,OAExBwH,EAAKwN,mBAAmBtO,EAAY,GAAI,CAACkE,SAAqD,QAA3ClE,EAAW2B,KAAK5N,EAAM4N,KAAK,eAC9Eb,EAAKwN,mBAAmBrC,EAAW,GAAI,CAAC/H,SAAoD,QAA1C+H,EAAUtK,KAAK5N,EAAM4N,KAAK,eAGvE+B,EAAI,EAAGA,EAAI/E,EAASlG,OAAQiL,IAC7B9K,EAAO+F,EAAS+E,GAEZ9K,EAAK2W,cACLP,EAAepW,EAAKwF,SAASlD,OAEzB8T,EAAavW,QACbqI,EAAK+N,YAAYG,EAAcpW,EAAK2G,MAAOrB,EAAKwC,GAAGgD,GAAIjD,GAAS7H,EAAKsL,WAKjF,OAAOhG,IAGXsR,aAAc,SAASvL,EAAOkE,GAC1B,IACIzE,EAAGxF,EAAMuR,EAAa7W,EAAMwR,EAAWsF,EADvC5O,EAAOjM,KAEP8a,EAAU,CAAE1J,SAAUnF,EAAKlM,QAASgE,KAAMA,GAC1CgX,EAAkB,YAATzH,GAAgC,WAATA,EAEpC,SAAS0H,EAAgBtO,EAAMkE,GACvBlE,EAAKvC,GAAG,aACRuC,EAAKhL,KAAK,gCAAgCoL,KAAK3E,EAAayI,GAGhElE,EAAKhL,KAAK,4DACLiN,KAAKvH,EAASwJ,GACdvK,KAAKgB,GAAe,GACpBsH,KAAKtH,GAAe,GAG7B,GAAa,YAATiM,EACAvP,EAAOqL,EAAM,GAEb/F,EAAO4C,EAAKgP,UAAUlX,EAAK+K,KAAKpN,KAAK,SAAS8C,QACrC7C,YAAY,iBACZ2C,YAAY,mBAAoBP,EAAKuP,IACrC4H,MAELnX,EAAKuP,IACLrH,EAAK6J,QAAQzM,GAGjBA,EAAKyD,KAAK1E,IAAgBrE,EAAKuP,QAC5B,CACH,IAAIkH,EAAWvb,EAAEiV,IAAI9E,GAAO,SAASrL,GACjC,OAAOkI,EAAKgP,UAAUlX,EAAK+K,KAAKvF,SAAS,UAO7C,IAJIwR,GACA9O,EAAKsO,QAAQ,WAAW,WAAa,MAAO,CAAEC,SAAUA,MAGvD3L,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC1BiM,EAAQ/W,KAAOA,EAAOqL,EAAMP,GAC5B+L,EAAcJ,EAAS3L,GACvBxF,EAAOuR,EAAY1Q,SAEf6Q,IACI7b,EAAM+T,QACN/T,EAAM+T,OAAO2H,GAEjBA,EAAYrR,SAAS,SAChB4R,KAAKlP,EAAKiF,UAAUnO,YAAY+X,KAGrCxH,GAASlM,GACTmO,EAAYxR,EAAKuP,GAEjB0H,EAAgBJ,EAAarF,GAE7BlM,EAAKyD,KAAK3E,EAAaoN,GAEnBtJ,EAAKlM,QAAQ4J,WAAW2D,gBACxB0N,EAAgB3R,EAAKE,SAAS,YAAagM,GAE3CtJ,EAAKwI,YAAY1Q,EAAKwF,SAAUgM,GAEhCtJ,EAAKkJ,qBAAqB9L,KAEd,YAATiK,EACPrH,EAAKmP,QAAQ/R,EAAMtF,EAAMA,EAAKuP,IACd,WAATA,IACPjK,EAAK3H,KAAK,4CAA4CiN,KAAK,YAAa5K,EAAKuP,IAE7EuH,GAAe3U,EAAamD,GAAMc,GAAGnC,GAErCqB,EAAKgS,WAAWhT,GAEXtE,EAAKuP,KACFvP,EAAKkO,UACLlO,EAAKuR,IAAI,YAAY,GAGrBvR,EAAKsL,UACLtL,EAAKuR,IAAI,YAAY,GAGzBuF,GAAc,EACdxR,EAAKyD,KAAK1E,GAAc,GACnB0E,KAAKzE,GAAc,IAG5B4D,EAAKwN,mBAAmBpQ,EAAM,GAAI,CAAE2G,QAASjM,EAAKuP,GAAQjE,UAAWwL,KAGrED,EAAYhX,QACZ5D,KAAK4O,QAAQ,aAAc,CAAE7K,KAAM6W,EAAavU,KAAMtC,EAAMuX,GAAIlc,IAIpE2b,GACA9O,EAAKsO,QAAQ,WAAW,WACpB,MAAO,CACHC,SAAUA,EACVnU,KAAMpH,EAAEiV,IAAI9E,GAAO,SAASrL,GACxB,MAAO,CAAC,CAAEyG,SAAUzG,aAQ5CwX,aAAc,SAAS7Q,EAAO0E,EAAOpF,GACjC,IAAIC,EAAQhE,EAAS+D,GACjBT,EAAWU,EAAMV,WACjB2Q,GAAala,KAAKiX,UAAUjN,GAEhC,GAAGhK,KAAKF,UAAYkK,EAAW,CAC3B,IAAIwR,EAAYxb,KAAKqK,WAAWhE,OAC5BoV,EAAYzb,KAAKqK,WAAW2E,OAC5B0M,EAAYD,EAAU7X,OAAS4X,EAAU5X,OAAS6X,EAAYD,EAClE9Q,EAAQgR,EAAUzW,QAAQmK,EAAM,SACzBA,EAAMxL,SACb8G,EAAQ0E,EAAM,GAAGlF,SAASjF,QAAQmK,EAAM,YAGjC1E,GAAS5C,IAChB4C,EAAQnB,EAAS3F,QAGrB5D,KAAKga,YAAY5K,EAAO1E,EAAOV,GAAY,SAASjG,EAAMkG,GAElDS,GAASnB,EAAS3F,OAClBG,EAAKpB,SAASsH,GAEdlG,EAAKmH,aAAa3B,EAASsC,GAAGnB,MAEnCwP,GAEEA,IACDla,KAAKyZ,mBAAmBzP,EAAY,GAAI,CAACqF,UAAW6K,IACpDjU,EAAS+D,GAAYtH,IAAI,UAAW,WAI5CiZ,iBAAkB,SAAS3R,EAAYoF,EAAO1E,GAC1C,IAAImE,EAAGtF,EAAUqS,EACb7b,EAAUC,KAAKD,QACfqM,EAAerM,EAAQqM,aACvBkB,EAAgBvN,EAAQ4J,YAAc5J,EAAQ4J,WAAW2D,cAI7D,GAFArH,EAAS+D,GAAY6R,QAEhBzM,EAAMxL,OAWP,IARA5D,KAAKub,aAAa7Q,EAAO0E,EAAOpF,GAEhCT,EAAWtD,EAAS+D,GAAYT,WAE5B6C,GAAgBkB,GAChBtN,KAAKmV,qBAAqB5L,EAAS9E,QAGlCoK,EAAI,EAAGA,EAAItF,EAAS3F,OAAQiL,IAC7B+M,EAAQrS,EAASsC,GAAGgD,GACpB7O,KAAK4O,QAAQ,aAAc,CACvB7K,KAAM6X,EAAMrS,SAAS,OACrBlD,KAAM+I,EAAMP,GACZyM,GAAIlc,SAfZiM,GAAerB,IAqBvB8R,aAAc,SAAS1M,GACnB,IAAI2M,EAAY/b,KAAKya,aAAa,CAC1BrL,MAAOA,EACPnF,MAAO,CACH2H,YAAY,EACZvC,UAAU,KAItB,GAAIrP,KAAK0M,KAAK9I,QAAU5D,KAAK0M,KAAK,GAAGsP,cAAe,CAChDhc,KAAKic,cAAc,WAEnB,IAAIhS,EAAQhL,EAAE8c,GAEd/b,KAAK0M,KACAI,KAAK,QAAS7C,EAAM6C,KAAK,UACzBqO,KAAKlR,EAAMkR,aAEhBnb,KAAK0M,KAAO1M,KAAKsL,QAAQ6P,KAAKY,GAAWxS,SAAS,MAItD,IADA,IAAIiR,EAAWxa,KAAK0M,KAAKnD,SAAS,WACzBsF,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC9B7O,KAAK4O,QAAQ,aAAc,CACvB7K,KAAMyW,EAAS3O,GAAGgD,GAClBxI,KAAM+I,EAAMP,GACZyM,GAAIlc,IAGZY,KAAKic,cAAc,YAGvBrJ,QAAS,SAAS1Q,GACd,IAOI2M,EAPAxF,EAAOnH,EAAEmH,KACT6S,EAASha,EAAEga,OACX9M,EAAQlN,EAAEkN,MACVpF,EAAahK,KAAKsL,QAClBvL,EAAUC,KAAKD,QACfqM,EAAerM,EAAQqM,aACvBkB,EAAgBvN,EAAQ4J,YAAc5J,EAAQ4J,WAAW2D,cAG7D,IAAItN,KAAKqV,MAAT,CAIA,IAAKxG,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC1B7O,KAAKsM,gBAAgB8C,EAAMP,GAAGC,KAAOM,EAAMP,GAG/C,GAAI3M,EAAEoR,MAAO,CACT,IAAKlE,EAAM,KAAOA,EAAM,GAAG+M,MACvB,OAGJ,OAAOnc,KAAK2a,aAAavL,EAAOlN,EAAEoR,OAQtC,GALIjK,IACAW,EAAahK,KAAKib,UAAU5R,EAAKyF,KACjC9O,KAAKoN,UAAUpD,GAAY,IAG3BsD,GAA2B,UAAV4O,EAAoB,CACrC,IAAIE,GAAS,EAEb,IAAKvN,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC1B,GAAI,YAAaO,EAAMP,GAAI,CACvBuN,GAAS,EACT,MAIR,IAAKA,GAAU/S,GAAQA,EAAKiG,QACxB,IAAKT,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC1BO,EAAMP,GAAGS,SAAU,EAkB/B,GAbc,OAAV4M,EACAlc,KAAKub,aAAarZ,EAAEwI,MAAO0E,EAAOpF,GACjB,UAAVkS,EACPlc,KAAKqc,QAAQrc,KAAKib,UAAU7L,EAAM,GAAGN,MAAM,GAC1B,cAAVoN,EACPlc,KAAK2a,aAAavL,GACD,cAAV8M,EACPlc,KAAK2b,iBAAiB3R,EAAYoF,EAAOlN,EAAEwI,QAE3C1K,KAAK8b,aAAa1M,GAClBpP,KAAKF,QAAQgN,KAAK,aAAa,IAGrB,UAAVoP,EACA,IAAKrN,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,MACrBzC,GAAgBgD,EAAMP,GAAGQ,UAAYD,EAAMP,GAAGyN,UAC/ClN,EAAMP,GAAG0N,OAKrBvc,KAAKsL,QAAQ5J,KAAK,OAAOoL,KAAK,OAAQ,QACtC9M,KAAK4O,QAAQjH,EAAW,CAAE0B,KAAMA,EAAOW,EAAahL,IAChDgB,KAAKqK,WAAW3J,UAAYV,KAAKD,QAAQ4J,WAAW2D,eACpDtN,KAAKuN,oBAAoBvD,KAIjC8I,OAAQ,SAAS5Q,GACb,IAAImH,EAAOnH,EAAEmH,MAAQrJ,KAAKib,UAAU/Y,EAAEmH,KAAKyF,KACvC0N,EAAYxc,KAAKkR,UAAUqB,MAAM,CAAEoB,SAAU3T,KAAKD,QAAQ4T,WAE1DtK,GACArJ,KAAKoN,UAAU/D,GAAM,GACrBrJ,KAAKiX,UAAU5N,GAAM,GACrBlD,EAASkD,GAAMyC,SAAS,cACxB5J,EAAEmH,KAAKtL,QAAO,KAEdiC,KAAKoN,WAAU,GACfpN,KAAKqK,WAAWhE,KAAK,IACrBrG,KAAKF,QAAQqb,KAAKqB,KAI1BhO,cAAe,SAAStM,GACpBA,EAAEK,iBAEFvC,KAAKqK,WAAWgD,SAGpBuC,OAAQ,SAAUgF,GACd5U,KAAK4Z,cAAchF,GAAO,SAAUlK,EAAO3G,GACvC/D,KAAKyV,OAAO1R,GAAM,OAI1B4L,SAAU,SAAUiF,GAChB5U,KAAK4Z,cAAchF,GAAO,SAAUlK,EAAO3G,GACvC/D,KAAKyV,OAAO1R,GAAM,OAI1B0Y,OAAQ,SAAU7H,EAAO6H,GACA,mBAAV7H,GACP6H,EAAS7H,EACTA,EAAQ5U,KAAKoP,SAEbqN,EAA6B,GAApBC,UAAU9Y,UAAgB6Y,EAGvCzc,KAAK4Z,cAAchF,GAAO,SAAUlK,EAAO3G,GACvC/D,KAAKwK,SAASzG,GAAMuR,IAAI,UAAWmH,OAI3C3G,QAAS,SAASzM,GACd,IAAI4C,EAAOjM,KACP8V,EAAU7J,EAAK0Q,SACf7c,EAAUmM,EAAKnM,QACfhC,EAAKmO,EAAKuB,QAEd,OAAIkP,UAAU9Y,OAAS,GAAKyF,GAAQA,EAAKzF,QACjCkS,IACIA,EAAQ,GAAGhY,KAAOA,GAClBgY,EAAQuF,WAAW,MAGvBvF,EAAQpU,KAAK,SAAS8C,QAAQ7C,YAAY,oBAG9CmU,EAAU7J,EAAK0Q,SAAW1d,EAAEoK,EAAMvJ,GAASuC,QAAQ4F,GAEnD6N,EAAQpU,KAAK,SAAS8C,QAAQsH,SAAS,mBAEvChO,EAAKgY,EAAQ,GAAGhY,IAAMA,OAElBA,IACAmO,EAAKX,QAAQ+P,WAAW,yBACxBvF,EAAQhJ,KAAK,KAAMhP,GACnBmO,EAAKX,QAAQwB,KAAK,wBAAyBhP,OAM9CgY,IACDA,EAAU7J,EAAKiK,aAAajX,MAGzB6W,IAGXE,OAAQ,SAAU3M,GACd,IAAI4C,EAAOjM,KACPF,EAAUmM,EAAKnM,QAEnB,IAAK4c,UAAU9Y,OACX,OAAO9D,EAAQ4B,KAAK,qBAAqBW,QAAQ4F,GAGrDoB,EAAOpK,EAAEoK,EAAMvJ,GAASuC,QAAQ4F,GAEhCnI,EAAQ4B,KAAK,qBAAqB8X,MAAK,WACnC,IAAIhP,EAAWyB,EAAKzB,SAASxK,MACzBwK,GACAA,EAAS8K,IAAI,YAAY,UAClB9K,EAASyH,UAEhBhT,EAAEe,MAAM2B,YAAY,uBAIxB0H,EAAKzF,SACLqI,EAAKzB,SAASnB,GAAMiM,IAAI,YAAY,GACpCrJ,EAAK4J,aAAexM,GAGxB4C,EAAK2C,QAAQ1H,IAGjBkU,QAAS,SAAS/R,EAAMmB,EAAUoF,GAC9B,IAGI7R,EAHAgC,EAAUC,KAAKD,QACfiZ,EAAW9S,EAAamD,GACxBuT,EAAYhN,EAAS,SAAW,WAGhCoJ,EAAS3S,KAAK,eAIlBtI,EAASyM,GAAYA,EAASzM,SAE1B6R,IAAW7R,GACPgC,EAAQqM,cACRpM,KAAKoN,UAAU/D,GAAM,GAGzB2P,EAAS9T,SACTsF,EAAS+R,SAETvc,KAAKyZ,mBAAmBpQ,EAAM,GAAI,CAAEgG,SAAUO,IAEzCA,GACDoJ,EAAStW,IAAI,SAAUsW,EAAS6D,UAAUna,IAAI,UAGlDsW,EACK8D,WAAU,GAAM,GAChBC,aAAazd,EACV,CAAE0d,OAAO,GACTjd,EAAQ0P,UAAUmN,GAClB,CAAEK,SAAU,WACJrN,GACAoJ,EAAStW,IAAI,SAAU,WAQ/C+S,OAAQ,SAAUpM,EAAMuG,GACpBvG,EAAOpK,EAAEoK,GAEJlD,EAASkD,GAAMc,GAAG,gCAIC,GAApBuS,UAAU9Y,SACVgM,GAAU5P,KAAKiX,UAAU5N,IAG7BrJ,KAAKiX,UAAU5N,EAAMuG,KAGzBjK,QAAS,WACL,IAAIsG,EAAOjM,KAEXyG,EAAO6N,GAAG3O,QAAQ3H,KAAKiO,GAEvBA,EAAKX,QAAQ2F,IAAIrK,GACjBqF,EAAKX,QAAQ5J,KAAK,iCAAiCuP,IAAIrK,GACvDqF,EAAK4B,cAAgB,KAErB5B,EAAK+G,oBAED/G,EAAKiE,UACLjE,EAAKiE,SAASvK,UAGlBsG,EAAKK,gBAAkB,GAEvBpN,EAAMyG,QAAQsG,EAAKnM,SAEnBmM,EAAKS,KAAOT,EAAKX,QAAUW,EAAKnM,QAAU,MAG9CmX,UAAW,SAAS5N,EAAMrE,EAAOkY,GAC7B,IACI1S,EADA0E,EAAehQ,EAAM4N,KAAK,YAE1BuC,EAAWrK,EACX4X,EAAYvN,EAAW,SAAW,WAEtC,GAAwB,GAApBqN,UAAU9Y,OAEV,OADA4G,EAAWxK,KAAK+Z,UAAU1Q,GACS,SAA5BA,EAAKyD,KAAKoC,IAA6B1E,GAAYA,EAAS6E,SAGvE7E,EAAWxK,KAAKwK,SAASnB,GAErBnD,EAAamD,GAAMhD,KAAK,eAIxB6W,GAAUld,KAAKuU,SAASqI,EAAWvT,KAC/BgG,GACAhG,EAAKyD,KAAKoC,EAAc,QACxB7F,EAAKyD,KAAKxE,EAAc,UAExBe,EAAKgS,WAAWnM,GAChB7F,EAAKyD,KAAKxE,EAAc,UAGxBkC,IACAA,EAAS8K,IAAI,WAAYjG,GAEzBA,EAAW7E,EAAS6E,YAKhCjC,UAAW,SAAS/D,EAAM8T,GACtB,IAAIrd,EAAUE,KAAKF,QACfsd,EAAcpd,KAAKkR,UAAUoB,QAAQ,CAAEqB,SAAU3T,KAAKD,QAAQ4T,WAE1C,GAApB+I,UAAU9Y,QACVuZ,EAAe9T,EAEX8T,EACArd,EAAQqb,KAAKiC,GAEbtd,EAAQ+b,QAGZ/b,EAAQgN,KAAK,YAAaqQ,KAE1BhX,EAASkD,GAAM/E,YAAY,cAAe6Y,GAAcxb,YAAY,cACpE0H,EAAKyD,KAAK,YAAaqQ,KAI/B1U,KAAM,SAAUY,EAAMZ,GAClB,IAAI+B,EAAWxK,KAAKwK,SAASnB,GACzB2K,EAAgBhU,KAAKD,QAAQyI,EAASC,MACtC0T,EAAQ3R,EAAS2R,QACjBvY,EAASoQ,EAAcpQ,OACvB0P,EAAQU,EAAcqJ,KAAKC,IAAInB,EAAOvY,EAAO,IAEjD,IAAI6E,EAGA,OAAO+B,EAAS8I,GAFhB9I,EAAS8K,IAAIhC,EAAO7K,IAM5B8U,cAAe,SAAUlU,GACrB,OAAOpK,EAAEoK,GAAMhH,QAAQ,wBAAwBgE,KAAK,kBAAoBrG,MAG5EoK,gBAAiB,SAASN,EAAUG,EAAOD,EAAY6P,GACnD,IAAI2D,EACAC,EAAezd,KAAKud,cAAcvT,GAAcC,GAChDyT,EAAiBD,EAAapT,WAC9BsT,EAAc1e,EAAE2e,WAAWC,UAAUC,UAuBzC,OArBI9T,GAAcA,EAAW,IAAMyT,EAAa3d,QAAQ,KACpD0d,EAAoBC,EAAajT,SAASR,GAErCwT,EAAkBzf,WACnB0f,EAAarQ,UAAUpD,GAAY,GACnC2T,EAAcH,EAAkBjB,QAGhCvS,GAAchK,KAAK0M,OACnBgR,EAAiBF,EAAkBjU,SAE9BmU,GAAoBA,aAA0BhX,IAC/C8W,EAAkBpK,gBAClBoK,EAAkBzf,QAAO,GACzB2f,EAAiBF,EAAkBjU,YAK/CO,EAAW9J,KAAK+d,kBAAkBjU,GAE3B+P,EAAS7b,KAAKyf,EAAcC,EAAgB5T,EAAU6T,IAGjEI,kBAAmB,SAAS1U,GACxB,IAAqBgB,EAAYyE,EAA7BtE,EAAWnB,EAYf,OAVIR,EAAiBQ,IAASN,EAAaM,MACvCgB,EAAarK,KAAKud,cAAclU,GAAMgB,WACtCyE,EAAM7P,EAAEoK,GAAMyD,KAAK5N,EAAM4N,KAAK,QAC9BtC,EAAWH,EAAWyP,SAAShL,GAE3BtE,IACAA,EAAWH,EAAWnF,OAAOsF,KAI9BA,GAGXG,QAAS,SAAStE,EAAMiE,EAAOI,GACrBJ,aAAiBpL,EAAMmH,KAAK2X,gBAM9B1T,EAAQA,EAAM2T,SALT1X,EAAQ+D,KACTA,EAAQ,CAACA,IAOjB,IAAIN,EAAa3D,EAAK6D,SAStB,OAPIF,GAAcA,EAAWoJ,gBACzBpJ,EAAW0Q,aAAc,EACzB1Q,EAAWoJ,iBAGf/M,EAAK6X,OAAOnf,MAAMsH,EAAM,CAAEqE,EAAO,GAAIyT,OAAO7T,IAErCtK,KAAKib,UAAU5U,EAAKqE,GAAOoE,MAGtCiC,YAAanH,GAAa,GAE1BsB,aAActB,GAAa,GAE3BgC,OAAQ,SAAU9B,EAAUE,EAAYoU,GACpC,IAAInU,EAAQjK,KAAK0M,KAEjB,KAAG1C,GAAcF,aAAoBlE,GAAUoE,EAAW,KAAOF,EAAS,IAU1E,OANAE,EAAaA,GAAcA,EAAWpG,OAASoG,EAAa,KAExDA,IACAC,EAAQhE,EAAS+D,IAGdhK,KAAKoK,gBAAgBN,EAAUG,EAAOD,GAAY,SAAUK,EAAYC,EAAO+T,GAClF,IAAIC,EACArS,EAAOjM,KAEX,SAASue,IACDvU,GACAiC,EAAKgL,UAAUjN,GAAY,GAAM,GAGrC,IAAI3D,EAAOgE,EAAWhE,OAClBqE,EAAQ2S,KAAKmB,IAAInY,EAAKzC,OAAQ,GAElC,OAAOqI,EAAKtB,QAAQtE,EAAMiE,EAAOI,GASrC,OANA2T,EAAUI,MAAK,WACXH,EAAWC,IACXH,EAAUA,GAAWnf,EAAEkB,KACvBie,EAAQE,MAGLA,GAAY,SAI3BjC,QAAS,SAAUhT,EAAMqV,GACrB,IACI1U,EACA2U,EAAa5T,EAFbkB,EAAOjM,KAwBX,OApBAqJ,EAAOpK,EAAEoK,EAAM4C,EAAKnM,SAEpBE,KAAKua,QAAQ,WAAW,WACpB,MAAO,CAAEC,SAAUnR,EAAKiP,UAG5BtO,EAAaX,EAAKa,SAASA,SAC3ByU,EAActV,EAAKgO,OACnBtM,EAAc1B,EAAKkG,OAEnBlG,EAAKqV,EAAW,SAAW,YAEvB1U,EAAW0B,SAAS,YACpBL,GAAerB,GACfiC,EAAKwN,mBAAmBzP,IAG5BiC,EAAKwN,mBAAmBkF,GACxB1S,EAAKwN,mBAAmB1O,GAEjB1B,GAGXnE,OAAQ,SAAUmE,GACd,IAAImB,EAAWxK,KAAKwK,SAASnB,GACzBmB,GACAxK,KAAKqK,WAAWnF,OAAOsF,IAI/BoU,OAAQ,SAAUvV,GACd,OAAOrJ,KAAKqc,QAAQhT,GAAM,IAG9BwV,WAAY,SAASpW,GACjB,OAAOxJ,EAAEe,KAAKF,SAAS4B,KAAK,SAAShB,QAAO,SAASmO,EAAG/O,GACpD,OAAOb,EAAEa,GAAS2I,QAAUA,KAC7BpG,QAAQ4F,IAGfgT,UAAW,SAASnM,GAKhB,IAJA,IAEIxF,EAFA8F,EAAQpP,KAAKF,QAAQ4B,KAAK,WAC1BuN,EAAU/P,EAAM4N,KAAK,OAGhB+B,EAAI,EAAGA,EAAIO,EAAMxL,OAAQiL,IAC9B,GAAIO,EAAMP,GAAGiQ,aAAa7P,IAAYH,EAAK,CACvCxF,EAAS8F,EAAMP,GACf,MAIR,OAAO5P,EAAEqK,IAGbyV,WAAY,SAASC,EAAM/B,GACvB,IAAI7L,EAAWpR,KACXif,EAAUD,EAAKE,MAAM,GACrBrF,EAAWoD,GAAYhe,EAAEkB,KAE7B,SAASgf,IACLF,EAAQG,QAEJH,EAAQrb,OACRgM,EAAOqP,EAAQ,IAAII,KAAKF,GAExBtF,EAAS7b,KAAKoT,GAItB,SAASxB,EAAO9R,GACZ,IAGIwhB,EAHAhW,EAASrK,EAAE2e,WACXvU,EAAO+H,EAAS/G,WAAWiO,IAAIxa,GAC/BoR,EAAehQ,EAAM4N,KAAK,YA4B9B,OAzBIzD,GACAiW,EAAclO,EAAS6J,UAAU5R,EAAKyF,KAElCzF,EAAKtL,UACLsL,EAAKiM,IAAI,YAAY,GACrBgK,EAAYxS,KAAKoC,GAAc,GAC/BoQ,EAAYxS,KAAKxE,GAAc,GAC/BgB,EAAOuU,YAKPzM,EAAShE,UAAUkS,GAAa,GAEhCjW,EAAKkT,OAAO8C,MAAK,WACbhW,EAAKiM,IAAI,YAAY,GACrBgK,EAAYxS,KAAKoC,GAAc,GAC/BoQ,EAAYxS,KAAKxE,GAAc,GAC/BgB,EAAOuU,eAIfvU,EAAOuU,UAGJvU,EAAOwU,UAIlBlO,EAAOqP,EAAQ,IAAII,KAAKF,IAG5BI,WAAY,SAASlW,GACjB,IAAIa,EAASb,GAAQA,EAAKW,aACtBwV,EAAU,GACd,MAAOtV,GAAUA,EAAOF,WACpBwV,EAAQC,QAAQvV,EAAOpM,IACvBoM,EAASA,EAAOF,aAGpB,OAAOwV,GAGXE,SAAU,SAASrW,GACTA,aAAgBnK,EAAMmH,KAAKsZ,OAC7BtW,EAAOrJ,KAAKqK,WAAWiO,IAAIjP,IAG/B,IAAImW,EAAUxf,KAAKuf,WAAWlW,GAE9BrJ,KAAK+e,WAAWS,IAGpBlF,YAAa,SAAUva,GASnB,OARKA,EAAQkK,QACTlK,EAAQkK,MAAQ,IAGpBlK,EAAQqR,SAAWpR,KAAKD,QAExBA,EAAQ6f,EAAI5f,KAAKkR,UAEVlR,KAAKkR,UAAUnN,KAAKhE,IAG/B0a,aAAc,SAAU1a,GACpB,IAAIkM,EAAOjM,KAuBX,OArBAD,EAAQ8f,YAAc,SAAS9f,GACvB,IAAIob,EAAO,GACPtM,EAAI,EACJO,EAAQrP,EAAQqP,MAChB0Q,EAAM1Q,EAAQA,EAAMxL,OAAS,EAC7BqG,EAAQlK,EAAQkK,MAIpB,IAFAA,EAAMrG,OAASkc,EAERjR,EAAIiR,EAAKjR,IACZ9O,EAAQkK,MAAQA,EAChBlK,EAAQgE,KAAOqL,EAAMP,GACrB9O,EAAQgE,KAAK2G,MAAQmE,EACrBsM,GAAQlP,EAAKqO,YAAYva,GAG7B,OAAOob,GAGfpb,EAAQ6f,EAAI3T,EAAKiF,UAEVjF,EAAKiF,UAAUjH,MAAMlK,MAIpCX,EAAG2gB,OAAO/Z,GA3zEd,CA4zEG7G,OAAOD,MAAM0G,QAETzG,OAAOD,QAEXtB,EAAoB,MAEMI,KAAKP,EAASG,EAAoB,Y","file":"js/chunk-vendors~fd52aae9.dd1ef676.js","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1477);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1069:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data\");\n\n/***/ }),\n\n/***/ 1128:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.draganddrop\");\n\n/***/ }),\n\n/***/ 1477:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1069), __webpack_require__(1128) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"treeview.draganddrop\",\n\t name: \"Hierarchical Drag & Drop\",\n\t category: \"framework\",\n\t depends: [ \"core\", \"draganddrop\" ],\n\t advanced: true\n\t};\n\n\t(function($, undefined){\n\t var kendo = window.kendo;\n\t var ui = kendo.ui;\n\t var proxy = $.proxy;\n\t var extend = $.extend;\n\t var VISIBILITY = \"visibility\";\n\t var KSTATEHOVER = \"k-state-hover\";\n\t var INPUTSELECTOR = \"input,a:not(.k-in),textarea,.k-multiselect-wrap,select,button,a.k-button>.k-icon,button.k-button>.k-icon,span.k-icon.k-i-arrow-60-right,span.k-icon.k-i-arrow-45-down-right\";\n\t var DROPHINTTEMPLATE = \"
\" +\n\t \"
\" +\n\t \"
\" +\n\t \"
\";\n\n\t ui.HierarchicalDragAndDrop = kendo.Class.extend({\n\t init: function (element, options) {\n\t this.element = element;\n\t this.hovered = element;\n\t this.options = extend({\n\t dragstart: $.noop, drag: $.noop, drop: $.noop, dragend: $.noop\n\t }, options);\n\n\t this._draggable = new ui.Draggable(element, {\n\t ignore: INPUTSELECTOR,\n\t filter: options.filter,\n\t autoScroll: options.autoScroll,\n\t cursorOffset: {\n\t left: 10,\n\t top: kendo.support.mobileOS ? -40 / kendo.support.zoomLevel() : 10\n\t },\n\t hint: proxy(this._hint, this),\n\t dragstart: proxy(this.dragstart, this),\n\t dragcancel: proxy(this.dragcancel, this),\n\t drag: proxy(this.drag, this),\n\t dragend: proxy(this.dragend, this),\n\t $angular: options.$angular,\n\t holdToDrag: options.holdToDrag\n\t });\n\t },\n\n\t _hint: function(element) {\n\t return \"
\" +\n\t \"\" +\n\t this.options.hintText(element) +\n\t \"
\";\n\t },\n\n\t _removeTouchHover: function() {\n\t if (kendo.support.touch && this.hovered) {\n\t this.hovered.find(\".\" + KSTATEHOVER).removeClass(KSTATEHOVER);\n\t this.hovered = false;\n\t }\n\t },\n\n\t _hintStatus: function(newStatus) {\n\t var statusElement = this._draggable.hint.find(\".k-drag-status\")[0];\n\n\t if (newStatus) {\n\t statusElement.className = \"k-icon k-drag-status \" + newStatus;\n\t } else {\n\t return kendo.trim(statusElement.className.replace(/(p|k)-(icon|drag-status)/g, \"\"));\n\t }\n\t },\n\n\t dragstart: function (e) {\n\t this.source = e.currentTarget.closest(this.options.itemSelector);\n\n\t if (this.options.dragstart(this.source)) {\n\t e.preventDefault();\n\t }\n\n\t if (this.options.reorderable) {\n\t this.dropHint = $(DROPHINTTEMPLATE)\n\t .css(VISIBILITY, \"hidden\")\n\t .appendTo(this.element);\n\t } else {\n\t this.dropHint = $();\n\t }\n\t },\n\n\t drag: function (e) {\n\t var options = this.options;\n\t var source = this.source;\n\t var target = this.dropTarget = $(kendo.eventTarget(e));\n\t var container = target.closest(options.allowedContainers);\n\t var hoveredItem, itemHeight, itemTop, itemContent, delta;\n\t var insertOnTop, insertOnBottom, addChild;\n\t var itemData, position, status;\n\n\t if (!container.length) {\n\t // dragging outside of allowed elements\n\t status = \"k-i-cancel\";\n\t this._removeTouchHover();\n\t } else if (source[0] == target[0] || options.contains(source[0], target[0])) {\n\t // dragging item within itself\n\t status = \"k-i-cancel\";\n\t } else {\n\t // moving or reordering item\n\t status = \"k-i-insert-middle\";\n\n\t itemData = options.itemFromTarget(target);\n\t hoveredItem = itemData.item;\n\n\t if (hoveredItem.length) {\n\t this._removeTouchHover();\n\t itemHeight = kendo._outerHeight(hoveredItem);\n\t itemContent = itemData.content;\n\n\t if (options.reorderable) {\n\t delta = itemHeight / (itemContent.length > 0 ? 4 : 2);\n\t itemTop = kendo.getOffset(hoveredItem).top;\n\n\t insertOnTop = e.y.location < (itemTop + delta);\n\t insertOnBottom = (itemTop + itemHeight - delta) < e.y.location;\n\t addChild = itemContent.length && !insertOnTop && !insertOnBottom;\n\t } else {\n\t addChild = true;\n\t insertOnTop = false;\n\t insertOnBottom = false;\n\t }\n\n\t this.hovered = addChild ? container : false;\n\n\t this.dropHint.css(VISIBILITY, addChild ? \"hidden\" : \"visible\");\n\n\t if (this._lastHover && this._lastHover[0] != itemContent[0]) {\n\t this._lastHover.removeClass(KSTATEHOVER);\n\t }\n\n\t this._lastHover = itemContent.toggleClass(KSTATEHOVER, addChild);\n\n\t if (addChild) {\n\t status = \"k-i-plus\";\n\t } else {\n\t position = hoveredItem.position();\n\t position.top += insertOnTop ? 0 : itemHeight;\n\n\t this.dropHint.css(position)\n\t [insertOnTop ? \"prependTo\" : \"appendTo\"]\n\t (options.dropHintContainer(hoveredItem));\n\n\t if (insertOnTop && itemData.first) {\n\t status = \"k-i-insert-up\";\n\t }\n\n\t if (insertOnBottom && itemData.last) {\n\t status = \"k-i-insert-down\";\n\t }\n\t }\n\t } else if (target[0] != this.dropHint[0]) {\n\t if (this._lastHover) {\n\t this._lastHover.removeClass(KSTATEHOVER);\n\t }\n\n\t if (!$.contains(this.element[0], container[0])) {\n\t // moving node to different element\n\t status = \"k-i-plus\";\n\t } else {\n\t status = \"k-i-cancel\";\n\t }\n\t }\n\t }\n\n\t this.options.drag({\n\t originalEvent: e.originalEvent,\n\t source: source,\n\t target: target,\n\t pageY: e.y.location,\n\t pageX: e.x.location,\n\t status: status.substring(2),\n\t setStatus: function(value) {\n\t status = value;\n\t }\n\t });\n\n\t if (status.indexOf(\"k-i-insert\") !== 0) {\n\t this.dropHint.css(VISIBILITY, \"hidden\");\n\t }\n\n\t this._hintStatus(status);\n\t },\n\n\t dragcancel: function() {\n\t this.dropHint.remove();\n\t },\n\n\t dragend: function (e) {\n\t var position = \"over\",\n\t source = this.source,\n\t destination,\n\t dropHint = this.dropHint,\n\t dropTarget = this.dropTarget,\n\t eventArgs, dropPrevented;\n\n\t if (dropHint.css(VISIBILITY) == \"visible\") {\n\t position = this.options.dropPositionFrom(dropHint);\n\t destination = dropHint.closest(this.options.itemSelector);\n\t } else if (dropTarget) {\n\t destination = dropTarget.closest(this.options.itemSelector);\n\n\t // moving node to root element\n\t if (!destination.length) {\n\t destination = dropTarget.closest(this.options.allowedContainers);\n\t }\n\t }\n\n\t eventArgs = {\n\t originalEvent: e.originalEvent,\n\t source: source[0],\n\t destination: destination[0],\n\t valid: this._hintStatus() != \"k-i-cancel\",\n\t setValid: function(newValid) {\n\t this.valid = newValid;\n\t },\n\t dropTarget: dropTarget[0],\n\t position: position\n\t };\n\n\t dropPrevented = this.options.drop(eventArgs);\n\n\t dropHint.remove();\n\t this._removeTouchHover();\n\t if (this._lastHover) {\n\t this._lastHover.removeClass(KSTATEHOVER);\n\t }\n\n\t if (!eventArgs.valid || dropPrevented) {\n\t this._draggable.dropped = eventArgs.valid;\n\t return;\n\t }\n\n\t this._draggable.dropped = true;\n\n\t this.options.dragend({\n\t originalEvent: e.originalEvent,\n\t source: source,\n\t destination: destination,\n\t position: position\n\t });\n\t },\n\n\t destroy: function() {\n\t this._lastHover = this.hovered = null;\n\t this._draggable.destroy();\n\t }\n\t });\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1476);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1059:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"jquery\");\n\n/***/ }),\n\n/***/ 1069:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data\");\n\n/***/ }),\n\n/***/ 1284:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.treeview.draganddrop\");\n\n/***/ }),\n\n/***/ 1476:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1069), __webpack_require__(1284) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"treeview\",\n\t name: \"TreeView\",\n\t category: \"web\",\n\t description: \"The TreeView widget displays hierarchical data in a traditional tree structure,with support for interactive drag-and-drop operations.\",\n\t depends: [ \"data\" ],\n\t features: [{\n\t id: \"treeview-dragging\",\n\t name: \"Drag & Drop\",\n\t description: \"Support for drag & drop\",\n\t depends: [ \"treeview.draganddrop\" ]\n\t }]\n\t};\n\n\t/*jshint eqnull: true */\n\t(function($, undefined){\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t data = kendo.data,\n\t extend = $.extend,\n\t template = kendo.template,\n\t isArray = Array.isArray,\n\t Widget = ui.Widget,\n\t HierarchicalDataSource = data.HierarchicalDataSource,\n\t proxy = $.proxy,\n\t keys = kendo.keys,\n\t NS = \".kendoTreeView\",\n\t TEMP_NS = \".kendoTreeViewTemp\",\n\t SELECT = \"select\",\n\t CHECK = \"check\",\n\t NAVIGATE = \"navigate\",\n\t EXPAND = \"expand\",\n\t CHANGE = \"change\",\n\t ERROR = \"error\",\n\t CHECKED = \"checked\",\n\t INDETERMINATE = \"indeterminate\",\n\t COLLAPSE = \"collapse\",\n\t DRAGSTART = \"dragstart\",\n\t DRAG = \"drag\",\n\t DROP = \"drop\",\n\t DRAGEND = \"dragend\",\n\t DATABOUND = \"dataBound\",\n\t CLICK = \"click\",\n\t KENDOKEYDOWN = \"kendoKeydown\",\n\t UNDEFINED = \"undefined\",\n\t KSTATEHOVER = \"k-state-hover\",\n\t KTREEVIEW = \"k-treeview\",\n\t VISIBLE = \":visible\",\n\t NODE = \".k-item\",\n\t STRING = \"string\",\n\t ARIACHECKED = \"aria-checked\",\n\t ARIASELECTED = \"aria-selected\",\n\t ARIADISABLED = \"aria-disabled\",\n\t ARIAEXPANDED = \"aria-expanded\",\n\t DISABLED = \"k-state-disabled\",\n\t TreeView,\n\t subGroup, nodeContents, nodeIcon,\n\t spriteRe,\n\t bindings = {\n\t text: \"dataTextField\",\n\t url: \"dataUrlField\",\n\t spriteCssClass: \"dataSpriteCssClassField\",\n\t imageUrl: \"dataImageUrlField\"\n\t },\n\t isJQueryInstance = function(obj) {\n\t return (obj instanceof kendo.jQuery) || (window.jQuery && obj instanceof window.jQuery);\n\t },\n\t isDomElement = function (o){\n\t return (\n\t typeof HTMLElement === \"object\" ? o instanceof HTMLElement : //DOM2\n\t o && typeof o === \"object\" && o.nodeType === 1 && typeof o.nodeName === STRING\n\t );\n\t };\n\n\t function contentChild(filter) {\n\t return function(node) {\n\t var result = node.children(\".k-animation-container\");\n\n\t if (!result.length) {\n\t result = node;\n\t }\n\n\t return result.children(filter);\n\t };\n\t }\n\n\t function templateNoWith(code) {\n\t return kendo.template(code, { useWithBlock: false });\n\t }\n\n\t subGroup = contentChild(\".k-group\");\n\t nodeContents = contentChild(\".k-group,.k-content\");\n\t nodeIcon = function(node) {\n\t return node.children(\"div\").children(\".k-icon\");\n\t };\n\n\t function checkboxes(node) {\n\t return node.find(\".k-checkbox-wrapper:first input[type=checkbox]\");\n\t }\n\n\t function insertAction(indexOffset) {\n\t return function (nodeData, referenceNode) {\n\t referenceNode = referenceNode.closest(NODE);\n\n\t var group = referenceNode.parent(),\n\t parentNode;\n\n\t if (group.parent().is(\"li\")) {\n\t parentNode = group.parent();\n\t }\n\n\t return this._dataSourceMove(nodeData, group, parentNode, function (dataSource, model) {\n\t var referenceItem = this.dataItem(referenceNode);\n\t var referenceNodeIndex = referenceItem ? referenceItem.parent().indexOf(referenceItem) : referenceNode.index();\n\n\t return this._insert(dataSource.data(), model, referenceNodeIndex + indexOffset);\n\t });\n\t };\n\t }\n\n\t spriteRe = /k-sprite/;\n\n\t function moveContents(node, container) {\n\t var tmp;\n\n\t while (node && node.nodeName.toLowerCase() != \"ul\") {\n\t tmp = node;\n\t node = node.nextSibling;\n\n\t if (tmp.nodeType == 3) {\n\t tmp.nodeValue = kendo.trim(tmp.nodeValue);\n\t }\n\n\t if (spriteRe.test(tmp.className)) {\n\t container.insertBefore(tmp, container.firstChild);\n\t } else {\n\t container.appendChild(tmp);\n\t }\n\t }\n\t }\n\n\t function updateNodeHtml(node) {\n\t var wrapper = node.children(\"div\"),\n\t group = node.children(\"ul\"),\n\t toggleButton = wrapper.children(\".k-icon\"),\n\t checkbox = node.children(\"input[type=checkbox]\"),\n\t innerWrapper = wrapper.children(\".k-in\");\n\n\t if (node.hasClass(\"k-treeview\")) {\n\t return;\n\t }\n\n\t if (!wrapper.length) {\n\t wrapper = $(\"
\").prependTo(node);\n\t }\n\n\t if (!toggleButton.length && group.length) {\n\t toggleButton = $(\"\").prependTo(wrapper);\n\t } else if (!group.length || !group.children().length) {\n\t toggleButton.remove();\n\t group.remove();\n\t }\n\n\t if (checkbox.length) {\n\t $(\"\").appendTo(wrapper).append(checkbox);\n\t }\n\n\t if (!innerWrapper.length) {\n\t innerWrapper = node.children(\"a\").eq(0).addClass(\"k-in k-link\");\n\n\t if (!innerWrapper.length) {\n\t innerWrapper = $(\"\");\n\t }\n\n\t innerWrapper.appendTo(wrapper);\n\n\t if (wrapper.length) {\n\t moveContents(wrapper[0].nextSibling, innerWrapper[0]);\n\t }\n\t }\n\t }\n\n\t TreeView = kendo.ui.DataBoundWidget.extend({\n\t init: function (element, options) {\n\t var that = this,\n\t inferred = false,\n\t hasDataSource = options && !!options.dataSource,\n\t list;\n\n\t if (isArray(options)) {\n\t options = { dataSource: options };\n\t }\n\n\t if (options && typeof options.loadOnDemand == UNDEFINED && isArray(options.dataSource)) {\n\t options.loadOnDemand = false;\n\t }\n\n\t Widget.prototype.init.call(that, element, options);\n\n\t element = that.element;\n\t options = that.options;\n\n\t that._dataSourceUids = {};\n\n\t list = (element.is(\"ul\") && element) ||\n\t (element.hasClass(KTREEVIEW) && element.children(\"ul\"));\n\n\t inferred = !hasDataSource && list.length;\n\n\t if (inferred) {\n\t options.dataSource.list = list;\n\t }\n\n\t that._animation();\n\n\t that._accessors();\n\n\t that._templates();\n\n\t // render treeview if it's not already rendered\n\t if (!element.hasClass(KTREEVIEW)) {\n\t that._wrapper();\n\n\t if (list) {\n\t that.root = element;\n\t that._group(that.wrapper);\n\t }\n\t } else {\n\t // otherwise just initialize properties\n\t that.wrapper = element;\n\t that.root = element.children(\"ul\").eq(0);\n\t }\n\n\t that._tabindex();\n\n\t that.wrapper.attr(\"role\", \"tree\");\n\t that.wrapper.find(\">ul\").attr(\"role\", \"none\");\n\n\t that._dataSource(inferred);\n\n\t that._attachEvents();\n\n\t that._dragging();\n\n\t if (!inferred) {\n\t if (options.autoBind) {\n\t that._progress(true);\n\t that.dataSource.fetch();\n\t }\n\t } else {\n\t that._syncHtmlAndDataSource();\n\t }\n\n\t if (options.checkboxes && options.checkboxes.checkChildren) {\n\t that.updateIndeterminate();\n\t }\n\n\t if (that.element[0].id) {\n\t that._ariaId = kendo.format(\"{0}_tv_active\", that.element[0].id);\n\t }\n\n\t kendo.notify(that);\n\t },\n\n\t _attachEvents: function() {\n\t var that = this,\n\t clickableItems = \".k-in:not(.k-state-selected,.k-state-disabled)\",\n\t MOUSEENTER = \"mouseenter\";\n\n\t that._clickHandler = proxy(that._click, that);\n\n\t that.wrapper\n\t .on(MOUSEENTER + NS, \".k-in.k-state-selected\", function(e) { e.preventDefault(); })\n\t .on(MOUSEENTER + NS, clickableItems, function () { $(this).addClass(KSTATEHOVER); })\n\t .on(\"mouseleave\" + NS, clickableItems, function () { $(this).removeClass(KSTATEHOVER); })\n\t .on(CLICK + NS, clickableItems, that._clickHandler)\n\t .on(\"dblclick\" + NS, \".k-in:not(.k-state-disabled)\", proxy(that._toggleButtonClick, that))\n\t .on(CLICK + NS, \".k-i-expand,.k-i-collapse\", proxy(that._toggleButtonClick, that))\n\t .on(\"keydown\" + NS, that, proxy(that._keydown, that))\n\t .on(\"keypress\" + NS, proxy(that._keypress, that))\n\t .on(\"focus\" + NS, proxy(that._focus, that))\n\t .on(\"blur\" + NS, proxy(that._blur, that))\n\t .on(\"mousedown\" + NS, \".k-in,.k-checkbox-wrapper :checkbox,.k-i-expand,.k-i-collapse\", proxy(that._mousedown, that))\n\t .on(\"change\" + NS, \".k-checkbox-wrapper :checkbox\", proxy(that._checkboxChange, that))\n\t .on(\"click\" + NS, \".checkbox-span\", proxy(that._checkboxLabelClick, that))\n\t .on(\"click\" + NS, \".k-request-retry\", proxy(that._retryRequest, that))\n\t .on(\"click\" + NS, \".k-link.k-state-disabled\", function(e) { e.preventDefault(); })\n\t .on(\"click\" + NS, function(e) {\n\t var target = $(e.target);\n\n\t if (!target.is(\":kendoFocusable\") && !target.find(\"input,select,textarea,button,object\").is(\":kendoFocusable\")) {\n\t that.focus();\n\t }\n\t });\n\t },\n\n\t _checkboxLabelClick: function(e) {\n\t var checkbox = $(e.target.previousSibling);\n\n\t if (checkbox.is(\"[disabled]\")) {\n\t return;\n\t }\n\n\t checkbox.prop('checked', !checkbox.prop('checked'));\n\t checkbox.trigger('change');\n\t },\n\n\t _syncHtmlAndDataSource: function (root, dataSource) {\n\t root = root || this.root;\n\t dataSource = dataSource || this.dataSource;\n\t var data = dataSource.view(),\n\t uidAttr = kendo.attr(\"uid\"),\n\t expandedAttr = kendo.attr(\"expanded\"),\n\t checkboxesEnabled = this.options.checkboxes,\n\t items = root.children(\"li\"),\n\t i,\n\t item,\n\t dataItem,\n\t uid,\n\t itemCheckbox;\n\n\t for (i = 0; i < items.length; i++) {\n\t dataItem = data[i];\n\t uid = dataItem.uid;\n\t item = items.eq(i);\n\t item.attr(\"role\", \"treeitem\")\n\t .attr(uidAttr, uid)\n\t .attr(ARIASELECTED, item.hasClass(\"k-state-selected\"));\n\n\t dataItem.expanded = item.attr(expandedAttr) === \"true\";\n\n\t if (checkboxesEnabled) {\n\t itemCheckbox = checkboxes(item);\n\t dataItem.checked = itemCheckbox.prop(CHECKED);\n\t itemCheckbox.attr(\"id\", \"_\" + uid);\n\t itemCheckbox.next(\".k-checkbox-label\").attr(\"for\", \"_\" + uid);\n\t }\n\n\t this._syncHtmlAndDataSource(item.children(\"ul\"), dataItem.children);\n\t }\n\t },\n\n\t _animation: function() {\n\t var options = this.options,\n\t animationOptions = options.animation,\n\t hasCollapseAnimation = animationOptions.collapse && \"effects\" in animationOptions.collapse,\n\t collapse = extend({}, animationOptions.expand, animationOptions.collapse);\n\n\t if (!hasCollapseAnimation) {\n\t collapse = extend(collapse, {reverse: true});\n\t }\n\n\t if (animationOptions === false) {\n\t animationOptions = {\n\t expand: { effects: {} },\n\t collapse: { hide: true, effects: {} }\n\t };\n\t }\n\n\t animationOptions.collapse = extend(collapse, {hide: true});\n\t options.animation = animationOptions;\n\t },\n\n\t _dragging: function() {\n\t var enabled = this.options.dragAndDrop;\n\t var dragging = this.dragging;\n\n\t if (enabled && !dragging) {\n\t var widget = this;\n\n\t this.dragging = new ui.HierarchicalDragAndDrop(this.element, {\n\t reorderable: true,\n\t $angular: this.options.$angular,\n\t autoScroll: this.options.autoScroll,\n\t filter: \"div:not(.k-state-disabled) .k-in\",\n\t allowedContainers: \".k-treeview\",\n\t itemSelector: \".k-treeview .k-item\",\n\t hintText: proxy(this._hintText, this),\n\t contains: function(source, destination) {\n\t return $.contains(source, destination);\n\t },\n\t dropHintContainer: function(item) {\n\t return item;\n\t },\n\t itemFromTarget: function(target) {\n\t var item = target.closest(\".k-top,.k-mid,.k-bot\");\n\t return {\n\t item: item,\n\t content: target.closest(\".k-in\"),\n\t first: item.hasClass(\"k-top\"),\n\t last: item.hasClass(\"k-bot\")\n\t };\n\t },\n\t dropPositionFrom: function(dropHint) {\n\t return dropHint.prevAll(\".k-in\").length > 0 ? \"after\" : \"before\";\n\t },\n\t dragstart: function(source) {\n\t return widget.trigger(DRAGSTART, { sourceNode: source[0] });\n\t },\n\t drag: function(options) {\n\t widget.trigger(DRAG, {\n\t originalEvent: options.originalEvent,\n\t sourceNode: options.source[0],\n\t dropTarget: options.target[0],\n\t pageY: options.pageY,\n\t pageX: options.pageX,\n\t statusClass: options.status,\n\t setStatusClass: options.setStatus\n\t });\n\t },\n\t drop: function(options) {\n\t var dropTarget = $(options.dropTarget);\n\t var navigationTarget = dropTarget.closest(\"a\");\n\n\t if(navigationTarget && navigationTarget.attr(\"href\")) {\n\t widget._tempPreventNavigation(navigationTarget);\n\t }\n\n\t return widget.trigger(DROP, {\n\t originalEvent: options.originalEvent,\n\t sourceNode: options.source,\n\t destinationNode: options.destination,\n\t valid: options.valid,\n\t setValid: function(state) {\n\t this.valid = state;\n\t options.setValid(state);\n\t },\n\t dropTarget: options.dropTarget,\n\t dropPosition: options.position\n\t });\n\t },\n\t dragend: function(options) {\n\t var source = options.source;\n\t var destination = options.destination;\n\t var position = options.position;\n\n\t function triggerDragEnd(source) {\n\t if (widget.options.checkboxes && widget.options.checkboxes.checkChildren) {\n\t widget.updateIndeterminate();\n\t }\n\n\t widget.trigger(DRAGEND, {\n\t originalEvent: options.originalEvent,\n\t sourceNode: source && source[0],\n\t destinationNode: destination[0],\n\t dropPosition: position\n\t });\n\t }\n\n\t // perform reorder / move\n\t // different handling is necessary because append might be async in remote bound tree\n\t if (position == \"over\") {\n\t widget.append(source, destination, triggerDragEnd);\n\t } else {\n\t if (position == \"before\") {\n\t source = widget.insertBefore(source, destination);\n\t } else if (position == \"after\") {\n\t source = widget.insertAfter(source, destination);\n\t }\n\n\t triggerDragEnd(source);\n\t }\n\t }\n\t });\n\t } else if (!enabled && dragging) {\n\t dragging.destroy();\n\t this.dragging = null;\n\t }\n\t },\n\n\t _tempPreventNavigation: function(node) {\n\t node.on(CLICK + NS + TEMP_NS, function (ev) {\n\t ev.preventDefault();\n\t node.off(CLICK + NS + TEMP_NS);\n\t });\n\t },\n\n\t _hintText: function(node) {\n\t return this.templates.dragClue({\n\t item: this.dataItem(node),\n\t treeview: this.options\n\t });\n\t },\n\n\t _templates: function() {\n\t var that = this,\n\t options = that.options,\n\t fieldAccessor = proxy(that._fieldAccessor, that);\n\n\t if (options.template && typeof options.template == STRING) {\n\t options.template = template(options.template);\n\t } else if (!options.template) {\n\t options.template = templateNoWith(\n\t \"# var text = \" + fieldAccessor(\"text\") + \"(data.item); #\" +\n\t \"# if (typeof data.item.encoded != 'undefined' && data.item.encoded === false) {#\" +\n\t \"#= text #\" +\n\t \"# } else { #\" +\n\t \"#: text #\" +\n\t \"# } #\"\n\t );\n\t }\n\n\t that._checkboxes();\n\n\t that.templates = {\n\t setAttributes: function (item) {\n\t var result = \"\";\n\t var attributes = item.attr || {};\n\n\t for (var attr in attributes) {\n\t if(attributes.hasOwnProperty(attr) && attr !== \"class\") {\n\t result += attr + \"=\\\"\" + attributes[attr] + \"\\\" \";\n\t }\n\t }\n\n\t return result;\n\t },\n\t wrapperCssClass: function (group, item) {\n\t var result = \"k-item\",\n\t index = item.index;\n\n\t if (group.firstLevel && index === 0) {\n\t result += \" k-first\";\n\t }\n\n\t if (index == group.length-1) {\n\t result += \" k-last\";\n\t }\n\n\t return result;\n\t },\n\t cssClass: function(group, item) {\n\t var result = \"\",\n\t index = item.index,\n\t groupLength = group.length - 1;\n\n\t if (group.firstLevel && index === 0) {\n\t result += \"k-top \";\n\t }\n\n\t if (index === 0 && index != groupLength) {\n\t result += \"k-top\";\n\t } else if (index == groupLength) {\n\t result += \"k-bot\";\n\t } else {\n\t result += \"k-mid\";\n\t }\n\n\t return result;\n\t },\n\t textClass: function(item, isLink) {\n\t var result = \"k-in\";\n\n\t if (isLink) {\n\t result += \" k-link\";\n\t }\n\n\t if (item.enabled === false) {\n\t result += \" k-state-disabled\";\n\t }\n\n\t if (item.selected === true) {\n\t result += \" k-state-selected\";\n\t }\n\n\t return result;\n\t },\n\t toggleButtonClass: function(item) {\n\t var result = \"k-icon\";\n\n\t if (item.expanded !== true) {\n\t result += \" k-i-expand\";\n\t } else {\n\t result += \" k-i-collapse\";\n\t }\n\n\t return result;\n\t },\n\t groupAttributes: function(group) {\n\t var attributes = \"\";\n\n\t if (!group.firstLevel) {\n\t attributes = \"role='group'\";\n\t }\n\n\t return attributes + (group.expanded !== true ? \" style='display:none'\" : \"\");\n\t },\n\t groupCssClass: function(group) {\n\t var cssClass = \"k-group\";\n\n\t if (group.firstLevel) {\n\t cssClass += \" k-treeview-lines\";\n\t }\n\n\t return cssClass;\n\t },\n\t dragClue: templateNoWith(\n\t \"#= data.treeview.template(data) #\"\n\t ),\n\t group: templateNoWith(\n\t \"
    \" +\n\t \"#= data.renderItems(data) #\" +\n\t \"
\"\n\t ),\n\t itemContent: templateNoWith(\n\t \"# var imageUrl = \" + fieldAccessor(\"imageUrl\") + \"(data.item); #\" +\n\t \"# var spriteCssClass = \" + fieldAccessor(\"spriteCssClass\") + \"(data.item); #\" +\n\t \"# if (imageUrl) { #\" +\n\t \"\" +\n\t \"# } #\" +\n\n\t \"# if (spriteCssClass) { #\" +\n\t \"\" +\n\t \"# } #\" +\n\n\t \"#= data.treeview.template(data) #\"\n\t ),\n\t itemElement: templateNoWith(\n\t \"# var item = data.item, r = data.r; #\" +\n\t \"# var url = \" + fieldAccessor(\"url\") + \"(item); #\" +\n\t \"
\" +\n\t \"# if (item.hasChildren) { #\" +\n\t \"\" +\n\t \"# } #\" +\n\n\t \"# if (data.treeview.checkboxes) { #\" +\n\t \"\" +\n\t \"#= data.treeview.checkboxes.template(data) #\" +\n\t \"\" +\n\t \"# } #\" +\n\n\t \"# var tag = url ? 'a' : 'span'; #\" +\n\t \"# var textAttr = url ? ' href=\\\\'' + url + '\\\\'' : ''; #\" +\n\n\t \"<#=tag# class='#= r.textClass(item, !!url) #'#= textAttr #>\" +\n\t \"#= r.itemContent(data) #\" +\n\t \"\" +\n\t \"
\"\n\t ),\n\t item: templateNoWith(\n\t \"# var item = data.item, r = data.r; #\" +\n\t \"
  • \" +\n\t \"#= r.itemElement(data) #\" +\n\t \"
  • \"\n\t ),\n\t loading: templateNoWith(\n\t \"
    #: data.messages.loading #\"\n\t ),\n\t retry: templateNoWith(\n\t \"#: data.messages.requestFailed # \" +\n\t \"\"\n\t )\n\t };\n\t },\n\n\t items: function() {\n\t return this.element.find(\".k-item > div:first-child\");\n\t },\n\n\t setDataSource: function(dataSource) {\n\t var options = this.options;\n\n\t options.dataSource = dataSource;\n\n\t this._dataSourceUids = {};\n\n\t this._dataSource();\n\n\t if (options.checkboxes && options.checkboxes.checkChildren) {\n\t this.dataSource.one(\"change\", $.proxy(this.updateIndeterminate, this, null));\n\t }\n\n\t if (this.options.autoBind) {\n\t this.dataSource.fetch();\n\t }\n\t },\n\n\t _bindDataSource: function() {\n\t this._refreshHandler = proxy(this.refresh, this);\n\t this._errorHandler = proxy(this._error, this);\n\n\t this.dataSource.bind(CHANGE, this._refreshHandler);\n\t this.dataSource.bind(ERROR, this._errorHandler);\n\t },\n\n\t _unbindDataSource: function() {\n\t var dataSource = this.dataSource;\n\n\t if (dataSource) {\n\t dataSource.unbind(CHANGE, this._refreshHandler);\n\t dataSource.unbind(ERROR, this._errorHandler);\n\t }\n\t },\n\n\t _dataSource: function(silentRead) {\n\t var that = this,\n\t options = that.options,\n\t dataSource = options.dataSource;\n\n\t function recursiveRead(data) {\n\t for (var i = 0; i < data.length; i++) {\n\t data[i]._initChildren();\n\n\t data[i].children.fetch();\n\n\t recursiveRead(data[i].children.view());\n\t }\n\t }\n\n\t dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n\n\t that._unbindDataSource();\n\n\t if (!dataSource.fields) {\n\t dataSource.fields = [\n\t { field: \"text\" },\n\t { field: \"url\" },\n\t { field: \"spriteCssClass\" },\n\t { field: \"imageUrl\" }\n\t ];\n\t }\n\n\t that.dataSource = dataSource = HierarchicalDataSource.create(dataSource);\n\n\t if (silentRead) {\n\t dataSource.fetch();\n\n\t recursiveRead(dataSource.view());\n\t }\n\n\t that._bindDataSource();\n\t },\n\n\t events: [\n\t DRAGSTART,\n\t DRAG,\n\t DROP,\n\t DRAGEND,\n\n\t DATABOUND,\n\n\t EXPAND,\n\t COLLAPSE,\n\t SELECT,\n\t CHANGE,\n\t NAVIGATE,\n\t CHECK,\n\t KENDOKEYDOWN\n\t ],\n\n\t options: {\n\t name: \"TreeView\",\n\t dataSource: {},\n\t animation: {\n\t expand: {\n\t effects: \"expand:vertical\",\n\t duration: 200\n\t }, collapse: {\n\t duration: 100\n\t }\n\t },\n\t messages: {\n\t loading: \"Loading...\",\n\t requestFailed: \"Request failed.\",\n\t retry: \"Retry\"\n\t },\n\t dragAndDrop: false,\n\t checkboxes: false,\n\t autoBind: true,\n\t autoScroll: false,\n\t loadOnDemand: true,\n\t template: \"\",\n\t dataTextField: null\n\t },\n\n\t _accessors: function() {\n\t var that = this,\n\t options = that.options,\n\t i, field, textField,\n\t element = that.element;\n\n\t for (i in bindings) {\n\t field = options[bindings[i]];\n\t textField = element.attr(kendo.attr(i + \"-field\"));\n\n\t if (!field && textField) {\n\t field = textField;\n\t }\n\n\t if (!field) {\n\t field = i;\n\t }\n\n\t if (!isArray(field)) {\n\t field = [field];\n\t }\n\n\t options[bindings[i]] = field;\n\t }\n\t },\n\n\t // generates accessor function for a given field name, honoring the data*Field arrays\n\t _fieldAccessor: function(fieldName) {\n\t var fieldBindings = this.options[bindings[fieldName]],\n\t count = fieldBindings.length,\n\t result = \"(function(item) {\";\n\n\t if (count === 0) {\n\t result += \"return item['\" + fieldName + \"'];\";\n\t } else {\n\t result += \"var levels = [\" +\n\t $.map(fieldBindings, function(x) {\n\t return \"function(d){ return \" + kendo.expr(x) + \"}\";\n\t }).join(\",\") + \"];\";\n\n\t result += \"return levels[Math.min(item.level(), \" + count + \"-1)](item)\";\n\t }\n\n\t result += \"})\";\n\n\t return result;\n\t },\n\n\t setOptions: function(options) {\n\t Widget.fn.setOptions.call(this, options);\n\n\t this._animation();\n\n\t this._dragging();\n\n\t this._templates();\n\t },\n\n\t _trigger: function (eventName, node) {\n\t return this.trigger(eventName, {\n\t node: node.closest(NODE)[0]\n\t });\n\t },\n\n\t _setChecked: function(datasource, value) {\n\t if (!datasource || !kendo.isFunction(datasource.view)) {\n\t return;\n\t }\n\n\t for (var i = 0, nodes = datasource.view(); i < nodes.length; i++) {\n\t if(nodes[i].enabled !== false){\n\t this._setCheckedValue(nodes[i], value);\n\t }\n\n\t if (nodes[i].children) {\n\t this._setChecked(nodes[i].children, value);\n\t }\n\t }\n\t },\n\n\t _setCheckedValue: function (node, value){\n\t node[CHECKED] = value;\n\t },\n\n\t _setIndeterminate: function(node) {\n\t var group = subGroup(node),\n\t siblings, length,\n\t all = true,\n\t i;\n\n\t if (!group.length) {\n\t return;\n\t }\n\n\t siblings = checkboxes(group.children());\n\n\t length = siblings.length;\n\n\t if (!length) {\n\t return;\n\t } else if (length > 1) {\n\t for (i = 1; i < length; i++) {\n\t if (siblings[i].checked != siblings[i-1].checked ||\n\t siblings[i].indeterminate || siblings[i-1].indeterminate) {\n\t all = false;\n\t break;\n\t }\n\t }\n\t } else {\n\t all = !siblings[0].indeterminate;\n\t }\n\n\t node.attr(ARIACHECKED, all ? siblings[0].checked : \"mixed\");\n\n\t return checkboxes(node)\n\t .data(INDETERMINATE, !all)\n\t .prop(INDETERMINATE, !all)\n\t .prop(CHECKED, all && siblings[0].checked);\n\t },\n\n\t updateIndeterminate: function(node) {\n\t // top-down update of inital indeterminate state for all nodes\n\t node = node || this.wrapper;\n\n\t var subnodes = subGroup(node).children();\n\t var i;\n\t var checkbox;\n\t var dataItem;\n\n\t if (subnodes.length) {\n\t for (i = 0; i < subnodes.length; i++) {\n\t this.updateIndeterminate(subnodes.eq(i));\n\t }\n\n\t if (node.is(\".k-treeview\")) {\n\t return;\n\t }\n\n\t checkbox = this._setIndeterminate(node);\n\n\t dataItem = this.dataItem(node);\n\n\t if (checkbox && checkbox.prop(CHECKED)) {\n\t dataItem.checked = true;\n\t } else {\n\t if (dataItem) {\n\t delete dataItem.checked;\n\t }\n\t }\n\t }\n\t },\n\n\t _bubbleIndeterminate: function(node, skipDownward) {\n\t // bottom-up setting of indeterminate state of parent nodes\n\t if (!node.length) {\n\t return;\n\t }\n\n\t if (!skipDownward) {\n\t //update the indeterminate state of the node itself\n\t this.updateIndeterminate(node);\n\t }\n\n\t var parentNode = this.parent(node),\n\t checkbox;\n\n\t if (parentNode.length) {\n\t this._setIndeterminate(parentNode);\n\n\t checkbox = parentNode.children(\"div\").find(\".k-checkbox-wrapper input[type=checkbox]\");\n\n\t this._skip = true;\n\t if (checkbox.prop(INDETERMINATE) === false) {\n\t this.dataItem(parentNode).set(CHECKED, checkbox.prop(CHECKED));\n\t } else {\n\t // delete this.dataItem(parentNode).checked;\n\t this.dataItem(parentNode).set(CHECKED, false);\n\t }\n\n\t this._skip = false;\n\n\t this._bubbleIndeterminate(parentNode, true);\n\t }\n\t },\n\n\t _checkboxChange: function(e) {\n\t var that = this;\n\t var checkbox = $(e.target);\n\t var isChecked = checkbox.prop(CHECKED);\n\t var node = checkbox.closest(NODE);\n\t var dataItem = this.dataItem(node);\n\n\t if (this._preventChange) {\n\t return;\n\t }\n\n\t if (dataItem.checked != isChecked) {\n\t dataItem.set(CHECKED, isChecked);\n\t node.attr(ARIACHECKED, isChecked);\n\t this._trigger(CHECK, node);\n\t }\n\n\t if (checkbox.is(\":focus\")) {\n\t that._trigger(NAVIGATE, node);\n\t that.focus();\n\t }\n\t },\n\n\t _toggleButtonClick: function (e) {\n\t var node = $(e.currentTarget).closest(NODE);\n\n\t if (node.is(\"[aria-disabled='true']\")) {\n\t return;\n\t }\n\n\t this.toggle(node);\n\t },\n\n\t _mousedown: function(e) {\n\t var that = this;\n\t var currentTarget = $(e.currentTarget);\n\t var node = $(e.currentTarget).closest(NODE);\n\t var browser = kendo.support.browser;\n\n\t if (node.is(\"[aria-disabled='true']\")) {\n\t return;\n\t }\n\n\t //IE does not trigger change for indeterminate checkboxes\n\t if ((browser.msie || browser.edge) && currentTarget.is(\":checkbox\")) {\n\t if (currentTarget.prop(INDETERMINATE)) {\n\t that._preventChange = false;\n\n\t currentTarget.prop(CHECKED, !currentTarget.prop(CHECKED));\n\t currentTarget.trigger(CHANGE);\n\n\t currentTarget.on(CLICK + NS, function (e) {\n\t e.preventDefault();\n\t });\n\n\t that._preventChange = true;\n\t } else {\n\t currentTarget.off(CLICK + NS);\n\t that._preventChange = false;\n\t }\n\t }\n\n\t that._clickTarget = node;\n\t that.current(node);\n\t },\n\n\t _focusable: function (node) {\n\t return node && node.length && node.is(\":visible\") && !node.find(\".k-in\").first().hasClass(DISABLED);\n\t },\n\n\t _focus: function() {\n\t var current = this.select(),\n\t clickTarget = this._clickTarget;\n\n\t // suppress initial focus state on touch devices (until keyboard is used)\n\t if (kendo.support.touch) {\n\t return;\n\t }\n\n\t if (clickTarget && clickTarget.length) {\n\t current = clickTarget;\n\t }\n\n\t if (!this._focusable(current)) {\n\t current = this.current();\n\t }\n\n\t if (!this._focusable(current)) {\n\t current = this._nextVisible($());\n\t }\n\n\t this.current(current);\n\t },\n\n\t focus: function() {\n\t var wrapper = this.wrapper,\n\t scrollContainer = wrapper[0],\n\t containers = [],\n\t offsets = [],\n\t documentElement = document.documentElement,\n\t i;\n\n\t do {\n\t scrollContainer = scrollContainer.parentNode;\n\n\t if (scrollContainer.scrollHeight > scrollContainer.clientHeight) {\n\t containers.push(scrollContainer);\n\t offsets.push(scrollContainer.scrollTop);\n\t }\n\t } while (scrollContainer != documentElement);\n\n\t kendo.focusElement(wrapper);\n\n\t for (i = 0; i < containers.length; i++) {\n\t containers[i].scrollTop = offsets[i];\n\t }\n\t },\n\n\t _blur: function() {\n\t this.current().find(\".k-in\").first().removeClass(\"k-state-focused\");\n\t },\n\n\t _enabled: function(node) {\n\t return !node.children(\"div\").children(\".k-in\").hasClass(DISABLED);\n\t },\n\n\t parent: function(node) {\n\t var wrapperRe = /\\bk-treeview\\b/,\n\t itemRe = /\\bk-item\\b/,\n\t result,\n\t skipSelf;\n\n\t if (typeof node == STRING) {\n\t node = this.element.find(node);\n\t }\n\n\t if (!isDomElement(node)) {\n\t node = node[0];\n\t }\n\n\t skipSelf = itemRe.test(node.className);\n\n\t do {\n\t node = node.parentNode;\n\n\t if (itemRe.test(node.className)) {\n\t if (skipSelf) {\n\t result = node;\n\t } else {\n\t skipSelf = true;\n\t }\n\t }\n\t } while (!wrapperRe.test(node.className) && !result);\n\n\t return $(result);\n\t },\n\n\t _nextVisible: function(node) {\n\t var that = this,\n\t expanded = that._expanded(node),\n\t result;\n\n\t function nextParent(node) {\n\t while (node.length && !node.next().length) {\n\t node = that.parent(node);\n\t }\n\n\t if (node.next().length) {\n\t return node.next();\n\t } else {\n\t return node;\n\t }\n\t }\n\n\t if (!node.length || !node.is(\":visible\")) {\n\t result = that.root.children().eq(0);\n\t } else if (expanded) {\n\t result = subGroup(node).children().first();\n\n\t // expanded node with no children\n\t if (!result.length) {\n\t result = nextParent(node);\n\t }\n\t } else {\n\t result = nextParent(node);\n\t }\n\n\t return result;\n\t },\n\n\t _previousVisible: function(node) {\n\t var that = this,\n\t lastChild,\n\t result;\n\n\t if (!node.length || node.prev().length) {\n\t if (node.length) {\n\t result = node.prev();\n\t } else {\n\t result = that.root.children().last();\n\t }\n\n\t while (that._expanded(result)) {\n\t lastChild = subGroup(result).children().last();\n\n\t if (!lastChild.length) {\n\t break;\n\t }\n\n\t result = lastChild;\n\t }\n\t } else {\n\t result = that.parent(node) || node;\n\t }\n\n\t return result;\n\t },\n\n\t _keydown: function(e) {\n\t var that = this,\n\t key = e.keyCode,\n\t target,\n\t focused = that.current(),\n\t expanded = that._expanded(focused),\n\t checkbox = focused.find(\".k-checkbox-wrapper\").first().find(\":checkbox\"),\n\t rtl = kendo.support.isRtl(that.element);\n\n\t if (e.target != e.currentTarget) {\n\t return;\n\t }\n\n\t if ((!rtl && key == keys.RIGHT) || (rtl && key == keys.LEFT)) {\n\t if (expanded) {\n\t target = that._nextVisible(focused);\n\t } else if (!focused.find(\".k-in\").first().hasClass(DISABLED)) {\n\t that.expand(focused);\n\t }\n\t } else if ((!rtl && key == keys.LEFT) || (rtl && key == keys.RIGHT)) {\n\t if (expanded && !focused.find(\".k-in\").first().hasClass(DISABLED)) {\n\t that.collapse(focused);\n\t } else {\n\t target = that.parent(focused);\n\n\t if (!that._enabled(target)) {\n\t target = undefined;\n\t }\n\t }\n\t } else if (key == keys.DOWN) {\n\t target = that._nextVisible(focused);\n\t } else if (key == keys.UP) {\n\t target = that._previousVisible(focused);\n\t } else if (key == keys.HOME) {\n\t target = that._nextVisible($());\n\t } else if (key == keys.END) {\n\t target = that._previousVisible($());\n\t } else if (key == keys.ENTER && !focused.find(\".k-in\").first().hasClass(DISABLED)) {\n\t if (!focused.find(\".k-in\").first().hasClass(\"k-state-selected\")) {\n\t if (!that._trigger(SELECT, focused)) {\n\t that.select(focused);\n\t }\n\t }\n\t } else if (key == keys.SPACEBAR && checkbox.length) {\n\t if(!focused.find(\".k-in\").first().hasClass(DISABLED)){\n\t checkbox.prop(CHECKED, !checkbox.prop(CHECKED))\n\t .data(INDETERMINATE, false)\n\t .prop(INDETERMINATE, false);\n\n\t that._checkboxChange({ target: checkbox });\n\t }\n\t target = focused;\n\t }\n\n\t if (target) {\n\t e.preventDefault();\n\n\t if (focused[0] != target[0]) {\n\t that._trigger(NAVIGATE, target);\n\t that.current(target);\n\t }\n\t }\n\t },\n\n\t _keypress: function (e) {\n\t var that = this;\n\t var delay = 300;\n\t var focusedNode = that.current().get(0);\n\t var matchToFocus;\n\t var key = e.key;\n\t var isPrintable = key.length === 1;\n\n\t if (!isPrintable) {\n\t return;\n\t }\n\n\t if (!that._match) {\n\t that._match = \"\";\n\t }\n\n\t that._match += key;\n\t clearTimeout(that._matchTimer);\n\t that._matchTimer = setTimeout(function() {\n\t that._match = \"\";\n\t }, delay);\n\n\t matchToFocus = focusedNode &&\n\t that._matchNextByText(\n\t Array.prototype.indexOf.call(that.element.find(\".k-item\"),\n\t focusedNode), that._match\n\t );\n\n\t if (!matchToFocus.length) {\n\t matchToFocus = that._matchNextByText(-1, that._match);\n\t }\n\n\t if (matchToFocus.get(0) && matchToFocus.get(0) !== focusedNode) {\n\t that._trigger(NAVIGATE, matchToFocus);\n\t that.current(matchToFocus);\n\t }\n\t },\n\n\t _matchNextByText: function(startIndex, text) {\n\t var element = this.element;\n\t var textNodes = element.find(\".k-in\").filter(function(i, element) {\n\t return (i > startIndex &&\n\t $(element).is(\":visible\") &&\n\t $(element).text().toLowerCase().indexOf(text) === 0);\n\t });\n\n\t return textNodes.eq(0).closest(NODE);\n\t },\n\n\t _click: function (e) {\n\t var that = this,\n\t node = $(e.currentTarget),\n\t contents = nodeContents(node.closest(NODE)),\n\t href = node.attr(\"href\"),\n\t shouldNavigate;\n\n\t if (href) {\n\t shouldNavigate = href == \"#\" || href.indexOf(\"#\" + this.element.id + \"-\") >= 0;\n\t } else {\n\t shouldNavigate = contents.length && !contents.children().length;\n\t }\n\n\t if (shouldNavigate) {\n\t e.preventDefault();\n\t }\n\n\t if (!node.hasClass(\".k-state-selected\") && !that._trigger(SELECT, node)) {\n\t that.select(node);\n\t }\n\t },\n\n\t _wrapper: function() {\n\t var that = this,\n\t element = that.element,\n\t wrapper, root,\n\t wrapperClasses = \"k-widget k-treeview\";\n\n\t if (element.is(\"ul\")) {\n\t wrapper = element.wrap('
    ').parent();\n\t root = element;\n\t } else {\n\t wrapper = element;\n\t root = wrapper.children(\"ul\").eq(0);\n\t }\n\n\t that.wrapper = wrapper.addClass(wrapperClasses);\n\t that.root = root;\n\t },\n\n\t _getSelectedNode: function() {\n\t return this.element.find(\".k-state-selected\").closest(NODE);\n\t },\n\n\t _group: function(item) {\n\t var that = this,\n\t firstLevel = item.hasClass(KTREEVIEW),\n\t group = {\n\t firstLevel: firstLevel,\n\t expanded: firstLevel || that._expanded(item)\n\t },\n\t groupElement = item.children(\"ul\");\n\n\t groupElement\n\t .addClass(that.templates.groupCssClass(group))\n\t .css(\"display\", group.expanded ? \"\" : \"none\");\n\n\t if(!firstLevel) {\n\t groupElement.attr(\"role\", \"group\");\n\t }\n\n\t that._nodes(groupElement, group);\n\t },\n\n\t _nodes: function(groupElement, groupData) {\n\t var that = this,\n\t nodes = groupElement.children(\"li\"),\n\t nodeData;\n\n\t groupData = extend({ length: nodes.length }, groupData);\n\n\t nodes.each(function(i, node) {\n\t node = $(node);\n\n\t nodeData = { index: i, expanded: that._expanded(node) };\n\n\t updateNodeHtml(node);\n\n\t that._updateNodeClasses(node, groupData, nodeData);\n\n\t // iterate over child nodes\n\t that._group(node);\n\t });\n\t },\n\n\t _checkboxes: function() {\n\t var options = this.options;\n\t var checkboxes = options.checkboxes;\n\t var defaultTemplate;\n\n\t if (checkboxes) {\n\t defaultTemplate = \"\";\n\n\t checkboxes = extend({\n\t template: defaultTemplate\n\t }, options.checkboxes);\n\n\t if (typeof checkboxes.template == STRING) {\n\t checkboxes.template = template(checkboxes.template);\n\t }\n\n\t options.checkboxes = checkboxes;\n\t }\n\t },\n\n\t _updateNodeClasses: function (node, groupData, nodeData) {\n\t var wrapper = node.children(\"div\"),\n\t group = node.children(\"ul\"),\n\t templates = this.templates;\n\n\t if (node.hasClass(\"k-treeview\")) {\n\t return;\n\t }\n\n\t nodeData = nodeData || {};\n\t nodeData.expanded = typeof nodeData.expanded != UNDEFINED ? nodeData.expanded : this._expanded(node);\n\t nodeData.index = typeof nodeData.index != UNDEFINED ? nodeData.index : node.index();\n\t nodeData.enabled = typeof nodeData.enabled != UNDEFINED ? nodeData.enabled : !wrapper.children(\".k-in\").hasClass(\"k-state-disabled\");\n\n\t groupData = groupData || {};\n\t groupData.firstLevel = typeof groupData.firstLevel != UNDEFINED ? groupData.firstLevel : node.parent().parent().hasClass(KTREEVIEW);\n\t groupData.length = typeof groupData.length != UNDEFINED ? groupData.length : node.parent().children().length;\n\n\t // li\n\t node.removeClass(\"k-first k-last\")\n\t .addClass(templates.wrapperCssClass(groupData, nodeData));\n\n\t // div\n\t wrapper.removeClass(\"k-top k-mid k-bot\")\n\t .addClass(templates.cssClass(groupData, nodeData));\n\n\t // span / a\n\t var textWrap = wrapper.children(\".k-in\");\n\t var isLink = textWrap[0] && textWrap[0].nodeName.toLowerCase() == \"a\";\n\t textWrap.removeClass(\"k-in k-link k-state-default k-state-disabled\")\n\t .addClass(templates.textClass(nodeData, isLink));\n\n\t // toggle button\n\t if (group.length || node.attr(\"data-hasChildren\") == \"true\") {\n\t wrapper.children(\".k-icon\").removeClass(\"k-i-expand k-i-collapse\")\n\t .addClass(templates.toggleButtonClass(nodeData));\n\n\t group.addClass(\"k-group\");\n\t }\n\t },\n\n\n\t _processNodes: function(nodes, callback) {\n\t var that = this;\n\t var items = that.element.find(nodes);\n\t for (var i = 0; i < items.length; i++) {\n\t callback.call(that, i, $(items[i]).closest(NODE));\n\t }\n\t },\n\n\t dataItem: function(node) {\n\t var uid = $(node).closest(NODE).attr(kendo.attr(\"uid\")),\n\t dataSource = this.dataSource;\n\n\t return dataSource && dataSource.getByUid(uid);\n\t },\n\n\t _dataItem: function(node) {\n\t var uid = $(node).closest(NODE).attr(kendo.attr(\"uid\")),\n\t dataSource = this.dataSource;\n\n\t return dataSource && this._dataSourceUids[uid];\n\t },\n\n\t _insertNode: function(nodeData, index, parentNode, insertCallback, collapsed) {\n\t var that = this,\n\t group = subGroup(parentNode),\n\t updatedGroupLength = group.children().length + 1,\n\t childrenData,\n\t groupData = {\n\t firstLevel: parentNode.hasClass(KTREEVIEW),\n\t expanded: !collapsed,\n\t length: updatedGroupLength\n\t }, node, i, item, nodeHtml = \"\", firstChild, lastChild,\n\t append = function(item, group) {\n\t item.appendTo(group);\n\t };\n\n\t for (i = 0; i < nodeData.length; i++) {\n\t item = nodeData[i];\n\n\t item.index = index + i;\n\n\t nodeHtml += that._renderItem({\n\t group: groupData,\n\t item: item\n\t });\n\t }\n\n\t node = $(nodeHtml);\n\n\t if (!node.length) {\n\t return;\n\t }\n\n\t that.angular(\"compile\", function(){\n\t return {\n\t elements: node.get(),\n\t data: nodeData.map(function(item){\n\t return { dataItem: item };\n\t })\n\t };\n\t });\n\n\t if (!group.length) {\n\t group = $(that._renderGroup({\n\t group: groupData\n\t })).appendTo(parentNode);\n\t }\n\n\t insertCallback(node, group);\n\n\t if (parentNode.hasClass(\"k-item\")) {\n\t updateNodeHtml(parentNode);\n\t that._updateNodeClasses(parentNode, groupData, {expanded: !collapsed});\n\t }\n\n\t firstChild = node.prev().first();\n\t lastChild = node.next().last();\n\n\t that._updateNodeClasses(firstChild, {}, {expanded: firstChild.attr(kendo.attr(\"expanded\")) == \"true\"});\n\t that._updateNodeClasses(lastChild, {}, {expanded: lastChild.attr(kendo.attr(\"expanded\")) == \"true\"});\n\n\t // render sub-nodes\n\t for (i = 0; i < nodeData.length; i++) {\n\t item = nodeData[i];\n\n\t if (item.hasChildren) {\n\t childrenData = item.children.data();\n\n\t if (childrenData.length) {\n\t that._insertNode(childrenData, item.index, node.eq(i), append, !item.expanded);\n\t }\n\t }\n\t }\n\n\t return node;\n\t },\n\n\t _updateNodes: function(items, field) {\n\t var that = this;\n\t var i, node, nodeWrapper, item, isChecked, isCollapsed;\n\t var context = { treeview: that.options, item: item };\n\t var render = field != \"expanded\" && field != \"checked\";\n\n\t function setCheckedState(root, state) {\n\t if (root.is(\".k-group\")) {\n\t root.find(\".k-item:not([aria-disabled])\").attr(ARIACHECKED, state);\n\t }\n\n\t root.find(\".k-checkbox-wrapper input[type=checkbox]:not([disabled])\")\n\t .prop(CHECKED, state)\n\t .data(INDETERMINATE, false)\n\t .prop(INDETERMINATE, false);\n\t }\n\n\t if (field == \"selected\") {\n\t item = items[0];\n\n\t node = that.findByUid(item.uid).find(\".k-in\").first()\n\t .removeClass(\"k-state-hover\")\n\t .toggleClass(\"k-state-selected\", item[field])\n\t .end();\n\n\t if (item[field]) {\n\t that.current(node);\n\t }\n\n\t node.attr(ARIASELECTED, !!item[field]);\n\t } else {\n\t var elements = $.map(items, function(item) {\n\t return that.findByUid(item.uid).children(\"div\");\n\t });\n\n\t if (render) {\n\t that.angular(\"cleanup\", function() { return { elements: elements }; });\n\t }\n\n\t for (i = 0; i < items.length; i++) {\n\t context.item = item = items[i];\n\t nodeWrapper = elements[i];\n\t node = nodeWrapper.parent();\n\n\t if (render) {\n\t if (kendo.unbind) {\n\t kendo.unbind(nodeWrapper);\n\t }\n\t nodeWrapper.children(\".k-in\")\n\t .html(that.templates.itemContent(context));\n\t }\n\n\t if (field == CHECKED) {\n\t isChecked = item[field];\n\n\t setCheckedState(nodeWrapper, isChecked);\n\n\t node.attr(ARIACHECKED, isChecked);\n\n\t if (that.options.checkboxes.checkChildren) {\n\t setCheckedState(node.children(\".k-group\"), isChecked);\n\n\t that._setChecked(item.children, isChecked);\n\n\t that._bubbleIndeterminate(node);\n\t }\n\t } else if (field == \"expanded\") {\n\t that._toggle(node, item, item[field]);\n\t } else if (field == \"enabled\") {\n\t node.find(\".k-checkbox-wrapper input[type=checkbox]\").prop(\"disabled\", !item[field]);\n\n\t isCollapsed = !nodeContents(node).is(VISIBLE);\n\n\t node.removeAttr(ARIADISABLED);\n\n\t if (!item[field]) {\n\t if (item.selected) {\n\t item.set(\"selected\", false);\n\t }\n\n\t if (item.expanded) {\n\t item.set(\"expanded\", false);\n\t }\n\n\t isCollapsed = true;\n\t node.attr(ARIASELECTED, false)\n\t .attr(ARIADISABLED, true);\n\t }\n\n\t that._updateNodeClasses(node, {}, { enabled: item[field], expanded: !isCollapsed });\n\t }\n\n\t if (nodeWrapper.length) {\n\t this.trigger(\"itemChange\", { item: nodeWrapper, data: item, ns: ui });\n\t }\n\t }\n\n\t if (render) {\n\t that.angular(\"compile\", function(){\n\t return {\n\t elements: elements,\n\t data: $.map(items, function(item) {\n\t return [{ dataItem: item }];\n\t })\n\t };\n\t });\n\t }\n\t }\n\t },\n\n\t _appendItems: function(index, items, parentNode) {\n\t var group = subGroup(parentNode);\n\t var children = group.children();\n\t var collapsed = !this._expanded(parentNode);\n\n\t if(this.element === parentNode){\n\t var dataItems = this.dataSource.data();\n\t var viewItems = this.dataSource.view();\n\t var rootItems = viewItems.length < dataItems.length ? viewItems : dataItems;\n\t index = rootItems.indexOf(items[0]);\n\t } else if (items.length){\n\t index = items[0].parent().indexOf(items[0]);\n\t }\n\n\t if (typeof index == UNDEFINED) {\n\t index = children.length;\n\t }\n\n\t this._insertNode(items, index, parentNode, function(item, group) {\n\t // insert node into DOM\n\t if (index >= children.length) {\n\t item.appendTo(group);\n\t } else {\n\t item.insertBefore(children.eq(index));\n\t }\n\t }, collapsed);\n\n\t if (!collapsed) {\n\t this._updateNodeClasses(parentNode, {}, {expanded: !collapsed});\n\t subGroup(parentNode).css(\"display\", \"block\");\n\t }\n\t },\n\n\t _refreshChildren: function(parentNode, items, index) {\n\t var i, children, child;\n\t var options = this.options;\n\t var loadOnDemand = options.loadOnDemand;\n\t var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n\n\t subGroup(parentNode).empty();\n\n\t if (!items.length) {\n\t updateNodeHtml(parentNode);\n\t } else {\n\t this._appendItems(index, items, parentNode);\n\n\t children = subGroup(parentNode).children();\n\n\t if (loadOnDemand && checkChildren) {\n\t this._bubbleIndeterminate(children.last());\n\t }\n\n\t for (i = 0; i < children.length; i++) {\n\t child = children.eq(i);\n\t this.trigger(\"itemChange\", {\n\t item: child.children(\"div\"),\n\t data: items[i],\n\t ns: ui\n\t });\n\t }\n\t }\n\t },\n\n\t _refreshRoot: function(items) {\n\t var groupHtml = this._renderGroup({\n\t items: items,\n\t group: {\n\t firstLevel: true,\n\t expanded: true\n\t }\n\t });\n\n\t if (this.root.length && this.root[0].parentElement) {\n\t this._angularItems(\"cleanup\");\n\n\t var group = $(groupHtml);\n\n\t this.root\n\t .attr(\"class\", group.attr(\"class\"))\n\t .html(group.html());\n\t } else {\n\t this.root = this.wrapper.html(groupHtml).children(\"ul\");\n\t }\n\n\t var elements = this.root.children(\".k-item\");\n\t for (var i = 0; i < items.length; i++) {\n\t this.trigger(\"itemChange\", {\n\t item: elements.eq(i),\n\t data: items[i],\n\t ns: ui\n\t });\n\t }\n\t this._angularItems(\"compile\");\n\t },\n\n\t refresh: function(e) {\n\t var node = e.node;\n\t var action = e.action;\n\t var items = e.items;\n\t var parentNode = this.wrapper;\n\t var options = this.options;\n\t var loadOnDemand = options.loadOnDemand;\n\t var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n\t var i;\n\n\t if (this._skip) {\n\t return;\n\t }\n\n\t for (i = 0; i < items.length; i++) {\n\t this._dataSourceUids[items[i].uid] = items[i];\n\t }\n\n\t if (e.field) {\n\t if (!items[0] || !items[0].level) {\n\t return;\n\t }\n\n\t return this._updateNodes(items, e.field);\n\t }\n\n\t if (node) {\n\t parentNode = this.findByUid(node.uid);\n\t this._progress(parentNode, false);\n\t }\n\n\t if (checkChildren && action != \"remove\") {\n\t var bubble = false;\n\n\t for (i = 0; i < items.length; i++) {\n\t if (\"checked\" in items[i]) {\n\t bubble = true;\n\t break;\n\t }\n\t }\n\n\t if (!bubble && node && node.checked) {\n\t for (i = 0; i < items.length; i++) {\n\t items[i].checked = true;\n\t }\n\t }\n\t }\n\n\t if (action == \"add\") {\n\t this._appendItems(e.index, items, parentNode);\n\t } else if (action == \"remove\") {\n\t this._remove(this.findByUid(items[0].uid), false);\n\t } else if (action == \"itemchange\") {\n\t this._updateNodes(items);\n\t } else if (action == \"itemloaded\") {\n\t this._refreshChildren(parentNode, items, e.index);\n\t } else {\n\t this._refreshRoot(items);\n\t this.element.attr(\"aria-busy\", false);\n\t }\n\n\t if (action != \"remove\") {\n\t for (i = 0; i < items.length; i++) {\n\t if (!loadOnDemand || items[i].expanded || items[i]._loaded) {\n\t items[i].load();\n\t }\n\t }\n\t }\n\n\t this.wrapper.find(\">ul\").attr(\"role\", \"none\");\n\t this.trigger(DATABOUND, { node: node ? parentNode : undefined });\n\t if (this.dataSource.filter() && this.options.checkboxes.checkChildren) {\n\t this.updateIndeterminate(parentNode);\n\t }\n\t },\n\n\t _error: function(e) {\n\t var node = e.node && this.findByUid(e.node.uid);\n\t var retryHtml = this.templates.retry({ messages: this.options.messages });\n\n\t if (node) {\n\t this._progress(node, false);\n\t this._expanded(node, false);\n\t nodeIcon(node).addClass(\"k-i-reload\");\n\t e.node.loaded(false);\n\t } else {\n\t this._progress(false);\n\t this.dataSource.data([]);\n\t this.element.html(retryHtml);\n\t }\n\t },\n\n\t _retryRequest: function(e) {\n\t e.preventDefault();\n\n\t this.dataSource.fetch();\n\t },\n\n\t expand: function (nodes) {\n\t this._processNodes(nodes, function (index, item) {\n\t this.toggle(item, true);\n\t });\n\t },\n\n\t collapse: function (nodes) {\n\t this._processNodes(nodes, function (index, item) {\n\t this.toggle(item, false);\n\t });\n\t },\n\n\t enable: function (nodes, enable) {\n\t if (typeof nodes === \"boolean\") {\n\t enable = nodes;\n\t nodes = this.items();\n\t } else {\n\t enable = arguments.length == 2 ? !!enable : true;\n\t }\n\n\t this._processNodes(nodes, function (index, item) {\n\t this.dataItem(item).set(\"enabled\", enable);\n\t });\n\t },\n\n\t current: function(node) {\n\t var that = this,\n\t current = that._current,\n\t element = that.element,\n\t id = that._ariaId;\n\n\t if (arguments.length > 0 && node && node.length) {\n\t if (current) {\n\t if (current[0].id === id) {\n\t current.removeAttr(\"id\");\n\t }\n\n\t current.find(\".k-in\").first().removeClass(\"k-state-focused\");\n\t }\n\n\t current = that._current = $(node, element).closest(NODE);\n\n\t current.find(\".k-in\").first().addClass(\"k-state-focused\");\n\n\t id = current[0].id || id;\n\n\t if (id) {\n\t that.wrapper.removeAttr(\"aria-activedescendant\");\n\t current.attr(\"id\", id);\n\t that.wrapper.attr(\"aria-activedescendant\", id);\n\t }\n\n\t return;\n\t }\n\n\t if (!current) {\n\t current = that._nextVisible($());\n\t }\n\n\t return current;\n\t },\n\n\t select: function (node) {\n\t var that = this,\n\t element = that.element;\n\n\t if (!arguments.length) {\n\t return element.find(\".k-state-selected\").closest(NODE);\n\t }\n\n\t node = $(node, element).closest(NODE);\n\n\t element.find(\".k-state-selected\").each(function() {\n\t var dataItem = that.dataItem(this);\n\t if (dataItem) {\n\t dataItem.set(\"selected\", false);\n\t delete dataItem.selected;\n\t } else {\n\t $(this).removeClass(\"k-state-selected\");\n\t }\n\t });\n\n\t if (node.length) {\n\t that.dataItem(node).set(\"selected\", true);\n\t that._clickTarget = node;\n\t }\n\n\t that.trigger(CHANGE);\n\t },\n\n\t _toggle: function(node, dataItem, expand) {\n\t var options = this.options;\n\t var contents = nodeContents(node);\n\t var direction = expand ? \"expand\" : \"collapse\";\n\t var loaded;\n\n\t if (contents.data(\"animating\")) {\n\t return;\n\t }\n\n\t loaded = dataItem && dataItem.loaded();\n\n\t if (expand && !loaded) {\n\t if (options.loadOnDemand) {\n\t this._progress(node, true);\n\t }\n\n\t contents.remove();\n\t dataItem.load();\n\t } else {\n\t this._updateNodeClasses(node, {}, { expanded: expand });\n\n\t if (!expand) {\n\t contents.css(\"height\", contents.height()).css(\"height\");\n\t }\n\n\t contents\n\t .kendoStop(true, true)\n\t .kendoAnimate(extend(\n\t { reset: true },\n\t options.animation[direction],\n\t { complete: function() {\n\t if (expand) {\n\t contents.css(\"height\", \"\");\n\t }\n\t } }\n\t ));\n\t }\n\n\t },\n\n\t toggle: function (node, expand) {\n\t node = $(node);\n\n\t if (!nodeIcon(node).is(\".k-i-expand, .k-i-collapse\")) {\n\t return;\n\t }\n\n\t if (arguments.length == 1) {\n\t expand = !this._expanded(node);\n\t }\n\n\t this._expanded(node, expand);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t Widget.fn.destroy.call(that);\n\n\t that.wrapper.off(NS);\n\t that.wrapper.find(\".k-checkbox-wrapper :checkbox\").off(NS);\n\t that._clickHandler = null;\n\n\t that._unbindDataSource();\n\n\t if (that.dragging) {\n\t that.dragging.destroy();\n\t }\n\n\t that._dataSourceUids = {};\n\n\t kendo.destroy(that.element);\n\n\t that.root = that.wrapper = that.element = null;\n\t },\n\n\t _expanded: function(node, value, force) {\n\t var expandedAttr = kendo.attr(\"expanded\");\n\t var dataItem;\n\t var expanded = value;\n\t var direction = expanded ? \"expand\" : \"collapse\";\n\n\t if (arguments.length == 1) {\n\t dataItem = this._dataItem(node);\n\t return node.attr(expandedAttr) === \"true\" || (dataItem && dataItem.expanded);\n\t }\n\n\t dataItem = this.dataItem(node);\n\n\t if (nodeContents(node).data(\"animating\")) {\n\t return;\n\t }\n\n\t if (force || !this._trigger(direction, node)) {\n\t if (expanded) {\n\t node.attr(expandedAttr, \"true\");\n\t node.attr(ARIAEXPANDED, \"true\");\n\t } else {\n\t node.removeAttr(expandedAttr);\n\t node.attr(ARIAEXPANDED, \"false\");\n\t }\n\n\t if (dataItem) {\n\t dataItem.set(\"expanded\", expanded);\n\t // necessary when expanding an item yields an error and the item is not expanded as a result\n\t expanded = dataItem.expanded;\n\t }\n\t }\n\t },\n\n\t _progress: function(node, showProgress) {\n\t var element = this.element;\n\t var loadingText = this.templates.loading({ messages: this.options.messages });\n\n\t if (arguments.length == 1) {\n\t showProgress = node;\n\n\t if (showProgress) {\n\t element.html(loadingText);\n\t } else {\n\t element.empty();\n\t }\n\n\t element.attr(\"aria-busy\", showProgress);\n\t } else {\n\t nodeIcon(node).toggleClass(\"k-i-loading\", showProgress).removeClass(\"k-i-reload\");\n\t node.attr(\"aria-busy\", showProgress);\n\t }\n\t },\n\n\t text: function (node, text) {\n\t var dataItem = this.dataItem(node),\n\t fieldBindings = this.options[bindings.text],\n\t level = dataItem.level(),\n\t length = fieldBindings.length,\n\t field = fieldBindings[Math.min(level, length-1)];\n\n\t if (text) {\n\t dataItem.set(field, text);\n\t } else {\n\t return dataItem[field];\n\t }\n\t },\n\n\t _objectOrSelf: function (node) {\n\t return $(node).closest(\"[data-role=treeview]\").data(\"kendoTreeView\") || this;\n\t },\n\n\t _dataSourceMove: function(nodeData, group, parentNode, callback) {\n\t var referenceDataItem,\n\t destTreeview = this._objectOrSelf(parentNode || group),\n\t destDataSource = destTreeview.dataSource;\n\t var loadPromise = $.Deferred().resolve().promise();\n\n\t if (parentNode && parentNode[0] != destTreeview.element[0]) {\n\t referenceDataItem = destTreeview.dataItem(parentNode);\n\n\t if (!referenceDataItem.loaded()) {\n\t destTreeview._progress(parentNode, true);\n\t loadPromise = referenceDataItem.load();\n\t }\n\n\t if (parentNode != this.root) {\n\t destDataSource = referenceDataItem.children;\n\n\t if (!destDataSource || !(destDataSource instanceof HierarchicalDataSource)) {\n\t referenceDataItem._initChildren();\n\t referenceDataItem.loaded(true);\n\t destDataSource = referenceDataItem.children;\n\t }\n\t }\n\t }\n\n\t nodeData = this._toObservableData(nodeData);\n\n\t return callback.call(destTreeview, destDataSource, nodeData, loadPromise);\n\t },\n\n\t _toObservableData: function(node) {\n\t var dataItem = node, dataSource, uid;\n\n\t if (isJQueryInstance(node) || isDomElement(node)) {\n\t dataSource = this._objectOrSelf(node).dataSource;\n\t uid = $(node).attr(kendo.attr(\"uid\"));\n\t dataItem = dataSource.getByUid(uid);\n\n\t if (dataItem) {\n\t dataItem = dataSource.remove(dataItem);\n\t }\n\t }\n\n\t return dataItem;\n\t },\n\n\t _insert: function(data, model, index) {\n\t if (!(model instanceof kendo.data.ObservableArray)) {\n\t if (!isArray(model)) {\n\t model = [model];\n\t }\n\t } else {\n\t // items will be converted to new Node instances\n\t model = model.toJSON();\n\t }\n\n\t var parentNode = data.parent();\n\n\t if (parentNode && parentNode._initChildren) {\n\t parentNode.hasChildren = true;\n\t parentNode._initChildren();\n\t }\n\n\t data.splice.apply(data, [ index, 0 ].concat(model));\n\n\t return this.findByUid(data[index].uid);\n\t },\n\n\t insertAfter: insertAction(1),\n\n\t insertBefore: insertAction(0),\n\n\t append: function (nodeData, parentNode, success) {\n\t var group = this.root;\n\n\t if(parentNode && nodeData instanceof jQuery && parentNode[0] === nodeData[0]){\n\t return;\n\t }\n\n\t parentNode = parentNode && parentNode.length ? parentNode : null;\n\n\t if (parentNode) {\n\t group = subGroup(parentNode);\n\t }\n\n\t return this._dataSourceMove(nodeData, group, parentNode, function (dataSource, model, loadModel) {\n\t var inserted;\n\t var that = this;\n\n\t function add() {\n\t if (parentNode) {\n\t that._expanded(parentNode, true, true);\n\t }\n\n\t var data = dataSource.data(),\n\t index = Math.max(data.length, 0);\n\n\t return that._insert(data, model, index);\n\t }\n\n\t loadModel.done(function() {\n\t inserted = add();\n\t success = success || $.noop;\n\t success(inserted);\n\t });\n\n\t return inserted || null;\n\t });\n\t },\n\n\t _remove: function (node, keepData) {\n\t var that = this,\n\t parentNode,\n\t prevSibling, nextSibling;\n\n\t node = $(node, that.element);\n\n\t this.angular(\"cleanup\", function(){\n\t return { elements: node.get() };\n\t });\n\n\t parentNode = node.parent().parent();\n\t prevSibling = node.prev();\n\t nextSibling = node.next();\n\n\t node[keepData ? \"detach\" : \"remove\"]();\n\n\t if (parentNode.hasClass(\"k-item\")) {\n\t updateNodeHtml(parentNode);\n\t that._updateNodeClasses(parentNode);\n\t }\n\n\t that._updateNodeClasses(prevSibling);\n\t that._updateNodeClasses(nextSibling);\n\n\t return node;\n\t },\n\n\t remove: function (node) {\n\t var dataItem = this.dataItem(node);\n\t if (dataItem) {\n\t this.dataSource.remove(dataItem);\n\t }\n\t },\n\n\t detach: function (node) {\n\t return this._remove(node, true);\n\t },\n\n\t findByText: function(text) {\n\t return $(this.element).find(\".k-in\").filter(function(i, element) {\n\t return $(element).text() == text;\n\t }).closest(NODE);\n\t },\n\n\t findByUid: function(uid) {\n\t var items = this.element.find(\".k-item\");\n\t var uidAttr = kendo.attr(\"uid\");\n\t var result;\n\n\t for (var i = 0; i < items.length; i++) {\n\t if (items[i].getAttribute(uidAttr) == uid) {\n\t result = items[i];\n\t break;\n\t }\n\t }\n\n\t return $(result);\n\t },\n\n\t expandPath: function(path, complete) {\n\t var treeview = this;\n\t var nodeIds = path.slice(0);\n\t var callback = complete || $.noop;\n\n\t function proceed() {\n\t nodeIds.shift();\n\n\t if (nodeIds.length) {\n\t expand(nodeIds[0]).then(proceed);\n\t } else {\n\t callback.call(treeview);\n\t }\n\t }\n\n\t function expand(id) {\n\t var result = $.Deferred();\n\t var node = treeview.dataSource.get(id);\n\t var expandedAttr = kendo.attr(\"expanded\");\n\t var nodeElement;\n\n\t if (node) {\n\t nodeElement = treeview.findByUid(node.uid);\n\n\t if (node.loaded()) {\n\t node.set(\"expanded\", true);\n\t nodeElement.attr(expandedAttr, true);\n\t nodeElement.attr(ARIAEXPANDED, true);\n\t result.resolve();\n\t } else {\n\t // manually show progress of the node\n\t // should be moved to `refresh`\n\t // if the datasource starts triggering a `requestStart` event for nodes\n\t treeview._progress(nodeElement, true);\n\n\t node.load().then(function() {\n\t node.set(\"expanded\", true);\n\t nodeElement.attr(expandedAttr, true);\n\t nodeElement.attr(ARIAEXPANDED, true);\n\t result.resolve();\n\t });\n\t }\n\t } else {\n\t result.resolve();\n\t }\n\n\t return result.promise();\n\t }\n\n\t // expand async nodes\n\t expand(nodeIds[0]).then(proceed);\n\t },\n\n\t _parentIds: function(node) {\n\t var parent = node && node.parentNode();\n\t var parents = [];\n\t while (parent && parent.parentNode) {\n\t parents.unshift(parent.id);\n\t parent = parent.parentNode();\n\t }\n\n\t return parents;\n\t },\n\n\t expandTo: function(node) {\n\t if (!(node instanceof kendo.data.Node)) {\n\t node = this.dataSource.get(node);\n\t }\n\n\t var parents = this._parentIds(node);\n\n\t this.expandPath(parents);\n\t },\n\n\t _renderItem: function (options) {\n\t if (!options.group) {\n\t options.group = {};\n\t }\n\n\t options.treeview = this.options;\n\n\t options.r = this.templates;\n\n\t return this.templates.item(options);\n\t },\n\n\t _renderGroup: function (options) {\n\t var that = this;\n\n\t options.renderItems = function(options) {\n\t var html = \"\",\n\t i = 0,\n\t items = options.items,\n\t len = items ? items.length : 0,\n\t group = options.group;\n\n\t group.length = len;\n\n\t for (; i < len; i++) {\n\t options.group = group;\n\t options.item = items[i];\n\t options.item.index = i;\n\t html += that._renderItem(options);\n\t }\n\n\t return html;\n\t };\n\n\t options.r = that.templates;\n\n\t return that.templates.group(options);\n\t }\n\t });\n\n\t ui.plugin(TreeView);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1059)))\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}