{"version":3,"file":"static/js/9.4534e25da33cc2e045ee.chunk.js","mappings":";qTAcA,MAEA,EAF2DA,IAAA,IAAC,UAAEC,EAAS,KAAEC,GAAMF,EAAA,OAAKG,EAAAA,cAAA,QAAMF,UAAWA,GAAYC,ykBCsB1G,IAAKE,GAAZ,SAAYA,GACRA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,yBAJJ,CAAYA,IAAAA,EAA6B,KAoCzC,IAAMC,EAAN,cAAuCF,EAAAA,UA6CnCG,YAAYC,GACRC,MAAMD,GA3CU,KAAAE,sBAAgC,EAEhC,KAAAC,cAAwB,EAEpC,KAAAC,UAAoB,EAkBX,KAAAC,mBAA6B,yCAE7B,KAAAC,gBAA0B,KAE1B,KAAAC,iBAA2B,KAE3B,KAAAC,gBAA0B,MAE1B,KAAAC,iBAA2B,MAE3B,KAAAC,gBAA0B,IAE1B,KAAAC,mBAA6B,GAE7B,KAAAC,eAAyB,GAEzB,KAAAC,6BAAuC,+DAEhD,KAAAC,mCAA6C,EA8DpC,KAAAC,kBAAoB,KAAyB,IAAAC,EAAAC,EAC1D,MAAM,OAAEC,EAAM,KAAEC,EAAI,UAAEC,GAAcC,KAAKrB,MAAMsB,oBACzCC,EAA8CJ,EAAKI,qBAAqBC,QAAU,GAClFC,EACDP,EAAOO,qCAAuCP,EAAOO,oCAAoC9B,MAAS,GAGjG+B,GAFiBR,EAAOS,gBAAkB,IACdC,MAAM,KACZC,KAAIC,IAC5B,MAAMC,EAA2CR,EAAqBS,MAClEC,IAAoC,IAAvBA,EAAUC,UAAsBD,EAAUE,KAAMC,sBAAwBN,EAAIM,uBACxF,CAAEC,SAAU,GACjB,OAAOhB,KAAKiB,iBAAiBP,MAE3BQ,EAAQlB,KAAKmB,OAASnB,KAAKmB,MAAMC,iBAAmB,EAC1DpB,KAAKqB,QAAQC,cAAcC,MAAQ,GAAGxB,EAAUyB,4BAA4BpB,IAC5E,MAAMgB,GAAiBK,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAmB1B,KAAKqB,SAC3ErB,KAAKqB,QAAQC,cAAcC,MAAQ,GAAGxB,EAAU4B,4BAA4BvB,IAC5E,MAAMwB,GAAiBH,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAmB1B,KAAKqB,SAC3ErB,KAAKqB,QAAQC,cAAcC,MAAQ,GAAGxB,EAAU8B,8BAA8BzB,IAC9E,MAAM0B,GAAmBL,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAmB1B,KAAKqB,SACvEU,EAAsBjC,EAAKiC,oBAAoB5B,OAErDH,KAAKP,mCACgB,QAAjBE,EAAAG,EAAKkC,oBAAY,IAAArC,GAAQ,QAARA,EAAjBA,EAAmBQ,cAAM,IAAAR,GAAqE,QAArEA,EAAzBA,EAA2BgB,MAAKsB,GAAWA,EAAQnB,OAASd,KAAKR,sCAA6B,IAAAG,OAAA,EAA9FA,EAAgGuC,aAAa,EAGjH,MAAMC,MACyC,QAA1CvC,EAAAI,KAAKrB,MAAMsB,oBAAoBmC,QAAQC,WAAG,IAAAzC,GAAQ,QAARA,EAA1CA,EAA4CC,cAAM,IAAAD,OAAA,EAAlDA,EAAoD0C,6CACpDP,MAAAA,OAAmB,EAAnBA,EAAqBQ,oBACrBvC,KAAKP,kCACV,OACIlB,EAAAA,cAAA,OACIiE,IAAKxC,KAAKyC,uBACVpE,UAAWqE,GAAAA,CAAW,iCAAkC,CACpD,0CAA2C1C,KAAKnB,wBAGnDgB,EAAOO,qCACJ7B,EAAAA,cAACoE,EAAAA,GAAI,CACDtE,UAAU,+CACVuE,IAAK/C,EAAOO,oCAAoCwC,KAAO,KACvDtE,KAAM8B,IAGbP,EAAOgD,WAAa7C,KAAK8C,eACzBjD,EAAOkD,eAAiB/C,KAAKgD,mBAC7B3C,EACAL,KAAKlB,cACFP,EAAAA,cAAA,OAAKF,UAAU,wCACXE,EAAAA,cAAA,SAAOF,UAAU,8CACZ2B,KAAKrB,MAAMsB,oBAAoBF,UAAUkD,kCAIpD/B,GACE3C,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAWqE,GAAAA,CAAW,6CAA8C,CAEhE,sDAAuDP,IACzD,aACU,GAAGpC,EAAUyB,4BAA4BpB,IACrDiD,QAASrD,KAAKsD,kBACdC,SAAUvD,KAAKwD,QACfC,MAAO1D,EAAUyB,yBACjBkC,SAAUvB,GACNf,GAEHrB,EAAUyB,0BAGlBN,GACG3C,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAWqE,GAAAA,CAAW,8CAA6C,aACvD3C,EAAU4B,yBACtB0B,QAASrD,KAAK2D,gBACdF,MAAO1D,EAAU4B,0BACbC,GAEH7B,EAAU4B,0BAGlBT,GACG3C,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAWqE,GAAAA,CAAW,gDAA+C,aACzD3C,EAAU8B,2BACtBwB,QAASrD,KAAK4D,mBACdH,MAAO1D,EAAU8B,4BACbC,GAEH/B,EAAU8B,8BAOd,KAAAiB,aAAe,KAC5B,MAAM,oBAAEe,GAAwB7D,KAAKrB,MAAMsB,oBAAoBJ,OACzDiE,EAAWD,GAAuBA,EAAoBvF,MAAS,GAC/DD,EAAayF,GAAWA,EAAQC,QAAQ,KAAM,MAAS,GACvD3C,EAAkBpB,KAAKmB,OAASnB,KAAKmB,MAAMC,iBAAmB,EACpE,OACI7C,EAAAA,cAAA,OAAKF,UAAWqE,GAAAA,CAAW,0CAA2C,kCAAkCrE,MACnGwF,GAAuBtF,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAU,kDAAkDuE,IAAI,KAAKtE,KAAMwF,IACzGvF,EAAAA,cAAA,SACIyF,KAAK,OAAM,aACCF,EACZzF,UAAWqE,GAAAA,CACP1C,KAAKhB,mBACL,uCACA,6CAA6CoC,IAC7C,uBAAuB/C,WAE3B4F,SAAUjE,KAAKkE,eACfC,MAAOnE,KAAKmB,MAAMiD,OAAS,GAC3BV,UAAWtC,IAEdpB,KAAKqE,aAAa,WAKd,KAAArB,iBAAmB,KAChC,MAAM,wBAAEsB,GAA4BtE,KAAKrB,MAAMsB,oBAAoBJ,OAC7DiE,EAAWQ,GAA2BA,EAAwBhG,MAAS,GACvED,EAAayF,GAAWA,EAAQC,QAAQ,KAAM,MAAS,GACvD3C,EAAkBpB,KAAKmB,OAASnB,KAAKmB,MAAMC,iBAAmB,EACpE,OACI7C,EAAAA,cAAA,OAAKF,UAAWqE,GAAAA,CAAW,0CAA2C,kCAAkCrE,MACnGiG,GAA2B/F,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAU,kDAAkDuE,IAAI,KAAKtE,KAAMwF,IAC7GvF,EAAAA,cAAA,SACIyF,KAAK,OAAM,aACCF,EACZzF,UAAWqE,GAAAA,CACP1C,KAAKhB,mBACL,uCACA,6CAA6CoC,IAC7C,uBAAuB/C,WAE3B4F,SAAUjE,KAAKuE,mBACfJ,MAAOnE,KAAKmB,MAAMqD,WAAa,GAC/Bd,UAAWtC,IAEdpB,KAAKqE,aAAa,eAKd,KAAApD,iBAAoBwD,IACjC,MAAMrD,EAAkBpB,KAAKmB,OAASnB,KAAKmB,MAAMC,iBAAmB,EAC9D/C,EAAaoG,EAAgB3D,MAAQ2D,EAAgB3D,KAAKiD,QAAQ,KAAM,MAAS,GACvF,OAAQU,EAAgBC,aAAeD,EAAgBC,YAAYC,OAC/D,KAAKnG,EAA8BoG,QACnC,KAAKpG,EAA8BqG,QAC/B,OAAO7E,KAAK8E,2BAA2BL,EAAiBpG,EAAW+C,GACvE,KAAK5C,EAA8BmE,KAC/B,OAAO3C,KAAK+E,yBAAyBN,EAAiBpG,EAAW+C,GACrE,KAAK5C,EAA8BwG,UAC/B,OAAOhF,KAAKiF,eAAeR,EAAiBpG,EAAW+C,GAC3D,QACI,OAAO,OAIF,KAAA0D,2BAA6B,CAC1CL,EACApG,EACA+C,KAEA,MAAMF,EAAQlB,KAAKmB,OAASnB,KAAKmB,MAAMC,iBAAmB,EACpD8D,EAAiBlF,KAAKmF,mBAAmBV,EAAgB3D,MAAQ,IACjEsE,EAAsBF,EAAepE,MAAQ,GACnD,OACIvC,EAAAA,cAAA,OAAKF,UAAWqE,GAAAA,CAAW,0CAA2C,kCAAkCrE,MACpGE,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAU,kDAAkDuE,IAAI,KAAKtE,KAAM8G,IACjF7G,EAAAA,cAAA,SACIyF,KAAK,OAAM,aACCS,EAAgB3D,KAC5BzC,UAAWqE,GAAAA,CACP1C,KAAKhB,mBACL,uCACA,6CAA6CkC,IAC7C,uBAAuB7C,WAE3B4F,SAAUjE,KAAKqF,mBAAmBZ,GAClCN,MAAOnE,KAAKmB,MAAMmE,WAAWb,EAAgB3D,MAAQ,KAAO,GAC5D4C,UAAWtC,EAAc,gBACV8D,EAAeK,cAAe,IAEhDvF,KAAKqE,aAAaI,EAAgB3D,MAAQ,MAKtC,KAAAiE,yBAA2B,CACxCN,EACApG,EACA+C,KAEA,MAAMoE,EAAyBf,EAAgBgB,gBAAiB,EAC1DvE,EAAQlB,KAAKmB,OAASnB,KAAKmB,MAAMC,iBAAmB,EACpD8D,EAAiBlF,KAAKmF,mBAAmBV,EAAgB3D,MAAQ,IACvE,IAAIsE,EAAsBF,EAAepE,MAAQ,GAIjD,GAHoB,aAAhBsE,IACAA,EAAcpF,KAAKrB,MAAMsB,oBAAoBF,UAAU2F,qBAEvDF,GAAiBf,EAAgBkB,mBAAoB,CACrD,MACMC,EAAuB,MADf5F,KAAKmB,MAAMmE,WAAWb,EAAgB3D,MAAQ,KAAO,IAEnE,OACIvC,EAAAA,cAAA,OAAKF,UAAWqE,GAAAA,CAAW,0CAA2C,kCAAkCrE,MACpGE,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAU,kDAAkDuE,IAAI,KAAKtE,KAAM8G,IACjF7G,EAAAA,cAAA,UACIsH,GAAI,kCAAkCxH,IAAW,aACrCoG,EAAgB3D,KAC5BzC,UAAWqE,GAAAA,CACP1C,KAAKhB,mBACL,wCACA,8CAA8CkC,IAC9C,kCAAkC7C,YAEtC4F,SAAUjE,KAAK8F,mBAAmBrB,GAClCf,UAAWtC,EAAc,gBACV8D,EAAeK,cAAe,GAE5CK,GACGrH,EAAAA,cAAA,UACIF,UAAU,gDACV0H,IAAI,QACJC,SAAUJ,EAAU,gBACLA,IAGtBnB,EAAgBkB,mBAAmBnF,KAAIyF,IACpC,MAAMD,EAAWC,EAAOC,mBAAqBlG,KAAKmB,MAAMmE,WAAWb,EAAgB3D,MAAQ,IAC3F,OACIvC,EAAAA,cAAA,UACIF,UAAU,gDACV0H,IAAKE,EAAOC,iBACZF,SAAUA,EAAQ,gBACHA,GAEdC,EAAOC,uBASpC,MAAqD,uBAAjDlG,KAAKrB,MAAMsB,oBAAoBJ,OAAOsG,QAA4D,aAAzB1B,EAAgB3D,KAErFvC,EAAAA,cAAA,OAAKF,UAAWqE,GAAAA,CAAW,0CAA2C,kCAAkCrE,MACpGE,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAU,kDAAkDuE,IAAI,KAAKtE,KAAM,GAAG8G,cACpF7G,EAAAA,cAAA,SACIyF,KAAK,OAAM,aACCS,EAAgB3D,KAC5BzC,UAAWqE,GAAAA,CACP1C,KAAKhB,mBACL,uCACA,6CAA6CkC,IAC7C,uBAAuB7C,WAE3B4F,SAAUjE,KAAKoG,gBAAgB3B,GAC/BN,WACoDkC,IAAhDrG,KAAKmB,MAAMmE,WAAWb,EAAgB3D,MAChCd,KAAKmB,MAAMmE,WAAWb,EAAgB3D,MAAMiD,QAAQ,QAAS,IAAIA,QAAQ,QAAS,IAClF,GAEVL,UAAWtC,EAAc,gBACV8D,EAAeK,cAAe,EAC7Ce,UAAW,IAEdtG,KAAKqE,aAAaI,EAAgB3D,MAAQ,KAKnDvC,EAAAA,cAAA,OAAKF,UAAWqE,GAAAA,CAAW,0CAA2C,kCAAkCrE,MACpGE,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAU,kDAAkDuE,IAAI,KAAKtE,KAAM8G,IACjF7G,EAAAA,cAAA,SACIyF,KAAK,OAAM,aACCS,EAAgB3D,KAC5BzC,UAAWqE,GAAAA,CACP1C,KAAKhB,mBACL,uCACA,6CAA6CkC,IAC7C,uBAAuB7C,WAE3B4F,SAAUjE,KAAKqF,mBAAmBZ,GAClCN,MAAOnE,KAAKmB,MAAMmE,WAAWb,EAAgB3D,MAAQ,KAAO,GAC5D4C,UAAWtC,EAAc,gBACV8D,EAAeK,cAAe,IAEhDvF,KAAKqE,aAAaI,EAAgB3D,MAAQ,MAKtC,KAAAmE,eAAiB,CAC9BR,EACApG,EACA+C,KAEA,IAAI+C,EAAQnE,KAAKmB,MAAMmE,WAAWb,EAAgB3D,MAAQ,KAAO,GACjE,MACMyF,IADuB,KAAVpC,IACa/C,GAChC+C,EAAQA,GAAS,QACjB,MAAMqC,EAAyB,SAAVrC,EAAoB,SAAa,UAChDsC,GAAYC,EAAAA,EAAAA,QAAO1G,KAAKrB,MAAMsB,oBAAoBF,UAAU4G,+BAAgClC,EAAgB3D,MAC5G8F,EAAyB,SAAVzC,EAEfiB,EADiBpF,KAAKmF,mBAAmBV,EAAgB3D,MAAQ,IAC5BA,MAAQ,GACnD,IAAI+F,EAAc,QAOlB,OALIA,EADU,SAAV1C,EACc,QAEA,OAId5F,EAAAA,cAAA,OACIF,UAAWqE,GAAAA,CACP,0CACA,kDACA,kCAAkCrE,MAGtCE,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAU,kDAAkDuE,IAAI,KAAKtE,KAAM8G,IAChFmB,GACGhI,EAAAA,cAAA,OACIF,UAAW,2GAA2GmI,KAEtHjI,EAAAA,cAACuI,EAAa,CACVzI,UAAU,+DACVC,KAAM0B,KAAKrB,MAAMsB,oBAAoBF,UAAUgH,oBAEnDxI,EAAAA,cAAC2E,EAAAA,OAAM,CACH7E,UAAWqE,GAAAA,CACP1C,KAAKhB,mBACL,yDACA,mDAAmDwH,YACtD,aACW,GAAGC,IAAW,eACZG,EACdzC,MAAOA,EACPd,QAASrD,KAAKgH,kBAAkBvC,EAAiBoC,GACjDnD,UAAWtC,IAEf7C,EAAAA,cAACuI,EAAa,CACVzI,UAAU,8DACVC,KAAM0B,KAAKrB,MAAMsB,oBAAoBF,UAAUkH,sBAQtD,KAAA5C,aAAgB6C,IAC7B,MAAMC,EAAiBnH,KAAKmB,OAASnB,KAAKmB,MAAMiG,gBAAkBpH,KAAKmB,MAAMiG,eAAeF,IAAmB,GAE/G,OADkBG,EAAAA,iBAAiBC,mBAAmBH,GAG9C5I,EAAAA,cAAA,OAAKF,UAAU,uCAAuCkJ,KAAK,QAAO,YAAW,aACzEhJ,EAAAA,cAAA,SAAOF,UAAU,8CAA8C8I,IAIpE,MAGM,KAAAhC,mBAAsB+B,IACnC,MAAMM,EAAuBxH,KAAKwH,qBAAqB7G,MAAKF,GAAOA,EAAIgH,OAASP,IAC1EQ,EAAwBF,GAAwBA,EAAqBE,cAAgB,EAC3F,MAAO,CACH5G,KAAM4G,EAAc,GAAGR,GAAiB,OAASA,GAAiB,GAClE3B,YAAamC,IAIJ,KAAAxD,eAAkByD,IAC/B,MAAMxD,EAAQwD,EAAMC,OAAOzD,MAC3BnE,KAAK6H,SAAS,CAAEzD,MAAOD,KAGV,KAAAI,mBAAsBoD,IACnC,MAAMxD,EAAQwD,EAAMC,OAAOzD,MAC3BnE,KAAK6H,SAAS,CAAErD,UAAWL,KAGd,KAAAb,kBAAoB,KACjCtD,KAAKjB,UAAW,EAGhBiB,KAAKlB,cAAe,EACpBkB,KAAK6H,SAAS,CAAEzG,gBAAgB,EAAMgG,eAAgB,KAClDU,EAAAA,GAASC,WACTC,YAAW,KACP,GAAIhI,KAAKyC,uBAAuBwF,QAAS,CACrC,MAAM3C,EAAwCtF,KAAKyC,uBAAuBwF,QAAQC,uBAC9ElI,KAAKhB,oBAELsG,GAAcA,EAAW6C,OAAS,GAClCnI,KAAKoI,UAAU9C,EAAW,OAGnC,IAIM,KAAA1B,mBAAqB,KAClC5D,KAAK6H,SAAS,CACVzG,gBAAgB,EAChBgG,eAAgB,GAChB9B,WAAYtF,KAAKqI,kBACjBjE,MAAOpE,KAAKsI,aACZ9D,UAAWxE,KAAKuI,mBAEhBT,EAAAA,GAASC,WACTC,YAAW,KACPhI,KAAKoI,UAAUpI,KAAKwD,QAAQyE,WAC7B,IAIM,KAAA5C,mBAAsB3E,GAA8CiH,IACjF,MAAMxD,EAAQwD,EAAMC,OAAOzD,MACrBsD,EAAO/G,EAAoBI,MAAQ,GACzCd,KAAK6H,SAAS,CACVvC,WAAUkD,EAAAA,EAAA,GACHxI,KAAKmB,MAAMmE,YAAU,IACxB,CAACmC,GAAOtD,OAKH,KAAAiC,gBAAmB1F,GAA8CiH,IAC9E,MAAMxD,EAAQ,QAAQwD,EAAMC,OAAOzD,QAC7BsD,EAAO/G,EAAoBI,MAAQ,GACzCd,KAAK6H,SAAS,CACVvC,WAAUkD,EAAAA,EAAA,GACHxI,KAAKmB,MAAMmE,YAAU,IACxB,CAACmC,GAAOtD,OAKH,KAAA6C,kBAAoB,CAACtG,EAA0CyD,IAC5EwD,IAEA,MAAMF,EAAO/G,EAAoBI,MAAQ,GACzCd,KAAK6H,SAAS,CACVvC,WAAUkD,EAAAA,EAAA,GACHxI,KAAKmB,MAAMmE,YAAU,IACxB,CAACmC,GAAOtD,OAKH,KAAA2B,mBAAsBpF,GAA8CiH,IACjF,MAAMxD,EAAQwD,EAAMc,cAAcC,gBAAgB,GAAGvE,MAC/CwE,EAAQhB,EAAMc,cAAcC,gBAAgB,GAAGC,MAC/ClB,EAAO/G,EAAoBI,MAAQ,GACzCd,KAAK6H,SAAS,CACVvC,WAAUkD,EAAAA,EAAA,GACHxI,KAAKmB,MAAMmE,YAAU,IACxB,CAACmC,GAAOtD,IAEZyE,cAAaJ,EAAAA,EAAA,GACNxI,KAAKmB,MAAMyH,eAAa,IAC3B,CAACnB,GAAOkB,OAKH,KAAAE,eAAiB,KAC9B,MAAM,OAAEhJ,EAAM,KAAEC,GAASE,KAAKrB,MAAMsB,oBAE9B6I,GADiBjJ,EAAOS,gBAAkB,IACLC,MAAM,KAC3CwI,EAAWjJ,EAAKiC,oBAAoB5B,OACpC6I,EAA0CD,GAAYA,EAASE,YAAe,GAC9E3D,EAAkC,GAExCwD,EAAoBI,SAAQC,IACxB,MAAM3B,EAAuBxH,KAAKwH,qBAAqB7G,MAAKF,GAAOA,EAAIgH,OAAS0B,IAC1EzB,EAAwBF,GAAwBA,EAAqBE,cAAgB,EACrF0B,EAAe5B,GAAwBA,EAAqB4B,aAC5DxI,EAAYoI,EAAkBrI,MAAKF,GAAOA,EAAIK,OAASqI,IAC7D,IAAIhF,EAAgB,GACpB,GAAIvD,GAAaA,EAAUyI,eAAgB,CACvC,MAAM5B,EAAQ7G,GAAaA,EAAUE,MAAS,GAC9C,OAAQF,EAAU0I,eACd,KAAK9K,EAA8BoG,QAC3BhE,EAAUyI,eAAeE,eACzBpF,EAAQqF,OAAO5I,EAAUyI,eAAeE,cACxCjE,EAAWmC,GAAQtD,GAEvB,MACJ,KAAK3F,EAA8BqG,QAC3BjE,EAAUyI,eAAeI,eACzBtF,EAAQqF,OAAO5I,EAAUyI,eAAeI,cACxCnE,EAAWmC,GAAQtD,GAEvB,MACJ,KAAK3F,EAA8BmE,KAC3B/B,EAAUyI,eAAeK,cACzBvF,EAAQvD,EAAUyI,eAAeK,YACjCpE,EAAWmC,GAAQtD,GAEvB,MACJ,KAAK3F,EAA8BwG,UACe,OAA1CpE,EAAUyI,eAAeM,eACzBxF,EAAQqF,OAAO5I,EAAUyI,eAAeM,cACxCrE,EAAWmC,GAAQtD,IAQ/BkD,EAAAA,iBAAiBC,mBAAmBnD,IAAUuD,IAC9CpC,EAAW6D,GAAiB,IAEX,IAAjBhF,EAAMgE,QAAgBiB,IACtB9D,EAAW6D,GAAiBK,OAAOJ,OAGQ,IAA/CjG,OAAOyG,KAAK5J,KAAKqI,mBAAmBF,SACpCnI,KAAKqI,kBAAoB/C,GAE7BtF,KAAK6H,SAAS,CAAEvC,WAAAA,KAIH,KAAAuE,sBAAyBd,IACtC,MAAM,UAAEhJ,GAAcC,KAAKrB,MAAMsB,qBAC3B,MAAEmE,EAAK,UAAEI,GAAcxE,KAAKmB,MAC5BiG,EAAsC,GAC5C,IAAIrI,GAAoB,EACpB+K,GAAoB,EACxB,IAAK,MAAO/D,EAAK5B,KAAUhB,OAAO4G,QAAQ/J,KAAKmB,MAAMmE,YAAa,CAC9D,MAAM0E,EAAqChK,KAAKwH,qBAAqB7G,MAAKb,GAAQA,EAAK2H,OAAS1B,KAAQ,GACxG,GAAIiE,EAAa,CACb,OAAQA,EAAYC,eAChB,KAAKzL,EAA8BqG,QAC/B,MAAMqF,EAAeC,OAAOhG,GAC5B,GAAIiG,MAAMF,GAAe,CACrB,MAAMG,GAAY3D,EAAAA,EAAAA,QAAO3G,EAAUuK,4BAA6BN,EAAYvC,KAAM,WAClFL,EAAe4C,EAAYvC,MAAQ,IAAM4C,EACzCtL,GAAW,OACR,QAAoCsH,IAAhC2D,EAAYO,sBAAiElE,IAAhC2D,EAAYQ,iBAChE,GAAIN,EAAeF,EAAYO,iBAAmBL,EAAeF,EAAYQ,gBAAiB,CAC1F,MAAMC,GAAa/D,EAAAA,EAAAA,QACf3G,EAAU2K,6BACVV,EAAYvC,KACZuC,EAAYO,gBACZP,EAAYQ,iBAEhBpD,EAAe4C,EAAYvC,MAAQ,IAAMgD,EACzC1L,GAAW,QAGXmL,EAAelK,KAAKb,kBACpBiI,EAAe4C,EAAYvC,MAAQ,KAAMf,EAAAA,EAAAA,QACrC3G,EAAU4K,2CACVX,EAAYvC,KACZzH,KAAKb,iBAETJ,GAAW,GAGXmL,EAAelK,KAAKZ,kBACpBgI,EAAe4C,EAAYvC,MAAQ,KAAMf,EAAAA,EAAAA,QACrC3G,EAAU6K,2CACVZ,EAAYvC,KACZzH,KAAKZ,iBAETL,GAAW,GAIdA,IACGsI,EAAAA,iBAAiBC,mBAAmBnD,GACpC2F,GAAW,GAEXE,EAAYE,aAAeA,EAC3BJ,GAAW,IAGnB,MACJ,KAAKtL,EAA8BoG,QAC/B,MAAMiG,EAAeV,OAAOhG,GAC5B,GAAIiG,MAAMS,IAAiB1G,EAAM2G,SAAS,KAAM,CAC5C,MAAMT,GAAY3D,EAAAA,EAAAA,QAAO3G,EAAUuK,4BAA6BN,EAAYvC,KAAM,WAClFL,EAAe4C,EAAYvC,MAAQ,IAAM4C,EACzCtL,GAAW,OACR,QAAoCsH,IAAhC2D,EAAYO,sBAAiElE,IAAhC2D,EAAYQ,iBAChE,GAAIK,EAAeb,EAAYO,iBAAmBM,EAAeb,EAAYQ,gBAAiB,CAC1F,MAAMC,GAAa/D,EAAAA,EAAAA,QACf3G,EAAU2K,6BACVV,EAAYvC,KACZuC,EAAYO,gBACZP,EAAYQ,iBAEhBpD,EAAe4C,EAAYvC,MAAQ,IAAMgD,EACzC1L,GAAW,QAGX8L,EAAe7K,KAAKf,kBACpBmI,EAAe4C,EAAYvC,MAAQ,KAAMf,EAAAA,EAAAA,QACrC3G,EAAU4K,2CACVX,EAAYvC,KACZzH,KAAKf,iBAETF,GAAW,GAGX8L,EAAe7K,KAAKd,kBACpBkI,EAAe4C,EAAYvC,MAAQ,KAAMf,EAAAA,EAAAA,QACrC3G,EAAU6K,2CACVZ,EAAYvC,KACZzH,KAAKd,iBAETH,GAAW,GAIdA,IACGsI,EAAAA,iBAAiBC,mBAAmBnD,GACpC2F,GAAW,GAEXE,EAAYa,aAAeA,EAC3Bf,GAAW,IAGnB,MACJ,KAAKtL,EAA8BmE,KAC/B,IAAIoI,EAAY,GACX1D,EAAAA,iBAAiBC,mBAAmBnD,KACrC4G,EAAY5G,EAAM6G,QAElBD,EAAU5C,OAASnI,KAAKX,kBACxB+H,EAAe4C,EAAYvC,MAAQ,KAAMf,EAAAA,EAAAA,QACrC3G,EAAUkL,uCACVjB,EAAYvC,KACZzH,KAAKX,iBAETN,GAAW,GAEVA,IACDiL,EAAYkB,UAAYH,GAE5B,MACJ,KAAKvM,EAA8BwG,UAC/BgF,EAAYmB,aAAyB,SAAVhH,EAO/B6F,EAAYtC,aAAeL,EAAAA,iBAAiBC,mBAAmBnD,KAC/DiD,EAAe4C,EAAYvC,MAAQ,KAAMf,EAAAA,EAAAA,QAAO3G,EAAUqL,iCAAkCpB,EAAYvC,MACxG1I,GAAW,GAGf,MAAMiK,EAA0CD,GAAYA,EAASE,YAAe,GAC9ErI,EAAYoI,EAAkBrI,MAAKF,GAAOA,EAAIK,OAASiF,IACvD4C,EAAQK,EAAkBqC,WAAU5K,GAAOA,EAAIK,OAASiF,KAE/C,IAAX4C,GAAiBmB,GACjBd,EAAkBsC,OAAO3C,EAAO,IAG/B5J,GAAY+K,IACTlJ,GACAA,EAAU2K,eAAYlF,EACtBzF,EAAU0I,cAAgBU,EAAYC,cACtCrJ,EAAUE,KAAOkJ,EAAYvC,KAC7B7G,EAAUI,SAAWgJ,EAAYwB,SACjC5K,EAAU6K,WAAQpF,EAClBzF,EAAUyI,eAAiB,CACvBE,aAAcS,EAAYa,aAC1BlB,aAAcK,EAAYmB,aAC1BzB,YAAaM,EAAYkB,UACzBzB,aAAcO,EAAYE,cAE9BtJ,EAAU8K,oBAAsB,GAChC9K,EAAU+K,iBAAmB,IAE7B3C,EAAkB4C,KAAK,CACnB,cAAe,mEACfL,eAAWlF,EACXiD,cAAeU,EAAYC,cAC3B4B,QAAS7B,EAAYvC,KACrB3G,KAAMkJ,EAAYvC,KAClBzG,SAAUgJ,EAAYwB,SACtBC,WAAOpF,EACPgD,eAAgB,CAEZ,cAAe,uEACfE,aAAcS,EAAYa,aAC1BlB,aAAcK,EAAYmB,aAC1BzB,YAAaM,EAAYkB,UACzBzB,aAAcO,EAAYE,cAE9B,iCAAkC,8EAClCwB,oBAAqB,GACrB,8BACI,kFACJC,iBAAkB,OAOlCvH,EAAM4G,OAAO7C,OAASnI,KAAKT,gBAC3B6H,EAAe0E,OAAQpF,EAAAA,EAAAA,QAAO3G,EAAUkL,uCAAwC,QAASjL,KAAKT,gBAC9FR,GAAW,GAEXgK,EAAS+C,MAAQ1H,EAAM4G,OAGvBxG,EAAUwG,OAAO7C,OAASnI,KAAKV,oBAC/B8H,EAAe2E,WAAYrF,EAAAA,EAAAA,QAAO3G,EAAUkL,uCAAwC,aAAcjL,KAAKV,oBACvGP,GAAW,GAEXgK,EAASiD,UAAYxH,EAAUwG,OAGnChL,KAAKjB,SAAWA,EAChBiB,KAAK6H,SAAS,CAAET,eAAAA,KAGH,KAAAzD,gBAAkBsI,UAAW,IAAAC,EAC1C,MAAM,QAAE9J,EAAO,KAAEtC,GAASE,KAAKrB,MAAMsB,oBAC/B8I,EAAWjJ,EAAKiC,oBAAoB5B,OAE1C,IAAIgG,EACJ,OAAQnG,KAAKrB,MAAMsB,oBAAoBJ,OAAOsG,QAC1C,IAAK,qBACDA,EAAS,uBACT,MACJ,IAAK,qBACDA,EAAS,uBACT,MACJ,QACIA,EAAS,uBASjB,GAPA4C,MAAAA,GAAoB,QAAZmD,EAARnD,EAAUE,kBAAU,IAAAiD,GAApBA,EAAsBhD,SAAQtI,IACH,WAAnBA,EAAUE,OACVF,EAAUyI,eAAgBK,YAAcvD,EACxCvF,EAAU8K,oBAAqB,GAAG/G,MAAO+E,YAAcvD,MAI3D4C,GAAY3G,EAAS,CACrBpC,KAAK6J,sBAAsBd,GAE3B,MAAMoD,EAAQ,IAAIC,EAAAA,8BACdrD,EAASsD,cACTtD,EAASE,YAAc,GACvB7G,EAAQkK,QAAQC,YAChBxD,EAAS+C,MACT/C,EAASiD,WAMb,GAHAhM,KAAKnB,sBAAuB,EAC5BmB,KAAKlB,cAAe,GAEfkB,KAAKjB,SAAU,CAChBiB,KAAK6H,SAAS,CAAEzG,gBAAgB,IAChC,UACUoL,EAAAA,EAAAA,0BAAyBL,EAAO/J,EAAQqK,eAEhD,MAAOtF,GACLnH,KAAKlB,cAAe,EACpBiK,EAASE,WAAajJ,KAAK0M,0BACvBtK,EAAQuK,YACRvK,EAAQuK,UAAUC,UAAUzF,GAC5B/E,EAAQuK,UAAUE,MAAM,yCAE5B7M,KAAK6H,SAAS,CACVT,eAAgB,GAChB9B,WAAYtF,KAAKqI,kBACjBjE,MAAOpE,KAAKsI,aACZ9D,UAAWxE,KAAKuI,mBAGxBvI,KAAK6H,SAAS,CAAEzG,gBAAgB,IAC3BpB,KAAKlB,eACNkB,KAAKqI,kBAAoBrI,KAAKmB,MAAMmE,WACpCtF,KAAK0M,0BAA4B3D,EAASE,WAC1CjJ,KAAKsI,aAAetI,KAAKmB,MAAMiD,MAC/BpE,KAAKuI,iBAAmBvI,KAAKmB,MAAMqD,WAI3CxE,KAAKnB,sBAAuB,EAExBiJ,EAAAA,GAASC,WACTC,YAAW,KACPhI,KAAKoI,UAAUpI,KAAKwD,QAAQyE,WAC7B,KAKE,KAAAG,UAAa0E,IAC1BA,MAAAA,GAAAA,EAASC,SAGI,KAAAC,kBAAoB,KACjC,MAAM,KAAElN,GAASE,KAAKrB,MAAMsB,oBACtBC,EAAuBJ,EAAKI,qBAAqBC,QAAU,GAC3DmF,EAAkC,GAExCpF,EAAqBgJ,SAAQxI,IACzB,MAAM8G,EAA8C,GAMpD,OALAA,EAAqBgE,SAAW9K,EAAoBM,SACpDwG,EAAqBC,KAAO/G,EAAoBI,KAChD0G,EAAqByC,cAAgBvJ,EAAoB4I,cACzD9B,EAAqBhC,cAAgB9E,EAAoB+E,cACzD+B,EAAqBE,YAAchH,EAAoB6E,YAC/C7E,EAAoB4I,eACxB,KAAK9K,EAA8BoG,QAC/B,MAAMqI,EAAsBvM,EAAoBwM,cAAgBxM,EAAoBwM,aAAa3D,aACjG/B,EAAqB+C,gBAAkB7J,EAAoByM,YAAczM,EAAoByM,WAAW5D,aACxG/B,EAAqBgD,gBAAkB9J,EAAoB0M,YAAc1M,EAAoB0M,WAAW7D,aACpG/B,EAAqBC,MAAQwF,IAC7BzF,EAAqB4B,aAAeI,OAAOyD,GAC3C3H,EAAWkC,EAAqBC,MAAQ+B,OAAOyD,IAEnD,MACJ,KAAKzO,EAA8BqG,QAC/B,MAAMwI,EAAsB3M,EAAoBwM,cAAgBxM,EAAoBwM,aAAazD,aACjGjC,EAAqB+C,gBAAkB7J,EAAoByM,YAAczM,EAAoByM,WAAW1D,aACxGjC,EAAqBgD,gBAAkB9J,EAAoB0M,YAAc1M,EAAoB0M,WAAW3D,aACpGjC,EAAqBC,MAAQ4F,IAC7B7F,EAAqB4B,aAAeI,OAAO6D,GAC3C/H,EAAWkC,EAAqBC,MAAQ+B,OAAO6D,IAEnD,MACJ,KAAK7O,EAA8BmE,KAC/B,MAAM2K,EAAqB5M,EAAoBwM,cAAgBxM,EAAoBwM,aAAaxD,YAC5FlC,EAAqBC,MAAQ6F,IAC7B9F,EAAqB4B,aAAekE,EACpChI,EAAWkC,EAAqBC,MAAQ6F,GAE5C,MACJ,KAAK9O,EAA8BwG,UAC/B,MAAMuI,EACD7M,EAAoBwM,cAAgBxM,EAAoBwM,aAAavD,eAAiB,EACvFnC,EAAqBC,OACrBD,EAAqB4B,aAAeI,OAAO+D,GAC3CjI,EAAWkC,EAAqBC,MAAQ+B,OAAO+D,IAO3DvN,KAAKwH,qBAAqBoE,KAAKpE,MAEnCrE,OAAOyG,KAAKtE,GAAY6C,OAAS,GAAKnI,KAAK6H,SAAS,CAAEvC,WAAAA,KAGzC,KAAAkI,8BAAgC,KAC7C,MAAMzE,EAAW/I,KAAKrB,MAAMsB,oBAAoBH,KAAKiC,oBAAoB5B,OACnEiE,EAAS2E,GAAYA,EAAS+C,OAAU,GACxCtH,EAAauE,GAAYA,EAASiD,WAAc,GACtDhM,KAAK6H,SAAS,CAAEzD,MAAAA,EAAOI,UAAAA,IACU,IAA7BxE,KAAKsI,aAAaH,SAClBnI,KAAKsI,aAAelE,GAEa,IAAjCpE,KAAKuI,iBAAiBJ,SACtBnI,KAAKuI,iBAAmB/D,IA16B5BxE,KAAKmB,MAAQ,CACTC,gBAAgB,EAChBgD,MAAO,GACPI,UAAW,GACXc,WAAY,GACZ8B,eAAgB,IAEpBpH,KAAKqI,kBAAoB,GACzBrI,KAAK0M,0BAA4B,GACjC1M,KAAKsI,aAAe,GACpBtI,KAAKuI,iBAAmB,GACxBvI,KAAKwH,qBAAuB,GAC5B,MAAMiG,EACDzN,KAAKrB,MAAMsB,qBACRD,KAAKrB,MAAMsB,oBAAoBmC,SAC/BpC,KAAKrB,MAAMsB,oBAAoBmC,QAAQkK,SACvCtM,KAAKrB,MAAMsB,oBAAoBmC,QAAQkK,QAAQmB,mBACnD,GACEC,EAAgB1N,KAAKrB,MAAMsB,qBAAuBD,KAAKrB,MAAMsB,oBAAoByN,cAAiB,GAClGf,EAAa3M,KAAKrB,MAAMsB,qBAAuBD,KAAKrB,MAAMsB,oBAAoB0M,WAAc,GAClG3M,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBAAmBF,EAAmBC,EAAcf,GAC5E3M,KAAKqB,SAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAK0B,iBAAkB,IAChE1B,KAAKwD,QAAUjF,EAAAA,YACfyB,KAAKyC,uBAAyBlE,EAAAA,YAG3BsP,oBACH7N,KAAKgN,oBACLhN,KAAK6I,iBACL7I,KAAKwN,iCACLM,EAAAA,EAAAA,KACI,IAAM9N,KAAKrB,MAAMsB,oBAAoBH,KAAKiC,oBAAoB5B,SAC9D,KACI,MAAM4B,EAAsB/B,KAAKrB,MAAMsB,oBAAoBH,KAAKiC,oBAAoB5B,OACpFH,KAAK0M,0BAA4B3K,GAAuBA,EAAoBkH,WAC5EjJ,KAAK6I,iBACL7I,KAAKwN,oCAGbM,EAAAA,EAAAA,KACI,IAAM9N,KAAKrB,MAAMsB,oBAAoBH,KAAKI,qBAAqBC,SAC/D,KACIH,KAAKgN,uBAKVe,sBAAsBC,EAA2CC,GACpE,OAAIjO,KAAKmB,QAAU8M,GAAajO,KAAKrB,MAAMsB,oBAAoBH,OAASkO,EAAU/N,oBAAoBH,KAMnGyG,SACH,OAAOvG,KAAKN,uBAnGJwO,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,4CAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,mCALT1P,GAAwByP,EAAAA,EAAAA,IAAA,CAD7BE,EAAAA,IACK3P,GA89BN,gBCxhCA,MAIA,EAJyEL,IAAA,IAAC,UAAEC,EAAS,YAAEgQ,GAAajQ,EAAA,OAChGG,EAAAA,cAAA,KAAGF,UAAWA,GAAYgQ,IC6BxBC,EAAoBA,CAACC,EAAwB7M,KAC/C,IAAK6M,GAAgC,IAApBA,EAASpG,OACtB,OAAO,KAEX,MAAMqG,EAAuC,GACvCnN,GAAUuM,EAAAA,EAAAA,kBAAiB,QAASlM,EAAmB,IAgB7D,OAfA6M,EAASrF,SAAQ,CAACuF,EAAM9F,KACpBtH,EAAQC,cAAcC,MAAQkN,EAAKC,SACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBC,EAAmBL,GACvDsN,EAAoC,CACtCC,UAAWH,EAAKG,UAChBvQ,UAAWoQ,EAAKI,WAAa,2CAA6C,mCAC1EH,SAAUD,EAAKC,SACfI,QAASL,EAAKK,QAAQC,eACtBC,aAAcP,EAAKO,aACnBzH,KAAM,OACN0H,qBAAsB3J,GAE1BkJ,EAAc5C,KAAK+C,MAGhBH,GAGX,EAtC4DpQ,IAA8D,IAA7D,MAAE8Q,EAAK,iBAAExN,EAAgB,eAAEyN,EAAc,aAAEC,GAAchR,EAClH,GAAqB,IAAjB8Q,EAAM/G,OACN,OAAO,KAEX,MAAMqG,EAAgBF,EAAkBY,EAAOxN,GAC/C,OACInD,EAAAA,cAAA,OAAKF,UAAU,qCACVmQ,GAAiBA,EAAcrG,OAAS,EACrC5J,EAAAA,cAAC8Q,EAAAA,GAAc,CAACH,MAAOV,EAAec,UAAW,CAAEF,aAAAA,EAAcD,eAAAA,KACjE,4kBCkDhB,IAAMI,EAAN,cAA6BhR,EAAAA,UASzBG,YAAYC,GACRC,MAAMD,GATU,KAAA6Q,sBAAgC,EAInC,KAAAhQ,6BAAuC,+DAEhD,KAAAC,mCAA6C,EA0F9C,KAAAgQ,oBAAuB9H,GAA0C3H,KAAKrB,MAAMkB,OAAOiE,QAAQxF,KAAOqJ,EAAMC,OAAOzD,MAE/G,KAAAuL,yBAA4B/H,GAC9B3H,KAAKrB,MAAMkB,OAAO8P,2BAA4BrR,KAAOqJ,EAAMC,OAAOzD,MAEhE,KAAAyL,wBAA2BjI,GAC7B3H,KAAKrB,MAAMkB,OAAOgQ,mBAAoBvR,KAAOqJ,EAAMC,OAAOzD,MAExD,KAAA2L,qBAAwBC,GAAuBpI,IAC9C3H,KAAKrB,MAAMoB,UAAUiQ,iBACrBhQ,KAAKrB,MAAMoB,UAAUiQ,eAAiBrI,EAAMC,OAAOzD,QA2G1C,KAAA8L,oBAAuB5R,GAAsB4N,SACnDjM,KAAKkQ,8BAA8B7R,GA6D7B,KAAA8R,kBAAoB,CACjC9R,EACA+R,EACAC,EACAhC,EACAiC,EACAnO,KAEA,MAAM,kBAAE4E,EAAiB,iBAAEE,GAAqBjH,KAAKrB,MAAMoB,UACrDyG,EAAc8J,EAAW,UAAY,SACrCC,EAAiBvQ,KAAKiQ,oBAAoB5R,GAChD2B,KAAKqB,QAAQC,cAAcC,MAAQ6O,EAAe9R,KAClD,MAAMgH,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAmB1B,KAAKqB,SAEvE,MAAO,CACHmP,kBAAmB,CACfnS,UAAWqE,GAAAA,CAAW,iCAAkC,kCAAkCrE,IAAa,CACnG,+CAAgD2B,KAAKwP,wBAG7D1L,QAASsM,GACL7R,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,yCACVuE,IAAKwN,EAAexN,KAAO,KAC3BtE,KAAM8R,EAAe9R,KACrBgR,UAAW,CAAEmB,OAAQzQ,KAAKyP,oBAAqBN,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG1FoE,cAAe,CACXrS,UAAWqE,GAAAA,CAAW,qCAAsC,8BAA8B8D,IAAe,CAErG,sCAAuCrE,KAG/CwO,cAAepS,EAAAA,cAACuI,EAAa,CAACzI,UAAU,yCAAyCC,KAAM2I,IACvF2J,aAAcrS,EAAAA,cAACuI,EAAa,CAACzI,UAAU,0CAA0CC,KAAMyI,IACvF8J,OACItS,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAWqE,GAAAA,CAAW,oCAAqC,8BAA8B8D,YAAqB,aAClG6J,EACZlM,MAAOmM,EAASQ,WAAU,gBACXR,EACfjN,QAASkN,EACT7M,SAAUvB,GACNmD,IAGZ+I,YAAa9P,EAAAA,cAACwS,EAAoB,CAAC1S,UAAU,6CAA6CgQ,YAAaA,IACvG2C,0BAA2B/E,SAAYjM,KAAKkQ,8BAA8B7R,KAIjE,KAAA6R,8BAAgCjE,MAAAA,IAC7C,MAAMlK,EAAsB/B,KAAKrB,MAAMmB,KAAKiC,oBAAoB5B,OAEhE,GAAI4B,EAAqB,CACrB,MAAM,UACF4K,EACAvK,SAAS,QAAEkK,EAAO,cAAEG,IACpBzM,KAAKrB,MAET,IACIwN,EADA8E,GAA0B,EAG9B,OAAQC,GACJ,IAAK,eACDD,EAA0BlP,EAAoBoP,4BAA6B,EAC3EhF,EAAQ,IAAIiF,EAAAA,mCACRrP,EAAoBsK,eACnB4E,EACD3E,EAAQC,YACR2E,GAEJ,MACJ,UAAK7K,EACL,IAAK,kBACL,QACI4K,EAA0BlP,EAAoBsP,wBAAyB,EACvElF,EAAQ,IAAIiF,EAAAA,mCACRrP,EAAoBsK,eACnB4E,EACD3E,EAAQC,YACR2E,GAIZlR,KAAKwP,sBAAuB,EAE5B,UACU8B,EAAAA,EAAAA,+BAA8BnF,EAAOM,GAE7C,MAAOtF,GACDwF,IACAA,EAAUC,UAAUzF,GACpBwF,EAAUE,MAAM,8CAIxB7M,KAAKwP,sBAAuB,IAInB,KAAA+B,0BAA4B,IAClChT,EAAAA,cAACE,EAAwB,CAACwB,oBAAqBD,KAAKrB,QAhX3DqB,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAMyD,QAAQkK,QAAQmB,kBAC3BzN,KAAKrB,MAAM+O,aACX1N,KAAKrB,MAAMgO,WAEf3M,KAAKqB,SAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAK0B,iBAAkB,IAG7DqM,sBAAsBC,GACzB,OAAIhO,KAAKrB,MAAMmB,OAASkO,EAAUlO,KAM/ByG,SAAM,IAAA5G,EAAA6R,EACT,MAAM,OAAE3R,EAAM,UAAEE,EAAS,KAAED,GAASE,KAAKrB,OACnC,UAAEN,EAAS,QAAEyF,EAAO,2BAAE6L,EAA0B,mBAAEE,EAAkB,eAAEvP,EAAc,UAAEuC,EAAS,cAAEE,GAAkBlD,GAEnH,eAAEmQ,EAAc,oBAAEyB,GAAwB1R,EAC1CgC,EAAsBjC,EAAKiC,oBAAoB5B,OAErDH,KAAKP,mCACgB,QAAjBE,EAAAG,EAAKkC,oBAAY,IAAArC,GAAQ,QAARA,EAAjBA,EAAmBQ,cAAM,IAAAR,GAAqE,QAArEA,EAAzBA,EAA2BgB,MAAKsB,GAAWA,EAAQnB,OAASd,KAAKR,sCAA6B,IAAAG,OAAA,EAA9FA,EAAgGuC,aAAa,EAEjH,MAAMwP,MACqB,QAAtBF,EAAAxR,KAAKrB,MAAMyD,QAAQC,WAAG,IAAAmP,GAAQ,QAARA,EAAtBA,EAAwB3R,cAAM,IAAA2R,OAAA,EAA9BA,EAAgClP,6CAChCP,MAAAA,OAAmB,EAAnBA,EAAqBQ,oBACrBvC,KAAKP,kCAGJkS,EAA0BrR,GAAkBA,EAAe6H,OAAS,GAAMtF,GAAaE,IAAiB,EACxG6O,EAAuB,CACzB9C,QAAS,CACLC,eAAgB8C,GAAAA,CAAI7R,KAAKrB,MAAO,sCAAuC,KAE3E+P,SAAUsB,EACVpB,UAAW6C,EACX5C,WAAY6C,GAGVI,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACbN,UAAAA,EACAkR,eAAgB,CACZwC,YAAa/R,KAAKrB,MAClBN,UAAWqE,GAAAA,CAAW,qBAAsB7C,EAAOxB,YAEvD2T,eAAgBN,GACZnT,EAAAA,cAAC8Q,EAAAA,GAAa,CAAChR,UAAU,2BAA2BC,KAAMyB,EAAUkS,sCAExEC,sBAAuB,CACnB7T,UAAWqE,GAAAA,CAAW,+BAE1BoB,QAASA,GACLvF,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,mCACVuE,IAAKkB,EAAQlB,KAAO,KACpBtE,KAAMwF,EAAQxF,KACdgR,UAAW,CAAEmB,OAAQzQ,KAAKyP,oBAAqBN,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG1F6F,aAAcnS,KAAKoS,oBACf1P,GAAAA,CAAW,8BAA+B,qCAC1CiN,EACA5N,GAAuBA,EAAoBsQ,OAE/CC,YAAatS,KAAKuS,mBACd7P,GAAAA,CAAW,8BAA+B,oCAC1CmN,EACA7P,KAAKwS,eAAezQ,GACpBsN,EAAAA,GAAsBrP,KAAKrB,MAAMyD,QAAQkK,cAAWjG,EAAY,CAACuL,IAErEa,kBAAmBzS,KAAK0S,yBACpBhQ,GAAAA,CAAW,8BAA+B,2CAC1CgP,EACA3P,GAEJ4Q,0BAA2B,CACvBtU,UAAWqE,GAAAA,CAAW,2CAE1BkQ,0BAA2BjB,GAA0B3R,KAAKuR,8BAE9D,OAAOvR,KAAKrB,MAAMkU,WAAWf,GAiBvB,qBACN,OAAOD,GAAAA,CAAI7R,KAAKrB,MAAO,sCAAuC,IAG1D6T,eAAezQ,GACnB,IAAIsM,EAAc,GASlB,YAR4BhI,IAAxBtE,IACIA,EAAoB+Q,YACpBzE,GAAetM,EAAoB+Q,WAEnC/Q,EAAoBgR,WACpB1E,GAAetM,EAAoB+Q,UAAY,IAAI/Q,EAAoBgR,WAAahR,EAAoBgR,WAGzG1E,EAGH+D,oBACJ/T,EACAyF,EACAuK,EACAa,GAEA,MAAO,CACH8D,mBAAoB,CAChB3U,UAAAA,GAEJyF,QAASA,GAAWA,EAAQxF,MACxBC,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,sCACVuE,IAAKkB,EAAQlB,KAAO,KACpBtE,KAAMwF,EAAQxF,KACdgR,UAAW,CAAEmB,OAAQzQ,KAAK0P,yBAA0BP,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG/F4C,MAAOA,GAASA,EAAM/G,OAAS,GAC3B5J,EAAAA,cAAC0U,EAAc9P,OAAAC,OAAA,GACP,CACA8L,MAAAA,EACAE,aAAcpP,KAAK8P,qBACnBX,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,QACnC5K,iBAAkB1B,KAAK0B,oBAInC2M,YAAaA,GACT9P,EAAAA,cAACwS,EAAoB,CAAC1S,UAAU,0CAA0CgQ,YAAaA,KAK3FkE,mBACJlU,EACAyF,EACAuK,EACAa,GAEA,OAAKgE,EAAAA,gBAAgBC,YAAYjE,GAkB1B,CACH8D,mBAAoB,CAChB3U,UAAAA,GAEJyF,QAASA,GACLvF,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,sCACVuE,IAAKkB,EAAQlB,KAAO,KACpBtE,KAAMwF,EAAQxF,KACdgR,UAAW,CAAEmB,OAAQzQ,KAAK4P,wBAAyBT,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG9F4C,MACI3Q,EAAAA,cAAC0U,EAAc9P,OAAAC,OAAA,GACP,CACA8L,MAAAA,EACAE,aAAcpP,KAAK8P,qBACnBX,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,QACnC5K,iBAAkB1B,KAAK0B,oBAInC2M,YAAaA,GACT9P,EAAAA,cAACwS,EAAoB,CAAC1S,UAAU,0CAA0CgQ,YAAaA,KAxCpF,CACH2E,mBAAoB,CAChB3U,UAAAA,GAEJyF,QAASA,GACLvF,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,sCACVuE,IAAKkB,EAAQlB,KAAO,KACpBtE,KAAMwF,EAAQxF,KACdgR,UAAW,CAAEmB,OAAQzQ,KAAK4P,wBAAyBT,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG9F+B,YAAaA,GACT9P,EAAAA,cAACwS,EAAoB,CAAC1S,UAAU,0CAA0CgQ,YAAaA,KAoC/FqE,yBACJrU,EACAqT,EACA3P,GAEA,MAAM,2BACFqR,EAA0B,qCAC1BC,EAAoC,uBACpCC,EAAsB,iCACtBC,GACAvT,KAAKrB,MAAMoB,WACT,0BAAEyT,EAAyB,8BAAEC,EAA6B,0BAAEC,GAA8B1T,KAAKrB,MAAMkB,QACrG,oBAAE8T,GAAwB3T,KAAKrB,MAAMyD,QAAQkK,QAAQsH,SACrDC,EAAyC,GAE/C,OAAK9R,GAML4R,GACID,GACAG,EAAiBjI,KACb5L,KAAKmQ,kBACD,eACAuD,EACAH,EACAD,EACAvR,EAAoBoP,4BAA6B,EACjDO,IAIL,CACHoC,mBAAoB,CAChBzV,UAAAA,GAEJyF,QAAS0P,GACLjV,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,sCACVuE,IAAK4Q,EAA0B5Q,KAAO,KACtCtE,KAAMkV,EAA0BlV,KAChCgR,UAAW,CAAEmB,OAAQzQ,KAAKyP,oBAAqBN,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG1FyH,gBAAiB/T,KAAKmQ,kBAClB,kBACAsD,EACAJ,EACAD,EACArR,EAAoBsP,wBAAyB,EAC7CK,GAEJmC,iBAAkBA,QAAoBxN,KAtCtCrG,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,qDAC5B,SA1OH+G,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,4CA8GDD,EAAAA,EAAAA,IAAA,CAAT8F,EAAAA,IAAQ,mCA/GPzE,GAAcrB,EAAAA,EAAAA,IAAA,CADnBE,EAAAA,IACKmB,GA+XN,2FCtcA,MAAM0E,EAA2D7V,IAAuE,IAAtE,mBAAE0V,EAAkB,QAAEhQ,EAAO,gBAAEiQ,EAAe,iBAAEF,GAAkBzV,EAChI,OACIG,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK0Q,GACLhQ,EACDvF,EAAAA,cAAC4V,EAAwBhR,OAAAC,OAAA,GAAK2Q,IAC7BF,GACGA,EAAiBrT,KAAI,CAAC4T,EAAkBzL,IAC7BpK,EAAAA,cAAC4V,EAAwBhR,OAAAC,OAAA,GAAKgR,EAAgB,CAAErO,IAAK4C,SAM1EwL,EAAyDE,IAQ1D,IAR2D,kBAC5D7D,EAAiB,QACjB1M,EAAO,YACPuK,EAAW,cACXqC,EAAa,cACbC,EAAa,OACbE,EAAM,aACND,GACHyD,EACG,OACI9V,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKoN,GACL1M,EACAuK,EACD9P,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKsN,GACLE,EACAC,EACAF,KAMX2D,EAAuDC,IAAwD,IAAvD,mBAAEvB,EAAkB,QAAElP,EAAO,MAAEoL,EAAK,YAAEb,GAAakG,EAC7G,OACIhW,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK4P,GACLlP,EACAuK,EACAa,IAoFb,EA/E4FvQ,IACxF,MAAM,eACF4Q,EAAc,sBACd2C,EAAqB,QACrBpO,EAAO,aACPqO,EAAY,YACZG,EAAW,kBACXG,EAAiB,0BACjBE,EAAyB,0BACzBC,GACAjU,EAqCJ,OApCAJ,EAAAA,WAAgB,KACRiW,SAAStM,uBAAuB,mDAAmDC,SAGnFqM,SAAStM,uBAAuB,mDAAmD,GAAGuM,UACnC,UAA/C9V,EAAMyD,QAAQkK,QAAQoI,OAAOC,eACvBjO,EAAAA,EAAAA,QAAO/H,EAAMoB,UAAU6U,qBAAsBjW,EAAMkB,OAAOgV,kBAC1DlW,EAAMkB,OAAOiV,sBAEvBN,SAAStM,uBAAuB,4CAA4CC,SAG5EqM,SAAStM,uBAAuB,4CAA4C,GAAGuM,WAAY/N,EAAAA,EAAAA,QACvF/H,EAAMoB,UAAUgV,cAChBpW,EAAMkB,OAAOgV,mBAGjBL,SAAStM,uBAAuB,6CAA6CC,SAG7EqM,SAAStM,uBAAuB,6CAA6C,GAAGuM,WAAY/N,EAAAA,EAAAA,QACxF/H,EAAMoB,UAAUiV,eAChBrW,EAAMkB,OAAOgV,mBAIrB,MAAMI,EAA6BT,SAAStM,uBACxC,kKACF,GACE+M,GAAsD,kBAA1CtW,EAAMyD,QAAQkK,QAAQ4I,iBAClCV,SAAStM,uBAAuB,sDAAsD,GAAGiN,iBAAiB,SAAS,KAC/GF,EAASG,aAAa,OAAQ,aAGvC,IAGC7W,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKmM,GACPzL,EACDvF,EAAAA,cAAA,OAAKF,UAAW,qBACZE,EAAAA,cAAA,OAAKF,UAAW,aACZE,EAAAA,cAAA,OAAKF,UAAW,OACZE,EAAAA,cAAA,OAAKF,UAAW,0CACZE,EAAAA,cAAA,WACK2T,GACG3T,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK8O,GACN3T,EAAAA,cAAC+V,EAAqBnR,OAAAC,OAAA,GAAK+O,IAC3B5T,EAAAA,cAAC+V,EAAqBnR,OAAAC,OAAA,GAAKkP,IAC1BK,GACGpU,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKuP,GAA4BC,MAM1DrU,EAAAA,cAAA,OAAKF,UAAW,6DACXsU,GAA6BpU,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKuP,GAA4BC,IAExErU,EAAAA,cAAA,OAAKF,UAAW,4CACZE,EAAAA,cAAC0V,EAAyB9Q,OAAAC,OAAA,GAAKqP,4rBCvG3D,MAAM6C,UAAqB/W,EAAAA,cAA3BG,kCACW,KAAAyC,MAA4B,CAC/BoU,cAAc,EACdC,eAAe,GAsBF,KAAAC,iBAAmB,KAChCzV,KAAK0V,qBACL1V,KAAK6H,SAAS,CAAE2N,eAAe,KAGlB,KAAAG,gBAAkB,KAC/B,GAAI3V,KAAKrB,MAAMkB,OAAO+V,cAClB,OAAQ5V,KAAKrB,MAAMkB,OAAOgW,sBACtB,IAAK,aACD7N,WAAWhI,KAAK8V,kBAAmB,KAO/C9V,KAAK6H,SAAS,CACV0N,cAAc,KAIL,KAAAO,kBAAoB,KACjC9V,KAAK6H,SAAS,CACV0N,cAAc,EACdC,eAAe,KAIN,KAAAO,iBAAmB,KAC5B/V,KAAKrB,MAAMkB,OAAOmW,gBAClBhW,KAAKiW,eAETjW,KAAK6H,SAAS,CACV0N,cAAc,EACdC,eAAe,KArDhBjP,SAEH,MAAM,UAAElI,GAAc2B,KAAKrB,MAAMkB,QAC3B,aAAE0V,EAAY,cAAEC,GAAkBxV,KAAKmB,MAEvC2Q,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACbuX,eAAgBxT,GAAAA,CAAW,gBAC3ByT,gBAAiBzT,GAAAA,CAAW,gBAAiB,WAAYrE,GACzDkX,aAAAA,EACAC,cAAAA,EACAY,gBAAiBpW,KAAKyV,iBACtBY,eAAgBrW,KAAK2V,gBACrBW,iBAAkBtW,KAAK+V,mBAG3B,OAAO/V,KAAKrB,MAAMkU,WAAWf,GAyC1B,0BACH,MAAMyE,EAAS,IAAIC,EAAAA,EACfxW,KAAKrB,MAAMkB,OAAO4W,wBACbF,EAAO1E,IAAI,GAAG7R,KAAKrB,MAAMkB,OAAO6W,iBAG7B1W,KAAKrB,MAAMkB,OAAO+V,gBAAkBW,EAAO1E,IAAI,GAAG7R,KAAKrB,MAAMkB,OAAO6W,0BACpE1O,WAAWhI,KAAK8V,kBAAmB,KAAQ9V,KAAKrB,MAAMkB,OAAO8W,aAAe,IAIpF3O,WAAWhI,KAAK+V,iBAAkB,KAAQ/V,KAAKrB,MAAMkB,OAAO+W,YAAc,IAI1EX,eACJ,MAAMM,EAAS,IAAIC,EAAAA,EAEnB,GAAIxW,KAAKrB,MAAMkB,OAAOgX,YAAc,EAAG,CACnC,IAAIC,EAAO,IAAIC,KAGfD,EAAKE,QAAQF,EAAKG,WAAajX,KAAKrB,MAAMkB,OAAOgX,YAAc,IAC/D,MAAMK,EAAU,CAAEC,QAASL,GAC3BP,EAAOa,IAAI,GAAGpX,KAAKrB,MAAMkB,OAAO6W,iBAAiB,EAAMQ,QAEvDX,EAAOa,IAAI,GAAGpX,KAAKrB,MAAMkB,OAAO6W,iBAAiB,GAIjDhB,qBACJ,MAAMa,EAAS,IAAIC,EAAAA,EAEnB,GAAIxW,KAAKrB,MAAMkB,OAAOwX,0BAA4B,EAAG,CACjD,IAAIP,EAAO,IAAIC,KAEfD,EAAKE,QAEDF,EAAKG,WAAajX,KAAKrB,MAAMkB,OAAOwX,0BAA4B,IAEpE,MAAMH,EAAU,CAAEC,QAASL,GAC3BP,EAAOa,IAAI,GAAGpX,KAAKrB,MAAMkB,OAAO6W,yBAAyB,EAAMQ,QAE/DX,EAAOa,IAAI,GAAGpX,KAAKrB,MAAMkB,OAAO6W,yBAAyB,IAKrE,qFCpIA,MA6EA,EA7E2D/X,IACvD,MAAM,MACF2Y,EAAK,aACL/B,EAAY,cACZC,EAAa,eACbU,EAAc,gBACdC,EAAe,gBACfC,EAAe,eACfC,EAAc,iBACdC,GACA3X,GACE,QAAE+X,EAAO,kBAAEa,EAAiB,YAAEC,EAAW,WAAEC,GAAe9Y,EAAMkB,QAChE,qBAAE6X,EAAoB,iBAAEC,GAAqBhZ,EAAMoB,UAEzDxB,EAAAA,WAAgB,KACZ,GAAIgX,EAAc,KAAAqC,EAAAC,EAEd,MAAMC,EAAQnZ,EAAMkB,OAAOkY,WAAa,UACxB,QAAhBH,EAAAI,OAAOC,iBAAS,IAAAL,GAAM,QAANC,EAAhBD,EAAkBhM,YAAI,IAAAiM,GAAtBA,EAAAK,KAAAN,EAAyB,CACrBjQ,MAAO,UACPwQ,cAAe,QACfC,YAAa,YACbC,WAAYP,OAGrB,CAACvC,IAEJ,MAAM+C,EAAc/Z,EAAAA,aAAkB,KAClC,MAAMga,EAAe/D,SAASgE,cAAc,iBACtCC,EAAOF,MAAAA,OAAY,EAAZA,EAAcG,qBAAqB,QAEhD,GAAID,MAAAA,GAAAA,EAAMtQ,QAAUoN,EAAc,KAAAoD,EAAAC,EAC9B,MAAMd,EAAQnZ,EAAMkB,OAAOkY,UACX,QAAhBY,EAAAX,OAAOC,iBAAS,IAAAU,GAAM,QAANC,EAAhBD,EAAkB/M,YAAI,IAAAgN,GAAtBA,EAAAV,KAAAS,EAAyB,CACrBhR,MAAO,UACPwQ,cAAe,QACfC,YAAa,cACbC,WAAYP,IAGpBzB,MACD,CAACA,EAAgBd,EAAc5W,IAElC,OACIJ,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACsa,EAAAA,MAAK,CAAChT,GAAI6Q,EAASoC,OAAQvD,EAAcwD,SAAUT,GAChD/Z,EAAAA,cAACya,EAAAA,YAAW,CAACC,OAAQX,GAAcd,GACnCjZ,EAAAA,cAAA,OAAKF,UAAW6X,GACZ3X,EAAAA,cAAC2a,EAAAA,UAAS,KACN3a,EAAAA,cAAA,MAAA4E,OAAAC,OAAA,GAASzE,EAAMwa,uBAAuBxa,GAAM,CAAEkH,GAAIlH,EAAMkH,KACpDtH,EAAAA,cAAA,OAAKF,UAAU,OAAOiZ,EAAM8B,aAK3C5D,EACGjX,EAAAA,cAAA,OAAKF,UAAW8X,GACZ5X,EAAAA,cAAA,UAAQF,UAAU,sBAAsBgF,QAASiT,GAC7C/X,EAAAA,cAAA,YAAOkZ,IAEVF,EACGhZ,EAAAA,cAAA,UAAQF,UAAU,8BAA6B,aAAaqZ,EAAsBrU,QAAS+S,GACvF7X,EAAAA,cAAA,QAAMF,UAAU,qCAAoC,cAAa,QAC5DsZ,IAITpZ,EAAAA,cAAAA,EAAAA,SAAA,OAIRA,EAAAA,cAAAA,EAAAA,SAAA,kRC/DT,MAAM8a,EAA2Djb,IAAA,IAAC,sBACrEkb,EAAqB,QACrBC,EAAO,UACPC,EAAS,YACTC,EAAW,YACXC,EAAW,MACXC,EAAK,OACLC,EAAM,mBACNC,GACHzb,EAAA,OACGG,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkW,GACLG,EACAF,EACAC,EACAE,EACAC,EACAC,EACAC,IAIIC,EAAsDzF,IAAA,IAAC,cAChE0F,EAAa,QACbjW,EAAO,MACP6V,EAAK,WACLK,EAAU,QACVC,EAAO,aACPC,GACH7F,EAAA,OACG9V,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK2W,GACLjW,EACA6V,EACAK,EACAC,EACAC,IAIIC,EAAsC5F,IAAA,IAAC,WAAE6F,EAAU,SAAEC,EAAQ,gBAAEC,EAAe,WAAEC,GAAYhG,EAAA,OACrGhW,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKgX,GACLG,GACGhc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkX,GACLC,EAAW/Z,KAAIga,GACZjc,EAAAA,cAACA,EAAAA,SAAc,CAACwH,IAAKyU,EAAU1a,KAAK0a,UAAUC,QAASD,EAAUA,gBAOxEE,EAAwCC,IAAA,IAAC,YAAEC,EAAW,OAAEC,GAAQF,EAAA,OACzEpc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKwX,GACLC,EAAOra,KAAI,CAACsa,EAAOnS,IAChBpK,EAAAA,cAAC4b,EAAiBhX,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWmS,QAKlCC,EAAwCC,IAAA,IAAC,YAAEC,EAAW,QAAEnX,EAAO,gBAAEoX,EAAe,aAAEC,GAAcH,EAAA,OACzGzc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK6X,GACLnX,EACAoX,EACAC,IAIIC,EAA+CC,IAAmE,IAAlE,gBAAEC,EAAe,gBAAEC,EAAe,OAAEV,EAAM,iBAAEW,GAAkBH,EAEvH,MAAMI,EAAuC,OAA3BF,EAAgB3B,OAAkB2B,EAAgB3B,OAAOjb,MAAMmB,KAAK4b,MAAMC,wBAA0B,EAChHC,EAAYH,EAAY,EAAI,gBAAkB,iBACpD,OACIld,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkY,EAAe,CAAEjd,UAAW,YAAYid,EAAgBjd,aAAaud,IAAW,aAAc,GAAGH,MACtGF,GAAmBhd,EAAAA,cAAC8a,EAA2BlW,OAAAC,OAAA,GAAKmY,IACpDV,GAAUtc,EAAAA,cAACmc,EAAkBvX,OAAAC,OAAA,GAAKyX,IAClCW,IAKAK,EAAoCC,IAAA,IAAC,UAAEC,EAAS,YAAEC,GAAaF,EAAA,OACxEvd,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK2Y,GACLC,GAAeA,EAAYxb,KAAI,CAACyb,EAAYtT,IAAUpK,EAAAA,cAAC6c,EAAqBjY,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWsT,QAkCtG,EA9B2DC,IAAA,IAAC,kBACxDC,EAAiB,OACjBC,EAAM,MACNC,EAAK,QACLC,EAAO,aACPC,EAAY,mBACZC,EAAkB,KAClBC,EAAI,WACJC,GACHR,EAAA,OACG3d,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAK+Y,GACPC,GAAU7d,EAAAA,cAACwc,EAAkB5X,OAAAC,OAAA,GAAKgZ,IAClCE,EACAD,GACG9d,EAAAA,cAAAA,EAAAA,SAAA,KACK8d,EACAG,GAGRD,GACGhe,EAAAA,cAAAA,EAAAA,SAAA,KACKge,EACAC,GAGRC,GAAQle,EAAAA,cAACsd,EAAgB1Y,OAAAC,OAAA,GAAKqZ,IAC9BC,GAAcA,+EChHvB,MAsCMC,EAAcA,CAAClE,EAA4BmE,EAAwBC,IAEjEte,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKwZ,GACNre,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKyZ,GACLpE,EAAKtM,MACLsM,EAAKqE,UACLrE,EAAKsE,YAMhBC,EAA4BA,CAC9BC,EACAC,EACAC,EACAC,EACAC,IAGIF,GACI5e,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK6Z,GACN1e,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK8Z,GACLE,GAAwBC,GACvBD,GACED,EAAmB7e,KAAKkC,KAAIlC,GACjBA,MAQ7Bgf,EAA4BA,CAC9BC,EACAC,EACAC,EACAL,EACAC,IAGII,GACIlf,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKma,GACNhf,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKoa,GACLC,EAAmBha,MACnB2Z,GAAwBC,GACvBD,GACEK,EAAmBC,MAAMld,KAAI,CAACmd,EAAMhV,KAAS,IAAAiV,EAEzC,OAAgE,IAA5DD,MAAAA,GAAW,QAAPC,EAAJD,EAAMjC,aAAK,IAAAkC,GAAO,QAAPA,EAAXA,EAAajf,aAAK,IAAAif,GAAM,QAANA,EAAlBA,EAAoB9d,YAAI,IAAA8d,GAAO,QAAPA,EAAxBA,EAA0BlC,aAAK,IAAAkC,OAAA,EAA/BA,EAAiCjC,yBAE7Bpd,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKua,EAAKE,UAAS,CAAE9X,IAAK4X,EAAK9X,IAAM8C,IACtCpK,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKua,EAAKG,UACVH,EAAKI,UACLJ,EAAKrf,KACLqf,EAAKjC,QAIV,UAQlCsC,EAA6BA,CAC/BC,EACAC,EACAC,EACAf,EACAC,IAGIc,GACI5f,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK6a,GACN1f,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK8a,GACLC,EAAoB1a,MACpB2Z,GAAwBC,GACvBD,GACEe,EAAoB7f,KAAKkC,KAAIlC,GAClBA,MAQnC,EAjI+CK,IAC3C,MAAM,OACFyf,EAAM,qBACNC,EAAoB,yBACpBC,EAAwB,WACxBC,EAAU,YACVC,EAAW,eACXvB,EAAc,eACdM,EAAc,gBACdU,EAAe,UACff,EAAS,UACTM,EAAS,WACTU,EAAU,KACVzF,EAAI,oBACJgG,EAAmB,mBACnBC,EAAkB,mBAClBC,EAAkB,WAClB/B,EAAU,YACVC,EAAW,MACX/E,EAAK,qBACLsF,EAAoB,cACpBC,GACA1e,EAEJ,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKgb,GACPtG,EACA6E,EAAYlE,EAA8BmE,EAAYC,GACvDte,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKob,GACLD,GAAcA,EAAWpW,OAAS,EAAI5J,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKib,GAAuBC,GAAmC,GAC1GtB,EAA0BC,EAAgBC,EAAWwB,EAAoBtB,EAAsBC,GAC/FC,EAA0BC,EAAgBC,EAAWmB,EAAoBvB,EAAsBC,GAC/FW,EAA2BC,EAAiBC,EAAYO,EAAqBrB,EAAsBC,uvBCXpH,MAAMuB,UAAmCrgB,EAAAA,UAUrCG,YAAYC,GACRC,MAAMD,GAENqB,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAMyD,QAAQkK,QAAQmB,kBAC3BzN,KAAKrB,MAAM+O,aACX1N,KAAKrB,MAAMgO,WAGf3M,KAAKmB,MAAKqH,EAAA,GAAQxI,KAAK6e,eAEvB/Q,EAAAA,EAAAA,KACI,IAAM9N,KAAKjB,WACX,KACIiB,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,6CACnCnH,KAAK6H,SAAS,CACVuR,QAAS7a,EAAAA,cAACugB,EAAAA,GAAc,CAAC3a,MAAOnE,KAAKrB,MAAMoB,UAAUgf,8BAtB3D,eACN,MAAkD,YAA3ClN,GAAAA,CAAI7R,KAAKrB,MAAO,uBA2BjB,sCACN,MAAMqgB,EAAiBnN,GAAAA,CAAI7R,KAAKrB,MAAO,mCAEjCsgB,IAAwBD,GAAiBA,EAAeE,sBACxDC,GAAYC,EAAAA,EAAAA,IAAiBpf,KAAKrB,MAAMyD,QAAQkK,SAChD+S,EAA+BxN,GAAAA,CAAI7R,KAAKrB,MAAO,6DAErD,OACIsgB,IACkC,QAAjCI,GACqC,QAAjCA,GAA0CF,GACT,QAAjCE,IAA2CF,GAIjDpR,sBACHC,EACAC,GAEA,OAAIjO,KAAKmB,QAAU8M,GAAajO,KAAKrB,MAAMmB,OAASkO,EAAUlO,KAM3DyG,SACH,IAAKvG,KAAKsf,gCACN,OAAO/gB,EAAAA,cAAAA,EAAAA,SAAA,MAGX,MAAM,UAAEF,EAAS,QAAEyF,EAAO,MAAEoL,GAAUlP,KAAKrB,MAAMkB,OAC3CiS,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACbigB,2BAA4B,CACxB7M,YAAa/R,KAAKrB,MAClBN,UAAWqE,GAAAA,CAAW,mCAAoCrE,IAE9DyF,QAASA,GACLvF,EAAAA,cAACghB,EAAAA,QAAO,CAAClhB,UAAU,4CAA4CmhB,WAAY1b,EAAQlB,IAAKtE,KAAMwF,EAAQxF,OAE1G8a,QAASpZ,KAAKmB,MAAMiY,QACpBlK,MAAOlP,KAAKmB,MAAMse,wBACdlhB,EAAAA,cAAC0U,EAAAA,EAAc9P,OAAAC,OAAA,GACP,CACA8L,MAAAA,EACAE,aAAezG,GAAmBhB,MAClCwH,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,QACnC5K,iBAAkB1B,KAAK0B,sBAMvC,OAAO1B,KAAKrB,MAAMkU,WAAWf,GAGzB+M,aACJ,MAAMa,EAA4B7N,GAAAA,CAAI7R,KAAKrB,MAAO,uBAElD,IAAIya,EACAqG,GAAyB,EAE7B,GAAIzf,KAAKjB,SACLiB,KAAKrB,MAAMgO,UAAUxF,MAAM,6CAC3BiS,EAAU7a,EAAAA,cAACugB,EAAAA,GAAc,CAAC3X,MAAOnH,KAAKrB,MAAMoB,UAAUgf,8BACnD,GACiB,IAApBW,EAAQC,SACgB,IAAxBD,EAAQE,aAC0B,IAAlCF,EAAQG,uBAC8B,IAAtCH,EAAQI,0BAGR1G,EAAU7a,EAAAA,cAACugB,EAAAA,GAAc,CAAC3X,MAAOnH,KAAKrB,MAAMoB,UAAUggB,2BACnD,CAEH,MAAM,2BAAEC,EAA0B,4BAAEC,GAAgCjgB,KAAKrB,MAAMoB,UACzEmgB,EAAerO,GAAAA,CAAI7R,KAAKrB,MAAO,oCAC/BwhB,EAAiBtO,GAAAA,CAAI7R,KAAKrB,MAAO,2CACvC,IAAIyhB,EAAiB,EAGjBA,EADsC,IAAtCV,EAAQI,0BACSJ,EAAQE,YAAcF,EAAQC,QAE9BD,EAAQI,0BAA4BJ,EAAQG,sBAGjE,MAAMQ,EAA0B,GAAGF,EAAeC,EAAeE,QAAQ,GAAIJ,KAE7ET,GAAyB,EACzBrG,EACI7a,EAAAA,cAACgiB,EAAAA,GAAe,CACZC,cAAeR,EACf7b,MAAOkc,EACPI,eAAgBR,EAChB5hB,UAAU,8CAKtB,MAAO,CAAE+a,QAAAA,EAASqG,uBAAAA,KA/HZvR,EAAAA,EAAAA,IAAA,CAAT8F,EAAAA,IAAQ,8BA4BC9F,EAAAA,EAAAA,IAAA,CAAT8F,EAAAA,IAAQ,oDAuGb,oFClKA,MAYA,EAZuFrV,IACnF,MAAM,2BAAEigB,EAA0B,QAAE9a,EAAO,QAAEsV,EAAO,MAAElK,GAAUvQ,EAEhE,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKwb,GACP9a,EACAsV,EACAlK,2DCDN,MAAM4P,EAA4D1gB,IAAA,IAAC,MAAE+I,GAAO/I,EAAA,OAC/EG,EAAAA,cAAA,QAAMF,UAAU,2CAA2C8I,IAGlDoZ,EAA6DlM,IAAwD,IAAvD,cAAEmM,EAAa,eAAEC,EAAc,MAAEtc,EAAK,UAAE9F,GAAWgW,EAC1H,OACI9V,EAAAA,cAAA,OAAKF,UAAWA,GACXmiB,EACDjiB,EAAAA,cAAA,QAAMF,UAAU,2CAA2C8F,GAC1Dsc,uECEb,MAkBMnS,EAAoBA,CAACC,EAAwB7M,KAC/C,IAAK6M,GAAgC,IAApBA,EAASpG,OACtB,OAAO,KAEX,MAAMqG,EAAuC,GACvCnN,GAAUuM,EAAAA,EAAAA,kBAAiB,QAASlM,EAAmB,IAiB7D,OAfA6M,EAASrF,SAAQ,CAACuF,EAAM9F,KACpBtH,EAAQC,cAAcC,MAAQkN,EAAKC,SACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBC,EAAmBL,GACvDsN,EAAoC,CACtCC,UAAWH,EAAKG,UAChBvQ,UAAW,yCACXqQ,SAAUD,EAAKC,SACfI,QAASL,EAAKK,QAAQC,eACtBC,aAAcP,EAAKO,aACnBzH,KAAM,OACN0H,qBAAsB3J,GAE1BkJ,EAAc5C,KAAK+C,MAGhBH,GAGX,EA3CoFpQ,IAK/E,IALgF,MACjF8Q,EAAK,iBACLxN,EAAgB,aAChB0N,EAAY,eACZD,GACH/Q,EACG,GAAqB,IAAjB8Q,EAAM/G,OACN,OAAO,KAEX,MAAMqG,EAAgBF,EAAkBY,EAAOxN,GAC/C,OACInD,EAAAA,cAAA,OAAKF,UAAU,2CACVmQ,GAAiBA,EAAcrG,OAAS,EACrC5J,EAAAA,cAAC8Q,EAAAA,GAAc,CAACH,MAAOV,EAAec,UAAW,CAAEF,aAAAA,EAAcD,eAAAA,KACjE,wJClCT,MAAMuR,EAA0C/hB,GAC5CJ,IAAAA,cAAA,KAAGF,UAAU,2BAA2BM,EAAML,2kBCsCzD,IAAMqiB,EAAN,cAA4BpiB,EAAAA,UAOxBG,YAAYC,GACRC,MAAMD,GAiHH,KAAA8Q,oBAAuB9H,GAA0C3H,KAAKrB,MAAMkB,OAAOiE,QAASxF,KAAOqJ,EAAMC,OAAOzD,MAEhH,KAAAyc,0BAA6BjZ,GAC/B3H,KAAKrB,MAAMkB,OAAOghB,cAAeviB,KAAOqJ,EAAMC,OAAOzD,MAEzC,KAAA2c,cAAgB,KAC7B,GAAI9gB,KAAKrB,MAAMyD,QAAQkK,QAAQyU,KAAKC,kBAAoBhhB,KAAKmB,MAAM8f,QAAS,CACxEjhB,KAAK6H,SAAS,CAAEoZ,SAAS,IACzB,MAAM9U,EAAQ,IAAI+U,EAAAA,kBAAkBlhB,KAAKrB,MAAMyD,QAAQkK,QAAQC,cAE/D4U,EAAAA,EAAAA,cAAahV,EAAOnM,KAAKrB,MAAMyD,QAAQqK,eAClC2U,MAAK,KACEtZ,EAAAA,GAASC,WACTiQ,OAAOqJ,SAASje,OAAOiM,EAAAA,GAAoB,UAAWrP,KAAKrB,MAAMyD,QAAQqK,gBAAkB,OAGlG6U,OAAOna,IACJnH,KAAK6H,SAAS,CAAEoZ,SAAS,IACzBjhB,KAAKrB,MAAMgO,UAAUxF,MAAMA,EAAMoa,SACjCvhB,KAAKrB,MAAMgO,UAAUE,MAAM,qCAnIvC7M,KAAKmB,MAAQ,CAAE8f,SAAS,GACxBjhB,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAMyD,QAAQkK,QAAQmB,kBAC3BzN,KAAKrB,MAAM+O,aACX1N,KAAKrB,MAAMgO,WAEf,MAAMtL,GAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAK0B,iBAAkB8f,EAAAA,kBAAkBC,QACnFzhB,KAAK0hB,yBAA0BjgB,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkBL,GAC7EA,EAAQC,cAAcC,MAAQigB,EAAAA,kBAAkBG,OAChD3hB,KAAK4hB,yBAA0BngB,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkBL,GAC7EA,EAAQC,cAAcC,MAAQigB,EAAAA,kBAAkBK,kBAChD7hB,KAAK8hB,8BAA+BrgB,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkBL,GAClFA,EAAQC,cAAcC,MAAQigB,EAAAA,kBAAkBO,iBAChD/hB,KAAKgiB,4BAA6BvgB,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkBL,GAG7E0M,sBAAsBC,EAAoDC,GAC7E,OAAIjO,KAAKmB,QAAU8M,GAAajO,KAAKrB,MAAMmB,OAASkO,EAAUlO,KAM3DyG,SAAM,IAAA0b,EAAAzQ,EACT,MACI3R,QAAQ,UAAExB,EAAS,QAAEyF,EAAO,cAAE+c,GAAe,UAC7C9gB,EACAqC,SAAS,cACLqK,EACAH,SACIyU,MAAM,UAAEmB,EAAS,gBAAElB,KAE1B,KACDlhB,GACAE,KAAKrB,MAEHwjB,EAAW9S,EAAAA,GAAoB,eAAgB5C,GACrD,IAAI2V,EAAiB,GAAG/S,EAAAA,GAAoB,cAAe5C,yBACvD3E,EAAAA,GAASC,YACTqa,EAAiB,GAAGpK,OAAOqJ,SAASgB,SAASD,KAEjD,MAAME,EAAY,GAAGJ,QAAgBE,IAC/BG,EAAgBC,GAAAA,CAAU,oBAAqBnkB,GAC/CokB,EAAc3iB,EAAK2iB,YACnBC,EAAoBD,EAAYtiB,aAAqDkG,IAA3Coc,EAAYtiB,OAAOwiB,oBAC7D5gB,EAA8C,QAA3BkgB,EAAGniB,EAAKiC,2BAAmB,IAAAkgB,OAAA,EAAxBA,EAA0B9hB,OAEhDuR,GACqB,QAAtBF,EAAAxR,KAAKrB,MAAMyD,QAAQC,WAAG,IAAAmP,GAAQ,QAARA,EAAtBA,EAAwB3R,cAAM,IAAA2R,OAAA,EAA9BA,EAAgClP,4CAChCP,MAAAA,OAAmB,EAAnBA,EAAqBQ,mBADuD,EAE3EuP,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACbN,UAAWkkB,EACX5B,cAAe,CACX5O,YAAa/R,KAAKrB,MAClBN,UAAWkkB,GAEfvQ,eAAgBN,GACZnT,EAAAA,cAAC8Q,EAAAA,GAAa,CAAChR,UAAU,0BAA0BC,KAAMyB,EAAUkS,sCAEvEqK,SAAUtc,KAAKrB,MAAMyD,QAAQkK,QAAQsW,OAAOC,UAAoC,aAAxBJ,MAAAA,OAAW,EAAXA,EAAaK,QACrEhf,SAAU4e,GAAqB5e,GAAWA,EAAQxF,MAC9CC,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,6BACVuE,IAAKkB,EAAQlB,IACbtE,KAAMwF,EAAQxF,KACdgR,UAAW,CAAEmB,OAAQzQ,KAAKyP,oBAAqBN,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG1FuU,cAAe6B,GAAqB7B,GAAiBA,EAAcviB,MAC/DC,EAAAA,cAAC8Q,EAAAA,GAAa,CACVhR,UAAU,6BACVuE,IAAKie,EAAcje,IACnBtE,KAAMuiB,EAAcviB,KACpBgR,UAAW,CAAEmB,OAAQzQ,KAAK4gB,0BAA2BzR,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAGhGyW,YAAa/B,GACTziB,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CAAC/E,UAAU,4BAA4B2kB,KAAMV,GAAetiB,KAAK0hB,yBACnE1hB,KAAKrB,MAAMoB,UAAUkjB,uBAG9BC,YAAaR,GAAqBnkB,EAAAA,cAACmiB,EAAU,CAACpiB,KAAMyB,EAAUojB,qBAC9DC,cAAeV,GAAqB1B,GAChCziB,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAU,yBACVqF,SAAUgO,EACVrO,QAASrD,KAAK8gB,eACV9gB,KAAK4hB,yBAER5hB,KAAKrB,MAAMoB,UAAUkjB,uBAG9BI,YAAaX,GACTnkB,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAU,6BACV2kB,KAAM3T,EAAAA,GAAoB,UAAWrP,KAAKrB,MAAMyD,QAAQqK,gBACpDzM,KAAK8hB,8BAER9hB,KAAKrB,MAAMoB,UAAUujB,qBAG9BC,WAAYb,GACRnkB,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CAAC/E,UAAU,2BAA2B2kB,KAAMb,GAAcniB,KAAKgiB,4BACjEhiB,KAAKrB,MAAMoB,UAAUyjB,wBAKlC,OAAOxjB,KAAKrB,MAAMkU,WAAWf,KAtH/B6O,GAAazS,EAAAA,EAAAA,IAAA,CADlBE,EAAAA,IACKuS,GAkJN,oFCtLA,MAiCA,EAjC6DhiB,IACzD,MAAM,cACFgiB,EAAa,QACb7c,EAAO,cACP+c,EAAa,WACbkC,EAAU,WACVG,EAAU,aACVE,EAAY,YACZC,EAAW,UACXE,EAAS,QACTjH,EAAO,eACPtK,GACArT,EAEJ,OAAI2d,GACA3d,EAAMyD,QAAQuK,UAAUxF,MAAM,mDACvB,MAIP5I,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKud,GACP3O,EACA6O,EACA/c,EACAuf,EACAH,EACAK,EACAH,EACAL,2ECcN,MAAMU,EAAqB9kB,IAC9B,MAAM0C,GAAUuM,EAAAA,EAAAA,kBAAiB,QAASjP,EAAM+C,iBAAmB8f,EAAAA,kBAAkBkC,oBAC/EC,GAA8BliB,EAAAA,EAAAA,wBAAuB9C,EAAM+C,iBAAmBL,GACpFA,EAAQC,cAAcC,MAAQigB,EAAAA,kBAAkBoC,mBAChD,MAAMC,GAA8BpiB,EAAAA,EAAAA,wBAAuB9C,EAAM+C,iBAAmBL,GACpFA,EAAQC,cAAcC,MAAQigB,EAAAA,kBAAkBsC,kBAChD,MAAMC,GAAgCtiB,EAAAA,EAAAA,wBAAuB9C,EAAM+C,iBAAmBL,GACtF,MAAO,CACH2iB,MAAO,CACHphB,IAAKiW,EAAAA,MACLxa,UAAW,0BACX4a,OAAQta,EAAMslB,SACdC,gBAAiB,aACjBpL,OAAQna,EAAMma,OACdqL,eAAgBxlB,EAAMylB,WAE1B5M,YAAa,CAAE5U,IAAKoW,EAAAA,YAAa3a,UAAW,iCAAkC4a,OAAQta,EAAMslB,UAC5FI,YAAa,CAAEzhB,IAAK0hB,EAAAA,YAAajmB,UAAW,kCAC5CkmB,UAAW,CAAE3hB,IAAKsW,EAAAA,UAAW7a,UAAW,gCACxCmmB,aACIjmB,IAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CAAC/E,UAAU,2BAA2BgF,QAAS1E,EAAMslB,UAAcN,GACrEhlB,EAAMoB,UAAU0kB,wBAGzBC,aACInmB,IAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAU,2BACVgF,QAAS1E,EAAMgmB,SACfjhB,UAAW/E,EAAMimB,SACbf,GAEHllB,EAAMoB,UAAU8kB,sBAGzB/gB,QAASvF,IAAAA,cAAA,KAAGF,UAAU,6BAA6BM,EAAMoB,UAAU+kB,qBACnEC,MAAOpmB,EAAMomB,MACbC,aAAc,CAAE3mB,UAAW,mCAC3B4mB,SACI1mB,IAAAA,cAAA,QAAA4E,OAAAC,OAAA,CACI/E,UAAU,8BACN0lB,EAA6B,CACjC/f,KAAK,WACL4gB,QAASjmB,EAAMimB,QAAO,eACRjmB,EAAMimB,QACpB3gB,SAAUtF,EAAMumB,WAGxBC,UAAW5mB,IAAAA,cAAA,KAAGF,UAAU,2BAA2BM,EAAMoB,UAAUqlB,gvBClE3E,MAAMC,UAAqB9mB,EAAAA,UAKvBG,YAAmBC,GACfC,MAAMD,GACNqB,KAAKslB,QAAUtlB,KAAKslB,QAAQC,KAAKvlB,MACjCA,KAAKwlB,QAAUxlB,KAAKwlB,QAAQD,KAAKvlB,MACjCA,KAAKylB,iBAAmBzlB,KAAKylB,iBAAiBF,KAAKvlB,MACnDA,KAAK0lB,UAAYnnB,EAAAA,YACjByB,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAMyD,QAAQkK,QAAQmB,kBAC3BzN,KAAKrB,MAAM+O,aACX1N,KAAKrB,MAAMgO,WAEf,IAAIgZ,EAAS3lB,KAAKrB,MAAMyD,QAAQkK,QAAQsZ,IAAIC,WAAWF,OACnDG,GAAY,EAChB,GAAIH,EAAQ,CACRA,EAASA,EAAOI,UAAU,GAC1B,MAAMC,EAAOL,EAAOplB,MAAM,KAC1B,IAAK,MAAM0lB,KAAOD,EAAM,CACpB,MAAME,EAAWD,EAAI1lB,MAAM,KAE3B,GADAulB,EAA4B,mBAAhBI,EAAS,IAA2C,SAAhBA,EAAS,GACrDJ,EACA,OAKZ9lB,KAAKmB,MAAQ,CACTglB,YAAaL,EACblB,SAAS,EACT3D,SAAS,GAIVlT,sBAAsBC,EAAkDC,GAC3E,OAAIjO,KAAKmB,QAAU8M,GAAajO,KAAKrB,MAAMmB,OAASkO,EAAUlO,KAM3DyG,SACH,MACI1G,QAAQ,UAAExB,EAAS,WAAE+nB,GAAY,UACjCrmB,EACAuX,OAAO,aAAE+O,GACTvmB,MAAM,YAAE2iB,GACRrgB,SACIkK,SACIyU,MAAM,gBAAEC,MAGhBhhB,KAAKrB,MACH4jB,EAAgBC,GAAAA,CAAU,mBAAoBnkB,GAE9CyT,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACbN,UAAWkkB,EACX8C,aAAc,CACVtT,YAAa/R,KAAKrB,MAClBN,UAAWkkB,GAEfjG,QAAgC,YAAvBmG,EAAYK,OACrBwD,aAA4B,IAAfF,GACT7nB,EAAAA,cAAC2E,EAAAA,OAAM,CAAC7E,UAAU,2BAA2BgF,QAASrD,KAAKslB,QAAS/hB,SAAUvD,KAAK0lB,WAC9E3lB,EAAUwmB,4BAGnBvC,MACIhD,GACAyB,EAAYtiB,aACsBkG,IAAlCoc,EAAYtiB,OAAOqmB,aACnB/C,EAAAA,EAAAA,GAAkB,CACd1jB,UAASyI,EAAA,GAAOzI,GAChBqkB,UAAWpkB,KAAK0lB,UAChBd,QAAS5kB,KAAKmB,MAAMyjB,QACpB9L,OAAQ9Y,KAAKmB,MAAMglB,YACnBpB,MAAOsB,EACP3kB,iBAAkB1B,KAAK0B,iBACvBuiB,SAAUjkB,KAAKslB,QACfX,SAAU3kB,KAAKwlB,QACfN,QAASllB,KAAKylB,qBAI1B,OAAOzlB,KAAKrB,MAAMkU,WAAWf,GAGzBwT,UACJtlB,KAAK6H,SAAS,CAAEse,aAAcnmB,KAAKmB,MAAMglB,YAAavB,SAAS,IAG3DY,UACJ,GAAIxlB,KAAKrB,MAAMyD,QAAQkK,QAAQyU,KAAKC,kBAAoBhhB,KAAKmB,MAAM8f,QAAS,CACxEjhB,KAAK6H,SAAS,CAAEoZ,SAAS,IACzB,MAAM9U,EAAQ,IAAI+U,EAAAA,kBAAkBlhB,KAAKrB,MAAMyD,QAAQkK,QAAQC,cAE/D4U,EAAAA,EAAAA,cAAahV,EAAOnM,KAAKrB,MAAMyD,QAAQqK,eAClC2U,MAAKqF,IACEzmB,KAAKrB,MAAMkB,OAAO6mB,kBAClB1O,OAAOqJ,SAASje,QAAOujB,EAAAA,EAAAA,IAAW,UAAW3mB,KAAKrB,MAAMyD,QAAQqK,gBAAkB,KAElFma,EAAAA,EAAAA,qBAAoB,CAAEC,cAAe7mB,KAAKrB,MAAMyD,QAAQqK,eAAiBga,EAAKD,YAAc,IACvFpF,MAAK0F,IACF9mB,KAAKrB,MAAMyD,QAAQqK,cAAcsa,OAC7B,IAAIC,EAAAA,oBAAoBhnB,KAAKrB,MAAMyD,QAAQkK,QAAQC,aACnDua,MAGPxF,OAAOna,IACJnH,KAAKrB,MAAMyD,QAAQqK,cAAcsa,OAC7B,IAAIC,EAAAA,oBAAoBhnB,KAAKrB,MAAMyD,QAAQkK,QAAQC,aACnDka,GAEJzmB,KAAKrB,MAAMgO,UAAUxF,MAAMA,EAAMoa,SACjCvhB,KAAKrB,MAAMgO,UAAUE,MAAM,sCAI1CyU,OAAOna,IACJnH,KAAK6H,SAAS,CAAEoZ,SAAS,IACzBjhB,KAAKrB,MAAMgO,UAAUxF,MAAMA,EAAMoa,SACjCvhB,KAAKrB,MAAMgO,UAAUE,MAAM,oCAKnC4Y,mBACJzlB,KAAK6H,SAAS,CAAE+c,SAAU5kB,KAAKmB,MAAMyjB,WAI7C,oFC9JA,MAwBA,EAxB2DjmB,IACvD,MAAM,aAAE0mB,EAAY,YAAEiB,EAAW,MAAEtC,EAAK,QAAE1H,GAAY3d,EAEtD,OAAQ2d,GAAW0H,EACfzlB,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKiiB,GACPiB,EACD/nB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK4gB,EAAMA,OACZzlB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK4gB,EAAMxM,aAAcwM,EAAMlgB,SACpCvF,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK4gB,EAAMO,WACXP,EAAMe,MACPxmB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK4gB,EAAMgB,cACXhB,EAAMiB,SACNjB,EAAMmB,YAGf5mB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK4gB,EAAMK,aACXL,EAAMU,aACNV,EAAMQ,gBAInB,sKCjBD,MAAMyC,EAAgG7oB,IAKxG,IALyG,MAC1GqF,EAAK,YACL4K,EAAW,UACXhQ,EAAS,eACT6oB,GACH9oB,EACG,OACIG,EAAAA,cAAA,MAAIF,UAAWA,GACVoF,GAASlF,EAAAA,cAAA,KAAGF,UAAW6oB,GAAiBzjB,GACzClF,EAAAA,cAAA,SAAI8P,0kBCiBT,MAAM8Y,EAA0B,gCAOvC,MAAMC,UAAiC7oB,EAAAA,UAInCG,YAAYC,GACRC,MAAMD,GA4IO,KAAA0oB,iBAAoB1f,IACjC3H,KAAK6H,SAAS,CACVyf,sBAAuB3f,EAAMC,OAAOgd,WAI3B,KAAA2C,2BAA6B,KAC1CvnB,KAAK6H,SAAS,CACV2f,2BAA4BxnB,KAAKmB,MAAMqmB,6BAI9B,KAAA7C,SAAW1Y,MAAAA,IAA2D,IAAAwb,EAAAC,EACnF,MAAM,QAAEtlB,EAAO,KAAEtC,EAAI,UAAEC,GAAcC,KAAKrB,OACpC,iBAAEgpB,EAAgB,oCAAEC,GAAwC7nB,EAC5D8nB,EAAqE,QAApDJ,EAAiC,QAAjCC,EAAG5nB,EAAKgoB,mBAAmB3nB,cAAM,IAAAunB,OAAA,EAA9BA,EAAgCK,yBAAiB,IAAAN,EAAAA,EAAI,GAE/E,UACUO,EAAAA,EAAAA,sBAAqB,CAAEnB,cAAezkB,EAAQqK,eAAiBob,GACrE7nB,KAAK6H,SAAS,CACVogB,kBAAkB,EAClBC,oBAAoB,EACpBC,kBAAc9hB,EACd+hB,oBAAqBR,IAE3B,MAAAS,GACEroB,KAAK6H,SAAS,CACVqgB,oBAAoB,EACpBD,kBAAkB,EAClBE,aAAcR,EACdS,yBAAqB/hB,MAzK7BrG,KAAKmB,MAAQ,CACT+mB,oBAAoB,EACpBD,kBAAkB,EAClBX,uBAAuB,EACvBE,2BAA2B,EAC3BW,kBAAc9hB,EACd+hB,yBAAqB/hB,GAItBE,SACH,MAAM,iBACF0hB,EAAgB,mBAChBC,EAAkB,sBAClBZ,EAAqB,0BACrBE,EAAyB,aACzBW,EAAY,oBACZC,GACApoB,KAAKmB,OACH,UAAEpB,EAAS,KAAED,EAAI,OAAED,GAAWG,KAAKrB,OACnC,QAAEmF,EAAO,eAAEwkB,GAAmBzoB,GAC9B,0BAAE0oB,GAA8BxoB,GAChC,mBAAE+nB,GAAuBhoB,EACzB0oB,EAAYxoB,KAAKyoB,YAAYX,EAAmB3nB,QACtD,IAAIgH,EAA4BghB,EAG3BK,GAA2C,YAA9BV,EAAmBhF,SACjC3b,EAAQohB,GAEZ,MAAMG,EAAaF,GAAalB,EAE1BxV,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACbgqB,8BAA+B,CAC3B5W,YAAa/R,KAAKrB,MAClBN,UAAWqE,GAAAA,CAAWykB,EAAiBA,IAE3CrjB,QAASvF,EAAAA,cAACoE,EAAAA,GAAIQ,OAAAC,OAAA,CAAC/E,UAAW,GAAG8oB,cAAgCrjB,IAC7DskB,oBAAqBpoB,KAAK4oB,sBAAsBzhB,EAAOihB,GACvDS,mBAAoB7oB,KAAK8oB,2BACzBC,uBAAwBb,GACpB3pB,EAAAA,cAAA,OAAKF,UAAW,GAAG8oB,gBACf5oB,EAAAA,cAAA,SACIF,UAAW,GAAG8oB,wBACdnjB,KAAK,WAAU,aACHjE,EAAUipB,uBACtB/kB,SAAUjE,KAAKqnB,mBAEnB9oB,EAAAA,cAAA,QAAMF,UAAW,GAAG8oB,qBAAoCpnB,EAAUkpB,6BAClE1qB,EAAAA,cAAA,KAAGF,UAAW,GAAG8oB,oBAAmC5f,KAAK,SAASlE,QAASrD,KAAKunB,4BAC3ExnB,EAAUipB,yBAIvBE,oBACI3qB,EAAAA,cAACsa,EAAAA,MAAK,CACFxa,UAAW,GAAG8oB,WACdrO,OAAQ0O,EACR2B,mBAAmB,SACnBC,iBAAiB,SACjBC,WAAS,EACTC,MAAM,EACNrQ,OAAQjZ,KAAKunB,2BAA0B,aAC3BxnB,EAAUipB,wBAEtBzqB,EAAAA,cAACya,EAAAA,YAAW,CAACC,OAAQjZ,KAAKunB,4BAA6BxnB,EAAUwpB,4BACjEhrB,EAAAA,cAAC2a,EAAAA,UAAS,KACN3a,EAAAA,cAACuJ,EAAAA,GAA0B,CAACxJ,KAAMgqB,MAI9C5D,aAAcuD,GACV1pB,EAAAA,cAAA,OAAKF,UAAW,GAAG8oB,uBACf5oB,EAAAA,cAAC2E,EAAAA,OAAM,CACHG,QAASrD,KAAK2kB,SACdtmB,UAAW,GAAG8oB,6BACd5f,KAAK,SAAQ,aACDxH,EAAUypB,mBACtB/lB,MAAO1D,EAAUypB,mBACjB9lB,UAAWglB,EAAU,iBACLA,GAEf3oB,EAAUypB,uBAM3B,OAAOxpB,KAAKrB,MAAMkU,WAAWf,GAGzB8W,sBAAsBT,EAAkCC,GAC5D,IAAIqB,EAAmC,KAMvC,OALItB,EACAsB,EAAkBlrB,EAAAA,cAACmrB,EAAAA,MAAK,CAACC,MAAM,UAAUxB,GAClCC,IACPqB,EAAkBlrB,EAAAA,cAACmrB,EAAAA,MAAK,CAACC,MAAM,WAAWvB,IAEvCqB,EAGHX,2BACJ,MAAM,OAAEjpB,GAAWG,KAAKrB,MAClBirB,EAA6B,GAC7Bf,EAAqBhpB,EAAOgpB,mBAElC,OAAKA,EAIEA,EAAmBroB,KAAI,CAAC6N,EAAawb,KAAQ,IAAAC,EAChD,OACIvrB,EAAAA,cAAA,OAAKwH,IAAK8jB,EAAMxrB,UAAW,GAAG8oB,qBAC1B5oB,EAAAA,cAACoE,EAAAA,GAAI,CAACtE,UAAW,GAAG8oB,kBAAiC7oB,KAAM+P,EAAYvK,UACvEvF,EAAAA,cAAA,UAC6B,QAD7BurB,EACKzb,EAAY0b,oBAAY,IAAAD,OAAA,EAAxBA,EAA0BtpB,KAAI,CAACwpB,EAAaC,IAErC1rB,EAAAA,cAAC0oB,EAAsC,CACnClhB,IAAKkkB,EACL5rB,UAAW,GAAG8oB,oBACdD,eAAgB,GAAGC,gBACnB1jB,MAAOumB,EAAYlS,MACnBzJ,YAAa2b,EAAY1rB,cAf1CsrB,EAyBPnB,YAAY1H,GAChB,OACKmJ,EAAAA,iBAAiBC,kBAAkBpJ,KAAU1Z,EAAAA,iBAAiB+iB,cAAcrJ,EAAKgH,qBAAuC,IAAjBhH,EAAKsJ,SAwCzH,qFCrNA,MAsBA,EAtB2E1rB,IACvE,MAAM,8BACFgqB,EAA6B,QAC7B7kB,EAAO,oBACPskB,EAAmB,mBACnBS,EAAkB,uBAClBE,EAAsB,oBACtBG,EAAmB,aACnBxE,GACA/lB,EACJ,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKulB,GACP7kB,EACAskB,EACAS,EACAE,EACAG,EACAxE,0HCbN,MAAM4F,EAAwElsB,IAKhF,IALiF,wBAClFmsB,EAAuB,6BACvBC,EAA4B,iBAC5B9oB,EAAgB,QAChB+oB,GACHrsB,EACG,MAAMiD,GAAoBuM,EAAAA,EAAAA,kBAAiB,QAASlM,EAAmB,kBACjE4D,GAAa7D,EAAAA,EAAAA,wBAAuBC,EAAmBL,GAE7D,OACI9C,EAAAA,cAAA,SAAA4E,OAAAC,OAAA,CACIY,KAAK,SACL3F,UAAU,8CAA6C,aAC3CmsB,EACZnnB,QAASonB,GACLnlB,GAEHilB,SCbN,MAAMG,UAA8BnsB,EAAAA,cAA3CG,cAAA,oBAeqB,KAAA4P,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASpG,OACtB,OAAO,KAEX,MAAMqG,EAAuC,GAoB7C,OAnBAD,EAASrF,SAAQ,CAACuF,EAAM9F,KAEpB,MAAMtH,GAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAKrB,MAAM+C,iBAAkB,GAAI,IACrEgN,EAAWD,EAAKC,SAAWD,EAAKC,SAAW,GACjDrN,EAAQC,cAAcC,MAAQmN,EAC9B,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAKrB,MAAM+C,iBAAkBL,GACjEsN,EAAoC,CACtCC,UAAWH,EAAKG,UAChBvQ,UAAW,OACXqQ,SAAUD,EAAKC,SACfI,QAASL,EAAKK,QAAQC,eACtBC,aAAcP,EAAKO,aACnBzH,KAAM,OACN0H,qBAAsB3J,EACtBjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAKrB,MAAM+C,iBAAkBL,EAASqN,IAEpEF,EAAc5C,KAAK+C,MAGhBH,GAtCJjI,SACH,MAAMiI,EAAgBxO,KAAKsO,kBAAkBtO,KAAKrB,MAAMuQ,OACxD,OACI3Q,EAAAA,cAAA,QAAMF,UAAU,mCACXmQ,GAAiBA,EAAcrG,OAAS,EACrC5J,EAAAA,cAAC8Q,EAAAA,GAAc,CACXH,MAAOV,EACPc,UAAW,CAAEF,aAAcpP,KAAKrB,MAAMyQ,aAAcD,eAAgBnP,KAAKrB,MAAMwQ,kBAEnF,4kBCOpB,MAAMyb,UAAyBrsB,EAAAA,cAS3BG,YAAmBC,GACfC,MAAMD,GAPO,KAAA+C,kBAAsCiM,EAAAA,EAAAA,oBACnD3N,KAAKrB,MAAMyD,QAAQkK,QAAQmB,kBAC3BzN,KAAKrB,MAAM+O,aACX1N,KAAKrB,MAAMgO,WA2FR,KAAAmD,qBAAwBC,GAAuBpI,IAA8C,IAAAkjB,EAC/D,QAAjCA,EAAI7qB,KAAKrB,MAAMkB,OAAOirB,mBAAW,IAAAD,GAA7BA,EAAgC9a,KAChC/P,KAAKrB,MAAMkB,OAAOirB,YAAY/a,GAAWrB,SAAW/G,EAAMC,OAAOzD,QAQlE,KAAA4mB,oBAAuBpjB,IAC1B3H,KAAKrB,MAAMkB,OAAOuZ,QAAUzR,EAAMC,OAAOzD,OAjGzCnE,KAAKmB,MAAQ,CAAE6pB,SAAS,GACxBhrB,KAAKirB,UAAY1sB,EAAAA,YACjByB,KAAKkrB,WAAalrB,KAAKkrB,WAAW3F,KAAKvlB,MAGpC6N,oBACH,MAAM,QAAEzL,GAAYpC,KAAKrB,MAErByD,GAAWA,EAAQkK,SAAWlK,EAAQkK,QAAQ6e,UAAY/oB,EAAQkK,QAAQ6e,QAAQC,kBAClFprB,KAAK6H,SAAS,CAAEmjB,SAAS,IAI1BzkB,SACH,MAAM,OAAE1G,EAAM,QAAEuC,EAAO,UAAErC,EAAS,UAAE4M,GAAc3M,KAAKrB,OACjD,wBAAE4rB,EAAuB,uBAAEc,GAA2BtrB,GACtD,QAAEirB,GAAYhrB,KAAKmB,MAEnBiqB,EAAiBhpB,GAAWA,EAAQkK,SAAWlK,EAAQkK,QAAQ6e,SAAW/oB,EAAQkK,QAAQ6e,QAAQC,iBACxG,IAAIE,EAEJ,IACIA,EAAezrB,EACjB,MAAOsH,GAEL,OADAwF,EAAUxF,MAAM,+DAA+DA,KACxE5I,EAAAA,cAAA,WAAM4I,GAGjB,GAAIikB,IAAmBJ,EAEnB,OADAhrB,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,2DAC5B,KAGX,IAAKW,EAAAA,GAA0BC,UAC3B,OAAOxJ,EAAAA,cAAAA,EAAAA,SAAA,MAGX,MAAMuT,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACb4sB,UAAWvrB,KAAKkrB,WAChBM,uBAAwB,CACpBzZ,YAAa/R,KAAKrB,MAClBN,UAAWqE,GAAAA,CAAW,uBAAwB4oB,EAAajtB,WAC3DmE,IAAKxC,KAAKirB,WAEdQ,WAAY,CACRptB,UAAW,kCACXsrB,MAAO,QACPL,MAAM,GAEVoC,QAAS,CACLrtB,UAAW,iCAEfC,KAAMgtB,EAAalS,SACf7a,EAAAA,cAACuJ,EAAAA,GAA0B,CACvBzJ,UAAU,6BACVC,KAAMgtB,EAAalS,QACnB9J,UAAW,CAAEmB,OAAQzQ,KAAK+qB,oBAAqB5b,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,WAG1F4C,MAAOgE,EAAAA,gBAAgBC,YAAYmY,EAAaR,cAC5CvsB,EAAAA,cAACmsB,EAAqB,CAClBxb,MAAOoc,EAAaR,YACpB1b,aAAcpP,KAAK8P,qBACnBX,eAAgBnP,KAAKrB,MAAMyD,QAAQkK,QACnC5K,iBAAkB1B,KAAK0B,mBAG/BiqB,aACIptB,EAAAA,cAAC+rB,EAA4B,CACzBG,QAASzqB,KAAKkrB,WACdX,wBAAyBA,EACzBC,6BAA8Ba,EAC9B3pB,iBAAkB1B,KAAK0B,qBAKnC,OAAO1B,KAAKrB,MAAMkU,WAAWf,GAsBzBoZ,aACJ,MAAM,QAAE9oB,GAAYpC,KAAKrB,MAErByD,GAAWA,EAAQkK,SAAWlK,EAAQkK,QAAQ6e,UAC9C/oB,EAAQkK,QAAQ6e,QAAQS,mBACxBvK,SAASwK,UAEb7rB,KAAK6H,SAAS,CAAEmjB,SAAS,KAIjC,qFCxJA,MAeA,EAfmErsB,IAC/D,MAAM,uBAAE6sB,EAAsB,WAAEC,EAAU,QAAEC,EAAO,aAAEC,EAAY,KAAErtB,EAAI,MAAE4Q,GAAUvQ,EAEnF,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKooB,GACRjtB,EAAAA,cAACmrB,EAAAA,MAAK,CAACrrB,UAAWotB,EAAWptB,UAAWsrB,MAAO8B,EAAW9B,MAAOL,KAAMmC,EAAWnC,MAC9E/qB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKsoB,GACLptB,EACA4Q,GAEJyc,8GC+BjB,MAAMG,EAAsBC,IACxB,MAAMhjB,EAAWgjB,GAAsBA,EAAmB5rB,OAC1D,OAAO5B,EAAAA,cAAAA,EAAAA,SAAA,KAAGwK,EAAWA,EAAS+J,WAAa/J,EAASjI,KAAO,KA4E/D,SAASkrB,EAAqBtO,GAC1B,OACInf,EAAAA,cAAAA,EAAAA,SAAA,KACKmf,GAASA,EAAMvV,OAAS,EACnBuV,EAAMld,KAAI,CAACyrB,EAAuBtjB,IACvBpK,EAAAA,cAACA,EAAAA,SAAc,CAACwH,IAAK4C,GAAQsjB,KAExC,MAKlB,QAjI+CttB,IAC3C,MAAM,UAAEutB,EAAS,gBAAEC,EAAe,sBAAEC,EAAqB,QAAEC,GAAY1tB,EACvE,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAK8oB,GACR3tB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK+oB,GACN5tB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKgpB,GACLztB,EAAM2tB,QACN3tB,EAAM4tB,KACNP,EAAqBrtB,EAAMgnB,QAC3BhnB,EAAM6tB,eAuE3B,SAA6B7tB,EAAyB8tB,GAClD,MAAM,mCACFC,EAAkC,0CAClCC,EAAyC,0BACzCC,EAAyB,YACzBC,EAAW,WACX9J,EAAU,aACV+J,GACAnuB,EAEJ,GAAI+tB,EAAoC,CACpC,MAAMK,EAAmBrqB,GAAAA,CACrBgqB,EAAmCruB,UACnCouB,EAAkB,iBAAmB,mBAEzC,GAAIE,EACA,OACIpuB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKspB,EAAkC,CAAEruB,UAAW0uB,IACpDH,EACDruB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKupB,KACLG,GAAeA,EAAatsB,KAAKiO,GAA0BA,IAC3Doe,IAIV,GAAI9J,EACP,OACIxkB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKspB,EAAkC,CAAEruB,UAAW0uB,IACpDhK,GAMjB,OAAO,KAxGUiK,CAAoBruB,GAAO,GAC3BA,EAAMsuB,oBACP1uB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKipB,IACT1tB,EAAMuuB,SACNlB,EAAqBrtB,EAAMwuB,cAShD,SAA6BxuB,GACzB,MAAM,QAAE0tB,EAAO,yBAAEe,EAAwB,oBAAEC,GAAwB1uB,EACnE,OACIJ,EAAAA,cAAC+uB,EAAAA,SAAQ,CAACjvB,UAAU,mCAAmCya,QAASuU,GAC5D9uB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKgqB,GACLpB,EAAqBrtB,EAAMgnB,QAgB5C,SAAmChnB,EAAyB8tB,GACxD,MAAM,mCAAEC,EAAkC,YAAEG,EAAW,WAAE9J,EAAU,KAAEjjB,EAAI,aAAEgtB,GAAiBnuB,EAE5F,GAAI+tB,EAAoC,CACpC,MAAMK,EAAmBrqB,GAAAA,CACrB,oBACAgqB,EAAmCruB,UACnCouB,EAAkB,iBAAmB,mBAGzC,GAAIK,EACA,OACIvuB,EAAAA,cAACgvB,EAAAA,OAAM,CACHlvB,UAAW0uB,EACXS,UAAU,yBACVC,WAAW,0BACXC,eAAe,MACfC,iBAAkB7B,EAAmBhsB,EAAKisB,qBAE1CxtB,EAAAA,cAAA,aACKuuB,GAAeA,EAAatsB,KAAKiO,GAA0BA,IAC3Doe,IAIV,GAAI9J,EACP,OACIxkB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKspB,EAAkC,CAAEruB,UAAW0uB,IACpDhK,GAKjB,OAAO,KAhDM6K,CAA0BjvB,GAAO,GACjCA,EAAMkvB,mBACNlvB,EAAMwuB,aAEX5uB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKipB,IACTL,EAAqBrtB,EAAMmvB,UAlBvBC,CAAoBpvB,GACrBJ,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,2BAA2B2tB,EAAqBrtB,EAAMmvB,8uBCQ/E,MAAME,UAA2BzvB,EAAAA,cAapCG,YAAYC,GACRC,MAAMD,GAbF,KAAAsvB,aAAuB,EAEd,KAAAC,qBAA+B,EAE/B,KAAAC,UAAoB,GAqcpB,KAAAC,qBAAuB,CAACC,EAA0BpoB,IAA0B,KACzF,MAAMyI,EAAWzI,GAAUA,EAAOyI,SAAWzI,EAAOyI,SAAW,GACzD4f,EAAiC,CAAC,CAAEC,IAAKF,EAAkBG,QAAS9f,IAGtEwE,EAAAA,gBAAgBC,YAAYlN,EAAOwoB,qBACnCxoB,EAAOwoB,mBAAmBjuB,KAAImd,IAC1B,GAAIA,GAAQA,EAAK+Q,MAAO,CACpB,MAAMC,EAAWhR,EAAK+Q,MAAMH,IACtBK,EAA+BjR,EAAK+Q,MAAMG,cAChDP,EAAiB1iB,KAAK,CAClB2iB,IAAKI,EACLH,QAAS7Q,EAAKrf,KACduwB,cAAeD,EACf3f,qBAAsB,CAAEH,QAAS6O,EAAK7O,QAAQC,sBAK9D/O,KAAK6H,SAAS,CACVinB,cAAeR,EAAiBnmB,OAAS,EAAImmB,EAAmB,CAAC,CAAEC,IAAK,UACxEQ,qBAAsBrgB,KAUb,KAAAsgB,sBAAwB,CAAClvB,EAAqBmvB,IAAsB,KAC5EjvB,KAAKrB,MAAMuwB,aASZlvB,KAAK6H,SAAS,CACVsnB,WAAYrvB,EAAK+F,GACjBupB,WAAYH,KAVhBjvB,KAAK6H,SAAS,CACVsnB,WAAYnvB,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAervB,EAAK+F,QAAMQ,EAAYvG,EAAK+F,GAC3FupB,WAAYH,IAEZjvB,KAAKrB,MAAM0wB,mBACXrvB,KAAKouB,qBAAqBtuB,EAAKwvB,YAAcxvB,EAA7CE,IASRA,KAAKuvB,eAMQ,KAAAA,YAAc,KACvBvvB,KAAKrB,MAAMuwB,cACXlnB,YAAW,KACPhI,KAAKwvB,UAAYxvB,KAAKwvB,SAASvnB,SAAWjI,KAAKwvB,SAASvnB,QAAQ8E,UACjE,IAQM,KAAA0iB,oBAAuB9nB,IAChC3H,KAAKwvB,SAASvnB,UAAYjI,KAAKwvB,SAASvnB,QAAQynB,SAAS/nB,EAAMC,SAC/D5H,KAAK6H,SAAS,CACVsnB,gBAAY9oB,EACZyoB,cAAe,QASV,KAAAa,oBAAuBhoB,IAChC3H,KAAKwvB,SAASvnB,UAAYjI,KAAKwvB,SAASvnB,QAAQynB,SAAS/nB,EAAMioB,gBAC/D5vB,KAAK6vB,iBAiBI,KAAAC,aAAgBnoB,IAC7B,GAAIA,EAAMooB,UAAY/vB,KAAKmuB,UAAW,CAClC,IAAKnuB,KAAKrB,MAAMuwB,aAAc,CAC1B,MAAMc,EAAgBC,MAAMC,KAAKlwB,KAAKwvB,SAASvnB,QAASkoB,YACxD,IAAK,MAAMxS,KAAQqS,EAAe,CAC9B,MAAMI,EAAkBzS,EAAK0S,WACyB,SAAlDD,EAAgBE,aAAa,kBAC7BF,EAAgBrjB,SAI5B/M,KAAK6vB,kBAII,KAAAU,kBAAqBzB,IAClC,IAAKA,IAAkBA,EAAcP,IACjC,OAAO,KAGX,MAAMiC,GAAmBC,EAAAA,EAAAA,kBAAiB3B,EAAcP,IAAKvuB,KAAKrB,MAAMyD,QAAQqK,cAAc0C,eAAe5C,aACvGmkB,EAAuC,CACzCC,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,IAEzCI,UAAU,GAEd,QAAyB9qB,IAArBmqB,EAAgC,CAAC,IAADpyB,EAAAgzB,EAChC,MAAMC,EAAwB,CAAE9C,IAAKiC,GACrC,OACIjyB,EAAAA,cAAC+yB,EAAAA,GAAKnuB,OAAAC,OAAA,CACF+L,eAAgBnP,KAAKrB,MAAMyD,QAAQqK,cAAc0C,eACjD9Q,UAAU,sBACNgzB,EAAS,CACbE,aAAcvxB,KAAKrB,MAAMyD,QAAQkK,QAAQilB,aACzC1C,cAAqF,QAAxEzwB,EAA6B,QAA7BgzB,EAAEtC,EAAcD,qBAAa,IAAAuC,EAAAA,EAAIpxB,KAAKrB,MAAMkB,OAAO2xB,6BAAqB,IAAApzB,EAAAA,EAAIsyB,EACzFe,oBAAoB,OACpBlqB,KAAK,WACL1B,GAAI,GAAGipB,EAAcP,qBACrBC,QAASM,EAAcN,WAInC,OAAO,MAOM,KAAAkD,gBAAmBC,IAChC,MAAM,eAAEC,GAAmB5xB,KAAKmB,MAE1B0wB,EAAU,CAAE,MADoCxrB,IAA3BsrB,EAAYG,WAA2BH,EAAYG,WAAa,IAC3DH,EAAY7Y,QAC5C9Y,KAAK6H,SAAS,CAAE+pB,eAAcppB,EAAAA,EAAA,GAAOopB,GAAmBC,MArlBxD7xB,KAAKwvB,SAAWjxB,EAAAA,YAChByB,KAAKmB,MAAQ,CAAEguB,gBAAY9oB,EAAW+oB,gBAAY/oB,EAAW0oB,qBAAsB,GAAI6C,eAAgB,IACvG5xB,KAAK6vB,cAAgB7vB,KAAK6vB,cAActK,KAAKvlB,MAC7CA,KAAK8vB,aAAe9vB,KAAK8vB,aAAavK,KAAKvlB,MAC3CA,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAMyD,QAAQkK,QAAQmB,kBAC3BzN,KAAKrB,MAAM+O,aACX1N,KAAKrB,MAAMgO,WAEf3M,KAAKqB,SAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAK0B,iBAAkB,GAAI,IAGjEmM,oBACC/F,EAAAA,GAASC,YACTyM,SAASud,KAAK5c,iBAAiB,UAAYnV,KAAK8vB,cAA2C,GAC3Ftb,SAASud,KAAK5c,iBAAiB,YAAanV,KAAKyvB,qBACjDjb,SAASud,KAAK5c,iBAAiB,WAAYnV,KAAK2vB,sBAIjDqC,uBACClqB,EAAAA,GAASC,YACTyM,SAASyd,oBAAoB,UAAYjyB,KAAK8vB,cAA2C,GACzFtb,SAASud,KAAKE,oBAAoB,YAAajyB,KAAKyvB,qBAAqB,GACzEjb,SAASud,KAAKE,oBAAoB,WAAYjyB,KAAK2vB,qBAAqB,IAIzEppB,SACH,MAAM,aAAE2oB,GAAiBlvB,KAAKrB,MAG9B,OADAqB,KAAKiuB,aAAe,EACb1vB,EAAAA,cAAAA,EAAAA,SAAA,KAAG2wB,EAAelvB,KAAKkyB,oBAAsBlyB,KAAKmyB,sBAOrDD,oBACJ,MAAM,aAAEhD,EAAY,aAAEkD,EAAY,WAAEC,GAAeryB,KAAKrB,MACxD,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKivB,EAAU,CAAEh0B,UAAWqE,GAAAA,CAAW2vB,EAAWh0B,UAAW6wB,EAAe,cAAgB,kBAC9FkD,EAAa5xB,KAAI,CAAC8xB,EAAyBC,IACjCvyB,KAAKwyB,kBAAkBF,EAAUF,EAAajqB,OAAQoqB,EAAWvyB,KAAKkuB,yBAUrFiE,qBACJ,MAAM,SAAEM,EAAQ,WAAEJ,GAAeryB,KAAKrB,MACtC,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKivB,EAAU,CAAEh0B,UAAWqE,GAAAA,CAAW2vB,EAAWh0B,aACrDE,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKqvB,EAAQ,CAAEjwB,IAAKxC,KAAKwvB,SAAUkD,SAAS,OAC5C1yB,KAAK2yB,mBAadH,kBAAkBF,EAAyBM,EAAiBL,GAChE,OAAID,GAAYA,EAASO,SAAW3f,EAAAA,gBAAgBC,YAAYmf,EAASO,SAC9D7yB,KAAK8yB,cAAcR,EAAUM,EAASL,GAE1CvyB,KAAK+yB,oBAAoBT,OAAUjsB,GAAW,GAAM,EAAOusB,EAASL,GAUvEO,cAAcR,EAAyBM,EAAkBL,GAC7D,MAAM5E,EAAmB2E,EAAS5jB,SAC5BskB,EAAWhzB,KAAKmB,MAAMywB,eACtBE,OAAkCzrB,IAArBsnB,EAAiCA,EAAmB,GACjE/jB,OAAoBvD,IAAb2sB,EAAyBA,EAAW,IAC3C,aAAE9D,GAAiBlvB,KAAKrB,MAE9B,IAAIs0B,GAAe,EACfrpB,EAAKkoB,KACLmB,GAAe,GAEnB,MAAMC,EAA2B,CAAEpa,OAAQma,GAC3C,OACI10B,EAAAA,cAACgvB,EAAAA,OAAM,CACHhmB,KAAK,UACL4rB,kBAAmB,CACf,eAAgBP,EAChB,gBAAiBL,EACjBhrB,KAAM,YAEVqH,UAAWsgB,EAAeoD,EAAS1jB,eAAYvI,EAC/CN,IAAKusB,EAASzsB,GACdxH,UAAU,iBACVmvB,UAAU,sBACVvJ,SAAUjkB,KAAK0xB,gBACf0B,cAAeF,EACfzF,WAAW,uBACXC,eAAe,MACfC,iBAAkB3tB,KAAKqzB,gBAAgB1F,EAAkBiF,EAASL,IAElEh0B,EAAAA,cAAA,OAAKgJ,KAAK,WACL+qB,EAASO,QAASryB,KAAI,CAAC8yB,EAA4BC,KAAsB,IAAAC,EAChBC,EAAtD,OAAIvgB,EAAAA,gBAAgBC,YAAYmgB,EAAYT,SACjC7yB,KAAK8yB,cAAcQ,EAA6B,QAAlBG,EAAEnB,EAASO,eAAO,IAAAY,OAAA,EAAhBA,EAAkBtrB,OAAQorB,EAAavzB,KAAKkuB,sBAEhFluB,KAAK0zB,kBAAkBJ,EAA6B,QAAlBE,EAAElB,EAASO,eAAO,IAAAW,OAAA,EAAhBA,EAAkBrrB,OAAQorB,EAAavzB,KAAKkuB,2BAcnGmF,gBAAgB3kB,EAA8BkkB,EAA6BL,GAC/E,OACIh0B,EAAAA,cAAA,uBAAoBq0B,EAAO,gBAAiBL,GACvC7jB,GAYLglB,kBAAkB/V,EAAqBiV,EAA6BL,GACxE,OAAI5U,GAAQA,EAAKjP,UAAYiP,EAAKgW,SAAWhW,EAAKgW,QAAQxrB,OAAS,EACxDnI,KAAK+yB,oBAAoBpV,OAAMtX,GAAW,GAAM,EAAOusB,EAASL,GAChE5U,GAAQA,EAAKjP,WAAaiP,EAAKgW,QAC/B3zB,KAAK4zB,oBAAoBjW,GAE7B,KAOHgV,iBACJ,MAAM,SAAEkB,EAAQ,aAAEzB,EAAY,aAAElD,GAAiBlvB,KAAKrB,OAChD,WAAEwwB,GAAenvB,KAAKmB,MACtB2yB,EAA8B,GAEpC,GAAI5E,QAA+B7oB,IAAf8oB,GAA4BiD,EAAajqB,OAAS,EAAG,CACrE,IAAImqB,EAA0B,GAC9B,IAAK,MAAMyB,KAAiB3B,EAAc,CACtC,GAAI2B,GAAiBA,EAAcluB,KAAOspB,EAAY,CAClDmD,EAAWyB,EACX/zB,KAAK6H,SAAS,CAAEunB,gBAAY/oB,IAC5B,MAGJ,GADAisB,EAAWtyB,KAAKg0B,gBAAgBD,GAC5BzB,GAAYA,EAASzsB,KAAOspB,EAC5B,MAIRmD,GACIwB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAKusB,EAASzsB,IAAQguB,GACvB,IACA7zB,KAAKi0B,oBAAoB3B,GACzB,WAIbF,EAAalpB,SAAQ,CAACyU,EAAqBhV,KACvCmrB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWkrB,GACjB7zB,KAAKi0B,oBAAoBtW,QAM1C,OAAOmW,EAQHE,gBAAgBrW,GACpB,MAAMuW,EAAWvW,GAAQA,EAAKkV,QAC9B,GAAIqB,GAAYA,EAAS/rB,OAAS,EAC9B,IAAK,IAAIgsB,EAAI,EAAGA,GAAKD,EAAS/rB,OAAS,EAAGgsB,IAAK,CAC3C,GAAID,EAASC,GAAGtuB,KAAO7F,KAAKmB,MAAMguB,WAE9B,OADAnvB,KAAK6H,SAAS,CAAEunB,WAAYzR,MAAAA,OAAI,EAAJA,EAAM9X,KAC3BquB,EAASC,GAEpB,MAAMC,EAAQp0B,KAAKg0B,gBAAgBE,EAASC,IAC5C,GAAIC,EACA,OAAOA,EAInB,OAAO,KAQHH,oBAAoB7B,GACxB,OAAIA,GAAgBA,EAAaS,SAAWT,EAAaS,QAAQ1qB,OAAS,EAClEnI,KAAKrB,MAAMuwB,mBAA0C7oB,IAA1BrG,KAAKmB,MAAMguB,WAC/BnvB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,IAG9DtH,EAAAA,cAAAA,EAAAA,SAAA,KACKyB,KAAKs0B,sBAAsBlC,GAC3BpyB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,KAGzDusB,GAAgBA,EAAa1jB,UAAY0jB,EAAauB,SAAWvB,EAAauB,QAAQxrB,OAAS,EAC/FnI,KAAK+yB,oBAAoBX,EAAcA,EAAavsB,IAAI,GAAO,GAC/DusB,GAAgBA,EAAa1jB,WAAa0jB,EAAauB,QACvD3zB,KAAK4zB,oBAAoBxB,EAAcA,EAAavsB,IAAI,GAG5D,KAGHwuB,eAAeH,EAA4B/E,EAAqBoF,GACpE,MAAM,aAAErF,EAAY,SAAE2E,GAAa7zB,KAAKrB,MAClC61B,EAAyBx0B,KAAKrB,MAAMkB,OAAO40B,uBAAwB,EAEnEC,EAA0B10B,KAAKrB,MAAMkB,OAAO80B,kBAD7B,EAIrB,GAAIxF,GAAcnvB,KAAKmB,MAAMguB,aAAeA,EAExC,OADAnvB,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,gEAC5B,KAGX,IAAK+sB,GAAgC,IAApBA,EAAS/rB,OAEtB,OADAnI,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,4DAC5B,KAGX,IAAIytB,EAAyB,GAC7B,MAAMC,EACFX,GACAA,EAAS1zB,KAAI,CAACyF,EAAuB6uB,KACjC,MAAMC,EAAa9uB,EAAO4sB,SAAW5sB,EAAO4sB,QAAQ1qB,OAAS,EAC7D,IAAImqB,EAMAO,EAJAP,EADAyC,GAAc7F,EACHlvB,KAAKs0B,sBAAsBruB,EAAQkpB,EAAY2F,GAE/C7uB,EAAO0tB,QAAU3zB,KAAK+yB,oBAAoB9sB,EAAQ6uB,GAAO90B,KAAK4zB,oBAAoB3tB,GAGjG,MAAM+uB,EAAcD,GAAcP,GAA0Bx0B,KAAKiuB,cAAgBgH,KAAKC,MAAMR,GAA2B,EAMvH,OALIM,IACAh1B,KAAKiuB,eACL2G,EAAiBJ,EAAyB,SAASx0B,KAAKiuB,aAAand,aAAe,GACpF+hB,EAAU7yB,KAAKq0B,eAAepuB,EAAO4sB,QAAS3D,EAAejpB,EAAOJ,QAAKQ,GAAW,IAGpF9H,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKywB,EAAQ,CAAE9tB,IAAKE,EAAOJ,GAAIxH,UAAWqE,GAAAA,CAAWmxB,EAASx1B,UAAW22B,GAAe,iBACxF1C,EACAO,MAIjB,OAAO7yB,KAAKm1B,YAAYP,EAAgBC,EAAa1F,EAAYoF,GAU7DD,sBAAsBruB,EAAuBkpB,EAAqBxmB,GACtE,MAAM,OAAEzF,GAAWlD,KAAKrB,MACxB,OACIJ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4C,GACDzF,EAAM,CACVG,QAASrD,KAAKgvB,sBAAsB/oB,EAAQkpB,GAC5CiG,QAASp1B,KAAK6vB,cAAa,kBACV7vB,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,mBAC5D7F,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,cAClEspB,IAEZlpB,EAAOyI,UAeZqkB,oBACJ9sB,EACA0C,GAIiB,IAHjB0sB,IAAAC,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,KAAAA,UAAA,GACAC,EAAAD,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,IAAAA,UAAA,GACA1C,EAAgB0C,UAAAntB,OAAA,EAAAmtB,UAAA,QAAAjvB,EAChBksB,EAAiB+C,UAAAntB,OAAA,EAAAmtB,UAAA,QAAAjvB,EAEjB,MAAM,KAAEmvB,EAAI,aAAEtG,GAAiBlvB,KAAKrB,MAC9B+P,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GAC/C+mB,EAAcxvB,EAAOqpB,YAAcrpB,EAAOqpB,YAAc,GAC9DtvB,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OACI9C,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,gBACa8rB,EAAe0D,OAAUvsB,EAAS,gBACjC6oB,EAAeqD,OAAWlsB,EAAS,aACtC6oB,EAAejpB,EAAO2I,eAAYvI,GAC1CmvB,EAAI,CACRzvB,IAAK4C,EACLysB,QAASG,GAAYv1B,KAAK6vB,cAC1BjoB,OAAQ3B,EAAOyvB,iBAAmB,cAAWrvB,EAC7CsvB,YAAaN,GAAer1B,KAAKouB,qBAAqBqH,EAAaxvB,GACnE+c,KAAM/c,EAAO0tB,SACTruB,EAAU,CACdjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KAE9DzI,EAAOyI,UAWZknB,uBAAuBlnB,EAAmBI,GAC9C,MAAM,KAAE0mB,GAASx1B,KAAKrB,MACtBqB,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OAAIqN,GAAYI,EAERvQ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKoyB,EAAI,CAAExS,KAAMlU,GAAaxJ,EAAU,CAAEjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KACzGA,GAIN,KAUHklB,oBAAoB3tB,EAAuB0C,GAAyC,IAAzB4sB,EAAAD,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,IAAAA,UAAA,GAC/D,MAAM,KAAEO,GAAS71B,KAAKrB,MACtB,OACIJ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWktB,EAAI,CAAET,QAASG,GAAYv1B,KAAK6vB,gBACjD5pB,EAAOyI,UAaZymB,YAAYW,EAAejB,EAA4BkB,EAAsBC,GACjF,MAAM,aAAEC,EAAY,SAAExD,EAAQ,kBAAEyD,EAAiB,kBAAE7G,EAAiB,aAAEH,EAAY,uBAAEiH,GAA2Bn2B,KAAKrB,MAC9Gy3B,GACDlH,GAAgBG,GAAkD,OAA7BrvB,KAAKmB,MAAM2tB,oBAAuDzoB,IAA7BrG,KAAKmB,MAAM2tB,gBAAgCkH,EACpHK,GACDnH,GAAgBiH,GAA0BjjB,EAAAA,gBAAgBC,YAAYnT,KAAKmB,MAAM2tB,iBAAmBkH,EACnGM,EAAoBt2B,KAAKiuB,aAAe,GAAKmI,EAAuBH,EAAc53B,UAAY,kBAEpG,OADA2B,KAAKiuB,aAAe,EAEhB1vB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK6yB,EAAY,CAAE53B,UAAWi4B,IAC/B/3B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGqvB,EAAQ,CACZp0B,UAAWqE,GAAAA,CACP+vB,EAASp0B,UACTy3B,EACAM,GAAwB,gBACxBA,GACIp2B,KAAKrB,MAAMkB,OAAO80B,kBAClB30B,KAAKrB,MAAMkB,OAAO80B,iBAAmB,GACrC,yBAGPE,GAELt2B,EAAAA,cAAA,OAAKF,UAAU,4BACV+3B,GACGp2B,KAAKmB,MAAM2tB,eACX9uB,KAAKmB,MAAM2tB,cAActuB,KAAImd,IAAI,IAAA4Y,EAAA,OAC7Bh4B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAK4X,EAAK4Q,KAAS2H,EAAiB,CAAE73B,UAAW63B,EAAmB73B,YACrE2B,KAAKmB,MAAM2tB,eAAiB9uB,KAAKuwB,kBAAkB5S,GACnD0Y,GAA6Br2B,KAAK41B,uBAAuBjY,EAAK6Q,QAAkC,QAA3B+H,EAAE5Y,EAAK1O,4BAAoB,IAAAsnB,OAAA,EAAzBA,EAA2BznB,eA+FvH+gB,gBACC7vB,KAAKrB,MAAMuwB,cACZlvB,KAAK6H,SAAS,CAAEsnB,gBAAY9oB,KAqExC,oNC1nBO,MAAMmwB,EAA+Cp4B,IAAA,IAAC,sBACzDkb,EAAqB,QACrBC,EAAO,UACPC,EAAS,YACTE,EAAW,MACXC,EAAK,OACLC,EAAM,mBACNC,EAAkB,YAClBJ,EAAW,eACXgd,GACHr4B,EAAA,OACGG,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkW,GACLG,EACAgd,EACAld,EACAC,EACAE,EACAC,EACAC,EACAC,IAII6c,EAAkCriB,IAAA,IAAC,eAAEsiB,EAAc,UAAEnc,EAAS,eAAEoc,EAAc,OAAEC,GAAQxiB,EAAA,OACjG9V,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKuzB,GACLnc,EACAoc,EACAC,IAIIC,EAA0CviB,IAAA,IAAC,cAAEwF,EAAa,QAAEjW,EAAO,MAAE6V,GAAOpF,EAAA,OACrFhW,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK2W,GACLjW,EACA6V,IAIIod,EAA0Bpc,IAAA,IAAC,WAAEP,EAAU,SAAEC,EAAQ,QAAEJ,EAAO,gBAAEK,EAAe,WAAEC,EAAU,0BAAEyc,GAA2Brc,EAAA,OAC7Hpc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKgX,GACLC,GAAY9b,EAAAA,cAACu4B,EAAa3zB,OAAAC,OAAA,GAAKiX,IAChC9b,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,2CACXkc,GACGhc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkX,GACLC,EAAW/Z,KAAIga,GACZjc,EAAAA,cAACA,EAAAA,SAAc,CAACwH,IAAKyU,EAAU1a,KAAK0a,UAAUC,QACT,SAAhCD,EAAU1a,KAAKm3B,cAA2Bzc,EAAU1a,KAAKo3B,SAAW1c,EAAUN,aAAe,KAC9F3b,EAAAA,cAACm4B,EAASvzB,OAAAC,OAAA,GAAKoX,KACbwc,GAA6Bxc,EAAU2c,iBAKvD9c,EAAS+c,cAAgBnd,EAC1BI,EAAS+c,cACN74B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKiX,EAASgd,aACdpd,EACAI,EAASid,uBAOjBC,EAA4Bvc,IAAA,IAAC,YAAEJ,EAAW,OAAEC,GAAQG,EAAA,OAC7Dzc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKwX,GACLC,EAAOra,KAAI,CAACsa,EAAOnS,IAChBpK,EAAAA,cAACw4B,EAAK5zB,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWmS,QAKtB0c,EAAwCnc,IAAA,IAAC,kBAClDoc,EAAiB,QACjB3zB,EAAO,SACP4zB,EAAQ,SACRC,EAAQ,IACRC,EAAG,YACHC,EAAW,aACXC,GACHzc,EAAA,OACG9c,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKq0B,GACL3zB,EACA4zB,EACAC,EACAC,EACAC,EACAC,IAIIC,EAAqCjc,IAAA,IAAC,oBAAEkc,EAAmB,MAAEv0B,EAAK,QAAEw0B,GAASnc,EAAA,OACtFvd,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK40B,GACLv0B,EACAw0B,IAIIC,EAAwBhc,IAAA,IAAC,UAAEic,EAAS,cAAEC,EAAa,oBAAEC,EAAmB,cAAEC,GAAepc,EAAA,OAClG3d,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK+0B,GACLC,EACAC,EACAC,IAuCT,EAnC2DC,IActD,IAduD,YACxDxmB,EAAW,UACXymB,EAAS,iBACTC,EAAgB,MAChBC,EAAK,SACLC,EAAQ,QACR70B,EAAO,MACPuY,EAAK,QACLC,EAAO,gBACPf,EAAe,aACfqd,EAAY,QACZC,EAAO,KACPC,EAAI,OACJje,GACH0d,EACG,OACIh6B,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAK2O,GACP4mB,EACA70B,EACAuY,EACAC,EACAf,GAAmBhd,EAAAA,cAACi4B,EAAerzB,OAAAC,OAAA,GAAKmY,IACxCkd,EACAD,EACAE,EACA7d,GAAUtc,EAAAA,cAACg5B,EAAMp0B,OAAAC,OAAA,GAAKyX,IACvBtc,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,6CACXu6B,GAAgBr6B,EAAAA,cAACi5B,EAAYr0B,OAAAC,OAAA,GAAKw1B,IAClCC,GAAWt6B,EAAAA,cAACw5B,EAAO50B,OAAAC,OAAA,GAAKy1B,KAE5BC,GAAQv6B,EAAAA,cAAC25B,EAAI/0B,OAAAC,OAAA,GAAK01B,4sBCnI/B,MAAMC,UAAex6B,EAAAA,cAGjBG,YAAYC,GACRC,MAAMD,GACNqB,KAAKg5B,UAAYz6B,EAAAA,YAGdgI,SACH,MAAM,OAAE1G,EAAM,UAAEE,GAAcC,KAAKrB,MAC7BysB,EACFprB,KAAKrB,MAAMyD,QAAQkK,SACnBtM,KAAKrB,MAAMyD,QAAQkK,QAAQ6e,SAC3BnrB,KAAKrB,MAAMyD,QAAQkK,QAAQ6e,QAAQC,gBACnCprB,KAAKrB,MAAMyD,QAAQkK,QAAQ6e,QAAQC,iBAEvC,KAAMvrB,GAAUA,EAAO+H,QAAU/H,EAAO+H,OAAOmH,gBAC3C,OAAO,KAGX,IAAIkqB,EACJ,IACIA,EAAS,IAAIC,IAAIr5B,EAAO+H,OAAOmH,gBACjC,MAAO5H,GAEL,OADAnH,KAAKrB,MAAMgO,UAAUC,UAAUzF,GACxB,KAGX,GAAI8xB,GAAUA,EAAOE,UAAoD,WAAxCF,EAAOE,SAASp4B,oBAC7C,OAAO,KAEX,MAAMq4B,EAAkB12B,GAAAA,CAAW,YAAa7C,EAAOxB,WAEvD,IAAIyT,EAAStJ,EAAAA,EAAA,GACLxI,KAAKrB,OAAqC,IAC9C4gB,QAASvf,KAAKq5B,eAAex5B,EAAOiE,SACpCw1B,gBAAiB,CACbvnB,YAAa/R,KAAKrB,MAClBN,UAAW+6B,GAEfG,OAAQv5B,KAAKw5B,kBAcjB,OALI1nB,EAAStJ,EAAAA,EAAA,GACFsJ,GAAS,GAPfsZ,EAOe,CACZqO,uBAAuB,GANX,CACZpd,MAAOrc,KAAK05B,aAAa35B,EAAU45B,gCAQpC35B,KAAKrB,MAAMkU,WAAWf,GAGzBunB,eAAev1B,GACnB,OAAKA,GAAYA,EAAQxF,MAAgC,IAAxBwF,EAAQxF,KAAK6J,OAIvC5J,EAAAA,cAACghB,EAAAA,QAAOpc,OAAAC,OAAA,GAAKU,EAAO,CAAEzF,UAAU,wBAH5B,KAMPq7B,aAAanY,GACjB,OACIhjB,EAAAA,cAAA,KAAGF,UAAU,2BAA2BkJ,KAAK,QAAO,YAAW,aAC1Dga,GAKLiY,gBACJ,MAAM,OAAE35B,GAAWG,KAAKrB,MAClBi7B,EAAY/5B,EAAO+H,OAAOmH,eAEhC,OACIxQ,EAAAA,cAAA,UACIF,UAAWqE,GAAAA,CAAW,sBACtB6rB,IAAKqL,EACLC,OAAQh6B,EAAOg6B,OAAM,aACTh6B,EAAOi6B,gBACnBt3B,IAAKxC,KAAKg5B,aAM1B,sGClGO,MAAMe,UAAmBx7B,EAAAA,cACrBgI,SACH,MAAM,QAAEgZ,EAAO,gBAAE+Z,EAAe,OAAEC,EAAM,MAAEld,EAAK,sBAAEod,GAA0Bz5B,KAAKrB,MAEhF,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKk2B,GACPjd,EACAod,GAAyBA,EACtBl7B,EAAAA,cAAAA,EAAAA,SAAA,KACKghB,EACAga,GAEL,OAKpB,0BCDO,IAAKS,EASAC,2BATZ,SAAYD,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,qBAFJ,CAAYA,IAAAA,EAAe,KAS3B,SAAYC,GACRA,EAAA,UACAA,EAAA,gBAFJ,CAAYA,IAAAA,EAAU,ktBCUtB,MAAMC,UAAuB37B,EAAAA,cAyBzBG,YAAYC,GACRC,MAAMD,GAjBF,KAAAw7B,UAAoB,EAEpB,KAAAC,OAAiB,EAmPR,KAAAC,qBAAwBC,IACrC,OAAQA,GACJ,IAAI,mBACAt6B,KAAKm6B,UAAW,EAChBn6B,KAAKo6B,OAAQ,EACb,MACJ,IAAI,UACAp6B,KAAKm6B,UAAW,EAChBn6B,KAAKo6B,OAAQ,EACb,MACJ,IAAI,MACAp6B,KAAKm6B,UAAW,EAChBn6B,KAAKo6B,OAAQ,IA/OrBp6B,KAAKu6B,gBAAkBv6B,KAAKu6B,gBAAgBhV,KAAKvlB,MACjDA,KAAKw6B,SACD77B,EAAMyD,QAAQkK,SAAW3N,EAAMyD,QAAQkK,QAAQmuB,QAAgD,WAAtC97B,EAAMyD,QAAQkK,QAAQmuB,OAAOC,KAAoB,KAAO,KACrH16B,KAAKq6B,qBAAqBr6B,KAAKrB,MAAMkB,QAAUG,KAAKrB,MAAMkB,OAAO86B,sBACjE36B,KAAKmB,MAAQ,CAAEy5B,SAAU56B,KAAK46B,UAC9B56B,KAAK8zB,aAAe,GAhBjB,uBAAuBpf,EAAgBmmB,GAC1C,IAAIC,EAKJ,OAJIpmB,GAAUmmB,GAAoBA,EAAiB1yB,OAAS,IACxD2yB,EAAkBD,EAAiBl6B,MAAKgd,GAAQA,EAAKod,SAAUpmB,gBAAkBD,EAAOC,iBAGrFmmB,GAAmBA,EAAgBn4B,KAapC,eACN,MAAyB,OAAlB3C,KAAKw6B,UAAuC,OAAlBx6B,KAAKw6B,SAGnC3sB,oBACC/F,EAAAA,GAASC,YACT/H,KAAKg7B,6BAA8BC,EAAAA,EAAAA,mBAAkBjjB,OAAQ,SAAUhY,KAAKu6B,kBAEhFv6B,KAAKu6B,kBAGFvI,uBACClqB,EAAAA,GAASC,WACTiQ,OAAOia,oBAAoB,SAAUjyB,KAAKg7B,6BAA8B,GAIzEz0B,SAAM,IAAA20B,EAAAC,EAET,GADAn7B,KAAK8zB,aAAe9zB,KAAKo7B,YACrBC,EAAAA,EAAAA,IAAoBr7B,KAAKrB,MAAMmB,MAE/B,OADAE,KAAKrB,MAAMgO,UAAUxF,MAAM,+BACpB,KAGX,MAQM2K,EAAStJ,EAAAA,EAAAA,EAAA,GACRxI,KAAKrB,OACLqB,KAAKmB,OAAK,IACb0tB,cAXyC,CACzC8B,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCuK,GAAI,CAAEzK,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCI,UAAU,GAOVI,aAAcvxB,KAAKrB,MAAMyD,QAAQkK,QAAQilB,aACzCc,WAAY,CACRtgB,YAAa/R,KAAKrB,MAClBN,UAAWqE,GAAAA,CAAW,SAAU1C,KAAKrB,MAAMkB,OAAOxB,UAAW2B,KAAKmB,MAAMy5B,SAAW,YAAc,cACjGh4B,IAAK,MACL2E,KAAMvH,KAAK46B,SAAW,UAAY,cAEtCnI,SAAU,CACNp0B,UAAW,eACXuE,IAAK,KACL2E,KAAMvH,KAAK46B,SAAW,UAAY,QAEtC/G,SAAU,CACNx1B,UAAW,qBACXkJ,KAAM,eACN3E,IAAK,MAETysB,kBAAyD,QAAxC6L,EAAEl7B,KAAKrB,MAAMkB,OAAO07B,4BAAoB,IAAAL,GAAAA,EACzD/E,uBAAiE,QAA3CgF,EAAEn7B,KAAKrB,MAAMkB,OAAO27B,+BAAuB,IAAAL,GAAAA,EACjE3F,KAAM,CACF5yB,IAAK,IACLvE,UAAW,2BACXkJ,KAAMvH,KAAK46B,SAAW,SAAW,YAErC3E,aAAc,CACVrzB,IAAK,MACLvE,UAAW,mBAEf63B,kBAAmB,CACftzB,IAAK,MACLvE,UAAW,iBACXkJ,KAAM,YAEVrE,OAAQ,CACJ7E,UAAW,6BACXuE,IAAK,SACL2E,KAAMvH,KAAK46B,SAAW,SAAW,WACjCv3B,QAASrD,KAAKrB,OAElB88B,eAAgB,CACZp9B,UAAW,6BAEfw3B,KAAM,CACFx3B,UAAW,2BACXuE,IAAK,QAET84B,2BAA4B,CACxBr9B,UAAW,mCAEfs9B,iBAAkB,CACdt9B,UAAW,0CACXuE,IAAK,SACL,aAAc5C,KAAKrB,MAAMoB,UAAU67B,oBACnCv4B,QAASrD,KAAKrB,OAElBk9B,uBAAwB,CACpBx9B,UAAW,wCACXuE,IAAK,QAETssB,aAAclvB,KAAKmB,MAAMy5B,SACzBxI,aAAcpyB,KAAK8zB,aACnBz1B,UAAWqE,GAAAA,CAAW,SAAU1C,KAAKrB,MAAMkB,OAAOxB,aAGtD,OAAO2B,KAAKrB,MAAMkU,WAAWf,GAGzBspB,WACJ,MAAM,KAAEt7B,EAAI,OAAED,GAAWG,KAAKrB,MACxBm9B,EAA8B,GAYpC,OAXI97B,KAAKm6B,UAAYr6B,GAAQA,EAAKi8B,YAAcj8B,EAAKi8B,WAAW57B,QAAUL,EAAKi8B,WAAW57B,OAAOgI,OAAS,GACtGrI,EAAKi8B,WAAW57B,OAAOK,KAAI,CAACmd,EAAyBhV,IACjDmzB,EAAWlwB,KAAK5L,KAAKg8B,uBAAuBre,OAAMtX,GAAW,EAAMsC,GAAO,MAI9E3I,KAAKo6B,OAASv6B,EAAOo8B,aAAep8B,EAAOo8B,YAAY9zB,OAAS,GAChEtI,EAAOo8B,YAAYz7B,KAAI,CAACmd,EAAwBmX,IAC5CgH,EAAWlwB,KAAK5L,KAAKg8B,4BAAuB31B,EAAWsX,GAAM,EAAOmX,EAAM,MAG3E90B,KAAKk8B,0BAA0BJ,GAGlCI,0BAA0BJ,GAA2B,IAAAK,EAAAC,EAEzD,KAD0D,QAAlCD,EAAGn8B,KAAKrB,MAAMkB,OAAOw8B,qBAAa,IAAAF,GAAAA,GAEtD,OAAOL,EAEX,MAAMQ,EAAsC,GACtCC,EAAU,CACZ12B,GAAI,EACJ6I,SAA8C,QAAtC0tB,EAAEp8B,KAAKrB,MAAMkB,OAAO28B,0BAAkB,IAAAJ,EAAAA,EAAI,MAClDzI,QAAS,IACTrE,iBAAajpB,EACbwsB,QAASiJ,GAIb,OAFAQ,EAAmB1wB,KAAK2wB,GAEjBD,EAGHN,uBACJS,EACAC,EACAvC,EACArF,EACA6H,GAEA,MAAMjoB,EACF1U,KAAKrB,MAAMyD,SAAWpC,KAAKrB,MAAMyD,QAAQkK,SAAWtM,KAAKrB,MAAMyD,QAAQkK,QAAQoI,OACzE1U,KAAKrB,MAAMyD,QAAQkK,QAAQoI,OAC3B,SACJ,2BAAEkoB,GAA+B58B,KAAKrB,MAAMkB,OAC5Cg9B,EAAeH,GAAWA,EAAQhuB,UAAa,IAC/C,cAAEouB,GAAkB98B,KAAKrB,MAAMoB,UAG/Bg9B,EACFN,IACAG,MAAAA,OAA0B,EAA1BA,EAA4BI,QAAOC,IAAS,IAAAC,EAAAC,EAAA,OAA0B,QAAtBD,EAAAD,EAAUG,oBAAY,IAAAF,OAAA,EAAtBA,EAAwBvoB,kBAAkB8nB,MAAAA,GAAgB,QAANU,EAAVV,EAAY37B,YAAI,IAAAq8B,OAAA,EAAhBA,EAAkBxoB,mBAGhH,IAAI2a,EAAsB,QAIX,IAAD+N,EAAAC,EAAd,OAHIpqB,EAAAA,gBAAgBC,YAAYspB,MAAAA,OAAU,EAAVA,EAAYc,SAAWd,EAAYc,OAAO,GAAGC,MACzElO,EAAcmN,EAAYc,OAAO,GAAGC,KAEpCrD,EACO,CACHt0B,GAAIq0B,EAAeuD,eACnB/uB,SAA8E,QAAtE2uB,EAAEnD,EAAewD,gBAAgBhpB,EAAQ+nB,MAAAA,OAAU,EAAVA,EAAY9wB,yBAAiB,IAAA0xB,EAAAA,EAAI,GAClF1J,QAAS8I,MAAAA,OAAU,EAAVA,EAAYkB,IACrBrO,YAAAA,EACAuD,QAAS7yB,KAAK49B,mBAAmBnB,EAAYnN,EAAaqN,GAC1DlO,mBAAoBzuB,KAAKrB,MAAMkB,OAAO27B,yBAA2BuB,EACjEc,WAAY5D,EAAAA,EAAW6D,OACvBlvB,UAAW,GAAuE,QAAvE0uB,EAAGpD,EAAewD,gBAAgBhpB,EAAQ+nB,MAAAA,OAAU,EAAVA,EAAY9wB,yBAAiB,IAAA2xB,EAAAA,EAAI,MAAMR,KAG7F,CACHj3B,GAAIq0B,EAAe6D,gBACnBrvB,SAAUmuB,EACVlJ,QAAU+I,GAAWA,EAAQ5tB,SAAW4tB,EAAQ5tB,QAAQC,gBAAmB,GAC3EivB,oBAAsBtB,GAAWA,EAAQuB,WAAavB,EAAQuB,UAAUlvB,gBAAmB,GAC3FugB,YAAcoN,GAAWA,EAAQhO,OAASgO,EAAQhO,MAAMH,KAAQ,GAChEsE,QAAS7yB,KAAKk+B,sBAAsBxB,GACpCmB,WAAY5D,EAAAA,EAAWkE,IACvBzI,iBAAkBgH,MAAAA,OAAO,EAAPA,EAAS1tB,aAC3BJ,UAAW,GAAGiuB,KAAeC,KAI7Bc,mBAAmBQ,EAA8BC,GAAsD,IAA7B1B,EAAArH,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,IAAAA,UAAA,GAC9E,MAAMgJ,EAAkC,GACxC,OAAKF,GAAaA,EAASG,UAAyC,IAA7BH,EAASG,SAASp2B,SAGpDnI,KAAKrB,MAAMkB,OAAOw8B,eAAiBM,GACpC2B,EAAe1yB,KAAK,CAChB8C,SAAU1O,KAAKrB,MAAMoB,UAAUy+B,oBAC/BlP,YAAa+O,EACb1K,SAAS8K,EAAAA,EAAAA,gBAAeL,EAAWp+B,KAAKrB,MAAMyD,QAAuC,MAG7Fg8B,EAASG,SAAS/9B,KAAI,CAACmd,EAAyBhV,KAC5C21B,EAAe1yB,KAAK5L,KAAKg8B,uBAAuBre,OAAMtX,GAAW,EAAMsC,GAAO,OAE3E21B,GAZI,GAePJ,sBAAsBE,GAC1B,MAAME,EAAkC,GAExC,OAAKF,GAAaA,EAASlK,UAAyC,IAA7BkK,EAASlK,SAAS/rB,QAIzDi2B,EAASlK,SAAS1zB,KAAI,CAACmd,EAAqBmX,KACxCwJ,EAAe1yB,KAAK5L,KAAKg8B,4BAAuB31B,EAAWsX,GAAM,EAAOmX,OAErEwJ,GANI,GA2BP/D,kBACJv6B,KAAKw6B,SAAWx6B,KAAK0+B,eACrB1+B,KAAK6H,SAAS,CAAE+yB,SAAU56B,KAAK46B,WAG3B8D,eACJ,MAAM,QAAEt8B,GAAYpC,KAAKrB,MAGzB,GAAIyD,EAAQkK,SAAWlK,EAAQkK,QAAQmuB,QAA0C,WAAhCr4B,EAAQkK,QAAQmuB,OAAOC,KACpE,MAAO,KAGX,GAAI5yB,EAAAA,GAASC,WAAaiQ,OAAO2mB,WAAY,CACzC,MAAMpN,EAAenvB,EAAQkK,QAAQilB,aACrC,GAAIA,EACA,OAAIA,EAAaX,IAAM5Y,OAAO2mB,YAAcpN,EAAaX,GAAGE,EACjD,KACAS,EAAaP,IAAMhZ,OAAO2mB,YAAcpN,EAAaP,GAAGF,EACxD,KACAS,EAAaN,IAAMjZ,OAAO2mB,YAAcpN,EAAaN,GAAGH,EACxD,KACAS,EAAaL,IAAMlZ,OAAO2mB,YAAcpN,EAAaL,GAAGJ,EACxD,KAEJ,KAIf,MAAO,MA5SIoJ,EAAA6D,cAAwB/D,EAAAA,EAAgBmE,IAExCjE,EAAAuD,aAAuBzD,EAAAA,EAAgB8D,QAWtD5vB,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAsBDD,EAAAA,EAAAA,IAAA,CAAT8F,EAAAA,IAAQ,6BA8Qb,4JC/TO,MAAMga,UAA2BzvB,EAAAA,cAapCG,YAAYC,GACRC,MAAMD,GAXF,KAAAsvB,aAAuB,EAmTd,KAAAG,qBAAuB,CAACC,EAA0BpoB,IAA0B,KACzF,MAAMyI,EAAWzI,GAAUA,EAAOyI,SAAWzI,EAAOyI,SAAW,GACzD4f,EAAiC,CAAC,CAAEC,IAAKF,EAAkBG,QAAS9f,IAGtEwE,EAAAA,gBAAgBC,YAAYlN,EAAOwoB,qBACnCxoB,EAAOwoB,mBAAmBjuB,KAAImd,IAC1B,GAAIA,GAAQA,EAAK+Q,MAAO,CACpB,MAAMC,EAAWhR,EAAK+Q,MAAMH,IACtBK,EAA+BjR,EAAK+Q,MAAMG,cAChDP,EAAiB1iB,KAAK,CAClB2iB,IAAKI,EACLH,QAAS7Q,EAAKrf,KACduwB,cAAeD,EACf3f,qBAAsB,CAAEH,QAAS6O,EAAK7O,QAAQC,sBAK9D/O,KAAK6H,SAAS,CACVinB,cAAeR,EAAiBnmB,OAAS,EAAImmB,EAAmB,CAAC,CAAEC,IAAK,UACxEQ,qBAAsBrgB,KAIb,KAAAsgB,sBAAwB,CAAClvB,EAAqBmvB,IAAsB,KAC5EjvB,KAAKrB,MAAMuwB,cASZlB,EAAmB4Q,aAAc,EACjC5+B,KAAK6H,SAAS,CACVsnB,WAAYrvB,EAAK+F,GACjBg5B,oBAAqB/+B,EAAK4O,SAC1B0gB,WAAYH,MAZhBjvB,KAAK6H,SAAS,CACVsnB,WAAYnvB,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAervB,EAAK+F,QAAMQ,EAAYvG,EAAK+F,GAC3FupB,WAAYH,IAEZjvB,KAAKrB,MAAM0wB,mBACXrvB,KAAKouB,qBAAqBtuB,EAAKwvB,YAAcxvB,EAA7CE,KAYK,KAAA8+B,cAAgB,IAAM,KACnC9Q,EAAmB4Q,aAAc,EACjC5+B,KAAK6H,SAAS,CAAEsnB,WAAYnvB,KAAKmB,MAAMiuB,cAO1B,KAAAK,oBAAuB9nB,IAChC3H,KAAKwvB,SAASvnB,UAAYjI,KAAKwvB,SAASvnB,QAAQynB,SAAS/nB,EAAMC,SAC/D5H,KAAK6H,SAAS,CACVsnB,gBAAY9oB,EACZw4B,oBAAqB,GACrB/P,cAAe,QASV,KAAAa,oBAAuBhoB,IAChC3H,KAAKwvB,SAASvnB,UAAYjI,KAAKwvB,SAASvnB,QAAQynB,SAAS/nB,EAAMioB,gBAC/D5vB,KAAK6vB,iBAWI,KAAAkP,uBAAyB,CAACp2B,EAAek2B,EAA8BG,KAC/EhR,EAAmB4Q,aAAyB,IAAVj2B,MAGlCq2B,IAAmBH,IAGjBA,IAAwBG,EASlB,KAAAzO,kBAAqBzB,IAClC,IAAKA,IAAkBA,EAAcP,IACjC,OAAO,KAGX,MACMmC,EAAuC,CACzCC,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,IAEzCI,UAAU,GAEuB,IAAD/yB,EAAAgzB,EAApC,YAAyB/qB,KAVAoqB,EAAAA,EAAAA,kBAAiB,GAAG3B,EAAcP,MAAOvuB,KAAKrB,MAAMyD,QAAQqK,cAAc0C,eAAe5C,aAY1GhO,EAAAA,cAAC+yB,EAAAA,GAAKnuB,OAAAC,OAAA,CACF+L,eAAgBnP,KAAKrB,MAAMyD,QAAQqK,cAAc0C,eACjD9Q,UAAU,sBACNywB,EAAa,CACjByC,aAAcvxB,KAAKrB,MAAMyD,QAAQkK,QAAQilB,aACzC1C,cAAqF,QAAxEzwB,EAA6B,QAA7BgzB,EAAEtC,EAAcD,qBAAa,IAAAuC,EAAAA,EAAIpxB,KAAKrB,MAAMkB,OAAO2xB,6BAAqB,IAAApzB,EAAAA,EAAIsyB,EACzFe,oBAAoB,OACpBlqB,KAAK,WACL1B,GAAG,kCACH2oB,QAASM,EAAcN,WAI5B,MAraPxuB,KAAKwvB,SAAWjxB,EAAAA,YAChByB,KAAKi/B,YAAc1gC,EAAAA,YACnByB,KAAKmB,MAAQ,CAAEguB,gBAAY9oB,EAAWw4B,oBAAqB,GAAIzP,gBAAY/oB,EAAW0oB,qBAAsB,IAC5G/uB,KAAK6vB,cAAgB7vB,KAAK6vB,cAActK,KAAKvlB,MAC7CA,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAMyD,QAAQkK,QAAQmB,kBAC3BzN,KAAKrB,MAAM+O,aACX1N,KAAKrB,MAAMgO,WAEf3M,KAAKqB,SAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAK0B,iBAAkB,GAAI,IAGjEmM,oBACC/F,EAAAA,GAASC,YACTyM,SAASud,KAAK5c,iBAAiB,YAAanV,KAAKyvB,qBACjDjb,SAASud,KAAK5c,iBAAiB,WAAYnV,KAAK2vB,sBAIjDuP,qBAAkB,IAAAC,EACO,QAAxBA,EAAAn/B,KAAKi/B,YAAYh3B,eAAO,IAAAk3B,GAAxBA,EAA0BC,SAAS,IAAMp/B,KAAKrB,MAAMuwB,cACnDlvB,KAAKi/B,YAAYh3B,QAAQm3B,SAAS,GAAmBryB,QAIvDilB,uBACClqB,EAAAA,GAASC,YACTyM,SAASud,KAAKE,oBAAoB,YAAajyB,KAAKyvB,qBAAqB,GACzEjb,SAASud,KAAKE,oBAAoB,WAAYjyB,KAAK2vB,qBAAqB,IAIzEppB,SACH,MAAM,aAAE2oB,EAAY,SAAEuD,EAAQ,iBAAEkJ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAExJ,GAAeryB,KAAKrB,MAG1H,OADAqB,KAAKiuB,aAAe,EAEhB1vB,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GACCivB,EAAU,CACdh0B,UAAWqE,GAAAA,CAAW2vB,EAAWh0B,UAAW6wB,QAA0C7oB,IAA1BrG,KAAKmB,MAAMguB,WAA2B,QAAU,YAE5G5wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKqvB,EAAQ,CAAEjwB,IAAKxC,KAAKwvB,SAAUkD,SAAS,OAC5CxD,QAA0C7oB,IAA1BrG,KAAKmB,MAAMguB,YACxB5wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKs4B,GACNn9B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKu4B,EAAgB,CAAEt4B,QAASrD,KAAK8+B,mBAC1CvgC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKy4B,GAAyB77B,KAAKmB,MAAM09B,sBAGrD7+B,KAAK2yB,mBAMdA,iBACJ,MAAM,SAAEkB,EAAQ,aAAEzB,EAAY,aAAElD,GAAiBlvB,KAAKrB,OAChD,WAAEwwB,GAAenvB,KAAKmB,MACtB2yB,EAA8B,GAEpC,GAAI5E,QAA+B7oB,IAAf8oB,GAA4BiD,EAAajqB,OAAS,EAAG,CACrE,IAAImqB,EAA0B,GAC9B,IAAK,MAAMyB,KAAiB3B,EAAc,CACtC,GAAI2B,GAAiBA,EAAcluB,KAAOspB,EAAY,CAClDmD,EAAWyB,EACV/F,EAAmB4Q,YAEd5+B,KAAK6H,SAAS,CAAEunB,gBAAY/oB,EAAWw4B,oBAAqB9K,EAAcrlB,WAD1E1O,KAAK6H,SAAS,CAAEunB,gBAAY/oB,IAElC,MAGJ,GADAisB,EAAWtyB,KAAKg0B,gBAAgBD,GAC5BzB,GAAYA,EAASzsB,KAAOspB,EAC5B,MAIRmD,GACIwB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAKusB,EAASzsB,IAAQguB,GACvB,IACA7zB,KAAKi0B,oBAAoB3B,GAAW,WAIjDF,EAAalpB,SAAQ,CAACyU,EAAqBhV,KACvCmrB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4C,GACDkrB,EAAQ,CACZrxB,IAAKxC,KAAK++B,uBAAuBp2B,EAAO3I,KAAKmB,MAAM09B,oBAAqBlhB,EAAKjP,UAAY1O,KAAKi/B,YAAc,OAE3Gj/B,KAAKi0B,oBAAoBtW,QAM1C,OAAOmW,EAGHE,gBAAgBrW,GACpB,MAAMuW,EAAWvW,GAAQA,EAAKkV,QAC9B,GAAIqB,GAAYA,EAAS/rB,OAAS,EAC9B,IAAK,IAAIgsB,EAAI,EAAGA,GAAKD,EAAS/rB,OAAS,EAAGgsB,IAAK,CAC3C,GAAID,EAASC,GAAGtuB,KAAO7F,KAAKmB,MAAMguB,WAI9B,OAHCnB,EAAmB4Q,YAEd5+B,KAAK6H,SAAS,CAAEunB,WAAYzR,GAAQA,EAAK9X,GAAIg5B,oBAAqB3K,EAASC,GAAGzlB,WAD9E1O,KAAK6H,SAAS,CAAEunB,WAAYzR,MAAAA,OAAI,EAAJA,EAAM9X,KAEjCquB,EAASC,GAEpB,MAAMC,EAAQp0B,KAAKg0B,gBAAgBE,EAASC,IAC5C,GAAIC,EACA,OAAOA,EAKnB,OADAp0B,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,iDAC5B,KAGH8sB,oBAAoB7B,GACxB,OAAIA,GAAgBA,EAAaS,SAAWT,EAAaS,QAAQ1qB,OAAS,EAClEnI,KAAKrB,MAAMuwB,mBAA0C7oB,IAA1BrG,KAAKmB,MAAMguB,WAC/BnvB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,IAAI,GAGlEtH,EAAAA,cAAAA,EAAAA,SAAA,KACKyB,KAAKs0B,sBAAsBlC,GAC3BpyB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,IAAI,IAG7DusB,GAAgBA,EAAa1jB,UAAY0jB,EAAauB,SAAWvB,EAAauB,QAAQxrB,OAAS,EAC/FnI,KAAK+yB,oBAAoBX,EAAcA,EAAavsB,IAAI,GAAO,GAC/DusB,GAAgBA,EAAa1jB,WAAa0jB,EAAauB,QACvD3zB,KAAK4zB,oBAAoBxB,EAAcA,EAAavsB,IAAI,IAEnE7F,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,yDAC5B,MAGHktB,eAAeH,EAA4B/E,EAAqBoF,GACpE,MAAM,aAAErF,EAAY,SAAE2E,GAAa7zB,KAAKrB,MAClC61B,EAAyBx0B,KAAKrB,MAAMkB,OAAO40B,uBAAwB,EACnEC,EAA0B10B,KAAKrB,MAAMkB,OAAO80B,kBAAoB,EAGtE,GAAIxF,GAAcnvB,KAAKmB,MAAMguB,aAAeA,EAExC,OADAnvB,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,gEAC5B,KAGX,IAAK+sB,GAAgC,IAApBA,EAAS/rB,OAEtB,OADAnI,KAAKrB,MAAMyD,QAAQuK,UAAUxF,MAAM,4DAC5B,KAGX,IAAIytB,EAAyB,GAC7B,MAAMC,EACFX,GACAA,EAAS1zB,KAAI,CAACyF,EAAuB6uB,KACjC,MAAMC,EAAa9uB,EAAO4sB,SAAW5sB,EAAO4sB,QAAQ1qB,OAAS,EAC7D,IAAImqB,EAOAO,EALAP,EADAyC,GAAc7F,EACHlvB,KAAKs0B,sBAAsBruB,EAAQkpB,EAAY2F,GAE/C7uB,EAAO0tB,QAAU3zB,KAAK+yB,oBAAoB9sB,EAAQ6uB,GAAO90B,KAAK4zB,oBAAoB3tB,GAIjG,MAAM+uB,EAAcD,GAAcP,GAA0Bx0B,KAAKiuB,cAAgBgH,KAAKC,MAAMR,GAA2B,EAMvH,OALIM,IACAh1B,KAAKiuB,eACL2G,EAAiBJ,EAAyB,SAASx0B,KAAKiuB,aAAand,aAAe,GACpF+hB,EAAU7yB,KAAKq0B,eAAepuB,EAAO4sB,QAAS3D,EAAejpB,EAAOJ,QAAKQ,GAAW,IAGpF9H,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGywB,EAAQ,CACZ9tB,IAAKE,EAAOJ,GACZxH,UAAWqE,GAAAA,CAAWmxB,EAASx1B,UAAW22B,GAAe,eACzDxyB,IAAKxC,KAAK++B,uBAAuBjK,EAAK90B,KAAKmB,MAAM09B,oBAAqB54B,EAAOyI,UAAY1O,KAAKi/B,YAAc,OAE3G3M,EACAO,MAIjB,OAAO7yB,KAAKm1B,YAAYP,EAAgBC,EAAa1F,EAAYoF,GAG7DD,sBAAsBruB,EAAuBkpB,EAAqBxmB,GACtE,MAAM,OAAEzF,GAAWlD,KAAKrB,MACxB,OACIJ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4C,GACDzF,EAAM,CACVG,QAASrD,KAAKgvB,sBAAsB/oB,EAAQkpB,GAC5CiG,QAASp1B,KAAK6vB,cAAa,kBACV7vB,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,mBAC5D7F,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,cAClEspB,IAEZlpB,EAAOyI,UAKZqkB,oBACJ9sB,EACA0C,GAEyB,IADzB0sB,IAAAC,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,KAAAA,UAAA,GACAC,EAAAD,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,IAAAA,UAAA,GAEA,MAAM,KAAEE,GAASx1B,KAAKrB,MAChB+P,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GAC/C+mB,EAAcxvB,EAAOqpB,YAAcrpB,EAAOqpB,YAAc,GAC9DtvB,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OACI9C,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGoyB,EAAI,CACRzvB,IAAK4C,EACLysB,QAASG,GAAYv1B,KAAK6vB,cAC1BjoB,OAAQ3B,EAAOyvB,iBAAmB,cAAWrvB,EAC7CsvB,YAAaN,GAAer1B,KAAKouB,qBAAqBqH,EAAaxvB,GACnE+c,KAAM/c,EAAO0tB,SACTruB,EAAU,CACdjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KAE9DzI,EAAOyI,UAKZknB,uBAAuBlnB,EAAmBI,GAC9C,MAAM,KAAE0mB,GAASx1B,KAAKrB,MACtBqB,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OAAIqN,GAAYI,EAERvQ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKoyB,EAAI,CAAExS,KAAMlU,GAAaxJ,EAAU,CAAEjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KACzGA,GAIN,KAGHklB,oBAAoB3tB,EAAuB0C,GAAyC,IAAzB4sB,EAAAD,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,IAAAA,UAAA,GAC/D,MAAM,KAAEO,GAAS71B,KAAKrB,MACtB,OACIJ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWktB,EAAI,CAAET,QAASG,GAAYv1B,KAAK6vB,gBACjD5pB,EAAOyI,UAKZymB,YAAYW,EAAejB,EAA4BkB,EAAsBC,GACjF,MAAM,aAAEC,EAAY,SAAExD,EAAQ,kBAAEyD,EAAiB,kBAAE7G,EAAiB,uBAAE8G,EAAsB,aAAEjH,GAAiBlvB,KAAKrB,MAC9Gy3B,GACDlH,IACAG,GAAqB8G,KACrBjjB,EAAAA,gBAAgBC,YAAYnT,KAAKmB,MAAM2tB,iBACvCkH,EACCK,GACDnH,GAAgBiH,GAA0BjjB,EAAAA,gBAAgBC,YAAYnT,KAAKmB,MAAM2tB,iBAAmBkH,EACnGM,EAAoBt2B,KAAKiuB,aAAe,GAAKmI,EAAuBH,EAAc53B,UAAY,kBAEpG,OADA2B,KAAKiuB,aAAe,EAEhB1vB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK6yB,EAAY,CAAE53B,UAAWi4B,IAC/B/3B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGqvB,EAAQ,CACZp0B,UAAWqE,GAAAA,CACP+vB,EAASp0B,UACTy3B,EACAM,GAAwB,gBACxBA,GACIp2B,KAAKrB,MAAMkB,OAAO80B,kBAClB30B,KAAKrB,MAAMkB,OAAO80B,iBAAmB,GACrC,yBAGPE,GAEJuB,GACGp2B,KAAKmB,MAAM2tB,eACX9uB,KAAKmB,MAAM2tB,cAActuB,KAAImd,IAAI,IAAA4Y,EAAA,OAC7Bh4B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK8yB,EAAiB,CAAEnwB,IAAK4X,EAAK4Q,IAAKlwB,UAAW63B,EAAmB73B,YACrE2B,KAAKmB,MAAM2tB,eAAiB9uB,KAAKuwB,kBAAkB5S,GACnD0Y,GAA6Br2B,KAAK41B,uBAAuBjY,EAAK6Q,QAAkC,QAA3B+H,EAAE5Y,EAAK1O,4BAAoB,IAAAsnB,OAAA,EAAzBA,EAA2BznB,cAiGnH+gB,gBACC7vB,KAAKrB,MAAMuwB,cACZlvB,KAAK6H,SAAS,CAAEsnB,gBAAY9oB,EAAWyoB,cAAe,KAAM+P,oBAAqB,MAjZ1E7Q,EAAA4Q,aAAuB,EAub1C,wNCxcA,MAAMS,EAAqB,8DACrBC,EAAuB,GAAGD,mBAC1BE,EAAoB,GAAGF,eACvBG,EAAwB,GAAGH,cAa1B,IAAKI,GAAZ,SAAYA,GACRA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,uBAFJ,CAAYA,IAAAA,EAA6C,KAqBzD,MAmDaC,EAA6HC,EAAAA,GAAiBC,gBAGzJ,oDAAqD,CAAEC,UArDrDlhC,IACA,IAAAmhC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACA,MAAOC,EAAeC,GAAoBhiC,IAAAA,SAAeI,EAAM6hC,sBAEzDjwB,EAAkBkwB,IACpBF,EAAiBE,GACjB9hC,EAAM0E,QAAQo9B,IAIZC,GAAiCj/B,EAAAA,EAAAA,wBACnC9C,EAAM+C,kBACNkM,EAAAA,EAAAA,kBAAiB,QAASjP,EAAM+C,iBAAmB,GAAG8f,EAAAA,kBAAkBmf,6BAEtEC,GAA6Bn/B,EAAAA,EAAAA,wBAC/B9C,EAAM+C,kBACNkM,EAAAA,EAAAA,kBAAiB,QAASjP,EAAM+C,iBAAmB,GAAG8f,EAAAA,kBAAkBmf,yBAG5E,OACIpiC,IAAAA,cAAA,OAAKF,UAAWqE,GAAAA,CAAW/D,EAAMN,UAAWghC,IACxC9gC,IAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAWqE,GAAAA,CACP48B,EACAgB,IAAkBb,EAA8CoB,aAAerB,EAAwB,IAC1G,aACuD,QADvDM,EAC0B,QAD1BC,EACWphC,EAAMoB,iBAAS,IAAAggC,OAAA,EAAfA,EAAiBe,mCAA2B,IAAAhB,EAAAA,EAAI,GAC5Dr8B,MAAmD,QAA9Cu8B,EAAiB,QAAjBC,EAAEthC,EAAMoB,iBAAS,IAAAkgC,OAAA,EAAfA,EAAiBa,mCAA2B,IAAAd,EAAAA,EAAI,GACvDz4B,KAAK,SACLlE,QAASA,IAAMkN,EAAekvB,EAA8CoB,eACxEH,IAERniC,IAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAWqE,GAAAA,CACP68B,EACAe,IAAkBb,EAA8CsB,SAAWvB,EAAwB,IACtG,aACmD,QADnDU,EAC0B,QAD1BC,EACWxhC,EAAMoB,iBAAS,IAAAogC,OAAA,EAAfA,EAAiBa,+BAAuB,IAAAd,EAAAA,EAAI,GACxDz8B,MAA+C,QAA1C28B,EAAiB,QAAjBC,EAAE1hC,EAAMoB,iBAAS,IAAAsgC,OAAA,EAAfA,EAAiBW,+BAAuB,IAAAZ,EAAAA,EAAI,GACnD74B,KAAK,SACLlE,QAASA,IAAMkN,EAAekvB,EAA8CsB,WACxEH,4uBChDb,MAAMK,UAAgC1iC,IAAAA,cAwCzCG,YAAmBC,GACfC,MAAMD,GAsGO,KAAAuiC,wBAAsC,KAAK,IAAAC,EACxD,MAAMxjB,EAAO,IAAIyjB,EAAAA,GAAsBphC,KAAKrB,MAAM0iC,QAAQrgC,SAAUhB,KAAKrB,MAAM2iC,WAC/EC,EAAAA,GAAuBC,SAASxhC,KAAKrB,MAAMyD,QAAQkK,QAA2C,QAApC60B,EAAEnhC,KAAKrB,MAAMmB,KAAKisB,0BAAkB,IAAAoV,OAAA,EAAlCA,EAAoChhC,QAAQshC,QAAQ9jB,IAMnG,KAAA+jB,6BAA2C,KAAK,IAAAC,EAC7DJ,EAAAA,GAAuBC,SAASxhC,KAAKrB,MAAMyD,QAAQkK,QAA2C,QAApCq1B,EAAE3hC,KAAKrB,MAAMmB,KAAKisB,0BAAkB,IAAA4V,OAAA,EAAlCA,EAAoCxhC,QAAQyhC,eACpG5hC,KAAKmB,MAAM0gC,mBAeF,KAAAC,aAAoD,KAAK,IAAAC,EACtE,MAAMF,EAAmBT,EAAAA,GAAsBY,UAAUhiC,KAAKrB,MAAM0iC,QAAQrgC,SAAUhB,KAAKrB,MAAM2iC,WAC3FW,EAAWjiC,KAAKkiC,sCACtB,MAAO,CACHL,iBAAAA,EACAM,sCAAuCZ,EAAAA,GAAuBC,SAC1DxhC,KAAKrB,MAAMyD,QAAQkK,QACe,QADRy1B,EAC1B/hC,KAAKrB,MAAMmB,KAAKisB,0BAAkB,IAAAgW,OAAA,EAAlCA,EAAoC5hC,QACtCiiC,YAAYP,GACdQ,qBAAsBJ,EAAS95B,SAtInCnI,KAAKsiC,WAAa,+BAClBtiC,KAAKuiC,YAAc,GAAGviC,KAAKsiC,cAActiC,KAAKrB,MAAMkH,MAAM28B,EAAAA,OAAOC,KAAKC,iBAEtE1iC,KAAKmB,MAAQnB,KAAK8hC,eAElB9hC,KAAK2iC,mBAAqB1B,EAAwB2B,0BAClD3B,EAAwB4B,gCAAgC7iC,KAAKrB,OAxCzD,uCAAuCA,GAK3C,OAJKsiC,EAAwB2B,2BAA6B1vB,EAAAA,gBAAgBC,YAAYxU,EAAM2Y,MAAMwrB,4BAC9F7B,EAAwB2B,0BAA4BjkC,EAAM2Y,MAAMwrB,yBAAyB,IAGtF7B,EAAwB2B,0BAG3B,sCACJvkC,EACAyzB,EACAruB,EACA8M,GAEA,MAAM1B,EAAaqb,EAAAA,iBAAiBC,kBAAkB5Z,GACtD,IAAI6I,EASJ,OARI0Y,IACA1Y,EACI7a,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OAAKF,UAAW,GAAGA,YACnBE,IAAAA,cAAA,OAAKF,UAAW,GAAGA,WAAoByzB,KAK/CvzB,IAAAA,cAAC2E,EAAAA,OAAM,CAAC7E,UAAWA,EAAWoF,MAAOA,EAAOJ,QAASkN,EAAgB7M,SAAUmL,GAC1EuK,GAiBNvL,oBAAiB,IAAAk1B,EACpBxB,EAAAA,GAAuBC,SAASxhC,KAAKrB,MAAMyD,QAAQkK,QAA2C,QAApCy2B,EAAE/iC,KAAKrB,MAAMmB,KAAKisB,0BAAkB,IAAAgX,OAAA,EAAlCA,EAAoC5iC,QAAQ6iC,kBAAkBC,UACtH,CACIC,WAAYljC,KAAKuiC,YAKjBY,QAASA,KACLnjC,KAAK6H,SAAS7H,KAAK8hC,mBAM5BsB,wBAAwBC,GACvBA,EAAchC,QAAQrgC,WAAahB,KAAKrB,MAAM0iC,QAAQrgC,UAAYqiC,EAAc/B,YAActhC,KAAKrB,MAAM2iC,WACzGthC,KAAK6H,SAAS7H,KAAK8hC,gBAIpB9P,uBAAoB,IAAAsR,EACvB/B,EAAAA,GAAuBC,SACnBxhC,KAAKrB,MAAMyD,QAAQkK,QACe,QADRg3B,EAC1BtjC,KAAKrB,MAAMmB,KAAKisB,0BAAkB,IAAAuX,OAAA,EAAlCA,EAAoCnjC,QACtC6iC,kBAAkBO,YAAYvjC,KAAKuiC,aAGlCh8B,SAEH,IADuBvG,KAAKrB,MAAMyD,QAAQkK,QAAQ6e,QAAQC,iBAEtD,OAAO,KAGX,MAAMtZ,EAAStJ,EAAAA,EAAA,GACRxI,KAAKrB,OAAK,IACboT,YAAa,CACTA,YAAa/R,KAAKrB,MAClBN,UAAW2B,KAAKsiC,cAIpBtiC,KAAK2iC,oBACL7wB,EAAUgxB,yBAA2B7B,EAAwB2B,2BAGjE,MAAMY,EAAkBxjC,KAAKrB,MAAMkB,OAAO4jC,kBAAoB,GAAGzjC,KAAKsiC,qBAAuB,GAAGtiC,KAAKsiC,mBAErG,IAAKtiC,KAAKmB,MAAMghC,qCAAsC,CAClD,MAAMrQ,EAAa9xB,KAAKrB,MAAMkB,OAAO4jC,kBAAoBzjC,KAAKrB,MAAMoB,UAAU2jC,oCAAiCr9B,EAO/G,OANAyL,EAAU6xB,wBAA0B1C,EAAwB2C,+BACxDlhC,GAAAA,CAAW,GAAG8gC,cAA6BA,GAC3C1R,EACA9xB,KAAKrB,MAAMoB,UAAU2jC,+BACrB1jC,KAAK0hC,8BAEF1hC,KAAKrB,MAAMkU,WAAWf,GAGjC,MAAM+xB,EAAgB7jC,KAAK8jC,oBAC3B,IAAK5Z,EAAAA,iBAAiBC,kBAAkB0Z,IAAkBA,GAAiB7jC,KAAKmB,MAAMkhC,qBAAsB,CACxG,MAAMvQ,EAAa9xB,KAAKrB,MAAMkB,OAAO4jC,kBAAoBzjC,KAAKrB,MAAMoB,UAAUgkC,2CAAwC19B,EAMtH,OALAyL,EAAU6xB,wBAA0B1C,EAAwB2C,+BACxDJ,EACA1R,EACA9xB,KAAKrB,MAAMoB,UAAUgkC,uCAElB/jC,KAAKrB,MAAMkU,WAAWf,GAGjC,MAAMggB,EAAa9xB,KAAKrB,MAAMkB,OAAO4jC,kBAAoBzjC,KAAKrB,MAAMoB,UAAUikC,+BAA4B39B,EAO1G,OANAyL,EAAU6xB,wBAA0B1C,EAAwB2C,+BACxDJ,EACA1R,EACA9xB,KAAKrB,MAAMoB,UAAUikC,0BACrBhkC,KAAKkhC,yBAEFlhC,KAAKrB,MAAMkU,WAAWf,GAGzBgyB,oBACJ,MAAMtJ,GAAWI,EAAAA,EAAAA,UAAS,CAAEqJ,QAASC,EAAAA,YAAYC,QAAS/hC,QAASpC,KAAKrB,MAAMyD,QAAQkK,UACtF,MAAiB,OAAbkuB,GAAkC,OAAbA,EACdx6B,KAAKrB,MAAMyD,QAAQC,IAAIxC,OAAOukC,qCAElCpkC,KAAKrB,MAAMyD,QAAQC,IAAIxC,OAAOwkC,sCAoBjCnC,sCAAmC,IAAAoC,EAAAC,EACvC,MAAM7mB,EAAQ6jB,EAAAA,GAAuBC,SAASxhC,KAAKrB,MAAMyD,QAAQkK,QAA2C,QAApCg4B,EAAEtkC,KAAKrB,MAAMmB,KAAKisB,0BAAkB,IAAAuY,OAAA,EAAlCA,EAAoCnkC,QAAQud,MAChH4jB,GAAYkD,EAAAA,EAAAA,IAAaxkC,KAAKrB,MAAMyD,QAAQkK,SAElD,OADoF,QAA5Di4B,EAAG7mB,MAAAA,OAAK,EAALA,EAAOsf,QAAOqE,GAAWA,EAAQC,YAAcA,WAAU,IAAAiD,EAAAA,EAAI,IAsBhG,0IC1NO,MAAME,EAA8F9lC,IACvG,MAAM,wBAAEglC,EAAuB,yBAAEb,GAA6BnkC,EAE9D,OACIJ,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKzE,EAAMoT,aACb4xB,EACAb,IAKb,kGCQA,MAAM4B,EAAqBA,CAACC,EAA+BC,IAA6B,KAAK,IAAAC,EACnE,QAAtBA,EAAAF,EAASG,qBAAa,IAAAD,GAAtBA,EAAwBE,UAAUC,aAAaJ,IAQ7CK,EAAwBN,GAAkC,KAAK,IAAAO,EAC3C,QAAtBA,EAAAP,EAASG,qBAAa,IAAAI,GAAtBA,EAAwBH,UAAUC,aAAY,IA0H5CG,EAAiBA,CACnBR,EACA5kC,EACAqlC,EACA1jC,EACA2jC,EACAC,IAEIX,EAASx9B,QAAUpH,EAAUwlC,uBAEzBhnC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,0BACXsmC,EAASa,cACTb,EAASc,QAKlBJ,EAEI9mC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,sCAnEEqnC,EAC1Bf,EACA5kC,EACAqlC,EACA1jC,EACA4jC,KACoB,IAAAK,EAEpB,IAAKhB,EAASG,gBAAkBM,IAA8B,QAAbO,EAAAhB,EAAS7kC,YAAI,IAAA6lC,OAAA,EAAbA,EAAeC,SAASC,gBAAiBP,EACtF,OAAO,KAGX,MAAM,uBAAEQ,EAAsB,uBAAEC,EAAsB,oBAAEC,GAAwBjmC,EAE1E6kC,EAAkBD,EAASG,cAAcF,gBAEzCvjC,GAAUuM,EAAAA,EAAAA,kBAAiB,QAASlM,EAAmB8f,EAAAA,kBAAkBykB,eACzEC,GAAyBzkC,EAAAA,EAAAA,wBAAuBC,EAAmBL,GAEzE,OACI9C,EAAAA,cAAAA,EAAAA,SAAA,KACKqmC,EACGrmC,EAAAA,cAAC2E,EAAAA,OAAM,CAACqE,KAAK,OAAOlJ,UAAU,qCAAqCgF,QAAS4hC,EAAqBN,IAC5FmB,GAEL,KACJvnC,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACHmE,KAAK,OACLlJ,UAAU,sCACN6nC,EAAsB,CAC1B7iC,QAASqhC,EAAmBC,EAAUC,KAErCA,EAAkBmB,EAAyBC,KAoC3CN,CAAsBf,EAAU5kC,EAAWqlC,EAAe1jC,EAAkB4jC,GAC5EX,EAASwB,mBACTxB,EAASa,cACTb,EAASc,QAKlBd,EAASwB,mBAEL5nC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,gCACXsmC,EAASwB,mBACTxB,EAASa,cACTb,EAASc,QAMlBlnC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,0BACXsmC,EAASa,cACTb,EAASc,QAehBW,EAA0BA,CAC5BC,EACAtmC,EACAqlC,EACA1jC,EACA2jC,EACAC,IAEOe,EAAU7lC,KAAI,CAACmkC,EAAUh8B,KAC5B,MAAM29B,EAAY39B,EAClB,OACIpK,EAAAA,cAAA,OAAKF,UAAU,sBAAsB0H,IAAKugC,GACrC3B,EAASiB,SACVrnC,EAAAA,cAAA,QAAMF,UAAU,mCACXgnC,EACK,KArLDkB,EACrB5B,EACA5kC,EACAqlC,EACA1jC,EACA4jC,KACoB,IAAAkB,EAEpB,IAAK7B,EAASG,gBAAkBM,IAA8B,QAAboB,EAAA7B,EAAS7kC,YAAI,IAAA0mC,OAAA,EAAbA,EAAeZ,SAASC,gBAAiBP,EACtF,OAAO,KAGX,MAAM,uBACFS,EAAsB,yBACtBU,EAAwB,oBACxBT,EAAmB,8BACnBU,EAA6B,uBAC7BZ,GACA/lC,EAEE6kC,EAAkBD,EAASG,cAAcF,gBAEzCvjC,GAAUuM,EAAAA,EAAAA,kBAAiB,QAASlM,EAAmB8f,EAAAA,kBAAkBykB,eACzEC,GAAyBzkC,EAAAA,EAAAA,wBAAuBC,EAAmBL,GAEzE,OACI9C,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKuhC,EAASG,cAAc6B,gBAC7BpoC,EAAAA,cAAA,OAAKF,UAAU,+BACVumC,EACGrmC,EAAAA,cAAA,QAAMF,UAAU,WAAWqoC,GAE3BnoC,EAAAA,cAAA,QAAMF,UAAU,QAAQooC,IAG/B7B,GACGrmC,EAAAA,cAAA,OAAKF,UAAU,oCACXE,EAAAA,cAAA,QAAMF,UAAU,0CAA0CsmC,EAASG,cAAc8B,aACjFroC,EAAAA,cAAC2E,EAAAA,OAAM,CAACqE,KAAK,OAAOlJ,UAAU,mCAAmCgF,QAAS4hC,EAAqBN,IAC1FmB,IAIbvnC,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAU,4BACN6nC,EAAsB,CAC1B7iC,QAASqhC,EAAmBC,EAAUC,KAErCA,EAAkBmB,EAAyBC,KAuIlCO,CAAiB5B,EAAU5kC,EAAWqlC,EAAe1jC,EAAkB4jC,GAC5EH,EAAeR,EAAU5kC,EAAWqlC,EAAe1jC,EAAkB2jC,EAAkBC,QAqBtGuB,EAAkBA,CACpBloC,EACA0nC,EACAtmC,EACAqlC,EACA0B,EACAC,EACAC,EACAtlC,EACA2jC,EACAC,IAEIyB,EACOxoC,EAAAA,cAAAA,EAAAA,SAAA,KAAGwoC,GAKVV,EACO1nC,EAAMsoC,sBACTb,EAAwBC,EAAWtmC,EAAWqlC,EAAe1jC,EAAkB2jC,EAAkBC,GAEjG/mC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKzE,EAAMuoC,kBACXd,EAAwBC,EAAWtmC,EAAWqlC,EAAe1jC,EAAkB2jC,EAAkBC,IAKvG0B,EACHzoC,EAAAA,cAAA,OAAKF,UAAU,wBACXE,EAAAA,cAAA,OAAKF,UAAU,iBAAiBM,EAAM2Y,MAAM6vB,YAGhD5oC,EAAAA,cAAAA,EAAAA,SAAA,KAAGuoC,GAyCLM,EAA6BA,CAC/BzC,EACA5kC,EACA4Z,EACA2rB,KACA,IAAA+B,EACA,MAAMzC,EAAwC,QAAzByC,EAAG1C,EAASG,qBAAa,IAAAuC,OAAA,EAAtBA,EAAwBzC,iBAC1C,WAAE0C,EAAU,aAAEC,EAAY,kBAAEC,EAAiB,uBAAEC,GAA2B1nC,EAChF,IAAI2nC,EASJ,OAPAA,EAAa9C,EAAkB0C,EAAaC,EACxC5C,EAAS7kC,MAAQ6kC,EAAS7kC,KAAK8lC,SAAS+B,cACxCD,EAAaD,EACLpgC,EAAAA,iBAAiB+iB,cAAckb,KACvCoC,EAAa/C,EAAS7kC,MAAQ6kC,EAAS7kC,KAAK8lC,SAASC,eAAiBP,EAAwBkC,EAAoBE,GAIlHnpC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKF,UAAU,+CACXE,EAAAA,cAAA,KAAGF,UAAW,+CAA+CqpC,EAAW/yB,cAAc5Q,QAAQ,IAAK,cACnGxF,EAAAA,cAAA,KAAGF,UAAW,+CAA+CqpC,EAAW/yB,cAAc5Q,QAAQ,IAAK,QAAS2jC,GAnD1FE,EAACjD,EAA+B5kC,EAA2B4Z,KAAiB,IAAAkuB,EAAAC,EAAAC,EAC1G,MAAMnD,EAAwC,QAAzBiD,EAAGlD,EAASG,qBAAa,IAAA+C,OAAA,EAAtBA,EAAwBjD,iBAC1C,UAAEoD,EAAS,WAAEC,GAAeloC,EAG5BmoC,EAAa,IAAIvuB,KADRA,EADc,EACSsuB,EAAaD,KAEnD,OACIzpC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,qDACXumC,EACGrmC,EAAAA,cAAA,KAAGF,UAAU,wDACc,QADwCypC,EAC9DnD,EAASG,qBAAa,IAAAgD,OAAA,EAAtBA,EAAwBK,eACxB,KACsB,QADlBJ,EACJpD,EAASG,qBAAa,IAAAiD,OAAA,EAAtBA,EAAwBnB,aAE7B,KACJroC,EAAAA,cAAA,KAAGF,UAAU,wDAAwD6pC,MAoCpEN,CAA0BjD,EAAU5kC,EAAW4Z,MA+OhE,EA7CsEhb,IAAmD,IAAAypC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACrH,MACMC,EACFnqC,EAAAA,cAAA,MAAIF,UAAU,qBACTM,EAAMoB,UAAU4oC,UACjBpqC,EAAAA,cAAA,QAAMF,UAAU,iCACX,KAAK8L,OAAiB,QAAXi+B,EAACzpC,EAAMiqC,YAAI,IAAAR,OAAA,EAAVA,EAAYS,qBALH,KAKkC,QAAVR,EAAA1pC,EAAMiqC,YAAI,IAAAP,OAAA,EAAVA,EAAYQ,kBAAyC,QAAU,YAIzH,OACItqC,EAAAA,cAAA,MAAA4E,OAAAC,OAAA,CAAK/E,UAAWM,EAAMN,UAAWwH,GAAIlH,EAAMkH,IAAQlH,EAAMwa,uBAAuBxa,IAC3EA,EAAMmqC,qCACNJ,EACDnqC,EAAAA,cAAA,OAAKF,UAAU,4BAAuD,QAA7BiqC,EAAE3pC,EAAMoqC,6BAAqB,IAAAT,OAAA,EAA3BA,EAA6BU,YA5B1CrqC,CAAAA,GAElCJ,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,sCACXM,EAAMsqC,2BACNtqC,EAAMuqC,uBAyBNC,CAAiCxqC,KACtB,QAAX4pC,EAAC5pC,EAAMiqC,YAAI,IAAAL,GAAVA,EAAYa,iBAAkBzqC,EAAM0qC,mBApExBC,EAoE6D3qC,EAAM0qC,iBAlErF9qC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkmC,EAAWC,yBAChBD,EAAWE,iBACZjrC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,oCAAoCirC,EAAWG,qBAC9DH,EAAWI,mBA+DL,QAAVlB,EAAA7pC,EAAMiqC,YAAI,IAAAJ,GAAVA,EAAYY,gBAAkBzqC,EAAMsoC,sBAzLpB0C,EAAChrC,EAAiDoB,IACvEpB,EAAMirC,gBAAkB12B,EAAAA,gBAAgBC,YAAYxU,EAAMirC,gBAEtDrrC,EAAAA,cAAA,OAAKF,UAAU,wBACVM,EAAMirC,eAAeppC,KAAIqpC,IAAY,IAAAC,EAAAC,EAClC,OACIxrC,EAAAA,cAAA,OAAKwH,IAAK8jC,EAAU,GAAGG,WAAY3rC,UAAU,+BACxC+oC,EACGyC,EAAU,GACV9pC,EAxBZ4kC,CAAAA,IAChB,IAAIsF,EAAY,EAKhB,OAHAA,EAAYtF,EAASuF,QAAO,CAACvwB,EAAOgE,KAAQ,IAAAwsB,EAAAC,EACxC,OAAOzwB,GAAqC,QAAhCwwB,EAAa,QAAbC,EAAIzsB,EAAK7d,YAAI,IAAAsqC,OAAA,EAATA,EAAWxE,SAASyE,gBAAQ,IAAAF,EAAAA,EAFvB,QAIlBF,GAmBqBK,CAAWT,GACuC,QAD7BC,EACrBnrC,EAAMyD,QAAQqK,cAAc0C,eAAeo7B,eAAO,IAAAT,OAAA,EAAlDA,EAAoDU,uBAEvD3D,EACGloC,EACAkrC,EACAlrC,EAAMoB,UACNpB,EAAMymC,cACNzmC,EAAMmoC,iBACNnoC,EAAMooC,kBACNpoC,EAAM8rC,eACN9rC,EAAM+C,iBACN/C,EAAMsoC,sBAC4C,QADvB8C,EAC3BprC,EAAMyD,QAAQqK,cAAc0C,eAAeo7B,eAAO,IAAAR,OAAA,EAAlDA,EAAoDS,4BAQzE7rC,EAAM8rC,eACTlsC,EAAAA,cAAA,OAAKF,UAAU,wBACXE,EAAAA,cAAA,OAAKF,UAAU,iBAAiBM,EAAM2Y,MAAM6vB,YAGhD5oC,EAAAA,cAAAA,EAAAA,SAAA,KAAGI,EAAMmoC,kBAsJC6C,CAAqBhrC,EAAOA,EAAMoB,WAClC8mC,EACIloC,EACAA,EAAMkrC,UACNlrC,EAAMoB,UACNpB,EAAMymC,cACNzmC,EAAMmoC,iBACNnoC,EAAMooC,kBACNpoC,EAAM8rC,gBAEf9rC,EAAM+rC,qBACHnsC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKzE,EAAMgsC,qBACZpsC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,4BACXM,EAAM+rC,oBACI,QAAVjC,EAAA9pC,EAAMiqC,YAAI,IAAAH,GAAVA,EAAYW,eAxIHwB,EAC9BC,EACAC,EACAnsC,IAEKksC,EAKDtsC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK0nC,GACLD,EAAoBE,SACpBF,EAAoBG,SACpBH,EAAoBI,QACpBJ,EAAoB7B,aARzBrqC,EAAMyD,QAAQuK,UAAUxF,MAAM,uDACvB,MAkIeyjC,CAA0BjsC,EAAMusC,wBAAyBvsC,EAAMwsC,kBAAmBxsC,GA/GhFysC,EAC5BC,EACAP,EACAnsC,IAEK0sC,EAKD9sC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK0nC,GACLO,EAAkB3T,SAClB2T,EAAkBC,eAAiBD,EAAkBC,eAAiB,KACtED,EAAkB1T,SAClB0T,EAAkBE,YAClBF,EAAkBzT,IAClByT,EAAkBrC,aAVvBrqC,EAAMyD,QAAQuK,UAAUxF,MAAM,qDACvB,MAyGeikC,CAAwBzsC,EAAMoqC,sBAAuBpqC,EAAMwsC,kBAAmBxsC,IA7JlF6sC,EA8JgB7sC,EAAM8sC,qBA7JzBv4B,EAAAA,gBAAgBC,YAAYq4B,EAAU3U,QAIrDt4B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKooC,EAAUE,SACfF,EAAUpvB,OACVovB,EAAU3U,QALR,MAsFqBl4B,CAAAA,IAAkD,IAAAgtC,EAClF,OACIptC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,+BACD,QAAVstC,EAAAhtC,EAAMiqC,YAAI,IAAA+C,GAAVA,EAAYvC,eAAiB,KAAOzqC,EAAMitC,UAC3CrtC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,uCACXM,EAAMsqC,2BACNtqC,EAAMuqC,sBACNvqC,EAAMktC,uBAAyB34B,EAAAA,gBAAgBC,YAAYxU,EAAMktC,uBAC9DttC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKzE,EAAMmtC,+BAAgCntC,EAAMktC,uBACtD,MAEPltC,EAAMotC,+BA6DEC,CAA2BrtC,IAGnCA,EAAMymC,eAnKOoG,IAAAA,EAuEAlC,qFCnb1B,MAAM2C,UAAkB1tC,EAAAA,cAGpBG,YAAmBC,GACfC,MAAMD,GA0BO,KAAAutC,sBAAyBvkC,IACtC,MAAMR,EAA+B,KAAvBQ,EAAMC,OAAOzD,MAAe,GAAKnE,KAAKmB,MAAMgG,MAC1DnH,KAAK6H,SAAS,CACVskC,oBAAqBxkC,EAAMC,OAAOzD,MAAM6G,OACxC7D,MAAAA,EACAilC,WAAYzkC,EAAMC,OAAOzD,SAQhB,KAAAkoC,gBAAmBC,IAChC,IAAKA,EACD,OAEJ,MAAMC,EAAevsC,KAAKmB,MAAMgrC,oBAEhCG,EACKE,aAAa,CAAEZ,UAAWW,IAC1BnrB,MAAKjhB,IACoB,YAAlBA,EAAO2iB,OAEP9iB,KAAK6H,SAAS,CAAEskC,oBAAqB,GAAIhlC,MAAO,GAAIilC,UAAU,IAClC,iBAArBjsC,EAAOssC,UACdzsC,KAAK6H,SAAS,CAAEV,MAAOnH,KAAKrB,MAAM+tC,8BAElC1sC,KAAK6H,SAAS,CAAEV,MAAOnH,KAAKrB,MAAMguC,+BAGzCrrB,OAAM,KACHthB,KAAK6H,SAAS,CAAEV,MAAOnH,KAAKrB,MAAMiuC,oCAS7B,KAAAC,iBAAoBP,GAAuC3kC,IACxEA,EAAMmlC,iBACN9sC,KAAKqsC,gBAAgBC,IAQR,KAAAS,sBAAyBT,GAAsC,KAC5EtsC,KAAKqsC,gBAAgBC,IAUR,KAAA3vB,YAAc,CAACqwB,EAA8BC,EAAkCX,KAC5F,MAAMhnC,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAKrB,MAAM+C,iBAAmB1B,KAAKqB,SAE7E,OACI9C,EAAAA,cAAA,QAAMomB,SAAU3kB,KAAK6sC,iBAAiBP,GAAYjuC,UAAU,kCACxDE,EAAAA,cAAA,OAAKF,UAAU,yBACXE,EAAAA,cAAA,SACIF,UAAU,4BACV4F,SAAUjE,KAAKksC,sBACf/nC,MAAOnE,KAAKmB,MAAMgrC,oBAClBe,YAAaF,IAEjBzuC,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACHK,MAAOwpC,EACP5uC,UAAU,gCACVgF,QAASrD,KAAK+sC,sBAAsBT,GACpC5oC,UAAW1D,KAAKmB,MAAMirC,UAClB9mC,OAYP,KAAA6nC,iBAAmB,CAACb,EAAmC3kC,KAA2B,IAAAylC,EAC/F,IAAKd,EACD,OAEJ,MAAMe,EAAqD,QAAjDD,EAAGzlC,EAAMc,cAAc6nB,aAAa,qBAAa,IAAA8c,EAAAA,EAAI,GAC/Dd,EACKgB,iBAAiB,CACdC,WAAY,CAACF,KAEhBjsB,MAAKjhB,IACoB,YAAlBA,EAAO2iB,QACP9iB,KAAK6H,SAAS,CAAEV,MAAO,QAG9Bma,OAAM,KACHthB,KAAK6H,SAAS,CAAEV,MAAOnH,KAAKrB,MAAM6uC,uCAS7B,KAAAC,wBAA2B9uC,IACxC,IAAKA,EAAMiqC,OAASjqC,EAAMiqC,KAAKA,KAAK8E,UAAYx6B,EAAAA,gBAAgBC,YAAYxU,EAAMiqC,KAAKA,KAAK8E,SACxF,OAOJ,MAAMC,EAA0BhmC,IAC5B3H,KAAKmtC,iBAAiBxuC,EAAMiqC,KAAMjhC,IAGtC,OACIpJ,EAAAA,cAAAA,EAAAA,SAAA,KACKI,EAAMiqC,KAAKA,KAAK8E,QAAQltC,KAAKotC,IAC1B,MAAMh/B,EAAYjQ,EAAMkvC,4BAClBnnC,EAAAA,EAAAA,QAAO/H,EAAMkvC,2BAA4BlvC,EAAMmvC,gBAAiBF,EAAOG,MACvE,GAEN,OACIxvC,EAAAA,cAAA,OAAKwH,IAAK6nC,EAAOG,KAAM1vC,UAAU,kCAC7BE,EAAAA,cAAA,OAAKF,UAAU,8BACV,QACDE,EAAAA,cAAA,QAAMF,UAAU,mCAAmCuvC,EAAOG,MACzD,YAELxvC,EAAAA,cAAC2E,EAAAA,OAAM,CACHO,MAAO9E,EAAMmvC,gBACbzvC,UAAU,mCACVgF,QAASsqC,EAAsB,aACnBC,EAAOG,KAAI,aACXn/B,UA5KpC5O,KAAKqB,SAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAKrB,MAAM+C,iBAAmB8f,EAAAA,kBAAkBwsB,gBACzFhuC,KAAKmB,MAAQ,CACTgrC,oBAAqB,GACrBhlC,MAAO,GACPilC,UAAU,GAIX7lC,SACH,OACIhI,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKF,UAAU,0BAA0B2B,KAAKrB,MAAMsvC,sBACnDjuC,KAAK2c,YAAY3c,KAAKrB,MAAMquC,qBAAsBhtC,KAAKrB,MAAMsuC,yBAA0BjtC,KAAKrB,MAAMiqC,MACnGrqC,EAAAA,cAAA,KAAGF,UAAW2B,KAAKmB,MAAMgG,MAAQ,mBAAqB,GAAE,YAAY,aAC/DnH,KAAKmB,MAAMgG,OAEfnH,KAAKytC,wBAAwBztC,KAAKrB,SAsKnD,4DCvNYuvC,gIAAZ,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,KAsBrB,MAAMC,EAAmBA,CAACxvC,EAAqCmwB,EAAuBsf,KACzF,MAAM5d,GAAmBC,EAAAA,EAAAA,kBAAiB,GAAG3B,IAAiBnwB,EAAM0vC,SAASjsC,QAAQqK,cAAc0C,eAAe5C,aAC5GmkB,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,IAEzCI,UAAU,GAEd,QAAyB9qB,IAArBmqB,EAAgC,CAAC,IAAD8d,EAChC,MAAMC,EAAiC,CAAEhgB,IAAKiC,GAC9C,OACIjyB,EAAAA,cAAC8Q,EAAAA,GAAclM,OAAAC,OAAA,CACX+L,eAAgBxQ,EAAM0vC,SAASjsC,QAAQqK,cAAc0C,eACrD9Q,UAAU,sBACNkwC,EAAS,CACbhd,aAAc5yB,EAAM0vC,SAASjsC,QAAQkK,QAAQilB,aAC7C1C,cAA0D,QAA7Cyf,EAAE3vC,EAAM0vC,SAASxuC,OAAO2xB,6BAAqB,IAAA8c,EAAAA,EAAI5d,EAC9De,oBAAoB,OACpBlqB,KAAK,WACLinB,QAAS4f,KAIrB,OAAO,2kBC/CJ,MAAMI,UAAmCjwC,EAAAA,cAuB5CG,YAAmBC,GACfC,MAAMD,GArBO,KAAA8vC,eAAyBP,EAAiBQ,KAEnD,KAAAzgB,aAAuBigB,EAAiBS,KAM/B,KAAAxgB,UAAoB+f,EAAiB/f,UAIrC,KAAAG,iBAA0C,GAmG1C,KAAAsgB,cAAgB,KAC7B5uC,KAAK6H,UAASgnC,IAAa,CACvB1f,WAAY,EACZ2f,WAAYD,EAAcC,eA2QjB,KAAAC,0BAA4B,CAACC,EAA4B/b,IAA0B,KAChG,MAAM,eAAErB,GAAmB5xB,KAAKmB,MAC1B0wB,EAAU,CAAE,CAACmd,IAAW/b,GAC9BjzB,KAAK6H,SAAS,CAAE+pB,eAAcppB,EAAAA,EAAA,GAAOopB,GAAmBC,MAmI3C,KAAAzD,qBAAuB,CAAC6gB,EAA6BhpC,IAA0B,KAC5F,MAAMyI,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GAC/C4f,EAA0C,CAAC,CAAEC,IAAK0gB,EAAqBzgB,QAAS9f,IAGtF,GAAIwE,EAAAA,gBAAgBC,YAAYlN,EAAOwoB,oBACnC,IAAK,MAAM9Q,KAAQ1X,EAAOwoB,mBAAoB,CAC1C,MAAMa,EAAc3R,EAAK+Q,MAAMH,IAC/BD,EAAiB1iB,KAAK,CAClB2iB,IAAKe,EACLd,QAAS7Q,EAAKrf,KACd2Q,qBAAsB,CAAEH,QAAS6O,EAAK7O,QAAQC,kBAI1D/O,KAAK6H,SAAS,CACVinB,cAAe5b,EAAAA,gBAAgBC,YAAYmb,GAAoBA,EAAmB,CAAC,CAAEC,IAAK,aAUjF,KAAAS,sBAAwB,CAAClvB,EAAqBmvB,IAAsB,KAC5EjvB,KAAKmB,MAAM+tC,cASZV,EAA2B5P,aAAc,EACzC5+B,KAAK6H,SAAS,CACVsnB,WAAYrvB,EAAK+F,GACjBg5B,oBAAqB/+B,EAAK4O,SAC1B0gB,WAAYH,MAZhBjvB,KAAK6H,SAAS,CACVsnB,WAAYrvB,EAAK+F,GACjBupB,WAAYH,IAEZjvB,KAAKrB,MAAM0vC,SAAShf,mBACpBrvB,KAAKouB,qBAAqBtuB,EAAKwvB,YAAcxvB,EAA7CE,KAgBK,KAAA8+B,cAAgB,IAAM,KACnC0P,EAA2B5P,aAAc,EACzC5+B,KAAK6H,UAASgnC,IAAa,CAAO1f,WAAY0f,EAAczf,gBAO/C,KAAAK,oBAAuB9nB,IAChC3H,KAAKwvB,SAASvnB,UAAYjI,KAAKwvB,SAASvnB,QAAQynB,SAAS/nB,EAAMC,UAC1D5H,KAAKmB,MAAM+tC,aAGZlvC,KAAK6H,SAAS,CAAEsnB,gBAAY9oB,EAAWw4B,oBAAqB,GAAIiQ,WAAW,IAF3E9uC,KAAK6H,SAAS,CAAEsnB,WAAY,EAAG0P,oBAAqB,GAAIiQ,WAAW,MAc9D,KAAA/P,uBAAyB,CAACp2B,EAAek2B,EAA8BG,KAE/EwP,EAA2B5P,aADL,IACoBj2B,MAG1Cq2B,IAAmBH,IAGjBA,IAAwBG,EAMlB,KAAAmQ,cAAgB,KAAW,IAAAC,EACnCpvC,KAAKmB,MAAM+tC,aAGZlvC,KAAK6H,SAAS,CAAEsnB,gBAAY9oB,EAAWw4B,oBAAqB,GAAIiQ,WAAW,IAF3E9uC,KAAK6H,SAAS,CAAEsnB,WAAY,EAAG0P,oBAAqB,GAAIiQ,WAAW,IAIjD,QAArBM,EAAApvC,KAAKwvB,SAASvnB,eAAO,IAAAmnC,GAArBA,EAAuBhQ,SAAS,GAAmBryB,SAOvC,KAAA+iB,aAAgBnoB,IAC8D,IAAD0nC,EAAtF1nC,EAAMooB,UAAY/vB,KAAKmuB,YAAcnuB,KAAKmB,MAAM+tC,cAAgBlvC,KAAKmB,MAAM2tC,YAC3E9uC,KAAK6H,SAAS,CAAEsnB,WAAY,EAAG0P,oBAAqB,GAAIiQ,WAAW,IAC7C,QAArBO,EAAArvC,KAAKwvB,SAASvnB,eAAO,IAAAonC,GAArBA,EAAuBjQ,SAAS,GAAmBryB,UAO3C,KAAAuiC,sBAAwB,KACrCtvC,KAAK6H,SAAS,CAAEqnC,aAAclvC,KAAKkvC,gBA9lBnClvC,KAAKwvB,SAAWjxB,EAAAA,YAChByB,KAAKi/B,YAAc1gC,EAAAA,YACnB,MAAM,aAAE6zB,GAAiBpyB,KAAKrB,MAAM0vC,SACpC,GAAIn7B,EAAAA,gBAAgBC,YAAYif,IAAiBlf,EAAAA,gBAAgBC,YAAYif,EAAa,GAAGS,SAAU,CACnG,MAAM4C,EAAcrD,EAAa,GAAGS,QAAQ,GAAGvD,YAAc8C,EAAa,GAAGS,QAAQ,GAAGvD,YAAc,GAChG5gB,EAAW0jB,EAAa,GAAGS,QAAQ,GAAGnkB,SAAW0jB,EAAa,GAAGS,QAAQ,GAAGnkB,SAAW,GAC7F1O,KAAKsuB,iBAAmB,CAAC,CAAEC,IAAKkH,EAAajH,QAAS9f,IAGlDwE,EAAAA,gBAAgBC,YAAYif,EAAa,GAAGS,QAAQ,GAAGpE,qBACvD2D,EAAa,GAAGS,QAAQ,GAAGpE,mBAAmBjuB,KAAImd,IAC9C,MAAM2R,EAAc3R,EAAK+Q,MAAMH,IAM/B,OALAvuB,KAAKsuB,iBAAiB1iB,KAAK,CACvB2iB,IAAKe,EACLd,QAAS7Q,EAAKrf,KACd2Q,qBAAsB,CAAEH,QAAS6O,EAAK7O,QAAQC,kBAE3C,QAKnB/O,KAAKmB,MAAQ,CACTguB,WAAY,EACZ0P,oBAAqB,GACrBzP,gBAAY/oB,EACZurB,eAAgB,GAChBsd,aAAclvC,KAAKkvC,aACnBpgB,cAAe9uB,KAAKsuB,iBACpBwgB,WAAW,GAEf9uC,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAM0vC,SAASjsC,QAAQkK,QAAQmB,kBACpCzN,KAAKrB,MAAM0vC,SAAS3gC,aACpB1N,KAAKrB,MAAM0vC,SAAS1hC,WAExB3M,KAAKqB,SAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAK0B,iBAAkB,GAAI,IACpE1B,KAAKsF,YAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SAG/D,mBACN,MAAoG,QAA7Fu5B,EAAAA,EAAAA,UAAS,CAAEqJ,QAASC,EAAAA,YAAYC,QAAS/hC,QAASpC,KAAKrB,MAAM0vC,SAASjsC,QAAQkK,UAGlFuB,oBACH7N,KAAKuvC,mCAAoCtU,EAAAA,EAAAA,mBAAkBjjB,OAAQ,SAAUhY,KAAKsvC,uBAClF96B,SAASW,iBAAiB,UAAYnV,KAAK8vB,cAA2C,GACtF9vB,KAAKsvC,wBACL96B,SAASud,KAAK5c,iBAAiB,YAAanV,KAAKyvB,qBAG9CyP,qBAAkB,IAAAC,EACO,QAAxBA,EAAAn/B,KAAKi/B,YAAYh3B,eAAO,IAAAk3B,GAAxBA,EAA0BC,SAAS,IAAMp/B,KAAKrB,MAAM0vC,SAASnf,cAC5DlvB,KAAKi/B,YAAYh3B,QAAQm3B,SAAS,GAAmBryB,QAIvDilB,uBACHha,OAAOia,oBAAoB,SAAUjyB,KAAKuvC,mCAAoC,GAC9E/6B,SAASud,KAAKE,oBAAoB,YAAajyB,KAAKyvB,qBAAqB,GAGtElpB,SACHvG,KAAKiuB,aAAe,EAEpB,OACI1vB,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,qBAAqBmE,IAAKxC,KAAKwvB,UAC1CxvB,KAAKmB,MAAM+tC,aACRlvC,KAAKkyB,oBAEL3zB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAU,sBACVgF,QAASrD,KAAK4uC,cAAa,gBAT7B,oBAWEnrC,MAAOzD,KAAKrB,MAAM0vC,SAAStuC,UAAUyvC,mBAAkB,aAC3CxvC,KAAKrB,MAAM0vC,SAAStuC,UAAUyvC,oBACtCxvC,KAAKsF,aAEZtF,KAAK+tB,wBAiBlBA,sBACJ,OACIxvB,EAAAA,cAAC+uB,EAAAA,SAAQ,CAACjvB,UAAU,mCAAmCya,OAAQ9Y,KAAKmB,MAAM2tC,WACrE9uC,KAAKmB,MAAM+tC,aAAelvC,KAAKkyB,oBAAsBlyB,KAAKmyB,sBAK/DD,oBACJ,MAAM,SAAEO,EAAQ,iBAAEkJ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAExJ,GAAeryB,KAAKrB,MAAM0vC,SAGlH,OADAruC,KAAKiuB,aAAe,EAEhB1vB,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GACCivB,EAAU,CACdh0B,UAAWqE,GAAAA,CACP2vB,EAAWh0B,UACX2B,KAAKmB,MAAM+tC,mBAA0C7oC,IAA1BrG,KAAKmB,MAAMguB,WAA2B,QAAU,YAG/E5wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKqvB,EAAQ,CAAEC,SAAS,OACxB1yB,KAAKmB,MAAM+tC,mBAA0C7oC,IAA1BrG,KAAKmB,MAAMguB,YACnC5wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKs4B,GACNn9B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKu4B,EAAgB,CAAEt4B,QAASrD,KAAK8+B,mBAC1CvgC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKy4B,GAAyB77B,KAAKmB,MAAM09B,sBAGrD7+B,KAAK2yB,mBAMdR,qBACJ,MAAM,SAAEM,EAAQ,WAAEJ,GAAeryB,KAAKrB,MAAM0vC,SAE5C,OACI9vC,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKivB,EAAU,CAAEh0B,UAAWqE,GAAAA,CAAW2vB,EAAWh0B,UAAW,8BAChEE,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKqvB,EAAQ,CAAEC,SAAS,OACxB1yB,KAAK2yB,iBACNp0B,EAAAA,cAAA,OAAKF,UAAU,uBACXE,EAAAA,cAAA,UAAQF,UAAU,qBAAoB,aAAY,QAAQgF,QAASrD,KAAKmvC,mBAOpFzb,kBAAkB/V,GACtB,OAAIA,EAAKgW,UAAYtsB,EAAAA,iBAAiBC,mBAAmBqW,EAAKgW,SACnD3zB,KAAK+yB,oBAAoBpV,GACxBA,EAAKgW,QAGV,KAFI3zB,KAAK4zB,oBAAoBjW,GAKhCgV,iBACJ,MAAM,SAAEkB,GAAa7zB,KAAKrB,MAAM0vC,SAC1Bjc,EAAgCpyB,KAAKrB,MAAM0vC,SAASjc,cACpD,WAAEjD,GAAenvB,KAAKmB,MACtB2yB,EAA8B,GAMpC,GAJI5gB,EAAAA,gBAAgBC,YAAYif,KAC5BA,EAAa,GAAGvsB,GAAK,GAGrB7F,KAAKmB,MAAM+tC,mBAA+B7oC,IAAf8oB,GAA4Bjc,EAAAA,gBAAgBC,YAAYif,GAAe,CAClG,MAAME,EAAWtyB,KAAKg0B,qBAAgB3tB,EAAW+rB,GAE7CE,GACAwB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAKusB,EAASzsB,IAAQguB,GACvB,IACA7zB,KAAKi0B,oBAAoB3B,GAAS,IAAG,WAKlD,IAAK,MAAO3pB,EAAOgV,KAASyU,EAAaroB,UACrC+pB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4X,EAAK9X,IACNguB,EAAQ,CACZrxB,IAAKxC,KAAK++B,uBAAuBp2B,EAAO3I,KAAKmB,MAAM09B,oBAAqBlhB,EAAKjP,UAAY1O,KAAKi/B,YAAc,OAE3Gj/B,KAAKi0B,oBAAoBtW,KAM1C,OAAOmW,EAGHE,gBAAgByb,EAAuBC,GAC3C,IAAKA,EACD,OAAO,KAGX,IAAK,IAAI/mC,EAAQ,EAAGA,GAAS+mC,EAAKvnC,OAAS+lC,EAAiByB,IAAKhnC,IAAS,CACtE,MAAMgV,EAAsB+xB,EAAKvlC,OAAOxB,IAExC,GAAIgV,EAAK9X,KAAO7F,KAAKmB,MAAMguB,WAMvB,OALKqf,EAA2B5P,YAG5B5+B,KAAK6H,SAAS,CAAEunB,WAAYqgB,EAAc5Q,oBAAqBlhB,EAAKjP,WAFpE1O,KAAK6H,SAAS,CAAEunB,WAAYqgB,IAIzB9xB,EAEX,MAAMyW,EAAQp0B,KAAKg0B,gBAAgBrW,EAAK9X,GAAI8X,EAAKkV,SACjD,GAAIuB,EACA,OAAOA,EAGf,OAAO,KAGHH,oBAAoB7B,GACxB,OAAIlf,EAAAA,gBAAgBC,YAAYif,EAAaS,SACrC7yB,KAAKmB,MAAM+tC,mBAA0C7oC,IAA1BrG,KAAKmB,MAAMguB,WAC/BnvB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,IAAI,GAIlEtH,EAAAA,cAAAA,EAAAA,SAAA,KACKyB,KAAKs0B,sBAAsBlC,GAC3BpyB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,KAGzDusB,EAAauB,UAAYtsB,EAAAA,iBAAiBC,mBAAmB8qB,EAAauB,SAC1E3zB,KAAK+yB,oBAAoBX,EAAcA,EAAavsB,IACnDusB,EAAauB,SAAa3zB,KAAKmB,MAAM+tC,mBAA0C7oC,IAA1BrG,KAAKmB,MAAMguB,WAIrE,KAHInvB,KAAK4zB,oBAAoBxB,GAMhCiC,eAAeub,EAAgCzgB,EAAqB0gB,GAAmB,IAAAC,EAAAC,EAC3F,IAAI7b,EAAwC0b,EACxCzgB,IAAe+e,EAAiB8B,WAChC9b,EAAW0b,EAAc5S,QAAOiT,GAAeA,EAAYpqC,IAAMoqC,EAAYpqC,IAAMm0B,EAAAA,EAAgB8D,UAGvG,MAAM,SAAEjK,GAAa7zB,KAAKrB,MAAM0vC,SAC1B6B,EAA0E,QAAlDJ,EAAG9vC,KAAKrB,MAAM0vC,SAASxuC,OAAO40B,4BAAoB,IAAAqb,GAAAA,EAC1Epb,EAAqE,QAA9Cqb,EAAG/vC,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,wBAAgB,IAAAob,EAAAA,EAAI7B,EAAiBiC,MAEhG,GAAIhhB,GAAcnvB,KAAKmB,MAAMguB,aAAeA,EAExC,OADAnvB,KAAKrB,MAAM0vC,SAASjsC,QAAQuK,UAAUxF,MAAM,gEACrC,KAGX,IAAK+sB,IAAahhB,EAAAA,gBAAgBC,YAAY+gB,GAE1C,OADAl0B,KAAKrB,MAAM0vC,SAASjsC,QAAQuK,UAAUxF,MAAM,4DACrC,KAGX,IAAIytB,EAAyB,GAC7B,MAAMC,EAAcX,EAAS1zB,KAAI,CAACyF,EAAuB0C,KACrD,MAAMosB,EAAa9uB,EAAO4sB,SAAW3f,EAAAA,gBAAgBC,YAAYlN,EAAO4sB,SACxE,IAAIP,EAQAO,EANAP,EADAyC,GAAc/0B,KAAKmB,MAAM+tC,aACdlvC,KAAKs0B,sBAAsBruB,EAAQkpB,EAAYxmB,GACnD3I,KAAKiuB,eAAiBigB,EAAiByB,KAAQ5a,EAG3C,KAFA/0B,KAAKowC,YAAYnqC,EAAQ0C,GAKxC,MAAM0nC,EACFtb,GAAcmb,GAA4BlwC,KAAKiuB,cAAgBgH,KAAKC,MAAMR,GAA2BwZ,EAAiByB,IAEtH5a,IAAe/0B,KAAKmB,MAAM+tC,eACtBlvC,KAAKiuB,cAAgBigB,EAAiBoC,IACtCzd,EAAU7yB,KAAKuwC,qBAAqBtqC,GAC7BjG,KAAKiuB,cAAgBjuB,KAAKyuC,iBACjCzuC,KAAKiuB,eACL2G,EAAiB,SAAS50B,KAAKiuB,aAAand,aAC5C+hB,EAAU7yB,KAAKq0B,eAAepuB,EAAO4sB,aAASxsB,GAAW,KAI7DgqC,GAAmBrwC,KAAKmB,MAAM+tC,eAC9BlvC,KAAKiuB,eACL2G,EAAiBsb,EAA2B,SAASlwC,KAAKiuB,aAAand,aAAe,GACtF+hB,EAAU7yB,KAAKq0B,eAAepuB,EAAO4sB,QAAS5sB,EAAOJ,IAAI,IAE7D,MAAM4vB,EAAcxvB,EAAOqpB,YAAcrpB,EAAOqpB,YAAc,GAC9D,OACI/wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGywB,EAAQ,CACZ9tB,IAAKE,EAAOJ,GACZ8vB,YAAa31B,KAAKiuB,eAAiBigB,EAAiByB,KAAO3vC,KAAKouB,qBAAqBqH,EAAaxvB,GAClG5H,UAAWqE,GAAAA,CAAWmxB,EAASx1B,UAAWgyC,GAAmB,eAC7D7tC,IAAKxC,KAAK++B,uBAAuBp2B,EAAO3I,KAAKmB,MAAM09B,oBAAqB54B,EAAOyI,UAAY1O,KAAKi/B,YAAc,OAE7G3M,EACAO,MAIb,OAAO7yB,KAAKm1B,YAAYP,EAAgBC,EAAagb,GAGjDO,YAAYnqC,EAAuB0C,GACvC,IAAI2pB,EAMJ,OAJIA,EADAtyB,KAAKiuB,eAAiBigB,EAAiByB,IAC5B1pC,EAAO0tB,QAAU3zB,KAAKwwC,4BAA4BvqC,EAAQ0C,GAAS3I,KAAK4zB,oBAAoB3tB,GAE5FA,EAAO0tB,QAAU3zB,KAAK+yB,oBAAoB9sB,EAAQ0C,GAAS3I,KAAK4zB,oBAAoB3tB,GAE5FqsB,EAGHie,qBAAqBje,GAAuB,IAAAme,EAChD,MAAM7b,EAAiB,SAAS50B,KAAKiuB,aAAand,aAC5C6c,EAAmB2E,EAAS5jB,SAE5BojB,OAAkCzrB,IAArBsnB,EAAiCA,EAAmB,GACjE/jB,EAFW5J,KAAKmB,MAAMywB,eAGtB8C,EAAqE,QAA9C+b,EAAGzwC,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,wBAAgB,IAAA8b,EAAAA,EAAIvC,EAAiBiC,MAEhG,IAAIld,GAAe,EACfrpB,EAAK0oB,EAASzsB,MACdotB,GAAe,GAEnB,MAAMC,EAA2B,CAAEwd,QAAS,EAAG53B,OAAQma,GAEvD,OACI10B,EAAAA,cAACgvB,EAAAA,OAAM,CACH6F,cAAeF,EACfntB,IAAKusB,EAASzsB,GACdxH,UAAWqE,GAAAA,CAAW,yBAA0BkyB,GAChDpH,UAAU,sBACVC,WAAW,uBACXC,eAAe,QACfC,iBAAkBmE,EAClB7N,SAAUjkB,KAAK+uC,0BAA0Bzc,EAASzsB,GAAIotB,IAEtD10B,EAAAA,cAAA,WACK+zB,EAASO,QAASryB,KAAK8yB,GAChBpgB,EAAAA,gBAAgBC,YAAYmgB,EAAYT,WACxC7yB,KAAKiuB,eACDjuB,KAAKiuB,aAAeyG,GACb10B,KAAKuwC,qBAAqBjd,GAGlCtzB,KAAK0zB,kBAAkBJ,OAmB1CgB,sBAAsBruB,EAAuBkpB,EAAqBxmB,GACtE,OACIpK,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4C,GACD3I,KAAKrB,MAAM0vC,SAASnrC,OAAM,CAC9BG,QAASrD,KAAKgvB,sBAAsB/oB,EAAQkpB,GAAW,kBACtCnvB,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,mBAC5D7F,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,cAClEspB,EAAU,aACXnvB,KAAKmB,MAAM+tC,aAAejpC,EAAO2I,eAAYvI,IAExDJ,EAAOyI,UAKZqkB,oBAAoB9sB,EAAuB0C,GAC/C,MAAM,KAAE6sB,GAASx1B,KAAKrB,MAAM0vC,SACtB3/B,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GACrD1O,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OACI9C,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGoyB,EAAI,CACRzvB,IAAK4C,EACLqa,KAAM/c,EAAO0tB,SACTruB,EAAU,CACdsC,OAAQ3B,EAAOyvB,iBAAmB,cAAWrvB,EAC7ChD,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KAE9DzI,EAAOyI,UAKZ8hC,4BAA4BvqC,EAAuB0C,GAA6C,IAA7BgoC,IAAArb,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,KAAAA,UAAA,GACvE,MAAM,KAAEE,GAASx1B,KAAKrB,MAAM0vC,SACtB3/B,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GAC/C+mB,EAAcxvB,EAAOqpB,YAAcrpB,EAAOqpB,YAAc,GAC9DtvB,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OACI9C,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGoyB,EAAI,CACRzvB,IAAK4C,EACLgtB,YAAagb,GAAiB3wC,KAAKouB,qBAAqBqH,EAAaxvB,GACrE+c,KAAM/c,EAAO0tB,SACTruB,EAAU,CACdjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KAE9DzI,EAAOyI,UAKZknB,uBAAuBlnB,EAAmBI,GAC9C,MAAM,KAAE0mB,GAASx1B,KAAKrB,MAAM0vC,SAC5BruC,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OAAIqN,GAAYI,EAERvQ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKoyB,EAAI,CAAExS,KAAMlU,GAAaxJ,EAAU,CAAEjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KACzGA,GAIN,KAGHklB,oBAAoB3tB,EAAuB0C,GAC/C,MAAM,KAAEktB,GAAS71B,KAAKrB,MAAM0vC,SAC5B,OACI9vC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWktB,GACjB5vB,EAAOyI,UAKZymB,YAAYW,EAAejB,EAA4B+b,GAAmB,IAAAC,EAC9E,MAAM,aAAE5a,EAAY,SAAExD,EAAQ,kBAAEyD,EAAiB,kBAAE7G,EAAiB,uBAAE8G,GAA2Bn2B,KAAKrB,MAAM0vC,SACtGyC,GACD9wC,KAAKmB,MAAM+tC,cACZ7f,GAC6B,OAA7BrvB,KAAKmB,MAAM2tB,oBACkBzoB,IAA7BrG,KAAKmB,MAAM2tB,gBACV8hB,EACCG,GACD/wC,KAAKmB,MAAM+tC,cAAgB/Y,GAA0BjjB,EAAAA,gBAAgBC,YAAYnT,KAAKmB,MAAM2tB,iBAAmB8hB,EAC9GI,EACFhxC,KAAKiuB,aAAeigB,EAAiBoC,KAAOQ,EAAyB7a,EAAc53B,UAAY,kBACnG2B,KAAKiuB,aAAeigB,EAAiByB,IACrC,MAAMsB,EACFH,GACA9wC,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,kBAC3B30B,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,iBAAmBuZ,EAAiBoC,KAC/D,sBAEEY,EAAyC,QAA3BL,EAAG7wC,KAAKmB,MAAM2tB,qBAAa,IAAA+hB,OAAA,EAAxBA,EAA0B7T,QAAOtO,IAAUrnB,EAAAA,iBAAiBC,mBAAmBonB,EAAMH,OACtG4iB,EAAqBD,MAAAA,OAAc,EAAdA,EAAgB1wC,KAAImd,GAAQA,EAAK4Q,MAAK6iB,KAAK,KACtE,OACI7yC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK6yB,EAAY,CAAE53B,UAAW2yC,IAC/BzyC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGqvB,EAAQ,CACZp0B,UAAWqE,GAAAA,CAAW+vB,EAASp0B,UAAWy3B,EAAOgb,GAA0B,gBAAiBG,KAE3Fpc,GAELt2B,EAAAA,cAAA,OAAKF,UAAU,2BAA2B0H,IAAKorC,GAC1CL,GACG59B,EAAAA,gBAAgBC,YAAY+9B,IAC5BA,EAAe1wC,KAAImd,IAAI,IAAA0zB,EAAA9a,EAAA,OACnBh4B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK8yB,EAAiB,CAAE73B,UAAW63B,EAAmB73B,UAAW0H,IAAK4X,EAAK4Q,MAC3E4f,EAAiBnuC,KAAKrB,MAAe,QAAV0yC,EAAE1zB,EAAK4Q,WAAG,IAAA8iB,EAAAA,EAAI,GAAI1zB,EAAK6Q,QAAS1d,YAC3DigC,GACG/wC,KAAK41B,uBAAuBjY,EAAK6Q,QAAkC,QAA3B+H,EAAE5Y,EAAK1O,4BAAoB,IAAAsnB,OAAA,EAAzBA,EAA2BznB,gBAvftF0/B,EAAA5P,aAAuB,GAgE5B1wB,EAAAA,EAAAA,IAAA,CAAT8F,EAAAA,IAAQ,iCA0jBb,+kBC3nBO,MAAMs9B,UAAkC/yC,EAAAA,cAyB3CG,YAAmBC,GACfC,MAAMD,GAvBO,KAAA8vC,eAAyBP,EAAiBQ,KAEnD,KAAAzgB,aAAuBigB,EAAiBS,KAM/B,KAAAxgB,UAAoB+f,EAAiB/f,UAIrC,KAAAG,iBAA0C,GAEnD,KAAA8D,aAAgC,GAoGvB,KAAAwc,cAAgB,KAC7B5uC,KAAK6H,UAASgnC,IAAa,CACvB1f,WAAY+e,EAAiB8B,SAC7BlB,WAAYD,EAAcC,eAwTjB,KAAAC,0BAA4B,CAACC,EAA4B/b,IAA0B,KAChG,MAAM,eAAErB,GAAmB5xB,KAAKmB,MAC1B0wB,EAAU,CAAE,CAACmd,IAAW/b,GAC9BjzB,KAAK6H,SAAS,CAAE+pB,eAAcppB,EAAAA,EAAA,GAAOopB,GAAmBC,MAwI3C,KAAAzD,qBAAuB,CAAC6gB,EAA6BhpC,IAA0B,KAC5F,MAAMyI,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GAC/C4f,EAA0C,CAAC,CAAEC,IAAK0gB,EAAqBzgB,QAAS9f,IAGtF,GAAIwE,EAAAA,gBAAgBC,YAAYlN,EAAOwoB,oBACnC,IAAK,MAAM9Q,KAAQ1X,EAAOwoB,mBAAoB,CAC1C,MAAMa,EAAc3R,EAAK+Q,MAAMH,IAC/BD,EAAiB1iB,KAAK,CAClB2iB,IAAKe,EACLd,QAAS7Q,EAAKrf,KACd2Q,qBAAsB,CAAEH,QAAS6O,EAAK7O,QAAQC,kBAI1D/O,KAAK6H,SAAS,CACVinB,cAAe5b,EAAAA,gBAAgBC,YAAYmb,GAAoBA,EAAmB,CAAC,CAAEC,IAAK,aAUjF,KAAAS,sBAAwB,CAAClvB,EAAqBmvB,IAAsB,KAC5EjvB,KAAKmB,MAAM+tC,cASZoC,EAA0B1S,aAAc,EACxC5+B,KAAK6H,SAAS,CACVsnB,WAAYrvB,EAAK+F,GACjBg5B,oBAAqB/+B,EAAK4O,SAC1B0gB,WAAYH,MAZhBjvB,KAAK6H,SAAS,CACVsnB,WAAYrvB,EAAK+F,GACjBupB,WAAYH,IAEZjvB,KAAKrB,MAAM0vC,SAAShf,mBACpBrvB,KAAKouB,qBAAqBtuB,EAAKwvB,YAAcxvB,EAA7CE,KAgBK,KAAA8+B,cAAgB,IAAM,KACnCwS,EAA0B1S,aAAc,EACxC5+B,KAAK6H,UAASgnC,IAAa,CAAO1f,WAAY0f,EAAczf,gBAO/C,KAAAK,oBAAuB9nB,IAChC3H,KAAKwvB,SAASvnB,UAAYjI,KAAKwvB,SAASvnB,QAAQynB,SAAS/nB,EAAMC,UAC1D5H,KAAKmB,MAAM+tC,aAGZlvC,KAAK6H,SAAS,CAAEsnB,gBAAY9oB,EAAWw4B,oBAAqB,GAAIiQ,WAAW,IAF3E9uC,KAAK6H,SAAS,CAAEsnB,WAAY+e,EAAiB8B,SAAUnR,oBAAqB,GAAIiQ,WAAW,MAUtF,KAAAyC,gBAAkB,KAC/B,MAAM,aAAEnf,GAAiBpyB,KAAKrB,MAAM0vC,SAEoE,IAADmD,GADvGxxC,KAAKoyB,aAAeA,EAChBlf,EAAAA,gBAAgBC,YAAYif,IAAiBlf,EAAAA,gBAAgBC,YAAYif,EAAa,GAAGS,YAC7D,QAA5B2e,EAAAxxC,KAAKoyB,aAAa,GAAGS,eAAO,IAAA2e,GAA5BA,EAA8BhxC,KAAImd,IAC9B,MAAM8zB,EAAgB,GAOtB,OANAtuC,OAAOC,OAAOquC,EAAe,CAAEniB,YAAa3R,EAAK2R,cACjDnsB,OAAOC,OAAOquC,EAAe,CAAE/iC,SAAU1O,KAAKrB,MAAM0vC,SAAStuC,UAAUy+B,sBACvEr7B,OAAOC,OAAOquC,EAAe,CAAE9d,QAAShW,EAAKgW,UACzCzgB,EAAAA,gBAAgBC,YAAYwK,EAAKkV,UAAYlV,EAAKkgB,aAAe5D,EAAAA,EAAW6D,QAC5EngB,EAAKkV,QAAQ6e,QAAQD,GAElB9zB,OAYF,KAAAohB,uBAAyB,CAACp2B,EAAek2B,EAA8BG,KAE/EsS,EAA0B1S,aADJ,IACmBj2B,MAGzCq2B,IAAmBH,IAGjBA,IAAwBG,EAMlB,KAAAmQ,cAAgB,KACxBnvC,KAAKmB,MAAM+tC,aAGZlvC,KAAK6H,SAAS,CAAEsnB,gBAAY9oB,EAAWw4B,oBAAqB,GAAIiQ,WAAW,IAF3E9uC,KAAK6H,SAAS,CAAEsnB,WAAY+e,EAAiB8B,SAAUnR,oBAAqB,GAAIiQ,WAAW,KAUlF,KAAAhf,aAAgBnoB,IACzBA,EAAMooB,UAAY/vB,KAAKmuB,YAAcnuB,KAAKmB,MAAM+tC,cAAgBlvC,KAAKmB,MAAM2tC,WAC3E9uC,KAAK6H,SAAS,CAAEsnB,WAAY+e,EAAiB8B,SAAUnR,oBAAqB,GAAIiQ,WAAW,KAOlF,KAAAQ,sBAAwB,KACrCtvC,KAAK6H,SAAS,CAAEqnC,aAAclvC,KAAKkvC,gBAnqBnClvC,KAAKwvB,SAAWjxB,EAAAA,YAChByB,KAAKi/B,YAAc1gC,EAAAA,YACnB,MAAM,aAAE6zB,GAAiBpyB,KAAKrB,MAAM0vC,SACpC,GAAIn7B,EAAAA,gBAAgBC,YAAYif,IAAiBlf,EAAAA,gBAAgBC,YAAYif,EAAa,GAAGS,SAAU,CACnG,MAAM4C,EAAcrD,EAAa,GAAGS,QAAQ,GAAGvD,YAAc8C,EAAa,GAAGS,QAAQ,GAAGvD,YAAc,GAChG5gB,EAAW0jB,EAAa,GAAGS,QAAQ,GAAGnkB,SAAW0jB,EAAa,GAAGS,QAAQ,GAAGnkB,SAAW,GAC7F1O,KAAKsuB,iBAAmB,CAAC,CAAEC,IAAKkH,EAAajH,QAAS9f,IAGlDwE,EAAAA,gBAAgBC,YAAYif,EAAa,GAAGS,QAAQ,GAAGpE,qBACvD2D,EAAa,GAAGS,QAAQ,GAAGpE,mBAAmBjuB,KAAImd,IAC9C,MAAM2R,EAAc3R,EAAK+Q,MAAMH,IAM/B,OALAvuB,KAAKsuB,iBAAiB1iB,KAAK,CACvB2iB,IAAKe,EACLd,QAAS7Q,EAAKrf,KACd2Q,qBAAsB,CAAEH,QAAS6O,EAAK7O,QAAQC,kBAE3C,QAInB/O,KAAKmB,MAAQ,CACTguB,WAAY+e,EAAiB8B,SAC7BnR,oBAAqB,GACrBzP,gBAAY/oB,EACZurB,eAAgB,GAChBsd,aAAclvC,KAAKkvC,aACnBpgB,cAAe9uB,KAAKsuB,iBACpBwgB,WAAW,GAGf9uC,KAAK0B,kBAAmBiM,EAAAA,EAAAA,oBACpB3N,KAAKrB,MAAM0vC,SAASjsC,QAAQkK,QAAQmB,kBACpCzN,KAAKrB,MAAM0vC,SAAS3gC,aACpB1N,KAAKrB,MAAM0vC,SAAS1hC,WAExB3M,KAAKqB,SAAUuM,EAAAA,EAAAA,kBAAiB,QAAS5N,KAAK0B,iBAAkB,GAAI,IACpE1B,KAAKsF,YAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SAG/D,mBACN,MAAoG,QAA7Fu5B,EAAAA,EAAAA,UAAS,CAAEqJ,QAASC,EAAAA,YAAYC,QAAS/hC,QAASpC,KAAKrB,MAAM0vC,SAASjsC,QAAQkK,UAGlFuB,oBACH7N,KAAKuvC,mCAAoCtU,EAAAA,EAAAA,mBAAkBjjB,OAAQ,SAAUhY,KAAKsvC,uBAClF96B,SAASW,iBAAiB,UAAYnV,KAAK8vB,cAA2C,GACtF9vB,KAAKsvC,wBACL96B,SAASud,KAAK5c,iBAAiB,YAAanV,KAAKyvB,qBACjDzvB,KAAKuxC,kBAGFrS,qBAAkB,IAAAC,EACO,QAAxBA,EAAAn/B,KAAKi/B,YAAYh3B,eAAO,IAAAk3B,GAAxBA,EAA0BC,SAAS,IAAMp/B,KAAKrB,MAAM0vC,SAASnf,cAC5DlvB,KAAKi/B,YAAYh3B,QAAQm3B,SAAS,GAAmBryB,QAIvDilB,uBACHha,OAAOia,oBAAoB,SAAUjyB,KAAKuvC,mCAAoC,GAC9E/6B,SAASud,KAAKE,oBAAoB,YAAajyB,KAAKyvB,qBAAqB,GAGtElpB,SACHvG,KAAKiuB,aAAeigB,EAAiByB,IAErC,OACIpxC,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,qBAAqBmE,IAAKxC,KAAKwvB,UAC1CxvB,KAAKmB,MAAM+tC,aACRlvC,KAAKkyB,oBAEL3zB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC2E,EAAAA,OAAMC,OAAAC,OAAA,CACH/E,UAAU,sBACVgF,QAASrD,KAAK4uC,cAAa,gBAT7B,oBAWEnrC,MAAOzD,KAAKrB,MAAM0vC,SAAStuC,UAAUyvC,mBAAkB,aAC3CxvC,KAAKrB,MAAM0vC,SAAStuC,UAAUyvC,oBACtCxvC,KAAKsF,aAEZtF,KAAK+tB,wBAiBlBA,sBACJ,OACIxvB,EAAAA,cAAC+uB,EAAAA,SAAQ,CAACjvB,UAAU,mCAAmCya,OAAQ9Y,KAAKmB,MAAM2tC,WACrE9uC,KAAKmB,MAAM+tC,aAAelvC,KAAKkyB,oBAAsBlyB,KAAKmyB,sBAK/DD,oBACJ,MAAM,iBAAEyJ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAExJ,GAAeryB,KAAKrB,MAAM0vC,SAGxG,OADAruC,KAAKiuB,aAAeigB,EAAiByB,IAEjCpxC,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GACCivB,EAAU,CACdh0B,UAAWqE,GAAAA,CACP2vB,EAAWh0B,UACX2B,KAAKmB,MAAM+tC,mBAA0C7oC,IAA1BrG,KAAKmB,MAAMguB,WAA2B,QAAU,YAG/E5wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKpD,KAAKrB,MAAM0vC,SAAS5b,SAAQ,CAAEC,SAAS,OAC5C1yB,KAAKmB,MAAM+tC,mBAA0C7oC,IAA1BrG,KAAKmB,MAAMguB,YACnC5wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKs4B,GACNn9B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKu4B,EAAgB,CAAEt4B,QAASrD,KAAK8+B,mBAC1CvgC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKy4B,GAAyB77B,KAAKmB,MAAM09B,sBAGrD7+B,KAAK2yB,mBAMdR,qBACJ,MAAM,WAAEE,GAAeryB,KAAKrB,MAAM0vC,SAClC,OACI9vC,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAKivB,EAAU,CAAEh0B,UAAWqE,GAAAA,CAAW2vB,EAAWh0B,aACrDE,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKpD,KAAKrB,MAAM0vC,SAAS5b,SAAQ,CAAEC,SAAS,OAC5C1yB,KAAK2yB,iBACNp0B,EAAAA,cAAA,OAAKF,UAAU,uBACXE,EAAAA,cAAA,UAAQF,UAAU,qBAAoB,aAAY,QAAQgF,QAASrD,KAAKmvC,mBAOpFzb,kBAAkB/V,GACtB,OAAIA,EAAKgW,UAAYtsB,EAAAA,iBAAiBC,mBAAmBqW,EAAKgW,SACnD3zB,KAAK+yB,oBAAoBpV,GACxBA,EAAKgW,QAGV,KAFI3zB,KAAK4zB,oBAAoBjW,GAKhCgV,iBACJ,MAAM,SAAEkB,GAAa7zB,KAAKrB,MAAM0vC,SAChC,IAAIjc,EAAgC,GAEhCA,EADApyB,KAAKmB,MAAM+tC,aACIlvC,KAAKoyB,aAELpyB,KAAKrB,MAAM0vC,SAASjc,aAEvC,MAAM,WAAEjD,GAAenvB,KAAKmB,MACtB2yB,EAA8B,GACpC,IAAI6d,EAA2C,GAC3CC,EAAkD,GACtD,MAAMC,EAAiBC,KAAKC,MAAMD,KAAKE,UAAU5f,IAEjD,IAAK,MAAMzU,KAAQk0B,EACfD,EAAqBj0B,EAAKkV,QAASmK,QAAOiT,GAAeA,EAAYpqC,IAAMoqC,EAAYpqC,IAAMm0B,EAAAA,EAAgB8D,SAC7GngB,EAAKkV,QAAU+e,EAGnB,IAAK,MAAMj0B,KAAQyU,EACfuf,EAAch0B,EAAKkV,QAASmK,QAAOiT,GAAeA,EAAYpqC,IAAMoqC,EAAYpqC,GAAKm0B,EAAAA,EAAgB8D,SAGzG,GAAI99B,KAAKmB,MAAM+tC,mBAA+B7oC,IAAf8oB,GAA4Bjc,EAAAA,gBAAgBC,YAAYif,GAAe,CAClG,IAAIE,EAAiC,GACrC,IAAK,MAAMyB,KAAiB3B,EAAc,CACtC,GAAI2B,EAAcluB,KAAOspB,EAAY,CACjCmD,EAAWyB,EACNud,EAA0B1S,YAK3B5+B,KAAK6H,SAAS,CACVunB,gBAAY/oB,EACZw4B,oBAAqB9K,EAAcrlB,WANvC1O,KAAK6H,SAAS,CACVunB,gBAAY/oB,IAQpB,MAGJ,GADAisB,EAAWtyB,KAAKg0B,gBAAgBD,GAC5BzB,GAAYA,EAASzsB,KAAOspB,EAC5B,MAIJmD,GACAwB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAKusB,EAASzsB,IAAQguB,GACvB,IACA7zB,KAAKi0B,oBAAoB3B,GAAS,IAAG,UAI/C,CACH,IAAK,MAAO3pB,EAAOgV,KAASk0B,EAAe9nC,UACvC+pB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4X,EAAK9X,IACNguB,EAAQ,CACZrxB,IAAKxC,KAAK++B,uBAAuBp2B,EAAO3I,KAAKmB,MAAM09B,oBAAqBlhB,EAAKjP,UAAY1O,KAAKi/B,YAAc,OAE3Gj/B,KAAKi0B,oBAAoBtW,KAKtC,IAAK,MAAOhV,EAAOgV,KAASg0B,EAAY5nC,UACpC+pB,EAAaloB,KACTrN,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4X,EAAK9X,IACNguB,EAAQ,CACZrxB,IAAKxC,KAAK++B,uBAAuBp2B,EAAO3I,KAAKmB,MAAM09B,oBAAqBlhB,EAAKjP,UAAY1O,KAAKi/B,YAAc,OAE3Gj/B,KAAKi0B,oBAAoBtW,KAM1C,OAAOmW,EAGHE,gBAAgBrW,GACpB,MAAMuW,EAAWvW,MAAAA,OAAI,EAAJA,EAAMkV,QACvB,GAAIqB,GAAYhhB,EAAAA,gBAAgBC,YAAY+gB,GACxC,IAAK,IAAIvrB,EAAQ,EAAGA,GAASurB,EAAS/rB,OAAS+lC,EAAiByB,IAAKhnC,IAAS,CAC1E,MAAMkqB,EAAyBqB,EAAS/pB,OAAOxB,IAC/C,IAAI8mC,EAAe9xB,MAAAA,OAAI,EAAJA,EAAM9X,GAEzB,GAAIgtB,EAAQhtB,KAAO7F,KAAKmB,MAAMguB,WAU1B,OATIsgB,IAAiBvB,EAAiB8B,UAAYnd,EAAQhtB,GAAMm0B,EAAAA,EAAgB8D,SAC5E2R,OAAeppC,GAGdirC,EAA0B1S,YAG3B5+B,KAAK6H,SAAS,CAAEunB,WAAYqgB,EAAc5Q,oBAAqBhM,EAAQnkB,WAFvE1O,KAAK6H,SAAS,CAAEunB,WAAYqgB,IAIzB5c,EAEX,MAAMuB,EAAQp0B,KAAKg0B,gBAAgBnB,GACnC,GAAIuB,EACA,OAAOA,EAInB,OAAO,KAGHH,oBAAoB7B,GACxB,OAAIlf,EAAAA,gBAAgBC,YAAYif,EAAaS,SACrC7yB,KAAKmB,MAAM+tC,mBAA0C7oC,IAA1BrG,KAAKmB,MAAMguB,WAC/BnvB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,IAAI,GAGlEtH,EAAAA,cAAAA,EAAAA,SAAA,KACKyB,KAAKs0B,sBAAsBlC,GAC3BpyB,KAAKq0B,eAAejC,EAAaS,QAAST,EAAavsB,KAGzDusB,EAAauB,UAAYtsB,EAAAA,iBAAiBC,mBAAmB8qB,EAAauB,SAC1E3zB,KAAK+yB,oBAAoBX,EAAcA,EAAavsB,IACnDusB,EAAauB,QAIlB,KAHI3zB,KAAK4zB,oBAAoBxB,GAMhCiC,eAAeub,EAAgCzgB,EAAqB0gB,GAAmB,IAAAC,EAAAC,EAC3F,IAAI7b,EAAwC0b,EACxCzgB,IAAe+e,EAAiB8B,WAChC9b,EAAW0b,EAAc5S,QAAOiT,GAAeA,EAAYpqC,IAAMoqC,EAAYpqC,IAAMm0B,EAAAA,EAAgB8D,UAGvG,MAAM,SAAEjK,GAAa7zB,KAAKrB,MAAM0vC,SAC1B6B,EAA0E,QAAlDJ,EAAG9vC,KAAKrB,MAAM0vC,SAASxuC,OAAO40B,4BAAoB,IAAAqb,GAAAA,EAC1Epb,EAAqE,QAA9Cqb,EAAG/vC,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,wBAAgB,IAAAob,EAAAA,EAAI7B,EAAiBiC,MAEhG,GAAIhhB,GAAcnvB,KAAKmB,MAAMguB,aAAeA,EAExC,OADAnvB,KAAKrB,MAAM0vC,SAASjsC,QAAQuK,UAAUxF,MAAM,gEACrC,KAGX,IAAK+sB,IAAahhB,EAAAA,gBAAgBC,YAAY+gB,GAE1C,OADAl0B,KAAKrB,MAAM0vC,SAASjsC,QAAQuK,UAAUxF,MAAM,4DACrC,KAGX,IAAIytB,EAAyB,GAC7B,MAAMC,EAAcX,EAAS1zB,KAAI,CAACyF,EAAuB0C,KACrD,MAAMosB,EAAa9uB,EAAO4sB,SAAW3f,EAAAA,gBAAgBC,YAAYlN,EAAO4sB,SACxE,IAAIP,EAQAO,EANAP,EADAyC,GAAc/0B,KAAKmB,MAAM+tC,aACdlvC,KAAKs0B,sBAAsBruB,EAAQkpB,EAAYxmB,GACnD3I,KAAKiuB,eAAiBigB,EAAiByB,KAAQ5a,EAG3C,KAFA/0B,KAAKowC,YAAYnqC,EAAQ0C,GAKxC,MAAM0nC,EACFtb,GAAcmb,GAA4BlwC,KAAKiuB,cAAgBgH,KAAKC,MAAMR,GAA2BwZ,EAAiByB,IAEtH5a,IAAe/0B,KAAKmB,MAAM+tC,eACtBlvC,KAAKiuB,cAAgBigB,EAAiBoC,IACtCzd,EAAU7yB,KAAKuwC,qBAAqBtqC,GAC7BjG,KAAKiuB,cAAgBjuB,KAAKyuC,eAAiBP,EAAiByB,MACnE3vC,KAAKiuB,eACL2G,EAAiB,SAAS50B,KAAKiuB,aAAand,aAC5C+hB,EAAU7yB,KAAKq0B,eAAepuB,EAAO4sB,aAASxsB,GAAW,KAG7DgqC,GAAmBrwC,KAAKmB,MAAM+tC,eAC9BlvC,KAAKiuB,eACL2G,EAAiBsb,EAA2B,SAASlwC,KAAKiuB,aAAand,aAAe,GACtF+hB,EAAU7yB,KAAKq0B,eAAepuB,EAAO4sB,QAAS5sB,EAAOJ,IAAI,IAE7D,MAAM4vB,EAAcxvB,EAAOqpB,YAAcrpB,EAAOqpB,YAAc,GAC9D,OACI/wB,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGywB,EAAQ,CACZ9tB,IAAKE,EAAOJ,GACZ8vB,YAAa31B,KAAKiuB,eAAiBigB,EAAiByB,KAAO3vC,KAAKouB,qBAAqBqH,EAAaxvB,GAClG5H,UAAWqE,GAAAA,CAAWmxB,EAASx1B,UAAWgyC,GAAmB,eAC7D7tC,IAAKxC,KAAK++B,uBAAuBp2B,EAAO3I,KAAKmB,MAAM09B,oBAAqB54B,EAAOyI,UAAY1O,KAAKi/B,YAAc,OAE7G3M,EACAO,MAIb,OAAO7yB,KAAKm1B,YAAYP,EAAgBC,EAAagb,GAGjDO,YAAYnqC,EAAuB0C,GACvC,IAAI2pB,EAMJ,OAJIA,EADAtyB,KAAKiuB,eAAiBigB,EAAiByB,IAC5B1pC,EAAO0tB,QAAU3zB,KAAKwwC,4BAA4BvqC,EAAQ0C,GAAS3I,KAAK4zB,oBAAoB3tB,GAE5FA,EAAO0tB,QAAU3zB,KAAK+yB,oBAAoB9sB,EAAQ0C,GAAS3I,KAAK4zB,oBAAoB3tB,GAE5FqsB,EAGHie,qBAAqBje,GAAuB,IAAAme,EAChD,MAAM7b,EAAiB,SAAS50B,KAAKiuB,aAAand,aAC5C6c,EAAmB2E,EAAS5jB,SAE5BojB,OAAkCzrB,IAArBsnB,EAAiCA,EAAmB,GACjE/jB,EAFW5J,KAAKmB,MAAMywB,eAGtB8C,EAAqE,QAA9C+b,EAAGzwC,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,wBAAgB,IAAA8b,EAAAA,EAAIvC,EAAiBiC,MAEhG,IAAIld,GAAe,EACfrpB,EAAK0oB,EAASzsB,MACdotB,GAAe,GAEnB,MAAMC,EAA2B,CAAEwd,QAAS,EAAG53B,OAAQma,GACvD,OACI10B,EAAAA,cAACgvB,EAAAA,OAAM,CACH6F,cAAeF,EACfntB,IAAKusB,EAASzsB,GACdxH,UAAWqE,GAAAA,CAAW,yBAA0BkyB,GAChDpH,UAAU,sBACVC,WAAW,uBACXC,eAAe,QACfC,iBAAkBmE,EAClB7N,SAAUjkB,KAAK+uC,0BAA0Bzc,EAASzsB,GAAIotB,IAEtD10B,EAAAA,cAAA,WACK+zB,EAASO,QAASryB,KAAK8yB,GAChBpgB,EAAAA,gBAAgBC,YAAYmgB,EAAYT,WACxC7yB,KAAKiuB,eACDjuB,KAAKiuB,aAAeyG,GACb10B,KAAKuwC,qBAAqBjd,GAGlCtzB,KAAK0zB,kBAAkBJ,OAmB1CgB,sBAAsBruB,EAAuBkpB,EAAqBxmB,GACtE,OACIpK,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CACD2C,IAAK4C,GACD3I,KAAKrB,MAAM0vC,SAASnrC,OAAM,CAC9BG,QAASrD,KAAKgvB,sBAAsB/oB,EAAQkpB,GAAW,kBACtCnvB,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,mBAC5D7F,KAAKmB,MAAMguB,YAAcnvB,KAAKmB,MAAMguB,aAAelpB,EAAOJ,IAAG,cAClEspB,EAAU,aACXnvB,KAAKmB,MAAM+tC,aAAejpC,EAAO2I,eAAYvI,IAExDJ,EAAOyI,UAKZqkB,oBAAoB9sB,EAAuB0C,GAC/C,MAAM,KAAE6sB,GAASx1B,KAAKrB,MAAM0vC,SACtB3/B,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GACrD1O,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OACI9C,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGoyB,EAAI,CACRzvB,IAAK4C,EACLqa,KAAM/c,EAAO0tB,SACTruB,EAAU,CACdsC,OAAQ3B,EAAOyvB,iBAAmB,cAAWrvB,EAC7ChD,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KAE9DzI,EAAOyI,UAKZ8hC,4BAA4BvqC,EAAuB0C,GAA6C,IAA7BgoC,IAAArb,UAAAntB,OAAA,QAAA9B,IAAAivB,UAAA,KAAAA,UAAA,GACvE,MAAM,KAAEE,GAASx1B,KAAKrB,MAAM0vC,SACtB3/B,EAAWzI,EAAOyI,SAAWzI,EAAOyI,SAAW,GAC/C+mB,EAAcxvB,EAAOqpB,YAAcrpB,EAAOqpB,YAAc,GAC9DtvB,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OACI9C,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGoyB,EAAI,CACRzvB,IAAK4C,EACLgtB,YAAagb,GAAiB3wC,KAAKouB,qBAAqBqH,EAAaxvB,GACrE+c,KAAM/c,EAAO0tB,SACTruB,EAAU,CACdjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KAE9DzI,EAAOyI,UAKZknB,uBAAuBlnB,EAAmBI,GAC9C,MAAM,KAAE0mB,GAASx1B,KAAKrB,MAAM0vC,SAC5BruC,KAAKqB,QAAQC,cAAcC,MAAQmN,EACnC,MAAMpJ,GAAa7D,EAAAA,EAAAA,wBAAuBzB,KAAK0B,iBAAkB1B,KAAKqB,SACtE,OAAIqN,GAAYI,EAERvQ,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKoyB,EAAI,CAAExS,KAAMlU,GAAaxJ,EAAU,CAAEjC,SAASsnB,EAAAA,EAAAA,kBAAiB3qB,KAAK0B,iBAAkB1B,KAAKqB,QAASqN,KACzGA,GAIN,KAGHklB,oBAAoB3tB,EAAuB0C,GAC/C,MAAM,KAAEktB,GAAS71B,KAAKrB,MAAM0vC,SAC5B,OACI9vC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWktB,GACjB5vB,EAAOyI,UAKZymB,YAAYW,EAAejB,EAA4B+b,GAAmB,IAAAC,EAC9E,MAAM,aAAE5a,EAAY,kBAAEC,EAAiB,kBAAE7G,EAAiB,uBAAE8G,GAA2Bn2B,KAAKrB,MAAM0vC,SAC5FyC,GACD9wC,KAAKmB,MAAM+tC,cACZ7f,GAC6B,OAA7BrvB,KAAKmB,MAAM2tB,oBACkBzoB,IAA7BrG,KAAKmB,MAAM2tB,gBACV8hB,EACCG,GACD/wC,KAAKmB,MAAM+tC,cAAgB/Y,GAA0BjjB,EAAAA,gBAAgBC,YAAYnT,KAAKmB,MAAM2tB,iBAAmB8hB,EAC9GI,EACFhxC,KAAKiuB,aAAeigB,EAAiBoC,KAAOQ,EAAyB7a,EAAc53B,UAAY,kBACnG2B,KAAKiuB,aAAeigB,EAAiByB,IACrC,MAAMsB,EACFH,GACA9wC,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,kBAC3B30B,KAAKrB,MAAM0vC,SAASxuC,OAAO80B,iBAAmBuZ,EAAiBoC,KAC/D,sBAEEY,EAAyC,QAA3BL,EAAG7wC,KAAKmB,MAAM2tB,qBAAa,IAAA+hB,OAAA,EAAxBA,EAA0B7T,QAAOtO,IAAUrnB,EAAAA,iBAAiBC,mBAAmBonB,EAAMH,OACtG4iB,EAAqBD,MAAAA,OAAc,EAAdA,EAAgB1wC,KAAImd,GAAQA,EAAK4Q,MAAK6iB,KAAK,KACtE,OACI7yC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK6yB,EAAY,CAAE53B,UAAW2yC,IAC/BzyC,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GACGpD,KAAKrB,MAAM0vC,SAAS5b,SAAQ,CAChCp0B,UAAWqE,GAAAA,CACP1C,KAAKrB,MAAM0vC,SAAS5b,SAASp0B,UAC7By3B,EACAgb,GAA0B,gBAC1BG,KAGHpc,GAELt2B,EAAAA,cAAA,OAAKF,UAAU,2BAA2B0H,IAAKorC,GAC1CL,GACG59B,EAAAA,gBAAgBC,YAAY+9B,IAC5BA,EAAe1wC,KAAImd,IAAI,IAAA0zB,EAAA9a,EAAA,OACnBh4B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK8yB,EAAiB,CAAE73B,UAAW63B,EAAmB73B,UAAW0H,IAAK4X,EAAK4Q,MAC3E4f,EAAiBnuC,KAAKrB,MAAe,QAAV0yC,EAAE1zB,EAAK4Q,WAAG,IAAA8iB,EAAAA,EAAI,GAAI1zB,EAAK6Q,QAAS1d,YAC3DigC,GACG/wC,KAAK41B,uBAAuBjY,EAAK6Q,QAAkC,QAA3B+H,EAAE5Y,EAAK1O,4BAAoB,IAAAsnB,OAAA,EAAzBA,EAA2BznB,gBA5iBtFwiC,EAAA1S,aAAuB,GAkE5B1wB,EAAAA,EAAAA,IAAA,CAAT8F,EAAAA,IAAQ,iCA+nBb,UC7sBA,EAR4BrV,GACpBA,EAAMkB,OAAOw8B,cACN99B,EAAAA,cAAC+yC,EAAyB,CAACjD,SAAU1vC,IAGzCJ,EAAAA,cAACiwC,EAA0B,CAACH,SAAU1vC,8MCH1C,MAAM63B,EAA+Cp4B,IAAA,IAAC,sBACzDkb,EAAqB,QACrBC,EAAO,UACPC,EAAS,YACTE,EAAW,MACXC,EAAK,OACLC,EAAM,mBACNC,EAAkB,YAClBJ,EAAW,eACXgd,GACHr4B,EAAA,OACGG,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkW,GACLG,EACAgd,EACAld,EACAC,EACAE,EACAC,EACAC,EACAC,IAII6c,EAAkCriB,IAAA,IAAC,eAAEsiB,EAAc,UAAEnc,EAAS,eAAEoc,EAAc,OAAEC,GAAQxiB,EAAA,OACjG9V,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKuzB,GACLnc,EACAoc,EACAC,IAIIC,EAA0CviB,IAAA,IAAC,cAAEwF,EAAa,QAAEjW,EAAO,MAAE6V,GAAOpF,EAAA,OACrFhW,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK2W,GACLjW,EACA6V,IAIIod,EAA0Bpc,IAAA,IAAC,WAAEP,EAAU,SAAEC,EAAQ,QAAEJ,EAAO,gBAAEK,EAAe,WAAEC,EAAU,0BAAEyc,GAA2Brc,EAAA,OAC7Hpc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKgX,GACLC,GAAY9b,EAAAA,cAACu4B,EAAa3zB,OAAAC,OAAA,GAAKiX,IAChC9b,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,2CACXkc,GACGhc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKkX,GACLC,EAAW/Z,KAAIga,GACZjc,EAAAA,cAACA,EAAAA,SAAc,CAACwH,IAAKyU,EAAU1a,KAAK0a,UAAUC,SACxCuc,GAA6Bxc,EAAU2c,YACR,SAAhC3c,EAAU1a,KAAKm3B,cAA2Bzc,EAAU1a,KAAKo3B,SAAW1c,EAAUN,aAAe,KAC9F3b,EAAAA,cAACm4B,EAASvzB,OAAAC,OAAA,GAAKoX,SAK7BH,EAAS+c,cAAgBnd,EAC1BI,EAAS+c,cACN74B,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKiX,EAASgd,aACdpd,EACAI,EAASid,uBAOjBC,EAA4Bvc,IAAA,IAAC,YAAEJ,EAAW,OAAEC,GAAQG,EAAA,OAC7Dzc,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKwX,GACLC,EAAOra,KAAI,CAACsa,EAAOnS,IAChBpK,EAAAA,cAACw4B,EAAK5zB,OAAAC,OAAA,CAAC2C,IAAK4C,GAAWmS,QAKtB0c,EAAwCnc,IAAA,IAAC,kBAClDoc,EAAiB,QACjB3zB,EAAO,SACP4zB,EAAQ,SACRC,EAAQ,IACRC,EAAG,YACHC,EAAW,aACXC,GACHzc,EAAA,OACG9c,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAKq0B,GACL3zB,EACA4zB,EACAC,EACAC,EACAC,EACAC,IAIIC,EAAqCjc,IAAA,IAAC,oBAAEkc,EAAmB,MAAEv0B,EAAK,QAAEw0B,GAASnc,EAAA,OACtFvd,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK40B,GACLv0B,EACAw0B,IAIIC,EAAwBhc,IAAA,IAAC,UAAEic,EAAS,cAAEC,EAAa,oBAAEC,EAAmB,cAAEC,GAAepc,EAAA,OAClG3d,EAAAA,cAAC2V,EAAAA,KAAI/Q,OAAAC,OAAA,GAAK+0B,GACLC,EACAC,EACAC,IAuCT,EAnC2DC,IActD,IAduD,YACxDxmB,EAAW,UACXymB,EAAS,iBACTC,EAAgB,MAChBC,EAAK,SACLC,EAAQ,QACR70B,EAAO,MACPuY,EAAK,QACLC,EAAO,gBACPf,EAAe,aACfqd,EAAY,QACZC,EAAO,KACPC,EAAI,OACJje,GACH0d,EACG,OACIh6B,EAAAA,cAAC8W,EAAAA,OAAMlS,OAAAC,OAAA,GAAK2O,GACP4mB,EACA70B,EACAuY,EACAC,EACAf,GAAmBhd,EAAAA,cAACi4B,EAAerzB,OAAAC,OAAA,GAAKmY,IACxCkd,EACAD,EACAE,EACA7d,GAAUtc,EAAAA,cAACg5B,EAAMp0B,OAAAC,OAAA,GAAKyX,IACvBtc,EAAAA,cAAC2V,EAAAA,KAAI,CAAC7V,UAAU,6CACXu6B,GAAgBr6B,EAAAA,cAACi5B,EAAYr0B,OAAAC,OAAA,GAAKw1B,IAClCC,GAAWt6B,EAAAA,cAACw5B,EAAO50B,OAAAC,OAAA,GAAKy1B,KAE5BC,GAAQv6B,EAAAA,cAAC25B,EAAI/0B,OAAAC,OAAA,GAAK01B","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-text.tsx?4fc1","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-attributes.tsx?af03","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-description.tsx?e47a","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/components/fm-account-profile-links.tsx?36e8","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/fm-account-profile.tsx?311c","webpack://Msdyn365.Commerce.Online/./src/modules/fm-account-profile/fm-account-profile.view.tsx?890b","webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.tsx?12c8","webpack://Msdyn365.Commerce.Online/./src/modules/generic-popup/generic-popup.view.tsx?638f","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-history.view.tsx?1eff","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/search.view.tsx?3a76","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b"],"sourcesContent":["/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileText {\r\n className: string;\r\n text: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\r\n\r\nexport default IAccountProfileText;\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\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\r\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IFmAccountProfileData } from '../fm-account-profile.data';\r\nimport { IFmAccountProfileProps } from '../fm-account-profile.props.autogenerated';\r\nimport TextComponent from './fm-account-profile-text';\r\n\r\ninterface IAttributePropertiesType {\r\n Name?: string;\r\n IsMandatory?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileAttributesProps {\r\n accountProfileProps: IFmAccountProfileProps;\r\n}\r\n\r\nexport enum AccountAttributeDataTypeValue {\r\n Decimal = 3,\r\n Integer = 4,\r\n Text = 5,\r\n TrueFalse = 6\r\n}\r\n\r\nexport interface IAttributePayloadData {\r\n recordId?: number;\r\n name?: string;\r\n dataTypeValue?: number;\r\n isEnumeration?: boolean;\r\n lowerBoundValue?: number;\r\n upperBoundValue?: number;\r\n decimalValue?: number;\r\n integerValue?: number;\r\n textValue?: string;\r\n booleanValue?: boolean;\r\n isMandatory?: boolean;\r\n defaultValue?: string;\r\n}\r\n\r\nexport interface IAccountProfileAttributesState extends React.ComponentState {\r\n editAttributes: boolean;\r\n phone: string;\r\n vatNumber: string;\r\n attributes: IDictionary;\r\n attributeError: IDictionary;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfileAttributes class.\r\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\r\n */\r\n@observer\r\nclass AccountProfileAttributes extends React.Component {\r\n private readonly attributePayloadData: IAttributePayloadData[];\r\n\r\n @observable private isUpdatingAttributes: boolean = false;\r\n\r\n @observable private gotException: boolean = false;\r\n\r\n private hasError: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private initialAttributes: IDictionary;\r\n\r\n private initialCustomerAttributes?: CustomerAttribute[];\r\n\r\n private initialPhone: string;\r\n\r\n private initialVatNumber: string;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly editRef: React.RefObject;\r\n\r\n private readonly attributesContainerRef: React.RefObject;\r\n\r\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\r\n\r\n private readonly maxIntegerLimit: number = 2_100_000_000;\r\n\r\n private readonly minIntegerLimit: number = -2_100_000_000;\r\n\r\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\r\n\r\n private readonly minDecimalLimit: number = -7_900_000_000_000;\r\n\r\n private readonly maxStringLength: number = 1000;\r\n\r\n private readonly maxVATNumberLength: number = 20;\r\n\r\n private readonly maxPhoneLength: number = 25;\r\n\r\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n\r\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\r\n\r\n constructor(props: IAccountProfileAttributesProps) {\r\n super(props);\r\n this.state = {\r\n editAttributes: false,\r\n phone: '',\r\n vatNumber: '',\r\n attributes: {},\r\n attributeError: {}\r\n };\r\n this.initialAttributes = {};\r\n this.initialCustomerAttributes = [];\r\n this.initialPhone = '';\r\n this.initialVatNumber = '';\r\n this.attributePayloadData = [];\r\n const telemetryPageName =\r\n (this.props.accountProfileProps &&\r\n this.props.accountProfileProps.context &&\r\n this.props.accountProfileProps.context.request &&\r\n this.props.accountProfileProps.context.request.telemetryPageName) ||\r\n '';\r\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\r\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\r\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n this.editRef = React.createRef();\r\n this.attributesContainerRef = React.createRef();\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._buildPayloadData();\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n reaction(\r\n () => this.props.accountProfileProps.data.customerInformation.result,\r\n () => {\r\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\r\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n }\r\n );\r\n reaction(\r\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\r\n () => {\r\n this._buildPayloadData();\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IAccountProfileAttributesProps, nextState: IAccountProfileAttributesState): boolean {\r\n if (this.state === nextState && this.props.accountProfileProps.data === nextProps.accountProfileProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return this._renderAttributes();\r\n }\r\n\r\n private readonly _renderAttributes = (): JSX.Element | null => {\r\n const { config, data, resources } = this.props.accountProfileProps;\r\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\r\n const additionalInformationSectionHeading =\r\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\r\n const showAttributes = config.showAttributes || '';\r\n const attributes = showAttributes.split(',');\r\n const elements = attributes.map(att => {\r\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\r\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\r\n ) || { RecordId: 0 };\r\n return this._renderAttribute(attributeDefinition);\r\n });\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\r\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\r\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\r\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n const customerInformation = data.customerInformation.result;\r\n\r\n this.isEditAsyncCustomerFeatureEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\r\n\r\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\r\n const disableBtn: boolean =\r\n (this.props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (customerInformation?.IsAsyncCustomer || false) &&\r\n !this.isEditAsyncCustomerFeatureEnabled;\r\n return (\r\n \r\n {config.additionalInformationSectionHeading && (\r\n \r\n )}\r\n {config.showPhone && this._renderPhone()}\r\n {config.showVatNumber && this._renderVatNumber()}\r\n {elements}\r\n {this.gotException && (\r\n
\r\n \r\n
\r\n )}\r\n {!edit && (\r\n \r\n {resources.attributesEditButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesSaveButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesCancelButtonText}\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderPhone = (): JSX.Element | null => {\r\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {phoneSectionHeading && }\r\n \r\n {this._renderError('Phone')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderVatNumber = (): JSX.Element | null => {\r\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {vatNumberSectionHeading && }\r\n \r\n {this._renderError('VATNumber')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\r\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n case AccountAttributeDataTypeValue.Decimal:\r\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.Text:\r\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n return this._renderBoolean(customAttribute, className, editAttributes);\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n private readonly _renderIntegerDecimalInput = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderTextInputOrSelect = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n let displayName: string = attributeProps.Name || '';\r\n if (displayName === 'Birthday') {\r\n displayName = this.props.accountProfileProps.resources.birthdayHeadingText;\r\n }\r\n if (isEnumeration && customAttribute.EnumerationDetails) {\r\n const value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n return (\r\n
\r\n \r\n \r\n {hasNoValue && (\r\n \r\n )}\r\n {customAttribute.EnumerationDetails.map(option => {\r\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\r\n return (\r\n \r\n {option.EnumerationValue}\r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (this.props.accountProfileProps.config.source === 'FinanceOperationUS' && customAttribute.Name === 'Birthday') {\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n }\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderBoolean = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n let value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n const render = !(hasNoValue && !editAttributes);\r\n value = value || 'false';\r\n const toggleState = (value === 'true' && 'enable') || 'disable';\r\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\r\n const ariaPressed = (value === 'true' && true) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n let toggleValue = 'false';\r\n if (value === 'true') {\r\n toggleValue = 'false';\r\n } else {\r\n toggleValue = 'true';\r\n }\r\n\r\n return (\r\n \r\n \r\n {render && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\r\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\r\n const hasError = !StringExtensions.isNullOrWhitespace(error);\r\n if (hasError) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n return {\r\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\r\n IsMandatory: isMandatory\r\n };\r\n };\r\n\r\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ phone: value });\r\n };\r\n\r\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ vatNumber: value });\r\n };\r\n\r\n private readonly _enableAttributes = () => {\r\n this.hasError = false;\r\n\r\n // To clear exception messages\r\n this.gotException = false;\r\n this.setState({ editAttributes: true, attributeError: {} });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n if (this.attributesContainerRef.current) {\r\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\r\n this.attributeClassName\r\n );\r\n if (attributes && attributes.length > 0) {\r\n this._setFocus(attributes[0] as HTMLElement);\r\n }\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _disableAttributes = () => {\r\n this.setState({\r\n editAttributes: false,\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onUSBdayChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = `1900/${event.target.value}`;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\r\n event: React.MouseEvent\r\n ) => {\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.currentTarget.selectedOptions[0].value;\r\n const index = event.currentTarget.selectedOptions[0].index;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n },\r\n selectedIndex: {\r\n ...this.state.selectedIndex,\r\n [name]: index\r\n }\r\n });\r\n };\r\n\r\n private readonly _getAttributes = () => {\r\n const { config, data } = this.props.accountProfileProps;\r\n const showAttributes = config.showAttributes || '';\r\n const showAttributesArray = showAttributes.split(',');\r\n const customer = data.customerInformation.result;\r\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\r\n const attributes: IDictionary = {};\r\n\r\n showAttributesArray.forEach(showAttribute => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\r\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\r\n let value: string = '';\r\n if (attribute && attribute.AttributeValue) {\r\n const name = (attribute && attribute.Name) || '';\r\n switch (attribute.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n if (attribute.AttributeValue.IntegerValue) {\r\n value = String(attribute.AttributeValue.IntegerValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n if (attribute.AttributeValue.DecimalValue) {\r\n value = String(attribute.AttributeValue.DecimalValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n if (attribute.AttributeValue.StringValue) {\r\n value = attribute.AttributeValue.StringValue;\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n if (attribute.AttributeValue.BooleanValue !== null) {\r\n value = String(attribute.AttributeValue.BooleanValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n }\r\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\r\n attributes[showAttribute] = '';\r\n }\r\n if (value.length === 0 && defaultValue) {\r\n attributes[showAttribute] = String(defaultValue);\r\n }\r\n });\r\n if (Object.keys(this.initialAttributes).length === 0) {\r\n this.initialAttributes = attributes;\r\n }\r\n this.setState({ attributes });\r\n };\r\n\r\n // eslint-disable-next-line\r\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\r\n const { resources } = this.props.accountProfileProps;\r\n const { phone, vatNumber } = this.state;\r\n const attributeError: IDictionary = {};\r\n let hasError: boolean = false;\r\n let hasValue: boolean = true;\r\n for (const [key, value] of Object.entries(this.state.attributes)) {\r\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\r\n if (payloadData) {\r\n switch (payloadData.dataTypeValue) {\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const decimalValue = Number(value);\r\n if (isNaN(decimalValue)) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (decimalValue > this.maxDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (decimalValue < this.minDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.decimalValue = decimalValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Integer:\r\n const integerValue = Number(value);\r\n if (isNaN(integerValue) || value.includes('.')) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (integerValue > this.maxIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (integerValue < this.minIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.integerValue = integerValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n let trimValue = '';\r\n if (!StringExtensions.isNullOrWhitespace(value)) {\r\n trimValue = value.trim();\r\n }\r\n if (trimValue.length > this.maxStringLength) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputStringMaxLengthErrorText,\r\n payloadData.name,\r\n this.maxStringLength\r\n );\r\n hasError = true;\r\n }\r\n if (!hasError) {\r\n payloadData.textValue = trimValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n payloadData.booleanValue = value === 'true';\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n\r\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\r\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\r\n hasError = true;\r\n }\r\n\r\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\r\n const attribute = custmerAttributes.find(att => att.Name === key);\r\n const index = custmerAttributes.findIndex(att => att.Name === key);\r\n\r\n if (index !== -1 && !hasValue) {\r\n custmerAttributes.splice(index, 1);\r\n }\r\n\r\n if (!hasError && hasValue) {\r\n if (attribute) {\r\n attribute.Attribute = undefined;\r\n attribute.DataTypeValue = payloadData.dataTypeValue;\r\n attribute.Name = payloadData.name;\r\n attribute.RecordId = payloadData.recordId;\r\n attribute.Units = undefined;\r\n attribute.AttributeValue = {\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n };\r\n attribute.ExtensionProperties = [];\r\n attribute.NameTranslations = [];\r\n } else {\r\n custmerAttributes.push({\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\r\n Attribute: undefined,\r\n DataTypeValue: payloadData.dataTypeValue,\r\n KeyName: payloadData.name,\r\n Name: payloadData.name,\r\n RecordId: payloadData.recordId,\r\n Units: undefined,\r\n AttributeValue: {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n },\r\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\r\n ExtensionProperties: [],\r\n 'NameTranslations@odata.type':\r\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\r\n NameTranslations: []\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (phone.trim().length > this.maxPhoneLength) {\r\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\r\n hasError = true;\r\n } else {\r\n customer.Phone = phone.trim();\r\n }\r\n\r\n if (vatNumber.trim().length > this.maxVATNumberLength) {\r\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\r\n hasError = true;\r\n } else {\r\n customer.VatNumber = vatNumber.trim();\r\n }\r\n\r\n this.hasError = hasError;\r\n this.setState({ attributeError });\r\n };\r\n\r\n private readonly _saveAttributes = async () => {\r\n const { context, data } = this.props.accountProfileProps;\r\n const customer = data.customerInformation.result;\r\n\r\n let source: string;\r\n switch (this.props.accountProfileProps.config.source) {\r\n case 'FinanceOperationEU':\r\n source = 'Finance&Operation EU';\r\n break;\r\n case 'FinanceOperationUS':\r\n source = 'Finance&Operation US';\r\n break;\r\n default:\r\n source = 'Finance&Operation EU';\r\n }\r\n customer?.Attributes?.forEach(attribute => {\r\n if (attribute.Name === 'Source') {\r\n attribute.AttributeValue!.StringValue = source;\r\n attribute.ExtensionProperties![7].Value!.StringValue = source;\r\n }\r\n });\r\n\r\n if (customer && context) {\r\n this._addOrUpdateAttribute(customer);\r\n // console.log(customer.Attributes![3].AttributeValue?.StringValue);\r\n const input = new updateCustomerAttributesInput(\r\n customer.AccountNumber,\r\n customer.Attributes || [],\r\n context.request.apiSettings,\r\n customer.Phone,\r\n customer.VatNumber\r\n );\r\n\r\n this.isUpdatingAttributes = true;\r\n this.gotException = false;\r\n\r\n if (!this.hasError) {\r\n this.setState({ editAttributes: false });\r\n try {\r\n await updateCustomerAttributes(input, context.actionContext);\r\n // eslint-disable-next-line\r\n } catch (error) {\r\n this.gotException = true;\r\n customer.Attributes = this.initialCustomerAttributes;\r\n if (context.telemetry) {\r\n context.telemetry.exception(error as Error);\r\n context.telemetry.debug('Unable to update customer attributes');\r\n }\r\n this.setState({\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n }\r\n this.setState({ editAttributes: false });\r\n if (!this.gotException) {\r\n this.initialAttributes = this.state.attributes;\r\n this.initialCustomerAttributes = customer.Attributes;\r\n this.initialPhone = this.state.phone;\r\n this.initialVatNumber = this.state.vatNumber;\r\n }\r\n }\r\n\r\n this.isUpdatingAttributes = false;\r\n\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n }\r\n };\r\n\r\n private readonly _setFocus = (element: HTMLElement | null) => {\r\n element?.focus();\r\n };\r\n\r\n private readonly _buildPayloadData = () => {\r\n const { data } = this.props.accountProfileProps;\r\n const attributeDefinitions = data.attributeDefinitions.result || [];\r\n const attributes: IDictionary = {};\r\n\r\n attributeDefinitions.forEach(attributeDefinition => {\r\n const attributePayloadData: IAttributePayloadData = {};\r\n attributePayloadData.recordId = attributeDefinition.RecordId;\r\n attributePayloadData.name = attributeDefinition.Name;\r\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\r\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\r\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\r\n switch (attributeDefinition.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\r\n if (attributePayloadData.name && defaultIntegerValue) {\r\n attributePayloadData.defaultValue = String(defaultIntegerValue);\r\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\r\n if (attributePayloadData.name && defaultDecimalValue) {\r\n attributePayloadData.defaultValue = String(defaultDecimalValue);\r\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\r\n if (attributePayloadData.name && defaultStringValue) {\r\n attributePayloadData.defaultValue = defaultStringValue;\r\n attributes[attributePayloadData.name] = defaultStringValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n const defaultBooleanValue =\r\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\r\n if (attributePayloadData.name) {\r\n attributePayloadData.defaultValue = String(defaultBooleanValue);\r\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n this.attributePayloadData.push(attributePayloadData);\r\n });\r\n Object.keys(attributes).length > 0 && this.setState({ attributes });\r\n };\r\n\r\n private readonly _getCustomerPhoneAndVatNumber = () => {\r\n const customer = this.props.accountProfileProps.data.customerInformation.result;\r\n const phone = (customer && customer.Phone) || '';\r\n const vatNumber = (customer && customer.VatNumber) || '';\r\n this.setState({ phone, vatNumber });\r\n if (this.initialPhone.length === 0) {\r\n this.initialPhone = phone;\r\n }\r\n if (this.initialVatNumber.length === 0) {\r\n this.initialVatNumber = vatNumber;\r\n }\r\n };\r\n}\r\n\r\nexport default AccountProfileAttributes;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileDescription {\r\n className: string;\r\n description: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\r\n

{description}

\r\n);\r\n\r\nexport default IAccountProfileDescription;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ILinkData } from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nconst AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n linkdata.forEach((link, index) => {\r\n payLoad.contentAction.etext = link.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: link.isDisabled ? 'ms-account-profile__section-link-disable' : 'ms-account-profile__section-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n\r\nexport default AccountProfileLinks;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n ArrayExtensions,\r\n updateCustomerPersonalization,\r\n updateCustomerPersonalizationInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IFmAccountProfileData } from './fm-account-profile.data';\r\nimport {\r\n IFmAccountProfileProps,\r\n IEmailAddressSectionHeadingData,\r\n IHeadingData,\r\n INameSectionHeadingData\r\n} from './fm-account-profile.props.autogenerated';\r\nimport AccountProfileAttributes from './components/fm-account-profile-attributes';\r\nimport DescriptionComponent from './components/fm-account-profile-description';\r\nimport LinksComponent, { ILinksData } from './components/fm-account-profile-links';\r\nimport TextComponent from './components/fm-account-profile-text';\r\n\r\nexport interface IAccountPreference {\r\n accountPreference: INodeProps;\r\n heading: React.ReactNode;\r\n buttonWrapper: INodeProps;\r\n buttonYesText: React.ReactNode;\r\n buttonNoText: React.ReactNode;\r\n button: React.ReactNode;\r\n description: React.ReactNode;\r\n onUpdateAccountPreference(preferenceType?: string): void;\r\n}\r\n\r\nexport interface IAccountPreferences {\r\n accountPreferences: INodeProps;\r\n heading?: React.ReactNode;\r\n personalization: IAccountPreference;\r\n extraPreferences?: IAccountPreference[];\r\n}\r\n\r\nexport interface IAccountProfileItem {\r\n AccountProfileItem: INodeProps;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountCustomerAttributes {\r\n customerAttributes?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountProfileViewProps extends IFmAccountProfileProps {\r\n AccountProfile: IModuleProps;\r\n accountProfileWrapper?: INodeProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n emailSection: IAccountProfileItem;\r\n nameSection: IAccountProfileItem;\r\n preferenceSection: IAccountPreferences;\r\n customerAttributesWrapper?: INodeProps;\r\n customerAttributesSection?: IAccountCustomerAttributes;\r\n infoMessageBar?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfile component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountProfile extends React.Component> {\r\n @observable private isUpdatingPreference: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n private readonly payLoad: IPayLoad;\r\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n\r\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\r\n\r\n constructor(props: IFmAccountProfileProps) {\r\n super(props);\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 }\r\n\r\n public shouldComponentUpdate(nextProps: IFmAccountProfileProps): boolean {\r\n if (this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config, resources, data } = this.props;\r\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\r\n\r\n const { editButtonText, editButtonAriaLabel } = resources;\r\n const customerInformation = data.customerInformation.result;\r\n\r\n this.isEditAsyncCustomerFeatureEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\r\n\r\n const invalidAsyncCustomerState: boolean =\r\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (customerInformation?.IsAsyncCustomer || false) &&\r\n !this.isEditAsyncCustomerFeatureEnabled;\r\n\r\n // As per the design, phone and vat numbers are part of the profile attributes section\r\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\r\n const editLink: ILinksData = {\r\n linkUrl: {\r\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\r\n },\r\n linkText: editButtonText,\r\n ariaLabel: editButtonAriaLabel,\r\n isDisabled: invalidAsyncCustomerState\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n AccountProfile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-profile', config.className)\r\n },\r\n infoMessageBar: invalidAsyncCustomerState && (\r\n \r\n ),\r\n accountProfileWrapper: {\r\n className: classnames('ms-account-profile-wrapper')\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n emailSection: this._renderEmailSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\r\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\r\n customerInformation && customerInformation.Email\r\n ),\r\n nameSection: this._renderNameSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\r\n nameSectionHeading as INameSectionHeadingData,\r\n this.getDescription(customerInformation),\r\n Msdyn365.isOboRequest(this.props.context.request) ? undefined : [editLink]\r\n ),\r\n preferenceSection: this._renderPreferenceSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\r\n invalidAsyncCustomerState,\r\n customerInformation\r\n ),\r\n customerAttributesWrapper: {\r\n className: classnames('ms-account-profile__attributes-wrapper')\r\n },\r\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes()\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n public handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\r\n\r\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.nameSectionHeading!.text = event.target.value);\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.resources.editButtonText) {\r\n this.props.resources.editButtonText = event.target.value;\r\n }\r\n };\r\n\r\n @computed get editProfileUrl(): string {\r\n return get(this.props, 'context.request.user.editProfileUrl', '');\r\n }\r\n\r\n private getDescription(customerInformation: Customer | undefined): string {\r\n let description = '';\r\n if (customerInformation !== undefined) {\r\n if (customerInformation.FirstName) {\r\n description += customerInformation.FirstName;\r\n }\r\n if (customerInformation.LastName) {\r\n description += customerInformation.FirstName ? ` ${customerInformation.LastName}` : customerInformation.LastName;\r\n }\r\n }\r\n return description;\r\n }\r\n\r\n private _renderEmailSection(\r\n className: string,\r\n heading?: IEmailAddressSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && heading.text && (\r\n \r\n ),\r\n links: links && links.length > 0 && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private _renderNameSection(\r\n className: string,\r\n heading?: INameSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n if (!ArrayExtensions.hasElements(links)) {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n links: (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private readonly onClickEventHandler = (className: string) => async () => {\r\n return this._updateAccountPersonalization(className);\r\n };\r\n\r\n private _renderPreferenceSection(\r\n className: string,\r\n invalidAsyncCustomerState: boolean,\r\n customerInformation?: Customer\r\n ): IAccountPreferences | null {\r\n const {\r\n personalizationDescription,\r\n personalizationEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n webTrackingEnableButtonAriaLabel\r\n } = this.props.resources;\r\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\r\n const { enableDataAnalytics } = this.props.context.request.features;\r\n const extraPreferences: IAccountPreference[] = [];\r\n\r\n if (!customerInformation) {\r\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // Show browser activity login preference if switch is enabled AND a heading is provided\r\n enableDataAnalytics &&\r\n webTrackingSectionHeading &&\r\n extraPreferences.push(\r\n this._renderPreference(\r\n 'web-tracking',\r\n webTrackingSectionHeading as IHeadingData,\r\n webTrackingEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n customerInformation.OptOutWebActivityTracking || false,\r\n invalidAsyncCustomerState\r\n )\r\n );\r\n\r\n return {\r\n accountPreferences: {\r\n className\r\n },\r\n heading: preferencesSectionHeading && (\r\n \r\n ),\r\n personalization: this._renderPreference(\r\n 'personalization',\r\n personalizationSectionHeading as IHeadingData,\r\n personalizationEnableButtonAriaLabel,\r\n personalizationDescription,\r\n customerInformation.OptOutPersonalization || false,\r\n invalidAsyncCustomerState\r\n ),\r\n extraPreferences: extraPreferences || undefined\r\n };\r\n }\r\n\r\n private readonly _renderPreference = (\r\n className: string,\r\n sectionHeading: IHeadingData,\r\n enableAriaLabel: string,\r\n description: string,\r\n isOptOut: boolean,\r\n disableBtn: boolean\r\n ) => {\r\n const { toggleDisableText, toggleEnableText } = this.props.resources;\r\n const toggleState = isOptOut ? 'disable' : 'enable';\r\n const onClickHandler = this.onClickEventHandler(className);\r\n this.payLoad.contentAction.etext = sectionHeading.text;\r\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n\r\n return {\r\n accountPreference: {\r\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\r\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\r\n })\r\n },\r\n heading: sectionHeading && (\r\n \r\n ),\r\n buttonWrapper: {\r\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\r\n // Disable the toggle completely if customer is async.\r\n 'ms-account-profile__toggle-disabled': disableBtn\r\n })\r\n },\r\n buttonYesText: ,\r\n buttonNoText: ,\r\n button: (\r\n \r\n ),\r\n description: ,\r\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\r\n };\r\n };\r\n\r\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\r\n const customerInformation = this.props.data.customerInformation.result;\r\n\r\n if (customerInformation) {\r\n const {\r\n telemetry,\r\n context: { request, actionContext }\r\n } = this.props;\r\n\r\n let isOptOutPersonalization = false;\r\n let input;\r\n\r\n switch (preferenceType) {\r\n case 'web-tracking':\r\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n break;\r\n case undefined:\r\n case 'personalization':\r\n default:\r\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n }\r\n\r\n this.isUpdatingPreference = true;\r\n\r\n try {\r\n await updateCustomerPersonalization(input, actionContext);\r\n // eslint-disable-next-line\r\n } catch (error) {\r\n if (telemetry) {\r\n telemetry.exception(error as Error);\r\n telemetry.debug('Unable to update customer personalization');\r\n }\r\n }\r\n\r\n this.isUpdatingPreference = false;\r\n }\r\n };\r\n\r\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\r\n return ;\r\n };\r\n}\r\n\r\nexport default AccountProfile;\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\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 { IFmAccountProfileProps } from './fm-account-profile.props.autogenerated';\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities/';\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 props.context.request.locale.toLowerCase() !== 'en-us'\r\n ? format(props.resources.htmlGenericMarketing, props.config.privacyPolicyURL)\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 = format(\r\n props.resources.htmlProfiling,\r\n props.config.privacyPolicyURL\r\n );\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 = format(\r\n props.resources.htmlThirdParty,\r\n props.config.privacyPolicyURL\r\n );\r\n }\r\n\r\n const bd_input: HTMLInputElement = document.getElementsByClassName(\r\n 'ms-account-profile__attributes-element ms-account-profile__attributes_input ms-account-profile__attributes_input-edit-false ms-account-profile__Birthday-input'\r\n )[0] as HTMLInputElement;\r\n if (bd_input && props.context.request.canonicalDomain !== 'us.venchi.com') {\r\n document.getElementsByClassName('ms-account-profile__attributes-edit-button msc-btn')[0].addEventListener('click', () => {\r\n bd_input.setAttribute('type', 'date');\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 && (\r\n {customerAttributesSection}\r\n )}\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IGenericPopupProps } from './generic-popup.props.autogenerated';\r\n\r\nimport classnames from 'classnames';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface IGenericPopupState {\r\n popupVisible: boolean;\r\n recallVisible: boolean;\r\n}\r\n\r\nexport interface IGenericPopupViewProps extends IGenericPopupProps<{}>, IGenericPopupState {\r\n onDismissRecall(): void;\r\n onDismissPopup(): void;\r\n handleTextRecall(): void;\r\n classNamePopup: string;\r\n classNameRecall: string;\r\n}\r\n\r\n/**\r\n *\r\n * GenericPopup component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass GenericPopup extends React.PureComponent, IGenericPopupState> {\r\n public state: IGenericPopupState = {\r\n popupVisible: false,\r\n recallVisible: false\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n // const { closeButtonAriaLabel, closeButtonLabel } = this.props.resources;\r\n const { className } = this.props.config;\r\n const { popupVisible, recallVisible } = this.state;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n classNamePopup: classnames('venchi_popup'),\r\n classNameRecall: classnames('venchi-recall', 'slide-in', className),\r\n popupVisible, // State data\r\n recallVisible, // State data\r\n onDismissRecall: this._onDismissRecall, // Methods\r\n onDismissPopup: this._onDismissPopup, // Methods\r\n handleTextRecall: this._displayPopupNow\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly _onDismissRecall = (): void => {\r\n this.createCookieRecall();\r\n this.setState({ recallVisible: false });\r\n };\r\n\r\n private readonly _onDismissPopup = (): void => {\r\n if (this.props.config.recallEnabled || false) {\r\n switch (this.props.config.recallShowAfterPopup) {\r\n case 'afterPopup':\r\n setTimeout(this._displayRecallNow, 3000);\r\n break;\r\n case 'afterPageReload':\r\n default:\r\n break;\r\n }\r\n }\r\n this.setState({\r\n popupVisible: false\r\n });\r\n };\r\n\r\n private readonly _displayRecallNow = (): void => {\r\n this.setState({\r\n popupVisible: false,\r\n recallVisible: true\r\n });\r\n };\r\n\r\n private readonly _displayPopupNow = (): void => {\r\n if (this.props.config.cookieCheckbox) {\r\n this.createCookie();\r\n }\r\n this.setState({\r\n popupVisible: true,\r\n recallVisible: false\r\n });\r\n };\r\n\r\n public async componentDidMount() {\r\n const cookie = new Cookies();\r\n if (this.props.config.hidePopupIfCookieIsSet) {\r\n if (!cookie.get(`${this.props.config.modalId}-shown`)) {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n } else {\r\n if (this.props.config.recallEnabled && !cookie.get(`${this.props.config.modalId}-recall-hidden`)) {\r\n setTimeout(this._displayRecallNow, 1000 * (this.props.config.delayRecall || 0));\r\n }\r\n }\r\n } else {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n }\r\n }\r\n\r\n private createCookie() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.expireDays >= 1) {\r\n var date = new Date();\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n // @ts-ignore\r\n date.setDate(date.getDate() + (this.props.config.expireDays || 0));\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-shown`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-shown`, true);\r\n }\r\n }\r\n\r\n private createCookieRecall() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.recallDismissableForDays >= 1) {\r\n var date = new Date();\r\n // @ts-ignore\r\n date.setDate(\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n date.getDate() + (this.props.config.recallDismissableForDays || 0)\r\n );\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true);\r\n }\r\n }\r\n}\r\n\r\nexport default GenericPopup;\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 * as React from 'react';\r\nimport { IGenericPopupViewProps } from './generic-popup';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst GenericPopupView: React.FC = props => {\r\n const {\r\n slots,\r\n popupVisible,\r\n recallVisible,\r\n classNamePopup,\r\n classNameRecall,\r\n onDismissRecall,\r\n onDismissPopup,\r\n handleTextRecall\r\n } = props;\r\n const { modalId, recallDismissable, modalHeader, recallText } = props.config;\r\n const { closeButtonAriaLabel, closeButtonLabel } = props.resources;\r\n\r\n React.useEffect(() => {\r\n if (popupVisible) {\r\n //@ts-ignore\r\n const label = props.config.modalName || 'Generic';\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'displayed',\r\n eventLabel: label\r\n });\r\n }\r\n }, [popupVisible]);\r\n\r\n const handleClose = React.useCallback(() => {\r\n const popupElement = document.querySelector('.venchi_popup');\r\n const form = popupElement?.getElementsByTagName('form');\r\n\r\n if (form?.length && popupVisible) {\r\n const label = props.config.modalName;\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'click_close',\r\n eventLabel: label\r\n });\r\n }\r\n onDismissPopup();\r\n }, [onDismissPopup, popupVisible, props]);\r\n\r\n return (\r\n <>\r\n \r\n {modalHeader}\r\n
\r\n \r\n
\r\n
{slots.content}
\r\n
\r\n
\r\n
\r\n
\r\n {recallVisible ? (\r\n
\r\n \r\n {recallDismissable ? (\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\nexport default GenericPopupView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHeader,\r\n IList,\r\n IOrderHistoryViewProps,\r\n IOrderInformation,\r\n ISalesOrder\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo\r\n}) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n {salesLine.salesLine}\r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => {\r\n // @ts-ignore\r\n const dataPrice = orderInfomation.amount !== null ? orderInfomation.amount.props.data.price.CustomerContextualPrice : 0;\r\n const orderType = dataPrice < 0 ? 'order--return' : 'order--default';\r\n return (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {orderDetailsLink}\r\n \r\n );\r\n};\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n <>\r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\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 { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISearchCategoryViewProps,\r\n ISearchFormViewProps,\r\n ISearchKeywordViewProps,\r\n ISearchProductViewProps\r\n} from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label,\r\n isLoadingAutoSuggest,\r\n isLoadingNode\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.input}\r\n {form.cancelBtn}\r\n {form.submitBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n productSuggestions.items.map((item, index) => {\r\n // @ts-ignore\r\n if (item?.price?.props?.data?.price?.CustomerContextualPrice != 0)\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n else return null;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest &&\r\n categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;\r\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\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 { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\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 IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\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\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\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 AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\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};\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\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-customer-balance-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 AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\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 handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\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 { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\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 IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\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 { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
    {error}
    ;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\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._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\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 private _renderAlert(message: string): React.ReactNode | null {\n return (\n

    \n {message}\n

    \n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\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 { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\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._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\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 this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\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\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && 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\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
    \n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
    \n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\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 { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
    \n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
    \n {isBopisSelected && (\n
    \n {cartLine.pickUpInStore.orgUnitName}\n \n
    \n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
    \n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
    \n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
    \n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

    \n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

    \n ) : null}\n

    {countTitle}

    \n
    \n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
    \n

    \n

    {groupTitle}

    \n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
    \n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
    \n {props.cartLinesGroup.map(cartlines => {\n return (\n
    \n {renderCartLinesGroupHeader(\n cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
    \n );\n })}\n
    \n );\n }\n return props.cartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\n */\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

    \n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

    \n );\n return (\n
    \n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
    {props.orderSummaryLineitems?.orderTotal}
    \n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
    \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
    \n
    {this.props.promoCodeHeadingText}
    \n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\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 { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\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 { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\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 { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n"],"names":["_ref","className","text","React","AccountAttributeDataTypeValue","AccountProfileAttributes","constructor","props","super","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","config","data","resources","this","accountProfileProps","attributeDefinitions","result","additionalInformationSectionHeading","elements","showAttributes","split","map","att","attributeDefinition","find","attribute","IsHidden","Name","toLocaleLowerCase","RecordId","_renderAttribute","edit","state","editAttributes","payLoad","contentAction","etext","attributesEditButtonText","getTelemetryAttributes","telemetryContent","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","customerInformation","featureState","feature","IsEnabled","disableBtn","context","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","ref","attributesContainerRef","classnames","Text","tag","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","Button","Object","assign","onClick","_enableAttributes","innerRef","editRef","title","disabled","_saveAttributes","_disableAttributes","phoneSectionHeading","heading","replace","type","onChange","_onPhoneChange","value","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","attributes","IsMandatory","isEnumeration","IsEnumeration","birthdayHeadingText","EnumerationDetails","hasNoValue","id","_onAttributeSelect","key","selected","option","EnumerationValue","source","_onUSBdayChange","undefined","maxLength","render","toggleState","arialabel","format","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","error","attributeError","StringExtensions","isNullOrWhitespace","role","attributePayloadData","name","isMandatory","event","target","setState","MsDyn365","isBrowser","setTimeout","current","getElementsByClassName","length","_setFocus","initialAttributes","initialPhone","initialVatNumber","_objectSpread","currentTarget","selectedOptions","index","selectedIndex","_getAttributes","showAttributesArray","customer","custmerAttributes","Attributes","forEach","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","Number","isNaN","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","push","KeyName","Phone","VATNumber","VatNumber","async","_customer$Attributes","input","updateCustomerAttributesInput","AccountNumber","request","apiSettings","updateCustomerAttributes","actionContext","initialCustomerAttributes","telemetry","exception","debug","element","focus","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","telemetryPageName","friendlyName","getTelemetryObject","getPayloadObject","componentDidMount","reaction","shouldComponentUpdate","nextProps","nextState","__decorate","observable","observer","description","_mapEditableLinks","linkdata","editableLinks","link","linkText","editableLink","ariaLabel","isDisabled","linkUrl","destinationUrl","openInNewTab","additionalProperties","links","requestContext","onTextChange","Msdyn365","editProps","AccountProfile","isUpdatingPreference","handleHeadingChange","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","handleLinkTextChange","linkIndex","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","onEdit","buttonWrapper","buttonYesText","buttonNoText","button","toString","DescriptionComponent","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","_this$props$context$a","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","get","viewProps","moduleProps","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","renderView","FirstName","LastName","AccountProfileItem","LinksComponent","ArrayExtensions","hasElements","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","computed","AccountPreferencesSection","Node","AccountPreferenceSection","preferenceSecton","_ref2","AccountProfileSection","_ref3","document","innerHTML","locale","toLowerCase","htmlGenericMarketing","privacyPolicyURL","textGenericMarketing","htmlProfiling","htmlThirdParty","bd_input","canonicalDomain","addEventListener","setAttribute","Module","GenericPopup","popupVisible","recallVisible","_onDismissRecall","createCookieRecall","_onDismissPopup","recallEnabled","recallShowAfterPopup","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","classNamePopup","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","cookie","Cookies","hidePopupIfCookieIsSet","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","options","expires","set","recallDismissableForDays","slots","recallDismissable","modalHeader","recallText","closeButtonAriaLabel","closeButtonLabel","_window$dataLayer","_window$dataLayer$pus","label","modalName","window","dataLayer","call","eventCategory","eventAction","eventLabel","handleClose","popupElement","querySelector","form","getElementsByTagName","_window$dataLayer2","_window$dataLayer2$pu","Modal","isOpen","onClosed","ModalHeader","toggle","ModalBody","renderModuleAttributes","content","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","dataPrice","price","CustomerContextualPrice","orderType","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","header","alert","loading","emptyMessage","backToShoppingLink","list","moreButton","_renderForm","SearchForm","FormWrapper","cancelBtn","submitBtn","_renderKeywordSuggestions","KeywordSuggest","UlKeyword","keywordSuggestions","isLoadingAutoSuggest","isLoadingNode","_renderProductSuggestions","ProductSuggest","UlProduct","productSuggestions","items","item","_item$price","LiProduct","AProduct","thumbnail","_renderCategorySuggestions","CategorySuggest","UlCategory","categorySuggestions","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","searchText","AutoSuggest","autosuggestCategory","autosuggestKeyword","autosuggestProduct","AccountCustomerBalanceTile","_initState","ErrorComponent","apiGenericErrorMessage","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","isCustomerAccountPaymentEnabled","Heading","headingTag","isDetailsLinkDisplayed","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","issueLoyalty","then","location","catch","message","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","params","isEditor","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","modal","onToggle","applicationNode","returnFocusRef","returnRef","modalFooter","ModalFooter","modalBody","cancelButton","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","qsp","splitQsp","isModalOpen","hideToggle","serviceTerms","modalToggle","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","BusinessPartnerPromotionTermsParagraph","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","businessPartnerPromotionProps","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","horizontalPosition","verticalPosition","autoFocus","fade","termsOfServiceModalHeading","submitRequestLabel","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","ObjectExtensions","isNullOrUndefined","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","onTelemetryClick","CookieCompliance","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","AlertProps","Content","acceptButton","setConsentCookie","reload","renderCustomerName","accountInformation","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","promotionalImage","src","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","body","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","isDrawerOpen","colProps","toggleButtonProps","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","OrderInfomation","channelAddress","SalesLine","salesLineProps","buyAgainButton","errors","GroupDelivery","Group","isCashAndCarryTransaction","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","OrderSummary","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","orderSummary","payment","help","Iframe","iframeRef","srcURL","URL","protocol","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","IFrameView","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","isMobile","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","category","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","componentDidUpdate","_this$menuItemRef$cur","children","componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","currentViewModeState","newViewModeState","viewModeDetailedViewAttributes","ViewMode","viewModeListViewAttributes","DetailedView","detailedViewOptionAriaLabel","ListView","listViewOptionAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","product","catalogId","ProductComparisonState","instance","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","PickupInStore","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","deliveryOption","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","cart","totalItemsInCart","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","channel","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","preventDefault","applyPromotionHandler","promoPlaceholderText","promoCodeApplyButtonText","placeholder","_removePromotion","_event$currentTarget$","code","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","Code","ApplyPromoCode","promoCodeHeadingText","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_this$menuNode$curren2","_customUpdateViewport","customResizeThrottledEventHandler","hamburgerAriaLabel","parentMenuId","menu","one","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","timeout","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify"],"sourceRoot":""}