{"version":3,"sources":["kendo.multiselect.js"],"names":["f","define","$","undefined","compare","a","b","length","kendo","window","ui","List","keys","extend","A","activeElement","_activeElement","ObservableArray","data","proxy","ID","LI","ACCEPT","FILTER","REBIND","OPEN","CLOSE","CHANGE","PROGRESS","SELECT","DESELECT","ARIA_DISABLED","FOCUSEDCLASS","SELECTEDCLASS","HIDDENCLASS","HOVERCLASS","STATEDISABLED","NOCLICKCLASS","DISABLED","READONLY","AUTOCOMPLETEVALUE","ns","CLICK","KEYDOWN","MOUSEENTER","MOUSELEAVE","HOVEREVENTS","quotRegExp","isArray","styles","MultiSelect","init","element","options","id","disabled","that","this","fn","call","_optionsMap","_customOptions","_wrapper","_tagList","_input","_textContainer","_loader","_clearButton","_tabindex","input","attr","hide","placeholder","_tagID","tagList","_initialOpen","_ariaLabel","_ariaSetLive","_dataSource","_ignoreCase","_popup","_tagTemplate","requireValueMapper","_initList","_reset","_enable","_placeholder","autoBind","dataSource","fetch","value","_preselect","parents","is","enable","_ariaSetSize","notify","_toggleCloseVisibility","name","tagMode","enabled","autoClose","highlightFirst","dataTextField","dataValueField","filter","ignoreCase","minLength","messages","singleTag","clear","deleteTag","noData","enforceMinLength","delay","maxSelectedItems","height","animation","virtual","itemTemplate","tagTemplate","groupTemplate","fixedGroupTemplate","clearButton","autoWidth","popup","events","setDataSource","_state","persistTagList","listView","setOptions","listOptions","_listOptions","_accessors","_aria","currentTag","candidate","_currentTag","removeClass","removeAttr","find","addClass","dataItems","selectedDataItems","destroy","clearTimeout","_busy","_typingTimeout","wrapper","off","_clear","_activateItem","visible","selectedItemChange","_selectedItemChange","selectable","template","expr","_setListValue","_initialValues","slice","_listChange","e","i","flatView","optionsMap","valueGetter","_value","added","dataItem","_render","_selectValue","removed","context","idx","items","children","eq","index","html","tagTextTemplate","item","_wrapperMousedown","notInput","target","nodeName","toLowerCase","closeButton","hasClass","closest","support","mobileOS","cancelable","preventDefault","focus","open","_inputFocus","_inputFocusout","close","skipUpdate","bound","isFiltered","_clearFilter","blur","_removeTag","tag","shouldTrigger","option","listViewChild","done","state","position","customIndex","listViewChildren","trigger","_close","_change","select","selected","removeAt","classList","remove","_updateTagListHTML","_tagListClick","stopPropagation","currentTarget","_clearValue","_clearSingleTagValue","each","val","_search","_hideClear","_focusHandler","_editable","disable","readonly","add","toggleClass","on","_toggleHover","_keydown","_filterSource","force","_retrieveData","_activeItem","_request","_open","_focusItem","_allowOpening","isPlainObject","_hovered","toggle","refresh","_listBound","skip","_renderFooter","_renderNoData","_toggleNoData","_resizePopup","focusFirst","_touchScroller","reset","_hideBusy","_makeUnselectable","_inputValue","inputValue","oldValue","clearFilters","_normalizeValues","_old","_valueBeforeCascade","_fetchData","ObservableObject","_setOption","hasItems","view","isEmptyArray","_fetch","read","_isBound","fields","field","_refreshHandler","_unbindDataSource","_progressHandler","_showBusy","_errorHandler","DataSource","create","bind","formId","form","_resetHandler","setTimeout","_form","_initValue","map","_click","_select","_getActiveItem","_getSelectedIndices","_selectedIndices","_selectedIndexes","activeItemIdx","activeIndex","currentIndex","direction","key","keyCode","hasValue","isRtl","dir","ENTER","_multipleSelection","DOWN","shiftKey","getElementIndex","first","focusNext","_selectRange","focusLast","UP","focusPrev","LEFT","RIGHT","prev","lastChild","next","ctrlKey","altKey","SPACEBAR","ESC","HOME","firstChild","END","DELETE","BACKSPACE","PAGEDOWN","PAGEUP","_scale","scrollWith","screenHeight","_loading","_showBusyHandler","show","skipCaret","active","isActive","caretPos","_prev","caret","textWidth","wrapperWidth","width","span","_span","text","appendTo","document","documentElement","_option","dataValue","dataText","indexOf","replace","htmlEncode","selectedIndex","custom","selectedItems","values","_buildSelectedItems","_selectedItemIndex","splice","_text","valueField","textField","result","push","search","_showClear","_allowSelection","max","_angularTagItems","cmd","angular","elements","updatePersistTagList","_removedAddedIndexes","removedItem","addedItem","total","getter","removeChild","append","_maxTotal","maxTotal","currentTotal","isSelected","resolved","Deferred","resolve","dataItemByIndex","startIndex","endIndex","indices","indicesToSelect","selectIndices","forEach","accessKey","_innerWrapper","_focused","accesskey","autocomplete","role","title","aria-expanded","aria-haspopup","aria-autocomplete","defaultTemplate","hasDataSource","isMultiple","useWithBlock","insertAfter","computedStyles","getComputedStyles","visibility","top","left","css","parent","wrap","style","cssText","insertBefore","className","ul","_isFilterEnabled","plugin","jQuery","amd","a1","a2","a3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,qBACH,aACA,wBACA,qBACDD,IACL,WAyqCE,MAnpCC,UAAUE,EAAGC,GAioCV,QAASC,GAAQC,EAAGC,GAChB,GAAIC,EACJ,IAAU,OAANF,GAAoB,OAANC,GAAoB,OAAND,GAAoB,OAANC,EAC1C,OAAO,CAGX,IADAC,EAASF,EAAEE,OACPA,IAAWD,EAAEC,OACb,OAAO,CAEX,MAAOA,KACH,GAAIF,EAAEE,KAAYD,EAAEC,GAChB,OAAO,CAGf,QAAO,EA/oCd,GACOC,GAAQC,OAAOD,MAAOE,EAAKF,EAAME,GAAIC,EAAOD,EAAGC,KAAMC,EAAOV,EAAEW,QAASC,EAAG,IAAMN,EAAMI,MAAOG,EAAgBP,EAAMQ,eAAgBC,EAAkBT,EAAMU,KAAKD,gBAAiBE,EAAQjB,EAAEiB,MAAOC,EAAK,KAAMC,EAAK,KAAMC,EAAS,SAAUC,EAAS,SAAUC,EAAS,SAAUC,EAAO,OAAQC,EAAQ,QAASC,EAAS,SAAUC,EAAW,WAAYC,EAAS,SAAUC,EAAW,WAAYC,EAAgB,gBAAiBC,EAAe,kBAAmBC,EAAgB,mBAAoBC,EAAc,WAAYC,EAAa,gBAAiBC,EAAgB,mBAAoBC,EAAe,aAAcC,EAAW,WAAYC,EAAW,WAAYC,EAAoB,MAAOC,EAAK,oBAAqBC,EAAQ,QAAUD,EAAIE,EAAU,UAAYF,EAAIG,EAAa,aAAeH,EAAII,EAAa,aAAeJ,EAAIK,EAAcF,EAAa,IAAMC,EAAYE,EAAa,KAAMC,EAAU9C,EAAE8C,QAASC,GACz4B,cACA,YACA,eACA,aACA,cACA,iBACA,iBACA,eAEJC,EAAcvC,EAAKE,QACnBsC,KAAM,SAAUC,EAASC,GACrB,GAAiBC,GAAIC,EAAjBC,EAAOC,IACXD,GAAKf,GAAKA,EACV9B,EAAK+C,GAAGP,KAAKQ,KAAKH,EAAMJ,EAASC,GACjCG,EAAKI,eACLJ,EAAKK,kBACLL,EAAKM,WACLN,EAAKO,WACLP,EAAKQ,SACLR,EAAKS,iBACLT,EAAKU,UACLV,EAAKW,eACLX,EAAKY,UAAUZ,EAAKa,OACpBjB,EAAUI,EAAKJ,QAAQkB,KAAK,WAAY,YAAYC,OACpDlB,EAAUG,EAAKH,QACVA,EAAQmB,cACTnB,EAAQmB,YAAcpB,EAAQlC,KAAK,gBAEvCoC,EAAKF,EAAQkB,KAAKlD,GACdkC,IACAE,EAAKiB,OAASnB,EAAK,cACnBA,GAAU,WACVE,EAAKkB,QAAQJ,KAAKlD,EAAIkC,GACtBE,EAAKa,MAAMC,KAAK,mBAAoBhB,IAExCE,EAAKmB,cAAe,EACpBnB,EAAKoB,aACLpB,EAAKqB,eACLrB,EAAKsB,cACLtB,EAAKuB,cACLvB,EAAKwB,SACLxB,EAAKyB,eACLzB,EAAK0B,mBAAmB1B,EAAKH,SAC7BG,EAAK2B,YACL3B,EAAK4B,SACL5B,EAAK6B,UACL7B,EAAK8B,eACDjC,EAAQkC,SACR/B,EAAKgC,WAAWC,QACTpC,EAAQqC,OACflC,EAAKmC,WAAWtC,EAAQqC,OAE5BnC,EAAWrD,EAAEsD,EAAKJ,SAASwC,QAAQ,YAAYC,GAAG,aAC9CtC,GACAC,EAAKsC,QAAO,GAEhBtC,EAAKuC,aAAavC,EAAKkC,QAAQnF,QAC/BC,EAAMwF,OAAOxC,GACbA,EAAKyC,0BAET5C,SACI6C,KAAM,cACNC,QAAS,WACTC,SAAS,EACTb,UAAU,EACVc,WAAW,EACXC,gBAAgB,EAChBC,cAAe,GACfC,eAAgB,GAChBC,OAAQ,aACRC,YAAY,EACZC,UAAW,EACXC,UACIC,UAAa,mBACbC,MAAS,QACTC,UAAa,SACbC,OAAU,kBAEdC,kBAAkB,EAClBC,MAAO,IACPxB,MAAO,KACPyB,iBAAkB,KAClB3C,YAAa,GACb4C,OAAQ,IACRC,aACAC,SAAS,EACTC,aAAc,GACdC,YAAa,GACbC,cAAe,UACfC,mBAAoB,UACpBC,aAAa,EACbC,WAAW,EACXC,MAAO,MAEXC,QACIrG,EACAC,EACAC,EACAE,EACAC,EACA,YACA,cACA,aAEJiG,cAAe,SAAUvC,GACrB/B,KAAKJ,QAAQmC,WAAaA,EAC1B/B,KAAKuE,OAAS,GACdvE,KAAKqB,cACLrB,KAAKwE,gBAAiB,EACtBxE,KAAKyE,SAASH,cAActE,KAAK+B,YAC7B/B,KAAKJ,QAAQkC,UACb9B,KAAK+B,WAAWC,SAGxB0C,WAAY,SAAU9E,GAClB,GAAI+E,GAAc3E,KAAK4E,aAAahF,EACpC1C,GAAK+C,GAAGyE,WAAWxE,KAAKF,KAAMJ,GAC9BI,KAAKyE,SAASC,WAAWC,GACzB3E,KAAK6E,aACL7E,KAAK8E,MAAM9E,KAAKiB,QAAQJ,KAAKlD,IAC7BqC,KAAKwB,eACLxB,KAAK6B,eACL7B,KAAKU,gBAETqE,WAAY,SAAUC,GAClB,GAAIjF,GAAOC,IACX,OAAIgF,KAActI,EAaPqD,EAAKkF,aAZRlF,EAAKkF,cACLlF,EAAKkF,YAAYC,YAAY3G,GAAc4G,WAAWxH,GACtDoC,EAAKkF,YAAYG,KAAK,aAAavE,KAAK,eAAe,GACvDd,EAAKa,MAAMuE,WAAW,0BAEtBH,IACAA,EAAUK,SAAS9G,GAAcsC,KAAKlD,EAAIoC,EAAKiB,QAC/CgE,EAAUI,KAAK,aAAaD,WAAW,eACvCpF,EAAKa,MAAMC,KAAK,wBAAyBd,EAAKiB,SAElDjB,EAAKkF,YAAcD,EAVnB,IAeRM,UAAW,WACP,MAAOtF,MAAKyE,SAASc,qBAEzBC,QAAS,WACL,GAAIzF,GAAOC,KAAMhB,EAAKe,EAAKf,EAC3ByG,cAAa1F,EAAK2F,OAClBD,aAAa1F,EAAK4F,gBAClB5F,EAAK6F,QAAQC,IAAI7G,GACjBe,EAAKkB,QAAQ4E,IAAI7G,GACjBe,EAAKa,MAAMiF,IAAI7G,GACfe,EAAK+F,OAAOD,IAAI7G,GAChB9B,EAAK+C,GAAGuF,QAAQtF,KAAKH,IAEzBgG,cAAe,WACP/F,KAAKoE,MAAM4B,WACX9I,EAAK+C,GAAG8F,cAAc7F,KAAKF,MAE/BA,KAAK+E,WAAW,OAEpBH,aAAc,SAAUhF,GAAV,GACNG,GAAOC,KACP2E,EAAczH,EAAK+C,GAAG2E,aAAa1E,KAAKH,EAAMtD,EAAEW,OAAOwC,GACvDqG,mBAAoBvI,EAAMqC,EAAKmG,oBAAqBnG,GACpDoG,WAAY,cAEZrC,EAAe9D,KAAKJ,QAAQkE,cAAgB9D,KAAKJ,QAAQwG,SACzDA,EAAWzB,EAAYb,cAAgBA,GAAgBa,EAAYyB,QAKvE,OAJKA,KACDA,EAAW,KAAOrJ,EAAMsJ,KAAK1B,EAAY7B,cAAe,QAAU,KAEtE6B,EAAYyB,SAAWA,EAChBzB,GAEX2B,cAAe,WACXpJ,EAAK+C,GAAGqG,cAAcpG,KAAKF,KAAMA,KAAKuG,eAAeC,MAAM,KAE/DC,YAAa,SAAUC,GAAV,GAOAC,GANLlJ,EAAOuC,KAAK+B,WAAW6E,WACvBC,EAAa7G,KAAKG,YAClB2G,EAAc9G,KAAK+G,MAIvB,KAHI/G,KAAKuE,SAAWxG,IAChBiC,KAAKuE,OAAS,IAEToC,EAAI,EAAGA,EAAID,EAAEM,MAAMlK,OAAQ6J,IAChC,GAAIE,EAAWC,EAAYJ,EAAEM,MAAML,GAAGM,aAAevK,EAAW,CAC5DsD,KAAKkH,QAAQzJ,EACb,OAGRuC,KAAKmH,aAAaT,EAAEM,MAAON,EAAEU,UAEjClB,oBAAqB,SAAUQ,GAAV,GAEbW,GACAC,EAFAC,EAAQb,EAAEa,KAGd,KAAKD,EAAM,EAAGA,EAAMC,EAAMzK,OAAQwK,IAC9BD,EAAUE,EAAMD,GAChBtH,KAAKiB,QAAQuG,WAAWC,GAAGJ,EAAQK,OAAOF,SAAS,cAAcG,KAAK3H,KAAK4H,gBAAgBP,EAAQQ,QAG3GC,kBAAmB,SAAUpB,GAAV,GACX3G,GAAOC,KACP+H,EAA+C,UAApCrB,EAAEsB,OAAOC,SAASC,cAC7BF,EAASvL,EAAEiK,EAAEsB,QACbG,EAAcH,EAAOI,SAAS,aAAeJ,EAAOI,SAAS,SAC7DD,KACAA,GAAeH,EAAOK,QAAQ,aAAab,SAAS,sBAAsB1K,SAE1EiL,GAAcI,GAAepL,EAAMuL,QAAQC,WAAa7B,EAAE8B,YAC1D9B,EAAE+B,iBAEDN,IACGpI,EAAKa,MAAM,KAAOtD,KAAmByK,GACrChI,EAAKa,MAAM8H,QAEgB,IAA3B3I,EAAKH,QAAQsD,WACbnD,EAAK4I,SAIjBC,YAAa,WACT5I,KAAK6B,cAAa,GAClB7B,KAAK4F,QAAQP,SAAS9G,IAE1BsK,eAAgB,WACZ,GAAI9I,GAAOC,IACXyF,cAAa1F,EAAK4F,gBAClB5F,EAAK6F,QAAQV,YAAY3G,GACzBwB,EAAK8B,cAAc9B,EAAK0E,SAASc,oBAAoB,IAAI,GACzDxF,EAAK+I,QACD/I,EAAKwE,SAAWzG,IAChBiC,EAAKwE,OAAS1G,EACdkC,EAAK0E,SAASsE,YAAW,IAEzBhJ,EAAK0E,SAASuE,SAAWjJ,EAAK0E,SAASwE,eACvClJ,EAAKyE,gBAAiB,EACtBzE,EAAKmJ,gBAETnJ,EAAKJ,QAAQwJ,QAEjBC,WAAY,SAAUC,EAAKC,GAAf,GASJC,GACAC,EAWAC,EApBA1J,EAAOC,KACP0J,EAAQ3J,EAAKwE,OACboF,EAAWN,EAAI3B,QACfjD,EAAW1E,EAAK0E,SAChBxC,EAAQwC,EAASxC,QAAQ0H,GACzB1C,EAAWlH,EAAK0E,SAASc,oBAAoBoE,GAC7CC,EAAc7J,EAAKK,eAAe6B,GAClC4H,EAAmBpF,EAAS9E,QAAQ,GAAG6H,QAG3C,OAAIzH,GAAK+J,QAAQzL,GACT4I,SAAUA,EACVY,KAAMwB,KAEVtJ,EAAKgK,SACL,IAEAH,IAAgBlN,GAAcgN,IAAU7L,GAAU6L,IAAU5L,IAC5D8L,EAAc7J,EAAKI,YAAY8B,IAE/BwH,EAAO,WACP1J,EAAKgF,WAAW,MACZuE,GACAvJ,EAAKiK,UAETjK,EAAKgK,UAELH,IAAgBlN,GAAa+H,EAASwF,SAASnN,QAC/CiD,EAAKyE,gBAAiB,EACtBC,EAASwF,OAAOxF,EAASwF,SAASN,IAAWF,KAAKA,KAElDF,EAASxJ,EAAKJ,QAAQ,GAAG6H,SAASoC,GAC9BL,IACAA,EAAOW,UAAW,GAEtBzF,EAAS0F,SAASR,GAClBH,EAAgBK,EAAiBD,GAC7BJ,GACAK,EAAiBD,GAAaQ,UAAUC,OAAO,oBAEtB,WAAzBtK,EAAKH,QAAQ8C,QACb2G,EAAIgB,SAEJtK,EAAKuK,qBAETb,KA5BJ,IA+BJc,cAAe,SAAU7D,GACrBA,EAAE+B,iBACF/B,EAAE8D,iBACF,IAAIxC,GAASvL,EAAEiK,EAAE+D,cACZzC,GAAOR,SAAS,sBAAsB1K,QACvCkD,KAAKoJ,WAAWpB,EAAOK,QAAQzK,IAAK,IAG5C8M,YAAa,WACT,GAAI3K,GAAOC,IACkB,YAAzBD,EAAKH,QAAQ8C,QACb3C,EAAK4K,uBAEL5K,EAAKkB,QAAQuG,WAAWoD,KAAK,SAAUlD,EAAO2B,GAC1CtJ,EAAKqJ,WAAW3M,EAAE4M,IAAM,KAGhCtJ,EAAKa,MAAMiK,IAAI,IACf9K,EAAK+K,UACL/K,EAAKiK,UACLjK,EAAK2I,QACL3I,EAAKgL,aACDhL,EAAKwE,SAAWzG,IAChBiC,EAAKwE,OAAS1G,IAGtB8M,qBAAsB,WAAA,GACd5K,GAAOC,KACPwE,EAAiBzE,EAAKyE,cACtBA,KACAzE,EAAKyE,gBAAiB,GAE1BzE,EAAK0E,SAASxC,UACdlC,EAAKyE,eAAiBA,GAE1BwG,cAAe,WACXhL,KAAKY,MAAM8H,SAEfuC,UAAW,SAAUrL,GACjB,GAAIG,GAAOC,KAAMkL,EAAUtL,EAAQsL,QAASC,EAAWvL,EAAQuL,SAAUvF,EAAU7F,EAAK6F,QAAQC,IAAI7G,GAAKiC,EAAUlB,EAAKkB,QAAQ4E,IAAI7G,GAAK4B,EAAQb,EAAKJ,QAAQyL,IAAIrL,EAAKa,MAAMiF,IAAI7G,GAC5KmM,IAAaD,GAWdtF,EAAQyF,YAAY1M,EAAeuM,GAASG,YAAYzM,EAAcuM,GACtEvK,EAAMC,KAAKhC,EAAUqM,GAASrK,KAAK/B,EAAUqM,GAAUtK,KAAKvC,EAAe4M,KAX3EtF,EAAQV,YAAYvG,GAAeuG,YAAYtG,GAAc0M,GAAGjM,EAAaU,EAAKwL,cAAcD,GAAG,YAActM,EAAK,YAAcA,EAAItB,EAAMqC,EAAK+H,kBAAmB/H,IAAOuL,GAAGrM,EAAOvB,EAAMqC,EAAKiL,cAAejL,IACjNA,EAAKa,MAAM0K,GAAGpM,EAASxB,EAAMqC,EAAKyL,SAAUzL,IAAOuL,GAAG,QAAUtM,EAAItB,EAAMqC,EAAK+K,QAAS/K,IAAOuL,GAAG,QAAUtM,EAAItB,EAAMqC,EAAK+K,QAAS/K,IAAOuL,GAAG,QAAUtM,EAAItB,EAAMqC,EAAK6I,YAAa7I,IAAOuL,GAAG,WAAatM,EAAItB,EAAMqC,EAAK8I,eAAgB9I,IAC1OA,EAAK+F,OAAOwF,GAAGrM,EAAQ,YAAcD,EAAItB,EAAMqC,EAAK2K,YAAa3K,IACjEa,EAAMuE,WAAWtG,GAAUsG,WAAWrG,GAAU+B,KAAKvC,GAAe,GACpE2C,EAAQqK,GAAGnM,EAAYvB,EAAI,WACvBnB,EAAEuD,MAAMqF,SAAS3G,KAClB4M,GAAGlM,EAAYxB,EAAI,WAClBnB,EAAEuD,MAAMkF,YAAYxG,KACrB4M,GAAGrM,EAAQ,YAAcD,EAAI,wBAAyBtB,EAAMqC,EAAKwK,cAAexK,MAM3FgK,OAAQ,WACJ,GAAIhK,GAAOC,IACPD,GAAKH,QAAQgD,UACb7C,EAAK+I,QAEL/I,EAAKqE,MAAMuF,YAGnB8B,cAAe,SAAUzI,EAAQ0I,GACxBA,IACDA,EAAQ1L,KAAK2L,eAEjB3L,KAAK2L,eAAgB,EACrBzO,EAAK+C,GAAGwL,cAAcvL,KAAKF,KAAMgD,EAAQ0I,IAE7C5C,MAAO,WACH9I,KAAK4L,YAAc,KACnB5L,KAAKY,MAAMuE,WAAW,yBACtBnF,KAAKoE,MAAM0E,SAEfH,KAAM,WACF,GAAI5I,GAAOC,IACPD,GAAK8L,WACL9L,EAAK4L,eAAgB,GAErB5L,EAAK4L,gBAAkB5L,EAAK0E,SAASuE,SAAWjJ,EAAKwE,SAAW1G,GAChEkC,EAAK+L,OAAQ,EACb/L,EAAKwE,OAASxG,EACdgC,EAAK0E,SAASsE,YAAW,GACzBhJ,EAAKyE,iBAAiBzE,EAAKmB,eAAiBnB,EAAK0E,SAASuE,SAC1DjJ,EAAK0L,gBACL1L,EAAKgM,cACEhM,EAAKiM,mBACRjM,EAAKmB,cAAiBnB,EAAKH,QAAQkC,UAAa/B,EAAKH,QAAQiE,UAAW9D,EAAKH,QAAQqC,OAAUxF,EAAEwP,cAAclM,EAAKH,QAAQqC,MAAM,KAClIlC,EAAKkC,MAAMlC,EAAKkC,SAAWlC,EAAKwG,gBAEpCxG,EAAKqE,MAAM8H,UAAW,EACtBnM,EAAKmB,cAAe,EACpBnB,EAAKqE,MAAMuE,OACX5I,EAAKgM,eAGbI,OAAQ,SAAUA,GACdA,EAASA,IAAWzP,EAAYyP,GAAUnM,KAAKoE,MAAM4B,UACrDhG,KAAKmM,EAASnO,EAAOC,MAEzBmO,QAAS,WACLpM,KAAKyE,SAAS2H,WAElBC,WAAY,WAAA,GACJtM,GAAOC,KACPvC,EAAOsC,EAAKgC,WAAW6E,WACvB0F,EAAOvM,EAAK0E,SAAS6H,MACzBvM,GAAKmH,QAAQzJ,GACbsC,EAAKwM,gBACLxM,EAAKyM,gBACLzM,EAAK0M,eAAehP,EAAKX,QACzBiD,EAAK2M,eACD3M,EAAK+L,QACL/L,EAAK+L,OAAQ,EACb/L,EAAKoM,OAAOpM,EAAKiM,kBAErBjM,EAAKqE,MAAMuF,YACP5J,EAAKH,QAAQiD,gBAAmByJ,IAAS5P,GAAsB,IAAT4P,GACtDvM,EAAK0E,SAASkI,aAEd5M,EAAK6M,gBACL7M,EAAK6M,eAAeC,QAExB9M,EAAK+M,YACL/M,EAAKgN,oBACLhN,EAAK+J,QAAQ,cAEjBkD,YAAa,WAAA,GACLjN,GAAOC,KACPiN,EAAalN,EAAKa,MAAMiK,KAI5B,OAHI9K,GAAKH,QAAQmB,cAAgBkM,IAC7BA,EAAa,IAEVA,GAEXhL,MAAO,SAAUA,GAAV,GACClC,GAAOC,KACPyE,EAAW1E,EAAK0E,SAChByI,EAAWzI,EAASxC,QAAQuE,QAC5B9C,EAAmB3D,EAAKH,QAAQ8D,iBAChCyJ,EAAe1I,EAASuE,SAAWvE,EAASwE,YAChD,OAAIhH,KAAUvF,EACHwQ,GAEXnN,EAAKyE,gBAAiB,EACtBzE,EAAK0B,mBAAmB1B,EAAKH,QAASqC,GACtCA,EAAQlC,EAAKqN,iBAAiBnL,GACL,OAArByB,GAA6BzB,EAAMnF,OAAS4G,IAC5CzB,EAAQA,EAAMuE,MAAM,EAAG9C,IAEvByJ,GACApN,EAAKmJ,eAETzE,EAASxC,MAAMA,GACflC,EAAKsN,KAAOtN,EAAKuN,oBAAsBrL,EAAMuE,QACxC2G,GACDpN,EAAKwN,aAETxN,EAAKuC,aAAavC,EAAKkC,QAAQnF,QAC/BiD,EAAKyC,yBAfLzC,IAiBJmC,WAAY,SAAUzE,EAAMwE,GACxB,GAAIlC,GAAOC,IACNT,GAAQ9B,IAAWA,YAAgBV,GAAMU,KAAKD,kBAC/CC,GAAQA,KAERhB,EAAEwP,cAAcxO,EAAK,KAAOA,EAAK,YAAcV,GAAMU,KAAK+P,mBAAqBzN,EAAKH,QAAQmD,kBAC5FhD,EAAKgC,WAAWtE,KAAKA,GACrBsC,EAAKkC,MAAMA,GAASlC,EAAKwG,gBACzBxG,EAAK4L,eAAgB,IAG7B8B,WAAY,SAAUxL,EAAOiI,GACzB,GAAIX,GAASvJ,KAAKL,QAAQ,GAAG6H,SAASxH,KAAKG,YAAY8B,GACnDsH,KACAA,EAAOW,SAAWA,IAG1BqD,WAAY,WAAA,GACJxN,GAAOC,KACP0N,IAAa3N,EAAKgC,WAAW4L,OAAO7Q,OACpC8Q,EAAgD,IAAjC7N,EAAK0E,SAASxC,QAAQnF,MACrC8Q,IAAgB7N,EAAK8L,WAGrB9L,EAAK4L,gBAAkB5L,EAAK8N,SAAWH,KACvC3N,EAAK8N,QAAS,EACd9N,EAAK4L,eAAgB,EACrB5L,EAAKgC,WAAW+L,OAAOrE,KAAK,WACxB1J,EAAK8N,QAAS,MAI1BE,SAAU,WACN,MAAO/N,MAAKyE,SAASuE,UAAYhJ,KAAK2L,eAE1CtK,YAAa,WACT,GAAItB,GAAOC,KAAML,EAAUI,EAAKJ,QAASC,EAAUG,EAAKH,QAASmC,EAAanC,EAAQmC,cACtFA,GAAaxC,EAAQwC,IAAgBtE,KAAMsE,GAAeA,EAC1DA,EAAWkI,OAAStK,EACpBoC,EAAWiM,SACLC,MAAOrO,EAAQkD,gBACfmL,MAAOrO,EAAQmD,iBAEjBhD,EAAKgC,YAAchC,EAAKmO,gBACxBnO,EAAKoO,qBAELpO,EAAKqO,iBAAmB1Q,EAAMqC,EAAKsO,UAAWtO,GAC9CA,EAAKuO,cAAgB5Q,EAAMqC,EAAK+M,UAAW/M,IAE/CA,EAAKgC,WAAahF,EAAMU,KAAK8Q,WAAWC,OAAOzM,GAAY0M,KAAKtQ,EAAU4B,EAAKqO,kBAAkBK,KAAK,QAAS1O,EAAKuO,gBAExH3M,OAAQ,WACJ,GAAI5B,GAAOC,KAAML,EAAUI,EAAKJ,QAAS+O,EAAS/O,EAAQkB,KAAK,QAAS8N,EAAOD,EAASjS,EAAE,IAAMiS,GAAU/O,EAAQ0I,QAAQ,OACtHsG,GAAK,KACL5O,EAAK6O,cAAgB,WACjBC,WAAW,WACP9O,EAAKkC,MAAMlC,EAAKwG,gBAChBxG,EAAK8B,kBAGb9B,EAAK+O,MAAQH,EAAKrD,GAAG,QAASvL,EAAK6O,iBAG3CG,WAAY,WACR,GAAI9M,GAAQjC,KAAKJ,QAAQqC,OAASjC,KAAKL,QAAQkL,KAC/C7K,MAAKqN,KAAOrN,KAAKuG,eAAiBvG,KAAKoN,iBAAiBnL,IAE5DmL,iBAAkB,SAAUnL,GACxB,GAAIlC,GAAOC,IAcX,OAbc,QAAViC,EACAA,KACOA,GAASxF,EAAEwP,cAAchK,GAChCA,GAASlC,EAAKgH,OAAO9E,IACdA,GAASxF,EAAEwP,cAAchK,EAAM,IACtCA,EAAQxF,EAAEuS,IAAI/M,EAAO,SAAUgF,GAC3B,MAAOlH,GAAKgH,OAAOE,KAEf1H,EAAQ0C,IAAYA,YAAiBzE,GAEtC+B,EAAQ0C,KACfA,EAAQA,EAAMuE,SAFdvE,GAASA,GAINA,GAEX+H,QAAS,WACL,GAAIjK,GAAOC,KAAMiC,EAAQlC,EAAKkC,OACzBtF,GAAQsF,EAAOlC,EAAKsN,QACrBtN,EAAKsN,KAAOpL,EAAMuE,QAClBzG,EAAK+J,QAAQ5L,GACb6B,EAAKJ,QAAQmK,QAAQ5L,IAEzB6B,EAAKqE,MAAMuF,WACX5J,EAAKuC,aAAaL,EAAMnF,QACxBiD,EAAKyC,0BAETyM,OAAQ,SAAUvI,GAAV,GACA3G,GAAOC,KACP6H,EAAOnB,EAAEmB,IACbnB,GAAE+B,iBACF1I,EAAKmP,QAAQrH,GAAM4B,KAAK,WACpB1J,EAAK6L,YAAc/D,EACnB9H,EAAKiK,UACLjK,EAAKgK,YAGboF,eAAgB,WACZ,MAAOnP,MAAK4L,aAAenP,EAAEuD,KAAKyE,SAAS8C,QAAQvH,KAAKoP,sBAAsBtS,OAAS,KAAOkD,KAAKyE,SAASiE,SAEhH0G,oBAAqB,WACjB,MAAOpP,MAAKyE,SAAS4K,kBAAoBrP,KAAKyE,SAAS6K,kBAE3D9D,SAAU,SAAU9E,GAAV,GASF6I,GAiGIC,EACAC,EA+DAC,EAzKJ3P,EAAOC,KACP2P,EAAMjJ,EAAEkJ,QACRvG,EAAMtJ,EAAKkF,YACXR,EAAW1E,EAAK0E,SAChBoL,EAAW9P,EAAKa,MAAMiK,MACtBiF,EAAQ/S,EAAMuL,QAAQwH,MAAM/P,EAAK6F,SACjCI,EAAUjG,EAAKqE,MAAM4B,UACrB+J,EAAM,CAKV,IAHIJ,IAAQxS,EAAK6S,QACbhQ,KAAKiQ,oBAAqB,GAE1BN,IAAQxS,EAAK+S,KAAM,CAEnB,GADAxJ,EAAE+B,kBACGzC,EAKD,MAJAjG,GAAK4I,OACAlE,EAASiE,SACVjE,EAASkI,aAEb,CAEAlI,GAASiE,UACJ3I,EAAK6L,aAAelF,EAAEyJ,WACvBpQ,EAAK6L,YAAcnH,EAASiE,QAC5BqH,MAEJR,EAAgB9K,EAAS2L,gBAAgBrQ,EAAKoP,iBAAiBkB,SAC/D5L,EAAS6L,YACJ7L,EAASiE,QAGNhC,EAAEyJ,WACFnQ,KAAKiQ,oBAAqB,EAC1BlQ,EAAKwQ,aAAahB,EAAe9K,EAAS2L,gBAAgB3L,EAASiE,QAAQ2H,SAAWN,IAJ1FtL,EAAS+L,aAQb/L,EAASkI,iBAEV,IAAIgD,IAAQxS,EAAKsT,GAChBzK,KACKjG,EAAK6L,aAAelF,EAAEyJ,WACvBpQ,EAAK6L,YAAcnH,EAASiE,QAC5BqH,EAAM,GAEVR,EAAgB9K,EAAS2L,gBAAgBrQ,EAAKoP,iBAAiBkB,SAC/D5L,EAASiM,YACJjM,EAASiE,QAGNhC,EAAEyJ,WACFnQ,KAAKiQ,oBAAqB,EAC1BlQ,EAAKwQ,aAAahB,EAAe9K,EAAS2L,gBAAgB3L,EAASiE,QAAQ2H,SAAWN,IAJ1FhQ,EAAK+I,SAQbpC,EAAE+B,qBACC,IAAIkH,IAAQxS,EAAKwT,OAASb,GAASH,IAAQxS,EAAKyT,OAASd,EACvDD,IACDxG,EAAMA,EAAMA,EAAIwH,OAASpU,EAAEsD,EAAKkB,QAAQ,GAAG6P,WACvCzH,EAAI,IACJtJ,EAAKgF,WAAWsE,QAGrB,IAAIsG,IAAQxS,EAAKyT,QAAUd,GAASH,IAAQxS,EAAKwT,MAAQb,GACvDD,GAAYxG,IACbA,EAAMA,EAAI0H,OACVhR,EAAKgF,WAAWsE,EAAI,GAAKA,EAAM,WAEhC,IAAI3C,EAAEsK,UAAYtK,EAAEuK,QAAUtB,IAAQxS,EAAKE,GAAK2I,IAAYjG,EAAKH,QAAQiE,QAC5E7D,KAAKiQ,oBAAqB,EACtBjQ,KAAKoP,sBAAsBtS,SAAW2H,EAAS8C,QAAQzK,SACvDiD,EAAK6L,YAAc,MAEnBnH,EAAS8C,QAAQzK,QACjBiD,EAAKwQ,aAAa,EAAG9L,EAAS8C,QAAQzK,OAAS,OAEhD,IAAI6S,IAAQxS,EAAK6S,OAAShK,EAAS,CACtC,IAAKvB,EAASiE,QACV,MAGJ,IADAhC,EAAE+B,iBACEzI,KAAKiQ,qBACLjQ,KAAKiQ,oBAAqB,EACtBxL,EAASiE,QAAQN,SAAS5J,IAE1B,MADAuB,GAAKgK,SACL,CAGRhK,GAAKmP,QAAQzK,EAASiE,SAASe,KAAK,WAChC1J,EAAKiK,UACLjK,EAAKgK,eAEN,IAAI4F,IAAQxS,EAAK+T,UAAYxK,EAAEsK,SAAWhL,EACzCjG,EAAK6L,aAAenH,EAASiE,SAAWjE,EAASiE,QAAQ,KAAO3I,EAAK6L,YAAY,KACjF7L,EAAK6L,YAAc,MAElBnP,EAAEgI,EAASiE,SAASN,SAAS5J,KAC9BuB,EAAK6L,YAAcnH,EAASiE,SAEhC3I,EAAKmP,QAAQzK,EAASiE,SAASe,KAAK,WAChC1J,EAAKiK,YAETtD,EAAE+B,qBACC,IAAIkH,IAAQxS,EAAK+T,UAAYxK,EAAEyJ,UAAYnK,EAC1CwJ,EAAc/K,EAAS2L,gBAAgBrQ,EAAKoP,kBAC5CM,EAAehL,EAAS2L,gBAAgB3L,EAASiE,SACjD8G,IAAgB9S,GAAa+S,IAAiB/S,GAC9CqD,EAAKwQ,aAAaf,EAAaC,GAEnC/I,EAAE+B,qBACC,IAAIkH,IAAQxS,EAAKgU,IAChBnL,EACAU,EAAE+B,kBAEF1I,EAAKkB,QAAQuG,WAAWoD,KAAK,SAAUlD,EAAO2B,GAC1CtJ,EAAKqJ,WAAW3M,EAAE4M,IAAM,KAE5BtJ,EAAKiK,WAETjK,EAAK+I,YACF,IAAI6G,IAAQxS,EAAKiU,KAChBpL,EACKvB,EAASiE,SAGNhC,EAAEsK,SAAWtK,EAAEyJ,WAAapQ,EAAKH,QAAQiE,SACzC9D,EAAKwQ,aAAa9L,EAAS2L,gBAAgB3L,EAASiE,QAAQ,IAAK,GAErEjE,EAASkI,cALT5M,EAAK+I,QAOD+G,IACRxG,EAAMtJ,EAAKkB,QAAQ,GAAGoQ,WAClBhI,GACAtJ,EAAKgF,WAAWtI,EAAE4M,SAGvB,IAAIsG,IAAQxS,EAAKmU,IAChBtL,EACKvB,EAASiE,SAGNhC,EAAEsK,SAAWtK,EAAEyJ,WAAapQ,EAAKH,QAAQiE,SACzC9D,EAAKwQ,aAAa9L,EAAS2L,gBAAgB3L,EAASiE,QAAQ,IAAKjE,EAAS9E,QAAQ6H,WAAW1K,OAAS,GAE1G2H,EAAS+L,aALTzQ,EAAK+I,QAOD+G,IACRxG,EAAMtJ,EAAKkB,QAAQ,GAAG6P,UAClBzH,GACAtJ,EAAKgF,WAAWtI,EAAE4M,SAGvB,IAAKsG,IAAQxS,EAAKoU,QAAU5B,IAAQxS,EAAKqU,WAAe3B,GAcpD9P,EAAKqE,MAAM4B,WAAc2J,IAAQxS,EAAKsU,UAAY9B,IAAQxS,EAAKuU,QAKtEjM,aAAa1F,EAAK4F,gBAClBkJ,WAAW,WACP9O,EAAK4R,WAET5R,EAAK+K,YARLpE,EAAE+B,iBACEiH,EAAYC,IAAQxS,EAAKsU,SAAW,KACxChN,EAASmN,WAAWlC,EAAYjL,EAASoN,qBAjB4B,CAErE,GADA9R,EAAKwE,OAAS1G,EACe,WAAzBkC,EAAKH,QAAQ8C,QAIb,MAHA3C,GAAK4K,uBACL5K,EAAKiK,UACLjK,EAAKgK,SACL,CAEA4F,KAAQxS,EAAKqU,WAAcnI,IAC3BA,EAAM5M,EAAEsD,EAAKkB,QAAQ,GAAG6P,YAExBzH,GAAOA,EAAI,IACXtJ,EAAKqJ,WAAWC,GAAK,KAcjCyD,UAAW,WACP,GAAI/M,GAAOC,IACXyF,cAAa1F,EAAK2F,OAClB3F,EAAKa,MAAMC,KAAK,aAAa,GAC7Bd,EAAK+R,SAASzM,SAAS5G,GACvBsB,EAAK8L,UAAW,EAChB9L,EAAK2F,MAAQ,KACb3F,EAAKyC,0BAETuP,iBAAkB,WACd/R,KAAKY,MAAMC,KAAK,aAAa,GAC7Bb,KAAK8R,SAAS5M,YAAYzG,GAC1BuB,KAAK+K,cAETsD,UAAW,WACP,GAAItO,GAAOC,IACXD,GAAK8L,UAAW,EACZ9L,EAAK2F,QAGT3F,EAAK2F,MAAQmJ,WAAWnR,EAAMqC,EAAKgS,iBAAkBhS,GAAO,OAEhE8B,aAAc,SAAUmQ,EAAMC,GAAhB,GACNlS,GAAOC,KACPY,EAAQb,EAAKa,MACbsR,EAAS5U,IACTyD,EAAchB,EAAKH,QAAQmB,YAC3BkM,EAAarM,EAAMiK,MACnBsH,EAAWvR,EAAM,KAAOsR,EACxBE,EAAWnF,EAAWnQ,MACrBqV,KAAYpS,EAAKH,QAAQgD,WAAaqK,IAAelM,IACtDqR,EAAW,EACXnF,EAAa,IAEb+E,IAAStV,IACTsV,GAAO,EACHpR,EAAM,KAAOsR,IACbF,GAAQjS,EAAK0E,SAASc,oBAAoB,KAGlDxF,EAAKsS,MAAQpF,EACbrM,EAAMyK,YAAY,aAAc2G,GAAMnH,IAAImH,EAAOjR,EAAckM,GAC3DkF,IAAaF,GACblV,EAAMuV,MAAM1R,EAAM,GAAIwR,EAAUA,GAEpCrS,EAAK4R,UAETA,OAAQ,WACJ,GAA+IY,GAA3IxS,EAAOC,KAAM4F,EAAU7F,EAAK6F,QAAQR,KAAK,uBAAwBoN,EAAe5M,EAAQ6M,QAASC,EAAO3S,EAAK4S,MAAMC,KAAK7S,EAAKa,MAAMiK,MAClIjF,GAAQxD,GAAG,YAKZmQ,EAAYG,EAAKD,QAAU,IAJ3BC,EAAKG,SAASC,SAASC,iBACvBP,EAAeD,EAAYG,EAAKD,QAAU,GAC1CC,EAAKG,SAASjN,IAIlB7F,EAAKa,MAAM6R,MAAMF,EAAYC,EAAeA,EAAeD,IAE/DS,QAAS,SAAUC,EAAWC,EAAUhJ,GACpC,GAAIX,GAAS,SAeb,OAdI0J,KAAcvW,IACduW,GAAa,GACTA,EAAUE,QAAQ,YAClBF,EAAYA,EAAUG,QAAQ9T,EAAY,WAE9CiK,GAAU,WAAa0J,EAAY,KAEnC/I,IACAX,GAAU,aAEdA,GAAU,IACN2J,IAAaxW,IACb6M,GAAUxM,EAAMsW,WAAWH,IAExB3J,GAAU,aAErBrC,QAAS,SAAUzJ,GAAV,GAID6V,GAEArM,EACAhF,EACAqF,EAIAiM,EACA1M,EAZA2M,EAAgBxT,KAAKyE,SAASc,oBAC9BkO,EAASzT,KAAKyE,SAASxC,QACvBnF,EAASW,EAAKX,OAEd8C,EAAU,EASd,KALI6T,EAAO3W,SAAW0W,EAAc1W,SAChC0W,EAAgBxT,KAAK0T,oBAAoBD,IAEzCF,KACA1M,KACCS,EAAM,EAAGA,EAAMxK,EAAQwK,IACxBL,EAAWxJ,EAAK6J,GAChBrF,EAAQjC,KAAK+G,OAAOE,GACpBqM,EAAgBtT,KAAK2T,mBAAmB1R,EAAOuR,GAC3CF,QACAE,EAAcI,OAAON,EAAe,GAExCzM,EAAW5E,GAASqF,EACpB1H,GAAWI,KAAKgT,QAAQ/Q,EAAOjC,KAAK6T,MAAM5M,GAAWqM,OAEzD,IAAIE,EAAc1W,OACd,IAAKwK,EAAM,EAAGA,EAAMkM,EAAc1W,OAAQwK,IACtCL,EAAWuM,EAAclM,GACzBrF,EAAQjC,KAAK+G,OAAOE,GACpBsM,EAAOtR,GAASnF,EAChB+J,EAAW5E,GAASnF,EACpBA,GAAU,EACV8C,GAAWI,KAAKgT,QAAQ/Q,EAAOjC,KAAK6T,MAAM5M,IAAW,EAG7DjH,MAAKI,eAAiBmT,EACtBvT,KAAKG,YAAc0G,EACnB7G,KAAKL,QAAQgI,KAAK/H,IAEtB8T,oBAAqB,SAAUD,GAAV,GAIb5L,GACKP,EAJLwM,EAAa9T,KAAKJ,QAAQmD,eAC1BgR,EAAY/T,KAAKJ,QAAQkD,cACzBkR,IAEJ,KAAS1M,EAAM,EAAGA,EAAMmM,EAAO3W,OAAQwK,IACnCO,KACAA,EAAKiM,GAAcL,EAAOnM,GAC1BO,EAAKkM,GAAaN,EAAOnM,GACzB0M,EAAOC,KAAKpM,EAEhB,OAAOmM,IAEXL,mBAAoB,SAAU1R,EAAOuR,GAGjC,IAHgB,GACZ1M,GAAc9G,KAAK+G,OACnBO,EAAM,EACHA,EAAMkM,EAAc1W,OAAQwK,IAC/B,GAAIrF,IAAU6E,EAAY0M,EAAclM,IACpC,MAAOA,EAGf,WAEJwD,QAAS,WACL,GAAI/K,GAAOC,IACXyF,cAAa1F,EAAK4F,gBAClB5F,EAAK4F,eAAiBkJ,WAAW,WAC7B,GAAI5M,GAAQlC,EAAKiN,aACbjN,GAAKsS,QAAUpQ,IACflC,EAAKsS,MAAQpQ,EACblC,EAAKmU,OAAOjS,GACZlC,EAAKyC,2BAEVzC,EAAKH,QAAQ6D,QAEpBjB,uBAAwB,WAChBxC,KAAKiC,QAAQnF,QAAUkD,KAAKY,MAAMiK,OAAS7K,KAAKY,MAAMiK,QAAU7K,KAAKJ,QAAQmB,YAC7Ef,KAAKmU,aAELnU,KAAK+K,cAGbiB,cAAe,WACX,MAAOhM,MAAKoU,mBAAqBlX,EAAK+C,GAAG+L,cAAc9L,KAAKF,OAEhEoU,gBAAiB,WACb,GAAIC,GAAMrU,KAAKJ,QAAQ8D,gBACvB,OAAe,QAAR2Q,GAAgBA,EAAMrU,KAAKyE,SAASxC,QAAQnF,QAEvDwX,iBAAkB,SAAUC,GACxB,GAAIxU,GAAOC,IACXD,GAAKyU,QAAQD,EAAK,WACd,OACIE,SAAU1U,EAAKkB,QAAQ,GAAGuG,SAC1B/J,KAAMhB,EAAEuS,IAAIjP,EAAKuF,YAAa,SAAU2B,GACpC,OAASA,SAAUA,SAKnCyN,qBAAsB,SAAU1N,EAAOI,GAC/BpH,KAAKwE,eAAewC,OAAShH,KAAKwE,eAAewC,MAAMlK,SAAWsK,EAAQtK,QAAUkD,KAAKwE,eAAe4C,SAAWpH,KAAKwE,eAAe4C,QAAQtK,SAAWkK,EAAMlK,OAChKkD,KAAKwE,gBAAiB,GAEtBxE,KAAKyE,SAASkQ,qBAAuB3U,KAAKqN,KAAK7G,QAC/CxG,KAAKwE,gBACDwC,MAAOA,EACPI,QAASA,KAIrBD,aAAc,SAAUH,EAAOI,GAAjB,GAKNwN,GACAC,EACAvN,EANAvH,EAAOC,KACP8U,EAAQ/U,EAAKgC,WAAW+S,QACxB7T,EAAUlB,EAAKkB,QACf8T,EAAShV,EAAKgH,MAIlB,IAAI/G,KAAKwE,eAEL,MADAxE,MAAK0U,qBAAqB1N,EAAOI,GACjC,CAGJ,IADArH,EAAKuU,iBAAiB,WACO,aAAzBvU,EAAKH,QAAQ8C,QAAwB,CACrC,IAAK4E,EAAMF,EAAQtK,OAAS,EAAGwK,KAAUA,IACrCsN,EAAcxN,EAAQE,GAClBrG,EAAQuG,WAAW1K,SACnBmE,EAAQ,GAAG+T,YAAY/T,EAAQ,GAAGuG,SAASoN,EAAYjL,WACvD5J,EAAK0N,WAAWsH,EAAOH,EAAY3N,WAAW,GAGtD,KAAKK,EAAM,EAAGA,EAAMN,EAAMlK,OAAQwK,IAC9BuN,EAAY7N,EAAMM,GAClBrG,EAAQgU,OAAOlV,EAAKgE,YAAY8Q,EAAU5N,WAC1ClH,EAAK0N,WAAWsH,EAAOF,EAAU5N,WAAW,OAE7C,CAKH,MAJKlH,EAAKmV,WAAanV,EAAKmV,UAAYJ,KACpC/U,EAAKmV,UAAYJ,GAErB9U,KAAKsK,qBACAhD,EAAMF,EAAQtK,OAAS,EAAGwK,KAAUA,IACrCvH,EAAK0N,WAAWsH,EAAO3N,EAAQE,GAAKL,WAAW,EAEnD,KAAKK,EAAM,EAAGA,EAAMN,EAAMlK,OAAQwK,IAC9BvH,EAAK0N,WAAWsH,EAAO/N,EAAMM,GAAKL,WAAW,GAGrDlH,EAAKuU,iBAAiB,WACtBvU,EAAK8B,gBAETyI,mBAAoB,WAAA,GACZvK,GAAOC,KACPyT,EAAS1T,EAAKkC,QACd6S,EAAQ/U,EAAKgC,WAAW+S,QACxB7T,EAAUlB,EAAKkB,OACnBA,GAAQ0G,KAAK,IACT8L,EAAO3W,QACPmE,EAAQgU,OAAOlV,EAAKgE,aAChB0P,OAAQA,EACRnO,UAAWvF,EAAKuF,YAChB6P,SAAUpV,EAAKmV,UACfE,aAAcN,MAI1B5F,QAAS,SAAUlK,GAAV,GAKDjF,GACA0E,EACAwC,EACAoO,EAPAC,EAAW7Y,EAAE8Y,WAAWC,SAC5B,OAAKxQ,IAGDjF,EAAOC,KACPyE,EAAW1E,EAAK0E,SAChBwC,EAAWxC,EAASgR,gBAAgBhR,EAAS2L,gBAAgBpL,IAC7DqQ,EAAarQ,EAAUoD,SAAS,oBAChCrI,EAAKwE,SAAWxG,IAChBgC,EAAKwE,OAAS,IAEbxE,EAAKqU,mBAAsBiB,EAG5BtV,EAAK+J,QAAQuL,EAAahX,EAAWD,GACjC6I,SAAUA,EACVY,KAAM7C,KAEVjF,EAAKgK,SACEuL,IAEXvV,EAAKyE,gBAAiB,EACfC,EAASwF,OAAOjF,GAAWyE,KAAK,WACnC1J,EAAK8B,eACD9B,EAAKwE,SAAWzG,IAChBiC,EAAKwE,OAAS1G,EACd4G,EAASsE,YAAW,OAdjBuM,GAVAA,GA4Bf/E,aAAc,SAAUmF,EAAYC,GAAtB,GAMNhP,GA+BIe,EApCJ3H,EAAOC,KACPyE,EAAWzE,KAAKyE,SAChBf,EAAmB1D,KAAKJ,QAAQ8D,iBAChCkS,EAAU5V,KAAKoP,sBAAsB5I,QACrCqP,KAEAC,EAAgB,SAAUF,GAC1BnR,EAASwF,OAAO2L,GAASnM,KAAK,WAC1BmM,EAAQG,QAAQ,SAAUrO,GAAV,GACRT,GAAWxC,EAASgR,gBAAgB/N,GACpC1C,EAAYP,EAAS9E,QAAQ6H,WAAWE,GACxC2N,EAAa5Y,EAAEuI,GAAWoD,SAAS,mBACvCrI,GAAK+J,QAAQuL,EAAajX,EAASC,GAC/B4I,SAAUA,EACVY,KAAMpL,EAAEuI,OAGhBjF,EAAKiK,YAGb,IAAI4L,EAAQ9Y,OAAS,IAAM6Y,EAAWD,EAClC,MAAOI,GAAcF,EAEzB,IAAIF,EAAaC,EACb,IAAKhP,EAAI+O,EAAY/O,GAAKgP,EAAUhP,IAChCkP,EAAgB5B,KAAKtN,OAGzB,KAAKA,EAAI+O,EAAY/O,GAAKgP,EAAUhP,IAChCkP,EAAgB5B,KAAKtN,EAM7B,KAHyB,OAArBjD,GAA6BmS,EAAgB/Y,OAAS4G,IACtDmS,EAAkBA,EAAgBrP,MAAM,EAAG9C,IAE1CiD,EAAI,EAAGA,EAAIkP,EAAgB/Y,OAAQ6J,IAChCe,EAAQmO,EAAgBlP,GACxB3G,KAAKoP,sBAAsB+D,QAAQzL,OACnCkO,EAAQ3B,KAAKvM,GAEbkO,EAAQhC,OAAOgC,EAAQzC,QAAQzL,GAAQ,EAG/C,OAAKkO,GAAQ9Y,QAGbiD,EAAKyE,gBAAiB,EACfsR,EAAcF,IAJrB,GAMJrV,OAAQ,WAAA,GACAR,GAAOC,KACPL,EAAUI,EAAKJ,QACfqW,EAAYrW,EAAQ,GAAGqW,UACvBpV,EAAQb,EAAKkW,cAAczO,SAAS,gBACnC5G,GAAM,KACPA,EAAQnE,EAAE,iDAAiDoW,SAAS9S,EAAKkW,gBAE7EtW,EAAQwF,WAAW,aACnBpF,EAAKmW,SAAWnW,EAAKa,MAAQA,EAAMC,MAC/BsV,UAAaH,EACbI,aAAgBrX,EAChBsX,KAAQ,UACRC,MAAS3W,EAAQ,GAAG2W,MACpBC,iBAAiB,EACjBC,gBAAiB,UACjBC,oBAAqB,UAG7BnW,SAAU,WACN,GAAIP,GAAOC,KAAMiB,EAAUlB,EAAKkW,cAAczO,SAAS,KAClDvG,GAAQ,KACTA,EAAUxE,EAAE,2CAA2CoW,SAAS9S,EAAKkW,gBAEzElW,EAAKkB,QAAUA,GAEnBO,aAAc,WAAA,GAONkV,GANA3W,EAAOC,KACPJ,EAAUG,EAAKH,QACfmE,EAAcnE,EAAQmE,YACtB4S,EAAgB/W,EAAQmC,WACxB6U,EAAiC,aAApBhX,EAAQ8C,QACrBU,EAAYxD,EAAQuD,SAASC,SAE7BrD,GAAKJ,QAAQ,GAAG7C,SAAW6Z,IAC3B/W,EAAQkD,cAAgBlD,EAAQkD,eAAiB,OACjDlD,EAAQmD,eAAiBnD,EAAQmD,gBAAkB,SAEvD2T,EAAkBE,EAAa7Z,EAAMqJ,SAAS,KAAOrJ,EAAMsJ,KAAKzG,EAAQkD,cAAe,QAAU,KAAO+T,cAAc,IAAW9Z,EAAMqJ,SAAS,oBAAsBhD,GACtKrD,EAAK6H,gBAAkB7D,EAAcA,EAAchH,EAAMqJ,SAASrC,GAAe2S,EACjF3W,EAAKgE,YAAc,SAAUtG,GACzB,MAAO,qGAAuGsG,EAAYtG,GAAQ,kEAAyEmZ,EAAa,kBAAoB7W,EAAKH,QAAQuD,SAASG,UAAY,iBAAmBvD,EAAKH,QAAQuD,SAASG,UAAY,QAAU,2CAA6CsT,EAAa,YAAc,qBAAuB,0BAGpbnW,QAAS,WACLT,KAAK8R,SAAWrV,EAAE,mCAAqCgC,EAAc,aAAaqY,YAAY9W,KAAKY,QAEvGF,aAAc,WACVxD,EAAK+C,GAAGS,aAAaR,KAAKF,MACtBA,KAAKJ,QAAQsE,cACblE,KAAK8F,OAAOgR,YAAY9W,KAAKY,OAC7BZ,KAAK4F,QAAQP,SAAS,6BAG9B7E,eAAgB,WACZ,GAAIuW,GAAiBha,EAAMia,kBAAkBhX,KAAKY,MAAM,GAAIpB,EAC5DuX,GAAepN,SAAW,WAC1BoN,EAAeE,WAAa,SAC5BF,EAAeG,UACfH,EAAeI,WACfnX,KAAK2S,MAAQlW,EAAE,WAAW2a,IAAIL,GAAgBlE,SAAS7S,KAAK4F,UAEhEvF,SAAU,WACN,GAAIN,GAAOC,KAAML,EAAUI,EAAKJ,QAASiG,EAAUjG,EAAQ0X,OAAO,qBAC7DzR,GAAQ,KACTA,EAAUjG,EAAQ2X,KAAK,4DAA4DD,SACnFzR,EAAQ,GAAG2R,MAAMC,QAAU7X,EAAQ,GAAG4X,MAAMC,QAC5C5R,EAAQ,GAAG0Q,MAAQ3W,EAAQ,GAAG2W,MAC9B7Z,EAAE,mFAAmFgb,aAAa9X,IAEtGI,EAAK6F,QAAUA,EAAQP,SAAS1F,EAAQ,GAAG+X,WAAWN,IAAI,UAAW,IACrErX,EAAKkW,cAAgBxZ,EAAEmJ,EAAQ,GAAGyL,aAEtC/O,aAAc,SAAUL,GAAV,GACNlC,GAAOC,KACPwT,EAAgBzT,EAAKkB,QAAQuG,UAC7BvF,IAASuR,EAAc1W,QACvB0W,EAAc3S,KAAK,eAAgBoB,IAG3Cb,aAAc,WACV,GAAIrB,GAAOC,IACXD,GAAK4X,GAAG9W,KAAK,YAAcd,EAAK6X,mBAA6B,SAAR,SAmB7D3a,GAAG4a,OAAOpY,IACZzC,OAAOD,MAAM+a,QACR9a,OAAOD,OACE,kBAAVP,SAAwBA,OAAOub,IAAMvb,OAAS,SAAUwb,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.multiselect.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.multiselect', [\n 'kendo.list',\n 'kendo.mobile.scroller',\n 'kendo.virtuallist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'multiselect',\n name: 'MultiSelect',\n category: 'web',\n description: 'The MultiSelect widget allows the selection from pre-defined values.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, keys = $.extend({ A: 65 }, kendo.keys), activeElement = kendo._activeElement, ObservableArray = kendo.data.ObservableArray, proxy = $.proxy, ID = 'id', LI = 'li', ACCEPT = 'accept', FILTER = 'filter', REBIND = 'rebind', OPEN = 'open', CLOSE = 'close', CHANGE = 'change', PROGRESS = 'progress', SELECT = 'select', DESELECT = 'deselect', ARIA_DISABLED = 'aria-disabled', FOCUSEDCLASS = 'k-state-focused', SELECTEDCLASS = 'k-state-selected', HIDDENCLASS = 'k-hidden', HOVERCLASS = 'k-state-hover', STATEDISABLED = 'k-state-disabled', NOCLICKCLASS = 'k-no-click', DISABLED = 'disabled', READONLY = 'readonly', AUTOCOMPLETEVALUE = 'off', ns = '.kendoMultiSelect', CLICK = 'click' + ns, KEYDOWN = 'keydown' + ns, MOUSEENTER = 'mouseenter' + ns, MOUSELEAVE = 'mouseleave' + ns, HOVEREVENTS = MOUSEENTER + ' ' + MOUSELEAVE, quotRegExp = /\"/g, isArray = $.isArray, styles = [\n 'font-family',\n 'font-size',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'letter-spacing',\n 'text-transform',\n 'line-height'\n ];\n var MultiSelect = List.extend({\n init: function (element, options) {\n var that = this, id, disabled;\n that.ns = ns;\n List.fn.init.call(that, element, options);\n that._optionsMap = {};\n that._customOptions = {};\n that._wrapper();\n that._tagList();\n that._input();\n that._textContainer();\n that._loader();\n that._clearButton();\n that._tabindex(that.input);\n element = that.element.attr('multiple', 'multiple').hide();\n options = that.options;\n if (!options.placeholder) {\n options.placeholder = element.data('placeholder');\n }\n id = element.attr(ID);\n if (id) {\n that._tagID = id + '_tag_active';\n id = id + '_taglist';\n that.tagList.attr(ID, id);\n that.input.attr('aria-describedby', id);\n }\n that._initialOpen = true;\n that._ariaLabel();\n that._ariaSetLive();\n that._dataSource();\n that._ignoreCase();\n that._popup();\n that._tagTemplate();\n that.requireValueMapper(that.options);\n that._initList();\n that._reset();\n that._enable();\n that._placeholder();\n if (options.autoBind) {\n that.dataSource.fetch();\n } else if (options.value) {\n that._preselect(options.value);\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n that._ariaSetSize(that.value().length);\n kendo.notify(that);\n that._toggleCloseVisibility();\n },\n options: {\n name: 'MultiSelect',\n tagMode: 'multiple',\n enabled: true,\n autoBind: true,\n autoClose: true,\n highlightFirst: true,\n dataTextField: '',\n dataValueField: '',\n filter: 'startswith',\n ignoreCase: true,\n minLength: 1,\n messages: {\n 'singleTag': 'item(s) selected',\n 'clear': 'clear',\n 'deleteTag': 'delete',\n 'noData': 'No data found.'\n },\n enforceMinLength: false,\n delay: 100,\n value: null,\n maxSelectedItems: null,\n placeholder: '',\n height: 200,\n animation: {},\n virtual: false,\n itemTemplate: '',\n tagTemplate: '',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n clearButton: true,\n autoWidth: false,\n popup: null\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE,\n SELECT,\n DESELECT,\n 'filtering',\n 'dataBinding',\n 'dataBound'\n ],\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._state = '';\n this._dataSource();\n this.persistTagList = false;\n this.listView.setDataSource(this.dataSource);\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n List.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria(this.tagList.attr(ID));\n this._tagTemplate();\n this._placeholder();\n this._clearButton();\n },\n currentTag: function (candidate) {\n var that = this;\n if (candidate !== undefined) {\n if (that._currentTag) {\n that._currentTag.removeClass(FOCUSEDCLASS).removeAttr(ID);\n that._currentTag.find('.k-select').attr('aria-hidden', true);\n that.input.removeAttr('aria-activedescendant');\n }\n if (candidate) {\n candidate.addClass(FOCUSEDCLASS).attr(ID, that._tagID);\n candidate.find('.k-select').removeAttr('aria-hidden');\n that.input.attr('aria-activedescendant', that._tagID);\n }\n that._currentTag = candidate;\n } else {\n return that._currentTag;\n }\n },\n dataItems: function () {\n return this.listView.selectedDataItems();\n },\n destroy: function () {\n var that = this, ns = that.ns;\n clearTimeout(that._busy);\n clearTimeout(that._typingTimeout);\n that.wrapper.off(ns);\n that.tagList.off(ns);\n that.input.off(ns);\n that._clear.off(ns);\n List.fn.destroy.call(that);\n },\n _activateItem: function () {\n if (this.popup.visible()) {\n List.fn._activateItem.call(this);\n }\n this.currentTag(null);\n },\n _listOptions: function (options) {\n var that = this;\n var listOptions = List.fn._listOptions.call(that, $.extend(options, {\n selectedItemChange: proxy(that._selectedItemChange, that),\n selectable: 'multiple'\n }));\n var itemTemplate = this.options.itemTemplate || this.options.template;\n var template = listOptions.itemTemplate || itemTemplate || listOptions.template;\n if (!template) {\n template = '#:' + kendo.expr(listOptions.dataTextField, 'data') + '#';\n }\n listOptions.template = template;\n return listOptions;\n },\n _setListValue: function () {\n List.fn._setListValue.call(this, this._initialValues.slice(0));\n },\n _listChange: function (e) {\n var data = this.dataSource.flatView();\n var optionsMap = this._optionsMap;\n var valueGetter = this._value;\n if (this._state === REBIND) {\n this._state = '';\n }\n for (var i = 0; i < e.added.length; i++) {\n if (optionsMap[valueGetter(e.added[i].dataItem)] === undefined) {\n this._render(data);\n break;\n }\n }\n this._selectValue(e.added, e.removed);\n },\n _selectedItemChange: function (e) {\n var items = e.items;\n var context;\n var idx;\n for (idx = 0; idx < items.length; idx++) {\n context = items[idx];\n this.tagList.children().eq(context.index).children('span:first').html(this.tagTextTemplate(context.item));\n }\n },\n _wrapperMousedown: function (e) {\n var that = this;\n var notInput = e.target.nodeName.toLowerCase() !== 'input';\n var target = $(e.target);\n var closeButton = target.hasClass('k-select') || target.hasClass('k-icon');\n if (closeButton) {\n closeButton = !target.closest('.k-select').children('.k-i-arrow-60-down').length;\n }\n if (notInput && !(closeButton && kendo.support.mobileOS) && e.cancelable) {\n e.preventDefault();\n }\n if (!closeButton) {\n if (that.input[0] !== activeElement() && notInput) {\n that.input.focus();\n }\n if (that.options.minLength === 1) {\n that.open();\n }\n }\n },\n _inputFocus: function () {\n this._placeholder(false);\n this.wrapper.addClass(FOCUSEDCLASS);\n },\n _inputFocusout: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that.wrapper.removeClass(FOCUSEDCLASS);\n that._placeholder(!that.listView.selectedDataItems()[0], true);\n that.close();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n that.listView.skipUpdate(true);\n }\n if (that.listView.bound() && that.listView.isFiltered()) {\n that.persistTagList = true;\n that._clearFilter();\n }\n that.element.blur();\n },\n _removeTag: function (tag, shouldTrigger) {\n var that = this;\n var state = that._state;\n var position = tag.index();\n var listView = that.listView;\n var value = listView.value()[position];\n var dataItem = that.listView.selectedDataItems()[position];\n var customIndex = that._customOptions[value];\n var listViewChildren = listView.element[0].children;\n var option;\n var listViewChild;\n if (that.trigger(DESELECT, {\n dataItem: dataItem,\n item: tag\n })) {\n that._close();\n return;\n }\n if (customIndex === undefined && (state === ACCEPT || state === FILTER)) {\n customIndex = that._optionsMap[value];\n }\n var done = function () {\n that.currentTag(null);\n if (shouldTrigger) {\n that._change();\n }\n that._close();\n };\n if (customIndex === undefined && listView.select().length) {\n that.persistTagList = false;\n listView.select(listView.select()[position]).done(done);\n } else {\n option = that.element[0].children[customIndex];\n if (option) {\n option.selected = false;\n }\n listView.removeAt(position);\n listViewChild = listViewChildren[customIndex];\n if (listViewChild) {\n listViewChildren[customIndex].classList.remove('k-state-selected');\n }\n if (that.options.tagMode !== 'single') {\n tag.remove();\n } else {\n that._updateTagListHTML();\n }\n done();\n }\n },\n _tagListClick: function (e) {\n e.preventDefault();\n e.stopPropagation();\n var target = $(e.currentTarget);\n if (!target.children('.k-i-arrow-60-down').length) {\n this._removeTag(target.closest(LI), true);\n }\n },\n _clearValue: function () {\n var that = this;\n if (that.options.tagMode === 'single') {\n that._clearSingleTagValue();\n } else {\n that.tagList.children().each(function (index, tag) {\n that._removeTag($(tag), false);\n });\n }\n that.input.val('');\n that._search();\n that._change();\n that.focus();\n that._hideClear();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n }\n },\n _clearSingleTagValue: function () {\n var that = this;\n var persistTagList = that.persistTagList;\n if (persistTagList) {\n that.persistTagList = false;\n }\n that.listView.value([]);\n that.persistTagList = persistTagList;\n },\n _focusHandler: function () {\n this.input.focus();\n },\n _editable: function (options) {\n var that = this, disable = options.disable, readonly = options.readonly, wrapper = that.wrapper.off(ns), tagList = that.tagList.off(ns), input = that.element.add(that.input.off(ns));\n if (!readonly && !disable) {\n wrapper.removeClass(STATEDISABLED).removeClass(NOCLICKCLASS).on(HOVEREVENTS, that._toggleHover).on('mousedown' + ns + ' touchend' + ns, proxy(that._wrapperMousedown, that)).on(CLICK, proxy(that._focusHandler, that));\n that.input.on(KEYDOWN, proxy(that._keydown, that)).on('paste' + ns, proxy(that._search, that)).on('input' + ns, proxy(that._search, that)).on('focus' + ns, proxy(that._inputFocus, that)).on('focusout' + ns, proxy(that._inputFocusout, that));\n that._clear.on(CLICK + ' touchend' + ns, proxy(that._clearValue, that));\n input.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false);\n tagList.on(MOUSEENTER, LI, function () {\n $(this).addClass(HOVERCLASS);\n }).on(MOUSELEAVE, LI, function () {\n $(this).removeClass(HOVERCLASS);\n }).on(CLICK + ' touchend' + ns, 'li.k-button .k-select', proxy(that._tagListClick, that));\n } else {\n wrapper.toggleClass(STATEDISABLED, disable).toggleClass(NOCLICKCLASS, readonly);\n input.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n },\n _close: function () {\n var that = this;\n if (that.options.autoClose) {\n that.close();\n } else {\n that.popup.position();\n }\n },\n _filterSource: function (filter, force) {\n if (!force) {\n force = this._retrieveData;\n }\n this._retrieveData = false;\n List.fn._filterSource.call(this, filter, force);\n },\n close: function () {\n this._activeItem = null;\n this.input.removeAttr('aria-activedescendant');\n this.popup.close();\n },\n open: function () {\n var that = this;\n if (that._request) {\n that._retrieveData = false;\n }\n if (that._retrieveData || !that.listView.bound() || that._state === ACCEPT) {\n that._open = true;\n that._state = REBIND;\n that.listView.skipUpdate(true);\n that.persistTagList = that._initialOpen && !that.listView.bound() ? false : true;\n that._filterSource();\n that._focusItem();\n } else if (that._allowOpening()) {\n if (that._initialOpen && !that.options.autoBind && !that.options.virtual && that.options.value && !$.isPlainObject(that.options.value[0])) {\n that.value(that.value() || that._initialValues);\n }\n that.popup._hovered = true;\n that._initialOpen = false;\n that.popup.open();\n that._focusItem();\n }\n },\n toggle: function (toggle) {\n toggle = toggle !== undefined ? toggle : !this.popup.visible();\n this[toggle ? OPEN : CLOSE]();\n },\n refresh: function () {\n this.listView.refresh();\n },\n _listBound: function () {\n var that = this;\n var data = that.dataSource.flatView();\n var skip = that.listView.skip();\n that._render(data);\n that._renderFooter();\n that._renderNoData();\n that._toggleNoData(!data.length);\n that._resizePopup();\n if (that._open) {\n that._open = false;\n that.toggle(that._allowOpening());\n }\n that.popup.position();\n if (that.options.highlightFirst && (skip === undefined || skip === 0)) {\n that.listView.focusFirst();\n }\n if (that._touchScroller) {\n that._touchScroller.reset();\n }\n that._hideBusy();\n that._makeUnselectable();\n that.trigger('dataBound');\n },\n _inputValue: function () {\n var that = this;\n var inputValue = that.input.val();\n if (that.options.placeholder === inputValue) {\n inputValue = '';\n }\n return inputValue;\n },\n value: function (value) {\n var that = this;\n var listView = that.listView;\n var oldValue = listView.value().slice();\n var maxSelectedItems = that.options.maxSelectedItems;\n var clearFilters = listView.bound() && listView.isFiltered();\n if (value === undefined) {\n return oldValue;\n }\n that.persistTagList = false;\n that.requireValueMapper(that.options, value);\n value = that._normalizeValues(value);\n if (maxSelectedItems !== null && value.length > maxSelectedItems) {\n value = value.slice(0, maxSelectedItems);\n }\n if (clearFilters) {\n that._clearFilter();\n }\n listView.value(value);\n that._old = that._valueBeforeCascade = value.slice();\n if (!clearFilters) {\n that._fetchData();\n }\n that._ariaSetSize(that.value().length);\n that._toggleCloseVisibility();\n },\n _preselect: function (data, value) {\n var that = this;\n if (!isArray(data) && !(data instanceof kendo.data.ObservableArray)) {\n data = [data];\n }\n if ($.isPlainObject(data[0]) || data[0] instanceof kendo.data.ObservableObject || !that.options.dataValueField) {\n that.dataSource.data(data);\n that.value(value || that._initialValues);\n that._retrieveData = true;\n }\n },\n _setOption: function (value, selected) {\n var option = this.element[0].children[this._optionsMap[value]];\n if (option) {\n option.selected = selected;\n }\n },\n _fetchData: function () {\n var that = this;\n var hasItems = !!that.dataSource.view().length;\n var isEmptyArray = that.listView.value().length === 0;\n if (isEmptyArray || that._request) {\n return;\n }\n if (that._retrieveData || !that._fetch && !hasItems) {\n that._fetch = true;\n that._retrieveData = false;\n that.dataSource.read().done(function () {\n that._fetch = false;\n });\n }\n },\n _isBound: function () {\n return this.listView.bound() && !this._retrieveData;\n },\n _dataSource: function () {\n var that = this, element = that.element, options = that.options, dataSource = options.dataSource || {};\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource.select = element;\n dataSource.fields = [\n { field: options.dataTextField },\n { field: options.dataValueField }\n ];\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._progressHandler = proxy(that._showBusy, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(PROGRESS, that._progressHandler).bind('error', that._errorHandler);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(that._initialValues);\n that._placeholder();\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _initValue: function () {\n var value = this.options.value || this.element.val();\n this._old = this._initialValues = this._normalizeValues(value);\n },\n _normalizeValues: function (value) {\n var that = this;\n if (value === null) {\n value = [];\n } else if (value && $.isPlainObject(value)) {\n value = [that._value(value)];\n } else if (value && $.isPlainObject(value[0])) {\n value = $.map(value, function (dataItem) {\n return that._value(dataItem);\n });\n } else if (!isArray(value) && !(value instanceof ObservableArray)) {\n value = [value];\n } else if (isArray(value)) {\n value = value.slice();\n }\n return value;\n },\n _change: function () {\n var that = this, value = that.value();\n if (!compare(value, that._old)) {\n that._old = value.slice();\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n }\n that.popup.position();\n that._ariaSetSize(value.length);\n that._toggleCloseVisibility();\n },\n _click: function (e) {\n var that = this;\n var item = e.item;\n e.preventDefault();\n that._select(item).done(function () {\n that._activeItem = item;\n that._change();\n that._close();\n });\n },\n _getActiveItem: function () {\n return this._activeItem || $(this.listView.items()[this._getSelectedIndices().length - 1]) || this.listView.focus();\n },\n _getSelectedIndices: function () {\n return this.listView._selectedIndices || this.listView._selectedIndexes;\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var tag = that._currentTag;\n var listView = that.listView;\n var hasValue = that.input.val();\n var isRtl = kendo.support.isRtl(that.wrapper);\n var visible = that.popup.visible();\n var dir = 0;\n var activeItemIdx;\n if (key !== keys.ENTER) {\n this._multipleSelection = false;\n }\n if (key === keys.DOWN) {\n e.preventDefault();\n if (!visible) {\n that.open();\n if (!listView.focus()) {\n listView.focusFirst();\n }\n return;\n }\n if (listView.focus()) {\n if (!that._activeItem && e.shiftKey) {\n that._activeItem = listView.focus();\n dir = -1;\n }\n activeItemIdx = listView.getElementIndex(that._getActiveItem().first());\n listView.focusNext();\n if (!listView.focus()) {\n listView.focusLast();\n } else {\n if (e.shiftKey) {\n this._multipleSelection = true;\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus().first()) + dir);\n }\n }\n } else {\n listView.focusFirst();\n }\n } else if (key === keys.UP) {\n if (visible) {\n if (!that._activeItem && e.shiftKey) {\n that._activeItem = listView.focus();\n dir = 1;\n }\n activeItemIdx = listView.getElementIndex(that._getActiveItem().first());\n listView.focusPrev();\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.shiftKey) {\n this._multipleSelection = true;\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus().first()) + dir);\n }\n }\n }\n e.preventDefault();\n } else if (key === keys.LEFT && !isRtl || key === keys.RIGHT && isRtl) {\n if (!hasValue) {\n tag = tag ? tag.prev() : $(that.tagList[0].lastChild);\n if (tag[0]) {\n that.currentTag(tag);\n }\n }\n } else if (key === keys.RIGHT && !isRtl || key === keys.LEFT && isRtl) {\n if (!hasValue && tag) {\n tag = tag.next();\n that.currentTag(tag[0] ? tag : null);\n }\n } else if (e.ctrlKey && !e.altKey && key === keys.A && visible && !that.options.virtual) {\n this._multipleSelection = true;\n if (this._getSelectedIndices().length === listView.items().length) {\n that._activeItem = null;\n }\n if (listView.items().length) {\n that._selectRange(0, listView.items().length - 1);\n }\n } else if (key === keys.ENTER && visible) {\n if (!listView.focus()) {\n return;\n }\n e.preventDefault();\n if (this._multipleSelection) {\n this._multipleSelection = false;\n if (listView.focus().hasClass(SELECTEDCLASS)) {\n that._close();\n return;\n }\n }\n that._select(listView.focus()).done(function () {\n that._change();\n that._close();\n });\n } else if (key === keys.SPACEBAR && e.ctrlKey && visible) {\n if (that._activeItem && listView.focus() && listView.focus()[0] === that._activeItem[0]) {\n that._activeItem = null;\n }\n if (!$(listView.focus()).hasClass(SELECTEDCLASS)) {\n that._activeItem = listView.focus();\n }\n that._select(listView.focus()).done(function () {\n that._change();\n });\n e.preventDefault();\n } else if (key === keys.SPACEBAR && e.shiftKey && visible) {\n var activeIndex = listView.getElementIndex(that._getActiveItem());\n var currentIndex = listView.getElementIndex(listView.focus());\n if (activeIndex !== undefined && currentIndex !== undefined) {\n that._selectRange(activeIndex, currentIndex);\n }\n e.preventDefault();\n } else if (key === keys.ESC) {\n if (visible) {\n e.preventDefault();\n } else {\n that.tagList.children().each(function (index, tag) {\n that._removeTag($(tag), false);\n });\n that._change();\n }\n that.close();\n } else if (key === keys.HOME) {\n if (visible) {\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.ctrlKey && e.shiftKey && !that.options.virtual) {\n that._selectRange(listView.getElementIndex(listView.focus()[0]), 0);\n }\n listView.focusFirst();\n }\n } else if (!hasValue) {\n tag = that.tagList[0].firstChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if (key === keys.END) {\n if (visible) {\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.ctrlKey && e.shiftKey && !that.options.virtual) {\n that._selectRange(listView.getElementIndex(listView.focus()[0]), listView.element.children().length - 1);\n }\n listView.focusLast();\n }\n } else if (!hasValue) {\n tag = that.tagList[0].lastChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if ((key === keys.DELETE || key === keys.BACKSPACE) && !hasValue) {\n that._state = ACCEPT;\n if (that.options.tagMode === 'single') {\n that._clearSingleTagValue();\n that._change();\n that._close();\n return;\n }\n if (key === keys.BACKSPACE && !tag) {\n tag = $(that.tagList[0].lastChild);\n }\n if (tag && tag[0]) {\n that._removeTag(tag, true);\n }\n } else if (that.popup.visible() && (key === keys.PAGEDOWN || key === keys.PAGEUP)) {\n e.preventDefault();\n var direction = key === keys.PAGEDOWN ? 1 : -1;\n listView.scrollWith(direction * listView.screenHeight());\n } else {\n clearTimeout(that._typingTimeout);\n setTimeout(function () {\n that._scale();\n });\n that._search();\n }\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that.input.attr('aria-busy', false);\n that._loading.addClass(HIDDENCLASS);\n that._request = false;\n that._busy = null;\n that._toggleCloseVisibility();\n },\n _showBusyHandler: function () {\n this.input.attr('aria-busy', true);\n this._loading.removeClass(HIDDENCLASS);\n this._hideClear();\n },\n _showBusy: function () {\n var that = this;\n that._request = true;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(proxy(that._showBusyHandler, that), 100);\n },\n _placeholder: function (show, skipCaret) {\n var that = this;\n var input = that.input;\n var active = activeElement();\n var placeholder = that.options.placeholder;\n var inputValue = input.val();\n var isActive = input[0] === active;\n var caretPos = inputValue.length;\n if (!isActive || that.options.autoClose || inputValue === placeholder) {\n caretPos = 0;\n inputValue = '';\n }\n if (show === undefined) {\n show = false;\n if (input[0] !== active) {\n show = !that.listView.selectedDataItems()[0];\n }\n }\n that._prev = inputValue;\n input.toggleClass('k-readonly', show).val(show ? placeholder : inputValue);\n if (isActive && !skipCaret) {\n kendo.caret(input[0], caretPos, caretPos);\n }\n that._scale();\n },\n _scale: function () {\n var that = this, wrapper = that.wrapper.find('.k-multiselect-wrap'), wrapperWidth = wrapper.width(), span = that._span.text(that.input.val()), textWidth;\n if (!wrapper.is(':visible')) {\n span.appendTo(document.documentElement);\n wrapperWidth = textWidth = span.width() + 25;\n span.appendTo(wrapper);\n } else {\n textWidth = span.width() + 25;\n }\n that.input.width(textWidth > wrapperWidth ? wrapperWidth : textWidth);\n },\n _option: function (dataValue, dataText, selected) {\n var option = '';\n },\n _render: function (data) {\n var selectedItems = this.listView.selectedDataItems();\n var values = this.listView.value();\n var length = data.length;\n var selectedIndex;\n var options = '';\n var dataItem;\n var value;\n var idx;\n if (values.length !== selectedItems.length) {\n selectedItems = this._buildSelectedItems(values);\n }\n var custom = {};\n var optionsMap = {};\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n value = this._value(dataItem);\n selectedIndex = this._selectedItemIndex(value, selectedItems);\n if (selectedIndex !== -1) {\n selectedItems.splice(selectedIndex, 1);\n }\n optionsMap[value] = idx;\n options += this._option(value, this._text(dataItem), selectedIndex !== -1);\n }\n if (selectedItems.length) {\n for (idx = 0; idx < selectedItems.length; idx++) {\n dataItem = selectedItems[idx];\n value = this._value(dataItem);\n custom[value] = length;\n optionsMap[value] = length;\n length += 1;\n options += this._option(value, this._text(dataItem), true);\n }\n }\n this._customOptions = custom;\n this._optionsMap = optionsMap;\n this.element.html(options);\n },\n _buildSelectedItems: function (values) {\n var valueField = this.options.dataValueField;\n var textField = this.options.dataTextField;\n var result = [];\n var item;\n for (var idx = 0; idx < values.length; idx++) {\n item = {};\n item[valueField] = values[idx];\n item[textField] = values[idx];\n result.push(item);\n }\n return result;\n },\n _selectedItemIndex: function (value, selectedItems) {\n var valueGetter = this._value;\n var idx = 0;\n for (; idx < selectedItems.length; idx++) {\n if (value === valueGetter(selectedItems[idx])) {\n return idx;\n }\n }\n return -1;\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n var value = that._inputValue();\n if (that._prev !== value) {\n that._prev = value;\n that.search(value);\n that._toggleCloseVisibility();\n }\n }, that.options.delay);\n },\n _toggleCloseVisibility: function () {\n if (this.value().length || this.input.val() && this.input.val() !== this.options.placeholder) {\n this._showClear();\n } else {\n this._hideClear();\n }\n },\n _allowOpening: function () {\n return this._allowSelection() && List.fn._allowOpening.call(this);\n },\n _allowSelection: function () {\n var max = this.options.maxSelectedItems;\n return max === null || max > this.listView.value().length;\n },\n _angularTagItems: function (cmd) {\n var that = this;\n that.angular(cmd, function () {\n return {\n elements: that.tagList[0].children,\n data: $.map(that.dataItems(), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n },\n updatePersistTagList: function (added, removed) {\n if (this.persistTagList.added && this.persistTagList.added.length === removed.length && this.persistTagList.removed && this.persistTagList.removed.length === added.length) {\n this.persistTagList = false;\n } else {\n this.listView._removedAddedIndexes = this._old.slice();\n this.persistTagList = {\n added: added,\n removed: removed\n };\n }\n },\n _selectValue: function (added, removed) {\n var that = this;\n var total = that.dataSource.total();\n var tagList = that.tagList;\n var getter = that._value;\n var removedItem;\n var addedItem;\n var idx;\n if (this.persistTagList) {\n this.updatePersistTagList(added, removed);\n return;\n }\n that._angularTagItems('cleanup');\n if (that.options.tagMode === 'multiple') {\n for (idx = removed.length - 1; idx > -1; idx--) {\n removedItem = removed[idx];\n if (tagList.children().length) {\n tagList[0].removeChild(tagList[0].children[removedItem.position]);\n that._setOption(getter(removedItem.dataItem), false);\n }\n }\n for (idx = 0; idx < added.length; idx++) {\n addedItem = added[idx];\n tagList.append(that.tagTemplate(addedItem.dataItem));\n that._setOption(getter(addedItem.dataItem), true);\n }\n } else {\n if (!that._maxTotal || that._maxTotal < total) {\n that._maxTotal = total;\n }\n this._updateTagListHTML();\n for (idx = removed.length - 1; idx > -1; idx--) {\n that._setOption(getter(removed[idx].dataItem), false);\n }\n for (idx = 0; idx < added.length; idx++) {\n that._setOption(getter(added[idx].dataItem), true);\n }\n }\n that._angularTagItems('compile');\n that._placeholder();\n },\n _updateTagListHTML: function () {\n var that = this;\n var values = that.value();\n var total = that.dataSource.total();\n var tagList = that.tagList;\n tagList.html('');\n if (values.length) {\n tagList.append(that.tagTemplate({\n values: values,\n dataItems: that.dataItems(),\n maxTotal: that._maxTotal,\n currentTotal: total\n }));\n }\n },\n _select: function (candidate) {\n var resolved = $.Deferred().resolve();\n if (!candidate) {\n return resolved;\n }\n var that = this;\n var listView = that.listView;\n var dataItem = listView.dataItemByIndex(listView.getElementIndex(candidate));\n var isSelected = candidate.hasClass('k-state-selected');\n if (that._state === REBIND) {\n that._state = '';\n }\n if (!that._allowSelection() && !isSelected) {\n return resolved;\n }\n if (that.trigger(isSelected ? DESELECT : SELECT, {\n dataItem: dataItem,\n item: candidate\n })) {\n that._close();\n return resolved;\n }\n that.persistTagList = false;\n return listView.select(candidate).done(function () {\n that._placeholder();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n listView.skipUpdate(true);\n }\n });\n },\n _selectRange: function (startIndex, endIndex) {\n var that = this;\n var listView = this.listView;\n var maxSelectedItems = this.options.maxSelectedItems;\n var indices = this._getSelectedIndices().slice();\n var indicesToSelect = [];\n var i;\n var selectIndices = function (indices) {\n listView.select(indices).done(function () {\n indices.forEach(function (index) {\n var dataItem = listView.dataItemByIndex(index);\n var candidate = listView.element.children()[index];\n var isSelected = $(candidate).hasClass('k-state-selected');\n that.trigger(isSelected ? SELECT : DESELECT, {\n dataItem: dataItem,\n item: $(candidate)\n });\n });\n that._change();\n });\n };\n if (indices.length - 1 === endIndex - startIndex) {\n return selectIndices(indices);\n }\n if (startIndex < endIndex) {\n for (i = startIndex; i <= endIndex; i++) {\n indicesToSelect.push(i);\n }\n } else {\n for (i = startIndex; i >= endIndex; i--) {\n indicesToSelect.push(i);\n }\n }\n if (maxSelectedItems !== null && indicesToSelect.length > maxSelectedItems) {\n indicesToSelect = indicesToSelect.slice(0, maxSelectedItems);\n }\n for (i = 0; i < indicesToSelect.length; i++) {\n var index = indicesToSelect[i];\n if (this._getSelectedIndices().indexOf(index) == -1) {\n indices.push(index);\n } else {\n indices.splice(indices.indexOf(index), 1);\n }\n }\n if (!indices.length) {\n return;\n }\n that.persistTagList = false;\n return selectIndices(indices);\n },\n _input: function () {\n var that = this;\n var element = that.element;\n var accessKey = element[0].accessKey;\n var input = that._innerWrapper.children('input.k-input');\n if (!input[0]) {\n input = $('').appendTo(that._innerWrapper);\n }\n element.removeAttr('accesskey');\n that._focused = that.input = input.attr({\n 'accesskey': accessKey,\n 'autocomplete': AUTOCOMPLETEVALUE,\n 'role': 'listbox',\n 'title': element[0].title,\n 'aria-expanded': false,\n 'aria-haspopup': 'listbox',\n 'aria-autocomplete': 'list'\n });\n },\n _tagList: function () {\n var that = this, tagList = that._innerWrapper.children('ul');\n if (!tagList[0]) {\n tagList = $('