{"version":3,"file":"js/9316.d27caa3f.js","mappings":";w/CAIA,IAAMA,EAAeC,EAAAA,OAAAA,EACfC,EAAe,WACnB,IACE,OAAOD,OAAAA,WAAAA,IAAAA,EAAAA,IAAAA,MAAAA,6GAAAA,MAAAA,EAAAA,KAAAA,mBAAAA,CAAAA,CAAAA,GACT,CAAE,MAAOE,GACP,MAAO,CAAC,CACV,CACF,CANqB,GAOfC,EAAMC,EAAAA,EAAA,GAAQL,GAAiBE,GAexBI,EAA4B,CACvCC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,UAAU,EACVC,UAAW,UACXC,WAAY,UACZC,WAAY,UACZC,WAAY,CAAC,EACbC,aAAc,IAGHC,EAAyB,SAACC,GAErC,OADAA,EAACZ,EAAAA,EAAA,GAAQC,GAA8BW,GAChC,kBAAAC,OACMD,EAAEV,GAAE,yCAAAW,QACRC,EAAAA,EAAAA,GAAc,YAAaF,EAAEN,UAAWP,GAAO,eAAAc,QAC/CC,EAAAA,EAAAA,GAAc,aAAcF,EAAEL,WAAYR,GAAO,eAAAc,OACjDD,EAAEP,SAAW,8BAAgC,GAAE,sDAAAQ,OACTD,EAAEH,YAAaM,EAAAA,EAAAA,IAAiBH,EAAEH,YAAc,GAAE,SAAAI,OAC5FD,EAAET,MAAK,kGAAAU,QAE0CC,EAAAA,EAAAA,GAAc,eAAgBF,EAAEJ,WAAYT,GAAO,qEAAAc,QAC5CC,EAAAA,EAAAA,GAAc,OAAQF,EAAEN,UAAWP,GAAO,qEAAAc,OACjDD,EAAET,MAAK,wCAGvD,IAAI,GAAAU,OACLD,EAAEP,SACD,6GACA,IAAI,kIAAAQ,OAE4DD,EAAER,KAAI,8BAAAS,OAEvED,EAAEF,aAAY,qBAGrB,mmCC7DA,IACMM,EAAa,CACjBC,KAAM,qBAOaC,EAAc,SAAAC,yRAAAC,CAAAF,EAAAC,GAAA,YAAAE,KAAAH,urBAOjC,SAAAA,EAAaI,GAAS,IAAAC,EAIH,mGAJGC,CAAA,KAAAN,IACpBK,EAAAF,EAAAI,KAAA,KAAMH,EAASN,EAAWC,OACrBS,OAAUH,EAAKD,QAAQK,cAAc,wBAADd,OAlBxB,oBAkB6D,eAE9EU,EAAKK,aAAYL,CACnB,CAiCC,SA/BDL,KAAA,EAAAW,IAAA,aAAAC,MAGA,WAAc,IAAAC,EAAA,KACRC,KAAKN,QACPM,KAAKN,OAAOO,iBAAiB,SAAS,SAACC,GACrCH,EAAKT,QAAQa,UAAUC,IAAI,YAC7B,IAGFJ,KAAKV,QAAQW,iBAAiB,sBAAuBD,KAAKK,sBAAsBC,KAAKN,OACrFA,KAAKV,QAAQW,iBAAiB,kBAAmBD,KAAKK,sBAAsBC,KAAKN,OACjFA,KAAKV,QAAQW,iBAAiB,iBAAkBD,KAAKK,sBAAsBC,KAAKN,OAChFA,KAAKV,QAAQW,iBAAiB,iBAAkBD,KAAKK,sBAAsBC,KAAKN,OAChFA,KAAKV,QAAQW,iBAAiB,gBAAiBD,KAAKK,sBAAsBC,KAAKN,MACjF,GAEA,CAAAH,IAAA,wBAAAC,MAGA,WACME,KAAKV,QAAQa,UAAUI,SAAS,cAClCP,KAAKQ,aAET,GAEA,CAAAX,IAAA,cAAAC,MAGA,WACEE,KAAKV,QAAQmB,WAAWC,YAAYV,KAAKV,QAC3C,0EAACJ,CAAA,CA7CgC,CAASyB,EAAAA,IAgD5CC,EAAAA,EAAAA,GAAkB1B,EAAgBF,EAAWC,KAAMD,k7CC1CnD,IAAMrB,EAAeC,EAAAA,OAAAA,EACfC,EAAe,WACnB,IACE,OAAOD,EAAAA,OAAAA,CACT,CAAE,MAAOE,GACP,MAAO,CAAC,CACV,CACF,CANqB,GAOfC,EAAMC,EAAAA,EAAA,GAAQL,GAAiBE,GAExBgD,EAA2B,CACtC3C,GAAI,EACJ4C,KAAM,GACNC,KAAM,GACN5C,MAAO,GACP6C,SAAU,GACVC,UAAU,EACVC,MAAO,GACPC,mBAAoB,GACpBC,sBAAuB,yrCCvBzB,IAAMzD,EAAeC,EAAAA,OAAAA,EACfC,EAAe,WACnB,IACE,OAAOD,EAAAA,OAAAA,CACT,CAAE,MAAOE,GACP,MAAO,CAAC,CACV,CACF,CANqB,GAOfC,EAAMC,EAAAA,EAAA,GAAQL,GAAiBE,GAExBwD,EAAuB,CAClCnD,GAAI,EACJ6C,KAAM,GACNO,aAAc,GACdC,MAAO,IAGIC,EAAoB,SAAC5C,GAGhC,OAFAA,EAACZ,EAAAA,EAAA,GAAQqD,GAAyBzC,GAE3B,+BAAPC,QAC0BC,EAAAA,EAAAA,GAAc,OAAQF,EAAEmC,MAAQ,UAAWhD,GAAO,KAAAc,OAAID,EAAE0C,aAAY,iCAAAzC,OACpED,EAAEV,GAAE,eAAAW,OACxBD,EAAE2C,MAAME,KAAI,SAACC,GAAI,ODGY,SAAC9C,GAGpC,OAFAA,EAACZ,EAAAA,EAAA,GAAQ6C,GAA6BjC,GAE/B,kGAAPC,OAC8DD,EAAEV,GAAE,6CAAAW,OAC9DD,EAAEkC,KAAO,+BAAiClC,EAAEkC,KAAO,yCAA2C,GAAE,8CAAAjC,QAC5DC,EAAAA,EAAAA,GAAc,kBAAmBF,EAAEmC,MAAQ,UAAWhD,GAAO,MAAAc,OAAKD,EAAET,MAAK,gBAAAU,OAC7GD,EAAEoC,WAAapC,EAAEmC,KAAO,2CAA4CjC,EAAAA,EAAAA,GAAc,qBAAsBF,EAAEmC,MAAQ,UAAWhD,GAAU,KAAOa,EAAEoC,SAAW,SAAW,GAAE,UAAAnC,QACxK8C,EAAAA,EAAAA,GAAuB3D,EAAAA,EAAC,CAAC,EAAI4D,EAAAA,GAA0B,IAAE1D,GAAIU,EAAEV,GAAI2D,KAAM,GAAIC,YAAa,KAAMC,OAAO,EAAMC,QAAQ,EAAMV,aAAc,4BAA6BW,UAAWrD,EAAEwC,yBAAwB,kBAAAvC,QAE7MqD,EAAAA,EAAAA,GAAiBC,OAAOC,OAAO,CAAC,EAAGC,EAAAA,EAAqB,CACxDnE,GAAIU,EAAEV,GACNoE,OAAQ1D,EAAEqC,SACVsB,SAAU,KACVC,gBAAiB,KACjB/D,WAAYG,EAAEuC,mBACdG,aAAc,6BACdJ,MAAOtC,EAAEsC,MACTuB,KAAM,+CAAF5D,QACoCC,EAAAA,EAAAA,GAAc,oBAAqBF,EAAEmC,MAAQ,UAAWhD,GAAO,cAAAc,OACnGD,EAAE8D,UAAY,GAAH7D,OAAMD,EAAE8D,WAAc,GAAE,yBAGtC,WAEL,CC5B8BC,CAAqB3E,EAAC,CAAE+C,KAAMnC,EAAEmC,MAASW,GAAO,IAAEkB,KAAK,IAAG,iBAGxF,unCC5BA,IAAM5D,EAAa,CACjBC,KAAM,oBACN4D,MAAO,IAGHC,EAAe,oBACfC,EAAmB,CACvBC,YAAa,SAAFnE,OAAWiE,EAAY,WAClCG,OAAQ,QAAFpE,OAAUiE,EAAY,cAOTI,EAAc,SAAA/D,yRAAAC,CAAA8D,EAAA/D,GAAA,YAAAE,KAAA6D,urBAOjC,SAAAA,EAAa5D,GAAS,IAAAC,+FAAAC,CAAA,KAAA0D,GACpB3D,EAAAF,EAAAI,KAAA,KAAMH,EAASN,EAAWC,MAC1B,IAAMkE,EAAS,GAKsC,OAJvC5D,EAAKD,QAAQ8D,iBAAiBL,EAAiBC,aACvDK,SAAQ,SAAA3B,GACZyB,EAAOG,KAAK,CAAC5B,EAAM,CAAE6B,MAAO,SAACC,GAAE,OAAKjE,EAAKkE,QAAQD,EAAG,IACtD,IACAE,EAAAA,EAAgBC,aAAaR,EAAQnE,EAAWC,MAAKM,CACvD,CAMC,SANA2D,KAAA,EAAArD,IAAA,UAAAC,MAED,SAAS0D,GACP,IACMtF,EADUsF,EAAGI,cACAC,aAAad,EAAiBE,QACjDjD,KAAKmD,OAAOW,KAAK,aAAc5F,EACjC,0EAACgF,CAAA,CArBgC,CAASvC,EAAAA,IAwB5CC,EAAAA,EAAAA,GAAkBsC,EAAgBlE,EAAWC,KAAMD,4FClD5C,IAAM+E,EAAK,CAChBC,aAAc,iBAGHC,EAAK,CAChBD,aAAc,cAGHE,EAAK,CAChBF,aAAc,iBAGHG,EAAK,CAChBH,aAAc,eAGHI,EAAK,CAChBJ,aAAc,qBAGHK,EAAK,CAChBL,aAAc,eAGHM,EAAK,CAChBN,aAAc,m2BCzBhBO,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAAE,EAAAvC,OAAAwC,UAAAC,EAAAF,EAAAG,eAAAC,EAAA3C,OAAA4C,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA5E,KAAA,EAAAkF,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAC,EAAAf,EAAAD,EAAAE,GAAA,OAAAvC,OAAA4C,eAAAN,EAAAD,EAAA,CAAA1E,MAAA4E,EAAAe,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAlB,EAAAD,EAAA,KAAAgB,EAAA,aAAAf,GAAAe,EAAA,SAAAf,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,CAAA,WAAAkB,EAAAnB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,GAAAA,EAAAG,qBAAAkB,EAAArB,EAAAqB,EAAAX,EAAA/C,OAAA2D,OAAAd,EAAAL,WAAAS,EAAA,IAAAW,EAAAnB,GAAA,WAAAE,EAAAI,EAAA,WAAApF,MAAAkG,EAAAvB,EAAAC,EAAAU,KAAAF,CAAA,UAAAe,EAAAxB,EAAAD,EAAAE,GAAA,WAAAwB,KAAA,SAAAC,IAAA1B,EAAAhF,KAAA+E,EAAAE,GAAA,OAAAD,GAAA,OAAAyB,KAAA,QAAAC,IAAA1B,EAAA,EAAAD,EAAAoB,KAAAA,EAAA,IAAAQ,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAX,IAAA,UAAAY,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAnB,EAAAmB,EAAAzB,GAAA,8BAAAtG,EAAAuD,OAAAyE,eAAAC,EAAAjI,GAAAA,EAAAA,EAAAkI,EAAA,MAAAD,GAAAA,IAAAnC,GAAAE,EAAAnF,KAAAoH,EAAA3B,KAAAyB,EAAAE,GAAA,IAAAE,EAAAL,EAAA/B,UAAAkB,EAAAlB,UAAAxC,OAAA2D,OAAAa,GAAA,SAAAK,EAAAvC,GAAA,0BAAApB,SAAA,SAAAmB,GAAAgB,EAAAf,EAAAD,GAAA,SAAAC,GAAA,YAAAwC,QAAAzC,EAAAC,EAAA,gBAAAyC,EAAAzC,EAAAD,GAAA,SAAA2C,EAAAzC,EAAAI,EAAAE,EAAAE,GAAA,IAAAE,EAAAa,EAAAxB,EAAAC,GAAAD,EAAAK,GAAA,aAAAM,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAC,EAAAd,EAAAxF,MAAA,OAAAsG,GAAA,UAAAgB,EAAAhB,IAAAxB,EAAAnF,KAAA2G,EAAA,WAAA5B,EAAA6C,QAAAjB,EAAAkB,SAAAC,MAAA,SAAA9C,GAAA0C,EAAA,OAAA1C,EAAAO,EAAAE,EAAA,aAAAT,GAAA0C,EAAA,QAAA1C,EAAAO,EAAAE,EAAA,IAAAV,EAAA6C,QAAAjB,GAAAmB,MAAA,SAAA9C,GAAAa,EAAAxF,MAAA2E,EAAAO,EAAAM,EAAA,aAAAb,GAAA,OAAA0C,EAAA,QAAA1C,EAAAO,EAAAE,EAAA,IAAAA,EAAAE,EAAAe,IAAA,KAAAzB,EAAAI,EAAA,gBAAAhF,MAAA,SAAA2E,EAAAG,GAAA,SAAA4C,IAAA,WAAAhD,GAAA,SAAAA,EAAAE,GAAAyC,EAAA1C,EAAAG,EAAAJ,EAAAE,EAAA,WAAAA,EAAAA,EAAAA,EAAA6C,KAAAC,EAAAA,GAAAA,GAAA,aAAAxB,EAAAxB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAAE,GAAA,GAAAJ,IAAAwB,EAAA,UAAAmB,MAAA,mCAAA3C,IAAAyB,EAAA,cAAAvB,EAAA,MAAAE,EAAA,OAAApF,MAAA2E,EAAAiD,MAAA,OAAA9C,EAAA+C,OAAA3C,EAAAJ,EAAAuB,IAAAjB,IAAA,KAAAE,EAAAR,EAAAgD,SAAA,GAAAxC,EAAA,KAAAE,EAAAuC,EAAAzC,EAAAR,GAAA,GAAAU,EAAA,IAAAA,IAAAkB,EAAA,gBAAAlB,CAAA,cAAAV,EAAA+C,OAAA/C,EAAAkD,KAAAlD,EAAAmD,MAAAnD,EAAAuB,SAAA,aAAAvB,EAAA+C,OAAA,IAAA7C,IAAAsB,EAAA,MAAAtB,EAAAyB,EAAA3B,EAAAuB,IAAAvB,EAAAoD,kBAAApD,EAAAuB,IAAA,gBAAAvB,EAAA+C,QAAA/C,EAAAqD,OAAA,SAAArD,EAAAuB,KAAArB,EAAAwB,EAAA,IAAAK,EAAAV,EAAAzB,EAAAE,EAAAE,GAAA,cAAA+B,EAAAT,KAAA,IAAApB,EAAAF,EAAA8C,KAAAnB,EAAAF,EAAAM,EAAAR,MAAAK,EAAA,gBAAA1G,MAAA6G,EAAAR,IAAAuB,KAAA9C,EAAA8C,KAAA,WAAAf,EAAAT,OAAApB,EAAAyB,EAAA3B,EAAA+C,OAAA,QAAA/C,EAAAuB,IAAAQ,EAAAR,IAAA,YAAA0B,EAAArD,EAAAE,GAAA,IAAAE,EAAAF,EAAAiD,OAAA7C,EAAAN,EAAAW,SAAAP,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAAkD,SAAA,eAAAhD,GAAAJ,EAAAW,SAAA+C,SAAAxD,EAAAiD,OAAA,SAAAjD,EAAAyB,IAAA1B,EAAAoD,EAAArD,EAAAE,GAAA,UAAAA,EAAAiD,SAAA,WAAA/C,IAAAF,EAAAiD,OAAA,QAAAjD,EAAAyB,IAAA,IAAAgC,UAAA,oCAAAvD,EAAA,aAAA4B,EAAA,IAAAxB,EAAAiB,EAAAnB,EAAAN,EAAAW,SAAAT,EAAAyB,KAAA,aAAAnB,EAAAkB,KAAA,OAAAxB,EAAAiD,OAAA,QAAAjD,EAAAyB,IAAAnB,EAAAmB,IAAAzB,EAAAkD,SAAA,KAAApB,EAAA,IAAAtB,EAAAF,EAAAmB,IAAA,OAAAjB,EAAAA,EAAAwC,MAAAhD,EAAAF,EAAA4D,YAAAlD,EAAApF,MAAA4E,EAAA2D,KAAA7D,EAAA8D,QAAA,WAAA5D,EAAAiD,SAAAjD,EAAAiD,OAAA,OAAAjD,EAAAyB,IAAA1B,GAAAC,EAAAkD,SAAA,KAAApB,GAAAtB,GAAAR,EAAAiD,OAAA,QAAAjD,EAAAyB,IAAA,IAAAgC,UAAA,oCAAAzD,EAAAkD,SAAA,KAAApB,EAAA,UAAA+B,EAAA9D,GAAA,IAAAD,EAAA,CAAAgE,OAAA/D,EAAA,SAAAA,IAAAD,EAAAiE,SAAAhE,EAAA,SAAAA,IAAAD,EAAAkE,WAAAjE,EAAA,GAAAD,EAAAmE,SAAAlE,EAAA,SAAAmE,WAAAtF,KAAAkB,EAAA,UAAAqE,EAAApE,GAAA,IAAAD,EAAAC,EAAAqE,YAAA,GAAAtE,EAAA0B,KAAA,gBAAA1B,EAAA2B,IAAA1B,EAAAqE,WAAAtE,CAAA,UAAAuB,EAAAtB,GAAA,KAAAmE,WAAA,EAAAJ,OAAA,SAAA/D,EAAApB,QAAAkF,EAAA,WAAAQ,OAAA,YAAAjC,EAAAtC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAAU,GAAA,GAAAR,EAAA,OAAAA,EAAAjF,KAAA+E,GAAA,sBAAAA,EAAA6D,KAAA,OAAA7D,EAAA,IAAAwE,MAAAxE,EAAAyE,QAAA,KAAAnE,GAAA,EAAAE,EAAA,SAAAqD,IAAA,OAAAvD,EAAAN,EAAAyE,QAAA,GAAArE,EAAAnF,KAAA+E,EAAAM,GAAA,OAAAuD,EAAAvI,MAAA0E,EAAAM,GAAAuD,EAAAX,MAAA,EAAAW,EAAA,OAAAA,EAAAvI,MAAA2E,EAAA4D,EAAAX,MAAA,EAAAW,CAAA,SAAArD,EAAAqD,KAAArD,CAAA,YAAAmD,UAAAf,EAAA5C,GAAA,2BAAAiC,EAAA9B,UAAA+B,EAAA5B,EAAAiC,EAAA,eAAAjH,MAAA4G,EAAAhB,cAAA,IAAAZ,EAAA4B,EAAA,eAAA5G,MAAA2G,EAAAf,cAAA,IAAAe,EAAAyC,YAAA1D,EAAAkB,EAAApB,EAAA,qBAAAd,EAAA2E,oBAAA,SAAA1E,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAA2E,YAAA,QAAA5E,IAAAA,IAAAiC,GAAA,uBAAAjC,EAAA0E,aAAA1E,EAAAvF,MAAA,EAAAuF,EAAA6E,KAAA,SAAA5E,GAAA,OAAAtC,OAAAmH,eAAAnH,OAAAmH,eAAA7E,EAAAiC,IAAAjC,EAAA8E,UAAA7C,EAAAlB,EAAAf,EAAAa,EAAA,sBAAAb,EAAAE,UAAAxC,OAAA2D,OAAAiB,GAAAtC,CAAA,EAAAD,EAAAgF,MAAA,SAAA/E,GAAA,OAAA6C,QAAA7C,EAAA,EAAAuC,EAAAE,EAAAvC,WAAAa,EAAA0B,EAAAvC,UAAAS,GAAA,0BAAAZ,EAAA0C,cAAAA,EAAA1C,EAAAiF,MAAA,SAAAhF,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,IAAAA,EAAA0E,SAAA,IAAAxE,EAAA,IAAAgC,EAAAtB,EAAAnB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAA2E,oBAAAzE,GAAAQ,EAAAA,EAAAmD,OAAAd,MAAA,SAAA9C,GAAA,OAAAA,EAAAiD,KAAAjD,EAAA3E,MAAAoF,EAAAmD,MAAA,KAAArB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA7B,GAAA,0BAAAM,EAAAuB,EAAA,qDAAAvC,EAAAmF,KAAA,SAAAlF,GAAA,IAAAD,EAAArC,OAAAsC,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAApB,KAAAsB,GAAA,OAAAF,EAAAkF,UAAA,SAAAvB,IAAA,KAAA3D,EAAAuE,QAAA,KAAAxE,EAAAC,EAAAmF,MAAA,GAAApF,KAAAD,EAAA,OAAA6D,EAAAvI,MAAA2E,EAAA4D,EAAAX,MAAA,EAAAW,CAAA,QAAAA,EAAAX,MAAA,EAAAW,CAAA,GAAA7D,EAAAsC,OAAAA,EAAAf,EAAApB,UAAA,CAAAyE,YAAArD,EAAAgD,MAAA,SAAAvE,GAAA,QAAAsF,KAAA,OAAAzB,KAAA,OAAAP,KAAA,KAAAC,MAAAtD,EAAA,KAAAiD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAAxB,IAAA1B,EAAA,KAAAmE,WAAAvF,QAAAwF,IAAArE,EAAA,QAAAE,KAAA,WAAAA,EAAAqF,OAAA,IAAAnF,EAAAnF,KAAA,KAAAiF,KAAAsE,OAAAtE,EAAAsF,MAAA,WAAAtF,GAAAD,EAAA,EAAAwF,KAAA,gBAAAvC,MAAA,MAAAjD,EAAA,KAAAmE,WAAA,GAAAE,WAAA,aAAArE,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,YAAA+D,IAAA,EAAAlC,kBAAA,SAAAxD,GAAA,QAAAkD,KAAA,MAAAlD,EAAA,IAAAE,EAAA,cAAAyF,EAAAvF,EAAAE,GAAA,OAAAI,EAAAgB,KAAA,QAAAhB,EAAAiB,IAAA3B,EAAAE,EAAA2D,KAAAzD,EAAAE,IAAAJ,EAAAiD,OAAA,OAAAjD,EAAAyB,IAAA1B,KAAAK,CAAA,SAAAA,EAAA,KAAA8D,WAAAK,OAAA,EAAAnE,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA4D,WAAA9D,GAAAI,EAAAF,EAAA8D,WAAA,YAAA9D,EAAAwD,OAAA,OAAA2B,EAAA,UAAAnF,EAAAwD,QAAA,KAAAsB,KAAA,KAAA1E,EAAAR,EAAAnF,KAAAuF,EAAA,YAAAM,EAAAV,EAAAnF,KAAAuF,EAAA,iBAAAI,GAAAE,EAAA,SAAAwE,KAAA9E,EAAAyD,SAAA,OAAA0B,EAAAnF,EAAAyD,UAAA,WAAAqB,KAAA9E,EAAA0D,WAAA,OAAAyB,EAAAnF,EAAA0D,WAAA,SAAAtD,GAAA,QAAA0E,KAAA9E,EAAAyD,SAAA,OAAA0B,EAAAnF,EAAAyD,UAAA,YAAAnD,EAAA,UAAAmC,MAAA,kDAAAqC,KAAA9E,EAAA0D,WAAA,OAAAyB,EAAAnF,EAAA0D,WAAA,KAAAT,OAAA,SAAAxD,EAAAD,GAAA,QAAAE,EAAA,KAAAkE,WAAAK,OAAA,EAAAvE,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA8D,WAAAlE,GAAA,GAAAI,EAAA0D,QAAA,KAAAsB,MAAAlF,EAAAnF,KAAAqF,EAAA,oBAAAgF,KAAAhF,EAAA4D,WAAA,KAAA1D,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAwD,QAAAhE,GAAAA,GAAAQ,EAAA0D,aAAA1D,EAAA,UAAAE,EAAAF,EAAAA,EAAA8D,WAAA,UAAA5D,EAAAgB,KAAAzB,EAAAS,EAAAiB,IAAA3B,EAAAQ,GAAA,KAAA2C,OAAA,YAAAU,KAAArD,EAAA0D,WAAAlC,GAAA,KAAA4D,SAAAlF,EAAA,EAAAkF,SAAA,SAAA3F,EAAAD,GAAA,aAAAC,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,gBAAA1B,EAAAyB,MAAA,aAAAzB,EAAAyB,KAAA,KAAAmC,KAAA5D,EAAA0B,IAAA,WAAA1B,EAAAyB,MAAA,KAAAgE,KAAA,KAAA/D,IAAA1B,EAAA0B,IAAA,KAAAwB,OAAA,cAAAU,KAAA,kBAAA5D,EAAAyB,MAAA1B,IAAA,KAAA6D,KAAA7D,GAAAgC,CAAA,EAAA6D,OAAA,SAAA5F,GAAA,QAAAD,EAAA,KAAAoE,WAAAK,OAAA,EAAAzE,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAkE,WAAApE,GAAA,GAAAE,EAAAgE,aAAAjE,EAAA,YAAA2F,SAAA1F,EAAAoE,WAAApE,EAAAiE,UAAAE,EAAAnE,GAAA8B,CAAA,GAAA8D,MAAA,SAAA7F,GAAA,QAAAD,EAAA,KAAAoE,WAAAK,OAAA,EAAAzE,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAkE,WAAApE,GAAA,GAAAE,EAAA8D,SAAA/D,EAAA,KAAAG,EAAAF,EAAAoE,WAAA,aAAAlE,EAAAsB,KAAA,KAAApB,EAAAF,EAAAuB,IAAA0C,EAAAnE,EAAA,QAAAI,CAAA,YAAA2C,MAAA,0BAAA8C,cAAA,SAAA/F,EAAAE,EAAAE,GAAA,YAAAgD,SAAA,CAAAzC,SAAA2B,EAAAtC,GAAA4D,WAAA1D,EAAA4D,QAAA1D,GAAA,cAAA+C,SAAA,KAAAxB,IAAA1B,GAAA+B,CAAA,GAAAhC,CAAA,UAAAgG,EAAAC,EAAApD,EAAAqD,EAAAC,EAAAC,EAAA/K,EAAAsG,GAAA,QAAAjG,EAAAuK,EAAA5K,GAAAsG,GAAArG,EAAAI,EAAAJ,KAAA,OAAAhC,GAAA,YAAA4M,EAAA5M,EAAA,CAAAoC,EAAAwH,KAAAL,EAAAvH,GAAA4J,QAAArC,QAAAvH,GAAAyH,KAAAoD,EAAAC,EAAA,UAAAC,EAAAC,GAAA,sBAAAC,EAAA,KAAAC,EAAAC,UAAA,WAAAvB,SAAA,SAAArC,EAAAqD,GAAA,IAAAD,EAAAK,EAAAI,MAAAH,EAAAC,GAAA,SAAAL,EAAA7K,GAAA0K,EAAAC,EAAApD,EAAAqD,EAAAC,EAAAC,EAAA,OAAA9K,EAAA,UAAA8K,EAAAO,GAAAX,EAAAC,EAAApD,EAAAqD,EAAAC,EAAAC,EAAA,QAAAO,EAAA,CAAAR,OAAAS,EAAA,cAAAC,EAAAvG,EAAAwG,GAAA,GAAAxG,EAAA,qBAAAA,EAAA,OAAAyG,EAAAzG,EAAAwG,GAAA,IAAA1G,EAAAzC,OAAAwC,UAAA6G,SAAA/L,KAAAqF,GAAAkF,MAAA,uBAAApF,GAAAE,EAAAsE,cAAAxE,EAAAE,EAAAsE,YAAAnK,MAAA,QAAA2F,GAAA,QAAAA,EAAA6G,MAAAC,KAAA5G,GAAA,cAAAF,GAAA,2CAAA+G,KAAA/G,GAAA2G,EAAAzG,EAAAwG,QAAA,YAAAC,EAAAK,EAAAC,IAAA,MAAAA,GAAAA,EAAAD,EAAA3C,UAAA4C,EAAAD,EAAA3C,QAAA,QAAAjE,EAAA,EAAA8G,EAAA,IAAAL,MAAAI,GAAA7G,EAAA6G,EAAA7G,IAAA8G,EAAA9G,GAAA4G,EAAA5G,GAAA,OAAA8G,CAAA,UAAAC,EAAAvH,EAAAE,GAAA,IAAAD,EAAAtC,OAAAwH,KAAAnF,GAAA,GAAArC,OAAA6J,sBAAA,KAAAlH,EAAA3C,OAAA6J,sBAAAxH,GAAAE,IAAAI,EAAAA,EAAAmH,QAAA,SAAAvH,GAAA,OAAAvC,OAAA+J,yBAAA1H,EAAAE,GAAAe,UAAA,KAAAhB,EAAAnB,KAAA4H,MAAAzG,EAAAK,EAAA,QAAAL,CAAA,UAAAzG,EAAAwG,GAAA,QAAAE,EAAA,EAAAA,EAAAuG,UAAAhC,OAAAvE,IAAA,KAAAD,EAAA,MAAAwG,UAAAvG,GAAAuG,UAAAvG,GAAA,GAAAA,EAAA,EAAAqH,EAAA5J,OAAAsC,IAAA,GAAApB,SAAA,SAAAqB,GAAA,IAAAyH,EAAAtM,EAAAC,EAAAqM,EAAA3H,EAAA3E,EAAA6E,EAAA5E,EAAA2E,EAAAC,IAAA7E,EAAAuM,EAAAvM,MAAAsM,EAAAhK,OAAA4C,eAAAoH,EAAAtM,EAAA,CAAAC,MAAAA,EAAA2F,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAwG,EAAAtM,GAAAC,CAAA,IAAAqC,OAAAkK,0BAAAlK,OAAAmK,iBAAA9H,EAAArC,OAAAkK,0BAAA5H,IAAAsH,EAAA5J,OAAAsC,IAAApB,SAAA,SAAAqB,GAAAvC,OAAA4C,eAAAP,EAAAE,EAAAvC,OAAA+J,yBAAAzH,EAAAC,GAAA,WAAAF,CAAA,UAAA+H,EAAAC,EAAA3J,GAAA,QAAAmC,EAAA,EAAAA,EAAAnC,EAAAoG,OAAAjE,IAAA,KAAAyH,EAAA5J,EAAAmC,GAAAyH,EAAAhH,WAAAgH,EAAAhH,aAAA,EAAAgH,EAAA/G,cAAA,YAAA+G,IAAAA,EAAA9G,UAAA,GAAAxD,OAAA4C,eAAAyH,EAAAJ,EAAAK,EAAA5M,KAAA4M,EAAA,WAAAL,EAAAjG,GAAA,IAAAtG,EAAA,SAAA6M,EAAAC,GAAA,cAAAvF,EAAAsF,IAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAAzH,OAAA4H,aAAA,QAAAzB,IAAAwB,EAAA,KAAAE,EAAAF,EAAAnN,KAAAiN,EAAAC,UAAA,cAAAvF,EAAA0F,GAAA,OAAAA,EAAA,UAAA3E,UAAA,uDAAA4E,OAAAL,EAAA,CAAAM,CAAA7G,GAAA,iBAAAiB,EAAAvH,GAAAA,EAAAkN,OAAAlN,EAAA,CAiBA,IAAMoN,GAAgBC,EAAAA,EAAAA,GAAS,sBAADrO,OAAuBsO,EAAAA,EAAQ,YACvDC,GAAmBF,EAAAA,EAAAA,GAAS,sBAADrO,OAAuBsO,EAAAA,EAAQ,kBAE1DE,EAAiBC,OAAOC,SAAW,WAAY,IAAID,OAAOC,QAAQ,IAAMD,OAAOE,MAAQC,EAAAA,MACvFC,EAAe9P,EAAQ,MAG7BA,EAAQ,OAER,IAAMkF,EAAe,iBAEfC,EAAmB,CACvB4K,QAAS,SAAF9O,OAAWiE,EAAY,cAC9B8K,WAAY,QAAF/O,OAAUiE,EAAY,iBAChC+K,eAAgB,QAAFhP,OAAUiE,EAAY,sBACpC5B,MAAO,cAGH4M,EAAalQ,EAAQ,KAiDrBmQ,EAAW,CACfC,KAAM,IAAIC,EAAAA,EAAW,IACrBC,IAAK,KACLC,eAAgB,KAChBC,UAAW,CAAC,EACZC,UAAW,CACTC,YAAa,UACbC,QAAS,CACPC,OAAQ,qBAGZC,eAAe,EACfC,iBAAkB,GAClBC,UAAW,KACXC,MAAO,IACPC,SAAU,EACVC,WAAY,KACZC,kBAAmB,GACnBC,mBAAmB,EACnBC,sBAAuB,KACvBC,OAAO,EACPC,UAAW,QACXC,UAAW,QACXxB,WAAY,KACZC,eAAgB,KAChBwB,gBAAiB,yBACjBC,kBAAmB,eAMAC,EAAY,SAAAC,EAAAC,EAAAC,GAQ/B,SAAAH,EAAajQ,GAAuB,IAAAC,EAAA,KAAdoQ,EAAO1E,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,GA5HnC,SAAA2E,EAAAC,GAAA,KAAAD,aAAAC,GAAA,UAAA1H,UAAA,qCA4HoC3I,CAAA,KAAA+P,GAChCvP,KAAKV,QAAUA,EACfU,KAAKmD,OAAS,IAAIuK,EAClB1N,KAAK2P,QAAO3R,EAAAA,EAAA,GAAQ+P,GAAa4B,GAGjC3P,KAAK2P,QAAQ/B,WAAa5N,KAAKV,QAAQuE,aAAad,EAAiB6K,aAAe5N,KAAK2P,QAAQ/B,WACjG5N,KAAK2P,QAAQ9B,eACX7N,KAAKV,QAAQuE,aAAad,EAAiB8K,iBAAmB7N,KAAK2P,QAAQ9B,eAG7E7N,KAAK8P,QAAU9P,KAAK+P,cAGpB/P,KAAK2N,QAAU3N,KAAKV,QAAQK,cAAcoD,EAAiB4K,SAC3D3N,KAAKgQ,WAAahQ,KAAK2N,QAAQ,aAC/B3N,KAAKiQ,aAAejQ,KAAK2N,QAAQhO,cAAc,SAG3CK,KAAK2P,QAAQhB,WAAa3O,KAAK2P,QAAQhB,UAAUuB,QACnDlQ,KAAK2O,UAAY3O,KAAK2O,WAAa3O,KAAK2P,QAAQhB,UAChD3O,KAAKmQ,sBAAsBnQ,KAAK2P,QAAQhB,UAAUuB,MAAOlQ,KAAK2O,WAAWyB,8BACvEpQ,KAAK2O,YAKT3O,KAAK2O,UAAY3O,KAAK2O,WAAa3O,KAAKqQ,wBACxCrQ,KAAKsQ,cAAgB,KACrBtQ,KAAKuQ,cAAgB,KACrBvQ,KAAKwQ,YAAcxQ,KAAK2P,QAAQT,MAAQ,CAAC,OAAI9D,EAC7CpL,KAAKyQ,UAAYzQ,KAAK2P,QAAQT,MAAQ,CAAC,OAAI9D,EAG3CpL,KAAK0Q,sBAAuBC,EAAAA,EAAAA,IAAS,kBAAMpR,EAAKqR,eAAe,GAAE5Q,KAAK2P,QAAQf,OAG9E5O,KAAKgQ,WAAW7M,OAAO0N,GAAG,UAAW7Q,KAAK8Q,UAAW9Q,MACrDA,KAAKgQ,WAAW7M,OAAO0N,GAAG,QAAS7Q,KAAK+Q,QAAS/Q,MAC5CA,KAAK2P,QAAQqB,sBAAsBhR,KAAKgQ,WAAW7M,OAAO0N,GAAG,OAAQ7Q,KAAKiR,OAAQjR,MACvFA,KAAKgQ,WAAW7M,OAAO0N,GAAG,QAAS7Q,KAAKkR,QAASlR,MACjDA,KAAKgQ,WAAW7M,OAAO0N,GAAG,QAAS7Q,KAAKmR,eAAgBnR,MAGxDV,EAAQwD,GAAgB,CACtBxD,QAASU,KAAKV,QACd6D,OAAQnD,KAAKmD,OACbwK,QAAS3N,KAAK2N,QACdyD,WAAYpR,KAAKoR,WAAW9Q,KAAKN,MACjCqR,OAAQrR,KAAKqR,OAAO/Q,KAAKN,OAG3BsR,EAAAA,EAAiBC,wBAAwBzO,EAAc9C,KAAKmD,OAAMnF,EAAA,GAC5DgC,KAAKV,QAAQkS,aAAazO,EAAiB7B,QAAU,CACvDA,MAAOlB,KAAKV,QAAQb,WAAWsE,EAAiB7B,OAAOpB,QAG7D,CArLF,IAAA+P,EAAA4B,EA2oCG,OA3oCH5B,EAuLEN,EAvLFkC,EAuLE,EAAA5R,IAAA,aAAAC,MAOA,SAAY4R,GAUV,OATA1R,KAAK2P,QAAO3R,EAAAA,EAAA,GAAQgC,KAAK2P,SAAY+B,GAEjC1R,KAAK2P,QAAQhB,WACf3O,KAAKmQ,sBAAsBnQ,KAAK2P,QAAQhB,UAAUuB,MAAOlQ,KAAK2P,QAAQhB,WAAWyB,8BAC/EpQ,KAAK2P,QAAQhB,WAGjB3O,KAAKwQ,YAAcxQ,KAAK2P,QAAQT,MAAQ,CAAC,OAAI9D,EAC7CpL,KAAKyQ,UAAYzQ,KAAK2P,QAAQT,MAAQ,CAAC,OAAI9D,EACpCpL,IACT,GAEA,CAAAH,IAAA,SAAAC,MAGA,WACE4D,EAAAA,EAAgBC,aAAa3D,KAAK2R,qBAAsB7O,GACxD9C,KAAK4R,8BACE5R,KAAK6R,sBACL7R,KAAKV,QAAQwD,EACtB,GAEA,CAAAjD,IAAA,cAAAC,MAGA,WACE,IAAMgS,EAAsBC,SAASpS,cAAc,gCAADd,OAAiCmB,KAAKV,QAAQpB,GAAE,OAC9F8T,EAAmB,KACvB,IACEA,EAAmBC,KAAKC,MAAMJ,EAAoBK,YACpD,CAAE,MAAOhH,GAAM,CAEf,OAAAnN,EAAAA,EAAAA,EAAA,GAAYiP,GAAkBG,GAAsB4E,GAAoB,CAAC,EAC3E,GAQA,CAAAnS,IAAA,wBAAAC,MAKA,WACE,IAAMsS,EAAMpS,KAAKqS,gBAAkBrS,KAAK2P,QAAQ2C,oBAAsBtS,KAAK2P,QAAQd,SAC7EhN,EAAO7B,KAAKiQ,aAAanQ,MAAMmJ,QAAUmJ,EAAMpS,KAAKiQ,aAAanQ,MAAMyS,OAAS,GACtF,OAAOvS,KAAKwS,qBAAqB3Q,EACnC,GAEA,CAAAhC,IAAA,uBAAAC,MAOA,SAAsB+B,GACpB,MAAO,CACLA,KAAAA,EACAqO,MAAOlQ,KAAK2P,QAAQ3B,KAAKyE,UAAUzS,KAAK2P,QAAQjB,iBAAiB,GAAI7M,IAAS,KAC9E6Q,cAAe,KAEnB,GAEA,CAAA7S,IAAA,wBAAAC,MAOA,SAAuBoQ,GACrB,MAAO,CACLrO,KAAMqO,EAAMrM,aAAa7D,KAAK2P,QAAQjB,iBAAiB,IAAIlD,WAC3D0E,MAAAA,EACAwC,cAAe,KAEnB,GAEA,CAAA7S,IAAA,wBAAAC,MAQA,SAAuBoQ,GAAuC,IAAhCvB,EAAS1D,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAGjL,KAAKsQ,cAC7C,OAAI3B,GAAaA,EAAUuB,QAAUA,IACrCvB,EAAYuB,EACRlQ,KAAK2S,sBAAsBzC,GAC3B,CACErO,KAAM,GACNqO,MAAO,KACPwC,cAAe,OAN8B1S,IASrD,GAEA,CAAAH,IAAA,4BAAAC,MAQA,WAA2D,IAAhC6O,EAAS1D,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAGjL,KAAKsQ,cAC1C,IAAK3B,IAAcA,EAAUuB,MAAO,OAAOlQ,KAC3C,IAAM0S,EAAgB1S,KAAK6R,eAAelS,cAAc,cAADd,OAAe8P,EAAUuB,MAAM0C,IAAG,QAAS,KAClG,OAAKF,GACLA,EAAcvS,UAAUC,IAAIJ,KAAK2P,QAAQL,mBACzCX,EAAU+D,cAAgBA,EACnB1S,MAHoBA,IAI7B,GAEA,CAAAH,IAAA,8BAAAC,MAOA,WAA6D,IAAhC6O,EAAS1D,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAGjL,KAAKsQ,cAG5C,OAFI3B,EAAU+D,eAAe/D,EAAU+D,cAAcvS,UAAUkR,OAAOrR,KAAK2P,QAAQL,mBACnFX,EAAU+D,cAAgB,KACnB1S,IACT,GAEA,CAAAH,IAAA,gCAAAC,MAOA,WAA+D,IAAhC6O,EAAS1D,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAGjL,KAAKsQ,cAK9C,OAJAtQ,KAAKgQ,WAAW6C,QACd,QACAlE,EAAUuB,MAAQvB,EAAUuB,MAAMrM,aAAa7D,KAAK2P,QAAQjB,iBAAiB,IAAM,IAE9E1O,IACT,GAQA,CAAAH,IAAA,gBAAAC,MAKA,WACE,OAAOE,KAAK2P,QAAQzB,KAAOlO,KAAK2P,QAAQxB,cAC1C,GAEA,CAAAtO,IAAA,iBAAAC,MAKA,WACE,MAAO,CACLgT,KAAM,GACNC,WAAY,KACZC,QAAS,GACTC,aACEjT,KAAK2P,QAAQX,mBAAqBhP,KAAK2P,QAAQV,sBAAsBhG,OACjEjJ,KAAK2P,QAAQV,sBACb,GAEV,GAEA,CAAApP,IAAA,aAAAC,MAQA,SAAYiT,GAAY,IAAAhT,EAAA,KAEhBmT,EAAe,GACrBlT,KAAK2P,QAAQjB,iBAAiBrL,SAAQ,SAAA8P,GACpCpT,EAAK4P,QAAQ3B,KAAKoF,OACfnH,QAAO,SAAAiE,GAAK,OAAIpC,EAAWuF,MAAMnD,EAAMzR,WAAW0U,IAAOG,MAAMP,EAAW,IAC1E1P,SAAQ,SAAA6M,GACFgD,EAAaK,SAASrD,IAAQgD,EAAa5P,KAAK4M,EACvD,GACJ,IAIA,IAAMsD,EAAe,CAAC,EAChBC,EAAM,WAAH,QAAAC,EAAAzI,UAAAhC,OAAO+B,EAAI,IAAAS,MAAAiI,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3I,EAAI2I,GAAA1I,UAAA0I,GAAA,MAAK,GAAA9U,OAAImM,GAAM4I,QAAO,SAAC1O,EAAG2O,GAAC,OAAK3O,EAAI2O,CAAC,GAAE,EAAE,EAIvDC,EAAc,SAAAC,GAAG,OAAIN,EAAGvI,WAAC,GA5YnCU,EAyYkB,SAAAmI,GACZ,OAAOA,GAAMA,EAAIT,MAAMP,IAAoB,EAC7C,CACkCO,CAAMS,GAAKtS,KAAI,SAAAuS,GAAC,OAAIA,EAAE/K,MAAM,IA5YlE,SAAA2C,GAAA,GAAAH,MAAAwI,QAAArI,GAAA,OAAAL,EAAAK,EAAA,CAAAsI,CAAAtI,IAAA,SAAAuI,GAAA,uBAAAlP,QAAA,MAAAkP,EAAAlP,OAAAE,WAAA,MAAAgP,EAAA,qBAAA1I,MAAAC,KAAAyI,EAAA,CAAAC,CAAAxI,IAAAP,EAAAO,IAAA,qBAAAzD,UAAA,wIAAAkM,KAAA,IAAAzI,CA4YoE,EAMhE,OALAsH,EAAa7P,SAAQ,SAAAiR,GACnBd,EAAac,EAAO1B,KAAOkB,EAAYQ,EAAOzQ,aAAa9D,EAAK4P,QAAQjB,iBAAiB,IAC3F,IAGOwE,EAAaqB,MAAK,SAACrP,EAAG2O,GAC3B,IAAMW,EAAUhB,EAAatO,EAAE0N,KACzB6B,EAAUjB,EAAaK,EAAEjB,KAC/B,OAAO4B,EAAUC,EAAU,EAAID,EAAUC,GAAW,EAAI,CAC1D,GACF,GAEA,CAAA5U,IAAA,oBAAAC,MAAA,SAAA4U,GAAA,OAAAlF,EAAAA,GAAA3E,EAAAtG,IAAA8E,MAQA,SAAAsL,EAAyB9S,GAAI,IAAA+S,EAAAC,EAAAC,EAAAC,EAAA/B,EAAAC,EAAA+B,EAAA,OAAAzQ,IAAAqB,MAAA,SAAAqP,GAAA,cAAAA,EAAAnL,KAAAmL,EAAA5M,MAAA,WAEvBrI,KAAK2P,QAAQT,QAASlP,KAAKwQ,YAAY3O,GAAK,CAAAoT,EAAA5M,KAAA,QACoB,OAA9DrI,KAAKqS,kBAAiBrS,KAAK2P,QAAQ3B,KAAOhO,KAAKyQ,UAAU5O,IAAKoT,EAAAhN,OAAA,SAC3DjI,KAAKwQ,YAAY3O,IAAK,OAS/B,GALM+S,EAAW5U,KAAKkV,aAAarT,GAC7BgT,EAAgB7U,KAAKkV,aAAapH,EAAWuF,MAAMxR,IACnDiT,EAAS9U,KAAKmV,WAAWP,GACzBG,EAAkB/U,KAAKmV,WAAWN,IAGpC7U,KAAKqS,gBAAiB,CAAF4C,EAAA5M,KAAA,gBAAA4M,EAAAnL,KAAA,EAAAmL,EAAA5M,KAAA,GAEMrI,KAAKoV,aAAavT,GAAK,QAAjD7B,KAAK2P,QAAQ3B,KAAIiH,EAAAnN,KAAAmN,EAAA5M,KAAG,GAAH,cAEiB,MAFjB4M,EAAAnL,KAAG,GAAHmL,EAAAI,GAAAJ,EAAA,SAEjBjV,KAAKsV,uBAAwB,EAAKL,EAAAI,GAAA,QAGpCrV,KAAKsV,uBAAwB,EAAK,QAyBoD,OArBlFtC,EAAU+B,EACZ/U,KAAK2P,QAAQlB,cACXzO,KAAKuV,WAAWR,GAChB/U,KAAK2P,QAAQ3B,KAAKoF,OACpB,GACEH,EAAepR,EACjB7B,KAAK2P,QAAQb,WACXkE,EAAQhJ,MAAM,EAAGhK,KAAK2P,QAAQb,YAC9BkE,EACFhT,KAAK2P,QAAQX,kBACXhP,KAAK2P,QAAQV,uBAAyBjP,KAAK2P,QAAQ3B,KAAKoF,OACxD,GAGA4B,EAAS,CACblC,KAAM8B,EACN7B,WAAY+B,EACZ9B,QAAAA,EACAC,aAAAA,GAEEjT,KAAK2P,QAAQT,QAAOlP,KAAKwQ,YAAY3O,GAAQmT,GAC7ChV,KAAK2P,QAAQT,OAASlP,KAAKqS,kBAAiBrS,KAAKyQ,UAAU5O,GAAQ7B,KAAK2P,QAAQ3B,MAAIiH,EAAAhN,OAAA,SACjF+M,GAAM,yBAAAC,EAAAhL,OAAA,GAAA0K,EAAA,oBACdzJ,MAAA,KAAAD,UAAA,GAED,CAAApL,IAAA,eAAAC,MAAA,SAAA0V,GAAA,OAAA/F,EAAAA,GAAA5E,EAAAtG,IAAA8E,MAOA,SAAAoM,EAAoB5T,GAAI,IAAA6T,EAAAC,EAAA,OAAApR,IAAAqB,MAAA,SAAAgQ,GAAA,cAAAA,EAAA9L,KAAA8L,EAAAvN,MAAA,OAS2C,OAR7DrI,KAAK6V,iBAAiB7V,KAAK6V,gBAAgBC,QAC/C9V,KAAK6V,gBAAkB,IAAIvI,OAAOyI,gBAE5BL,EAAa,IAAIpI,OAAO0I,KAAIC,EAAAA,EAAAA,IAAejW,KAAK2P,QAAQzB,MAC9D/L,OAAO+T,QAAQlW,KAAK2P,QAAQvB,WAAW/K,SAAQ,SAAA8S,GAA6B,QAAAC,KAAA,8CAAAD,6kBAA3BE,EAASD,EAAA,GAAEE,EAAUF,EAAA,GACpEV,EAAWa,aAAaC,OAAOH,EAAWC,EAC5C,IAEAZ,EAAWa,aAAaC,OAAOxW,KAAK2P,QAAQxB,eAAgBtM,GAAK+T,EAAAvN,KAAA,EAEzCgF,EAAeqI,EAAWe,KAAIzY,EAAA,CACpD0Y,OAAQ1W,KAAK6V,gBAAgBa,QAC1B1W,KAAK2P,QAAQtB,YAEf9G,MAAK,SAAAoP,GAAQ,OAAIA,EAASC,MAAM,IAChCtM,OAAM,SAAAxM,GACL,MAAM,IAAI2J,MAAM3J,EAClB,IAAE,OACuB,OARrB6X,EAASC,EAAA9N,KAQf9H,KAAK6V,gBAAkB,KAAID,EAAA3N,OAAA,SACpB,IAAIgG,EAAAA,EAAWjO,KAAK6W,iBAAiBlB,KAAW,yBAAAC,EAAA3L,OAAA,GAAAwL,EAAA,WACxDvK,MAAA,KAAAD,UAAA,GAED,CAAApL,IAAA,mBAAAC,MAUA,SAAkBkO,GAChB,OAAOA,CACT,GAQA,CAAAnO,IAAA,gBAAAC,MAeA,WACE,IAAMgX,IAAY9W,KAAK2P,QAAQ9B,gBAC3BP,OAAOyJ,WAAaC,EAAAA,EAAYhX,KAAK2P,QAAQ9B,gBAEjD,OACI7N,KAAKuQ,eAAkBuG,KACvBA,GAAc9W,KAAKuQ,cAAcuC,MAAS9S,KAAKuQ,cAAc0C,aAAahK,QAAWjJ,KAAKsV,uBAMvFtV,KAAKiX,uBACTC,4BACAC,uBANDnX,KAAK4R,uBACE5R,KAMX,GAEA,CAAAH,IAAA,sBAAAC,MAOA,WAME,OALIE,KAAKsQ,eAAiBtQ,KAAKuQ,cAAc0C,aAAaM,SAASvT,KAAKsQ,cAAcJ,OACpFlQ,KAAKoX,yBAELpX,KAAKqX,qBAAqBC,UAAY,EAEjCtX,IACT,GAEA,CAAAH,IAAA,yBAAAC,MAOA,WAAwD,IAAhC6O,EAAS1D,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAGjL,KAAKsQ,cACvC,IAAK3B,EAAU+D,cAAe,OAAO1S,KAGrC,IAAMuX,GAAqBC,EAAAA,EAAAA,IAAexX,KAAKqX,sBAEzCI,EAAsB,CAC1BzX,KAAKqX,qBAAqBC,UAC1BtX,KAAKqX,qBAAqBC,UAAYC,GAElCG,EAAoB,CACxB/I,EAAU+D,cAAciF,UACxBhJ,EAAU+D,cAAciF,UAAYhJ,EAAU+D,cAAckF,cAa9D,OATIF,EAAkB,GAAKD,EAAoB,KAC7CI,EAAAA,EAAAA,IAAa7X,KAAKqX,qBAAsB,EAAGK,EAAkB,GAZ5C,IAgBfA,EAAkB,GAAKD,EAAoB,KAC7CI,EAAAA,EAAAA,IAAa7X,KAAKqX,qBAAsB,EAAGK,EAAkB,GAAKH,EAjBjD,IAoBZvX,IACT,GAEA,CAAAH,IAAA,uBAAAC,MAeA,WA+BE,OA9BKE,KAAK6R,iBACR7R,KAAK6R,gBAAiBiG,EAAAA,EAAAA,IAAkB9X,KAAK+X,yBAC7C/X,KAAKgY,kBAAoB,IAAIC,EAAAA,QAAYjY,KAAK6R,gBAC9C7R,KAAK2D,aAAa3D,KAAK6R,iBAGzB7R,KAAKuQ,cAAgBvQ,KAAKuQ,eAAiBvQ,KAAKkY,iBAChDlY,KAAKqX,qBAAuBrX,KAAK6R,eAAelS,cAAc,iCAC9DK,KAAKqX,qBAAqB3U,UACxB1C,KAAKuQ,cAAcyC,SAAWhT,KAAKuQ,cAAcyC,QAAQ/J,OACrDjJ,KAAKmY,iBAAiB5F,OACtBvS,KAAKsV,sBACHtV,KAAKoY,0BAA0B7F,OAC/BvS,KAAKqY,mBAAmB9F,OAE3BvS,KAAK6R,eAAeyG,aACvBtY,KAAKiQ,aAAasI,cAAcC,YAAYxY,KAAK6R,gBAGnD7R,KAAKyY,kBAELzY,KAAKgY,kBAAkBU,QAAQ,UAC3B1Y,KAAKgY,kBAAkBW,aACvB3Y,KAAKgY,kBAAkBnF,QAAQ,UAAU,GAE7C7S,KAAKmD,OAAOW,KAAK,QAEjBnD,EAAAA,EAAUiY,8BAA8B5Y,KAAK6R,gBAC7ClR,EAAAA,EAAUkY,4BAA4B7Y,KAAK6R,gBAEpC7R,IACT,GAEA,CAAAH,IAAA,uBAAAC,MASA,WACE,OAAKE,KAAK6R,gBAAmB7R,KAAKgY,mBAElChY,KAAK8Y,oBACL9Y,KAAKgY,kBAAkBnF,QAAQ,UAAU,GACzC7S,KAAKmD,OAAOW,KAAK,SAEV9D,MANqDA,IAO9D,GAEA,CAAAH,IAAA,kBAAAC,MAKA,WAAmB,IAAAiZ,EAAA,KACjB,GAAI/Y,KAAKgZ,mBAAmE,WAA9CC,EAAAA,EAAAA,IAASjZ,KAAK6R,eAAgB,YAC1D,OAAO7R,KAETA,KAAKgZ,mBAAoB,EACzB,IACME,EAAmBlZ,KAAKiQ,aAAakJ,wBACrCC,EAAyBpZ,KAAKiQ,aAAasI,cAAcY,wBACzDE,EAAgB/L,OAAOyJ,YAAchF,SAASuH,gBAAgBC,YAyBpE,OAvBAvZ,KAAKwZ,yBAA2B,CAC9BC,MAAO,GAAF5a,OAAKqa,EAAiBO,MAAK,MAChCC,SAAU,QACVC,KAAM,GAAF9a,OAAKqa,EAAiBU,EAAC,MAC3BC,IAAK,GAAFhb,OAAKqa,EAAiB1S,EAAC,MAC1BsT,OAAQ,GAAFjb,OAAKqa,EAAiBY,OAAM,MAClCC,OAAQC,UAASf,EAAAA,EAAAA,IAASjZ,KAAK6R,eAAgB,YAAc,GAE/D1P,OAAOwH,KAAK3J,KAAKwZ,0BAA0BnW,SAAQ,SAAA4W,GACjDlB,EAAK9I,aAAaiK,MAAMD,GAAKlB,EAAKS,yBAAyBS,EAC7D,IACAja,KAAKiQ,aAAasI,cAAc2B,MAAMJ,OAAS,GAAHjb,OAAMua,EAAuBU,OAAM,OAC/EK,EAAAA,EAAAA,IAAana,KAAKiQ,cAElBjQ,KAAKiQ,aAAaiK,MAAME,oBAAqBnB,EAAAA,EAAAA,IAASjZ,KAAK6R,eAAgB,uBAC3E7R,KAAKiQ,aAAaiK,MAAMG,yBAA2B,oCACnDra,KAAKiQ,aAAaiK,MAAMI,mBAAqB,OAC7CH,EAAAA,EAAAA,IAAana,KAAKiQ,cAElBjQ,KAAKiQ,aAAaiK,MAAML,IAAM,GAAHhb,OAxBP,GAwBwB,MAC5CmB,KAAKiQ,aAAaiK,MAAMP,KAAO,GAAH9a,OAzBR,GAyByB,MAC7CmB,KAAKiQ,aAAaiK,MAAMT,MAAQ,GAAH5a,OAAMwa,EAAgBkB,GAAe,MAClEva,KAAK6R,eAAeqI,MAAMM,WAAa,GAAH3b,OAAMqa,EAAiBY,QAAU,GAAiB,MAC/E9Z,IACT,GAEA,CAAAH,IAAA,oBAAAC,MAKA,WAAqB,IAAA2a,EAAA,KACnB,OAAKza,KAAKgZ,mBACVhZ,KAAKgZ,mBAAoB,EACzBhZ,KAAKiQ,aAAaiK,MAAMG,yBAA2B,mCACnDlY,OAAOwH,KAAK3J,KAAKwZ,0BAA0BnW,SAAQ,SAAA4W,GACjDQ,EAAKxK,aAAaiK,MAAMD,GAAKQ,EAAKjB,yBAAyBS,EAC7D,IAmBAja,KAAKiQ,aAAahQ,iBAAiB,iBAlBR,SAArBya,IACJ,CACE,WACA,OACA,MACA,QACA,SACA,UACA,sBACA,6BACA,uBACArX,SAAQ,SAAAsD,GACR8T,EAAKxK,aAAaiK,MAAMvT,GAAK,IAC/B,IACA8T,EAAK5I,eAAeqI,MAAMM,WAAa,KACvCC,EAAKxK,aAAasI,cAAc2B,MAAMJ,OAAS,KAC/CW,EAAKxK,aAAa0K,oBAAoB,gBAAiBD,GAAoB,EAC7E,IACwE,GACjE1a,MAzB6BA,IA0BtC,GAEA,CAAAH,IAAA,4BAAAC,MAOA,SAA2B4S,GACzB,IAAKA,EAAe,OAAO,KAC3B,IAAMkI,EAAWlI,EAAc7O,aAAa,YAC5C,OAAO7D,KAAK2P,QAAQ3B,KAAKyE,UAAU,MAAOmI,IAAa,IACzD,GAQA,CAAA/a,IAAA,UAAAC,MAQA,SAAS0D,GACFxD,KAAKgY,mBAAsBhY,KAAKgY,kBAAkBU,QAAQ,YAC7D1Y,KAAKsQ,cAAatS,EAAA,GAAQgC,KAAK2O,WAC1B3O,KAAKgY,oBACRhY,KAAKuQ,cAAgBvQ,KAAKkY,mBAG9BlY,KAAKsV,uBAAwB,EAC7BtV,KAAKmD,OAAOW,KAAK,SACjB9D,KAAK6a,eACP,GAEA,CAAAhb,IAAA,gBAAAC,MAAA,kBAAA4P,EAAAA,GAAA7E,EAAAtG,IAAA8E,MAUA,SAAAyR,IAAA,IAAAC,EAAA,OAAAxW,IAAAqB,MAAA,SAAAoV,GAAA,cAAAA,EAAAlR,KAAAkR,EAAA3S,MAAA,OAEmD,GAA3C0S,EAAe/a,KAAKqQ,yBACtBrQ,KAAKsQ,eAAiByK,EAAalZ,OAAS7B,KAAKsQ,cAAczO,KAAI,CAAAmZ,EAAA3S,KAAA,eAAA2S,EAAA/S,OAAA,iBAKvE,GAFAjI,KAAKsQ,cAAgByK,EAIhB/a,KAAKsQ,cAAczO,KAAM,CAAFmZ,EAAA3S,KAAA,SAE1BrI,KAAKuQ,cAAgBvQ,KAAKkY,iBAEtBlY,KAAKqS,kBAAiBrS,KAAKsV,uBAAwB,GACvDtV,KAAK6a,gBAAeG,EAAA3S,KAAA,iBAapB,OARIrI,KAAKqS,iBAAqBrS,KAAK2P,QAAQT,OAAUlP,KAAKwQ,YAAYxQ,KAAKsQ,cAAczO,QAEvF7B,KAAKuQ,cAAgBvQ,KAAKkY,iBAC1BlY,KAAKsV,uBAAwB,EAE7BtV,KAAK6a,iBAGPG,EAAAlR,KAAA,GAAAkR,EAAA3S,KAAA,GAE6BrI,KAAKib,kBAAkBjb,KAAKsQ,cAAczO,MAAK,QAA1E7B,KAAKuQ,cAAayK,EAAAlT,KAClB9H,KAAK6a,gBAAeG,EAAA3S,KAAA,iBAAA2S,EAAAlR,KAAA,GAAAkR,EAAA3F,GAAA2F,EAAA,UAEpBhb,KAAKuQ,cAAgBvQ,KAAKkY,iBAAgB,QAM9ClY,KAAKmD,OAAOW,KAAK,SAAU9D,KAAKsQ,eAAc,yBAAA0K,EAAA/Q,OAAA,GAAA6Q,EAAA,qBAC/C5P,MAAA,KAAAD,UAAA,GAED,CAAApL,IAAA,kBAAAC,MAQA,WACE,OAAKE,KAAKsQ,cAAcJ,OAASlQ,KAAKsQ,cAAcJ,QAAUlQ,KAAK2O,UAAUuB,OAI7ElQ,KAAK2O,UAAS3Q,EAAA,GAAQgC,KAAKsQ,eAC3BtQ,KAAKiR,SACLjR,KAAKmD,OAAOW,KAAK,SAAU9D,KAAK2O,WACzB3O,MANEA,IAOX,GAEA,CAAAH,IAAA,iBAAAC,MAQA,WACE,OAAKE,KAAK2O,UAAUuB,OAGpBlQ,KAAK2O,UAAY,CACf9M,KAAM,GACNqO,MAAO,KACPwC,cAAe,MAEjB1S,KAAKmD,OAAOW,KAAK,SAAU9D,KAAK2O,WACzB3O,MAREA,IASX,GAEA,CAAAH,IAAA,SAAAC,MAOA,SAAQ0D,GACNxD,KAAK4R,uBACL5R,KAAKsQ,cAAgB,KACrBtQ,KAAKuQ,cAAgBvQ,KAAKkY,iBAC1BlY,KAAKoQ,8BAA8BpQ,KAAK2O,WACpC3O,KAAK6V,kBACP7V,KAAK6V,gBAAgBC,QACrB9V,KAAK6V,gBAAkB,KAE3B,GAEA,CAAAhW,IAAA,YAAAC,MAgBA,SAAW0D,GAET,GAAKxD,KAAK6R,gBAAmB7R,KAAK6R,eAAeyG,YAAjD,CAEA,IAAMzY,EAAM2D,EAAG0X,QAGf,GAAY,KAARrb,GAAsB,KAARA,EAAY,CAC5B,IAAMsb,EACI,KAARtb,EACIG,KAAKsQ,cAAcoC,cACjB1S,KAAKsQ,cAAcoC,cAAc0I,oBAAsBpb,KAAKsQ,cAAcoC,cAC1E1S,KAAK6R,eAAelS,cAAc,IAADd,OAAKmB,KAAK2P,QAAQN,kBACrDrP,KAAKsQ,cAAcoC,cACjB1S,KAAKsQ,cAAcoC,cAAc2I,wBAA0Brb,KAAKsQ,cAAcoC,cAC9E1S,KAAK6R,eAAelS,cAAc,IAADd,OAAKmB,KAAK2P,QAAQN,gBAAe,gBACpEiM,EAAWtb,KAAKub,0BAA0BJ,GAC5CG,IAAatb,KAAKsQ,cAAcJ,QAClClQ,KAAKsQ,cAAcJ,MAAQoL,EAC3Btb,KAAKwb,8BACFtE,4BACAE,yBACHpX,KAAKmD,OAAOW,KAAK,SAAU9D,KAAKsQ,eAEpC,CAGA,GAAY,KAARzQ,GAAsB,IAARA,EAAW,CAC3B,GAAY,KAARA,GAAcG,KAAKqS,iBAAmBrS,KAAKsV,sBAC7C,OAEF,KAAY,KAARzV,GAAgBG,KAAKsQ,eAAkBtQ,KAAKsQ,cAAcJ,OAC5D,OAEFlQ,KAAKyb,kBACLzb,KAAKiQ,aAAayL,MACpB,CAGY,KAAR7b,GACFG,KAAKiQ,aAAayL,MAtCgD,CAwCtE,GAEA,CAAA7b,IAAA,UAAAC,MAMA,SAAS0D,GACP,IAAM3D,EAAM2D,EAAG0X,SAEVrb,GAAQA,GAAO,IAAMA,GAAO,IAAe,KAARA,GAAsB,KAARA,GAAsB,IAARA,GACpEG,KAAK0Q,sBACP,GAEA,CAAA7Q,IAAA,cAAAC,MAOA,SAAa0D,GACX,IAAMmY,EAAkB3b,KAAK4b,wBAAwBpY,GACrD,GAAKmY,GAAoB3b,KAAKsQ,eAAiBqL,IAAoB3b,KAAKsQ,cAAcoC,cAAtF,CAEA,IAAM4I,EAAWtb,KAAKub,0BAA0BI,GAC5CL,IAAatb,KAAKsQ,cAAcJ,QAClClQ,KAAKsQ,cAAcJ,MAAQoL,EAC3Btb,KAAKwb,8BAA8BtE,4BACnClX,KAAKmD,OAAOW,KAAK,SAAU9D,KAAKsQ,eANyE,CAQ7G,GAEA,CAAAzQ,IAAA,eAAAC,MAMA,SAAc0D,GACZ,IAAMmY,EAAkB3b,KAAK4b,wBAAwBpY,GAChDmY,IACL3b,KAAKsQ,cAAcJ,MAAQlQ,KAAKub,0BAA0BI,GACtD3b,KAAKsQ,cAAcJ,OACrBlQ,KAAKwb,8BAA8BtE,4BACnClX,KAAKmD,OAAOW,KAAK,SAAU9D,KAAKsQ,eAChCtQ,KAAKyb,mBAELjY,EAAGqY,kBAEP,GAEA,CAAAhc,IAAA,0BAAAC,MAKA,SAAyB0D,GAAI,IAAAsY,EAAA,KAS3B,OARsB,SAACC,EAAIC,GACzB,EAAG,CACD,GAAID,IAAOC,EAAmB,OAAO,KACrC,GAAID,EAAGE,QAAQ,IAADpd,OAAKid,EAAKnM,QAAQN,kBAAoB,OAAO0M,EAC3DA,EAAKA,EAAGxD,eAAiBwD,EAAGtb,UAC9B,OAAgB,OAAPsb,GAAeA,IAAOC,GAAqC,IAAhBD,EAAGG,UACvD,OAAO,IACT,CACOC,CAAc3Y,EAAGgJ,OAAQxM,KAAK6R,eACvC,GAQA,CAAAhS,IAAA,wBAAAC,MAKA,WACE,MAAO,6FAAPjB,OAEgFmB,KAAK2P,QAAQ/B,WAAU,qJAAA/O,OAGtEmB,KAAK2P,QAAQR,UAAS,0CAAAtQ,OACtBmB,KAAK2P,QAAQP,UAAS,8XAAAvQ,OAQiEmB,KAAK8P,QAAQsM,OAAM,0CAI7I,GAEA,CAAAvc,IAAA,iBAAAC,MAMA,WAAkB,IAAAuc,EAAA,KAChB,MAAO,iGAAPxd,OAEAmB,KAAKuQ,cAAc0C,aAAaxR,KAAI,SAAA6S,GAAM,OAAI+H,EAAKC,cAAchI,EAAO,IAAE1R,KAAK,IAAG,YAGpF,GAEA,CAAA/C,IAAA,gBAAAC,MAMA,SAAewU,GAAQ,IAAAiI,EAAA,KACrB,MAAO,wEAAP1d,OACiEyV,EAAO1B,IAAG,UAAA/T,OAC3EmB,KAAK2P,QAAQZ,kBACZtN,KAAI,SAAA0R,GACH,OAAImB,EAAOzQ,aAAasP,IAASoJ,EAAK5M,QAAQjB,iBAAiB6E,SAASJ,GAC/D,+BAAPtU,OACoBsU,EAAI,cAAAtU,OACxByV,EACCzQ,aAAasP,GACb3H,WACAgR,QAAQD,EAAKhM,cAAcwC,WAAY,mBAAkB,iBAEjDuB,EAAOzQ,aAAasP,GACtB,+BAAPtU,OACoBsU,EAAI,cAAAtU,OACxByV,EAAOzQ,aAAasP,GAAM3H,WAAU,iBAG7B,EAEX,IACC5I,KAAK,IAAG,YAGX,GAEA,CAAA/C,IAAA,mBAAAC,MAMA,WAAoB,IAAA2c,EAAA,KAElB,OADAzc,KAAKmD,OAAOW,KAAK4Y,EAAAA,GAAmBC,WAAY,CAAE7J,KAAM9S,KAAKuQ,cAAcuC,OACpE,2GAAPjU,OAGImB,KAAKuQ,cAAcuC,KAAI,0GAAAjU,OAEnBmB,KAAK8P,QAAQ8M,eAAc,WAAA/d,QAAUge,EAAAA,EAAAA,IAAW7c,KAAKsQ,cAAczO,MAAK,0BAExE7B,KAAKuQ,cAAc0C,aACnBjT,KAAKuQ,cAAc0C,aAAaxR,KAAI,SAAA6S,GAAM,OAAImI,EAAKH,cAAchI,EAAO,IAAE1R,KAAK,IAC/E,GAAE,wBAIZ,GAEA,CAAA/C,IAAA,0BAAAC,MAOA,WACE,MAAO,6GAAPjB,OAGMmB,KAAKsQ,cAAczO,KAAI,8GAAAhD,OAEjBmB,KAAK8P,QAAQ9L,aAAY,WAAAnF,QAAUge,EAAAA,EAAAA,IAAW7c,KAAKsQ,cAAczO,MAAK,+BAAAhD,QACtEie,EAAAA,EAAAA,GAAe,CAAE/b,KAAM,OAAQO,aAAc,kCAAkC,uBAEjF,GAAE,wBAId,GAAC,CAAAzB,IAAA,eAAAC,MAED,SAAc+B,GACZ,OAAOA,EAAK2a,QAAQ,uBAAwB,OAC9C,GAAC,CAAA3c,IAAA,aAAAC,MAED,SAAY8U,GACV,OAAOA,EAAW,IAAImI,OAAO,IAAMnI,EAASoI,MAAM,KAAKpa,KAAK,KAAO,IAAK,MAAQ,IAClF,GAAC,CAAA/C,IAAA,eAAAC,MAED,SAAcR,GAAS,IAAA2d,EAAA,KACrBjd,KAAK2R,qBAAuB,CAC1B,CAACrS,EAAS,CAAE4d,UAAW,SAAA1Z,GAAE,OAAIyZ,EAAKE,YAAY3Z,EAAG,IACjD,CAAClE,EAAS,CAAE8d,UAAW,SAAA5Z,GAAE,OAAIyZ,EAAKI,aAAa7Z,EAAG,IAAI,GACtD,CAAClE,EAAQK,cAAc,0CAA2C,CAAE4D,MAAO,SAAAC,GAAE,OAAIyZ,EAAKrL,qBAAqBpO,EAAG,KAEhHE,EAAAA,EAAgBC,aAAa3D,KAAK2R,qBAAsB7O,EAC1D,GAAC,CAAAjD,IAAA,eAAAC,MAED,WACME,KAAK2R,sBAAsBjO,EAAAA,EAAgB4Z,aAAatd,KAAK2R,qBAAsB7O,EACzF,IA3oCF2O,GAAAlF,EAAAsD,EAAAlL,UAAA8M,GAAAtP,OAAA4C,eAAA8K,EAAA,aAAAlK,UAAA,IA2oCG4J,CAAA,CAvhC8B,sFCjH3BgO,EAAaC,EAAAA,EAAmB,qBAEhCC,EAAqB,aACrBC,EAAsC,iBACtC5a,EAAe,aACf6a,EAAc,cACdxa,EAAS,CACbya,KAAM,IAAItQ,OAAOuQ,YAAYF,EAAc,QAC3Crb,OAAQ,IAAIgL,OAAOuQ,YAAYF,EAAc,UAC7CG,MAAO,IAAIxQ,OAAOuQ,YAAYF,EAAc,SAC5CI,OAAQ,IAAIzQ,OAAOuQ,YAAYF,EAAc,WAEzCK,EAAa,CACjB1b,OAAQ,KACR2b,QAAS,aACTC,QAAS,cAGI,SAASC,EAAUpC,GAChC,IAAMqC,IAAerC,GAAQA,aAAczO,OAAO+Q,aAC9CC,GAAiB,EAOrB,GALIF,IACFrC,EAAKhK,SAASwM,cAAc,QACzBpe,UAAUC,IAAIqd,EAAoBC,QAGdtS,IAArB2Q,EAAGjZ,GAAP,CAEA,IAAM0b,EAAa,CACjBlf,QAASyc,EACT6B,KAWF,SAAelW,GACbqU,EAAG0C,cAActb,EAAOya,MACxB7B,EAAG5b,UAAUC,IAAI4d,EAAWC,SAC5BS,EAAAA,GAAmB3C,EAAI,SACvBA,EAAG5b,UAAUC,IAAI4d,EAAW1b,QA2CvBgc,IACHK,EAAAA,GAAqB5C,GACrBuC,GAAkBA,GA3CpBM,WAAWtc,EACToc,EAAAA,GAAsBA,EAAAA,GAAmB3C,EAAI,wBAC7CrU,EAEJ,EApBEoW,MA4BF,SAAgBpW,GACdqU,EAAG0C,cAActb,EAAO2a,OACxBe,IACA9C,EAAG5b,UAAUC,IAAI4d,EAAWE,SAC5BnC,EAAG5b,UAAUkR,OAAO2M,EAAW1b,QAC/Bsc,WAAWb,EACTW,EAAAA,GAAsBA,EAAAA,GAAmB3C,EAAI,wBAC7CrU,EAEJ,EApCE2J,OAAAA,EACAyN,QAgDF,WACEzN,IACA0K,EAAGjZ,GAAgB,YACZiZ,EAAGjZ,EACZ,GA9CA,OAHAiZ,EAAGjZ,GAAgB0b,EACfJ,GAAYrM,SAAS3T,KAAKoa,YAAYuD,GAEnCyC,CAbmC,CA2B1C,SAASlc,EAAQoF,GACfqU,EAAG5b,UAAUkR,OAAO2M,EAAWC,SAC/BlC,EAAG0C,cAActb,EAAOb,QACJ,mBAAToF,GAAqBA,GAClC,CAaA,SAASqW,EAAQrW,GACfqU,EAAG5b,UAAUkR,OAAO2M,EAAWE,SAC/BnC,EAAG0C,cAActb,EAAO4a,QACJ,mBAATrW,GAAqBA,GAClC,CAEA,SAAS2J,IACPwN,IACIT,GAAYrM,SAAS3T,KAAKsC,YAAYqb,EAC5C,CAeA,SAAS8C,IACHP,IACFK,EAAAA,GAAoB5C,GACpBuC,GAAkBA,EAEtB,CACF,CAEAf,EAAwB,SAAIY,04CCvG5B,IAAMxgB,EAAeC,EAAAA,OAAAA,EACfC,EAAe,WACnB,IACE,OAAOD,OAAAA,WAAAA,IAAAA,EAAAA,IAAAA,MAAAA,iGAAAA,MAAAA,EAAAA,KAAAA,mBAAAA,CAAAA,CAAAA,GACT,CAAE,MAAOE,GACP,MAAO,CAAC,CACV,CACF,CANqB,GAOfC,EAAMC,EAAAA,EAAA,GAAQL,GAAiBE,GAaxBkhB,EAAiB,CAC5Btc,KAAM,GACNuc,QAAS,UACT1d,aAAc,GACd7C,WAAY,CAAC,GAGFwgB,EAAc,SAACrgB,GAE1B,OADAA,EAACZ,EAAAA,EAAA,GAAQ+gB,GAAmBngB,GACrB,mDAAPC,OAEgBD,EAAEogB,SAAUlgB,EAAAA,EAAAA,GAAc,UAAWF,EAAEogB,QAASjhB,GAAU,GAAE,uBAAAc,OAC5DD,EAAE0C,aAAe1C,EAAE0C,aAAe,GAAE,mBAAAzC,OACxCD,EAAEH,YAAaM,EAAAA,EAAAA,IAAiBH,EAAEH,YAAc,GAAE,yDAAAI,QACZC,EAAAA,EAAAA,GAAc,uBAAwB,UAAWf,GAAO,oBAAAc,OAC9FD,EAAE6D,KAAI,qCAIpB,2pECrCA,IAAMyc,EAAY,QACZnc,EAAmB,CACvBoc,YAAa,IAAFtgB,OAAMqgB,EAAS,WAUtBlgB,EAAa,CACjBC,KAAMigB,EAcNrc,MAAO,CACL,CACE5D,KAAM,QACNiH,KAAM,UACNiN,KAAM,gBACNiM,cAAc,GACb,CACDngB,KAAM,WACNiH,KAAM,UACNiN,KAAM,WACNiM,cAAc,GACb,CACDngB,KAAM,OACNiH,KAAM,UACL,CACDjH,KAAM,eACNiH,KAAM,SACNmZ,cAAe,CACb,OACA,SAEFD,aAAc,QACb,CACDngB,KAAM,UACNiH,KAAM,UACNkZ,cAAc,GACb,CACDngB,KAAM,OACNiH,KAAM,UACL,CACDjH,KAAM,UACNiH,KAAM,SACNiN,KAAM,WACNkM,cAAe,CACb,UACA,OACA,OACA,YACA,UACA,UAEFD,aAAc,aAMdjM,EACG,aAOYmM,EAAG,SAAAngB,yRAAAC,CAAAkgB,EAAAngB,GAAA,YAAAE,KAAAigB,+jBAOtB,SAAAA,EAAahgB,GAAS,IAAAC,EAuBlB,mGAvBkBC,CAAA,KAAA8f,GACpB/f,EAAAF,EAAAI,KAAA,KAAMH,EAASN,EAAWC,MAC1ByE,EAAAA,EAAgBC,aAAa,CAC3B,CAACpE,EAAKD,QAAS,CAAEiE,MAAO,SAACC,GAAE,OAAKjE,EAAKggB,SAAS/b,EAAG,KAChDxE,EAAWC,MACdM,EAAKigB,cAAWpU,EAEhB7L,EAAKkgB,UAAYlgB,EAAKmgB,gBACtBpgB,EAAQN,EAAWC,MAAKjB,EAAAA,EAAA,GACnBsB,EAAQN,EAAWC,OAAK,IAC3B0gB,QAASpgB,EAAKogB,QAAQrf,KAAIsf,EAAArgB,IAC1BsgB,QAAStgB,EAAKsgB,QAAQvf,KAAIsf,EAAArgB,IAC1BugB,QAASvgB,EAAKugB,QAAQxf,KAAIsf,EAAArgB,IAC1BwgB,QAASxgB,EAAKwgB,QAAQzf,KAAIsf,EAAArgB,IAC1BygB,gBAAiBzgB,EAAKygB,gBAAgB1f,KAAIsf,EAAArgB,IAC1C0gB,gBAAiB1gB,EAAK0gB,gBAAgB3f,KAAIsf,EAAArgB,IAC1C2gB,WAAY3gB,EAAK2gB,WAAW5f,KAAIsf,EAAArgB,IAChC4gB,WAAY5gB,EAAK4gB,WAAW7f,KAAIsf,EAAArgB,IAChC6gB,kBAAmB7gB,EAAK6gB,kBAAkB9f,KAAIsf,EAAArgB,MAGhD+R,EAAAA,EAAiBC,wBAAwBvS,EAAWC,KAAMM,EAAK4D,OAAMnF,EAAA,GAChEuB,EAAKD,QAAQkS,aAAa2B,IAAe,CAAEjS,MAAO3B,EAAKD,QAAQb,WAAW0U,GAAYrT,SACzFP,CACJ,CAkFC,SAlFA+f,KAAA,EAAAzf,IAAA,UAAAC,MAED,WACE,IAAM0f,EAAWxf,KAAKqgB,aAAargB,KAAKV,SACxC,OAAOkgB,EAAWA,EAASc,UAAY,EACzC,GAAC,CAAAzgB,IAAA,UAAAC,MAED,SAASA,GACP,IAAM0f,EAAWxf,KAAKqgB,aAAargB,KAAKV,SACpCkgB,IAAYA,EAASc,UAAYxgB,EACvC,GAAC,CAAAD,IAAA,UAAAC,MAED,WAAW,IAAAygB,IACHC,EAAWxgB,KAAKygB,aAAazgB,KAAKV,SAClCohB,EAAWF,EAAyF,QAAjFD,KAAOC,EAASrgB,4nBAAW8L,QAAO,SAAA0U,GAAS,OAAIA,EAAUpN,SAAS,WAAW,IAAE,UAAE,IAAAgN,OAAA,EAA9EA,EAAgFvD,MAAM,YAAY,GAAK,KACnI,OAAQ0D,GAAyB,KAAbA,EAAmBA,EAAW,IACpD,GAAC,CAAA7gB,IAAA,UAAAC,MAED,SAASA,GACPE,KAAKygB,aAAazgB,KAAKV,SAASa,UAAUqc,QAAQ,WAAD3d,OAAYmB,KAAK6C,MAAM/B,MAAI,WAAAjC,OAAeiB,GAC7F,GAAC,CAAAD,IAAA,kBAAAC,MAED,WACE,OAAOE,KAAKygB,aAAazgB,KAAKV,WAAaU,KAAKV,QAAQshB,WAAa,OAAS,OAChF,GAAC,CAAA/gB,IAAA,kBAAAC,MAED,SAAiBA,GACfE,KAAKV,QAAQkZ,YAAsB,SAAV1Y,EAAmBE,KAAKqgB,aAAargB,KAAKV,SAAWU,KAAKygB,aAAazgB,KAAKV,UACrG,IAAMuhB,EAAsB,SAAV/gB,EAAoB,QAAU,OAChDE,KAAKygB,aAAazgB,KAAKV,SAASa,UAAUqc,QAAQ,gBAAD3d,OAAiBgiB,GAAQ,gBAAAhiB,OAAoBiB,GAChG,GAAC,CAAAD,IAAA,aAAAC,MAED,WACE,OAAQE,KAAK8gB,gBAAgB9gB,KAAKV,SAASiZ,gBAAkBvY,KAAKV,OACpE,GAAC,CAAAO,IAAA,aAAAC,MAED,SAAYihB,GACV,IAAMC,EAAchhB,KAAK8gB,gBAAgB9gB,KAAKV,SAE1C0hB,IACED,GACF/gB,KAAKV,QAAQkZ,YAAYwI,GACzBhhB,KAAKV,QAAQa,UAAUC,IAAI,oBAE3BJ,KAAKV,QAAQoB,YAAYsgB,GACzBhhB,KAAKV,QAAQa,UAAUkR,OAAO,mBAGpC,GAAC,CAAAxR,IAAA,oBAAAC,MAED,WACE,OAAOE,KAAKV,QAAQ2hB,OACtB,GAAC,CAAAphB,IAAA,gBAAAC,MAED,WACE,IAAM2f,EAAY,CAAC,EAInB,OAHIzf,KAAKV,UACPmgB,EAAUtM,KAAOnT,KAAKV,QAAQ2hB,SAEzBxB,CACT,GAAC,CAAA5f,IAAA,WAAAC,MAED,SAAU0D,GACR,IAAMkJ,EAAQlJ,EAAGI,cACjB5D,KAAKmD,OAAOW,KAAK,cAAe4I,EAAO1M,KAAK0f,gBAC9C,GAAC,CAAA7f,IAAA,eAAAC,MAED,WAEE,OADAE,KAAKwf,SAAWxf,KAAKwf,UAAYxf,KAAKV,QAAQK,cAAcoD,EAAiBoc,aACtEnf,KAAKwf,QACd,GAAC,CAAA3f,IAAA,eAAAC,MAED,WAEE,OADAE,KAAKwgB,SAAWxgB,KAAKwgB,UAAYxgB,KAAKV,QAAQK,cAAc,gBACrDK,KAAKwgB,QACd,GAAC,CAAA3gB,IAAA,kBAAAC,MAED,WAIE,OAHAE,KAAKghB,YAAchhB,KAAKghB,aACtBhhB,KAAKV,QAAQK,cAAc,oBAC3BmY,EAAAA,EAAAA,KAAkBgF,EAAAA,EAAAA,GAAe,CAAE/b,KAAM,OAAQO,aAAc,mBAC1DtB,KAAKghB,WACd,0EAAC1B,CAAA,CAjHqB,CAAS3e,EAAAA,IAoHjCC,EAAAA,EAAAA,GAAkB0e,EAAKtgB,EAAWC,KAAMD,+nCC1MxC,IAAMA,EAAa,CAEjBC,KAAM,iBACN4D,MAAO,CACL,CACE5D,KAAM,cACNiH,KAAM,UAER,CACEjH,KAAM,gBACNiH,KAAM,eAER,CACEjH,KAAM,WACNiH,KAAM,UACNiN,KAAM,eACNiM,cAAc,KASC8B,EAAW,SAAA/hB,yRAAAC,CAAA8hB,EAAA/hB,GAAA,YAAAE,KAAA6hB,urBAO9B,SAAAA,EAAa5hB,GAAS,IAAAC,+FAAAC,CAAA,KAAA0hB,IACpB3hB,EAAAF,EAAAI,KAAA,KAAMH,EAASN,EAAWC,OACrBkiB,oBACL,IAAMC,EAAS7hB,EAAK8hB,iBACmC,OAAvD9hB,EAAKsT,QAAQ,eAA2B,IAAZuO,EAAgBA,EAAS,GAAE7hB,CACzD,CA6BC,SA7BA2hB,KAAA,EAAArhB,IAAA,mBAAAC,MAED,WACE,OAAOE,KAAKshB,qBAAqBthB,KAAK6C,MAAM0e,YAC9C,GAAC,CAAA1hB,IAAA,iBAAAC,MAED,WACE,OAAOE,KAAKshB,qBAAqBE,WAAU,SAAC9f,GAAI,OAAKA,EAAKvB,UAAUI,SAAS,YAAY,GAC3F,GAAC,CAAAV,IAAA,iBAAAC,MAED,SAAgB2hB,GACdzhB,KAAKshB,qBACFje,SAAQ,SAAC3B,EAAMggB,GAAS,OAAKhgB,EAAKvB,UAAUuhB,IAAcD,EAAQ,MAAQ,UAAU,YAAY,IACnG,IAAME,EAAgB3hB,KAAKshB,qBAAqBG,GAEhDzhB,KAAK6S,QAAQ,gBAAiB8O,EAAe,CAAEC,aAAa,IAC5D5hB,KAAKmD,OAAOW,KAAK,sBAAuB6d,EAC1C,GAAC,CAAA9hB,IAAA,qBAAAC,MAED,WAEE,OADAE,KAAK6hB,eAAiB7hB,KAAK6hB,gBAAkBpW,MAAMC,KAAK1L,KAAKV,QAAQ8D,iBAAiB,WAC/EpD,KAAK6hB,cACd,GAAC,CAAAhiB,IAAA,oBAAAC,MAED,WAAqB,IAAAC,EAAA,KACnBC,KAAKshB,qBAAqBje,SAAQ,SAAC3D,EAAQ+hB,GAAK,OAAK/hB,EAClDO,iBAAiB,SAAS,SAAAuE,GACpBzE,EAAK2Y,QAAQ,aAAa3Y,EAAK8S,QAAQ,cAAe4O,EAC7D,GAAE,GACN,0EAACP,CAAA,CAzC6B,CAASvgB,EAAAA,IA4CzCC,EAAAA,EAAAA,GAAkBsgB,EAAaliB,EAAWC,KAAMD,2nFC7DhD,IAGqB8iB,EAAiB,SAAAC,yRAAA3iB,CAAA0iB,EAAAC,GAAA,YAAA1iB,KAAAyiB,urBAYpC,SAAAA,IAA8B,IAAjBrjB,EAAUwM,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,mGAAAzL,CAAA,KAAAsiB,GAAAziB,EAAAI,KAAA,KAAAzB,EAAAA,EAAA,GAErB,CACDgkB,cAAe,GACfC,aAAc,GACdC,cAAe,GACfC,UAAW,GACXC,QAAS,KAER3jB,GAEP,CAgCC,SA9BDqjB,KAAA,EAAAjiB,IAAA,yBAAAC,MAKA,WACE,IAAMkiB,GAAgBK,EAAAA,EAAAA,IAAmBriB,KAAK6D,aAAa,kBAE3D,GAAIme,EAAc/Y,QAAU,EAAK,MAAO,GAExC,GAA6B,IAAzB+Y,EAAc/Y,OAAgB,OAAO+Y,EAAc,GAAGM,eAAenV,EAAAA,EAAU,CAAEoV,IAAK,UAAWC,MAAO,OAAQC,KAAM,YAE1H,GAAIT,EAAc/Y,OAAS,EAAG,CAC5B,IAAMyZ,GAAQC,EAAAA,EAAAA,IAAaX,GAE3B,GAAIY,EAAAA,GAAkB1X,WAAC,EAAD2X,EAAIH,IAAU,OAAOV,EAAc,GAAGM,eAAenV,EAAAA,EAAU,CAAEqV,MAAO,OAAQC,KAAM,YAC5G,IAAMK,GAAiB5V,EAAAA,EAAAA,GAAS,sBAADrO,OAAuBsO,EAAAA,EAAQ,+BAAgC,MAE9F,GAAI4V,EAAAA,GAAmB7X,WAAC,EAAD2X,EAAIH,IAAQ,CACjC,IAAMM,EAASN,EAAM,GAAGJ,eAAenV,EAAAA,EAAU,CAAEoV,IAAK,YAExD,OAAOG,EAAM,GAAGJ,eAAenV,EAAAA,EAAU,CAAEoV,IAAK,UAAWC,MAAO,QAASC,KAAM,YAC9EjG,QAAQO,OAAO,IAAMiG,EAAS,KAAMN,EAAM,GAAGJ,eAAenV,EAAAA,EAAU,CAAEoV,IAAK,YAAeO,EAAiB,KAClH,CAEE,OAAOJ,EAAM,GAAGJ,eAAenV,EAAAA,EAAQnP,EAAA,CAAIukB,IAAK,UAAWC,MAAO,SAAaS,EAAAA,GAAkB/X,WAAC,EAAD2X,EAAIH,IAAS,CAAC,EAAI,CAAED,KAAM,aACzHK,EACAJ,EAAM,GAAGJ,eAAenV,EAAAA,EAAU,CAAEoV,IAAK,UAAWC,MAAO,QAASC,KAAM,WAEhF,CACF,0EAACX,CAAA,CAvDmC,CAASoB,EAAAA,qDCX/CC,EAAAA,KAAoB,WAClBC,EAAAA,EAASC,2BACX,4mDCUA,IAAM3V,EAAe9P,EAAQ,MAEvBkF,EAAe,aACfwgB,EAAqB,GAAHzkB,OAAMiE,EAAY,eACpCygB,EAAiB,GAAH1kB,OAAMiE,EAAY,WAEhC0gB,GAAmBtW,EAAAA,EAAAA,GAAS,sBAADrO,OAAuBsO,EAAAA,EAAQ,eAC1DsW,GAAcvW,EAAAA,EAAAA,GAAS,sBAADrO,OAAuBsO,EAAAA,EAAQ,WAKtCiW,EAAQ,WAQ3B,SAAAA,EAAa9jB,GAAwE,IAA/DokB,EAAYzY,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG0Y,EAAgB1Y,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG2Y,EAAc3Y,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACzL,CAAA,KAAA4jB,GACjFpjB,KAAKV,QAAUA,EACfU,KAAKmD,OAAS,IAAIuK,EAClB1N,KAAK0M,MAAQ1M,KAAKV,QAAQK,cAAc,iBAADd,OAAkB0kB,EAAc,OAClEvjB,KAAK0M,QACV1M,KAAK6jB,UAAY7jB,KAAKV,QAAQK,cAAc,iBAADd,OAAkBykB,EAAkB,OAC/EtjB,KAAK8jB,kBAAoBJ,aAAwB5B,EAAAA,EAAoB4B,EAAe,IAAI5B,EAAAA,EAAkB4B,GAC1G1jB,KAAK8jB,kBAAkB3gB,OAAO0N,GAAG,SAAU7Q,KAAK+jB,gBAAiB/jB,MACjEA,KAAKgkB,UAAYhkB,KAAKikB,cAAcN,GACpCrkB,EAAQwD,GAAgB,CACtBxD,QAASU,KAAKV,QACdoN,MAAO1M,KAAK0M,MACZvJ,OAAQnD,KAAKmD,OACb2gB,kBAAmB9jB,KAAK8jB,kBACxBI,mBAAqBlkB,KAAKkkB,mBAAoB5jB,KAAKN,MACnDmkB,WAAankB,KAAKmkB,WAAY7jB,KAAKN,MACnCokB,kCAAoCpkB,KAAKokB,kCAAmC9jB,KAAKN,OAEnFA,KAAK4jB,eAAiBA,EACxB,WA2KC,SAzKDR,IAAA,EAAAvjB,IAAA,qBAAAC,MAMA,WAAuC,IAAnB4jB,EAAYzY,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAIlC,OAHAjL,KAAK8jB,kBAAoBJ,aAAwB5B,EAAAA,EAAoB4B,EAAe,IAAI5B,EAAAA,EAAkB4B,GAC1G1jB,KAAK+jB,kBACL/jB,KAAK8jB,kBAAkB3gB,OAAO0N,GAAG,SAAU7Q,KAAK+jB,gBAAiB/jB,MAC1DA,IACT,GAEA,CAAAH,IAAA,aAAAC,MAOA,SAAYukB,GAEV,OADArkB,KAAKgkB,UAAUG,WAAWE,GACnBrkB,IACT,GAEA,CAAAH,IAAA,gBAAAC,MAKA,WAAsC,IAAAP,EAAA,KAAvBokB,EAAgB1Y,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3BqZ,EAAiB,CACrBC,KAAM,SACNC,QAASxkB,KAAK8jB,kBAAkBjgB,aAAa,aAC7C4gB,QAASzkB,KAAK8jB,kBAAkBjgB,aAAa,WAC7C6gB,QAAQ,EACRC,SAAU3kB,KAAK6jB,gBAAazY,EAC5BwZ,YAAanB,EAAYmB,YACzBC,OAAQrB,GAAoB,KAC5BsB,SAAS,EACTC,SAAU,SAAC/C,EAAegD,EAASpV,GAAQ,OAAKrQ,EAAK0lB,iBAAiBjD,EAAegD,EAASpV,EAAS,EACvGsV,YAAa,SAACC,EAAMC,EAAMC,EAAIC,GAAO,OAAK/lB,EAAK2lB,YAAYC,EAAMC,EAAMC,EAAIC,EAAQ,GAErFhB,EAAeO,OAAOU,YAAc,GACpC,IAAM5V,EAAO3R,EAAAA,EAAA,GAAQsmB,GAAmBX,GAGxC,OAFA3jB,KAAKukB,KAAO5U,EAAQ4U,KACpB5U,EAAQ6V,YAAcxlB,KAAKylB,oCACpBC,IAAU1lB,KAAK0M,MAAOiD,EAC/B,GAEA,CAAA9P,IAAA,oCAAAC,MAIA,WACE,OAAQE,KAAKukB,MACX,IAAK,SACH,IAAMvC,EAAgBhiB,KAAK8jB,kBAAkBjgB,aAAa,iBAC1D,OAAO4H,MAAMwI,QAAQ+N,GAAiB,CAACA,EAAc,IAAM,CAAChiB,KAAK8jB,kBAAkBjgB,aAAa,iBAElG,IAAK,WACH,OAAO7D,KAAK8jB,kBAAkBjgB,aAAa,iBAC7C,IAAK,QACH,IAAMme,EAAgBhiB,KAAK8jB,kBAAkBjgB,aAAa,iBAC1D,MAAO,EAAC8hB,EAAAA,EAAAA,IAAW3D,IAAgB4D,EAAAA,EAAAA,IAAW5D,IAGpD,GAEA,CAAAniB,IAAA,kCAAAC,MAIA,WAAmF,IAC7E+lB,EAD2BC,EAAiB7a,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,GAAI8a,EAAY9a,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,QAAGG,EAEtE,OAAQpL,KAAKukB,MACX,IAAK,SAEH,KADAsB,GAAWG,EAAAA,EAAAA,IAAaF,EAAkB,MACzBD,IAAa7lB,KAAK8jB,kBAAkBjgB,aAAa,gBAAiB,MACnF7D,KAAK8jB,kBAAkBmC,cAAc,CACnChE,aAAc4D,EACd7D,cAAe,CAAC6D,KAElB,MACF,IAAK,WAEH,KADAA,EAAWC,EAAkBrkB,KAAI,SAAA7C,GAAC,OAAIonB,EAAAA,EAAAA,IAAapnB,EAAE,MACpCinB,IAAa7lB,KAAK8jB,kBAAkBjgB,aAAa,iBAAkB,MAChFkiB,EACF/lB,KAAK8jB,kBAAkBmC,cAAc,CACnChE,cAAciE,EAAAA,EAAAA,IAAWH,GACzB/D,cAAe6D,IAGjB7lB,KAAK8jB,kBAAkBqC,aAAa,gBAAiBN,GAEvD,MAEF,IAAK,QAGH,KADAA,GADsBO,EAAAA,EAAAA,IAAqBN,EAAkB,GAAIA,EAAkB,IAC1DrkB,KAAI,SAAA7C,GAAC,OAAIonB,EAAAA,EAAAA,IAAapnB,EAAE,MAChCinB,IAAa7lB,KAAK8jB,kBAAkBjgB,aAAa,iBAAkB,MACpF7D,KAAK8jB,kBAAkBqC,aAAa,gBAAiBN,GAI3D,GAEA,CAAAhmB,IAAA,kBAAAC,MAKA,WAIE,OAHAE,KAAKgkB,UAAUqC,IAAI,UAAWrmB,KAAK8jB,kBAAkBjgB,aAAa,cAClE7D,KAAKgkB,UAAUqC,IAAI,UAAWrmB,KAAK8jB,kBAAkBjgB,aAAa,YAClE7D,KAAKgkB,UAAUsC,QAAQtmB,KAAKylB,qCACrBzlB,IACT,GAEA,CAAAH,IAAA,mBAAAC,MAGA,SAAkBkiB,EAAegD,EAASpV,GACxC,KAAkB,UAAd5P,KAAKukB,MAAoBvC,EAAc/Y,OAAS,KAClC,WAAdjJ,KAAKukB,MAAsBvC,EAAc/Y,cACvBmC,IAAlB4W,GAAgCA,EAAc/Y,OAAlD,CAEA,IAAI8c,EACJ,GAAI/lB,KAAKumB,+BAAgC,CACvC,IAAMjS,EAAStU,KAAKumB,+BAA+BvE,EAAehiB,KAAK4jB,gBACvE5jB,KAAKukB,KAAOjQ,EAAOiQ,KACnBwB,EAAezR,EAAO2N,aACtBD,EAAgB1N,EAAO0N,aACzB,CAEAhiB,KAAKwmB,gCAAgCxE,EAAe+D,GACpD/lB,KAAKgkB,UAAUyC,QAXiD,CAYlE,GAEA,CAAA5mB,IAAA,cAAAC,MAGA,SAAaqlB,EAAMC,EAAMC,EAAIC,GAC3B,IAAMoB,GAAoBV,EAAAA,EAAAA,IAAaV,EAAQqB,SAC3C3mB,KAAK8jB,kBAAkBjgB,aAAa,iBAAiB0P,SAASmT,KAAsBpB,EAAQ3E,WAAa,iBAC3F,WAAd3gB,KAAKukB,MAAqBvkB,KAAK8jB,kBAAkBjgB,aAAa,iBAAiB0P,SAASmT,KAAsBpB,EAAQ3E,WAAa,wBACzI,GAEA,CAAA9gB,IAAA,oCAAAC,MAuBA,WAAyD,IAAtB8mB,EAAQ3b,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,QAAGG,EAC5CpL,KAAKumB,+BAAiCK,CACxC,MAAC,EAAA/mB,IAAA,4BAAAC,MArBD,WAGE,IAFA,IAAM+mB,EAAoBvZ,OAAOyE,SAAS3O,iBAAiB,iBAADvE,OAAkBiE,EAAY,OAClFgkB,EAAY,GACT9hB,EAAI,EAAGA,EAAI6hB,EAAkB5d,OAAQjE,IAC5C8hB,EAAUxjB,KAAK8f,EAAS2D,wBAAwBF,EAAkB7hB,KAEpE,OAAO8hB,CACT,GAEA,CAAAjnB,IAAA,0BAAAC,MAMA,SAAgCR,GAC9B,OAAO,IAAI8jB,EAAS9jB,EAD+B2L,UAAAhC,OAAA,QAAAmC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEzD,qFAACmY,CAAA,CAtM0B,8gDCtB7B,IAAMpkB,EAAa,CACjBC,KAAM,SACN4D,MAAO,IAGHE,EAAmB,CACvBikB,iBAAkB,IAAFnoB,OAAMG,EAAWC,KAAI,gBACrCgoB,aAAc,IAAFpoB,OAAMG,EAAWC,KAAI,YAG7BkU,EACG,aAGY+T,EAAI,SAAA/nB,yRAAAC,CAAA8nB,EAAA/nB,GAAA,YAAAE,KAAA6nB,+jBAMvB,SAAAA,EAAa5nB,GAAS,IAAAC,EAOlB,mGAPkBC,CAAA,KAAA0nB,GACpB3nB,EAAAF,EAAAI,KAAA,KAAMH,EAASN,EAAWC,MAC1ByE,EAAAA,EAAgBC,aAAa,CAAC,CAACpE,EAAKD,QAAS,CAAEiE,MAAO,SAACC,GAAE,OAAKjE,EAAKggB,SAAS/b,EAAG,KAAMxE,EAAWC,MAChGM,EAAKD,QAAQN,EAAWC,MAAMkoB,SAAY5nB,EAAK4nB,SAAU7mB,KAAIsf,EAAArgB,IAC7DA,EAAKD,QAAQN,EAAWC,MAAMmhB,kBAAqB7gB,EAAK6gB,kBAAmB9f,KAAIsf,EAAArgB,IAC/E+R,EAAAA,EAAiBC,wBAAwBvS,EAAWC,KAAMM,EAAK4D,sdAAMnF,CAAA,GAChEuB,EAAKD,QAAQkS,aAAa2B,IAAe,CAAEjS,MAAO3B,EAAKD,QAAQb,WAAW0U,GAAYrT,SACzFP,CACJ,CA2BC,SAzBD2nB,KAAA,EAAArnB,IAAA,oBAAAC,MAIA,WACE,GAAKE,KAAKV,QACV,OAAOU,KAAKV,QAAQ2hB,OACtB,GAEA,CAAAphB,IAAA,WAAAC,MAGA,SAAU0D,GACR,IAAMgJ,EAAShJ,EAAGI,cAClB5D,KAAKmD,OAAOW,KAAK,YAAa0I,EAChC,GAEA,CAAA3M,IAAA,WAAAC,MAIA,WACE,IAAIsnB,EAAYpnB,KAAKV,QAAQK,cAAcoD,EAAiBikB,kBAE5D,OADKI,IAAWA,EAAYpnB,KAAKV,QAAQK,cAAcoD,EAAiBkkB,eACjEG,EAAYA,EAAU9G,UAAY,EAC3C,0EAAC4G,CAAA,CAzCsB,CAASvmB,EAAAA,IA4ClCC,EAAAA,EAAAA,GAAkBsmB,EAAMloB,EAAWC,KAAMD","sources":["webpack://@sunwebgroup/design-system/./shared/modules/components/absolute-dialog/c-absolute-dialog.template.js","webpack://@sunwebgroup/design-system/./shared/modules/components/absolute-dialog/main.js","webpack://@sunwebgroup/design-system/./shared/modules/components/accordion/c-accordion__item.template.js","webpack://@sunwebgroup/design-system/./shared/modules/components/accordion/c-accordion.template.js","webpack://@sunwebgroup/design-system/./shared/modules/components/actionable-list/main.js","webpack://@sunwebgroup/design-system/./shared/modules/components/autocomplete/locales.js","webpack://@sunwebgroup/design-system/./shared/modules/components/autocomplete/main.js","webpack://@sunwebgroup/design-system/./shared/modules/components/backdrop/main.js","webpack://@sunwebgroup/design-system/./shared/modules/components/box/c-box.template.js","webpack://@sunwebgroup/design-system/./shared/modules/components/btn/main.js","webpack://@sunwebgroup/design-system/./shared/modules/components/button-group/main.js","webpack://@sunwebgroup/design-system/./shared/modules/components/calendar/calendar-data-model.js","webpack://@sunwebgroup/design-system/./shared/modules/components/calendar/data-js-api.js","webpack://@sunwebgroup/design-system/./shared/modules/components/calendar/main.js","webpack://@sunwebgroup/design-system/./shared/modules/components/card/main.js"],"sourcesContent":["import { encodeAttributes } from '../../../js/helpers/string'\nimport { getTokenClass } from '../../../js/helpers/tokens'\n\n// Import box tokens\nconst tokensShared = require('./data/c-absolute-dialog__tokens.json')['c-absolute-dialog']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/components/box/data/c-absolute-dialog__tokens.json`)['c-absolute-dialog'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\n/**\n * The defaultAbsoluteDialogData contains all data needed to hydrate an absolute dialog view\n *\n * @typedef {Object} defaultAbsoluteDialogData\n * @property {String} id - SelectedState's id\n * @property {String} title - Absolute dialog title\n * @property {String} body - Absolute dialog content\n * @property {Boolean} closable - True or false\n * @property {String} alertType - Alert type of the dialog\n * @property {String} dialogType - Dialog type of the dialog\n * @property {Object} [attributes] - Attributes for the button\n * @property {String} [extraContent] - Extra content (html)\n */\nexport const defaultAbsoluteDialogData = {\n id: '',\n title: '',\n body: '',\n closable: true,\n alertType: 'default',\n dialogType: 'default',\n headerSize: 'default',\n attributes: {},\n extraContent: ''\n}\n\nexport const AbsoluteDialogTemplate = (d) => {\n d = { ...defaultAbsoluteDialogData, ...d }\n return `\n
` +\n `${d.title\n ? `
\n

\n \n ${d.title}\n

\n
`\n : ''}` +\n `${d.closable\n ? ''\n : ''}` +\n `
\n
${d.body}
\n
\n ${d.extraContent}\n
\n `\n}\n","import Component from '../../../js/core/component/component'\nimport { registerComponent } from '../../../js/core/component/component-directory'\n\nconst componentAPI = 'c-absolute-dialog'\nconst definition = {\n name: 'c-absolute-dialog'\n}\n\n/**\n * Absolute dialog\n *\n */\nexport default class AbsoluteDialog extends Component {\n /**\n * Creates a new AbsoluteDialog behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n */\n constructor (element) {\n super(element, definition.name)\n this.button = (this.element.querySelector(`[data-js-component*=\"${componentAPI}--button\"]`))\n\n this.bindEvents()\n }\n\n /**\n * Binds the events for the component behaviour\n */\n bindEvents () {\n if (this.button) {\n this.button.addEventListener('click', (info) => {\n this.element.classList.add('is-hidden')\n })\n }\n // end of fade away animation\n this.element.addEventListener('webkitTransitionEnd', this.closeDialogIfIsHidden.bind(this))\n this.element.addEventListener('msTransitionEnd', this.closeDialogIfIsHidden.bind(this))\n this.element.addEventListener('oTransitionEnd', this.closeDialogIfIsHidden.bind(this))\n this.element.addEventListener('otransitionend', this.closeDialogIfIsHidden.bind(this))\n this.element.addEventListener('transitionend', this.closeDialogIfIsHidden.bind(this))\n }\n\n /**\n * Checks if dialog have the is-hidden class\n */\n closeDialogIfIsHidden () {\n if (this.element.classList.contains('is-hidden')) {\n this.closeDialog()\n }\n }\n\n /**\n * Removes the element\n */\n closeDialog () {\n this.element.parentNode.removeChild(this.element)\n }\n}\n\nregisterComponent(AbsoluteDialog, definition.name, definition)\n","/**\n * The defaultAccordionItemData contains all data needed to hydrate an Accordion Item view\n *\n * @typedef {Object} AccordionItem\n *\n * @property {String} id - id\n * @property {String} icon - Accordion item icon\n * @property {String} size - Accordion size\n * @property {String} title - Accordion title\n * @property {String} subtitle - Accordion subtitle\n * @property {Boolean} isOpened - Is initially opened\n */\n\nimport { defaultCollapseData, CollapseTemplate } from '../../components/collapse/c-collapse.template'\nimport { defaultCollapseTriggerData, CollapseTriggerTemplate } from '../../components/collapse/c-collapse__trigger.template'\nimport { getTokenClass } from '../../../js/helpers/tokens'\n\n// Import tokens\nconst tokensShared = require('./data/c-accordion__tokens.json')['c-accordion']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/components/accordion/data/c-accordion__tokens.json`)['c-accordion'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\nexport const defaultAccordionItemData = {\n id: 0,\n icon: '',\n size: '',\n title: '',\n subtitle: '',\n isOpened: false,\n track: '',\n collapseAttributes: '',\n ariaLabelTextForArrow: ''\n}\n\nexport const AccordionItemTemplate = (d) => {\n d = { ...defaultAccordionItemData, ...d }\n\n return `
\n
\n ${d.icon ? '' : ''}\n
${d.title}
\n ${d.subtitle && !d.size ? '
' + d.subtitle + '
' : ''}\n ${CollapseTriggerTemplate({ ...defaultCollapseTriggerData, id: d.id, text: '', textPattern: null, arrow: true, smooth: true, extraClasses: 'c-accordion__item-trigger', ariaLabel: d.ariaLabelTextForArrow })}\n
\n ${CollapseTemplate(Object.assign({}, defaultCollapseData, {\n id: d.id,\n opened: d.isOpened,\n maxItems: null,\n childrenWrapper: null,\n attributes: d.collapseAttributes,\n extraClasses: 'c-accordion__item-collapse',\n track: d.track,\n html: `\n
\n ${d.innerHTML ? `${d.innerHTML}` : ''}\n
\n `\n }))}\n
`\n}\n","/**\n * The defaultAccordionData contains all data needed to hydrate an Accordion view\n *\n * @typedef {Object} Accordion\n *\n * @property {String} id - id\n * @property {String} size - Accordion size\n * @property {String} extraClasses - Accordion extraClasses\n */\n\nimport { getTokenClass } from '../../../js/helpers/tokens'\nimport { AccordionItemTemplate } from './c-accordion__item.template'\n\n// Import tokens\nconst tokensShared = require('./data/c-accordion__tokens.json')['c-accordion']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/components/accordion/data/c-accordion__tokens.json`)['c-accordion'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\nexport const defaultAccordionData = {\n id: 0,\n size: '',\n extraClasses: '',\n items: []\n}\n\nexport const AccordionTemplate = (d) => {\n d = { ...defaultAccordionData, ...d }\n\n return `\n
\n ${d.items.map((item) => AccordionItemTemplate({ size: d.size, ...item })).join('')}\n
\n `\n}\n","import Component from '../../../js/core/component/component'\nimport { registerComponent } from '../../../js/core/component/component-directory'\nimport domEventsHelper from '../../../js/document/dom-events-helper'\n\n/**\n * Props & State\n *\n * There are two types of data that control a component: props and state.\n * Props are set on instantiation and they are fixed throughout the lifetime\n * of a component. For data that is going to change, we have to use state.\n */\n\nconst definition = {\n name: 'c-actionable-list',\n props: []\n}\n\nconst componentAPI = 'c-actionable-list'\nconst componentQueries = {\n itemElement: `[data-${componentAPI}__item]`,\n itemId: `data-${componentAPI}__item_id`\n}\n\n/**\n * ActionableList content\n *\n */\nexport default class ActionableList extends Component {\n /**\n * Creates a new actionable list behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n */\n constructor (element) {\n super(element, definition.name)\n const events = []\n const items = this.element.querySelectorAll(componentQueries.itemElement)\n items.forEach(item => {\n events.push([item, { click: (ev) => this.onClick(ev) }])\n })\n domEventsHelper.attachEvents(events, definition.name)\n }\n\n onClick (ev) {\n const element = ev.currentTarget\n const id = element.getAttribute(componentQueries.itemId)\n this.events.emit('selectItem', id)\n }\n}\n\nregisterComponent(ActionableList, definition.name, definition)\n","\nexport const da = {\n searchingFor: 'Searching for'\n}\n\nexport const de = {\n searchingFor: 'Suche nach'\n}\n\nexport const en = {\n searchingFor: 'Searching for'\n}\n\nexport const nb = {\n searchingFor: 'Leter etter'\n}\n\nexport const fr = {\n searchingFor: 'À la recherche de'\n}\n\nexport const nl = {\n searchingFor: 'Zoeken naar'\n}\n\nexport const sv = {\n searchingFor: 'Söker efter'\n}\n","import { debounce } from '../../../js/utils'\nimport Collection from '../../../js/core/collection'\nimport { forceRepaint, getInnerHeight, getStyle } from '../../../js/document/css'\nimport { smooth as scrollSmooth } from '../../../js/document/scroll'\nimport domEventsHelper from '../../../js/document/dom-events-helper'\nimport { elementFromString } from '../../../js/document/html-helper'\nimport FloatingBox from '../floating-box/main'\nimport { getAbsoluteUrl } from '../../../js/document/url'\nimport { fetch as whatwgFetch } from 'whatwg-fetch'\nimport { LoaderTemplate } from '../loader/c-loader.template'\nimport breakpoints from '../../../js/document/breakpoints'\nimport { register } from '../../../js/document/namespace'\nimport { language } from '../../../js/user/locale-settings'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport { autocompleteEvents } from '../../../js/document/event-types'\nimport Component from '../../../js/core/component/component'\nimport { encodeHtml } from '../../../js/helpers/string'\n\nconst globalLocales = register(`window.sundio.i18n.${language}.global`)\nconst componentLocales = register(`window.sundio.i18n.${language}.autocomplete`)\n\nconst abortableFetch = window.Request && 'signal' in new window.Request('') ? window.fetch : whatwgFetch\nconst EventEmitter = require('eventemitter3')\n\n// Ensure other child component APIs are loaded on time\nrequire('../textbox/main')\n\nconst componentAPI = 'c-autocomplete'\n\nconst componentQueries = {\n textBox: `[data-${componentAPI}__textbox]`,\n floatsFrom: `data-${componentAPI}__floats-from`,\n forceOpenUntil: `data-${componentAPI}__force-open-until`,\n track: 'data-track'\n}\n\nconst Diacritics = require('diacritic')\n\n/**\n * The AutocompleteSearch contains all data related with search term and given results\n *\n * @typedef {Object} AutocompleteSearch\n *\n * @property {String} term - The escaped term used on search\n * @property {(RegExp|null)} termRegExp - The RegExp build from term\n * @property {Model[]} results - Results matching term and searchAttributes\n * @property {Model[]} resultsShown - Subset or alternate results to be displayed\n */\n\n/**\n * The AutocompleteSelection contains all data related with selected stuff\n *\n * @typedef {Object} AutocompleteSelection\n *\n * @property {String} text - The text used on input field\n * @property {(Model|null)} model - The matching model if there's any\n * @property {(HTMLElement|null)} resultElement - The matching result element if there's any\n */\n\n/**\n * The AutocompleteOptions contains all configuration to build an instance\n *\n * @typedef {Object} AutocompleteOptions\n *\n * @property {Collection} data - The data to search for\n * @property {Boolean} [filterAndSort] - If true, will filter and sort the data with the current selection\n * @property {String[]} searchAttributes - The model attributes where to search for\n * @property {AutocompleteSelection} [selection] - The current selection\n * @property {Integer} [delay] - The delay in ms to perform a search after typing chars\n * @property {Integer} [minChars] - The min number of chars to perform a search\n * @property {(Integer|null)} [maxResults] - The max number of results to display from matching models\n * @property {String[]} [displayAttributes] - The model attributes to be shown on results\n * @property {Boolean} [emptyShownResults] - If true, will show results when input is empty & focused\n * @property {(Model[]|null)} [emptyShownResultsData] - The models to display when input is empty & focused\n * @property {Boolean} [cache] - If true, will cache searches to improve performance\n * @property {String} [minHeight] - The minimum height of searchResults element when it overflows bottom viewport edge\n * @property {String} [maxHeight] - The maxHeight height of searchResults element\n * @property {String} [floatsFrom] - The breakpoint when floating box will start to float\n * @property {String} [forceOpenUntil] - The breakpoint until floating box will open before typing anything, just by clicking\n * @property {String} [resultClassName] - The class name used to identify a result into searchResults element\n * @property {String} [selectedClassName] - The class name used to mark result into selected state\n * @property {String} [url] - The url used for live asynchronous searches via API, for each input change. Needs [urlSearchParam] to be configured as well.\n * @property {String} [urlSearchParam] - The query string parameter used for searches via API, for sending the current selection. Needs [url] to be configured as well.\n * @property {Object} [urlConfig] - Additional request configuration to use when calling API\n */\nconst defaults = {\n data: new Collection([]),\n url: null,\n urlSearchParam: null,\n urlParams: {},\n urlConfig: {\n credentials: 'include',\n headers: {\n Accept: 'application/json'\n }\n },\n filterAndSort: true,\n searchAttributes: [],\n selection: null,\n delay: 150,\n minChars: 1,\n maxResults: null,\n displayAttributes: [],\n emptyShownResults: true,\n emptyShownResultsData: null,\n cache: true,\n minHeight: '120px',\n maxHeight: '400px',\n floatsFrom: 'xs',\n forceOpenUntil: null,\n resultClassName: 'c-autocomplete__result',\n selectedClassName: 'is-selected'\n}\n\n/**\n * Autocomplete\n */\nexport default class Autocomplete {\n /**\n * @constructor\n *\n * @param {HTMLElement} element - The HTML component element.\n * @param {AutocompleteOptions} [options={}] - Options object\n *\n */\n constructor (element, options = {}) {\n this.element = element\n this.events = new EventEmitter()\n this.options = { ...defaults, ...options }\n\n // Override some options from element attributes\n this.options.floatsFrom = this.element.getAttribute(componentQueries.floatsFrom) || this.options.floatsFrom\n this.options.forceOpenUntil =\n this.element.getAttribute(componentQueries.forceOpenUntil) || this.options.forceOpenUntil\n\n // Get the local strings\n this.locales = this._getLocales()\n\n // Run the queries finding for elements & access to available API\n this.textBox = this.element.querySelector(componentQueries.textBox)\n this.textBoxApi = this.textBox['c-textbox']\n this.textBoxInput = this.textBox.querySelector('input')\n\n // Recover a selection if it's given on options\n if (this.options.selection && this.options.selection.model) {\n this.selection = this.selection || this.options.selection\n this.setSelectionFromModel(this.options.selection.model, this.selection).updateInputValueFromSelection(\n this.selection\n )\n }\n\n // Setup initial selection & search objects\n this.selection = this.selection || this.newSelectionFromInput()\n this.tempSelection = null\n this.currentSearch = null\n this.searchCache = this.options.cache ? {} : undefined\n this.dataCache = this.options.cache ? {} : undefined\n\n // Debounced input changes function\n this.debouncedInputChange = debounce(() => this.onInputChange(), this.options.delay)\n\n // Bind child component events\n this.textBoxApi.events.on('keydown', this.onKeyDown, this)\n this.textBoxApi.events.on('keyup', this.onKeyUp, this)\n if (!this.options.disableTextBoxOnBlur) this.textBoxApi.events.on('blur', this.onBlur, this)\n this.textBoxApi.events.on('focus', this.onFocus, this)\n this.textBoxApi.events.on('clear', this.resetSelection, this)\n\n // Expose component public API\n element[componentAPI] = {\n element: this.element,\n events: this.events,\n textBox: this.textBox,\n setOptions: this.setOptions.bind(this),\n remove: this.remove.bind(this)\n }\n\n registeredEvents.registerComponentEvents(componentAPI, this.events, {\n ...(this.element.hasAttribute(componentQueries.track) && {\n track: this.element.attributes[componentQueries.track].value\n })\n })\n }\n\n /**\n * Set or updates the current options\n *\n * @param {AutocompleteOptions} newOptions\n *\n * @returns {Autocomplete} Self instance\n */\n setOptions (newOptions) {\n this.options = { ...this.options, ...newOptions }\n // Recover a selection if it's given on options\n if (this.options.selection) {\n this.setSelectionFromModel(this.options.selection.model, this.options.selection).updateInputValueFromSelection(\n this.options.selection\n )\n }\n this.searchCache = this.options.cache ? {} : undefined\n this.dataCache = this.options.cache ? {} : undefined\n return this\n }\n\n /**\n * Removes the component instance\n */\n remove () {\n domEventsHelper.attachEvents(this.resultsElementEvents, componentAPI)\n this.removeResultsElement()\n delete this.resultsElement\n delete this.element[componentAPI]\n }\n\n /**\n * Return a locale strings object\n */\n _getLocales () {\n const customLocaleElement = document.querySelector(`[data-type=\"i18n\"][data-uid=\"${this.element.id}\"]`)\n let customLocaleData = null\n try {\n customLocaleData = JSON.parse(customLocaleElement.textContent)\n } catch (err) {}\n\n return { ...globalLocales, ...componentLocales, ...(customLocaleData || {}) }\n }\n\n /*\n * -----------------------------------------------------\n * SELECTION RELATED METHODS\n * -----------------------------------------------------\n * */\n\n /**\n * Returns a new selection based on input value\n *\n * @returns {AutocompleteSelection}\n */\n newSelectionFromInput () {\n const min = this.isAsyncSearch() ? this.options.asyncSearchMinChars : this.options.minChars\n const text = this.textBoxInput.value.length >= min ? this.textBoxInput.value.trim() : ''\n return this.newSelectionFromText(text)\n }\n\n /**\n * Returns a new selection based on given text\n *\n * @param {String} text\n *\n * @returns {AutocompleteSelection}\n */\n newSelectionFromText (text) {\n return {\n text,\n model: this.options.data.findWhere(this.options.searchAttributes[0], text) || null,\n resultElement: null\n }\n }\n\n /**\n * Returns a new selection based on given model\n *\n * @param {Model} model - The selected model\n *\n * @returns {AutocompleteSelection}\n */\n newSelectionFromModel (model) {\n return {\n text: model.getAttribute(this.options.searchAttributes[0]).toString(),\n model,\n resultElement: null\n }\n }\n\n /**\n * Sets Selection from certain model\n *\n * @param {Model} model - The selected model\n * @param {AutocompleteSelection} [selection] - The selected model\n *\n * @returns {Autocomplete} Self instance\n */\n setSelectionFromModel (model, selection = this.tempSelection) {\n if (selection && selection.model === model) return this\n selection = model\n ? this.newSelectionFromModel(model)\n : {\n text: '',\n model: null,\n resultElement: null\n }\n return this\n }\n\n /**\n * Find and set resultElement from the given selection\n * - Also change element state to selected, by adding the selected className\n *\n * @param {AutocompleteSelection} [selection] - The selection object to set into\n *\n * @returns {Autocomplete} self instance\n */\n setSelectionResultElement (selection = this.tempSelection) {\n if (!selection || !selection.model) return this\n const resultElement = this.resultsElement.querySelector(`[data-cid=\"${selection.model.cid}\"]`) || null\n if (!resultElement) return this\n resultElement.classList.add(this.options.selectedClassName)\n selection.resultElement = resultElement\n return this\n }\n\n /**\n * Unset resultElement and it's selected state from the given selection\n *\n * @param {AutocompleteSelection} [selection] - The selection object to unset from\n *\n * @returns {Autocomplete} self instance\n */\n unsetSelectionResultElement (selection = this.tempSelection) {\n if (selection.resultElement) selection.resultElement.classList.remove(this.options.selectedClassName)\n selection.resultElement = null\n return this\n }\n\n /**\n * Updates the input value with a given selection\n *\n * @param {AutocompleteSelection} [selection]\n *\n * @returns {Autocomplete} Self instance\n */\n updateInputValueFromSelection (selection = this.tempSelection) {\n this.textBoxApi.setProp(\n 'value',\n selection.model ? selection.model.getAttribute(this.options.searchAttributes[0]) : ''\n )\n return this\n }\n\n /*\n * -----------------------------------------------------\n * SEARCH RELATED METHODS\n * -----------------------------------------------------\n * */\n\n /**\n * Returns true if searches are asynchronous via API\n *\n * @returns {Boolean}\n */\n isAsyncSearch () {\n return this.options.url && this.options.urlSearchParam\n }\n\n /**\n * Returns a new blank search with or without resultsShown according emptyShownResults option & data\n *\n * @returns {AutocompleteSearch}\n */\n newEmptySearch () {\n return {\n term: '',\n termRegExp: null,\n results: [],\n resultsShown:\n this.options.emptyShownResults && this.options.emptyShownResultsData.length\n ? this.options.emptyShownResultsData\n : []\n }\n }\n\n /**\n * Get current results based on currentSearch\n * This method can be overridden on instances if you want custom search\n *\n * @param {RegExp} termRegExp - The regExp to match attributes\n *\n * @returns {Array} The matching results\n */\n getResults (termRegExp) {\n // Search for results matching regExp on every searchAttribute\n const matchResults = []\n this.options.searchAttributes.forEach(attr => {\n this.options.data.models\n .filter(model => Diacritics.clean(model.attributes[attr]).match(termRegExp))\n .forEach(model => {\n if (!matchResults.includes(model)) matchResults.push(model)\n })\n })\n\n // Compute match length (in chars) for FIRST searchAttribute on matchResults\n // Note: by pre calculating match lengths, sorting will be significantly faster\n const matchLengths = {}\n const sum = (...args) => [...args].reduce((a, b) => a + b, 0)\n const match = str => {\n return str ? str.match(termRegExp) || [] : []\n }\n const matchLength = str => sum(...match(str).map(m => m.length))\n matchResults.forEach(result => {\n matchLengths[result.cid] = matchLength(result.getAttribute(this.options.searchAttributes[0]))\n })\n\n // Return matchResults sorted by matchLengths (more coincidences goes first)\n return matchResults.sort((a, b) => {\n const aLength = matchLengths[a.cid]\n const bLength = matchLengths[b.cid]\n return aLength < bLength ? 1 : aLength > bLength ? -1 : 0\n })\n }\n\n /**\n * Returns a search based on given text\n * - Uses the cache (if enabled) to retrieve & store searches\n *\n * @param {String} text\n *\n * @returns {AutocompleteSearch}\n */\n async getSearchFromText (text) {\n // Try to recover the search from cache, if it's enabled\n if (this.options.cache && this.searchCache[text]) {\n if (this.isAsyncSearch()) this.options.data = this.dataCache[text]\n return this.searchCache[text]\n }\n\n // Prepare the text and regExp\n const safeText = this._getSafeText(text)\n const sanitizedText = this._getSafeText(Diacritics.clean(text))\n const regExp = this._getRegExp(safeText)\n const sanitizedRegExp = this._getRegExp(sanitizedText)\n\n // Update data if asynchronous\n if (this.isAsyncSearch()) {\n try {\n this.options.data = await this.getFreshData(text)\n } catch (error) {\n this.asyncSearchInProgress = false\n throw error\n }\n this.asyncSearchInProgress = false\n }\n\n // Get the matching results\n const results = sanitizedRegExp\n ? this.options.filterAndSort\n ? this.getResults(sanitizedRegExp)\n : this.options.data.models\n : []\n const resultsShown = text\n ? this.options.maxResults\n ? results.slice(0, this.options.maxResults)\n : results\n : this.options.emptyShownResults\n ? this.options.emptyShownResultsData || this.options.data.models\n : []\n\n // Cache and return currentSearch\n const search = {\n term: safeText,\n termRegExp: regExp,\n results,\n resultsShown\n }\n if (this.options.cache) this.searchCache[text] = search\n if (this.options.cache && this.isAsyncSearch()) this.dataCache[text] = this.options.data\n return search\n }\n\n /**\n * Updates data collection with fresh data gotten from an API\n *\n * @param {String} text\n *\n * @returns {AutocompleteSearch}\n */\n async getFreshData (text) {\n if (this.abortController) this.abortController.abort()\n this.abortController = new window.AbortController()\n\n const requestUrl = new window.URL(getAbsoluteUrl(this.options.url))\n Object.entries(this.options.urlParams).forEach(([paramName, paramValue]) => {\n requestUrl.searchParams.append(paramName, paramValue)\n })\n\n requestUrl.searchParams.append(this.options.urlSearchParam, text)\n\n const freshData = await abortableFetch(requestUrl.href, {\n signal: this.abortController.signal,\n ...this.options.urlConfig\n })\n .then(response => response.json())\n .catch(error => {\n throw new Error(error)\n })\n this.abortController = null\n return new Collection(this.processFreshData(freshData))\n }\n\n /**\n * Process fresh data\n * Sometimes the API response has a different schema than what we expect\n * This method will be called AFTER a fetch and BEFORE populating the data collection\n * It can also be overridden per instance\n *\n * @param {*} data\n *\n * @returns {*} processed data\n */\n processFreshData (data) {\n return data\n }\n\n /*\n * -----------------------------------------------------\n * RESULTS RELATED METHODS\n * -----------------------------------------------------\n * */\n\n /**\n * Update current results based on currentSearch & tempSelection\n *\n * - Remove results element & break if:\n * - CurrentSearch is falsely\n * - There's no term to search\n * && There's no results to show\n * && no asyncSearch is running\n *\n * - Append results element (if not appended before)\n * - Set selection result element\n * - Update results scroll\n *\n * @returns {Autocomplete} Self instance\n */\n updateResults () {\n const forceOpen = this.options.forceOpenUntil\n ? window.innerWidth < breakpoints[this.options.forceOpenUntil]\n : false\n if (\n (!this.currentSearch && !forceOpen) ||\n (!forceOpen && !this.currentSearch.term && !this.currentSearch.resultsShown.length && !this.asyncSearchInProgress)\n ) {\n this.removeResultsElement()\n return this\n }\n\n return this.appendResultsElement()\n .setSelectionResultElement()\n .updateResultsScroll()\n }\n\n /**\n * Update results scroll based on currentSearch & tempSelection\n *\n * - Adjust results element scroll to top or selected resultElement\n *\n * @returns {Autocomplete} Self instance\n */\n updateResultsScroll () {\n if (this.tempSelection && this.currentSearch.resultsShown.includes(this.tempSelection.model)) {\n this.ensureResultVisibility()\n } else {\n this.resultsScrollElement.scrollTop = 0\n }\n return this\n }\n\n /**\n * Fixes the resultsElement scroll to allocate the given selection resultElement\n *\n * @param {AutocompleteSelection} [selection]\n *\n * @returns {Autocomplete} self instance\n */\n ensureResultVisibility (selection = this.tempSelection) {\n if (!selection.resultElement) return this\n\n // Get the visible ang height ranges for affected elements\n const resultsInnerHeight = getInnerHeight(this.resultsScrollElement)\n const safeMargin = 20\n const resultsVisibleRange = [\n this.resultsScrollElement.scrollTop,\n this.resultsScrollElement.scrollTop + resultsInnerHeight\n ]\n const resultHeightRange = [\n selection.resultElement.offsetTop,\n selection.resultElement.offsetTop + selection.resultElement.offsetHeight\n ]\n\n // Fixes the scroll if overflows to top\n if (resultHeightRange[0] < resultsVisibleRange[0]) {\n scrollSmooth(this.resultsScrollElement, 0, resultHeightRange[0] - safeMargin)\n }\n\n // Fixes the scroll if overflows to bottom\n if (resultHeightRange[1] > resultsVisibleRange[1]) {\n scrollSmooth(this.resultsScrollElement, 0, resultHeightRange[1] - resultsInnerHeight + safeMargin)\n }\n\n return this\n }\n\n /**\n * Appends the current resultsElement\n *\n * - Creates resultsElement if there's none, and attach mouse events into it\n * - Fills resultsElement with...\n * - Current Search results (if there's any)\n * - Searching for results (if there's an async search in progress)\n * - No results found (on other cases)\n * - Append resultsElement (if was not connected)\n * - Levitate textBox (if needed)\n * - Open or update resultsElement (floatingBox)\n * - Emit OPEN event\n *\n * @returns {Autocomplete} self instance\n */\n appendResultsElement () {\n if (!this.resultsElement) {\n this.resultsElement = elementFromString(this.getResultsElementHtml())\n this.resultsElementApi = new FloatingBox(this.resultsElement)\n this.attachEvents(this.resultsElement)\n }\n\n this.currentSearch = this.currentSearch || this.newEmptySearch()\n this.resultsScrollElement = this.resultsElement.querySelector('.c-floating-box__body-content')\n this.resultsScrollElement.innerHTML =\n this.currentSearch.results && this.currentSearch.results.length\n ? this.getResultsHtml().trim()\n : this.asyncSearchInProgress\n ? this.getSearchingResultsHtml().trim()\n : this.getNoResultsHtml().trim()\n\n if (!this.resultsElement.isConnected) {\n this.textBoxInput.parentElement.appendChild(this.resultsElement)\n }\n\n this.levitateTextbox()\n\n this.resultsElementApi.getProp('opened')\n ? this.resultsElementApi.adjustSize()\n : this.resultsElementApi.setProp('opened', true)\n\n this.events.emit('open')\n\n Component.initDocumentComponentsFromAPI(this.resultsElement)\n Component.initComponentActionElements(this.resultsElement)\n\n return this\n }\n\n /**\n * Removes the current resultsElement\n *\n * - Return the input field to it's original position\n * - Close the resultsElement (floatingBox)\n * - Emits CLOSE event\n *\n * @returns {Autocomplete} self instance\n */\n removeResultsElement () {\n if (!this.resultsElement || !this.resultsElementApi) return this\n\n this.unLevitateTextbox()\n this.resultsElementApi.setProp('opened', false)\n this.events.emit('close')\n\n return this\n }\n\n /**\n * Moves the textBox field to top of the screen (if needed)\n *\n * @returns {Autocomplete} self instance\n */\n levitateTextbox () {\n if (this.textBoxLevitating || getStyle(this.resultsElement, 'position') !== 'fixed') {\n return this\n }\n this.textBoxLevitating = true\n const inputMargin = 20\n const textBoxInputRect = this.textBoxInput.getBoundingClientRect()\n const textBoxInputParentRect = this.textBoxInput.parentElement.getBoundingClientRect()\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth\n // Set the initial style\n this.textBoxInputInitialStyle = {\n width: `${textBoxInputRect.width}px`,\n position: 'fixed',\n left: `${textBoxInputRect.x}px`,\n top: `${textBoxInputRect.y}px`,\n height: `${textBoxInputRect.height}px`,\n zIndex: parseInt(getStyle(this.resultsElement, 'z-index')) + 1\n }\n Object.keys(this.textBoxInputInitialStyle).forEach(k => {\n this.textBoxInput.style[k] = this.textBoxInputInitialStyle[k]\n })\n this.textBoxInput.parentElement.style.height = `${textBoxInputParentRect.height}px`\n forceRepaint(this.textBoxInput)\n // Add transition\n this.textBoxInput.style.transitionDuration = getStyle(this.resultsElement, 'transition-duration')\n this.textBoxInput.style.transitionTimingFunction = 'cubic-bezier(.07, .28, .32, 1.22)'\n this.textBoxInput.style.transitionProperty = 'all'\n forceRepaint(this.textBoxInput)\n // Apply final style\n this.textBoxInput.style.top = `${inputMargin}px`\n this.textBoxInput.style.left = `${inputMargin}px`\n this.textBoxInput.style.width = `${viewportWidth - inputMargin * 2}px`\n this.resultsElement.style.paddingTop = `${textBoxInputRect.height + -(inputMargin * 2)}px`\n return this\n }\n\n /**\n * Moves the textBox field to the original position (if was moved)\n *\n * @returns {Autocomplete} self instance\n */\n unLevitateTextbox () {\n if (!this.textBoxLevitating) return this\n this.textBoxLevitating = false\n this.textBoxInput.style.transitionTimingFunction = 'cubic-bezier(.38, -.4, .88, .65)'\n Object.keys(this.textBoxInputInitialStyle).forEach(k => {\n this.textBoxInput.style[k] = this.textBoxInputInitialStyle[k]\n })\n const deleteCustomStyles = () => {\n [\n 'position',\n 'left',\n 'top',\n 'width',\n 'height',\n 'z-index',\n 'transition-duration',\n 'transition-timing-function',\n 'transition-property'\n ].forEach(p => {\n this.textBoxInput.style[p] = null\n })\n this.resultsElement.style.paddingTop = null\n this.textBoxInput.parentElement.style.height = null\n this.textBoxInput.removeEventListener('transitionend', deleteCustomStyles, false)\n }\n this.textBoxInput.addEventListener('transitionend', deleteCustomStyles, false)\n return this\n }\n\n /**\n * Returns a model based on given resultElement\n *\n * @param {HTMLElement} resultElement\n *\n * @returns {(Model|null)}\n */\n getModelFromResultElement (resultElement) {\n if (!resultElement) return null\n const modelCid = resultElement.getAttribute('data-cid')\n return this.options.data.findWhere('cid', modelCid) || null\n }\n\n /*\n * -----------------------------------------------------\n * EVENTS RELATED METHODS\n * -----------------------------------------------------\n * */\n\n /**\n * Handled by focus on input\n *\n * - Creates tempSelection\n * - Creates currentSearch\n * - Emit FOCUS\n * - Updates results\n */\n onFocus (ev) {\n if (!this.resultsElementApi || !this.resultsElementApi.getProp('opened')) {\n this.tempSelection = { ...this.selection }\n if (!this.resultsElementApi) {\n this.currentSearch = this.newEmptySearch()\n }\n }\n this.asyncSearchInProgress = false\n this.events.emit('focus')\n this.updateResults()\n }\n\n /**\n * Handle changes on input value\n *\n * - Updates tempSelection\n * - Updates currentSearch\n * - Updates results\n * - Emit CHANGE\n *\n * !! For performance reasons, consider to DEBOUNCE it !!\n */\n async onInputChange () {\n // Get a newSelection object from input text, and break if it's the same as tempSelection\n const newSelection = this.newSelectionFromInput()\n if (this.tempSelection && newSelection.text === this.tempSelection.text) return\n\n // Assign the newSelection to tempSelection\n this.tempSelection = newSelection\n\n // If there's no text on selection...\n\n if (!this.tempSelection.text) {\n // currentSearch should be empty\n this.currentSearch = this.newEmptySearch()\n // asyncSearchInProgress should be false\n if (this.isAsyncSearch()) this.asyncSearchInProgress = false\n this.updateResults()\n } else {\n // Assume there's text on selection...\n\n // If the search is async & (there's no cache || there's no cached results)...\n if (this.isAsyncSearch() && (!this.options.cache || !this.searchCache[this.tempSelection.text])) {\n // currentSearch should be empty, asyncSearchInProgress should be true\n this.currentSearch = this.newEmptySearch()\n this.asyncSearchInProgress = true\n // Results should be updated to show the searching message\n this.updateResults()\n }\n\n // A search could be requested asynchronously\n try {\n this.currentSearch = await this.getSearchFromText(this.tempSelection.text)\n this.updateResults()\n } catch (error) {\n this.currentSearch = this.newEmptySearch()\n }\n }\n\n // Finally, emit change\n // TODO: Update TempSelection with a valid model on async versions?\n this.events.emit('change', this.tempSelection)\n }\n\n /**\n * Handled manually\n *\n * - Persists tempSelection if it's valid & different\n * - Emit SUBMIT if selection has changed\n *\n * @returns {Autocomplete} self instance\n */\n submitSelection () {\n if (!this.tempSelection.model || this.tempSelection.model === this.selection.model) {\n return this\n }\n\n this.selection = { ...this.tempSelection }\n this.onBlur()\n this.events.emit('submit', this.selection)\n return this\n }\n\n /**\n * Handled manually\n *\n * - Resets a selection (if it was filled)\n * - Emit SUBMIT if selection has changed\n *\n * @returns {Autocomplete} Self instance\n */\n resetSelection () {\n if (!this.selection.model) {\n return this\n }\n this.selection = {\n text: '',\n model: null,\n resultElement: null\n }\n this.events.emit('submit', this.selection)\n return this\n }\n\n /**\n * Handled by blur on input\n *\n * - Removes resultsElement\n * - Resets tempSelection && currentSearch\n * - Update input value with selection\n */\n onBlur (ev) {\n this.removeResultsElement()\n this.tempSelection = null\n this.currentSearch = this.newEmptySearch()\n this.updateInputValueFromSelection(this.selection)\n if (this.abortController) {\n this.abortController.abort()\n this.abortController = null\n }\n }\n\n /**\n * Handled by keyDOWN on input\n *\n * - For UP and DOWN arrow keys\n * - Select next/previous or first/last result\n * - Update tempSelection accordingly\n * - Ensure result visibility\n * - Emit CHANGE event\n *\n * - For ENTER and TAB keys\n * - Trigger blur event for submitting action\n *\n * - For ESC key\n * - Reset tempSelection with last known selection\n * - Trigger blur event for submitting action\n */\n onKeyDown (ev) {\n // Ignore event if the resultsElement is not connected\n if (!this.resultsElement || !this.resultsElement.isConnected) return\n\n const key = ev.keyCode\n\n // Change keys: Down (40), Up (38)\n if (key === 40 || key === 38) {\n const nextElement =\n key === 40\n ? this.tempSelection.resultElement\n ? this.tempSelection.resultElement.nextElementSibling || this.tempSelection.resultElement\n : this.resultsElement.querySelector(`.${this.options.resultClassName}`)\n : this.tempSelection.resultElement\n ? this.tempSelection.resultElement.previousElementSibling || this.tempSelection.resultElement\n : this.resultsElement.querySelector(`.${this.options.resultClassName}:last-child`)\n const newModel = this.getModelFromResultElement(nextElement)\n if (newModel !== this.tempSelection.model) {\n this.tempSelection.model = newModel\n this.unsetSelectionResultElement()\n .setSelectionResultElement()\n .ensureResultVisibility()\n this.events.emit('change', this.tempSelection)\n }\n }\n\n // Submit keys: Enter (13), Tab (9)\n if (key === 13 || key === 9) {\n if (key === 13 && this.isAsyncSearch() && this.asyncSearchInProgress) {\n return\n }\n if (key === 13 && (!this.tempSelection || !this.tempSelection.model)) {\n return\n }\n this.submitSelection()\n this.textBoxInput.blur()\n }\n\n // Discard keys: Esc (27)\n if (key === 27) {\n this.textBoxInput.blur()\n }\n }\n\n /**\n * Handled by keyUP on input\n *\n * - Discard keys handled by keyDOWN event\n * - Call debounced input change function\n */\n onKeyUp (ev) {\n const key = ev.keyCode\n // Discard some keys like arrows, enter, esc, ...\n if (!key || (key >= 35 && key <= 40) || key === 13 || key === 27 || key === 9) return\n this.debouncedInputChange()\n }\n\n /**\n * Handled by mousemove on resultsElement\n *\n * - Try to find a resultElement candidate traversing the dom\n * - If a candidate is found:\n * - Emit CHANGE event\n */\n onMouseMove (ev) {\n const resultCandidate = this._findResultByMouseEvent(ev)\n if (!resultCandidate || !this.tempSelection || resultCandidate === this.tempSelection.resultElement) return\n\n const newModel = this.getModelFromResultElement(resultCandidate)\n if (newModel !== this.tempSelection.model) {\n this.tempSelection.model = newModel\n this.unsetSelectionResultElement().setSelectionResultElement()\n this.events.emit('change', this.tempSelection)\n }\n }\n\n /**\n * Handled by click on resultsElement\n * - Try to find a resultElement candidate traversing the dom\n * - If a candidate is found:\n * - Trigger submitSelection\n */\n onMouseClick (ev) {\n const resultCandidate = this._findResultByMouseEvent(ev)\n if (!resultCandidate) return\n this.tempSelection.model = this.getModelFromResultElement(resultCandidate)\n if (this.tempSelection.model) {\n this.unsetSelectionResultElement().setSelectionResultElement()\n this.events.emit('change', this.tempSelection)\n this.submitSelection()\n } else {\n ev.stopPropagation()\n }\n }\n\n /**\n * Small utility to find a resultElement candidate from mouse event, traversing the dom\n *\n * @returns {(HTMLElement|null)} The resultElement if found\n */\n _findResultByMouseEvent (ev) {\n const closestResult = (el, lastParentToCheck) => {\n do {\n if (el === lastParentToCheck) return null\n if (el.matches(`.${this.options.resultClassName}`)) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el !== lastParentToCheck && el.nodeType === 1)\n return null\n }\n return closestResult(ev.target, this.resultsElement)\n }\n\n /*\n * -----------------------------------------------------\n * TEMPLATING RELATED METHODS\n * -----------------------------------------------------\n * */\n\n /**\n * Get current HTML for resultsElement wrapper (floatingBox)\n *\n * @returns {String} The HTML string ready to be converted or appended\n */\n getResultsElementHtml () {\n return `\n\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n`\n }\n\n /**\n * Get current HTML for currentSearch results\n * This method can be overridden on instances if you want custom markup\n *\n * @returns {String} The HTML string ready to be converted or appended\n */\n getResultsHtml () {\n return `\n\n`\n }\n\n /**\n * Get current HTML for a single currentSearch result\n * This method can be overridden on instances if you want custom markup\n *\n * @returns {String} The HTML string ready to be converted or appended\n */\n getResultHtml (result) {\n return `\n
  • \n ${this.options.displayAttributes\n .map(attr => {\n if (result.getAttribute(attr) && this.options.searchAttributes.includes(attr)) {\n return `\n \n ${result\n .getAttribute(attr)\n .toString()\n .replace(this.currentSearch.termRegExp, '$1')}\n `\n } else if (result.getAttribute(attr)) {\n return `\n \n ${result.getAttribute(attr).toString()}\n `\n } else {\n return ''\n }\n })\n .join('')}\n
  • \n`\n }\n\n /**\n * Get HTML string based on no results\n * This method can be overridden on instances if you want custom markup\n *\n * @returns {String} The HTML string ready to be converted or appended\n */\n getNoResultsHtml () {\n this.events.emit(autocompleteEvents.NO_RESULTS, { term: this.currentSearch.term })\n return `\n \n `\n }\n\n /**\n * Get HTML string based on searching results\n * Should only be displayed when the results are async and an while an API call is running\n * This method can be overridden on instances if you want custom markup\n *\n * @returns {String} The HTML string ready to be converted or appended\n */\n getSearchingResultsHtml () {\n return `\n \n `\n }\n\n _getSafeText (text) {\n return text.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n }\n\n _getRegExp (safeText) {\n return safeText ? new RegExp('(' + safeText.split(' ').join('|') + ')', 'gi') : null\n }\n\n attachEvents (element) {\n this.resultsElementEvents = [\n [element, { mousemove: ev => this.onMouseMove(ev) }],\n [element, { mousedown: ev => this.onMouseClick(ev) }, true],\n [element.querySelector('[data-c-autocomplete__action=\"cancel\"]'), { click: ev => this.removeResultsElement(ev) }]\n ]\n domEventsHelper.attachEvents(this.resultsElementEvents, componentAPI)\n }\n\n detachEvents () {\n if (this.resultsElementEvents) domEventsHelper.detachEvents(this.resultsElementEvents, componentAPI)\n }\n}\n","import * as cssHelper from '../../../js/document/css'\nimport * as namespace from '../../../js/document/namespace'\nimport * as scrollHelper from '../../../js/document/scroll'\n\nconst components = namespace.register('sundio.components')\nconst componentName = 'backdrop'\nconst componentClassName = 'c-backdrop'\nconst componentDesignSystemDifferentiator = 'c-backdrop--ds'\nconst componentAPI = 'c-backdrop'\nconst eventPrefix = 'c-backdrop:'\nconst events = {\n open: new window.CustomEvent(eventPrefix + 'open'),\n opened: new window.CustomEvent(eventPrefix + 'opened'),\n close: new window.CustomEvent(eventPrefix + 'close'),\n closed: new window.CustomEvent(eventPrefix + 'closed')\n}\nconst classNames = {\n opened: 'in',\n opening: 'is-opening',\n closing: 'is-closing'\n}\n\nexport default function Backdrop (el) {\n const newElement = (!el || !(el instanceof window.HTMLElement))\n let scrollDisabled = false\n\n if (newElement) {\n el = document.createElement('div')\n el.classList.add(componentClassName, componentDesignSystemDifferentiator)\n }\n\n if (el[componentAPI] !== undefined) return\n\n const exposedAPI = {\n element: el,\n open,\n close,\n remove,\n destroy\n }\n\n el[componentAPI] = exposedAPI\n if (newElement) document.body.appendChild(el)\n\n return exposedAPI\n\n function open (done) {\n el.dispatchEvent(events.open)\n el.classList.add(classNames.opening)\n cssHelper.getStyle(el, 'width')\n el.classList.add(classNames.opened)\n disableScroll()\n setTimeout(opened,\n cssHelper.cssTimeToMs(cssHelper.getStyle(el, 'transition-duration')),\n done\n )\n }\n\n function opened (done) {\n el.classList.remove(classNames.opening)\n el.dispatchEvent(events.opened)\n if (typeof done === 'function') done()\n }\n\n function close (done) {\n el.dispatchEvent(events.close)\n enableScroll()\n el.classList.add(classNames.closing)\n el.classList.remove(classNames.opened)\n setTimeout(closed,\n cssHelper.cssTimeToMs(cssHelper.getStyle(el, 'transition-duration')),\n done\n )\n }\n\n function closed (done) {\n el.classList.remove(classNames.closing)\n el.dispatchEvent(events.closed)\n if (typeof done === 'function') done()\n }\n\n function remove () {\n enableScroll()\n if (newElement) document.body.removeChild(el)\n }\n\n function destroy () {\n remove()\n el[componentAPI] = null\n delete el[componentAPI]\n }\n\n function disableScroll () {\n if (!scrollDisabled) {\n scrollHelper.disable(el)\n scrollDisabled = !scrollDisabled\n }\n }\n\n function enableScroll () {\n if (scrollDisabled) {\n scrollHelper.enable(el)\n scrollDisabled = !scrollDisabled\n }\n }\n}\n\ncomponents[componentName] = Backdrop\n","import { encodeAttributes } from '../../../js/helpers/string'\nimport { getTokenClass } from '../../../js/helpers/tokens'\n\n// Import box tokens\nconst tokensShared = require('./data/c-box__tokens.json')['c-box']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/components/box/data/c-box__tokens.json`)['c-box'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\n/**\n * The BoxData contains all data needed to hydrate a Box view\n *\n * @typedef {Object} BoxData\n *\n * @property {String} html - Content of the box\n * @property {String} [variant] - Box's variant\n * @property {String} [extraClasses] - Extra classes for the button\n * @property {Object} [attributes] - Attributes for the button\n *\n */\nexport const defaultBoxData = {\n html: '',\n variant: 'default',\n extraClasses: '',\n attributes: {}\n}\n\nexport const BoxTemplate = (d) => {\n d = { ...defaultBoxData, ...d }\n return `\n
    \n
    \n ${d.html}\n
    \n
    \n `\n}\n","import Component from '../../../js/core/component/component'\nimport { registerComponent } from '../../../js/core/component/component-directory'\nimport { LoaderTemplate } from '../loader/c-loader.template'\nimport { elementFromString } from '../../../js/document/html-helper'\nimport domEventsHelper from '../../../js/document/dom-events-helper'\nimport registeredEvents from '../../../js/helpers/registered-events'\n\nconst buttonAPI = 'c-btn'\nconst componentQueries = {\n textElement: `.${buttonAPI}__text`\n}\n\n/**\n * Props & State\n *\n * There are two types of data that control a component: props and state.\n * Props are set on instantiation and they are fixed throughout the lifetime\n * of a component. For data that is going to change, we have to use state.\n */\nconst definition = {\n name: buttonAPI,\n\n /**\n * Props\n *\n * Most components can be customized with different parameters when they\n * are created. These creation parameters are called props.\n *\n * This lets you make a single component that is used in many different\n * places in your app, with slightly different properties in each place.\n *\n *\n */\n\n props: [\n {\n name: 'block',\n type: 'boolean',\n attr: '.c-btn--block',\n defaultValue: false\n }, {\n name: 'disabled',\n type: 'boolean',\n attr: 'disabled',\n defaultValue: false\n }, {\n name: 'icon',\n type: 'string'\n }, {\n name: 'iconPosition',\n type: 'string',\n allowedValues: [\n 'left',\n 'right'\n ],\n defaultValue: 'left'\n }, {\n name: 'loading',\n type: 'boolean',\n defaultValue: false\n }, {\n name: 'text',\n type: 'string'\n }, {\n name: 'variant',\n type: 'string',\n attr: '.c-btn--',\n allowedValues: [\n 'default',\n 'flat',\n 'flow',\n 'icon-only',\n 'neutral',\n 'delete'\n ],\n defaultValue: 'default'\n }\n ]\n\n}\n\nconst attr = {\n track: 'data-track'\n}\n\n/**\n * Button content\n *\n */\nexport default class Btn extends Component {\n /**\n * Creates a new button behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n */\n constructor (element) {\n super(element, definition.name)\n domEventsHelper.attachEvents([\n [this.element, { click: (ev) => this._onClick(ev) }]\n ], definition.name)\n this.textNode = undefined\n\n this.eventData = this._getEventData()\n element[definition.name] = {\n ...element[definition.name],\n getText: this.getText.bind(this),\n setText: this.setText.bind(this),\n getIcon: this.getIcon.bind(this),\n setIcon: this.setIcon.bind(this),\n getIconPosition: this.getIconPosition.bind(this),\n setIconPosition: this.setIconPosition.bind(this),\n getLoading: this.getLoading.bind(this),\n setLoading: this.setLoading.bind(this),\n getDataAttributes: this.getDataAttributes.bind(this)\n }\n\n registeredEvents.registerComponentEvents(definition.name, this.events, {\n ...this.element.hasAttribute(attr.track) && { track: this.element.attributes[attr.track].value }\n })\n }\n\n getText () {\n const textNode = this._getTextNode(this.element)\n return textNode ? textNode.innerText : ''\n }\n\n setText (value) {\n const textNode = this._getTextNode(this.element)\n if (textNode) { textNode.innerText = value }\n }\n\n getIcon () {\n const iconNode = this._getIconNode(this.element)\n const iconName = iconNode ? [...iconNode.classList].filter(className => className.includes('m-icon--'))[0]?.split('m-icon--')[1] : null\n return (iconName && iconName !== '') ? iconName : null\n }\n\n setIcon (value) {\n this._getIconNode(this.element).classList.replace(`m-icon--${this.props.icon}`, `m-icon--${value}`)\n }\n\n getIconPosition () {\n return this._getIconNode(this.element) === this.element.firstChild ? 'left' : 'right'\n }\n\n setIconPosition (value) {\n this.element.appendChild(value === 'left' ? this._getTextNode(this.element) : this._getIconNode(this.element))\n const oldValue = (value === 'left') ? 'right' : 'left'\n this._getIconNode(this.element).classList.replace(`c-btn__icon--${oldValue}`, `c-btn__icon--${value}`)\n }\n\n getLoading () {\n return (this._getLoadingNode(this.element).parentElement === this.element)\n }\n\n setLoading (loading) {\n const loadingNode = this._getLoadingNode(this.element)\n\n if (loadingNode) {\n if (loading) {\n this.element.appendChild(loadingNode)\n this.element.classList.add('c-btn--loading')\n } else {\n this.element.removeChild(loadingNode)\n this.element.classList.remove('c-btn--loading')\n }\n }\n }\n\n getDataAttributes () {\n return this.element.dataset\n }\n\n _getEventData () {\n const eventData = {}\n if (this.element) {\n eventData.attr = this.element.dataset\n }\n return eventData\n }\n\n _onClick (ev) {\n const input = ev.currentTarget\n this.events.emit('clickButton', input, this._getEventData())\n }\n\n _getTextNode () {\n this.textNode = this.textNode || this.element.querySelector(componentQueries.textElement)\n return this.textNode\n }\n\n _getIconNode () {\n this.iconNode = this.iconNode || this.element.querySelector('.c-btn__icon')\n return this.iconNode\n }\n\n _getLoadingNode () {\n this.loadingNode = this.loadingNode ||\n this.element.querySelector('.c-btn__loader') ||\n elementFromString(LoaderTemplate({ size: 'tiny', extraClasses: 'c-btn__loader' }))\n return this.loadingNode\n }\n}\n\nregisterComponent(Btn, definition.name, definition)\n","import Component from '../../../js/core/component/component'\nimport { registerComponent } from '../../../js/core/component/component-directory'\n\nconst definition = {\n\n name: 'c-button-group',\n props: [\n {\n name: 'activeIndex',\n type: 'number'\n },\n {\n name: 'activeElement',\n type: 'HTMLElement'\n },\n {\n name: 'disabled',\n type: 'boolean',\n attr: '.is-disabled',\n defaultValue: false\n }\n ]\n}\n\n/**\n * Button Group content\n *\n */\nexport default class ButtonGroup extends Component {\n /**\n * Creates a new button group behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n */\n constructor (element) {\n super(element, definition.name)\n this._setActiveOnClick()\n const active = this.getActiveIndex()\n this.setProp('activeIndex', active !== -1 ? active : 0)\n }\n\n getActiveElement () {\n return this._getButtonElements()[this.props.activeIndex]\n }\n\n getActiveIndex () {\n return this._getButtonElements().findIndex((item) => item.classList.contains('is-active'))\n }\n\n setActiveIndex (index) {\n this._getButtonElements()\n .forEach((item, itemIndex) => item.classList[itemIndex === index ? 'add' : 'remove']('is-active'))\n const activeElement = this._getButtonElements()[index]\n // We need to force the update, otherwise the JSON.stringify for a dom element will return an empty object avoiding to update the property\n this.setProp('activeElement', activeElement, { forceUpdate: true })\n this.events.emit('changeActiveElement', activeElement)\n }\n\n _getButtonElements () {\n this.buttonElements = this.buttonElements || Array.from(this.element.querySelectorAll('button'))\n return this.buttonElements\n }\n\n _setActiveOnClick () {\n this._getButtonElements().forEach((button, index) => button\n .addEventListener('click', e => {\n if (!this.getProp('disabled')) this.setProp('activeIndex', index)\n }))\n }\n}\n\nregisterComponent(ButtonGroup, definition.name, definition)\n","import Model from '../../../js/core/model'\nimport { language } from '../../../js/user/locale-settings'\nimport {\n areDatesInSameMonth,\n areDatesInSameYear,\n areDatesWholeMonth,\n dateStringsToDates,\n getEdgeDates\n} from '../../../js/helpers/dates'\nimport { register } from '../../../js/document/namespace'\n\n/**\n * A calendarData model\n */\nexport default class CalendarDataModel extends Model {\n /**\n * Creates a new CalendarDataModel\n * @constructor\n * @param {Object} attributes - The model attributes\n * @param {DateString[]} attributes.selectedDates - Selected dates (chosen departure dates)\n * @param {DateString} attributes.selectedDate - Selected date (main departure date on date ranges)\n * @param {DateString[]} attributes.disabledDates - Disabled dates (aka not possible to choose as a departure date)\n * @param {DateString} attributes.startDate - The min date to show (first date in calendar)\n * @param {DateString} attributes.endDate - The max date to show (last date in calendar)\n */\n\n constructor (attributes = {}) {\n super({\n ...{\n selectedDates: [],\n selectedDate: '',\n disabledDates: [],\n startDate: '',\n endDate: ''\n },\n ...attributes\n })\n }\n\n /**\n * Returns an humanized string for the selected dates, assuming they're consecutive period\n *\n * @return {String}\n */\n humanizedSelectedDates () {\n const selectedDates = dateStringsToDates(this.getAttribute('selectedDates'))\n // No dates > blank string\n if (selectedDates.length <= 0) { return '' }\n // Single date > DD month\n if (selectedDates.length === 1) { return selectedDates[0].toLocaleString(language, { day: 'numeric', month: 'long', year: 'numeric' }) }\n // Multiple dates\n if (selectedDates.length > 1) {\n const edges = getEdgeDates(selectedDates)\n // Whole month > month YYYY\n if (areDatesWholeMonth(...edges)) { return selectedDates[0].toLocaleString(language, { month: 'long', year: 'numeric' }) }\n const rangeSeparator = register(`window.sundio.i18n.${language}.flatpickr.rangeSeparator`) || ' - '\n // Same month > DD - DD mon.\n if (areDatesInSameMonth(...edges)) {\n const endDay = edges[1].toLocaleString(language, { day: 'numeric' })\n\n return edges[1].toLocaleString(language, { day: 'numeric', month: 'short', year: 'numeric' })\n .replace(RegExp('(' + endDay + ')'), edges[0].toLocaleString(language, { day: 'numeric' }) + rangeSeparator + '$1')\n } else {\n // Different month > DD mon. - DD mon.\n return edges[0].toLocaleString(language, { day: 'numeric', month: 'short', ...(areDatesInSameYear(...edges) ? {} : { year: 'numeric' }) }) +\n rangeSeparator +\n edges[1].toLocaleString(language, { day: 'numeric', month: 'short', year: 'numeric' })\n }\n }\n }\n}\n","import * as loadQueueHelper from '../../../js/document/load-queue'\nimport Calendar from './main'\n\nloadQueueHelper.add(function () {\n Calendar.createInstancesOnDocument()\n})\n","import {\n getMin as getMinDate,\n getMax as getMaxDate,\n dateToString,\n getConsecutivePeriod,\n formatDate\n\n} from '../../../js/helpers/dates'\n\nimport { language } from '../../../js/user/locale-settings'\nimport { register } from '../../../js/document/namespace'\n\nimport CalendarDataModel from './calendar-data-model'\nimport Flatpickr from 'flatpickr'\n\nconst EventEmitter = require('eventemitter3')\n\nconst componentAPI = 'c-calendar'\nconst ComponentContainer = `${componentAPI}__container`\nconst ComponentInput = `${componentAPI}__input`\n\nconst flatpickrLocales = register(`window.sundio.i18n.${language}.flatpickr`)\nconst dateLocales = register(`window.sundio.i18n.${language}.dates`)\n\n/**\n * A calendar\n */\nexport default class Calendar {\n /**\n * Creates a new calendar.\n * @constructor\n * @param {HTMLElement} element - The HTML component element.\n * @param {CalendarDataModel|Object} [calendarData={}] - The calendar data.\n * @param {Object} [flatpickrOptions={}] - The options for flatpikr instance.\n */\n constructor (element, calendarData = {}, flatpickrOptions = {}, parentInstance = {}) {\n this.element = element\n this.events = new EventEmitter()\n this.input = this.element.querySelector(`[data-js-api=\"${ComponentInput}\"]`)\n if (!this.input) return\n this.container = this.element.querySelector(`[data-js-api=\"${ComponentContainer}\"]`)\n this.calendarDataModel = calendarData instanceof CalendarDataModel ? calendarData : new CalendarDataModel(calendarData)\n this.calendarDataModel.events.on('change', this.updateFlatpickr, this)\n this.flatpickr = this.initFlatpickr(flatpickrOptions)\n element[componentAPI] = {\n element: this.element,\n input: this.input,\n events: this.events,\n calendarDataModel: this.calendarDataModel,\n updateCalendarData: (this.updateCalendarData).bind(this),\n jumpToDate: (this.jumpToDate).bind(this),\n setSelectionPreprocessingCallback: (this.setSelectionPreprocessingCallback).bind(this)\n }\n this.parentInstance = parentInstance\n }\n\n /**\n * Updates the calendar data on both component an flatpickr\n * @param {CalendarDataModel|Object} calendarData={} - The calendar data.\n *\n * @returns {Calendar} Self instance.\n */\n updateCalendarData (calendarData = {}) {\n this.calendarDataModel = calendarData instanceof CalendarDataModel ? calendarData : new CalendarDataModel(calendarData)\n this.updateFlatpickr()\n this.calendarDataModel.events.on('change', this.updateFlatpickr, this)\n return this\n }\n\n /**\n * Just a flatpickr function wrapper\n *\n * @param {DateString|Date} date\n *\n * @returns {Calendar} Self instance.\n */\n jumpToDate (date) {\n this.flatpickr.jumpToDate(date)\n return this\n }\n\n /**\n * Initializes the Flatpickr calendar.\n * @param {Object} [flatpickrOptions={}] - The options for flatpickr instance.\n * @returns {Flatpickr} The Flatpickr calendar instance.\n */\n initFlatpickr (flatpickrOptions = {}) {\n const defaultOptions = {\n mode: 'single',\n minDate: this.calendarDataModel.getAttribute('startDate'),\n maxDate: this.calendarDataModel.getAttribute('endDate'),\n inline: true,\n appendTo: this.container || undefined,\n weekNumbers: dateLocales.weekNumbers,\n locale: flatpickrLocales || 'en',\n animate: false, // Animation are disabled in order to fix a visual bug in the month names\n onChange: (selectedDates, dateStr, instance) => this.onCalendarChange(selectedDates, dateStr, instance),\n onDayCreate: (dObj, dStr, fp, dayElem) => this.onDayCreate(dObj, dStr, fp, dayElem)\n }\n defaultOptions.locale.scrollTitle = '' // Overwrite the month title to avoid the tooltip\n const options = { ...defaultOptions, ...flatpickrOptions }\n this.mode = options.mode\n options.defaultDate = this.getCalendarSelectedDatesFromModel()\n return Flatpickr(this.input, options)\n }\n\n /**\n * Get calendarSelectedDates from model\n * @returns {(Date[]|DateString[])} The dates array ready to populate flatpickr instance, according calendar mode\n */\n getCalendarSelectedDatesFromModel () {\n switch (this.mode) {\n case 'single': {\n const selectedDates = this.calendarDataModel.getAttribute('selectedDates')\n return Array.isArray(selectedDates) ? [selectedDates[0]] : [this.calendarDataModel.getAttribute('selectedDate')]\n }\n case 'multiple':\n return this.calendarDataModel.getAttribute('selectedDates')\n case 'range': {\n const selectedDates = this.calendarDataModel.getAttribute('selectedDates')\n return [getMinDate(selectedDates), getMaxDate(selectedDates)]\n }\n }\n }\n\n /**\n * Set calendarSelectedDates from calendar to model, according calendar mode (only if differs)\n * @param {Date[]} calendarSelection=[] - The dates array from flatpickr instance\n */\n setCalendarSelectedDatesOnModel (calendarSelection = [], originalDate = undefined) {\n let newValue\n switch (this.mode) {\n case 'single':\n newValue = dateToString(calendarSelection[0])\n if (!newValue || newValue === this.calendarDataModel.getAttribute('selectedDate')) break\n this.calendarDataModel.setAttributes({\n selectedDate: newValue,\n selectedDates: [newValue]\n })\n break\n case 'multiple': {\n newValue = calendarSelection.map(d => dateToString(d))\n if (!newValue || newValue === this.calendarDataModel.getAttribute('selectedDates')) break\n if (originalDate) {\n this.calendarDataModel.setAttributes({\n selectedDate: formatDate(originalDate),\n selectedDates: newValue\n })\n } else {\n this.calendarDataModel.setAttribute('selectedDates', newValue)\n }\n break\n }\n case 'range': {\n const selectedDates = getConsecutivePeriod(calendarSelection[0], calendarSelection[1])\n newValue = selectedDates.map(d => dateToString(d))\n if (!newValue || newValue === this.calendarDataModel.getAttribute('selectedDates')) break\n this.calendarDataModel.setAttribute('selectedDates', newValue)\n break\n }\n }\n }\n\n /**\n * Update the Flatpickr calendar.\n *\n * @returns {Calendar} self instance\n */\n updateFlatpickr () {\n this.flatpickr.set('minDate', this.calendarDataModel.getAttribute('startDate'))\n this.flatpickr.set('maxDate', this.calendarDataModel.getAttribute('endDate'))\n this.flatpickr.setDate(this.getCalendarSelectedDatesFromModel())\n return this\n }\n\n /**\n * Hook on changes in the calendar.\n */\n onCalendarChange (selectedDates, dateStr, instance) {\n if (this.mode === 'range' && selectedDates.length < 2) return\n if (this.mode === 'single' && !selectedDates.length) return\n if (selectedDates === undefined || !selectedDates.length) return\n\n let originalDate\n if (this.selectionPreprocessingCallback) {\n const result = this.selectionPreprocessingCallback(selectedDates, this.parentInstance)\n this.mode = result.mode\n originalDate = result.selectedDate\n selectedDates = result.selectedDates\n }\n\n this.setCalendarSelectedDatesOnModel(selectedDates, originalDate)\n this.flatpickr.redraw()\n }\n\n /**\n * Hook on creation of every calendar day.\n */\n onDayCreate (dObj, dStr, fp, dayElem) {\n const currentDateString = dateToString(dayElem.dateObj)\n if (this.calendarDataModel.getAttribute('disabledDates').includes(currentDateString)) { dayElem.className += ' is-disabled ' }\n if (this.mode === 'single' && this.calendarDataModel.getAttribute('selectedDates').includes(currentDateString)) { dayElem.className += ' is-selection-offset ' }\n }\n\n /**\n * Creates a new calendar for every element on document with targeted attributes.\n * @returns {Calendar[]} The created instances.\n */\n static createInstancesOnDocument () {\n const currentComponents = window.document.querySelectorAll(`[data-js-api=\"${componentAPI}\"]`)\n const instances = []\n for (let i = 0; i < currentComponents.length; i++) {\n instances.push(Calendar.createInstanceOnElement(currentComponents[i]))\n }\n return instances\n }\n\n /**\n * Creates a new calendar for single element.\n * @param {HTMLElement} element - The targeted HTML element.\n * @param {CalendarDataModel|Object} [calendarData={}] - The calendar data.\n * @returns {Calendar} Self instance.\n */\n static createInstanceOnElement (element, calendarData = {}) {\n return new Calendar(element, calendarData)\n }\n\n setSelectionPreprocessingCallback (callback = undefined) {\n this.selectionPreprocessingCallback = callback\n }\n}\n","import Component from '../../../js/core/component/component'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport { registerComponent } from '../../../js/core/component/component-directory'\nimport domEventsHelper from '../../../js/document/dom-events-helper'\n\nconst definition = {\n name: 'c-card',\n props: []\n}\n\nconst componentQueries = {\n titleLinkElement: `.${definition.name}__title-link`,\n titleElement: `.${definition.name}__title`\n}\n\nconst attr = {\n track: 'data-track'\n}\n\nexport default class Card extends Component {\n /**\n * Creates a new card, exposes an API to the element.\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n */\n constructor (element) {\n super(element, definition.name)\n domEventsHelper.attachEvents([[this.element, { click: (ev) => this._onClick(ev) }]], definition.name)\n this.element[definition.name].getTitle = (this.getTitle).bind(this)\n this.element[definition.name].getDataAttributes = (this.getDataAttributes).bind(this)\n registeredEvents.registerComponentEvents(definition.name, this.events, {\n ...this.element.hasAttribute(attr.track) && { track: this.element.attributes[attr.track].value }\n })\n }\n\n /**\n * Get data attributes for the card component\n * @return {Object \\ null}\n */\n getDataAttributes () {\n if (!this.element) return\n return this.element.dataset\n }\n\n /**\n * click event for the card component\n */\n _onClick (ev) {\n const target = ev.currentTarget\n this.events.emit('clickCard', target)\n }\n\n /**\n * get the title from the card component\n * @return {String}\n */\n getTitle () {\n let titleNode = this.element.querySelector(componentQueries.titleLinkElement)\n if (!titleNode) titleNode = this.element.querySelector(componentQueries.titleElement)\n return titleNode ? titleNode.innerText : ''\n }\n}\n\nregisterComponent(Card, definition.name, definition)\n"],"names":["tokensShared","require","tokensBrand","error","tokens","_objectSpread","defaultAbsoluteDialogData","id","title","body","closable","alertType","dialogType","headerSize","attributes","extraContent","AbsoluteDialogTemplate","d","concat","getTokenClass","encodeAttributes","definition","name","AbsoluteDialog","_Component","_inherits","_super","element","_this","_classCallCheck","call","button","querySelector","bindEvents","key","value","_this2","this","addEventListener","info","classList","add","closeDialogIfIsHidden","bind","contains","closeDialog","parentNode","removeChild","Component","registerComponent","defaultAccordionItemData","icon","size","subtitle","isOpened","track","collapseAttributes","ariaLabelTextForArrow","defaultAccordionData","extraClasses","items","AccordionTemplate","map","item","CollapseTriggerTemplate","defaultCollapseTriggerData","text","textPattern","arrow","smooth","ariaLabel","CollapseTemplate","Object","assign","defaultCollapseData","opened","maxItems","childrenWrapper","html","innerHTML","AccordionItemTemplate","join","props","componentAPI","componentQueries","itemElement","itemId","ActionableList","events","querySelectorAll","forEach","push","click","ev","onClick","domEventsHelper","attachEvents","currentTarget","getAttribute","emit","da","searchingFor","de","en","nb","fr","nl","sv","_regeneratorRuntime","e","t","r","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_unsupportedIterableToArray","minLen","_arrayLikeToArray","toString","Array","from","test","arr","len","arr2","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","obj","_toPropertyKey","getOwnPropertyDescriptors","defineProperties","_defineProperties","target","descriptor","input","hint","prim","toPrimitive","res","String","_toPrimitive","globalLocales","register","language","componentLocales","abortableFetch","window","Request","fetch","whatwgFetch","EventEmitter","textBox","floatsFrom","forceOpenUntil","Diacritics","defaults","data","Collection","url","urlSearchParam","urlParams","urlConfig","credentials","headers","Accept","filterAndSort","searchAttributes","selection","delay","minChars","maxResults","displayAttributes","emptyShownResults","emptyShownResultsData","cache","minHeight","maxHeight","resultClassName","selectedClassName","Autocomplete","_getSearchFromText","_getFreshData","_onInputChange","options","instance","Constructor","locales","_getLocales","textBoxApi","textBoxInput","model","setSelectionFromModel","updateInputValueFromSelection","newSelectionFromInput","tempSelection","currentSearch","searchCache","dataCache","debouncedInputChange","debounce","onInputChange","on","onKeyDown","onKeyUp","disableTextBoxOnBlur","onBlur","onFocus","resetSelection","setOptions","remove","registeredEvents","registerComponentEvents","hasAttribute","protoProps","newOptions","resultsElementEvents","removeResultsElement","resultsElement","customLocaleElement","document","customLocaleData","JSON","parse","textContent","min","isAsyncSearch","asyncSearchMinChars","trim","newSelectionFromText","findWhere","resultElement","newSelectionFromModel","cid","setProp","term","termRegExp","results","resultsShown","matchResults","attr","models","clean","match","includes","matchLengths","sum","_len","_key","reduce","b","matchLength","str","m","isArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","result","sort","aLength","bLength","_x","_callee","safeText","sanitizedText","regExp","sanitizedRegExp","search","_context","_getSafeText","_getRegExp","getFreshData","t0","asyncSearchInProgress","getResults","_x2","_callee2","requestUrl","freshData","_context2","abortController","abort","AbortController","URL","getAbsoluteUrl","entries","_ref","_ref2","paramName","paramValue","searchParams","append","href","signal","response","json","processFreshData","forceOpen","innerWidth","breakpoints","appendResultsElement","setSelectionResultElement","updateResultsScroll","ensureResultVisibility","resultsScrollElement","scrollTop","resultsInnerHeight","getInnerHeight","resultsVisibleRange","resultHeightRange","offsetTop","offsetHeight","scrollSmooth","elementFromString","getResultsElementHtml","resultsElementApi","FloatingBox","newEmptySearch","getResultsHtml","getSearchingResultsHtml","getNoResultsHtml","isConnected","parentElement","appendChild","levitateTextbox","getProp","adjustSize","initDocumentComponentsFromAPI","initComponentActionElements","unLevitateTextbox","_this3","textBoxLevitating","getStyle","textBoxInputRect","getBoundingClientRect","textBoxInputParentRect","viewportWidth","documentElement","clientWidth","textBoxInputInitialStyle","width","position","left","x","top","height","zIndex","parseInt","k","style","forceRepaint","transitionDuration","transitionTimingFunction","transitionProperty","inputMargin","paddingTop","_this4","deleteCustomStyles","removeEventListener","modelCid","updateResults","_callee3","newSelection","_context3","getSearchFromText","keyCode","nextElement","nextElementSibling","previousElementSibling","newModel","getModelFromResultElement","unsetSelectionResultElement","submitSelection","blur","resultCandidate","_findResultByMouseEvent","stopPropagation","_this5","el","lastParentToCheck","matches","nodeType","closestResult","cancel","_this6","getResultHtml","_this7","replace","_this8","autocompleteEvents","NO_RESULTS","sorryNoMatches","encodeHtml","LoaderTemplate","RegExp","split","_this9","mousemove","onMouseMove","mousedown","onMouseClick","detachEvents","components","namespace","componentClassName","componentDesignSystemDifferentiator","eventPrefix","open","CustomEvent","close","closed","classNames","opening","closing","Backdrop","newElement","HTMLElement","scrollDisabled","createElement","exposedAPI","dispatchEvent","cssHelper","scrollHelper","setTimeout","enableScroll","destroy","defaultBoxData","variant","BoxTemplate","buttonAPI","textElement","defaultValue","allowedValues","Btn","_onClick","textNode","eventData","_getEventData","getText","_assertThisInitialized","setText","getIcon","setIcon","getIconPosition","setIconPosition","getLoading","setLoading","getDataAttributes","_getTextNode","innerText","_filter$","iconNode","_getIconNode","iconName","className","firstChild","oldValue","_getLoadingNode","loading","loadingNode","dataset","ButtonGroup","_setActiveOnClick","active","getActiveIndex","_getButtonElements","activeIndex","findIndex","index","itemIndex","activeElement","forceUpdate","buttonElements","CalendarDataModel","_Model","selectedDates","selectedDate","disabledDates","startDate","endDate","dateStringsToDates","toLocaleString","day","month","year","edges","getEdgeDates","areDatesWholeMonth","_toConsumableArray","rangeSeparator","areDatesInSameMonth","endDay","areDatesInSameYear","Model","loadQueueHelper","Calendar","createInstancesOnDocument","ComponentContainer","ComponentInput","flatpickrLocales","dateLocales","calendarData","flatpickrOptions","parentInstance","container","calendarDataModel","updateFlatpickr","flatpickr","initFlatpickr","updateCalendarData","jumpToDate","setSelectionPreprocessingCallback","date","defaultOptions","mode","minDate","maxDate","inline","appendTo","weekNumbers","locale","animate","onChange","dateStr","onCalendarChange","onDayCreate","dObj","dStr","fp","dayElem","scrollTitle","defaultDate","getCalendarSelectedDatesFromModel","Flatpickr","getMinDate","getMaxDate","newValue","calendarSelection","originalDate","dateToString","setAttributes","formatDate","setAttribute","getConsecutivePeriod","set","setDate","selectionPreprocessingCallback","setCalendarSelectedDatesOnModel","redraw","currentDateString","dateObj","callback","currentComponents","instances","createInstanceOnElement","titleLinkElement","titleElement","Card","getTitle","titleNode"],"sourceRoot":""}