{"version":3,"file":"static/js/13.73889d4654bc371f4ca6.chunk.js","mappings":";yKAoCKA,2qBAAL,SAAKA,GACDA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,uBAFJ,CAAKA,IAAAA,EAAS,KAiBd,IAAMC,EAAN,cAAkBC,EAAAA,cAQdC,YAAmBC,GACfC,MAAMD,GANH,KAAAE,WAAkD,IAAIC,WAAWN,IACjE,KAAAO,qBAA2CC,EAEjC,KAAAC,OAAuCR,EAAAA,YAgIjD,KAAAS,oBAAuBC,IAC1BC,KAAKT,MAAMU,OAAOC,QAASC,KAAOJ,EAAMK,OAAOC,OAMlC,KAAAC,SAAW,KACxB,MACIC,SACIC,eACIC,gBAAgB,QAAEC,KAG1BC,MACIC,2BAA6BC,OAAQD,KAEzCZ,KAAKT,MACLqB,MAAAA,GAAAA,EAA2BE,iBAAmBd,KAAKe,MACnDf,KAAKe,IAAM,IAAIC,UAAUC,KAAK7B,IAAIY,KAAKH,OAAOqB,QAAwB,CAClEC,YAAaT,MAAAA,OAAO,EAAPA,EAASU,eACtBC,mBAAmB,EACnBC,aAAcN,UAAUC,KAAKM,aAAaC,OAC1CC,eAAgB,CACZC,SAAU,CACNC,cAAe,CAAEC,cAAc,IAEnCC,QAAS,WAaR,KAAAC,4BAA8B,KAAK,IAAAC,EAAAC,EAChD,MAAMC,EAAiBjC,KAAKT,MAAMU,OAAOgC,eACnCrB,EAAqE,QAA5CmB,EAAG/B,KAAKT,MAAMoB,KAAKC,iCAAyB,IAAAmB,OAAA,EAAzCA,EAA2ClB,OACvEqB,EAA0BtB,MAAAA,GAAkC,QAAToB,EAAzBpB,EAA2BL,eAAO,IAAAyB,OAAA,EAAlCA,EAAoCE,wBAC9DC,EAA0BvB,MAAAA,OAAyB,EAAzBA,EAA2BuB,wBACrDC,EAAexB,MAAAA,OAAyB,EAAzBA,EAA2ByB,yBAChD,IAAIC,EACJ,GAAItC,KAAKe,KAAOmB,EAAyB,CACrClC,KAAKP,WAAa,IAAIC,WAAWN,IACjCY,KAAKe,IAAIwB,OAAOC,QAChBxC,KAAKL,qBAAkBC,EACvB0C,OAAoB1C,EACpB,MAAM6C,EAAoBP,EAAwBQ,QAAOC,QAAuC/C,IAA9B+C,EAAMC,sBACxE,IAAK,MAAOC,EAAOC,KAAkBL,EAAkBM,UAAW,KAAAC,EAC9D,MAAMC,EAAiD,QAApCD,EAAGF,EAAcF,2BAAmB,IAAAI,OAAA,EAAjCA,EAAmCE,gBACzD,GAAID,MAAAA,GAAAA,EAAeE,UAAYF,EAAcG,WAAaH,EAAcI,cAAe,CACrE,IAAVR,IACAP,EAAoB,IAAItB,UAAUC,KAAKqC,SAASL,EAAcE,SAAUF,EAAcG,YAE1F,MAAMG,EAAqBpB,IAA4Bc,EAAcI,cAC/DG,EACFP,EAAcQ,aAAeR,EAAcQ,YAAYC,WAAW,MAC5DvE,EAAUwE,SACVxE,EAAUyE,YACdC,EAAU7D,KAAK8D,mBAAmBP,EAAoBV,EAAOW,EAAWvB,EAAgBgB,GAExFc,EAAU,IAAI/C,UAAUC,KAAK+C,QAC/B,IAAIhD,UAAUC,KAAKqC,SAASL,EAAcE,SAAUF,EAAcG,WAClES,GAGJ7C,UAAUC,KAAKgD,OAAOC,WAAWH,EAAS,SAAS,KAC/C/D,KAAKmE,+BAA+BlB,EAAcI,kBAGtDrD,KAAKP,WAAW2E,IAAInB,EAAcI,cAAe,CAAEU,QAASA,EAASP,UAAWA,EAAWX,MAAOA,IAE9FU,IACAvD,KAAKL,gBAAkB,CAAEoE,QAASA,EAASP,UAAWA,EAAWX,MAAOA,KAKpF,GAAIT,MAAAA,GAAAA,EAAce,UAAYf,EAAagB,UAAW,CAClD,MAAMiB,EAAkB,IAAIrD,UAAUC,KAAKqC,SAASlB,EAAae,SAAUf,EAAagB,WACxF,GAAId,EAAmB,CACnB,MAAMgC,EAAiB,CAACD,EAAiB/B,GACzCtC,KAAKe,IAAIwD,QAAQ,CACbC,OAAQxD,UAAUC,KAAKwD,aAAaC,cAAcJ,GAClDK,QAAS,WAGd,GAAI3E,KAAKL,gBAAiB,CAC7B,MAAMiF,EAAgB5E,KAAKL,gBAAgBoE,QAEvC/D,KAAKe,IAAI8D,WAAa,GACtB7E,KAAKe,IAAIwD,QAAQ,CAAEO,OAAQF,EAAcG,gBAEzC/E,KAAKe,IAAIwD,QAAQ,CAAEO,OAAQF,EAAcG,cAAeC,KAAM,UAGlEhF,KAAKe,IAAIwD,QAAQ,CACbC,OAAQxD,UAAUC,KAAKwD,aAAaQ,WAChCC,MAAMC,KAAKnF,KAAKP,WAAW2F,UAAUrE,KAAIsE,GAAeA,EAAYtB,aAKhF/C,UAAUC,KAAKqE,WAAW,6BAA6B,KAEnD,GAAItF,KAAKe,KAAOf,KAAKP,WAAW8F,KAAO,EAAG,CAEtC,MAAMC,EAAWN,MAAMC,KAAKnF,KAAKP,WAAW2F,UAAUrE,KAAIsE,GAAeA,EAAYtB,UAGrF/D,KAAKyF,aAAe,IAAIzE,UAAUC,KAAKyE,aAAaF,EAAU,CAC1DG,qBAAsB3F,KAAK4F,sBAC3BC,SAAU,KAId7F,KAAKe,IAAI+E,WAAW,CAAEzE,mBAAmB,IAGzCL,UAAUC,KAAKgD,OAAOC,WAAWlE,KAAKyF,aAAc,QAASzF,KAAK+F,gBAIlE/F,KAAKe,IAAIwB,OAAOyD,OAAOhG,KAAKyF,oBAM3B,KAAAQ,2BAA6B,KAAK,IAAAC,EAC/C,MAAMjE,EAAiBjC,KAAKT,MAAMU,OAAOgC,eACnCrB,EAAqE,QAA5CsF,EAAGlG,KAAKT,MAAMoB,KAAKC,iCAAyB,IAAAsF,OAAA,EAAzCA,EAA2CrF,OACvEsB,EAA0BvB,MAAAA,OAAyB,EAAzBA,EAA2BuB,wBAC3D,GAAInC,KAAKe,MACDf,KAAKL,iBACLK,KAAKL,gBAAgBoE,QAAQ+B,WACzB9F,KAAKmG,yBAAwB,EAAOnG,KAAKL,gBAAgB6D,UAAWvB,IAGxEE,GAAyB,CAEzB,MAAMiE,EAAiBpG,KAAKP,WAAW4G,IAAIlE,GAC3C,GAAIiE,EAAgB,KAAAE,EAChB,MAAM1B,EAAgBwB,EAAerC,QACrCa,EAAckB,WAAW9F,KAAKmG,yBAAwB,EAAMC,EAAe5C,UAAWvB,IACtFjC,KAAKL,gBAAkByG,EACD,QAAlBE,EAACtG,KAAKyF,oBAAY,IAAAa,GAAjBA,EAAmBC,uBAAuBC,SAAS5B,KAChD5E,KAAKe,IAAI8D,WAAa,GACtB7E,KAAKe,IAAIwD,QAAQ,CAAEO,OAAQF,EAAcG,gBAEzC/E,KAAKe,IAAIwD,QAAQ,CAAEO,OAAQF,EAAcG,cAAeC,KAAM,SAiB9E,KAAAY,sBAAyBa,IAC7BzF,UAAUC,KAAKgD,OAAOC,WAAWuC,EAAS,QAASzG,KAAK+F,iBAGpD,KAAAA,eAAkBW,IACtB,GAAI1G,KAAKe,KAAO2F,EAAEtG,QAEVsG,EAAEtG,OAAOuG,kBAAmB,CAE5B,IADA,IAAIC,EAAO,GACFC,EAAI,EAAGC,EAAMJ,EAAEtG,OAAOuG,kBAAkBI,OAAQF,EAAIC,EAAKD,IAG9DD,EAAKI,KAAKN,EAAEtG,OAAOuG,kBAAkBE,GAAG9B,eAI5C,IAAIP,EAASxD,UAAUC,KAAKwD,aAAaC,cAAckC,GAIvD5G,KAAKe,IAAIwD,QAAQ,CAAEC,OAAQA,EAAQG,QAAS,QAUvC,KAAAR,+BAAkC8C,IAC/C,MAAMrG,EAA4BZ,KAAKT,MAAMoB,KAAKC,0BAA0BC,OACxEoG,IAEArG,MAAAA,GAAAA,EAA2BsG,2BAA2BD,KAa7C,KAAAd,wBAA0B,CACvC5C,EACAC,EACAvB,KAKA,IAAIkF,EAA4B,UAOhC,MAAO,CAEHA,MAPAA,EADA3D,IAAcrE,EAAUwE,SAChBJ,GAAqBtB,MAAAA,OAAc,EAAdA,EAAgBmF,0BAA2B,WAAYnF,MAAAA,OAAc,EAAdA,EAAgBoF,iBAAkB,UAE9G9D,GAAqBtB,MAAAA,OAAc,EAAdA,EAAgBqF,uBAAwB,WAAYrF,MAAAA,OAAc,EAAdA,EAAgBsF,cAAe,UAMhHC,KAAM,izBAc4CL,GAC9C,kRACUA,GACV,2UAYK,KAAArD,mBAAqB,CAClCP,EACAV,EACAW,EACAvB,EACAgB,KAEA,MAAM,MAAEkE,EAAK,KAAEK,GAASxH,KAAKmG,wBAAwB5C,EAAoBC,EAAWvB,GACpF,OAAIgB,EACO,CAEHkE,MAAOA,EACPK,KAAAA,EAEAC,MAAO,GAAGjE,IAAcrE,EAAUwE,SAAW,WAAa,WAAWd,EAAQ,KAG9E,CAEHsE,MAAOA,EACPK,KAAAA,EACAC,MAAOjE,IAAcrE,EAAUwE,SAAW,WAAa,UAzZxD+D,oBAAiB,IAAAC,EACpB,MACIpH,SAAS,UACLqH,EACApH,eACIC,gBAAgB,QAAEC,MAG1BV,KAAKT,OAELmB,GAAYA,EAAQU,gBAKpBV,GAAYA,EAAQmH,iBAK4B,QAApDF,EAAI3H,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAA8G,GAAhDA,EAAkD7G,iBAClDd,KAAKM,WACLN,KAAK8B,gCAGTgG,EAAAA,EAAAA,KACI,SAAAC,EAAA,QAAwD,QAAjDA,EAAC/H,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAAkH,IAAhDA,EAAkDC,uBAC1D,KAAK,IAAAC,EAC+C,QAAhDA,EAAAjI,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAAoH,GAAhDA,EAAkDD,oBAAmB,OAI7EE,EAAAA,EAAAA,KACI,SAAAC,EAAA,OAAsD,QAAtDA,EAAMnI,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAAsH,OAAA,EAAhDA,EAAkDC,cACxD,KAAK,IAAAC,EAAAC,EAC+C,QAAhDD,EAAArI,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAAwH,GAAhDA,EAAkDD,WAAW,CACzDG,IAAK7H,MAAAA,OAAO,EAAPA,EAASU,eACdoH,KAAMxI,KAAKT,MAAMgB,QAAQC,cAAcC,eAAegI,OACtDC,OAA0B,QAApBJ,EAAEtI,KAAKT,MAAMgB,eAAO,IAAA+H,GAAe,QAAfA,EAAlBA,EAAoB9H,qBAAa,IAAA8H,GAAgB,QAAhBA,EAAjCA,EAAmC7H,sBAAc,IAAA6H,GAAS,QAATA,EAAjDA,EAAmD5H,eAAO,IAAA4H,OAAA,EAA1DA,EAA4DK,kCAKhFT,EAAAA,EAAAA,KACI,SAAAU,EAAA,OAAsD,QAAtDA,EAAM5I,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAA+H,OAAA,EAAhDA,EAAkD9H,kBACxD,KACId,KAAKM,eAiBb4H,EAAAA,EAAAA,KACI,SAAAW,EAAA,OAAsD,QAAtDA,EAAM7I,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAAgI,GAAS,QAATA,EAAhDA,EAAkDtI,eAAO,IAAAsI,OAAA,EAAzDA,EAA2D3G,2BACjE,KACIlC,KAAK8B,kCAIboG,EAAAA,EAAAA,KACI,SAAAY,EAAA,OAAsD,QAAtDA,EAAM9I,KAAKT,MAAMoB,KAAKC,0BAA0BC,cAAM,IAAAiI,OAAA,EAAhDA,EAAkD3G,2BACxD,KACInC,KAAKiG,iCAzDT2B,EAAUmB,MAAM,4BALhBnB,EAAUmB,MAAM,8BAmEjBC,SACH,MACI/I,QAAQ,QAAEC,EAAO,UAAE+I,GACnBtI,MACIC,2BAA6BC,OAAQD,KAEzCZ,KAAKT,MAEH2J,EAAmBtI,MAAAA,OAAyB,EAAzBA,EAA2BuI,iBAAiBC,WAE/DC,EAASC,EAAAA,EAAA,GACRtJ,KAAKT,OAAK,IACbgK,YAAa,CACTC,IAAK,MACLC,YAAazJ,KAAKT,MAClB0J,UAAWS,GAAAA,CAAU,SAAU,CAAEC,KAAMT,GAAoBD,IAE/DW,OAAQ,CACJC,YAAa,CAAEZ,UAAW,kBAC1B/I,SAASA,MAAAA,OAAO,EAAPA,EAASC,OACdd,EAAAA,cAACyK,EAAAA,GAAaC,OAAAC,OAAA,CACVf,UAAU,mBACN/I,EAAO,CACXsJ,IAAKtJ,EAAQsJ,KAAO,KACpBrJ,KAAMD,EAAQC,KACd8J,UAAW,CAAEC,OAAQlK,KAAKF,oBAAqBW,eAAgBT,KAAKT,MAAMgB,QAAQ4J,aAI9FC,SAAU,CACNZ,IAAK,MACLP,UAAW,eACXoB,IAAKrK,KAAKH,QAEdT,IAAKY,KAAKe,MAGd,OAAOf,KAAKT,MAAM+K,WAAWjB,MA9HrBkB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,0BADTpL,GAAGmL,EAAAA,EAAAA,IAAA,CADRE,EAAAA,IACKrL,GA0aN,qFCtdA,MAAMsL,EAA+BC,IAAA,IAAC,YAAEd,EAAW,QAAE3J,GAASyK,EAAA,OAAKtL,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKH,GAAc3J,IAS3F,EAPyC2K,IAAA,IAAC,YAAEtB,EAAW,OAAEK,EAAM,SAAEQ,GAAUS,EAAA,OACvExL,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKT,GACPK,GAAUvK,EAAAA,cAACqL,EAASX,OAAAC,OAAA,GAAKJ,IAC1BvK,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKI,4ECLAW,EAAAA,EA2CAC,qBA3CAD,EAAAA,IAAAA,EAAM,KACpB,wBACAA,EAAA,wBACAA,EAAA,kBAwCJ,SAAkBC,GACdA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QANJ,CAAkBA,IAAAA,EAAU,8CCpC5B,MAIMC,EAAmB,CACrB,CAACC,EAAYC,YAAa,sBAC1B,CAACD,EAAYE,SAAU,0BAErBC,EAAsBN,GAAwBE,EAAiBF,IAAW,sBAwIhF,EAtIoHxL,IAChH,MAAM,eACF+L,EAAc,QACdpL,EAAO,WACPqL,EAAU,SACVC,EAAQ,OACRC,GACAlM,GAEE,OACFwL,EAAM,gBACNW,EAAe,mBACfC,EAAkB,oBAClBC,EAAmB,oBACnBC,EAAmB,qBACnBC,EAAoB,yBACpBC,EAAwB,iBACxBC,EAAgB,yBAChBC,GACA1M,EAAMU,QAEJ,iBACFiM,EAAgB,iBAChBC,EAAgB,oBAChBC,EAAmB,qBACnBC,EAAoB,+BACpBC,EAA8B,8BAC9BC,EAA6B,oBAC7BC,GACAjN,EAAMkN,UAGJC,EAAoBnN,EAAM+L,eAAe7B,YAAY9I,KAAKgM,YAAY9L,QAAUtB,EAAM+L,eAAe7B,YAAY9I,KAAKgM,YAAY9L,OAAO+L,cAAc,GAEvJC,EAAgBH,EAAkBI,6BAGlCC,EADcL,EAAkBM,iBAAiBtK,QAAOuK,GAAQA,EAAKC,WAAaL,IAAe,GAC1EM,OAEvBC,EAAa7N,EAAM+L,eAAe7B,YAAYlJ,QAAQ4J,QAAQkD,KAAKC,aAEnEC,EAAmBhC,EAAYhM,MAAMY,KAE3C,IAAIqN,EAAiB,EAAE,KAGnB/B,GAAUA,EAAOlM,QAEjBiO,EAAiB/B,EAAOlM,MAAMY,KAAKsN,MAAM,MAG7C,MAEMC,EAAY,cAAcX,IAE1BY,EAA8BhC,GAAsBE,GAAuBA,EAAoB+B,KAAO/B,EAAoBgC,SAAWN,EACrIO,EAA+BlC,GAAuBE,GAAwBA,EAAqB8B,KAAO9B,EAAqB+B,SAAWN,EAC1IQ,EAAyB9B,GAA4B,cAE3D,MArE2BlB,CAAAA,GACpB,CAACG,EAAYC,WAAYD,EAAYE,SAAS5E,SAASuE,GAoE1DiD,CAAsBjD,GAGlB1L,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKsB,EAAc,CAAErC,UAAWoC,EAAmBN,KACrD7K,EACDb,EAAAA,cAAC4O,EAAAA,EAAS,CAAChF,UAAWqC,EAAerC,WACjC5J,EAAAA,cAAC6O,EAAAA,EAAG,KACA7O,EAAAA,cAAA,OAAK4J,UAAW,gCACZ5J,EAAAA,cAAA,UAAK8M,GACJZ,GACCoC,GAAsBG,IAAyBzO,EAAAA,cAAA,OAAK4J,UAAU,kCAC3D0E,EACGtO,EAAAA,cAAA,KAAG8O,KAAM,2FAA2FJ,uBAAmCR,WAA0BH,KAC7J/N,EAAAA,cAAA,OAAK4J,UAAU,iCAAiC2E,IAAK/B,MAAAA,OAAmB,EAAnBA,EAAqB+B,IAAKQ,IAAKvC,MAAAA,OAAmB,EAAnBA,EAAqBgC,QAASQ,OArBhI,MAsBiB,KACVP,EACGzO,EAAAA,cAAA,KAAG8O,KAAM,4FAA4FJ,uBAAmCR,WAA0BH,KAC9J/N,EAAAA,cAAA,OAAK4J,UAAU,iCAAiC2E,IAAK9B,MAAAA,OAAoB,EAApBA,EAAsB8B,IAAKQ,IAAKtC,MAAAA,OAAoB,EAApBA,EAAsB+B,QAASQ,OAzBlI,MA0BiB,OAGd3C,GAAoBF,MAAAA,GAAAA,EAAUjM,MAAMY,KAAKmO,SAAS,QAAqB,KAAX9C,GAEjEnM,EAAAA,cAAA,OAAK4J,UAAW,gCACZ5J,EAAAA,cAAA,UAAKgN,IACkB,KAAtBmB,EAAe,GAAanO,EAAAA,cAAA,KAAG4J,UAAU,oCAAoCuE,EAAe,IAAU,KACtGzB,EAA2B1M,EAAAA,cAAA,KAAG4J,UAAU,2CAA2C8C,GAAgC,KACnHS,EACGnN,EAAAA,cAAA,KAAG8O,KAAK,8BACH3B,GACE,MAEfnN,EAAAA,cAAA,OAAK4J,UAAW,gCACZ5J,EAAAA,cAAA,MAAI4J,UAAU,cAAciD,GAC5B7M,EAAAA,cAAA,KAAG4J,UAAWsF,GAAAA,CAAW,YAAab,IAAYrO,EAAAA,cAAA,QAAM4J,UAAU,kBAAkB8D,IAClFf,GAAoBA,EAAiBwC,SAAWxC,EAAiBwC,QAAQC,gBAAkBzC,EAAiB0C,SAC1GrP,EAAAA,cAAA,KAAG8O,KAAMnC,EAAiBwC,QAAQC,gBAC7BzC,EAAiB0C,UACf,SAU/BrP,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKsB,EAAc,CAAErC,UAAWsF,GAAAA,CAAWjD,EAAerC,UAAW,yBACvE/I,EACDb,EAAAA,cAAA,OAAK4J,UAAW,4BACZ5J,EAAAA,cAAC4O,EAAAA,EAAS,KACN5O,EAAAA,cAAC6O,EAAAA,EAAG,KACA7O,EAAAA,cAAA,OAAK4J,UAAU,mCACX5J,EAAAA,cAAA,MAAI4J,UAAU,iBAAiBmD,GAAyB/M,EAAAA,cAAA,OAAK4J,UAAU,cAAY,IAAO5J,EAAAA,cAAA,SAAIkM,KAElGlM,EAAAA,cAAA,OAAK4J,UAAU,mCACX5J,EAAAA,cAAA,MAAI4J,UAAU,iBAAiBiD,GAAsB7M,EAAAA,cAAA,KAAG4J,UAAWsF,GAAAA,CAAW,YAAab,IAAU,IAAQrO,EAAAA,cAAA,QAAM4J,UAAU,kBAAkB8D,MAGvJ1N,EAAAA,cAAC6O,EAAAA,EAAG,KACA7O,EAAAA,cAAA,OAAK4J,UAAU,kCACX5J,EAAAA,cAAA,MAAI4J,UAAU,iBACV5J,EAAAA,cAAA,QAAM4J,UAAU,mBACXqD,EAA8B,KAA8B,KAAtBkB,EAAe,GAAanO,EAAAA,cAAA,KAAG4J,UAAU,oCAAoCuE,EAAe,IAAU,KAAI,IAAQjB,2FCrI7L,MAAMoC,EAA2DhE,IAAuE,IAAtE,mBAAEiE,EAAkB,QAAE1O,EAAO,gBAAE2O,EAAe,iBAAEC,GAAkBnE,EAChI,OACItL,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK4E,GACL1O,EACDb,EAAAA,cAAC0P,EAAwBhF,OAAAC,OAAA,GAAK6E,IAC7BC,GACGA,EAAiB/N,KAAI,CAACiO,EAAkBnM,IAC7BxD,EAAAA,cAAC0P,EAAwBhF,OAAAC,OAAA,GAAKgF,EAAgB,CAAEzG,IAAK1F,SAM1EkM,EAAyDlE,IAQ1D,IAR2D,kBAC5DoE,EAAiB,QACjB/O,EAAO,YACPgP,EAAW,cACXC,EAAa,cACbC,EAAa,OACbC,EAAM,aACNC,GACHzE,EACG,OACIxL,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKiF,GACL/O,EACAgP,EACD7P,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKmF,GACLG,EACAD,EACAD,KAMXG,EAAuDC,IAAwD,IAAvD,mBAAEC,EAAkB,QAAEvP,EAAO,MAAEwP,EAAK,YAAER,GAAaM,EAC7G,OACInQ,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyF,GACLvP,EACAgP,EACAQ,IAmFb,EA9E0FnQ,IACtF,MAAM,eACFoQ,EAAc,sBACdC,EAAqB,QACrB1P,EAAO,aACP2P,EAAY,YACZC,EAAW,kBACXC,EAAiB,0BACjBC,EAAyB,0BACzBC,GACA1Q,EAsCJ,OArCAF,EAAAA,WAAgB,KACR6Q,SAASC,uBAAuB,mDAAmDpJ,SAGnFmJ,SAASC,uBAAuB,mDAAmD,GAAGC,UAElF7Q,EAAMU,OAAOoQ,sBAEjBH,SAASC,uBAAuB,4CAA4CpJ,SAG5EmJ,SAASC,uBAAuB,4CAA4C,GAAGC,UAAY7Q,EAAMU,OAAOqQ,eAExGJ,SAASC,uBAAuB,6CAA6CpJ,SAG7EmJ,SAASC,uBAAuB,6CAA6C,GAAGC,UAAY7Q,EAAMU,OAAOsQ,gBAG7GL,SAASC,uBAAuB,sDAAsD,GAAGK,iBAAiB,SAAS,KAC/G,MAAMC,EAA6BP,SAASC,uBAAuB,kKAAkK,GAEvL,kBAA1C5Q,EAAMgB,QAAQ4J,QAAQuG,iBAKtBD,EAASE,aAAa,OAAQ,aAQvC,IAGCtR,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAK2F,GACPzP,EACDb,EAAAA,cAAA,OAAK4J,UAAW,qBACZ5J,EAAAA,cAAA,OAAK4J,UAAW,aACZ5J,EAAAA,cAAA,OAAK4J,UAAW,OACZ5J,EAAAA,cAAA,OAAK4J,UAAW,0CACZ5J,EAAAA,cAAA,WACKuQ,GACGvQ,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK4F,GACNvQ,EAAAA,cAACkQ,EAAqBxF,OAAAC,OAAA,GAAK6F,IAC3BxQ,EAAAA,cAACkQ,EAAqBxF,OAAAC,OAAA,GAAK8F,IAC1BE,GAA6B3Q,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKgG,GAA4BC,MAKpF5Q,EAAAA,cAAA,OAAK4J,UAAW,gDACX+G,GAA6B3Q,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKgG,GAA4BC,IAExE5Q,EAAAA,cAAA,OAAK4J,UAAW,4CACZ5J,EAAAA,cAACsP,EAAyB5E,OAAAC,OAAA,GAAK+F,wHCX3D,SAASa,EAAoBrR,GACzB,MAAM,oBAAEsR,EAAmB,QAAEC,EAAO,yBAAEC,GAA6BxR,EAkB5D,IAAAyR,EAAAC,EAbgEC,EAAAC,EAAvE,MAJsB,oBAAXC,UACiB,IAAxBP,EAA+BX,SAASmB,KAAKC,UAAUC,OAAO,aAAerB,SAASmB,KAAKC,UAAUE,IAAI,mBAG7E5R,IAA5BL,EAAMU,OAAOwR,YAA6BlS,EAAMU,OAAOwR,WAenDpS,EAAAA,cAACqS,EAAAA,SAAQ,CAACzI,UAAU,mCAAmC0I,QAASd,GAC5DxR,EAAAA,cAAA,OAAK4J,UAAW,gBACZ5J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK+G,GACLa,EAAqBrS,EAAMsS,SAGhCxS,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK8G,IACVzR,EAAAA,cAAA,OAAK4J,UAAW,qBAAsB2I,EAAqBrS,EAAMuS,UACjEzS,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,gCAEZ8I,EAA0BxS,GAAO,GAElCF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK8G,KACTvR,MAAAA,GAAY,QAAPyR,EAALzR,EAAOyS,aAAK,IAAAhB,OAAA,EAAZA,EAAciB,mBAAmB1S,MAAAA,GAAY,QAAP0R,EAAL1R,EAAOyS,aAAK,IAAAf,OAAA,EAAZA,EAAcgB,oBA1B5D5S,EAAAA,cAACqS,EAAAA,SAAQ,CAACzI,UAAW,mCAAoC0I,QAASd,GAC7De,EAAqBrS,EAAMsS,QAC5BxS,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK8G,IACVzR,EAAAA,cAAA,OAAK4J,UAAW,gBACZ5J,EAAAA,cAAA,OAAK4J,UAAW,qBAAsB2I,EAAqBrS,EAAMuS,UAChEC,EAA0BxS,GAAO,IAEjCA,MAAAA,GAAY,QAAP2R,EAAL3R,EAAOyS,aAAK,IAAAd,OAAA,EAAZA,EAAce,mBAAmB1S,MAAAA,GAAY,QAAP4R,EAAL5R,EAAOyS,aAAK,IAAAb,OAAA,EAAZA,EAAcc,mBA0BpE,MAAMC,EAAsBC,IACxB,MAAMC,EAAWD,GAAsBA,EAAmBtR,OAC1D,OAAOxB,EAAAA,cAAAA,EAAAA,SAAA,KAAG+S,EAAWA,EAASC,WAAaD,EAASE,KAAO,KAG/D,SAASP,EAA0BxS,EAAyBgT,GACxD,MAAM,mCAAEC,EAAkC,YAAEC,EAAW,WAAEC,EAAU,KAAE/R,EAAI,aAAEgS,GAAiBpT,EAE5F,GAAIiT,EAAoC,CACpC,MAAMI,EAAmBrE,GAAAA,CACrB,oBACAiE,EAAmCvJ,UACnCsJ,EAAkB,iBAAmB,mBAGzC,GAAII,EACA,OACItT,EAAAA,cAACwT,EAAAA,OAAM,CACH5J,UAAW2J,EACXE,UAAU,yBACVC,WAAW,0BACXC,eAAe,MACfC,iBAAkBf,EAAmBvR,EAAKwR,qBAE1C9S,EAAAA,cAAA,aACKsT,GAAeA,EAAa5R,KAAKmS,GAA0BA,IAC3DT,IAIV,GAAIC,EACP,OACIrT,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKwI,EAAkC,CAAEvJ,UAAW2J,IACpDF,GAKjB,OAAO,KAGX,SAASS,EAAoB5T,EAAyBgT,GAClD,MAAM,mCACFC,EAAkC,0CAClCY,EAAyC,0BACzCC,EAAyB,YACzBZ,EAAW,WACXC,EAAU,aACVC,GACApT,EAEJ,GAAIiT,EAAoC,CACpC,MAAMI,EAAmBrE,GAAAA,CACrBiE,EAAmCvJ,UACnCsJ,EAAkB,iBAAmB,mBAEzC,GAAIa,EACA,OACI/T,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKwI,EAAkC,CAAEvJ,UAAW2J,IACpDS,EACDhU,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKoJ,KACLT,GAAeA,EAAa5R,KAAKmS,GAA0BA,IAC3DT,IAIV,GAAIC,EACP,OACIrT,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKwI,EAAkC,CAAEvJ,UAAW2J,IACpDF,GAMjB,OAAO,KAGX,SAASd,EAAqB0B,GAC1B,OACIjU,EAAAA,cAACA,EAAAA,SAAc,KACViU,GAASA,EAAMvM,OACVuM,EAAMvS,KAAI,CAACwS,EAAuB1Q,IACzBxD,EAAAA,cAACA,EAAAA,SAAc,CAACkJ,IAAK1F,GAAQ0Q,KAEtC,MAUlB,SAASC,EAA0BjU,GAA0C,IAAAkU,EACzE,OAAyC7T,MAArCL,EAAMU,OAAOyT,sBAAyF9T,MAApDL,EAAMU,OAAOyT,qBAAqBjF,gBAAiE7O,MAAlCL,EAAMU,OAAO0T,kBACxHtU,EAAAA,cAAAA,EAAAA,SAAA,MAIRA,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACuU,EAAAA,OAAM,CACH3K,UAAWsF,GAAAA,CAAW,iCAAkChP,EAAM0J,WAC9DkF,KAAuC,QAAnCsF,EAAElU,EAAMU,OAAOyT,4BAAoB,IAAAD,OAAA,EAAjCA,EAAmChF,eAAc,aAC3ClP,EAAMU,OAAO0T,mBAEzBtU,EAAAA,cAAA,QAAM4J,UAAU,wCAAwC1J,EAAMU,OAAO0T,qBASrF,QAvQkEpU,IAC9D,GAAsB,oBAAX6R,OAAwB,CAC/B,MAAOyC,EAAUC,GAAezU,EAAAA,UAAe,GACzC0U,EAAeA,KACjB,MAAMC,EAAS5C,OAAO6C,QACTH,EAAbE,EAAS,IAEbH,EAAW3D,SAASmB,KAAKC,UAAUE,IAAI,kBAAoBtB,SAASmB,KAAKC,UAAUC,OAAO,kBAC1FlS,EAAAA,WAAgB,KAEZ,GADA+R,OAAOZ,iBAAiB,SAAUuD,QACFnU,IAA5BL,EAAMU,OAAOwR,aAA6BlS,EAAMU,OAAOwR,WAAY,CACnE,MAAMyC,EAAiBhE,SAASC,uBAAuB,qBAAqB,GACtEgE,EAAiBjE,SAASC,uBAAuB,iBAAiB,GACxE,GAAID,SAASC,uBAAuB,oBAAoBpJ,OAAQ,CAC5D,MAAMqN,EAAgBlE,SAASC,uBAAuB,oBAAoB,GACvDD,SAASC,uBAAuB,gBAAgB,GACxDkE,YAAYD,GAE3BD,EAAeE,YAAYH,MAEhC,IAEP,MAAM,UAAEI,EAAS,gBAAEC,EAAe,sBAAEC,GAA0BjV,EAyCvD,IAAAkV,EAAAC,EAAAC,EAAAC,EAxCgEC,EAAAC,EAAvE,YAAgClV,IAA5BL,EAAMU,OAAOwR,YAA6BlS,EAAMU,OAAOwR,WA0CnDpS,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKsK,GACRjV,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKuK,GACNlV,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,aACb5J,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAU,oCACZ5J,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,sBACZ1J,EAAMwV,gBACNxV,MAAAA,GAAY,QAAPkV,EAALlV,EAAOyS,aAAK,IAAAyC,OAAA,EAAZA,EAAcxC,mBAAmB1S,MAAAA,GAAY,QAAPmV,EAALnV,EAAOyS,aAAK,IAAA0C,OAAA,EAAZA,EAAczC,iBAC/CuB,EAA0BjU,IAE/BF,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,uBAAwB1J,EAAMyV,MAC/C3V,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,+BACZ2I,EAAqBrS,EAAMsS,QAC3BsB,EAAoB5T,GAAO,GAC3BA,EAAM0V,oBACN1V,EAAM2V,YAInB7V,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,qCACb5J,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAU,mCACZ5J,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,sBACZ1J,EAAM4V,QACN5V,EAAMyV,MAEX3V,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,+BAEZuK,EAA0BjU,GAC1BA,EAAM0V,oBACN1V,EAAM2V,YAIlBtE,EAAoBrR,GACrBF,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAU,2BAA2B2I,EAAqBrS,EAAMuS,WACrEvS,MAAAA,GAAY,QAAPoV,EAALpV,EAAOyS,aAAK,IAAA2C,OAAA,EAAZA,EAAcS,cAAc7V,MAAAA,GAAY,QAAPqV,EAALrV,EAAOyS,aAAK,IAAA4C,OAAA,EAAZA,EAAcQ,cA1EnD/V,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKsK,GACRjV,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKuK,GACNlV,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKwK,GACNnV,EAAAA,cAAA,OAAK4J,UAAW,aACZ5J,EAAAA,cAAA,OAAK4J,UAAW,OACZ5J,EAAAA,cAAA,OAAK4J,UAAW,uBACZ5J,EAAAA,cAAA,cAEJA,EAAAA,cAAA,OAAK4J,UAAW,oBACX2I,EAAqBrS,EAAMsS,QAC3BtS,EAAMwV,gBAENxV,MAAAA,GAAY,QAAPsV,EAALtV,EAAOyS,aAAK,IAAA6C,OAAA,EAAZA,EAAc5C,mBAAmB1S,MAAAA,GAAY,QAAPuV,EAALvV,EAAOyS,aAAK,IAAA8C,OAAA,EAAZA,EAAc7C,iBAC/CkB,EAAoB5T,GAAO,OAK5CF,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,+CACb5J,EAAAA,cAAA,OAAK4J,UAAW,aACZ5J,EAAAA,cAAA,OAAK4J,UAAW,kCACZ5J,EAAAA,cAAA,OAAK4J,UAAW,aACX1J,EAAM4V,QACN5V,EAAMyV,MAEX3V,EAAAA,cAAA,OAAK4J,UAAW,cAAe2I,EAAqBrS,EAAMuS,UAC1DzS,EAAAA,cAAA,OAAK4J,UAAW,cACX1J,EAAM0V,oBACN1V,EAAM2V,SACNtD,EAAqBrS,EAAM8V,iBAK3CzE,EAAoBrR,iFCjC7B+V,2EAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,uBAPJ,CAAYA,IAAAA,EAAgB,+lBCTtB,MAAOC,UAA2BlW,EAAAA,cAiBpCC,YAAYC,GACRC,MAAMD,GAjBF,KAAAiW,aAAuB,EAEd,KAAAC,qBAA+B,EAC/B,KAAAC,UAAoBJ,EAAiBI,UAMrC,KAAAC,iBAAiC,GAKjC,KAAAC,eAAyBN,EAAiBO,KAiWnD,KAAAC,sBAAwB,CAACnV,EAAqBoV,IAAsB,KACnE/V,KAAKT,MAAMyW,aAUZhW,KAAKiW,SAAS,CACVC,WAAYvV,EAAKwV,GACjBC,oBAAqBzV,EAAK+N,SAC1B2H,WAAYN,IAZhB/V,KAAKiW,SAAS,CACVC,WAAYlW,KAAKsW,MAAMJ,YAAclW,KAAKsW,MAAMJ,aAAevV,EAAKwV,QAAMvW,EAAYe,EAAKwV,GAC3FE,WAAYN,IAcpB/V,KAAKuW,eAGD,KAAAA,YAAc,KACdvW,KAAKT,MAAMyW,cACXQ,YAAW,KACPxW,KAAKyW,UAAYzW,KAAKyW,SAASvV,SAAWlB,KAAKyW,SAASvV,QAAQwV,UACjE,IAKH,KAAAC,oBAAuB5W,IACvBC,KAAKyW,SAASvV,UAAYlB,KAAKyW,SAASvV,QAAQ0V,SAAS7W,EAAMK,SAC/DJ,KAAKiW,SAAS,CAAEC,gBAAYtW,EAAWwW,oBAAqB,MAS5D,KAAAS,aAAgB9W,IAChBA,EAAM+W,UAAY9W,KAAK0V,WACvB1V,KAAK+W,iBAskBI,KAAAC,gCAAkC,CAACrW,EAAqBoV,IAAsB,KACtF/V,KAAKT,MAAMyW,aASZhW,KAAKiW,SAAS,CACVC,WAAYvV,EAAKwV,GACjBE,WAAYN,KAVhB/V,KAAKiW,SAAS,CACVC,WAAYlW,KAAKsW,MAAMJ,YAAclW,KAAKsW,MAAMJ,aAAevV,EAAKwV,QAAMvW,EAAYe,EAAKwV,GAC3FE,WAAYN,IAEZ/V,KAAKT,MAAM0X,mBACXjX,KAAKkX,+BAA+BvW,EAAKwW,YAAcxW,EAAvDX,IASRA,KAAKoX,yBAMQ,KAAAA,sBAAwB,KACjCpX,KAAKT,MAAMyW,cACXQ,YAAW,KACPxW,KAAKyW,UAAYzW,KAAKyW,SAASvV,SAAWlB,KAAKyW,SAASvV,QAAQwV,UACjE,IAQM,KAAAW,8BAAiCtX,IAC1CC,KAAKyW,SAASvV,UAAYlB,KAAKyW,SAASvV,QAAQ0V,SAAS7W,EAAMK,SAC/DJ,KAAKiW,SAAS,CACVC,gBAAYtW,EACZ0X,cAAe,QAkBV,KAAAC,uBAA0BxX,IACvC,GAAIA,EAAM+W,UAAY9W,KAAK0V,UAAW,CAClC,IAAK1V,KAAKT,MAAMyW,aAAc,CAC1B,MAAMwB,EAAgBtS,MAAMC,KAAKnF,KAAKyW,SAASvV,QAASuW,YACxD,IAAK,MAAMC,KAAQF,EAAe,CAC9B,MAAMG,EAAkBD,EAAKE,WACyB,SAAlDD,EAAgBE,aAAa,kBAC7BF,EAAgBjB,SAI5B1W,KAAK8X,4BAQI,KAAAC,0BAA6BC,IAC1C,MAAM,eAAEC,GAAmBjY,KAAKsW,MAE1B4B,EAAU,CAAE,MADoCtY,IAA3BoY,EAAYG,WAA2BH,EAAYG,WAAa,IAC3DH,EAAYrG,QAC5C3R,KAAKiW,SAAS,CAAEgC,eAAc3O,EAAAA,EAAA,GAAO2O,GAAmBC,MAS3C,KAAAhB,+BAAiC,CAACkB,EAA6BC,IAA0B,KACtG,MAAM3J,EAAW2J,EAAO3J,SAAW2J,EAAO3J,SAAW,GAC/CiH,EAAiC,CAAC,CAAE/H,IAAKwK,EAAqBvK,QAASa,IAG7E,GAAI4J,EAAAA,gBAAgBC,YAAYF,EAAOG,oBACnC,IAAK,MAAMd,KAAQW,EAAOG,mBAAoB,CAC1C,MAAMrB,EAAcO,EAAKe,MAAM7K,IAC/B+H,EAAiB3O,KAAK,CAClB4G,IAAKuJ,EACLtJ,QAAS6J,EAAKvX,KACduY,qBAAsB,CAAElK,QAASkJ,EAAKlJ,QAAQC,kBAI1DzO,KAAKiW,SAAS,CACVqB,cAAegB,EAAAA,gBAAgBC,YAAY5C,GAAoBA,EAAmB,CAAC,CAAE/H,IAAK,aAtjC9F5N,KAAKyW,SAAWpX,EAAAA,YAChBW,KAAKsW,MAAQ,CAAEJ,gBAAYtW,EAAWwW,oBAAqB,GAAIC,gBAAYzW,EAAWqY,eAAgB,IACtGjY,KAAK+W,cAAgB/W,KAAK+W,cAAc4B,KAAK3Y,MAC7CA,KAAK6W,aAAe7W,KAAK6W,aAAa8B,KAAK3Y,MAC3CA,KAAK8X,wBAA0B9X,KAAK8X,wBAAwBa,KAAK3Y,MACjEA,KAAKuX,uBAAyBvX,KAAKuX,uBAAuBoB,KAAK3Y,MAC/DA,KAAK4Y,kBAAmBC,EAAAA,EAAAA,oBACpB7Y,KAAKT,MAAMgB,QAAQ4J,QAAQ2O,kBAC3B9Y,KAAKT,MAAMwZ,aACX/Y,KAAKT,MAAMqI,WAEf5H,KAAKgZ,SAAUC,EAAAA,EAAAA,kBAAiB,QAASjZ,KAAK4Y,iBAAkB,GAAI,IACpE,MAAM,aAAEM,GAAiBlZ,KAAKT,MAC9B,GAAI+Y,EAAAA,gBAAgBC,YAAYW,IAAiBZ,EAAAA,gBAAgBC,YAAYW,EAAa,GAAGC,SAAU,CACnG,MAAMC,EAAcF,EAAa,GAAGC,QAAQ,GAAGhC,YAAc+B,EAAa,GAAGC,QAAQ,GAAGhC,YAAc,GAChGzI,EAAWwK,EAAa,GAAGC,QAAQ,GAAGzK,SAAWwK,EAAa,GAAGC,QAAQ,GAAGzK,SAAW,GAC7F1O,KAAK2V,iBAAmB,CAAC,CAAE/H,IAAKwL,EAAavL,QAASa,IAGlD4J,EAAAA,gBAAgBC,YAAYW,EAAa,GAAGC,QAAQ,GAAGX,qBACvDU,EAAa,GAAGC,QAAQ,GAAGX,mBAAmBzX,KAAI2W,IAC9C,MAAMP,EAAcO,EAAKe,MAAM7K,IAM/B,OALA5N,KAAK2V,iBAAiB3O,KAAK,CACvB4G,IAAKuJ,EACLtJ,QAAS6J,EAAKvX,KACduY,qBAAsB,CAAElK,QAASkJ,EAAKlJ,QAAQC,kBAE3C,SAMhB/G,oBACC2R,EAAAA,GAASC,iBAE4B1Z,IAAjCI,KAAKT,MAAMU,OAAOwR,YAA6BzR,KAAKT,MAAMU,OAAOwR,YAIjEvB,SAASmB,MAAQnB,SAASM,iBAAiB,UAAYxQ,KAAKuX,wBAAqD,GACjHrH,SAASmB,MAAQnB,SAASmB,KAAKb,iBAAiB,YAAaxQ,KAAKqX,iCAJlEnH,SAASmB,MAAQnB,SAASM,iBAAiB,UAAYxQ,KAAK6W,cAA2C,GACvG3G,SAASmB,MAAQnB,SAASmB,KAAKb,iBAAiB,YAAaxQ,KAAK2W,uBAQvE4C,uBACCF,EAAAA,GAASC,iBAE4B1Z,IAAjCI,KAAKT,MAAMU,OAAOwR,YAA6BzR,KAAKT,MAAMU,OAAOwR,YAIjEvB,SAASmB,MAAQnB,SAASsJ,oBAAoB,UAAYxZ,KAAKuX,wBAAqD,GACpHrH,SAASmB,MAAQnB,SAASmB,KAAKmI,oBAAoB,YAAaxZ,KAAKqX,iCAJrEnH,SAASmB,MAAQnB,SAASsJ,oBAAoB,UAAYxZ,KAAK6W,cAA2C,GAC1G3G,SAASmB,MAAQnB,SAASmB,KAAKmI,oBAAoB,YAAaxZ,KAAK2W,uBAQ1E3N,SACH,MAAM,aAAEgN,GAAiBhW,KAAKT,MAG9B,OADAS,KAAKwV,aAAe,EACbnW,EAAAA,cAAAA,EAAAA,SAAA,KAAG2W,EAAehW,KAAKyZ,oBAAsBzZ,KAAK0Z,sBAOrDD,oBACJ,MAAM,aAAEzD,EAAY,aAAEkD,EAAY,WAAES,GAAe3Z,KAAKT,MACxD,OACIF,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAK2P,EAAU,CAAE1Q,UAAWsF,GAAAA,CAAWoL,EAAW1Q,UAAW+M,EAAe,cAAgB,kBAC9FkD,EAAanY,KAAI,CAAC6Y,EAAyBC,SAEHja,IAAjCI,KAAKT,MAAMU,OAAOwR,YAA6BzR,KAAKT,MAAMU,OAAOwR,WAEzDzR,KAAK8Z,4BAA4BF,EAAUV,EAAanS,OAAQ8S,EAAW7Z,KAAKyV,sBADjFzV,KAAK+Z,kBAAkBH,MAW1CF,qBACJ,MAAM,SAAEM,EAAQ,WAAEL,GAAe3Z,KAAKT,MAEtC,YAAqCK,IAAjCI,KAAKT,MAAMU,OAAOwR,YAA6BzR,KAAKT,MAAMU,OAAOwR,WAU7DpS,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAK2P,EAAU,CAAE1Q,UAAWsF,GAAAA,CAAWoL,EAAW1Q,aACrD5J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKgQ,EAAQ,CAAE3P,IAAKrK,KAAKyW,SAAUwD,SAAS,OAC5Cja,KAAKka,6BAVd7a,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAK2P,EAAU,CAAE1Q,UAAWsF,GAAAA,CAAWoL,EAAW1Q,aACrD5J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKgQ,EAAQ,CAAE3P,IAAKrK,KAAKyW,SAAUwD,SAAS,OAC5Cja,KAAKma,mBAclBJ,kBAAkBH,GACtB,OAAIA,GAAYA,EAAST,SAAWS,EAAST,QAAQpS,OAAS,EACnD/G,KAAKoa,cAAcR,GAEnB5Z,KAAKqa,oBAAoBT,GAIhCQ,cAAcR,GAClB,MAAM3G,EAAmB2G,EAASlL,SAClC,OACIrP,EAAAA,cAACwT,EAAAA,OAAM,CACHtK,IAAKqR,EAASzD,GACdlN,UAAW,iBACX6J,UAAU,sBACVC,WAAW,uBACXC,eAAe,MACfC,iBAAkBjT,KAAKsa,gBAAgBrH,IAEvC5T,EAAAA,cAAA,WACKua,EAAST,QAASpY,KAAKwZ,GACbva,KAAKwa,kBAAkBD,OAO1CD,gBAAgB5L,GACpB,OAAOrP,EAAAA,cAACA,EAAAA,SAAc,KAAEqP,GAGpB8L,kBAAkB9C,GACtB,OAAIA,GAAQA,EAAKhJ,UAAYgJ,EAAK+C,SAAW/C,EAAK+C,QAAQ1T,OAAS,EACxD/G,KAAKqa,oBAAoB3C,GACzBA,GAAQA,EAAKhJ,WAAagJ,EAAK+C,QAC/Bza,KAAK0a,oBAAoBhD,GAE7B,KAGHyC,iBACJ,MAAM,SAAEQ,EAAQ,aAAEzB,EAAY,aAAElD,GAAiBhW,KAAKT,OAChD,WAAE2W,GAAelW,KAAKsW,MACtBsE,EAA8B,GAEpC,GAAI5E,QAA+BpW,IAAfsW,GAA4BgD,EAAanS,OAAS,EAAG,CACrE,IAAI6S,EAA0B,GAC9B,IAAK,IAAI/S,EAAI,EAAGA,EAAIqS,EAAanS,OAAQF,IAAK,CAC1C,GAAIqS,EAAarS,IAAMqS,EAAarS,GAAGsP,KAAOD,EAAY,CACtD0D,EAAWV,EAAarS,GACxB7G,KAAKiW,SAAS,CAAEI,gBAAYzW,EAAWwW,oBAAqB8C,EAAarS,GAAG6H,WAC5E,MAGJ,GADAkL,EAAW5Z,KAAK6a,gBAAgB3B,EAAarS,IACzC+S,GAAYA,EAASzD,KAAOD,EAC5B,MAIR0D,GACIgB,EAAa5T,KACT3H,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CAACzB,IAAKqR,EAASzD,IAAQwE,GACvB,IACA3a,KAAK8a,oBAAoBlB,GAAW,WAIjDV,EAAa6B,SAAQ,CAACrD,EAAqB7U,KACvC+X,EAAa5T,KACT3H,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CAACzB,IAAK1F,GAAW8X,GACjB3a,KAAK8a,oBAAoBpD,QAM1C,OAAOkD,EAGHC,gBAAgBnD,GACpB,MAAMsD,EAAWtD,GAAQA,EAAKyB,QAC9B,GAAI6B,GAAYA,EAASjU,OAAS,EAC9B,IAAK,IAAIF,EAAI,EAAGA,GAAKmU,EAASjU,OAAS,EAAGF,IAAK,CAC3C,GAAImU,EAASnU,GAAGsP,KAAOnW,KAAKsW,MAAMJ,WAE9B,OADAlW,KAAKiW,SAAS,CAAEI,WAAYqB,GAAQA,EAAKvB,GAAIC,oBAAqB4E,EAASnU,GAAG6H,WACvEsM,EAASnU,GAEpB,MAAMoU,EAAQjb,KAAK6a,gBAAgBG,EAASnU,IAC5C,GAAIoU,EACA,OAAOA,EAInB,OAAO,KAGHH,oBAAoB5B,GACxB,OAAIA,GAAgBA,EAAaC,SAAWD,EAAaC,QAAQpS,OAAS,EAClE/G,KAAKT,MAAMyW,mBAA0CpW,IAA1BI,KAAKsW,MAAMJ,WAC/BlW,KAAKkb,eAAehC,EAAaC,QAASD,EAAa/C,IAG1D9W,EAAAA,cAACA,EAAAA,SAAc,KACVW,KAAKmb,sBAAsBjC,GAC3BlZ,KAAKkb,eAAehC,EAAaC,QAASD,EAAa/C,KAI7D+C,GAAgBA,EAAaxK,UAAYwK,EAAauB,SAAWvB,EAAauB,QAAQ1T,OAAS,EAC/F/G,KAAKqa,oBAAoBnB,GACzBA,GAAgBA,EAAaxK,WAAawK,EAAauB,QACvDza,KAAK0a,oBAAoBxB,GAG7B,KAGHgC,eAAeF,EAA4B9E,GAC/C,MAAM,aAAEF,EAAY,SAAE2E,GAAa3a,KAAKT,MAKxC,IAAKyb,GAAgC,IAApBA,EAASjU,OACtB,OAAO,KAGX,IAAIqU,EAAyB,GAC7B,MAAMC,EACFL,GACAA,EAASja,KAAI,CAACsX,EAAuBiD,KACjC,MAAMC,EAAalD,EAAOc,SAAWd,EAAOc,QAAQpS,OAAS,EAC7D,IAAI6S,EAOAT,EAUJ,OAfIS,EADA2B,GAAcvF,EACHhW,KAAKmb,sBAAsB9C,EAAQnC,EAAYoF,GAE/CjD,EAAOoC,QAAUza,KAAKqa,oBAAoBhC,EAAQiD,GAAOtb,KAAK0a,oBAAoBrC,GAK7FkD,IACAvb,KAAKwV,eACDxV,KAAKwV,cAAgBxV,KAAK4V,eAAiB,IAC3CwF,EAAiB,SAASpb,KAAKwV,aAAagG,aAC5CrC,EAAUnZ,KAAKkb,eAAe7C,EAAOc,QAASnD,EAAeqC,EAAOlC,QAAKvW,KAK7EP,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK2Q,EAAQ,CAAEpS,IAAK8P,EAAOlC,KAC3ByD,EACAT,MAKjB,OAAOnZ,KAAKyb,YAAYL,EAAgBC,EAAanF,GAGjDiF,sBAAsB9C,EAAuBnC,EAAqBrT,GACtE,MAAM,OAAE+Q,GAAW5T,KAAKT,MACxB,OACIF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CACDzB,IAAK1F,GACD+Q,EAAM,CACV8H,QAAS1b,KAAK8V,sBAAsBuC,EAAQnC,GAC5CyF,QAAS3b,KAAK+W,cAAa,iBACZ,EAAI,mBACJ/W,KAAKsW,MAAMJ,YAAclW,KAAKsW,MAAMJ,aAAemC,EAAOlC,IAAiB,cAC7ED,IAEZmC,EAAO3J,UAKZ2L,oBAAoBhC,EAAuBxV,GAC/C,MAAM,KAAE+Y,GAAS5b,KAAKT,MAChBmP,EAAW2J,EAAO3J,SAAW2J,EAAO3J,SAAW,GAErD1O,KAAKgZ,QAAQ6C,cAAcC,MAAQpN,EACnC,MAAMqN,GAAaC,EAAAA,EAAAA,wBAAuBhc,KAAK4Y,iBAAkB5Y,KAAKgZ,SACtE,OACI3Z,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GACG4R,EAAI,CACRrT,IAAK1F,EACLoZ,MAAI,EACJ1K,QAAM,EAENpD,KAAMkK,EAAOoC,SACTsB,EAAU,CACdL,SAASQ,EAAAA,EAAAA,kBAAiBlc,KAAK4Y,iBAAkB5Y,KAAKgZ,QAAStK,KAE9D2J,EAAO3J,UAKZgM,oBAAoBrC,EAAuBxV,GAC/C,MAAM,KAAEsZ,GAASnc,KAAKT,MACtB,OACIF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CAACzB,IAAK1F,GAAWsZ,GACjB9D,EAAO3J,UAKZ+M,YAAYW,EAAef,EAA4BgB,GAC3D,MAAM,aAAEC,EAAY,SAAEtC,EAAQ,kBAAE/C,GAAsBjX,KAAKT,MAE3D,OADAS,KAAKwV,aAAe,EAChByB,EAEI5X,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKsS,EAAY,CAAErT,UAAWqT,EAAcrT,YAC7C5J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKgQ,EAAQ,CAAE/Q,UAAWsF,GAAAA,CAAWyL,EAAS/Q,UAAWmT,KACzDf,IAYbhc,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKgQ,EAAQ,CAAE/Q,UAAWsF,GAAAA,CAAWyL,EAAS/Q,UAAWmT,KACzDf,GA+CLtE,gBACC/W,KAAKT,MAAMyW,cACZhW,KAAKiW,SAAS,CAAEC,gBAAYtW,EAAWwW,oBAAqB,KAiD5D0D,4BAA4BF,EAAyB2C,EAAiB1C,GAC1E,OAAID,GAAYA,EAAST,SAAWb,EAAAA,gBAAgBC,YAAYqB,EAAST,SAC9DnZ,KAAKwc,wBAAwB5C,EAAU2C,EAAS1C,GAAU,GAE9D7Z,KAAKyc,8BAA8B7C,OAAUha,GAAW,GAAM,EAAO2c,EAAS1C,GAUjF2C,wBAAwB5C,EAAyB2C,EAAkB1C,EAAmB6C,GAAoB,IAAAC,EAAAC,EAAAC,EAC9G,MAAM5J,EAAmB2G,EAASlL,SAC5BoO,EAAW9c,KAAKsW,MAAM2B,eACtBE,OAAkCvY,IAArBqT,EAAiCA,EAAmB,GACjE8J,OAAoBnd,IAAbkd,EAAyBA,EAAW,IAC3C,aAAE9G,GAAiBhW,KAAKT,MAE9B,IAAIyd,GAAe,EACfD,EAAK5E,KACL6E,GAAe,GAEnB,MAAMC,EAA2B,CAAEtL,OAAQqL,GAGrCE,EAAqCR,IAA0C,QAA7BC,EAAA3c,KAAKT,MAAMU,OAAOkd,mBAAW,IAAAR,OAAA,EAA7BA,EAA+Bja,QAAO0a,GAAWA,EAAQ1O,WAAayJ,MAAoB,GAC5IkF,EAA+B,CACjC3O,UAA2B,QAAjBkO,EAAAM,EAAe,UAAE,IAAAN,OAAA,EAAjBA,EAAmBU,iBAAkB,GAC/C7C,SAA0B,QAAjBoC,EAAAK,EAAe,UAAE,IAAAL,GAAe,QAAfA,EAAjBA,EAAmBU,qBAAa,IAAAV,OAAA,EAAhCA,EAAkCpO,iBAAkB,GAC7D+O,kBAAkB,GAEtB,OACIne,EAAAA,cAACwT,EAAAA,OAAM,CACH4K,KAAK,UACLC,kBAAmB,CACf,eAA2C,KAA3BL,EAAc3O,SAAkB6N,EAAUA,EAAW,EACrE,gBAAiB1C,EACjB4D,KAAM,UAEVE,UAAW3H,EAAe4D,EAAS+D,eAAY/d,EAC/C2I,IAAKqR,EAASzD,GACdlN,UAAU,iBACV6J,UAAU,sBACV8K,SAAU5d,KAAK+X,0BACf8F,cAAeZ,EACflK,WAAW,uBACXC,eAAe,MACfC,iBAAkBjT,KAAK8d,0BAA0B7K,EAA6C,KAA3BoK,EAAc3O,SAAkB6N,EAAUA,EAAW,EAAG1C,IAE3Hxa,EAAAA,cAAA,OAAKoe,KAAK,WACL7D,EAAST,QAASpY,KAAI,CAACwZ,EAA4BwD,KAAsB,IAAAC,EAChBC,EAAtD,OAAI3F,EAAAA,gBAAgBC,YAAYgC,EAAYpB,SACjCnZ,KAAKwc,wBACRjC,EAC2B,KAA3B8C,EAAc3O,SAAkC,QAAnBuP,EAAGrE,EAAST,eAAO,IAAA8E,OAAA,EAAhBA,EAAkBlX,OAAS6S,EAAST,QAASpS,OAAS,EACtFgX,EAAa/d,KAAKyV,sBAGnBzV,KAAKke,4BACR3D,EAC2B,KAA3B8C,EAAc3O,SAAkC,QAAnBsP,EAAGpE,EAAST,eAAO,IAAA6E,OAAA,EAAhBA,EAAkBjX,OAAS6S,EAAST,QAASpS,OAAS,EACtFgX,EAAa/d,KAAKyV,yBAGE,KAA3B4H,EAAc3O,SAAkBrP,EAAAA,cAAAA,EAAAA,SAAA,MAC7BW,KAAKke,4BACDb,EACAzD,EAAST,QAASpS,OAAS,EAC3B6S,EAAST,QAASpS,OAAS/G,KAAKyV,wBAehDqI,0BACJpP,EACA6N,EACA1C,GAEA,OACIxa,EAAAA,cAAA,uBAAoBkd,EAAO,gBAAiB1C,GACvCnL,GAYLwP,4BAA4BxG,EAAqB6E,EAA6B1C,GAClF,OAAInC,GAAQA,EAAKhJ,UAAYgJ,EAAK+C,SAAW/C,EAAK+C,QAAQ1T,OAAS,EACxD/G,KAAKyc,8BAA8B/E,OAAM9X,GAAW,GAAM,EAAO2c,EAAS1C,GAC1EnC,GAAQA,EAAKhJ,WAAagJ,EAAK+C,QAC/Bza,KAAKme,8BAA8BzG,GAEvC,KAOHwC,2BACJ,MAAM,SAAES,EAAQ,aAAEzB,EAAY,aAAElD,GAAiBhW,KAAKT,OAChD,WAAE2W,GAAelW,KAAKsW,MACtBsE,EAA8B,GAEpC,GAAI5E,QAA+BpW,IAAfsW,GAA4BgD,EAAanS,OAAS,EAAG,CACrE,IAAI6S,EAA0B,GAC9B,IAAK,MAAMwE,KAAiBlF,EAAc,CACtC,GAAIkF,GAAiBA,EAAcjI,KAAOD,EAAY,CAClD0D,EAAWwE,EACXpe,KAAKiW,SAAS,CAAEI,gBAAYzW,IAC5B,MAGJ,GADAga,EAAW5Z,KAAKqe,0BAA0BD,GACtCxE,GAAYA,EAASzD,KAAOD,EAC5B,MAIR0D,GACIgB,EAAa5T,KACT3H,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CAACzB,IAAKqR,EAASzD,IAAQwE,GACvB,IACA3a,KAAKse,8BAA8B1E,GAAW,WAI3DV,EAAa6B,SAAQ,CAACrD,EAAqB7U,KACvC+X,EAAa5T,KACT3H,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CAACzB,IAAK1F,GAAW8X,EAAQ,eAAezE,IAAewB,EAAKvB,KAC5DnW,KAAKse,8BAA8B5G,QAMpD,OAAOkD,EAQHyD,0BAA0B3G,GAC9B,MAAMsD,EAAWtD,GAAQA,EAAKyB,QAC9B,GAAI6B,GAAYA,EAASjU,OAAS,EAC9B,IAAK,IAAIF,EAAI,EAAGA,GAAKmU,EAASjU,OAAS,EAAGF,IAAK,CAC3C,GAAImU,EAASnU,GAAGsP,KAAOnW,KAAKsW,MAAMJ,WAE9B,OADAlW,KAAKiW,SAAS,CAAEI,WAAYqB,MAAAA,OAAI,EAAJA,EAAMvB,KAC3B6E,EAASnU,GAEpB,MAAMoU,EAAQjb,KAAKqe,0BAA0BrD,EAASnU,IACtD,GAAIoU,EACA,OAAOA,EAInB,OAAO,KAQHqD,8BAA8BpF,EAA6BrW,EAAgBuZ,GAC/E,OAAIlD,GAAgBA,EAAaC,SAAWD,EAAaC,QAAQpS,OAAS,EAClE/G,KAAKT,MAAMyW,mBAA0CpW,IAA1BI,KAAKsW,MAAMJ,WAC/BlW,KAAKue,yBAAyBrF,EAAaC,QAASD,EAAa/C,QAAIvW,EAAWsZ,EAAaxK,UAGpGrP,EAAAA,cAAAA,EAAAA,SAAA,KACKW,KAAKwe,gCAAgCtF,GACrClZ,KAAKue,yBAAyBrF,EAAaC,QAASD,EAAa/C,QAAIvW,EAAWsZ,EAAaxK,UAAU,IAGzGwK,GAAgBA,EAAaxK,UAAYwK,EAAauB,SAAWvB,EAAauB,QAAQ1T,OAAS,EAC/F/G,KAAKyc,8BAA8BvD,EAAcA,EAAa/C,IAAI,GAAO,GACzE+C,GAAgBA,EAAaxK,WAAawK,EAAauB,QACvDza,KAAKme,8BAA8BjF,EAAcA,EAAa/C,IAAI,GAGtE,KAGHoI,yBAAyBvD,EAA4B9E,EAAqBuI,EAAqBC,EAA4BhC,GAAoB,IAAAiC,EAAAC,EAAAC,EACnJ,MAAM,aAAE7I,EAAY,SAAE2E,GAAa3a,KAAKT,MAClCuf,EAAyB9e,KAAKT,MAAMU,OAAO8e,uBAAwB,EAEnEC,EAA0Bhf,KAAKT,MAAMU,OAAOgf,kBAD7B,EAIrB,GAAI/I,GAAclW,KAAKsW,MAAMJ,aAAeA,EAExC,OAAO,KAGX,IAAK8E,GAAgC,IAApBA,EAASjU,OAEtB,OAAO,KAGX,IAAIqU,EAAyB,GAE7B,MAAM8B,EAAqCwB,IAAiD,QAA7BC,EAAA3e,KAAKT,MAAMU,OAAOkd,mBAAW,IAAAwB,OAAA,EAA7BA,EAA+Bjc,QAAO0a,GAAWA,EAAQ1O,WAAagQ,MAA2B,GAC1JQ,EAA6ChC,EAAexa,QAAO0a,GAAqCxd,MAA1Bwd,EAAQE,kBAAgC,GACtH6B,EAA6BzC,GAAcwC,EAAuBnY,OAAS,IAAK,EAChFqY,EAAqCD,EACrCnf,KAAKyc,8BAA8B,CACjC/N,UAA2B,QAAjBkQ,EAAA1B,EAAe,UAAE,IAAA0B,OAAA,EAAjBA,EAAmBtB,iBAAkB,GAC/C7C,SAA0B,QAAjBoE,EAAA3B,EAAe,UAAE,IAAA2B,GAAe,QAAfA,EAAjBA,EAAmBtB,qBAAa,IAAAsB,OAAA,EAAhCA,EAAkCpQ,iBAAkB,GAC7D+O,kBAAkB,IAEpB,KACAnC,EACFL,GACAA,EAASja,KAAI,CAACsX,EAAuBiD,KACjC,MAAMC,EAAalD,EAAOc,SAAWd,EAAOc,QAAQpS,OAAS,EAE7D,IAAI6S,EAUAT,EAPAS,EADA2B,GAAcvF,EACHhW,KAAKwe,gCAAgCnG,EAAQnC,EAAYoF,GAEzDjD,EAAOoC,QACZza,KAAKyc,8BAA8BpE,EAAQiD,GAC3Ctb,KAAKme,8BAA8B9F,GAK7C,MAAMgH,EAAc9D,GAAcuD,GAA0B9e,KAAKwV,cAAgB8J,KAAKC,MAAMP,GAA2B,EAMvH,OALIK,IACArf,KAAKwV,eACL4F,EAAiB0D,EAAyB,SAAS9e,KAAKwV,aAAagG,aAAe,GACpFrC,EAAUnZ,KAAKue,yBAAyBlG,EAAOc,QAASnD,EAAeqC,EAAOlC,QAAKvW,GAAW,IAG9FP,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK2Q,EAAQ,CAAEpS,IAAK8P,EAAOlC,GAAIlN,UAAWsF,GAAAA,CAAWoM,EAAS1R,UAAWoW,GAAe,iBACxFzF,EACAT,MAIjB,OAAOnZ,KAAKwf,sBAAsBpE,EAAgBC,EAAanF,EAAYuI,EAAWU,EAAmBC,GAUrGZ,gCAAgCnG,EAAuBnC,EAAqBrT,GAChF,MAAM,OAAE+Q,GAAW5T,KAAKT,MACxB,OACIF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CACDzB,IAAK1F,GACD+Q,EAAM,CACV8H,QAAS1b,KAAKgX,gCAAgCqB,EAAQnC,GACtDyF,QAAS3b,KAAK8X,wBAAuB,kBACpB9X,KAAKsW,MAAMJ,YAAclW,KAAKsW,MAAMJ,aAAemC,EAAOlC,IAAG,mBAC5DnW,KAAKsW,MAAMJ,YAAclW,KAAKsW,MAAMJ,aAAemC,EAAOlC,IAAG,cAClED,IAEZmC,EAAO3J,UAgBZ+Q,YAAYpH,EAAuBrC,GAIvC,IAAI0J,EAAkB,GAEtB,GAAK1J,EAyCE,CACH,MAAM2J,EAAWzP,SAAS0P,iBAAiB,oCAAoC,GAC/E1a,MAAMC,KAAKwa,MAAAA,OAAQ,EAARA,EAAUE,UAAW9E,SAAQ+E,IACpC,IAAIA,MAAAA,OAAI,EAAJA,EAAMC,mBAAqB,EAAG,CAC9B,MAAMC,EAAUF,EAAKG,cAAc,yDAA0DC,YAC7F,GAA6E,SAAzEJ,EAAKK,qBAAqB,UAAU,GAAGtI,aAAa,iBACpD,GAAIiI,EAAKF,iBAAiB,yDAAyD7Y,OAAS,EAAG,CAC3F7B,MAAMC,KAAK2a,MAAAA,OAAI,EAAJA,EAAMF,iBAAiB,8BAA+B7E,SAAQqF,IACrE,MAAMC,EAAUD,EAAKH,cAAc,yDAA0DC,YAC7Fhb,MAAMC,KAAKib,EAAKR,iBAAiB,+BAAgC7E,SAAQuF,IACrE,MAAMC,EAAUD,EAAKJ,YACfM,EAAO,GAAGR,KAAWK,KAAWE,IAChCC,KAAQd,GACVA,EAAM1Y,KAAKwZ,SAIvB,MAAM9e,EAAWoe,EAAKD,SAAS,GAAID,iBAAiB,8BAC9Ca,EAAiB/e,EAASA,EAASqF,OAAS,GAAGmZ,YAC/CM,EAAO,GAAGR,KAAWS,IACrBD,KAAQd,GAA6B,KAAnBe,GACpBf,EAAM1Y,KAAKwZ,QAGftb,MAAMC,KAAK2a,EAAKF,iBAAiB,+BAA+B7E,SAAQqF,IACpE,MAAMC,EAAUD,EAAKF,YACfM,EAAO,GAAGR,KAAWK,IACrBG,KAAQd,GACVA,EAAM1Y,KAAKwZ,UAKxB,CACH,MAAMA,EAAOV,EAAKI,YACZM,KAAQd,GACVA,EAAM1Y,KAAKwZ,WA7ER,CACf,MAAME,EAAOxQ,SAAS0P,iBAAiB,mBAAmB,GAC1D1a,MAAMC,KAAKub,MAAAA,OAAI,EAAJA,EAAMb,UAAW9E,SAAQ+E,IAChC,IAAIA,MAAAA,OAAI,EAAJA,EAAMC,mBAAqB,EAAG,CAC9B,MAAMC,EAAUF,EAAKG,cAAc,UAAWC,YACxCS,EAAgB3K,EAAe,iBAAmB,UAsBxD,GArBI8J,EAAK3P,uBAAuBwQ,GAAe5Z,OAAS,EACpD7B,MAAMC,KAAK2a,MAAAA,OAAI,EAAJA,EAAMF,iBAAiB,sCAAuC7E,SAAQqF,IAC7E,MAAMC,EAAUD,EAAKH,cAAc,iCAAkCC,YACrEhb,MAAMC,KAAKib,EAAKR,iBAAiB,0BAA2B7E,SAAQuF,IAChE,MAAMC,EAAUD,EAAKJ,YACfM,EAAO,GAAGR,KAAWK,KAAWE,IAChCC,KAAQd,GACVA,EAAM1Y,KAAKwZ,SAKvBtb,MAAMC,KAAK2a,MAAAA,OAAI,EAAJA,EAAMF,iBAAiB,0BAA2B7E,SAAQqF,IACjE,MAAMC,EAAUD,EAAKF,YACfM,EAAO,GAAGR,KAAWK,IACrBG,KAAQd,GACVA,EAAM1Y,KAAKwZ,MAKnBV,EAAKG,cAAc,+BAAgC,CACnD,MAAMQ,EAAiBX,EAAKG,cAAc,+BAAgCC,YACpEM,EAAO,GAAGR,KAAWS,IACrBD,KAAQd,GAA6B,KAAnBe,GACpBf,EAAM1Y,KAAKwZ,QAGhB,CACH,MAAMA,EAAOV,EAAKI,YACZM,KAAQd,GACVA,EAAM1Y,KAAKwZ,OA8C3B,MAAMI,EAAelB,EAAMmB,MAAKL,IAAI,IAAAM,EAAA,OAAIN,EAAKlS,SAAwB,QAAhBwS,EAACzI,EAAO3J,gBAAQ,IAAAoS,EAAAA,EAAI,eACvD,IAAAC,EAAAC,EAAdJ,IACgB,QAAhBG,EAAA3P,OAAO6P,iBAAS,IAAAF,GAAM,QAANC,EAAhBD,EAAkB/Z,YAAI,IAAAga,GAAtBA,EAAAE,KAAAH,EAAyB,CACrB,MAAS,UACT,cAAiB,OACjB,YAAe,QACf,WAAcH,KAKlBnE,8BACJpE,EACAxV,GAIiB,IAFjBse,EAAAC,UAAAra,OAAA,QAAAnH,IAAAwhB,UAAA,IAAAA,UAAA,GACA7E,EAAgB6E,UAAAra,OAAA,EAAAqa,UAAA,QAAAxhB,EAChBia,EAAiBuH,UAAAra,OAAA,EAAAqa,UAAA,QAAAxhB,EAEjB,MAAM,KAAEgc,EAAI,aAAE5F,GAAiBhW,KAAKT,MAC9BmP,EAAW2J,EAAO3J,SAAW2J,EAAO3J,SAAW,GACrD1O,KAAKgZ,QAAQ6C,cAAcC,MAAQpN,EACnC,MAAMqN,GAAaC,EAAAA,EAAAA,wBAAuBhc,KAAK4Y,iBAAkB5Y,KAAKgZ,SACtE,OACI3Z,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,gBACagM,EAAeuG,OAAU3c,EAAS,gBACjCoW,EAAe6D,OAAWja,EAAS,aACtCoW,EAAeqC,EAAOsF,eAAY/d,GAC1Cgc,EAAI,CACRrT,IAAK1F,EACL8Y,QAASwF,EAAWnhB,KAAK8X,6BAA0BlY,EACnDQ,OAAQiY,EAAOmF,iBAAmB,cAAW5d,EAC7CuO,KAAMkK,EAAOoC,SACTsB,EAAU,CACdL,QAASA,KACL1b,KAAKyf,YAAYpH,EAAQrC,IACzBkG,EAAAA,EAAAA,kBAAiBlc,KAAK4Y,iBAAkB5Y,KAAKgZ,QAAStK,MAGzD2J,EAAO3J,UAWZ2S,iCAAiC3S,EAAmBF,GACxD,MAAM,KAAEoN,GAAS5b,KAAKT,MACtBS,KAAKgZ,QAAQ6C,cAAcC,MAAQpN,EACnC,MAAMqN,GAAaC,EAAAA,EAAAA,wBAAuBhc,KAAK4Y,iBAAkB5Y,KAAKgZ,SACtE,OAAItK,GAAYF,EAERnP,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK4R,EAAI,CAAEzN,KAAMK,GAAauN,EAAU,CAAEL,SAASQ,EAAAA,EAAAA,kBAAiBlc,KAAK4Y,iBAAkB5Y,KAAKgZ,QAAStK,KACzGA,GAIN,KAUHyP,8BAA8B9F,EAAuBxV,GAAyC,IAAzBse,EAAAC,UAAAra,OAAA,QAAAnH,IAAAwhB,UAAA,IAAAA,UAAA,GACzE,MAAM,KAAEjF,GAASnc,KAAKT,MACtB,OACIF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,CAACzB,IAAK1F,GAAWsZ,EAAI,CAAER,QAASwF,EAAWnhB,KAAK8X,6BAA0BlY,IAC1EyY,EAAO3J,UAaZ8Q,sBAAsBpD,EAAef,EAA4BgB,EAAsBiF,EAAmBC,EAA2BC,GAA+B,IAAAC,EACxK,MAAM,aAAEnF,EAAY,SAAEtC,EAAQ,kBAAE0H,EAAiB,kBAAEzK,EAAiB,aAAEjB,EAAY,uBAAE2L,GAA2B3hB,KAAKT,MAC9GqiB,GACD5L,GAAgBiB,GAAkD,OAA7BjX,KAAKsW,MAAMgB,oBAAuD1X,IAA7BI,KAAKsW,MAAMgB,gBAAgCgK,EACpHO,GACD7L,GAAgB2L,GAA0BrJ,EAAAA,gBAAgBC,YAAYvY,KAAKsW,MAAMgB,iBAAmBgK,EACnGQ,EACF9hB,KAAKwV,aAAeF,EAAiByM,KAAOH,EAAuBtF,EAAcrT,UAAY,kBACjGjJ,KAAKwV,aAAeF,EAAiB0M,IACrC,MAAMC,EAAyC,QAA3BR,EAAGzhB,KAAKsW,MAAMgB,qBAAa,IAAAmK,OAAA,EAAxBA,EAA0B/e,QAAO+V,IAAUyJ,EAAAA,iBAAiBC,mBAAmB1J,EAAM7K,OACtGwU,EAAqBH,MAAAA,OAAc,EAAdA,EAAgBlhB,KAAI2W,GAAQA,EAAK9J,MAAKyU,KAAK,KAEtE,OACIhjB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKsS,EAAY,CAAErT,UAAW6Y,IAC/BziB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GACGgQ,EAAQ,CACZ/Q,UAAWsF,GAAAA,CACPyL,EAAS/Q,UACTmT,EACAwF,GAAwB,gBACxBA,GACA5hB,KAAKT,MAAMU,OAAOgf,kBAClBjf,KAAKT,MAAMU,OAAOgf,iBAAmB,GACrC,yBAGH5D,GAELhc,EAAAA,cAAA,OAAK4J,UAAU,2BAA2BV,IAAK6Z,GAC1CR,GACGtJ,EAAAA,gBAAgBC,YAAY0J,IAC5BA,EAAelhB,KAAI2W,IAAI,IAAA4K,EAAAC,EAAA,OACnBljB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK0X,EAAiB,CAAEzY,UAAWyY,EAAmBzY,UAAWV,IAAKmP,EAAK9J,MDt6B5E4U,EAC5BjjB,EACA+X,EACAmL,KAEA,MAAMC,GAAmBC,EAAAA,EAAAA,kBAAiB,GAAGrL,IAAiB/X,EAAMgB,QAAQC,cAAcC,eAAemiB,aACnGC,EAAgD,CAClDC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAQzCI,UAAU,GAEd,QAAyB1jB,IAArB8iB,EAAgC,KAAAa,EAChC,MAAMC,EAAiC,CAAE5V,IAAK8U,GAC9C,OACIrjB,EAAAA,cAACyK,EAAAA,GAAcC,OAAAC,OAAA,CACXvJ,eAAgBlB,EAAMgB,QAAQC,cAAcC,eAC5CwI,UAAU,sBACNua,EAAS,CACbC,aAAclkB,EAAMgB,QAAQ4J,QAAQsZ,aACpCC,cAAiD,QAApCH,EAAEhkB,EAAMU,OAAO0jB,6BAAqB,IAAAJ,EAAAA,EAAIV,EACrDe,oBAAoB,OACpBnG,KAAK,WACL5P,QAAS4U,KAIrB,OAAO,MCm4BsBD,CAAiBxiB,KAAKT,MAAe,QAAV+iB,EAAE5K,EAAK9J,WAAG,IAAA0U,EAAAA,EAAI,GAAI5K,EAAK7J,QAAS2N,YAC3DqG,GACG7hB,KAAKqhB,iCAAiC3J,EAAK7J,QAAkC,QAA3B0U,EAAE7K,EAAKgB,4BAAoB,IAAA6J,OAAA,EAAzBA,EAA2B/T,cAIlG+S,EACIliB,EAAAA,cAAAA,EAAAA,SAAA,KACGA,EAAAA,cAAA,OAAK4J,UAAU,mBAAkB5J,EAAAA,cAAA,OAAK4J,UAAU,0BAChD5J,EAAAA,cAAA,OAAK4J,UAAU,2BACVuY,IAGPniB,EAAAA,cAAAA,EAAAA,SAAA,WA4DVyY,0BACC9X,KAAKT,MAAMyW,cACZhW,KAAKiW,SAAS,CAAEC,gBAAYtW,KAgExC,0FCnmCA,MAkGMikB,EAAmBtkB,GAEjBF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMukB,WACZzkB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMsK,aACXtK,EAAMwkB,KACNxkB,EAAMykB,KACNzkB,EAAM0kB,QAEX5kB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAM2kB,eACZ7kB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAM4kB,aAEX5kB,EAAM6kB,YAEX/kB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAM8kB,eACX9kB,EAAM+kB,aACN/kB,EAAMglB,aACNhlB,EAAMilB,cAEXnlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMklB,eAIXllB,EAAMmlB,QAQrBC,EAAoBA,CAACplB,EAA8BkK,IAEjDpK,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKzK,EAAMqlB,MAAWnb,GACxBlK,EAAMslB,YACPxlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMulB,WACZzlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMwlB,MACZ1lB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMylB,UACXzlB,EAAM0kB,OACN1kB,EAAM0lB,aAEX5lB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMylB,UACXzlB,EAAM2lB,WACN3lB,EAAM4lB,YAEX9lB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMylB,UACXzlB,EAAM6lB,UACN7lB,EAAM8lB,WAEV9lB,EAAM+lB,iBACN/lB,EAAMwJ,QAGf1J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMgmB,aACXhmB,EAAMimB,aACNjmB,EAAMkmB,eAMjBC,EAAoBA,CAACnmB,EAAoC+W,IAEvDjX,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMqlB,OACZvlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMslB,aAAcvO,EAAMqP,SAAWpmB,EAAMqmB,gBAAkBrmB,EAAMsmB,QAC7ExmB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMulB,WACXxO,EAAMqP,SAAWpmB,EAAMumB,uBAAyB,CAACvmB,EAAMwmB,cAAexmB,EAAMymB,aAAczmB,EAAMwJ,QAErG1J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMgmB,aAAcjP,EAAMqP,SAAWpmB,EAAM0mB,gBAAkB,CAAC1mB,EAAMimB,aAAcjmB,EAAMkmB,gBAK9G,EA1KyDlmB,IAAQ,IAAA2mB,EAAAC,EAAAC,EAC7D,MAAM,YAGF3c,EAAW,2BAEX4c,EAA0B,aAC1BC,EAAY,kBAEZC,EAAiB,YAEjBC,EAAW,YAEXC,EAAW,MAEXnQ,EAAK,WACLoQ,GACAnnB,GAEGonB,EAAWC,GAAgBvnB,EAAAA,UAAe,GAG3CwnB,EAAqBA,KACvB3W,SAASmB,KAAKyV,MAAMC,UAAYJ,EAAY,SAAW,SACvDC,GAAcD,IAMZK,GAFad,EAAG3mB,EAAMoB,KAAKsmB,eAAepmB,OAAOqmB,cAEa,QAAnDf,EAAG5mB,EAAMkN,UAAU0a,wCAAgC,IAAAhB,EAAAA,EAAI,IAElE1e,EAAuC,QAAlC2e,EAAG7mB,EAAMkN,UAAU2a,uBAAe,IAAAhB,EAAAA,EAAI,GAUjD,OARA/mB,EAAAA,WAAgB,KACZ,MAAMgoB,EAAenX,SAASC,uBAAuB,gCAAgC,GAC/EmX,EAAgBpX,SAASC,uBAAuB,gCAAgC,GAClFkX,GAAgBC,IAChBA,EAAclX,UAAYiX,EAAajX,cAI1CsW,GAAqC,IAAvBF,EAAYzf,QAAiBuP,EAAMiR,gBAUlDloB,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKP,GAkBRpK,EAAAA,cAAA,OAAK4J,UAAU,QAAQyS,QAASmL,EAAoBC,MAAO,CAAEU,QAASb,EAAY,QAAU,SACxFtnB,EAAAA,cAAA,OAAK4J,UAAU,gBAAgByS,QAAShV,GAAKA,EAAE+gB,mBAC3CpoB,EAAAA,cAAA,OAAK4J,UAAU,gBACX5J,EAAAA,cAAA,QAAM4J,UAAU,SAASxB,GACzBpI,EAAAA,cAAA,UAAQ4J,UAAU,0BAA0ByS,QAASmL,KAEzDxnB,EAAAA,cAAA,OAAK4J,UAAU,+CACf5J,EAAAA,cAAA,OAAK4J,UAAU,kBACX5J,EAAAA,cAAA,OAAK4J,UAAU,gBACVyd,GAAc7C,EAAgB6C,GAC9BF,EAAYzlB,KAAI2mB,GACN7D,EAAgB6D,SAM3CroB,EAAAA,cAAA,UAAQ4J,UAAU,eAAeyS,QAASmL,GACrCG,GAEmB,IAAvBR,EAAYzf,QAAgBuP,EAAMiR,iBAAmBlB,EACrDC,EACA3B,EAAkB8B,EAAahd,GAC/Bic,EAAkBa,EAAmBjQ,IA7CnC,mJCjCf,MAsYMqR,EAA0BA,CAC5BC,EACAC,EACAC,EACAC,EACAC,IAEO3oB,EAAAA,aACHuoB,EAAWhD,MACX,GACAgD,EAAW/C,YACXoD,EAAgBL,EAAYC,EAAYC,EAAuBC,EAAgBC,GAC/EJ,EAAWrC,aAIb0C,EAAkBA,CACpB1oB,EACAsoB,EACAC,EACAC,EACAC,IAEID,EACO1oB,EAAAA,aAAmBE,EAAMulB,UAAW,GAAIoD,EAAWH,EAAgBC,GAAmBF,EAAuBK,EAAcN,IAE/H,KAGLM,EAAiB5oB,IACnB,MAAM,SAAE6oB,EAAQ,oBAAEC,EAAmB,wBAAEC,GAA4B/oB,EACnE,OAAI6oB,EAEI/oB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKse,GACNjpB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKqe,GACLD,EAASrnB,KAAI,CAACugB,EAASze,IACpBxD,EAAAA,cAACA,EAAAA,SAAc,CAACkJ,IAAK1F,GAAQye,OAM1C,MAGL4G,EAAaA,CAAC3oB,EAAyByoB,KACzC,MAAM,iBAAEO,EAAgB,eAAER,GAAmBxoB,EAC7C,OAAIwoB,IAAmBC,EACZ3oB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKue,GAAmBR,GAEjC,MAGLS,EAA0BA,CAACjpB,EAAoCkpB,EAAqCC,KACtG,MAAM,2BAAEC,EAA0B,sBAAEC,EAAqB,2BAAEC,GAA+BtpB,EACpFupB,EAAkBL,EAAQM,kBAAkBloB,OAClD,OAAI+nB,GAAyBA,EAAsB7hB,OAAS,EAEpD1H,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK2e,GACLC,EAAsB7nB,KAAI,CAACioB,EAAUnmB,KAAK,IAAAomB,EAAA,OACvC5pB,EAAAA,cAACA,EAAAA,SAAc,CAACkJ,IAAK1F,IACf+lB,EAAsB/lB,EAAQ,IAAM6lB,EACjCrpB,EAAAA,cAAA,KAAGkJ,IAAK1F,EAAOsL,KAAM2a,EAAwC,QAAzBG,EAAGH,EAAgBjmB,UAAM,IAAAomB,OAAA,EAAtBA,EAAwBC,IAAM,GAAE,aAAcR,GAAkB,GAAE,eAAe,YACpH,IACAA,GAAkB,GAAI,KACnBM,EAEXJ,GAAyBA,EAAsB/lB,EAAQ,IAAMgmB,OAO3E,MAGLM,EAAcA,CAAC5pB,EAAwB6pB,EAAuBC,EAAuBX,KACvF,MAAM,MAAEjhB,EAAK,eAAE6hB,GAAmB/pB,EAClC,OAAIkI,GAAS2hB,EAEL/pB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKsf,GACNjqB,EAAAA,cAAA,UACKgqB,EAAe5hB,EAAM8hB,YAAc,KACnCb,GAAkCjhB,EAAM+hB,YAKlD,MAIX,EAjewEjqB,IAAQ,IAAAkqB,EAAAC,EAAAC,EACxE,MAAM,sBACFC,EAAqB,SACrBC,EAAQ,WACRC,EAAU,kBACVC,EAAiB,wBACjBC,EAAuB,cACvBC,EAAa,YAEbC,EAAW,kBACXC,EAAiB,eACjBC,EAAc,WACdvC,EAAU,kBACVkB,EAAiB,cACjBsB,EAAa,qBACbC,EAAoB,iCACpBC,EAAgC,aAChCC,EAAY,uBACZC,EAAsB,mBACtBC,EAAkB,OAClBzqB,EAAM,KACNU,GACApB,EACEyoB,EAAmE,QAAnDyB,EAAGlqB,EAAMgB,QAAQC,cAAcC,eAAekqB,aAAK,IAAAlB,OAAA,EAAhDA,EAAkDmB,eACrEC,EACFtrB,EAAMgB,SACNhB,EAAMgB,QAAQ4J,SACd5K,EAAMgB,QAAQ4J,QAAQ2gB,WACtBvrB,EAAMgB,QAAQ4J,QAAQ2gB,UAAUC,YAChCxrB,EAAMgB,QAAQ4J,QAAQ2gB,UAAUC,WAAW,IACzC,gBAAEC,EAAe,aAAEC,EAAY,aAAE7B,GAAiBnpB,EAElDirB,EAAsB3rB,EAAMoB,KAAKwqB,cAActqB,QAAuD,QAAjD6oB,EAAInqB,EAAMoB,KAAKwqB,cAActqB,OAAOuqB,qBAAa,IAAA1B,GAA7CA,EAA+C3iB,OAAuD,QAAjD4iB,EAAIpqB,EAAMoB,KAAKwqB,cAActqB,OAAOuqB,qBAAa,IAAAzB,OAAA,EAA7CA,EAA+C5iB,OAAS,KAEhL,GAAgB,aAAZ8jB,EAAwB,CACxBxrB,EAAAA,WAAgB,KACZ,MAAMgsB,EAAWnb,SAASC,uBAAuB,uBAAuB,GAClEmb,EAAQpb,SAASC,uBAAuB,kBAAkB,GAChEkb,EAAShX,YAAYiX,KACtB,IACH,MAAMC,EAA4B,oBAAXna,QAA0Boa,aAAaC,QAAQ,eAChEC,EAAeH,GAAuB,OAAZA,EAAmBA,EAAUI,KAAKC,UAAU,IAEtEC,EAAiBF,KAAKG,MAAMJ,GAGlCnsB,EAAMgB,QAAQwrB,WAAaF,EAC3B,MAAOE,EAAYC,GAAiB3sB,EAAAA,SAAewsB,GAE7CI,EAA4BliB,OAAO3E,OAAO2mB,GAAYG,QAAO,CAACC,EAACxhB,KAAA,IAAE,IAAEyhB,GAAKzhB,EAAA,OAAK0hB,OAAOF,GAAKE,OAAOD,KAAM,GAEtGE,EAAgBviB,OAAO3E,OAAO2mB,GAAYhrB,KAAIwrB,GAAMA,EAAGH,IAAMG,EAAGC,QAChEC,EAA4BJ,OAAOC,EAAcJ,QAAO,CAACK,EAAIG,IAAOH,EAAKG,GAAI,KAC5EC,EAAYC,GAAiBvtB,EAAAA,SAAeotB,IAC5CI,EAAYC,GAAiBztB,EAAAA,SAAuB4sB,IACpDc,EAAeC,GAAoB3tB,EAAAA,SAAe,CACrD4tB,OAAQ,QACRC,QAAS3tB,EAAMkN,UAAU0gB,6BAEtBC,EAAYC,GAAiBhuB,EAAAA,UAAe,GAE7CiuB,EAAcA,KACE,oBAAXlc,QAA0Boa,aAAa+B,QAAQ,cAAe5B,KAAKC,UAAUG,IACpF,MAAMR,EAAUC,cAAgBA,aAAaC,QAAQ,eAC/CC,EAAeH,GAAuB,OAAZA,EAAmBA,EAAUI,KAAKC,UAAU,IACtEC,EAAiBF,KAAKG,MAAMJ,GAClCM,EAAcH,IAIZ2B,EAAeA,KACjBxB,EAAcH,IAsBlB,SAAS4B,EAAwBvgB,GACL,iBAAbA,GACP8f,EAAiB,CAAEC,OAAQ,QAASC,QAAS3tB,EAAMkN,UAAU0gB,mCACtDpB,EAAW7e,GAClBogB,MAEkB,oBAAXlc,QAA0Boa,aAAa+B,QAAQ,cAAe5B,KAAKC,UAAU,KACpFoB,EAAiB,CAAEC,OAAQ,QAASC,QAAS3tB,EAAMkN,UAAU0gB,4BAC7DnB,EAAc,KA3BtB3sB,EAAAA,WAAgB,KACZ,MAAMquB,EAAUxd,SAASC,uBAAuB,wCAAwC,GAElFwd,EAAoB5tB,IAEtB,KAD2C,WAA1BA,EAAMK,OAAOwtB,UAE1B,OAEJ,MAAMC,EAAQrX,YAAW,KACrBgX,MACD,KACH,MAAO,KACHM,aAAaD,KAIrB,OADAH,EAAQld,iBAAiB,QAASmd,GAC3B,IAAMD,EAAQlU,oBAAoB,QAASmU,MAetDtuB,EAAAA,WAAgB,KAEZytB,EAAc/iB,OAAO3E,OAAO2mB,GAAYG,QAAO,CAACC,EAACthB,KAAA,IAAE,IAAEuhB,GAAKvhB,EAAA,OAAKwhB,OAAOF,GAAKE,OAAOD,KAAM,IAExF,MAAM2B,EAAmBhkB,OAAO3E,OAAO2mB,GAAYhrB,KAAIwrB,GAAMA,EAAGH,IAAMG,EAAGC,QACzEI,EAAcmB,EAAiB7B,QAAO,CAACK,EAAIG,IAAOH,EAAKG,GAAI,MAC5D,CAACX,IAEJ,MAAMiC,EAAaC,UAAW,IAAAC,EAAAnN,EAAAC,EAAAmN,EAC1B,MAAMC,QAAyBC,EAAAA,EAAAA,cAA0B,QAAdH,EAAC3uB,EAAMgB,eAAO,IAAA2tB,OAAA,EAAbA,EAAe1tB,eACrD8tB,EAAkBvkB,OAAO3E,OAAO2mB,GAChCwC,EAQA,GAEFD,EAAgBvnB,QAAU,GAC1BunB,EAAgBvT,SAAQpa,IAAO,IAAA6tB,EAE3B,MAAMC,EAAYC,WAAW/tB,EAAK6rB,OAAOmC,QAAQ,GACjDJ,EAAavnB,KAAK,CAEd,KAAQrG,EAAKiuB,KAEb,GAAMjuB,EAAKkuB,YACX,MAASJ,EAET,SAAY9tB,EAAKyrB,IAGjB,KAAQ,WACR,SAAY,aAGhBZ,aAAa+B,QAAe,QAARiB,EAAC7tB,EAAKmuB,UAAE,IAAAN,EAAAA,EAAI,GAAI,wBAG5B,QAAhBzN,EAAA3P,OAAO6P,iBAAS,IAAAF,GAAM,QAANC,EAAhBD,EAAkB/Z,YAAI,IAAAga,GAAtBA,EAAAE,KAAAH,EAAyB,CACrB,MAAS,YACT,UAAa,CAET,aAAgB3P,OAAO2d,kBAAkBtuB,eAAeC,QAAQsuB,SAChE,IAAO,CACH,YAAe,CACX,KAAQ,WACR,OAAU,OAEd,SAAYT,MAIxBD,EAAgBvT,SAAQkU,WAEbA,EAAEC,oBAGbC,EAAAA,EAAAA,IACI,CAAEC,cAA4B,QAAfjB,EAAE5uB,EAAMgB,eAAO,IAAA4tB,OAAA,EAAbA,EAAe3tB,eAChCmrB,KAAKC,UAAU0C,GACfF,EAAiBiB,MACnBC,MAAKrB,MAAAA,UACGG,EAAiBmB,YAAY,OAGvC9B,EAAwB,SACxBT,EAAiB,CAAEC,OAAQ,UAAWC,QAAS3tB,EAAMkN,UAAU+iB,8BAC/DhZ,YAAW,KACPwW,EAAiB,CAAEC,OAAQ,QAASC,QAAS3tB,EAAMkN,UAAU0gB,8BAC9D,MAGDsC,EAAmBjgB,IAAc,IAAb,MAAEkgB,GAAOlgB,EAC/B,OAAc,IAAVkgB,EAEIrwB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,UAAQswB,UAAQ,EAAC1mB,UAAW,4BACvB1J,EAAMkN,UAAUmjB,qBAIrBvwB,EAAAA,cAAA,OAAK4J,UAAW,GAAG8jB,EAAcE,2BAA4BF,EAAcG,UAMnF7tB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,UAAQqc,QAASsS,EAAY/kB,UAAW,4BACnC1J,EAAMkN,UAAUmjB,qBAGrBvwB,EAAAA,cAAA,UAAQ4J,UAAW,kBAAmByS,QAASA,IAAM+R,EAAwB,UACxEluB,EAAMkN,UAAUojB,uBAWjC,OACIxwB,EAAAA,cAAA,OAAK4J,UAAW,gBACZ5J,EAAAA,cAAA,OAAK4J,UAAW,YACZ5J,EAAAA,cAAA,OAAK4J,UAAW,wBAChB5J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK+f,GAAoBF,IAElCxqB,EAAAA,cAAA,OAAK4J,UAAW,uCACZ5J,EAAAA,cAAA,OAAK4J,UAAW,gBACZ5J,EAAAA,cAAA,UAAKE,EAAMkN,UAAUqjB,qBACrBzwB,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAW,WACb5J,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAK4J,UAAW,eAAc,oBAAqBmkB,GAC/C/tB,EAAAA,cAAA,OAAK4J,UAAW,kBACZ5J,EAAAA,cAAA,OAAK4J,UAAW,wBACZ5J,EAAAA,cAAA,QAAM4J,UAAW,sBACjB5J,EAAAA,cAAA,QAAM4J,UAAW,QAAS4jB,IAE9BxtB,EAAAA,cAAA,OAAK4J,UAAW,wBACX1J,MAAAA,OAAK,EAALA,EAAOgB,QAAQwvB,iBAAiBC,eAAerD,IAEpDttB,EAAAA,cAAA,8BACuB+tB,EACnBnkB,UAAW,mBACXyS,QA5BpC,WAEI2R,GAAcD,IAAeA,KACd,IAAfA,EAAsBld,SAASmB,KAAKC,UAAUC,OAAO,sBAAwBrB,SAASmB,KAAKC,UAAUE,IAAI,0BA4BjFnS,EAAAA,cAACowB,EAAgB,CAACC,MAAO7C,KAE7BxtB,EAAAA,cAAA,OAAK4J,UAAW,wBAAuB,oBAAqBmkB,GACvDrjB,OAAOgT,KAAKgP,GAAYhrB,KAAI,CAACkvB,EAASppB,KAAK,IAAAqpB,EAAAC,EAAAC,EAAAC,EAAAC,EACxC,OACIjxB,EAAAA,cAAA,OAAK4J,UAAU,aAAaV,IAAK1B,GAC7BxH,EAAAA,cAAA,OAAK4J,UAAW,SACZ5J,EAAAA,cAAA,OACI+O,IAAK2d,EAAWkE,GAASrB,KACzBhhB,IAAK,GAAGme,EAAWkE,GAASf,8CAGpC7vB,EAAAA,cAAA,OAAK4J,UAAW,gBACZ5J,EAAAA,cAAA,OAAK4J,UAAW,QAA4B,QAAtBinB,EAAGnE,EAAWkE,UAAQ,IAAAC,OAAA,EAAnBA,EAAqBtB,MAC9CvvB,EAAAA,cAAA,OAAK4J,UAAW,YAAU,aAAgC,QAAhC,EAAa8iB,EAAWkE,UAAQ,IAAAE,OAAA,EAAnBA,EAAqB/D,KAC5D/sB,EAAAA,cAAA,OAAK4J,UAAW,SACX1J,MAAAA,OAAK,EAALA,EAAOgB,QAAQwvB,iBAAiBC,eAAkC,QAApBI,EAACrE,EAAWkE,UAAQ,IAAAG,OAAA,EAAnBA,EAAqB5D,QAEzEntB,EAAAA,cAAA,OAAK4J,UAAW,2BACZ5J,EAAAA,cAAA,QAAM4J,UAAW,mBAAuC,QAAtBonB,EAAGtE,EAAWkE,UAAQ,IAAAI,OAAA,EAAnBA,EAAqBvB,IAC1DzvB,EAAAA,cAAA,QAAM4J,UAAW,oBAAwC,QAAtBqnB,EAAGvE,EAAWkE,UAAQ,IAAAK,OAAA,EAAnBA,EAAqBzB,eAInExvB,EAAAA,cAAA,UACI4J,UAAW,qBACXyS,QAASA,IAAM+R,EAAwBpB,OAAO4D,gBAkF9F,OA7BA5wB,EAAAA,WAAgB,KACZ,IAAIkxB,EAAgB,wBAQM,IAAAC,EAAAC,GAPtBlxB,EAAMgB,QAAQ4J,QAAQwgB,OAASprB,EAAMgB,QAAQ4J,QAAQwgB,MAAM3H,IAC3DuN,EAAgBhxB,EAAMgB,QAAQ4J,QAAQwgB,MAAM3H,GAK5C6G,GAA+C,IAAnCA,EAAStqB,MAAMsqB,SAAS9iB,UAChCqK,OAAO6P,YACS,QAAhBuP,EAAApf,OAAO6P,iBAAS,IAAAuP,GAAM,QAANC,EAAhBD,EAAkBxpB,YAAI,IAAAypB,GAAtBA,EAAAvP,KAAAsP,EAAyB,CACrBzwB,MAAO,UACP2wB,cAAe,cACfC,YAAa,uBACbC,WAAYL,QAIzB,IAYClxB,EAAAA,cAAAA,EAAAA,SAAA,OAEM+pB,GAA0BL,GAAqB1pB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKsgB,GAAuB9B,EAAwBO,EAAmBpoB,EAAMV,EAAO+qB,kBAEzIZ,GAAkBjB,EAAYiB,EAAgBhB,IAAgB,EAAO6B,IAAgB,EAAOD,GAE7F3rB,EAAAA,cAAC6O,EAAAA,EAAG,CAAC2iB,OAAK,EAAC5nB,UAAU,oCACjB5J,EAAAA,cAAC4O,EAAAA,EAAS,CAAChF,UAAU,uBACjB5J,EAAAA,cAAA,OAAK4J,UAAU,+BACVihB,EACAgB,EAAsB7rB,EAAAA,cAAA,OAAK4J,UAAU,uCAAuCiiB,GAA6B,MAE9G7rB,EAAAA,cAAA,OAAK4J,UAAU,8BAA8BmhB,EAAe3iB,MAAMqpB,cAG1EzxB,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAK4f,GACPjC,EAAwBwC,EAAmBtC,EAAYoC,EAAeI,EAAerC,GACtF3oB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKugB,GACNlrB,EAAAA,cAAA,OAAK4J,UAAU,mCACV4e,GAAcM,EAAcN,IAEjCxoB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKggB,GACN3qB,EAAAA,cAAC6O,EAAAA,EAAG,CAAC2iB,OAAK,EAAC5nB,UAAU,4BAChBmhB,EAAe3iB,MAAMqpB,WACtBzxB,EAAAA,cAAA,OAAK4J,UAAU,6CAA6CohB,IAAkBrC,GAAoBE,EAAWmC,KAEjHhrB,EAAAA,cAAA,OAAK4J,UAAU,0BAA0BghB,GACzC5qB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKygB,GAAyBC,GACnCrrB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK+f,GACLS,EACAX,EACAC,ktBC5XjC,MAAMiH,UAA2B1xB,EAAAA,cAG7BC,YAAYC,GACRC,MAAMD,GAiDH,KAAAO,oBAAuBC,GAA0CC,KAAKT,MAAMU,OAAOC,QAAQC,KAAOJ,EAAMK,OAAOC,MAE/G,KAAA2wB,qBAAwBC,GAAuBlxB,IAC9CC,KAAKT,MAAMU,OAAOyP,OAAS1P,KAAKT,MAAMU,OAAOyP,MAAMuhB,KACnDjxB,KAAKT,MAAMU,OAAOyP,MAAMuhB,GAAWviB,SAAW3O,EAAMK,OAAOC,QApD/DL,KAAK4Y,kBAAmBC,EAAAA,EAAAA,oBACpB7Y,KAAKT,MAAMgB,QAAQ4J,QAAQ2O,kBAC3B9Y,KAAKT,MAAMwZ,aACX/Y,KAAKT,MAAMqI,WAIZoB,SACH,MAAM,OAAE/I,EAAM,UAAEwM,EAAS,KAAE9L,GAASX,KAAKT,OACnC,UAAE0J,EAAS,QAAE/I,EAAO,MAAEwP,GAAUzP,GAChC,8CAAEixB,EAA6C,kDAAEC,GAAsD1kB,GACvG,QAAE2kB,GAAYzwB,EACd0wB,EAAgBD,GAAWA,EAAQvwB,QAAUuwB,EAAQvwB,OAAOkG,QAAW,EACvEuqB,EACe,IAAjBD,EAAqBH,EAAgDC,EACnEjiB,GAAcqiB,EAAAA,EAAAA,QAAOD,EAA+BD,GAEpDhoB,EAASC,EAAAA,EAAA,GACRtJ,KAAKT,OAAK,IACb0J,UAAAA,EACA8nB,mBAAoB,CAChBtnB,YAAazJ,KAAKT,MAClB0J,UAAWsF,GAAAA,CAAW,0BAA2BtO,EAAOgJ,YAE5D/I,QAASA,GAAWA,EAAQC,MACxBd,EAAAA,cAACyK,EAAAA,GAAa,CACVb,UAAU,mCACVO,IAAKtJ,EAAQsJ,KAAO,KACpBrJ,KAAMD,EAAQC,KACd8J,UAAW,CAAEC,OAAQlK,KAAKF,oBAAqBW,eAAgBT,KAAKT,MAAMgB,QAAQ4J,WAG1FuF,MAAOA,GAASA,EAAM3I,OAAS,GAC3B1H,EAAAA,cAACmyB,EAAAA,EAAcznB,OAAAC,OAAA,GACP,CACA0F,MAAAA,EACA+hB,aAAczxB,KAAKgxB,qBACnBvwB,eAAgBT,KAAKT,MAAMgB,QAAQ4J,QACnCyO,iBAAkB5Y,KAAK4Y,oBAInC1J,YAAa7P,EAAAA,cAACqyB,EAAAA,EAAoB,CAACxiB,YAAaA,MAGpD,OAAOlP,KAAKT,MAAM+K,WAAWjB,IAYrC,0FChFA,MAYA,EAZuE9J,IACnE,MAAM,mBAAEwxB,EAAkB,QAAE7wB,EAAO,YAAEgP,EAAW,MAAEQ,GAAUnQ,EAE5D,OACIF,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAK+mB,GACP7wB,EACAgP,EACAQ,uDCLb,MAIA,EAJiF/E,IAAA,IAAC,YAAEuE,GAAavE,EAAA,OAC7FtL,EAAAA,cAAA,KAAG4J,UAAU,wCAAwCiG,uECSzD,MAeMyiB,EAAoBA,CAACC,EAAwBhZ,KAC/C,IAAKgZ,GAAgC,IAApBA,EAAS7qB,OACtB,OAAO,KAEX,MAAM8qB,EAAuC,GACvC7Y,GAAUC,EAAAA,EAAAA,kBAAiB,QAASL,EAAmB,IAgB7D,OAfAgZ,EAAS7W,SAAQ,CAAC7H,EAAMrQ,KACpBmW,EAAQ6C,cAAcC,MAAQ5I,EAAKxE,SACnC,MAAMqN,GAAaC,EAAAA,EAAAA,wBAAuBpD,EAAmBI,GACvD8Y,EAAoC,CACtCnU,UAAWzK,EAAKyK,UAChB1U,UAAW,gCACXyF,SAAUwE,EAAKxE,SACfF,QAAS0E,EAAK1E,QAAQC,eACtBsjB,aAAc7e,EAAK6e,aACnBtU,KAAM,OACN/E,qBAAsBqD,GAE1B8V,EAAc7qB,KAAK8qB,MAGhBD,GAGX,EAvCoElnB,IAA8D,IAA7D,MAAE+E,EAAK,iBAAEkJ,EAAgB,eAAEnY,EAAc,aAAEgxB,GAAc9mB,EAC1H,GAAqB,IAAjB+E,EAAM3I,OACN,OAAO,KAEX,MAAM8qB,EAAgBF,EAAkBjiB,EAAOkJ,GAE/C,OACIvZ,EAAAA,cAAA,OAAK4J,UAAU,kCACV4oB,GAAiBA,EAAc9qB,OAAS,EACrC1H,EAAAA,cAACyK,EAAAA,GAAc,CAAC4F,MAAOmiB,EAAe5nB,UAAW,CAAEwnB,aAAAA,EAAchxB,eAAAA,KACjE,qICrBT,MAAMuxB,EAA0ErnB,IAAA,IAAC,YAAEuE,GAAavE,EAAA,OACnGtL,EAAAA,cAAA,KAAG4J,UAAU,wCAAwCiG,ICwBnDyiB,EAAoBA,CAACC,EAAwBhZ,KAC/C,IAAKgZ,GAAgC,IAApBA,EAAS7qB,OACtB,OAAO,KAEX,MAAM8qB,EAAuC,GACvC7Y,GAAUC,EAAAA,EAAAA,kBAAiB,QAASL,EAAmB,IAgB7D,OAfAgZ,EAAS7W,SAAQ,CAAC7H,EAAMrQ,KACpBmW,EAAQ6C,cAAcC,MAAQ5I,EAAKxE,SACnC,MAAMqN,GAAaC,EAAAA,EAAAA,wBAAuBpD,EAAmBI,GACvD8Y,EAAoC,CACtCnU,UAAWzK,EAAKyK,UAChB1U,UAAW,gCACXyF,SAAUwE,EAAKxE,SACfF,QAAS0E,EAAK1E,QAAQC,eACtBsjB,aAAc7e,EAAK6e,aACnBtU,KAAM,OACN/E,qBAAsBqD,GAE1B8V,EAAc7qB,KAAK8qB,MAGhBD,GAGX,EAtCoElnB,IAA8D,IAA7D,MAAE+E,EAAK,iBAAEkJ,EAAgB,eAAEnY,EAAc,aAAEgxB,GAAc9mB,EAC1H,GAAqB,IAAjB+E,EAAM3I,OACN,OAAO,KAEX,MAAM8qB,EAAgBF,EAAkBjiB,EAAOkJ,GAC/C,OACIvZ,EAAAA,cAAA,OAAK4J,UAAU,kCACV4oB,GAAiBA,EAAc9qB,OAAS,EACrC1H,EAAAA,cAACyK,EAAAA,GAAc,CAAC4F,MAAOmiB,EAAe5nB,UAAW,CAAEwnB,aAAAA,EAAchxB,eAAAA,KACjE,4kBCHhB,MAAMwxB,UAA2B5yB,EAAAA,cAG7BC,YAAYC,GACRC,MAAMD,GA6DH,KAAAO,oBAAuBC,GAA0CC,KAAKT,MAAMU,OAAOC,QAAQC,KAAOJ,EAAMK,OAAOC,MAE/G,KAAA2wB,qBAAwBC,GAAuBlxB,IAC9CC,KAAKT,MAAMU,OAAOyP,OAAS1P,KAAKT,MAAMU,OAAOyP,MAAMuhB,KACnDjxB,KAAKT,MAAMU,OAAOyP,MAAMuhB,GAAWviB,SAAW3O,EAAMK,OAAOC,QAhE/DL,KAAK4Y,kBAAmBC,EAAAA,EAAAA,oBACpB7Y,KAAKT,MAAMgB,QAAQ4J,QAAQ2O,kBAC3B9Y,KAAKT,MAAMwZ,aACX/Y,KAAKT,MAAMqI,WAIZoB,SAAM,IAAAkpB,EACT,MAAM,OACFjyB,EAAM,KACNU,EAAI,UACJ8L,EACAlM,SACIwvB,kBAAkB,eACdC,EAAc,aAGdmC,KAGRnyB,KAAKT,OACH,UAAE0J,EAAS,QAAE/I,EAAO,MAAEwP,GAAUzP,GAChC,8BAAEmyB,GAAkC3lB,EAGpC4lB,EAAyCrC,IADM,QAA3BkC,EAAAvxB,EAAK2xB,gBAAgBzxB,cAAM,IAAAqxB,OAAA,EAA3BA,EAA6BK,qBAAsB,GACG5D,QAAQ,GAAIwD,GAEtFjjB,EAAcmjB,IAAsBd,EAAAA,EAAAA,QAAOa,EAA+BC,GAE1EhpB,EAASC,EAAAA,EAAA,GACRtJ,KAAKT,OAAK,IACb0J,UAAAA,EACAgpB,mBAAoB,CAChBxoB,YAAazJ,KAAKT,MAClB0J,UAAWsF,GAAAA,CAAW,0BAA2BtO,EAAOgJ,YAE5D/I,QAASA,GAAWA,EAAQC,MACxBd,EAAAA,cAACyK,EAAAA,GAAa,CACVb,UAAU,mCACVO,IAAKtJ,EAAQsJ,KAAO,KACpBrJ,KAAMD,EAAQC,KACd8J,UAAW,CAAEC,OAAQlK,KAAKF,oBAAqBW,eAAgBT,KAAKT,MAAMgB,QAAQ4J,WAG1FuF,MAAOA,GAASA,EAAM3I,OAAS,GAC3B1H,EAAAA,cAACmyB,EAAcznB,OAAAC,OAAA,GACP,CACA0F,MAAAA,EACA+hB,aAAczxB,KAAKgxB,qBACnBvwB,eAAgBT,KAAKT,MAAMgB,QAAQ4J,QACnCyO,iBAAkB5Y,KAAK4Y,oBAInC1J,YAAaA,GAAe7P,EAAAA,cAAC2yB,EAA6B,CAAC9iB,YAAaA,MAG5E,OAAOlP,KAAKT,MAAM+K,WAAWjB,IAYrC,2FC5FA,QAAgB9J,IACZ,MAAM,mBAAE0yB,EAAkB,QAAE/xB,EAAO,YAAEgP,EAAW,MAAEQ,GAAUnQ,EAE5D,OACIF,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKioB,GACP/xB,EACAgP,EACAQ,utBCmBN,MAAM8iB,UAAsBnzB,IAAAA,cAG/BC,YAAmBC,GACfC,MAAMD,GA0CH,KAAAkzB,iBAAoB1yB,IACvBC,KAAKT,MAAMU,OAAOC,QAASC,KAAOJ,EAAMK,OAAOC,OAO5C,KAAAqyB,sBAAyB3yB,IAC5BC,KAAKT,MAAMU,OAAO0yB,UAAY5yB,EAAMK,OAAOC,OAhDxC2I,SAAM,IAAA4pB,EAAAC,EACT,MAAM,QAAE3yB,EAAO,UAAEyyB,GAAc3yB,KAAKT,MAAMU,OAEpC6yB,EAAuB5yB,GACzBb,IAAAA,cAAC0zB,EAAAA,GAAI,CACD9pB,UAAW,GAAGupB,EAAcQ,kCAC5BxpB,IAAgB,QAAbopB,EAAE1yB,EAAQsJ,WAAG,IAAAopB,EAAAA,EAAI,KACpBzyB,KAAMD,EAAQC,KACd8J,UAAW,CAAEC,OAAQlK,KAAKyyB,iBAAkBhyB,eAAgBT,KAAKT,MAAMgB,QAAQ4J,WAIjF8oB,EAA+B3a,EAAAA,gBAAgBC,YAAoC,QAAzBsa,EAAC7yB,KAAKT,MAAMoB,KAAKuyB,gBAAQ,IAAAL,OAAA,EAAxBA,EAA0BhyB,QACrFsyB,EAAyBR,GAC3BtzB,IAAAA,cAAC+zB,EAAAA,GAAiB,CACdnqB,UAAW,GAAGupB,EAAcQ,qCAC5B7yB,KAAM8yB,EAAsBN,EAAY3yB,KAAKT,MAAMkN,UAAU4mB,sBAC7DppB,UAAW,CAAEC,OAAQlK,KAAK0yB,sBAAuBjyB,eAAgBT,KAAKT,MAAMgB,QAAQ4J,WAGtFd,EAASC,EAAAA,EAAA,GACRtJ,KAAKT,OAAK,IACb+zB,WAAYtzB,KAAKyyB,iBACjBc,cAAe,CACX9pB,YAAazJ,KAAKT,MAClB0J,UAAWupB,EAAcQ,kBAE7B9yB,QAAS4yB,EACTH,UAAWQ,EACXD,SAAUD,EAAsBjzB,KAAKwzB,uBAAyB,KAGlE,OAAOxzB,KAAKT,MAAM+K,WAAWjB,GAmBzBoqB,2BAA2B/b,GAC/B,MAAMgc,EAAYhc,EAAKxK,SAEvB,IADyBymB,EAAAA,EAAAA,IAAa3zB,KAAKT,MAAMgB,QAAQ4J,WAChCupB,EACrB,OAAOr0B,IAAAA,cAAA,OAAK4J,UAAW,GAAGupB,EAAcQ,qCAAsChzB,KAAKT,MAAMkN,UAAUmnB,oBAEvG,IAAIC,EAAgB,GACpB,GAAI/pB,EAAAA,GAASwP,UAAW,CAAC,IAADwa,EACpB,MAAMC,EAAiE,QAAvDD,GAAGE,EAAAA,EAAAA,IAAW,OAAQh0B,KAAKT,MAAMgB,QAAQC,sBAAc,IAAAszB,EAAAA,EAAI,GACrEG,EAAU,IAAIC,IAAIH,EAAY3iB,OAAO+iB,SAAShmB,MACpD8lB,EAAQG,aAAahwB,IAAI,YAAa,GAAGsvB,KACzCG,EAAgBI,EAAQ9lB,KAE5B,OACI9O,IAAAA,cAACuU,EAAAA,OAAM,CACH3K,UAAW,GAAGupB,EAAcQ,2BAA0B,aAC1ChzB,KAAKT,MAAMkN,UAAU4nB,wBACjClmB,KAAM0lB,GAEL7zB,KAAKT,MAAMkN,UAAU4nB,yBAK1Bb,uBAAoB,IAAAc,EACxB,MAAMpB,EAAmC,QAA3BoB,EAAGt0B,KAAKT,MAAMoB,KAAKuyB,gBAAQ,IAAAoB,OAAA,EAAxBA,EAA0BzzB,OAErCyY,EAAYxP,EAAAA,GAASwP,UAE3B,OACIja,IAAAA,cAAA,OAAK4J,UAAW,GAAGupB,EAAcQ,kCAAmCvV,KAAK,QACpEyV,MAAAA,OAAQ,EAARA,EAAUnyB,KAAI2W,IACX,MAAM6c,EAAW,GAAG5I,KAAKC,UAAUlU,MAAS8c,OAAOlb,KAC7Cb,EAAmCH,EAAAA,gBAAgBmc,eAAe/c,EAAKgd,QAC7E,OACIr1B,IAAAA,cAAA,OACIkJ,IAAKgsB,EACLtrB,UAAW,GAAGupB,EAAcQ,wCAC5B/Y,SAAU,EAAC,aACCvC,EAAKpF,KACjBmL,KAAK,YAELpe,IAAAA,cAAA,MAAI4J,UAAW,GAAGupB,EAAcQ,sCAAuCtb,EAAKpF,MAC5EjT,IAAAA,cAAA,OAAK4J,UAAW,GAAGupB,EAAcQ,yCAC7B3zB,IAAAA,cAACs1B,EAAAA,GAAK,CACFl0B,eAAgBT,KAAKT,MAAMgB,QAAQ4J,QACnClB,UAAW,GAAGupB,EAAcQ,oCAC5BzqB,IAAKgsB,EACL3mB,KAAK+U,EAAAA,EAAAA,IAAiB3iB,KAAKT,MAAMgB,QAAQ4J,QAAQyY,YAAanK,MAAAA,OAAK,EAALA,EAAOmc,KACrEnR,aAAczjB,KAAKT,MAAMgB,QAAQ4J,QAAQsZ,aACzCC,cAAe1jB,KAAKT,MAAMU,OAAO40B,qBACjChnB,QAAS4K,MAAAA,OAAK,EAALA,EAAOqc,QAChBlR,oBAAoB,SAExBvkB,IAAAA,cAAA,OAAK4J,UAAW,GAAGupB,EAAcQ,qCAC5BhzB,KAAKyzB,2BAA2B/b,WAhHzC8a,EAAAQ,iBAAmB,oBA2H/C,8HCjJO,MAAM+B,EAAwEx1B,IACjF,MAAM,cAAEg0B,GAAkBh0B,EAC1B,OACIF,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKupB,GACPh0B,EAAMW,QACNX,EAAMozB,UACNpzB,EAAM2zB,WAKnB,4sBCaO,MAAM8B,UAAmB31B,EAAAA,cAO5BC,YAAYC,GACRC,MAAMD,GA0DH,KAAAO,oBAAuBC,GAA0CC,KAAKT,MAAMU,OAAOC,QAASC,KAAOJ,EAAMK,OAAOC,MAEhH,KAAAoyB,iBAAoB1yB,GAA0CC,KAAKT,MAAMU,OAAOE,KAAOJ,EAAMK,OAAOC,MAEpG,KAAA2wB,qBAAwBjxB,GAA0CC,KAAKT,MAAMU,OAAOiT,KAAMxE,SAAW3O,EAAMK,OAAOC,MA7DrHL,KAAK4Y,kBAAmBC,EAAAA,EAAAA,oBACpB7Y,KAAKT,MAAMgB,QAAQ4J,QAAQ2O,kBAC3B9Y,KAAKT,MAAMwZ,aACX/Y,KAAKT,MAAMqI,WAIf5H,KAAKgZ,SAAUC,EAAAA,EAAAA,kBAAiB,QAASjZ,KAAK4Y,iBAAkB,GAAI,IAGjE5P,SACH,MAAM,QAAE9I,EAAO,MAAEuY,EAAK,KAAEvF,EAAI,KAAE/S,GAASH,KAAKT,MAAMU,OAC5Cg1B,EAAsB1mB,GAAAA,CAAW,kBAAmBvO,KAAKT,MAAMU,OAAOgJ,WACtEyF,EAAWwE,GAAQA,EAAKxE,SAAWwE,EAAKxE,SAAW,GACzD1O,KAAKgZ,QAAQ6C,cAAcC,MAAQpN,EACnC1O,KAAK+b,YAAaC,EAAAA,EAAAA,wBAAuBhc,KAAK4Y,iBAAkB5Y,KAAKgZ,SACrE,MAAM3P,EAASC,EAAAA,EAAA,GACRtJ,KAAKT,OAAK,IACbW,QAASF,KAAKk1B,eAAeh1B,GAC7BuY,MAAOzY,KAAKm1B,mBAAmB1c,GAC/BtY,KAAMH,KAAKo1B,YAAYj1B,GACvBuO,SAAU1O,KAAKq1B,gBAAgBniB,GAC/BoiB,aAAct1B,KAAKu1B,YAAYriB,GAE/B8hB,WAAY,CACRvrB,YAAazJ,KAAKT,MAClB0J,UAAWgsB,GAGfO,iBAAkB,CACdvsB,UAAW,sBAGfwsB,cAAe,CACXxsB,UAAW,8BAIf2S,KAAM1I,GACFA,EAAK1E,SACL0E,EAAK1E,QAAQC,gBAAcnF,EAAA,CACvBE,IAAK,IACLiU,KAAM,OACNxU,UAAW,kBACXkF,KAAM+E,EAAK1E,QAAQC,eACnBhH,MAAOiH,EACP,aAAcwE,EAAKyK,UACnBvd,OAAQ8S,EAAK6e,aAAe,cAAWnyB,EACvC8b,SAASQ,EAAAA,EAAAA,kBAAiBlc,KAAK4Y,iBAAkB5Y,KAAKgZ,QAAStK,IAC5D1O,KAAK+b,YAEhB9S,UAAWgsB,IAGf,OAAOj1B,KAAKT,MAAM+K,WAAWjB,GASzBksB,YAAYriB,GAChB,GAAIA,EAAM,CACN,MAAMxE,EAAWwE,EAAKxE,SAAWwE,EAAKxE,SAAW,GAG3CojB,EAAoC,CACtCnU,UAAWzK,EAAKyK,UAChB1U,UAAW,kBACXyF,SAAAA,EACAF,QAAS0E,EAAK1E,QAAQC,eACtBsjB,aAAc7e,EAAK6e,aACnBtU,KAAM,OACN/E,qBAAsB1Y,KAAK+b,WAC3BL,SAASQ,EAAAA,EAAAA,kBAAiBlc,KAAK4Y,iBAAkB5Y,KAAKgZ,QAAStK,IAEnE,OACIrP,EAAAA,cAACyK,EAAAA,GAAa,CACVoJ,KAAM4e,EACN7nB,UAAW,CAAEwnB,aAAczxB,KAAKgxB,qBAAsBvwB,eAAgBT,KAAKT,MAAMgB,QAAQ4J,WAIrG,OAAO,KAGHkrB,gBAAgBniB,GACpB,OAAKA,GAASA,EAAKxE,SAIZrP,EAAAA,cAAA,QAAM4J,UAAU,yBAAyBiK,EAAKxE,UAH1C,KAMPwmB,eAAeh1B,GACnB,OAAKA,GAAYA,EAAQC,MAAgC,IAAxBD,EAAQC,KAAK4G,OAK1C1H,EAAAA,cAACyK,EAAAA,GAAa,CACVN,IAAKtJ,EAAQsJ,KAAO,KACpBrJ,KAAMD,EAAQC,KACd8I,UAAU,4BACVgB,UAAW,CAAEC,OAAQlK,KAAKF,oBAAqBW,eAAgBT,KAAKT,MAAMgB,QAAQ4J,WAR/E,KAaPirB,YAAYj1B,GAChB,OAAKA,EAIDd,EAAAA,cAACyK,EAAAA,GAAa,CACVN,IAAI,MACJrJ,KAAMA,EACN8I,UAAU,uBACVgB,UAAW,CAAEC,OAAQlK,KAAKyyB,iBAAkBhyB,eAAgBT,KAAKT,MAAMgB,QAAQ4J,WAP5E,KAYPgrB,mBAAmBzd,EAA2Bge,GAClD,IAAKhe,IAASA,EAAK9J,KAA2B,IAApB8J,EAAK9J,IAAI7G,OAC/B,OAAO,KAUX,OACI1H,EAAAA,cAACyK,EAAAA,GAAcC,OAAAC,OAAA,GACP0N,EAAI,CACRjX,eAAgBT,KAAKT,MAAMgB,QAAQ4J,QACnCsZ,aAAczjB,KAAKT,MAAMgB,QAAQ4J,QAAQsZ,aACzCC,cAAehM,EAAKgM,eAZ0B,CAClDZ,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCG,GAAI,CAAEL,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCI,UAAU,GAQNM,oBAAoB,UAAS,cAChB8R,EACbzrB,UAAW,CAAE1B,IAAKvI,KAAKT,MAAMU,OAAOwY,OAAS,GAAIhY,eAAgBT,KAAKT,MAAMgB,QAAQ4J,SACpFwrB,uBAAqB,MAMrC,0GCzLO,MAAMC,UAAuBv2B,EAAAA,cACzB2J,SACH,MAAM,WAAEgsB,GAAeh1B,KAAKT,MAC5B,OAAOF,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKgrB,GAAah1B,KAAK61B,eAAe71B,KAAKT,QAGrDs2B,eAAet2B,GACnB,MAAM,QAAEW,EAAO,iBAAEs1B,EAAgB,KAAE5Z,EAAI,SAAElN,EAAQ,MAAE+J,EAAK,KAAEtY,EAAI,aAAEm1B,GAAiB/1B,EACjF,OAAIW,EACOb,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKwrB,GAAgB,IAAIt1B,EAAO,KACrC0b,GAAQnD,EAEXpZ,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK4R,GACLlN,EACA+J,GAGFmD,EACA0Z,EAGPj2B,EAAAA,cAAAA,EAAAA,SAAA,KACKc,EACAsY,IAMjB,itBCLA,MAAMqd,UAAmBz2B,IAAAA,cAcrBC,YAAmBC,GACfC,MAAMD,GAdO,KAAAw2B,YAAsB,oBAEtB,KAAAC,2BAAqC,OAgHrC,KAAAnf,aAAgB9W,IAC7B,MAAMwI,EAAMxI,EAAM+W,QAClB,GAAI9W,KAAKsW,MAAM2f,kBACX,OAAQ1tB,GACJ,KAAK2tB,EAAAA,SAASC,OACV3f,YAAW,KAAK,IAAA4f,EAAAC,EACZ,MAAMC,EAAYpmB,UAAYA,SAASqmB,cAIpC,IAADC,GAF4B,QAA1BJ,EAAAp2B,KAAKy2B,6BAAqB,IAAAL,GAAS,QAATA,EAA1BA,EAA4Bl1B,eAAO,IAAAk1B,GAAnCA,EAAqCxf,SAAS0f,IACtB,QADgCD,EACxDr2B,KAAK02B,2BAAmB,IAAAL,GAAS,QAATA,EAAxBA,EAA0Bn1B,eAAO,IAAAm1B,GAAjCA,EAAmCzf,SAAS0f,MAE5Ct2B,KAAK22B,yBACqB,QAA1BH,EAAAx2B,KAAKy2B,6BAAqB,IAAAD,GAAS,QAATA,EAA1BA,EAA4Bt1B,eAAO,IAAAs1B,GAAnCA,EAAqC9f,WAE1C,IACH,MAEJ,KAAKwf,EAAAA,SAASU,IACVpgB,YAAW,KAAK,IAAAqgB,EAAAC,EACZ,MAAMR,EAAYpmB,UAAYA,SAASqmB,cAER,QAA3BM,EAAC72B,KAAKy2B,6BAAqB,IAAAI,GAAS,QAATA,EAA1BA,EAA4B31B,eAAO,IAAA21B,GAAnCA,EAAqCjgB,SAAS0f,IACtB,QAAzBQ,EAAC92B,KAAK02B,2BAAmB,IAAAI,GAAS,QAATA,EAAxBA,EAA0B51B,eAAO,IAAA41B,GAAjCA,EAAmClgB,SAAS0f,IAE7Ct2B,KAAK22B,2BAEV,IACH,MAEJ,QACI,SAMC,KAAAI,oBAAuBh3B,IAAc,IAAAi3B,EAAAC,EAEX,QAAlCD,EAAAh3B,KAAKy2B,sBAAsBv1B,eAAO,IAAA81B,GAAlCA,EAAoCpgB,SAAS7W,EAAMK,SAAWJ,KAAKsW,MAAM2f,mBACzC,QAAhCgB,EAAAj3B,KAAK02B,oBAAoBx1B,eAAO,IAAA+1B,GAAhCA,EAAkCrgB,SAAS7W,EAAMK,SAAWJ,KAAKsW,MAAM2f,mBAI5Ej2B,KAAK22B,0BA9IL32B,KAAKk3B,cAAgBl3B,KAAKk3B,cAAcve,KAAK3Y,MAC7CA,KAAK02B,oBAAsBr3B,IAAAA,YAC3BW,KAAKy2B,sBAAwBp3B,IAAAA,YAC7BW,KAAKm3B,mBAAqBn3B,KAAKm3B,mBAAmBxe,KAAK3Y,MACvDA,KAAK22B,uBAAyB32B,KAAK22B,uBAAuBhe,KAAK3Y,MAC/DA,KAAK6W,aAAe7W,KAAK6W,aAAa8B,KAAK3Y,MAC3CA,KAAK+2B,oBAAsB/2B,KAAK+2B,oBAAoBpe,KAAK3Y,MACzDA,KAAKo3B,gBAAkBp3B,KAAKo3B,gBAAgBze,KAAK3Y,MACjDA,KAAKq3B,SACD93B,EAAMgB,QAAQ4J,SAAW5K,EAAMgB,QAAQ4J,QAAQmtB,QAAgD,WAAtC/3B,EAAMgB,QAAQ4J,QAAQmtB,OAAOC,KAAoB,KAAO,KACrHv3B,KAAKsW,MAAQ,CACT2f,mBAAmB,EACnBuB,SAAUx3B,KAAKw3B,UAIb,eACN,MAAyB,OAAlBx3B,KAAKq3B,UAAuC,OAAlBr3B,KAAKq3B,SAGnC3vB,oBACsB,IAAD+vB,EAAAC,EAApBre,EAAAA,GAASC,YACD,QAARme,EAAAvnB,gBAAQ,IAAAunB,GAARA,EAAUjnB,iBAAiB,UAAYxQ,KAAK6W,cAA2C,GAC/E,QAAR6gB,EAAAxnB,gBAAQ,IAAAwnB,GAAM,QAANA,EAARA,EAAUrmB,YAAI,IAAAqmB,GAAdA,EAAgBlnB,iBAAiB,YAAaxQ,KAAK+2B,qBACnD/2B,KAAK23B,4BAA8BvmB,SAAUwmB,EAAAA,EAAAA,mBAAkBxmB,OAAQ,SAAUpR,KAAKo3B,iBACtFp3B,KAAKo3B,mBAIN7d,uBACsB,IAADse,EAAAC,EAApBze,EAAAA,GAASC,YACD,QAARue,EAAA3nB,gBAAQ,IAAA2nB,GAARA,EAAUre,oBAAoB,UAAYxZ,KAAK6W,cAA2C,GAClF,QAARihB,EAAA5nB,gBAAQ,IAAA4nB,GAAM,QAANA,EAARA,EAAUzmB,YAAI,IAAAymB,GAAdA,EAAgBte,oBAAoB,YAAaxZ,KAAK+2B,qBAAqB,GAC3E3lB,QAAUA,OAAOoI,oBAAoB,SAAUxZ,KAAK23B,6BAA8B,IAInF3uB,SAAM,IAAA+uB,EAAAC,EACT,MAAM3uB,EAASC,EAAAA,EAAA,GACPtJ,KAAKT,OAA6C,IACtDu2B,WAAY,CACRrsB,YAAazJ,KAAKT,MAClB0J,UAAWsF,GAAAA,CAAW,iBAAkBvO,KAAKT,MAAMU,OAAOgJ,UAAWjJ,KAAKsW,MAAMkhB,SAAW,cAAgB,gBAC3GhuB,IAAK,OAETyuB,eAAgB,CACZzuB,IAAK,SACLP,UAAW,yBACX,aAAuC,QAA3B8uB,EAAE/3B,KAAKT,MAAMU,OAAOC,eAAO,IAAA63B,OAAA,EAAzBA,EAA2B53B,KACzC,gBAAiBH,KAAKsW,MAAM2f,kBAC5Bva,QAAS1b,KAAKT,MACd8K,IAAKrK,KAAKy2B,uBAEdyB,mBAAoB,CAChBjvB,UAAW,uBACXO,IAAK,QAET2uB,mBAAoB,CAChBlvB,UAAW,uBACXwU,KAAM,OACNjU,IAAK,KACLa,IAAKrK,KAAK02B,qBAEd0B,uBAAwB,CACpBnvB,UAAW,6BACXwU,KAAM,eACNjU,IAAK,MAET6uB,0BAA2B,CACvB7uB,IAAKqJ,EAAAA,OACL5J,UAAW,yBACXgK,iBAA2C,QAA3B+kB,EAAEh4B,KAAKT,MAAMU,OAAOC,eAAO,IAAA83B,OAAA,EAAzBA,EAA2B73B,KAC7C2S,UAAW,8BACXC,WAAY,+BACZC,eAAgB,OAEpBgD,aAAchW,KAAKsW,MAAMkhB,SACzBc,4BAA6Bt4B,KAAKu4B,yBAClCC,kBAAmBx4B,KAAKm3B,mBACxBsB,sBAAuBz4B,KAAK22B,uBAC5B+B,iBAAkB14B,KAAKsW,MAAM2f,oBAEjC,OAAOj2B,KAAKT,MAAM+K,WAAWjB,GAGzB8tB,qBACJ,MAAMwB,EAAyB34B,KAAKsW,MAAM2f,kBAC1Cj2B,KAAKiW,SAAS,CACVggB,mBAAoB0C,IAIpBhC,yBACJ32B,KAAKiW,SAAS,CACVggB,mBAAmB,IAmDnBiB,cAAcxwB,GAElB,GADAA,EAAEkyB,iBACElyB,EAAEmyB,cAAc1qB,MAAQzH,EAAEmyB,cAAc1qB,KAAKpH,OAAS,GAAKqK,OAAQ,CACnE,GAAIpR,KAAKT,MAAMgB,QAAQ4J,QAAQ2uB,QAAQC,iBAAkB,CACrD,MAAMC,EAAe,CAAEC,OAAQj5B,KAAKg2B,4BACpCh2B,KAAKT,MAAMgB,QAAQ4J,QAAQ2uB,QAAQ10B,IAAIpE,KAAK+1B,YAAarvB,EAAEmyB,cAAc1qB,KAAM6qB,GAEnF5nB,OAAO+iB,SAASnqB,OAAOtD,EAAEmyB,cAAc1qB,OAIvCoqB,yBACJ,MAAM1V,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCG,GAAI,CAAEL,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCgW,GAAI,CAAElW,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCI,UAAU,GAERjO,EAAcrV,KAAKT,MAAMU,OAAOoV,aAAerV,KAAKT,MAAMU,OAAOoV,YACvE,OACIA,GACAA,EAAYtU,KAAI,CAAC2W,EAAM7U,KAAS,IAAAs2B,EAAAC,EAC5B,MAAM3gB,EAAQf,MAAAA,OAAI,EAAJA,EAAM2hB,UACdC,EAAa,CACf7V,aAAczjB,KAAKT,MAAMgB,QAAQ4J,QAAQsZ,aACzCC,cAAejL,MAAAA,GAAoB,QAAf0gB,EAAL1gB,EAAOiL,qBAAa,IAAAyV,GAApBA,EAAsBrW,UAAYrK,EAAMiL,cAAgBb,GAE3E,OACIxjB,IAAAA,cAAA,KACIkJ,IAAK1F,EACLoG,UAAU,mCACVgR,SAAU,EACV9L,KAAMuJ,MAAAA,GAAqB,QAAjB0hB,EAAJ1hB,EAAM6hB,uBAAe,IAAAH,OAAA,EAArBA,EAAuB3qB,eAAc,aAC/BiJ,MAAAA,OAAI,EAAJA,EAAM8hB,SAClB9d,QAAS1b,KAAKk3B,cACdzZ,KAAK,YAELpe,IAAAA,cAAA,QAAM4J,UAAU,oCAAoCyO,MAAAA,OAAI,EAAJA,EAAM8hB,UAC1Dn6B,IAAAA,cAACs1B,EAAAA,GAAK,CACFl0B,eAAgBT,KAAKT,MAAMgB,QAAQ4J,QACnClB,UAAU,kCACVV,IAAK1F,EACL+K,KAAK6K,MAAAA,OAAK,EAALA,EAAO7K,MAAO,GACnB6V,aAAc6V,EAAW7V,aACzBC,cAAe4V,EAAW5V,cAC1B7V,QAAS4K,MAAAA,OAAK,EAALA,EAAO5K,QAChB+V,oBAAoB,OACpB+R,uBAAqB,QAQrCyB,kBACJp3B,KAAKq3B,SAAWr3B,KAAKy5B,eACrBz5B,KAAKiW,SAAS,CAAEuhB,SAAUx3B,KAAKw3B,WAG3BiC,eACJ,MAAM,QAAEl5B,GAAYP,KAAKT,MACzB,GAAIgB,EAAQ4J,SAAW5J,EAAQ4J,QAAQmtB,QAA0C,WAAhC/2B,EAAQ4J,QAAQmtB,OAAOC,KACpE,MAAO,KAGX,QAAsB33B,WAAXwR,QAAwBA,OAAOsoB,WAAY,CAClD,MAAMjW,EAAeljB,EAAQ4J,QAAQsZ,aACrC,GAAIA,EACA,OAAIA,EAAaV,IAAM3R,OAAOsoB,YAAcjW,EAAaV,GAAGE,EACjD,KACAQ,EAAaN,IAAM/R,OAAOsoB,YAAcjW,EAAaN,GAAGF,EACxD,KACAQ,EAAaL,IAAMhS,OAAOsoB,YAAcjW,EAAaL,GAAGH,EACxD,KACAQ,EAAaJ,IAAMjS,OAAOsoB,YAAcjW,EAAaJ,GAAGJ,EACxD,KAEJ,KAGf,MAAO,OA1OX1Y,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAqBDD,EAAAA,EAAAA,IAAA,CAATovB,EAAAA,IAAQ,6BA0Nb,qFCvRA,QAAgBp6B,GACLF,EAAAA,cAAAA,EAAAA,SAAA,KAAGu6B,EAAkBr6B,IAgB1Bs6B,EAA0Bt6B,IAC5B,MAAM,mBAAE44B,EAAkB,uBAAEC,EAAsB,4BAAEE,GAAgC/4B,EAC9EsE,EAAUy0B,EAA6Bv3B,KAAI,CAAC2W,EAAM7U,IAEhDxD,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKouB,EAAsB,CAAE7vB,IAAK1F,IAClC6U,KAIb,OACIrY,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKmuB,EAAkB,CAAE2B,aAAcv6B,EAAMk5B,wBAC7C50B,IAkBP+1B,EAAqBr6B,IACvB,MAAM,aAAEyW,EAAY,WAAE8f,GAAev2B,EACrC,OAAOF,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAK8rB,GAAa9f,EAfTzW,CAAAA,IAAgD,IAAAw6B,EACvE,MAAM,0BAAE1B,GAA8B94B,EACtC,OACIF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKquB,EAAyB,CAAE3c,QAASnc,EAAMi5B,oBAChDn5B,EAAAA,cAAA,WACsC,QADtC06B,EACKx6B,EAAM+4B,mCAA2B,IAAAyB,OAAA,EAAjCA,EAAmCh5B,KAAI,CAAC2W,EAAM7U,IACpCxD,EAAAA,cAAA,OAAKkJ,IAAK1F,GAAQ6U,QASMsiB,CAAkBz6B,GA5CzCA,CAAAA,IAA+B,IAAA06B,EACvD,MAAM,eAAEhC,EAAc,mBAAEC,GAAuB34B,EAC/C,OACIF,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKiuB,EAAc,CAAEvc,QAASnc,EAAMi5B,oBAChB,QADiCyB,EACrD16B,EAAMU,OAAOC,eAAO,IAAA+5B,OAAA,EAApBA,EAAsB95B,KACvBd,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKkuB,KAEb34B,EAAMm5B,iBAAmBmB,EAAuBt6B,GAAS,OAoCQ26B,CAAmB36B,wHCrCjG,MAAM46B,EAAuBC,IAEzB,MAAM,4BAAEC,EAA2B,QAAEC,GAAYF,EAEjD,OAAO/6B,IAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKqwB,GAA8BC,IAwG7CC,EAAiCA,CACnC7W,EACAnkB,KACqC,IAAAi7B,EAAAC,EACrC,IAAIC,EAAoC,GAExC,MAAMC,EAAgD,QAA3BH,EAAGj7B,EAAMgB,QAAQq6B,IAAI36B,cAAM,IAAAu6B,OAAA,EAAxBA,EAA0BK,qBAOxD,OANIt7B,EAAMoB,KAAKm6B,QAAQj6B,SACnB65B,GAAgBK,EAAAA,EAAAA,qBAAoBx7B,EAAMoB,KAAKm6B,QAAQj6B,OAAOm6B,OAAQz7B,EAAMgB,QAAQ4J,QAAQyY,cAE5F+X,GAAyBD,IACzBA,EAAgB,GAAGA,KAAiBC,KAEjC,CACHN,4BAA6B,CACzB7wB,IAAK,KACLP,UAAW,mCACXwU,KAAM,MACNxD,SAAU,EACV1R,IAAK,EACL,aAAc,GACd,iBAAiB,GAErB+xB,QACIj7B,IAAAA,cAACs1B,EAAAA,GAAK,CACFl0B,eAAgBlB,EAAMgB,QAAQC,cAAcC,eAC5CwI,UAAU,0CACV2E,IAAI,QACJ6V,aAAclkB,EAAMgB,QAAQ4J,QAAQsZ,aACpCC,cAAkD,QAArC+W,EAAEl7B,EAAMU,OAAOg7B,8BAAsB,IAAAR,EAAAA,EAAI/W,EACtDE,oBAAoB,QACpBsX,wBAAyB37B,EAAMU,OAAOk7B,oBACtCC,YAAaV,MAoBvBW,EAAgD,CAClDvY,UAAW,CACPC,GAAI,CAAEC,EAAG,6BAA8BC,EAAG,IAAKC,EAAG,KAClDgW,GAAI,CAAElW,EAAG,6BAA8BC,EAAG,IAAKC,EAAG,MAEtDI,UAAU,EACVgY,iBAAiB,GASfC,EAAmBA,CAACC,EAA8Cj8B,KAEpE,MAAM,yBAAEk8B,EAAwB,kCAAEC,GAAsCF,GAClE,MAAEllB,EAAK,WAAEqlB,GAAep8B,EACxBq8B,EA5BoBtoB,CAAAA,GACnBA,MAAAA,OAAK,EAALA,EAAOvS,KAAI2W,IACP,CACH7J,QAAS6J,EAAK4iB,QAAQ/6B,MAAMsO,QAC5BD,IAAK8J,EAAK4iB,QAAQ/6B,MAAMqO,QAwBNiuB,CAAqBF,EAAWroB,OAEpDA,EAEFgD,EAAMwlB,YAAcF,GAAkD,UAA7BA,EAAkB,GAAGhuB,IACxD,CAAC2sB,EAA+Bc,EAA+B97B,IAE/Dq8B,MAAAA,OAAiB,EAAjBA,EAAmB76B,KAAI,CAAC2W,EAAkBvB,IA1KtB4lB,EAC9BtjB,EACAiL,EACAsY,EACAC,EACA18B,KACqC,IAAA28B,EAAAC,EACrC,IAAIzB,EAAoC,GAExC,MAAMC,EAAgD,QAA3BuB,EAAG38B,EAAMgB,QAAQq6B,IAAI36B,cAAM,IAAAi8B,OAAA,EAAxBA,EAA0BrB,qBACpDt7B,EAAMoB,KAAKm6B,QAAQj6B,SACnB65B,GAAgBK,EAAAA,EAAAA,qBAAoBx7B,EAAMoB,KAAKm6B,QAAQj6B,OAAOm6B,OAAQz7B,EAAMgB,QAAQ4J,QAAQyY,cAE5F+X,GAAyBD,IACzBA,EAAgB,GAAGA,KAAiBC,KAMxC,MAAMjf,EAAUA,KAAK,IAAA0gB,EAAAC,EACG,QAApBD,EAAA78B,EAAM+8B,sBAAc,IAAAF,GAApBA,EAAAlb,KAAA3hB,GAC4B,QAA5B88B,EAAA98B,EAAMg9B,8BAAsB,IAAAF,GAA5BA,EAAAnb,KAAA3hB,EAA+By8B,GAC/Bz8B,EAAM+W,MAAMkmB,YAAcR,GAYxBS,EAAiB18B,IACfA,EAAM+W,UAAYof,EAAAA,SAASwG,QAC3B38B,EAAM64B,iBACNld,MAIR,MAAO,CACH2e,4BAA6B,CACzB7wB,IAAK,KACLP,UAnBQsF,GAAAA,CACZ,mCACA0tB,IAAwBD,EAAU,0CAA4C,IAkB1Eve,KAAM,eACNlV,IAAKyzB,GAET1B,QACIj7B,IAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAU,yBACZ5J,IAAAA,cAACuU,EAAAA,OAAM,CACH6J,KAAK,MAAK,aACEhF,EAAM5K,QAAO,gBACVouB,IAAwBD,EAAO,gBAC/B,GAAGz8B,EAAM4W,sBAAsB6lB,IAC9C/yB,UAAU,sCACVyS,QAASA,EACTihB,UAAWF,GAEXp9B,IAAAA,cAACs1B,EAAAA,GAAK5qB,OAAAC,OAAA,CACFvJ,eAAgBlB,EAAMgB,QAAQC,cAAcC,eAC5CwI,UAAU,+BACNwP,EAAK,CACTgL,aAAclkB,EAAMgB,QAAQ4J,QAAQsZ,aACpCC,cAAkD,QAArCyY,EAAE58B,EAAMU,OAAOg7B,8BAAsB,IAAAkB,EAAAA,EAAIzY,EACtDE,oBAAoB,OACpBsX,sBAAuB37B,EAAM+W,MAAMsmB,wBACnCxB,YA3BC,IA2BYY,EAA2BtB,EAAgBjiB,EAAM7K,IAC9DivB,oBA5BC,IA4BoBb,MAG7B38B,IAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAU,kCACZ5J,IAAAA,cAACuU,EAAAA,OAAM,CACH+oB,UAAWF,EACXh1B,MAAOlI,EAAMkN,UAAUqwB,oBACvBrf,KAAK,SACLxU,UAAU,+CACVyS,QAASA,QA6FfqgB,CAA0BrkB,EAAM2jB,EAA+BllB,EAAIG,EAAMkmB,YAAaj9B,KAGpG,OACIF,IAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyxB,GACNp8B,IAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK0xB,GAAoCpoB,MAAAA,OAAK,EAALA,EAAOvS,IAAIo5B,MAsBrE,EAZ2D56B,IAEvD,MAAM,cAAEw9B,EAAa,WAAEpB,EAAU,aAAEqB,EAAY,MAAEC,GAAU19B,EAC3D,OACIF,IAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKgzB,GACR39B,IAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK+yB,IACTE,EACA1B,EAAiBI,EAAYp8B,8FC3M1C,MAAMskB,EAAkBA,CAACtkB,EAA6BkN,EAAkCywB,IAEhF79B,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMukB,WACZzkB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMsK,aACZxK,EAAAA,cAAA,WACKE,EAAM0kB,OACN1kB,EAAMykB,MAEVzkB,EAAMwkB,MAEX1kB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAM2kB,eACZ7kB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAM4kB,aACX5kB,EAAM49B,YACN59B,EAAM6kB,YAEX/kB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAM8kB,eACX9kB,EAAM+kB,aACN/kB,EAAMglB,aACNhlB,EAAMilB,cAEXnlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMklB,eACXyY,OAAet9B,EAAYP,EAAAA,cAAA,KAAG4J,UAAU,4BAA4BwD,EAAU2wB,sBAC9E79B,EAAM89B,KACN99B,EAAM+9B,QACN/9B,EAAMmlB,QAyCrB6Y,EAA4Bh+B,IAC9B,MAAMu7B,EAAUv7B,EAAMoB,KAAKm6B,QAAQj6B,OACnC,OACIxB,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAU,iCACZ5J,EAAAA,cAAA,OAAK4J,UAAU,2BAjCC1J,CAAAA,IAAmF,IAAAi+B,EAC3G,MAAMC,EAA8C,QAA5BD,EAAGj+B,EAAMoB,KAAKm6B,QAAQj6B,cAAM,IAAA28B,OAAA,EAAzBA,EAA2BtO,gBAChDwO,GAAW/a,EAAAA,EAAAA,kBAAiB8a,EAAoBl+B,EAAMgB,QAAQ4J,QAAQyY,aAa5E,OACIvjB,EAAAA,cAACs1B,EAAAA,GAAK,CACF/mB,IAAK8vB,MAAAA,EAAAA,EAAY,GACjBja,aAAclkB,EAAMgB,QAAQ4J,QAAQsZ,aACpCC,cAAenkB,EAAMU,OAAOyjB,cAAgBnkB,EAAMU,OAAOyjB,cAhBpB,CACzCZ,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCgW,GAAI,CAAElW,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,MAE3CI,UAAU,EACVgY,iBAAiB,MAqB6BqC,CAAmBp+B,IAC7DF,EAAAA,cAAA,OAAK4J,UAAU,6BACX5J,EAAAA,cAAA,OAAK4J,UAAU,2BAA2B6xB,MAAAA,OAAO,EAAPA,EAASxoB,MACnDjT,EAAAA,cAAA,OAAK4J,UAAU,gCAAgC6xB,MAAAA,OAAO,EAAPA,EAASxoB,MACxDjT,EAAAA,cAAA,OAAK4J,UAAU,4BAA4B6xB,MAAAA,OAAO,EAAPA,EAASE,WA+GpE,EA3C+Fz7B,IAC3F,MAAM,iBACFq+B,EAAgB,QAChB19B,EAAO,YACPuJ,EAAW,iBACXo0B,EAAgB,2BAChBxX,EAA0B,aAC1BC,EAAY,mBACZwX,EAAkB,kBAClBvX,EAAiB,iBACjBwX,EAAgB,YAChBvX,EAAW,eACXwX,EAAc,MACd1nB,EAAK,WACLoQ,EAAU,UACVja,GACAlN,EAEJ,OAAKmnB,GAAepO,EAAAA,gBAAgBC,YAAYiO,IAAiBlQ,EAAMiR,gBAKnEloB,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKP,GACPvJ,EACDb,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK8zB,GACLE,EACAJ,GAELv+B,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAK+zB,GACLrX,GAAc7C,EAAgB6C,EAAYja,GAAW,GACrD+Z,EAAYzlB,KAAI2mB,GACN7D,EAAgB6D,EAAQjb,GAAW,OAGhD6L,EAAAA,gBAAgBC,YAAYiO,IAAgBlQ,EAAMiR,iBAAmBlB,EACtEC,EA7Fc/mB,CAAAA,IACvB,MAAM,UAAEkN,EAAS,YAAEhD,EAAW,YAAEgd,GAAgBlnB,EAChD,OACIF,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKyc,EAAY7B,MAAWnb,GAC9Bgd,EAAY5B,YACbxlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyc,EAAY3B,WAClBzlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyc,EAAY1B,MAClB1lB,EAAAA,cAACuL,EAAAA,KAAI,CAAC3B,UAAU,qBACXs0B,EAAyBh+B,GAC1BF,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyc,EAAYzB,SAAQ,CAAE/b,UAAU,8BACtC5J,EAAAA,cAAA,OAAK4J,UAAU,gDAAgDwD,EAAUwxB,mBACxExX,EAAYxC,SAGrB5kB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyc,EAAYzB,SAAQ,CAAE/b,UAAU,6BACrCwD,EAAUyxB,iBACVzX,EAAYtB,YAEjB9lB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyc,EAAYzB,SAAQ,CAAE/b,UAAU,oCACrCwD,EAAU0xB,gBACV1X,EAAYpB,WAEhBoB,EAAYnB,iBACZmB,EAAY1d,QAGrB1J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKyc,EAAYlB,aACjBkB,EAAYjB,aACZiB,EAAYhB,gBAkEhBd,CAAkBplB,GAtDLmmB,EAACnmB,EAAoC+W,IAEvDjX,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMqlB,OACZvlB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMslB,aAAcvO,EAAMqP,SAAWpmB,EAAMqmB,gBAAkBrmB,EAAMsmB,QAC7ExmB,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMulB,WACXxO,EAAMqP,SAAWpmB,EAAMumB,uBAAyB,CAACvmB,EAAMwmB,cAAexmB,EAAMymB,aAAczmB,EAAMwJ,QAErG1J,EAAAA,cAACuL,EAAAA,KAAIb,OAAAC,OAAA,GAAKzK,EAAMgmB,aAAcjP,EAAMqP,SAAWpmB,EAAM0mB,gBAAkB,CAAC1mB,EAAMimB,aAAcjmB,EAAMkmB,gBAgDjGC,CAAkBa,EAAmBjQ,IAnBnCjX,EAAAA,cAACyL,EAAAA,OAAMf,OAAAC,OAAA,GAAKP,GAAco0B,oBC1LzC,IAAIO,EAAI,EAAQ,IACZC,EAAS,EAAQ,GAIrBD,EAAE,CAAEC,QAAQ,EAAMC,OAAQD,EAAO3+B,aAAe2+B,GAAU,CACxD3+B,WAAY2+B,oBCLd,EAAQ","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/map-custom/map-custom.tsx?7be2","webpack://Msdyn365.Commerce.Online/./src/modules/map-custom/map-custom.view.tsx?fdae","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/definition-extensions/account-loyalty.ext.props.autogenerated.ts?0bf6","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-loyalty.view.tsx?24c1","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-profile.view.tsx?555a","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/header.view.tsx?2a15","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/components/navigation-menu-utilities.tsx?ca80","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/navigation-menu.view.tsx?2c75","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/reviews-list.view.tsx?43bb","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/search-result-container.view.tsx?5f49","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.tsx?2f8c","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.view.tsx?ac91","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-description.tsx?4911","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-links.tsx?bee7","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?7378","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?81f3","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.tsx?c17e","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.view.tsx?0a60","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.tsx?02aa","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.view.tsx?1e13","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.tsx?074a","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.view.tsx?c5af","webpack://Msdyn365.Commerce.Online/./src/modules/site-picker/site-picker.tsx?b9ec","webpack://Msdyn365.Commerce.Online/./src/modules/site-picker/site-picker.view.tsx?5319","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/media-gallery.view.tsx?7624","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/reviews-list.view.tsx?39ca","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.global-this.js?d448","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/esnext.global-this.js?8aa2"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n// tslint:disable:no-reference\r\n/// \r\n\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport classname from 'classnames';\r\nimport { observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IMapCustomData } from './map-custom.data';\r\nimport { IMapCustomProps, IPushpinOptionsData } from './map-custom.props.autogenerated';\r\n\r\n/**\r\n * Header Interface.\r\n */\r\nexport interface IHeader {\r\n headerProps: INodeProps;\r\n heading: React.ReactNode;\r\n}\r\n/**\r\n * MapViewProps Interface.\r\n */\r\nexport interface IMapViewProps extends IMapCustomProps {\r\n ModuleProps: IModuleProps;\r\n Header: IHeader;\r\n MapProps: INodeProps;\r\n Map: Microsoft.Maps.Map | undefined;\r\n}\r\n\r\nenum StoreType {\r\n VenchiStore,\r\n Retailer\r\n}\r\n\r\ninterface PushpinData {\r\n pushpin: Microsoft.Maps.Pushpin;\r\n storeType: StoreType;\r\n index: number;\r\n}\r\n\r\n/**\r\n *\r\n * Map component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass Map extends React.PureComponent> {\r\n @observable public map: Microsoft.Maps.Map | undefined;\r\n public clusterLayer: Microsoft.Maps.ClusterLayer | undefined;\r\n public pushpinMap: globalThis.Map = new globalThis.Map();\r\n public selectedPushPin: PushpinData | undefined = undefined;\r\n\r\n private readonly mapRef: React.RefObject = React.createRef();\r\n\r\n public constructor(props: IMapCustomProps) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n }\r\n } = this.props;\r\n\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n this._initMap();\r\n this._updateMapForOrgUnitChanges();\r\n }\r\n\r\n when(\r\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n () => {\r\n this._initMap();\r\n }\r\n );\r\n\r\n // reaction(\r\n // () => {\r\n // return [\r\n // this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\r\n // this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n // this.map\r\n // ];\r\n // },\r\n // () => {\r\n // this._updateMap();\r\n // }\r\n // );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\r\n () => {\r\n this._updateMapForOrgUnitChanges();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n () => {\r\n this._updateMapForSelectedStore();\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { heading, className },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\r\n\r\n const viewProps: IMapViewProps = {\r\n ...this.props,\r\n ModuleProps: {\r\n tag: 'div',\r\n moduleProps: this.props,\r\n className: classname('ms-map', { show: shouldDisplayMap }, className)\r\n },\r\n Header: {\r\n headerProps: { className: 'ms-map__header' },\r\n heading: heading?.text && (\r\n \r\n )\r\n },\r\n MapProps: {\r\n tag: 'div',\r\n className: 'ms-map__body',\r\n ref: this.mapRef\r\n },\r\n Map: this.map\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method to be called on heading change.\r\n * @param event -Content Edit Event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Initialize the map.\r\n */\r\n private readonly _initMap = () => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n if (storeSelectorStateManager?.isMapApiLoaded && !this.map) {\r\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\r\n credentials: channel?.BingMapsApiKey,\r\n pushpinAccessible: true,\r\n labelOverlay: Microsoft.Maps.LabelOverlay.hidden,\r\n customMapStyle: {\r\n elements: {\r\n countryRegion: { labelVisible: false }\r\n },\r\n version: '1.0'\r\n }\r\n });\r\n //TODO restore this pls cause i'll cry if not\r\n // Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\r\n // await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\r\n // });\r\n }\r\n };\r\n\r\n /**\r\n * Update the map.\r\n */\r\n private readonly _updateMapForOrgUnitChanges = () => {\r\n const pushpinOptions = this.props.config.pushpinOptions;\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\r\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const positionUser = storeSelectorStateManager?.lastInlineShownStoreInfo;\r\n var fistStoreLocation: Microsoft.Maps.Location | undefined;\r\n if (this.map && orgUnitStoreInformation) {\r\n this.pushpinMap = new globalThis.Map();\r\n this.map.layers.clear();\r\n this.selectedPushPin = undefined;\r\n fistStoreLocation = undefined;\r\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\r\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\r\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\r\n if (storeLocation?.Latitude && storeLocation.Longitude && storeLocation.OrgUnitNumber) {\r\n if (index === 0) {\r\n fistStoreLocation = new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude);\r\n }\r\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\r\n const storeType =\r\n storeLocation.OrgUnitName && storeLocation.OrgUnitName.startsWith('R ')\r\n ? StoreType.Retailer\r\n : StoreType.VenchiStore;\r\n const options = this._getPushpinOptions(isSelectedLocation, index, storeType, pushpinOptions, storeLocation);\r\n\r\n const pushpin = new Microsoft.Maps.Pushpin(\r\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\r\n options\r\n );\r\n\r\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\r\n this.handleClickEventOnPushPinStore(storeLocation.OrgUnitNumber);\r\n });\r\n\r\n this.pushpinMap.set(storeLocation.OrgUnitNumber, { pushpin: pushpin, storeType: storeType, index: index });\r\n\r\n if (isSelectedLocation) {\r\n this.selectedPushPin = { pushpin: pushpin, storeType: storeType, index: index };\r\n }\r\n }\r\n }\r\n\r\n if (positionUser?.Latitude && positionUser.Longitude) {\r\n const currentLocation = new Microsoft.Maps.Location(positionUser.Latitude, positionUser.Longitude);\r\n if (fistStoreLocation) {\r\n const boundLocations = [currentLocation, fistStoreLocation];\r\n this.map.setView({\r\n bounds: Microsoft.Maps.LocationRect.fromLocations(boundLocations),\r\n padding: 28\r\n });\r\n }\r\n } else if (this.selectedPushPin) {\r\n const pushpinObject = this.selectedPushPin.pushpin;\r\n\r\n if (this.map.getZoom() >= 13) {\r\n this.map.setView({ center: pushpinObject.getLocation() });\r\n } else {\r\n this.map.setView({ center: pushpinObject.getLocation(), zoom: 14 });\r\n }\r\n } else {\r\n this.map.setView({\r\n bounds: Microsoft.Maps.LocationRect.fromShapes(\r\n Array.from(this.pushpinMap.values()).map(pushpinData => pushpinData.pushpin)\r\n )\r\n });\r\n }\r\n\r\n Microsoft.Maps.loadModule('Microsoft.Maps.Clustering', () => {\r\n // Check if there are any pushpins to cluster\r\n if (this.map && this.pushpinMap.size > 0) {\r\n // Convert pushpinMap values to an array of pushpins\r\n const pushpins = Array.from(this.pushpinMap.values()).map(pushpinData => pushpinData.pushpin);\r\n\r\n // Create a ClusterLayer with the pushpins\r\n this.clusterLayer = new Microsoft.Maps.ClusterLayer(pushpins, {\r\n clusteredPinCallback: this.customizeClusteredPin,\r\n gridSize: 92\r\n });\r\n\r\n // Set options\r\n this.map.setOptions({ pushpinAccessible: true });\r\n\r\n // Add event handler for cluster click\r\n Microsoft.Maps.Events.addHandler(this.clusterLayer, 'click', this.clusterClicked);\r\n\r\n // Insert the cluster layer into the map layers\r\n //@ts-ignore\r\n this.map.layers.insert(this.clusterLayer);\r\n }\r\n });\r\n }\r\n };\r\n\r\n private readonly _updateMapForSelectedStore = () => {\r\n const pushpinOptions = this.props.config.pushpinOptions;\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n if (this.map) {\r\n if (this.selectedPushPin) {\r\n this.selectedPushPin.pushpin.setOptions(\r\n this._getPushpinColorAndIcon(false, this.selectedPushPin.storeType, pushpinOptions)\r\n );\r\n }\r\n if (selectedStoreLocationId) {\r\n // eslint-disable-next-line security/detect-object-injection\r\n const currentPushpin = this.pushpinMap.get(selectedStoreLocationId);\r\n if (currentPushpin) {\r\n const pushpinObject = currentPushpin.pushpin;\r\n pushpinObject.setOptions(this._getPushpinColorAndIcon(true, currentPushpin.storeType, pushpinOptions));\r\n this.selectedPushPin = currentPushpin;\r\n if (!this.clusterLayer?.getDisplayedPushpins().includes(pushpinObject)) {\r\n if (this.map.getZoom() >= 13) {\r\n this.map.setView({ center: pushpinObject.getLocation() });\r\n } else {\r\n this.map.setView({ center: pushpinObject.getLocation(), zoom: 14 });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n // private selectFirstWithinDisplayed(){\r\n // if (this.map && this.clusterLayer) {\r\n // const currentlyDisplayedPushPinsthis = this.clusterLayer.getDisplayedPushpins();\r\n // if (currentlyDisplayedPushPinsthis) {\r\n // const first =\r\n // }\r\n // }\r\n // }\r\n\r\n private customizeClusteredPin = (cluster: Microsoft.Maps.ClusterPushpin) => {\r\n Microsoft.Maps.Events.addHandler(cluster, 'click', this.clusterClicked);\r\n };\r\n\r\n private clusterClicked = (e: any) => {\r\n if (this.map && e.target) {\r\n //Check to see if the clicked pushpin has any contained pushpins (this would be a cluster).\r\n if (e.target.containedPushpins) {\r\n var locs = [];\r\n for (var i = 0, len = e.target.containedPushpins.length; i < len; i++) {\r\n //Get the location of each pushpin.\r\n // eslint-disable-next-line security/detect-object-injection\r\n locs.push(e.target.containedPushpins[i].getLocation());\r\n }\r\n\r\n //Create a bounding box for the pushpins.\r\n var bounds = Microsoft.Maps.LocationRect.fromLocations(locs);\r\n\r\n //Zoom into the bounding box of the cluster.\r\n //Add a padding to compensate for the pixel area of the pushpins.\r\n this.map.setView({ bounds: bounds, padding: 100 });\r\n }\r\n }\r\n };\r\n\r\n //TODO RESTORE\r\n /**\r\n * Handle click event.\r\n * @param orgUnitNumber - Organization unit number.\r\n */\r\n private readonly handleClickEventOnPushPinStore = (orgUnitNumber: string | undefined): void => {\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\r\n if (orgUnitNumber) {\r\n //setTimeout(() => {\r\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\r\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\r\n //}, 500);\r\n }\r\n };\r\n\r\n /**\r\n * Get the pushpin option.\r\n * @param isSelectedLocation - Is selected location.\r\n * @param index - Index.\r\n * @param pushpinOptions - PushpinOptions.\r\n * @returns - The pushpin options.\r\n */\r\n private readonly _getPushpinColorAndIcon = (\r\n isSelectedLocation: boolean,\r\n storeType: StoreType,\r\n pushpinOptions?: IPushpinOptionsData\r\n ) => {\r\n // const text = undefined;\r\n\r\n // const size = pushpinOptions?.size || 1;\r\n var color: string | undefined = '#8c7760';\r\n if (storeType === StoreType.Retailer) {\r\n color = isSelectedLocation ? pushpinOptions?.selectionColor_retailer || '#e87722' : pushpinOptions?.color_retailer || '#004f71';\r\n } else {\r\n color = isSelectedLocation ? pushpinOptions?.selectionColor_store || '#e87722' : pushpinOptions?.color_store || '#542D00';\r\n }\r\n //const icon = this._getSvgIcon(size, color, text);\r\n return {\r\n // Fallback if icon doesn't render properly\r\n color: color,\r\n icon: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `\r\n };\r\n };\r\n\r\n /**\r\n * Get the pushpin option.\r\n * @param isSelectedLocation - Is selected location.\r\n * @param index - Index.\r\n * @param pushpinOptions - PushpinOptions.\r\n * @returns - The pushpin options.\r\n */\r\n private readonly _getPushpinOptions = (\r\n isSelectedLocation: boolean,\r\n index: number,\r\n storeType: StoreType,\r\n pushpinOptions?: IPushpinOptionsData,\r\n storeLocation?: OrgUnitLocation\r\n ) => {\r\n const { color, icon } = this._getPushpinColorAndIcon(isSelectedLocation, storeType, pushpinOptions);\r\n if (storeLocation) {\r\n return {\r\n // Fallback if icon doesn't render properly\r\n color: color,\r\n icon,\r\n //text: storeLocation.OrgUnitNumber!,\r\n title: `${storeType === StoreType.Retailer ? 'Retailer' : 'Store'} ${index + 1}`\r\n };\r\n }\r\n return {\r\n // Fallback if icon doesn't render properly\r\n color: color,\r\n icon,\r\n title: storeType === StoreType.Retailer ? 'Retailer' : 'Store'\r\n };\r\n };\r\n}\r\n\r\nexport default Map;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeader, IMapViewProps } from './map-custom';\r\n\r\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\r\n\r\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\r\n \r\n {Header && }\r\n \r\n \r\n);\r\n\r\nexport default MapView;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IAccountLoyalty contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum layout {\r\n cardLayout = 'cardLayout',\r\n wideLayout = 'wideLayout',\r\n compact = 'compact'\r\n}\r\n\r\nexport interface IAccountLoyaltyConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n className?: string;\r\n clientRender?: boolean;\r\n layout: layout;\r\n displayJoinDate?: boolean;\r\n displayAppleWallet?: boolean;\r\n displayGoogleWallet?: boolean;\r\n appleWalletBtnImage?: Msdyn365.IImageData;\r\n googleWalletBtnImage?: Msdyn365.IImageData;\r\n walletLoyaltyProgramName?: string;\r\n pointsExpirationReminder?: string;\r\n loyaltyTiersLink?: ILoyaltyTiersLinkData;\r\n}\r\n\r\nexport interface IAccountLoyaltyResources {\r\n loyaltyCardLabel: string;\r\n joinDateFormatted: string;\r\n totalAvailablePointsLabel: string;\r\n expiringPointsFormatLabel: string;\r\n expiringPointsFormatAriaLabel: string;\r\n availablePointsLabel: string;\r\n availablePointsAriaLabel: string;\r\n loyaltyActivityDateLabel: string;\r\n loyaltyActivityBalanceLabel: string;\r\n redeemedPointsLabel: string;\r\n refundedPointsLabel: string;\r\n earnedPointsLabel: string;\r\n pendingPointsLabel: string;\r\n adjustedPointsLabel: string;\r\n backToShoppingText: string;\r\n loyaltyTierLabel: string;\r\n loyaltyCardLabel_CL: string;\r\n availablePointsLabel_CL_before: string;\r\n availablePointsLabel_CL_after: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ILoyaltyTiersLinkData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAccountLoyaltyProps extends Msdyn365.IModule {\r\n resources: IAccountLoyaltyResources;\r\n config: IAccountLoyaltyConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\n// import { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IAccountLoyaltyProps, layout as layoutNames } from '../definition-extensions/account-loyalty.ext.props.autogenerated';\r\nimport { IAccountLoyaltyViewProps } from '@msdyn365-commerce-modules/account-management/src/modules/account-loyalty/./account-loyalty';\r\nimport { ILoyaltySignUpProps } from '@msdyn365-commerce-modules/account-management/src/modules/loyalty-sign-up';\r\n\r\nimport { Row, Container } from 'reactstrap';\r\nimport classnames from 'classnames';\r\n\r\nconst isWideOrCompactLayout = (layout: layoutNames) => {\r\n return [layoutNames.wideLayout, layoutNames.compact].includes(layout);\r\n}\r\n\r\nconst layoutClassNames = {\r\n [layoutNames.wideLayout]: 'loyalty-wide-layout',\r\n [layoutNames.compact]: 'loyalty-compact-layout'\r\n}\r\nconst getLayoutClassName = (layout: layoutNames) => layoutClassNames[layout] || 'loyalty-wide-layout'\r\n\r\nconst AccountLoyaltyView: React.FC & ILoyaltySignUpProps<{}>> = props => {\r\n const {\r\n AccountLoyalty,\r\n heading,\r\n cardNumber,\r\n joinDate,\r\n points,\r\n } = props;\r\n\r\n const {\r\n layout,\r\n displayJoinDate,\r\n displayAppleWallet,\r\n displayGoogleWallet,\r\n appleWalletBtnImage,\r\n googleWalletBtnImage,\r\n pointsExpirationReminder,\r\n loyaltyTiersLink,\r\n walletLoyaltyProgramName\r\n } = props.config;\r\n\r\n const {\r\n loyaltyTierLabel,\r\n loyaltyCardLabel,\r\n loyaltyCardLabel_CL,\r\n availablePointsLabel,\r\n availablePointsLabel_CL_before,\r\n availablePointsLabel_CL_after,\r\n viewLoyaltyPageText\r\n } = props.resources;\r\n\r\n // @ts-ignore\r\n const firstLoyaltyGroup = props.AccountLoyalty.moduleProps.data.loyaltyCard.result && props.AccountLoyalty.moduleProps.data.loyaltyCard.result.LoyaltyGroups[0];\r\n // @ts-ignore\r\n const highestTierId = firstLoyaltyGroup.HighestActiveLoyaltyCardTier;\r\n // @ts-ignore\r\n const tierDetails = firstLoyaltyGroup.LoyaltyCardTiers.filter(tier => tier.RecordId === highestTierId)[0];\r\n const tierName = tierDetails.TierId;\r\n\r\n const user_email = props.AccountLoyalty.moduleProps.context.request.user.emailAddress;\r\n // @ts-ignore\r\n const user_card_number = cardNumber!.props.text;\r\n \r\n let points_numbers = [-1.1];\r\n \r\n // @ts-ignore\r\n if (points && points.props) {\r\n // @ts-ignore\r\n points_numbers = points.props.text.split('.');\r\n }\r\n\r\n const height_to_set = 48; // Minimum per Google guidelines\r\n\r\n const tierClass = `tier-name__${tierName}`;\r\n\r\n const apple_wallet_check: boolean = displayAppleWallet && appleWalletBtnImage && appleWalletBtnImage.src && appleWalletBtnImage.altText && user_card_number;\r\n const google_wallet_check: boolean = displayGoogleWallet && googleWalletBtnImage && googleWalletBtnImage.src && googleWalletBtnImage.altText && user_card_number;\r\n const programString : string = walletLoyaltyProgramName || \"v-club-emea\";\r\n\r\n if (isWideOrCompactLayout(layout)) {\r\n // Wide or compact layout (Loyalty page and Homepage row)\r\n return (\r\n \r\n {heading}\r\n \r\n \r\n
\r\n

{loyaltyCardLabel}

\r\n {cardNumber}\r\n {(apple_wallet_check || google_wallet_check) && (
\r\n {apple_wallet_check ?\r\n \r\n {appleWalletBtnImage?.altText}\r\n : null}\r\n {google_wallet_check ?\r\n \r\n {googleWalletBtnImage?.altText}\r\n : null}\r\n
)}\r\n {/* @ts-ignore */}\r\n {displayJoinDate && !joinDate?.props.text.endsWith('1900') ? joinDate : null}\r\n
\r\n
\r\n

{availablePointsLabel}

\r\n {points_numbers[0] != -1.1 ?

{points_numbers[0]}

: null}\r\n {pointsExpirationReminder ?

{pointsExpirationReminder}

: null}\r\n {viewLoyaltyPageText ?\r\n \r\n {viewLoyaltyPageText}\r\n : null}\r\n
\r\n
\r\n

{loyaltyTierLabel}

\r\n

{tierName}

\r\n {(loyaltyTiersLink && loyaltyTiersLink.linkUrl && loyaltyTiersLink.linkUrl.destinationUrl && loyaltyTiersLink.linkText) ?\r\n \r\n {loyaltyTiersLink.linkText} \r\n : null}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n // Card layout (Homepage column)\r\n return (\r\n \r\n {heading}\r\n
\r\n \r\n \r\n
\r\n

{loyaltyCardLabel_CL}

 

{cardNumber}

\r\n
\r\n
\r\n

{loyaltyTierLabel}

 {tierName}

\r\n
\r\n
\r\n \r\n
\r\n

\r\n \r\n {availablePointsLabel_CL_before} {points_numbers[0] != -1.1 ?

{points_numbers[0]}

: null} {availablePointsLabel_CL_after}\r\n
\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccountLoyaltyView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n IAccountPreference,\r\n IAccountPreferences,\r\n IAccountProfileItem,\r\n IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/account-profile/./account-profile';\r\nimport { IAccountProfileProps } from '../definition-extensions/account-profile.ext.props.autogenerated';\r\n\r\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {extraPreferences &&\r\n extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC> = props => {\r\n const {\r\n AccountProfile,\r\n accountProfileWrapper,\r\n heading,\r\n emailSection,\r\n nameSection,\r\n preferenceSection,\r\n customerAttributesWrapper,\r\n customerAttributesSection\r\n } = props;\r\n React.useEffect(() => {\r\n if (document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing')[1].innerHTML =\r\n // @ts-ignore\r\n props.config.textGenericMarketing;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-Profiling').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-Profiling')[1].innerHTML = props.config.textProfiling;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-ThirdParty').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-ThirdParty')[1].innerHTML = props.config.textThirdParty;\r\n }\r\n\r\n document.getElementsByClassName('ms-account-profile__attributes-edit-button msc-btn')[0].addEventListener(\"click\", () => {\r\n const bd_input: HTMLInputElement = document.getElementsByClassName('ms-account-profile__attributes-element ms-account-profile__attributes_input ms-account-profile__attributes_input-edit-false ms-account-profile__Birthday-input')[0] as HTMLInputElement;\r\n // const prev_date = bd_input.value;\r\n if (props.context.request.canonicalDomain !== 'us.venchi.com') {\r\n // The following is undefined due to the element not existing yet at runtime\r\n // const never_mind: HTMLButtonElement = document.getElementsByClassName('ms-account-profile__attributes-cancel-button msc-btn')[0] as HTMLButtonElement;\r\n \r\n // Protip: This resets the birthday value on click, so be mindful of that\r\n bd_input.setAttribute('type', 'date');\r\n \r\n // never_mind.addEventListener(\"click\", () => {\r\n // bd_input.setAttribute('type', 'text');\r\n // bd_input.value = prev_date;\r\n // });\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n {heading}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {accountProfileWrapper && (\r\n \r\n \r\n \r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { Collapse, Drawer, Module, Node, Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\n\r\nconst headerView: React.FC> = props => {\r\n if (typeof window !== 'undefined') {\r\n const [scrolled, setScrolled] = React.useState(false);\r\n const handleScroll = () => {\r\n const offset = window.scrollY;\r\n offset > 5 ? setScrolled(true) : setScrolled(false);\r\n };\r\n scrolled ? document.body.classList.add('headerIsSticky') : document.body.classList.remove('headerIsSticky');\r\n React.useEffect(() => {\r\n window.addEventListener('scroll', handleScroll);\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n const menuTopDesktop = document.getElementsByClassName('menu--top desktop')[0];\r\n const desktopMenuTop = document.getElementsByClassName('menu--top_ctn')[0];\r\n if (document.getElementsByClassName('menu--top mobile').length) {\r\n const menuTopMobile = document.getElementsByClassName('menu--top mobile')[0];\r\n const mobileMenu = document.getElementsByClassName('mobile menus')[0];\r\n mobileMenu.appendChild(menuTopMobile);\r\n }\r\n desktopMenuTop.appendChild(menuTopDesktop);\r\n }\r\n }, []);\r\n }\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer } = props;\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {/* @ts-ignore */}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n {_renderAccountBlock(props, false)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {props.navIcon}\r\n {props.logo}\r\n
\r\n
{_renderReactFragment(props.menuBar)}
\r\n
\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n {_renderReactFragment(props.siteOptions)}\r\n
\r\n
\r\n
\r\n
\r\n {_renderCollapseMenu(props)}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.preferredStore}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n {_renderStoreLocatorButton(props)}\r\n \r\n {props.logo}\r\n \r\n {_renderReactFragment(props.search)}\r\n {_renderAccountBlock(props, false)}\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.navIcon}\r\n {props.logo}\r\n \r\n \r\n {/* {_renderReactFragment(props.search)} */}\r\n {_renderStoreLocatorButton(props)}\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n \r\n \r\n \r\n {_renderCollapseMenu(props)}\r\n {_renderReactFragment(props.menuBar)}\r\n {props?.slots?.header_gwp && props?.slots?.header_gwp}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nfunction _renderCollapseMenu(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n const { mobileMenuCollapsed, Divider, MobileMenuLinksContainer } = props;\r\n if (typeof window !== 'undefined') {\r\n mobileMenuCollapsed === true ? document.body.classList.remove('no-scroll') : document.body.classList.add('no-scroll');\r\n }\r\n //FIXME invert the condition\r\n if (props.config.layout2022 === undefined || !props.config.layout2022) {\r\n return (\r\n \r\n {_renderReactFragment(props.search)}\r\n \r\n
\r\n
{_renderReactFragment(props.menuBar)}
\r\n {_renderMobileAccountBlock(props, true)}\r\n {/* @ts-ignore */}\r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n
\r\n \r\n {_renderReactFragment(props.search)}\r\n {/* {_renderMobileAccountBlock(props, true)} */}\r\n \r\n \r\n
{_renderReactFragment(props.menuBar)}
\r\n \r\n {/* //TODO remove */}\r\n {_renderMobileAccountBlock(props, true)}\r\n {/* {props.wishListIconMobile} */}\r\n \r\n {props?.slots?.countrySelector && props?.slots?.countrySelector}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\n\r\n\r\n\r\n/////\r\n\r\nfunction _renderStoreLocatorButton(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n if (props.config.storeLocatorPageLink == undefined || props.config.storeLocatorPageLink.destinationUrl == undefined || props.config.storeLocatorLabel == undefined) {\r\n return (<>)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {props.config.storeLocatorLabel}\r\n \r\n \r\n );\r\n\r\n\r\n\r\n}\r\n\r\nexport default headerView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\r\n\r\n/**\r\n * Represent navigation menu state interface.\r\n */\r\nexport interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: Msdyn365.IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n drawerKeyValue: Msdyn365.IDictionary;\r\n //isOnlyMobile: boolean;\r\n //isNavOpen: boolean;\r\n}\r\n\r\n//TODO clean\r\n/* interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n categoryImageAltText: string;\r\n drawerKeyValue: IDictionary;\r\n mobileViewLabelText?: string;\r\n }\r\n */\r\n\r\n/**\r\n * NavMenuConstants enum.\r\n */\r\nexport enum NavMenuConstants {\r\n zero = 0,\r\n one = 1,\r\n two = 2,\r\n three = 3,\r\n four = 4,\r\n escapeKey = 27,\r\n rootMenu = 1\r\n}\r\n\r\n/**\r\n * GridSizes.\r\n */\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * Get category image.\r\n * @param props - Navigation menu props.\r\n * @param categoryImage - Category Image.\r\n * @param alttext - AltText String.\r\n * @returns Returns Node.\r\n */\r\nexport const getCategoryImage = (\r\n props: INavigationMenuViewProps & INavigationMenuProps<{}>,\r\n categoryImage: string,\r\n alttext: string\r\n): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n\r\n // FROM Adventure-works\r\n // xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n // sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n // md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\r\n // lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { INavigationMenuProps, ICmsNavItemsData } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Drawer,\r\n ICollapseProps,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n IDrawerState\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, { IImageData } from '@msdyn365-commerce/core';\r\nimport { getCategoryImage, INavigationState, NavMenuConstants } from './components/navigation-menu-utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent, INavigationState> {\r\n private currentLevel: number = 0;\r\n\r\n private readonly _positionInSetOffset: number = 1;\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n private readonly menuNode: React.RefObject;\r\n //TODO remove\r\n //private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n private readonly promotionalImage: IImageData[] = [];\r\n private readonly payLoad: IPayLoad;\r\n\r\n //TODO validate this\r\n //private readonly supportedLevel: number = 2;\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n constructor(props: INavigationMenuViewProps & INavigationMenuProps<{}>) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, drawerKeyValue: {} };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this._layout2022closeSubmenu = this._layout2022closeSubmenu.bind(this);\r\n this._layout2022escFunction = this._layout2022escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n const { menuItemData } = this.props;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n return null;\r\n });\r\n }\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n //FIXME change if\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022) {\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n } else {\r\n document.body && document.addEventListener('keydown', (this._layout2022escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._layout2022handleClickOutside);\r\n }\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n //FIXME change if\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022) {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside);\r\n } else {\r\n document.body && document.removeEventListener('keydown', (this._layout2022escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._layout2022handleClickOutside);\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n /**\r\n * Method to render mobile menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\r\n //FIXME invert the condition\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022)\r\n return this._renderDrawerMenu(menuItem);\r\n else return this._layout2022renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\r\n })}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render desktop menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n //FIXME invert condition\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022)\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n else\r\n return (\r\n \r\n \r\n {this._layout2022renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return {linkText};\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n /*if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }*/\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n //const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { DivContainer, MenuList, showCategoryImage } = this.props;\r\n this.currentLevel = 1;\r\n if (showCategoryImage) {\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n {\r\n //TODO remove\r\n /* \r\n {this.state.categoryImage !== undefined && this.state.categoryImage !== null && this._getCategoryImage(this.state.categoryImage)}\r\n */\r\n }\r\n \r\n );\r\n }\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n //TODO remove\r\n\r\n // private _updateCategoryImage = (categoryImage: string) => () => {\r\n // this.setState({\r\n // categoryImage: categoryImage !== '' ? categoryImage : 'empty'\r\n // });\r\n //}\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n //TODO remove\r\n // if (this.props.showCategoryImage) {\r\n // this._updateCategoryImage(data.imageSource!)();\r\n // }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n //TODO remove\r\n // private _getCategoryImage = (categoryImage: string): React.ReactNode | null => {\r\n\r\n // const categoryImageUrl = generateImageUrl(`${categoryImage}`, this.props.context.actionContext.requestContext.apiSettings);\r\n // const defaultImageSettings: IImageSettings = {\r\n // viewports: {\r\n // xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n // sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n // md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n // lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n // },\r\n // lazyload: true\r\n // };\r\n // if (categoryImageUrl !== undefined) {\r\n // const ImageData: IImageData = { src: categoryImageUrl };\r\n // return (\r\n // \r\n // );\r\n // }\r\n // return null;\r\n // }\r\n\r\n /////////////////////////////////////////////////\r\n /////// LAYOUT 2022 ////////////////////////////\r\n ////////////////////////////////////////////////\r\n\r\n /**\r\n * Method to render drawer menu.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\r\n return this._layout2022renderDrawer(menuItem, setSize, posinset, true);\r\n }\r\n return this._layout2022renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\r\n }\r\n\r\n /**\r\n * Method to render drawer component.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number, firstLevel?: boolean): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const keyValue = this.state.drawerKeyValue;\r\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\r\n const keys = keyValue !== undefined ? keyValue : {};\r\n const { isMobileView } = this.props;\r\n\r\n let isDrawerOpen = false;\r\n if (keys[buttonText]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\r\n\r\n\r\n const bottomLinkData: ICmsNavItemsData[] = firstLevel ? this.props.config.cmsNavItems?.filter(navItem => navItem.linkText === buttonText) || [] : [];\r\n const bottomAllLink: IMenuItemData = {\r\n linkText: bottomLinkData[0]?.bottomLinkText || \"\",\r\n linkURL: bottomLinkData[0]?.bottomLinkUrl?.destinationUrl || \"\",\r\n shouldOpenNewTab: false,\r\n }\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n return this._layout2022renderDrawer(\r\n menuSubItem,\r\n bottomAllLink.linkText === \"\" ? menuItem.subMenu?.length : menuItem.subMenu!.length + 1,\r\n currentPos + this._positionInSetOffset\r\n );\r\n }\r\n return this._layout2022renderDrawerLink(\r\n menuSubItem,\r\n bottomAllLink.linkText === \"\" ? menuItem.subMenu?.length : menuItem.subMenu!.length + 1,\r\n currentPos + this._positionInSetOffset\r\n );\r\n })}\r\n {bottomAllLink.linkText === \"\" ? <> :\r\n this._layout2022renderDrawerLink(\r\n bottomAllLink,\r\n menuItem.subMenu!.length + 1,\r\n menuItem.subMenu!.length + this._positionInSetOffset\r\n )\r\n }\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link.\r\n * @param linkText -Text on Menu link.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderLinkText(\r\n linkText: string | undefined,\r\n setSize: number | undefined,\r\n posinset: number | undefined\r\n ): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer link.\r\n * @param item -Single Menuitem.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._layout2022renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._layout2022renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to generate menu.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n this.setState({ parentMenu: undefined });\r\n break;\r\n }\r\n menuItem = this._layout2022getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._layout2022createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._layout2022createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n /**\r\n * Method to get data for submenu.\r\n * @param item -Single Menuitem.\r\n * @returns IMenuItemData.\r\n */\r\n private _layout2022getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item?.id });\r\n return subMenus[i];\r\n }\r\n const found = this._layout2022getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to create item list.\r\n * @param menuItemData -Single Menuitem.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022createMenuItemList(menuItemData: IMenuItemData, index?: number, level?: number): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._layout2022renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined, menuItemData.linkText);\r\n }\r\n return (\r\n <>\r\n {this._layout2022renderButtonMenuItem(menuItemData)}\r\n {this._layout2022renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined, menuItemData.linkText, true)}\r\n \r\n );\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._layout2022renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._layout2022renderSpanMenuItem(menuItemData, menuItemData.id, true);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _layout2022renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean, nameParentElement?: string, firstLevel?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const subMenuLevel = 3;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\r\n\r\n // Const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n //this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n //this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n\r\n const bottomLinkData: ICmsNavItemsData[] = nameParentElement ? this.props.config.cmsNavItems?.filter(navItem => navItem.linkText === nameParentElement) || [] : [];\r\n const bottomLinkDataFiltered: ICmsNavItemsData[] = bottomLinkData.filter(navItem => navItem.bottomLinkText != undefined) || [];\r\n const bottomLinkPresent: boolean = firstLevel && bottomLinkDataFiltered.length > 0 || false;\r\n const bottomMenuLink: JSX.Element | null = bottomLinkPresent\r\n ? this._layout2022renderLinkMenuItem({\r\n linkText: bottomLinkData[0]?.bottomLinkText || \"\",\r\n linkURL: bottomLinkData[0]?.bottomLinkUrl?.destinationUrl || \"\",\r\n shouldOpenNewTab: false,\r\n })\r\n : null;\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n\r\n let menuItem: JSX.Element | null;\r\n\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._layout2022renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL\r\n ? this._layout2022renderLinkMenuItem(option, idx)\r\n : this._layout2022renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._layout2022renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._layout2022renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu, bottomLinkPresent, bottomMenuLink);\r\n }\r\n\r\n /**\r\n * Method to render button menu item.\r\n * @param option -Single Menuitem.\r\n * @param activeMenu -Active menu number.\r\n * @param index -Active menu index.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link menu item.\r\n * @param option -Single Menuitem.\r\n * @param index -Active menu index.\r\n * @param hoverEffect -Active menu effect.\r\n * @param isParent -Is parent menu.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n\r\n private sendEventGA(option: IMenuItemData, isMobileView: boolean) {\r\n // console.log(option.linkText);\r\n // let menu_twin = [];\r\n // let found = false;\r\n let paths: string[] = [];\r\n\r\n if (!isMobileView) {\r\n const menu = document.querySelectorAll('ul.ms-nav__list')[3];\r\n Array.from(menu?.children!).forEach(li_1 => {\r\n if (li_1?.childElementCount! > 1) {\r\n const level_1 = li_1.querySelector('button')!.textContent;\r\n const level_2_class = isMobileView ? 'drawer__button' : 'level-2';\r\n if (li_1.getElementsByClassName(level_2_class).length > 0) {\r\n Array.from(li_1?.querySelectorAll('li.ms-nav__list__item.havesubmenu')!).forEach(li_2 => {\r\n const level_2 = li_2.querySelector('span.ms-nav__list__item__span')!.textContent;\r\n Array.from(li_2.querySelectorAll('li.ms-nav__list__item')!).forEach(li_3 => {\r\n const level_3 = li_3.textContent;\r\n const path = `${level_1}_${level_2}_${level_3}`;\r\n if (!(path in paths)) {\r\n paths.push(path);\r\n }\r\n });\r\n });\r\n } else {\r\n Array.from(li_1?.querySelectorAll('li.ms-nav__list__item')!).forEach(li_2 => {\r\n const level_2 = li_2.textContent;\r\n const path = `${level_1}_${level_2}`;\r\n if (!(path in paths)) {\r\n paths.push(path);\r\n }\r\n });\r\n\r\n }\r\n if (li_1.querySelector('div.bottomlink-menu-section')) {\r\n const level_2_bottom = li_1.querySelector('div.bottomlink-menu-section')!.textContent;\r\n const path = `${level_1}_${level_2_bottom}`;\r\n if (!(path in paths) && level_2_bottom !== '') {\r\n paths.push(path);\r\n }\r\n }\r\n } else {\r\n const path = li_1.textContent!;\r\n if (!(path in paths)) {\r\n paths.push(path);\r\n }\r\n }\r\n });\r\n } else {\r\n const menu_nav = document.querySelectorAll('nav.ms-nav.mobile-vp.mobile-view')[1];\r\n Array.from(menu_nav?.children!).forEach(li_1 => {\r\n if (li_1?.childElementCount! > 0) {\r\n const level_1 = li_1.querySelector('button.drawer__button.msc-btn.btn-secondary.btn-block')!.textContent;\r\n if (li_1.getElementsByTagName('button')[0].getAttribute('aria-expanded') === 'true') {\r\n if (li_1.querySelectorAll('button.drawer__button.msc-btn.btn-secondary.btn-block').length > 1) {\r\n Array.from(li_1?.querySelectorAll('div.drawer.ms-nav__drawer')!).forEach(li_2 => {\r\n const level_2 = li_2.querySelector('button.drawer__button.msc-btn.btn-secondary.btn-block')!.textContent;\r\n Array.from(li_2.querySelectorAll('a.ms-nav__list__item__link')!).forEach(li_3 => {\r\n const level_3 = li_3.textContent;\r\n const path = `${level_1}_${level_2}_${level_3}`;\r\n if (!(path in paths)) {\r\n paths.push(path);\r\n }\r\n });\r\n });\r\n const elements = li_1.children[1]!.querySelectorAll('a.ms-nav__list__item__link')!;\r\n const level_2_bottom = elements[elements.length - 1].textContent;\r\n const path = `${level_1}_${level_2_bottom}`;\r\n if (!(path in paths) && level_2_bottom !== '') {\r\n paths.push(path);\r\n }\r\n } else {\r\n Array.from(li_1.querySelectorAll('a.ms-nav__list__item__link')).forEach(li_2 => {\r\n const level_2 = li_2.textContent;\r\n const path = `${level_1}_${level_2}`;\r\n if (!(path in paths)) {\r\n paths.push(path);\r\n }\r\n })\r\n }\r\n }\r\n } else {\r\n const path = li_1.textContent!;\r\n if (!(path in paths)) {\r\n paths.push(path);\r\n }\r\n }\r\n });\r\n }\r\n\r\n const clicked_path = paths.find(path => path.endsWith(option.linkText ?? 'eb4cd3f6'));\r\n if (clicked_path) {\r\n window.dataLayer?.push?.({\r\n 'event': 'gaEvent',\r\n 'eventCategory': 'menu',\r\n 'eventAction': 'click',\r\n 'eventLabel': clicked_path\r\n });\r\n }\r\n }\r\n\r\n private _layout2022renderLinkMenuItem(\r\n option: IMenuItemData,\r\n index?: number,\r\n hoverEffect: boolean = true,\r\n isParent: boolean = false,\r\n setSize?: number,\r\n posinset?: number\r\n ): JSX.Element | null {\r\n const { Link, isMobileView } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n {\r\n this.sendEventGA(option, isMobileView);\r\n onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\r\n }}\r\n >\r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render promotional link.\r\n * @param linkText -Link text.\r\n * @param linkUrl -Link url.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render span menu item.\r\n * @param option -Single Menu Item.\r\n * @param index -Index.\r\n * @param isParent -Is parent menu.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render menu.\r\n * @param level -Menu level.\r\n * @param menuOptions -Menu lists.\r\n * @param currentItem -Menu current.\r\n * @param submenu -Mneu has submenu or not.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean, bottomLinkAvail?: boolean, bottomLink?: JSX.Element | null): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\r\n const categoryImageDisplay =\r\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n const promotionalContentDisplay =\r\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass =\r\n this.currentLevel > NavMenuConstants.two || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n\r\n return (\r\n \r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n
\r\n {categoryImageDisplay &&\r\n ArrayExtensions.hasElements(categoryImages) &&\r\n categoryImages.map(item => (\r\n \r\n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n {promotionalContentDisplay &&\r\n this._layout2022renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
\r\n {bottomLinkAvail ?\r\n (<>\r\n
\r\n
\r\n {bottomLink}\r\n
\r\n )\r\n : <> \r\n\r\n }\r\n\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to handle dropdwon change.\r\n * @param data -Menuitem data.\r\n * @param parentId -Menu parent.\r\n * @returns Jsx element.\r\n */\r\n private readonly _layout2022handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n if (this.props.showCategoryImage) {\r\n this._layout2022updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._layout2022resetFocus();\r\n };\r\n\r\n /**\r\n * Method to call when focus lost from menu.\r\n */\r\n private readonly _layout2022resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _layout2022handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n this.setState({\r\n activeMenu: undefined,\r\n categoryImage: null\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle close submenu event.\r\n */\r\n private _layout2022closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined });\r\n }\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param event -HTML event.\r\n */\r\n private readonly _layout2022escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n if (!this.props.isMobileView) {\r\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\r\n for (const item of navDrawerList) {\r\n const navDrawerButton = item.firstChild as HTMLButtonElement;\r\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\r\n navDrawerButton.focus();\r\n }\r\n }\r\n }\r\n this._layout2022closeSubmenu();\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param drawerState -HTML event.\r\n */\r\n private readonly _layout2022onDrawerChange = (drawerState: IDrawerState) => {\r\n const { drawerKeyValue } = this.state;\r\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\r\n const newPair = { [drawerText]: drawerState.isOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _layout2022updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n ////////////////////////////////////////\r\n ////////// CLASS///////////////////////\r\n //////////////////////////////////\r\n}\r\nexport default NavigationMenuView;\r\n","import { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n// import { getTelemetryObject } from '@msdyn365-commerce-modules/utilities';\r\n// import { constructViewportInformationForImage } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n /* averageRating,\r\n filterByDropdown, */\r\n moduleProps,\r\n /* noReviewsMessage, */\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n /* refineReviewsProps, */\r\n reportReviewModal,\r\n /* reviewsListProps, */\r\n reviewCards,\r\n /* reviewCount, */\r\n reviewModal,\r\n /* sortByDropdown, */\r\n state,\r\n userReview\r\n } = props;\r\n\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n // const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName ?? '', 'Recensioni', props.telemetry);\r\n\r\n const _toggleReviewModal = () => {\r\n document.body.style.overflowY = modalOpen ? 'scroll' : 'hidden';\r\n setModalOpen(!modalOpen);\r\n };\r\n\r\n // @ts-ignore\r\n const averageRating = props.data.ratingsSummary.result.averageRating ?? 0;\r\n // @ts-ignore\r\n const buttonLabel = props.resources.product_review_list_button_label ?? '';\r\n // @ts-ignore\r\n const title = props.resources.reviewListLabel ?? '';\r\n\r\n React.useEffect(() => {\r\n const page_summary = document.getElementsByClassName('msc-average-rating-container')[0];\r\n const modal_summary = document.getElementsByClassName('msc-average-rating-container')[1];\r\n if (page_summary && modal_summary) {\r\n modal_summary.innerHTML = page_summary.innerHTML;\r\n }\r\n });\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n /* return {noReviewsMessage}; */\r\n /* return (\r\n \r\n
\r\n
); */\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {/* {averageRating}\r\n {reviewCount} */}\r\n {/* { reviewCards.length === 0 ?\r\n null : \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n } */}\r\n {/* {React.createElement(React.Fragment, null,\r\n modalToggle,\r\n createReviewModal(reviewModal, moduleProps)))} */}\r\n {/* \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n */}\r\n
\r\n
e.stopPropagation()}>\r\n
\r\n {title}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal, moduleProps)}\r\n {createReportModal(reportReviewModal, state)}\r\n
\r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.name}\r\n {props.date}\r\n {props.rating}\r\n \r\n \r\n \r\n {/* {props.reviewTitle} */}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {/* {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike} */}\r\n {props.edit}\r\n {/* {props.report} */}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISearchResultModalViewProps } from '@msdyn365-commerce-modules/search-result-container';\r\nimport {\r\n ICategoryHierarchyViewProps,\r\n IRefineMenuViewProps,\r\n ISearchResultContainerViewProps,\r\n ISortByViewProps,\r\n ITitleViewProps,\r\n ISearchResultContainerData\r\n} from '@msdyn365-commerce-modules/search-result-container';\r\n\r\nimport { addPickAndMixListAsInfocodes_CAPAsync } from '../../../actions/DataActionExtension.g';\r\nimport { ISearchResultContainerProps as ISearchResultContainerExtentionProps } from '../definition-extensions/search-result-container.ext.props.autogenerated';\r\nimport Container from 'reactstrap/lib/Container';\r\nimport Row from 'reactstrap/lib/Row';\r\n\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { ICartViewProps } from '@msdyn365-commerce-modules/cart';\r\n\r\n\r\nconst SearchResultContainerView: React.FC> = props => {\r\n const {\r\n SearchResultContainer,\r\n products,\r\n pagination,\r\n ProductsContainer,\r\n ProductSectionContainer,\r\n choiceSummary,\r\n // isMobile,\r\n modalToggle,\r\n searchResultModal,\r\n TitleViewProps,\r\n refineMenu,\r\n categoryHierarchy,\r\n sortByOptions,\r\n CategoryNavContainer,\r\n RefineAndProductSectionContainer,\r\n errorMessage,\r\n FeatureSearchContainer,\r\n similarLookProduct,\r\n config,\r\n data\r\n } = props;\r\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\r\n const catPage =\r\n props.context &&\r\n props.context.request &&\r\n props.context.request.urlTokens &&\r\n props.context.request.urlTokens.categories &&\r\n props.context.request.urlTokens.categories[0];\r\n const { categoryH1Title, isSearchPage, displayTitle } = config;\r\n\r\n const refinerStatusCount = (props.data.listPageState.result && props.data.listPageState.result.activeFilters?.length) ? props.data.listPageState.result.activeFilters?.length : null;\r\n\r\n if (catPage === 'pick-mix') {\r\n React.useEffect(() => {\r\n const introCtn = document.getElementsByClassName('category-intro__ctn')[0];\r\n const intro = document.getElementsByClassName('category-intro')[0];\r\n introCtn.appendChild(intro);\r\n }, []);\r\n const localPm = typeof window !== 'undefined' && localStorage.getItem('pm_products');\r\n const localPmProds = localPm && localPm !== null ? localPm : JSON.stringify({});\r\n\r\n const pmProductsList = JSON.parse(localPmProds);\r\n //const cookiePmProducts = cookies.get('pm_products') === undefined ? {} : cookies.get('pm_products');\r\n // @ts-ignore\r\n props.context.pmProducts = pmProductsList;\r\n const [pmProducts, setPmProducts] = React.useState(pmProductsList);\r\n // @ts-ignore\r\n const initialTotalItems: number = Object.values(pmProducts).reduce((t, { Qty }) => Number(t) + Number(Qty), 0);\r\n // @ts-ignore\r\n const totalProducts = Object.values(pmProducts).map(tp => tp.Qty * tp.Price);\r\n const initialTotalPrice: number = Number(totalProducts.reduce((tp, qp) => tp + qp, 0));\r\n const [totalPrice, setTotalPrice] = React.useState(initialTotalPrice);\r\n const [totalItems, setTotalItems] = React.useState(initialTotalItems);\r\n const [pmCartMessage, setPmCartMessage] = React.useState({\r\n status: 'empty',\r\n message: props.resources.productSelectionSpaceText\r\n });\r\n const [openPmCart, setOpenPmCart] = React.useState(false);\r\n\r\n const cookiePMset = () => {\r\n typeof window !== 'undefined' && localStorage.setItem('pm_products', JSON.stringify(pmProducts));\r\n const localPm = localStorage && localStorage.getItem('pm_products');\r\n const localPmProds = localPm && localPm !== null ? localPm : JSON.stringify({});\r\n const pmProductsList = JSON.parse(localPmProds);\r\n setPmProducts(pmProductsList);\r\n };\r\n\r\n\r\n const updatePmCart = () => {\r\n setPmProducts(pmProductsList);\r\n };\r\n\r\n React.useEffect(() => {\r\n const wrapper = document.getElementsByClassName('ms-search-result-container__Products')[0];\r\n // @ts-ignore\r\n const handleButtonClick = event => {\r\n const isButton = event.target.nodeName === 'BUTTON';\r\n if (!isButton) {\r\n return;\r\n }\r\n const timer = setTimeout(() => {\r\n updatePmCart();\r\n }, 100);\r\n return () => {\r\n clearTimeout(timer);\r\n };\r\n };\r\n wrapper.addEventListener('click', handleButtonClick);\r\n return () => wrapper.removeEventListener('click', handleButtonClick);\r\n });\r\n\r\n function removeProductFromPmCart(RecordId: number | string): void {\r\n if (typeof RecordId === 'number') {\r\n setPmCartMessage({ status: 'empty', message: props.resources.productSelectionSpaceText });\r\n delete pmProducts[RecordId];\r\n cookiePMset();\r\n } else {\r\n typeof window !== 'undefined' && localStorage.setItem('pm_products', JSON.stringify({}));\r\n setPmCartMessage({ status: 'empty', message: props.resources.productSelectionSpaceText });\r\n setPmProducts({});\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n // @ts-ignore\r\n setTotalItems(Object.values(pmProducts).reduce((t, { Qty }) => Number(t) + Number(Qty), 0));\r\n // @ts-ignore\r\n const totalNewProducts = Object.values(pmProducts).map(tp => tp.Qty * tp.Price);\r\n setTotalPrice(totalNewProducts.reduce((tp, qp) => tp + qp, 0));\r\n }, [pmProducts]);\r\n\r\n const _addToCart = async () => {\r\n const currentCartState = await getCartState(props.context?.actionContext);\r\n const pickAndMixItems = Object.values(pmProducts);\r\n const productsInfo: {\r\n name: string;\r\n id: string;\r\n price: string;\r\n quantity: string;\r\n // dimension12: string;\r\n list: string;\r\n category: string;\r\n }[] = [];\r\n\r\n if (pickAndMixItems.length >= 1) {\r\n pickAndMixItems.forEach(data => {\r\n // @ts-ignore\r\n const dataPrice = parseFloat(data.Price).toFixed(2)\r\n productsInfo.push({\r\n //@ts-ignore\r\n 'name': data.Item,\r\n //@ts-ignore\r\n 'id': data.Description,\r\n 'price': dataPrice,\r\n //@ts-ignore\r\n 'quantity': data.Qty,\r\n //@ts-ignore\r\n // 'dimension12': data.Id,\r\n 'list': 'Pick&Mix',\r\n 'category': 'Pick&Mix'\r\n });\r\n //@ts-ignore\r\n localStorage.setItem(data.Id ?? '', 'Pick&Mix' + ';' + 'Pick&Mix');\r\n })\r\n }\r\n window.dataLayer?.push?.({\r\n 'event': 'addToCart',\r\n 'ecommerce': {\r\n //@ts-ignore\r\n 'currencyCode': window.___initialData___.requestContext.channel.Currency,\r\n 'add': {\r\n 'actionField': {\r\n 'list': 'Pick&mix',\r\n 'action': 'add',\r\n },\r\n 'products': productsInfo\r\n }\r\n }\r\n });\r\n pickAndMixItems.forEach(v => {\r\n // @ts-ignore\r\n delete v.PrimaryImageUrl;\r\n });\r\n //finally\r\n addPickAndMixListAsInfocodes_CAPAsync(\r\n { callerContext: props.context?.actionContext },\r\n JSON.stringify(pickAndMixItems),\r\n currentCartState.cart\r\n ).then(async res => {\r\n await currentCartState.refreshCart({});\r\n });\r\n\r\n removeProductFromPmCart('reset');\r\n setPmCartMessage({ status: 'success', message: props.resources.pmSuccessAddedToCartMessage });\r\n setTimeout(() => {\r\n setPmCartMessage({ status: 'empty', message: props.resources.productSelectionSpaceText });\r\n }, 4000);\r\n };\r\n // @ts-ignore\r\n const AddToCartButtons = ({ total }) => {\r\n if (total === 0) {\r\n return (\r\n <>\r\n \r\n {/* tslint:disable-next-line:jsx-no-lambda react-this-binding-issue */}\r\n\r\n
{pmCartMessage.message}
\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {/* tslint:disable-next-line:jsx-no-lambda react-this-binding-issue */}\r\n \r\n \r\n );\r\n };\r\n\r\n function mobileTriggerPmCart(): void {\r\n // tslint:disable-next-line:no-shadowed-variable\r\n setOpenPmCart(openPmCart => !openPmCart);\r\n openPmCart === true ? document.body.classList.remove('no-scroll-pick-mix') : document.body.classList.add('no-scroll-pick-mix');\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n {products}\r\n
\r\n
\r\n
\r\n

{props.resources.pickAndMixCartTitle}

\r\n \r\n <>\r\n
\r\n
\r\n
\r\n \r\n {totalItems}\r\n
\r\n
\r\n {props?.context.cultureFormatter.formatCurrency(totalPrice)}\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {Object.keys(pmProducts).map((keyName, i) => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{pmProducts[keyName]?.Item}
\r\n
Quantity: {pmProducts[keyName]?.Qty}
\r\n
\r\n {props?.context.cultureFormatter.formatCurrency(pmProducts[keyName]?.Price)}\r\n
\r\n
\r\n {pmProducts[keyName]?.Id}\r\n {pmProducts[keyName]?.Description}\r\n
\r\n
\r\n {/* tslint:disable-next-line:jsx-no-lambda */}\r\n removeProductFromPmCart(Number(keyName))}\r\n />\r\n
\r\n )\r\n })}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n // if (isMobile) {\r\n // return (\r\n // \r\n // {renderCategoryHierarchy(categoryHierarchy)}\r\n // {renderTitle(TitleViewProps)}\r\n // {choiceSummary}\r\n // {modalToggle}\r\n // {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\r\n // {similarLookProduct}\r\n // \r\n // {errorMessage}\r\n // {products}\r\n // \r\n // {pagination}\r\n // \r\n // );\r\n // }\r\n // return (\r\n // \r\n // \r\n // {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n // {TitleViewProps && renderTitleCount(TitleViewProps)}\r\n // \r\n // \r\n // {refineMenu && renderRefiner(refineMenu)}\r\n // \r\n // {TitleViewProps && renderTitle(TitleViewProps)}\r\n // {choiceSummary}\r\n // {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\r\n // {similarLookProduct}\r\n // \r\n // {errorMessage}\r\n // {products}\r\n // \r\n // {pagination}\r\n // \r\n // \r\n // \r\n // );\r\n\r\n React.useEffect(() => {\r\n let search_qParam = 'fallback_empty_search';\r\n if (props.context.request.query && props.context.request.query.q) {\r\n search_qParam = props.context.request.query.q;\r\n // Saving the user's expectations -- What were they actually searching for?\r\n }\r\n\r\n // @ts-ignore\r\n if (products && products.props.products.length === 0) {\r\n if (window.dataLayer) {\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'site_search',\r\n eventAction: 'unexpected_behaviour',\r\n eventLabel: search_qParam\r\n });\r\n }\r\n }\r\n }, []); // Empty dependency list = this only gets executed once\r\n /*\r\n Bing:\r\n\r\n The useEffect hook in React is designed to run after every render of the component.\r\n However, if you pass an empty array [] as the second argument to useEffect, it will only run once after the initial render,\r\n similar to the componentDidMount lifecycle method in class components.\r\n This is because the second argument to useEffect is an array of dependencies, and the effect will only re-run if one of the dependencies changes.\r\n By passing an empty array, you are telling React that the effect has no dependencies and should not re-run after the initial render2.\r\n */\r\n\r\n return (\r\n <>\r\n {/* TODO invert conditions */}\r\n {(displayTitle || false) && categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy, data, config.categoryH1Title)}}\r\n {/* TODO change categorytitle */}\r\n {TitleViewProps && renderTitle(TitleViewProps, displayTitle || false, isSearchPage || false, categoryH1Title)}\r\n\r\n \r\n \r\n
\r\n {modalToggle}\r\n {refinerStatusCount ? (
{refinerStatusCount}
) : null}\r\n
\r\n
{TitleViewProps.title.titleCount}
\r\n
\r\n
\r\n \r\n {createSearchResultModal(searchResultModal, refineMenu, choiceSummary, sortByOptions, isRecoSearchPage)}\r\n \r\n
\r\n {refineMenu && renderRefiner(refineMenu)}\r\n
\r\n \r\n \r\n {TitleViewProps.title.titleCount}\r\n
{sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}
\r\n
\r\n
{choiceSummary}
\r\n {similarLookProduct}\r\n \r\n {errorMessage}\r\n {products}\r\n {pagination}\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\nconst createSearchResultModal = (\r\n modalProps: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n choiceSummary_element: React.ReactNode,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string\r\n): JSX.Element => {\r\n return React.cloneElement(\r\n modalProps.modal,\r\n {},\r\n modalProps.modalHeader,\r\n createModalBody(modalProps, refineMenu, choiceSummary_element, sortByDropDown, isRecoSearchPage),\r\n modalProps.modalFooter\r\n );\r\n};\r\n\r\nconst createModalBody = (\r\n props: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n choiceSummary_element: React.ReactNode,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string,\r\n): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), choiceSummary_element, renderRefiner(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {refiners.map((submenu, index) => (\r\n {submenu}\r\n ))}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown && !isRecoSearchPage) {\r\n return {sortByDropDown};\r\n }\r\n return null;\r\n};\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps, dataObj: ISearchResultContainerData, titleOvverride?: string): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n const currentCategory = dataObj.categoryHierarchy.result;\r\n if (categoryHierarchyList && categoryHierarchyList.length > 1) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {!categoryHierarchyList[index + 1] && titleOvverride ?\r\n (\r\n {' '}\r\n {titleOvverride || \"\"}{' '}\r\n ) : category\r\n }\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps, displayTitle: boolean, renderPrefix: boolean, titleOvverride?: string): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title && displayTitle) {\r\n return (\r\n \r\n

\r\n {renderPrefix ? title.titlePrefix : null}\r\n {titleOvverride ? titleOvverride : title.titleText}\r\n

\r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\n\r\nexport default SearchResultContainerView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps {\n AccountAddressTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component.\n * @extends {React.PureComponent>}\n */\nclass AccountAddressTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountAddressTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n const { address } = data;\n const addressCount = (address && address.result && address.result.length) || 0;\n const accountAddressTileDescription =\n addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n const description = format(accountAddressTileDescription, addressCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountAddressTile: {\n moduleProps: this.props,\n className: classnames('ms-account-address-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountAddressTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC = props => {\n const { AccountAddressTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountAddressTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountAddressTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountAddressTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountAddressTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-address-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountAddressTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountInvoiceTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-invoice-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountInvoiceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountInvoiceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Msdyn365, {\n ContentEditableEvent,\n generateImageUrl,\n getCatalogId,\n getUrlSync,\n Image,\n RichTextComponent,\n Text\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ICatalogPickerData } from './catalog-picker.data';\nimport { ICatalogPickerProps } from './catalog-picker.props.autogenerated';\n\n/**\n * ICatalogPickerViewProps.\n */\nexport interface ICatalogPickerViewProps extends ICatalogPickerProps {\n catalogPicker: IModuleProps;\n heading: React.ReactNode;\n paragraph: React.ReactNode;\n catalogs: ReactNode;\n}\n\n/**\n * CatalogPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CatalogPicker extends React.PureComponent> {\n private static readonly _moduleClassName = 'ms-catalog-picker';\n\n public constructor(props: ICatalogPickerViewProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const catalogPickerHeading = heading && (\n \n );\n\n const isCatalogsAvailable: boolean = ArrayExtensions.hasElements(this.props.data.catalogs?.result);\n const catalogPickerParagraph = paragraph && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n catalogPicker: {\n moduleProps: this.props,\n className: CatalogPicker._moduleClassName\n },\n heading: catalogPickerHeading,\n paragraph: catalogPickerParagraph,\n catalogs: isCatalogsAvailable ? this._renderCatalogPicker() : ''\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n private _renderCatalogPickerButton(item: ProductCatalog): React.ReactNode {\n const catalogId = item.RecordId;\n const currentCatalogId = getCatalogId(this.props.context.request);\n if (currentCatalogId === catalogId) {\n return
{this.props.resources.currentCatalogText}
;\n }\n let linkToCatalog = '';\n if (Msdyn365.isBrowser) {\n const catalogUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\n const fullUrl = new URL(catalogUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n linkToCatalog = fullUrl.href;\n }\n return (\n \n {this.props.resources.changeCatalogButtonText}\n \n );\n }\n\n private _renderCatalogPicker(): React.ReactNode {\n const catalogs = this.props.data.catalogs?.result;\n\n const isBrowser = Msdyn365.isBrowser;\n\n return (\n
\n {catalogs?.map(item => {\n const reactKey = `${JSON.stringify(item)}-${String(isBrowser)}`;\n const image: MediaLocation | undefined = ArrayExtensions.firstOrDefault(item.Images);\n return (\n \n

{item.Name}

\n
\n \n
\n {this._renderCatalogPickerButton(item)}\n
\n
\n
\n );\n })}\n
\n );\n }\n}\n\nexport default CatalogPicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n return 'xs';\n }\n}\n\nexport default SitePicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IMediaGalleryThumbnailItemViewProps,\n IMediaGalleryThumbnailsViewProps,\n IMediaGalleryViewProps\n} from '@msdyn365-commerce-modules/media-gallery';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Render the thumbnail item images.\n * @param thumbnail - The carousel thumbnail line props.\n * @returns Return HTML having thumnailcontainer props with image.\n */\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\n\n return {Picture};\n};\n\n/**\n * Gets the thumbnail item to display media gallery images.\n * @param image - The media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param imageId - Image id.\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render images.\n */\nconst GetThumbnailItemComponent = (\n image: IImageData,\n imageSettings: IImageSettings,\n imageId: number,\n modifiedActiveIndex: number,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(props.data.product.result.ItemId, props.context.request.apiSettings);\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n\n /**\n * OnClick method of media gallery item.\n */\n const onClick = () => {\n props.callbackToggle?.();\n props.callbackThumbnailClick?.(imageId);\n props.state.activeIndex = imageId;\n };\n\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n /**\n * Keydown event of media gallery item.\n * @param event - React.KeyboardEvent.\n */\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCodes.Enter) {\n event.preventDefault();\n onClick();\n }\n };\n const defaultIndex = 0;\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'presentation',\n key: imageId\n },\n Picture: (\n \n \n \n \n \n \n \n \n )\n };\n};\n\n/**\n * Gets the empty thumbnail item to display media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render empty images.\n */\nconst GetEmptyThumbnailItemComponent = (\n imageSettings: IImageSettings,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(props.data.product.result.ItemId, props.context.request.apiSettings);\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: 'ms-media-gallery__thumbnail-item',\n role: 'tab',\n tabIndex: 0,\n key: 0,\n 'aria-label': '',\n 'aria-selected': true\n },\n Picture: (\n \n )\n };\n};\n\n/**\n * Update media gallery items method.\n * @param items - The media gallery thumbnail item view props.\n * @returns The IImageData array.\n */\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\n return items?.map(item => {\n return {\n altText: item.Picture.props.altText,\n src: item.Picture.props.src\n };\n });\n};\n\nconst defaultThumbnailImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\n/**\n * Render the Media gallery thumbnails to represent images in grid view.\n * @param thumbnails - The thumbnail view props.\n * @param props - The media gallery view props.\n * @returns - The single slide carousel component to render as media gallery image.\n */\nconst renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps, props: IMediaGalleryViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\n const { state, Thumbnails } = props;\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\n\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty'\n ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)]\n : // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\n mediaGalleryItems?.map((item: IImageData, id: number) =>\n GetThumbnailItemComponent(item, defaultThumbnailImageSettings, id, state.activeIndex, props)\n );\n\n return (\n \n {items?.map(renderThumbnailItem)}\n \n );\n};\n\n/**\n * Render the Media gallery items using viewprops.\n * @param props - The media gallery view props.\n * @returns The media gallery module wrapping up images node.\n */\nconst mediaGalleryView: React.FC = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\n return (\n \n \n {Modal}\n {renderThumbnails(Thumbnails, props)}\n \n );\n};\n\nexport default mediaGalleryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListData,\n IReviewsListResources,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\n\n/**\n * Build Review Card.\n * @param props - Review Card ViewProps.\n * @param resources - Resource Strings.\n * @param isUserReview - User review flag.\n * @returns JSX Element.\n */\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\n return (\n \n \n
\n {props.rating}\n {props.date}\n
\n {props.name}\n
\n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {isUserReview ? undefined :

{resources.wasReviewHelpfulText}

}\n {props.like}\n {props.dislike}\n {props.edit}\n
\n
\n
\n );\n};\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Build Review modal.\n * @param props - Review list ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * Build Review modal.\n * @param props - Review modal ViewProps.\n * @param state - Review List State.\n * @returns JSX Element.\n */\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\n/**\n * ReviewsList view.\n * @param props - Ratings ReviewsList ViewProps.\n * @returns ReviewsList view module.\n */\nconst ReviewsListview: React.FC> = props => {\n const {\n filterByDropdown,\n heading,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n sortByDropdown,\n state,\n userReview,\n resources\n } = props;\n\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {heading}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview, resources, true)}\n {reviewCards.map(review => {\n return buildReviewCard(review, resources, false);\n })}\n \n {!ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(props)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nexport default ReviewsListview;\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: global.globalThis !== global }, {\n globalThis: global\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n"],"names":["StoreType","Map","React","constructor","props","super","pushpinMap","globalThis","selectedPushPin","undefined","mapRef","handleHeadingChange","event","this","config","heading","text","target","value","_initMap","context","actionContext","requestContext","channel","data","storeSelectorStateManager","result","isMapApiLoaded","map","Microsoft","Maps","current","credentials","BingMapsApiKey","pushpinAccessible","labelOverlay","LabelOverlay","hidden","customMapStyle","elements","countryRegion","labelVisible","version","_updateMapForOrgUnitChanges","_this$props$data$stor","_storeSelectorStateMa","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","positionUser","lastInlineShownStoreInfo","fistStoreLocation","layers","clear","storeLocationList","filter","store","OrgUnitAvailability","index","unitStoreInfo","entries","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","Latitude","Longitude","OrgUnitNumber","Location","isSelectedLocation","storeType","OrgUnitName","startsWith","Retailer","VenchiStore","options","_getPushpinOptions","pushpin","Pushpin","Events","addHandler","handleClickEventOnPushPinStore","set","currentLocation","boundLocations","setView","bounds","LocationRect","fromLocations","padding","pushpinObject","getZoom","center","getLocation","zoom","fromShapes","Array","from","values","pushpinData","loadModule","size","pushpins","clusterLayer","ClusterLayer","clusteredPinCallback","customizeClusteredPin","gridSize","setOptions","clusterClicked","insert","_updateMapForSelectedStore","_this$props$data$stor2","_getPushpinColorAndIcon","currentPushpin","get","_this$clusterLayer","getDisplayedPushpins","includes","cluster","e","containedPushpins","locs","i","len","length","push","orgUnitNumber","setSelectedStoreLocationId","color","selectionColor_retailer","color_retailer","selectionColor_store","color_store","icon","title","componentDidMount","_this$props$data$stor3","telemetry","BingMapsEnabled","when","_this$props$data$stor4","setMapModuleLoaded","_this$props$data$stor5","reaction","_this$props$data$stor6","loadMapApi","_this$props$data$stor7","_this$props$context","key","lang","locale","market","ChannelCountryRegionISOCode","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$stor10","error","render","className","shouldDisplayMap","listMapViewState","displayMap","viewProps","_objectSpread","ModuleProps","tag","moduleProps","classname","show","Header","headerProps","Msdyn365","Object","assign","editProps","onEdit","request","MapProps","ref","renderView","__decorate","observable","observer","MapHeader","_ref","Node","_ref2","Module","layout","HeadingTag","layoutClassNames","layoutNames","wideLayout","compact","getLayoutClassName","AccountLoyalty","cardNumber","joinDate","points","displayJoinDate","displayAppleWallet","displayGoogleWallet","appleWalletBtnImage","googleWalletBtnImage","pointsExpirationReminder","loyaltyTiersLink","walletLoyaltyProgramName","loyaltyTierLabel","loyaltyCardLabel","loyaltyCardLabel_CL","availablePointsLabel","availablePointsLabel_CL_before","availablePointsLabel_CL_after","viewLoyaltyPageText","resources","firstLoyaltyGroup","loyaltyCard","LoyaltyGroups","highestTierId","HighestActiveLoyaltyCardTier","tierName","LoyaltyCardTiers","tier","RecordId","TierId","user_email","user","emailAddress","user_card_number","points_numbers","split","tierClass","apple_wallet_check","src","altText","google_wallet_check","programString","isWideOrCompactLayout","Container","Row","href","alt","height","endsWith","classnames","linkUrl","destinationUrl","linkText","AccountPreferencesSection","accountPreferences","personalization","extraPreferences","AccountPreferenceSection","preferenceSecton","accountPreference","description","buttonWrapper","buttonYesText","button","buttonNoText","AccountProfileSection","_ref3","AccountProfileItem","links","AccountProfile","accountProfileWrapper","emailSection","nameSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","document","getElementsByClassName","innerHTML","textGenericMarketing","textProfiling","textThirdParty","addEventListener","bd_input","canonicalDomain","setAttribute","_renderCollapseMenu","mobileMenuCollapsed","Divider","MobileMenuLinksContainer","_props$slots9","_props$slots10","_props$slots7","_props$slots8","window","body","classList","remove","add","layout2022","Collapse","isOpen","_renderReactFragment","search","menuBar","_renderMobileAccountBlock","slots","countrySelector","renderCustomerName","accountInformation","customer","FirstName","Name","renderForMobile","AccountInfoDropdownParentContainer","signOutLink","signInLink","accountLinks","accountClassName","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","link","_renderAccountBlock","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","items","slot","_renderStoreLocatorButton","_props$config$storeLo","storeLocatorPageLink","storeLocatorLabel","Button","scrolled","setScrolled","handleScroll","offset","scrollY","menuTopDesktop","desktopMenuTop","menuTopMobile","appendChild","HeaderTag","HeaderContainer","HeaderTopBarContainer","_props$slots3","_props$slots4","_props$slots5","_props$slots6","_props$slots","_props$slots2","preferredStore","logo","wishListIconDesktop","cartIcon","navIcon","header_gwp","siteOptions","NavMenuConstants","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","promotionalImage","supportedLevel","four","_handleDropdownToggle","parentId","isMobileView","setState","activeMenu","id","mobileViewLabelText","parentMenu","state","_resetFocus","setTimeout","menuNode","focus","_handleClickOutside","contains","_escFunction","keyCode","_closeSubmenu","_layout2022handleDropdownToggle","showCategoryImage","_layout2022updateCategoryImage","imageSource","_layout2022resetFocus","_layout2022handleClickOutside","categoryImage","_layout2022escFunction","navDrawerList","childNodes","item","navDrawerButton","firstChild","getAttribute","_layout2022closeSubmenu","_layout2022onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","categoryImageSource","option","ArrayExtensions","hasElements","promotionalContent","image","additionalProperties","bind","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","menuItemData","subMenu","imagesource","MsDyn365","isBrowser","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","Navigation","menuItem","posinset","_layout2022renderDrawerMenu","_renderDrawerMenu","MenuList","tabIndex","_layout2022renderDisplay","_renderDisplay","_renderDrawer","_renderLinkMenuItem","_renderLinkText","menuSubItem","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","_getFromSubMenu","_createMenuItemList","forEach","subMenus","found","_renderSubMenu","_renderButtonMenuItem","levelClassName","menuOptions","idx","hasOptions","toString","_renderMenu","onClick","onFocus","Link","contentAction","etext","attributes","getTelemetryAttributes","TODO","onTelemetryClick","Span","level","currentItem","DivContainer","setSize","_layout2022renderDrawer","_layout2022renderLinkMenuItem","firstLevel","_this$props$config$cm","_bottomLinkData$","_bottomLinkData$2","keyValue","keys","isDrawerOpen","colProps","bottomLinkData","cmsNavItems","navItem","bottomAllLink","bottomLinkText","bottomLinkUrl","shouldOpenNewTab","role","toggleButtonProps","ariaLabel","onToggle","collapseProps","_layout2022renderLinkText","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_layout2022renderDrawerLink","_layout2022renderSpanMenuItem","menuItemDatum","_layout2022getFromSubMenu","_layout2022createMenuItemList","_layout2022renderSubMenu","_layout2022renderButtonMenuItem","IsSubMenu","nameParentElement","_this$props$config$cm2","_bottomLinkData$3","_bottomLinkData$4","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","bottomLinkDataFiltered","bottomLinkPresent","bottomMenuLink","haveSubmenu","Math","round","_layout2022renderMenu","sendEventGA","paths","menu_nav","querySelectorAll","children","li_1","childElementCount","level_1","querySelector","textContent","getElementsByTagName","li_2","level_2","li_3","level_3","path","level_2_bottom","menu","level_2_class","clicked_path","find","_option$linkText","_window$dataLayer","_window$dataLayer$pus","dataLayer","call","isParent","arguments","_layout2022renderPromotionalLink","submenu","bottomLinkAvail","bottomLink","_this$state$categoryI","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","two","one","categoryImages","StringExtensions","isNullOrWhitespace","imagesContainerKey","join","_item$src","_item$additionalPrope","getCategoryImage","alttext","categoryImageUrl","generateImageUrl","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_props$config$categor","imageData","gridSettings","imageSettings","categoryImageSettings","loadFailureBehavior","buildReviewCard","cardProps","name","date","rating","cardBodyProps","reviewProps","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","edit","createReviewModal","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","_props$data$ratingsSu","_props$resources$prod","_props$resources$revi","noReviewsWithFilterMessage","pageControls","reportReviewModal","reviewCards","reviewModal","userReview","modalOpen","setModalOpen","_toggleReviewModal","style","overflowY","buttonLabel","ratingsSummary","averageRating","product_review_list_button_label","reviewListLabel","page_summary","modal_summary","isFilterApplied","display","stopPropagation","review","createSearchResultModal","modalProps","refineMenu","choiceSummary_element","sortByDropDown","isRecoSearchPage","createModalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","dataObj","titleOvverride","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","currentCategory","categoryHierarchy","category","_currentCategory$inde","Url","renderTitle","displayTitle","renderPrefix","TitleContainer","titlePrefix","titleText","_props$context$action","_props$data$listPageS","_props$data$listPageS2","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","errorMessage","FeatureSearchContainer","similarLookProduct","query","recommendation","catPage","urlTokens","categories","categoryH1Title","isSearchPage","refinerStatusCount","listPageState","activeFilters","introCtn","intro","localPm","localStorage","getItem","localPmProds","JSON","stringify","pmProductsList","parse","pmProducts","setPmProducts","initialTotalItems","reduce","t","Qty","Number","totalProducts","tp","Price","initialTotalPrice","qp","totalPrice","setTotalPrice","totalItems","setTotalItems","pmCartMessage","setPmCartMessage","status","message","productSelectionSpaceText","openPmCart","setOpenPmCart","cookiePMset","setItem","updatePmCart","removeProductFromPmCart","wrapper","handleButtonClick","nodeName","timer","clearTimeout","totalNewProducts","_addToCart","async","_props$context","_props$context2","currentCartState","getCartState","pickAndMixItems","productsInfo","_data$Id","dataPrice","parseFloat","toFixed","Item","Description","Id","___initialData___","Currency","v","PrimaryImageUrl","addPickAndMixListAsInfocodes_CAPAsync","callerContext","cart","then","refreshCart","pmSuccessAddedToCartMessage","AddToCartButtons","total","disabled","addToCartButtonText","removeAllButtonText","pickAndMixCartTitle","cultureFormatter","formatCurrency","keyName","_pmProducts$keyName","_pmProducts$keyName2","_pmProducts$keyName3","_pmProducts$keyName4","_pmProducts$keyName5","search_qParam","_window$dataLayer2","_window$dataLayer2$pu","eventCategory","eventAction","eventLabel","fluid","titleCount","AccountAddressTile","handleLinkTextChange","linkIndex","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","format","LinksComponent","onTextChange","DescriptionComponent","_mapEditableLinks","linkdata","editableLinks","editableLink","openInNewTab","AccountInvoiceTileDescription","AccountInvoiceTile","_data$customerBalance","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","CatalogPicker","handleTextChange","handleParagraphChange","paragraph","_heading$tag","_this$props$data$cata","catalogPickerHeading","Text","_moduleClassName","isCatalogsAvailable","catalogs","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","catalogPicker","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","getUrlSync","fullUrl","URL","location","searchParams","changeCatalogButtonText","_this$props$data$cata2","reactKey","String","firstOrDefault","Images","Image","Uri","galleryImageSettings","AltText","CatalogPickerViewFunctionComponent","FooterItem","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","ariaHiddenAttr","shouldSkipToMainImage","FooterItemView","_renderElement","SitePicker","_cookieName","_cookieExpirationInSeconds","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","_updateViewport","viewport","device","Type","isMobile","_document","_document2","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","preventDefault","currentTarget","cookies","isConsentGiven","cookieConfig","maxAge","xl","_image$imageSettings","_item$siteRedirectUrl","siteImage","imageProps","siteRedirectUrl","siteName","_getViewport","innerWidth","computed","_renderSitePicker","_renderSiteOptionsList","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","_props$context$app$co2","_props$config$thumbna2","fallbackImage","emptyPlaceHolderImage","app","placeholderImageName","product","getFallbackImageUrl","ItemId","thumbnailImageSettings","imageFallbackOptimize","skipImageValidation","fallBackSrc","defaultThumbnailImageSettings","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","imageId","modifiedActiveIndex","_props$context$app$co","_props$config$thumbna","_props$callbackToggle","_props$callbackThumbn","callbackToggle","callbackThumbnailClick","activeIndex","handleKeyDown","Enter","onKeyDown","shouldUseOptimizedImage","bypassHideOnFailure","fullScreenTitleText","CarouselProps","MediaGallery","Modal","isUserReview","reviewTitle","wasReviewHelpfulText","like","dislike","renderProductDescription","_props$data$product$r","primaryImageSource","imageUrl","renderProductImage","filterByDropdown","noReviewsMessage","refineReviewsProps","reviewsListProps","sortByDropdown","selectRatingLabel","reviewTitleLabel","reviewTextLabel","$","global","forced"],"sourceRoot":""}