File Manager
{"version":3,"file":"js/smush-sui.min.js","mappings":"mCAAA,SAASA,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,EAE/U,SAAWK,GAET,aAEI,WAAaN,EAAQO,OAAOC,OAC9BD,OAAOC,IAAM,CAAC,GAGhBA,IAAIC,QAAU,SAAUC,GACtB,IAAIC,EAEAC,EAKAC,EACAC,EAPAC,EAAQ,CAAC,MAAO,QAEhBC,EAAS,GACTC,EAAe,GACfC,EAAiB,GACjBC,EAAc,GAGdC,EAAS,GA+Bb,SAASC,EAAQC,EAAYC,GAC3BC,EAASF,EAAYC,GA2DjB,mBAAsBZ,EAAKc,UAC7Bd,EAAKc,SAASN,EAAYO,IAAKP,EAAYQ,KA1D/C,CAEA,SAASH,EAASF,EAAYC,GAC5B,IAAIK,EAIJ,IAHAf,EAAaS,EACbR,EAAYS,EAEPK,EAAI,EAAGA,EAAIb,EAAMc,OAAQD,IAsC9BX,EArCEL,EAAOG,EAAMa,IAqCMZ,EAAOJ,GAAMC,GAIlCK,EAAeN,GAAQK,EAAaL,GAAMkB,SAI1CX,EAAYP,GAAQM,EAAeN,GAAME,GAzCvCiB,IAGFX,EAAOE,GAAc,GACrBF,EAAOE,GAAYC,IAAa,CAClC,CAEA,SAASQ,IACP,IAAIH,EAEJ,IAAKA,EAAI,EAAGA,EAAIV,EAAeN,GAAMiB,OAAQD,IAC3CV,EAAeN,GAAMgB,GAAGI,UAAUC,OAAOtB,EAAKC,EAAO,WAGvDO,EAAYP,GAAMoB,UAAUE,IAAIvB,EAAKC,EAAO,UAC9C,CAYA,SAASuB,EAAUC,EAAKC,IACtB1B,EAAOA,GAAQ,IACVyB,GAAOzB,EAAKyB,IAAQC,CAC3B,EA1EA,SAAcC,GACZ,IAAIhB,EACAiB,EACAhB,EAOJ,IALAZ,EAAO2B,EAwDT,WACE,IAAIV,EAEJ,IAAKA,EAAI,EAAGA,EAAIb,EAAMc,OAAQD,IAE5BO,GADAvB,EAAOG,EAAMa,IACI,QAAS,SAAWhB,EAAO,MAC5CuB,EAAUvB,EAAO,SAAU,SAE/B,CA/DE4B,GACAxB,EAAOU,IAAMe,SAASC,iBAAiB/B,EAAKgC,UAC5C3B,EAAOW,KAAOc,SAASC,iBAAiB/B,EAAKiC,WAExCtB,EAAa,EAAGA,EAAaN,EAAOU,IAAIG,OAAQP,IAGnD,IAFAiB,EAAWvB,EAAOU,IAAIJ,GAAYQ,SAE7BP,EAAY,EAAGA,EAAYgB,EAASV,OAAQN,IAC/CgB,EAAShB,GAAWsB,iBAAiB,QAASxB,EAAQyB,KAAKC,KAAMzB,EAAYC,IAAY,GACzFV,EAAaS,EACbR,EAAYS,EAERhB,OAAOyC,SAASC,MACT1C,OAAOyC,SAASC,KAAKC,QAAQ,WAAY,MAEnCX,EAAShB,GAAW4B,IACjC3B,EAASF,EAAYC,EAK/B,CAmEA6B,CAAK1C,EAEP,EAEAF,IAAI6C,aAAe,SAAUC,GAC3B,IAAIC,EAAOD,EAAIE,QAAQ,aAAaC,KAAK,iCACrCC,EAAaJ,EAAIG,KAAK,8BACtBE,EAAcL,EAAIG,KAAK,+BAE3B,SAASG,IACP,OAAIL,EAAK,GAAGM,YAAcN,EAAKO,SACzB,IAAMP,EAAKQ,aACbL,EAAWM,SAAS,+BAEpBN,EAAWO,YAAY,+BAGzBC,EAAW,IACJ,IAEPR,EAAWM,SAAS,+BACpBL,EAAYK,SAAS,gCACd,EAEX,CAIA,SAASE,EAAWC,GAClB,IAAIC,EAAeN,EACnBM,EAAgBb,EAAKQ,aAAeI,EACpCL,EAAQP,EAAKc,aACCd,EAAKe,IAAI,GAAGT,YAERO,GAAiBN,EACjCH,EAAYK,SAAS,+BAErBL,EAAYM,YAAY,8BAE5B,CAbAL,IAeAF,EAAWa,GAAG,SAAS,WAUrB,OATAZ,EAAYM,YAAY,+BAEpB,GAAKV,EAAKQ,aAAe,KAC3BL,EAAWM,SAAS,+BAGtBT,EAAKiB,QAAQ,CACXT,WAAY,SACX,KAAK,WAAa,KACd,CACT,IACAJ,EAAYY,GAAG,SAAS,WAMtB,OALAb,EAAWO,YAAY,+BACvBC,EAAW,KACXX,EAAKiB,QAAQ,CACXT,WAAY,SACX,KAAK,WAAa,KACd,CACT,IACAzD,EAAEC,QAAQgE,GAAG,UAAU,WACrBX,GACF,IACAL,EAAKgB,GAAG,UAAU,WAChBX,GACF,GACF,EAEApD,IAAI+C,KAAO,SAAU7C,GACnB,IA8JM+D,EA9JFC,EAAUpE,EAAE,mCACZK,EAAOD,EAEPiE,EACG,GADHA,EAEI,GAFJA,EAGI,GAHJA,EAIE,GAJFA,EAKK,GALLA,EAMI,GANJA,EAQK,GARLA,EASK,GAGLC,EAAY,CACd,IAAK,EACL,IAAK,EACL,GAAI,EACJ,GAAI,GAGN,GAAKF,EAAQ7C,OA8Jb,OAtBM4C,EAAWC,EAAQlB,QAAQ,cAGtBqB,MAAK,WAEZJ,EAAWnE,EAAEyC,OACb2B,EAAUD,EAAShB,KAAK,uBACTA,KAAK,kBAEfc,GAAG,SAAS,SAAUO,GACzBC,EAAmBD,EACrB,IAAGP,GAAG,WAAW,SAAUO,IA9C/B,SAA8BE,EAAOC,EAAOP,GAG1C,OAFUM,EAAME,SAAWF,EAAMG,OAG/B,KAAKR,EACL,KAAKA,EACHK,EAAMI,iBACN,MAIF,KAAKT,EACL,KAAKA,EACHU,EAAqBL,EAAOC,EAAOP,GAGzC,CAgCMY,CAAqBR,EADbxE,EAAEyC,MAAMkC,QACeP,EACjC,IAAGH,GAAG,SAAS,SAAUO,IA/B7B,SAA4BE,EAAOC,EAAOP,GAGxC,OAFUM,EAAME,SAAWF,EAAMG,OAG/B,KAAKR,EACL,KAAKA,EACHU,EAAqBL,EAAOC,EAAOP,GACnC,MAEF,KAAKC,EACL,KAAKA,EACHY,EAAYP,GAGlB,CAmBMQ,CAAmBV,EADXxE,EAAEyC,MAAMkC,QACaP,EAC/B,GACF,IAIK3B,KA/IP,SAASwC,EAAY7D,GACnB,IAAI6B,EAAOjD,EAAEoB,GAAK8B,QAAQ,oBAAoBC,KAAK,gBAC/CgC,EAASnF,EAAEoB,GAAK8B,QAAQ,oBAAoBC,KAAK,uBACjDiC,EAASpF,EAAEoB,GAAK8B,QAAQ,aAAaC,KAAK,2CAC1CkC,EAAWrF,EAAEoB,GAAKkE,KAAK,iBACvBC,EAAQvF,EAAEoB,GAAKoE,KAAK,uBACpBC,EAAQzF,EAAE,IAAMqF,IAhBtB,SAAwBpC,EAAMmC,EAAQD,GACpClC,EAAKU,YAAY,UACjBV,EAAKqC,KAAK,WAAY,MACtBrC,EAAKqC,KAAK,iBAAiB,GAC3BH,EAAOO,KAAK,WAAW,GACvBN,EAAOzB,YAAY,UACnByB,EAAOM,KAAK,UAAU,EACxB,CAUEC,CAAe1C,EAAMmC,EAAQD,GAC7BnF,EAAEoB,GAAKsC,SAAS,UAChB1D,EAAEoB,GAAKwE,WAAW,YAClB5F,EAAEoB,GAAKkE,KAAK,iBAAiB,GAC7BC,EAAMG,KAAK,WAAW,GACtBD,EAAM/B,SAAS,UACf+B,EAAMC,KAAK,UAAU,EACvB,CAKA,SAASX,EAAqBL,EAAOC,EAAOP,GAC1C,IAAItC,EAAM4C,EAAME,SAAWF,EAAMG,MAE7BgB,GAAU,EADC,aAAe7F,EAAEoE,GAASkB,KAAK,oBAIxCjB,IAAYvC,GAAOuC,IAAcvC,IACnC4C,EAAMI,iBACNe,GAAU,GAGRxB,IAAcvC,GAAOuC,IAAevC,IACtC+D,GAAU,IAIV,IAASA,GAOf,SAA+BnB,EAAOC,GACpC,IAAImB,EAASC,EAAQ9C,EACrB6C,EAAUpB,EAAME,SAAWF,EAAMG,MAE7BP,EAAUwB,KACZC,EAASrB,EAAMqB,OACf9C,EAAOjD,EAAE+F,GAAQ7C,QAAQ,oBAAoBC,KAAK,uBAE9C6C,IAAcrB,IACZ1B,EAAK0B,EAAQL,EAAUwB,IACzB7C,EAAK0B,EAAQL,EAAUwB,IAAUG,QACxB5B,IAAcyB,GAAWzB,IAAYyB,EAC9C7C,EAAKA,EAAK1B,OAAS,GAAG0E,QACb5B,IAAeyB,GAAWzB,IAAcyB,GACjD7C,EAAK,GAAGgD,SAIhB,CAxBIC,CAAsBxB,EAAOC,EAEjC,CAoCA,SAASF,EAAmBC,GAC1B,IAAItD,EAAMsD,EAAMqB,OAChBd,EAAY7D,QAER4E,IAAc3F,GAAQ,cAAgBA,GAf5C,SAAqB8F,GACnB,IAAI/E,EAAMpB,EAAEmG,GACRd,EAAWjE,EAAIkE,KAAK,iBACpBG,EAAQzF,EAAE,IAAMqF,GAEhB,mBAAsBhF,EAAKc,UAC7Bd,EAAKc,SAASC,EAAKqE,EAEvB,CAQIW,CAAYhF,GAGdsD,EAAMI,iBACNJ,EAAM2B,iBACR,CA4DF,EAEI,IAAMrG,EAAE,0BAA0BuB,SAEpCrB,IAAI+C,OAEJ/C,IAAIC,UACJH,EAAE,qCAAqCuE,MAAK,WAC1CrE,IAAI6C,aAAa/C,EAAEyC,MACrB,IAEH,CAxXD,CAwXG6D,O,kBC1XH,SAAS5G,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,EAI/U,SAAWK,GAEL,WAAaN,EAAQO,OAAOC,OAC9BD,OAAOC,IAAM,CAAC,GAGhBA,IAAIqG,OAAS,CAAC,EAEdrG,IAAIqG,OAAOC,SAAW,SAAUC,GAM9B,OAJUzG,EAAE,SAAS0G,KAAKD,GAEXE,OAAO/D,QAAQ,sDAAuD,GAGvF,EAEA1C,IAAIqG,OAAOK,WAAa,SAAUvG,EAAMwG,GACtC,IACIC,EAAQ5G,IAAIqG,OAAOC,SAASnG,EAAKsG,MACjCI,EAAO/G,EAAEK,EAAK2G,SAAS1B,KAAK,aAEhC,OAAKjF,EAAKwC,QAIN,IAAuBkE,EAChB,yBAA2BA,EAAKE,cAAgB,gCAAkCH,EAElFA,EANFA,CAUX,EAEA5G,IAAIqG,OAAOW,oBAAsB,SAAU7G,EAAMwG,GAC/C,IACIC,EAAQ5G,IAAIqG,OAAOC,SAASnG,EAAKsG,MACjCI,EAAO/G,EAAEK,EAAK2G,SAAS1B,KAAK,aAQhC,YANI,IAAuByB,EAChB,yBAA2BA,EAAKE,cAAgB,gCAAkCH,EAElFA,CAIb,EAEA5G,IAAIqG,OAAOY,YAAc,SAAU9G,EAAMwG,GACvC,IAAIO,EAAQC,EACRP,EAAQ5G,IAAIqG,OAAOC,SAASnG,EAAKsG,MACjCW,EAAQtH,EAAEK,EAAK2G,SAAS1B,KAAK,cAEjC,IAAKjF,EAAKwC,GACR,OAAOiE,EAGT,QAAI,IAAuBQ,EAAO,CAChC,OAAQA,GACN,IAAK,OACL,IAAK,QACL,IAAK,UACHD,EAAS,OACT,MAEF,IAAK,UACL,IAAK,UACL,IAAK,UACHA,EAAS,OACT,MAEF,QACEA,EAASC,EAIbF,EAAS,gDAAkDC,EAAS,uBAAyBC,EAAQ,iCAAmCR,CAC1I,MACEM,EAASN,EAGX,OAAOM,CACT,EAEAlH,IAAIqG,OAAOgB,qBAAuB,SAAUlH,EAAMwG,GAChD,IAAIO,EACAN,EAAQ5G,IAAIqG,OAAOC,SAASnG,EAAKsG,MACjCW,EAAQtH,EAAEK,EAAK2G,SAAS1B,KAAK,cAEjC,QAAI,IAAuBgC,EAAO,CAChC,OAAQA,GACN,IAAK,OACL,IAAK,QACL,IAAK,UACHD,OAAS,OACT,MAEF,IAAK,UACL,IAAK,UACL,IAAK,UACHA,OAAS,OACT,MAEF,QACEA,OAASC,EAIbF,EAAS,gDAAkDC,OAAS,uBAAyBC,EAAQ,iCAAmCR,CAC1I,MACEM,EAASN,EAGX,OAAOM,CACT,EAEAlH,IAAIqG,OAAOiB,WAAa,SAAUnH,EAAMwG,GACtC,IACIC,EAAQ5G,IAAIqG,OAAOC,SAASnG,EAAKsG,MACjCc,EAAUzH,EAAEK,EAAK2G,SAASU,MAE9B,OAAKrH,EAAKwC,QAIN,IAAuB4E,EAChB,mCAAqCX,EAAQ,2CAA6CW,EAAU,WAEpGX,EANFA,CAUX,EAEA5G,IAAIqG,OAAOoB,oBAAsB,SAAUtH,EAAMwG,GAC/C,IAAIO,EAIJ,OAFAA,EAAS,uEACTA,GAAU,wCAFElH,IAAIqG,OAAOC,SAASnG,EAAKsG,MAEuB,SAE9D,EAEAzG,IAAIqG,OAAOzD,KAAO,SAAUyD,GAC1B,IAAIqB,EAAYrB,EAAOrD,QAAQ,sBAC3B2E,EAAcD,EAAUtC,KAAK,MAC7BwC,EAAeF,EAAUrG,OAASvB,EAAE,IAAM6H,GAAe7H,EAAE,gBAC3D+H,EAAY,SAAWxB,EAAOjB,KAAK,eAAiB,GAAK,EACzD0C,EAAUzB,EAAO0B,SAAS,iBAAmB,yBAA2B,GAC5E1B,EAAO2B,WAAW,CAChBC,eAAgBL,EAChBM,wBAAyBL,EACzBM,iBAAkBL,GAEtB,EAEA9H,IAAIqG,OAAO+B,SAAW,SAAU/B,GAC9B,IAAIqB,EAAYrB,EAAOrD,QAAQ,sBAC3B2E,EAAcD,EAAUtC,KAAK,MAC7BwC,EAAeF,EAAUrG,OAASvB,EAAE,IAAM6H,GAAe7H,EAAE,gBAC3D+H,EAAY,SAAWxB,EAAOjB,KAAK,eAAiB,GAAK,EACzD0C,EAAUzB,EAAO0B,SAAS,iBAAmB,yBAA2B,GAC5E1B,EAAO2B,WAAW,CAChBC,eAAgBL,EAChBS,eAAgBrI,IAAIqG,OAAOK,WAC3B4B,kBAAmBtI,IAAIqG,OAAOW,oBAC9BuB,aAAc,SAAsBrB,GAClC,OAAOA,CACT,EACAgB,wBAAyBL,EACzBM,iBAAkBL,GAEtB,EAEA9H,IAAIqG,OAAOmC,UAAY,SAAUnC,GAC/B,IAAIqB,EAAYrB,EAAOrD,QAAQ,sBAC3B2E,EAAcD,EAAUtC,KAAK,MAC7BwC,EAAeF,EAAUrG,OAASvB,EAAE,IAAM6H,GAAe7H,EAAE,gBAC3D+H,EAAY,SAAWxB,EAAOjB,KAAK,eAAiB,GAAK,EACzD0C,EAAUzB,EAAO0B,SAAS,iBAAmB,yBAA2B,GAC5E1B,EAAO2B,WAAW,CAChBC,eAAgBL,EAChBS,eAAgBrI,IAAIqG,OAAOY,YAC3BqB,kBAAmBtI,IAAIqG,OAAOgB,qBAC9BkB,aAAc,SAAsBrB,GAClC,OAAOA,CACT,EACAgB,wBAAyBL,EACzBM,iBAAkBL,GAEtB,EAEA9H,IAAIqG,OAAOoC,WAAa,SAAUpC,GAChC,IAAIqB,EAAYrB,EAAOrD,QAAQ,sBAC3B2E,EAAcD,EAAUtC,KAAK,MAC7BwC,EAAeF,EAAUrG,OAASvB,EAAE,IAAM6H,GAAe7H,EAAE,gBAC3DgI,EAAUzB,EAAO0B,SAAS,iBAAmB,yBAA2B,GAC5E1B,EAAO2B,WAAW,CAChBC,eAAgBL,EAChBc,mBAAoB,EACpBC,uBAAwB,EACxBR,iBAAkBL,GAEtB,EAEA9H,IAAIqG,OAAOuC,SAAW,SAAUvC,GAC9B,IAAIqB,EAAYrB,EAAOrD,QAAQ,sBAC3B2E,EAAcD,EAAUtC,KAAK,MAC7BwC,EAAeF,EAAUrG,OAASvB,EAAE,IAAM6H,GAAe7H,EAAE,gBAC3D+H,EAAY,SAAWxB,EAAOjB,KAAK,eAAiB,GAAK,EAC7DiB,EAAO2B,WAAW,CAChBa,MAAO,OACPZ,eAAgBL,EAChBS,eAAgBrI,IAAIqG,OAAOiB,WAC3BgB,kBAAmBtI,IAAIqG,OAAOoB,oBAC9Bc,aAAc,SAAsBrB,GAClC,OAAOA,CACT,EACAgB,wBAAyBL,IACxB9D,GAAG,gBAAgB,WACpBjE,EAAEyC,MAAMiF,IAAI,KACd,IACAnB,EAAOmB,IAAI,KACb,EAEA1H,EAAE,eAAeuE,MAAK,WACpB,IAAIgC,EAASvG,EAAEyC,MAEX8D,EAAO0B,SAAS,8BAAgC1B,EAAO0B,SAAS,aAIhE,SAAW1B,EAAOlG,KAAK,SACzBH,IAAIqG,OAAO+B,SAAS/B,GACX,UAAYA,EAAOlG,KAAK,SACjCH,IAAIqG,OAAOmC,UAAUnC,GACZ,WAAaA,EAAOlG,KAAK,SAClCH,IAAIqG,OAAOoC,WAAWpC,GAEtBrG,IAAIqG,OAAOzD,KAAKyD,GAEpB,IACAvG,EAAE,kBAAkBuE,MAAK,WACvB,IAAIgC,EAASvG,EAAEyC,MAEX8D,EAAO0B,SAAS,8BAAgC1B,EAAO0B,SAAS,YAIpE/H,IAAIqG,OAAOuC,SAASvC,EACtB,GACD,CA3PD,CA2PGD,O,kBC/PH,SAAS0C,EAAgBrJ,EAAKmC,EAAKC,GAAiK,OAApJD,KAAOnC,EAAOsJ,OAAOC,eAAevJ,EAAKmC,EAAK,CAAEC,MAAOA,EAAOoH,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkB1J,EAAImC,GAAOC,EAAgBpC,CAAK,CAEhN,SAASD,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,EAE/U,SAAWK,GAET,aAEA,IAAIsJ,EAAQ7G,KAER,WAAa/C,EAAQO,OAAOC,OAC9BD,OAAOC,IAAM,CAAC,GAmBhBA,IAAIqJ,WAAa,SAAUC,EAAUC,EAAeC,GAElD,IAAIC,EAAa3J,EAAE,IAAMwJ,GACrBI,EAAcD,EAAWE,SAE7B,GAAI,cAAgBF,QAAc,IAAuBA,EACvD,MAAM,IAAIG,MAAM,6BAA+BN,EAAW,MAI5D,GAAI,UAAYG,EAAWrE,KAAK,QAC9B,MAAM,IAAIwE,MAAM,0DAIlB,GAAI,cAAgBL,QAAiB,IAAuBA,GAAiB,KAAOA,EAClF,MAAM,IAAIK,MAAM,uCAGlB,IAAIC,EAAQA,GAAS,CAAC,EAKtBA,EAAMC,eAAiB,CAAC,OAAQ,OAAQ,QAAS,UAAW,SAAU,UAAW,MAAO,QAAS,SAAU,UAK3GD,EAAME,SAAW,SAAUtK,GACzB,QAAK,OAASA,GAAO,cAAgBA,IAAQK,EAAEkK,cAAcvK,GAK/D,EAOAoK,EAAMI,UAAY,SAAUpE,GAC1B,IAAK,IAAIqE,EAAOC,UAAU9I,OAAQ+I,EAAU,IAAIC,MAAMH,EAAO,EAAIA,EAAO,EAAI,GAAII,EAAO,EAAGA,EAAOJ,EAAMI,IACrGF,EAAQE,EAAO,GAAKH,UAAUG,GAGhC,IAAKF,EAAQ/I,OACX,OAAOwE,EAGT,IAAI0E,EAASH,EAAQI,QAErB,GAAIX,EAAME,SAASlE,IAAWgE,EAAME,SAASQ,GAC3C,IAAK,IAAI3I,KAAO2I,EACVV,EAAME,SAASQ,EAAO3I,KACnBiE,EAAOjE,IACVmH,OAAO0B,OAAO5E,EAAQiD,EAAgB,CAAC,EAAGlH,EAAK,CAAC,IAGlDiI,EAAMI,UAAUpE,EAAOjE,GAAM2I,EAAO3I,KAEpCmH,OAAO0B,OAAO5E,EAAQiD,EAAgB,CAAC,EAAGlH,EAAK2I,EAAO3I,KAK5D,OAAOiI,EAAMI,UAAUS,MAAMb,EAAO,CAAChE,GAAQ8E,OAAOP,GACtD,EAMAP,EAAMe,cAAgB,WACpB,IAAIC,EAAkBV,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3FN,EAAM/H,QAAU,GAchB+H,EAAM/H,QAAQ,GAAK+H,EAAMI,UAbV,CACb7J,KAAM,UACNyG,KAAM,OACNiE,QAAS,CACPC,MAAM,EACNnE,MAAO,oBACPoE,QAAS,IAEXC,UAAW,CACTF,MAAM,EACNG,QAAS,MAGgCL,EAC/C,EAEAhB,EAAMe,cAAcpB,GAKpBK,EAAMsB,aAAe,WACnB,IAAI3E,EAAO,GACPsE,EAAUjB,EAAM/H,QAAQ,GAAGgJ,QAE/B,IAAI,IAASA,EAAQC,KAAM,EACzBvE,EAAOvE,SAASmJ,cAAc,QACzBC,UAAY,qBACjB,IAAIC,EAAY,GAEZ,KAAOR,EAAQE,UACbtB,EAAY3B,SAAS,wBACvBuD,GAAa,6DAA+DR,EAAQE,QAAU,KAE9FM,GAAa,0CAA4CR,EAAQE,QAAU,MAI/EM,GAAa,mCACbA,GAAa,0DAET,KAAOR,EAAQlE,QACjB0E,GAAa,wCAA0CR,EAAQlE,MAAQ,WAGzE0E,GAAa,YAET,KAAOR,EAAQE,UACjBM,GAAa,UAGf9E,EAAK8E,UAAYA,CACnB,CAEA,OAAO9E,CACT,EAMAqD,EAAM0B,UAAY,WAChB,IAAI/E,EAAO,GACPK,EAAOgD,EAAM/H,QAAQ,GAAG+E,KAY5B,MAVI,KAAOA,QAAQ,IAAuBA,GAAQ,cAAgBA,KAChEL,EAAOvE,SAASmJ,cAAc,SACzBC,WAAa,4BAA8BxE,EAAO,UACvDL,EAAKgF,aAAa,eAAe,GAE7B,WAAa3E,GACfL,EAAKhF,UAAUE,IAAI,gBAIhB8E,CACT,EAMAqD,EAAM4B,aAAe,WACnB,IAAIjF,EAAOvE,SAASmJ,cAAc,OAIlC,OAHA5E,EAAK6E,UAAY,qBACjB7E,EAAK8E,UAAY/B,EACjB/C,EAAKkF,QAAQ7B,EAAM0B,aACZ/E,CACT,EAMAqD,EAAM8B,YAAc,WAClB,IAAInF,EAAOvE,SAASmJ,cAAc,OAGlC,OAFA5E,EAAK6E,UAAY,qBACjB7E,EAAKoF,OAAO/B,EAAM4B,eAAgB5B,EAAMsB,gBACjC3E,CACT,EAMAqD,EAAMgC,WAAa,SAAUC,GAC3B,IAAIZ,EAAUf,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,GAAmBA,UAAU,GAAK,IAC9E/J,EAAOyJ,EAAM/H,QAAQ,GAAG1B,KACxB0K,EAAUjB,EAAM/H,QAAQ,GAAGgJ,QAC3BG,EAAYpB,EAAM/H,QAAQ,GAAGmJ,UAEjCxB,EAAWjG,SAAS,cAEpB1D,EAAEuE,KAAKwF,EAAMC,gBAAgB,SAAUlI,EAAKC,GACtCA,IAAUzB,GACZqJ,EAAWjG,SAAS,cAAgB3B,EAExC,IAEA4H,EAAW/D,WAAW,YAEtB+D,EAAWjD,KAAKqD,EAAM8B,eAElB,UAAYG,EACdrC,EAAWsC,UAAUb,GAAS,YAExB,IAASJ,EAAQC,MAEnBtB,EAAWxG,KAAK,8BAA8B+I,QAAQ,SAEtDvC,EAAWxG,KAAK,8BAA8Bc,GAAG,SAAS,WACxD/D,IAAIiM,YAAY3C,EAClB,MAGI,IAAS2B,EAAUF,MACrBmB,YAAW,WACT,OAAOlM,IAAIiM,YAAY3C,EACzB,GAAG6C,SAASlB,EAAUC,SAG5B,IACS,SAAWY,EACpBrC,EAAW2C,OAAOlB,GAAS,YAErB,IAASJ,EAAQC,MAEnBtB,EAAWxG,KAAK,8BAA8B+I,QAAQ,SAEtDvC,EAAWxG,KAAK,8BAA8Bc,GAAG,SAAS,WACxD/D,IAAIiM,YAAY3C,EAClB,MAGI,IAAS2B,EAAUF,MACrBmB,YAAW,WACT,OAAOlM,IAAIiM,YAAY3C,EACzB,GAAG6C,SAASlB,EAAUC,SAG5B,IAEAzB,EAAWsB,KAAKG,GAAS,YAEnB,IAASJ,EAAQC,MAEnBtB,EAAWxG,KAAK,8BAA8B+I,QAAQ,SAEtDvC,EAAWxG,KAAK,8BAA8Bc,GAAG,SAAS,WACxD/D,IAAIiM,YAAY3C,EAClB,MAGI,IAAS2B,EAAUF,MACrBmB,YAAW,WACT,OAAOlM,IAAIiM,YAAY3C,EACzB,GAAG6C,SAASlB,EAAUC,SAG5B,GAEJ,EAMArB,EAAMR,WAAa,SAAUyC,GAC3B,IAAIZ,EAAUf,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,GAAmBA,UAAU,GAAK,IAE9EV,EAAW1B,SAAS,cAClB,UAAY+D,EACdrC,EAAW4C,QAAQnB,GAAS,WAC1BrB,EAAMgC,WAAW,QAASX,EAC5B,IACS,SAAWY,EACpBrC,EAAW6C,QAAQpB,GAAS,WAC1BrB,EAAMgC,WAAW,OAAQX,EAC3B,IAEAzB,EAAW8C,KAAKrB,GAAS,WACvBrB,EAAMgC,WAAW,KAAMX,EACzB,IAIFrB,EAAMgC,WAAWC,EAAWZ,EAEhC,EAsBA,OARMxB,EAAY3B,SAAS,wBACvB8B,EAAMR,WAAW,SAEjBQ,EAAMR,WAAW,QAKdD,CACT,EAYApJ,IAAIiM,YAAc,SAAU3C,GAE1B,IAAIG,EAAa3J,EAAE,IAAMwJ,GACrBI,EAAcD,EAAWE,SAE7B,GAAI,cAAgBF,QAAc,IAAuBA,EACvD,MAAM,IAAIG,MAAM,6BAA+BN,EAAW,MAG5D,IAAIO,EAAQA,GAAS,CAAC,EAKtBA,EAAMC,eAAiB,CAAC,OAAQ,OAAQ,QAAS,UAAW,SAAU,UAAW,MAAO,QAAS,SAAU,UAK3GD,EAAM2C,WAAa,WAEjB/C,EAAWhG,YAAY,cAEvB3D,EAAEuE,KAAKwF,EAAMC,gBAAgB,SAAUlI,EAAKC,GAC1C4H,EAAWhG,YAAY,cAAgB5B,EACzC,IAEA4H,EAAWrE,KAAK,WAAY,MAE5BqE,EAAWgD,OACb,EAMA5C,EAAMoC,YAAc,SAAUH,GAC5B,IAAIZ,EAAUf,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,GAAmBA,UAAU,GAAK,IAG9E,UAAY2B,EACdrC,EAAW4C,QAAQnB,GAAS,WAC1B,OAAOrB,EAAM2C,YACf,IACS,SAAWV,EACpBrC,EAAW6C,QAAQpB,GAAS,WAC1B,OAAOrB,EAAM2C,YACf,IAEA/C,EAAW8C,KAAKrB,GAAS,WACvB,OAAOrB,EAAM2C,YACf,GAEJ,EAsBA,OARM9C,EAAY3B,SAAS,wBACvB8B,EAAMoC,YAAY,SAElBpC,EAAMoC,YAAY,QAKf7C,CACT,EASApJ,IAAI0M,OAAS,WACX,IAAIA,EAASA,GAAU,CAAC,EACxBA,EAAOC,MAAQD,EAAOC,OAAS,CAAC,EAKhCD,EAAOC,MAAMC,KAAO,SAAU9F,GAC5BA,EAAQ/C,GAAG,SAAS,WAClB8I,KAAO/M,EAAEyC,MAET,IAIInB,EAJAkI,EAAWuD,KAAKzH,KAAK,oBACrBmE,EAAgB,GAChBC,EAAgB,CAAC,EAMrB,GAAIqD,KAAKC,GAAG,0BAA4B,KAAOD,KAAKzH,KAAK,uBACvDmE,GAAiBsD,KAAKzH,KAAK,4BAE3B,IAAKhE,EAAI,EAAGA,EALE,EAKaA,IAAK,CAC9B,IACI2L,EAAY,0BADJ3L,EAAI,GAGZyL,KAAKC,GAAG,IAAMC,EAAY,MAAQ,KAAOF,KAAKzH,KAAK2H,KACrDxD,GAAiB,MAAQsD,KAAKzH,KAAK2H,GAAa,OAEpD,CAIEF,KAAKC,GAAG,uBAAyB,KAAOD,KAAKzH,KAAK,8BACpDoE,EAAcpJ,KAAOyM,KAAKzH,KAAK,qBAI7ByH,KAAKC,GAAG,wBACVtD,EAAc3C,KAAOgG,KAAKzH,KAAK,qBAI7ByH,KAAKC,GAAG,2BACVtD,EAAcsB,QAAU,CAAC,EAErB,SAAW+B,KAAKzH,KAAK,uBACvBoE,EAAcsB,QAAQC,MAAO,EACpB,UAAY8B,KAAKzH,KAAK,yBAC/BoE,EAAcsB,QAAQC,MAAO,IAK7B8B,KAAKC,GAAG,gCAAkC,KAAOD,KAAKzH,KAAK,+BAC7DoE,EAAcsB,QAAQlE,MAAQiG,KAAKzH,KAAK,8BAItCyH,KAAKC,GAAG,kCAAoC,KAAOD,KAAKzH,KAAK,iCAC/DoE,EAAcsB,QAAQE,QAAU6B,KAAKzH,KAAK,gCAIxCyH,KAAKC,GAAG,6BACVtD,EAAcyB,UAAY,CAAC,EAEvB,SAAW4B,KAAKzH,KAAK,yBACvBoE,EAAcyB,UAAUF,MAAO,EACtB,UAAY8B,KAAKzH,KAAK,2BAC/BoE,EAAcyB,UAAUF,MAAO,IAK/B8B,KAAKC,GAAG,qCACVtD,EAAcyB,UAAYzB,EAAcyB,WAAa,CAAC,EACtDzB,EAAcyB,UAAUC,QAAUiB,SAASU,KAAKzH,KAAK,mCAGvDpF,IAAIqJ,WAAWC,EAAUC,EAAeC,EAC1C,GACF,EAMAkD,EAAOC,MAAMK,MAAQ,SAAUlG,GAC7BA,EAAQ/C,GAAG,SAAS,WAElB,IAAIuF,EADJuD,KAAO/M,EAAEyC,MAGLsK,KAAKC,GAAG,yBACVxD,EAAWuD,KAAK7J,QAAQ,eAAeoC,KAAK,MAExC,KAAOyH,KAAKzH,KAAK,yBACnBkE,EAAWuD,KAAKzH,KAAK,sBAGvBpF,IAAIiM,YAAY3C,GAEpB,GACF,EAYA,OAVW,WAET,IAAI2D,EAAUnN,EAAE,sBAChB4M,EAAOC,MAAMC,KAAKK,GAElB,IAAIC,EAAWpN,EAAE,uBACjB4M,EAAOC,MAAMK,MAAME,EACrB,CAEAtK,GACOwG,CACT,EAEApJ,IAAI0M,QACL,CAtiBD,CAsiBGtG,O,kBC1iBH,SAAS5G,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,EAE/U,WAEE,aAEI,WAAaD,EAAQO,OAAOC,OAC9BD,OAAOC,IAAM,CAAC,GAOhB,IAAImN,EAAOA,GAAQ,CAAC,EAEpBA,EAAKC,QAAU,CACbC,UAAW,EACXC,IAAK,EACLC,OAAQ,GACRC,IAAK,GACLC,MAAO,GACPC,QAAS,GACTC,UAAW,GACXC,IAAK,GACLC,KAAM,GACNC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,OAAQ,IAEVf,EAAKR,MAAQQ,EAAKR,OAAS,CAAC,EAE5BQ,EAAKR,MAAMlL,OAAS,SAAU0M,GAC5B,OAAIA,EAAK1M,QAAU,mBAAsB0M,EAAK1M,OACrC0M,EAAK1M,YAGV0M,EAAKC,aAAcD,EAAKC,WAAWC,aAAe,mBAAsBF,EAAKC,WAAWC,cACnFF,EAAKC,WAAWC,YAAYF,EAIvC,EAGAhB,EAAKR,MAAM2B,YAAc,SAAUxH,GACjC,GAAI,EAAIA,EAAQyH,UAAY,IAAMzH,EAAQyH,UAAY,OAASzH,EAAQ0H,aAAa,YAClF,OAAO,EAGT,GAAI1H,EAAQ2H,SACV,OAAO,EAGT,OAAQ3H,EAAQ4H,UACd,IAAK,IACH,QAAS5H,EAAQ6H,MAAQ,UAAY7H,EAAQ8H,IAE/C,IAAK,QACH,MAAO,UAAY9H,EAAQ1G,MAAQ,QAAU0G,EAAQ1G,KAEvD,IAAK,SACL,IAAK,SACL,IAAK,WACH,OAAO,EAET,QACE,OAAO,EAEb,EAQA+M,EAAKR,MAAMkC,cAAgB,SAAU/H,GAEnC,IAAIgI,EAAM,IAAIC,WAAW,QAAS,CAChCC,SAAS,EACTC,YAAY,EACZC,KAAMnP,SAGQ+G,EAAQqI,cAAcL,EACxC,EAIA3B,EAAKR,MAAMyC,wBAAyB,EACpCjC,EAAKR,MAAM0C,gBAAkB,gBAY7BlC,EAAKR,MAAM2C,qBAAuB,SAAUxI,GAC1C,IAAK,IAAI1F,EAAI,EAAGA,EAAI0F,EAAQyI,WAAWlO,OAAQD,IAAK,CAClD,IAAIoO,EAAQ1I,EAAQyI,WAAWnO,GAE/B,GAAI+L,EAAKR,MAAM8C,aAAaD,IAAUrC,EAAKR,MAAM2C,qBAAqBE,GACpE,OAAO,CAEX,CAEA,OAAO,CACT,EAaArC,EAAKR,MAAM+C,oBAAsB,SAAU5I,GACzC,IAAK,IAAI1F,EAAI0F,EAAQyI,WAAWlO,OAAS,EAAG,GAAKD,EAAGA,IAAK,CACvD,IAAIoO,EAAQ1I,EAAQyI,WAAWnO,GAE/B,GAAI+L,EAAKR,MAAM8C,aAAaD,IAAUrC,EAAKR,MAAM+C,oBAAoBF,GACnE,OAAO,CAEX,CAEA,OAAO,CACT,EAaArC,EAAKR,MAAM8C,aAAe,SAAU3I,GAClC,IAAKqG,EAAKR,MAAM2B,YAAYxH,GAC1B,OAAO,EAGTqG,EAAKR,MAAMyC,wBAAyB,EAEpC,IACEtI,EAAQf,OACV,CAAE,MAAOzB,GACT,CAGA,OADA6I,EAAKR,MAAMyC,wBAAyB,EAC7BnN,SAAS0N,gBAAkB7I,CACpC,EAIAqG,EAAKyC,eAAiBzC,EAAKyC,gBAAkB,IAAIvF,MAAM,GAKvD8C,EAAK0C,iBAAmB,WACtB,GAAI1C,EAAKyC,gBAAkBzC,EAAKyC,eAAevO,OAC7C,OAAO8L,EAAKyC,eAAezC,EAAKyC,eAAevO,OAAS,EAE5D,EAEA8L,EAAK2C,mBAAqB,WACxB,IAAIC,EAAgB5C,EAAK0C,mBAEzB,QAAIE,IACFA,EAAcC,SACP,EAIX,EAEA7C,EAAK8C,aAAe,SAAUzL,IAClBA,EAAMG,OAASH,EAAME,WAEnByI,EAAKC,QAAQI,KAAOL,EAAK2C,sBACnCtL,EAAM2B,iBAEV,EAoCAgH,EAAK+C,OAAS,SAAUC,EAAUC,EAAkBC,EAAYC,GAC9D,IAAIC,IAAepG,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,KAAmBA,UAAU,GAC9EqG,IAAarG,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,KAAmBA,UAAU,GAGhF,GAFA5H,KAAKkO,WAAaxO,SAASyO,eAAeP,GAEtC,OAAS5N,KAAKkO,WAChB,MAAM,IAAI7G,MAAM,6BAA+BuG,EAAW,MAG5D,IAAIQ,EAAa,CAAC,SAAU,eAO5B,KANgBpO,KAAKkO,WAAWjC,aAAa,SAAW,IAAIoC,OAAOC,MAAM,QAAQC,MAAK,SAAUC,GAC9F,OAAOJ,EAAWG,MAAK,SAAUE,GAC/B,OAAOD,IAAUC,CACnB,GACF,IAGE,MAAM,IAAIpH,MAAM,4EAGlBrH,KAAKgO,aAAeA,EAGpB,IAAIU,EAAY,IAAIC,MAAM,QAC1B3O,KAAKkO,WAAWtB,cAAc8B,GAI9B,IAAIE,EAAgB,YAgBpB,GAdI5O,KAAKkO,WAAWrC,WAAW5M,UAAU4P,SAASD,GAChD5O,KAAK8O,aAAe9O,KAAKkO,WAAWrC,YAEpC7L,KAAK8O,aAAepP,SAASmJ,cAAc,OAC3C7I,KAAK8O,aAAahG,UAAY8F,EAC9B5O,KAAK8O,aAAa7F,aAAa,cAAe,OAC9CjJ,KAAKkO,WAAWrC,WAAWkD,aAAa/O,KAAK8O,aAAc9O,KAAKgP,aAChEhP,KAAK8O,aAAaG,YAAYjP,KAAKkO,aAGrClO,KAAK8O,aAAa7P,UAAUE,IAAI,cAEhCO,SAASwP,KAAKrD,WAAW5M,UAAUE,IAAIyL,EAAKR,MAAM0C,iBAE9C,iBAAoBe,EACtB7N,KAAK6N,iBAAmBnO,SAASyO,eAAeN,OAC3C,IAAI,WAAa5Q,EAAQ4Q,GAG9B,MAAM,IAAIxG,MAAM,+EAFhBrH,KAAK6N,iBAAmBA,CAG1B,CAEI,iBAAoBC,EACtB9N,KAAK8N,WAAapO,SAASyO,eAAeL,GACjC,WAAa7Q,EAAQ6Q,GAC9B9N,KAAK8N,WAAaA,EAElB9N,KAAK8N,WAAa,KAMpB,IAAIqB,EAASzP,SAASmJ,cAAc,OACpC7I,KAAKoP,QAAUpP,KAAKkO,WAAWrC,WAAWkD,aAAaI,EAAQnP,KAAKkO,YACpElO,KAAKoP,QAAQpD,SAAW,EAEpB,kBAAqB+B,IAAkB,IAASA,IAClD/N,KAAKoP,QAAQnQ,UAAUE,IAAI,qBAE3Ba,KAAKoP,QAAQC,QAAU,WACrBzE,EAAK0C,mBAAmBG,OAC1B,GAGF,IAAI6B,EAAU5P,SAASmJ,cAAc,OACrC7I,KAAKuP,SAAWvP,KAAKkO,WAAWrC,WAAWkD,aAAaO,EAAStP,KAAKkO,WAAWsB,aACjFxP,KAAKuP,SAASvD,SAAW,EAGrB,EAAIpB,EAAKyC,eAAevO,QAC1B8L,EAAK0C,mBAAmBmC,kBAG1BzP,KAAK0P,eACL9E,EAAKyC,eAAesC,KAAK3P,MAErBiO,GACFjO,KAAKkO,WAAWjP,UAAUE,IAAI,uBAE9Ba,KAAKkO,WAAWjP,UAAUC,OAAO,0BAEjCc,KAAKkO,WAAWjP,UAAUC,OAAO,uBACjCc,KAAKkO,WAAWjP,UAAUC,OAAO,yBAG/Bc,KAAK8N,WACP9N,KAAK8N,WAAWtK,QAEhBoH,EAAKR,MAAM2C,qBAAqB/M,KAAKkO,YAGvClO,KAAK4P,UAAYlQ,SAAS0N,cAE1B,IAAIyC,EAAiB,IAAIlB,MAAM,aAC/B3O,KAAKkO,WAAWtB,cAAciD,EAChC,EAaAjF,EAAK+C,OAAOrQ,UAAUmQ,MAAQ,WAC5B,IAAIQ,IAAarG,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,KAAmBA,UAAU,GAC5E0C,EAAOtK,KAEP8P,EAAa,IAAInB,MAAM,SAC3B3O,KAAKkO,WAAWtB,cAAckD,GAC9BlF,EAAKyC,eAAe0C,MACpB/P,KAAKyP,kBACLzP,KAAKoP,QAAQvD,WAAWC,YAAY9L,KAAKoP,SACzCpP,KAAKuP,SAAS1D,WAAWC,YAAY9L,KAAKuP,UAEtCtB,GACFjO,KAAKkO,WAAWjP,UAAUE,IAAI,wBAC9Ba,KAAKkO,WAAWjP,UAAUC,OAAO,yBAEjCc,KAAKkO,WAAWjP,UAAUC,OAAO,uBACjCc,KAAKkO,WAAWjP,UAAUC,OAAO,yBAGnCc,KAAK6N,iBAAiBrK,QACtBmG,YAAW,WACTW,EAAKwE,aAAa7P,UAAUC,OAAO,aACrC,GAAG,KACHyK,YAAW,WACT,IAAIqG,EAAS1F,EAAK4D,WAAWvO,iBAAiB,oBAE9C,GAAI,EAAIqQ,EAAOlR,OAAQ,CAErB,IAAK,IAAID,EAAI,EAAGA,EAAImR,EAAOlR,OAAQD,IACjCmR,EAAOnR,GAAGoK,aAAa,YAAY,GACnC+G,EAAOnR,GAAGI,UAAUC,OAAO,cAC3B8Q,EAAOnR,GAAGI,UAAUC,OAAO,cAC3B8Q,EAAOnR,GAAGoK,aAAa,WAAY,MACnC+G,EAAOnR,GAAGoK,aAAa,eAAe,GAIxC,GAAI+G,EAAO,GAAGC,aAAa,mBAAoB,CAC7C,IAAIC,EAAgBF,EAAO,GAAG/D,aAAa,mBAE3C,OAAQiE,GACN,IAAK,KACL,IAAK,QACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,MACL,IAAK,SACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,QACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,aACL,IAAK,aACL,IAAK,cACHA,EAAgB,KAChB,MAEF,QACEA,OAAgB3M,OAGhBA,IAAc2M,IAEhB5F,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAE5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUE,IAAI,aAAe+Q,GAE5D,CAUE,IAAIC,EAAgBC,EAahBC,EAAeC,EAdrB,GANAN,EAAO,GAAG/Q,UAAUE,IAAI,cACxB6Q,EAAO,GAAG/Q,UAAUE,IAAI,cACxB6Q,EAAO,GAAGO,gBAAgB,YAC1BP,EAAO,GAAGO,gBAAgB,YAC1BP,EAAO,GAAGO,gBAAgB,eAEtBP,EAAO,GAAGC,aAAa,yBAEzBE,EAAiB,GAGb,MAFJC,EAAiBJ,EAAO,GAAG/D,aAAa,gCAEX1I,IAAc6M,IACzCD,EAAiBC,GAGnB9F,EAAK4D,WAAWjF,aAAa,kBAAmBkH,GAIlD,GAAIH,EAAO,GAAGC,aAAa,0BAEzBI,EAAgB,GAGZ,MAFJC,EAAgBN,EAAO,GAAG/D,aAAa,iCAEX1I,IAAc+M,IACxCD,EAAgBC,GAGlBhG,EAAK4D,WAAWjF,aAAa,mBAAoBoH,EAErD,CACF,GAAG,KAEC,EAAIzF,EAAKyC,eAAevO,OAC1B8L,EAAK0C,mBAAmBoC,eAExBhQ,SAASwP,KAAKrD,WAAW5M,UAAUC,OAAO0L,EAAKR,MAAM0C,iBAIvD,IAAI0D,EAAkB,IAAI7B,MAAM,cAChC3O,KAAKkO,WAAWtB,cAAc4D,EAChC,EA+BA5F,EAAK+C,OAAOrQ,UAAU6C,QAAU,SAAUsQ,EAAaC,EAAqBC,EAAe5C,GACzF,IAAIC,IAAepG,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,KAAmBA,UAAU,GAC9EqG,IAAarG,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,KAAmBA,UAAU,GAC5E0C,EAAOtK,KACX4K,EAAKyC,eAAe0C,MACpB/P,KAAKyP,kBACL7E,EAAKR,MAAMlL,OAAOc,KAAKoP,SACvBxE,EAAKR,MAAMlL,OAAOc,KAAKuP,UAEnBtB,GACFjO,KAAKkO,WAAWjP,UAAUE,IAAI,uBAE9Ba,KAAKkO,WAAWjP,UAAUC,OAAO,0BAEjCc,KAAKkO,WAAWjP,UAAUC,OAAO,uBACjCc,KAAKkO,WAAWjP,UAAUC,OAAO,yBAGnCc,KAAK8O,aAAa7P,UAAUC,OAAO,cACnCyK,YAAW,WACT,IAAIqG,EAAS1F,EAAK4D,WAAWvO,iBAAiB,oBAE9C,GAAI,EAAIqQ,EAAOlR,OAAQ,CAErB,IAAK,IAAID,EAAI,EAAGA,EAAImR,EAAOlR,OAAQD,IACjCmR,EAAOnR,GAAGoK,aAAa,YAAY,GACnC+G,EAAOnR,GAAGI,UAAUC,OAAO,cAC3B8Q,EAAOnR,GAAGI,UAAUC,OAAO,cAC3B8Q,EAAOnR,GAAGoK,aAAa,WAAY,MACnC+G,EAAOnR,GAAGoK,aAAa,eAAe,GAIxC,GAAI+G,EAAO,GAAGC,aAAa,mBAAoB,CAC7C,IAAIC,EAAgBF,EAAO,GAAG/D,aAAa,mBAE3C,OAAQiE,GACN,IAAK,KACL,IAAK,QACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,MACL,IAAK,SACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,QACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,aACL,IAAK,aACL,IAAK,cACHA,EAAgB,KAChB,MAEF,QACEA,OAAgB3M,OAGhBA,IAAc2M,IAEhB5F,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUC,OAAO,gBAE5CoL,EAAK4D,WAAWrC,WAAW5M,UAAUE,IAAI,aAAe+Q,GAE5D,CAUE,IAAIC,EAAgBC,EAahBC,EAAeC,EAdrB,GANAN,EAAO,GAAG/Q,UAAUE,IAAI,cACxB6Q,EAAO,GAAG/Q,UAAUE,IAAI,cACxB6Q,EAAO,GAAGO,gBAAgB,YAC1BP,EAAO,GAAGO,gBAAgB,YAC1BP,EAAO,GAAGO,gBAAgB,eAEtBP,EAAO,GAAGC,aAAa,yBAEzBE,EAAiB,GAGb,MAFJC,EAAiBJ,EAAO,GAAG/D,aAAa,gCAEX1I,IAAc6M,IACzCD,EAAiBC,GAGnB9F,EAAK4D,WAAWjF,aAAa,kBAAmBkH,GAIlD,GAAIH,EAAO,GAAGC,aAAa,0BAEzBI,EAAgB,GAGZ,MAFJC,EAAgBN,EAAO,GAAG/D,aAAa,iCAEX1I,IAAc+M,IACxCD,EAAgBC,GAGlBhG,EAAK4D,WAAWjF,aAAa,mBAAoBoH,EAErD,CACF,GAAG,KACH,IAAIxC,EAAmB6C,GAAuB1Q,KAAK6N,iBACtC,IAAIjD,EAAK+C,OAAO8C,EAAa5C,EAAkB8C,EAAe5C,EAAgBC,EAAcC,EAC3G,EAkBArD,EAAK+C,OAAOrQ,UAAUsT,MAAQ,SAAUC,EAAYC,EAAeC,GACjE,IA2EMZ,EAAgBC,EAahBC,EAAeC,EAxFjB/G,EAAY,aAEZyH,GADgBpG,EAAK0C,mBACNtN,KAAKkO,WAAWvO,iBAAiB,qBAChDsR,EAAcvR,SAASyO,eAAe0C,GAE1C,OAAQE,GACN,IAAK,OACL,IAAK,OACHxH,EAAY,kBACZ,MAEF,IAAK,OACL,IAAK,QACHA,EAAY,mBACZ,MAEF,QACEA,EAAY,aAKhB,IAAK,IAAI1K,EAAI,EAAGA,EAAImS,EAAalS,OAAQD,IACvCmS,EAAanS,GAAGoK,aAAa,YAAY,GACzC+H,EAAanS,GAAGI,UAAUC,OAAO,cACjC8R,EAAanS,GAAGI,UAAUC,OAAO,cACjC8R,EAAanS,GAAGoK,aAAa,WAAY,MACzC+H,EAAanS,GAAGoK,aAAa,eAAe,GAI9C,GAAIgI,EAAYhB,aAAa,mBAAoB,CAC/C,IAAIC,EAAgBe,EAAYhF,aAAa,mBAE7C,OAAQiE,GACN,IAAK,KACL,IAAK,QACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,MACL,IAAK,SACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,QACHA,EAAgB,KAChB,MAEF,IAAK,KACL,IAAK,aACL,IAAK,aACL,IAAK,cACHA,EAAgB,KAChB,MAEF,QACEA,OAAgB3M,OAGhBA,IAAc2M,IAEhBlQ,KAAKkO,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5Cc,KAAKkO,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5Cc,KAAKkO,WAAWrC,WAAW5M,UAAUC,OAAO,gBAC5Cc,KAAKkO,WAAWrC,WAAW5M,UAAUC,OAAO,gBAE5Cc,KAAKkO,WAAWrC,WAAW5M,UAAUE,IAAI,aAAe+Q,GAE5D,CAGIe,EAAYhB,aAAa,2BAE3BE,EAAiB,GAGb,MAFJC,EAAiBa,EAAYhF,aAAa,gCAEb1I,IAAc6M,IACzCD,EAAiBC,GAGnBpQ,KAAKkO,WAAWjF,aAAa,kBAAmBkH,IAI9Cc,EAAYhB,aAAa,4BAE3BI,EAAgB,GAGZ,MAFJC,EAAgBW,EAAYhF,aAAa,iCAEb1I,IAAc+M,IACxCD,EAAgBC,GAGlBtQ,KAAKkO,WAAWjF,aAAa,mBAAoBoH,IAInDY,EAAYhS,UAAUE,IAAI,cAC1B8R,EAAYhS,UAAUE,IAAIoK,GAC1B0H,EAAYV,gBAAgB,YAC5BU,EAAYV,gBAAgB,eAC5B5G,YAAW,WACTsH,EAAYhS,UAAUE,IAAI,cAC1B8R,EAAYhS,UAAUC,OAAOqK,GAC7B0H,EAAYV,gBAAgB,WAC9B,GAAG,KAEC,iBAAoBO,EACtB9Q,KAAK8Q,cAAgBpR,SAASyO,eAAe2C,GACpC,WAAa7T,EAAQ6T,GAC9B9Q,KAAK8Q,cAAgBA,EAErB9Q,KAAK8Q,cAAgB,KAGnB9Q,KAAK8Q,cACP9Q,KAAK8Q,cAActN,QAEnBoH,EAAKR,MAAM2C,qBAAqB/M,KAAKkO,WAEzC,EAGAtD,EAAK+C,OAAOrQ,UAAUoS,aAAe,WACnChQ,SAASI,iBAAiB,QAASE,KAAKkR,WAAW,GAE/ClR,KAAKgO,cACPhO,KAAKkO,WAAWpO,iBAAiB,QAAS8K,EAAK8C,aAEnD,EAGA9C,EAAK+C,OAAOrQ,UAAUmS,gBAAkB,WACtC/P,SAASyR,oBAAoB,QAASnR,KAAKkR,WAAW,EACxD,EAGAtG,EAAK+C,OAAOrQ,UAAU4T,UAAY,SAAUjP,GAC1C,IAAImP,EAAgBnP,EAAMqB,OAAO8N,cAEjC,KAAIxG,EAAKR,MAAMyC,wBAA0BuE,GAAiBA,EAAcnS,UAAU4P,SAAS,kBAA3F,CAIA,IAAIrB,EAAgB5C,EAAK0C,mBAErBE,EAAcU,WAAWW,SAAS5M,EAAMqB,QAC1CkK,EAAcoC,UAAY3N,EAAMqB,QAEhCsH,EAAKR,MAAM2C,qBAAqBS,EAAcU,YAE1CV,EAAcoC,WAAalQ,SAAS0N,eACtCxC,EAAKR,MAAM+C,oBAAoBK,EAAcU,YAG/CV,EAAcoC,UAAYlQ,SAAS0N,cAbrC,CAeF,EAGA3P,IAAI4T,UAAY,SAAUzD,EAAUC,EAAkBC,EAAYwD,GAChE,IAAItD,IAAepG,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,KAAmBA,UAAU,GAC9EqG,EAAarG,UAAU9I,OAAS,EAAI8I,UAAU,QAAKrE,EAC1C,IAAIqH,EAAK+C,OAAOC,EAAUC,EAAkBC,EAAYwD,EAAetD,EAAcC,EACpG,EAGAxQ,IAAI8T,WAAa,SAAUtD,GACTrD,EAAK0C,mBACXG,MAAMQ,EAClB,EAGAxQ,IAAI+T,aAAe,SAAUf,EAAaC,EAAqBC,EAAe5C,GAC5E,IAAIC,IAAepG,UAAU9I,OAAS,QAAsByE,IAAjBqE,UAAU,KAAmBA,UAAU,GAC9EqG,EAAarG,UAAU9I,OAAS,EAAI8I,UAAU,QAAKrE,EACvCqH,EAAK0C,mBAUXnN,QAAQsQ,EAAaC,EAAqBC,EAAe5C,EAAgBC,EAAcC,EACnG,EAGAxQ,IAAIgU,WAAa,SAAUZ,EAAYC,EAAeC,GACpCnG,EAAK0C,mBACXsD,MAAMC,EAAYC,EAAeC,EAC7C,CAED,CA9zBD,GAg0BA,SAAWxT,GAET,aAEI,WAAaN,EAAQO,OAAOC,OAC9BD,OAAOC,IAAM,CAAC,GAGhBA,IAAIiU,YAAc,WAChB,IACMC,EAAQC,EAAYC,EAAaC,EAAeC,EAAaC,EAAaC,EAASC,EAASC,EAAYC,EAAU7I,EAAW0E,EAgGnI,OA/FE2D,EAAarU,EAAE,qBACfsU,EAActU,EAAE,sBAChBuU,EAAgBvU,EAAE,wBAClBwU,EAAcxU,EAAE,sBAChByU,EAAczU,EAAE,sBAChBqU,EAAWpQ,GAAG,SAAS,SAAUO,GAC/B4P,EAASpU,EAAEyC,MACXiS,EAAUN,EAAO9O,KAAK,mBACtBsP,EAAaR,EAAO9O,KAAK,0BACzBuP,EAAWT,EAAO9O,KAAK,yBACvBmP,EAAcL,EAAO9O,KAAK,mBAC1BoL,EAAa0D,EAAO9O,KAAK,uBACzB,IAAImL,EAAe,UAAY2D,EAAO9O,KAAK,kBAEH,cAAsC5F,EAAQkV,KAAe,IAAUA,GAAc,KAAOA,IAClIA,EAAanS,MAGyB,cAAsC/C,EAAQmV,KAAa,IAAUA,GAAY,KAAOA,IAC9HA,OAAW7O,GAIXyO,EADsC,cAAsC/U,EAAQ+U,KAAgB,IAAUA,GAAe,SAAWA,EAOxI/D,EADsC,cAAsChR,EAAQgR,KAAe,IAAUA,GAAc,UAAYA,EAMjG,cAAsChR,EAAQgV,KAAY,IAAUA,GAAW,KAAOA,GAC5HxU,IAAI4T,UAAUY,EAASE,EAAYC,EAAUJ,EAAahE,EAAcC,GAG1ElM,EAAEM,gBACJ,IACAyP,EAActQ,GAAG,SAAS,SAAUO,GAClC4P,EAASpU,EAAEyC,MACXiS,EAAUN,EAAO9O,KAAK,sBACtBsP,EAAaR,EAAO9O,KAAK,0BACzBuP,EAAWT,EAAO9O,KAAK,yBACvBmP,EAAcL,EAAO9O,KAAK,2BAC1B,IAAImL,EAAe,UAAY2D,EAAO9O,KAAK,kBAEH,cAAsC5F,EAAQkV,KAAe,IAAUA,GAAc,KAAOA,IAClIA,OAAa5O,GAGyB,cAAsCtG,EAAQmV,KAAa,IAAUA,GAAY,KAAOA,IAC9HA,OAAW7O,GAIXyO,EADsC,cAAsC/U,EAAQ+U,KAAgB,IAAUA,GAAe,SAAWA,EAMlG,cAAsC/U,EAAQgV,KAAY,IAAUA,GAAW,KAAOA,GAC5HxU,IAAI+T,aAAaS,EAASE,EAAYC,EAAUJ,EAAahE,EAAcC,GAG7ElM,EAAEM,gBACJ,IACA0P,EAAYvQ,GAAG,SAAS,SAAUO,GAChC4P,EAASpU,EAAEyC,MACXkS,EAAUP,EAAO9O,KAAK,oBACtBuP,EAAWT,EAAO9O,KAAK,0BACvB0G,EAAYoI,EAAO9O,KAAK,0BAEgB,cAAsC5F,EAAQmV,KAAa,IAAUA,GAAY,KAAOA,IAC9HA,OAAW7O,GAG2B,cAAsCtG,EAAQsM,KAAc,IAAUA,GAAa,KAAOA,IAChIA,EAAY,IAG0B,cAAsCtM,EAAQiV,KAAY,IAAUA,GAAW,KAAOA,GAC5HzU,IAAIgU,WAAWS,EAASE,EAAU7I,GAGpCxH,EAAEM,gBACJ,IACAwP,EAAYrQ,GAAG,SAAS,SAAUO,GAChCtE,IAAI8T,WAAWtD,GACflM,EAAEM,gBACJ,IAIKrC,IACT,EAEAvC,IAAIiU,aACL,CA9GD,CA8GG7N,O,kBCh7BH,SAAS5G,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,EAM/U,SAAWK,EAAG8U,GACZ,aASA,IAAIC,EAAa,iBACbC,EAAW,CACbC,SAAU,OACVC,WAAY,WAGd,SAASC,EAAenO,EAAShF,GAC/BS,KAAKuE,QAAUA,EACfvE,KAAK2S,SAAWpV,EAAEyC,KAAKuE,SAKvBvE,KAAK4S,SAAWrV,EAAEsV,OAAO,CAAC,EAAGN,EAAUhT,GACvCS,KAAK8S,UAAYP,EACjBvS,KAAK+S,MAAQT,EACbtS,KAAKgT,aAAe,KACpBhT,KAAKiT,aAAe,GACpBjT,KAAKK,MACP,CAGA9C,EAAEsV,OAAOH,EAAepV,UAAW,CACjC+C,KAAM,WACJ,IAAIiK,EAAOtK,KACP2R,EAAS,GAET,IAAM3R,KAAK2S,SAASvL,OAAO,4BAA4BtI,SAEzDkB,KAAK2S,SAASO,KAAK,gDACnBlT,KAAKiT,aAAejT,KAAKmT,mBACzBxB,EAAS,wEAA0E3R,KAAKiT,aAAe,8CAAgDjT,KAAKiT,aAAe,KAAOjT,KAAK4S,SAASJ,SAAW,YAC3MxS,KAAK2S,SAAS9P,KAAK,KAAM,oBAAsB7C,KAAKiT,cAAcG,MAAMzB,GACxE3R,KAAKgT,aAAe,IAAIX,EAAY,4BAA8BrS,KAAKiT,cAEvEjT,KAAKgT,aAAaxR,GAAG,WAAW,SAAUO,GACxCA,EAAEsR,iBACF/I,EAAKgJ,YAAYvR,EAAE0H,QAASa,EAAKsI,SAASH,WAC5C,IAEAlV,EAAE,4BAA8ByC,KAAKiT,cAAczR,GAAG,6BAA6B,WACjFjE,EAAEyC,MAAMkB,YAAY,eACpB3D,EAAEyC,MAAMmD,WAAW,cACnB5F,EAAEyC,MAAMmD,WAAW,eACrB,IAEJ,EACAoQ,eAAgB,WACd,OAAOvT,KAAKgT,YACd,EACAM,YAAa,SAAqBvR,EAAGyR,GACnCjW,EAAEwE,GAAGd,SAAS,eACd1D,EAAEwE,GAAGc,KAAK,aAAc2Q,GACxBjW,EAAEwE,GAAGc,KAAK,eAAgB2Q,EAC5B,EACAL,iBAAkB,WAIhB,MAAO,IAAMM,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,EACpD,EACAC,QAAS,WACH,OAAS7T,KAAKgT,eAChBhT,KAAKgT,aAAaa,UAElB7T,KAAK2S,SAAS9P,KAAK,KAAM,IACzB7C,KAAK2S,SAASmB,OAAO,6BACrBvW,EAAE,4BAA8ByC,KAAKiT,cAAc/T,SAEvD,IAIF3B,EAAEwW,GAAGzB,GAAc,SAAU/S,GAC3B,OAAOS,KAAK8B,MAAK,WAEVvE,EAAEK,KAAKoC,KAAMsS,IAChB/U,EAAEK,KAAKoC,KAAMsS,EAAY,IAAII,EAAe1S,KAAMT,GAEtD,GACF,CACD,CA3FD,CA2FGsE,OAAQwO,YAAa7U,OAAQkC,UAEhC,SAAWnC,GAET,aAEI,WAAaN,EAAQO,OAAOC,OAC9BD,OAAOC,IAAM,CAAC,GAGhBA,IAAIuW,eAAiB,WAEnBzW,EAAE,oDAAoDuE,MAAK,WAEzDvE,EAAEyC,MAAM0S,eAAe,CAAC,EAC1B,GACF,EAGAnV,EAAEmC,UAAUuU,OAAM,WAChBxW,IAAIuW,gBACN,GACD,CApBD,CAoBGnQ,O,kBCvHH,SAAS5G,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,EAE/U,SAAWK,GAET,aAEI,WAAaN,EAAQO,OAAOC,OAC9BD,OAAOC,IAAM,CAAC,GAGhBA,IAAIyW,OAAS,WAUX,GATA3W,EAAE,qDAAqDiE,GAAG,UAAU,SAAUO,GAC5E,IAAIoS,EAAO5W,EAAEyC,MAAM,GAAGoU,MAAM,GACxBC,EAAU9W,EAAEyC,MAAMU,KAAK,yBAEvByT,GACFE,EAAQnQ,KAAKiQ,EAAKG,KAEtB,IAEI/W,EAAE,iCAAiCuB,OAAQ,CAE7CvB,EAAE,qDAAqDiE,GAAG,UAAU,WAClE,IAAI4F,EAAS7J,EAAEyC,MAAMoH,SACjBmN,EAAWhX,EAAEyC,MAAMiF,MACnBuP,EAAiBpN,EAAO1G,KAAK,qBAEjC,GAAI6T,EAAU,CACZ,IAAIE,EAAYF,EAASG,YAAY,MAErC,GAAID,GAAa,EAAG,CAGlB,GAFAF,EAAWA,EAASI,UAAUF,EAAY,GAEtCD,EAAe1V,OAAQ,CACzB,IAAI8V,EAAS,IAAIC,WACbC,EAAeN,EAAe9T,KAAK,sBAEvCkU,EAAOG,OAAS,SAAUhT,GACxB+S,EAAajS,KAAK,QAAS,yBAA2Bd,EAAEuB,OAAO0R,OAAS,MAC1E,EAEAJ,EAAOK,cAAc1X,EAAEyC,MAAM,GAAGoU,MAAM,GACxC,CAEAhN,EAAO1G,KAAK,2BAA2BwD,KAAKqQ,GAC5CnN,EAAOnG,SAAS,eAClB,CACF,KAAO,CACL,GAAIuT,EAAe1V,QACbgW,EAAeN,EAAe9T,KAAK,uBAC1BmC,KAAK,QAAS,4BAG7BuE,EAAO1G,KAAK,2BAA2BwD,KAAK,IAC5CkD,EAAOlG,YAAY,eACrB,CACF,IAEA3D,EAAE,qDAAqDiE,GAAG,SAAS,WACjE0T,EAAW3X,EAAEyC,MACf,IAEAzC,EAAE,4DAA4DiE,GAAG,SAAS,WACxE2T,EAAW5X,EAAEyC,MACf,IAEAzC,EAAE,oDAAoDiE,GAAG,SAAS,WAChE0T,EAAW3X,EAAEyC,MACf,IAEA,IAAIoV,GAEM,cADJC,EAAM3V,SAASmJ,cAAc,SACH,gBAAiBwM,GAAO,WAAYA,IAAQ,aAAc7X,QAAU,eAAgBA,OAGhH8X,EAAa/X,EAAE,mCAEnB,GAAI6X,EAAkB,CACpB,IAAIG,GAAe,EACnBD,EAAW9T,GAAG,4DAA4D,SAAUO,GAClFA,EAAEM,iBACFN,EAAE6B,iBACJ,IAAGpC,GAAG,sBAAsB,WAC1B8T,EAAWrU,SAAS,kBACtB,IAAGO,GAAG,0BAA0B,WAC9B8T,EAAWpU,YAAY,kBACzB,IAAGM,GAAG,QAAQ,SAAUO,GACtBwT,EAAexT,EAAEyT,cAAcC,aAAarB,MAC5CsB,EAAanY,EAAEyC,MAAOuV,EAAa,GAAIA,EAAa,GAAGjB,KACzD,GACF,CAGA,IAAIoB,EAAe,SAAsBnR,EAAS4P,EAAMI,GACtD,IAAInN,EAAS7C,EAAQ9D,QAAQ,eACzB+T,EAAiBpN,EAAO1G,KAAK,qBAEjC,GAAI6T,EAAU,CACZ,GAAIC,EAAe1V,OAAQ,CACzB,IAAI8V,EAAS,IAAIC,WACbC,EAAeN,EAAe9T,KAAK,sBAEvCkU,EAAOG,OAAS,SAAUhT,GACxB+S,EAAajS,KAAK,QAAS,yBAA2Bd,EAAEuB,OAAO0R,OAAS,MAC1E,EAEAJ,EAAOK,cAAcd,EACvB,CAEA/M,EAAO1G,KAAK,2BAA2BwD,KAAKqQ,GAC5CnN,EAAOnG,SAAS,eAClB,CACF,EAGIiU,EAAa,SAAoB3Q,GACtBA,EAAQ9D,QAAQ,eACXC,KAAK,sBAClB+I,QAAQ,QACf,EAGI0L,EAAa,SAAoB5Q,GACtBA,EAAQ9D,QAAQ,eACXC,KAAK,sBAClBuE,IAAI,IAAI0Q,QACf,CACF,CAzDyB,IACjBN,CAyDV,EAEA5X,IAAIyW,QACL,CAjID,CAiIGrQ,O,kBCnIH,SAAS5G,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,EAyC5U,SAAU2G,GAIX,IAAI+R,EAAK,WAGP,GAAI/R,GAAUA,EAAOkQ,IAAMlQ,EAAOkQ,GAAG8B,SAAWhS,EAAOkQ,GAAG8B,QAAQC,IAChE,IAAIF,EAAK/R,EAAOkQ,GAAG8B,QAAQC,IAG7B,IAmBQC,EAAWC,EAASC,EAmvK5B,OAnwKOL,GAAOA,EAAGG,YACRH,EAGHI,EAAUJ,EAFVA,EAAK,CAAC,EAgBR,SAAWM,GACT,IAAIC,EACAC,EACAC,EACAC,EACAC,EAAU,CAAC,EACXC,EAAU,CAAC,EACX7Y,EAAS,CAAC,EACV8Y,EAAW,CAAC,EACZC,EAASlQ,OAAOlJ,UAAUqZ,eAC1BC,EAAM,GAAGC,MACTC,EAAiB,QAErB,SAASC,EAAQ7Z,EAAK+F,GACpB,OAAOyT,EAAOM,KAAK9Z,EAAK+F,EAC1B,CAWA,SAASgU,EAAU3C,EAAM4C,GACvB,IAAIC,EACAC,EACAC,EACAC,EACA7C,EACA8C,EACAC,EACAC,EACA5Y,EACA6Y,EACAC,EAEAC,EAAYV,GAAYA,EAAS5I,MAAM,KACvCuJ,EAAMla,EAAOka,IACbC,EAAUD,GAAOA,EAAI,MAAQ,CAAC,EAElC,GAAIvD,EAAM,CAuBR,IArBAG,GADAH,EAAOA,EAAKhG,MAAM,MACDxP,OAAS,EAKtBnB,EAAOoa,cAAgBjB,EAAekB,KAAK1D,EAAKG,MAClDH,EAAKG,GAAaH,EAAKG,GAAWtU,QAAQ2W,EAAgB,KAIlC,MAAtBxC,EAAK,GAAG2D,OAAO,IAAcL,IAO/BtD,EADsBsD,EAAUf,MAAM,EAAGe,EAAU9Y,OAAS,GACjCsJ,OAAOkM,IAI/BzV,EAAI,EAAGA,EAAIyV,EAAKxV,OAAQD,IAG3B,GAAa,OAFb8Y,EAAOrD,EAAKzV,IAGVyV,EAAK4D,OAAOrZ,EAAG,GACfA,GAAK,OACA,GAAa,OAAT8Y,EAAe,CAMxB,GAAU,IAAN9Y,GAAiB,IAANA,GAAuB,OAAZyV,EAAK,IAA+B,OAAhBA,EAAKzV,EAAI,GACrD,SACSA,EAAI,IACbyV,EAAK4D,OAAOrZ,EAAI,EAAG,GACnBA,GAAK,EAET,CAIFyV,EAAOA,EAAK6D,KAAK,IACnB,CAGA,IAAKP,GAAaE,IAAYD,EAAK,CAGjC,IAAKhZ,GAFLsY,EAAY7C,EAAKhG,MAAM,MAEJxP,OAAQD,EAAI,EAAGA,GAAK,EAAG,CAGxC,GAFAuY,EAAcD,EAAUN,MAAM,EAAGhY,GAAGsZ,KAAK,KAErCP,EAGF,IAAKF,EAAIE,EAAU9Y,OAAQ4Y,EAAI,EAAGA,GAAK,EAIrC,IAHAL,EAAWQ,EAAID,EAAUf,MAAM,EAAGa,GAAGS,KAAK,SAIxCd,EAAWA,EAASD,IAEN,CAEZE,EAAWD,EACXE,EAAS1Y,EACT,KACF,CAKN,GAAIyY,EACF,OAMGE,GAAgBM,GAAWA,EAAQV,KACtCI,EAAeM,EAAQV,GACvBK,EAAQ5Y,EAEZ,EAEKyY,GAAYE,IACfF,EAAWE,EACXD,EAASE,GAGPH,IACFH,EAAUe,OAAO,EAAGX,EAAQD,GAC5BhD,EAAO6C,EAAUgB,KAAK,KAE1B,CAEA,OAAO7D,CACT,CAEA,SAAS8D,EAAYC,EAASC,GAC5B,OAAO,WAIL,IAAIC,EAAO3B,EAAII,KAAKpP,UAAW,GAQ/B,MAJuB,iBAAZ2Q,EAAK,IAAmC,IAAhBA,EAAKzZ,QACtCyZ,EAAK5I,KAAK,MAGLyG,EAAKjO,MAAM+N,EAAOqC,EAAKnQ,OAAO,CAACiQ,EAASC,IACjD,CACF,CAEA,SAASE,EAAcH,GACrB,OAAO,SAAU/D,GACf,OAAO2C,EAAU3C,EAAM+D,EACzB,CACF,CAEA,SAASI,EAASC,GAChB,OAAO,SAAUpZ,GACfiX,EAAQmC,GAAWpZ,CACrB,CACF,CAEA,SAASqZ,EAAQrE,GACf,GAAIyC,EAAQP,EAASlC,GAAO,CAC1B,IAAIiE,EAAO/B,EAAQlC,UACZkC,EAAQlC,GACfmC,EAASnC,IAAQ,EACjB6B,EAAKhO,MAAM+N,EAAOqC,EACpB,CAEA,IAAKxB,EAAQR,EAASjC,KAAUyC,EAAQN,EAAUnC,GAChD,MAAM,IAAIjN,MAAM,MAAQiN,GAG1B,OAAOiC,EAAQjC,EACjB,CAKA,SAASsE,EAAYtE,GACnB,IAAIuE,EACA3W,EAAQoS,EAAOA,EAAKwE,QAAQ,MAAQ,EAOxC,OALI5W,GAAS,IACX2W,EAASvE,EAAKK,UAAU,EAAGzS,GAC3BoS,EAAOA,EAAKK,UAAUzS,EAAQ,EAAGoS,EAAKxV,SAGjC,CAAC+Z,EAAQvE,EAClB,CAIA,SAASyE,EAAaV,GACpB,OAAOA,EAAUO,EAAYP,GAAW,EAC1C,CAgDA,SAASW,EAAW1E,GAClB,OAAO,WACL,OAAO3W,GAAUA,EAAOA,QAAUA,EAAOA,OAAO2W,IAAS,CAAC,CAC5D,CACF,CA5CA+B,EAAU,SAAiB/B,EAAM2E,GAC/B,IAAIC,EACAC,EAAQP,EAAYtE,GACpBuE,EAASM,EAAM,GACfC,EAAkBH,EAAS,GA2B/B,OA1BA3E,EAAO6E,EAAM,GAETN,IAEFK,EAASP,EADTE,EAAS5B,EAAU4B,EAAQO,KAKzBP,EAEAvE,EADE4E,GAAUA,EAAOjC,UACZiC,EAAOjC,UAAU3C,EAAMkE,EAAcY,IAErCnC,EAAU3C,EAAM8E,IAKzBP,GADAM,EAAQP,EADRtE,EAAO2C,EAAU3C,EAAM8E,KAER,GACf9E,EAAO6E,EAAM,GAETN,IACFK,EAASP,EAAQE,KAKd,CACLQ,EAAGR,EAASA,EAAS,IAAMvE,EAAOA,EAElCgF,EAAGhF,EACHiF,GAAIV,EACJW,EAAGN,EAEP,EAQA5C,EAAW,CACTN,QAAS,SAAiB1B,GACxB,OAAO8D,EAAY9D,EACrB,EACAmF,QAAS,SAAiBnF,GACxB,IAAIvS,EAAIwU,EAAQjC,GAEhB,YAAiB,IAANvS,EACFA,EAEAwU,EAAQjC,GAAQ,CAAC,CAE5B,EACAoF,OAAQ,SAAgBpF,GACtB,MAAO,CACLlU,GAAIkU,EACJqF,IAAK,GACLF,QAASlD,EAAQjC,GACjB3W,OAAQqb,EAAW1E,GAEvB,GAGF6B,EAAO,SAAc7B,EAAMsF,EAAMlb,EAAU2Z,GACzC,IAAIwB,EACAnB,EACAoB,EACAjC,EACAhZ,EACAoa,EAGAc,EAFAxB,EAAO,GACPyB,EAAe/c,EAAQyB,GAO3B,GAFAua,EAAWF,EADXV,EAAUA,GAAW/D,GAGA,cAAjB0F,GAAiD,aAAjBA,EAA6B,CAM/D,IAFAJ,GAAQA,EAAK9a,QAAUJ,EAASI,OAAS,CAAC,UAAW,UAAW,UAAY8a,EAEvE/a,EAAI,EAAGA,EAAI+a,EAAK9a,OAAQD,GAAK,EAIhC,GAAgB,aAFhB6Z,GADAb,EAAMxB,EAAQuD,EAAK/a,GAAIoa,IACTI,GAGZd,EAAK1Z,GAAKyX,EAASN,QAAQ1B,QACtB,GAAgB,YAAZoE,EAETH,EAAK1Z,GAAKyX,EAASmD,QAAQnF,GAC3ByF,GAAe,OACV,GAAgB,WAAZrB,EAETmB,EAAYtB,EAAK1Z,GAAKyX,EAASoD,OAAOpF,QACjC,GAAIyC,EAAQR,EAASmC,IAAY3B,EAAQP,EAASkC,IAAY3B,EAAQN,EAAUiC,GACrFH,EAAK1Z,GAAK8Z,EAAQD,OACb,KAAIb,EAAI2B,EAIb,MAAM,IAAInS,MAAMiN,EAAO,YAAcoE,GAHrCb,EAAI2B,EAAES,KAAKpC,EAAIyB,EAAGlB,EAAYC,GAAS,GAAOI,EAASC,GAAU,CAAC,GAClEH,EAAK1Z,GAAK0X,EAAQmC,EAGpB,CAGFoB,EAAMpb,EAAWA,EAASyJ,MAAMoO,EAAQjC,GAAOiE,QAAQhV,EAEnD+Q,IAIEuF,GAAaA,EAAUJ,UAAYvD,GAAS2D,EAAUJ,UAAYlD,EAAQjC,GAC5EiC,EAAQjC,GAAQuF,EAAUJ,QACjBK,IAAQ5D,GAAU6D,IAE3BxD,EAAQjC,GAAQwF,GAGtB,MAAWxF,IAGTiC,EAAQjC,GAAQ5V,EAEpB,EAEAqX,EAAYC,EAAUI,EAAO,SAAawD,EAAMlb,EAAU2Z,EAASC,EAAW4B,GAC5E,GAAoB,iBAATN,EACT,OAAItD,EAASsD,GAEJtD,EAASsD,GAAMlb,GAOjBia,EAAQtC,EAAQuD,EAAMb,EAAara,IAAW2a,GAChD,IAAKO,EAAK1B,OAAQ,CAQvB,IANAva,EAASic,GAEEA,MACTxD,EAAKzY,EAAOic,KAAMjc,EAAOe,WAGtBA,EACH,OAGEA,EAASwZ,QAGX0B,EAAOlb,EACPA,EAAW2Z,EACXA,EAAU,MAEVuB,EAAO1D,CAEX,CA2BA,OAxBAxX,EAAWA,GAAY,WAAa,EAIb,mBAAZ2Z,IACTA,EAAUC,EACVA,EAAY4B,GAIV5B,EACFnC,EAAKD,EAAO0D,EAAMlb,EAAU2Z,GAQ5B1O,YAAW,WACTwM,EAAKD,EAAO0D,EAAMlb,EAAU2Z,EAC9B,GAAG,GAGEjC,CACT,EAOAA,EAAKzY,OAAS,SAAUwc,GACtB,OAAO/D,EAAK+D,EACd,EAMApE,EAAUqE,SAAW7D,GAErBN,EAAS,SAAgB3B,EAAMsF,EAAMlb,GACnC,GAAoB,iBAAT4V,EACT,MAAM,IAAIjN,MAAM,6DAIbuS,EAAK1B,SAIRxZ,EAAWkb,EACXA,EAAO,IAGJ7C,EAAQR,EAASjC,IAAUyC,EAAQP,EAASlC,KAC/CkC,EAAQlC,GAAQ,CAACA,EAAMsF,EAAMlb,GAEjC,GAEOoX,IAAM,CACXjS,QAAQ,EAEX,CAjcD,GAmcA+R,EAAGG,UAAYA,EACfH,EAAGI,QAAUA,EACbJ,EAAGK,OAASA,GAIhBL,EAAGK,OAAO,UAAU,WAAa,IAGjCL,EAAGK,OAAO,SAAU,IAAI,WACtB,IAAIoE,EAAKxW,GAAUtG,EAMnB,OAJU,MAAN8c,GAAcC,SAAWA,QAAQC,OACnCD,QAAQC,MAAM,yJAGTF,CACT,IACAzE,EAAGK,OAAO,gBAAiB,CAAC,WAAW,SAAU1Y,GAC/C,IAAI6M,EAAQ,CAAC,EAqBb,SAASoQ,EAAWC,GAClB,IAAIC,EAAQD,EAASnd,UACjBqd,EAAU,GAEd,IAAK,IAAIC,KAAcF,EAGJ,mBAFTA,EAAME,IAMK,gBAAfA,GAIJD,EAAQhL,KAAKiL,GAGf,OAAOD,CACT,CAtCAvQ,EAAMyQ,OAAS,SAAUC,EAAYC,GACnC,IAAIC,EAAY,CAAC,EAAErE,eAEnB,SAASsE,IACPjb,KAAK3C,YAAcyd,CACrB,CAEA,IAAK,IAAIzb,KAAO0b,EACVC,EAAUhE,KAAK+D,EAAY1b,KAC7Byb,EAAWzb,GAAO0b,EAAW1b,IAOjC,OAHA4b,EAAgB3d,UAAYyd,EAAWzd,UACvCwd,EAAWxd,UAAY,IAAI2d,EAC3BH,EAAWI,UAAYH,EAAWzd,UAC3Bwd,CACT,EAuBA1Q,EAAM+Q,SAAW,SAAUJ,EAAYK,GACrC,IAAIC,EAAmBb,EAAWY,GAC9BE,EAAed,EAAWO,GAE9B,SAASQ,IACP,IAAIC,EAAU1T,MAAMxK,UAAUke,QAC1BC,EAAWL,EAAe9d,UAAUD,YAAYyB,OAChD4c,EAAoBX,EAAWzd,UAAUD,YAEzCoe,EAAW,IACbD,EAAQxE,KAAKpP,UAAWmT,EAAWzd,UAAUD,aAC7Cqe,EAAoBN,EAAe9d,UAAUD,aAG/Cqe,EAAkBvT,MAAMnI,KAAM4H,UAChC,CAIA,SAAS+T,IACP3b,KAAK3C,YAAcke,CACrB,CAJAH,EAAeQ,YAAcb,EAAWa,YAMxCL,EAAeje,UAAY,IAAIqe,EAE/B,IAAK,IAAIE,EAAI,EAAGA,EAAIP,EAAaxc,OAAQ+c,IAAK,CAC5C,IAAIC,EAAcR,EAAaO,GAC/BN,EAAeje,UAAUwe,GAAef,EAAWzd,UAAUwe,EAC/D,CAkBA,IAhBA,IAAIC,EAAe,SAAsBnB,GAEvC,IAAIoB,EAAiB,WAA2B,EAE5CpB,KAAcW,EAAeje,YAC/B0e,EAAiBT,EAAeje,UAAUsd,IAG5C,IAAIqB,EAAkBb,EAAe9d,UAAUsd,GAC/C,OAAO,WAGL,OAFc9S,MAAMxK,UAAUke,QACtBxE,KAAKpP,UAAWoU,GACjBC,EAAgB9T,MAAMnI,KAAM4H,UACrC,CACF,EAESsU,EAAI,EAAGA,EAAIb,EAAiBvc,OAAQod,IAAK,CAChD,IAAID,EAAkBZ,EAAiBa,GACvCX,EAAeje,UAAU2e,GAAmBF,EAAaE,EAC3D,CAEA,OAAOV,CACT,EAEA,IAAIY,EAAa,WACfnc,KAAKoc,UAAY,CAAC,CACpB,EAEAD,EAAW7e,UAAUkE,GAAK,SAAUS,EAAOvD,GACzCsB,KAAKoc,UAAYpc,KAAKoc,WAAa,CAAC,EAEhCna,KAASjC,KAAKoc,UAChBpc,KAAKoc,UAAUna,GAAO0N,KAAKjR,GAE3BsB,KAAKoc,UAAUna,GAAS,CAACvD,EAE7B,EAEAyd,EAAW7e,UAAUmM,QAAU,SAAUxH,GACvC,IAAI4U,EAAQ/O,MAAMxK,UAAUuZ,MACxBwF,EAASxF,EAAMG,KAAKpP,UAAW,GACnC5H,KAAKoc,UAAYpc,KAAKoc,WAAa,CAAC,EAEtB,MAAVC,IACFA,EAAS,IAIW,IAAlBA,EAAOvd,QACTud,EAAO1M,KAAK,CAAC,GAIf0M,EAAO,GAAGC,MAAQra,EAEdA,KAASjC,KAAKoc,WAChBpc,KAAKuc,OAAOvc,KAAKoc,UAAUna,GAAQ4U,EAAMG,KAAKpP,UAAW,IAGvD,MAAO5H,KAAKoc,WACdpc,KAAKuc,OAAOvc,KAAKoc,UAAU,KAAMxU,UAErC,EAEAuU,EAAW7e,UAAUif,OAAS,SAAUH,EAAWC,GACjD,IAAK,IAAIxd,EAAI,EAAG2d,EAAMJ,EAAUtd,OAAQD,EAAI2d,EAAK3d,IAC/Cud,EAAUvd,GAAGsJ,MAAMnI,KAAMqc,EAE7B,EAEAjS,EAAM+R,WAAaA,EAEnB/R,EAAMqS,cAAgB,SAAU3d,GAG9B,IAFA,IAAI4d,EAAQ,GAEH7d,EAAI,EAAGA,EAAIC,EAAQD,IAE1B6d,GADiBjJ,KAAKkJ,MAAsB,GAAhBlJ,KAAKC,UACbC,SAAS,IAG/B,OAAO+I,CACT,EAEAtS,EAAMrK,KAAO,SAAU6c,EAAMC,GAC3B,OAAO,WACLD,EAAKzU,MAAM0U,EAASjV,UACtB,CACF,EAEAwC,EAAM0S,aAAe,SAAUlf,GAC7B,IAAK,IAAImf,KAAenf,EAAM,CAC5B,IAAIgE,EAAOmb,EAAYzO,MAAM,KACzB0O,EAAYpf,EAEhB,GAAoB,IAAhBgE,EAAK9C,OAAT,CAIA,IAAK,IAAIme,EAAI,EAAGA,EAAIrb,EAAK9C,OAAQme,IAAK,CACpC,IAAI5d,EAAMuC,EAAKqb,IAGf5d,EAAMA,EAAIsV,UAAU,EAAG,GAAGnQ,cAAgBnF,EAAIsV,UAAU,MAE3CqI,IACXA,EAAU3d,GAAO,CAAC,GAGhB4d,GAAKrb,EAAK9C,OAAS,IACrBke,EAAU3d,GAAOzB,EAAKmf,IAGxBC,EAAYA,EAAU3d,EACxB,QAEOzB,EAAKmf,EAnBZ,CAoBF,CAEA,OAAOnf,CACT,EAEAwM,EAAM8S,UAAY,SAAUhb,EAAOib,GAMjC,IAAI5c,EAAMhD,EAAE4f,GACRC,EAAYD,EAAGE,MAAMD,UACrBE,EAAYH,EAAGE,MAAMC,UAEzB,OAAIF,IAAcE,GAA4B,WAAdA,GAAwC,YAAdA,KAIxC,WAAdF,GAAwC,WAAdE,GAIvB/c,EAAIgd,cAAgBJ,EAAGK,cAAgBjd,EAAIkd,aAAeN,EAAGrc,YACtE,EAEAsJ,EAAMpE,aAAe,SAAUrB,GAC7B,IAAI+Y,EAAa,CACf,KAAM,QACN,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAM,QACN,IAAK,SAGP,MAAsB,iBAAX/Y,EACFA,EAGFgZ,OAAOhZ,GAAQxE,QAAQ,gBAAgB,SAAUyd,GACtD,OAAOF,EAAWE,EACpB,GACF,EAGAxT,EAAMyT,QAAU,CAAC,EACjB,IAAIzd,EAAK,EAqFT,OAnFAgK,EAAM0T,mBAAqB,SAAUvZ,GAKnC,IAAIwZ,EAAYxZ,EAAQ0H,aAAa,mBAErC,OAAiB,MAAb8R,IAMFA,EADExZ,EAAQnE,GACE,gBAAkBmE,EAAQnE,GAE1B,mBAAqBA,GAAIuT,WAAa,IAAMvJ,EAAMqS,cAAc,GAG9ElY,EAAQ0E,aAAa,kBAAmB8U,IAV/BA,CAYX,EAEA3T,EAAM4T,UAAY,SAAUzZ,EAAS+P,EAAMhV,GAGzC,IAAIc,EAAKgK,EAAM0T,mBAAmBvZ,GAE7B6F,EAAMyT,QAAQzd,KACjBgK,EAAMyT,QAAQzd,GAAM,CAAC,GAGvBgK,EAAMyT,QAAQzd,GAAIkU,GAAQhV,CAC5B,EAEA8K,EAAM6T,QAAU,SAAU1Z,EAAS+P,GAKjC,IAAIlU,EAAKgK,EAAM0T,mBAAmBvZ,GAElC,OAAI+P,EACElK,EAAMyT,QAAQzd,IACe,MAA3BgK,EAAMyT,QAAQzd,GAAIkU,GACblK,EAAMyT,QAAQzd,GAAIkU,GAMtB/W,EAAEgH,GAAS3G,KAAK0W,GAEhBlK,EAAMyT,QAAQzd,EAEzB,EAEAgK,EAAM8T,WAAa,SAAU3Z,GAE3B,IAAInE,EAAKgK,EAAM0T,mBAAmBvZ,GAET,MAArB6F,EAAMyT,QAAQzd,WACTgK,EAAMyT,QAAQzd,GAGvBmE,EAAQgM,gBAAgB,kBAC1B,EAEAnG,EAAM+T,0BAA4B,SAAUC,EAAMC,GAChD,IACIC,EAAqBF,EAAKnS,aAAa,SAASoC,OAAOC,MAAM,OACjEgQ,EAAqBA,EAAmBC,QAAO,SAAUC,GAEvD,OAAqC,IAA9BA,EAAM1F,QAAQ,WACvB,IACA,IAAI2F,EAAgBJ,EAAIpS,aAAa,SAASoC,OAAOC,MAAM,OAC3DmQ,EAAgBA,EAAcF,QAAO,SAAUC,GAE7C,OAAqC,IAA9BA,EAAM1F,QAAQ,WACvB,IACA,IAAI4F,EAAeJ,EAAmBlW,OAAOqW,GAC7CL,EAAKnV,aAAa,QAASyV,EAAavG,KAAK,KAC/C,EAEO/N,CACT,IACAwL,EAAGK,OAAO,kBAAmB,CAAC,SAAU,YAAY,SAAU1Y,EAAG6M,GAC/D,SAASuU,EAAQhM,EAAUpT,EAASqf,GAClC5e,KAAK2S,SAAWA,EAChB3S,KAAKpC,KAAOghB,EACZ5e,KAAKT,QAAUA,EAEfof,EAAQzD,UAAU7d,YAAY2Z,KAAKhX,KACrC,CAgbA,OA9aAoK,EAAMyQ,OAAO8D,EAASvU,EAAM+R,YAE5BwC,EAAQrhB,UAAUuhB,OAAS,WACzB,IAAIC,EAAWvhB,EAAE,6DAOjB,OALIyC,KAAKT,QAAQgC,IAAI,aACnBud,EAASjc,KAAK,uBAAwB,QAGxC7C,KAAK8e,SAAWA,EACTA,CACT,EAEAH,EAAQrhB,UAAUyhB,MAAQ,WACxB/e,KAAK8e,SAAS5U,OAChB,EAEAyU,EAAQrhB,UAAU0hB,eAAiB,SAAU3C,GAC3C,IAAIrW,EAAehG,KAAKT,QAAQgC,IAAI,gBACpCvB,KAAK+e,QACL/e,KAAKif,cACL,IAAIC,EAAW3hB,EAAE,gFACb8W,EAAUrU,KAAKT,QAAQgC,IAAI,gBAAgBA,IAAI8a,EAAOhI,SAC1D6K,EAAS7V,OAAOrD,EAAaqO,EAAQgI,EAAO9D,QAC5C2G,EAAS,GAAGpW,WAAa,4BACzB9I,KAAK8e,SAASzV,OAAO6V,EACvB,EAEAP,EAAQrhB,UAAU6hB,aAAe,WAC/Bnf,KAAK8e,SAASpe,KAAK,6BAA6BxB,QAClD,EAEAyf,EAAQrhB,UAAU+L,OAAS,SAAUzL,GACnCoC,KAAKif,cACL,IAAIG,EAAW,GAEf,GAAoB,MAAhBxhB,EAAKyhB,SAA2C,IAAxBzhB,EAAKyhB,QAAQvgB,OAAzC,CAUAlB,EAAKyhB,QAAUrf,KAAKsf,KAAK1hB,EAAKyhB,SAE9B,IAAK,IAAInD,EAAI,EAAGA,EAAIte,EAAKyhB,QAAQvgB,OAAQod,IAAK,CAC5C,IAAItQ,EAAOhO,EAAKyhB,QAAQnD,GACpBqD,EAAUvf,KAAKwf,OAAO5T,GAC1BwT,EAASzP,KAAK4P,EAChB,CAEAvf,KAAK8e,SAASzV,OAAO+V,EAVrB,MAP0C,IAApCpf,KAAK8e,SAAS/f,WAAWD,QAC3BkB,KAAKyJ,QAAQ,kBAAmB,CAC9B4K,QAAS,aAgBjB,EAEAsK,EAAQrhB,UAAUmiB,SAAW,SAAUX,EAAUY,GACvBA,EAAUhf,KAAK,oBACrB2I,OAAOyV,EAC3B,EAEAH,EAAQrhB,UAAUgiB,KAAO,SAAU1hB,GAEjC,OADaoC,KAAKT,QAAQgC,IAAI,SACvBoe,CAAO/hB,EAChB,EAEA+gB,EAAQrhB,UAAUsiB,mBAAqB,WACrC,IAAIR,EAAWpf,KAAK8e,SAASpe,KAAK,wCAC9Bmf,EAAYT,EAASb,OAAO,sCAE5BsB,EAAU/gB,OAAS,EAErB+gB,EAAUC,QAAQrW,QAAQ,cAI1B2V,EAASU,QAAQrW,QAAQ,cAG3BzJ,KAAK+f,wBACP,EAEApB,EAAQrhB,UAAU0iB,WAAa,WAC7B,IAAI1V,EAAOtK,KACXA,KAAKpC,KAAKqiB,SAAQ,SAAUC,GAC1B,IAAIC,EAAcD,EAASrI,KAAI,SAAUuI,GACvC,OAAOA,EAAEhgB,GAAGuT,UACd,IACerJ,EAAKwU,SAASpe,KAAK,wCACzBoB,MAAK,WACZ,IAAIyd,EAAUhiB,EAAEyC,MACZ4L,EAAOxB,EAAM6T,QAAQje,KAAM,QAE3BI,EAAK,GAAKwL,EAAKxL,GAEC,MAAhBwL,EAAKrH,SAAmBqH,EAAKrH,QAAQ2b,UAA4B,MAAhBtU,EAAKrH,SAAmB4b,EAAYrH,QAAQ1Y,IAAO,GACtGJ,KAAKf,UAAUE,IAAI,qCACnBogB,EAAQ1c,KAAK,gBAAiB,UAE9B7C,KAAKf,UAAUC,OAAO,qCACtBqgB,EAAQ1c,KAAK,gBAAiB,SAElC,GACF,GACF,EAEA8b,EAAQrhB,UAAU+iB,YAAc,SAAUhE,GACxCrc,KAAKif,cACL,IACIqB,EAAU,CACZpU,UAAU,EACVoU,SAAS,EACTpc,KAJgBlE,KAAKT,QAAQgC,IAAI,gBAAgBA,IAAI,YAI/Cgf,CAAYlE,IAEhBmE,EAAWxgB,KAAKwf,OAAOc,GAC3BE,EAAS1X,WAAa,mBACtB9I,KAAK8e,SAAS3V,QAAQqX,EACxB,EAEA7B,EAAQrhB,UAAU2hB,YAAc,WAC9Bjf,KAAK8e,SAASpe,KAAK,oBAAoBxB,QACzC,EAEAyf,EAAQrhB,UAAUkiB,OAAS,SAAU5hB,GACnC,IAAI4hB,EAAS9f,SAASmJ,cAAc,MACpC2W,EAAOvgB,UAAUE,IAAI,2BACrBqgB,EAAOvgB,UAAUE,IAAI,uCACrB,IAAIshB,EAAQ,CACV,KAAQ,UAENC,EAAUljB,OAAOmjB,QAAQrjB,UAAUojB,SAAWljB,OAAOmjB,QAAQrjB,UAAUsjB,mBAAqBpjB,OAAOmjB,QAAQrjB,UAAUujB,sBA2BzH,IAAK,IAAIhe,KAzBW,MAAhBjF,EAAK2G,SAAmBmc,EAAQ1J,KAAKpZ,EAAK2G,QAAS,cAAgC,MAAhB3G,EAAK2G,SAAmB3G,EAAKsO,YAClGuU,EAAM,iBAAmB,OACzBjB,EAAOvgB,UAAUC,OAAO,uCACxBsgB,EAAOvgB,UAAUE,IAAI,sCAGR,MAAXvB,EAAKwC,IACPof,EAAOvgB,UAAUC,OAAO,uCAGJ,MAAlBtB,EAAKkjB,YACPtB,EAAOpf,GAAKxC,EAAKkjB,WAGfljB,EAAKmjB,QACPvB,EAAOuB,MAAQnjB,EAAKmjB,OAGlBnjB,EAAKmB,WACP0hB,EAAMhS,KAAO,QACbgS,EAAM,cAAgB7iB,EAAKsG,KAC3Bsb,EAAOvgB,UAAUC,OAAO,uCACxBsgB,EAAOvgB,UAAUE,IAAI,mCAGNshB,EAAO,CACtB,IAAIxb,EAAMwb,EAAM5d,GAChB2c,EAAOvW,aAAapG,EAAMoC,EAC5B,CAEA,GAAIrH,EAAKmB,SAAU,CACjB,IAAIwgB,EAAUhiB,EAAEiiB,GACZnb,EAAQ3E,SAASmJ,cAAc,UACnCxE,EAAMyE,UAAY,yBAClB9I,KAAKghB,SAASpjB,EAAMyG,GAGpB,IAFA,IAAI4c,EAAY,GAEPC,EAAI,EAAGA,EAAItjB,EAAKmB,SAASD,OAAQoiB,IAAK,CAC7C,IAAIjU,EAAQrP,EAAKmB,SAASmiB,GACtBC,EAASnhB,KAAKwf,OAAOvS,GACzBgU,EAAUtR,KAAKwR,EACjB,CAEA,IAAIC,EAAqB7jB,EAAE,YAAa,CACtC,MAAS,4DACT,KAAQ,SAEV6jB,EAAmB/X,OAAO4X,GAC1B1B,EAAQlW,OAAOhF,GACfkb,EAAQlW,OAAO+X,EACjB,MACEphB,KAAKghB,SAASpjB,EAAM4hB,GAItB,OADApV,EAAM4T,UAAUwB,EAAQ,OAAQ5hB,GACzB4hB,CACT,EAEAb,EAAQrhB,UAAUyC,KAAO,SAAUqE,EAAWid,GAC5C,IAAI/W,EAAOtK,KACPI,EAAKgE,EAAUhE,GAAK,WACxBJ,KAAK8e,SAASjc,KAAK,KAAMzC,GACzBgE,EAAU5C,GAAG,eAAe,SAAU6a,GACpC/R,EAAKyU,QACLzU,EAAKjB,OAAOgT,EAAOze,MAEfwG,EAAUkd,WACZhX,EAAK0V,aACL1V,EAAKsV,qBAET,IACAxb,EAAU5C,GAAG,kBAAkB,SAAU6a,GACvC/R,EAAKjB,OAAOgT,EAAOze,MAEfwG,EAAUkd,UACZhX,EAAK0V,YAET,IACA5b,EAAU5C,GAAG,SAAS,SAAU6a,GAC9B/R,EAAK6U,eACL7U,EAAK+V,YAAYhE,EACnB,IACAjY,EAAU5C,GAAG,UAAU,WAChB4C,EAAUkd,WAIfhX,EAAK0V,aAED1V,EAAK/K,QAAQgC,IAAI,sBACnB+I,EAAKsV,qBAET,IACAxb,EAAU5C,GAAG,YAAY,WAClB4C,EAAUkd,WAIfhX,EAAK0V,aAED1V,EAAK/K,QAAQgC,IAAI,sBACnB+I,EAAKsV,qBAET,IACAxb,EAAU5C,GAAG,QAAQ,WAEnB8I,EAAKwU,SAASjc,KAAK,gBAAiB,QACpCyH,EAAKwU,SAASjc,KAAK,cAAe,SAClCyH,EAAK0V,aACL1V,EAAKyV,wBACP,IACA3b,EAAU5C,GAAG,SAAS,WAEpB8I,EAAKwU,SAASjc,KAAK,gBAAiB,SACpCyH,EAAKwU,SAASjc,KAAK,cAAe,QAClCyH,EAAKwU,SAAS3b,WAAW,wBAC3B,IACAiB,EAAU5C,GAAG,kBAAkB,WAC7B,IAAI+f,EAAejX,EAAKkX,wBAEI,IAAxBD,EAAaziB,QAIjByiB,EAAa9X,QAAQ,UACvB,IACArF,EAAU5C,GAAG,kBAAkB,WAC7B,IAAI+f,EAAejX,EAAKkX,wBAExB,GAA4B,IAAxBD,EAAaziB,OAAjB,CAIA,IAAIlB,EAAOwM,EAAM6T,QAAQsD,EAAa,GAAI,QAEtCA,EAAa/b,SAAS,qCACxB8E,EAAKb,QAAQ,QAAS,CAAC,GAEvBa,EAAKb,QAAQ,SAAU,CACrB7L,KAAMA,GARV,CAWF,IACAwG,EAAU5C,GAAG,oBAAoB,WAC/B,IAAI+f,EAAejX,EAAKkX,wBACpBpC,EAAW9U,EAAKwU,SAASpe,KAAK,wCAC9B+gB,EAAerC,EAASld,MAAMqf,GAGlC,KAAIE,GAAgB,GAApB,CAIA,IAAIC,EAAYD,EAAe,EAEH,IAAxBF,EAAaziB,SACf4iB,EAAY,GAGd,IAAIC,EAAQvC,EAASwC,GAAGF,GACxBC,EAAMlY,QAAQ,cACd,IAAIoY,EAAgBvX,EAAKwU,SAAS1d,SAAS0gB,IACvCC,EAAUJ,EAAMvgB,SAAS0gB,IACzBE,EAAa1X,EAAKwU,SAASmD,aAAeF,EAAUF,GAEtC,IAAdH,EACFpX,EAAKwU,SAASmD,UAAU,GACfF,EAAUF,EAAgB,GACnCvX,EAAKwU,SAASmD,UAAUD,EAjB1B,CAmBF,IACA5d,EAAU5C,GAAG,gBAAgB,WAC3B,IAAI+f,EAAejX,EAAKkX,wBACpBpC,EAAW9U,EAAKwU,SAASpe,KAAK,wCAE9BghB,EADetC,EAASld,MAAMqf,GACH,EAE/B,KAAIG,GAAatC,EAAStgB,QAA1B,CAIA,IAAI6iB,EAAQvC,EAASwC,GAAGF,GACxBC,EAAMlY,QAAQ,cACd,IAAIoY,EAAgBvX,EAAKwU,SAAS1d,SAAS0gB,IAAMxX,EAAKwU,SAASoD,aAAY,GACvEC,EAAaR,EAAMvgB,SAAS0gB,IAAMH,EAAMO,aAAY,GACpDF,EAAa1X,EAAKwU,SAASmD,YAAcE,EAAaN,EAExC,IAAdH,EACFpX,EAAKwU,SAASmD,UAAU,GACfE,EAAaN,GACtBvX,EAAKwU,SAASmD,UAAUD,EAX1B,CAaF,IACA5d,EAAU5C,GAAG,iBAAiB,SAAU6a,GACtCA,EAAO9X,QAAQ,GAAGtF,UAAUE,IAAI,wCAChCkd,EAAO9X,QAAQ,GAAG0E,aAAa,gBAAiB,OAClD,IACA7E,EAAU5C,GAAG,mBAAmB,SAAU6a,GACxC/R,EAAK0U,eAAe3C,EACtB,IAEI9e,EAAEwW,GAAGqO,YACPpiB,KAAK8e,SAAStd,GAAG,cAAc,SAAUO,GACvC,IAAI+f,EAAMxX,EAAKwU,SAASmD,YACpBI,EAAS/X,EAAKwU,SAASvd,IAAI,GAAGic,aAAesE,EAAM/f,EAAEugB,OACrDC,EAAUxgB,EAAEugB,OAAS,GAAKR,EAAM/f,EAAEugB,QAAU,EAC5CE,EAAazgB,EAAEugB,OAAS,GAAKD,GAAU/X,EAAKwU,SAAS2D,SAErDF,GACFjY,EAAKwU,SAASmD,UAAU,GACxBlgB,EAAEM,iBACFN,EAAE6B,mBACO4e,IACTlY,EAAKwU,SAASmD,UAAU3X,EAAKwU,SAASvd,IAAI,GAAGic,aAAelT,EAAKwU,SAAS2D,UAC1E1gB,EAAEM,iBACFN,EAAE6B,kBAEN,IAGF5D,KAAK8e,SAAStd,GAAG,UAAW,wCAAwC,SAAU+K,GAC5E,IAAImW,EAAQnlB,EAAEyC,MACVpC,EAAOwM,EAAM6T,QAAQje,KAAM,QAE3B0iB,EAAMld,SAAS,qCACb8E,EAAK/K,QAAQgC,IAAI,YACnB+I,EAAKb,QAAQ,WAAY,CACvB+L,cAAejJ,EACf3O,KAAMA,IAGR0M,EAAKb,QAAQ,QAAS,CAAC,GAM3Ba,EAAKb,QAAQ,SAAU,CACrB+L,cAAejJ,EACf3O,KAAMA,GAEV,IACAoC,KAAK8e,SAAStd,GAAG,aAAc,wCAAwC,SAAU+K,GAC/E,IAAI3O,EAAOwM,EAAM6T,QAAQje,KAAM,QAC/BsK,EAAKkX,wBAAwBtgB,YAAY,wCAAwC2B,KAAK,gBAAiB,SACvGyH,EAAKb,QAAQ,gBAAiB,CAC5B7L,KAAMA,EACN2G,QAAShH,EAAEyC,OAEf,GACF,EAEA2e,EAAQrhB,UAAUkkB,sBAAwB,WAExC,OADmBxhB,KAAK8e,SAASpe,KAAK,wCAExC,EAEAie,EAAQrhB,UAAUuW,QAAU,WAC1B7T,KAAK8e,SAAS5f,QAChB,EAEAyf,EAAQrhB,UAAUyiB,uBAAyB,WACzC,IAAIwB,EAAevhB,KAAKwhB,wBAExB,GAA4B,IAAxBD,EAAaziB,OAAjB,CAIA,IACI2iB,EADWzhB,KAAK8e,SAASpe,KAAK,wCACNwB,MAAMqf,GAC9BM,EAAgB7hB,KAAK8e,SAAS1d,SAAS0gB,IACvCC,EAAUR,EAAangB,SAAS0gB,IAChCE,EAAahiB,KAAK8e,SAASmD,aAAeF,EAAUF,GACpDc,EAAcZ,EAAUF,EAC5BG,GAAgD,EAAlCT,EAAaW,aAAY,GAEnCT,GAAgB,EAClBzhB,KAAK8e,SAASmD,UAAU,IACfU,EAAc3iB,KAAK8e,SAASoD,eAAiBS,EAAc,IACpE3iB,KAAK8e,SAASmD,UAAUD,EAb1B,CAeF,EAEArD,EAAQrhB,UAAU0jB,SAAW,SAAUhM,EAAQ5Q,GAC7C,IAAI4c,EAAWhhB,KAAKT,QAAQgC,IAAI,kBAC5ByE,EAAehG,KAAKT,QAAQgC,IAAI,gBAChCyD,EAAUgc,EAAShM,EAAQ5Q,GAEhB,MAAXY,EACFZ,EAAUiZ,MAAMuF,QAAU,OACE,iBAAZ5d,EAChBZ,EAAU2E,UAAY/C,EAAahB,GAEnCzH,EAAE6G,GAAWiF,OAAOrE,EAExB,EAEO2Z,CACT,IACA/I,EAAGK,OAAO,eAAgB,IAAI,WAoB5B,MAnBW,CACTnL,UAAW,EACXC,IAAK,EACL8X,MAAO,GACPC,MAAO,GACPC,KAAM,GACNC,IAAK,GACL/X,IAAK,GACLC,MAAO,GACPC,QAAS,GACTC,UAAW,GACXC,IAAK,GACLC,KAAM,GACNC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,OAAQ,GAGZ,IACAiK,EAAGK,OAAO,yBAA0B,CAAC,SAAU,WAAY,YAAY,SAAU1Y,EAAG6M,EAAO6Y,GACzF,SAASC,EAAcvQ,EAAUpT,GAC/BS,KAAK2S,SAAWA,EAChB3S,KAAKT,QAAUA,EAEf2jB,EAAchI,UAAU7d,YAAY2Z,KAAKhX,KAC3C,CA8IA,OA5IAoK,EAAMyQ,OAAOqI,EAAe9Y,EAAM+R,YAElC+G,EAAc5lB,UAAUuhB,OAAS,WAC/B,IAAIsE,EAAa5lB,EAAE,uGAanB,OAZAyC,KAAKojB,UAAY,EAEsC,MAAnDhZ,EAAM6T,QAAQje,KAAK2S,SAAS,GAAI,gBAClC3S,KAAKojB,UAAYhZ,EAAM6T,QAAQje,KAAK2S,SAAS,GAAI,gBACN,MAAlC3S,KAAK2S,SAAS9P,KAAK,cAC5B7C,KAAKojB,UAAYpjB,KAAK2S,SAAS9P,KAAK,aAGtCsgB,EAAWtgB,KAAK,QAAS7C,KAAK2S,SAAS9P,KAAK,UAC5CsgB,EAAWtgB,KAAK,WAAY7C,KAAKojB,WACjCD,EAAWtgB,KAAK,gBAAiB,SACjC7C,KAAKmjB,WAAaA,EACXA,CACT,EAEAD,EAAc5lB,UAAUyC,KAAO,SAAUqE,EAAWid,GAClD,IAAI/W,EAAOtK,KACPqjB,EAAYjf,EAAUhE,GAAK,WAC/BJ,KAAKoE,UAAYA,EACjBpE,KAAKmjB,WAAW3hB,GAAG,SAAS,SAAU+K,GACpCjC,EAAKb,QAAQ,QAAS8C,EACxB,IACAvM,KAAKmjB,WAAW3hB,GAAG,QAAQ,SAAU+K,GACnCjC,EAAKgZ,YAAY/W,EACnB,IACAvM,KAAKmjB,WAAW3hB,GAAG,WAAW,SAAU+K,GACtCjC,EAAKb,QAAQ,WAAY8C,GAErBA,EAAInK,QAAU6gB,EAAK/X,OACrBqB,EAAIlK,gBAER,IACA+B,EAAU5C,GAAG,iBAAiB,SAAU6a,GACtC/R,EAAK6Y,WAAWtgB,KAAK,wBAAyBwZ,EAAOze,KAAKkjB,UAC5D,IACA1c,EAAU5C,GAAG,oBAAoB,SAAU6a,GACzC/R,EAAKiZ,OAAOlH,EAAOze,KACrB,IACAwG,EAAU5C,GAAG,QAAQ,WAEnB8I,EAAK6Y,WAAWtgB,KAAK,gBAAiB,QACtCyH,EAAK6Y,WAAWtgB,KAAK,YAAawgB,GAElC/Y,EAAKkZ,oBAAoBpf,EAC3B,IACAA,EAAU5C,GAAG,SAAS,WAEpB8I,EAAK6Y,WAAWtgB,KAAK,gBAAiB,SACtCyH,EAAK6Y,WAAWhgB,WAAW,yBAC3BmH,EAAK6Y,WAAWhgB,WAAW,aAC3BmH,EAAK6Y,WAAW1Z,QAAQ,SAExBa,EAAKmZ,oBAAoBrf,EAC3B,IACAA,EAAU5C,GAAG,UAAU,WACrB8I,EAAK6Y,WAAWtgB,KAAK,WAAYyH,EAAK8Y,WACtC9Y,EAAK6Y,WAAWtgB,KAAK,gBAAiB,QACxC,IACAuB,EAAU5C,GAAG,WAAW,WACtB8I,EAAK6Y,WAAWtgB,KAAK,WAAY,MACjCyH,EAAK6Y,WAAWtgB,KAAK,gBAAiB,OACxC,GACF,EAEAqgB,EAAc5lB,UAAUgmB,YAAc,SAAU/W,GAC9C,IAAIjC,EAAOtK,KAGXxC,OAAOmM,YAAW,WAEZjK,SAAS0N,eAAiB9C,EAAK6Y,WAAW,IAAM5lB,EAAEsR,SAASvE,EAAK6Y,WAAW,GAAIzjB,SAAS0N,gBAI5F9C,EAAKb,QAAQ,OAAQ8C,EACvB,GAAG,EACL,EAEA2W,EAAc5lB,UAAUkmB,oBAAsB,SAAUpf,GACtD7G,EAAEmC,SAASwP,MAAM1N,GAAG,qBAAuB4C,EAAUhE,IAAI,SAAU2B,GACjE,IACI2hB,EADUnmB,EAAEwE,EAAEuB,QACI7C,QAAQ,YACnBlD,EAAE,oCACRuE,MAAK,WACJ9B,MAAQ0jB,EAAQ,IAILtZ,EAAM6T,QAAQje,KAAM,WAG1ByF,WAAW,QACtB,GACF,GACF,EAEAyd,EAAc5lB,UAAUmmB,oBAAsB,SAAUrf,GACtD7G,EAAEmC,SAASwP,MAAMyU,IAAI,qBAAuBvf,EAAUhE,GACxD,EAEA8iB,EAAc5lB,UAAUmiB,SAAW,SAAU0D,EAAY9B,GAC7BA,EAAW3gB,KAAK,cACtB2I,OAAO8Z,EAC7B,EAEAD,EAAc5lB,UAAUuW,QAAU,WAChC7T,KAAKyjB,oBAAoBzjB,KAAKoE,UAChC,EAEA8e,EAAc5lB,UAAUimB,OAAS,SAAU3lB,GACzC,MAAM,IAAIyJ,MAAM,wDAClB,EAUA6b,EAAc5lB,UAAUsmB,UAAY,WAClC,OAAQ5jB,KAAK6jB,YACf,EASAX,EAAc5lB,UAAUumB,WAAa,WACnC,OAAO7jB,KAAKT,QAAQgC,IAAI,WAC1B,EAEO2hB,CACT,IACAtN,EAAGK,OAAO,2BAA4B,CAAC,SAAU,SAAU,WAAY,YAAY,SAAU1Y,EAAG2lB,EAAe9Y,EAAO6Y,GACpH,SAASa,IACPA,EAAgB5I,UAAU7d,YAAY8K,MAAMnI,KAAM4H,UACpD,CAoFA,OAlFAwC,EAAMyQ,OAAOiJ,EAAiBZ,GAE9BY,EAAgBxmB,UAAUuhB,OAAS,WACjC,IAAIsE,EAAaW,EAAgB5I,UAAU2D,OAAO7H,KAAKhX,MAKvD,OAHAmjB,EAAW,GAAGlkB,UAAUE,IAAI,6BAE5BgkB,EAAWlf,KAAK,4LACTkf,CACT,EAEAW,EAAgBxmB,UAAUyC,KAAO,SAAUqE,EAAWid,GACpD,IAAI/W,EAAOtK,KAEX8jB,EAAgB5I,UAAUnb,KAAKoI,MAAMnI,KAAM4H,WAE3C,IAAIxH,EAAKgE,EAAUhE,GAAK,aACxBJ,KAAKmjB,WAAWziB,KAAK,gCAAgCmC,KAAK,KAAMzC,GAAIyC,KAAK,OAAQ,WAAWA,KAAK,gBAAiB,QAClH7C,KAAKmjB,WAAWtgB,KAAK,kBAAmBzC,GACxCJ,KAAKmjB,WAAWtgB,KAAK,gBAAiBzC,GACtCJ,KAAKmjB,WAAW3hB,GAAG,aAAa,SAAU+K,GAEtB,IAAdA,EAAInK,OAIRkI,EAAKb,QAAQ,SAAU,CACrB+L,cAAejJ,GAEnB,IACAvM,KAAKmjB,WAAW3hB,GAAG,SAAS,SAAU+K,GACtC,IACAvM,KAAKmjB,WAAW3hB,GAAG,QAAQ,SAAU+K,GACrC,IACAnI,EAAU5C,GAAG,SAAS,SAAU+K,GACzBnI,EAAUkd,UACbhX,EAAK6Y,WAAW1Z,QAAQ,QAE5B,GACF,EAEAqa,EAAgBxmB,UAAUyhB,MAAQ,WAChC,IAAIgF,EAAY/jB,KAAKmjB,WAAWziB,KAAK,gCACrCqjB,EAAU7Z,QACV6Z,EAAU5gB,WAAW,QACvB,EAEA2gB,EAAgBxmB,UAAUslB,QAAU,SAAUhlB,EAAMwG,GAClD,IAAI4c,EAAWhhB,KAAKT,QAAQgC,IAAI,qBAEhC,OADmBvB,KAAKT,QAAQgC,IAAI,eAC7ByE,CAAagb,EAASpjB,EAAMwG,GACrC,EAEA0f,EAAgBxmB,UAAU0mB,mBAAqB,WAC7C,OAAOzmB,EAAE,gBACX,EAEAumB,EAAgBxmB,UAAUimB,OAAS,SAAU3lB,GAE3C,GAAoB,IAAhBA,EAAKkB,OAOP,OANAkB,KAAK+e,aAED,SAAW/e,KAAKT,QAAQgC,IAAI,UAC9BvB,KAAKmjB,WAAWziB,KAAK,gCAAgCuD,KAAK,yEAM9D,IAAIggB,EAAYrmB,EAAK,GACjBmmB,EAAY/jB,KAAKmjB,WAAWziB,KAAK,gCACjCwjB,EAAYlkB,KAAK4iB,QAAQqB,EAAWF,GACxCA,EAAU7Z,QAAQb,OAAO6a,GACzB,IAAInD,EAAQkD,EAAUlD,OAASkD,EAAU/f,KAErC6c,EACFgD,EAAUlhB,KAAK,QAASke,GAExBgD,EAAU5gB,WAAW,QAEzB,EAEO2gB,CACT,IACAlO,EAAGK,OAAO,6BAA8B,CAAC,SAAU,SAAU,aAAa,SAAU1Y,EAAG2lB,EAAe9Y,GACpG,SAAS+Z,EAAkBxR,EAAUpT,GACnC4kB,EAAkBjJ,UAAU7d,YAAY8K,MAAMnI,KAAM4H,UACtD,CA4GA,OA1GAwC,EAAMyQ,OAAOsJ,EAAmBjB,GAEhCiB,EAAkB7mB,UAAUuhB,OAAS,WACnC,IAAIsE,EAAagB,EAAkBjJ,UAAU2D,OAAO7H,KAAKhX,MAIzD,OAFAmjB,EAAW,GAAGlkB,UAAUE,IAAI,+BAC5BgkB,EAAWlf,KAAK,iDACTkf,CACT,EAEAgB,EAAkB7mB,UAAUyC,KAAO,SAAUqE,EAAWid,GACtD,IAAI/W,EAAOtK,KAEXmkB,EAAkBjJ,UAAUnb,KAAKoI,MAAMnI,KAAM4H,WAE7C,IAAIxH,EAAKgE,EAAUhE,GAAK,aACxBJ,KAAKmjB,WAAWziB,KAAK,gCAAgCmC,KAAK,KAAMzC,GAChEJ,KAAKmjB,WAAW3hB,GAAG,SAAS,SAAU+K,GACpCjC,EAAKb,QAAQ,SAAU,CACrB+L,cAAejJ,GAEnB,IACAvM,KAAKmjB,WAAW3hB,GAAG,QAAS,oBAAoB,SAAU+K,GAExD,IAAIjC,EAAKuZ,aAAT,CAIA,IACIV,EADU5lB,EAAEyC,MACSoH,SACrBxJ,EAAOwM,EAAM6T,QAAQkF,EAAW,GAAI,QACxC7Y,EAAKb,QAAQ,WAAY,CACvB+L,cAAejJ,EACf3O,KAAMA,GAPR,CASF,IACAoC,KAAKmjB,WAAW3hB,GAAG,UAAW,oBAAoB,SAAU+K,GAEtDjC,EAAKuZ,cAITtX,EAAI3I,iBACN,GACF,EAEAugB,EAAkB7mB,UAAUyhB,MAAQ,WAClC,IAAIgF,EAAY/jB,KAAKmjB,WAAWziB,KAAK,gCACrCqjB,EAAU7Z,QACV6Z,EAAU5gB,WAAW,SACrB4gB,EAAU7iB,YAAY,sBACxB,EAEAijB,EAAkB7mB,UAAUslB,QAAU,SAAUhlB,EAAMwG,GACpD,IAAI4c,EAAWhhB,KAAKT,QAAQgC,IAAI,qBAEhC,OADmBvB,KAAKT,QAAQgC,IAAI,eAC7ByE,CAAagb,EAASpjB,EAAMwG,GACrC,EAEA+f,EAAkB7mB,UAAU0mB,mBAAqB,WAE/C,OADiBzmB,EAAE,yOAErB,EAEA4mB,EAAkB7mB,UAAUimB,OAAS,SAAU3lB,GAG7C,GAFAoC,KAAK+e,QAEe,IAAhBnhB,EAAKkB,OAAT,CAOA,IAHA,IAAIslB,EAAc,GACdC,EAAoBrkB,KAAKmjB,WAAWziB,KAAK,gCAAgCmC,KAAK,MAAQ,WAEjFqZ,EAAI,EAAGA,EAAIte,EAAKkB,OAAQod,IAAK,CACpC,IAAI+H,EAAYrmB,EAAKse,GACjBiH,EAAanjB,KAAKgkB,qBAClBE,EAAYlkB,KAAK4iB,QAAQqB,EAAWd,GACpCmB,EAAcD,EAAoBja,EAAMqS,cAAc,GAAK,IAE3DwH,EAAU7jB,GACZkkB,GAAeL,EAAU7jB,GAEzBkkB,GAAela,EAAMqS,cAAc,GAGrC0G,EAAWziB,KAAK,uCAAuC2I,OAAO6a,GAAWrhB,KAAK,KAAMyhB,GACpF,IAAIvD,EAAQkD,EAAUlD,OAASkD,EAAU/f,KAErC6c,GACFoC,EAAWtgB,KAAK,QAASke,GAG3B,IAAIwD,EAAavkB,KAAKT,QAAQgC,IAAI,gBAAgBA,IAAI,cAClDijB,EAAUrB,EAAWziB,KAAK,oBAC9B8jB,EAAQ3hB,KAAK,QAAS0hB,KACtBC,EAAQ3hB,KAAK,aAAc0hB,KAC3BC,EAAQ3hB,KAAK,mBAAoByhB,GACjCla,EAAM4T,UAAUmF,EAAW,GAAI,OAAQc,GACvCG,EAAYzU,KAAKwT,EACnB,CAEgBnjB,KAAKmjB,WAAWziB,KAAK,gCAC3B2I,OAAO+a,GAAanjB,SAAS,sBAlCvC,CAmCF,EAEOkjB,CACT,IACAvO,EAAGK,OAAO,gCAAiC,IAAI,WAC7C,SAASwO,EAAYC,EAAW/R,EAAUpT,GACxCS,KAAK2kB,YAAc3kB,KAAK4kB,qBAAqBrlB,EAAQgC,IAAI,gBACzDmjB,EAAU1N,KAAKhX,KAAM2S,EAAUpT,EACjC,CAoCA,OAlCAklB,EAAYnnB,UAAUsnB,qBAAuB,SAAUC,EAAGF,GAQxD,MAP2B,iBAAhBA,IACTA,EAAc,CACZvkB,GAAI,GACJ8D,KAAMygB,IAIHA,CACT,EAEAF,EAAYnnB,UAAUwnB,kBAAoB,SAAUJ,EAAWC,GAC7D,IAAII,EAAe/kB,KAAKgkB,qBACxBe,EAAa9gB,KAAKjE,KAAK4iB,QAAQ+B,IAC/BI,EAAa,GAAG9lB,UAAUE,IAAI,kCAC9B4lB,EAAa,GAAG9lB,UAAUC,OAAO,6BACjC,IAAI8lB,EAAmBL,EAAY5D,OAAS4D,EAAYzgB,MAAQ6gB,EAAa7gB,OAE7E,OADAlE,KAAKmjB,WAAWziB,KAAK,gCAAgCmC,KAAK,QAASmiB,GAC5DD,CACT,EAEAN,EAAYnnB,UAAUimB,OAAS,SAAUmB,EAAW9mB,GAClD,IAAIqnB,EAAmC,GAAfrnB,EAAKkB,QAAelB,EAAK,GAAGwC,IAAMJ,KAAK2kB,YAAYvkB,GAG3E,GAFyBxC,EAAKkB,OAAS,GAEbmmB,EACxB,OAAOP,EAAU1N,KAAKhX,KAAMpC,GAG9BoC,KAAK+e,QACL,IAAIgG,EAAe/kB,KAAK8kB,kBAAkB9kB,KAAK2kB,aAC/C3kB,KAAKmjB,WAAWziB,KAAK,gCAAgC2I,OAAO0b,EAC9D,EAEON,CACT,IACA7O,EAAGK,OAAO,+BAAgC,CAAC,SAAU,UAAW,aAAa,SAAU1Y,EAAG0lB,EAAM7Y,GAC9F,SAAS8a,IAAc,CA8FvB,OA5FAA,EAAW5nB,UAAUyC,KAAO,SAAU2kB,EAAWtgB,EAAWid,GAC1D,IAAI/W,EAAOtK,KACX0kB,EAAU1N,KAAKhX,KAAMoE,EAAWid,GAER,MAApBrhB,KAAK2kB,aACH3kB,KAAKT,QAAQgC,IAAI,UAAY/D,OAAO8c,SAAWA,QAAQC,OACzDD,QAAQC,MAAM,iGAIlBva,KAAKmjB,WAAW3hB,GAAG,YAAa,6BAA6B,SAAU+K,GACrEjC,EAAK6a,aAAa5Y,EACpB,IACAnI,EAAU5C,GAAG,YAAY,SAAU+K,GACjCjC,EAAK8a,qBAAqB7Y,EAAKnI,EACjC,GACF,EAEA8gB,EAAW5nB,UAAU6nB,aAAe,SAAUN,EAAGtY,GAE/C,IAAIvM,KAAK6jB,aAAT,CAIA,IAAIwB,EAASrlB,KAAKmjB,WAAWziB,KAAK,6BAElC,GAAsB,IAAlB2kB,EAAOvmB,OAAX,CAIAyN,EAAI3I,kBACJ,IAAIhG,EAAOwM,EAAM6T,QAAQoH,EAAO,GAAI,QAChCC,EAActlB,KAAK2S,SAAS1N,MAChCjF,KAAK2S,SAAS1N,IAAIjF,KAAK2kB,YAAYvkB,IACnC,IAAImlB,EAAe,CACjB3nB,KAAMA,GAIR,GAFAoC,KAAKyJ,QAAQ,QAAS8b,GAElBA,EAAaC,UACfxlB,KAAK2S,SAAS1N,IAAIqgB,OADpB,CAKA,IAAK,IAAIpJ,EAAI,EAAGA,EAAIte,EAAKkB,OAAQod,IAQ/B,GAPAqJ,EAAe,CACb3nB,KAAMA,EAAKse,IAIblc,KAAKyJ,QAAQ,WAAY8b,GAErBA,EAAaC,UAEf,YADAxlB,KAAK2S,SAAS1N,IAAIqgB,GAKtBtlB,KAAK2S,SAASlJ,QAAQ,SAASA,QAAQ,UACvCzJ,KAAKyJ,QAAQ,SAAU,CAAC,EAjBxB,CAdA,CANA,CAsCF,EAEAyb,EAAW5nB,UAAU8nB,qBAAuB,SAAUP,EAAGtY,EAAKnI,GACxDA,EAAUkd,UAIV/U,EAAInK,OAAS6gB,EAAKtX,QAAUY,EAAInK,OAAS6gB,EAAKnY,WAChD9K,KAAKmlB,aAAa5Y,EAEtB,EAEA2Y,EAAW5nB,UAAUimB,OAAS,SAAUmB,EAAW9mB,GAKjD,GAJA8mB,EAAU1N,KAAKhX,KAAMpC,GACrBoC,KAAKmjB,WAAWziB,KAAK,6BAA6BxB,SAClDc,KAAKmjB,WAAW,GAAGlkB,UAAUC,OAAO,kCAEhCc,KAAKmjB,WAAWziB,KAAK,mCAAmC5B,OAAS,GAAqB,IAAhBlB,EAAKkB,QAA/E,CAIA,IAAIwlB,EAActkB,KAAKmjB,WAAWziB,KAAK,gCAAgCmC,KAAK,MACxE4iB,EAAYzlB,KAAKT,QAAQgC,IAAI,gBAAgBA,IAAI,kBACjDijB,EAAUjnB,EAAE,yHAChBinB,EAAQ3hB,KAAK,QAAS4iB,KACtBjB,EAAQ3hB,KAAK,aAAc4iB,KAC3BjB,EAAQ3hB,KAAK,mBAAoByhB,GACjCla,EAAM4T,UAAUwG,EAAQ,GAAI,OAAQ5mB,GACpCoC,KAAKmjB,WAAWha,QAAQqb,GACxBxkB,KAAKmjB,WAAW,GAAGlkB,UAAUE,IAAI,+BAVjC,CAWF,EAEO+lB,CACT,IACAtP,EAAGK,OAAO,2BAA4B,CAAC,SAAU,WAAY,YAAY,SAAU1Y,EAAG6M,EAAO6Y,GAC3F,SAASyC,EAAOhB,EAAW/R,EAAUpT,GACnCmlB,EAAU1N,KAAKhX,KAAM2S,EAAUpT,EACjC,CA0LA,OAxLAmmB,EAAOpoB,UAAUuhB,OAAS,SAAU6F,GAClC,IAAIiB,EAAc3lB,KAAKT,QAAQgC,IAAI,gBAAgBA,IAAI,UACnDqkB,EAAUroB,EAAE,oPAChByC,KAAK6lB,iBAAmBD,EACxB5lB,KAAK4lB,QAAUA,EAAQllB,KAAK,YAC5BV,KAAK4lB,QAAQ3iB,KAAK,eAAgBjD,KAAKT,QAAQgC,IAAI,iBACnDvB,KAAK4lB,QAAQ/iB,KAAK,aAAc8iB,KAChC,IAAI5B,EAAYW,EAAU1N,KAAKhX,MAK/B,OAHAA,KAAK8lB,oBAEL/B,EAAU1a,OAAOrJ,KAAK6lB,kBACf9B,CACT,EAEA2B,EAAOpoB,UAAUyC,KAAO,SAAU2kB,EAAWtgB,EAAWid,GACtD,IAAI/W,EAAOtK,KACPqjB,EAAYjf,EAAUhE,GAAK,WAC3BkkB,EAAclgB,EAAUhE,GAAK,aACjCskB,EAAU1N,KAAKhX,KAAMoE,EAAWid,GAChC/W,EAAKsb,QAAQ/iB,KAAK,mBAAoByhB,GACtClgB,EAAU5C,GAAG,QAAQ,WACnB8I,EAAKsb,QAAQ/iB,KAAK,gBAAiBwgB,GACnC/Y,EAAKsb,QAAQnc,QAAQ,QACvB,IACArF,EAAU5C,GAAG,SAAS,WACpB8I,EAAKsb,QAAQ3gB,IAAI,IACjBqF,EAAKyb,eACLzb,EAAKsb,QAAQziB,WAAW,iBACxBmH,EAAKsb,QAAQziB,WAAW,yBACxBmH,EAAKsb,QAAQnc,QAAQ,QACvB,IACArF,EAAU5C,GAAG,UAAU,WACrB8I,EAAKsb,QAAQ3iB,KAAK,YAAY,GAE9BqH,EAAKwb,mBACP,IACA1hB,EAAU5C,GAAG,WAAW,WACtB8I,EAAKsb,QAAQ3iB,KAAK,YAAY,EAChC,IACAmB,EAAU5C,GAAG,SAAS,SAAU+K,GAC9BjC,EAAKsb,QAAQnc,QAAQ,QACvB,IACArF,EAAU5C,GAAG,iBAAiB,SAAU6a,GAClCA,EAAOze,KAAKkjB,UACdxW,EAAKsb,QAAQ/iB,KAAK,wBAAyBwZ,EAAOze,KAAKkjB,WAEvDxW,EAAKsb,QAAQziB,WAAW,wBAE5B,IACAnD,KAAKmjB,WAAW3hB,GAAG,UAAW,2BAA2B,SAAU+K,GACjEjC,EAAKb,QAAQ,QAAS8C,EACxB,IACAvM,KAAKmjB,WAAW3hB,GAAG,WAAY,2BAA2B,SAAU+K,GAClEjC,EAAKgZ,YAAY/W,EACnB,IACAvM,KAAKmjB,WAAW3hB,GAAG,UAAW,2BAA2B,SAAU+K,GAMjE,GALAA,EAAI3I,kBACJ0G,EAAKb,QAAQ,WAAY8C,GACzBjC,EAAK0b,gBAAkBzZ,EAAI0Z,qBACjB1Z,EAAInK,QAEF6gB,EAAKnY,WAAoC,KAAvBR,EAAKsb,QAAQ3gB,MAAc,CACvD,IAAIihB,EAAkB5b,EAAK6Y,WAAWziB,KAAK,8BAA8BylB,OAEzE,GAAID,EAAgBpnB,OAAS,EAAG,CAC9B,IAAI8M,EAAOxB,EAAM6T,QAAQiI,EAAgB,GAAI,QAC7C5b,EAAK8b,mBAAmBxa,GACxBW,EAAIlK,gBACN,CACF,CACF,IACArC,KAAKmjB,WAAW3hB,GAAG,QAAS,2BAA2B,SAAU+K,GAC3DjC,EAAKsb,QAAQ3gB,OACfsH,EAAI3I,iBAER,IAMA,IAAIyiB,EAAO3mB,SAAS4mB,aAChBC,EAAqBF,GAAQA,GAAQ,GAIzCrmB,KAAKmjB,WAAW3hB,GAAG,oBAAqB,2BAA2B,SAAU+K,GAIvEga,EACFjc,EAAK6Y,WAAWQ,IAAI,kCAKtBrZ,EAAK6Y,WAAWQ,IAAI,eACtB,IACA3jB,KAAKmjB,WAAW3hB,GAAG,4BAA6B,2BAA2B,SAAU+K,GAInF,GAAIga,GAAmC,UAAbha,EAAI1O,KAC5ByM,EAAK6Y,WAAWQ,IAAI,sCADtB,CAKA,IAAItkB,EAAMkN,EAAInK,MAEV/C,GAAO4jB,EAAKH,OAASzjB,GAAO4jB,EAAKF,MAAQ1jB,GAAO4jB,EAAKD,KAKrD3jB,GAAO4jB,EAAKlY,KAIhBT,EAAKkc,aAAaja,EAblB,CAcF,GACF,EAUAmZ,EAAOpoB,UAAUwoB,kBAAoB,SAAUpB,GAC7C1kB,KAAK4lB,QAAQ/iB,KAAK,WAAY7C,KAAKmjB,WAAWtgB,KAAK,aACnD7C,KAAKmjB,WAAWtgB,KAAK,WAAY,KACnC,EAEA6iB,EAAOpoB,UAAUwnB,kBAAoB,SAAUJ,EAAWC,GACxD3kB,KAAK4lB,QAAQ/iB,KAAK,cAAe8hB,EAAYzgB,KAC/C,EAEAwhB,EAAOpoB,UAAUimB,OAAS,SAAUmB,EAAW9mB,GAC7C,IAAI6oB,EAAiBzmB,KAAK4lB,QAAQ,IAAMlmB,SAAS0N,cACjDpN,KAAK4lB,QAAQ/iB,KAAK,cAAe,IACjC6hB,EAAU1N,KAAKhX,KAAMpC,GACrBoC,KAAK+lB,eAEDU,GACFzmB,KAAK4lB,QAAQnc,QAAQ,QAEzB,EAEAic,EAAOpoB,UAAUkpB,aAAe,WAG9B,GAFAxmB,KAAK+lB,gBAEA/lB,KAAKgmB,gBAAiB,CACzB,IAAIljB,EAAQ9C,KAAK4lB,QAAQ3gB,MACzBjF,KAAKyJ,QAAQ,QAAS,CACpBid,KAAM5jB,GAEV,CAEA9C,KAAKgmB,iBAAkB,CACzB,EAEAN,EAAOpoB,UAAU8oB,mBAAqB,SAAU1B,EAAW9Y,GACzD5L,KAAKyJ,QAAQ,WAAY,CACvB7L,KAAMgO,IAER5L,KAAK4lB,QAAQ3gB,IAAI2G,EAAK1H,MACtBlE,KAAKwmB,cACP,EAEAd,EAAOpoB,UAAUyoB,aAAe,WAC9B/lB,KAAK4lB,QAAQe,IAAI,QAAS,QAC1B,IAAI5lB,EAAQ,OAE6B,KAArCf,KAAK4lB,QAAQ/iB,KAAK,iBAEpB9B,EAAuB,KADJf,KAAK4lB,QAAQ3gB,MAAMnG,OAAS,GACjB,MAGhCkB,KAAK4lB,QAAQe,IAAI,QAAS5lB,EAC5B,EAEO2kB,CACT,IACA9P,EAAGK,OAAO,iCAAkC,CAAC,aAAa,SAAU7L,GAClE,SAASwc,IAAgB,CAezB,OAbAA,EAAatpB,UAAUuhB,OAAS,SAAU6F,GACxC,IAAIvB,EAAauB,EAAU1N,KAAKhX,MAC5B6mB,EAAoB7mB,KAAKT,QAAQgC,IAAI,sBAAwB,GAQjE,OAN4C,IAAxCslB,EAAkB/N,QAAQ,WAC5B+N,EAAoBA,EAAkB1mB,QAAQ,QAAS,IACvDiK,EAAM+T,0BAA0BgF,EAAW,GAAInjB,KAAK2S,SAAS,KAG/DwQ,EAAWliB,SAAS4lB,GACb1D,CACT,EAEOyD,CACT,IACAhR,EAAGK,OAAO,+BAAgC,CAAC,WAAW,SAAU1Y,GAC9D,SAASupB,IAAc,CA6BvB,OA3BAA,EAAWxpB,UAAUyC,KAAO,SAAU2kB,EAAWtgB,EAAWid,GAC1D,IAAI/W,EAAOtK,KACP+mB,EAAc,CAAC,OAAQ,UAAW,QAAS,UAAW,SAAU,YAAa,WAAY,cAAe,QAAS,YACjHC,EAAoB,CAAC,UAAW,UAAW,YAAa,cAAe,YAC3EtC,EAAU1N,KAAKhX,KAAMoE,EAAWid,GAChCjd,EAAU5C,GAAG,KAAK,SAAU8S,EAAM+H,GAEhC,IAAmC,IAA/B0K,EAAYjO,QAAQxE,GAAxB,CAKA+H,EAASA,GAAU,CAAC,EAEpB,IAAI9P,EAAMhP,EAAEoR,MAAM,WAAa2F,EAAM,CACnC+H,OAAQA,IAEV/R,EAAKqI,SAASlJ,QAAQ8C,IAEmB,IAArCya,EAAkBlO,QAAQxE,KAI9B+H,EAAOmJ,UAAYjZ,EAAI0Z,qBAdvB,CAeF,GACF,EAEOa,CACT,IACAlR,EAAGK,OAAO,sBAAuB,CAAC,SAAU,YAAY,SAAU1Y,EAAGyY,GACnE,SAASiR,EAAYC,GACnBlnB,KAAKknB,KAAOA,GAAQ,CAAC,CACvB,CA2BA,OAzBAD,EAAY3pB,UAAU6pB,IAAM,WAC1B,OAAOnnB,KAAKknB,IACd,EAEAD,EAAY3pB,UAAUiE,IAAM,SAAUlC,GACpC,OAAOW,KAAKknB,KAAK7nB,EACnB,EAEA4nB,EAAY3pB,UAAUuV,OAAS,SAAUuU,GACvCpnB,KAAKknB,KAAO3pB,EAAEsV,OAAO,CAAC,EAAGuU,EAAYD,MAAOnnB,KAAKknB,KACnD,EAGAD,EAAYI,OAAS,CAAC,EAEtBJ,EAAYK,SAAW,SAAUC,GAC/B,KAAMA,KAAQN,EAAYI,QAAS,CACjC,IAAIG,EAAexR,EAAQuR,GAE3BN,EAAYI,OAAOE,GAAQC,CAC7B,CAEA,OAAO,IAAIP,EAAYA,EAAYI,OAAOE,GAC5C,EAEON,CACT,IACArR,EAAGK,OAAO,qBAAsB,IAAI,WA60BlC,MA50BiB,CACf,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAQ,KACR,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAQ,KACR,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAA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","sources":["webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/tabs.js","webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/select2.js","webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/notifications.js","webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/modal-dialog.js","webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/code-snippet.js","webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/upload.js","webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/select2.full.js","webpack://wp-smushit/./node_modules/@wpmudev/shared-ui/dist/js/_src/reviews.js","webpack://wp-smushit/webpack/bootstrap","webpack://wp-smushit/./_src/js/shared-ui.js"],"sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n // Enable strict mode.\n 'use strict'; // Define global SUI object if it doesn't exist.\n\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n\n SUI.suiTabs = function (config) {\n var data;\n var types = ['tab', 'pane'];\n var type;\n var groups = [];\n var activeGroups = [];\n var activeChildren = [];\n var activeItems = [];\n var indexGroup;\n var indexItem;\n var memory = [];\n\n function init(options) {\n var groupIndex;\n var tabItems;\n var itemIndex;\n var hashId;\n data = options;\n setDefaults();\n groups.tab = document.querySelectorAll(data.tabGroup);\n groups.pane = document.querySelectorAll(data.paneGroup);\n\n for (groupIndex = 0; groupIndex < groups.tab.length; groupIndex++) {\n tabItems = groups.tab[groupIndex].children;\n\n for (itemIndex = 0; itemIndex < tabItems.length; itemIndex++) {\n tabItems[itemIndex].addEventListener('click', onClick.bind(this, groupIndex, itemIndex), false);\n indexGroup = groupIndex;\n indexItem = itemIndex;\n\n if (window.location.hash) {\n hashId = window.location.hash.replace(/[^\\w-_]/g, '');\n\n if (hashId === tabItems[itemIndex].id) {\n setNodes(groupIndex, itemIndex);\n }\n }\n }\n }\n }\n\n function onClick(groupIndex, itemIndex) {\n setNodes(groupIndex, itemIndex);\n setCallback();\n }\n\n function setNodes(groupIndex, itemIndex) {\n var i;\n indexGroup = groupIndex;\n indexItem = itemIndex;\n\n for (i = 0; i < types.length; i++) {\n type = types[i];\n setActiveGroup();\n setActiveChildren();\n setActiveItems();\n putActiveClass();\n }\n\n memory[groupIndex] = [];\n memory[groupIndex][itemIndex] = true;\n }\n\n function putActiveClass() {\n var i;\n\n for (i = 0; i < activeChildren[type].length; i++) {\n activeChildren[type][i].classList.remove(data[type + 'Active']);\n }\n\n activeItems[type].classList.add(data[type + 'Active']);\n }\n\n function setDefaults() {\n var i;\n\n for (i = 0; i < types.length; i++) {\n type = types[i];\n setOption(type + 'Group', '[data-' + type + 's]');\n setOption(type + 'Active', 'active');\n }\n }\n\n function setOption(key, value) {\n data = data || [];\n data[key] = data[key] || value;\n }\n\n function setActiveGroup() {\n activeGroups[type] = groups[type][indexGroup];\n }\n\n function setActiveChildren() {\n activeChildren[type] = activeGroups[type].children;\n }\n\n function setActiveItems() {\n activeItems[type] = activeChildren[type][indexItem];\n }\n\n function setCallback() {\n if ('function' === typeof data.callback) {\n data.callback(activeItems.tab, activeItems.pane);\n }\n }\n\n init(config);\n return;\n };\n\n SUI.tabsOverflow = function ($el) {\n var tabs = $el.closest('.sui-tabs').find('[data-tabs], [role=\"tablist\"]'),\n leftButton = $el.find('.sui-tabs-navigation--left'),\n rightButton = $el.find('.sui-tabs-navigation--right');\n\n function overflowing() {\n if (tabs[0].scrollWidth > tabs.width()) {\n if (0 === tabs.scrollLeft()) {\n leftButton.addClass('sui-tabs-navigation--hidden');\n } else {\n leftButton.removeClass('sui-tabs-navigation--hidden');\n }\n\n reachedEnd(0);\n return true;\n } else {\n leftButton.addClass('sui-tabs-navigation--hidden');\n rightButton.addClass('sui-tabs-navigation--hidden');\n return false;\n }\n }\n\n overflowing();\n\n function reachedEnd(offset) {\n var newScrollLeft, width, scrollWidth;\n newScrollLeft = tabs.scrollLeft() + offset;\n width = tabs.outerWidth();\n scrollWidth = tabs.get(0).scrollWidth;\n\n if (scrollWidth - newScrollLeft <= width) {\n rightButton.addClass('sui-tabs-navigation--hidden');\n } else {\n rightButton.removeClass('sui-tabs-navigation--hidden');\n }\n }\n\n leftButton.on('click', function () {\n rightButton.removeClass('sui-tabs-navigation--hidden');\n\n if (0 >= tabs.scrollLeft() - 150) {\n leftButton.addClass('sui-tabs-navigation--hidden');\n }\n\n tabs.animate({\n scrollLeft: '-=150'\n }, 400, function () {});\n return false;\n });\n rightButton.on('click', function () {\n leftButton.removeClass('sui-tabs-navigation--hidden');\n reachedEnd(150);\n tabs.animate({\n scrollLeft: '+=150'\n }, 400, function () {});\n return false;\n });\n $(window).on('resize', function () {\n overflowing();\n });\n tabs.on('scroll', function () {\n overflowing();\n });\n };\n\n SUI.tabs = function (config) {\n var tablist = $('.sui-tabs > div[role=\"tablist\"]');\n var data = config; // For easy reference.\n\n var keys = {\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n \"delete\": 46,\n enter: 13,\n space: 32\n }; // Add or substract depending on key pressed.\n\n var direction = {\n 37: -1,\n 38: -1,\n 39: 1,\n 40: 1\n }; // Prevent function from running if tablist does not exist.\n\n if (!tablist.length) {\n return;\n } // Deactivate all tabs and tab panels.\n\n\n function deactivateTabs(tabs, panels, inputs) {\n tabs.removeClass('active');\n tabs.attr('tabindex', '-1');\n tabs.attr('aria-selected', false);\n inputs.prop('checked', false);\n panels.removeClass('active');\n panels.prop('hidden', true);\n } // Activate current tab panel.\n\n\n function activateTab(tab) {\n var tabs = $(tab).closest('[role=\"tablist\"]').find('[role=\"tab\"]'),\n inputs = $(tab).closest('[role=\"tablist\"]').find('input[type=\"radio\"]'),\n panels = $(tab).closest('.sui-tabs').find('> .sui-tabs-content > [role=\"tabpanel\"]'),\n controls = $(tab).attr('aria-controls'),\n input = $(tab).next('input[type=\"radio\"]'),\n panel = $('#' + controls);\n deactivateTabs(tabs, panels, inputs);\n $(tab).addClass('active');\n $(tab).removeAttr('tabindex');\n $(tab).attr('aria-selected', true);\n input.prop('checked', true);\n panel.addClass('active');\n panel.prop('hidden', false);\n } // When a \"tablist\" aria-orientation is set to vertical,\n // only up and down arrow should function.\n // In all other cases only left and right should function.\n\n\n function determineOrientation(event, index, tablist) {\n var key = event.keyCode || event.which,\n vertical = 'vertical' === $(tablist).attr('aria-orientation'),\n proceed = false; // Check if aria orientation is set to vertical.\n\n if (vertical) {\n if (keys.up === key || keys.down === key) {\n event.preventDefault();\n proceed = true;\n }\n } else {\n if (keys.left === key || keys.right === key) {\n proceed = true;\n }\n }\n\n if (true === proceed) {\n switchTabOnArrowPress(event, index);\n }\n } // Either focus the next, previous, first, or last tab\n // depending on key pressed.\n\n\n function switchTabOnArrowPress(event, index) {\n var pressed, target, tabs;\n pressed = event.keyCode || event.which;\n\n if (direction[pressed]) {\n target = event.target;\n tabs = $(target).closest('[role=\"tablist\"]').find('> [role=\"tab\"]');\n\n if (undefined !== index) {\n if (tabs[index + direction[pressed]]) {\n tabs[index + direction[pressed]].focus();\n } else if (keys.left === pressed || keys.up === pressed) {\n tabs[tabs.length - 1].focus();\n } else if (keys.right === pressed || keys.down === pressed) {\n tabs[0].focus();\n }\n }\n }\n } // Callback function.\n\n\n function setCallback(currentTab) {\n var tab = $(currentTab),\n controls = tab.attr('aria-controls'),\n panel = $('#' + controls);\n\n if ('function' === typeof data.callback) {\n data.callback(tab, panel);\n }\n } // When a tab is clicked, activateTab is fired to activate it.\n\n\n function clickEventListener(event) {\n var tab = event.target;\n activateTab(tab);\n\n if (undefined !== data && 'undefined' !== data) {\n setCallback(tab);\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n function keydownEventListener(event, index, tablist) {\n var key = event.keyCode || event.which;\n\n switch (key) {\n case keys.end:\n case keys.home:\n event.preventDefault();\n break;\n // Up and down are in keydown\n // because we need to prevent page scroll.\n\n case keys.up:\n case keys.down:\n determineOrientation(event, index, tablist);\n break;\n }\n }\n\n function keyupEventListener(event, index, tablist) {\n var key = event.keyCode || event.which;\n\n switch (key) {\n case keys.left:\n case keys.right:\n determineOrientation(event, index, tablist);\n break;\n\n case keys.enter:\n case keys.space:\n activateTab(event);\n break;\n }\n }\n\n function init() {\n var tabgroup = tablist.closest('.sui-tabs'); // Run the function for each group of tabs to prevent conflicts\n // when having child tabs.\n\n tabgroup.each(function () {\n var tabs, index;\n tabgroup = $(this);\n tablist = tabgroup.find('> [role=\"tablist\"]');\n tabs = tablist.find('> [role=\"tab\"]'); // Trigger events on click.\n\n tabs.on('click', function (e) {\n clickEventListener(e); // Trigger events when pressing key.\n }).on('keydown', function (e) {\n index = $(this).index();\n keydownEventListener(e, index, tablist); // Trigger events when releasing key.\n }).on('keyup', function (e) {\n index = $(this).index();\n keyupEventListener(e, index, tablist);\n });\n });\n }\n\n init();\n return this;\n };\n\n if (0 !== $('.sui-2-12-23 .sui-tabs').length) {\n // Support tabs new markup.\n SUI.tabs(); // Support legacy tabs.\n\n SUI.suiTabs();\n $('.sui-2-12-23 .sui-tabs-navigation').each(function () {\n SUI.tabsOverflow($(this));\n });\n }\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n;\n\n(function ($) {\n // Define global SUI object if it doesn't exist.\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n\n SUI.select = {};\n\n SUI.select.escapeJS = function (string) {\n // Create a temporary <div> element using jQuery and set the HTML content.\n var div = $('<div>').html(string); // Get the text content of the <div> element and remove script tags\n\n var text = div.text().replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, ''); // Return the escaped text\n\n return text;\n };\n\n SUI.select.formatIcon = function (data, container) {\n var markup;\n var label = SUI.select.escapeJS(data.text);\n var icon = $(data.element).attr('data-icon');\n\n if (!data.id) {\n return label; // optgroup.\n }\n\n if ('undefined' !== typeof icon) {\n markup = '<span class=\"sui-icon-' + icon.toLowerCase() + '\" aria-hidden=\"true\"></span> ' + label;\n } else {\n markup = label;\n }\n\n return markup;\n };\n\n SUI.select.formatIconSelection = function (data, container) {\n var markup;\n var label = SUI.select.escapeJS(data.text);\n var icon = $(data.element).attr('data-icon');\n\n if ('undefined' !== typeof icon) {\n markup = '<span class=\"sui-icon-' + icon.toLowerCase() + '\" aria-hidden=\"true\"></span> ' + label;\n } else {\n markup = label;\n }\n\n return markup;\n };\n\n SUI.select.formatColor = function (data, container) {\n var markup, border;\n var label = SUI.select.escapeJS(data.text);\n var color = $(data.element).attr('data-color');\n\n if (!data.id) {\n return label; // optgroup.\n }\n\n if ('undefined' !== typeof color) {\n switch (color) {\n case '#FFF':\n case 'white':\n case '#FFFFFF':\n border = '#000';\n break;\n\n case '#FAFAFA':\n case '#F8F8F8':\n case '#F2F2F2':\n border = '#333';\n break;\n\n default:\n border = color;\n break;\n }\n\n markup = '<span class=\"sui-color\" style=\"border-color: ' + border + '; background-color: ' + color + ';\" aria-hidden=\"true\"></span> ' + label;\n } else {\n markup = label;\n }\n\n return markup;\n };\n\n SUI.select.formatColorSelection = function (data, container) {\n var markup;\n var label = SUI.select.escapeJS(data.text);\n var color = $(data.element).attr('data-color');\n\n if ('undefined' !== typeof color) {\n switch (color) {\n case '#FFF':\n case 'white':\n case '#FFFFFF':\n border = '#000';\n break;\n\n case '#FAFAFA':\n case '#F8F8F8':\n case '#F2F2F2':\n border = '#333';\n break;\n\n default:\n border = color;\n break;\n }\n\n markup = '<span class=\"sui-color\" style=\"border-color: ' + border + '; background-color: ' + color + ';\" aria-hidden=\"true\"></span> ' + label;\n } else {\n markup = label;\n }\n\n return markup;\n };\n\n SUI.select.formatVars = function (data, container) {\n var markup;\n var label = SUI.select.escapeJS(data.text);\n var content = $(data.element).val();\n\n if (!data.id) {\n return label; // optgroup.\n }\n\n if ('undefined' !== typeof content) {\n markup = '<span class=\"sui-variable-name\">' + label + '</span><span class=\"sui-variable-value\">' + content + '</span> ';\n } else {\n markup = label;\n }\n\n return markup;\n };\n\n SUI.select.formatVarsSelection = function (data, container) {\n var markup;\n var label = SUI.select.escapeJS(data.text);\n markup = '<span class=\"sui-icon-plus-circle sui-md\" aria-hidden=\"true\"></span>';\n markup += '<span class=\"sui-screen-reader-text\">' + label + '</span>';\n return markup;\n };\n\n SUI.select.init = function (select) {\n var getParent = select.closest('.sui-modal-content'),\n getParentId = getParent.attr('id'),\n selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-23'),\n hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n select.SUIselect2({\n dropdownParent: selectParent,\n minimumResultsForSearch: hasSearch,\n dropdownCssClass: isSmall\n });\n };\n\n SUI.select.initIcon = function (select) {\n var getParent = select.closest('.sui-modal-content'),\n getParentId = getParent.attr('id'),\n selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-23'),\n hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n select.SUIselect2({\n dropdownParent: selectParent,\n templateResult: SUI.select.formatIcon,\n templateSelection: SUI.select.formatIconSelection,\n escapeMarkup: function escapeMarkup(markup) {\n return markup;\n },\n minimumResultsForSearch: hasSearch,\n dropdownCssClass: isSmall\n });\n };\n\n SUI.select.initColor = function (select) {\n var getParent = select.closest('.sui-modal-content'),\n getParentId = getParent.attr('id'),\n selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-23'),\n hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n select.SUIselect2({\n dropdownParent: selectParent,\n templateResult: SUI.select.formatColor,\n templateSelection: SUI.select.formatColorSelection,\n escapeMarkup: function escapeMarkup(markup) {\n return markup;\n },\n minimumResultsForSearch: hasSearch,\n dropdownCssClass: isSmall\n });\n };\n\n SUI.select.initSearch = function (select) {\n var getParent = select.closest('.sui-modal-content'),\n getParentId = getParent.attr('id'),\n selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-23'),\n isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n select.SUIselect2({\n dropdownParent: selectParent,\n minimumInputLength: 2,\n maximumSelectionLength: 1,\n dropdownCssClass: isSmall\n });\n };\n\n SUI.select.initVars = function (select) {\n var getParent = select.closest('.sui-modal-content'),\n getParentId = getParent.attr('id'),\n selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-23'),\n hasSearch = 'true' === select.attr('data-search') ? 0 : -1;\n select.SUIselect2({\n theme: 'vars',\n dropdownParent: selectParent,\n templateResult: SUI.select.formatVars,\n templateSelection: SUI.select.formatVarsSelection,\n escapeMarkup: function escapeMarkup(markup) {\n return markup;\n },\n minimumResultsForSearch: hasSearch\n }).on('select2:open', function () {\n $(this).val(null);\n });\n select.val(null);\n };\n\n $('.sui-select').each(function () {\n var select = $(this); // return if select2 already initalized for element.\n\n if (select.hasClass('select2-hidden-accessible') || select.hasClass('select2')) {\n return;\n }\n\n if ('icon' === select.data('theme')) {\n SUI.select.initIcon(select);\n } else if ('color' === select.data('theme')) {\n SUI.select.initColor(select);\n } else if ('search' === select.data('theme')) {\n SUI.select.initSearch(select);\n } else {\n SUI.select.init(select);\n }\n });\n $('.sui-variables').each(function () {\n var select = $(this); // return if select2 already initalized for element.\n\n if (select.hasClass('select2-hidden-accessible') || select.hasClass('select2')) {\n return;\n }\n\n SUI.select.initVars(select);\n });\n})(jQuery);","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n // Enable strict mode.\n 'use strict'; // Define global SUI object if it does not exist.\n\n var _this = this;\n\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n /**\n * @desc Notifications function to show when alert.\n *\n * Assumptions: The element serving as the alert container is present in the\n * DOM and hidden. The alert container has role='alert'.\n *\n * @param noticeId\n * The ID of the element serving as the alert container.\n *\n * @param noticeMessage\n * The content to be printed when the alert shows up. It accepts HTML.\n *\n * @param noticeOptions\n * An object with different paramethers to modify the alert appearance.\n */\n\n\n SUI.openNotice = function (noticeId, noticeMessage, noticeOptions) {\n // Get notification node by ID.\n var noticeNode = $('#' + noticeId);\n var nodeWrapper = noticeNode.parent(); // Check if element ID exists.\n\n if (null === typeof noticeNode || 'undefined' === typeof noticeNode) {\n throw new Error('No element found with id=\"' + noticeId + '\".');\n } // Check if element has correct attribute.\n\n\n if ('alert' !== noticeNode.attr('role')) {\n throw new Error('Notice requires a DOM element with ARIA role of alert.');\n } // Check if notice message is empty.\n\n\n if (null === typeof noticeMessage || 'undefined' === typeof noticeMessage || '' === noticeMessage) {\n throw new Error('Notice requires a message to print.');\n }\n\n var utils = utils || {};\n /**\n * @desc Allowed types for notification.\n */\n\n utils.allowedNotices = ['info', 'blue', 'green', 'success', 'yellow', 'warning', 'red', 'error', 'purple', 'upsell'];\n /**\n * @desc Verify if property is an array.\n */\n\n utils.isObject = function (obj) {\n if ((null !== obj || 'undefined' !== obj) && $.isPlainObject(obj)) {\n return true;\n }\n\n return false;\n };\n /**\n * @desc Deep merge two objects.\n * Watch out for infinite recursion on circular references.\n */\n\n\n utils.deepMerge = function (target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (!sources.length) {\n return target;\n }\n\n var source = sources.shift();\n\n if (utils.isObject(target) && utils.isObject(source)) {\n for (var key in source) {\n if (utils.isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, _defineProperty({}, key, {}));\n }\n\n utils.deepMerge(target[key], source[key]);\n } else {\n Object.assign(target, _defineProperty({}, key, source[key]));\n }\n }\n }\n\n return utils.deepMerge.apply(utils, [target].concat(sources));\n };\n /**\n * @desc Declare default styling options for notifications.\n */\n\n\n utils.setProperties = function () {\n var incomingOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n utils.options = [];\n var defaults = {\n type: 'default',\n icon: 'info',\n dismiss: {\n show: false,\n label: 'Close this notice',\n tooltip: ''\n },\n autoclose: {\n show: true,\n timeout: 3000\n }\n };\n utils.options[0] = utils.deepMerge(defaults, incomingOptions);\n };\n\n utils.setProperties(noticeOptions);\n /**\n * @desc Build notice dismiss.\n */\n\n utils.buildDismiss = function () {\n var html = '';\n var dismiss = utils.options[0].dismiss;\n\n if (true === dismiss.show) {\n html = document.createElement('div');\n html.className = 'sui-notice-actions';\n var innerHTML = '';\n\n if ('' !== dismiss.tooltip) {\n if (nodeWrapper.hasClass('sui-floating-notices')) {\n innerHTML += '<div class=\"sui-tooltip sui-tooltip-bottom\" data-tooltip=\"' + dismiss.tooltip + '\">';\n } else {\n innerHTML += '<div class=\"sui-tooltip\" data-tooltip=\"' + dismiss.tooltip + '\">';\n }\n }\n\n innerHTML += '<button class=\"sui-button-icon\">';\n innerHTML += '<span class=\"sui-icon-check\" aria-hidden=\"true\"></span>';\n\n if ('' !== dismiss.label) {\n innerHTML += '<span class=\"sui-screen-reader-text\">' + dismiss.label + '</span>';\n }\n\n innerHTML += '</button>';\n\n if ('' !== dismiss.tooltip) {\n innerHTML += '</div>';\n }\n\n html.innerHTML = innerHTML;\n }\n\n return html;\n };\n /**\n * @desc Build notice icon.\n */\n\n\n utils.buildIcon = function () {\n var html = '';\n var icon = utils.options[0].icon;\n\n if ('' !== icon || 'undefined' !== typeof icon || null !== typeof icon) {\n html = document.createElement('span');\n html.className += 'sui-notice-icon sui-icon-' + icon + ' sui-md';\n html.setAttribute('aria-hidden', true);\n\n if ('loader' === icon) {\n html.classList.add('sui-loading');\n }\n }\n\n return html;\n };\n /**\n * @desc Build notice message.\n */\n\n\n utils.buildMessage = function () {\n var html = document.createElement('div');\n html.className = 'sui-notice-message';\n html.innerHTML = noticeMessage;\n html.prepend(utils.buildIcon());\n return html;\n };\n /**\n * @desc Build notice markup.\n */\n\n\n utils.buildNotice = function () {\n var html = document.createElement('div');\n html.className = 'sui-notice-content';\n html.append(utils.buildMessage(), utils.buildDismiss());\n return html;\n };\n /**\n * @desc Show notification message.\n */\n\n\n utils.showNotice = function (animation) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n var type = utils.options[0].type;\n var dismiss = utils.options[0].dismiss;\n var autoclose = utils.options[0].autoclose; // Add active class.\n\n noticeNode.addClass('sui-active'); // Check for allowed notification types.\n\n $.each(utils.allowedNotices, function (key, value) {\n if (value === type) {\n noticeNode.addClass('sui-notice-' + value);\n }\n }); // Remove tabindex.\n\n noticeNode.removeAttr('tabindex'); // Print notification message.\n\n noticeNode.html(utils.buildNotice()); // Show animation.\n\n if ('slide' === animation) {\n noticeNode.slideDown(timeout, function () {\n // Check if dismiss button enabled.\n if (true === dismiss.show) {\n // Focus dismiss button.\n noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n noticeNode.find('.sui-notice-actions button').on('click', function () {\n SUI.closeNotice(noticeId);\n });\n } else {\n // Check if notice auto-closes.\n if (true === autoclose.show) {\n setTimeout(function () {\n return SUI.closeNotice(noticeId);\n }, parseInt(autoclose.timeout));\n }\n }\n });\n } else if ('fade' === animation) {\n noticeNode.fadeIn(timeout, function () {\n // Check if dismiss button enabled.\n if (true === dismiss.show) {\n // Focus dismiss button.\n noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n noticeNode.find('.sui-notice-actions button').on('click', function () {\n SUI.closeNotice(noticeId);\n });\n } else {\n // Check if notice auto-closes.\n if (true === autoclose.show) {\n setTimeout(function () {\n return SUI.closeNotice(noticeId);\n }, parseInt(autoclose.timeout));\n }\n }\n });\n } else {\n noticeNode.show(timeout, function () {\n // Check if dismiss button enabled.\n if (true === dismiss.show) {\n // Focus dismiss button.\n noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n noticeNode.find('.sui-notice-actions button').on('click', function () {\n SUI.closeNotice(noticeId);\n });\n } else {\n // Check if notice auto-closes.\n if (true === autoclose.show) {\n setTimeout(function () {\n return SUI.closeNotice(noticeId);\n }, parseInt(autoclose.timeout));\n }\n }\n });\n }\n };\n /**\n * @desc Open notification message.\n */\n\n\n utils.openNotice = function (animation) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n\n if (noticeNode.hasClass('sui-active')) {\n if ('slide' === animation) {\n noticeNode.slideUp(timeout, function () {\n utils.showNotice('slide', timeout);\n });\n } else if ('fade' === animation) {\n noticeNode.fadeOut(timeout, function () {\n utils.showNotice('fade', timeout);\n });\n } else {\n noticeNode.hide(timeout, function () {\n utils.showNotice(null, timeout);\n });\n }\n } else {\n // Show notice.\n utils.showNotice(animation, timeout);\n }\n };\n /**\n * @desc Initialize function.\n */\n\n\n var init = function init() {\n /**\n * When notice should float, it needs to be wrapped inside:\n * <div class=\"sui-floating-notices\"></div>\n *\n * IMPORTANT: This wrapper goes before \"sui-wrap\" closing tag\n * and after modals markup.\n */\n if (nodeWrapper.hasClass('sui-floating-notices')) {\n utils.openNotice('slide');\n } else {\n utils.openNotice('fade');\n }\n };\n\n init();\n return _this;\n };\n /**\n * @desc Close and clear the alert.\n *\n * Assumptions: The element that will trigger this function is part of alert content.\n *\n * @param noticeId\n * The ID of the element serving as the alert container.\n *\n */\n\n\n SUI.closeNotice = function (noticeId) {\n // Get notification node by ID.\n var noticeNode = $('#' + noticeId);\n var nodeWrapper = noticeNode.parent(); // Check if element ID exists.\n\n if (null === typeof noticeNode || 'undefined' === typeof noticeNode) {\n throw new Error('No element found with id=\"' + noticeId + '\".');\n }\n\n var utils = utils || {};\n /**\n * @desc Allowed types for notification.\n */\n\n utils.allowedNotices = ['info', 'blue', 'green', 'success', 'yellow', 'warning', 'red', 'error', 'purple', 'upsell'];\n /**\n * @desc Destroy notification.\n */\n\n utils.hideNotice = function () {\n // Remove active class.\n noticeNode.removeClass('sui-active'); // Remove styling classes.\n\n $.each(utils.allowedNotices, function (key, value) {\n noticeNode.removeClass('sui-notice-' + value);\n }); // Prevent TAB key from accessing the element.\n\n noticeNode.attr('tabindex', '-1'); // Remove all content from notification.\n\n noticeNode.empty();\n };\n /**\n * @desc Close notification message.\n */\n\n\n utils.closeNotice = function (animation) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n\n // Close animation.\n if ('slide' === animation) {\n noticeNode.slideUp(timeout, function () {\n return utils.hideNotice();\n });\n } else if ('fade' === animation) {\n noticeNode.fadeOut(timeout, function () {\n return utils.hideNotice();\n });\n } else {\n noticeNode.hide(timeout, function () {\n return utils.hideNotice();\n });\n }\n };\n /**\n * @desc Initialize function.\n */\n\n\n var init = function init() {\n /**\n * When notice should float, it needs to be wrapped inside:\n * <div class=\"sui-floating-notices\"></div>\n *\n * IMPORTANT: This wrapper goes before \"sui-wrap\" closing tag\n * and after modals markup.\n */\n if (nodeWrapper.hasClass('sui-floating-notices')) {\n utils.closeNotice('slide');\n } else {\n utils.closeNotice('fade');\n }\n };\n\n init();\n return _this;\n };\n /**\n * @desc Trigger open and close alert notification functions through element attributes.\n *\n * Assumptions: Elements in charge of triggering the actions will be a button or a non-hyperlink element.\n *\n */\n\n\n SUI.notice = function () {\n var notice = notice || {};\n notice.Utils = notice.Utils || {};\n /**\n * @desc Click an element to open a notification.\n */\n\n notice.Utils.Open = function (element) {\n element.on('click', function () {\n self = $(this); // Define main variables for open function.\n\n var noticeId = self.attr('data-notice-open');\n var noticeMessage = '';\n var noticeOptions = {}; // Define index to use on for loops.\n\n var i; // Define maximum number of paragraphs.\n\n var numbLines = 4; // Check if `data-notice-message` exists.\n\n if (self.is('[data-notice-message]') && '' !== self.attr('data-notice-message')) {\n noticeMessage += self.attr('data-notice-message'); // If `data-notice-message` doesn't exists, look for `data-notice-paragraph-[i]` attributes.\n } else {\n for (i = 0; i < numbLines; i++) {\n var index = i + 1;\n var paragraph = 'data-notice-paragraph-' + index;\n\n if (self.is('[' + paragraph + ']') && '' !== self.attr(paragraph)) {\n noticeMessage += '<p>' + self.attr(paragraph) + '</p>';\n }\n }\n } // Check if `data-notice-type` exists.\n\n\n if (self.is('[data-notice-type]') && '' !== self.attr('data-notice-dismiss-type')) {\n noticeOptions.type = self.attr('data-notice-type');\n } // Check if `data-notice-icon` exists.\n\n\n if (self.is('[data-notice-icon]')) {\n noticeOptions.icon = self.attr('data-notice-icon');\n } // Check if `data-notice-dismiss` exists.\n\n\n if (self.is('[data-notice-dismiss]')) {\n noticeOptions.dismiss = {};\n\n if ('true' === self.attr('data-notice-dismiss')) {\n noticeOptions.dismiss.show = true;\n } else if ('false' === self.attr('data-notice-dismiss')) {\n noticeOptions.dismiss.show = false;\n }\n } // Check if `data-notice-dismiss-label` exists.\n\n\n if (self.is('[data-notice-dismiss-label]') && '' !== self.attr('data-notice-dismiss-label')) {\n noticeOptions.dismiss.label = self.attr('data-notice-dismiss-label');\n } // Check if `data-notice-dismiss-label` exists.\n\n\n if (self.is('[data-notice-dismiss-tooltip]') && '' !== self.attr('data-notice-dismiss-tooltip')) {\n noticeOptions.dismiss.tooltip = self.attr('data-notice-dismiss-tooltip');\n } // Check if `data-notice-autoclose` exists.\n\n\n if (self.is('[data-notice-autoclose]')) {\n noticeOptions.autoclose = {};\n\n if ('true' === self.attr('data-notice-autoclose')) {\n noticeOptions.autoclose.show = true;\n } else if ('false' === self.attr('data-notice-autoclose')) {\n noticeOptions.autoclose.show = false;\n }\n } // Check if `data-notice-autoclose-timeout` exists.\n\n\n if (self.is('[data-notice-autoclose-timeout]')) {\n noticeOptions.autoclose = noticeOptions.autoclose || {};\n noticeOptions.autoclose.timeout = parseInt(self.attr('data-notice-autoclose-timeout'));\n }\n\n SUI.openNotice(noticeId, noticeMessage, noticeOptions);\n });\n };\n /**\n * @desc Close a notification.\n */\n\n\n notice.Utils.Close = function (element) {\n element.on('click', function () {\n self = $(this);\n var noticeId;\n\n if (self.is('[data-notice-close]')) {\n noticeId = self.closest('.sui-notice').attr('id');\n\n if ('' !== self.attr('[data-notice-close]')) {\n noticeId = self.attr('data-notice-close');\n }\n\n SUI.closeNotice(noticeId);\n }\n });\n };\n\n var init = function init() {\n // Open a notification.\n var btnOpen = $('[data-notice-open]');\n notice.Utils.Open(btnOpen); // Close a notification.\n\n var btnClose = $('[data-notice-close]');\n notice.Utils.Close(btnClose);\n };\n\n init();\n return _this;\n };\n\n SUI.notice();\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function () {\n // Enable strict mode.\n 'use strict';\n\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n /**\n * @namespace aria\n */\n\n\n var aria = aria || {}; // REF: Key codes.\n\n aria.KeyCode = {\n BACKSPACE: 8,\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n aria.Utils = aria.Utils || {}; // UTILS: Remove function.\n\n aria.Utils.remove = function (item) {\n if (item.remove && 'function' === typeof item.remove) {\n return item.remove();\n }\n\n if (item.parentNode && item.parentNode.removeChild && 'function' === typeof item.parentNode.removeChild) {\n return item.parentNode.removeChild(item);\n }\n\n return false;\n }; // UTILS: Verify if element can be focused.\n\n\n aria.Utils.isFocusable = function (element) {\n if (0 < element.tabIndex || 0 === element.tabIndex && null !== element.getAttribute('tabIndex')) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && 'ignore' != element.rel;\n\n case 'INPUT':\n return 'hidden' != element.type && 'file' != element.type;\n\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n\n default:\n return false;\n }\n };\n /**\n * Simulate a click event.\n * @public\n * @param {Element} element the element to simulate a click on\n */\n\n\n aria.Utils.simulateClick = function (element) {\n // Create our event (with options)\n var evt = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n }); // If cancelled, don't dispatch our event\n\n var canceled = !element.dispatchEvent(evt);\n }; // When util functions move focus around, set this true so\n // the focus listener can ignore the events.\n\n\n aria.Utils.IgnoreUtilFocusChanges = false;\n aria.Utils.dialogOpenClass = 'sui-has-modal';\n /**\n * @desc Set focus on descendant nodes until the first\n * focusable element is found.\n *\n * @param element\n * DOM node for which to find the first focusable descendant.\n *\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\n aria.Utils.focusFirstDescendant = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n return true;\n }\n }\n\n return false;\n }; // end focusFirstDescendant\n\n /**\n * @desc Find the last descendant node that is focusable.\n *\n * @param element\n * DOM node for which to find the last focusable descendant.\n *\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\n\n aria.Utils.focusLastDescendant = function (element) {\n for (var i = element.childNodes.length - 1; 0 <= i; i--) {\n var child = element.childNodes[i];\n\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n return true;\n }\n }\n\n return false;\n }; // end focusLastDescendant\n\n /**\n * @desc Set Attempt to set focus on the current node.\n *\n * @param element\n * The node to attempt to focus on.\n *\n * @returns\n * true if element is focused.\n */\n\n\n aria.Utils.attemptFocus = function (element) {\n if (!aria.Utils.isFocusable(element)) {\n return false;\n }\n\n aria.Utils.IgnoreUtilFocusChanges = true;\n\n try {\n element.focus();\n } catch (e) {// Done.\n }\n\n aria.Utils.IgnoreUtilFocusChanges = false;\n return document.activeElement === element;\n }; // end attemptFocus\n // Modals can open modals. Keep track of them with this array.\n\n\n aria.OpenDialogList = aria.OpenDialogList || new Array(0);\n /**\n * @returns the last opened dialog (the current dialog)\n */\n\n aria.getCurrentDialog = function () {\n if (aria.OpenDialogList && aria.OpenDialogList.length) {\n return aria.OpenDialogList[aria.OpenDialogList.length - 1];\n }\n };\n\n aria.closeCurrentDialog = function () {\n var currentDialog = aria.getCurrentDialog();\n\n if (currentDialog) {\n currentDialog.close();\n return true;\n }\n\n return false;\n };\n\n aria.handleEscape = function (event) {\n var key = event.which || event.keyCode;\n\n if (key === aria.KeyCode.ESC && aria.closeCurrentDialog()) {\n event.stopPropagation();\n }\n };\n /**\n * @constructor\n * @desc Dialog object providing modal focus management.\n *\n * Assumptions: The element serving as the dialog container is present in the\n * DOM and hidden. The dialog container has role='dialog'.\n *\n * @param dialogId\n * The ID of the element serving as the dialog container.\n *\n * @param focusAfterClosed\n * Either the DOM node or the ID of the DOM node to focus when the\n * dialog closes.\n *\n * @param focusFirst\n * Optional parameter containing either the DOM node or the ID of the\n * DOM node to focus when the dialog opens. If not specified, the\n * first focusable element in the dialog will receive focus.\n *\n * @param hasOverlayMask\n * Optional boolean parameter that when is set to \"true\" will enable\n * a clickable overlay mask. This mask will fire close modal function\n * when you click on it.\n *\n * @param isCloseOnEsc\n * Default: true\n * Optional boolean parameter that when it's set to \"true\", it will enable closing the\n * dialog with the Esc key.\n *\n * @param isAnimated\n * Default: true\n * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n */\n\n\n aria.Dialog = function (dialogId, focusAfterClosed, focusFirst, hasOverlayMask) {\n var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var isAnimated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n this.dialogNode = document.getElementById(dialogId);\n\n if (null === this.dialogNode) {\n throw new Error('No element found with id=\"' + dialogId + '\".');\n }\n\n var validRoles = ['dialog', 'alertdialog'];\n var isDialog = (this.dialogNode.getAttribute('role') || '').trim().split(/\\s+/g).some(function (token) {\n return validRoles.some(function (role) {\n return token === role;\n });\n });\n\n if (!isDialog) {\n throw new Error('Dialog() requires a DOM element with ARIA role of dialog or alertdialog.');\n }\n\n this.isCloseOnEsc = isCloseOnEsc; // Trigger the 'open' event at the beginning of the opening process.\n // After validating the modal's attributes.\n\n var openEvent = new Event('open');\n this.dialogNode.dispatchEvent(openEvent); // Wrap in an individual backdrop element if one doesn't exist\n // Native <dialog> elements use the ::backdrop pseudo-element, which\n // works similarly.\n\n var backdropClass = 'sui-modal';\n\n if (this.dialogNode.parentNode.classList.contains(backdropClass)) {\n this.backdropNode = this.dialogNode.parentNode;\n } else {\n this.backdropNode = document.createElement('div');\n this.backdropNode.className = backdropClass;\n this.backdropNode.setAttribute('data-markup', 'new');\n this.dialogNode.parentNode.insertBefore(this.backdropNode, this.dialogNodev);\n this.backdropNode.appendChild(this.dialogNode);\n }\n\n this.backdropNode.classList.add('sui-active'); // Disable scroll on the body element\n\n document.body.parentNode.classList.add(aria.Utils.dialogOpenClass);\n\n if ('string' === typeof focusAfterClosed) {\n this.focusAfterClosed = document.getElementById(focusAfterClosed);\n } else if ('object' === _typeof(focusAfterClosed)) {\n this.focusAfterClosed = focusAfterClosed;\n } else {\n throw new Error('the focusAfterClosed parameter is required for the aria.Dialog constructor.');\n }\n\n if ('string' === typeof focusFirst) {\n this.focusFirst = document.getElementById(focusFirst);\n } else if ('object' === _typeof(focusFirst)) {\n this.focusFirst = focusFirst;\n } else {\n this.focusFirst = null;\n } // Bracket the dialog node with two invisible, focusable nodes.\n // While this dialog is open, we use these to make sure that focus never\n // leaves the document even if dialogNode is the first or last node.\n\n\n var preDiv = document.createElement('div');\n this.preNode = this.dialogNode.parentNode.insertBefore(preDiv, this.dialogNode);\n this.preNode.tabIndex = 0;\n\n if ('boolean' === typeof hasOverlayMask && true === hasOverlayMask) {\n this.preNode.classList.add('sui-modal-overlay');\n\n this.preNode.onclick = function () {\n aria.getCurrentDialog().close();\n };\n }\n\n var postDiv = document.createElement('div');\n this.postNode = this.dialogNode.parentNode.insertBefore(postDiv, this.dialogNode.nextSibling);\n this.postNode.tabIndex = 0; // If this modal is opening on top of one that is already open,\n // get rid of the document focus listener of the open dialog.\n\n if (0 < aria.OpenDialogList.length) {\n aria.getCurrentDialog().removeListeners();\n }\n\n this.addListeners();\n aria.OpenDialogList.push(this); // If isAnimated is set true then modal box will animate.\n\n if (isAnimated) {\n this.dialogNode.classList.add('sui-content-fade-in'); // make visible\n\n this.dialogNode.classList.remove('sui-content-fade-out');\n } else {\n this.dialogNode.classList.remove('sui-content-fade-in');\n this.dialogNode.classList.remove('sui-content-fade-out');\n }\n\n if (this.focusFirst) {\n this.focusFirst.focus();\n } else {\n aria.Utils.focusFirstDescendant(this.dialogNode);\n }\n\n this.lastFocus = document.activeElement; // Trigger the 'afteropen' event at the end of the opening process.\n\n var afterOpenEvent = new Event('afterOpen');\n this.dialogNode.dispatchEvent(afterOpenEvent);\n }; // end Dialog constructor.\n\n /**\n * @desc Hides the current top dialog, removes listeners of the top dialog,\n * restore listeners of a parent dialog if one was open under the one that\n * just closed, and sets focus on the element specified for focusAfterClosed.\n *\n * @param isAnimated\n * Default: true\n * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n */\n\n\n aria.Dialog.prototype.close = function () {\n var isAnimated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var self = this; // Trigger the 'close' event at the beginning of the closing process.\n\n var closeEvent = new Event('close');\n this.dialogNode.dispatchEvent(closeEvent);\n aria.OpenDialogList.pop();\n this.removeListeners();\n this.preNode.parentNode.removeChild(this.preNode);\n this.postNode.parentNode.removeChild(this.postNode); // If isAnimated is set true then modal box will animate.\n\n if (isAnimated) {\n this.dialogNode.classList.add('sui-content-fade-out');\n this.dialogNode.classList.remove('sui-content-fade-in');\n } else {\n this.dialogNode.classList.remove('sui-content-fade-in');\n this.dialogNode.classList.remove('sui-content-fade-out');\n }\n\n this.focusAfterClosed.focus();\n setTimeout(function () {\n self.backdropNode.classList.remove('sui-active');\n }, 300);\n setTimeout(function () {\n var slides = self.dialogNode.querySelectorAll('.sui-modal-slide');\n\n if (0 < slides.length) {\n // Hide all slides.\n for (var i = 0; i < slides.length; i++) {\n slides[i].setAttribute('disabled', true);\n slides[i].classList.remove('sui-loaded');\n slides[i].classList.remove('sui-active');\n slides[i].setAttribute('tabindex', '-1');\n slides[i].setAttribute('aria-hidden', true);\n } // Change modal size.\n\n\n if (slides[0].hasAttribute('data-modal-size')) {\n var newDialogSize = slides[0].getAttribute('data-modal-size');\n\n switch (newDialogSize) {\n case 'sm':\n case 'small':\n newDialogSize = 'sm';\n break;\n\n case 'md':\n case 'med':\n case 'medium':\n newDialogSize = 'md';\n break;\n\n case 'lg':\n case 'large':\n newDialogSize = 'lg';\n break;\n\n case 'xl':\n case 'extralarge':\n case 'extraLarge':\n case 'extra-large':\n newDialogSize = 'xl';\n break;\n\n default:\n newDialogSize = undefined;\n }\n\n if (undefined !== newDialogSize) {\n // Remove others sizes from dialog to prevent any conflicts with styles.\n self.dialogNode.parentNode.classList.remove('sui-modal-sm');\n self.dialogNode.parentNode.classList.remove('sui-modal-md');\n self.dialogNode.parentNode.classList.remove('sui-modal-lg');\n self.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n self.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n }\n } // Show first slide.\n\n\n slides[0].classList.add('sui-active');\n slides[0].classList.add('sui-loaded');\n slides[0].removeAttribute('disabled');\n slides[0].removeAttribute('tabindex');\n slides[0].removeAttribute('aria-hidden'); // Change modal label.\n\n if (slides[0].hasAttribute('data-modal-labelledby')) {\n var newDialogLabel, getDialogLabel;\n newDialogLabel = '';\n getDialogLabel = slides[0].getAttribute('data-modal-labelledby');\n\n if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n newDialogLabel = getDialogLabel;\n }\n\n self.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n } // Change modal description.\n\n\n if (slides[0].hasAttribute('data-modal-describedby')) {\n var newDialogDesc, getDialogDesc;\n newDialogDesc = '';\n getDialogDesc = slides[0].getAttribute('data-modal-describedby');\n\n if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n newDialogDesc = getDialogDesc;\n }\n\n self.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n }\n }\n }, 350); // If a dialog was open underneath this one, restore its listeners.\n\n if (0 < aria.OpenDialogList.length) {\n aria.getCurrentDialog().addListeners();\n } else {\n document.body.parentNode.classList.remove(aria.Utils.dialogOpenClass);\n } // Trigger the 'afterclose' event at the end of the closing process.\n\n\n var afterCloseEvent = new Event('afterClose');\n this.dialogNode.dispatchEvent(afterCloseEvent);\n }; // end close.\n\n /**\n * @desc Hides the current dialog and replaces it with another.\n *\n * @param newDialogId\n * ID of the dialog that will replace the currently open top dialog.\n *\n * @param newFocusAfterClosed\n * Optional ID or DOM node specifying where to place focus when the new dialog closes.\n * If not specified, focus will be placed on the element specified by the dialog being replaced.\n *\n * @param newFocusFirst\n * Optional ID or DOM node specifying where to place focus in the new dialog when it opens.\n * If not specified, the first focusable element will receive focus.\n *\n * @param hasOverlayMask\n * Optional boolean parameter that when is set to \"true\" will enable a clickable overlay\n * mask to the new opened dialog. This mask will fire close dialog function when you click it.\n *\n * @param isCloseOnEsc\n * Default: true\n * Optional boolean parameter that when it's set to \"true\", it will enable closing the\n * dialog with the Esc key.\n *\n * @param isAnimated\n * Default: true\n * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n */\n\n\n aria.Dialog.prototype.replace = function (newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask) {\n var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var isAnimated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var self = this;\n aria.OpenDialogList.pop();\n this.removeListeners();\n aria.Utils.remove(this.preNode);\n aria.Utils.remove(this.postNode); // If isAnimated is set true then modal box will animate.\n\n if (isAnimated) {\n this.dialogNode.classList.add('sui-content-fade-in'); // make visible\n\n this.dialogNode.classList.remove('sui-content-fade-out');\n } else {\n this.dialogNode.classList.remove('sui-content-fade-in');\n this.dialogNode.classList.remove('sui-content-fade-out');\n }\n\n this.backdropNode.classList.remove('sui-active');\n setTimeout(function () {\n var slides = self.dialogNode.querySelectorAll('.sui-modal-slide');\n\n if (0 < slides.length) {\n // Hide all slides.\n for (var i = 0; i < slides.length; i++) {\n slides[i].setAttribute('disabled', true);\n slides[i].classList.remove('sui-loaded');\n slides[i].classList.remove('sui-active');\n slides[i].setAttribute('tabindex', '-1');\n slides[i].setAttribute('aria-hidden', true);\n } // Change modal size.\n\n\n if (slides[0].hasAttribute('data-modal-size')) {\n var newDialogSize = slides[0].getAttribute('data-modal-size');\n\n switch (newDialogSize) {\n case 'sm':\n case 'small':\n newDialogSize = 'sm';\n break;\n\n case 'md':\n case 'med':\n case 'medium':\n newDialogSize = 'md';\n break;\n\n case 'lg':\n case 'large':\n newDialogSize = 'lg';\n break;\n\n case 'xl':\n case 'extralarge':\n case 'extraLarge':\n case 'extra-large':\n newDialogSize = 'xl';\n break;\n\n default:\n newDialogSize = undefined;\n }\n\n if (undefined !== newDialogSize) {\n // Remove others sizes from dialog to prevent any conflicts with styles.\n self.dialogNode.parentNode.classList.remove('sui-modal-sm');\n self.dialogNode.parentNode.classList.remove('sui-modal-md');\n self.dialogNode.parentNode.classList.remove('sui-modal-lg');\n self.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n self.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n }\n } // Show first slide.\n\n\n slides[0].classList.add('sui-active');\n slides[0].classList.add('sui-loaded');\n slides[0].removeAttribute('disabled');\n slides[0].removeAttribute('tabindex');\n slides[0].removeAttribute('aria-hidden'); // Change modal label.\n\n if (slides[0].hasAttribute('data-modal-labelledby')) {\n var newDialogLabel, getDialogLabel;\n newDialogLabel = '';\n getDialogLabel = slides[0].getAttribute('data-modal-labelledby');\n\n if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n newDialogLabel = getDialogLabel;\n }\n\n self.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n } // Change modal description.\n\n\n if (slides[0].hasAttribute('data-modal-describedby')) {\n var newDialogDesc, getDialogDesc;\n newDialogDesc = '';\n getDialogDesc = slides[0].getAttribute('data-modal-describedby');\n\n if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n newDialogDesc = getDialogDesc;\n }\n\n self.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n }\n }\n }, 350);\n var focusAfterClosed = newFocusAfterClosed || this.focusAfterClosed;\n var dialog = new aria.Dialog(newDialogId, focusAfterClosed, newFocusFirst, hasOverlayMask, isCloseOnEsc, isAnimated);\n }; // end replace\n\n /**\n * @desc Uses the same dialog to display different content that will slide to show.\n *\n * @param newSlideId\n * ID of the slide that will replace the currently active slide content.\n *\n * @param newSlideFocus\n * Optional ID or DOM node specifying where to place focus in the new slide when it shows.\n * If not specified, the first focusable element will receive focus.\n *\n * @param newSlideEntrance\n * Determine if the new slide will show up from \"left\" or \"right\" of the screen.\n * If not specified, the slide entrance animation will be \"fade in\".\n */\n\n\n aria.Dialog.prototype.slide = function (newSlideId, newSlideFocus, newSlideEntrance) {\n var animation = 'sui-fadein',\n currentDialog = aria.getCurrentDialog(),\n getAllSlides = this.dialogNode.querySelectorAll('.sui-modal-slide'),\n getNewSlide = document.getElementById(newSlideId);\n\n switch (newSlideEntrance) {\n case 'back':\n case 'left':\n animation = 'sui-fadein-left';\n break;\n\n case 'next':\n case 'right':\n animation = 'sui-fadein-right';\n break;\n\n default:\n animation = 'sui-fadein';\n break;\n } // Hide all slides.\n\n\n for (var i = 0; i < getAllSlides.length; i++) {\n getAllSlides[i].setAttribute('disabled', true);\n getAllSlides[i].classList.remove('sui-loaded');\n getAllSlides[i].classList.remove('sui-active');\n getAllSlides[i].setAttribute('tabindex', '-1');\n getAllSlides[i].setAttribute('aria-hidden', true);\n } // Change modal size.\n\n\n if (getNewSlide.hasAttribute('data-modal-size')) {\n var newDialogSize = getNewSlide.getAttribute('data-modal-size');\n\n switch (newDialogSize) {\n case 'sm':\n case 'small':\n newDialogSize = 'sm';\n break;\n\n case 'md':\n case 'med':\n case 'medium':\n newDialogSize = 'md';\n break;\n\n case 'lg':\n case 'large':\n newDialogSize = 'lg';\n break;\n\n case 'xl':\n case 'extralarge':\n case 'extraLarge':\n case 'extra-large':\n newDialogSize = 'xl';\n break;\n\n default:\n newDialogSize = undefined;\n }\n\n if (undefined !== newDialogSize) {\n // Remove others sizes from dialog to prevent any conflicts with styles.\n this.dialogNode.parentNode.classList.remove('sui-modal-sm');\n this.dialogNode.parentNode.classList.remove('sui-modal-md');\n this.dialogNode.parentNode.classList.remove('sui-modal-lg');\n this.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n this.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n }\n } // Change modal label.\n\n\n if (getNewSlide.hasAttribute('data-modal-labelledby')) {\n var newDialogLabel, getDialogLabel;\n newDialogLabel = '';\n getDialogLabel = getNewSlide.getAttribute('data-modal-labelledby');\n\n if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n newDialogLabel = getDialogLabel;\n }\n\n this.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n } // Change modal description.\n\n\n if (getNewSlide.hasAttribute('data-modal-describedby')) {\n var newDialogDesc, getDialogDesc;\n newDialogDesc = '';\n getDialogDesc = getNewSlide.getAttribute('data-modal-describedby');\n\n if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n newDialogDesc = getDialogDesc;\n }\n\n this.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n } // Show new slide.\n\n\n getNewSlide.classList.add('sui-active');\n getNewSlide.classList.add(animation);\n getNewSlide.removeAttribute('tabindex');\n getNewSlide.removeAttribute('aria-hidden');\n setTimeout(function () {\n getNewSlide.classList.add('sui-loaded');\n getNewSlide.classList.remove(animation);\n getNewSlide.removeAttribute('disabled');\n }, 600);\n\n if ('string' === typeof newSlideFocus) {\n this.newSlideFocus = document.getElementById(newSlideFocus);\n } else if ('object' === _typeof(newSlideFocus)) {\n this.newSlideFocus = newSlideFocus;\n } else {\n this.newSlideFocus = null;\n }\n\n if (this.newSlideFocus) {\n this.newSlideFocus.focus();\n } else {\n aria.Utils.focusFirstDescendant(this.dialogNode);\n }\n }; // end slide.\n\n\n aria.Dialog.prototype.addListeners = function () {\n document.addEventListener('focus', this.trapFocus, true);\n\n if (this.isCloseOnEsc) {\n this.dialogNode.addEventListener('keyup', aria.handleEscape);\n }\n }; // end addListeners.\n\n\n aria.Dialog.prototype.removeListeners = function () {\n document.removeEventListener('focus', this.trapFocus, true);\n }; // end removeListeners.\n\n\n aria.Dialog.prototype.trapFocus = function (event) {\n var parentElement = event.target.parentElement;\n\n if (aria.Utils.IgnoreUtilFocusChanges || parentElement && parentElement.classList.contains('wp-link-input')) {\n return;\n }\n\n var currentDialog = aria.getCurrentDialog();\n\n if (currentDialog.dialogNode.contains(event.target)) {\n currentDialog.lastFocus = event.target;\n } else {\n aria.Utils.focusFirstDescendant(currentDialog.dialogNode);\n\n if (currentDialog.lastFocus == document.activeElement) {\n aria.Utils.focusLastDescendant(currentDialog.dialogNode);\n }\n\n currentDialog.lastFocus = document.activeElement;\n }\n }; // end trapFocus.\n\n\n SUI.openModal = function (dialogId, focusAfterClosed, focusFirst, dialogOverlay) {\n var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var isAnimated = arguments.length > 5 ? arguments[5] : undefined;\n var dialog = new aria.Dialog(dialogId, focusAfterClosed, focusFirst, dialogOverlay, isCloseOnEsc, isAnimated);\n }; // end openModal.\n\n\n SUI.closeModal = function (isAnimated) {\n var topDialog = aria.getCurrentDialog();\n topDialog.close(isAnimated);\n }; // end closeDialog.\n\n\n SUI.replaceModal = function (newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask) {\n var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var isAnimated = arguments.length > 5 ? arguments[5] : undefined;\n var topDialog = aria.getCurrentDialog();\n /**\n * BUG #1:\n * When validating document.activeElement it always returns \"false\" but\n * even when \"false\" on Chrome function is fired correctly while on Firefox\n * and Safari this validation prevents function to be fired on click.\n *\n * if ( topDialog.dialogNode.contains( document.activeElement ) ) { ... }\n */\n\n topDialog.replace(newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask, isCloseOnEsc, isAnimated);\n }; // end replaceModal.\n\n\n SUI.slideModal = function (newSlideId, newSlideFocus, newSlideEntrance) {\n var topDialog = aria.getCurrentDialog();\n topDialog.slide(newSlideId, newSlideFocus, newSlideEntrance);\n }; // end slideModal.\n\n})();\n\n(function ($) {\n // Enable strict mode.\n 'use strict';\n\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n\n SUI.modalDialog = function () {\n function init() {\n var button, buttonOpen, buttonClose, buttonReplace, buttonSlide, overlayMask, modalId, slideId, closeFocus, newFocus, animation, isAnimated;\n buttonOpen = $('[data-modal-open]');\n buttonClose = $('[data-modal-close]');\n buttonReplace = $('[data-modal-replace]');\n buttonSlide = $('[data-modal-slide]');\n overlayMask = $('.sui-modal-overlay');\n buttonOpen.on('click', function (e) {\n button = $(this);\n modalId = button.attr('data-modal-open');\n closeFocus = button.attr('data-modal-close-focus');\n newFocus = button.attr('data-modal-open-focus');\n overlayMask = button.attr('data-modal-mask');\n isAnimated = button.attr('data-modal-animated');\n var isCloseOnEsc = 'false' === button.attr('data-esc-close') ? false : true;\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(closeFocus) || false === closeFocus || '' === closeFocus) {\n closeFocus = this;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n newFocus = undefined;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(overlayMask) && false !== overlayMask && 'true' === overlayMask) {\n overlayMask = true;\n } else {\n overlayMask = false;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(isAnimated) && false !== isAnimated && 'false' === isAnimated) {\n isAnimated = false;\n } else {\n isAnimated = true;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(modalId) && false !== modalId && '' !== modalId) {\n SUI.openModal(modalId, closeFocus, newFocus, overlayMask, isCloseOnEsc, isAnimated);\n }\n\n e.preventDefault();\n });\n buttonReplace.on('click', function (e) {\n button = $(this);\n modalId = button.attr('data-modal-replace');\n closeFocus = button.attr('data-modal-close-focus');\n newFocus = button.attr('data-modal-open-focus');\n overlayMask = button.attr('data-modal-replace-mask');\n var isCloseOnEsc = 'false' === button.attr('data-esc-close') ? false : true;\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(closeFocus) || false === closeFocus || '' === closeFocus) {\n closeFocus = undefined;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n newFocus = undefined;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(overlayMask) && false !== overlayMask && 'true' === overlayMask) {\n overlayMask = true;\n } else {\n overlayMask = false;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(modalId) && false !== modalId && '' !== modalId) {\n SUI.replaceModal(modalId, closeFocus, newFocus, overlayMask, isCloseOnEsc, isAnimated);\n }\n\n e.preventDefault();\n });\n buttonSlide.on('click', function (e) {\n button = $(this);\n slideId = button.attr('data-modal-slide');\n newFocus = button.attr('data-modal-slide-focus');\n animation = button.attr('data-modal-slide-intro');\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n newFocus = undefined;\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(animation) || false === animation || '' === animation) {\n animation = '';\n }\n\n if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(slideId) && false !== slideId && '' !== slideId) {\n SUI.slideModal(slideId, newFocus, animation);\n }\n\n e.preventDefault();\n });\n buttonClose.on('click', function (e) {\n SUI.closeModal(isAnimated);\n e.preventDefault();\n });\n }\n\n init();\n return this;\n };\n\n SUI.modalDialog();\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;\n\n(function ($, ClipboardJS, window, document, undefined) {\n 'use strict'; // undefined is used here as the undefined global variable in ECMAScript 3 is\n // mutable (ie. it can be changed by someone else). undefined isn't really being\n // passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n // can no longer be modified.\n // window and document are passed through as local variables rather than global\n // as this (slightly) quickens the resolution process and can be more efficiently\n // minified (especially when both are regularly referenced in your plugin).\n // Create the defaults once\n\n var pluginName = 'SUICodeSnippet',\n defaults = {\n copyText: 'Copy',\n copiedText: 'Copied!'\n }; // The actual plugin constructor\n\n function SUICodeSnippet(element, options) {\n this.element = element;\n this.$element = $(this.element); // jQuery has an extend method which merges the contents of two or\n // more objects, storing the result in the first object. The first object\n // is generally empty as we don't want to alter the default options for\n // future instances of the plugin\n\n this.settings = $.extend({}, defaults, options);\n this._defaults = defaults;\n this._name = pluginName;\n this._clipboardJs = null;\n this._clipboardId = '';\n this.init();\n } // Avoid Plugin.prototype conflicts\n\n\n $.extend(SUICodeSnippet.prototype, {\n init: function init() {\n var self = this,\n button = ''; // check if its already wrapped\n\n if (0 === this.$element.parent('sui-code-snippet-wrapper').length) {\n // build markup\n this.$element.wrap('<div class=\"sui-code-snippet-wrapper\"></div>');\n this._clipboardId = this.generateUniqueId();\n button = '<button type=\"button\" class=\"sui-button\" id=\"sui-code-snippet-button-' + this._clipboardId + '\" data-clipboard-target=\"#sui-code-snippet-' + this._clipboardId + '\">' + this.settings.copyText + '</button>';\n this.$element.attr('id', 'sui-code-snippet-' + this._clipboardId).after(button);\n this._clipboardJs = new ClipboardJS('#sui-code-snippet-button-' + this._clipboardId); // attach events\n\n this._clipboardJs.on('success', function (e) {\n e.clearSelection();\n self.showTooltip(e.trigger, self.settings.copiedText);\n });\n\n $('#sui-code-snippet-button-' + this._clipboardId).on('mouseleave.SUICodeSnippet', function () {\n $(this).removeClass('sui-tooltip');\n $(this).removeAttr('aria-label');\n $(this).removeAttr('data-tooltip');\n });\n }\n },\n getClipboardJs: function getClipboardJs() {\n return this._clipboardJs;\n },\n showTooltip: function showTooltip(e, msg) {\n $(e).addClass('sui-tooltip');\n $(e).attr('aria-label', msg);\n $(e).attr('data-tooltip', msg);\n },\n generateUniqueId: function generateUniqueId() {\n // Math.random should be unique because of its seeding algorithm.\n // Convert it to base 36 (numbers + letters), and grab the first 9 characters\n // after the decimal.\n return '_' + Math.random().toString(36).substr(2, 9);\n },\n destroy: function destroy() {\n if (null !== this._clipboardJs) {\n this._clipboardJs.destroy();\n\n this.$element.attr('id', '');\n this.$element.unwrap('.sui-code-snippet-wrapper');\n $('#sui-code-snippet-button-' + this._clipboardId).remove();\n }\n }\n }); // A really lightweight plugin wrapper around the constructor,\n // preventing against multiple instantiations\n\n $.fn[pluginName] = function (options) {\n return this.each(function () {\n // instance of SUICodeSnippet can be called with $(element).data('SUICodeSnippet')\n if (!$.data(this, pluginName)) {\n $.data(this, pluginName, new SUICodeSnippet(this, options));\n }\n });\n };\n})(jQuery, ClipboardJS, window, document);\n\n(function ($) {\n // Enable strict mode.\n 'use strict'; // Define global SUI object if it doesn't exist.\n\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n\n SUI.suiCodeSnippet = function () {\n // Convert all code snippet.\n $('.sui-2-12-23 .sui-code-snippet:not(.sui-no-copy)').each(function () {\n // backward compat of instantiate new accordion\n $(this).SUICodeSnippet({});\n });\n }; // wait document ready first\n\n\n $(document).ready(function () {\n SUI.suiCodeSnippet();\n });\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n // Enable strict mode.\n 'use strict'; // Define global SUI object if it doesn't exist.\n\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n\n SUI.upload = function () {\n $('.sui-2-12-23 .sui-upload-group input[type=\"file\"]').on('change', function (e) {\n var file = $(this)[0].files[0],\n message = $(this).find('~ .sui-upload-message');\n\n if (file) {\n message.text(file.name);\n }\n }); // check whether element exist then execute js\n\n if ($('.sui-2-12-23 .sui-file-upload').length) {\n // This will trigger on file change. \n $('.sui-2-12-23 .sui-file-browser input[type=\"file\"]').on('change', function () {\n var parent = $(this).parent();\n var filename = $(this).val();\n var imageContainer = parent.find('.sui-upload-image');\n\n if (filename) {\n var lastIndex = filename.lastIndexOf(\"\\\\\");\n\n if (lastIndex >= 0) {\n filename = filename.substring(lastIndex + 1); // To show uploaded file preview.\n\n if (imageContainer.length) {\n var reader = new FileReader();\n var imagePreview = imageContainer.find('.sui-image-preview');\n\n reader.onload = function (e) {\n imagePreview.attr('style', 'background-image: url(' + e.target.result + ' );');\n };\n\n reader.readAsDataURL($(this)[0].files[0]);\n }\n\n parent.find('.sui-upload-file > span').text(filename);\n parent.addClass('sui-has_file');\n }\n } else {\n if (imageContainer.length) {\n var imagePreview = imageContainer.find('.sui-image-preview');\n imagePreview.attr('style', 'background-image: url();');\n }\n\n parent.find('.sui-upload-file > span').text('');\n parent.removeClass('sui-has_file');\n }\n }); // This will trigger on click of upload button\n\n $('.sui-2-12-23 .sui-file-browser .sui-upload-button').on('click', function () {\n selectFile($(this));\n }); // This will trigger when user wants to remove the selected upload file\n\n $('.sui-2-12-23 .sui-file-upload [aria-label=\"Remove file\"]').on('click', function () {\n removeFile($(this));\n }); // This will trigger reupload of file\n\n $('.sui-2-12-23 .sui-file-browser .sui-upload-image').on('click', function () {\n selectFile($(this));\n }); // upload drag and drop functionality\n\n var isAdvancedUpload = function () {\n var div = document.createElement('div');\n return ('draggable' in div || 'ondragstart' in div && 'ondrop' in div) && 'FormData' in window && 'FileReader' in window;\n }();\n\n var uploadArea = $('.sui-2-12-23 .sui-upload-button');\n\n if (isAdvancedUpload) {\n var droppedFiles = false;\n uploadArea.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\n e.preventDefault();\n e.stopPropagation();\n }).on('dragover dragenter', function () {\n uploadArea.addClass('sui-is-dragover');\n }).on('dragleave dragend drop', function () {\n uploadArea.removeClass('sui-is-dragover');\n }).on('drop', function (e) {\n droppedFiles = e.originalEvent.dataTransfer.files;\n uploadedFile($(this), droppedFiles[0], droppedFiles[0].name);\n });\n } // function to set uploaded file\n\n\n var uploadedFile = function uploadedFile(element, file, filename) {\n var parent = element.closest('.sui-upload');\n var imageContainer = parent.find('.sui-upload-image');\n\n if (filename) {\n if (imageContainer.length) {\n var reader = new FileReader();\n var imagePreview = imageContainer.find('.sui-image-preview');\n\n reader.onload = function (e) {\n imagePreview.attr('style', 'background-image: url(' + e.target.result + ' );');\n };\n\n reader.readAsDataURL(file);\n }\n\n parent.find('.sui-upload-file > span').text(filename);\n parent.addClass('sui-has_file');\n }\n }; // function to open browser file explorer for selecting file\n\n\n var selectFile = function selectFile(element) {\n var parent = element.closest('.sui-upload');\n var file = parent.find('input[type=\"file\"]');\n file.trigger('click');\n }; // function to remove file\n\n\n var removeFile = function removeFile(element) {\n var parent = element.closest('.sui-upload');\n var file = parent.find('input[type=\"file\"]');\n file.val('').change();\n };\n }\n };\n\n SUI.upload();\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n *\n * Modified logic/function,etc besides formatting should be marked with //SUI-SELECT2\n * For easy debugging process or update upstream of select\n */\n;\n\n(function (factory) {\n // Disable AMD and module exports. @edited\n if (false && typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (false && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n } else {\n jQuery = require('jquery')(root);\n }\n }\n\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 = function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\n\n var S2;\n\n (function () {\n if (!S2 || !S2.requirejs) {\n if (!S2) {\n S2 = {};\n } else {\n require = S2;\n }\n /**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n //Going sloppy to avoid 'use strict' string cost, but strict practices should\n //be followed.\n\n /*global setTimeout: false */\n\n\n var requirejs, require, define;\n\n (function (undef) {\n var main,\n _req,\n makeMap,\n handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n\n\n function normalize(name, baseName) {\n var nameParts,\n nameSegment,\n mapValue,\n foundMap,\n lastIndex,\n foundI,\n foundStarMap,\n starI,\n i,\n j,\n part,\n normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = map && map['*'] || {}; //Adjust any relative paths.\n\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1; // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n } // Starts with a '.' so need the baseName\n\n\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n } //start trimDots\n\n\n for (i = 0; i < name.length; i++) {\n part = name[i];\n\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || i === 1 && name[2] === '..' || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n } //end trimDots\n\n\n name = name.join('/');\n } //Apply map config if available.\n\n\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')]; //baseName segment has config, find if it has one for\n //this name.\n\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n } //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n\n\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0); //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n\n return _req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n\n return defined[name];\n } //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n\n\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n\n return [prefix, name];\n } //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n\n\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n\n\n makeMap = function makeMap(name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n } //Normalize according\n\n\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n\n if (prefix) {\n plugin = callDep(prefix);\n }\n } //Using ridiculous property names for space reasons\n\n\n return {\n f: prefix ? prefix + '!' + name : name,\n //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return config && config.config && config.config[name] || {};\n };\n }\n\n handlers = {\n require: function require(name) {\n return makeRequire(name);\n },\n exports: function exports(name) {\n var e = defined[name];\n\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return defined[name] = {};\n }\n },\n module: function module(name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function main(name, deps, callback, relName) {\n var cjsModule,\n depName,\n ret,\n map,\n i,\n relParts,\n args = [],\n callbackType = _typeof(callback),\n usingExports; //Use name if no relName\n\n\n relName = relName || name;\n relParts = makeRelParts(relName); //Call the callback to define the module, if necessary.\n\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f; //Fast path CommonJS standard dependencies.\n\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = _req = function req(deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n } //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n\n\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n\n if (config.deps) {\n _req(config.deps, config.callback);\n }\n\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n } //Support require(['a'])\n\n\n callback = callback || function () {}; //If relName is a function, it is an errback handler,\n //so remove it.\n\n\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n } //Simulate async callback;\n\n\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return _req;\n };\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n\n\n _req.config = function (cfg) {\n return _req(cfg);\n };\n /**\n * Expose module registry for debugging and tooling\n */\n\n\n requirejs._defined = defined;\n\n define = function define(name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n } //This module may not have dependencies\n\n\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n })();\n\n S2.requirejs = requirejs;\n S2.require = require;\n S2.define = define;\n }\n })();\n\n S2.define(\"almond\", function () {});\n /* global jQuery:false, $:false */\n\n S2.define('jquery', [], function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n }\n\n return _$;\n });\n S2.define('select2/utils', ['jquery'], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor() {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n return ChildClass;\n };\n\n function getMethods(theClass) {\n var proto = theClass.prototype;\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass() {\n var unshift = Array.prototype.unshift;\n var argCount = DecoratorClass.prototype.constructor.length;\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr() {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function calledMethod(methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function originalMethod() {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n return function () {\n var unshift = Array.prototype.unshift;\n unshift.call(arguments, originalMethod);\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function Observable() {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n this.listeners = this.listeners || {}; // Params should always come in as an array\n\n if (params == null) {\n params = [];\n } // If there are no arguments to the event, use a temporary object\n\n\n if (params.length === 0) {\n params.push({});\n } // Set the `_type` of the first object to the event\n\n\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]; // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY; //Check both x and y declarations\n\n if (overflowX === overflowY && (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n }; // Do not try to escape the markup if it's not a string\n\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n }; // Cache objects in Utils.__cache instead of $.data (see #4346)\n\n\n Utils.__cache = {};\n var id = 0;\n\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n } // If element has id, use it.\n\n\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() + '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n var replacements = destinationClasses.concat(sourceClasses);\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n });\n S2.define('select2/results', ['jquery', './utils'], function ($, Utils) {\n function Results($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $('<ul class=\"select2-results__options\" role=\"listbox\"></ul>');\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n this.clear();\n this.hideLoading();\n var $message = $('<li role=\"alert\" aria-live=\"assertive\"' + ' class=\"select2-results__option\"></li>');\n var message = this.options.get('translations').get(params.message);\n $message.append(escapeMarkup(message(params.args)));\n $message[0].className += ' select2-results__message';\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n var $option = this.option(item);\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results.find('.select2-results__option--selectable');\n var $selected = $options.filter('.select2-results__option--selected'); // Check if there are any selected options\n\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n var $options = self.$results.find('.select2-results__option--selectable');\n $options.each(function () {\n var $option = $(this);\n var item = Utils.GetData(this, 'data'); // id needs to be converted to a string when comparing\n\n var id = '' + item.id;\n\n if (item.element != null && item.element.selected || item.element == null && selectedIds.indexOf(id) > -1) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n var loadingMore = this.options.get('translations').get('searching');\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n var attrs = {\n 'role': 'option'\n };\n var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n\n if (data.element != null && matches.call(data.element, ':disabled') || data.element == null && data.disabled) {\n attrs['aria-disabled'] = 'true';\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n this.template(data, label);\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n var $child = this.option(child);\n $children.push($child);\n }\n\n var $childrenContainer = $('<ul></ul>', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n $childrenContainer.append($children);\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n var id = container.id + '-results';\n this.$results.attr('id', id);\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n self.setClasses();\n self.ensureHighlightVisible();\n });\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted); // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1; // If none are highlighted, highlight the first\n\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\n var nextIndex = currentIndex + 1; // If we are at the last option, stay there\n\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable', function (evt) {\n var $this = $(this);\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n this.$results.on('mouseenter', '.select2-results__option--selectable', function (evt) {\n var data = Utils.GetData(this, 'data');\n self.getHighlightedResults().removeClass('select2-results__option--highlighted').attr('aria-selected', 'false');\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results.find('.select2-results__option--highlighted');\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n });\n S2.define('select2/keys', [], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n return KEYS;\n });\n S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function BaseSelection($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $('<span class=\"select2-selection\" role=\"combobox\" ' + ' aria-haspopup=\"true\" aria-expanded=\"false\">' + '</span>');\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n this.$selection = $selection;\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n this.container = container;\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this; // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n var $select = $target.closest('.select2');\n var $all = $('.select2.select2-container--open');\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element'); // Renamed function. @edited\n // old: $element.select2('close');\n\n $element.SUIselect2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n\n\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n\n\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n });\n S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection() {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single'); // Assign SUI icon to select button. @edited\n\n $selection.html('<span class=\"select2-selection__rendered\"></span>' + '<span class=\"select2-selection__arrow\" role=\"presentation\">' + '<span class=\"sui-icon-chevron-down sui-sm\" aria-hidden=\"true\"></span>' + '</span>');\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id).attr('role', 'textbox').attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('focus', function (evt) {// User focuses on the container\n });\n this.$selection.on('blur', function (evt) {// User exits the container\n });\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('<span></span>');\n };\n\n SingleSelection.prototype.update = function (data) {\n // Add icon when variables is empty. @edited\n if (data.length === 0) {\n this.clear();\n\n if ('vars' === this.options.get('theme')) {\n this.$selection.find('.select2-selection__rendered').html('<span class=\"sui-icon-plus-circle sui-md\" aria-hidden=\"true\"></span>');\n }\n\n return;\n }\n\n var selection = data[0];\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n $rendered.empty().append(formatted);\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n });\n S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n function MultipleSelection($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n $selection.html('<ul class=\"select2-selection__rendered\"></ul>');\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('click', '.sui-button-icon', function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n var data = Utils.GetData($selection[0], 'data');\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n });\n this.$selection.on('keydown', '.sui-button-icon', function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n });\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n $rendered.removeClass('has-option-selected');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $('<li class=\"select2-selection__choice\">' + '<span class=\"select2-selection__choice__display\"></span>' + '<button type=\"button\" class=\"sui-button-icon\" ' + 'tabindex=\"-1\">' + '<span class=\"sui-icon-close sui-sm\" aria-hidden=\"true\"></span>' + '</button>' + '</li>');\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered').attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display').append(formatted).attr('id', selectionId);\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n var $remove = $selection.find('.sui-button-icon');\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($selection[0], 'data', selection);\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.append($selections).addClass('has-option-selected');\n };\n\n return MultipleSelection;\n });\n S2.define('select2/selection/placeholder', [], function () {\n function Placeholder(decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n var placeholderTitle = placeholder.title || placeholder.text || $placeholder.text();\n this.$selection.find('.select2-selection__rendered').attr('title', placeholderTitle);\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n var $placeholder = this.createPlaceholder(this.placeholder);\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n });\n S2.define('select2/selection/allowClear', ['jquery', '../keys', '../utils'], function ($, KEYS, Utils) {\n function AllowClear() {}\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n self._handleClear(evt);\n });\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear'); // Ignore the event if nothing has been selected\n\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n var data = Utils.GetData($clear[0], 'data');\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n }; // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n\n this.trigger('unselect', unselectData); // If the event was prevented, don't clear it out.\n\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered').attr('id');\n var removeAll = this.options.get('translations').get('removeAllItems');\n var $remove = $('<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' + '<span aria-hidden=\"true\">×</span>' + '</button>');\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n });\n S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function Search(decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $('<span class=\"select2-search select2-search--inline\">' + '<textarea class=\"select2-search__field\"' + ' type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' + '</textarea>' + '</span>');\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n $rendered.append(this.$searchContainer);\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n decorated.call(this, container, $container);\n self.$search.attr('aria-describedby', selectionId);\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection.find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n self.searchRemoveChoice(item);\n evt.preventDefault();\n }\n }\n });\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n }); // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11; // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n\n this.$selection.on('input.searchcheck', '.select2-search--inline', function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n } // Unbind the duplicated `keyup` event\n\n\n self.$selection.off('keyup.search');\n });\n this.$selection.on('keyup.search input.search', '.select2-search--inline', function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which; // We can freely ignore events from modifier keys\n\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n } // Tabbing will be handled during the `keydown` phase\n\n\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n });\n };\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n\n\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n this.$search.attr('placeholder', '');\n decorated.call(this, data);\n this.resizeSearch();\n\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n width = minimumWidth * 0.75 + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n });\n S2.define('select2/selection/selectionCss', ['../utils'], function (Utils) {\n function SelectionCSS() {}\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n return $selection;\n };\n\n return SelectionCSS;\n });\n S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n function EventRelay() {}\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting', 'clear', 'clearing'];\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting', 'clearing'];\n decorated.call(this, container, $container);\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n } // The parameters should always be an object\n\n\n params = params || {}; // Generate the jQuery event for the Select2 event\n\n var evt = $.Event('select2:' + name, {\n params: params\n });\n self.$element.trigger(evt); // Only handle preventable events if it was one\n\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n });\n S2.define('select2/translation', ['jquery', 'require'], function ($, require) {\n function Translation(dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n }; // Static functions\n\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n });\n S2.define('select2/diacritics', [], function () {\n var diacritics = {\n \"\\u24B6\": 'A',\n \"\\uFF21\": 'A',\n \"\\xC0\": 'A',\n \"\\xC1\": 'A',\n \"\\xC2\": 'A',\n \"\\u1EA6\": 'A',\n \"\\u1EA4\": 'A',\n \"\\u1EAA\": 'A',\n \"\\u1EA8\": 'A',\n \"\\xC3\": 'A',\n \"\\u0100\": 'A',\n \"\\u0102\": 'A',\n \"\\u1EB0\": 'A',\n \"\\u1EAE\": 'A',\n \"\\u1EB4\": 'A',\n \"\\u1EB2\": 'A',\n \"\\u0226\": 'A',\n \"\\u01E0\": 'A',\n \"\\xC4\": 'A',\n \"\\u01DE\": 'A',\n \"\\u1EA2\": 'A',\n \"\\xC5\": 'A',\n \"\\u01FA\": 'A',\n \"\\u01CD\": 'A',\n \"\\u0200\": 'A',\n \"\\u0202\": 'A',\n \"\\u1EA0\": 'A',\n \"\\u1EAC\": 'A',\n \"\\u1EB6\": 'A',\n \"\\u1E00\": 'A',\n \"\\u0104\": 'A',\n \"\\u023A\": 'A',\n \"\\u2C6F\": 'A',\n \"\\uA732\": 'AA',\n \"\\xC6\": 'AE',\n \"\\u01FC\": 'AE',\n \"\\u01E2\": 'AE',\n \"\\uA734\": 'AO',\n \"\\uA736\": 'AU',\n \"\\uA738\": 'AV',\n \"\\uA73A\": 'AV',\n \"\\uA73C\": 'AY',\n \"\\u24B7\": 'B',\n \"\\uFF22\": 'B',\n \"\\u1E02\": 'B',\n \"\\u1E04\": 'B',\n \"\\u1E06\": 'B',\n \"\\u0243\": 'B',\n \"\\u0182\": 'B',\n \"\\u0181\": 'B',\n \"\\u24B8\": 'C',\n \"\\uFF23\": 'C',\n \"\\u0106\": 'C',\n \"\\u0108\": 'C',\n \"\\u010A\": 'C',\n \"\\u010C\": 'C',\n \"\\xC7\": 'C',\n \"\\u1E08\": 'C',\n \"\\u0187\": 'C',\n \"\\u023B\": 'C',\n \"\\uA73E\": 'C',\n \"\\u24B9\": 'D',\n \"\\uFF24\": 'D',\n \"\\u1E0A\": 'D',\n \"\\u010E\": 'D',\n \"\\u1E0C\": 'D',\n \"\\u1E10\": 'D',\n \"\\u1E12\": 'D',\n \"\\u1E0E\": 'D',\n \"\\u0110\": 'D',\n \"\\u018B\": 'D',\n \"\\u018A\": 'D',\n \"\\u0189\": 'D',\n \"\\uA779\": 'D',\n \"\\u01F1\": 'DZ',\n \"\\u01C4\": 'DZ',\n \"\\u01F2\": 'Dz',\n \"\\u01C5\": 'Dz',\n \"\\u24BA\": 'E',\n \"\\uFF25\": 'E',\n \"\\xC8\": 'E',\n \"\\xC9\": 'E',\n \"\\xCA\": 'E',\n \"\\u1EC0\": 'E',\n \"\\u1EBE\": 'E',\n \"\\u1EC4\": 'E',\n \"\\u1EC2\": 'E',\n \"\\u1EBC\": 'E',\n \"\\u0112\": 'E',\n \"\\u1E14\": 'E',\n \"\\u1E16\": 'E',\n \"\\u0114\": 'E',\n \"\\u0116\": 'E',\n \"\\xCB\": 'E',\n \"\\u1EBA\": 'E',\n \"\\u011A\": 'E',\n \"\\u0204\": 'E',\n \"\\u0206\": 'E',\n \"\\u1EB8\": 'E',\n \"\\u1EC6\": 'E',\n \"\\u0228\": 'E',\n \"\\u1E1C\": 'E',\n \"\\u0118\": 'E',\n \"\\u1E18\": 'E',\n \"\\u1E1A\": 'E',\n \"\\u0190\": 'E',\n \"\\u018E\": 'E',\n \"\\u24BB\": 'F',\n \"\\uFF26\": 'F',\n \"\\u1E1E\": 'F',\n \"\\u0191\": 'F',\n \"\\uA77B\": 'F',\n \"\\u24BC\": 'G',\n \"\\uFF27\": 'G',\n \"\\u01F4\": 'G',\n \"\\u011C\": 'G',\n \"\\u1E20\": 'G',\n \"\\u011E\": 'G',\n \"\\u0120\": 'G',\n \"\\u01E6\": 'G',\n \"\\u0122\": 'G',\n \"\\u01E4\": 'G',\n \"\\u0193\": 'G',\n \"\\uA7A0\": 'G',\n \"\\uA77D\": 'G',\n \"\\uA77E\": 'G',\n \"\\u24BD\": 'H',\n \"\\uFF28\": 'H',\n \"\\u0124\": 'H',\n \"\\u1E22\": 'H',\n \"\\u1E26\": 'H',\n \"\\u021E\": 'H',\n \"\\u1E24\": 'H',\n \"\\u1E28\": 'H',\n \"\\u1E2A\": 'H',\n \"\\u0126\": 'H',\n \"\\u2C67\": 'H',\n \"\\u2C75\": 'H',\n \"\\uA78D\": 'H',\n \"\\u24BE\": 'I',\n \"\\uFF29\": 'I',\n \"\\xCC\": 'I',\n \"\\xCD\": 'I',\n \"\\xCE\": 'I',\n \"\\u0128\": 'I',\n \"\\u012A\": 'I',\n \"\\u012C\": 'I',\n \"\\u0130\": 'I',\n \"\\xCF\": 'I',\n \"\\u1E2E\": 'I',\n \"\\u1EC8\": 'I',\n \"\\u01CF\": 'I',\n \"\\u0208\": 'I',\n \"\\u020A\": 'I',\n \"\\u1ECA\": 'I',\n \"\\u012E\": 'I',\n \"\\u1E2C\": 'I',\n \"\\u0197\": 'I',\n \"\\u24BF\": 'J',\n \"\\uFF2A\": 'J',\n \"\\u0134\": 'J',\n \"\\u0248\": 'J',\n \"\\u24C0\": 'K',\n \"\\uFF2B\": 'K',\n \"\\u1E30\": 'K',\n \"\\u01E8\": 'K',\n \"\\u1E32\": 'K',\n \"\\u0136\": 'K',\n \"\\u1E34\": 'K',\n \"\\u0198\": 'K',\n \"\\u2C69\": 'K',\n \"\\uA740\": 'K',\n \"\\uA742\": 'K',\n \"\\uA744\": 'K',\n \"\\uA7A2\": 'K',\n \"\\u24C1\": 'L',\n \"\\uFF2C\": 'L',\n \"\\u013F\": 'L',\n \"\\u0139\": 'L',\n \"\\u013D\": 'L',\n \"\\u1E36\": 'L',\n \"\\u1E38\": 'L',\n \"\\u013B\": 'L',\n \"\\u1E3C\": 'L',\n \"\\u1E3A\": 'L',\n \"\\u0141\": 'L',\n \"\\u023D\": 'L',\n \"\\u2C62\": 'L',\n \"\\u2C60\": 'L',\n \"\\uA748\": 'L',\n \"\\uA746\": 'L',\n \"\\uA780\": 'L',\n \"\\u01C7\": 'LJ',\n \"\\u01C8\": 'Lj',\n \"\\u24C2\": 'M',\n \"\\uFF2D\": 'M',\n \"\\u1E3E\": 'M',\n \"\\u1E40\": 'M',\n \"\\u1E42\": 'M',\n \"\\u2C6E\": 'M',\n \"\\u019C\": 'M',\n \"\\u24C3\": 'N',\n \"\\uFF2E\": 'N',\n \"\\u01F8\": 'N',\n \"\\u0143\": 'N',\n \"\\xD1\": 'N',\n \"\\u1E44\": 'N',\n \"\\u0147\": 'N',\n \"\\u1E46\": 'N',\n \"\\u0145\": 'N',\n \"\\u1E4A\": 'N',\n \"\\u1E48\": 'N',\n \"\\u0220\": 'N',\n \"\\u019D\": 'N',\n \"\\uA790\": 'N',\n \"\\uA7A4\": 'N',\n \"\\u01CA\": 'NJ',\n \"\\u01CB\": 'Nj',\n \"\\u24C4\": 'O',\n \"\\uFF2F\": 'O',\n \"\\xD2\": 'O',\n \"\\xD3\": 'O',\n \"\\xD4\": 'O',\n \"\\u1ED2\": 'O',\n \"\\u1ED0\": 'O',\n \"\\u1ED6\": 'O',\n \"\\u1ED4\": 'O',\n \"\\xD5\": 'O',\n \"\\u1E4C\": 'O',\n \"\\u022C\": 'O',\n \"\\u1E4E\": 'O',\n \"\\u014C\": 'O',\n \"\\u1E50\": 'O',\n \"\\u1E52\": 'O',\n \"\\u014E\": 'O',\n \"\\u022E\": 'O',\n \"\\u0230\": 'O',\n \"\\xD6\": 'O',\n \"\\u022A\": 'O',\n \"\\u1ECE\": 'O',\n \"\\u0150\": 'O',\n \"\\u01D1\": 'O',\n \"\\u020C\": 'O',\n \"\\u020E\": 'O',\n \"\\u01A0\": 'O',\n \"\\u1EDC\": 'O',\n \"\\u1EDA\": 'O',\n \"\\u1EE0\": 'O',\n \"\\u1EDE\": 'O',\n \"\\u1EE2\": 'O',\n \"\\u1ECC\": 'O',\n \"\\u1ED8\": 'O',\n \"\\u01EA\": 'O',\n \"\\u01EC\": 'O',\n \"\\xD8\": 'O',\n \"\\u01FE\": 'O',\n \"\\u0186\": 'O',\n \"\\u019F\": 'O',\n \"\\uA74A\": 'O',\n \"\\uA74C\": 'O',\n \"\\u0152\": 'OE',\n \"\\u01A2\": 'OI',\n \"\\uA74E\": 'OO',\n \"\\u0222\": 'OU',\n \"\\u24C5\": 'P',\n \"\\uFF30\": 'P',\n \"\\u1E54\": 'P',\n \"\\u1E56\": 'P',\n \"\\u01A4\": 'P',\n \"\\u2C63\": 'P',\n \"\\uA750\": 'P',\n \"\\uA752\": 'P',\n \"\\uA754\": 'P',\n \"\\u24C6\": 'Q',\n \"\\uFF31\": 'Q',\n \"\\uA756\": 'Q',\n \"\\uA758\": 'Q',\n \"\\u024A\": 'Q',\n \"\\u24C7\": 'R',\n \"\\uFF32\": 'R',\n \"\\u0154\": 'R',\n \"\\u1E58\": 'R',\n \"\\u0158\": 'R',\n \"\\u0210\": 'R',\n \"\\u0212\": 'R',\n \"\\u1E5A\": 'R',\n \"\\u1E5C\": 'R',\n \"\\u0156\": 'R',\n \"\\u1E5E\": 'R',\n \"\\u024C\": 'R',\n \"\\u2C64\": 'R',\n \"\\uA75A\": 'R',\n \"\\uA7A6\": 'R',\n \"\\uA782\": 'R',\n \"\\u24C8\": 'S',\n \"\\uFF33\": 'S',\n \"\\u1E9E\": 'S',\n \"\\u015A\": 'S',\n \"\\u1E64\": 'S',\n \"\\u015C\": 'S',\n \"\\u1E60\": 'S',\n \"\\u0160\": 'S',\n \"\\u1E66\": 'S',\n \"\\u1E62\": 'S',\n \"\\u1E68\": 'S',\n \"\\u0218\": 'S',\n \"\\u015E\": 'S',\n \"\\u2C7E\": 'S',\n \"\\uA7A8\": 'S',\n \"\\uA784\": 'S',\n \"\\u24C9\": 'T',\n \"\\uFF34\": 'T',\n \"\\u1E6A\": 'T',\n \"\\u0164\": 'T',\n \"\\u1E6C\": 'T',\n \"\\u021A\": 'T',\n \"\\u0162\": 'T',\n \"\\u1E70\": 'T',\n \"\\u1E6E\": 'T',\n \"\\u0166\": 'T',\n \"\\u01AC\": 'T',\n \"\\u01AE\": 'T',\n \"\\u023E\": 'T',\n \"\\uA786\": 'T',\n \"\\uA728\": 'TZ',\n \"\\u24CA\": 'U',\n \"\\uFF35\": 'U',\n \"\\xD9\": 'U',\n \"\\xDA\": 'U',\n \"\\xDB\": 'U',\n \"\\u0168\": 'U',\n \"\\u1E78\": 'U',\n \"\\u016A\": 'U',\n \"\\u1E7A\": 'U',\n \"\\u016C\": 'U',\n \"\\xDC\": 'U',\n \"\\u01DB\": 'U',\n \"\\u01D7\": 'U',\n \"\\u01D5\": 'U',\n \"\\u01D9\": 'U',\n \"\\u1EE6\": 'U',\n \"\\u016E\": 'U',\n \"\\u0170\": 'U',\n \"\\u01D3\": 'U',\n \"\\u0214\": 'U',\n \"\\u0216\": 'U',\n \"\\u01AF\": 'U',\n \"\\u1EEA\": 'U',\n \"\\u1EE8\": 'U',\n \"\\u1EEE\": 'U',\n \"\\u1EEC\": 'U',\n \"\\u1EF0\": 'U',\n \"\\u1EE4\": 'U',\n \"\\u1E72\": 'U',\n \"\\u0172\": 'U',\n \"\\u1E76\": 'U',\n \"\\u1E74\": 'U',\n \"\\u0244\": 'U',\n \"\\u24CB\": 'V',\n \"\\uFF36\": 'V',\n \"\\u1E7C\": 'V',\n \"\\u1E7E\": 'V',\n \"\\u01B2\": 'V',\n \"\\uA75E\": 'V',\n \"\\u0245\": 'V',\n \"\\uA760\": 'VY',\n \"\\u24CC\": 'W',\n \"\\uFF37\": 'W',\n \"\\u1E80\": 'W',\n \"\\u1E82\": 'W',\n \"\\u0174\": 'W',\n \"\\u1E86\": 'W',\n \"\\u1E84\": 'W',\n \"\\u1E88\": 'W',\n \"\\u2C72\": 'W',\n \"\\u24CD\": 'X',\n \"\\uFF38\": 'X',\n \"\\u1E8A\": 'X',\n \"\\u1E8C\": 'X',\n \"\\u24CE\": 'Y',\n \"\\uFF39\": 'Y',\n \"\\u1EF2\": 'Y',\n \"\\xDD\": 'Y',\n \"\\u0176\": 'Y',\n \"\\u1EF8\": 'Y',\n \"\\u0232\": 'Y',\n \"\\u1E8E\": 'Y',\n \"\\u0178\": 'Y',\n \"\\u1EF6\": 'Y',\n \"\\u1EF4\": 'Y',\n \"\\u01B3\": 'Y',\n \"\\u024E\": 'Y',\n \"\\u1EFE\": 'Y',\n \"\\u24CF\": 'Z',\n \"\\uFF3A\": 'Z',\n \"\\u0179\": 'Z',\n \"\\u1E90\": 'Z',\n \"\\u017B\": 'Z',\n \"\\u017D\": 'Z',\n \"\\u1E92\": 'Z',\n \"\\u1E94\": 'Z',\n \"\\u01B5\": 'Z',\n \"\\u0224\": 'Z',\n \"\\u2C7F\": 'Z',\n \"\\u2C6B\": 'Z',\n \"\\uA762\": 'Z',\n \"\\u24D0\": 'a',\n \"\\uFF41\": 'a',\n \"\\u1E9A\": 'a',\n \"\\xE0\": 'a',\n \"\\xE1\": 'a',\n \"\\xE2\": 'a',\n \"\\u1EA7\": 'a',\n \"\\u1EA5\": 'a',\n \"\\u1EAB\": 'a',\n \"\\u1EA9\": 'a',\n \"\\xE3\": 'a',\n \"\\u0101\": 'a',\n \"\\u0103\": 'a',\n \"\\u1EB1\": 'a',\n \"\\u1EAF\": 'a',\n \"\\u1EB5\": 'a',\n \"\\u1EB3\": 'a',\n \"\\u0227\": 'a',\n \"\\u01E1\": 'a',\n \"\\xE4\": 'a',\n \"\\u01DF\": 'a',\n \"\\u1EA3\": 'a',\n \"\\xE5\": 'a',\n \"\\u01FB\": 'a',\n \"\\u01CE\": 'a',\n \"\\u0201\": 'a',\n \"\\u0203\": 'a',\n \"\\u1EA1\": 'a',\n \"\\u1EAD\": 'a',\n \"\\u1EB7\": 'a',\n \"\\u1E01\": 'a',\n \"\\u0105\": 'a',\n \"\\u2C65\": 'a',\n \"\\u0250\": 'a',\n \"\\uA733\": 'aa',\n \"\\xE6\": 'ae',\n \"\\u01FD\": 'ae',\n \"\\u01E3\": 'ae',\n \"\\uA735\": 'ao',\n \"\\uA737\": 'au',\n \"\\uA739\": 'av',\n \"\\uA73B\": 'av',\n \"\\uA73D\": 'ay',\n \"\\u24D1\": 'b',\n \"\\uFF42\": 'b',\n \"\\u1E03\": 'b',\n \"\\u1E05\": 'b',\n \"\\u1E07\": 'b',\n \"\\u0180\": 'b',\n \"\\u0183\": 'b',\n \"\\u0253\": 'b',\n \"\\u24D2\": 'c',\n \"\\uFF43\": 'c',\n \"\\u0107\": 'c',\n \"\\u0109\": 'c',\n \"\\u010B\": 'c',\n \"\\u010D\": 'c',\n \"\\xE7\": 'c',\n \"\\u1E09\": 'c',\n \"\\u0188\": 'c',\n \"\\u023C\": 'c',\n \"\\uA73F\": 'c',\n \"\\u2184\": 'c',\n \"\\u24D3\": 'd',\n \"\\uFF44\": 'd',\n \"\\u1E0B\": 'd',\n \"\\u010F\": 'd',\n \"\\u1E0D\": 'd',\n \"\\u1E11\": 'd',\n \"\\u1E13\": 'd',\n \"\\u1E0F\": 'd',\n \"\\u0111\": 'd',\n \"\\u018C\": 'd',\n \"\\u0256\": 'd',\n \"\\u0257\": 'd',\n \"\\uA77A\": 'd',\n \"\\u01F3\": 'dz',\n \"\\u01C6\": 'dz',\n \"\\u24D4\": 'e',\n \"\\uFF45\": 'e',\n \"\\xE8\": 'e',\n \"\\xE9\": 'e',\n \"\\xEA\": 'e',\n \"\\u1EC1\": 'e',\n \"\\u1EBF\": 'e',\n \"\\u1EC5\": 'e',\n \"\\u1EC3\": 'e',\n \"\\u1EBD\": 'e',\n \"\\u0113\": 'e',\n \"\\u1E15\": 'e',\n \"\\u1E17\": 'e',\n \"\\u0115\": 'e',\n \"\\u0117\": 'e',\n \"\\xEB\": 'e',\n \"\\u1EBB\": 'e',\n \"\\u011B\": 'e',\n \"\\u0205\": 'e',\n \"\\u0207\": 'e',\n \"\\u1EB9\": 'e',\n \"\\u1EC7\": 'e',\n \"\\u0229\": 'e',\n \"\\u1E1D\": 'e',\n \"\\u0119\": 'e',\n \"\\u1E19\": 'e',\n \"\\u1E1B\": 'e',\n \"\\u0247\": 'e',\n \"\\u025B\": 'e',\n \"\\u01DD\": 'e',\n \"\\u24D5\": 'f',\n \"\\uFF46\": 'f',\n \"\\u1E1F\": 'f',\n \"\\u0192\": 'f',\n \"\\uA77C\": 'f',\n \"\\u24D6\": 'g',\n \"\\uFF47\": 'g',\n \"\\u01F5\": 'g',\n \"\\u011D\": 'g',\n \"\\u1E21\": 'g',\n \"\\u011F\": 'g',\n \"\\u0121\": 'g',\n \"\\u01E7\": 'g',\n \"\\u0123\": 'g',\n \"\\u01E5\": 'g',\n \"\\u0260\": 'g',\n \"\\uA7A1\": 'g',\n \"\\u1D79\": 'g',\n \"\\uA77F\": 'g',\n \"\\u24D7\": 'h',\n \"\\uFF48\": 'h',\n \"\\u0125\": 'h',\n \"\\u1E23\": 'h',\n \"\\u1E27\": 'h',\n \"\\u021F\": 'h',\n \"\\u1E25\": 'h',\n \"\\u1E29\": 'h',\n \"\\u1E2B\": 'h',\n \"\\u1E96\": 'h',\n \"\\u0127\": 'h',\n \"\\u2C68\": 'h',\n \"\\u2C76\": 'h',\n \"\\u0265\": 'h',\n \"\\u0195\": 'hv',\n \"\\u24D8\": 'i',\n \"\\uFF49\": 'i',\n \"\\xEC\": 'i',\n \"\\xED\": 'i',\n \"\\xEE\": 'i',\n \"\\u0129\": 'i',\n \"\\u012B\": 'i',\n \"\\u012D\": 'i',\n \"\\xEF\": 'i',\n \"\\u1E2F\": 'i',\n \"\\u1EC9\": 'i',\n \"\\u01D0\": 'i',\n \"\\u0209\": 'i',\n \"\\u020B\": 'i',\n \"\\u1ECB\": 'i',\n \"\\u012F\": 'i',\n \"\\u1E2D\": 'i',\n \"\\u0268\": 'i',\n \"\\u0131\": 'i',\n \"\\u24D9\": 'j',\n \"\\uFF4A\": 'j',\n \"\\u0135\": 'j',\n \"\\u01F0\": 'j',\n \"\\u0249\": 'j',\n \"\\u24DA\": 'k',\n \"\\uFF4B\": 'k',\n \"\\u1E31\": 'k',\n \"\\u01E9\": 'k',\n \"\\u1E33\": 'k',\n \"\\u0137\": 'k',\n \"\\u1E35\": 'k',\n \"\\u0199\": 'k',\n \"\\u2C6A\": 'k',\n \"\\uA741\": 'k',\n \"\\uA743\": 'k',\n \"\\uA745\": 'k',\n \"\\uA7A3\": 'k',\n \"\\u24DB\": 'l',\n \"\\uFF4C\": 'l',\n \"\\u0140\": 'l',\n \"\\u013A\": 'l',\n \"\\u013E\": 'l',\n \"\\u1E37\": 'l',\n \"\\u1E39\": 'l',\n \"\\u013C\": 'l',\n \"\\u1E3D\": 'l',\n \"\\u1E3B\": 'l',\n \"\\u017F\": 'l',\n \"\\u0142\": 'l',\n \"\\u019A\": 'l',\n \"\\u026B\": 'l',\n \"\\u2C61\": 'l',\n \"\\uA749\": 'l',\n \"\\uA781\": 'l',\n \"\\uA747\": 'l',\n \"\\u01C9\": 'lj',\n \"\\u24DC\": 'm',\n \"\\uFF4D\": 'm',\n \"\\u1E3F\": 'm',\n \"\\u1E41\": 'm',\n \"\\u1E43\": 'm',\n \"\\u0271\": 'm',\n \"\\u026F\": 'm',\n \"\\u24DD\": 'n',\n \"\\uFF4E\": 'n',\n \"\\u01F9\": 'n',\n \"\\u0144\": 'n',\n \"\\xF1\": 'n',\n \"\\u1E45\": 'n',\n \"\\u0148\": 'n',\n \"\\u1E47\": 'n',\n \"\\u0146\": 'n',\n \"\\u1E4B\": 'n',\n \"\\u1E49\": 'n',\n \"\\u019E\": 'n',\n \"\\u0272\": 'n',\n \"\\u0149\": 'n',\n \"\\uA791\": 'n',\n \"\\uA7A5\": 'n',\n \"\\u01CC\": 'nj',\n \"\\u24DE\": 'o',\n \"\\uFF4F\": 'o',\n \"\\xF2\": 'o',\n \"\\xF3\": 'o',\n \"\\xF4\": 'o',\n \"\\u1ED3\": 'o',\n \"\\u1ED1\": 'o',\n \"\\u1ED7\": 'o',\n \"\\u1ED5\": 'o',\n \"\\xF5\": 'o',\n \"\\u1E4D\": 'o',\n \"\\u022D\": 'o',\n \"\\u1E4F\": 'o',\n \"\\u014D\": 'o',\n \"\\u1E51\": 'o',\n \"\\u1E53\": 'o',\n \"\\u014F\": 'o',\n \"\\u022F\": 'o',\n \"\\u0231\": 'o',\n \"\\xF6\": 'o',\n \"\\u022B\": 'o',\n \"\\u1ECF\": 'o',\n \"\\u0151\": 'o',\n \"\\u01D2\": 'o',\n \"\\u020D\": 'o',\n \"\\u020F\": 'o',\n \"\\u01A1\": 'o',\n \"\\u1EDD\": 'o',\n \"\\u1EDB\": 'o',\n \"\\u1EE1\": 'o',\n \"\\u1EDF\": 'o',\n \"\\u1EE3\": 'o',\n \"\\u1ECD\": 'o',\n \"\\u1ED9\": 'o',\n \"\\u01EB\": 'o',\n \"\\u01ED\": 'o',\n \"\\xF8\": 'o',\n \"\\u01FF\": 'o',\n \"\\u0254\": 'o',\n \"\\uA74B\": 'o',\n \"\\uA74D\": 'o',\n \"\\u0275\": 'o',\n \"\\u0153\": 'oe',\n \"\\u01A3\": 'oi',\n \"\\u0223\": 'ou',\n \"\\uA74F\": 'oo',\n \"\\u24DF\": 'p',\n \"\\uFF50\": 'p',\n \"\\u1E55\": 'p',\n \"\\u1E57\": 'p',\n \"\\u01A5\": 'p',\n \"\\u1D7D\": 'p',\n \"\\uA751\": 'p',\n \"\\uA753\": 'p',\n \"\\uA755\": 'p',\n \"\\u24E0\": 'q',\n \"\\uFF51\": 'q',\n \"\\u024B\": 'q',\n \"\\uA757\": 'q',\n \"\\uA759\": 'q',\n \"\\u24E1\": 'r',\n \"\\uFF52\": 'r',\n \"\\u0155\": 'r',\n \"\\u1E59\": 'r',\n \"\\u0159\": 'r',\n \"\\u0211\": 'r',\n \"\\u0213\": 'r',\n \"\\u1E5B\": 'r',\n \"\\u1E5D\": 'r',\n \"\\u0157\": 'r',\n \"\\u1E5F\": 'r',\n \"\\u024D\": 'r',\n \"\\u027D\": 'r',\n \"\\uA75B\": 'r',\n \"\\uA7A7\": 'r',\n \"\\uA783\": 'r',\n \"\\u24E2\": 's',\n \"\\uFF53\": 's',\n \"\\xDF\": 's',\n \"\\u015B\": 's',\n \"\\u1E65\": 's',\n \"\\u015D\": 's',\n \"\\u1E61\": 's',\n \"\\u0161\": 's',\n \"\\u1E67\": 's',\n \"\\u1E63\": 's',\n \"\\u1E69\": 's',\n \"\\u0219\": 's',\n \"\\u015F\": 's',\n \"\\u023F\": 's',\n \"\\uA7A9\": 's',\n \"\\uA785\": 's',\n \"\\u1E9B\": 's',\n \"\\u24E3\": 't',\n \"\\uFF54\": 't',\n \"\\u1E6B\": 't',\n \"\\u1E97\": 't',\n \"\\u0165\": 't',\n \"\\u1E6D\": 't',\n \"\\u021B\": 't',\n \"\\u0163\": 't',\n \"\\u1E71\": 't',\n \"\\u1E6F\": 't',\n \"\\u0167\": 't',\n \"\\u01AD\": 't',\n \"\\u0288\": 't',\n \"\\u2C66\": 't',\n \"\\uA787\": 't',\n \"\\uA729\": 'tz',\n \"\\u24E4\": 'u',\n \"\\uFF55\": 'u',\n \"\\xF9\": 'u',\n \"\\xFA\": 'u',\n \"\\xFB\": 'u',\n \"\\u0169\": 'u',\n \"\\u1E79\": 'u',\n \"\\u016B\": 'u',\n \"\\u1E7B\": 'u',\n \"\\u016D\": 'u',\n \"\\xFC\": 'u',\n \"\\u01DC\": 'u',\n \"\\u01D8\": 'u',\n \"\\u01D6\": 'u',\n \"\\u01DA\": 'u',\n \"\\u1EE7\": 'u',\n \"\\u016F\": 'u',\n \"\\u0171\": 'u',\n \"\\u01D4\": 'u',\n \"\\u0215\": 'u',\n \"\\u0217\": 'u',\n \"\\u01B0\": 'u',\n \"\\u1EEB\": 'u',\n \"\\u1EE9\": 'u',\n \"\\u1EEF\": 'u',\n \"\\u1EED\": 'u',\n \"\\u1EF1\": 'u',\n \"\\u1EE5\": 'u',\n \"\\u1E73\": 'u',\n \"\\u0173\": 'u',\n \"\\u1E77\": 'u',\n \"\\u1E75\": 'u',\n \"\\u0289\": 'u',\n \"\\u24E5\": 'v',\n \"\\uFF56\": 'v',\n \"\\u1E7D\": 'v',\n \"\\u1E7F\": 'v',\n \"\\u028B\": 'v',\n \"\\uA75F\": 'v',\n \"\\u028C\": 'v',\n \"\\uA761\": 'vy',\n \"\\u24E6\": 'w',\n \"\\uFF57\": 'w',\n \"\\u1E81\": 'w',\n \"\\u1E83\": 'w',\n \"\\u0175\": 'w',\n \"\\u1E87\": 'w',\n \"\\u1E85\": 'w',\n \"\\u1E98\": 'w',\n \"\\u1E89\": 'w',\n \"\\u2C73\": 'w',\n \"\\u24E7\": 'x',\n \"\\uFF58\": 'x',\n \"\\u1E8B\": 'x',\n \"\\u1E8D\": 'x',\n \"\\u24E8\": 'y',\n \"\\uFF59\": 'y',\n \"\\u1EF3\": 'y',\n \"\\xFD\": 'y',\n \"\\u0177\": 'y',\n \"\\u1EF9\": 'y',\n \"\\u0233\": 'y',\n \"\\u1E8F\": 'y',\n \"\\xFF\": 'y',\n \"\\u1EF7\": 'y',\n \"\\u1E99\": 'y',\n \"\\u1EF5\": 'y',\n \"\\u01B4\": 'y',\n \"\\u024F\": 'y',\n \"\\u1EFF\": 'y',\n \"\\u24E9\": 'z',\n \"\\uFF5A\": 'z',\n \"\\u017A\": 'z',\n \"\\u1E91\": 'z',\n \"\\u017C\": 'z',\n \"\\u017E\": 'z',\n \"\\u1E93\": 'z',\n \"\\u1E95\": 'z',\n \"\\u01B6\": 'z',\n \"\\u0225\": 'z',\n \"\\u0240\": 'z',\n \"\\u2C6C\": 'z',\n \"\\uA763\": 'z',\n \"\\u0386\": \"\\u0391\",\n \"\\u0388\": \"\\u0395\",\n \"\\u0389\": \"\\u0397\",\n \"\\u038A\": \"\\u0399\",\n \"\\u03AA\": \"\\u0399\",\n \"\\u038C\": \"\\u039F\",\n \"\\u038E\": \"\\u03A5\",\n \"\\u03AB\": \"\\u03A5\",\n \"\\u038F\": \"\\u03A9\",\n \"\\u03AC\": \"\\u03B1\",\n \"\\u03AD\": \"\\u03B5\",\n \"\\u03AE\": \"\\u03B7\",\n \"\\u03AF\": \"\\u03B9\",\n \"\\u03CA\": \"\\u03B9\",\n \"\\u0390\": \"\\u03B9\",\n \"\\u03CC\": \"\\u03BF\",\n \"\\u03CD\": \"\\u03C5\",\n \"\\u03CB\": \"\\u03C5\",\n \"\\u03B0\": \"\\u03C5\",\n \"\\u03CE\": \"\\u03C9\",\n \"\\u03C2\": \"\\u03C3\",\n \"\\u2019\": '\\''\n };\n return diacritics;\n });\n S2.define('select2/data/base', ['../utils'], function (Utils) {\n function BaseAdapter($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {// Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {// Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n\n return id;\n };\n\n return BaseAdapter;\n });\n S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n function SelectAdapter($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n var data = Array.prototype.map.call(this.$element[0].querySelectorAll(':checked'), function (selectedElement) {\n return self.item($(selectedElement));\n });\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n data.selected = true; // If data.element is a DOM node, use it instead\n\n if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n data.element.selected = true;\n this.$element.trigger('input').trigger('change');\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n data.element.selected = false;\n this.$element.trigger('input').trigger('change');\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n this.container = container;\n container.on('select', function (params) {\n self.select(params.data);\n });\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n var $options = this.$element.children();\n $options.each(function () {\n if (this.tagName.toLowerCase() !== 'option' && this.tagName.toLowerCase() !== 'optgroup') {\n return;\n }\n\n var $option = $(this);\n var option = self.item($option);\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var normalizedData = this._normalizeItem(data);\n\n normalizedData.element = option; // Override the option's data with the combined data\n\n Utils.StoreData(option, 'data', normalizedData);\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n var child = this.item($child);\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n Utils.StoreData($option[0], 'data', data);\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n return matcher(params, data);\n };\n\n return SelectAdapter;\n });\n S2.define('select2/data/array', ['./select', '../utils', 'jquery'], function (SelectAdapter, Utils, $) {\n function ArrayAdapter($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n var $options = []; // Filter out all items except for the one passed in the argument\n\n function onlyItem(item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]); // Skip items which were pre-loaded, only merge the data\n\n\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n var $newOption = this.option(newData);\n $existingOption.replaceWith($newOption);\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n });\n S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function data(params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function transport(params, success, failure) {\n var $request = $.ajax(params);\n $request.then(success);\n $request.fail(failure);\n return $request;\n }\n };\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request() {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request && ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n });\n S2.define('select2/data/tags', ['jquery'], function ($) {\n function Tags(decorated, $element, options) {\n var tags = options.get('tags');\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper(obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n var checkChildren = option.children != null && !wrapper({\n results: option.children\n }, true);\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n self.addOptions([$option]);\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n });\n S2.define('select2/data/tokenizer', ['jquery'], function ($) {\n function Tokenizer(decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect(data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data); // Check if the data object already exists as a tag\n // Select it if it doesn't\n\n\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n }); // If an existing option wasn't found for it, create the option\n\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n\n self.addOptions([$option]);\n } // Select the item, now that we know there is an option for it\n\n\n select(item);\n }\n\n function select(data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data); // Reset the term to not include the tokenized portion\n\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n });\n S2.define('select2/data/minimumInputLength', [], function () {\n function MinimumInputLength(decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n });\n S2.define('select2/data/maximumInputLength', [], function () {\n function MaximumInputLength(decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n });\n S2.define('select2/data/maximumSelectionLength', [], function () {\n function MaximumSelectionLength(decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected = function (_, successCallback) {\n var self = this;\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n\n if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n });\n S2.define('select2/dropdown', ['jquery', './utils'], function ($, Utils) {\n function Dropdown($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n // Change dropdown classname and markup. @edited\n var $dropdown = $('<span class=\"sui-select-dropdown\">' + '<span class=\"select2-results\"></span>' + '</span>');\n $dropdown.attr('dir', this.options.get('dir'));\n this.$dropdown = $dropdown;\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {// Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {// Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n });\n S2.define('select2/dropdown/search', ['jquery'], function ($) {\n function Search() {}\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n var $search = $('<span class=\"select2-search select2-search--dropdown\">' + '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' + '</span>');\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n $rendered.prepend($search);\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n decorated.call(this, container, $container);\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n }); // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.val('');\n self.$search.trigger('blur');\n });\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n });\n S2.define('select2/dropdown/hidePlaceholder', [], function () {\n function HidePlaceholder(decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n });\n S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n function InfiniteScroll(decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n decorated.call(this, $element, options, dataAdapter);\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(document.documentElement, this.$loadingMore[0]);\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n var params = $.extend({}, {\n page: 1\n }, this.lastParams);\n params.page++;\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $('<li ' + 'class=\"select2-results__option select2-results__option--load-more\"' + 'role=\"option\" aria-disabled=\"true\"></li>');\n var message = this.options.get('translations').get('loadingMore');\n $option.html(message(this.lastParams));\n return $option;\n };\n\n return InfiniteScroll;\n });\n S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n function AttachBody(decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('open', function () {\n self._showDropdown();\n\n self._attachPositioningHandler(container); // Must bind after the results handlers to ensure correct sizing\n\n\n self._bindContainerResultHandlers(container);\n });\n container.on('close', function () {\n self._hideDropdown();\n\n self._detachPositioningHandler(container);\n });\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class')); // Custom SUIselect dropdown. @edited\n\n $dropdown.removeClass('select2');\n $dropdown.addClass('sui-select-dropdown-container--open');\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('<span></span>');\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n this.$dropdownContainer = $container;\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers = function (decorated, container) {\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n container.on('results:all', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('results:append', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('results:message', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('select', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('unselect', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n var self = this;\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler = function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window); // Custom SUIselect dropdown. @edited\n\n var isCurrentlyAbove = this.$dropdown[0].classList.contains('sui-select-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList.contains('sui-select-dropdown--below');\n var newDirection = null;\n var offset = this.$container.offset();\n offset.bottom = offset.top + this.$container.outerHeight(false);\n var container = {\n height: this.$container.outerHeight(false)\n };\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n var css = {\n left: offset.left,\n top: container.bottom\n }; // Determine what the parent element is to use for calculating the offset\n\n var $offsetParent = this.$dropdownParent; // For statically positioned elements, we need to get the element\n // that is determining the offset\n\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if ($.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' || isCurrentlyAbove && newDirection !== 'below') {\n css.top = container.top - parentOffset.top - dropdown.height;\n } // Custom SUIselect dropdown. @edited\n\n\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('sui-select-dropdown--below');\n this.$dropdown[0].classList.remove('sui-select-dropdown--above');\n this.$dropdown[0].classList.add('sui-select-dropdown--' + newDirection);\n this.$container[0].classList.remove('sui-select-container--below');\n this.$container[0].classList.remove('sui-select-container--above');\n this.$container[0].classList.add('sui-select-dropdown-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n\n this._resizeDropdown();\n };\n\n return AttachBody;\n });\n S2.define('select2/dropdown/minimumResultsForSearch', [], function () {\n function countResults(data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n });\n S2.define('select2/dropdown/selectOnClose', ['../utils'], function (Utils) {\n function SelectOnClose() {}\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event; // Don't select an item if the close event was triggered from a select or\n // unselect event\n\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results\n\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data'); // Don't re-select already selected resulte\n\n if (data.element != null && data.element.selected || data.element == null && data.selected) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n });\n S2.define('select2/dropdown/closeOnSelect', [], function () {\n function CloseOnSelect() {}\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent; // Don't close if the control key is being held\n\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n });\n S2.define('select2/dropdown/dropdownCss', ['../utils'], function (Utils) {\n function DropdownCSS() {}\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass('sui-select-dropdown'); // FIX: Make sure \"sui-select-dropdown\" main class does not get erased. @edited\n\n $dropdown.addClass(dropdownCssClass);\n return $dropdown;\n };\n\n return DropdownCSS;\n });\n S2.define('select2/dropdown/tagsSearchHighlight', ['../utils'], function (Utils) {\n function TagsSearchHighlight() {}\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results.find('.select2-results__option--selectable' + ':not(.select2-results__option--selected)');\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n });\n S2.define('select2/i18n/en', [], function () {\n // English\n return {\n errorLoading: function errorLoading() {\n return 'The results could not be loaded.';\n },\n inputTooLong: function inputTooLong(args) {\n var overChars = args.input.length - args.maximum;\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function inputTooShort(args) {\n var remainingChars = args.minimum - args.input.length;\n var message = 'Please enter ' + remainingChars + ' or more characters';\n return message;\n },\n loadingMore: function loadingMore() {\n return 'Loading more results…';\n },\n maximumSelected: function maximumSelected(args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function noResults() {\n return 'No results found';\n },\n searching: function searching() {\n return 'Searching…';\n },\n removeAllItems: function removeAllItems() {\n return 'Remove all items';\n },\n removeItem: function removeItem() {\n return 'Remove item';\n },\n search: function search() {\n return 'Search';\n }\n };\n });\n S2.define('select2/defaults', ['jquery', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/selectionCss', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './dropdown/dropdownCss', './dropdown/tagsSearchHighlight', './i18n/en'], function ($, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, SelectionCSS, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, DropdownCSS, TagsSearchHighlight, EnglishTranslation) {\n function Defaults() {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MinimumInputLength);\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tokenizer);\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, TagsSearchHighlight);\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n }\n\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n } // Add the placeholder mixin if a placeholder was specified\n\n\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, Placeholder);\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionCSS);\n }\n\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\n } // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n\n\n options.language = this._resolveLanguage(options.language); // Always fall back to English since it will always be complete\n\n options.language.push('en');\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n options.translations = this._processTranslations(options.language, options.debug);\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics(text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher(params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n } // Do a recursive check for options with children\n\n\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data); // Check each child of the option\n\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n var matches = matcher(params, child); // If there wasn't a match, remove the object in the array\n\n if (matches == null) {\n match.children.splice(c, 1);\n }\n } // If any children matched, return the new object\n\n\n if (match.children.length > 0) {\n return match;\n } // If there were no matching children, check just the plain object\n\n\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term\n\n if (original.indexOf(term) > -1) {\n return data;\n } // If it doesn't contain the term, don't return anything\n\n\n return null;\n }\n\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function sorter(data) {\n return data;\n },\n templateResult: function templateResult(result) {\n return result.text;\n },\n templateSelection: function templateSelection(selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n var languages = Array.prototype.concat.call(this._resolveLanguage(elementLanguage), this._resolveLanguage(optionLanguage), this._resolveLanguage(defaultLanguage), this._resolveLanguage(parentLanguage));\n options.language = languages;\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn('Select2: The language file for \"' + language + '\" could ' + 'not be automatically loaded. A fallback will be used instead.');\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n return defaults;\n });\n S2.define('select2/options', ['jquery', './defaults', './utils'], function ($, Defaults, Utils) {\n function Options(options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n } // Pre-load all of the attributes which are prefixed with `data-`\n\n\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length); // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n\n var dataValue = Utils.GetData($e[0], dataName); // camelCase the attribute name to match the spec\n\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); // Store the data attribute contents into the dataset since\n\n dataset[camelDataName] = dataValue;\n }\n } // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n\n\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n } // Prefer our internal data cache if it exists\n\n\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n });\n S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n var Select2 = function Select2($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n this.id = this._generateId($element);\n options = options || {};\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this); // Set up the tabindex\n\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1'); // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n this.selection.position(this.$selection, $container);\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n this.dropdown.position(this.$dropdown, $container);\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n this.results.position(this.$results, this.$dropdown); // Bind events\n\n var self = this; // Bind the container to all of the adapters\n\n this._bindAdapters(); // Register any DOM event handlers\n\n\n this._registerDomEvents(); // Register any internal event handlers\n\n\n this._registerDataEvents();\n\n this._registerSelectionEvents();\n\n this._registerDropdownEvents();\n\n this._registerResultsEvents();\n\n this._registerEvents(); // Set the initial state\n\n\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n }); // Hide the original select\n\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true'); // Hide the original select with SUI. @edited\n\n $element.addClass('sui-screen-reader-text'); // Synchronize any monitored attributes\n\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this); // Ensure backwards compatibility with $element.data('select2').\n\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof style !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n\n self._syncS(mutations);\n });\n\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n this.on('keypress', function (evt) {\n var key = evt.which;\n var isMultiSelect = this.$element[0].hasAttribute('multiple');\n\n if (self.isOpen()) {\n if (key === KEYS.ENTER) {\n self.trigger('results:select');\n evt.preventDefault();\n } else if (key === KEYS.SPACE && evt.ctrlKey) {\n self.trigger('results:toggle');\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous');\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next');\n evt.preventDefault();\n } else if (key === KEYS.ESC || key === KEYS.TAB) {\n self.close();\n evt.preventDefault();\n }\n } else if (!isMultiSelect) {\n // Added the functionality to change option on press of up and down arrow. @edited\n if (key === KEYS.ENTER || key === KEYS.SPACE || (key === KEYS.DOWN || key === KEYS.UP) && evt.altKey) {\n self.open();\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n if (undefined != this.$element.find('option:selected').next().val()) {\n this.$element.val(this.$element.find('option:selected').next().val());\n this.$element.trigger('change');\n }\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n if (undefined != this.$element.find('option:selected').prev().val()) {\n this.$element.val(this.$element.find('option:selected').prev().val());\n this.$element.trigger('change');\n }\n\n evt.preventDefault();\n } // Added the functionality to select option based on key press. @edited\n else {\n var selectedValue = this.$element.find('option:selected').text();\n var keyPressed = String.fromCharCode(key).toLowerCase();\n var values = this.$element.find('option').filter(function () {\n var _$$text;\n\n return (_$$text = $(this).text()) === null || _$$text === void 0 ? void 0 : _$$text.toLowerCase().startsWith(keyPressed);\n });\n var arrLength = values.length - 1;\n var elemVal = selectedValue;\n values.each(function (index) {\n if (selectedValue !== '' && selectedValue[0].toLowerCase() === keyPressed) {\n if ($(this).text() === selectedValue && index !== arrLength) {\n elemVal = $(values[index + 1]).val();\n return false;\n }\n\n return;\n }\n\n elemVal = $(this).val();\n return false;\n });\n elemVal !== selectedValue && (self.$element.val(elemVal), self.$element.trigger('change'));\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n\n var self = this; // Only re-pull the data if we think there is a change\n\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n\n\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: evt\n });\n };\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n\n\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n\n\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n }\n\n var data = [];\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n\n this._observer = null;\n this._syncA = null;\n this._syncS = null;\n this.$element.off('.select2');\n this.$element.attr('tabindex', Utils.GetData(this.$element[0], 'old-tabindex')); // Remove SUI screen reader class. @edited\n\n this.$element.removeClass('sui-screen-reader-text');\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $('<span class=\"select2 select2-container\">' + '<span class=\"selection\"></span>' + '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' + '</span>');\n $container.attr('dir', this.options.get('dir'));\n this.$container = $container; // Add SUIselect class to select main div. @edited\n\n this.$container[0].classList.add('sui-select'); // Additional class for themes. @edited\n\n if ('default' !== this.options.get('theme')) {\n this.$container[0].classList.add('sui-select-theme--' + this.options.get('theme'));\n }\n\n Utils.StoreData($container[0], 'element', this.$element);\n return $container;\n };\n\n return Select2;\n });\n S2.define('jquery-mousewheel', ['jquery'], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n });\n /**\n * Rebranding select2 to SUIselect2\n * It does avoid conflicts with other(s) that include select2 manually\n * @edited\n */\n\n S2.define('sui.select2', ['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults', './select2/utils'], function ($, _, Select2, Defaults, Utils) {\n // Rename function. @edited\n if ($.fn.SUIselect2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy']; // Rename function. @edited\n\n $.fn.SUIselect2 = function (options) {\n options = options || {};\n\n if (_typeof(options) === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n var instance = new Select2($(this), instanceOptions);\n });\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n // Rename function on error message. @edited\n console.error('The SUIselect2(\\'' + options + '\\') method was called on an ' + 'element that is not using Select2.');\n }\n\n ret = instance[options].apply(instance, args);\n }); // Check if we should be returning `this`\n\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n\n return ret;\n } else {\n // Rename function on error message. @edited\n throw new Error('Invalid arguments for SUIselect2: ' + options);\n }\n };\n } // Rename function. @edited\n\n\n if ($.fn.SUIselect2.defaults == null) {\n $.fn.SUIselect2.defaults = Defaults; // Rename function. @edited\n }\n\n return Select2;\n }); // Return the AMD loader configuration so it can be used outside of this file\n\n return {\n define: S2.define,\n require: S2.require\n };\n }(); // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n\n\n var select2 = S2.require('sui.select2'); // Rename function. @edited\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n // jQuery.fn.select2.amd = S2;\n // Return the Select2 instance for anyone who is importing it.\n\n\n return select2;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n // Enable strict mode.\n 'use strict'; // Define global SUI object if it doesn't exist.\n\n if ('object' !== _typeof(window.SUI)) {\n window.SUI = {};\n }\n\n SUI.reviews = function (review, reviews, rating) {\n if (reviews <= 0) {\n return;\n }\n\n function init() {\n var stars = Math.round(rating),\n starsBlock = review.find('.sui-reviews__stars')[0],\n i;\n\n for (i = 0; i < stars; i++) {\n starsBlock.innerHTML += '<span class=\"sui-icon-star\" aria-hidden=\"true\"></span> ';\n }\n\n review.find('.sui-reviews-rating').replaceWith(rating);\n review.find('.sui-reviews-customer-count').replaceWith(reviews);\n }\n\n init();\n return this;\n }; // Update the reviews with the live stats.\n\n\n $('.sui-2-12-23 .sui-reviews').each(function () {\n var review = $(this);\n $.ajax({\n url: \"https://api.reviews.co.uk/merchant/reviews?store=wpmudev-org\",\n success: function success(data) {\n SUI.reviews(review, data.stats.reviews, data.stats.average_rating);\n }\n });\n });\n})(jQuery);","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * Shared UI JS libraries. Use only what we need to keep the vendor file size smaller.\n *\n * @package\n */\nrequire( '@wpmudev/shared-ui/dist/js/_src/code-snippet' );\nrequire( '@wpmudev/shared-ui/dist/js/_src/modal-dialog' );\nrequire( '@wpmudev/shared-ui/dist/js/_src/notifications' );\nrequire( '@wpmudev/shared-ui/dist/js/_src/select2.full' );\nrequire( '@wpmudev/shared-ui/dist/js/_src/select2' );\nrequire( '@wpmudev/shared-ui/dist/js/_src/tabs' );\nrequire( '@wpmudev/shared-ui/dist/js/_src/upload' ); // Used on lazy load page (since 3.2.2).\nrequire( '@wpmudev/shared-ui/dist/js/_src/reviews' );\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","$","window","SUI","suiTabs","config","data","type","indexGroup","indexItem","types","groups","activeGroups","activeChildren","activeItems","memory","onClick","groupIndex","itemIndex","setNodes","callback","tab","pane","i","length","children","putActiveClass","classList","remove","add","setOption","key","value","options","tabItems","setDefaults","document","querySelectorAll","tabGroup","paneGroup","addEventListener","bind","this","location","hash","replace","id","init","tabsOverflow","$el","tabs","closest","find","leftButton","rightButton","overflowing","scrollWidth","width","scrollLeft","addClass","removeClass","reachedEnd","offset","newScrollLeft","outerWidth","get","on","animate","tabgroup","tablist","keys","direction","each","e","clickEventListener","event","index","keyCode","which","preventDefault","determineOrientation","keydownEventListener","activateTab","keyupEventListener","inputs","panels","controls","attr","input","next","panel","prop","deactivateTabs","removeAttr","proceed","pressed","target","undefined","focus","switchTabOnArrowPress","currentTab","setCallback","stopPropagation","jQuery","select","escapeJS","string","html","text","formatIcon","container","label","icon","element","toLowerCase","formatIconSelection","formatColor","markup","border","color","formatColorSelection","formatVars","content","val","formatVarsSelection","getParent","getParentId","selectParent","hasSearch","isSmall","hasClass","SUIselect2","dropdownParent","minimumResultsForSearch","dropdownCssClass","initIcon","templateResult","templateSelection","escapeMarkup","initColor","initSearch","minimumInputLength","maximumSelectionLength","initVars","theme","_defineProperty","Object","defineProperty","enumerable","configurable","writable","_this","openNotice","noticeId","noticeMessage","noticeOptions","noticeNode","nodeWrapper","parent","Error","utils","allowedNotices","isObject","isPlainObject","deepMerge","_len","arguments","sources","Array","_key","source","shift","assign","apply","concat","setProperties","incomingOptions","dismiss","show","tooltip","autoclose","timeout","buildDismiss","createElement","className","innerHTML","buildIcon","setAttribute","buildMessage","prepend","buildNotice","append","showNotice","animation","slideDown","trigger","closeNotice","setTimeout","parseInt","fadeIn","slideUp","fadeOut","hide","hideNotice","empty","notice","Utils","Open","self","is","paragraph","Close","btnOpen","btnClose","aria","KeyCode","BACKSPACE","TAB","RETURN","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","item","parentNode","removeChild","isFocusable","tabIndex","getAttribute","disabled","nodeName","href","rel","simulateClick","evt","MouseEvent","bubbles","cancelable","view","dispatchEvent","IgnoreUtilFocusChanges","dialogOpenClass","focusFirstDescendant","childNodes","child","attemptFocus","focusLastDescendant","activeElement","OpenDialogList","getCurrentDialog","closeCurrentDialog","currentDialog","close","handleEscape","Dialog","dialogId","focusAfterClosed","focusFirst","hasOverlayMask","isCloseOnEsc","isAnimated","dialogNode","getElementById","validRoles","trim","split","some","token","role","openEvent","Event","backdropClass","contains","backdropNode","insertBefore","dialogNodev","appendChild","body","preDiv","preNode","onclick","postDiv","postNode","nextSibling","removeListeners","addListeners","push","lastFocus","afterOpenEvent","closeEvent","pop","slides","hasAttribute","newDialogSize","newDialogLabel","getDialogLabel","newDialogDesc","getDialogDesc","removeAttribute","afterCloseEvent","newDialogId","newFocusAfterClosed","newFocusFirst","slide","newSlideId","newSlideFocus","newSlideEntrance","getAllSlides","getNewSlide","trapFocus","removeEventListener","parentElement","openModal","dialogOverlay","closeModal","replaceModal","slideModal","modalDialog","button","buttonOpen","buttonClose","buttonReplace","buttonSlide","overlayMask","modalId","slideId","closeFocus","newFocus","ClipboardJS","pluginName","defaults","copyText","copiedText","SUICodeSnippet","$element","settings","extend","_defaults","_name","_clipboardJs","_clipboardId","wrap","generateUniqueId","after","clearSelection","showTooltip","getClipboardJs","msg","Math","random","toString","substr","destroy","unwrap","fn","suiCodeSnippet","ready","upload","file","files","message","name","filename","imageContainer","lastIndex","lastIndexOf","substring","reader","FileReader","imagePreview","onload","result","readAsDataURL","selectFile","removeFile","isAdvancedUpload","div","uploadArea","droppedFiles","originalEvent","dataTransfer","uploadedFile","change","S2","select2","amd","requirejs","require","define","undef","main","_req","makeMap","handlers","defined","waiting","defining","hasOwn","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","call","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","j","part","baseParts","map","starMap","nodeIdCompat","test","charAt","splice","join","makeRequire","relName","forceSync","args","makeNormalize","makeLoad","depName","callDep","splitPrefix","prefix","indexOf","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","n","pr","p","exports","module","uri","deps","cjsModule","ret","usingExports","callbackType","load","alt","cfg","_defined","_$","console","error","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","argCount","calledConstructor","ctr","displayName","m","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","params","_type","invoke","len","generateChars","chars","floor","func","context","_convertData","originalKey","dataLevel","k","hasScroll","el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","replaceMap","String","match","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","copyNonInternalCssClasses","dest","src","destinationClasses","filter","clazz","sourceClasses","replacements","Results","dataAdapter","render","$results","clear","displayMessage","hideLoading","$message","hideMessages","$options","results","sort","$option","option","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","current","selected","selectedIds","s","showLoading","loading","loadingMore","$loading","attrs","matches","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","template","$children","c","$child","$childrenContainer","$container","isOpen","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","$this","offsetDelta","display","ENTER","SHIFT","CTRL","ALT","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","update","_attachCloseHandler","_detachCloseHandler","$select","off","isEnabled","isDisabled","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","term","css","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","all","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","selectedElement","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","success","failure","$request","ajax","then","fail","_request","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","wrapper","checkChildren","toUpperCase","_removeOldTags","page","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","MinimumInputLength","$e","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","minWidth","appendTo","countResults","MinimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","DropdownCSS","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","search","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","original","amdLanguageBase","autocomplete","dropdownAutoWidth","scrollAfterSelect","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","jquery","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","isMultiSelect","altKey","open","prev","selectedValue","keyPressed","fromCharCode","values","_$$text","startsWith","arrLength","elemVal","_isChangeMutation","addedNodes","removedNodes","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","removeData","thisMethods","instanceOptions","instance","factory","reviews","review","rating","stars","round","starsBlock","stats","average_rating","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com