{"version":3,"file":"static/js/13.1333188bca3f54964d90.chunk.js","mappings":";8MAsBA,MAAMA,UAA4BC,EAAAA,cAIvBC,SACH,MAAM,OAAEC,EAAM,MAAEC,GAAUC,KAAKC,MACzBC,EAAWH,GAASA,EAAMI,cAAgBJ,EAAMI,aAAaC,OAEnE,OACIR,EAAAA,cAAA,OAAKS,UAAWC,GAAAA,CAAU,wBAAyBR,EAAOO,YACrDP,GAAUE,KAAKO,cAAcT,GAC7BC,EAAMS,wBAA0BR,KAAKS,iBAAiBV,EAAMS,wBAC5DN,GAAYF,KAAKS,iBAAiBV,EAAMI,eAO7CI,cAAcT,GAClB,OACIF,EAAAA,cAAA,OAAKS,UAAU,iCACVP,MAAAA,OAAM,EAANA,EAAQY,QAASV,KAAKW,mBAAmBb,IACzCA,MAAAA,OAAM,EAANA,EAAQc,OAELhB,EAAAA,cAAA,OACIS,UAAU,6BACVQ,yBAAyBC,EAAAA,EAAAA,IAAgBhB,EAAOc,SAS5DD,mBAAmBb,GAAkC,IAAAiB,EACzD,OAAIjB,MAAAA,GAAY,QAANiB,EAANjB,EAAQkB,YAAI,IAAAD,GAAS,QAATA,EAAZA,EAAcE,eAAO,IAAAF,GAArBA,EAAuBG,eAEnBtB,EAAAA,cAAA,KACIS,UAAU,mCACVc,KAAMrB,EAAOkB,KAAKC,QAAQC,eAAc,aAC5BpB,EAAOkB,KAAKI,UACxBC,OAAQvB,EAAOkB,KAAKM,aAAe,cAAWC,EAAWC,IAAI,cAE5DxB,KAAKyB,aAAa3B,EAAOY,QAI3BV,KAAKyB,aAAa3B,EAAOY,OAMhCe,aAAaf,GACjB,OAAIA,GAAAA,MAASA,GAAAA,EAAOE,KAEZhB,EAAAA,cAAC8B,EAAAA,QAAO,CACJrB,UAAU,8BACVsB,WAAYjB,EAAMkB,IAClBhB,KAAMF,EAAME,OAIjB,KAKHH,iBAAiBoB,GACrB,OACIjC,EAAAA,cAAA,OAAKS,UAAU,+BACVwB,EAAMC,KAAI,CAACC,EAAuBC,IAC/BpC,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAChBD,OAQzB,+IChGkBG,qIAAlB,SAAkBA,GACdA,EAAA,UACAA,EAAA,gCACAA,EAAA,4CAHJ,CAAkBA,IAAAA,EAAoB,KC+C/B,MAAMC,EAAWC,IACpB,MAAM,aACFC,EAAY,SACZC,EAAQ,YACRC,EAAW,YACXC,EAAW,eACXC,EAAc,YACdC,EAAW,YACXC,EAAW,sBACXC,EAAqB,mBACrBC,EAAkB,mBAClBC,EAAkB,gBAClBC,EAAe,wBACfC,EAAuB,iBACvBC,EACAC,WAAW,oBAAEC,EAAmB,kBAAEC,EAAiB,oBAAEC,EAAmB,iBAAEC,EAAgB,iBAAEC,EAAgB,mBACxGC,EAAkB,2BAAEC,EAA0B,2BAAEC,IACpDtB,EAEEuB,EAAUC,MAAAA,IACZC,EAAEC,uBACIf,KAmBJgB,EAAY,CACd1D,UAAW2D,GAAAA,CAAW,8BAA+B,CAAE,eAAgB3B,IACvE4B,SAAUN,EACV/B,IAAK,QAGHsC,EACFtE,EAAAA,cAAA,SAAOuE,GAAG,+BAA+B9D,UAAU,sCAC9C+C,GAIHgB,EACFxE,EAAAA,cAAA,SAAOuE,GAAG,yCAAyC9D,UAAU,0CACxDiD,GAIHe,EACFzE,EAAAA,cAAA,SAAOuE,GAAG,yCAAyC9D,UAAU,0CACxDkD,GAIHe,EACF1E,EAAAA,cAAA,SAAOuE,GAAG,qCAAqC9D,UAAU,4CACpDmD,GAIHe,EACF3E,EAAAA,cAAC4E,EAAAA,MAAK,CACF5C,IAAI,OACJuC,GAAG,+BACH9D,UAAU,qCACVoE,KAAK,QACLC,WAAW,EACXC,MAAM,EACNC,mBAAmB,EACnBC,SAAUxC,GAETA,GAoBHyC,EACFlF,EAAAA,cAAA,SACImF,IAAKzC,EACL0C,KAAK,OACL3E,UAAU,iDAAgD,aAC9CgD,EACZ4B,SAnFgBpB,IACpB,MAAMqB,GAASrB,EAAExC,OAAO6D,OAAS,IAAIC,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IACvExC,EAAsBsC,IAkFlBA,MAAOzC,EAAc,kBACL,8DAIlB4C,EACFzF,EAAAA,cAAA,SACImF,IAAKxC,EACLyC,KAAK,OACL3E,UAAU,oDAAmD,aACjDiD,EACZgC,YAAa7B,EACbwB,SA3FapB,IACjB,MAAMqB,GAASrB,EAAExC,OAAO6D,OAAS,IAAIC,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IACvEvC,EAAmBqC,IA0FfA,MAAOxC,EAAW,kBACF,8DAIlB6C,EACF3F,EAAAA,cAAA,SACImF,IAAKvC,EACLwC,KAAK,OACL3E,UAAU,oDAAmD,aACjDkD,EACZ+B,YAAa5B,EACbuB,SAlGapB,IACjB,MAAMqB,GAASrB,EAAExC,OAAO6D,OAAS,IAAIC,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IACvEtC,EAAmBoC,IAiGfA,MAAOvC,EAAW,kBACF,8DAIlB6C,EACF5F,EAAAA,cAAC6F,EAAAA,OAAM,CACHpF,UAAU,mCACVqF,QAAS/B,EAAO,aACJR,EACZwC,UAAWlD,GAEVU,GAIT,IAAIyC,GAAuB,EACvBC,GAAuB,EAE3B,OAAO5C,GACH,KAAKf,EAAqB4D,IACtBF,GAAuB,EACvB,MACJ,KAAK1D,EAAqB6D,eACtBF,GAAuB,EACvB,MACJ,KAAK3D,EAAqB8D,qBACtBJ,GAAuB,EACvBC,GAAuB,EAK/B,MAAO,CACH9B,UAAAA,EACAG,MAAAA,EACAE,cAAAA,EACAC,cAAAA,EACAE,MAAAA,EACA0B,WAxFe,CACf5F,UAAW,uCAwFX6F,cArFkB,CAClB7F,UAAW,2CAqFX8F,cAlFkB,CAClB9F,UAAW,2CAkFX+F,cA/EkB,CAClB/F,UAAW,2CA+EXyE,YAAAA,EACAO,SAAAA,EACAE,SAAAA,EACAC,YAAAA,EACAxC,wBAAAA,EACA4C,qBAAAA,EACAC,qBAAAA,EACAvB,gBAAAA,IChNK+B,EAAUC,IAMI,IANH,SACpBC,EAAQ,kBACRC,EAAiB,UACjBC,EAAS,iBACTC,EACAxD,WAAW,qBAAEyD,EAAoB,8BAAEC,EAA6B,qBAAEC,IACtDP,EACZ,MAAMQ,EAAUN,EAAkBD,EAASQ,QAASR,EAASS,kBACvDC,GAAsBV,EAASW,IAAM,IAAIC,QAAQ,GAOjDC,EACFxH,EAAAA,cAAA,QAAMS,UAAU,oCACXsG,EAAoB,IAAGM,EAAkB,KAAIL,EAA+B,IAC7EhH,EAAAA,cAAA,QAAMS,UAAU,kCAAkCyG,GAAe,KAInEO,EAAeZ,GACjB7G,EAAAA,cAAC6F,EAAAA,OAAM,CAACpF,UAAU,oCAAoCqF,QAdzC4B,IAAYZ,EAAiBH,EAASW,IAAM,KAepDL,GAIT,MAAO,CACHU,UAlBc,CACdlH,UAAW,+BAkBX8D,GAAIoC,EAASW,GACbE,iBAAAA,EACAC,aAAAA,ICvCKG,EAAUlB,IAA+G,IAA9G,UAAEmB,EAAS,UAAEhB,EAAS,UAAEvD,EAAS,kBAAEsD,EAAiB,iBAAEE,GAAiCJ,EAC3G,IAAKmB,IAAcA,EAAUrH,OACzB,OAiBJ,MAAO,CACHsH,UAfc,CACdrH,UAAW,+BAeXsH,KAZSF,EAAU3F,KAAIyE,GACvBF,EAAQ,CACJI,UAAAA,EACAD,kBAAAA,EACAD,SAAAA,EACAG,iBAAAA,EACAxD,UAAAA,QC5BZ,EAFqDoD,IAAA,IAAC,MAAE5F,GAAO4F,EAAA,OAAK1G,EAAAA,cAAA,SAAOS,UAAU,gCAAgCK,ykBC0DrH,IAAakH,EAAb,cAAsChI,EAAAA,UAAtCiI,cAAA,IAAAC,6BACW,KAAAC,MAAgC,CACnCC,oBAAoB,EACpB3F,aAAc,GACdI,eAAgB,GAChBC,YAAa,GACbC,YAAa,IAGT,KAAAL,SAA8C1C,EAAAA,YAE9C,KAAA2C,YAAiD3C,EAAAA,YAEjD,KAAA4C,YAAiD5C,EAAAA,YA0HjD,KAAAqI,KAAO,KACXjI,KAAKC,MAAMiI,YAAYD,KAAIE,EAAC,CACxBC,OAAQpI,KAAKoI,OACbC,SAAUrI,KAAKqI,SACfpE,SAAUjE,KAAKiE,SACfqE,YAAY,IACPtI,KAAKuI,aAAe,CAAEC,OAAQ,eAInC,KAAAC,oBAAsB,KAC1B,MAAMC,EAAO1I,KAAKC,MAAM0I,KAAKC,SAASC,OAAS7I,KAAKC,MAAM0I,KAAKC,SAASC,OAAOC,aAAaJ,UAAOnH,EACnG,QAAKmH,IAIGA,EAAKK,aAAe,GAAK,GAG7B,KAAAR,UAAY,OACXvI,KAAKC,MAAM+I,QAAQC,QAAQC,KAAKC,iBAAuE,aAApDnJ,KAAKC,MAAM+I,QAAQI,IAAItJ,OAAOuJ,oBAG/ErJ,KAAKyI,sBAGR,KAAAL,OAAS,KAEbpI,KAAKC,MAAMiI,YAAYoB,cAGnB,KAAAjB,SAAW,KACfrI,KAAKuJ,wBAGD,KAAAtF,SAAW,KACfjE,KAAKuJ,wBAGD,KAAAA,qBAAuB,KACvBvJ,KAAKwJ,gBAELxJ,KAAKC,MAAMiI,YAAYuB,UAGvBzJ,KAAKC,MAAMiI,YAAYwB,UAIvB,KAAAlD,kBAAoB,WAA4D,IAA3DmD,EAAAC,UAAAxJ,OAAA,QAAAmB,IAAAqI,UAAA,GAAAA,UAAA,GAAgB,EAAGC,EAAAD,UAAAxJ,OAAA,QAAAmB,IAAAqI,UAAA,GAAAA,UAAA,GAAuB,MACnE,OAAO9B,EAAK7H,MAAM+I,QAAQc,iBAAiBC,eAAeJ,EAAOE,IAG7D,KAAAG,oBAAuBvH,IAC3BzC,KAAKiK,SAAS,CACVxH,eAAAA,IAEJzC,KAAKkK,cAGD,KAAAC,iBAAoBzH,IACxB1C,KAAKiK,SAAS,CACVvH,YAAAA,IAEJ1C,KAAKkK,cAGD,KAAAE,iBAAoBzH,IACxB3C,KAAKiK,SAAS,CACVtH,YAAAA,IAEJ3C,KAAKkK,cAGD,KAAAG,SAAYhI,IAChBrC,KAAKC,MAAMqK,UAAUC,MAAM,QAASlI,GACpCrC,KAAKC,MAAMiI,YAAYsC,aAAY,GACnCxK,KAAKiK,SAAS,CACV5H,aAAAA,KAIA,KAAA6H,WAAa,KACjBlK,KAAKC,MAAMiI,YAAYsC,aAAY,GACnCxK,KAAKiK,SAAS,CACV5H,aAAc,MAId,KAAAoI,eAAiB7G,MAAAA,IACrB,MAAM8G,EAAgB1K,KAAKC,MAAM0I,KAAKC,SAASC,OAC1C6B,SAICA,EAAcC,qBAAqB,CAAElI,eAAAA,KAGvC,KAAAmI,cAAgBhH,UACpB,GAAI5D,KAAK+H,MAAMC,mBACX,OAEJhI,KAAKiK,SAAS,CACVjC,oBAAoB,IAGxB,MAAM0C,EAAgB1K,KAAKC,MAAM0I,KAAKC,SAASC,OACzCpG,EAAiBzC,KAAK+H,MAAMtF,eAAeoI,OAC3CnI,EAAc1C,KAAK+H,MAAMrF,YAAYmI,OACrClI,EAAc3C,KAAK+H,MAAMpF,YAAYkI,OAErCC,QAAsB9K,KAAK+K,iBAAiBtI,GAC5CuI,EAAeF,GAAiBA,EAAc,GAC9CG,EAAgBD,GAAgBA,EAAaE,cAC7CC,EAAgBH,GAAgBA,EAAaI,yBAC7CC,EAAeL,GAAgBA,EAAaM,gBAC5C/E,QAAiBvG,KAAKuL,YAAY9I,EAAgBC,EAAaC,EAAasI,EAAeE,EAAeE,GAE1GG,EAAcrD,EAAA,CAAsBsD,IAAK/I,EAAagJ,eAAgB/I,EAAagJ,aAAcN,GAAiB9E,GACxH,GAAImE,GAAiBnE,EASjB,aARMmE,EAAckB,kBAAkB,CAAErF,SAAUiF,IAClDxL,KAAKkK,aACLlK,KAAKiK,SAAS,CACVxH,eAAgB,GAChBC,YAAa,GACbC,YAAa,GACbqF,oBAAoB,IAEjB6D,QAAQC,UACZ,CACH,MAAMC,EACF/L,KAAKsC,UAAYtC,KAAKsC,SAAS0J,SAAWhM,KAAKsC,SAAS0J,QAAQC,OAAUjM,KAAKsC,SAAS0J,QAC5FD,GAASA,EAAME,QACfjM,KAAKiK,SAAS,CACVjC,oBAAoB,MAKxB,KAAAuD,YAAc3H,MAAOnB,EAAwBC,EAAqBC,EAAqBsI,EAAoCE,EAAoCE,KACnK,MACInI,WAAW,qBAAEgJ,EAAoB,qBAAEC,EAAoB,eAAEC,EAAc,eAAEC,IACzErM,KAAKC,MAEHqM,EAAwBtM,KAAKC,MAAM+I,QAAQI,IAAItJ,OAAOuJ,kBAE5D,IAAKgC,EACD,OAGJ,OAAQiB,GACJ,UAAK/K,EACL,IAAK,WACD,GAAqB,OAAjB8J,GAA0C,MAAjBA,EAEzB,YADArL,KAAKqK,SAAS8B,GAGlB,MACJ,IAAK,WACD,GAAqB,OAAjBd,EAEA,YADArL,KAAKqK,SAAS8B,GAGlB,MACJ,IAAK,OACD,GAAqB,OAAjBd,GAA0C,OAAjBA,GAA0C,MAAjBA,EAElD,YADArL,KAAKqK,SAAS8B,GAO1B,GAAIlB,GAAiC,KAAhBvI,EAEjB,YADA1C,KAAKqK,SAAS+B,GAIlB,GAAIjB,GAAiC,KAAhBxI,EAEjB,YADA3C,KAAKqK,SAASgC,GAIlB,MAAME,EAAQC,SAAS7J,EAAY8J,MAAM,KAAK,GAAI,IAC5CC,EAAOF,SAAS7J,EAAY8J,MAAM,KAAK,GAAI,IAEjD,OAAOE,EAAAA,EAAAA,kBAAiB,CAAEC,cAAe5M,KAAKC,MAAM+I,QAAQ6D,eAAiBpK,EAAgB4I,EAAc3I,EAAa6J,EAAOG,GAC1HI,MAAKC,GAKKA,IAEVC,OAAMzC,IACHvK,KAAKqK,SAAS6B,OAKlB,KAAAnB,iBAAmBnH,MAAAA,IACvB,MACIV,WAAW,gBAAE+J,EAAe,oBAAEC,EAAmB,iBAAEC,GACnDxE,MAAM,SAAEC,IACR5I,KAAKC,MAET,IAAKwC,EAED,YADAzC,KAAKqK,SAAS4C,GAKlB,GADqBrE,EAASC,QAAUD,EAASC,OAAOuE,gBAAgBC,MAAMC,GAAmBA,EAAKpG,KAAOzE,IAGzG,YADAzC,KAAKqK,SAAS6C,GAKlB,OAAOK,EAAAA,EAAAA,uBAAsB,CAAEX,cAAe5M,KAAKC,MAAM+I,QAAQ6D,eAAiBpK,EAD7D,GAEhBqK,MAAKhC,IACF,GAAKA,GAA0C,IAAzBA,EAAc1K,aAAqCmB,IAArBuJ,EAAc,GAIlE,OAAOA,EAHH9K,KAAKqK,SAAS8C,MAKrBH,OAAMzC,IACHvK,KAAKqK,SAAS8C,OA3VhB,kBACN,MAAgF,aAAxEnN,KAAKC,MAAM0I,KAAKC,SAASC,QAAU7I,KAAKC,MAAM0I,KAAKC,SAASJ,QAG9D,uBACN,MAAMkC,EAAgB1K,KAAKC,MAAM0I,KAAKC,SAASC,OAC/C,OAAK6B,GAAkBA,EAAc8C,cAG9B9C,EAAc8C,cAFV,EAKL,wBACN,MAAM9E,EAAO1I,KAAKC,MAAM0I,KAAKC,SAASC,OAAS7I,KAAKC,MAAM0I,KAAKC,SAASC,OAAOC,aAAaJ,UAAOnH,EACnG,IAAKmH,EACD,OAAO,EAIX,OADmBA,EAAKK,aAAe,GAAK/I,KAAKyN,iBAC9B,EAGb,sBACN,MACI9E,MAAM,SAAEC,IACR5I,KAAKC,MACHwH,EAAYmB,EAASC,QAAUD,EAASC,OAAOuE,gBACrD,QAAS3F,GAAaA,EAAUrH,OAAS,EAGtCsN,qBAEHC,EAAAA,EAAAA,KACI,IAAM3N,KAAK4N,cACX,KACI5N,KAAKiI,UAKVpI,SACH,MACIqI,aAAa,QAAE2F,GACflF,MAAM,SAAEC,GACR9I,QAAQ,UAAEO,EAAS,qBAAE6B,GAAsB,UAC3CgB,GACAlD,KAAKC,OACH,aAAEoC,EAAY,eAAEI,EAAc,YAAEC,EAAW,YAAEC,GAAgB3C,KAAK+H,MAClEN,EAAYmB,EAASC,QAAUD,EAASC,OAAOuE,gBAC/CnK,EAAmBf,EACnBoK,EAAwBtM,KAAKC,MAAM+I,QAAQI,IAAItJ,OAAOuJ,kBAE5D,IAAKrJ,KAAKuI,cAAiBvI,KAAK8N,oBAAsBD,EAClD,OAAO,KAGX,MAAM7K,EAAoD,aAA1BsJ,EAE1ByB,EAAkBzN,GAAAA,CAAU,wBAAyBD,EAAWwN,EAAU,OAAS,OAEnFG,EAAS7F,EAAAA,EAAAA,EAAA,GACRnI,KAAKC,OACLD,KAAK+H,OAAK,IACb1H,UAAW0N,EAEXE,sBAAuB,CAAEC,YAAalO,KAAKC,MAAOI,UAAW0N,GAC7DtF,oBAAqBzI,KAAKyI,sBAC1BF,UAAWvI,KAAKuI,YAChBH,OAAQpI,KAAKoI,OACbC,SAAUrI,KAAKqI,SACfpE,SAAUjE,KAAKiE,SACf+F,oBAAqBhK,KAAKgK,oBAC1BG,iBAAkBnK,KAAKmK,iBACvBC,iBAAkBpK,KAAKoK,iBACvBK,eAAgBzK,KAAKyK,eACrBG,cAAe5K,KAAK4K,cACpBuD,aAAcN,EACR,CACInN,MAAOd,EAAAA,cAACwO,EAAa,CAAC1N,MAAOwC,EAAUE,oBACvCuE,KAAMH,EAAQ,CACVf,WAAW,EACXD,kBAAmBxG,KAAKwG,kBACxBiB,UAAWA,GAAa,IAAIA,GAC5Bf,iBAAkB1G,KAAKyK,eACvBvH,UAAAA,UAGR3B,EACN8M,YAAcR,OA0BRtM,EAzBA,CACI+M,KAAMnM,EAAQ,CACVE,aAAAA,EACAI,eAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAL,SAAUtC,KAAKsC,SACfC,YAAavC,KAAKuC,YAClBC,YAAaxC,KAAKwC,YAClBU,UAAAA,EACAN,sBAAuB5C,KAAKgK,oBAC5BnH,mBAAoB7C,KAAKmK,iBACzBrH,mBAAoB9C,KAAKoK,iBACzBrH,gBAAiB/C,KAAK4K,cACtB5H,wBAAAA,EACAC,iBAAAA,IAEJ0E,KAAMH,EAAQ,CACVf,WAAW,EACXD,kBAAmBxG,KAAKwG,kBACxBiB,UAAWA,GAAa,IAAIA,GAC5Bf,iBAAkB1G,KAAKyK,eACvBvH,UAAAA,OAMlB,OAAOlD,KAAKC,MAAMsO,WAAWP,MArHvBQ,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,iCAICD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,sCAQCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,uCAUCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,oCArCA7G,GAAgB4G,EAAAA,EAAAA,IAAA,CAD5BE,EAAAA,IACY9G,GAgXb,SAAe+G,EAAAA,EAAAA,iBAAgB/G,+MC5alBgH,EAAwBtI,IAAA,IAAC,UAAEvC,EAAS,MAAEG,EAAK,cAAEE,EAAa,cAAEC,EAAa,MAAEE,EAAK,WAAE0B,EAAU,cAAEC,EAAa,cACpHC,EAAa,cAAEC,EAAa,YAAEtB,EAAW,SAAEO,EAAQ,SAAEE,EAAQ,YAAEC,EAAW,wBAAExC,EAAuB,qBAAE4C,EAAoB,qBAAEC,EAAoB,gBAAEvB,GAAiBgC,EAAA,OAClK1G,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKhL,GACLQ,EACAvB,EACGpD,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK9I,GACNrG,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK7I,GACLhC,EACAY,GAEJc,GACGhG,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK5I,GACL/B,EACAiB,GAGRQ,GACGjG,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK3I,GACL/B,EACAkB,IAGPK,GAAwBC,IAAyBvB,GAEzD1E,EAAAA,cAAAA,EAAAA,SAAA,KAAGsE,EAAOY,GAEXU,IAIIwJ,EAAoCC,IAAA,IAAC,UAAE1H,EAAS,iBAAEH,EAAgB,aAAEC,GAAc4H,EAAA,OAC3FrP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKxH,GACLH,EACAC,IAII6H,EAAgCC,IAAA,IAAC,UAAEzH,EAAS,KAAEC,GAAMwH,EAAA,OAC7DvP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKrH,GACLC,EAAK7F,KAAIsN,IAAA,IAAC,GAAEjL,GAAaiL,EAANC,GAAIC,EAAAA,EAAAA,GAAAF,EAAAG,GAAA,OACpB3P,EAAAA,cAACoP,EAAgBF,OAAAC,OAAA,CAAC9M,IAAKkC,GAAQkL,SAK9BG,EAAsCC,IAAA,IAAC,KAAEnB,EAAI,KAAE3G,GAAM8H,EAAA,OAC9D7P,EAAAA,cAAAA,EAAAA,SAAA,KACK0O,GAAQ1O,EAAAA,cAACgP,EAAIE,OAAAC,OAAA,GAAKT,IAClB3G,GAAQ/H,EAAAA,cAACsP,EAAYJ,OAAAC,OAAA,GAAKpH,MAItB+H,EAAwCC,IAAA,IAAC,MAAEjP,EAAK,KAAEiH,GAAMgI,EAAA,OACjE/P,EAAAA,cAAAA,EAAAA,SAAA,KACKc,EACAiH,GAAQ/H,EAAAA,cAACsP,EAAYJ,OAAAC,OAAA,GAAKpH,MAcnC,EAVmE1H,IAC/D,MAAM,sBAAEgO,EAAqB,aAAEE,EAAY,YAAEE,GAAgBpO,EAC7D,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKd,GACPE,GAAgBvO,EAAAA,cAAC8P,EAAYZ,OAAAC,OAAA,GAAKZ,IAClCE,GAAezO,EAAAA,cAAC4P,EAAWV,OAAAC,OAAA,GAAKV,+MChE7C,MAEA,EAF0BwB,IAAMjQ,EAAAA,cAAA,OAAKS,UAAU,gnBCqC/C,MAAMyP,EAA4B,qBAUlC,IAAaC,EAAb,cAA4CnQ,EAAAA,UAkBxCiI,YAAmB5H,GACf+P,MAAM/P,GAiMO,KAAAgQ,SAAW,KACxB,MAAM,MAAElQ,GAAUC,KAAKC,MACvB,OAAQF,GAASA,EAAMmQ,SAAWnQ,EAAMmQ,QAAQ9P,QAAUL,EAAMmQ,SAAY,IAG/D,KAAAC,2BAA6B,KAC1C,MAAM,SAAEC,EAAQ,UAAEC,GAAcrQ,KAAKC,MAAMiI,YAC3C,OAAOkI,EACFtO,IAAIuO,GACJC,QAAQvI,KAA0CA,IAAUA,EAAMwI,YAAcxI,EAAMyI,kBAG9E,KAAAtG,WAAa,KAE1BlK,KAAKmQ,6BAA6BM,SAAQ1I,IACtCA,EAAM2I,UAAY3I,EAAMyC,aAAY,OAI3B,KAAAvG,SAAW,KAAW,IAAA0M,EACnC,MAAMC,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAerE,IAAAmB,GAZFjR,KAAKC,MAAMqK,UAAU4G,YAAY,yCAEjClR,KAAKkK,aACLlK,KAAKmQ,6BAA6BM,SAAQ1I,KACrCA,EAAM8F,SAAW9F,EAAM9D,UAAY8D,EAAM9D,cAKX,QAA/B0M,EAAA3Q,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA8H,GAA/BA,EAAiCQ,gDACjCP,GA9PO,IA+PP5Q,KAAKoR,aAE0B,QAA/BH,EAAAjR,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAoI,GAA/BA,EAAiCI,qCAAqC,CAClEC,mCAAmC,MAK9B,KAAAjJ,SAAW,KACxBrI,KAAKC,MAAMqK,UAAU4G,YAAY,yCAEjClR,KAAKkK,aACLlK,KAAKmQ,6BAA6BM,SAAQ1I,KACrCA,EAAM8F,SAAW9F,EAAMM,UAAYN,EAAMM,eAIjC,KAAAD,OAAS,KACtBpI,KAAKC,MAAMqK,UAAU4G,YAAY,uCAEjClR,KAAKmQ,6BAA6BM,SAAQ1I,KACrCA,EAAM8F,SAAW9F,EAAMwJ,YAAcxJ,EAAMK,QAAUL,EAAMK,aAInD,KAAAoJ,iBAAmB,KAChCxR,KAAKC,MAAMqK,UAAU4G,YAAY,iDAEjClR,KAAKmQ,6BAA6BM,SAAQ1I,IACtCA,EAAM8F,SAAW9F,EAAMyJ,kBAAoBzJ,EAAMyJ,uBAhQrDxR,KAAK+H,MAAQ,CAAE0J,YAAY,GAnBrB,gBAAoB,IAAAC,EAAAC,EAC1B,MACIhJ,MAAM,SAAEC,IACR5I,KAAKC,MACT,GAAK2I,MAAAA,IAAAA,EAAUC,OACX,OAAO,EAGX,MACMH,EAAkC,QAA9BgJ,EADa9I,EAASC,OACJC,oBAAY,IAAA4I,OAAA,EAA3BA,EAA6BhJ,KAC1C,OAAKA,GAASA,EAAKkJ,WAAcf,EAAAA,gBAAgBC,YAAYpI,EAAKkJ,YAI3C,QAAvBD,EAAOjJ,EAAKK,mBAAW,IAAA4I,EAAAA,EAHZ,EAWRjE,oBAAiB,IAAAmE,EAAAC,EACpB,MACM1B,EADQpQ,KAAKiQ,WACInO,KAAKuN,GAA0B0C,GAAAA,CAAI1C,EAAM,cAC1D8B,EAC6E,QAD/BU,EACjB,QADiBC,EAChD9R,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAiJ,OAAA,EAA/BA,EAAiCX,sDAA8C,IAAAU,GAAAA,EAEnF7R,KAAKC,MAAMiI,YAAYD,KAAK,CACxBG,OAAQpI,KAAKoI,OACbC,SAAU8I,OAAiD5P,EAAYvB,KAAKqI,SAC5EpE,SAAUkN,OAAiD5P,EAAYvB,KAAKiE,SAC5EmM,SAAAA,KAGJ4B,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAY2F,UAC7B,KACI7N,KAAKwR,uBAIbQ,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAY+J,wBAC7B,KACIjS,KAAKiE,eAKb+N,EAAAA,EAAAA,KACI,SAAAE,EAAA,OAAqC,QAArCA,EAAMlS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiCC,gCACvCA,IACI,MAAMvB,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAGnEqB,GAAkDP,GAClD5Q,KAAKiK,SAAS,CAAEwH,WAAYU,QAMxCH,EAAAA,EAAAA,KACI,SAAAI,EAAA,OAAqC,QAArCA,EAAMpS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAuJ,OAAA,EAA/BA,EAAiCC,sCACvC,KACI,MAAMzB,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAGnEqB,GAAkDP,GAClD5Q,KAAKiE,eAMjB+N,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAY2F,UAC7BjK,MAAAA,IACI,MAAMgN,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAGyC,IAAAwC,EAA5GnB,GAAkDP,GAA6B5Q,KAAKoR,UA9FrF,SA+FsC,QAArCkB,EAAMtS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAyJ,OAAA,EAA/BA,EAAiCjB,qCAAqC,CACxEC,kCAAmCzD,SAOnDmE,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAYwI,WAC7B9M,MAAAA,IACI,MAAMgN,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAGU,IAAAyC,EAA7EpB,GAAkDP,SACb,QAArC2B,EAAMvS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA0J,OAAA,EAA/BA,EAAiCC,wCAAwC,CAC3EC,qCAAsC/B,SAMtDsB,EAAAA,EAAAA,KACI,SAAAU,EAAA,OAAqC,QAArCA,EAAM1S,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA6J,OAAA,EAA/BA,EAAiCC,wBACvC/O,UAAW,IAAAgP,EAC2B/B,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,OAGP,QAAnC8C,EAAI5S,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA+J,GAA/BA,EAAiCD,uBAC9D3S,KAAKoI,eACCpI,KAAKC,MAAM0I,KAAKC,SAASC,OAAOgK,2BAA2B,CAAEC,yBAAyB,QAMrGC,qBACH,IAAK/S,KAAKC,MAAMiI,YAAY8K,uBACxB,OAMJ,MAAM,SAAE5C,EAAQ,SAAEM,EAAQ,UAAEL,GAAcrQ,KAAKC,MAAMiI,YACtBkI,EAAS/C,MAAM0D,IAC1C,MAAMhJ,EAAQsI,EAAUU,GACxB,QAAShJ,IAAUA,EAAM8F,SAAW9F,EAAMwJ,eAEhBb,GAC1B1Q,KAAKoI,SAIN6K,sBAAsBC,EAAiDC,GAC1E,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SACH,MAAM,cACFuT,EAAa,YACblL,EACApI,QAAQ,MAAEuT,IACVrT,KAAKC,MAEH4B,EAAQ7B,KAAKiQ,WACnB,GAAqB,IAAjBpO,EAAMzB,OAEN,OADAJ,KAAKC,MAAM+I,QAAQsB,UAAUC,MAAM,yDAC5B,KAGX,MAAMwD,EAAkBzN,GAAAA,CACpB,gCACA,CACI,kBAAmB4H,EAAYoL,eAC/B,WAAYpL,EAAY2F,QACxB,eAAgB3F,EAAY2F,QAC5B0F,UAAqB,cAAVF,EACX,mBAA8B,UAAVA,GAExBrT,KAAKC,MAAMH,OAAOO,WAGhB2N,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IAEbI,UAAW0N,EACXyF,4BAA6B,CACzBtF,YAAalO,KAAKC,MAClBI,UAAW0N,GAEflM,MAAOA,EAAMC,KAAKuN,IACd,MAAM0B,EAAUgB,GAAAA,CAAI1C,EAAM,YACpBtH,EAAQG,EAAYmI,UAAUU,GAG9B0C,EACFzT,KAAK+H,MAAM0J,YAAe1J,EAAMyI,kBAAoBzI,EAAMuL,gBAAkBvL,EAAMwI,YAAcxI,EAAMwJ,WAC1G,MAAO,CACHpN,GAAI4M,EACJ2C,QAAS3L,EAAMyI,iBAAmBzI,EAAMuL,gBAAkB1T,EAAAA,cAAC+T,EAAgB,MAC3EpM,UAAW,CACP,iBAAkBQ,EAAM6L,SACxBvT,UAAWC,GAAAA,CAAU,sCAAuC,CACxDmT,OAAAA,EACAI,YAAa9L,EAAMuL,eACnB3N,SAAUoC,EAAMwI,WAChBuD,QAAS/L,EAAMwJ,UACfwC,MAAOhM,EAAM8F,QACbmG,SAAUjM,EAAMkM,WAChBC,QAASnM,EAAMoM,aAGvB9E,KAAMzP,EAAAA,aAAmByP,EAA4B,CAAE+D,cAAAA,UAInE,OAAOpT,KAAKC,MAAMsO,WAAWP,MAhNvBQ,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,8BADAsB,GAAsBvB,EAAAA,EAAAA,IAAA,CADlCE,EAAAA,IACYqB,GAyRb,SAAepB,EAAAA,EAAAA,iBAAgBoB,2FCrU/B,MAAMqE,EAAyD9N,IAAA,IAAC,QAAEoN,EAAO,UAAEnM,EAAS,KAAE8H,GAAM/I,EAAA,OACxF1G,EAAAA,cAAAA,EAAAA,SAAA,KACK8T,EACD9T,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKxH,GAAY8H,KAY9B,EARmFJ,IAAA,IAAC,4BAAEuE,EAA2B,MAAE3R,GAAOoN,EAAA,OACtHrP,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKyE,GACP3R,EAAMC,KAAIuN,GACPzP,EAAAA,cAACwU,EAAatF,OAAAC,OAAA,CAAC9M,IAAKoN,EAAKlL,IAAQkL,oICE7C,MAAMgF,EAAmB,+BAEZC,EAA6DhO,IAA8D,IAA7D,MAAEiO,EAAK,iBAAEC,EAAgB,aAAEC,EAAY,eAAEC,GAAgBpO,EAChI,IAAKuK,EAAAA,gBAAgBC,YAAYyD,GAC7B,OAAO,KAEX,MAAMI,EAAgBC,EAAkBL,EAAOC,GAC/C,OACI5U,EAAAA,cAAA,OAAKS,UAAW,GAAGgU,YACdxD,EAAAA,gBAAgBC,YAAY6D,GACzB/U,EAAAA,cAACiV,EAAAA,GAAc,CAACN,MAAOI,EAAeG,UAAW,CAAEL,aAAAA,EAAcC,eAAAA,KACjE,OAKVE,EAAoBA,CAACG,EAAwBP,KAC/C,IAAK3D,EAAAA,gBAAgBC,YAAYiE,GAC7B,OAAO,KAGX,MAAMC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAST,EAAmB,IAE7D,OAAOO,EAASjT,KAAId,IAChBgU,EAAQE,cAAcC,MAAQnU,EAAKoU,SACnC,MAAMC,GAAaC,EAAAA,EAAAA,wBAAuBd,EAAmBQ,GAC7D,MAAO,CACH5T,UAAWJ,EAAKI,UAChBf,UAAW,GAAGgU,UACde,SAAUpU,EAAKoU,SACfnU,QAASD,EAAKC,QAAQC,eACtBI,aAAcN,EAAKM,aACnBmD,KAAM,OACN8Q,qBAAsBF,4kBC5BlC,MAAMG,UAAwB5V,EAAAA,cAG1BiI,YAAY5H,GACR+P,MAAM/P,GA8CH,KAAAwV,oBAAuBC,GAA0C1V,KAAKC,MAAMH,OAAO6V,QAAQ/U,KAAO8U,EAAMrU,OAAO6D,MAE/G,KAAA0Q,qBAAwBC,GAAuBH,IAC9C1V,KAAKC,MAAMH,OAAOyU,OAASvU,KAAKC,MAAMH,OAAOyU,MAAMsB,KACnD7V,KAAKC,MAAMH,OAAOyU,MAAMsB,GAAWT,SAAWM,EAAMrU,OAAO6D,QAjD/DlF,KAAKwU,kBAAmBsB,EAAAA,EAAAA,oBACpB9V,KAAKC,MAAM+I,QAAQC,QAAQ8M,kBAC3B/V,KAAKC,MAAM+V,aACXhW,KAAKC,MAAMqK,WAIZzK,SACH,MAAM,OAAEC,GAAWE,KAAKC,OAClB,UAAEI,EAAS,QAAEsV,EAAO,MAAEpB,GAAUzU,EAEhCuU,EAAmB,+BAEzB,KAAK4B,EAAAA,EAAAA,IAAiBjW,KAAKC,MAAM+I,QAAQ6D,cAAc6H,gBACnD,OAAO,KAGX,MAAM1G,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACbI,UAAAA,EACA6V,gBAAiB,CACbhI,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAWqQ,EAAkBvU,EAAOO,YAEnDsV,QAASA,GAAWA,EAAQ/U,MACxBhB,EAAAA,cAACiV,EAAAA,GAAa,CACVxU,UAAW,GAAGgU,aACdzS,IAAK+T,EAAQ/T,IACbhB,KAAM+U,EAAQ/U,KACdkU,UAAW,CAAE1M,OAAQpI,KAAKyV,oBAAqBf,eAAgB1U,KAAKC,MAAM+I,QAAQC,WAG1FsL,MAAO1D,EAAAA,gBAAgBC,YAAYyD,IAC/B3U,EAAAA,cAAC0U,EAAoB,CACjBC,MAAOA,EACPE,aAAczU,KAAK4V,qBACnBlB,eAAgB1U,KAAKC,MAAM+I,QAAQC,QACnCuL,iBAAkBxU,KAAKwU,qBAKnC,OAAOxU,KAAKC,MAAMsO,WAAWP,IAYrC,kGC7EA,MAWA,EAXiE/N,IAC7D,MAAM,gBAAEiW,EAAe,QAAEP,EAAO,MAAEpB,GAAUtU,EAE5C,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKmH,GACPP,EACApB,+ECEb,MAkBA,EAlBoFjO,IAQ/E,IARgF,GACjFnC,EAAE,UACF9D,EAAS,KACTO,EAAI,UACJQ,EAAS,iBACToT,EAAgB,SAChB7O,EAAQ,QACRD,GACHY,EACG,MAAM0O,GAAUC,EAAAA,EAAAA,kBAAiB,QAAST,EAAmB5T,GACvDyU,GAAaC,EAAAA,EAAAA,wBAAuBd,EAAmBQ,GAC7D,OACIpV,EAAAA,cAAC6F,EAAAA,OAAMqJ,OAAAC,OAAA,CAAC5K,GAAIA,EAAI9D,UAAWA,EAAS,aAAce,EAAWuE,SAAUA,EAAUD,QAASA,GAAa2P,GAClGzU,+EChBb,MAUA,EAVuF0F,IAA8C,IAA7C,GAAEnC,EAAE,UAAE9D,EAAS,KAAE2E,EAAO,OAAM,QAAEmR,GAAS7P,EAC7H,MAAM8P,EAAiB,GAAG/V,MAAc2E,UAExC,OACIpF,EAAAA,cAAA,OAAKuE,GAAIA,EAAI9D,UAAW2D,GAAAA,CAAWoS,EAAgB,QAAS,GAAGpR,UAAcP,KAAK,QAAO,YAAW,YAAW,cAAa,QACxH7E,EAAAA,cAAA,KAAGS,UAAW,GAAG+V,UAAwBD,qECQrD,MAAME,EAAgBC,IAClB,GAAIA,EAAW,CACX,MAAMC,EAAkBC,OAAOhK,SAAS8J,EAAW,IACnD,IAAKG,MAAMF,GACP,OAAOA,IA4BnB,EArBuFjQ,IAAA,IAAC,GACpFnC,EAAE,KACFa,EAAI,MACJE,EAAK,QACLwR,EAAO,UACPrW,EAAS,UACTiW,EAAS,SACTrR,GACHqB,EAAA,OACG1G,EAAAA,cAAA,SACIuE,GAAIA,EACJa,KAAMA,EACNE,MAAOA,EACP7E,UAAW,GAAGA,WAAmBA,KAAa8D,IAC9CuS,QAAqB,KAAZA,EAAiBA,OAAUnV,EAAS,gBAC/B,OACd+U,UAAWD,EAAaC,GACxBrR,SAAUA,+DC1ClB,MAMA,EANkFqB,IAAA,IAAC,GAAEnC,EAAE,MAAEwS,EAAK,UAAEtW,EAAS,KAAEO,GAAM0F,EAAA,OAC7G1G,EAAAA,cAAA,SAAOuE,GAAI,GAAGA,UAAY9D,UAAW,GAAGA,UAAmBuW,QAASD,GAC/D/V,8DCLT,MAIA,EAJ8F0F,IAAA,IAAC,UAAEjG,GAAWiG,EAAA,OACxG1G,EAAAA,cAAA,OAAKS,UAAW,GAAGA,+ECAvB,MAIA,EAJoGiG,IAAA,IAAC,UAAEjG,EAAS,QAAE8V,GAAS7P,EAAA,OACvH1G,EAAAA,cAAA,OAAKS,UAAW,GAAGA,sBAA+B8V,+ECEtD,MAUA,EAVsF7P,IAA8C,IAA7C,GAAEnC,EAAE,UAAE9D,EAAS,KAAE2E,EAAO,OAAM,QAAEmR,GAAS7P,EAC5H,MAAMuQ,EAAmB,GAAGxW,MAAc2E,YAE1C,OACIpF,EAAAA,cAAA,QAAMuE,GAAIA,EAAI9D,UAAW2D,GAAAA,CAAW6S,EAAkB,GAAG7R,UAAcP,KAAK,QAAO,YAAW,YAAW,cAAa,QAClH7E,EAAAA,cAAA,KAAGS,UAAW,GAAGwW,UAA0BV,8yBCoDvD,IAAMW,EAAN,cAAwClX,EAAAA,UAcpCiI,YAAY5H,GACR+P,MAAM/P,GAdO,KAAA8N,gBAA0B,iCA8FpC,KAAA0H,oBAAuBC,GAA0C1V,KAAKC,MAAMH,OAAO6V,QAAS/U,KAAO8U,EAAMrU,OAAO6D,MAGhH,KAAA6R,QAAU,KACb/W,KAAKgX,mBACLhX,KAAKiX,sBAGLjX,KAAKkX,oBAAsBC,aAAY,KACnCnX,KAAKoX,gCACN,KACHC,YAAW,KACPC,cAActX,KAAKkX,uBACpB,MAIU,KAAAE,4BAA8B,KAEvCG,QAAUA,OAAe,QAAKA,OAAe,OAA4B,2BACzED,cAActX,KAAKkX,qBACnBlX,KAAKwX,eAAgB,IAgPZ,KAAAC,SAAW,CAACC,EAAiBC,IACtC3X,KAAK4X,gBAC2B,OAAzB5X,KAAK4X,gBAA2BF,EAAUC,EAE9C,GAxVP3X,KAAK6X,WAAaC,EAAAA,WAAWC,aAAaC,OAC1ChY,KAAKwX,eAAgB,EACrBxX,KAAK4X,gBAAkB,GACvB5X,KAAKwU,kBAAmBsB,EAAAA,EAAAA,oBACpB9V,KAAKC,MAAM+I,QAAQC,QAAQ8M,kBAC3B/V,KAAKC,MAAM+V,aACXhW,KAAKC,MAAMqK,WAIZoD,oBACH1N,KAAK+W,UAIFhE,qBAEC/S,KAAKwX,eAAiBD,QAAUA,OAAiB,UAAKA,OAAiB,SAAc,YAErFA,OAAiB,SAAc,aAIhCtE,sBACHC,EACAC,GAEA,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SACH,MAAM,OAAEC,EAAM,UAAEoD,GAAclD,KAAKC,MAE7B+N,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACbgY,UAAW,CACPC,eAAgBlY,KAAKwX,eAEzBW,0BAA2B,CACvBjK,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAWhE,KAAK+N,gBAAiBjO,EAAOO,YAEvDqT,QAAS,CACL0E,MAAO,CACHxW,IAAKyW,EAAAA,MACLxT,QAAQ,GAEZyT,UAAW,CACP1W,IAAK2W,EAAAA,WAETC,KAAM5Y,EAAAA,cAAC6Y,EAAAA,EAA6C,CAACpY,UAAWL,KAAK+N,kBACrEoI,QACIvW,EAAAA,cAAC8Y,EAAAA,EAAgD,CAACrY,UAAWL,KAAK+N,gBAAiBoI,QAASjT,EAAUyV,kBAG9GC,mBAAoB,CAChBzU,GAAI,MACJ0U,MAAO,CAAEC,QAAS,SAEtBC,YAAa,CACT5U,GAAInE,KAAKwX,cAAgB,MAAQ,KACjCnX,UAAW,GAAGL,KAAK+N,8BAEvB4H,QAAS7V,EAAO6V,SACZ/V,EAAAA,cAACiV,EAAAA,GAAa/F,OAAAC,OAAA,CACV1O,UAAW,GAAGL,KAAK+N,4BACfjO,EAAO6V,QAAO,CAClBb,UAAW,CAAE1M,OAAQpI,KAAKyV,oBAAqBf,eAAgB1U,KAAKC,MAAM+I,QAAQC,YAG1F+P,sCAAuChZ,KAAKiZ,wBAGhD,OAAOjZ,KAAKC,MAAMsO,WAAWP,GA4BzBgJ,mBAEAO,OAAkB,WAAKA,OAAkB,UAAmB,kBAE5DA,OAAkB,UAAmB,gBAAEzV,KAAKoX,IACX,UAAzBA,EAAIC,GAAGC,cACPpZ,KAAK6X,WAAaqB,EAAIG,IACU,6BAAzBH,EAAIC,GAAGC,gBACdpZ,KAAK4X,gBAAkB,SAG1B5X,KAAK4X,kBACN5X,KAAK4X,gBAAkB,OAK3BX,sBAEJ,GAAIM,QAAUA,OAAgB,QAAG,CAC7B,MAAMpB,EAAU,CACZmD,gBAAiBtZ,KAAKC,MAAMiD,UAAUyV,gBAI1C7J,OAAOC,OAAOwI,OAAgB,QAAGpB,IAIjC8C,sBACJ,MAAM,UAAE/V,GAAclD,KAAKC,MAC3B,MAAO,CACHsZ,aAAc,CACVpV,GAAI,gBACJ9D,UAAW,GAAGL,KAAK+N,uCAEvByL,2BAA4B,CACxBrV,GAAI,2BACJ9D,UAAW,GAAGL,KAAK+N,4EAEvBlM,MAAO,CACH7B,KAAKyZ,aAAa,QAAS,QAASvW,EAAUwW,2BAAuBnY,EAAWvB,KAAK6X,YACrF7X,KAAKyZ,aACDzZ,KAAKyX,SAAS,kBAAmB,yBACjC,OACAvU,EAAUyW,+BACVpY,OACAA,EACA,qBAGRqY,eAAgB,CACZha,EAAAA,cAACia,EAAAA,EAAyC,CACtC5X,IAAI,aACJkC,GAAInE,KAAKyX,SAAS,aAAc,yCAChCpX,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAU4W,8BAGvBla,EAAAA,cAACia,EAAAA,EAAyC,CACtC5X,IAAI,gBACJkC,GAAInE,KAAKyX,SAAS,gBAAiB,4CACnCpX,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAU6W,+BAG3B1X,aAAc,CACVzC,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,yCACJkC,GAAG,yCACH9D,UAAWL,KAAK+N,kBAEpBnO,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,mBACJkC,GAAG,mBACH9D,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAU+W,aAEvBra,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,sBACJkC,GAAG,sBACH9D,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAUgX,uBAEvBta,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,uBACJkC,GAAG,uBACH9D,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAUiX,iBAEvBva,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,0BACJkC,GAAG,0BACH9D,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAUkX,mBAEvBxa,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,oBACJkC,GAAG,oBACH9D,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAUmX,cAEvBza,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,yBACJkC,GAAG,yBACH9D,UAAWL,KAAK+N,gBAChBoI,QAASjT,EAAUoX,oBAEvB1a,EAAAA,cAACoa,EAAAA,EAAuC,CACpC/X,IAAI,+BACJkC,GAAG,+BACH9D,UAAWL,KAAK+N,mBAGxBwM,2BAA4B,CACxBla,UAAW,GAAGL,KAAK+N,+CAA+C/N,KAAKyX,SAAS,SAAU,MAC1F,gBAAiB,SAErB+C,oBAAqB,CACjB5a,EAAAA,cAAC6a,EAAAA,EAAwC,CACrCxY,IAAI,qBACJkC,GAAInE,KAAKyX,SAAS,qBAAsB,0CACxCpX,UAAW,GAAGL,KAAK+N,8CACf/N,KAAK+N,sCACc/N,KAAKyX,SAAS,aAAc,cACnDrW,UAAW8B,EAAUwX,wBACrB9Z,KAAMsC,EAAUyX,mBAChBnG,iBAAkBxU,KAAKwU,mBAE3B5U,EAAAA,cAAC6a,EAAAA,EAAwC,CACrCxY,IAAI,uBACJkC,GAAInE,KAAKyX,SAAS,uBAAwB,4CAC1CpX,UAAW,GAAGL,KAAK+N,8CACf/N,KAAK+N,wCACgB/N,KAAKyX,SAAS,eAAgB,gBACvDrW,UAAW8B,EAAU0X,0BACrBha,KAAMsC,EAAU2X,qBAChBrG,iBAAkBxU,KAAKwU,mBAE3B5U,EAAAA,cAAC6a,EAAAA,EAAwC,CACrCxY,IAAI,uBACJkC,GAAInE,KAAKyX,SAAS,uBAAwB,8CAC1CpX,UAAW,GAAGL,KAAK+N,8CACf/N,KAAK+N,wCACgB/N,KAAKyX,SAAS,aAAc,iBACrDrW,UAAW8B,EAAU4X,0BACrBla,KAAMsC,EAAU6X,qBAChBvG,iBAAkBxU,KAAKwU,mBAE3B5U,EAAAA,cAAC6a,EAAAA,EAAwC,CACrCxY,IAAI,qBACJkC,GAAInE,KAAKyX,SAAS,qBAAsB,8CACxCpX,UAAW,GAAGL,KAAK+N,8CACf/N,KAAK+N,sCACc/N,KAAKyX,SAAS,aAAc,kBACnDrW,UAAW8B,EAAU8X,2BACrBpa,KAAMsC,EAAU+X,sBAChBzG,iBAAkBxU,KAAKwU,oBAG/B0G,eAAgB,CACZ7a,UAAW,GAAGL,KAAK+N,4BAEvBoN,QAAS,CACLvb,EAAAA,cAAC6a,EAAAA,EAAwC,CACrCxY,IAAI,WACJkC,GAAG,WACH9D,UAAW,GAAGL,KAAK+N,mCACnB3M,UAAW8B,EAAUkY,wBACrBxa,KAAMsC,EAAUmY,mBAChB7G,iBAAkBxU,KAAKwU,mBAE3B5U,EAAAA,cAAC6a,EAAAA,EAAwC,CACrCxY,IAAI,SACJkC,GAAG,SACH9D,UAAW,GAAGL,KAAK+N,iCACnB3M,UAAW8B,EAAUoY,sBACrB1a,KAAMsC,EAAUqY,oBAGxBC,yBAA0B,CACtBnb,UAAW,GAAGL,KAAK+N,oDAEvB0N,gCAAiC,CAC7BtX,GAAI,kBACJ9D,UAAW,GAAGL,KAAK+N,6CAKvB0L,aACJtV,EACAa,EACA0W,EACApF,EACAI,EACAiF,GAEA,MAAMtb,EAAY,GAAGL,KAAK+N,gCAC1B,MAAO,CACH6N,QAAS,CACLvb,UAAW2D,GAAAA,CAAW3D,EAAW,GAAGA,KAAa8D,IAAM,aAAc,YAAawX,IAEtF1Z,IAAKkC,EACLD,MACItE,EAAAA,cAACic,EAAAA,EAAuC/M,OAAAC,OAAA,GAChC,CACA5K,GAAAA,EACAwS,MAAOxS,EACP9D,UAAAA,EACAO,KAAM8a,KAIlBrZ,aACIzC,EAAAA,cAACoa,EAAAA,EAAuClL,OAAAC,OAAA,GAChC,CACA1O,UAAWL,KAAK+N,gBAChB/I,KAAM,UAIlB+G,MACInM,EAAAA,cAACkc,EAAAA,EAAuChN,OAAAC,OAAA,GAChC,CACA5K,GAAAA,EACAa,KAAAA,EACAsR,UAAAA,EACAI,QAAAA,EACArW,UAAAA,SAxVRmO,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,kCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,qCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,sCATTjF,GAAyBtI,EAAAA,EAAAA,IAAA,CAD9BE,EAAAA,IACKoI,GA4WN,kGCraA,MAAMkF,EAA0E1V,IAA4C,IAA3C,QAAEsV,EAAO,MAAE1X,EAAK,aAAE7B,EAAY,MAAE0J,GAAOzF,EACpH,OACI1G,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK6M,GACL1X,EACA7B,EACA0J,IAwDPkQ,EAAgF9M,IAAwC,IAAvC,MAAEiJ,EAAK,UAAEE,EAAS,KAAEE,EAAI,QAAErC,GAAShH,EACtH,OACIvP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKqJ,GACNxY,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKuJ,GACLE,EACArC,KA6BjB,EAvBqFlW,IACjF,MAAM,0BACFkY,EAAyB,UACzBF,EAAS,QACTvE,EAAO,mBACPkF,EAAkB,YAClBG,EAAW,QACXpD,EAAO,sCACPqD,GACA/Y,EAEJ,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKoJ,GACPF,EAAUC,eAAiBtY,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK6J,IACrCX,EAAUC,eAAiBtY,EAAAA,cAACqc,EAAgCnN,OAAAC,OAAA,GAAK2E,IAClE9T,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKgK,GACLpD,EA9EsD1G,CAAAA,IAYlE,IAZmE,aACpEsK,EAAY,2BACZC,EAA0B,MAC1B3X,EAAK,eACL+X,EAAc,aACdvX,EAAY,2BACZkY,EAA0B,oBAC1BC,EAAmB,eACnBU,EAAc,QACdC,EAAO,yBACPK,EAAwB,gCACxBC,GACHxM,EACG,OACIrP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKwK,GACN3Z,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKyK,GACLI,GACGA,EAAe9X,KAAI,CAACqU,EAA0BnU,IACnCpC,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAAQmU,KAE3CtU,GACGA,EAAMC,KAAKuN,GAEAzP,EAAAA,cAACoc,EAA6BlN,OAAAC,OAAA,GAAKM,MAEjDhN,GACGA,EAAaP,KAAI,CAACyI,EAAwBvI,IAC/BpC,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAAQuI,KAE5C3K,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKwL,GACLC,GACGA,EAAoB1Y,KAAI,CAACoa,EAAyBla,IACvCpC,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAAQka,MAIhDtc,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKmM,GACLC,GACGA,EAAQrZ,KAAI,CAACoa,EAAyBla,IAC3BpC,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAAQka,MAIhDtc,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKyM,GACN5b,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK0M,QAmCbU,CAAanD,qEChGvBpV,eAAewY,EAAqBC,EAAgDC,GACvF,MAAM5R,QAAsC6R,EAAAA,EAAAA,kBAAiBD,GAAKtP,OAAOzC,IAErE,MADA+R,EAAIhS,UAAUkS,UAAUjS,GAClBA,KAGV8R,EAAiBrQ,SAAWqQ,EAAiBrQ,QAAQyQ,uBAC/C/R,EAAcgS,yBAAyB,CAAEC,sBAAuBC,EAAAA,eAAeC,gpBCDlF,MAAMC,EAeTjV,YACIyC,EACAyS,EACAC,EACAC,EACAC,GAnBY,KAAAC,sBAAkC,CAAC,2BAA4B,OAAQ,mBAAoB,SA4BpG,KAAAC,kBAAoB,CACvBC,EACAC,EACAC,KAEKvd,KAAKwd,oBACNC,UAAUC,KAAKC,WAAW,6BAA8B,CACpDC,SAAUA,KAAK,IAAAC,EACX,MAAMzb,EAAO+F,EAAAA,EAAA,GAAQnI,KAAK+c,oBAAkB,IAAEE,YAAajd,KAAKid,cAChEjd,KAAKwd,mBAAqB,IAAIC,UAAUC,KAAKI,mBAAmB1b,GAChEpC,KAAKwd,mBAAmBO,kBAAkBV,EAASC,EAAaC,GACjC,QAA/BM,EAAAG,SAASC,cAAcZ,UAAQ,IAAAQ,GAA/BA,EAAiCK,aAAa,OAAQ,YACtD7G,YAAW,KAAK,IAAA8G,EACmB,QAA/BA,EAAAH,SAASC,cAAcZ,UAAQ,IAAAc,GAA/BA,EAAiCD,aAAa,OAAQ,UACvD,IAEPE,cAAeA,KACPpe,KAAKsK,WACLtK,KAAKsK,UAAU+T,MAAM,uCAG7BC,YAAate,KAAKue,kBAKvB,KAAAC,gCAAmCvB,IAClCjd,KAAKwd,qBACLxd,KAAK+c,mBAAmBE,YAAcA,EACtCjd,KAAKwd,mBAAmBiB,WAAWze,KAAK+c,sBAIzC,KAAA2B,mBAAqB,KAAW,IAAAC,EAAAC,EACZ,QAAvBD,EAAA3e,KAAKwd,0BAAkB,IAAAmB,GAAvBA,EAAyBE,oBACF,QAAvBD,EAAA5e,KAAKwd,0BAAkB,IAAAoB,GAAvBA,EAAyBE,UACzB9e,KAAKwd,wBAAqBjc,GAIvB,KAAAwd,YAAcnb,MAAAA,UACXob,EAA0BC,WAAW,CACvChd,IAAKjC,KAAKue,eACVW,KAAMlf,KAAKkd,kBACXiC,OAAQnf,KAAKid,eAnDjBjd,KAAKsK,UAAYA,EACjBtK,KAAK+c,mBAAqBA,EAC1B/c,KAAKue,eAAiBvB,EACtBhd,KAAKid,YAAcA,EACnBjd,KAAKkd,kBAAoBA,oFCZ1B,MAAMkC,EAOTvX,YAAYmB,EAAuB9F,EAA6BoH,GAMzD,KAAA+U,0BAA4B,CAACC,EAAyBC,EAAqCJ,KAC9F,MAAMK,EAAgBL,GAAU,KAC1BM,EAAuBF,EAAeG,MAAKC,IAAkBA,EAAcC,SAAW,MAAQJ,IACpG,OAAQC,GAAwBA,EAAqBI,iBAAoBP,GAGtE,KAAAQ,qBAAwB5c,IACpB,CACH6c,WAAY7c,EAAU8c,yBACtB3d,aAAca,EAAU+c,6BAIzB,KAAAC,oBAAsB,IAClBlgB,KAAKgJ,QAAQC,QAAQC,KAAKC,gBAG9B,KAAAgX,kBAAoBvc,MAAAA,IACvB,IAAIwc,EAAgC,GACpC,GAAIpgB,KAAKgJ,SAAWhJ,KAAKgJ,QAAQ6D,cAC7B,IACI,MAAMd,EAAQ,IAAIsU,EAAAA,GAAuBf,EAAiBtf,KAAKgJ,QAAQC,QAAQqX,aAC/EF,QAAiBG,EAAAA,EAAAA,IAAuBxU,EAAO/L,KAAKgJ,QAAQ6D,eAC9D,MAAOtC,GACDvK,KAAKsK,YACLtK,KAAKsK,UAAUC,MAAM,qBAAqBA,KAC1CvK,KAAKsK,UAAU+T,MAAM,kCAIjC,OAAOxS,QAAQC,QAAQsU,IAIpB,KAAAI,QAAWC,IACVA,IAAWA,EAAQC,2BAA6BD,EAAQE,QAASF,EAAQG,KAO1E,KAAAC,mBAAqBjd,MAAAA,UAClB5D,KAAK8gB,oCAAoCL,GACxCzgB,KAAK+gB,sBAAsBC,EAAAA,WAAYP,IAG3C,KAAAQ,sBAAwBrd,MAAAA,UACrB5D,KAAK8gB,oCAAoCL,GACxCzgB,KAAK+gB,sBAAsBG,EAAAA,cAAeT,IAG9C,KAAAU,6BAA+Bvd,MAAAA,GAC3B5D,KAAK+gB,sBAAsBK,EAAAA,qBAAsBX,GAG3C,KAAAM,sBAAwBnd,MACrCyd,EACAZ,KAEAA,EAAQa,iBAAmBb,EAAQa,kBAAoB,EAEvD,MAAMvV,EAAQ,IAAIwV,EAAAA,uBAAuBd,GACzC,OAAOzgB,KAAKwhB,kBAAkBH,EAAetV,EAAO0U,IAGvC,KAAAe,kBAAoB5d,MACjCyd,EACAtV,EACA0U,KAEA,IAAIL,EAA6B,GAEjC,GAAIpgB,KAAKgJ,SAAWhJ,KAAKgJ,QAAQ6D,cAC7B,IACI,MAAM4U,QAAkBJ,EAActV,EAAO/L,KAAKgJ,QAAQ6D,eACtD4U,EAAUrhB,OAAS,EACnBggB,EAASK,QAAUA,EAAQiB,SAAWjB,EAAUgB,EAAUA,EAAUrhB,OAAS,GAE7EggB,EAASK,QAAUA,EAEvBL,EAASuB,kBAAoBF,EAC/B,MAAOlX,GACDvK,KAAKsK,YACLtK,KAAKsK,UAAUC,MAAM,qBAAqBA,KAC1CvK,KAAKsK,UAAU+T,MAAM,kCAEzB+B,EAAWpgB,KAAK8f,qBAAqB9f,KAAKkD,WAGlD,OAAO2I,QAAQC,QAAQsU,IAQV,KAAAU,oCAAsCld,MAAAA,IACnD,IAAIge,EAAoC,GACxC,IACI,MAAM7V,EAAiC,IAAI8V,EAAAA,wBAAwB7hB,KAAKgJ,QAAQC,QAAQqX,aACxFsB,QAAwBE,EAAAA,EAAAA,0BAAyB/V,EAAO/L,KAAKgJ,QAAQ6D,eACvE,MAAOtC,GAELvK,KAAKsK,UAAUC,MAAM,qBAAqBA,KAC1CvK,KAAKsK,UAAU+T,MAAM,kCAEzB,GAAIxN,EAAAA,gBAAgBC,YAAY8Q,GAAkB,CAC9C,MAAMG,EAA6CH,EAAgBlC,MAC/DsC,GAAWA,EAAQC,cAAgBxB,EAAQa,mBAE3CS,IACAtB,EAAQyB,8BAAgCH,EAAeL,YAtH/D1hB,KAAKgJ,QAAUA,EACfhJ,KAAKkD,UAAYA,EACjBlD,KAAKsK,UAAYA,iCCjClB,IAAK6X,EAMAC,EAKAC,sCAXZ,SAAYF,GACRA,EAAA,cACAA,EAAA,oBACAA,EAAA,oBAHJ,CAAYA,IAAAA,EAAsB,KAMlC,SAAYC,GACRA,EAAA,oBACAA,EAAA,gBAFJ,CAAYA,IAAAA,EAAyB,KAKrC,SAAYC,GACRA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,oBACAA,EAAAA,EAAA,4BACAA,EAAAA,EAAA,0CACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,uDACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,2CACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,wBACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,4CAjBJ,CAAYA,IAAAA,EAAe,sGCIpB,MAAMC,EAOTza,YAAY0a,EAAyCC,EAAkCZ,GAyChF,KAAAa,gCAAkC,CACrCC,EACAC,KAEA,MAAMC,EAAmB,CACrB3gB,IAAK,GACLiD,MAAOwd,GAELG,EAAsC,GAO5C,OALAA,EAAaR,EAAAA,GAAgBA,EAAAA,GAAgB3B,2BAA6B1gB,KAAK8iB,mBAC/ED,EAAaR,EAAAA,GAAgBA,EAAAA,GAAgB1B,QAAU3gB,KAAK+iB,eAAeJ,GAC3EE,EAAaR,EAAAA,GAAgBA,EAAAA,GAAgB1B,QAAQqC,QAAQJ,GAC7DC,EAAaR,EAAAA,GAAgBA,EAAAA,GAAgBf,mBAAqBthB,KAAKijB,uBAEhEJ,GAGJ,KAAAK,0BAA6B5D,GACNtf,KAAKmjB,sBAAsB7D,GAE3BM,QAGvB,KAAAwD,sBAAwB,CAC3B3C,EACA4C,EACA/D,EACAgE,KAEA,IACIC,EADAC,GAAmB,EAavB,OAXsBxjB,KAAKyjB,iBAAiBhD,EAAQC,0BAA4BpB,GAElE7O,SAAQiT,MACbJ,GAAiBA,GAAgBI,EAAkBC,OAASL,KAC7DC,EAAgBvjB,KAAK4jB,iBAAiBF,EAAmBL,EAAiB5C,QACpDlf,IAAlBgiB,IACAC,EAAUD,OAKfC,GAGJ,KAAAK,qBAAuB,CAAChb,EAA0C8Z,KACrE,MAAMlC,EAAmB,GAUzB,QAPkClf,IAA9BsH,EAAO4X,QAAQqD,WACfrD,EAAQsD,QAAUlb,EAAO4X,QAAQqD,WAEjCrD,EAAQsD,QAAU,GAIlBpB,EAAmB,CACnB,MAAMqB,EAAgBrB,EAAkBjD,MAAK3X,GAASA,EAAMkc,YAAcpb,EAAO4X,QAAQyD,gBACpFF,GAIDvD,EAAQE,MAAQqD,EAAcG,QAC9B1D,EAAQwD,UAAYD,EAAcC,YAJlCxD,EAAQE,MAAQ,GAChBF,EAAQwD,UAAYpb,EAAO4X,QAAQyD,eAgC3C,YAxBmC3iB,IAA/BsH,EAAO4X,QAAQ2D,YACf3D,EAAQ4D,OAASxb,EAAO4X,QAAQ2D,YAEhC3D,EAAQ4D,OAAS,SAIW9iB,IAA5BsH,EAAO4X,QAAQ6D,SACf7D,EAAQG,KAAO/X,EAAO4X,QAAQ6D,SAE9B7D,EAAQG,KAAO,QAIarf,IAA5BsH,EAAO4X,QAAQ8D,UACf9D,EAAQ+D,aAAe3b,EAAO4X,QAAQ8D,SACtC9D,EAAQgE,WAAa5b,EAAO4X,QAAQ8D,UAEpC9D,EAAQ+D,aAAe,GAI3B/D,EAAQiE,YAAc7b,EAAO4X,QAAQkE,iBAE9BlE,GAcM,KAAAmE,eAAiB,CAACnE,EAAkB6C,EAAsBuB,KACvE,GAAIA,EAAeC,OAASD,EAAeC,MAAM1kB,OAAS,EAAG,CAEzD,OADc,IAAIgF,OAAOyf,EAAeC,OAC3BC,MAAMhT,EAAAA,EAAAA,IAAI0O,EAAS6C,IAA4B,IAEhE,OAAO,GAxJPtjB,KAAKuiB,mBAAqBA,EAC1BviB,KAAKwiB,gBAAkBA,EACvBxiB,KAAK4hB,gBAAkBA,EAGpB6B,iBAAiBnE,GACpB,MAAM0F,EAAoBhlB,KAAKmjB,sBAAsB7D,GACrD,OAAI0F,EACOhlB,KAAKilB,yBAAyBD,GAElC,GAGJlC,mBACH,OAAQ9iB,KAAKuiB,oBAAsB,IAAIzgB,KAAI6d,IAChC,CACH1d,IAAK0d,EAAcE,gBACnB3a,MAAOya,EAAcuF,cAK1BnC,eAAeJ,GAClB,OAAQA,GAAqB,IAAI7gB,KAAIiG,IAC1B,CACH9F,IAAK8F,EAAMoc,QACXjf,MAAO6C,EAAMkc,cAKlBhB,uBACH,OAAQjjB,KAAK4hB,iBAAmB,IAAI9f,KAAIigB,IAC7B,CACH9f,IAAK8f,EAAeE,YACpB/c,MAAO6c,EAAeoD,gBAqG1BvB,iBAAiBF,EAAiCL,EAA0B5C,IAChF2E,EAAAA,EAAAA,IAAI/B,EAAiB,CAAE,CAACK,EAAkBC,MAAO,OACjD,IAAK,MAAMkB,KAAkBnB,EAAkB2B,iBAAmB,GAC9D,IAAKrlB,KAAK4kB,eAAenE,EAASiD,EAAkBC,KAAMkB,GAEtD,OADAO,EAAAA,EAAAA,IAAI/B,EAAiB,CAAE,CAACK,EAAkBC,MAAOkB,EAAe1O,WACzD,EAcXgN,sBAAsB7D,GAC1B,OAAQtf,KAAKuiB,oBAAsB,IAAI7C,MAAKC,IAChCA,EAAcE,iBAAmB,IAAIzG,gBAAkBkG,EAAgBlG,gBAI/E6L,yBAAyBD,GAC7B,MAAMM,EAAqC,GAE3C,GAAIN,GAAqBA,EAAkBO,mBAAoB,CAC3D,MAAMC,EAAkBxlB,KAAKylB,4BAA4BpD,EAAAA,GAAgBf,kBAAkB,GACvFkE,GACAF,EAAmBI,KAAKF,GAG5B,MAAMG,EAAkB3lB,KAAKylB,4BAA4BpD,EAAAA,GAAgBuD,MAAM,GAC3ED,GACAL,EAAmBI,KAAKC,GAG5BX,EAAkBO,mBAAmB9U,SAAQoV,IACzC,GAAIA,EAAWC,0BAA2B,CACtC,MAAMC,EAAc/lB,KAAKwiB,gBAAgBwD,cAAcH,EAAWC,2BAC9DC,IACAA,EAAYE,UAAYJ,EAAWK,UAAW,EAC9CZ,EAAmBI,KAAKK,QAKpC,MAAMI,EAAmBnmB,KAAKylB,4BAA4BpD,EAAAA,GAAgB+D,OAAO,GAC7ED,GACAb,EAAmBI,KAAKS,GAG5B,MAAME,EAAuBrmB,KAAKylB,4BAA4BpD,EAAAA,GAAgBiE,WAAW,GACrFD,GACAf,EAAmBI,KAAKW,GAIhC,OAAOf,EAGHG,4BAA4BzgB,EAAuBihB,GACvD,MAAMF,EAAc/lB,KAAKwiB,gBAAgBwD,cAAchhB,GAIvD,OAHI+gB,IACAA,EAAYE,UAAYA,GAErBF,8FCrNR,MAAMQ,EAeT1e,YAAY3E,EAA6BsjB,EAA8BC,GAdtD,KAAAC,SAA2B,GAI3B,KAAAC,mBAA6B,MAE7B,KAAAC,gBAA0B,UAE1B,KAAAtQ,UAAoB,GAOjCtW,KAAKkD,UAAYA,GAAa,GAC9BlD,KAAK6mB,cAAgBL,GAAY,GACjCxmB,KAAK8mB,oBACYvlB,IAAbklB,EACMA,EACA,CACIpE,EAAAA,GAAgBf,iBAChBe,EAAAA,GAAgBuD,KAChBvD,EAAAA,GAAgB0B,QAChB1B,EAAAA,GAAgBzB,KAChByB,EAAAA,GAAgB1B,MAChB0B,EAAAA,GAAgB3B,yBAChB2B,EAAAA,GAAgBgC,QAE9BrkB,KAAK+mB,QAGFf,cAAc7hB,GACjB,OAAOnE,KAAK0mB,SAAShH,MAAKrQ,GACfA,EAAKrK,OAASb,IAIrB4iB,QACJ/mB,KAAKgnB,SAAS3E,EAAAA,GAAgBuD,KAAMzD,EAAAA,GAAuB8E,OAC3DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgB+D,MAAOjE,EAAAA,GAAuB8E,MAAOC,EAAAA,WAAWnP,cAC9E/X,KAAKgnB,SAAS3E,EAAAA,GAAgB0B,QAAS5B,EAAAA,GAAuB8E,OAC9DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBzB,KAAMuB,EAAAA,GAAuB8E,OAC3DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgB8E,OAAQhF,EAAAA,GAAuB8E,OAC7DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgB1B,MAAOwB,EAAAA,GAAuBiF,UAC5DpnB,KAAKgnB,SAAS3E,EAAAA,GAAgB3B,yBAA0ByB,EAAAA,GAAuBiF,UAC/EpnB,KAAKgnB,SAAS3E,EAAAA,GAAgBgC,OAAQlC,EAAAA,GAAuB8E,OAC7DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBmC,aAAcrC,EAAAA,GAAuB8E,OACnEjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBgF,aAAclF,EAAAA,GAAuB8E,OACnEjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBiF,mBAAoBnF,EAAAA,GAAuB8E,OACzEjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBkF,QAASpF,EAAAA,GAAuB8E,OAC9DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBmF,SAAUrF,EAAAA,GAAuB8E,OAC/DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBoF,QAAStF,EAAAA,GAAuB8E,OAC9DjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBqF,mBAAoBvF,EAAAA,GAAuB8E,OACzEjnB,KAAKgnB,SAAS3E,EAAAA,GAAgBf,iBAAkBa,EAAAA,GAAuBiF,UACvEpnB,KAAKgnB,SAAS3E,EAAAA,GAAgBiE,UAAWnE,EAAAA,GAAuBwF,UAG5DX,SAAShiB,EAAuB4iB,EAAqCC,GACzE,GAAI7nB,KAAK6mB,cAAc7V,SAAShM,GAC5B,OAGJ,MAAM8iB,EAAUzF,EAAAA,GAAgBrd,GAAMG,QAAQ,IAAK,IAG7CkgB,EAAkBrlB,KAAK+nB,iBAAiB/iB,EAAM8iB,EAASD,GACvDvf,EAAa+c,EAAgBhY,MAAK2a,GAAQA,EAAKhjB,OAASod,EAAAA,GAA0B6F,WAGlFC,EACFloB,KAAKkD,UAAU,GAAGlD,KAAK4mB,kBAAkBkB,mBAA2B9nB,KAAKkD,UAAU,GAAGlD,KAAK4mB,kBAAkBkB,UAC3GzY,EAAqB,CACvBrK,KAAAA,EACA4iB,YAAAA,EACAjE,KAAMtB,EAAAA,GAAgBrd,GACtBd,MAAOoE,EAAatI,KAAKkD,UAAU,GAAGlD,KAAK4mB,kBAAkBkB,UAAkBI,EAC/E5R,UAAWtW,KAAKsW,UAChB+O,gBAAAA,EACAY,WAAW,GAGfjmB,KAAK0mB,SAAShB,KAAKrW,GAGf0Y,iBAAiB/iB,EAAuB2e,EAAckE,GAC1D,MAAMxC,EAA4C,GAElD,IAAK,MAAM8C,KAAYrZ,OAAOsZ,KAAKhG,EAAAA,IAA4B,CAC3D,MAAMngB,EAAM,GAAGjC,KAAK4mB,kBAAkBjD,IAAOwE,IACvChS,EAAkBnW,KAAKkD,UAAU,GAAGjB,iBAC1C,OAAQkmB,GACJ,KAAK/F,EAAAA,GAA0B6F,SACvBjoB,KAAK8mB,eAAepH,MAAM2I,GAA8BA,IAAarjB,KACrEqgB,EAAgBK,KAAK1lB,KAAKsoB,gBAAgBH,EAAUnoB,KAAK2mB,mBAAoBxQ,IAEjF,MAEJ,KAAKiM,EAAAA,GAA0BmG,OAC3BlD,EAAgBK,KAAK1lB,KAAKsoB,gBAAgBH,EAAUN,EAAS1R,KAMzE,OAAOkP,EAGHiD,gBAAgBtjB,EAAiC8f,EAAe3O,GACpE,MAAO,CACHnR,KAAAA,EACA8f,MAAAA,EACA3O,QAAAA,kCC5HL,IAAKqS,EAOAvG,2BAPZ,SAAYuG,GACRA,EAAA,UACAA,EAAA,YACAA,EAAA,gBACAA,EAAA,YAJJ,CAAYA,IAAAA,EAAgB,KAO5B,SAAYvG,GACRA,EAAA,oBACAA,EAAA,kBACAA,EAAA,kBACAA,EAAA,kBAJJ,CAAYA,IAAAA,EAAW,uICUhB,MA+BP,EA/B4EhiB,IACxE,MACIkE,GAAIskB,EAAM,KACV9E,EAAI,UACJtjB,EAAS,KACT2E,EAAI,UACJ0jB,EAAS,qBACTC,EAAoB,iBACpBnU,EACAoU,UAAWC,EAAmB,SAC9B5jB,GACAhF,EAEE+U,GAAUC,EAAAA,EAAAA,kBAAiB,QAAST,EAAmBmP,GACvDtO,GAAaC,EAAAA,EAAAA,wBAAuBd,EAAmBQ,GAC7D,OACIpV,EAAAA,cAAA,QAAAkP,OAAAC,OAAA,CACI4U,KAAMA,EACNxf,GAAIskB,EACJpoB,UAAW,GAAGA,YAAoBA,YAAoB2E,IACtDA,KAAK,WACL4jB,UAAWC,EAAmB,eAChBH,EACdzjB,SAAUA,EACV6jB,QAASJ,GACJC,GAAwB,GACzBtT,2DC4BhB,MAAM0T,EAAwB1D,IACJA,GAAmB,IAAI3F,MAAKmF,GACvCA,EAAe7f,OAASod,EAAAA,GAA0B6F,WAGvC,CAAE,iBAAiB,GAAS,GAGhDe,EAAiBA,CAACC,EAA0BhpB,KAC9C,MAAM,cACFipB,EAAa,YACbC,EAAW,oBACXC,EAAmB,uBACnBC,EAAsB,mBACtBC,EAAkB,gBAClBjG,EAAkB,GAAE,cACpBkG,EAAa,iBACbC,EAAgB,gBAChBC,GACAxpB,EAEJ,OAAOipB,EAAcpnB,KAAI,CAAC4hB,EAAmB1hB,KACzC,MAAM0nB,EAAY,GAAGP,EAAY/P,wBAAwBsK,EAAkBC,KAAKvK,gBAC1E/W,GAAe0P,EAAAA,EAAAA,IAAIsR,EAAiBK,EAAkBC,MACtDtjB,EAAYC,GAAAA,CAAU,yBAA0B,0BAA0BojB,EAAkBC,KAAKvK,gBAAiB,CACpH,iCAAkCsK,EAAkBuC,UACpD,6BAA8B5jB,IAElC,IAAI0J,EAEJ,GAAI2X,EAAkBkE,cAAgBzF,EAAAA,GAAuB8E,MACzDlb,EACInM,EAAAA,cAAC+pB,EAAAA,EAAqB7a,OAAAC,OAAA,GACd,CACA5K,GAAIulB,EACJ/F,KAAMD,EAAkBC,KACxBtjB,UAAW,mBACX2E,KAAM,OACN4jB,UAAWa,MAAAA,EAAAA,EAA6B,IAAVznB,EAC9BkD,MAAO+jB,EAAgBvF,EAAkBC,MACzCrN,UAAWoN,EAAkBpN,UAC7BrR,SAAUskB,EACVZ,qBAAsBI,EAAqBrF,EAAkB2B,yBAItE,GAAI3B,EAAkBkE,cAAgBzF,EAAAA,GAAuBwF,SAChE5b,EACInM,EAAAA,cAACgqB,EAAuB9a,OAAAC,OAAA,GAChB,CACA5K,GAAIulB,EACJ/F,KAAMD,EAAkBC,KACxBtjB,UAAW,mBACX2E,KAAM,WACN4jB,UAAqB,IAAV5mB,EACX0mB,UAAWO,EAAgBvF,EAAkBC,MAC7C1e,SAAUskB,EACVZ,qBAAsBI,EAAqBrF,EAAkB2B,wBAItE,CACH,MAAMwE,EAAcT,EAAoB1F,EAAkBC,MAC1D,IAAImG,EAAgBb,EAAgBvF,EAAkBC,MAElDD,EAAkB1e,OAASqd,EAAAA,GAAgB3B,2BAC3CoJ,EAAgBA,GAAiBT,GAGjC3F,EAAkB1e,OAASqd,EAAAA,GAAgBf,mBAC3CwI,EAAgBA,GAAiBR,GAGrCvd,EACInM,EAAAA,cAACmqB,EAAAA,EAAuBjb,OAAAC,OAAA,GAChB,CACA5K,GAAIulB,EACJ/F,KAAMD,EAAkBC,KACxBtjB,UAAW,mBACX6E,MAAO4kB,EACPD,YAAAA,EACA5kB,SAAUukB,EACVb,qBAAsBI,EAAqBrF,EAAkB2B,oBAM7E,MAAO,CACHpjB,IAAKyhB,EAAkBC,KACvBqG,YAAa,CAAE3pB,UAAAA,EAAW8D,GAAI,GAAGulB,eACjCxlB,MAAOtE,EAAAA,cAACqqB,EAAAA,EAAqBnb,OAAAC,OAAA,GAAK,CAAE5K,GAAIulB,EAAW9oB,KAAM8iB,EAAkBxf,SAC3EK,MAAO3E,EAAAA,cAACsqB,EAAAA,EAAqBpb,OAAAC,OAAA,GAAK,CAAEoH,QAAS9T,KAC7C0J,MAAAA,OAKCoe,EAAoBlqB,IAC7B,MAAM,mBACFmqB,EAAkB,kBAClBC,EAAiB,gBACjBpB,EAAkB,GAAE,UACpB/lB,EAAS,SACTwN,EAAQ,SACRrI,EAAQ,OACRiiB,EAAM,uBACNtX,EAAsB,WACtBiB,EAAU,sBACVsW,EAAqB,iBACrB/V,GACAvU,EACE0V,EAAUsT,EAAgBvH,SAAW0I,EAAqBC,EAEhE,MAAO,CACHG,YAAa,CAAEnqB,UAAW,oBAC1BsV,QAASA,GAAW/V,EAAAA,cAAC8B,EAAAA,QAAOoN,OAAAC,OAAA,CAAC1O,UAAU,6BAAgCsV,IACvE9T,MAAOmnB,EAAeC,EAAiBhpB,GACvCwqB,kBAAmBzX,EACnB0X,WAAYJ,GACR1qB,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CACA1O,UAAWC,GAAAA,CAAU,wCAAyC,CAAE,oCAAqC2T,IACrGrT,KAAMsC,EAAU0nB,sBAChBxpB,UAAW8B,EAAU2nB,2BACrBllB,SAAUsO,EACVvO,QAAS4kB,EACT9V,iBAAAA,KAIZsW,oBAAqB9X,EACrB+X,aAAc1iB,GACVzI,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CACA1O,UAAW,0CACXO,KAAMsC,EAAU8nB,wBAChB5pB,UAAW8B,EAAU+nB,6BACrBvlB,QAAS2C,EACTmM,iBAAAA,KAIZ9D,SAAUA,IAAY,EACtBnG,MAAO,CACH2gB,aAAc,CAAE7qB,UAAW,2BAC3BK,MAAO6pB,GAAyBA,EAAsBxK,YAClDngB,EAAAA,cAACurB,EAAAA,EAA0Brc,OAAAC,OAAA,GAAK,CAAErO,MAAO6pB,EAAsBxK,YAAc,MAEjF5J,QAASoU,GAAyBA,EAAsBloB,cACpDzC,EAAAA,cAACwrB,EAAAA,EAA4Btc,OAAAC,OAAA,GAAK,CAAEoH,QAASoU,EAAsBloB,cAAgB,mECrN5F,MASP,EATsEpC,IAClE,MAAMkW,EAAUlW,EAAMkW,QACtB,OACIvW,EAAAA,cAAA,QAAMS,UAAU,0BAA0BoE,KAAK,QAAO,YAAW,aAC5D0R,GAAWvW,EAAAA,cAAAA,EAAAA,SAAA,KAAGuW,gFCGpB,MAWP,EAXyElW,IACrE,MAAM,UAAEI,EAAS,KAAEO,EAAI,UAAEQ,EAAWuE,SAAU4K,EAAU,iBAAEiE,EAAgB,QAAE9O,EAAO,KAAEjB,GAASxE,EACxF+U,GAAUC,EAAAA,EAAAA,kBAAiB,QAAST,EAAmB5T,GACvDyU,GAAaC,EAAAA,EAAAA,wBAAuBd,EAAmBQ,GAC7D,OACIpV,EAAAA,cAAA,SAAAkP,OAAAC,OAAA,CAAQ1O,UAAWA,EAAS,aAAce,EAAWuE,SAAU4K,EAAY9L,KAAMA,EAAMiB,QAASA,GAAa2P,GACxGzU,+ECRN,MA2BP,EA3BiFX,IAC7E,MAAM,UAAEgmB,EAAS,YAAEoF,EAAW,UAAE3P,EAAS,KAAEiI,EAAI,MAAEze,GAAUjF,EAErDI,EAAY,qDAAqDsjB,EAAKvK,gBACtEoH,IAAYtb,GAASA,EAAM9E,OAAS,GACpCkrB,EAAYD,EACZ,oEAAoE3P,IACpEpb,GAAAA,CAAUD,EAAW,CAAE,iCAAkCmgB,EAAS,mCAAoCyF,IAC5G,OACIrmB,EAAAA,cAAA,QAAMS,UAAWC,GAAAA,CAAUgrB,EAAW,CAAE,sCAAuC9K,KAC1E6K,GACGzrB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMS,UAAW,GAAGA,WAAoBqb,GACxC9b,EAAAA,cAAA,QACIS,UAAWC,GAAAA,CAAUD,EAAW,CAC5B,iCAAkCmgB,EAClC,mCAAoCyF,IACtC,oBAKb/gB,qEC1Bb,MAqCA,EAjB4EjF,IACxE,MAAQkE,GAAIskB,EAAM,KAAE9E,EAAI,UAAEtjB,EAAS,MAAE6E,EAAK,qBAAEyjB,EAAoB,YAAEkB,EAAW,SAAE5kB,GAAahF,EAE5F,OACIL,EAAAA,cAAA,SAAAkP,OAAAC,OAAA,CACI5K,GAAIskB,EACJpoB,UAAW,GAAGA,cACdsjB,KAAMA,EACNze,MAAOA,EACPD,SAAUA,GACL0jB,GAAwB,IAE5BkB,GAAeA,EAAY/nB,KAAIuN,GAhCpBkc,EAACtpB,EAAuBiD,EAAgB4kB,KAC5D,IAAI0B,EAOJ,OALIA,EADe,iBAARvpB,EACMA,IAAQ6nB,EAEiB,iBAAlBA,IAA+B7nB,GAAO,IAAImX,iBAAmB0Q,GAAiB,IAAI1Q,cAItGxZ,EAAAA,cAAA,UAAQqC,IAAKA,EAAKiD,MAAOjD,EAAG,gBAAiBupB,GACxCtmB,IAsBuCqmB,CAAgBlc,EAAKpN,IAAKoN,EAAKnK,MAAOA,iECzBnF,MAAMumB,EAA0CnlB,IAAA,IAAC,MAAE5F,EAAK,QAAEyV,EAAO,UAAE9V,EAAY,kCAAkCiG,EAAA,OACpH1G,EAAAA,cAAA,OAAKS,UAAW,GAAGA,WAAoBoE,KAAK,QAAO,YAAW,aAC1D7E,EAAAA,cAAA,KAAGS,UAAW,GAAGA,kBAA2BK,GAC5Cd,EAAAA,cAAA,KAAGS,UAAW,GAAGA,oBAA6B8V,+DCX/C,MAMP,EANoFlW,IAChF,MAAM,QAAEkW,GAAYlW,EAEpB,OAAOL,EAAAA,cAAA,KAAGS,UAAU,mCAAmC8V,8DCHpD,MAMP,EANgFlW,IAC5E,MAAM,MAAES,GAAUT,EAElB,OAAOL,EAAAA,cAAA,KAAGS,UAAU,iCAAiCK,+ECOlD,MAgCP,EAhCsET,IAClE,MACIkE,GAAIskB,EAAM,KACV9E,EAAI,UACJtjB,EAAS,KACT2E,EAAI,MACJE,EAAK,UACLoR,EAAS,qBACTqS,EACAC,UAAW8C,EAAkB,iBAC7BlX,EAAgB,SAChBvP,GACAhF,EAEE+U,GAAUC,EAAAA,EAAAA,kBAAiB,QAAST,EAAmBmP,GACvDtO,GAAaC,EAAAA,EAAAA,wBAAuBd,EAAmBQ,GAC7D,OACIpV,EAAAA,cAAA,QAAAkP,OAAAC,OAAA,CACI4U,KAAMA,EACNxf,GAAIskB,EACJpoB,UAAW,GAAGA,YAAoBA,YAAoB2E,IACtDA,KAAMA,EACN4jB,UAAW8C,EACXxmB,MAAOA,EACPoR,UAAWA,GACNqS,GAAwB,GACzBtT,EAAU,CACdpQ,SAAUA,gECpCf,MAUP,EAVsEhF,IAClE,MAAQkE,GAAIskB,EAAM,KAAE7nB,GAASX,EAE7B,OACIL,EAAAA,cAAA,SAAOS,UAAU,0BAA0BuW,QAAS6R,GAC/C7nB,2JCwDb,MAAM+qB,EAAqBA,CAACvqB,EAAmBwqB,IACpCxqB,EAAU+D,QAAQ,gBAAiBymB,GAAe,IAGvDC,EAAiBA,CACnBxrB,EACAohB,EACAqK,EACA7rB,EACA0V,KAEA,MAAM,UACFzS,EAAS,WACT+Q,EAAU,sBACVsW,EAAqB,gBACrBtB,EAAe,cACfC,EAAa,cACb6C,EAAa,gBACbC,EAAe,uBACfC,EAAsB,gBACtBrK,EAAe,iBACfpN,GACAvU,GACE,WAAE8f,EAAa,KAAI,aAAE1d,EAAe,MAASkoB,GAAyB,GAE5E,MAAO,CACH2B,KAAM,CAAE7rB,UAAAA,GACR8rB,WAAY1K,EAAUrhB,OAAS,EAC/BuV,QAASA,GAAW/V,EAAAA,cAAC8B,EAAAA,QAAOoN,OAAAC,OAAA,CAAC1O,UAAW,GAAGA,aAAyBsV,IACpE9T,MAAO4f,EAAU3f,KACZ2e,IACG,MAAM2L,EAAoBnD,GAAmBA,EAAgBvH,WAAajB,EAAQiB,SAC5E2K,EAAcD,GAAqBrM,GAAc1d,EAIjDiqB,GACFrsB,EAAMssB,oCAECtsB,EAAMusB,2CACNvsB,EAAMwsB,iBAA4BxsB,EAAMysB,gDADU,GAG7D,MAAO,CACHC,KAAM,CAAEtsB,UAAW,GAAGA,UACtB4B,IAAKwe,EAAQiB,UAAY,EACzBkL,WAAWC,EAAAA,EAAAA,GAAY,CACnB3D,cAAeA,EAAczF,iBAAiBhD,EAAQC,0BAA4B,IAClFD,QAAAA,EACAmB,gBAAAA,IAEJrX,MAAO,CACHuiB,MAAO,CAAEzsB,UAAW,GAAGA,WACvBgsB,cAAeA,EACf3rB,MAAOd,EAAAA,cAACurB,EAAAA,EAA0Brc,OAAAC,OAAA,GAAK,CAAErO,MAAOqf,GAAc,MAC9D5J,QAASvW,EAAAA,cAACwrB,EAAAA,EAA4Btc,OAAAC,OAAA,GAAK,CAAEoH,QAAS9T,GAAgB,OAE1E0qB,oBAAqBjB,EAErBkB,cACIptB,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CACA1O,UAAW2D,GAAAA,CACP,2CACA,CAAE,oCAAqCiQ,GAAcmY,GACrD,CAAE,oCAAqCE,IAE3C3mB,SAAUsO,GAAcqY,EACxB1rB,KAAMsC,EAAU+pB,yBAChB7rB,UAAWuqB,EAAmBzoB,EAAUgqB,8BAA+BzM,EAAQmF,MAC/EpR,iBAAAA,EACA9O,QAASA,KACLumB,EAAuBxL,OAKvC0M,WACIvtB,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CAEA1O,UAAW2D,GAAAA,CAAW,gCAAiC,CACnD,oCAAqCsoB,IAEzC3mB,SAAUsO,GAAcqY,EACxB1rB,KAAMsC,EAAUkqB,sBAChBhsB,UAAWuqB,EAAmBzoB,EAAUmqB,2BAA4B5M,EAAQmF,MAC5EpR,iBAAAA,EACA9O,QAASA,KACLqmB,EAActL,IAElBhc,KAAM,UAIlB4C,aACIzH,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CAEA1O,UAAW2D,GAAAA,CAAW,kCAAmC,CACrD,oCAAqCsoB,IAEzC3mB,SAAUsO,GAAcqY,EACxB1rB,KAAMsC,EAAUoqB,wBAChBlsB,UAAWuqB,EAAmBzoB,EAAUqqB,6BAA8B9M,EAAQmF,MAC9EpR,iBAAAA,EACA9O,QAASA,KACLsmB,EAAgBvL,IAEpBhc,KAAM,gBAUhC+oB,EAAyBvtB,IAC3B,MAAM,UAAEwhB,EAAS,6BAAEgM,GAAiCxtB,EAC9CytB,EAAmBjM,EAAUnR,QAAQmQ,GAAqBA,EAAQ6F,YACxE,OAAOuF,EAAe,4BAA6B6B,GAAkB,EAAOztB,EAAOwtB,IAGjFE,EAAuB1tB,IACzB,MAAM,UAAEwhB,EAAS,2BAAEmM,GAA+B3tB,EAC5C4tB,EAAiBpM,EAAUnR,QAAQmQ,IAAsBA,EAAQ6F,YACvE,OAAOuF,EAAe,4BAA6BgC,GAAgB,EAAM5tB,EAAO2tB,IAGvEE,EAAe7tB,IAAoD,IAAA8tB,EAC5E,MAAM,UAAEtM,EAAS,QAAE9L,EAAO,UAAEzS,EAAS,aAAE8qB,EAAY,iBAAExZ,EAAgB,4BAAEyZ,GAAgChuB,EACjGiuB,GAAmBvY,MAAAA,OAAO,EAAPA,EAAS/U,OAC9BhB,EAAAA,cAACiV,EAAAA,GAAa,CACVxU,UAAU,4BACVuB,IAAuB,QAApBmsB,EAAEpY,EAAQhU,kBAAU,IAAAosB,EAAAA,EAAI,KAC3BntB,KAAM+U,EAAQ/U,KACdkU,UAAW,CACP1M,OAAQ6lB,GAEF,SAGNvZ,eAAgBzU,EAAMkuB,kBAO5BC,GACFnuB,EAAMssB,uCAECtsB,EAAMusB,2CACNvsB,EAAMwsB,mBACLxsB,EAAMysB,8CAElB,MAAO,CACH2B,YAAa,CAAEhuB,UAAW,mBAC1BsV,QAASuY,EACTI,uBAA6C,IAArB7M,EAAUrhB,OAClCmuB,iBAAkB3uB,EAAAA,cAAA,KAAGS,UAAU,+BAA+B6C,EAAUsrB,gCACxEC,UACI7uB,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CACA1O,UAAW,uCACXO,KAAMsC,EAAUwrB,qBAChBttB,UAAW8B,EAAUyrB,0BACrBna,iBAAAA,EACA9O,QAASsoB,EACTroB,SAAUyoB,KAItBQ,mBAAoBpB,EAAsBvtB,GAC1C4uB,iBAAkBlB,EAAoB1tB,oHC9M9C,MAAM6uB,EAAWA,CAAC9sB,EAAeye,EAAkBxgB,KAAoD,IAAA8uB,EACnG,MAAM,UAAEtN,EAAS,sBAAEuN,EAAqB,gBAAE/F,EAAe,UAAE/lB,EAAS,gBAAE0e,GAAoB3hB,EACpFgvB,EAAyBxO,EAAQa,mBACgD,QAAjFyN,EAAAnN,EAAgBlC,MAAKsC,GAAWA,EAAQC,cAAgBxB,EAAQa,0BAAiB,IAAAyN,OAAA,EAAjFA,EAAmF5J,cACnF,GACA+J,EAAWzO,EAAQiB,WAAauH,EAAgBvH,SAChDyN,EAAuB,CACzBrG,QAASoG,EACT,eAAgBA,EAChB,eAAgBzN,EAAUrhB,OAC1B,gBAAiB4B,EAAQ,EACzB,cAAc6lB,EAAAA,EAAAA,QAAO3kB,EAAUksB,+BAAgCH,IAGnE,OACIrvB,EAAAA,cAAC+pB,EAAAA,EAAqB7a,OAAAC,OAAA,GACd,CACA1O,UAAW,qBACXsjB,KAAM,uBACN3e,KAAM,QACNE,OAAQub,EAAQiB,UAAY,IAAI2N,WAChCpqB,SAAU+pB,EACVrG,qBAAsBwG,EACtB3a,iBAAkBvU,EAAMuU,qBAMlC8a,EAAyBrvB,IAC3B,MAAM,UAAEwhB,EAAS,cAAEyH,EAAa,gBAAEtH,GAAoB3hB,EAEtD,OAAOwhB,EAAU3f,KAAI,CAAC2e,EAASze,KACpB,CACHC,IAAKwe,EAAQiB,UAAY,EACzB6N,WAAY,CAAElvB,UAAW,4BACzB0L,MAAO+iB,EAAS9sB,EAAOye,EAASxgB,GAChC2sB,WAAWC,EAAAA,EAAAA,GAAY,CACnB3D,cAAeA,EAAczF,iBAAiBhD,EAAQC,0BAA4B,IAClFD,QAAAA,EACAmB,gBAAAA,SAMH4N,EAAiBvvB,IAC1B,MAAM,UAAEiD,EAAS,SAAEmF,EAAQ,OAAEiiB,EAAM,aAAE0D,EAAY,uBAAEhb,EAAsB,+BAAEyc,GAAmCxvB,EAE9G,MAAO,CACHyvB,cAAe,CAAErvB,UAAW,sBAC5BouB,UACI7uB,EAAAA,cAAA,OAAKS,UAAWovB,EAAiC,uCAAyC,IACtF7vB,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CACA1O,UAAW,+BAA8BovB,EAAiC,UAAY,OACtF7uB,KAAM6uB,EAAiCvsB,EAAUysB,wBAA2BzsB,EAAUwrB,qBACtFttB,UAAWquB,EACLvsB,EAAU0sB,6BACV1sB,EAAUyrB,0BAChBjpB,QAASsoB,EACTxZ,iBAAkBvU,EAAMuU,qBAKxCiW,kBAAmBzX,EACnB0X,WACI9qB,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CACA1O,UAAW,kCACXO,KAAMsC,EAAU0nB,sBAChBxpB,UAAW8B,EAAU2nB,2BACrBnlB,QAAS4kB,EACT9V,iBAAkBvU,EAAMuU,oBAIpCsW,oBAAqB9X,EACrB+X,aACInrB,EAAAA,cAAC+qB,EAAAA,EAAsB7b,OAAAC,OAAA,GACf,CACA1O,UAAW,oCACXO,KAAMsC,EAAU8nB,wBAChB5pB,UAAW8B,EAAU+nB,6BACrBvlB,QAAS2C,EACTmM,iBAAkBvU,EAAMuU,oBAIpC3S,MAAOytB,EAAsBrvB,gGC7G9B,MAAM4sB,EAAe5sB,IACxB,MAAM,cAAEipB,EAAa,gBAAEtH,EAAe,QAAEnB,GAAYxgB,EAEpD,MAAO,CACH4vB,cAAe,CAAExvB,UAAW,sBAC5BwB,MAAOqnB,EAAcpnB,KAAIuN,IACrB,GAAIA,EAAKsU,OAAStB,EAAAA,GAAgBA,EAAAA,GAAgBf,kBAAmB,CACjE,MAAM6H,EAAcvH,EAAgBlC,MAChCoQ,GAAoBA,EAAiB7N,YAAYoN,cAAgB5O,EAAQpR,EAAKsU,OAAS,IAAI0L,aAE/F,GAAIlG,EAAa,CACb,MAAM8F,EAAyB9F,EAAYhE,aAAe,GAC1D,MAAO,CACHljB,IAAKoN,EAAKsU,KACVoM,YACInwB,EAAAA,cAACowB,EAAAA,EAA0BlhB,OAAAC,OAAA,GACnB,CACAkX,UAAW5W,EAAK4W,UAChBoF,YAAahc,EAAKrK,OAASqd,EAAAA,GAAgB+D,MAC3C1K,UAAWrM,EAAKnL,MAChByf,KAAMtU,EAAKsU,KACXze,MAAO+pB,OAO/B,MAAO,CACHhtB,IAAKoN,EAAKsU,KACVoM,YACInwB,EAAAA,cAACowB,EAAAA,EAA0BlhB,OAAAC,OAAA,GACnB,CACAkX,UAAW5W,EAAK4W,UAChBoF,YAAahc,EAAKrK,OAASqd,EAAAA,GAAgB+D,MAC3C1K,UAAWrM,EAAKnL,MAChByf,KAAMtU,EAAKsU,KACXze,OAAQub,EAAQpR,EAAKsU,OAAS,IAAI0L,61BCF9D,IAAMY,EAAN,cAAuCrwB,EAAAA,UA4BnCiI,YAAmB5H,GACf+P,MAAM/P,GA1BU,KAAAqf,gBAA0B,MAYtC,KAAAC,eAAsC,GACtC,KAAAqC,gBAAoC,GAE3B,KAAA0H,mBAA6B,EAI7B,KAAA4G,oCAA8C,4DAC9C,KAAAC,6BAAuC,+DAEhD,KAAAC,8CAAyD,EACzD,KAAA7D,mCAA6C,EA4LpC,KAAA8D,sBAAwBzsB,MAAAA,IACrC5D,KAAKswB,sBACL,MAAM7P,EAAUzgB,KAAKkpB,cAAcrF,qBAAqBhb,EAAQ7I,KAAK2iB,oBACrEyC,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAElM,OAAQ,MACrCe,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAExM,QAAStD,EAAQsD,WAC9CqB,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE9L,WAAYhE,EAAQgE,cACjDW,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE3P,KAAMH,EAAQG,QAC3CwE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE5P,MAAOF,EAAQE,SAC5CyE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE/L,aAAc/D,EAAQ+D,gBACnDY,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE7L,YAAajE,EAAQiE,cAGlDrN,YAAW,MACP+N,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAElM,OAAQ5D,EAAQ4D,WAC9C,IAOU,KAAAiM,oBAAsB,KACTtwB,KAAKkpB,cAAczF,iBACzCzjB,KAAKuwB,iBAAiB7P,0BAA4B1gB,KAAKsf,iBAEzC7O,SAAQoX,IAAS,IAAA2I,OACYjvB,IAAvCvB,KAAKuwB,iBAAiB1I,EAAOlE,OAAwC,QAAjB6M,EAACxwB,KAAKywB,mBAAW,IAAAD,GAAhBA,EAAkBrT,sBAAsBnM,SAAS6W,EAAOlE,QAC7G3jB,KAAKkpB,cAAcrB,EAAOlE,MAAQ,OAG1C3jB,KAAK0wB,oBAOQ,KAAAA,iBAAmB,KAChC1wB,KAAKqjB,gBAAkB,IAOV,KAAAsN,gBAAmB1wB,IAChC,MAAM,KAAE0I,GAAS1I,GAEjB+R,EAAAA,EAAAA,KACI,IAAMrJ,EAAK4W,eAAe1W,SAC1B,KAAK,IAAA+nB,EACD5wB,KAAKuf,eAA2C,QAA7BqR,EAAGjoB,EAAK4W,eAAe1W,cAAM,IAAA+nB,EAAAA,EAAI,OAI5D5e,EAAAA,EAAAA,KACI,IAAMrJ,EAAKiZ,gBAAgB/Y,SAC3B,KAAK,IAAAgoB,EACD7wB,KAAK4hB,gBAA6C,QAA9BiP,EAAGloB,EAAKiZ,gBAAgB/Y,cAAM,IAAAgoB,EAAAA,EAAI,OAI9D7e,EAAAA,EAAAA,KACI,IAAMrJ,EAAK8X,QAAQ5X,SACnB,KAAK,IAAAioB,EACD9wB,KAAK2hB,kBAAuC,QAAtBmP,EAAGnoB,EAAK8X,QAAQ5X,cAAM,IAAAioB,EAAAA,EAAI,OAS3C,KAAAC,0BAA4B,KAClC5G,EAAAA,EAAAA,GAAiB,CACpBlW,WAAYjU,KAAKiU,WACjB/Q,UAAWlD,KAAKkD,UAChBimB,YAAalH,EAAAA,EAAY+O,SACzB9H,cAAelpB,KAAKkpB,cAAczF,iBAAiBzjB,KAAKuwB,iBAAiB7P,0BAA4B1gB,KAAKsf,iBAC1G+J,uBAAwBrpB,KAAKsf,gBAC7BgK,mBAAoBtpB,KAAKspB,mBACzBL,gBAAiBjpB,KAAKuwB,iBACtBlN,gBAAiBrjB,KAAKqjB,gBACtBkH,sBAAuBvqB,KAAKuqB,sBAC5BnB,oBAAqBppB,KAAKkpB,cAAczG,gCACpCziB,KAAKkD,UAAU+tB,iCACfjxB,KAAK2iB,mBAETnO,iBAAkBxU,KAAKwU,iBACvB+U,cAAevpB,KAAKkxB,+BACpB1H,iBAAkBxpB,KAAKmxB,kCACvB7G,OAAQtqB,KAAKoxB,0BACb/oB,SAAUrI,KAAKqxB,aAQN,KAAAC,mBAAqB,KAAwB,IAAAC,EAAAC,EAC1D,MAAM,OAAE1xB,GAAWE,KAAKC,MASlB0V,EAAU7V,EAAO6V,SAAW,CAC9B/U,KAAMd,EAAO6V,QAAQ/U,KACrBe,WAAY7B,EAAO6V,QAAQ/T,KAG/B,OAAOksB,EAAAA,EAAAA,GAAY,CACf7Z,WAAYjU,KAAKiU,WACjBgV,gBAAiBjpB,KAAKipB,gBACtBC,cAAelpB,KAAKkpB,cACpBzH,UAAWzhB,KAAK2hB,kBAChBC,gBAAiB5hB,KAAK4hB,gBACtB1e,UAAWlD,KAAKkD,UAChByS,QAAAA,EACA8X,6BAA8B3tB,EAAO2tB,6BACrCG,2BAA4B9tB,EAAO8tB,2BACnCO,eAAgBnuB,KAAKC,MAAM+I,QAAQC,QACnCuL,iBAAkBxU,KAAKwU,iBACvByZ,4BApBiCvY,IACjC5V,EAAO6V,QAAS/U,KAAO8U,EAAMrU,OAAO6D,OAoBpC6mB,cAAe/rB,KAAKyxB,iBACpBzF,gBAAiBhsB,KAAK0xB,iBACtB1D,aAAchuB,KAAK2xB,gBACnB1F,uBAAwBjsB,KAAK4xB,8BAC7BlF,6CAA8C1sB,KAAKowB,+CAAgD,EACnG3D,iBAA2D,QAA1C8E,EAAAvxB,KAAKC,MAAM0I,KAAKkpB,oBAAoBhpB,cAAM,IAAA0oB,OAAA,EAA1CA,EAA4CO,mBAAmB,EAChFtF,0CAAgE,QAAtBgF,EAAAxxB,KAAKC,MAAM+I,QAAQI,WAAG,IAAAooB,GAAQ,QAARA,EAAtBA,EAAwB1xB,cAAM,IAAA0xB,OAAA,EAA9BA,EAAgChF,4CAA4C,EACtHD,kCAAmCvsB,KAAKusB,qCAO/B,KAAAwF,sBAAwBnuB,UACrC,MACI+E,MACIqW,2BAA6BnW,OAAQmW,KAEzChf,KAAKC,MAEuC,IAAD+xB,EAA3ChT,MAAAA,GAAAA,EAA2BiT,iBACX,QAAhBD,EAAAhyB,KAAKywB,mBAAW,IAAAuB,GAAhBA,EAAkB5U,kBAAkB,0BAA2B,oCAAqCpd,KAAKqwB,yBAShG,KAAA6B,mBAAqB,CAACvO,EAAcze,MACjDkgB,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE,CAAC5M,GAAOze,IACrClF,KAAKkpB,cAAc9F,sBAAsBpjB,KAAKuwB,iBAAkBvwB,KAAKqjB,gBAAiBrjB,KAAKsf,gBAAiBqE,IAO/F,KAAAuN,+BAAkCxb,IAC/C,GAA0B,aAAtBA,EAAMrU,OAAO2D,KACbhF,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMjO,EAAMrU,OAAOynB,aACrD,CACH,MAAM5jB,GAASwQ,EAAMrU,OAAO6D,OAAS,IAAIC,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IAC3EpF,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMze,KAQlC,KAAAisB,kCAAqCzb,IAC9CA,EAAMrU,OAAOsiB,OAAStB,EAAAA,GAAgBA,EAAAA,GAAgBf,kBACtDthB,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,MAAOjO,EAAMrU,OAAO6D,OAEzDlF,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMjO,EAAMrU,OAAO6D,OAExDwQ,EAAMrU,OAAOsiB,OAAStB,EAAAA,GAAgBA,EAAAA,GAAgB3B,2BACtD1gB,KAAKmyB,iBAAiBzc,EAAMrU,OAAO6D,QAS1B,KAAAktB,iBAAmB,CAAChS,EAAqCiS,KACtEryB,KAAKiU,YAAa,EAClBmM,EAAStT,MACJjE,IACOA,EAAO4X,SACPzgB,KAAK0Q,UAAW,EAChB2hB,EAAUxpB,KAEV7I,KAAK0Q,UAAW,EAChB1Q,KAAKuqB,sBAAwB1hB,GAEjC7I,KAAKiU,YAAa,KAEtB,KACIjU,KAAK0Q,UAAW,EAChB1Q,KAAKiU,YAAa,MAQb,KAAAmd,0BAA4B,KACzC,IAAKpxB,KAAKkpB,cAAc9F,sBAAsBpjB,KAAKuwB,iBAAkBvwB,KAAKqjB,gBAAiBrjB,KAAKsf,iBAC5F,OAEJ,IAAIc,EAEAA,EADApgB,KAAKsyB,cAAcpS,sBAEflgB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,OACrCxyB,KAAKsyB,cAAcrR,sBAAsBjhB,KAAKuwB,kBAC9CvwB,KAAKsyB,cAAczR,mBAAmB7gB,KAAKuwB,kBAE1C1kB,QAAQC,QAAQ,CAAE2U,QAASzgB,KAAKuwB,mBAG/CvwB,KAAKoyB,iBAAiBhS,EAAUpgB,KAAKyyB,wBAOxB,KAAAN,iBAAoB7S,IAA2B,IAAAoT,EAC5D1yB,KAAKsf,gBAAkBA,EACvB,MAAMqT,EAAyB3yB,KAAKkpB,cAAchG,0BAA0B5D,IAC5E8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE7P,yBAA0BpB,KACvD8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAEqC,uBAAwBD,IACrC,QAAhBD,EAAA1yB,KAAKywB,mBAAW,IAAAiC,GAAhBA,EAAkBlU,gCAAgCmU,GAClD3yB,KAAKswB,uBAOQ,KAAAuC,6BAA+B,KAC5C,MAAM,OAAE/yB,GAAWE,KAAKC,MAClB6yB,EAA8C,GAQpD,OANKhzB,EAAOizB,iBACRD,EAAyBpN,KAAKrD,EAAAA,GAAgBf,kBAGlDwR,EAAyBpN,KAAKrD,EAAAA,GAAgBiE,WAEvCwM,GAMM,KAAAE,mBAAqB,MAE7BhzB,KAAKsf,iBACJtf,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,QAKnGxyB,KAAKsyB,cAAcnS,kBAAkBngB,KAAKsf,iBAAiBxS,MAAMjE,IAC3CA,EAAOwE,MAAKtF,GAASA,EAAMoc,UAAYnkB,KAAKuwB,iBAAiB5P,UAI3EyE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE5P,MAAO,KAExC3gB,KAAK2iB,kBAAoB9Z,MAehB,KAAAqqB,wBAA2BC,IACxCnzB,KAAKuyB,iBAAmBY,EACxBnzB,KAAKswB,uBAOQ,KAAAsB,8BAAiCnR,IAC9CzgB,KAAKipB,gBAAkBxI,EACvB,MAAML,EAAWpgB,KAAKsyB,cAAcnR,6BAA6BV,GACjEzgB,KAAKoyB,iBAAiBhS,EAAUpgB,KAAKozB,iCAOxB,KAAA3B,iBAAoBhR,IACjCzgB,KAAKuwB,iBAAgBpoB,EAAA,GAAQsY,GAC7BzgB,KAAKsf,gBAAkBtf,KAAKuwB,iBAAiB7P,0BAA4B,MACzE1gB,KAAKkzB,wBAAwB1K,EAAAA,EAAiBgK,SAOjC,KAAAd,iBAAoBjR,IACjCA,EAAQ4S,YAAa,EACrBrzB,KAAKszB,kBAAoB7S,EACzB,MAAML,EAAWpgB,KAAKsyB,cAAcrR,sBAAsBR,GAC1DzgB,KAAKoyB,iBAAiBhS,EAAUpgB,KAAKyyB,wBAQxB,KAAAc,8BAAiC9S,IAC9C,MAAM+S,GAAeC,EAAAA,EAAAA,QAAmBzzB,KAAKkD,UAAUwwB,0BAA4B,GAAGjT,EAAQmF,QAC9F,OACIhmB,EAAAA,cAAA,OAAKS,UAAU,+BAA8B,YAAW,UACnDmzB,IAQI,KAAA7B,gBAAkB,KAC/B3xB,KAAKuwB,iBAAmB,GACxBvwB,KAAK2zB,8BACLvO,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE7P,yBAA0B1gB,KAAKsf,mBAC5D8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAEjP,iBAAkBthB,KAAKspB,qBACpDtpB,KAAK2zB,6BACL3zB,KAAKkzB,wBAAwB1K,EAAAA,EAAiByK,MAOjC,KAAAR,sBAAyBrS,IAClCA,EAASuB,oBACT3hB,KAAK2hB,kBAAoBvB,EAASuB,mBAEtC3hB,KAAKqxB,cAOQ,KAAA+B,+BAAkChT,IAC3CA,EAASuB,oBACT3hB,KAAK2hB,kBAAoBvB,EAASuB,oBAOzB,KAAA0P,WAAa,KAC1BrxB,KAAKipB,qBAAkB1nB,EACvBvB,KAAKkzB,wBAAwB1K,EAAAA,EAAiB0D,OA7jB9C,MAAM,QAAEljB,EAAO,KAAEL,EAAI,UAAEzF,EAAS,UAAEoH,GAActK,KAAKC,MAErDD,KAAKkD,UAAYA,EACjBlD,KAAKuyB,iBAAmB/J,EAAAA,EAAiB0D,KACzClsB,KAAKuf,eAAiB5W,EAAK4W,eAAe1W,QAAU,GACpD7I,KAAK4hB,gBAAkBjZ,EAAKiZ,gBAAgB/Y,QAAU,GACtD7I,KAAK2hB,kBAAoBhZ,EAAK8X,QAAQ5X,QAAU,GAChD7I,KAAKuwB,iBAAmB,GACxBvwB,KAAKqjB,gBAAkB,GACvBrjB,KAAKsyB,cAAgB,IAAIlT,EAAAA,EAAcpW,EAAS9F,EAAWoH,GAC3DtK,KAAKkpB,cAAgB,IAAI5G,EAAAA,EACrBtiB,KAAKuf,eACL,IAAIgH,EAAAA,EAAepe,EAAC,GAAKjF,GAAalD,KAAK6yB,gCAC3C7yB,KAAK4hB,iBAET5hB,KAAKwU,kBAAmBsB,EAAAA,EAAAA,oBACpB9V,KAAKC,MAAM+I,QAAQC,QAAQ8M,kBAC3B/V,KAAKC,MAAM+V,aACXhW,KAAKC,MAAMqK,WAIZ,0BACH,MACItB,SAAS,UACLsB,EACAuC,eACI6H,gBAAgB,QAAEkf,KAG1B9zB,QAAQ,sBAAE+zB,EAAqB,mBAAE9W,IACjC/c,KAAKC,MAuBT,GApBAD,KAAK2wB,gBAAgB3wB,KAAKC,YAEoBsB,IAA1CvB,KAAKC,MAAM0I,KAAK4W,eAAe1W,QAC/B7I,KAAK2zB,8BAGT3hB,EAAAA,EAAAA,KACI,IAAMhS,KAAKsf,kBACX,KACItf,KAAKgzB,yBAIbhhB,EAAAA,EAAAA,KACI,IAAMhS,KAAKuyB,mBACX,KACIvyB,KAAKgzB,wBAITa,EAAuB,CACvB,GAAID,IAAYA,EAAQ5W,eAEpB,YADA1S,EAAUC,MAAM,8BAIpB,GAAIqpB,IAAYA,EAAQE,gBAEpB,YADAxpB,EAAUC,MAAM,4BAIpB,MAAMnI,EAAO+F,EAAA,GAA6B4U,GAC1C/c,KAAKywB,YAAc,IAAI3T,EAAAA,EACnBxS,EACAlI,EACAwxB,MAAAA,OAAO,EAAPA,EAAS5W,eACT4W,MAAAA,OAAO,EAAPA,EAASG,4BACTH,MAAAA,OAAO,EAAPA,EAASI,oBAGbhiB,EAAAA,EAAAA,KACI,SAAAiiB,EAAA,YACqE1yB,KAAjB,QAAhD0yB,EAAAj0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAorB,OAAA,EAAhDA,EAAkDhV,cACjDjf,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,WAClG5uB,UAAW,IAAAswB,QACe,QAAtBA,EAAMl0B,KAAKywB,mBAAW,IAAAyD,OAAA,EAAhBA,EAAkBnV,kBAAkB/e,KAAKC,MAAM0I,KAAKqW,gCAIlEhN,EAAAA,EAAAA,KACI,KAAK,IAAAmiB,EAC+C,QAAhDA,EAAAn0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAsrB,GAAhDA,EAAkDlC,kBAEtDruB,UACQ5D,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,cACvFxyB,KAAK+xB,4BAUxB,2BACuG,IAADqC,EAIlGC,EAJHr0B,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,OACzC,QAApD4B,EAAIp0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAurB,GAAhDA,EAAkDnC,sBAC5CjyB,KAAK+xB,wBAGC,QAAhBsC,EAAAr0B,KAAKywB,mBAAW,IAAA4D,GAAhBA,EAAkB3V,qBAUnBzL,sBACHC,EACAC,GAEA,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SAAM,IAAAy0B,EAAAC,EAAAC,EACT,MAAM,WAAEjmB,EAAU,OAAEzO,EAAM,UAAEoD,EAAS,KAAEyF,GAAS3I,KAAKC,MAC/C4xB,EAAsBlpB,EAAKkpB,oBAAoBhpB,OAGrD7I,KAAKowB,8CACgB,QAAjBkE,EAAA3rB,EAAK8rB,oBAAY,IAAAH,GAAQ,QAARA,EAAjBA,EAAmBzrB,cAAM,IAAAyrB,GAA4E,QAA5EA,EAAzBA,EAA2B5U,MAAKgV,GAAWA,EAAQ9O,OAAS5lB,KAAKkwB,6CAAoC,IAAAoE,OAAA,EAArGA,EAAuGK,aAAa,EAExH30B,KAAKusB,mCACgB,QAAjBgI,EAAA5rB,EAAK8rB,oBAAY,IAAAF,GAAQ,QAARA,EAAjBA,EAAmB1rB,cAAM,IAAA0rB,GAAqE,QAArEA,EAAzBA,EAA2B7U,MAAKgV,GAAWA,EAAQ9O,OAAS5lB,KAAKmwB,sCAA6B,IAAAoE,OAAA,EAA9FA,EAAgGI,aAAa,EA0CjH,OAAOpmB,EAxCQpG,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACb20B,kBAAuC,QAAtBJ,EAAAx0B,KAAKC,MAAM+I,QAAQI,WAAG,IAAAorB,GAAQ,QAARA,EAAtBA,EAAwB10B,cAAM,IAAA00B,OAAA,EAA9BA,EAAgChI,4CAC5CxsB,KAAKusB,qCACLsF,MAAAA,OAAmB,EAAnBA,EAAqBC,mBAAmB,IACrClyB,EAAAA,cAACiV,EAAAA,GAAa,CACVxU,UAAU,sCAGVO,KACIZ,KAAKowB,6CACCltB,EAAU2xB,iDACV3xB,EAAU4xB,sCAIhCvC,iBAAkBvyB,KAAKuyB,iBACvBtJ,gBAAiBjpB,KAAKipB,gBACtBsH,iBAAkBvwB,KAAKuwB,iBACvBjR,gBAAiBtf,KAAKsf,gBACtBqD,kBAAmB3iB,KAAK2iB,kBACxBhB,kBAAmB3hB,KAAK2hB,kBACxB0B,gBAAiBrjB,KAAKqjB,gBACtBkH,sBAAuBvqB,KAAKuqB,sBAC5BtW,WAAYjU,KAAKiU,WACjBvD,SAAU1Q,KAAK0Q,SACfrQ,UAAWP,EAAOO,UAClB4X,UAAW,CACP8c,iBAAkB/0B,KAAKuyB,mBAAqB/J,EAAAA,EAAiB0D,KAC7D8I,yBAA0Bh1B,KAAKuyB,mBAAqB/J,EAAAA,EAAiB0D,MAEzE+I,yBAA0B,CACtB/mB,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAW,gCAAiClE,EAAOO,YAElE60B,gBAAiBl1B,KAAKsxB,qBACtB6D,uBAAwBn1B,KAAK+wB,4BAC7BqE,yBAA0Bp1B,KAAKszB,kBAAoBtzB,KAAKuzB,8BAA8BvzB,KAAKszB,mBAAqB,QA6ShHK,6BACJ,MAAM,QAAE1qB,GAAYjJ,KAAKC,MAAM+I,QACzBmW,EAASlW,GAAWA,EAAQ2qB,SAAW3qB,EAAQ2qB,QAAQG,4BAE7D/zB,KAAKsf,gBAAkBtf,KAAKsyB,cAAcjT,0BAA0Brf,KAAKsf,gBAAiBtf,KAAKuf,eAAgBJ,MA3fvG3Q,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,wCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,yCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,yCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,wCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,6CACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,kCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,gCACCvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,yCA2MXvN,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,6CAsBP7mB,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,2CAiBP7mB,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,uCA1PLpF,GAAwBzhB,EAAAA,EAAAA,IAAA,CAD7BE,EAAAA,IACKuhB,GA+lBN,yGC1oBA,MAAMpD,EAA2CvmB,IAA6B,IAA5B,cAAEupB,EAAa,MAAEhuB,GAAOyE,EACtE,OACI1G,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK8gB,GACLhuB,EAAMC,KAAKuN,GACDzP,EAAAA,cAAAA,EAAAA,SAAA,KAAGyP,EAAK0gB,iBAezBjC,EAAsC7e,IAAyC,IAAxC,KAAEid,EAAI,WAAEC,EAAU,QAAExW,EAAO,MAAE9T,GAAOoN,EAC7E,OAAKkd,EAKDvsB,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKmd,GACLvW,EACA9T,EAAMC,KAAKuN,IACR,MAAM,KAAEsd,EAAI,IAAE1qB,EAAG,MAAEsI,EAAK,UAAEqiB,EAAS,oBAAEG,EAAmB,cAAEC,EAAa,WAAEG,EAAU,aAAE9lB,GAAiBgI,GAChG,MAAEyd,EAAK,YAAET,EAAW,MAAE3rB,EAAK,QAAEyV,GAAY5L,EAC/C,OACI3K,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK4d,EAAI,CAAE1qB,IAAKA,IACjBrC,EAAAA,cAACitB,EAAW/d,OAAAC,OAAA,GAAK6d,IAChBP,GACGzsB,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK+d,GACLpsB,EACAyV,GAGR4W,GAAuBC,EACvBG,EACA9lB,OApBV,MAwCTiuB,EAA4CnmB,IAQ7C,IAR8C,YAC/Ckf,EAAW,QACX1Y,EAAO,uBACP2Y,EAAsB,iBACtBC,EAAgB,UAChBE,EAAS,mBACTG,EAAkB,iBAClBC,GACH1f,EACG,OACIvP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKsf,GACL1Y,EACA2Y,GAA0BC,EAC1BE,EACD7uB,EAAAA,cAACkuB,EAAWhf,OAAAC,OAAA,GAAK6f,IACjBhvB,EAAAA,cAACkuB,EAAWhf,OAAAC,OAAA,GAAK8f,MAmBvB1E,EAAqD/a,IAUtD,IAVuD,YACxDob,EAAW,QACX7U,EAAO,MACP9T,EAAK,SACL6O,EAAQ,MACRnG,EAAK,iBACLkgB,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACH3b,EACG,OACIxP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKyb,GACL7U,EACA9T,EAAMC,KAAKuN,IACR,MAAM,YAAE2a,EAAW,IAAE/nB,EAAG,MAAEiC,EAAK,MAAEK,EAAK,MAAEwH,GAAUsD,EAClD,OACIzP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKib,EAAW,CAAE/nB,IAAKA,IACvBiC,EACAK,EACAwH,MAIZ2E,GACG9Q,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKxE,EAAM2gB,cACX3gB,EAAM7J,MACN6J,EAAM4L,SAGdsU,GAAoBC,EACpBI,GAAsBC,IA8BnC,EApBmF9qB,IAC/E,MAAM,yBACFg1B,EAAwB,eACxBL,EAAc,UACd3c,EAAS,gBACTid,EAAe,uBACfC,EAAsB,yBACtBC,GACAn1B,EAEJ,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKkmB,GACPL,EACA3c,EAAU8c,kBAAoBn1B,EAAAA,cAAC01B,EAAYxmB,OAAAC,OAAA,GAAKmmB,IAChDjd,EAAU+c,0BAA4Bp1B,EAAAA,cAACuqB,EAAgBrb,OAAAC,OAAA,GAAKomB,IAC5DC,+yBC3Gb,MAAMG,UAA+B31B,EAAAA,UA+BjCiI,YAAmB5H,GACf+P,MAAM/P,GA7BU,KAAAqf,gBAA0B,MActC,KAAAC,eAAsC,GAEtC,KAAAqC,gBAAoC,GAI3B,KAAA0H,mBAA6B,EAE7B,KAAAG,iBAA4B,EAE5B,KAAA+L,aAAkC,CAACnT,EAAAA,GAAgBuD,KAAMvD,EAAAA,GAAgBf,iBAAkBe,EAAAA,GAAgBiE,WAuErH,KAAAmP,oBAAsB,KACHz1B,KAAKkpB,cAAczF,iBAAiBzjB,KAAKsf,iBAEjDxd,KAAI4hB,IACd,OAAQA,EAAkBkE,aACtB,KAAKzF,EAAAA,GAAuB8E,MACxBjnB,KAAKuwB,iBAAiB7M,EAAkBC,MAAQ,GAChD,MACJ,KAAKxB,EAAAA,GAAuBwF,SACxB3nB,KAAKuwB,iBAAiB7M,EAAkBC,OAAQ,EAChD,MACJ,QACI,OAAQD,EAAkB1e,MACtB,KAAKqd,EAAAA,GAAgB3B,yBACjB1gB,KAAKuwB,iBAAiB7M,EAAkBC,MAAQ3jB,KAAKsf,gBACrD,MACJ,KAAK+C,EAAAA,GAAgBf,iBACjBthB,KAAKuwB,iBAAiB7M,EAAkBC,MAAQ3jB,KAAKspB,mBACrD,MACJ,KAAKjH,EAAAA,GAAgB1B,MACjB3gB,KAAKuwB,iBAAiB7M,EAAkBC,MAAQ,GAChD,MACJ,QACI3jB,KAAKuwB,iBAAiB7M,EAAkBC,WAAQpiB,QAUvD,KAAAovB,gBAAmB1wB,IAChC,MAAM,KAAE0I,GAAS1I,GAEjB+R,EAAAA,EAAAA,KACI,IAAMrJ,EAAK4W,eAAe1W,SAC1B,KAAK,IAAA+nB,EACD5wB,KAAKuf,eAA2C,QAA7BqR,EAAGjoB,EAAK4W,eAAe1W,cAAM,IAAA+nB,EAAAA,EAAI,OAI5D5e,EAAAA,EAAAA,KACI,IAAMrJ,EAAKiZ,gBAAgB/Y,SAC3B,KAAK,IAAAgoB,EACD7wB,KAAK4hB,gBAA6C,QAA9BiP,EAAGloB,EAAKiZ,gBAAgB/Y,cAAM,IAAAgoB,EAAAA,EAAI,OAI9D7e,EAAAA,EAAAA,KACI,IAAMrJ,EAAK+sB,cAAc7sB,SACzB,KAAK,IAAA8sB,EACD31B,KAAK2iB,kBAA6C,QAA5BgT,EAAGhtB,EAAK+sB,cAAc7sB,cAAM,IAAA8sB,EAAAA,EAAI,OAYjD,KAAA5E,0BAA4B,KAClC5G,EAAAA,EAAAA,GAAiB,CACpBlW,WAAYjU,KAAKiU,WACjB/Q,UAAWlD,KAAKkD,UAChBimB,YAAalH,EAAAA,EAAY2T,QACzB1M,cAAelpB,KAAKkpB,cAAczF,iBAAiBzjB,KAAKsf,iBACxD+J,uBAAwBrpB,KAAKsf,gBAC7BgK,mBAAoBtpB,KAAKspB,mBACzBL,gBAAiBjpB,KAAKuwB,iBACtB9G,gBAAiBzpB,KAAKypB,gBACtBpG,gBAAiBrjB,KAAKqjB,gBACtB3S,SAAU1Q,KAAKC,MAAMyQ,SACrB6Z,sBAAuBvqB,KAAKuqB,sBAC5B/V,iBAAkBxU,KAAKwU,iBACvB4U,oBAAqBppB,KAAKkpB,cAAczG,gCACpCziB,KAAKkD,UAAU+tB,iCACfjxB,KAAK2iB,mBAET4G,cAAevpB,KAAKkxB,+BACpB1H,iBAAkBxpB,KAAKmxB,oCAQd,KAAAD,+BAAkCxb,IAC/C1V,KAAK61B,eAAengB,EAAMrU,OAAOsiB,KAAMjO,EAAMrU,OAAO6D,QAOvC,KAAAisB,kCAAoCvtB,MAAAA,IAC7C8R,EAAMrU,OAAOsiB,OAAStB,EAAAA,GAAgBA,EAAAA,GAAgB3B,gCAChD1gB,KAAK81B,uBAAuBpgB,EAAMrU,OAAO6D,OAE/ClF,KAAK61B,eAAengB,EAAMrU,OAAOsiB,KAAMjO,EAAMrU,OAAO6D,QAS3C,KAAA2wB,eAAiB,CAAClS,EAAcze,KAC7C,MAAM,WAAE6wB,EAAU,WAAEztB,EAAU,UAAEpF,GAAclD,KAAKC,MACnD,IAAI+1B,EAAa9wB,EACI,iBAAVA,IACP8wB,GAAc9wB,GAAS,IAAIC,QAAQ,IAAIC,OAAO,OAAQ,MAAO,MAEjEggB,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE,CAAC5M,GAAOqS,IAEjCh2B,KAAKi2B,WACD3tB,EACAytB,GAAW,OAAMx0B,IAGjBvB,KAAKkpB,cAAgB,IAAI5G,EAAAA,EACrBtiB,KAAKuf,eACL,IAAIgH,EAAAA,EAAepe,EAAC,GAAKjF,GAAalD,KAAKw1B,aAAc,IACzDx1B,KAAK4hB,iBAETmU,GAAW,EAAO/1B,KAAKuwB,oBAI3BvwB,KAAKkpB,cAAgB,IAAI5G,EAAAA,EACrBtiB,KAAKuf,eACL,IAAIgH,EAAAA,EAAepe,EAAC,GAAKjF,GAAalD,KAAKw1B,aAAcx1B,KAAKC,MAAMqI,gBAAa/G,EAAY,IAC7FvB,KAAK4hB,iBAIL5hB,KAAKkpB,cAAc9F,sBAAsBpjB,KAAKuwB,iBAAkBvwB,KAAKqjB,gBAAiBrjB,KAAKsf,iBAC3FyW,GAAW,EAAO/1B,KAAKuwB,kBAEvBwF,GAAW,OAAMx0B,KAUZ,KAAA00B,SAAW,KACxB,MAAM/M,EAAgBlpB,KAAKkpB,cAAczF,iBAAiBzjB,KAAKsf,iBAC/D,IAAK,MAAMoE,KAAqBwF,EAC5B,GAAIxF,EAAkB1e,OAASqd,EAAAA,GAAgB3B,0BAA4B1gB,KAAKk2B,iBAAiBxS,GAAoB,CACjH,MAAMyS,EAAmBn2B,KAAKuwB,iBAAiB7M,EAAkBC,MAGjE,GAAIwS,GAAqBA,GAAyC,KAArBA,EACzC,OAAO,EAKnB,OAAO,GAQM,KAAAD,iBAAoBxS,IACjC,GACI0S,EAAAA,iBAAiBC,kBAAkB3S,KAClCA,EAAkB2B,iBAC0B,IAA7C3B,EAAkB2B,gBAAgBjlB,OAElC,OAAO,EAGX,IAAK,MAAMykB,KAAkBnB,EAAkB2B,gBAC3C,GAAIR,EAAe7f,OAASod,EAAAA,GAA0B6F,SAClD,OAAO,EAIf,OAAO,GAiBM,KAAA6N,uBAAyBlyB,MAAAA,IACtC5D,KAAKsf,gBAAkBpa,QAEjBlF,KAAKsyB,cAAcnS,kBAAkBngB,KAAKsf,iBAAiBxS,MAAMjE,IACjDA,EAAOwE,MAAKtF,GAASA,EAAMoc,UAAYnkB,KAAKuwB,iBAAiB5P,SAI3E3gB,KAAK61B,eAAe,QAAS,IAGjC71B,KAAK2iB,kBAAoB9Z,KAG7B7I,KAAK61B,eAAe,2BAA4B71B,KAAKsf,kBA9RrD,MAAM,QAAEtW,EAAO,KAAEL,EAAI,UAAEzF,EAAS,UAAEoH,GAActK,KAAKC,MACrDD,KAAKuwB,iBAAmB,GACxBvwB,KAAKkD,UAAYA,EACjBlD,KAAKuf,eAAiB5W,EAAK4W,eAAe1W,QAAU,GACpD7I,KAAK4hB,gBAAkBjZ,EAAKiZ,gBAAgB/Y,QAAU,GACtD7I,KAAK2iB,kBAAoBha,EAAK+sB,cAAc7sB,QAAU,GACtD7I,KAAKkpB,cAAgB,IAAI5G,EAAAA,EACrBtiB,KAAKuf,eACL,IAAIgH,EAAAA,EAAepe,EAAC,GAAKjF,GAAalD,KAAKw1B,aAAcv1B,EAAMqI,gBAAa/G,EAAY,IACxFvB,KAAK4hB,iBAET5hB,KAAKsyB,cAAgB,IAAIlT,EAAAA,EAAcpW,EAAS9F,EAAWoH,GAC3DtK,KAAKqjB,gBAAkB,GACvBrjB,KAAKwU,kBAAmBsB,EAAAA,EAAAA,oBACpB9V,KAAKC,MAAM+I,QAAQC,QAAQ8M,kBAC3B/V,KAAKC,MAAM+V,aACXhW,KAAKC,MAAMqK,WAIZoD,oBAEH1N,KAAK2wB,gBAAgB3wB,KAAKC,OAE1BD,KAAK2zB,6BAGF1gB,sBAAsBC,EAAiDC,GAC1E,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SACH,MAAM,WAAE0O,EAAU,OAAEzO,EAAM,SAAE4Q,EAAQ,aAAE4lB,GAAiBt2B,KAAKC,MAGxDq2B,GACAt2B,KAAKy1B,sBAkBT,OAAOlnB,EAfQpG,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACbqf,gBAAiBtf,KAAKsf,gBACtBqD,kBAAmB3iB,KAAK2iB,kBACxBU,gBAAiBrjB,KAAKqjB,gBACtBkH,sBAAuBvqB,KAAKuqB,sBAC5B7Z,SAAAA,EACArQ,UAAWP,EAAOO,UAClBk1B,uBAAwB,CACpBrnB,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAW,8BAA+BlE,EAAOO,YAEhE80B,uBAAwBn1B,KAAK+wB,+BA4M7B4C,6BAA0B,IAAA4C,EAC9B,MAAM,QAAEttB,GAAYjJ,KAAKC,MAAM+I,QACzBmW,EAAwB,QAAlBoX,EAAGttB,EAAQ2qB,eAAO,IAAA2C,OAAA,EAAfA,EAAiBxC,4BAEhC/zB,KAAK81B,uBAAuB91B,KAAKsyB,cAAcjT,0BAA0Brf,KAAKsf,gBAAiBtf,KAAKuf,eAAgBJ,KAGpHiG,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAEjP,iBAAkBthB,KAAKspB,uBA1S5C9a,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,wCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,yCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,sCA6Tf,kGC3WA,MAAMoO,EAAqD7jB,IAUtD,IAVuD,YACxDkkB,EAAW,QACX7U,EAAO,MACP9T,EAAK,SACL6O,EAAQ,MACRnG,EAAK,iBACLkgB,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACHzkB,EACG,OACI1G,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKyb,GACL7U,EACA9T,EAAMC,KAAKuN,IACR,MAAM,YAAE2a,EAAW,IAAE/nB,EAAG,MAAEiC,EAAK,MAAEK,EAAK,MAAEwH,GAAUsD,EAClD,OACIzP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKib,EAAW,CAAE/nB,IAAKA,IACvBiC,EACAwM,GAAYnM,EACZwH,MAIZ2E,GACG9Q,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKxE,EAAM2gB,cACX3gB,EAAM7J,MACN6J,EAAM4L,SAGdsU,GAAoBC,EACpBI,GAAsBC,IAoBnC,EAV+E9qB,IAC3E,MAAM,uBAAEs1B,EAAsB,uBAAEJ,GAA2Bl1B,EAE3D,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKwmB,GACR31B,EAAAA,cAACuqB,EAAgBrb,OAAAC,OAAA,GAAKomB,mSCpD3B,MAAMqB,EAA4DlwB,IAOpE,IAPqE,UACtEoiB,EAAS,MACTxjB,EAAK,UACL9D,EAAS,KACTR,EAAI,iBACJ4T,EAAgB,SAChBvP,GACHqB,EACG,MAAM6oB,EAAuB,CACzBrG,QAASJ,EACT,eAAgBA,GAGpB,OACI9oB,EAAAA,cAAA,SAAOS,UAAU,uDACbT,EAAAA,cAAC+pB,EAAAA,EAAqB7a,OAAAC,OAAA,GACd,CACA/J,KAAM,WACN3E,UAAW,8BACX6E,MAAAA,EACAD,SAAAA,EACA0jB,qBAAsBwG,EACtB3a,iBAAAA,KAGR5U,EAAAA,cAAA,QAAMS,UAAU,+DAA+DO,KCjC9E61B,EAA0DnwB,IAAA,IAAC,KAAE1F,GAAM0F,EAAA,OAC5E1G,EAAAA,cAAA,KAAGS,UAAU,wCAAwCO,urBCkEzD,IAAM81B,EAAN,cAAqC92B,EAAAA,UAoCjCiI,YAAmB5H,GACf+P,MAAM/P,GA5BU,KAAAqf,gBAA0B,MAYtC,KAAAC,eAAsC,GAEtC,KAAAqC,gBAAoC,GAI3B,KAAA0H,mBAA6B,EAO7B,KAAAjN,iBAAiDzc,EAAAA,YAyPjD,KAAAywB,sBAAwBzsB,MAAAA,IACrC5D,KAAKswB,sBACL,MAAM7P,EAAUzgB,KAAKkpB,cAAcrF,qBAAqBhb,EAAQ7I,KAAK2iB,oBACrEyC,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAElM,OAAQ,MACrCe,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAExM,QAAStD,EAAQsD,WAC9CqB,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE9L,WAAYhE,EAAQgE,cACjDW,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE3P,KAAMH,EAAQG,QAC3CwE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE5P,MAAOF,EAAQE,SAC5CyE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE/L,aAAc/D,EAAQ+D,gBACnDY,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE7L,YAAajE,EAAQiE,cAGlDrN,YAAW,MACP+N,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAElM,OAAQ5D,EAAQ4D,WAC9C,IAOU,KAAAiM,oBAAsB,KACTtwB,KAAKkpB,cAAczF,iBACzCzjB,KAAKuwB,iBAAiB7P,0BAA4B1gB,KAAKsf,iBAEzC7O,SAAQoX,IAAS,IAAA2I,OACYjvB,IAAvCvB,KAAKuwB,iBAAiB1I,EAAOlE,OAAwC,QAAjB6M,EAACxwB,KAAKywB,mBAAW,IAAAD,GAAhBA,EAAkBrT,sBAAsBnM,SAAS6W,EAAOlE,QAC7G3jB,KAAKkpB,cAAcrB,EAAOlE,MAAQ,OAG1C3jB,KAAK0wB,oBAOQ,KAAAA,iBAAmB,KAChC1wB,KAAKqjB,gBAAkB,IAQV,KAAA6O,mBAAqB,CAACvO,EAAcze,MACjDkgB,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE,CAAC5M,GAAOze,IACrClF,KAAKkpB,cAAc9F,sBAAsBpjB,KAAKuwB,iBAAkBvwB,KAAKqjB,gBAAiBrjB,KAAKsf,gBAAiBqE,IAO/F,KAAAgN,gBAAmB1wB,IAChC,MAAM,KAAE0I,GAAS1I,GAEjB+R,EAAAA,EAAAA,KACI,IAAMrJ,EAAK4W,eAAe1W,SAC1B,KAAK,IAAA+nB,EACD5wB,KAAKuf,eAA2C,QAA7BqR,EAAGjoB,EAAK4W,eAAe1W,cAAM,IAAA+nB,EAAAA,EAAI,OAI5D5e,EAAAA,EAAAA,KACI,IAAMrJ,EAAKiZ,gBAAgB/Y,SAC3B,KAAK,IAAAgoB,EACD7wB,KAAK4hB,gBAA6C,QAA9BiP,EAAGloB,EAAKiZ,gBAAgB/Y,cAAM,IAAAgoB,EAAAA,EAAI,OAI9D7e,EAAAA,EAAAA,KACI,IAAMrJ,EAAK+sB,cAAc7sB,SACzB,KAAK,IAAA8sB,EACD31B,KAAK2iB,kBAA6C,QAA5BgT,EAAGhtB,EAAK+sB,cAAc7sB,cAAM,IAAA8sB,EAAAA,EAAI,OASjD,KAAA5E,0BAA4B,KAA6B,IAAA4F,EACtE,OAAOxM,EAAAA,EAAAA,GAAiB,CACpBjnB,UAAWlD,KAAKkD,UAChBimB,YAAalH,EAAAA,EAAY2U,QACzB1N,cAAelpB,KAAKkpB,cAAczF,iBAA+D,QAA/CkT,EAAC32B,KAAKuwB,iBAAiB7P,gCAAwB,IAAAiW,EAAAA,EAAI32B,KAAKsf,iBAC1G+J,uBAAwBrpB,KAAKsf,gBAC7BgK,mBAAoBtpB,KAAKspB,mBACzBL,gBAAiBjpB,KAAKuwB,iBACtBlN,gBAAiBrjB,KAAKqjB,gBACtBkH,sBAAuBvqB,KAAKuqB,sBAC5BnB,oBAAqBppB,KAAKkpB,cAAczG,gCACpCziB,KAAKkD,UAAU+tB,iCACfjxB,KAAK2iB,mBAETnO,iBAAkBxU,KAAKwU,iBACvB+U,cAAevpB,KAAKkxB,+BACpB1H,iBAAkBxpB,KAAKmxB,kCACvBne,uBAAwBhT,KAAKC,MAAMiI,YAAY8K,uBAC/CsX,OAAQtqB,KAAK62B,iBACbxuB,SAAUrI,KAAKqxB,cAoBN,KAAAc,iBAAoB7S,IAA2B,IAAA0S,EAC5DhyB,KAAKsf,gBAAkBA,EACvB,MAAMwX,EAAyB92B,KAAKkpB,cAAchG,0BAA0B5D,IAC5E8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE7P,yBAA0BpB,KACvD8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAEqC,uBAAwBkE,IACrC,QAAhB9E,EAAAhyB,KAAKywB,mBAAW,IAAAuB,GAAhBA,EAAkBxT,gCAAgCsY,GAClD92B,KAAKswB,uBAOQ,KAAAuC,6BAA+B,KAC5C,MAAM,OAAE/yB,GAAWE,KAAKC,MAClB6yB,EAA8C,GAQpD,OANKhzB,EAAOizB,iBACRD,EAAyBpN,KAAKrD,EAAAA,GAAgBf,kBAGlDwR,EAAyBpN,KAAKrD,EAAAA,GAAgBiE,WAEvCwM,GAMM,KAAAf,sBAAwBnuB,UACrC,MACI+E,MACIqW,2BAA6BnW,OAAQmW,KAEzChf,KAAKC,MAEuC,IAADyyB,EAA3C1T,MAAAA,GAAAA,EAA2BiT,iBACX,QAAhBS,EAAA1yB,KAAKywB,mBAAW,IAAAiC,GAAhBA,EAAkBtV,kBAAkB,yBAA0B,mCAAoCpd,KAAKqwB,yBAQ9F,KAAAa,+BAAkCxb,IAC/C,MAAMxQ,GAASwQ,EAAMrU,OAAO6D,OAAS,IAAIC,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IAC3EpF,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMze,IAO9B,KAAAisB,kCAAqCzb,IAClD1V,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMjO,EAAMrU,OAAO6D,OAEpDwQ,EAAMrU,OAAOsiB,OAAStB,EAAAA,GAAgBA,EAAAA,GAAgB3B,2BACtD1gB,KAAKmyB,iBAAiBzc,EAAMrU,OAAO6D,QAO1B,KAAA8tB,mBAAqB,MAE7BhzB,KAAKsf,iBACJtf,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,QAKnGxyB,KAAKsyB,cAAcnS,kBAAkBngB,KAAKsf,iBAAiBxS,MAAMjE,IAC3CA,EAAOwE,MAAKtF,GAASA,EAAMoc,UAAYnkB,KAAKuwB,iBAAiB5P,UAI3EyE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE5P,MAAO,KAExC3gB,KAAK2iB,kBAAoB9Z,MAOhB,KAAAkuB,iBAAmB,KAAW,IAAApmB,EAC3C3Q,KAAKC,MAAMiI,YAAYD,KAAK,CACxBO,OAAQxI,KAAKg3B,yBAA2B,WAAa,WACrD5uB,OAAQpI,KAAKoI,OACbC,SAAUrI,KAAKqI,SACfpE,SAAUjE,KAAKiE,WAGnB,MAAM,eAAEgzB,EAAc,sCAAEC,GAAyE,QAAlCvmB,EAAG3Q,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA8H,EAAAA,EAAI,GAEjG3Q,KAAKg3B,2BACDC,GACAj3B,KAAKm3B,+BAAiCD,MAAAA,GAAAA,EACtCl3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMH,GACpDj3B,KAAKq3B,sBACEr3B,KAAKs3B,gCACZt3B,KAAKm3B,gCAAiC,EACtCn3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKu3B,mBAEzDv3B,KAAKm3B,gCAAiC,EACtCn3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiByK,QAmBzC,KAAAuE,sCAAyC9hB,IACtD1V,KAAKm3B,+BAAiCzhB,EAAM+hB,cAAc3O,QAEtD9oB,KAAKm3B,gCAAkCn3B,KAAKu3B,gBAC5Cv3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKu3B,iBAEzDv3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiByK,IAAKjzB,KAAKi3B,iBAsG/C,KAAAJ,iBAAmB,KACmF,IAAD5lB,EAAAY,EAAlH,IAAK7R,KAAKkpB,cAAc9F,sBAAsBpjB,KAAKuwB,iBAAkBvwB,KAAKqjB,gBAAiBrjB,KAAKsf,iBAU5F,OATAtf,KAAKC,MAAMiI,YAAYsC,aAAY,QAGA,QAA/ByG,EAAAjR,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAoI,GAA/BA,EAAiCE,gDACF,QADgDU,EAC/E7R,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAgJ,GAA/BA,EAAiC6lB,mCAEjC13B,KAAKC,MAAM0I,KAAKC,SAASC,OAAO8uB,+BAA+B,CAAEC,6BAA6B,KAMtG53B,KAAK63B,mBAAmB73B,KAAKuwB,kBAC7BvwB,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKuwB,kBACzDvwB,KAAKq3B,sBAMQ,KAAApzB,SAAW,KACxB,OAAQjE,KAAKuyB,kBACT,KAAK/J,EAAAA,EAAiByK,IACtB,KAAKzK,EAAAA,EAAiBgK,OAClBxyB,KAAKC,MAAMqK,UAAU4G,YAAY,uDACjClR,KAAK62B,mBACL,MACJ,KAAKrO,EAAAA,EAAiB4O,KAClBp3B,KAAKC,MAAMqK,UAAU4G,YAAY,8CAC7BlR,KAAKipB,kBACLjpB,KAAK63B,mBAAmB73B,KAAKipB,iBAC7BjpB,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKipB,iBACzDjpB,KAAKq3B,sBAET,MACJ,QACIr3B,KAAKC,MAAMqK,UAAUC,MAAM,uBAOtB,KAAAlC,SAAW,KACxB,OAAQrI,KAAKuyB,kBACT,KAAK/J,EAAAA,EAAiByK,IACtB,KAAKzK,EAAAA,EAAiBgK,OAClBxyB,KAAKC,MAAMqK,UAAU4G,YAAY,uDACjClR,KAAKqxB,aACLrxB,KAAKswB,sBACL,MACJ,KAAK9H,EAAAA,EAAiB4O,KAClBp3B,KAAKC,MAAMqK,UAAU4G,YAAY,8CACjClR,KAAKqxB,aACL,MACJ,QACIrxB,KAAKC,MAAMqK,UAAUC,MAAM,uBAOtB,KAAAnC,OAAS,KACtBpI,KAAKC,MAAMqK,UAAU4G,YAAY,qCAE7BlR,KAAKm3B,gCAAkCn3B,KAAKu3B,iBAAmBv3B,KAAKs3B,+BACpEt3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKu3B,iBAEzDv3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiByK,IAAKjzB,KAAKi3B,gBAE5Dj3B,KAAKC,MAAMiI,YAAYoB,cAOV,KAAAuuB,mBAAsBpX,IACnC,GAAIzgB,KAAKC,MAAM0I,KAAKC,SAASC,OAAQ,CACjC,MAAMivB,EAAiB3vB,EAAA,GAAQsY,GAE3BA,EAAQC,2BAA6BoX,EAAkBlF,yBACvDkF,EAAkBlF,uBAAyB5yB,KAAKkpB,cAAchG,0BAA0BzC,EAAQC,2BAGpG1gB,KAAKC,MAAM0I,KAAKC,SAASC,OAAOkvB,qBAAqB,CACjDD,kBAAAA,EACAviB,qBAAsB,CAClB2hB,sCAAuCl3B,KAAKm3B,oCAS3C,KAAA9F,WAAa,KAC1BrxB,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKi3B,gBACzDj3B,KAAKq3B,sBAQQ,KAAAnE,wBAA0B,CAACC,EAA6BlK,KACrEjpB,KAAKuyB,iBAAmBY,EACxBnzB,KAAKipB,gBAAkBA,EAEnBjpB,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,SAC7FxyB,KAAKuwB,iBAAmBpoB,EAAA,GAAKnI,KAAKipB,kBAAqB,IACvD7D,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CACvB7P,yBAA0B1gB,KAAKuwB,iBAAiB7P,0BAA4B1gB,KAAKsf,mBAErF8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAEjP,iBAAkBthB,KAAKuwB,iBAAiBjP,kBAAoBthB,KAAKspB,uBAOrF,KAAA+N,mBAAqB,KAC9Br3B,KAAKuyB,mBAAqB/J,EAAAA,EAAiB4O,KAC3Cp3B,KAAKC,MAAMiI,YAAYuB,UAEvBzJ,KAAKC,MAAMiI,YAAYoB,cAKd,KAAA0uB,iBAAoB31B,IACjCrC,KAAKC,MAAMqK,UAAUC,MAAMlI,GAC3BrC,KAAKC,MAAMiI,YAAYsC,aAAY,GACnCxK,KAAKC,MAAMiI,YAAYoB,aACvBtJ,KAAKiK,SAAS,CACV5H,aAAAA,KAtuBJ,MAAM,QAAE2G,EAAO,KAAEL,EAAI,UAAEzF,EAAS,UAAEoH,GAActK,KAAKC,MAErDD,KAAKuwB,iBAAmB,GACxBvwB,KAAKqjB,gBAAkB,GACvBrjB,KAAKm3B,gCAAiC,EACtCn3B,KAAKkD,UAAYA,EACjBlD,KAAKuyB,iBAAmB/J,EAAAA,EAAiB0D,KACzClsB,KAAK4hB,gBAAkBjZ,EAAKiZ,gBAAgB/Y,QAAU,GACtD7I,KAAKuf,eAAiB5W,EAAK4W,eAAe1W,QAAU,GACpD7I,KAAK2iB,kBAAoBha,EAAK+sB,cAAc7sB,QAAU,GACtD7I,KAAKsyB,cAAgB,IAAIlT,EAAAA,EAAcpW,EAAS9F,EAAWoH,GAC3DtK,KAAKkpB,cAAgB,IAAI5G,EAAAA,EACrBtiB,KAAKuf,eACL,IAAIgH,EAAAA,EAAepe,EAAC,GAAKjF,GAAalD,KAAK6yB,gCAC3C7yB,KAAK4hB,iBAET5hB,KAAKwU,kBAAmBsB,EAAAA,EAAAA,oBACpB9V,KAAKC,MAAM+I,QAAQC,QAAQ8M,kBAC3B/V,KAAKC,MAAM+V,aACXhW,KAAKC,MAAMqK,WAGftK,KAAK+H,MAAQ,CACTkwB,eAAe,EACfjD,0BAA0B,EAC1BkD,8BAA8B,EAC9B71B,aAAc,IAMf,0BAAuB,IAAA6P,EAC1B,MACIlJ,SAAS,UACLsB,EACAuC,eACI6H,gBAAgB,QAAEkf,KAG1B9zB,QAAQ,sBAAE+zB,EAAqB,mBAAE9W,IACjC/c,KAAKC,MAoDT,GAjDAD,KAAK2wB,gBAAgB3wB,KAAKC,OAE1BD,KAAKC,MAAM0I,KAAKC,SAASkE,MAAK,KAC1B9M,KAAK2zB,6BACL3zB,KAAK+2B,uBAGT/kB,EAAAA,EAAAA,KACI,IAAMhS,KAAKsf,kBACX,KACItf,KAAKgzB,yBAIbhhB,EAAAA,EAAAA,KACI,IAAMhS,KAAKuyB,mBACX,KACIvyB,KAAKgzB,yBAIbhhB,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAM0I,KAAKC,SAASC,QAAU7I,KAAKC,MAAM0I,KAAKC,SAASC,OAAO0uB,kBACzEA,IACQv3B,KAAKC,MAAMiI,YAAY+L,aACnBsjB,GAAmBv3B,KAAKm3B,gCACxBn3B,KAAKm3B,gCAAiC,EACtCn3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMG,IAC7CA,GAAmBv3B,KAAKm3B,gCAC/Bn3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMG,QAMpEvlB,EAAAA,EAAAA,KACI,IAAMhS,KAAKg3B,2BACXA,IAKY,IAADllB,EAJHklB,EACIh3B,KAAKC,MAAMiI,YAAYqI,YACvBvQ,KAAKoI,UAGsB,QAA/B0J,EAAA9R,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAiJ,GAA/BA,EAAiCqmB,qBAAqB,IACtDn4B,KAAKC,MAAMiI,YAAYkwB,gBAK/BvE,EAAuB,CACvB,GAAID,IAAYA,EAAQ5W,eAEpB,YADA1S,EAAUC,MAAM,8BAIpB,GAAIqpB,IAAYA,EAAQE,gBAEpB,YADAxpB,EAAUC,MAAM,4BAIpB,MAAMnI,EAAO+F,EAAA,GAA6B4U,GAC1C/c,KAAKywB,YAAc,IAAI3T,EAAAA,EACnBxS,EACAlI,EACAwxB,MAAAA,OAAO,EAAPA,EAAS5W,eACT4W,MAAAA,OAAO,EAAPA,EAASG,4BACTH,MAAAA,OAAO,EAAPA,EAASI,oBAKTh0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,QACzC7I,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,cAExFxyB,KAAKywB,YAAY1R,kBAAkB/e,KAAKC,MAAM0I,KAAKqW,4BAG7DhN,EAAAA,EAAAA,KACI,SAAAiiB,EAAA,OACoD,QAAhDA,EAAAj0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAorB,OAAA,EAAhDA,EAAkDhV,cACjDjf,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,WAClG5uB,UAAW,IAAAswB,QACe,QAAtBA,EAAMl0B,KAAKywB,mBAAW,IAAAyD,OAAA,EAAhBA,EAAkBnV,kBAAkB/e,KAAKC,MAAM0I,KAAKqW,gCAIlEhN,EAAAA,EAAAA,KACI,SAAAmiB,EAAA,OAAsD,QAAtDA,EAAMn0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAsrB,OAAA,EAAhDA,EAAkDlC,kBACxDruB,gBACU5D,KAAK+xB,2BAKY,QAAnC7f,EAAIlS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAqJ,GAA/BA,EAAiCmmB,6CACjCrmB,EAAAA,EAAAA,KACI,SAAAI,EAAA,OAAqC,QAArCA,EAAMpS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAuJ,OAAA,EAA/BA,EAAiCkmB,iBACvCA,IAEQA,GACAA,EAAcC,gBAAkBC,EAAAA,cAAc9B,wBAC9C4B,EAAcj2B,cAEdrC,KAAKg4B,iBAAiBM,EAAcj2B,kBAKhD2P,EAAAA,EAAAA,KACI,SAAAM,EAAA,OAAqC,QAArCA,EAAMtS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAyJ,OAAA,EAA/BA,EAAiCmmB,sBACvCA,IACQA,IAAuB7b,EAAAA,eAAe8Z,yBACtCta,EAAAA,EAAAA,GAAqBpc,KAAKqc,iBAAkBrc,KAAKC,MAAM+I,QAAQ6D,mBAO5E,2BACuG,IAADunB,EAIlGC,EAJHr0B,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,OACzC,QAApD4B,EAAIp0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAurB,GAAhDA,EAAkDnC,sBAC5CjyB,KAAK+xB,wBAGC,QAAhBsC,EAAAr0B,KAAKywB,mBAAW,IAAA4D,GAAhBA,EAAkB3V,qBAInBzL,sBACHC,EACAC,GAEA,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SACH,IAAKG,KAAKg3B,0BAA4Bh3B,KAAK04B,gCACvC,OAAO,KAGX,MAAM,UACFx1B,EACAgF,aAAa,SAAEwI,IACf1Q,KAAKC,OAEH,WAAEsO,EAAU,OAAEzO,GAAWE,KAAKC,MAE9BoC,EAAerC,KAAK+H,MAAM1F,aA0ChC,OAAOkM,EAxCQpG,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACbsyB,iBAAkBvyB,KAAKuyB,iBACvBtJ,gBAAiBjpB,KAAKipB,gBACtBsH,iBAAkBvwB,KAAKuwB,iBACvBjR,gBAAiBtf,KAAKsf,gBACtBqD,kBAAmB3iB,KAAK2iB,kBACxBU,gBAAiBrjB,KAAKqjB,gBACtBkH,sBAAuBvqB,KAAKuqB,sBAC5BlqB,UAAWP,EAAOO,UAClB4X,UAAW,CACPggB,cAAej4B,KAAKipB,iBAAmBjpB,KAAKuyB,mBAAqB/J,EAAAA,EAAiB4O,KAClFpC,yBAA0Bh1B,KAAKuyB,mBAAqB/J,EAAAA,EAAiB4O,KACrEc,6BAA8Bl4B,KAAKs3B,gCAAkCt3B,KAAKC,MAAMiI,YAAY+L,YAEhGyiB,uBAAwB,CACpBxoB,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAW,8BAA+BlE,EAAOO,YAEhEsV,QAAS/V,EAAAA,cAAC62B,EAAqB3nB,OAAAC,OAAA,GAAK,CAAEnO,KAAMsC,EAAUy1B,gCACtDp0B,MAAOmM,GAAYrO,GAAgBzC,EAAAA,cAAC6rB,EAAAA,EAAc3c,OAAAC,OAAA,GAAK,CAAErO,MAAOwC,EAAU01B,kBAAmBziB,QAAS9T,KACtGga,iBAAkBrc,KAAKqc,iBAEvBwc,uBACIj5B,EAAAA,cAAC42B,EAAsB1nB,OAAAC,OAAA,GACf,CACA2Z,UAAW1oB,KAAKm3B,+BAChBnyB,KAAM,WACNE,MAAO,OACP9D,UAAW8B,EAAU41B,sCACrBl4B,KAAMsC,EAAU61B,iCAChBvkB,iBAAkBxU,KAAKwU,iBACvBvP,SAAUjF,KAAKw3B,yCAI3BwB,YAAah5B,KAAKi5B,qBAClB9D,uBAAwBn1B,KAAK+wB,+BAsH7BkI,qBACuB,IAADC,EAA1B,OAAIl5B,KAAKipB,iBACE4D,EAAAA,EAAAA,GAAY,CACfpM,QAASzgB,KAAKipB,gBACdC,cAAelpB,KAAKkpB,cAAczF,iBAA8D,QAA9CyV,EAACl5B,KAAKipB,gBAAgBvI,gCAAwB,IAAAwY,EAAAA,EAAI,IACpGtX,gBAAiB5hB,KAAK4hB,kBAIvB,KA0HH+R,6BAA0B,IAAA4C,EAC9B,MAAM,QAAEttB,GAAYjJ,KAAKC,MAAM+I,QACzBmW,EAAwB,QAAlBoX,EAAGttB,EAAQ2qB,eAAO,IAAA2C,OAAA,EAAfA,EAAiBxC,4BAEhC/zB,KAAKsf,gBAAkBtf,KAAKsyB,cAAcjT,0BAA0Brf,KAAKsf,gBAAiBtf,KAAKuf,eAAgBJ,GAiBzG,qCAA0C,IAAAga,EAAAC,EAAAC,EAAA9mB,EAChD,MAAM,QAAEtJ,GAAYjJ,KAAKC,MAAM+I,SAEzB,4BAAEswB,EAA2B,aAAE7E,GAAiBz0B,KAAKC,MAAM0I,KAC3D4wB,EAAuD,QAAtBJ,EAAG1E,EAAa5rB,cAAM,IAAAswB,GAAiE,QAAjEA,EAAnBA,EAAqBzZ,MAAKgV,GAF9B,oEAEyCA,EAAQ9O,cAAuC,IAAAuT,OAAA,EAApFA,EACpCxE,UAEA6E,EAAwC,QAAlBJ,EAAGnwB,EAAQ2qB,eAAO,IAAAwF,OAAA,EAAfA,EAAiBK,uBAC1CC,EAAuC,QAAlBL,EAAGpwB,EAAQ2qB,eAAO,IAAAyF,OAAA,EAAfA,EAAiBM,sBAG/C,OAAsC,QAA/BpnB,EAAAvS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA0J,IAA/BA,EAAiCzJ,aAAa8wB,kBAE/CL,GACEv5B,KAAKC,MAAM0I,KAAKC,SAASC,QAAU7I,KAAKC,MAAM0I,KAAKC,SAASC,OAAOC,aAAaJ,KAAKkJ,WAAc,IAAIvE,MAAKwsB,IAAQ,IAAAC,EAAA,OAClHD,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjBD,EACjBR,EAA4BzwB,cAAM,IAAAixB,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6Dpa,MACzDua,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBL,EACnCG,MAER75B,KAAKC,MAAM0I,KAAKC,SAASC,QAAU7I,KAAKC,MAAM0I,KAAKC,SAASC,OAAOC,aAAaJ,KAAKkJ,WAAc,IAAIvE,MAAKwsB,GAC1GA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBP,GAA0BK,EAASE,eAAiBL,EAC9EG,KAIV,qBAA0B,IAAAnnB,EAChC,OAAsC,QAAtCA,EAAO1S,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA6J,OAAA,EAA/BA,EAAiCukB,eAGlC,sBAA2B,IAAArkB,EACjC,OAAsC,QAAtCA,EAAO5S,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA+J,OAAA,EAA/BA,EAAiC2kB,gBAGlC,uBACN,MAAM7sB,EAAgB1K,KAAKC,MAAM0I,KAAKC,SAASC,OAC/C,OAAO6B,MAAAA,GAAAA,EAAe8C,cAAgB9C,EAAc8C,cAAgB,EAG9D,6BACN,MAAM9C,EAAgB1K,KAAKC,MAAM0I,KAAKC,SAASC,OAC/C,OAAK6B,GAAkBA,EAAc0C,gBAG9B1C,EAAc0C,gBAAgB8sB,QAAO,CAACC,EAAe5zB,IACjD4zB,GAAS5zB,EAASQ,SAAW,IACrC,GAJQ,EAOL,+BAAoC,IAAAqzB,EAC1C,MAAM1vB,EAAgB1K,KAAKC,MAAM0I,KAAKC,SAASC,OAG/C,OAA2C,QAA3CuxB,EAAO1vB,MAAAA,OAAa,EAAbA,EAAe2vB,6BAAqB,IAAAD,EAAAA,EAFrB,EAKhB,uBACN,MACIzxB,MAAM,SAAEC,GAAU,OAClB9I,GACAE,KAAKC,MACT,IAAK2I,EAASC,OACV,OAAO,EAGX,MAAMyxB,EAAiB1xB,EAASC,OAC1BH,EAAO4xB,EAAexxB,aAAaJ,KACzC,IAAKA,IAASA,EAAKkJ,WAAuC,IAA1BlJ,EAAKkJ,UAAUxR,OAC3C,OAAO,EAGX,MAAM,kBAAEm6B,EAAiB,qBAAEC,GAAyBF,EAC9CG,EAA6B36B,EAAO46B,mBAAqBH,GAAqBC,EAKpF,OAFmB9xB,EAAKK,aAAe,GAAK/I,KAAK26B,uBAAyB36B,KAAKyN,iBAAmBzN,KAAK46B,yBAEpF,IAAMH,EAGnB,+BAAoC,IAAAI,EAAAC,EAC1C,OACI96B,KAAK+6B,qBACqB,QAAzBF,EAAC76B,KAAKC,MAAM0I,KAAKC,gBAAQ,IAAAiyB,GAAQ,QAARA,EAAxBA,EAA0BhyB,cAAM,IAAAgyB,GAAhCA,EAAkCG,qCACN,QAAzBF,EAAC96B,KAAKC,MAAM0I,KAAKC,gBAAQ,IAAAkyB,GAAQ,QAARA,EAAxBA,EAA0BjyB,cAAM,IAAAiyB,IAAhCA,EAAkCnoB,uBAItC,sCACN,OAAOkC,EAAAA,GAAsB7U,KAAKC,MAAM+I,QAAQC,UAAwD,IAA5CgyB,EAAAA,sBAAsBC,qBAznB1E1sB,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,wCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,sDAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,wCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,yCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,6CA4QXvN,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,6CAsBP7mB,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,2CAiBP7mB,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,wCA+NG7mB,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,oDA6BCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,oCAICD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,qCAICD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,sCAKCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,4CAUCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,8CAOCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,sCAwBCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,8CAQCD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,qDA8ITD,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,uCAtwBLqB,GAAsBloB,EAAAA,EAAAA,IAAA,CAF3BG,EAAAA,gBACAD,EAAAA,IACKgoB,GAixBN,yGC50BA,MAAM7J,EAA2CvmB,IAA6B,IAA5B,cAAEupB,EAAa,MAAEhuB,GAAOyE,EACtE,OACI1G,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK8gB,GACLhuB,EAAMC,KAAKuN,GACDzP,EAAAA,cAAAA,EAAAA,SAAA,KAAGyP,EAAK0gB,iBAoBzB5F,EAAqDlb,IAUtD,IAVuD,YACxDub,EAAW,QACX7U,EAAO,MACP9T,EAAK,SACL6O,EAAQ,MACRnG,EAAK,iBACLkgB,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACH9b,EACG,OACIrP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKyb,GACL7U,EACA9T,EAAMC,KAAKuN,IACR,MAAM,YAAE2a,EAAW,IAAE/nB,EAAG,MAAEiC,EAAK,MAAEK,EAAK,MAAEwH,GAAUsD,EAClD,OACIzP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKib,EAAW,CAAE/nB,IAAKA,IACvBiC,EACAK,EACAwH,MAIZ2E,GACG9Q,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKxE,EAAM2gB,cACX3gB,EAAM7J,MACN6J,EAAM4L,SAGdsU,GAAoBC,EACpBI,GAAsBC,IAiCnC,EAvB+E9qB,IAC3E,MAAM,uBACFy2B,EAAsB,iBACtBra,EAAgB,MAChB9X,EAAK,UACL0T,EAAS,QACTtC,EAAO,uBACPkjB,EAAsB,YACtBG,EAAW,uBACX7D,GACAl1B,EAEJ,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAK2nB,EAAsB,CAAE3xB,IAAKsX,IACpC1G,EACApR,EACA0T,EAAUigB,8BAAgCW,EAC1C5gB,EAAUggB,eAAiBr4B,EAAAA,cAACitB,EAAW/d,OAAAC,OAAA,GAAKiqB,IAC5C/gB,EAAU+c,0BAA4Bp1B,EAAAA,cAACuqB,EAAgBrb,OAAAC,OAAA,GAAKomB,yTC3DlE,MAAMgG,EAAqE70B,IAM7E,IAN8E,gBAC/EyH,EAAe,UACfqtB,EAAS,MACT16B,EAAK,UACL26B,EAAS,UACTn4B,GACHoD,EACG,MASMg1B,GAAgBC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,QAAS1yB,QAT9C,CACb2yB,aAAc,CACVC,GAAI,CAAEC,EAAG,KACTC,GAAI,CAAED,EAAG,KACTE,GAAI,CAAEF,EAAG,MACTG,GAAI,CAAEH,EAAG,MACTI,GAAI,CAAEJ,EAAG,UAIXK,EAAiC,OAAlBZ,GAA4C,OAAlBA,EAE/C,IAAKzqB,EAAAA,gBAAgBC,YAAYsqB,GAC7B,OAAO,KAGX,OACIx7B,EAAAA,cAAA,OAAKS,UAAW,GAAG0N,mBACfnO,EAAAA,cAAA,OAAKS,UAAW,GAAG0N,0BACfnO,EAAAA,cAAA,OAAKS,UAAW,GAAG0N,+BAA8CrN,GACjEd,EAAAA,cAAA,OAAKS,UAAW,GAAG0N,+BAA8CstB,IAErEz7B,EAAAA,cAAA,OAAKS,UAAW,GAAG0N,yBACdqtB,EAAUt5B,KAAK+3B,IACZ,MAAMsC,EAAYtC,EAASuC,SAT1B,EAUD,IAAI/7B,EAAY,GAAG0N,gCAKnB,OAHIouB,IACA97B,EAAY2D,GAAAA,CAAW3D,EAAW,wBAGlCT,EAAAA,cAAA,OAAKS,UAAWA,EAAW4B,IAAK43B,EAASwC,QACrCz8B,EAAAA,cAAC08B,EAAAA,GAAKxtB,OAAAC,OAAA,GAAK8qB,EAAS0C,aACnBL,EACKC,GACIv8B,EAAAA,cAAA,OACI6E,KAVT,OAUmB,cACEojB,EAAAA,EAAAA,QAAO3kB,EAAUs5B,oBAAqB3C,EAASuC,SAAUvC,EAAS0C,WAAWE,SACzFp8B,UAAW,GAAG0N,uCAEb8rB,EAASuC,UAGlBD,GACIv8B,EAAAA,cAAA,yBACqBi6B,EAASwC,OAAM,cACpB,OACZh8B,UAAW,GAAG0N,uCAEb8rB,EAASuC,WAGtBF,GAAgBC,GACdv8B,EAAAA,cAAA,QAAMuE,GAAI01B,EAASwC,OAAQh8B,UAAU,+BAChCwnB,EAAAA,EAAAA,QAAO3kB,EAAUs5B,oBAAqB3C,EAASuC,SAAUvC,EAAS0C,WAAWE,iBAcrGC,EAAuC,CAChDC,UAAW,CACPf,GAAI,CAAEgB,EAAG,6BAA8Bf,EAAG,IAAKgB,EAAG,KAClDb,GAAI,CAAEY,EAAG,6BAA8Bf,EAAG,IAAKgB,EAAG,KAClDZ,GAAI,CAAEW,EAAG,6BAA8Bf,EAAG,IAAKgB,EAAG,MAEtDC,UAAU,EACVC,QAAS,imBCIb,IAAMC,EAAN,cAAsCp9B,EAAAA,UA6ClCiI,YAAmB5H,GAA4B,IAAAg9B,EAC3CjtB,MAAM/P,GAvCU,KAAAqf,gBAA0B,MAI1B,KAAAqC,kBAA+B,GAU/B,KAAAub,2BAAsC,GAMlD,KAAA3d,eAAsC,GAEtC,KAAAqC,gBAAoC,GAI3B,KAAA0H,mBAA6B,EAM7B,KAAA6T,8BAAwC,kEAEjD,KAAA5D,mCAA8C,EAErC,KAAAld,iBAAiDzc,EAAAA,YAySjD,KAAAw9B,iBAAmBx5B,UAChC,MAAMy5B,EAA8Br9B,KAAKs9B,2BACnClC,EAAoC,GAE1C,IAAK,IAADzqB,EACA,MAAM4sB,QAAiBv9B,KAAKw9B,yBACO,QAA/B7sB,EAAA3Q,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA8H,OAAA,EAA/BA,EAAiC7H,aAAaJ,KAAK+0B,YAAa,EAChEJ,GAEJ,IAAK,MAAMK,KAAQL,EAAiB,CAChC,MAAMM,EAAqCJ,EAAS7d,MAAKke,GAAKA,EAAElc,WAAagc,EAAKG,YAClFzC,EAAU1V,KAAK,CAAEmU,SAAU6D,EAAMC,QAAAA,IAErC39B,KAAKiK,SAAS,CAAE6zB,eAAgB1C,IAClC,MAAO7wB,GACLvK,KAAKC,MAAMqK,UAAUC,MAAMA,GAC3BvK,KAAKiK,SAAS,CAAE6zB,eAAgB,OASvB,KAAAzN,sBAAwBzsB,MAAAA,IACrC5D,KAAKswB,sBACL,MAAM7P,EAAUzgB,KAAKkpB,cAAcrF,qBAAqBhb,EAAQ7I,KAAK2iB,oBAErEyC,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAElM,OAAQ,MACrCe,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAExM,QAAStD,EAAQsD,WAC9CqB,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE9L,WAAYhE,EAAQgE,cACjDW,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE3P,KAAMH,EAAQG,QAC3CwE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE5P,MAAOF,EAAQE,SAC5CyE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE/L,aAAc/D,EAAQ+D,gBACnDY,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE7L,YAAajE,EAAQiE,cAGlDrN,YAAW,MACP+N,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAElM,OAAQ5D,EAAQ4D,WAXjC,IAmBH,KAAAiM,oBAAsB,KACnC,MAAM5M,EAAoB1jB,KAAKkpB,cAAczF,iBACzCzjB,KAAKuwB,iBAAiB7P,0BAA4B1gB,KAAKsf,iBAE3D,IAAK,MAAMye,KAAiBra,EAAmB,CAAC,IAAD8M,OAEOjvB,IAA9CvB,KAAKuwB,iBAAiBwN,EAAcpa,OACnB,QAAjB6M,EAACxwB,KAAKywB,mBAAW,IAAAD,GAAhBA,EAAkBrT,sBAAsBnM,SAAS+sB,EAAcpa,QAEhE3jB,KAAKkpB,cAAc6U,EAAcpa,MAAQ,IAGjD3jB,KAAK0wB,oBAOQ,KAAAA,iBAAmB,KAChC1wB,KAAKqjB,gBAAkB,IAgBV,KAAAsN,gBAAmB1wB,IAChC,MAAM,KAAE0I,GAAS1I,GAEjB+R,EAAAA,EAAAA,KACI,IAAMrJ,EAAK4W,eAAe1W,SAC1B,KAAK,IAAA+nB,EACD5wB,KAAKuf,eAA2C,QAA7BqR,EAAGjoB,EAAK4W,eAAe1W,cAAM,IAAA+nB,EAAAA,EAAI,OAI5D5e,EAAAA,EAAAA,KACI,IAAMrJ,EAAKiZ,gBAAgB/Y,SAC3B,KAAK,IAAAgoB,EACD7wB,KAAK4hB,gBAA6C,QAA9BiP,EAAGloB,EAAKiZ,gBAAgB/Y,cAAM,IAAAgoB,EAAAA,EAAI,OAI9D7e,EAAAA,EAAAA,KACI,IAAMrJ,EAAK8X,QAAQ5X,SACnB,KAAK,IAAAioB,EACD9wB,KAAK2hB,kBAAuC,QAAtBmP,EAAGnoB,EAAK8X,QAAQ5X,cAAM,IAAAioB,EAAAA,EAAI,OAIxD9e,EAAAA,EAAAA,KACI,IAAMrJ,EAAK+sB,cAAc7sB,SACzB,KAAK,IAAA8sB,EACD31B,KAAK2iB,kBAA6C,QAA5BgT,EAAGhtB,EAAK+sB,cAAc7sB,cAAM,IAAA8sB,EAAAA,EAAI,OAI9D3jB,EAAAA,EAAAA,KACI,IAAMrJ,EAAK8rB,aAAa5rB,SACxB,KAAK,IAAAm1B,EACDh+B,KAAKu5B,kCAA4D,QAA3ByE,EAAGr1B,EAAK8rB,aAAa5rB,cAAM,IAAAm1B,GAEhE,QAFgEA,EAAxBA,EAA0Bte,MAC/DgV,GAAWA,EAAQ9O,OAAS5lB,KAAKm9B,uCACpC,IAAAa,OAAA,EAFwCA,EAEtCrJ,cASE,KAAA2I,yBAA2B,KAAiB,IAAArsB,EAAAY,EACzD,OAA2G,QAA3GZ,EAAsC,QAAtCY,EAAO7R,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAgJ,GAA6B,QAA7BA,EAA/BA,EAAiC/I,aAAaJ,KAAKkJ,iBAAS,IAAAC,OAAA,EAA5DA,EAA8DvB,QAAOotB,GAAQ19B,KAAKi+B,YAAYP,YAAM,IAAAzsB,EAAAA,EAAI,IAQlG,KAAAgtB,YAAeP,GACrB19B,KAAKk+B,iBAAiBR,EAAK3D,qBAA8Cx4B,IAA5Bm8B,EAAKS,oBAAgE,KAA5BT,EAAKS,oBAQrF,KAAAD,iBAAoBjE,IAA6C,IAAAmE,EAAAjF,EAC9E,MAAMK,EAA2D,QAArC4E,EAAGp+B,KAAKC,MAAM+I,QAAQC,QAAQ2qB,eAAO,IAAAwK,OAAA,EAAlCA,EAAoC3E,wBAE7D,4BAAEH,EAA2B,aAAE7E,GAAiBz0B,KAAKC,MAAM0I,KAGjE,IAF6D,QAAtBwwB,EAAG1E,EAAa5rB,cAAM,IAAAswB,GAAiE,QAAjEA,EAAnBA,EAAqBzZ,MAAKgV,GAF9B,oEAEyCA,EAAQ9O,cAAuC,IAAAuT,OAAA,EAApFA,EACpCxE,iBACoDpzB,IAAjB04B,EAA4B,CAAC,IAADH,EACjE,MAAMuE,EAAuD,QAArCvE,EAAGR,EAA4BzwB,cAAM,IAAAixB,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6DzsB,MACpFixB,GAAcA,IAAerE,IAEjC,YAA8B14B,IAAvB88B,GAAmCA,EAE9C,YAAwB98B,IAAjB04B,QAAyD14B,IAA3Bi4B,GAAwCS,IAAiBT,GASjF,KAAAgE,wBAA0B55B,MAAO26B,EAAmBnD,KACjE,MAAMvuB,EAAgB7M,KAAKC,MAAM+I,QAAQ6D,cACnC2xB,EAAgBpD,EACjB9qB,QAAOotB,IAAStH,EAAAA,iBAAiBC,kBAAkBqH,EAAKG,aACxD/7B,KACG47B,GACI,IAAIe,EAAAA,aACAf,EAAKG,WAAa,EAClBhxB,EAAc6H,eAAe4L,YAC7Bie,OACAh9B,EACAsL,EAAc6H,eACdgpB,EAAKgB,WAAa,KAGlC,OAAOC,EAAAA,EAAAA,mBAAkBH,EAAe3xB,IAS3B,KAAAkkB,0BAA4B,CAAC6N,EAA4BC,KACtE,MAAM3V,GACFlpB,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKsyB,cAAcpS,sBAC/DlgB,KAAKkpB,eAUf,OAAOiB,EAAAA,EAAAA,GAAiB,CACpBlW,WAAYjU,KAAKiU,WACjB/Q,UAAWlD,KAAKkD,UAChBimB,YAAalH,EAAAA,EAAY+O,SACzB9H,cAAeA,EAAczF,iBAAiBzjB,KAAKuwB,iBAAiB7P,0BAA4B1gB,KAAKsf,iBACrG+J,uBAAwBrpB,KAAKsf,gBAC7BgK,mBAAoBtpB,KAAKspB,mBACzBL,gBAAiBjpB,KAAKuwB,iBACtBlN,gBAAiBrjB,KAAKqjB,gBACtB3S,SAAU1Q,KAAK0Q,SACf6Z,sBAAuBvqB,KAAKuqB,sBAC5B/V,iBAAkBxU,KAAKwU,iBACvB4U,oBAAqBF,EAAczG,gCAC/BziB,KAAKkD,UAAU+tB,iCACfjxB,KAAK2iB,mBAET4G,cAAevpB,KAAKkxB,+BACpB1H,iBAAkBxpB,KAAKmxB,kCACvBne,uBAAwBhT,KAAKC,MAAMiI,YAAY8K,uBAK/CsX,OAAQA,KACJtqB,KAAKiE,WACL26B,MAAAA,GAAAA,KAGJv2B,SAAWrI,KAAKipB,iBAAoBjpB,KAAKsyB,cAAcpS,sBAhC7B4e,KAC1B9+B,KAAKqxB,aACLwN,MAAAA,GAAAA,KA8B+E,UAWtE,KAAAE,qBAAuB,CACpCC,EACAJ,EACAC,KASOrP,EAAAA,EAAAA,GAAc,CACjBtG,cAAelpB,KAAKkpB,cACpBzH,UAAWzhB,KAAK2hB,kBAChBze,UAAWlD,KAAKkD,UAChB0e,gBAAiB5hB,KAAK4hB,gBACtBqH,gBAAiBjpB,KAAKk9B,2BACtBlO,sBAAuBhvB,KAAKi/B,uBAC5BjsB,uBAAwBhT,KAAKC,MAAMiI,YAAY8K,uBAC/CwB,iBAAkBxU,KAAKwU,iBAKvBwZ,aAAcA,KACVhuB,KAAK2xB,kBACLqN,MAAAA,GAAAA,KAMJ1U,OAAQA,KACJtqB,KAAKk/B,mBACLN,MAAAA,GAAAA,KAGJv2B,SAAWrI,KAAKipB,gBA9BU6V,KAC1B9+B,KAAKqxB,aACLwN,MAAAA,GAAAA,KA4BkC,OAElCpP,+BAAgCzvB,KAAKC,MAAMH,OAAO2vB,iCAuBzC,KAAAsC,sBAAwBnuB,UACrC,MACI+E,MACIqW,2BAA6BnW,OAAQmW,KAEzChf,KAAKC,MAEuC,IAAD+xB,EAA3ChT,MAAAA,GAAAA,EAA2BiT,iBACX,QAAhBD,EAAAhyB,KAAKywB,mBAAW,IAAAuB,GAAhBA,EAAkB5U,kBAAkB,0BAA2B,oCAAqCpd,KAAKqwB,yBAQhG,KAAA4O,uBAA0BvpB,IACvC,MAAMypB,EAAkBzpB,EAAM+hB,cAAcvyB,MACtC+jB,EAAkBjpB,KAAK2hB,kBAAkBjC,MAAKe,IAAYA,EAAQiB,UAAY,IAAI2N,aAAe8P,IACnGlW,IACAjpB,KAAKk9B,2BAA6BjU,IASzB,KAAAiJ,mBAAqB,CAACvO,EAAcze,MACjDkgB,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE,CAAC5M,GAAOze,IACrClF,KAAKkpB,cAAc9F,sBAAsBpjB,KAAKuwB,iBAAkBvwB,KAAKqjB,gBAAiBrjB,KAAKsf,gBAAiBqE,IAO/F,KAAAuN,+BAAkCxb,IAC/C,GAA0B,aAAtBA,EAAMrU,OAAO2D,KACbhF,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMjO,EAAMrU,OAAOynB,aACrD,CACH,MAAM5jB,GAASwQ,EAAMrU,OAAO6D,OAAS,IAAIC,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IAC3EpF,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMze,KAQlC,KAAAisB,kCAAqCzb,IAClD1V,KAAKkyB,mBAAmBxc,EAAMrU,OAAOsiB,KAAMjO,EAAMrU,OAAO6D,OAEpDwQ,EAAMrU,OAAOsiB,OAAStB,EAAAA,GAAgBA,EAAAA,GAAgB3B,2BACtD1gB,KAAKmyB,iBAAiBzc,EAAMrU,OAAO6D,QAO1B,KAAAksB,0BAA4B,KACzC,IAAKpxB,KAAKkpB,cAAc9F,sBAAsBpjB,KAAKuwB,iBAAkBvwB,KAAKqjB,gBAAiBrjB,KAAKsf,iBAC5F,OAGJ,IAAIc,EAEAA,EADApgB,KAAKsyB,cAAcpS,uBAAyBlgB,KAAKo/B,cAAcp/B,KAAKuwB,kBAEhEvwB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,OACrCxyB,KAAKsyB,cAAcrR,sBAAsBjhB,KAAKuwB,kBAC9CvwB,KAAKsyB,cAAczR,mBAAmB7gB,KAAKuwB,kBAE1C1kB,QAAQC,QAAQ,CAAE2U,QAASzgB,KAAKuwB,mBAG/CvwB,KAAKiU,YAAa,EAClBjU,KAAKq3B,qBAELjX,EAAStT,MACJjE,IACG7I,KAAKiU,YAAa,EAEdpL,EAAO4X,SACPzgB,KAAK0Q,UAAW,EAChB1Q,KAAKq/B,cACDx2B,EAAO8Y,kBACP3hB,KAAKyyB,sBAAsB,CAAE9Q,kBAAmB9Y,EAAO8Y,kBAAmBlB,QAAS5X,EAAO4X,UAE1FzgB,KAAKyyB,sBAAsB,CAAEhS,QAAS5X,EAAO4X,YAGjDzgB,KAAK0Q,UAAW,EAChB1Q,KAAKuqB,sBAAwB1hB,EAC7B7I,KAAKq3B,yBAGb,KACIr3B,KAAK0Q,UAAW,EAChB1Q,KAAKiU,YAAa,EAClBjU,KAAKq3B,yBASA,KAAAlF,iBAAoB7S,IAA2B,IAAAoT,EAC5D1yB,KAAKsf,gBAAkBA,EACvB,MAAMwX,EAAyB92B,KAAKkpB,cAAchG,0BAA0B5D,IAC5E8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE7P,yBAA0BpB,KACvD8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAEqC,uBAAwBkE,IACrC,QAAhBpE,EAAA1yB,KAAKywB,mBAAW,IAAAiC,GAAhBA,EAAkBlU,gCAAgCsY,GAClD92B,KAAKswB,uBAOQ,KAAAuC,6BAA+B,KAC5C,MAAM,OAAE/yB,GAAWE,KAAKC,MAClB6yB,EAA8C,GAQpD,OANKhzB,EAAOizB,iBACRD,EAAyBpN,KAAKrD,EAAAA,GAAgBf,kBAGlDwR,EAAyBpN,KAAKrD,EAAAA,GAAgBiE,WAEvCwM,GAMM,KAAAE,mBAAqB,MAE7BhzB,KAAKsf,iBACJtf,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,QAKnGxyB,KAAKsyB,cAAcnS,kBAAkBngB,KAAKsf,iBAAiBxS,MAAMjE,IAC3CA,EAAOwE,MAAKtF,GAASA,EAAMoc,UAAYnkB,KAAKuwB,iBAAiB5P,UAI3EyE,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CAAE5P,MAAO,KAGxC3gB,KAAK2iB,kBAAoB9Z,MAiBhB,KAAAy2B,mBAAqB,KAClC,GAAIt/B,KAAK2hB,kBAAmB,CAExB,OADuB3hB,KAAK2hB,kBAAkBjC,MAAMe,GAAqBA,EAAQ6F,cACvDtmB,KAAK2hB,kBAAkBvhB,OAAS,EAAIJ,KAAK2hB,kBAAkB,QAAKpgB,KASjF,KAAAg+B,yCAA2C,KACxD,GAAIv/B,KAAKw/B,kCAAmC,CACxC,MAAM,qBAAEhF,EAAoB,QAAE/Z,EAAO,kCAAEgf,GAAsCz/B,KAAKw/B,kCAElF,IAAIE,EAQJ,OALIA,EADAD,EACyBhf,EAAUzgB,KAAK2/B,kBAAkBlf,QAAWlf,EAE5Ci5B,EAAuBx6B,KAAK4/B,mCAAmCpF,QAAwBj5B,EAG7Gm+B,IAUE,KAAAE,mCAAsCpF,IACnD,MAAM1D,EAAyB0D,EAAqBqF,QAE9CC,EAA2BhJ,EAAyB92B,KAAK+/B,4BAA4BjJ,QAA0Bv1B,EAEjHu+B,GAA4BA,IAA6B9/B,KAAKsf,iBAC9Dtf,KAAKmyB,iBAAiB2N,GAgB1B,MAbyB,CACrBlN,uBAAwBkE,EACxBlR,KAAM4U,EAAqBwF,WAC3B3b,OAAQmW,EAAqByF,SAC7B5Y,aAAcmT,EAAqB0F,SACnCtf,KAAM4Z,EAAqB5Z,KAC3BD,MAAO6Z,EAAqB7Z,MAC5BoD,QAASyW,EAAqB2F,IAC9B/Z,MAAOoU,EAAqBpU,MAC5B1F,yBAA0Bof,EAC1Bxe,iBAAkBthB,KAAKspB,qBAWd,KAAAqW,kBAAqBS,IAClC,MAAMtJ,EAAyBsJ,EAAexN,uBAExCkN,EAA2BhJ,EAAyB92B,KAAK+/B,4BAA4BjJ,QAA0Bv1B,EAEjHu+B,GAA4BA,IAA6B9/B,KAAKsf,iBAC9Dtf,KAAKmyB,iBAAiB2N,GAS1B,OANa33B,EAAAA,EAAA,GACNi4B,GAAc,IACjB1f,yBAA0Bof,EAC1Bxe,iBAAkBthB,KAAKspB,sBAWd,KAAAyW,4BAA+BjJ,IAC5C,MAAMnX,EAAgB3f,KAAKuf,eAAeG,MAAK2gB,IAAU,IAAAC,EACrD,OAAsB,QAAfA,EAAAD,EAAQzgB,eAAO,IAAA0gB,OAAA,EAAfA,EAAiBlnB,iBAAkB0d,EAAuB1d,iBAGrE,OAAOuG,MAAAA,OAAa,EAAbA,EAAeE,iBAMT,KAAAkX,iBAAmB,KAChC/2B,KAAKC,MAAMiI,YAAYD,KAAK,CACxBO,OAAQxI,KAAKugC,WAAa,WAAa,WACvCn4B,OAAQpI,KAAKoI,OACbC,SAAUrI,KAAKqI,SACfpE,SAAUjE,KAAKiE,WAGnB,MAAMyG,EAAgB1K,KAAKC,MAAM0I,KAAKC,SAASC,OAE/C,GAAI7I,KAAKugC,WAAY,CACjB,IAAIC,EACJ,MAAMC,EAAgCzgC,KAAKs9B,2BAGvCkD,EADA91B,MAAAA,GAAAA,EAAe5B,aAAaJ,KAAKg4B,gBAChBh2B,EAAc5B,aAAaJ,KAAKg4B,gBAEjD7vB,EAAAA,gBAAgBC,YAAY2vB,SACal/B,IAAzCk/B,EAAkB,GAAGC,iBACgC,KAArDD,EAAkB,GAAGC,gBAAgBhc,YAEpB+b,EAAkB,GAAGC,gBAC/B1gC,KAAKu/B,2CACKv/B,KAAKu/B,2CACfv/B,KAAKs/B,qBACKt/B,KAAKs/B,qBAEL50B,MAAAA,GAAAA,EAAei2B,yBAA2Bj2B,EAAck2B,wCAAqCr/B,EAG9Gi/B,IAAmBxgC,KAAKsyB,cAAc9R,QAAQggB,IAC9CxgC,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMoJ,GACpDxgC,KAAK6gC,oBAAoBL,GACzBxgC,KAAKq3B,qBACL3sB,MAAAA,GAAAA,EAAeo2B,yBAAyB,CAAEC,uBAAuB,MAEjE/gC,KAAKkzB,wBAAwB1K,EAAAA,EAAiByK,KAC9CvoB,MAAAA,GAAAA,EAAeo2B,yBAAyB,CAAEC,uBAAuB,OAQ5D,KAAA98B,SAAW,KACxB,OAAQjE,KAAKuyB,kBACT,KAAK/J,EAAAA,EAAiByK,IACtB,KAAKzK,EAAAA,EAAiBgK,OAClBxyB,KAAKC,MAAMqK,UAAU4G,YAAY,wDACjClR,KAAKoxB,4BACL,MACJ,KAAK5I,EAAAA,EAAiB0D,KAClBlsB,KAAKC,MAAMqK,UAAU4G,YAAY,+CACjClR,KAAKk/B,mBACL,MACJ,QACIl/B,KAAKC,MAAMqK,UAAUC,MAAM,uBAOtB,KAAAlC,SAAW,KACxB,OAAQrI,KAAKuyB,kBACT,KAAK/J,EAAAA,EAAiByK,IACtB,KAAKzK,EAAAA,EAAiBgK,OAClBxyB,KAAKC,MAAMqK,UAAU4G,YAAY,wDACjClR,KAAKswB,uBACEtwB,KAAKipB,iBAAoBjpB,KAAKsyB,cAAcpS,wBAC/ClgB,KAAKqxB,aAGT,MACJ,KAAK7I,EAAAA,EAAiB0D,KAClBlsB,KAAKC,MAAMqK,UAAU4G,YAAY,+CAC7BlR,KAAKipB,iBACLjpB,KAAKqxB,aAET,MACJ,QACIrxB,KAAKC,MAAMqK,UAAUC,MAAM,uBAOtB,KAAAnC,OAAS,KACtBpI,KAAKC,MAAMqK,UAAU4G,YAAY,sCAE7BlR,KAAKsyB,cAAcpS,uBAAyBlgB,KAAKu3B,gBACjDv3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB0D,KAAMlsB,KAAKu3B,iBAClDv3B,KAAKu3B,iBACZv3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiBgK,OAAQxyB,KAAKu3B,iBAG/Dv3B,KAAKq3B,sBAOQ,KAAAkJ,SAAW,KAAc,IAAAS,EAAAC,EACtC,MAAM,SAAEr4B,EAAQ,4BAAE0wB,GAAgCt5B,KAAKC,MAAM0I,MACvD,QAAEM,GAAYjJ,KAAKC,MAAM+I,QACzBwwB,EAAyBvwB,GAAWA,EAAQ2qB,SAAW3qB,EAAQ2qB,QAAQ6F,uBACvEC,EAAwBzwB,GAAWA,EAAQ2qB,SAAW3qB,EAAQ2qB,QAAQ+F,sBAC5E,SAAK/wB,EAASC,SAAWI,EAAQ2qB,SAAWhrB,EAASC,OAAOC,aAAa0X,SAAW5X,EAASC,OAAOC,aAAa8wB,kBAK1G55B,KAAKu5B,kCACqC,QADJyH,EACvCp4B,EAASC,OAAOC,aAAaJ,KAAKkJ,iBAAS,IAAAovB,OAAA,EAA3CA,EAA6C3zB,MAAKwsB,IAAQ,IAAAqH,EAAA,OACtDrH,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjBmH,EACjB5H,EAA4BzwB,cAAM,IAAAq4B,GAAyB,QAAzBA,EAAlCA,EAAoClH,+BAAuB,IAAAkH,OAAA,EAA3DA,EAA6DxhB,MACzDua,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBL,EACnCG,KAEiC,QAD1CoH,EACDr4B,EAASC,OAAOC,aAAaJ,KAAKkJ,iBAAS,IAAAqvB,OAAA,EAA3CA,EAA6C5zB,MAAKwsB,GAC9CA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBP,GAA0BK,EAASE,eAAiBL,EAC9EG,MAOH,KAAAqF,iBAAmB,KAChCl/B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKk9B,4BACzDl9B,KAAK6gC,oBAAoB7gC,KAAKk9B,4BAC9Bl9B,KAAKq3B,sBAMQ,KAAA1F,gBAAkB,KAC/B3xB,KAAK2zB,6BACL3zB,KAAKkzB,wBAAwB1K,EAAAA,EAAiByK,MAOjC,KAAAR,sBAAyBrS,IAClCA,EAASuB,oBACT3hB,KAAK2hB,kBAAoBvB,EAASuB,mBAGlCvB,EAASK,UACTzgB,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMhX,EAASK,SAC7DzgB,KAAK6gC,oBAAoBzgB,EAASK,SAClCzgB,KAAKq3B,uBAQI,KAAAwJ,oBAAuBpgB,IACpC,GAAIzgB,KAAKC,MAAM0I,KAAKC,SAASC,OAAQ,CACjC,MAAMs4B,EAAkBh5B,EAAA,GAAQsY,GAE5BA,EAAQC,2BAA6BygB,EAAmBvO,yBACxDuO,EAAmBvO,uBAAyB5yB,KAAKkpB,cAAchG,0BAA0BzC,EAAQC,2BAGrG1gB,KAAKC,MAAM0I,KAAKC,SAASC,OAAOu4B,sBAAsB,CAAED,mBAAAA,IACxDnhC,KAAKC,MAAM0I,KAAKC,SAASC,OAAOC,aAAas4B,sBAAsB,CAAED,mBAAAA,IAAsBn0B,OAAMzC,IAC7FvK,KAAKC,MAAMqK,UAAUC,MAAMA,QAYtB,KAAA8mB,WAAa,KAC1B,OAAQrxB,KAAKuyB,kBACT,KAAK/J,EAAAA,EAAiByK,IACtB,KAAKzK,EAAAA,EAAiBgK,OAClBxyB,KAAKkzB,wBACDlzB,KAAKsyB,cAAcpS,sBAAwBsI,EAAAA,EAAiB0D,KAAO1D,EAAAA,EAAiB4O,KACpFp3B,KAAKu3B,iBAET,MACJ,QACIv3B,KAAKkzB,wBAAwB1K,EAAAA,EAAiB4O,KAAMp3B,KAAKu3B,iBAEjEv3B,KAAKq3B,sBAQQ,KAAAnE,wBAA0B,CAACC,EAA6BlK,KACrEjpB,KAAKuyB,iBAAmBY,EACxBnzB,KAAKipB,gBAAkBA,EAEnBjpB,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,QAC7FxyB,KAAKuwB,iBAAmBpoB,EAAA,GAAKnI,KAAKipB,kBAAqB,IACvD7D,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CACvB7P,yBAA0B1gB,KAAKuwB,iBAAiB7P,0BAA4B1gB,KAAKsf,mBAErF8F,EAAAA,EAAAA,IAAIplB,KAAKuwB,iBAAkB,CACvBjP,iBAAkBthB,KAAKuwB,iBAAiBjP,kBAAoBthB,KAAKspB,sBAE9DtpB,KAAKuyB,mBAAqB/J,EAAAA,EAAiB0D,OAClDlsB,KAAKk9B,2BAA6B/0B,EAAA,GAAKnI,KAAKipB,kBAAqB,KAOxD,KAAAoO,mBAAqB,KAC9Br3B,KAAKuyB,mBAAqB/J,EAAAA,EAAiB4O,KAC3Cp3B,KAAKC,MAAMiI,YAAYuB,UAChBzJ,KAAKiU,WACZjU,KAAKC,MAAMiI,YAAYm5B,YAEvBrhC,KAAKC,MAAMiI,YAAYoB,cAQd,KAAA81B,cAAiB3e,IAC9B,IAAK,MAAM6gB,KAAmBthC,KAAK2hB,kBAAmB,CAAC,IAAD4f,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAClD,IACiB,QAAbR,EAAC9gB,EAAQmF,YAAI,IAAA2b,EAAAA,EAAI,MAAQD,EAAgB1b,OAC1B,QAAf4b,EAAC/gB,EAAQ4D,cAAM,IAAAmd,EAAAA,EAAI,MAAQF,EAAgBjd,SACtB,QAArBod,EAAChhB,EAAQ4G,oBAAY,IAAAoa,EAAAA,EAAI,MAAQH,EAAgBja,eACpC,QAAbqa,EAACjhB,EAAQG,YAAI,IAAA8gB,EAAAA,EAAI,MAAQJ,EAAgB1gB,OAC3B,QAAd+gB,EAAClhB,EAAQE,aAAK,IAAAghB,EAAAA,EAAI,MAAQL,EAAgB3gB,QAC1B,QAAhBihB,EAACnhB,EAAQsD,eAAO,IAAA6d,EAAAA,EAAI,MAAQN,EAAgBvd,UAC9B,QAAd8d,EAACphB,EAAQ2F,aAAK,IAAAyb,EAAAA,EAAI,MAAQP,EAAgBlb,QACT,QAAjC0b,EAACrhB,EAAQC,gCAAwB,IAAAohB,EAAAA,EAAI,MAAQR,EAAgB5gB,2BACpC,QAAzBqhB,EAACthB,EAAQa,wBAAgB,IAAAygB,EAAAA,EAAI,MAAQT,EAAgBhgB,iBAErD,OAAO,EAIf,OAAO,GAIM,KAAA0W,iBAAoB31B,IACjCrC,KAAKC,MAAMqK,UAAUC,MAAMlI,GAC3BrC,KAAKC,MAAMiI,YAAYsC,aAAY,GACnCxK,KAAKC,MAAMiI,YAAYoB,aACvBtJ,KAAKiK,SAAS,CACV5H,aAAAA,KAIS,KAAAg9B,YAAc,KAC3Br/B,KAAKC,MAAMiI,YAAYsC,aAAY,GACnCxK,KAAKiK,SAAS,CACV5H,aAAc,MASL,KAAA2/B,YAAeC,GACrBA,EAAU/H,QAAO,CAACC,EAAOuD,IACrBvD,GAASuD,EAAKtB,UAAY,IAClC,GAtoCHp8B,KAAK+H,MAAQ,CAAE+1B,eAAgB,IAC/B,MAAM,QAAE90B,EAAO,KAAEL,EAAI,UAAEzF,EAAS,UAAEoH,GAActK,KAAKC,MAErDD,KAAKuwB,iBAAmB,GACxBvwB,KAAKkD,UAAYA,EACjBlD,KAAKuyB,iBAAmB/J,EAAAA,EAAiB0D,KACzClsB,KAAKuf,eAAiB5W,EAAK4W,eAAe1W,QAAU,GACpD7I,KAAK4hB,gBAAkBjZ,EAAKiZ,gBAAgB/Y,QAAU,GACtD7I,KAAK2hB,kBAAoBhZ,EAAK8X,QAAQ5X,QAAU,GAChD7I,KAAK2iB,kBAAoBha,EAAK+sB,cAAc7sB,QAAU,GACtD7I,KAAKsyB,cAAgB,IAAIlT,EAAAA,EAAcpW,EAAS9F,EAAWoH,GAC3DtK,KAAKkpB,cAAgB,IAAI5G,EAAAA,EACrBtiB,KAAKuf,eACL,IAAIgH,EAAAA,EAAepe,EAAC,GAAKjF,GAAalD,KAAK6yB,gCAC3C7yB,KAAK4hB,iBAET5hB,KAAKqjB,gBAAkB,GACvBrjB,KAAKu5B,kCAA4D,QAA3B0D,EAAGt0B,EAAK8rB,aAAa5rB,cAAM,IAAAo0B,GAEhE,QAFgEA,EAAxBA,EAA0Bvd,MAC/DgV,GAAWA,EAAQ9O,OAAS5lB,KAAKm9B,uCACpC,IAAAF,OAAA,EAFwCA,EAEtCtI,UACH30B,KAAKwU,kBAAmBsB,EAAAA,EAAAA,oBACpB9V,KAAKC,MAAM+I,QAAQC,QAAQ8M,kBAC3B/V,KAAKC,MAAM+V,aACXhW,KAAKC,MAAMqK,WAIZ,0BAAuB,IAAA8H,EAC1B,MACIpJ,SAAS,UACLsB,EACAuC,eACI6H,gBAAgB,QAAEkf,KAG1B9zB,QAAQ,sBAAE+zB,EAAqB,mBAAE9W,GAAoB,UACrD7Z,GACAlD,KAAKC,MAoDT,GAjDAD,KAAK2wB,gBAAgB3wB,KAAKC,OAE1BD,KAAKkpB,cAAgB,IAAI5G,EAAAA,EACrBtiB,KAAKuf,eACL,IAAIgH,EAAAA,EAAepe,EAAC,GAAKjF,GAAalD,KAAK6yB,gCAC3C7yB,KAAK4hB,iBAGT5hB,KAAKC,MAAM0I,KAAKC,SAASkE,MAAK,KAC1B9M,KAAK2zB,6BACL3zB,KAAK+2B,uBAGT/kB,EAAAA,EAAAA,KACI,IAAMhS,KAAKsf,kBACX,KACItf,KAAKgzB,yBAIbhhB,EAAAA,EAAAA,KACI,IAAMhS,KAAKuyB,mBACX,KACIvyB,KAAKgzB,yBAIbhhB,EAAAA,EAAAA,KACI,SAAAF,EAAA,OAAqC,QAArCA,EAAM9R,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAiJ,OAAA,EAA/BA,EAAiC8uB,sCACvC,KACI,IAAK5gC,KAAKw/B,mCAAqCx/B,KAAKugC,WAAY,CAAC,IAADruB,EAAAgwB,EAC5D,IAAIzhB,EAAyC,QAAlCvO,EAAGlS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiC0uB,mCAE/C,GAAW,QAAXsB,EAAIzhB,SAAO,IAAAyhB,GAAPA,EAAStP,uBAAwB,CACjC,MAAMkN,EAA2B9/B,KAAK+/B,4BAA4Btf,EAAQmS,wBAE1EnS,EAAOtY,EAAAA,EAAA,GAAQsY,GAAO,IAAEC,yBAA0Bof,IAE9CA,GAA4BA,IAA6B9/B,KAAKsf,iBAC9Dtf,KAAKmyB,iBAAiB2N,GAI9B9/B,KAAKkzB,wBAAwB1K,EAAAA,EAAiByK,IAAKxS,GACnDzgB,KAAKoxB,gCAKbyC,EAAuB,CACvB,GAAID,IAAYA,EAAQ5W,eAEpB,YADA1S,EAAUC,MAAM,8BAIpB,GAAIqpB,IAAYA,EAAQE,gBAEpB,YADAxpB,EAAUC,MAAM,4BAIpB,MAAMnI,EAAO+F,EAAA,GAA6B4U,GAC1C/c,KAAKywB,YAAc,IAAI3T,EAAAA,EACnBxS,EACAlI,EACAwxB,MAAAA,OAAO,EAAPA,EAAS5W,eACT4W,MAAAA,OAAO,EAAPA,EAASG,4BACTH,MAAAA,OAAO,EAAPA,EAASI,oBAKTh0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,QACzC7I,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,cAExFxyB,KAAKywB,YAAY1R,kBAAkB/e,KAAKC,MAAM0I,KAAKqW,4BAG7DhN,EAAAA,EAAAA,KACI,SAAAiiB,EAAA,OACoD,QAAhDA,EAAAj0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAorB,OAAA,EAAhDA,EAAkDhV,cACjDjf,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,WAClG5uB,UAAW,IAAAswB,QACe,QAAtBA,EAAMl0B,KAAKywB,mBAAW,IAAAyD,OAAA,EAAhBA,EAAkBnV,kBAAkB/e,KAAKC,MAAM0I,KAAKqW,gCAIlEhN,EAAAA,EAAAA,KACI,SAAAmiB,EAAA,OAAsD,QAAtDA,EAAMn0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAsrB,OAAA,EAAhDA,EAAkDlC,kBACxDruB,gBACU5D,KAAK+xB,2BAKY,QAAnC3f,EAAIpS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAuJ,GAA/BA,EAAiCimB,6CACjCrmB,EAAAA,EAAAA,KACI,SAAAM,EAAA,OAAqC,QAArCA,EAAMtS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAyJ,OAAA,EAA/BA,EAAiCgmB,iBACvCA,IAEQA,GACAA,EAAcC,gBAAkBC,EAAAA,cAAcwE,yBAC9C1E,EAAcj2B,cAEdrC,KAAKg4B,iBAAiBM,EAAcj2B,kBAKhD2P,EAAAA,EAAAA,KACI,SAAAO,EAAA,OAAqC,QAArCA,EAAMvS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA0J,OAAA,EAA/BA,EAAiCkmB,sBACvCA,IACQA,IAAuB7b,EAAAA,eAAeogB,0BACtC5gB,EAAAA,EAAAA,GAAqBpc,KAAKqc,iBAAkBrc,KAAKC,MAAM+I,QAAQ6D,yBAMzE7M,KAAKo9B,mBAGR,2BACuG,IAADhJ,EAIlGC,EAJHr0B,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,OACzC,QAApD4B,EAAIp0B,KAAKC,MAAM0I,KAAKqW,0BAA0BnW,cAAM,IAAAurB,GAAhDA,EAAkDnC,sBAC5CjyB,KAAK+xB,wBAGC,QAAhBsC,EAAAr0B,KAAKywB,mBAAW,IAAA4D,GAAhBA,EAAkB3V,qBAInBzL,sBAAsBC,EAAkCC,GAC3D,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SAAM,IAAAsiC,EACT,IAAKniC,KAAKugC,WACN,OAAO,KAGX,MAAM,OACFzgC,EAAM,QACNkJ,EAAO,WACPuF,EAAU,UACVrL,EACAgF,aAAa,SAAEwI,IACf1Q,KAAKC,OACH,cAAEmiC,EAAa,UAAEC,EAAS,eAAEC,EAAc,kBAAE1J,GAAsB11B,GAClE,cAAEq/B,GAAkBziC,EAGpBmiC,EAA6CjiC,KAAK+H,MAAM+1B,eACzDxtB,QAAOstB,IAAMxH,EAAAA,iBAAiBC,kBAAkBuH,EAAED,WAClD77B,KAAI47B,IAAI,IAAA8E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MAAK,CACVzG,OAA4B,QAAtBmG,EAAE9E,EAAK7D,SAASkJ,cAAM,IAAAP,EAAAA,EAAI,GAChCjG,WAAY,CACR7nB,eAAgB1L,EAAQ6D,cAAc6H,eACtCrU,UAAW,8DACXo8B,QAAqB,QAAdgG,EAAE/E,EAAKC,eAAO,IAAA8E,OAAA,EAAZA,EAAc7c,KACvBod,IAAkC,QAA/BN,EAAc,QAAdC,EAAEjF,EAAKC,eAAO,IAAAgF,OAAA,EAAZA,EAAcM,uBAAe,IAAAP,EAAAA,EAAI,GACtCQ,aAAaC,EAAAA,EAAAA,qBACG,QADgBP,EAC5BlF,EAAKC,eAAO,IAAAiF,OAAA,EAAZA,EAAcQ,OACdp6B,EAAQ6D,cAAc6H,eAAe4L,YAClB,QAD6BuiB,EAChD75B,EAAQC,QAAQG,WAAG,IAAAy5B,GAAQ,QAARA,EAAnBA,EAAqB/iC,cAAM,IAAA+iC,OAAA,EAA3BA,EAA6BQ,kBAEjC1H,aAAc3yB,EAAQC,QAAQ0yB,aAC9B4G,cAAeA,MAAAA,EAAAA,EAAiB7F,EAChC4G,oBAAqB,SAEzBlH,SAAgC,QAAxB0G,EAAEpF,EAAK7D,SAAS0J,gBAAQ,IAAAT,EAAAA,EAAI,MAGtCU,EAAoBxjC,KAAKgiC,YAAYC,GACrCwB,EAAWD,EAAoB,EAAInB,EAAYC,EAC/CjH,EAAY,KAAIxT,EAAAA,EAAAA,QAAO4b,EAAUD,MAEjCE,EAAkD,CACpD31B,gBAAiB,+BACjBqtB,UAAW6G,EAAU3xB,QAAOstB,IAAMxH,EAAAA,iBAAiBC,kBAAkBuH,KACrEvC,UAAWA,EACX36B,MAAO0hC,EACPl/B,UAAWlD,KAAKC,MAAMiD,WAGpBygC,EAAkC/jC,EAAAA,cAACu7B,EAAuBrsB,OAAAC,OAAA,GAAK20B,KAE/D,aAAEjP,GAAiBz0B,KAAKC,MAAM0I,KAC9Bi7B,EAAyD,QAAtBzB,EAAG1N,EAAa5rB,cAAM,IAAAs5B,GAAiE,QAAjEA,EAAnBA,EAAqBziB,MAAKgV,GAFhC,oEAE2CA,EAAQ9O,cAAuC,IAAAuc,OAAA,EAApFA,EACtCxN,UAEAtyB,EAAerC,KAAK+H,MAAM1F,aAqDhC,OAAOkM,EAnDQpG,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACbsyB,iBAAkBvyB,KAAKuyB,iBACvBtJ,gBAAiBjpB,KAAKipB,gBACtBsH,iBAAkBvwB,KAAKuwB,iBACvB2M,2BAA4Bl9B,KAAKk9B,2BACjC5d,gBAAiBtf,KAAKsf,gBACtBqD,kBAAmB3iB,KAAK2iB,kBACxBhB,kBAAmB3hB,KAAK2hB,kBACxB0B,gBAAiBrjB,KAAKqjB,gBACtBkH,sBAAuBvqB,KAAKuqB,sBAC5BtW,WAAYjU,KAAKiU,WACjBvD,SAAU1Q,KAAK0Q,SACfrQ,UAAWP,EAAOO,UAClB4X,UAAW,CACPggB,cAAej4B,KAAKuyB,mBAAqB/J,EAAAA,EAAiB4O,MAAQp3B,KAAKipB,gBACvE8L,iBAAkB/0B,KAAKuyB,mBAAqB/J,EAAAA,EAAiB0D,MAAQlsB,KAAK2hB,kBAAkBvhB,OAAS,EACrG40B,yBACIh1B,KAAKuyB,mBAAqB/J,EAAAA,EAAiByK,KAAOjzB,KAAKuyB,mBAAqB/J,EAAAA,EAAiBgK,QAErGwK,wBAAyB,CACrB9uB,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAW,+BAAgClE,EAAOO,YAEjE24B,YAAah5B,KAAKi5B,qBAClB10B,MAAOmM,GAAYrO,GAAgBzC,EAAAA,cAAC6rB,EAAAA,EAAc3c,OAAAC,OAAA,GAAK,CAAErO,MAAOk4B,EAAmBziB,QAAS9T,KAC5Fga,iBAAkBrc,KAAKqc,iBASvBwnB,yBAA0BA,CAAC7E,EAAkCJ,EAA4BC,IACrF7+B,KAAK++B,qBAAqBC,EAAqBJ,EAAeC,GAQlEiF,8BAA+BA,CAAClF,EAA4BC,IACxD7+B,KAAK+wB,0BAA0B6N,EAAeC,GAClD1J,uBAAwBn1B,KAAK+wB,4BAC7B4S,eAAgBC,EAAsCD,OAAiBpiC,EACvEwiC,kBAAmB/jC,KAAK++B,0BAgFhC,wCAA4C,IAAAiF,EAAAC,EAExC,MAAMC,EAEe,QAFLF,EACQ,QADRC,EACZjkC,KAAKC,MAAM0I,KAAKD,YAAI,IAAAu7B,GAAQ,QAARA,EAApBA,EAAsBp7B,cAAM,IAAAo7B,GAAM,QAANA,EAA5BA,EAA8Bv7B,YAAI,IAAAu7B,GAAqB,QAArBA,EAAlCA,EAAoCE,2BAAmB,IAAAF,GAA4D,QAA5DA,EAAvDA,EAAyDvkB,MAAK0kB,GAA6B,0BAAjBA,EAASC,aAAgC,IAAAJ,GAAO,QAAPA,EAAnHA,EAAqHK,aAAK,IAAAL,OAAA,EAA1HA,EACMM,mBAAW,IAAAP,EAAAA,EAAI,GAEzB,OAAOE,EAAcM,KAAKC,MAAMP,GAAyC,KAuNrEjL,qBACJ,OAAIj5B,KAAKipB,iBACE4D,EAAAA,EAAAA,GAAY,CACfpM,QAASzgB,KAAKipB,gBACdC,cAAelpB,KAAKkpB,cAAczF,iBAAiBzjB,KAAKipB,gBAAgBvI,0BAA4B,IACpGkB,gBAAiB5hB,KAAK4hB,kBAIvB,KAwKH+R,6BAA0B,IAAA4C,EAC9B,MAAM,QAAEttB,GAAYjJ,KAAKC,MAAM+I,QACzBmW,EAAwB,QAAlBoX,EAAGttB,EAAQ2qB,eAAO,IAAA2C,OAAA,EAAfA,EAAiBxC,4BAChC/zB,KAAKsf,gBAAkBtf,KAAKsyB,cAAcjT,0BAA0Brf,KAAKsf,gBAAiBtf,KAAKuf,eAAgBJ,GAgSzG,sBAA2B,IAAAzM,EACjC,OAAsC,QAAtCA,EAAO1S,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA6J,OAAA,EAA/BA,EAAiC6kB,mBA3kChC/oB,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,wCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,wCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,yCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,yCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,uCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,6CAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,kCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,gCAECvN,EAAAA,EAAAA,IAAA,CAAXuN,EAAAA,IAAU,kDA+TXvN,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,wCA0BP7mB,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,6CAuBP7mB,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,2CAoBP7mB,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,wCAsrBG7mB,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,qCAkFTD,EAAAA,EAAAA,IAAA,CADC6mB,EAAAA,IAAM,uCA5pCL2H,GAAuBxuB,EAAAA,EAAAA,IAAA,CAF5BG,EAAAA,gBACAD,EAAAA,IACKsuB,GAyrCN,yGCtyCA,MAAMnQ,EAA2CvmB,IAA6B,IAA5B,cAAEupB,EAAa,MAAEhuB,GAAOyE,EACtE,OACI1G,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK8gB,GACLhuB,EAAMC,KAAKuN,GACDzP,EAAAA,cAAAA,EAAAA,SAAA,KAAGyP,EAAK0gB,iBAkBzBP,EAA+CvgB,IAQhD,IARiD,cAClDygB,EAAa,UACbjB,EAAS,MACT5sB,EAAK,iBACL4oB,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACH9b,EACG,OACIrP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK2gB,GACLjB,EACA5sB,EAAMC,KAAKuN,IACR,MAAMkgB,EAAalgB,EAAKkgB,WACxB,OACI3vB,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKwgB,EAAU,CAAEttB,IAAKoN,EAAKpN,MAC3BoN,EAAKtD,MACNnM,EAAAA,cAACitB,EAAW/d,OAAAC,OAAA,GAAKM,EAAKud,gBAIjCnC,GAAoBC,EACpBI,GAAsBC,IAmB7BZ,EAAqDhb,IAUtD,IAVuD,YACxDqb,EAAW,QACX7U,EAAO,MACP9T,EAAK,SACL6O,EAAQ,MACRnG,EAAK,iBACLkgB,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACH5b,EACG,OACIvP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKyb,GACL7U,EACA9T,EAAMC,KAAKuN,IACR,MAAM,YAAE2a,EAAW,IAAE/nB,EAAG,MAAEiC,EAAK,MAAEK,EAAK,MAAEwH,GAAUsD,EAClD,OACIzP,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKib,EAAW,CAAE/nB,IAAKA,IACvBiC,EACAK,EACAwH,MAIZ2E,GACG9Q,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKxE,EAAM2gB,cACX3gB,EAAM7J,MACN6J,EAAM4L,SAGdsU,GAAoBC,EACpBI,GAAsBC,IAiCnC,EAvBiF9qB,IAC7E,MAAM,wBACF+8B,EAAuB,iBACvB3gB,EAAgB,MAChB9X,EAAK,UACL0T,EAAS,YACT+gB,EAAW,kBACX+K,EAAiB,uBACjB5O,EAAsB,eACtBwO,GACA1jC,EAEJ,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKiuB,EAAuB,CAAEj4B,IAAKsX,IACrC9X,EACAo/B,EACA1rB,EAAUggB,eAAiBr4B,EAAAA,cAACitB,EAAW/d,OAAAC,OAAA,GAAKiqB,IAC5C/gB,EAAU8c,kBAAoBn1B,EAAAA,cAAC4vB,EAAa1gB,OAAAC,OAAA,GAAKg1B,IACjD9rB,EAAU+c,0BAA4Bp1B,EAAAA,cAACuqB,EAAgBrb,OAAAC,OAAA,GAAKomB,0NC5HlE,MAAMuP,UAAkB9kC,IAAAA,UAC3BiI,YAAY5H,GACR+P,MAAM/P,GAsBO,KAAA0kC,mBAAsBC,IACnC5kC,KAAKiK,SAAS,CACV46B,WAAYD,EAAGvjC,OAAO6D,SAIb,KAAA4/B,SAAW,KACxB9kC,KAAKC,MAAM6kC,SAAS9kC,KAAK+H,MAAM88B,aAGlB,KAAAE,YAAervB,IACxBA,EAAMsvB,UAAYC,EAAAA,SAASC,OAC3BllC,KAAK8kC,YAjCT9kC,KAAK+H,MAAQ,CACT88B,WAAY,IAIbhlC,SACH,MAAM,UAAEQ,EAAS,uBAAE8kC,GAA2BnlC,KAAKC,MACnD,OACIL,IAAAA,cAAA,OAAKS,UAAW,GAAGA,aACfT,IAAAA,cAAA,SACIoF,KAAK,OACL3E,UAAW,GAAGA,eACdiF,YAAa6/B,EACblgC,SAAUjF,KAAK2kC,mBACfS,QAASplC,KAAK+kC,cAElBnlC,IAAAA,cAAA,UAAQS,UAAW,GAAGA,kBAA2BqF,QAAS1F,KAAK8kC,SAAUpkC,MAAOykC,MC6DzF,MAAME,UAAwBzlC,IAAAA,UACjCiI,YAAY5H,GACR+P,MAAM/P,GAkEO,KAAAqlC,iBAAmB,KAChC,MAAMjlC,EAAY,GAAGL,KAAKC,MAAMI,oBAC1BklC,EAAe,GAAGllC,SACxB,OACIT,IAAAA,cAAA,SAAOS,UAAWA,GACdT,IAAAA,cAAA,MAAIS,UAAWklC,GACVvlC,KAAKC,MAAMulC,QAAQ1jC,KAAI2jC,GACpB7lC,IAAAA,cAAA,MAAIqC,IAAKwjC,EAAOC,SAAUrlC,UAAWolC,EAAOplC,WACvColC,EAAO9hB,WAcf,KAAAgiB,cAAgB,CAACt2B,EAAarN,KAC3C,MAAMujC,EAAe,GAAGvlC,KAAKC,MAAMI,iBACnC,OACIT,IAAAA,cAAA,MAAIS,UAAWklC,EAActjC,IAAKD,GAC7BhC,KAAKC,MAAMulC,QAAQ1jC,KAAI2jC,IACpB,IAAIG,EAAoBhmC,IAAAA,cAAAA,IAAAA,SAAA,MAMxB,OALI6lC,EAAOI,SACPD,EAAOH,EAAOI,SAASx2B,GAChBo2B,EAAOK,YACdF,EAAOhmC,IAAAA,cAAA,YAASyP,EAA+Co2B,EAAOK,aAGtElmC,IAAAA,cAAA,MAAIqC,IAAKwjC,EAAOC,SAAUrlC,UAAWolC,EAAOplC,UAAWqF,QAASA,KAAA,IAAAqgC,EAAA,OAAoB,QAApBA,EAAMN,EAAO//B,eAAO,IAAAqgC,OAAA,EAAdA,EAAAC,KAAAP,EAAiBp2B,KAClFu2B,QAYR,KAAAK,iBAAmBriC,UAChC,GAAK5D,KAAKC,MAAM+I,QAAQ6D,cAAc6H,eAAexL,KAAKC,gBAM1D,IACI,MAAMN,QAAe7I,KAAKC,MAAMimC,WAChClmC,KAAKiK,SAAS,CACVk8B,WAAW,EACXx9B,KAAME,IAEZ,MAAOhF,GAAI,IAADuiC,EACRpmC,KAAKiK,SAAS,CACVk8B,WAAW,EACX9jC,cAAewB,MAAAA,GAAuC,QAANuiC,EAAjCviC,EAAmC8E,YAAI,IAAAy9B,OAAA,EAAvCA,EAAyCC,mBAAoBrmC,KAAKC,MAAMiD,UAAUojC,2BAdrGtmC,KAAKiK,SAAS,CACVk8B,WAAW,KAkBN,KAAArB,SAAYD,IACzB7kC,KAAKiK,SAAS,CACVs8B,OAAQ,CAAEvkC,MAAO,GACjBsO,OAAQ,CAAEu0B,WAAAA,MAID,KAAA2B,SAAW,KACxBxmC,KAAKiK,SAAS,CACVs8B,OAAQ,CAAEvkC,MAAOhC,KAAK+H,MAAMw+B,OAAOvkC,MAAQ,MAIlC,KAAAykC,SAAW,KACxB,MAAMC,EAAU1mC,KAAK+H,MAAM2+B,QAC3B,IAAKA,EACD,OAAO1mC,KAAK+H,MAAMY,KAEtB,MAAM,UAAEm9B,EAAS,UAAEa,GAAcD,EACjC,OAAO1mC,KAAK+H,MAAMY,KAAKi+B,MAAK,CAACC,EAAcC,KACvC,IAAIC,EAAWF,EAAgDf,GAC3DkB,EAAWF,EAAgDhB,GACzC,iBAAXiB,GAAyC,iBAAXC,IACrCD,EAASA,EAAO3tB,cAChB4tB,EAASA,EAAO5tB,eAEpB,MAAM6tB,EAAgBF,EAASC,EAAS,EAAID,EAASC,GAAU,EAAI,EACnE,OAAOL,EAAYM,GAAiC,EAAjBA,MAI1B,KAAAC,WAAa,KAC1B,MAAMzB,EAASzlC,KAAKC,MAAMulC,QAAQ9lB,MAAKynB,GAAKA,EAAEC,eACxCvC,EAAa7kC,KAAK+H,MAAMuI,OAAOu0B,WACrC,OAAO7kC,KAAKymC,WAAWn2B,QAAOjB,IAC1B,GAAKo2B,MAAAA,IAAAA,EAAQK,YAAcjB,EACvB,OAAO,EAEX,MAAMwC,EAAgBh4B,EAA+Co2B,EAAOK,WAC5E,OAAOuB,GAAeA,EAAYjuB,cAAckuB,QAAQzC,EAAWh6B,OAAOuO,gBAAkB,MAInF,KAAAmuB,iBAAmB,KAChC,MAAMC,GAAcxnC,KAAKC,MAAMwnC,UAzLf,KAyL+CznC,KAAK+H,MAAMw+B,OAAOvkC,MAAQ,GAEzF,OADsBhC,KAAKknC,aACNQ,MAAM,EAAGF,IAGjB,KAAAG,QAAU,KACvB,MAAMH,GAAcxnC,KAAKC,MAAMwnC,UA/Lf,KA+L+CznC,KAAK+H,MAAMw+B,OAAOvkC,MAAQ,GAEzF,OADsBhC,KAAKknC,aACN9mC,OAASonC,GAzL9BxnC,KAAK+H,MAAQ,CACTY,KAAM,GACN+9B,QAASzmC,EAAM2nC,eACfrB,OAAQ,CAAEvkC,MAAO,GACjBsO,OAAQ,CAAEu0B,WAAY,IACtBsB,WAAW,EACX9jC,aAAc,IAIfqL,oBACH1N,KAAKimC,mBAGFhzB,sBAAsBC,EAA4CC,GACrE,OACInT,KAAKC,MAAMkE,KAAO+O,EAAU/O,IAC5BnE,KAAKC,MAAMulC,UAAYtyB,EAAUsyB,SACjCxlC,KAAK+H,MAAMY,OAASwK,EAAUxK,MAC9B3I,KAAK+H,MAAMw+B,SAAWpzB,EAAUozB,QAChCvmC,KAAK+H,MAAMuI,SAAW6C,EAAU7C,QAChCtQ,KAAK+H,MAAMo+B,YAAchzB,EAAUgzB,WACnCnmC,KAAK+H,MAAM1F,eAAiB8Q,EAAU9Q,aAIvCxC,SACH,MAAM8I,EAAO3I,KAAKunC,mBACZI,EAAU3nC,KAAK2nC,UACrB,OAAI3nC,KAAK+H,MAAM1F,aACJzC,IAAAA,cAAC4E,EAAAA,MAAK,CAACqjC,MAAM,UAAU7nC,KAAK+H,MAAM1F,cAEzCrC,KAAK+H,MAAMo+B,UACJvmC,IAAAA,cAAA,QAAMS,UAAW,GAAG0N,cAA6B/N,KAAKC,MAAMiD,UAAU4kC,cAE5Ej3B,EAAAA,gBAAgBC,YAAYnI,GAS7B/I,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC8kC,EAAS51B,OAAAC,OAAA,GAAK/O,KAAKC,MAAK,CAAE6kC,SAAU9kC,KAAK8kC,YAC1CllC,IAAAA,cAAA,SAAOS,UAAWL,KAAKC,MAAMI,WACxBL,KAAKslC,mBACL38B,EAAK7G,KAAI,CAACuN,EAAMrN,IAAUhC,KAAK2lC,cAAct2B,EAAMrN,MAEvD2lC,GACG/nC,IAAAA,cAAA,OAAKS,UAAW,GAAGL,KAAKC,MAAMI,wBAC1BT,IAAAA,cAAC6F,EAAAA,OAAM,CAACC,QAAS1F,KAAKwmC,SAAUnmC,UAAW,GAAGL,KAAKC,MAAMI,4BACpDL,KAAKC,MAAMiD,UAAU6kC,2BAhBlCnoC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC8kC,EAAS51B,OAAAC,OAAA,GAAK/O,KAAKC,MAAK,CAAE6kC,SAAU9kC,KAAK8kC,YAC1CllC,IAAAA,cAAA,KAAGS,UAAW,GAAG0N,oBAAmC/N,KAAKC,MAAMiD,UAAU8kC,slBCxGtF,MAAMC,UAAkCroC,IAAAA,UAA/CiI,cAAA,oBAqBqB,KAAAqgC,WAAa,KAC1B,MAAMC,EAAsG,QAArF5M,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAY2M,SAAUp/B,QAAShJ,KAAKC,MAAM+I,QAAQC,UAE7F,MAAO,CACH,CACIy8B,SAAU,OACV/hB,KAAM3jB,KAAKC,MAAMiD,UAAUmlC,iCAC3BjB,cAAc,EACdtB,UAAW,OACXpgC,QAAS1F,KAAKC,MAAMqoC,SACpBzC,SAAWl9B,GAAwC/I,IAAAA,cAAA,KAAG6E,KAAK,UAAUkE,EAAKgb,OAE9E,CACI+hB,SAAU,QACV/hB,KAAM3jB,KAAKC,MAAMiD,UAAUqlC,kCAC3BzC,UAAW,QACXpgC,QAAS1F,KAAKC,MAAMqoC,UAExB,CACI5C,SAAU,gBACV/hB,KAAM3jB,KAAKC,MAAMiD,UAAUslC,0CAC3BnoC,UAAW,GAAGL,KAAKC,MAAMI,qCACzBylC,UAAW,gBACXpgC,QAAUyiC,OAAuC5mC,EAAtBvB,KAAKC,MAAMqoC,YASjC,KAAAG,wBAA0B7kC,gBACR8kC,EAAAA,4BAAAA,cAC3B,CACI97B,cAAe5M,KAAKC,MAAM+I,QAAQ6D,cAClC87B,YAAa,MACbC,oBAAqB,IAEzB5oC,KAAKC,MAAM4oC,gBAAgBC,oBAG1Bx4B,QAAOpH,GAA6B,IAArBA,EAAK6/B,cACpBjnC,KAAIoH,GACDf,EAAAA,EAAA,GACOe,GAAI,IACPya,KAAM,GAAGza,EAAK8/B,aAAa9/B,EAAK+/B,WAChCC,cACItpC,IAAAA,cAACiP,EAAAA,KAAI,CAACxO,UAAU,kBACV+1B,EAAAA,iBAAiBC,kBAAkBntB,EAAKigC,eAEpC,GADAnpC,KAAKC,MAAM+I,QAAQc,iBAAiBC,eAAeb,EAAKigC,cAAc9Z,YAE1E+G,EAAAA,iBAAiBC,kBAAkBntB,EAAKigC,gBAAyC,IAAvBjgC,EAAKigC,cAQ7D,GAPAvpC,IAAAA,cAAA,OACIS,UAAU,0BAAyB,aACvB,GAAGL,KAAKC,MAAMiD,UAAUkmC,+CAEpCxpC,IAAAA,cAAA,KAAGS,UAAU,iBAAgB,cAAa,eA7EnE4S,sBAAsBC,GACzB,OAAOlT,KAAKC,MAAMkE,KAAO+O,EAAU/O,GAGhCtE,SACH,OACID,IAAAA,cAACylC,EAAQv2B,OAAAC,OAAA,GACD/O,KAAKC,MAAK,CACdimC,SAAUlmC,KAAKyoC,wBACfjD,QAASxlC,KAAKkoC,aACdN,eAAgB,CAAE9B,UAAW,OAAQa,WAAW,GAChDxB,uBAAwBnlC,KAAKC,MAAMiD,UAAUmmC,kCCvBtD,MAAMC,UAA8B1pC,IAAAA,UAA3CiI,cAAA,oBAqBqB,KAAAqgC,WAAa,IACnB,CACH,CACIxC,SAAU,OACV/hB,KAAM3jB,KAAKC,MAAMiD,UAAUqmC,oBAC3BnC,cAAc,EACdtB,UAAW,OACXpgC,QAAS1F,KAAKC,MAAMqoC,SACpBzC,SAAWl9B,GAA0B/I,IAAAA,cAAA,KAAG6E,KAAK,UAAUkE,EAAKid,QASvD,KAAA4jB,oBAAsB5lC,eACJ8kC,EAAAA,4BAAAA,gCAA4D,CACvF97B,cAAe5M,KAAKC,MAAM+I,QAAQ6D,cAClC87B,YAAa,MACbC,oBAAqB,KAzCtB31B,sBAAsBC,GACzB,OAAOlT,KAAKC,MAAMkE,KAAO+O,EAAU/O,GAGhCtE,SACH,OACID,IAAAA,cAACylC,EAAQv2B,OAAAC,OAAA,GACD/O,KAAKC,MAAK,CACdimC,SAAUlmC,KAAKwpC,oBACfhE,QAASxlC,KAAKkoC,aACdN,eAAgB,CAAE9B,UAAW,OAAQa,WAAW,GAChDxB,uBAAwBnlC,KAAKC,MAAMiD,UAAUumC,smBCStD,MAAM17B,EAA0B,uBAKvC,MAAM27B,UAAyB9pC,EAAAA,UAC3BiI,YAAY5H,GACR+P,MAAM/P,GAmGO,KAAA0pC,wBAA2Bd,IACxC7oC,KAAKiK,SAAS,CACV2/B,wBAAyBf,KAQhB,KAAAgB,4BAA8BjmC,MAAAA,IAC3C,GAAIkmC,EAAoBC,cAAe,CACnC/pC,KAAKiK,SAAS,CACV+/B,4BAA6BF,IAGjC9pC,KAAKC,MAAM+I,QAAQC,QAAQghC,QAAQC,2BAA0B,EAAMJ,EAAoBC,eACvF,MAAMI,QAAkBnqC,KAAKoqC,+BAC7BC,EAAAA,EAAAA,mBAAkBF,GAClB,MAAMG,EAAUz1B,EAAAA,GAAoB,OAAQ7U,KAAKC,MAAM+I,QAAQ6D,eAC/D,GAAIy9B,GAAWz1B,EAAAA,GAA0B01B,gBAA2BhpC,IAAd4oC,EAAyB,CAC3E,MAAMK,EAAU,IAAIC,IAAIH,EAAS/yB,OAAOmzB,SAASvpC,MACjDqpC,EAAQG,aAAavlB,IAAI,YAAa,GAAG+kB,KACzC5yB,OAAOmzB,SAASvpC,KAAOqpC,EAAQrpC,UAE/BnB,KAAKC,MAAM+I,QAAQC,QAAQghC,QAAQW,iCAQ9B,KAAAR,4BAA8BxmC,UAC3C5D,KAAKiK,SAAS,CACV4gC,kBAAkB,IAGtB,MAAMn2B,EAAiB1U,KAAKC,MAAM+I,QAAQC,QACpCs1B,EAAY7pB,EAAe4L,YAAYie,UAAY/nB,OAAO9B,EAAe4L,YAAYie,WAAa,EAExG,IAAK,IAADuM,EACA,MAAMC,QAAwBC,EAAAA,oBAAAA,iBAC1B,CAAEp+B,cAAe5M,KAAKC,MAAM+I,QAAQ6D,eACpC0xB,GACA,GAKJ,OAHAv+B,KAAKiK,SAAS,CACV4gC,kBAAkB,KAEG,QAAlBC,EAAAC,EAAgB,UAAE,IAAAD,OAAA,EAAlBA,EAAoBppB,WAAY,EACzC,MAAO7d,GAAI,IAADuiC,EAMR,YALApmC,KAAKiK,SAAS,CACV4gC,kBAAkB,EAClBI,yBACKpnC,MAAAA,GAAuC,QAANuiC,EAAjCviC,EAAmC8E,YAAI,IAAAy9B,OAAA,EAAvCA,EAAyCC,mBAAoBrmC,KAAKC,MAAMiD,UAAUojC,wBAzJ/FtmC,KAAK+H,MAAQ,GAGV2F,oBACH1N,KAAKC,MAAM+I,QAAQC,QAAQghC,QAAQW,+BAGhC33B,sBAAsBC,EAA0DC,GACnF,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SACH,MACIC,QAAQ,UAAEO,EAAS,SAAEonC,EAAQ,wBAAEyD,EAAuB,4BAAEC,IACxDnrC,KAAKC,MACH+N,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACb+pC,4BAA6BhqC,KAAK+H,MAAMiiC,4BACxCoB,sBAAuB,CACnBl9B,YAAalO,KAAKC,MAClBI,UAAWC,GAAAA,CAAUyN,EAAiB1N,IAE1C6qC,yBAA0BlrC,KAAK+H,MAAM6hC,yBAA2BsB,GAA2BA,EAAwBtqC,MAC/GhB,EAAAA,cAACiV,EAAAA,GAAa,CACVxU,UAAW,GAAG0N,aACdnM,IAAKspC,EAAwBtpC,IAC7BhB,KAAMsqC,EAAwBtqC,OAGtCuqC,4BAA6BnrC,KAAK+H,MAAM6hC,yBACpCuB,GACAA,EAA4BvqC,MACxBhB,EAAAA,cAACiV,EAAAA,GAAa,CACVxU,UAAW,GAAG0N,aACdnM,IAAKupC,EAA4BvpC,IACjChB,KAAMuqC,EAA4BvqC,OAG9CyqC,sBAAwBrrC,KAAK+H,MAAM6hC,6BAQ/BroC,EAPA3B,EAAAA,cAAC0pC,EAAqBx6B,OAAAC,OAAA,GACd/O,KAAKC,MAAK,CACdwnC,SAAUA,EACVpnC,UAAW,GAAG0N,gBACdu6B,SAAUtoC,KAAK2pC,2BAKvB2B,0BAA2BtrC,KAAK+H,MAAM6hC,wBAClChqC,EAAAA,cAACqoC,EAAyBn5B,OAAAC,OAAA,GAClB/O,KAAKC,MAAK,CACdwnC,SAAUA,EACVpnC,UAAW,GAAG0N,gBACdu6B,SAAUtoC,KAAK6pC,4BACfhB,gBAAiB7oC,KAAK+H,MAAM6hC,gCAGhCroC,EAEJgqC,2BAA4BvrC,KAAK+H,MAAM6hC,wBACnChqC,EAAAA,cAAA,KACIS,UAAW,GAAG0N,eACdtJ,KAAK,SACLiB,QAASA,KACL1F,KAAK2pC,4BAGR3pC,KAAKC,MAAMiD,UAAUqoC,iCAG1BhqC,EAEJiqC,wBAAyBxrC,KAAK+H,MAAM8iC,iBAChCjrC,EAAAA,cAAA,QAAMS,UAAW,GAAG0N,cAA6B/N,KAAKC,MAAMiD,UAAU4kC,mBAEtEvmC,EAEJkqC,2BAA4BzrC,KAAK+H,MAAMkjC,wBACnCrrC,EAAAA,cAAA,QAAMS,UAAW,GAAG0N,YAA2B/N,KAAK+H,MAAMkjC,8BAE1D1pC,EAEJmqC,kCAAoC1rC,KAAKC,MAAM+I,QAAQC,QAAQghC,QAAQ0B,sBAGnEpqC,EAFA3B,EAAAA,cAAC4E,EAAAA,MAAK,CAACqjC,MAAM,UAAU7nC,KAAKC,MAAMiD,UAAU0oC,gCAKpD,OAAO5rC,KAAKC,MAAMsO,WAAWP,IAqErC,kGCvMA,MA+BA,EA/BmE/N,GAC3DA,EAAM+pC,4BAEFpqC,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAK9O,EAAMmrC,uBACbnrC,EAAMirC,wBACNjrC,EAAMurC,wBACNvrC,EAAMwrC,4BAKfxrC,EAAMyrC,kCAEF9rC,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAK9O,EAAMmrC,uBACbnrC,EAAMirC,wBACNjrC,EAAMyrC,mCAMf9rC,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAK9O,EAAMmrC,uBACbnrC,EAAMsrC,2BACNtrC,EAAMirC,wBACNjrC,EAAMkrC,4BACNlrC,EAAMorC,sBACNprC,EAAMqrC,wDCjCX,IAAKrQ,mBAAZ,SAAYA,GACTA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,uBANH,CAAYA,IAAAA,EAAqB,ihBCIlC,IAAA4Q,EAAA,WACW,KAAAC,YAAc,WAAM,qBAEpB,KAAAC,mBAAqB,WAAM,qBAE3B,KAAAC,cAAgB,WAAiB,eAGrC,SAASC,EAAgB3vB,GAC5B,IAAM4vB,EAAW,IAAIL,EAEjBM,EAA8B7vB,EAAIvK,IAAmBm6B,EAASH,qBAAsBG,EAASJ,eACjG,OAAIK,IAGJ7vB,EAAI8vB,OAAOF,EAAU,IACrBC,EAA8B7vB,EAAIvK,IAAmBm6B,EAASH,qBAAsBG,EAASJ,gBAI1F,SAASO,EAAmBnnC,EAAsBoX,GACrD,IAAM4vB,EAAW,IAAIL,EACrBvvB,EAAI8vB,OAAOF,EAAUhnC,wHCoQzB,QAjRwB,SAAmBonC,GA8QvC,OAvQA,SAAAC,GACI,SAAAC,EAAYvsC,GAAZ,IAAA6H,EACIykC,EAAAvG,KAAA,KAAM/lC,IAAM,KACW,OAeV6H,EAAA2kC,gBAAkB,iBACzBC,EAA4B5kC,EAAK7H,MAA/BkE,EAAEuoC,EAAAvoC,GAAEyP,EAAQ84B,EAAA94B,SAAE5K,EAAO0jC,EAAA1jC,QACvB2jC,GAASV,EAAAA,EAAAA,IAAgBjjC,EAAQ6D,eAClC8/B,EAKDA,EAAOxoC,KAKXkoC,EAAAA,EAAAA,KAAkBO,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAC,GAERD,KAAME,EAAA,IACR1oC,GAAK,CACFA,GAAEA,EACFyP,SAAQA,EACRN,gBAAgB,EAChB5C,UAAU,EACVpI,YAAY,EACZwkC,eAAe,EACfC,mBAAmB,EACnBvkC,YAAQjH,EACR6O,SAAU,IACby8B,IAEL7jC,EAAQ6D,eAxBR/E,EAAK7H,MAAMqK,UAAUC,MAAM,yDAiClBzC,EAAAklC,sBAAwB,SAAC7oC,GACtC,IAAM+D,EAAcJ,EAAKiK,MAAM5N,GAC/B,OAAAyoC,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACO1kC,GAAY,CACfoL,eAAgBxL,EAAKmlC,SAAS9oC,EAAI,CAAEmP,gBAAgB,IAAQ,GAC5D5C,SAAU5I,EAAKmlC,SAAS9oC,EAAI,CAAEuM,UAAU,IACxC7C,QAAS/F,EAAKmlC,SAAS9oC,EAAI,CAAEqE,OAAQ,UAAW,GAAM,GACtDyL,WAAYnM,EAAKmlC,SAAS9oC,EAAI,CAAEqE,OAAQ,aACxC2L,UAAWrM,EAAKmlC,SAAS9oC,EAAI,CAAEqE,OAAQ,YACvC+I,UAAWzJ,EAAKmlC,SAAS9oC,EAAI,CAAEqE,OAAQ,YAAa,GAAM,GAC1D+H,WAAYzI,EAAKmlC,SAAS9oC,EAAI,CAAEqE,OAAQ,aAAc,GACtD0kC,gBAAiBplC,EAAKmlC,SAAS9oC,EAAI,CAAE2oC,eAAe,IAAQ,GAAM,GAClE76B,sBAAuBnK,EAAKmlC,SAAS9oC,EAAI,CAAE4oC,mBAAmB,IAC9D/5B,uBAAwBlL,EAAKkL,yBAC7BxC,eAAgB1I,EAAK0I,eAAerM,GACpCgpC,cAAe,SAACjoC,GACZ4C,EAAKskC,OAAOjoC,EAAI,CAAEmE,WAAYpD,KAElCkoC,iBAAkB,SAACloC,GACf4C,EAAKskC,OAAOjoC,EAAI,CAAE2oC,cAAe5nC,KAErCmoC,qBAAsB,SAACnoC,GACnB4C,EAAKskC,OAAOjoC,EAAI,CAAE4oC,kBAAmB7nC,KAEzCsF,YAAa,SAACtF,GACV4C,EAAKskC,OAAOjoC,EAAI,CAAEuM,SAAUxL,KAEhCuE,QAAS,WACL3B,EAAKskC,OAAOjoC,EAAI,CAAEqE,OAAQ,WAE9Bc,WAAY,WACRxB,EAAKskC,OAAOjoC,EAAI,CAAEqE,OAAQ,cAE9B64B,UAAW,WACPv5B,EAAKskC,OAAOjoC,EAAI,CAAEqE,OAAQ,aAE9BkB,OAAQ,WACJ5B,EAAKskC,OAAOjoC,EAAI,CAAEqE,OAAQ,aAE9B4vB,UAAW,WACPtwB,EAAKskC,OAAOjoC,EAAI,CAAEqE,OAAQ,cAE9B6H,UAAW,SAACi9B,GAA0C,OAAAxlC,EAAKklC,sBAAsBM,IACjFC,oBAAqB,SAAC35B,GAA0C,OAAA9L,EAAK0lC,gCAAgC55B,IACrG3L,KAAM,SAAC7F,IACC8F,MAAAA,OAAW,EAAXA,EAAaoL,iBAIjBxL,EAAKskC,OAAOjoC,GAAEyoC,EAAAA,EAAAA,IAAA,CACVt5B,gBAAgB,GACblR,QAWF0F,EAAA0lC,gCAAkC,SAAC55B,GAChD,IAAMu4B,GAAeF,EAAAA,EAAAA,IAAgBnkC,EAAK7H,MAAM+I,QAAQ6D,eAClD3E,EAAc4G,OAAO2+B,OAAOtB,GAAczsB,MAAK,SAAAguB,GAAgB,OAAAA,MAAAA,OAAY,EAAZA,EAAc95B,YAAaA,KAChG,OAAO9L,EAAKklC,sBAAuB9kC,GAAeA,EAAY/D,IAAO,KAOxD2D,EAAAiK,IAAM,WACnB,OAAOk6B,EAAAA,EAAAA,IAAgBnkC,EAAK7H,MAAM+I,QAAQ6D,gBAS7B/E,EAAAskC,OAAS,SAACjoC,EAAYe,GAEnC,IAAMyoC,EAAU7lC,EAAKiK,MAChB47B,EAAQxpC,GAIbwpC,EAAQxpC,IAAGyoC,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACJe,EAAQxpC,IACRe,GALH4C,EAAK7H,MAAMqK,UAAUC,MAAM,mDAAmDpG,EAAE,mBASvE2D,EAAA8lC,cAAgB,SAACzpC,EAAY6T,GAC1C,IACM61B,EADU/lC,EAAKiK,MACE5N,GACvB,QAAK0pC,GAGEC,GAAAA,CAAQD,EAAQ71B,IAGVlQ,EAAAimC,mBAAqB,SAClC5pC,EACA6T,EACAg2B,EACAC,GAEA,IACMJ,EADU/lC,EAAKiK,MACE5N,GACvB,IAAK0pC,EAED,QAASG,EAGb,GAAIC,IAAwC,aAAlBJ,EAAOrlC,QAA2C,YAAlBqlC,EAAOrlC,QAE7D,QAASwlC,EAIb,IAAKH,EAAOz9B,UAAuC,IAA3By9B,EAAOz9B,SAAShQ,OACpC,OAAO0H,EAAK8lC,cAAczpC,EAAI6T,GAGlC,IAAI5H,EAAWy9B,EAAOz9B,SAStB,OAPItI,EAAK7H,MAAM+I,QAAQI,IAAItJ,OAAOqR,iDAE9Bf,EAAWA,EAASE,QAAO,SAAAS,GAAW,OAACjJ,EAAKomC,2BAA2Bn9B,OAKpEX,EADQ49B,EAAa,QAAU,SACd,SAAAj9B,GAAW,OAAAjJ,EAAKimC,mBAAmBh9B,EAASiH,EAAQg2B,EAAYC,OAQ3EnmC,EAAAomC,2BAA6B,SAACZ,GAC3C,IAAKA,EAASt8B,SAlNO,qBAmNjB,OAAO,EAGX,IACM68B,EADU/lC,EAAKiK,MACEu7B,GAEvB,SAAIO,IAAUh9B,EAAAA,gBAAgBC,YAAY+8B,EAAOz9B,SAASE,QAAO,SAAAS,GAAW,OAAAA,EAAQC,SAxN9D,4BAuOTlJ,EAAAmlC,SAAW,SACxB9oC,EACA6T,EACAg2B,EACAC,GAEA,IACMJ,EADU/lC,EAAKiK,MACE5N,GACvB,QAAK0pC,IAKAA,EAAOz9B,UAAuC,IAA3By9B,EAAOz9B,SAAShQ,OAKjC0H,EAAKimC,mBAAmB5pC,EAAI6T,EAAQg2B,EAAYC,GAJ5CnmC,EAAK8lC,cAAczpC,EAAI6T,KAWrBlQ,EAAAkL,uBAAyB,WACtC,QAASlL,EAAK7H,MAAMmT,eAQPtL,EAAA0I,eAAiB,SAACrM,GAG/B,QAFgB2D,EAAKiK,MACE5N,IA/PvB2D,EAAK2kC,kBAAiB,EAkQ9B,OArQ0B0B,EAAAA,EAAAA,IAAA3B,EAAAD,GAMfC,EAAA4B,UAAAn7B,sBAAP,SAA6BC,GACzB,OAAIlT,KAAKC,QAAUiT,GAMhBs5B,EAAA4B,UAAAvuC,OAAP,WACY,IAAAsE,EAAOnE,KAAKC,MAAKkE,GACzB,OAAOvE,EAAAA,cAAC0sC,GAAgBM,EAAAA,EAAAA,IAAA,GAAK5sC,KAAKC,MAAK,CAAEiI,YAAalI,KAAKgtC,sBAAsB7oC,OAfnFqoC,GAAWh+B,EAAAA,EAAAA,IAAA,CADhBE,EAAAA,IAAQ,uCACH89B,GAAN,CAA0B5sC,EAAAA,gFCLvB,MAAMyuC,EAAmD/nC,IAAA,IAAC,QAAE6P,EAAO,UAAE9V,EAAY,kCAAkCiG,EAAA,OACtH1G,EAAAA,cAAA,OAAKS,UAAW,GAAGA,yBACfT,EAAAA,cAAC0uC,EAAAA,QAAO,MACR1uC,EAAAA,cAAA,QAAMS,UAAW,GAAGA,sBAA+B8V,4xBC0B3D,IAAao4B,EAAb,cAAqD3uC,EAAAA,cAMjDiI,YAAmB5H,GAAkD,IAAA0Q,EACjEX,MAAM/P,GAHO,KAAA8N,gBAA0B,wCA6F1B,KAAAygC,UAAY,KACzB,MAAM,MAAEzuC,GAAUC,KAAKC,MACvB,OAAQF,GAASA,EAAMmQ,SAAWnQ,EAAMmQ,QAAQ9P,QAAUL,EAAMmQ,SAAY,IAyBxE,KAAAu+B,6CAAgD/4B,GACnD1V,KAAKC,MAAMH,OAAO4uC,uCAAwC9tC,KAAO8U,EAAMrU,OAAO6D,MArH/ElF,KAAK+H,MAAQ,CACT8F,SAAS,EACT8gC,oCAAkE,QAA/Bh+B,EAAA3Q,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA8H,IAA/BA,EAAiCiwB,qCAIrElzB,qBACHsE,EAAAA,EAAAA,KACI,SAAAf,EAAA,OAAqC,QAArCA,EAAMjR,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAoI,OAAA,EAA/BA,EAAiC29B,gCACvC,KACI,MAAM/sC,EAAQ7B,KAAKwuC,YACnB,GAAqB,IAAjB3sC,EAAMzB,OACNJ,KAAKC,MAAM+I,QAAQsB,UAAUC,MAAM,+EAChC,CACH,IAAIsD,GAAU,EAEd,IAAK,MAAMwB,KAAQxN,EAEf,GAAIwN,EAAKpN,IAAI+O,SAAS,oBAAqB,CAAC,IAADa,EAAAC,EAEvC,MAAM+8B,EAAuB,KAAKx/B,EAAKpP,MAAMH,OAAOy6B,sCAE9CuU,EAGoB,QAHPj9B,EACgB,QADhBC,EACf9R,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAiJ,GAA8B,QAA9BA,EAA/BA,EAAiC88B,oCAA4B,IAAA98B,GAE5D,QAF4DA,EAA7DA,EAA+D4N,MAC3D0kB,GAAYA,EAASC,MAAQwK,WAChC,IAAA/8B,GAAO,QAAPA,EAFDA,EAEGwyB,aAAK,IAAAxyB,OAAA,EAFRA,EAEUi9B,oBAAY,IAAAl9B,GAAAA,EAC1BhE,EAAUA,GAAWihC,EAG7B9uC,KAAKiK,SAAS,CAAE4D,QAAAA,SAK5BmE,EAAAA,EAAAA,KACI,SAAAE,EAAA,OAAqC,QAArCA,EAAMlS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiCyuB,4BACvCA,IACI3gC,KAAKiK,SAAS,CAAE0kC,kCAAmChO,OAKxD9gC,SAAM,IAAAmvC,EAAAC,EACT,MACInvC,QAAQ,uCAAE4uC,GACVxrC,WAAW,4CAAEgsC,GACbvmC,MAAM,SAAEC,IACR5I,KAAKC,MAET,IAAK2I,EAASC,QAAyB,QAAnBmmC,EAAIpmC,EAASC,cAAM,IAAAmmC,GAAfA,EAAiBrO,0BAA2C,QAAnBsO,EAAIrmC,EAASC,cAAM,IAAAomC,GAAfA,EAAiBjU,iCAElF,OADAh7B,KAAKC,MAAM+I,QAAQsB,UAAU4G,YAAY,mFAClC,KAGX,GAAIlR,KAAKC,MAAM+I,QAAQC,QAAQC,KAAKimC,cAAyD,IAAzClU,EAAAA,sBAAsBmU,eAEtE,OADApvC,KAAKC,MAAM+I,QAAQsB,UAAU4G,YAAY,kFAClC,KAGX,MAAMrP,EAAQ7B,KAAKwuC,YACnB,GAAqB,IAAjB3sC,EAAMzB,OAEN,OADAJ,KAAKC,MAAM+I,QAAQsB,UAAUC,MAAM,2EAC5B,KAGX,MAAM8kC,EAAqDrvC,KAAK+H,MAAM4mC,kCAAoC,OAAS,GAE7G5gC,EAAkBzN,GAAAA,CACpB,wCACAN,KAAKC,MAAMH,OAAOO,UAClBgvC,GAGErhC,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IAEbuT,4BAA6B,CACzBtF,YAAalO,KAAKC,MAClBI,UAAW0N,GAEflM,MAAOA,EACPgM,QAAS7N,KAAK+H,MAAM8F,QACpByhC,QAAS1vC,EAAAA,cAACyuC,EAAAA,EAAgBv/B,OAAAC,OAAA,GAAK,CAAEoH,QAAS+4B,EAA6C7uC,UAAWL,KAAK+N,mBACvGrN,MAAOguC,GAA0C1uC,KAAKuvC,oBAAoBb,GAC1Ec,YAAa,CAAEnvC,UAAW,iDAE9B,OAAOL,KAAKC,MAAMsO,WAAWP,GAazBuhC,oBAAoBb,GACxB,OACI9uC,EAAAA,cAACiV,EAAAA,GAAa/F,OAAAC,OAAA,GACN2/B,EAAsC,CAC1C9sC,IAAK8sC,EAAuC9sC,KAAO,KACnDvB,UAAU,+CACVO,KAAM8tC,EAAuC9tC,KAC7CkU,UAAW,CAAE1M,OAAQpI,KAAKyuC,6CAA8C/5B,eAAgB1U,KAAKC,MAAM+I,QAAQC,cAlH9GslC,GAA+B//B,EAAAA,EAAAA,IAAA,CAD3CE,EAAAA,IACY6/B,GAgIb,kGCrKA,MAAMkB,EAA8DnpC,IAAA,IAAC,mBAAEopC,EAAkB,MAAE7tC,GAAOyE,EAAA,OAC9F1G,EAAAA,cAAA,OAAKS,UAAWqvC,GAAqB7tC,IAqBzC,EAlBiGoN,IAO5F,IAP6F,4BAC9FuE,EAA2B,MAC3B3R,EAAK,QACLgM,EAAO,QACPyhC,EAAO,MACP5uC,EAAK,YACL8uC,GACHvgC,EACG,MAAMygC,EAA6B7hC,EAAU,gBAAkB,mBAC/D,OACIjO,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKyE,GACR5T,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKygC,GAAc9uC,IACtBmN,GAAWyhC,EACb1vC,EAAAA,cAAC6vC,EAAuB,CAACC,mBAAoBA,EAAoB7tC,MAAOA,+MCzBpF,MAEA,EAF0BgO,IAAMjQ,EAAAA,cAAA,OAAKS,UAAU,gnBCqC/C,MAAMyP,EAA4B,qBAUlC,IAAaC,EAAb,cAA4CnQ,EAAAA,UAkBxCiI,YAAmB5H,GACf+P,MAAM/P,GAiMO,KAAAgQ,SAAW,KACxB,MAAM,MAAElQ,GAAUC,KAAKC,MACvB,OAAQF,GAASA,EAAMmQ,SAAWnQ,EAAMmQ,QAAQ9P,QAAUL,EAAMmQ,SAAY,IAG/D,KAAAC,2BAA6B,KAC1C,MAAM,SAAEC,EAAQ,UAAEC,GAAcrQ,KAAKC,MAAMiI,YAC3C,OAAOkI,EACFtO,IAAIuO,GACJC,QAAQvI,KAA0CA,IAAUA,EAAMwI,YAAcxI,EAAMyI,kBAG9E,KAAAtG,WAAa,KAE1BlK,KAAKmQ,6BAA6BM,SAAQ1I,IACtCA,EAAM2I,UAAY3I,EAAMyC,aAAY,OAI3B,KAAAvG,SAAW,KAAW,IAAA0M,EACnC,MAAMC,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAepE,IAADmB,GAZFjR,KAAKC,MAAMqK,UAAU4G,YAAY,yCAEjClR,KAAKkK,aACLlK,KAAKmQ,6BAA6BM,SAAQ1I,KACrCA,EAAM8F,SAAW9F,EAAM9D,UAAY8D,EAAM9D,cAKX,QAA/B0M,EAAA3Q,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA8H,GAA/BA,EAAiCQ,gDACjCP,GA9PO,IA+PP5Q,KAAKoR,aAE0B,QAA/BH,EAAAjR,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAoI,GAA/BA,EAAiCI,qCAAqC,CAClEC,mCAAmC,MAK9B,KAAAjJ,SAAW,KACxBrI,KAAKC,MAAMqK,UAAU4G,YAAY,yCAEjClR,KAAKkK,aACLlK,KAAKmQ,6BAA6BM,SAAQ1I,KACrCA,EAAM8F,SAAW9F,EAAMM,UAAYN,EAAMM,eAIjC,KAAAD,OAAS,KACtBpI,KAAKC,MAAMqK,UAAU4G,YAAY,uCAEjClR,KAAKmQ,6BAA6BM,SAAQ1I,KACrCA,EAAM8F,SAAW9F,EAAMwJ,YAAcxJ,EAAMK,QAAUL,EAAMK,aAInD,KAAAoJ,iBAAmB,KAChCxR,KAAKC,MAAMqK,UAAU4G,YAAY,iDAEjClR,KAAKmQ,6BAA6BM,SAAQ1I,IACtCA,EAAM8F,SAAW9F,EAAMyJ,kBAAoBzJ,EAAMyJ,uBAhQrDxR,KAAK+H,MAAQ,CAAE0J,YAAY,GAnBrB,gBAAoB,IAAAC,EAAAC,EAC1B,MACIhJ,MAAM,SAAEC,IACR5I,KAAKC,MACT,GAAK2I,MAAAA,IAAAA,EAAUC,OACX,OAAO,EAGX,MACMH,EAAkC,QAA9BgJ,EADa9I,EAASC,OACJC,oBAAY,IAAA4I,OAAA,EAA3BA,EAA6BhJ,KAC1C,OAAKA,GAASA,EAAKkJ,WAAcf,EAAAA,gBAAgBC,YAAYpI,EAAKkJ,YAI3C,QAAvBD,EAAOjJ,EAAKK,mBAAW,IAAA4I,EAAAA,EAHZ,EAWRjE,oBAAiB,IAAAmE,EAAAC,EACpB,MACM1B,EADQpQ,KAAKiQ,WACInO,KAAKuN,GAA0B0C,GAAAA,CAAI1C,EAAM,cAC1D8B,EAC6E,QAD/BU,EACjB,QADiBC,EAChD9R,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAiJ,OAAA,EAA/BA,EAAiCX,sDAA8C,IAAAU,GAAAA,EAEnF7R,KAAKC,MAAMiI,YAAYD,KAAK,CACxBG,OAAQpI,KAAKoI,OACbC,SAAU8I,OAAiD5P,EAAYvB,KAAKqI,SAC5EpE,SAAUkN,OAAiD5P,EAAYvB,KAAKiE,SAC5EmM,SAAAA,KAGJ4B,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAY2F,UAC7B,KACI7N,KAAKwR,uBAIbQ,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAY+J,wBAC7B,KACIjS,KAAKiE,eAKb+N,EAAAA,EAAAA,KACI,SAAAE,EAAA,OAAqC,QAArCA,EAAMlS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiCC,gCACvCA,IACI,MAAMvB,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAGnEqB,GAAkDP,GAClD5Q,KAAKiK,SAAS,CAAEwH,WAAYU,QAMxCH,EAAAA,EAAAA,KACI,SAAAI,EAAA,OAAqC,QAArCA,EAAMpS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAuJ,OAAA,EAA/BA,EAAiCC,sCACvC,KACI,MAAMzB,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAGnEqB,GAAkDP,GAClD5Q,KAAKiE,eAMjB+N,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAY2F,UAC7BjK,MAAAA,IACI,MAAMgN,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAG0C,IAADwC,EAA5GnB,GAAkDP,GAA6B5Q,KAAKoR,UA9FrF,SA+FsC,QAArCkB,EAAMtS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAAyJ,OAAA,EAA/BA,EAAiCjB,qCAAqC,CACxEC,kCAAmCzD,SAOnDmE,EAAAA,EAAAA,KACI,IAAMhS,KAAKC,MAAMiI,YAAYwI,WAC7B9M,MAAAA,IACI,MAAMgN,EAA4BC,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,MAGW,IAADyC,EAA7EpB,GAAkDP,SACb,QAArC2B,EAAMvS,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA0J,OAAA,EAA/BA,EAAiCC,wCAAwC,CAC3EC,qCAAsC/B,SAMtDsB,EAAAA,EAAAA,KACI,SAAAU,EAAA,OAAqC,QAArCA,EAAM1S,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA6J,OAAA,EAA/BA,EAAiCC,wBACvC/O,UAAW,IAAAgP,EAC2B/B,EAAAA,gBAAgBC,YAC9C9Q,KAAKC,MAAMiI,YAAYkI,SAASE,QAAOS,GAAWA,EAAQC,SAASlB,OAGP,QAAnC8C,EAAI5S,KAAKC,MAAM0I,KAAKC,SAASC,cAAM,IAAA+J,GAA/BA,EAAiCD,uBAC9D3S,KAAKoI,eACCpI,KAAKC,MAAM0I,KAAKC,SAASC,OAAOgK,2BAA2B,CAAEC,yBAAyB,QAMrGC,qBACH,IAAK/S,KAAKC,MAAMiI,YAAY8K,uBACxB,OAMJ,MAAM,SAAE5C,EAAQ,SAAEM,EAAQ,UAAEL,GAAcrQ,KAAKC,MAAMiI,YACtBkI,EAAS/C,MAAM0D,IAC1C,MAAMhJ,EAAQsI,EAAUU,GACxB,QAAShJ,IAAUA,EAAM8F,SAAW9F,EAAMwJ,eAEhBb,GAC1B1Q,KAAKoI,SAIN6K,sBAAsBC,EAAiDC,GAC1E,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SACH,MAAM,cACFuT,EAAa,YACblL,EACApI,QAAQ,MAAEuT,IACVrT,KAAKC,MAEH4B,EAAQ7B,KAAKiQ,WACnB,GAAqB,IAAjBpO,EAAMzB,OAEN,OADAJ,KAAKC,MAAM+I,QAAQsB,UAAUC,MAAM,yDAC5B,KAGX,MAAMwD,EAAkBzN,GAAAA,CACpB,gCACA,CACI,kBAAmB4H,EAAYoL,eAC/B,WAAYpL,EAAY2F,QACxB,eAAgB3F,EAAY2F,QAC5B0F,UAAqB,cAAVF,EACX,mBAA8B,UAAVA,GAExBrT,KAAKC,MAAMH,OAAOO,WAGhB2N,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IAEbI,UAAW0N,EACXyF,4BAA6B,CACzBtF,YAAalO,KAAKC,MAClBI,UAAW0N,GAEflM,MAAOA,EAAMC,KAAKuN,IACd,MAAM0B,EAAUgB,GAAAA,CAAI1C,EAAM,YACpBtH,EAAQG,EAAYmI,UAAUU,GAG9B0C,EACFzT,KAAK+H,MAAM0J,YAAe1J,EAAMyI,kBAAoBzI,EAAMuL,gBAAkBvL,EAAMwI,YAAcxI,EAAMwJ,WAC1G,MAAO,CACHpN,GAAI4M,EACJ2C,QAAS3L,EAAMyI,iBAAmBzI,EAAMuL,gBAAkB1T,EAAAA,cAAC+T,EAAgB,MAC3EpM,UAAW,CACP,iBAAkBQ,EAAM6L,SACxBvT,UAAWC,GAAAA,CAAU,sCAAuC,CACxDmT,OAAAA,EACAI,YAAa9L,EAAMuL,eACnB3N,SAAUoC,EAAMwI,WAChBuD,QAAS/L,EAAMwJ,UACfwC,MAAOhM,EAAM8F,QACbmG,SAAUjM,EAAMkM,WAChBC,QAASnM,EAAMoM,aAGvB9E,KAAMzP,EAAAA,aAAmByP,EAA4B,CAAE+D,cAAAA,UAInE,OAAOpT,KAAKC,MAAMsO,WAAWP,MAhNvBQ,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,8BADAsB,GAAsBvB,EAAAA,EAAAA,IAAA,CADlCE,EAAAA,IACYqB,GAyRb,SAAepB,EAAAA,EAAAA,iBAAgBoB,2FCrU/B,MAAMqE,EAAyD9N,IAAA,IAAC,QAAEoN,EAAO,UAAEnM,EAAS,KAAE8H,GAAM/I,EAAA,OACxF1G,EAAAA,cAAAA,EAAAA,SAAA,KACK8T,EACD9T,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKxH,GAAY8H,KAY9B,EARmFJ,IAAA,IAAC,4BAAEuE,EAA2B,MAAE3R,GAAOoN,EAAA,OACtHrP,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKyE,GACP3R,EAAMC,KAAIuN,GACPzP,EAAAA,cAACwU,EAAatF,OAAAC,OAAA,CAAC9M,IAAKoN,EAAKlL,IAAQkL,isBCUtC,MAAMsgC,UAAkB/vC,EAAAA,cAG3BiI,YAAmB5H,GACf+P,MAAM/P,GAsEH,KAAA2vC,iBAAoBl6B,IACvB1V,KAAKC,MAAMH,OAAO6V,QAAS/U,KAAO8U,EAAMrU,OAAO6D,OAO5C,KAAA2qC,sBAAyBn6B,IAC5B1V,KAAKC,MAAMH,OAAOgwC,UAAYp6B,EAAMrU,OAAO6D,OA9E3ClF,KAAK+vC,sBAAwBnwC,EAAAA,YAG1BC,SAAM,IAAAmwC,EACT,MAAM,QAAEr6B,EAAO,UAAEm6B,GAAc9vC,KAAKC,MAAMH,OAIpCmwC,EAAqBH,GACvBlwC,EAAAA,cAACiV,EAAAA,GAA0B,CACvBjU,KAAMkvC,EACNzvC,UAAU,8BACVyU,UAAW,CAAE1M,OAAQpI,KAAK6vC,sBAAuBn7B,eAAgB1U,KAAKC,MAAM+I,QAAQC,WAItFinC,EAAmBv6B,GACrB/V,EAAAA,cAACiV,EAAAA,GAAa,CACVxU,UAAU,iCACVuB,IAAgB,QAAbouC,EAAEr6B,EAAQ/T,WAAG,IAAAouC,EAAAA,EAAI,KACpBpvC,KAAM+U,EAAQ/U,KACdkU,UAAW,CAAE1M,OAAQpI,KAAK4vC,iBAAkBl7B,eAAgB1U,KAAKC,MAAM+I,QAAQC,WAGjF+E,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACbkwC,WAAYnwC,KAAK4vC,iBACjBQ,UAAW,CACPliC,YAAalO,KAAKC,MAClBI,UAvBgB,gBAyBpBgwC,mBAAoB,CAChBhwC,UAAW,yBAEfsV,QAASu6B,EACTtvC,KAAMqvC,EACNK,cAAe,CACXjwC,UAAW,8BACXuB,IAAK,OACL,aAAc5B,KAAKC,MAAMiD,UAAUqtC,uBACnC5sB,KAAM,gBACNlf,KAAM,OACN+rC,aAAc,OAElBC,WAAY,CACRpwC,UAAW,qCACXuB,IAAK,QACLmD,IAAK/E,KAAK+vC,sBACV/qC,KAAM,QACN,aAAchF,KAAKC,MAAMiD,UAAUwtC,4BACnCprC,YAAatF,KAAKC,MAAMiD,UAAUytC,+BAEtCC,aAAc,CACVvwC,UAAW,sCACXuB,IAAK6D,EAAAA,OACL,aAAczF,KAAKC,MAAMiD,UAAU2tC,6BACnC7rC,KAAM,SACNtE,MAAOV,KAAKC,MAAMiD,UAAU4tC,sBAEhCC,sBAAuB/wC,KAAKC,MAAMiD,UAAU4tC,uBAGhD,OAAO9wC,KAAKC,MAAMsO,WAAWP,IAoBrC,sHCvGA,MAAM/J,EAAYyR,IACdA,EAAM5R,kBAQGktC,EAA+C/wC,IAAQ,IAAAgxC,EAAAC,EAAAC,EAChE,MAAM,UAAEf,EAAS,mBAAEC,EAAkB,QAAE16B,EAAO,KAAE/U,EAAI,cAAE0vC,EAAa,WAAEG,EAAU,aAAEG,GAAiB3wC,EAClG,OACIL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKqhC,GACRxwC,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKshC,EAAkB,CAAEhwC,UAAWgwC,EAAmBhwC,YACvDsV,EACA/U,EACDhB,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKuhC,EAAa,CAAErsC,SAAUA,EAAU5D,UAAmC,QAA1B4wC,EAAEX,MAAAA,OAAa,EAAbA,EAAejwC,iBAAS,IAAA4wC,EAAAA,EAAI,KAChFrxC,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK0hC,EAAU,CAAEpwC,UAAgC,QAAvB6wC,EAAET,MAAAA,OAAU,EAAVA,EAAYpwC,iBAAS,IAAA6wC,EAAAA,EAAI,MAC1DtxC,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK6hC,EAAY,CAAEvwC,UAAkC,QAAzB8wC,EAAEP,MAAAA,OAAY,EAAZA,EAAcvwC,iBAAS,IAAA8wC,EAAAA,EAAI,KACzDlxC,EAAM8wC,2BAQ/B,6GCZYK,ynBAAZ,SAAYA,GACRA,EAAAA,EAAA,yBACAA,EAAAA,EAAA,2BAFJ,CAAYA,IAAAA,EAAW,KAWvB,IAAMC,EAAN,cAAsBzxC,EAAAA,cAKlBiI,YAAY5H,GACR+P,MAAM/P,GALO,KAAAqxC,uBAAiC,sBAEjC,KAAAC,sBAAgC,qBAI7CvxC,KAAKwxC,iBAAmBxxC,KAAKwxC,iBAAiBC,KAAKzxC,MAGhDH,SACH,MAAM,MAAEE,EAAK,WAAEwO,EAAU,OAAEzO,EAAM,KAAE6I,EAAI,WAAE6iB,EAAU,UAAEkmB,GAAc1xC,KAAKC,MAClE+B,EAAQ0vC,GAAa,EACrBC,EAAYC,EAAa5vC,EAAOhC,KAAKC,MAAM4xC,OAAS,IACpDC,EAAwBnpC,GAAQA,EAAKopC,gBAAkBppC,EAAKopC,eAAelpC,OAC3EmpC,EACFF,GACAA,EAAsBD,QAAU7xC,KAAKC,MAAM4xC,YACEtwC,IAA7CuwC,EAAsBG,mBAChBH,EAAsBG,qBAAuBjwC,EAC7CwpB,IAAc,EAsBxB,OAAOjd,EArBQpG,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACbiyC,oBAAqB,CACjBhkC,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAWhE,KAAKsxC,uBAAwBxxC,EAAOO,YAE9D8xC,mBAAoB,CAChBjkC,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAWhE,KAAKuxC,sBAAuBzxC,EAAOO,YAE7D+xC,eAAgB,CACZ/xC,UAAW,+BACXuB,IAAK,UACL,eAAgBowC,EAChBvtC,KAAM,WACN4tC,SAAUL,EAAQ,GAAK,EACvB7tC,GAAIwtC,GAERW,UAAWtyC,KAAKwxC,mBAChBe,SAAUxyC,KAKVyxC,mBACJ,OAAO5xC,EAAAA,cAAAA,EAAAA,SAAA,KAAGI,KAAKC,MAAMH,OAAO0yC,gBA9C9BnB,GAAO7iC,EAAAA,EAAAA,IAAA,CADZE,EAAAA,IACK2iC,GAkDC,MAAMO,EAAeA,CAAC5vC,EAAemC,IACjC,oBAAoBA,KAAMnC,IAGrC,sGCpFA,MAsBMywC,EAAyB5wC,GAEvBjC,EAAAA,cAAAA,EAAAA,SAAA,KACKiC,GAASA,EAAMzB,OAAS,EACnByB,EAAMC,KAAI,CAACuN,EAAuBrN,IACvBpC,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAAQqN,KAExC,MAIlB,EAjCiDpP,IAC7C,MAAM,YAAEyyC,EAAW,SAAEH,EAAQ,oBAAEL,EAAmB,mBAAEC,EAAkB,eAAEC,EAAc,UAAEE,GAAcryC,EAEtG,OAAQyyC,GACJ,KAAKtB,EAAAA,YAAYuB,WACb,OACI/yC,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKmjC,GACRtyC,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAKqjC,GACLG,GACGA,EAASK,gBACTL,EAASK,eAAexyC,QACxBqyC,EAAsBF,EAASK,kBAInD,KAAKxB,EAAAA,YAAYyB,UACb,OAAOjzC,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAKojC,GAAqBG,GAC5C,QACI,OAAO,uxBCkBnB,IAAMQ,EAAN,cAAkBlzC,EAAAA,UAKdiI,YAAY5H,GACR+P,MAAM/P,GALM,KAAA8yC,cAAwB,YAgFjC,KAAAt9B,oBAAuBC,GAA0C1V,KAAKC,MAAMH,OAAO6V,QAAS/U,KAAO8U,EAAMrU,OAAO6D,MAgCtG,KAAA8tC,YAAehyC,IAC5BhB,KAAKizC,WAAajyC,GAsCL,KAAAkyC,SAAW,CAAClxC,EAAemC,IAAgBN,IACxD,MAAMkuC,EAAiB,CAAEE,mBAAoBjwC,EAAO6vC,MAAO1tC,GAC3DnE,KAAKC,MAAM+I,QAAQ6D,cAAcu/B,QAAO+G,EAAAA,EAAAA,qBAAoBpB,GAAiBA,GAC7E/xC,KAAKiK,SAAS,CAAEmpC,gBAAiBpxC,IAGjC,MAAM0S,EAAiB1U,KAAKC,MAAM+I,QAAQC,QACpCoqC,EAASrzC,KAAKszC,iBAAiB5+B,EAAgB1U,KAAK+yC,cAAe,GAAG/yC,KAAKC,MAAMkE,MAAMovC,OAAOvxC,EAAQ,MAC5G0S,GAAkB6C,OAAOi8B,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,IAGpD,KAAAM,WAAa,CAAC3xC,EAAemC,IAAgBN,IAC1D,GAAkB,KAAdA,EAAEmhC,QAAgB,CAClB,MAAM+M,EAAiB,CAAEE,mBAAoBjwC,EAAO6vC,MAAO1tC,GAC3DnE,KAAKC,MAAM+I,QAAQ6D,cAAcu/B,QAAO+G,EAAAA,EAAAA,qBAAoBpB,GAAiBA,GAC7E/xC,KAAKiK,SAAS,CAAEmpC,gBAAiBpxC,IAGjC,MAAM0S,EAAiB1U,KAAKC,MAAM+I,QAAQC,QACpCoqC,EAASrzC,KAAKszC,iBAAiB5+B,EAAgB1U,KAAK+yC,cAAe,GAAG/yC,KAAKC,MAAMkE,MAAMovC,OAAOvxC,EAAQ,MAC5G0S,GAAkB6C,OAAOi8B,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,GAGrE,GAAkB,KAAdxvC,EAAEmhC,SAAgC,KAAdnhC,EAAEmhC,QAAgB,CACtC,MAAM,MAAEjlC,GAAUC,KAAKC,MACjB2zC,EAAc7zC,GAASA,EAAM8zC,UAAY9zC,EAAM8zC,SAASzzC,QAAW,EAEzE,GAAkB,KAAdyD,EAAEmhC,QAAgB,CAEdhjC,EAAQ,IAAM4xC,IACd5xC,GAAS,GAEb,MAAM+vC,EAAiB,CAAEE,mBAAoBjwC,EAAQ,EAAG6vC,MAAO1tC,GAC/DnE,KAAKC,MAAM+I,QAAQ6D,cAAcu/B,QAAO+G,EAAAA,EAAAA,qBAAoBpB,GAAiBA,GAC7E/xC,KAAKiK,SAAS,CAAEmpC,gBAAiBpxC,EAAQ,IAGzC,MAAM0S,EAAiB1U,KAAKC,MAAM+I,QAAQC,QACpCoqC,EAASrzC,KAAKszC,iBAAiB5+B,EAAgB1U,KAAK+yC,cAAe,GAAG/yC,KAAKC,MAAMkE,MAAMovC,OAAOvxC,EAAQ,MAC5G0S,GAAkB6C,OAAOi8B,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,QAG9D,GAAkB,KAAdxvC,EAAEmhC,QAAgB,CAEX,IAAVhjC,IACAA,EAAQ4xC,GAEZ,MAAM7B,EAAiB,CAAEE,mBAAoBjwC,EAAQ,EAAG6vC,MAAO1tC,GAC/DnE,KAAKC,MAAM+I,QAAQ6D,cAAcu/B,QAAO+G,EAAAA,EAAAA,qBAAoBpB,GAAiBA,GAC7E/xC,KAAKiK,SAAS,CAAEmpC,gBAAiBpxC,EAAQ,IAGzC,MAAM0S,EAAiB1U,KAAKC,MAAM+I,QAAQC,QACpCoqC,EAASrzC,KAAKszC,iBAAiB5+B,EAAgB1U,KAAK+yC,cAAe,GAAG/yC,KAAKC,MAAMkE,MAAMovC,OAAOvxC,MACpG0S,GAAkB6C,OAAOi8B,QAAQC,UAAU,CAAEC,KAAML,GAAU,GAAIA,MAvMzE,MAAM,gBAAES,GAAoB9zC,KAAKC,MAAMH,QACjC,MAAEC,GAAUC,KAAKC,MACjB2zC,EAAc7zC,GAASA,EAAM8zC,UAAY9zC,EAAM8zC,SAASzzC,QAAW,EACzE,IAAI2zC,EAAeD,GAAmBA,GAAmBF,GAAcE,EAAkB,EAAIA,EAAkB,EAAI,EACnH,MAAME,EACDh0C,KAAKC,MAAM+I,SACRhJ,KAAKC,MAAM+I,QAAQC,SACnBjJ,KAAKC,MAAM+I,QAAQC,QAAQgrC,OAC3Bj0C,KAAKC,MAAM+I,QAAQC,QAAQgrC,MAAMC,WACrC,GACJ,IAAIC,EAAwB,EAC5B,GAAIH,EAAY1M,QAAQ,KAAO,EAAG,CAC9B,MAAM8M,EAAMJ,EAAYvnC,MAAM,KACb2nC,EAAI,KACJp0C,KAAKC,MAAMkE,KACxBgwC,EAAgB39B,OAAOhK,SAAS4nC,EAAI,GAAI,KAGhDL,EAAeI,EAAgB,GAAKA,GAAiBP,EAAaO,EAAgB,EAAIJ,EACtF/zC,KAAK+H,MAAQ,CAAEqrC,gBAAiBW,GAEhC/zC,KAAKq0C,cAAgBr0C,KAAKq0C,cAAc5C,KAAKzxC,MAC7CA,KAAKs0C,eAAiBt0C,KAAKs0C,eAAe7C,KAAKzxC,MAC/CA,KAAKkzC,SAAWlzC,KAAKkzC,SAASzB,KAAKzxC,MACnCA,KAAK2zC,WAAa3zC,KAAK2zC,WAAWlC,KAAKzxC,MACvCA,KAAKszC,iBAAmBtzC,KAAKszC,iBAAiB7B,KAAKzxC,MACnDA,KAAKizC,WAAa,KAGfhgC,sBAAsBC,EAAgCC,GACzD,OAAInT,KAAK+H,QAAUoL,GAAanT,KAAKC,MAAM0I,OAASuK,EAAUvK,KAM3D9I,SACH,MAAM,MAAEE,GAAUC,KAAKC,OACjB,QAAE0V,EAAO,UAAEtV,GAAcL,KAAKC,MAAMH,OAEpCouB,EAAmBvY,GACrB/V,EAAAA,cAAC20C,EAAAA,GAAa,CACVl0C,UAAU,iCACVuB,IAAK+T,EAAQ/T,KAAO,KACpBhB,KAAM+U,EAAQ/U,KACdkU,UAAW,CAAE1M,OAAQpI,KAAKyV,oBAAqBf,eAAgB1U,KAAKC,MAAM+I,QAAQC,WAGpF2qC,EAAc7zC,GAASA,EAAM8zC,UAAY9zC,EAAM8zC,SAASzzC,QAAW,EAMnEo0C,EAAYrsC,EAAAA,EAAA,GACXnI,KAAKC,OAAK,IACbw0C,aAAc,CACVvmC,YAAalO,KAAKC,MAClBI,UAAW2D,GAAAA,CAAW,SAAU3D,IAEpCq0C,cAAe,CAAEr0C,UAAW,yBAC5Bs0C,YAAa,CAAEt0C,UAAW,sBAAuBuB,IAAK,KAAiB6C,KAAM,WAC7EkR,QAASuY,EACTpuB,OAAQE,KAAKC,OAASD,KAAKC,MAAMH,OACjC80C,iBAAkB,CACdhzC,IAAK,MACLvB,UAAW,0BAEfw0C,YAAajB,EAAa,GAAK7zC,EAAM8zC,SAAS/xC,KAAI,CAACuN,EAAuBrN,IAAkBhC,KAAKs0C,eAAejlC,EAAMrN,KACtH8yC,WAAYlB,EAAa,GAAK7zC,EAAM8zC,SAAS/xC,KAAI,CAACuN,EAAuBrN,IAAkBhC,KAAKq0C,cAAchlC,EAAMrN,OAExH,OAAOhC,KAAKC,MAAMsO,WAAWimC,GAK1BzhC,qBACH,MAAM,KAAEpK,GAAS3I,KAAKC,MACtB,IAAKD,KAAKC,MAAM+I,QAAQC,QAAQ8rC,OAAOC,SAAU,CAC7C,MAAMC,EAAkBtsC,GAAQA,EAAKopC,gBAAkBppC,EAAKopC,eAAelpC,QAAUF,EAAKopC,eAAelpC,OAAOgpC,MAChH,GAAIoD,EACIj1C,KAAKC,MAAMkE,KAAO8wC,GAClBj1C,KAAKizC,YAAcjzC,KAAKizC,WAAWhnC,YAEpC,CACH,MAAM+nC,EACDh0C,KAAKC,MAAM+I,SACRhJ,KAAKC,MAAM+I,QAAQC,SACnBjJ,KAAKC,MAAM+I,QAAQC,QAAQgrC,OAC3Bj0C,KAAKC,MAAM+I,QAAQC,QAAQgrC,MAAMC,WACrC,GACJ,GAAIF,EAAY1M,QAAQ,KAAO,EAAG,CAClB0M,EAAYvnC,MAAM,KACT,KACJzM,KAAKC,MAAMkE,IACxBnE,KAAKizC,YAAcjzC,KAAKizC,WAAWhnC,WAe/CooC,cAAchlC,EAAuBrN,GACzC,MAAM,KAAE2G,GAAS3I,KAAKC,MAChBgyC,EACFtpC,GAAQA,EAAKopC,gBAAkBppC,EAAKopC,eAAelpC,QAAUF,EAAKopC,eAAelpC,OAAOopC,mBACtFgD,EAAkBtsC,GAAQA,EAAKopC,gBAAkBppC,EAAKopC,eAAelpC,QAAUF,EAAKopC,eAAelpC,OAAOgpC,MAC1GqD,OACqB3zC,IAAvB0wC,GAAoCgD,IAAoBj1C,KAAKC,MAAMkE,GAC7D8tC,IAAuBjwC,EACvBhC,KAAK+H,MAAMqrC,kBAAoBpxC,EACnC2vC,GAAYC,EAAAA,EAAAA,cAAa5vC,EAAOhC,KAAKC,MAAMkE,IAEjD,OACIvE,EAAAA,cAAA,MACIqC,IAAKD,EACL3B,UAAU,yBACVgyC,SAAU6C,EAAW,GAAK,EAC1BxvC,QAAS1F,KAAKkzC,SAASlxC,EAAOhC,KAAKC,MAAMkE,IACzCgxC,UAAWn1C,KAAK2zC,WAAW3xC,EAAOhC,KAAKC,MAAMkE,IAC7CY,IAAK/E,KAAK+H,MAAMqrC,kBAAoBpxC,EAAQhC,KAAKgzC,iBAAczxC,EAAS,gBACzDowC,EAAS,gBACTuD,EACfzwC,KAAK,OAEL7E,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAChBpC,EAAAA,aAAmByP,EAA4B,CAC5CqjC,YAAatB,EAAAA,YAAYyB,UACzBrnB,WAAYxpB,IAAUhC,KAAK+H,MAAMqrC,gBACjC1B,UAAW1vC,EACX6vC,MAAO7xC,KAAKC,MAAMkE,OAkE9BmwC,eAAejlC,EAAuBrN,GAC1C,OACIpC,EAAAA,cAACA,EAAAA,SAAc,CAACqC,IAAKD,GAChBpC,EAAAA,aAAmByP,EAA4B,CAC5CqjC,YAAatB,EAAAA,YAAYuB,WACzBnnB,WAAYxpB,IAAUhC,KAAK+H,MAAMqrC,gBACjC1B,UAAW1vC,EACX6vC,MAAO7xC,KAAKC,MAAMkE,MAM1BmvC,iBAAiB5+B,EAA0C0gC,EAAmBC,GAClF,IAAIC,EAGAA,EADAf,EAAAA,GAA0BhK,UACpB,IAAIE,IAAIlzB,OAAOmzB,SAASvpC,MAExB,IAAIspC,IAAI/1B,EAAe4gC,IAAIC,WAAWp0C,MAGhD,MAAM4zC,EAAS,IAAIx9B,OAAOi+B,gBAAgBF,EAAIG,QAG9C,OAFAV,EAAO3vB,IAAIgwB,EAAWC,GACtBC,EAAIG,OAASC,mBAAmBX,EAAO1lB,YAChCimB,EAAIjmB,aA5ObyjB,GAAGtkC,EAAAA,EAAAA,IAAA,CADRE,EAAAA,IACKokC,GAgPN,kGCpRA,MAeA,EAfyC7yC,IACrC,MAAM,QAAE0V,EAAO,aAAE8+B,EAAY,WAAEK,EAAU,YAAED,GAAgB50C,EAC3D,OAAKA,EAAM0V,SAAY1V,EAAM60C,YAAe70C,EAAM40C,YAK9Cj1C,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAK0lC,GACR70C,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK9O,EAAMy0C,eAAgB/+B,GAChC/V,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK9O,EAAM00C,aAAcG,GAC9Bl1C,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK9O,EAAM20C,kBAAmBC,KAPvC50C,EAAM+I,QAAQsB,UAAUC,MAAM,4CACvB,mJCaR,MAAMorC,UAAsB/1C,EAAAA,cAAnCiI,cAAA,oBAoBqB,KAAA+M,kBAAqBG,IAClC,IAAKlE,EAAAA,gBAAgBC,YAAYiE,GAC7B,OAAO,KAEX,MAAMJ,EAAuC,GAC7C,IAAK,MAAM3T,KAAQ+T,EAAU,CAEzB,MAAMC,GAAUC,EAAAA,EAAAA,kBAAiB,QAASjV,KAAKC,MAAMuU,iBAAkB,GAAI,IACrEY,EAAWpU,EAAKoU,SAAWpU,EAAKoU,SAAW,GACjDJ,EAAQE,cAAcC,MAAQC,EAC9B,MAAMC,GAAaC,EAAAA,EAAAA,wBAAuBtV,KAAKC,MAAMuU,iBAAkBQ,GACjE4gC,EAAoC,CACtCx0C,UAAWJ,EAAKI,UAChBf,UAAW,qBACX+U,SAAUpU,EAAKoU,SACfnU,QAASD,EAAKC,QAAQC,eACtBI,aAAcN,EAAKM,aACnBmD,KAAM,SACN8Q,qBAAsBF,EACtB3P,SAASmwC,EAAAA,EAAAA,kBAAiB71C,KAAKC,MAAMuU,iBAAkBQ,EAASI,IAEpET,EAAc+Q,KAAKkwB,GAGvB,OAAOjhC,GA3CJ9U,SACH,MAAM8U,EAAgB3U,KAAK4U,kBAAkB5U,KAAKC,MAAMsU,OACxD,OACI3U,EAAAA,cAAA,OAAKS,UAAU,uBACVsU,GAAiB9D,EAAAA,gBAAgBC,YAAY6D,GAC1C/U,EAAAA,cAACiV,EAAAA,GAAc,CACXN,MAAOI,EACPG,UAAW,CAAEL,aAAczU,KAAKC,MAAMwU,aAAcC,eAAgB1U,KAAKC,MAAMyU,kBAEnF,OAqCpB,+kBCxCO,MAAMohC,UAAqBl2C,EAAAA,cAO9BiI,YAAmB5H,GACf+P,MAAM/P,GAPO,KAAA81C,mBAAuCjgC,EAAAA,EAAAA,oBACpD9V,KAAKC,MAAM+I,QAAQC,QAAQ8M,kBAC3B/V,KAAKC,MAAM+V,aACXhW,KAAKC,MAAMqK,WA6DR,KAAAmL,oBAAuBC,IAC1B1V,KAAKC,MAAMH,OAAO6V,QAAS/U,KAAO8U,EAAMrU,OAAO6D,OAO5C,KAAA2qC,sBAAyBn6B,IAC5B1V,KAAKC,MAAMH,OAAOgwC,UAAYp6B,EAAMrU,OAAO6D,OAQxC,KAAA0Q,qBAAwBC,GAAuBH,IAA8C,IAAAsgC,EACrE,QAA3BA,EAAIh2C,KAAKC,MAAMH,OAAOyU,aAAK,IAAAyhC,GAAvBA,EAA0Bx/B,OAAOX,MACjC7V,KAAKC,MAAMH,OAAOyU,MAAMiC,OAAOX,IAAYT,SAAWM,EAAMrU,OAAO6D,QAzEpErF,SACH,MAAM,QAAE8V,EAAO,UAAEm6B,EAAS,gBAAEmG,EAAe,eAAEC,EAAc,eAAEC,EAAc,MAAE5hC,GAAUvU,KAAKC,MAAMH,OAC5Fs2C,EAAgB7hC,GAAS1D,EAAAA,gBAAgBC,YAAYyD,IACvD3U,EAAAA,cAAC+1C,EAAa,CACVphC,MAAOA,EACPE,aAAczU,KAAK4V,qBACnBlB,eAAgB1U,KAAKC,MAAM+I,QAAQC,QACnCuL,iBAAkBxU,KAAK+1C,oBAGzBM,EAAwB,CAC1Bz0C,IAAK,IACLvB,UAAW,yBACXoE,KAAM,OACNtD,KAAMg1C,MAAAA,OAAc,EAAdA,EAAgBl1C,QAAQC,eAC9B,aAAci1C,MAAAA,OAAc,EAAdA,EAAgB/0C,UAC9BC,OAAQ80C,MAAAA,GAAAA,EAAgB70C,aAAe,cAAWC,GAOhDyM,EAAS7F,EAAAA,EAAA,GACRnI,KAAKC,OAAK,IACb0V,QAAS3V,KAAKs2C,eAAe3gC,GAC7Bm6B,UAAW9vC,KAAKu2C,iBAAiBzG,GACjCmG,gBAAiBj2C,KAAKw2C,uBAAuBP,GAC7CC,eAAgBl2C,KAAKy2C,sBAAsBP,GAC3C3hC,MAAO6hC,EACPM,aAAc,CACVxoC,YAAalO,KAAKC,MAClBI,UAAW,IAEfs2C,kBAAmBR,EAAiBE,EAfR,CAC5Bz0C,IAAK,SACLvB,UAAW,0BAcXu2C,uBAAwB,CACpBv2C,UAAW,uBAEfw2C,gCAAiC,CAC7Bx2C,UAAW,gCACX,cAAe,QAEnBy2C,yBAA0B,CACtBz2C,UAAW,2BAInB,OAAOL,KAAKC,MAAMsO,WAAWP,GA8BzBuoC,iBAAiB31C,GACrB,OAAKA,EAIDhB,EAAAA,cAACiV,EAAAA,GAA0B,CACvBjU,KAAMA,EACNP,UAAU,qBACVyU,UAAW,CAAE1M,OAAQpI,KAAK6vC,sBAAuBn7B,eAAgB1U,KAAKC,MAAM+I,QAAQC,WANjF,KAWPqtC,eAAe3gC,GAAsB,IAAAq6B,EACzC,OAAKr6B,EAGDohC,EAAAA,iBAAiBC,mBAAmBrhC,EAAQ/U,MACrC,KAIPhB,EAAAA,cAACiV,EAAAA,GAAa,CACVjT,IAAgB,QAAbouC,EAAEr6B,EAAQ/T,WAAG,IAAAouC,EAAAA,EAAI,KACpBpvC,KAAM+U,EAAQ/U,KACdP,UAAU,sBACVyU,UAAW,CAAE1M,OAAQpI,KAAKyV,oBAAqBf,eAAgB1U,KAAKC,MAAM+I,QAAQC,WAX/E,KAgBPutC,uBAAuBnnC,EAA4B4nC,GAA+B,IAAAC,EAAAC,EAGtF,MAUMC,EAAwB/nC,MAAAA,GAAmB,QAAf6nC,EAAJ7nC,EAAMkzB,qBAAa,IAAA2U,GAAnBA,EAAqBva,UAAYttB,EAAKkzB,cAVd,CAClD5F,UAAW,CACPf,GAAI,CAAEgB,EAAG,kBAAmBf,EAAG,IAAKgB,EAAG,KACvCf,GAAI,CAAEc,EAAG,kBAAmBf,EAAG,IAAKgB,EAAG,KACvCd,GAAI,CAAEa,EAAG,kBAAmBf,EAAG,IAAKgB,EAAG,KACvCb,GAAI,CAAEY,EAAG,kBAAmBf,EAAG,IAAKgB,EAAG,KACvCZ,GAAI,CAAEW,EAAG,kBAAmBf,EAAG,IAAKgB,EAAG,MAE3CC,UAAU,GAId,OACIl9B,EAAAA,cAACiV,EAAAA,GAAc/F,OAAAC,OAAA,GACPM,EAAI,CACRqF,eAAgB1U,KAAKC,MAAM+I,QAAQC,QACnC0yB,aAAc37B,KAAKC,MAAM+I,QAAQC,QAAQ0yB,aACzC4G,cAAe6U,EACf9T,oBAAoB,UAAS,cAChB2T,EACbniC,UAAW,CACP7S,IAAsC,QAAnCk1C,EAAEn3C,KAAKC,MAAMH,OAAOm2C,uBAAe,IAAAkB,EAAAA,EAAI,GAC1CziC,eAAgB1U,KAAKC,MAAM+I,QAAQC,QACnCouC,WAAYr3C,KAAKC,MAAM2T,SACvB0jC,kBAAmB,YAM3Bb,sBACJpnC,EACAkoC,EACAN,GAA+B,IAAAO,EAE/B,OAAKnoC,EAGD0nC,EAAAA,iBAAiBC,mBAAmB3nC,EAAK2zB,KAClC,KAIPpjC,EAAAA,cAACiV,EAAAA,GAAc/F,OAAAC,OAAA,GACPM,EAAI,CACRssB,aAAc37B,KAAKC,MAAM+I,QAAQC,QAAQ0yB,aACzC4G,cAAegV,EACfjU,oBAAoB,UAAS,cAChB2T,EACbniC,UAAW,CACP7S,IAAqC,QAAlCu1C,EAAEx3C,KAAKC,MAAMH,OAAOo2C,sBAAc,IAAAsB,EAAAA,EAAI,GACzC9iC,eAAgB1U,KAAKC,MAAM+I,QAAQC,QACnCouC,WAAYr3C,KAAKC,MAAM2T,SACvB0jC,kBAAmB,QAGnBG,OAASz3C,KAAKC,MAAMH,OAAe43C,2BApBpC,MA2BnB,kIC3MA,MAgCaC,EAA8D13C,IACvE,MAAM,aAAEy2C,GAAiBz2C,EACzB,OAAOL,EAAAA,cAACgQ,EAAAA,OAAMd,OAAAC,OAAA,GAAK2nC,GAlCYz2C,CAAAA,IAC/B,MAAM,QACF0V,EAAO,UACPm6B,EAAS,gBACTmG,EAAe,MACf1hC,EAAK,eACL2hC,EAAc,kBACdS,EAAiB,uBACjBC,EAAsB,gCACtBC,EAA+B,yBAC/BC,GACA72C,EAEJ,OACIL,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK4nC,GACN/2C,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK6nC,GAAyBX,GACnCr2C,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK+nC,GACLnhC,EACAm6B,EACAv7B,GAEL3U,EAAAA,cAACiP,EAAAA,KAAIC,OAAAC,OAAA,GAAK8nC,GAAkCX,KAalB0B,CAA0B33C,KAGhE","sources":["webpack://msdyn365.commerce.online/./src/modules/container-with-header/container-with-header.tsx?a74d","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-gift-card/smwe-checkout-gift-card.props.autogenerated.ts?21ed","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-gift-card/components/get-form.tsx?0222","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-gift-card/components/get-item.tsx?125f","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-gift-card/components/get-list.tsx?8a3a","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-gift-card/components/title.tsx?101f","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-gift-card/smwe-checkout-gift-card.tsx?4c4f","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-gift-card/smwe-checkout-gift-card.view.tsx?d786","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-section-container/components/loading.tsx?e6c0","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-section-container/smwe-checkout-section-container.tsx?369e","webpack://msdyn365.commerce.online/./src/modules/smwe-checkout-section-container/smwe-checkout-section-container.view.tsx?c80c","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-tile/components/account-b2b-requests-tile-links.tsx?d6f5","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-tile/b2b-requests-tile.tsx?9498","webpack://msdyn365.commerce.online/./src/modules/b2b-requests-tile/b2b-requests-tile.view.tsx?3f4e","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-button.tsx?c1c2","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-error.tsx?347f","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-input.tsx?fd25","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-label.tsx?aab5","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-loading-icon.tsx?d70e","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-loading-message.tsx?d239","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/components/password-reset-verification-success.tsx?3c81","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/password-reset-verification.tsx?691f","webpack://msdyn365.commerce.online/./src/modules/password-reset-verification/password-reset-verification.view.tsx?dffa","webpack://msdyn365.commerce.online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://msdyn365.commerce.online/./src/common/address-autosuggest.ts?f5a2","webpack://msdyn365.commerce.online/./src/common/address-common.ts?cf4b","webpack://msdyn365.commerce.online/./src/common/address-format.data.ts?6cbf","webpack://msdyn365.commerce.online/./src/common/address-format.ts?4f04","webpack://msdyn365.commerce.online/./src/common/address-meta-data.ts?c6e6","webpack://msdyn365.commerce.online/./src/common/address-module.data.ts?697a","webpack://msdyn365.commerce.online/./src/common/components/address-checkbox.tsx?eb1a","webpack://msdyn365.commerce.online/./src/common/components/address-add.tsx?e6a6","webpack://msdyn365.commerce.online/./src/common/components/address-alert.tsx?10d1","webpack://msdyn365.commerce.online/./src/common/components/address-button.tsx?7f7b","webpack://msdyn365.commerce.online/./src/common/components/address-detail-item.tsx?5209","webpack://msdyn365.commerce.online/./src/common/components/address-dropdown.tsx?f24b","webpack://msdyn365.commerce.online/./src/common/components/address-error-alert.tsx?bcde","webpack://msdyn365.commerce.online/./src/common/components/address-error-message.tsx?89ad","webpack://msdyn365.commerce.online/./src/common/components/address-error-title.tsx?3926","webpack://msdyn365.commerce.online/./src/common/components/address-input.tsx?8073","webpack://msdyn365.commerce.online/./src/common/components/address-label.tsx?6864","webpack://msdyn365.commerce.online/./src/common/components/address-list.tsx?a628","webpack://msdyn365.commerce.online/./src/common/components/address-select.tsx?c1df","webpack://msdyn365.commerce.online/./src/common/components/address-show.tsx?3f60","webpack://msdyn365.commerce.online/./src/modules/account-management-address/account-management-address.tsx?27e7","webpack://msdyn365.commerce.online/./src/modules/account-management-address/account-management-address.view.tsx?8c9f","webpack://msdyn365.commerce.online/./src/modules/business-account-address/business-account-address.tsx?299e","webpack://msdyn365.commerce.online/./src/modules/business-account-address/business-account-address.view.tsx?5078","webpack://msdyn365.commerce.online/./src/common/components/address-billing-checkbox.tsx?4008","webpack://msdyn365.commerce.online/./src/common/components/address-billing-heading.tsx?7bbd","webpack://msdyn365.commerce.online/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://msdyn365.commerce.online/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://msdyn365.commerce.online/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://msdyn365.commerce.online/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://msdyn365.commerce.online/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://msdyn365.commerce.online/./src/modules/business-partners/components/search-bar.tsx?63c1","webpack://msdyn365.commerce.online/./src/modules/business-partners/components/data-grid.tsx?ddec","webpack://msdyn365.commerce.online/./src/modules/business-partners/components/business-partner-users-table.tsx?c677","webpack://msdyn365.commerce.online/./src/modules/business-partners/components/business-partners-table.tsx?8b1d","webpack://msdyn365.commerce.online/./src/modules/business-partners/business-partners.tsx?57a6","webpack://msdyn365.commerce.online/./src/modules/business-partners/business-partners.view.tsx?b34e","webpack://msdyn365.commerce.online/../../src/checkout-utilities.data.ts?b2cc","webpack://msdyn365.commerce.online/../../../src/module-state-manager/module-state.ts?7579","webpack://msdyn365.commerce.online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://msdyn365.commerce.online/./src/common/waiting.tsx?8095","webpack://msdyn365.commerce.online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://msdyn365.commerce.online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://msdyn365.commerce.online/./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack://msdyn365.commerce.online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://msdyn365.commerce.online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://msdyn365.commerce.online/./src/modules/subscribe/subscribe.tsx?9fea","webpack://msdyn365.commerce.online/./src/modules/subscribe/subscribe.view.tsx?19c8","webpack://msdyn365.commerce.online/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://msdyn365.commerce.online/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://msdyn365.commerce.online/./src/modules/tab/tab.tsx?9ac6","webpack://msdyn365.commerce.online/./src/modules/tab/tab.view.tsx?a99d","webpack://msdyn365.commerce.online/./src/modules/tile-list-item/components/links.tsx?c969","webpack://msdyn365.commerce.online/./src/modules/tile-list-item/tile-list-item.tsx?114a","webpack://msdyn365.commerce.online/./src/modules/tile-list-item/tile-list-item.view.tsx?19a8"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\nimport { IContainerWithHeaderData } from './container-with-header.data';\r\nimport {\r\n IContainerWithHeaderConfig,\r\n IContainerWithHeaderProps,\r\n ITitleData\r\n} from './container-with-header.props.autogenerated';\r\n\r\n// ==============================================================================\r\n/**\r\n * ContainerWithHeader component\r\n * @extends {React.PureComponent>}\r\n */\r\n// ==============================================================================\r\nclass ContainerWithHeader extends React.PureComponent> {\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n public render(): JSX.Element {\r\n const { config, slots } = this.props;\r\n const hasSlots = slots && slots.contentBlock && slots.contentBlock.length;\r\n\r\n return (\r\n
\r\n {config && this._renderHeader(config)}\r\n {slots.contentBlockNoHeadings && this._renderSlotItems(slots.contentBlockNoHeadings)}\r\n {hasSlots && this._renderSlotItems(slots.contentBlock)}\r\n
\r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderHeader(config: IContainerWithHeaderConfig): JSX.Element {\r\n return (\r\n
\r\n {config?.title && this._renderLinkedTitle(config)}\r\n {config?.text &&\r\n // tslint:disable-next-line:react-no-dangerous-html\r\n \r\n }\r\n
\r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderLinkedTitle(config: IContainerWithHeaderConfig): JSX.Element | null {\r\n if (config?.link?.linkUrl?.destinationUrl) {\r\n return (\r\n \r\n {this._renderTitle(config.title!)}\r\n \r\n );\r\n } else {\r\n return this._renderTitle(config.title!);\r\n }\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderTitle(title: ITitleData): JSX.Element | null {\r\n if (title && title?.text) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderSlotItems(items: React.ReactNode[]): JSX.Element {\r\n return (\r\n
\r\n {items.map((slot: React.ReactNode, index: number) => (\r\n \r\n {slot}\r\n \r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ContainerWithHeader;","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ISmweCheckoutGiftCard contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum showAdditionalFields {\r\n pin = 'pin',\r\n expirationDate = 'expirationDate',\r\n pinAndExpirationDate = 'pinAndExpirationDate'\r\n}\r\n\r\nexport interface ISmweCheckoutGiftCardConfig extends Msdyn365.IModuleConfig {\r\n className?: string;\r\n showAdditionalFields?: showAdditionalFields;\r\n}\r\n\r\nexport interface ISmweCheckoutGiftCardResources {\r\n emptyInputError: string;\r\n invalidCodeError: string;\r\n invalidCardInfoError: string;\r\n invalidCardTypeError: string;\r\n noCardPinError: string;\r\n noCardExpError: string;\r\n duplicatedCodeError: string;\r\n noBalanceError: string;\r\n giftCardFormLabel: string;\r\n giftCardNumberLabel: string;\r\n giftCardPinLabel: string;\r\n giftCardExpLabel: string;\r\n giftCardPinPlaceholderText: string;\r\n giftCardExpPlaceholderText: string;\r\n giftCardAlertLabel: string;\r\n applyGiftCardButton: string;\r\n removeGiftCardButton: string;\r\n enteredGiftCardLabel: string;\r\n giftCardAvailableBalanceLabel: string;\r\n}\r\n\r\nexport interface ISmweCheckoutGiftCardProps extends Msdyn365.IModule {\r\n resources: ISmweCheckoutGiftCardResources;\r\n config: ISmweCheckoutGiftCardConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { showAdditionalFields } from '../smwe-checkout-gift-card.props.autogenerated';\r\n\r\nexport interface IGetFormInput {\r\n errorMessage: string;\r\n giftCardNumber: string;\r\n giftCardPin: string;\r\n giftCardExp: string;\r\n inputRef?: React.RefObject;\r\n inputPinRef?: React.RefObject;\r\n inputExpRef?: React.RefObject;\r\n supportExternalGiftCard?: boolean;\r\n additionalFields?: showAdditionalFields;\r\n resources: {\r\n applyGiftCardButton: string;\r\n giftCardFormLabel: string;\r\n giftCardNumberLabel: string;\r\n giftCardPinLabel: string;\r\n giftCardExpLabel: string;\r\n giftCardAlertLabel: string;\r\n giftCardPinPlaceholderText: string;\r\n giftCardExpPlaceholderText: string;\r\n };\r\n onEnterGiftCardNumber(giftCardNumber: string): void;\r\n onEnterGiftCardPin(giftCardPin: string): void;\r\n onEnterGiftCardExp(giftCardExp: string): void;\r\n onApplyGiftCard(): Promise;\r\n}\r\n\r\nexport interface IForm {\r\n formProps: INodeProps;\r\n label: React.ReactNode;\r\n inputPinLabel: React.ReactNode;\r\n inputExpLabel: React.ReactNode;\r\n alert: React.ReactNode;\r\n inputProps: INodeProps;\r\n inputNumProps: INodeProps;\r\n inputPinProps: INodeProps;\r\n inputExpProps: INodeProps;\r\n inputNumber: React.ReactNode;\r\n inputPin: React.ReactNode;\r\n inputExp: React.ReactNode;\r\n applyButton: React.ReactNode;\r\n supportExternalGiftCard: boolean | undefined;\r\n showGiftCardPinInput: boolean | undefined;\r\n showGiftCardExpInput: boolean | undefined;\r\n alertFieldLabel: React.ReactNode;\r\n}\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nexport const getForm = (options: IGetFormInput): IForm => {\r\n const {\r\n errorMessage,\r\n inputRef,\r\n inputPinRef,\r\n inputExpRef,\r\n giftCardNumber,\r\n giftCardPin,\r\n giftCardExp,\r\n onEnterGiftCardNumber,\r\n onEnterGiftCardPin,\r\n onEnterGiftCardExp,\r\n onApplyGiftCard,\r\n supportExternalGiftCard,\r\n additionalFields,\r\n resources: { applyGiftCardButton, giftCardFormLabel, giftCardNumberLabel, giftCardPinLabel, giftCardExpLabel,\r\n giftCardAlertLabel, giftCardPinPlaceholderText, giftCardExpPlaceholderText }\r\n } = options;\r\n\r\n const onApply = async (e: React.SyntheticEvent): Promise => {\r\n e.preventDefault();\r\n await onApplyGiftCard();\r\n };\r\n\r\n const onChangeNumber = (e: React.ChangeEvent) => {\r\n const value = (e.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n onEnterGiftCardNumber(value);\r\n };\r\n\r\n const onChangePin = (e: React.ChangeEvent) => {\r\n const value = (e.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n onEnterGiftCardPin(value);\r\n };\r\n\r\n // need to filter out the month and year\r\n const onChangeExp = (e: React.ChangeEvent) => {\r\n const value = (e.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n onEnterGiftCardExp(value);\r\n };\r\n\r\n const formProps = {\r\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\r\n onSubmit: onApply,\r\n tag: 'form' as NodeTag\r\n };\r\n\r\n const label = (\r\n \r\n );\r\n\r\n const inputPinLabel = (\r\n \r\n );\r\n\r\n const inputExpLabel = (\r\n \r\n );\r\n\r\n const alertFieldLabel = (\r\n \r\n );\r\n\r\n const alert = (\r\n \r\n {errorMessage}\r\n \r\n );\r\n\r\n const inputProps = {\r\n className: 'ms-checkout-gift-card__input-fields'\r\n };\r\n\r\n const inputNumProps = {\r\n className: 'ms-checkout-gift-card__input-num-fields'\r\n };\r\n\r\n const inputPinProps = {\r\n className: 'ms-checkout-gift-card__input-pin-fields'\r\n };\r\n\r\n const inputExpProps = {\r\n className: 'ms-checkout-gift-card__input-exp-fields'\r\n };\r\n\r\n const inputNumber = (\r\n \r\n );\r\n\r\n const inputPin = (\r\n \r\n );\r\n\r\n const inputExp = (\r\n \r\n );\r\n\r\n const applyButton = (\r\n \r\n {applyGiftCardButton}\r\n \r\n );\r\n\r\n let showGiftCardPinInput = false;\r\n let showGiftCardExpInput = false;\r\n\r\n switch(additionalFields) {\r\n case showAdditionalFields.pin:\r\n showGiftCardPinInput = true;\r\n break;\r\n case showAdditionalFields.expirationDate:\r\n showGiftCardExpInput = true;\r\n break;\r\n case showAdditionalFields.pinAndExpirationDate:\r\n showGiftCardPinInput = true;\r\n showGiftCardExpInput = true;\r\n break;\r\n default:\r\n }\r\n\r\n return {\r\n formProps,\r\n label,\r\n inputPinLabel,\r\n inputExpLabel,\r\n alert,\r\n inputProps,\r\n inputNumProps,\r\n inputPinProps,\r\n inputExpProps,\r\n inputNumber,\r\n inputPin,\r\n inputExp,\r\n applyButton,\r\n supportExternalGiftCard,\r\n showGiftCardPinInput,\r\n showGiftCardExpInput,\r\n alertFieldLabel\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport * as React from 'react';\r\n\r\nexport interface IGetItemInput {\r\n giftCard: IGiftCardExtend;\r\n canRemove: boolean;\r\n resources: {\r\n enteredGiftCardLabel: string;\r\n giftCardAvailableBalanceLabel: string;\r\n removeGiftCardButton: string;\r\n };\r\n getFormattedPrice(price?: number, currencyCode?: string): string;\r\n onRemoveGiftCard(giftCardNumber: string): void;\r\n}\r\n\r\nexport interface IItem {\r\n itemProps: INodeProps;\r\n id?: string;\r\n selectedGiftCard: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * GiftCardItem component\r\n * @extends {React.PureComponent}\r\n */\r\nexport const getItem = ({\r\n giftCard,\r\n getFormattedPrice,\r\n canRemove,\r\n onRemoveGiftCard,\r\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\r\n}: IGetItemInput): IItem => {\r\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\r\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\r\n const onRemove = (): void => onRemoveGiftCard(giftCard.Id || '');\r\n\r\n const itemProps = {\r\n className: 'ms-checkout-gift-card__item'\r\n };\r\n\r\n const selectedGiftCard = (\r\n \r\n {enteredGiftCardLabel} {giftCardLast4Digit} ({giftCardAvailableBalanceLabel}{' '}\r\n {balance})\r\n \r\n );\r\n\r\n const removeButton = canRemove && (\r\n \r\n );\r\n\r\n return {\r\n itemProps,\r\n id: giftCard.Id,\r\n selectedGiftCard,\r\n removeButton\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { getItem, IItem } from './get-item';\r\n\r\ninterface IGetListInput {\r\n giftCards?: IGiftCardExtend[];\r\n canRemove: boolean;\r\n resources: {\r\n enteredGiftCardLabel: string;\r\n giftCardAvailableBalanceLabel: string;\r\n removeGiftCardButton: string;\r\n };\r\n getFormattedPrice(price?: number, currencyCode?: string): string;\r\n onRemoveGiftCard(giftCardNumber: string): void;\r\n}\r\n\r\nexport interface IList {\r\n listProps: INodeProps;\r\n list: IItem[];\r\n}\r\n\r\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\r\n if (!giftCards || !giftCards.length) {\r\n return undefined;\r\n }\r\n\r\n const listProps = {\r\n className: 'ms-checkout-gift-card__list'\r\n };\r\n\r\n const list = giftCards.map(giftCard =>\r\n getItem({\r\n canRemove,\r\n getFormattedPrice,\r\n giftCard,\r\n onRemoveGiftCard,\r\n resources\r\n })\r\n );\r\n\r\n return {\r\n listProps,\r\n list\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\ninterface IGiftCardTitleProps {\r\n title: string;\r\n}\r\n\r\nconst GiftCardTitle: React.FC = ({ title }) => ;\r\n\r\nexport default GiftCardTitle;\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 { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { getGiftCardAsync, resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { CardTypeInfo, GiftCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport classname from 'classnames';\r\nimport { computed, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { getForm, IForm } from './components/get-form';\r\nimport { getList, IList } from './components/get-list';\r\nimport TitleCompoent from './components/title';\r\nimport { ISmweCheckoutGiftCardData } from './smwe-checkout-gift-card.data';\r\nimport { ISmweCheckoutGiftCardProps } from './smwe-checkout-gift-card.props.autogenerated';\r\n\r\nexport * from './components/get-form';\r\nexport * from './components/get-item';\r\nexport * from './components/get-list';\r\n\r\ninterface ICheckoutGiftCardState {\r\n isFetchingGiftCard: boolean;\r\n errorMessage: string;\r\n giftCardNumber: string;\r\n giftCardPin: string;\r\n giftCardExp: string;\r\n}\r\n\r\nexport interface ICheckoutGiftCardModuleProps extends ISmweCheckoutGiftCardProps, IModuleStateProps {}\r\n\r\nexport interface IShowResource {\r\n title: React.ReactNode;\r\n list?: IList;\r\n}\r\n\r\nexport interface IAddResource {\r\n form: IForm;\r\n list?: IList;\r\n}\r\n\r\nexport interface ICheckoutGiftCardViewProps extends ISmweCheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\r\n className?: string;\r\n\r\n showGiftCard?: IShowResource;\r\n addGiftCard?: IAddResource;\r\n\r\n checkoutGiftCardProps: IModuleProps;\r\n couldPaidByGiftCard?: boolean;\r\n isEnabled?: boolean;\r\n onEdit?(): void;\r\n onCancel?(): void;\r\n onSubmit?(): void;\r\n enterGiftCardNumber?(giftCardNumber: string): void;\r\n enterGiftCardPin?(giftCardNumber: string): void;\r\n enterGiftCardExp?(giftCardNumber: string): void;\r\n removeGiftCard?(giftCardNumber: string): void;\r\n applyGiftCard?(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGiftCard component\r\n * @extends {React.Component, ICheckoutGiftCardState>}\r\n */\r\n@observer\r\nexport class CheckoutGiftCard extends React.Component {\r\n public state: ICheckoutGiftCardState = {\r\n isFetchingGiftCard: false,\r\n errorMessage: '',\r\n giftCardNumber: '',\r\n giftCardPin: '',\r\n giftCardExp: ''\r\n };\r\n\r\n private inputRef: React.RefObject = React.createRef();\r\n\r\n private inputPinRef: React.RefObject = React.createRef();\r\n\r\n private inputExpRef: React.RefObject = React.createRef();\r\n\r\n @computed get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n @computed get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.loyaltyAmount) {\r\n return 0;\r\n }\r\n return checkoutState.loyaltyAmount;\r\n }\r\n\r\n @computed get shouldPayGiftCard(): boolean {\r\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\r\n if (!cart) {\r\n return false;\r\n }\r\n // Use gift card card when loyalty points do not cover the total amount\r\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount;\r\n return amountDue > 0;\r\n }\r\n\r\n @computed get hasSelectedItem(): boolean {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n const giftCards = checkout.result && checkout.result.giftCardExtends;\r\n return !!giftCards && giftCards.length > 0;\r\n }\r\n\r\n public componentDidMount(): void {\r\n // @ts-ignore: Compiler not reconizing condition check for function params\r\n when(\r\n () => this.isDataReady,\r\n () => {\r\n this.init();\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n moduleState: { isReady },\r\n data: { checkout },\r\n config: { className, showAdditionalFields },\r\n resources\r\n } = this.props;\r\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\r\n const giftCards = checkout.result && checkout.result.giftCardExtends;\r\n const additionalFields = showAdditionalFields;\r\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\r\n\r\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\r\n return null;\r\n }\r\n\r\n const supportExternalGiftCard = supportedGiftCardType === 'internal' ? false : true;\r\n\r\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\r\n\r\n const viewProps: ICheckoutGiftCardViewProps = {\r\n ...this.props,\r\n ...this.state,\r\n className: moduleClassName,\r\n\r\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\r\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\r\n isEnabled: this.isEnabled(),\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n enterGiftCardNumber: this.enterGiftCardNumber,\r\n enterGiftCardPin: this.enterGiftCardPin,\r\n enterGiftCardExp: this.enterGiftCardExp,\r\n removeGiftCard: this.removeGiftCard,\r\n applyGiftCard: this.applyGiftCard,\r\n showGiftCard: isReady\r\n ? {\r\n title: ,\r\n list: getList({\r\n canRemove: false,\r\n getFormattedPrice: this.getFormattedPrice,\r\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\r\n onRemoveGiftCard: this.removeGiftCard,\r\n resources\r\n })\r\n }\r\n : undefined,\r\n addGiftCard: !isReady\r\n ? {\r\n form: getForm({\r\n errorMessage,\r\n giftCardNumber,\r\n giftCardPin,\r\n giftCardExp,\r\n inputRef: this.inputRef,\r\n inputPinRef: this.inputPinRef,\r\n inputExpRef: this.inputExpRef,\r\n resources,\r\n onEnterGiftCardNumber: this.enterGiftCardNumber,\r\n onEnterGiftCardPin: this.enterGiftCardPin,\r\n onEnterGiftCardExp: this.enterGiftCardExp,\r\n onApplyGiftCard: this.applyGiftCard,\r\n supportExternalGiftCard,\r\n additionalFields\r\n }),\r\n list: getList({\r\n canRemove: true,\r\n getFormattedPrice: this.getFormattedPrice,\r\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\r\n onRemoveGiftCard: this.removeGiftCard,\r\n resources\r\n })\r\n }\r\n : undefined\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private init = (): void => {\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n isRequired: false,\r\n ...(!this.isEnabled() && { status: 'disabled' })\r\n });\r\n };\r\n\r\n private couldPaidByGiftCard = (): boolean => {\r\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\r\n if (!cart) {\r\n return false;\r\n }\r\n // Use gift card when it is not free\r\n return (cart.TotalAmount || 0) > 0;\r\n };\r\n\r\n private isEnabled = (): boolean => {\r\n if (!this.props.context.request.user.isAuthenticated && this.props.context.app.config.giftCardSupported !== 'external') {\r\n return false;\r\n }\r\n return this.couldPaidByGiftCard();\r\n };\r\n\r\n private onEdit = (): void => {\r\n // Show add gift card form\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private onCancel = (): void => {\r\n this.handleCancelOrSubmit();\r\n };\r\n\r\n private onSubmit = (): void => {\r\n this.handleCancelOrSubmit();\r\n };\r\n\r\n private handleCancelOrSubmit = () => {\r\n if (this.hasSelectedItem) {\r\n // Show summary screen\r\n this.props.moduleState.onReady();\r\n } else {\r\n // Skip the module\r\n this.props.moduleState.onSkip();\r\n }\r\n };\r\n\r\n private getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\r\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\r\n };\r\n\r\n private enterGiftCardNumber = (giftCardNumber: string): void => {\r\n this.setState({\r\n giftCardNumber\r\n });\r\n this.clearError();\r\n };\r\n\r\n private enterGiftCardPin = (giftCardPin: string): void => {\r\n this.setState({\r\n giftCardPin\r\n });\r\n this.clearError();\r\n };\r\n\r\n private enterGiftCardExp = (giftCardExp: string): void => {\r\n this.setState({\r\n giftCardExp\r\n });\r\n this.clearError();\r\n };\r\n\r\n private setError = (errorMessage: string): void => {\r\n this.props.telemetry.error('Error', errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.setState({\r\n errorMessage\r\n });\r\n };\r\n\r\n private clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n errorMessage: ''\r\n });\r\n };\r\n\r\n private removeGiftCard = async (giftCardNumber: string): Promise => {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState) {\r\n return;\r\n }\r\n\r\n await checkoutState.removeGiftCardExtend({ giftCardNumber });\r\n };\r\n\r\n private applyGiftCard = async (): Promise => {\r\n if (this.state.isFetchingGiftCard) {\r\n return;\r\n }\r\n this.setState({\r\n isFetchingGiftCard: true\r\n });\r\n\r\n const checkoutState = this.props.data.checkout.result;\r\n const giftCardNumber = this.state.giftCardNumber.trim();\r\n const giftCardPin = this.state.giftCardPin.trim();\r\n const giftCardExp = this.state.giftCardExp.trim();\r\n\r\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\r\n const giftCardType = giftCardTypes && giftCardTypes[0];\r\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\r\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\r\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\r\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\r\n\r\n const giftCardExtend: IGiftCardExtend = { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId, ...giftCard};\r\n if (checkoutState && giftCard) {\r\n await checkoutState.addGiftCardExtend({ giftCard: giftCardExtend });\r\n this.clearError();\r\n this.setState({\r\n giftCardNumber: '',\r\n giftCardPin: '',\r\n giftCardExp: '',\r\n isFetchingGiftCard: false\r\n });\r\n return Promise.resolve();\r\n } else {\r\n const input =\r\n this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\r\n input && input.focus();\r\n this.setState({\r\n isFetchingGiftCard: false\r\n });\r\n }\r\n };\r\n\r\n private getGiftCard = async (giftCardNumber: string, giftCardPin: string, giftCardExp: string, isPinRequired: boolean | undefined, isExpRequired: boolean | undefined, tenderTypeId: string | undefined): Promise => {\r\n const {\r\n resources: { invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\r\n } = this.props;\r\n\r\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\r\n\r\n if (!tenderTypeId) {\r\n return undefined;\r\n }\r\n\r\n switch (supportedGiftCardType) {\r\n case undefined:\r\n case 'internal':\r\n if (tenderTypeId !== '13' && tenderTypeId !== '4') {\r\n this.setError(invalidCardTypeError);\r\n return undefined;\r\n }\r\n break;\r\n case 'external':\r\n if (tenderTypeId !== '12') {\r\n this.setError(invalidCardTypeError);\r\n return undefined;\r\n }\r\n break;\r\n case 'both':\r\n if (tenderTypeId !== '12' && tenderTypeId !== '13' && tenderTypeId !== '4') {\r\n this.setError(invalidCardTypeError);\r\n return undefined;\r\n }\r\n break;\r\n default:\r\n }\r\n\r\n if (isPinRequired && giftCardPin === '') {\r\n this.setError(noCardPinError);\r\n return undefined;\r\n }\r\n\r\n if (isExpRequired && giftCardExp === '') {\r\n this.setError(noCardExpError);\r\n return undefined;\r\n }\r\n\r\n const month = parseInt(giftCardExp.split('/')[0], 10);\r\n const year = parseInt(giftCardExp.split('/')[1], 10);\r\n\r\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\r\n .then(activeGiftCard => {\r\n // if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\r\n // this.setError(noBalanceError);\r\n // return;\r\n // }\r\n return activeGiftCard;\r\n })\r\n .catch(error => {\r\n this.setError(invalidCardInfoError);\r\n return undefined;\r\n });\r\n };\r\n\r\n private getGiftCardTypes = async (giftCardNumber: string): Promise => {\r\n const {\r\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\r\n data: { checkout }\r\n } = this.props;\r\n\r\n if (!giftCardNumber) {\r\n this.setError(emptyInputError);\r\n return undefined;\r\n }\r\n\r\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\r\n if (isDuplicated) {\r\n this.setError(duplicatedCodeError);\r\n return undefined;\r\n }\r\n\r\n const GIFTCARDTYPE = 7;\r\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, GIFTCARDTYPE)\r\n .then(giftCardTypes => {\r\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\r\n this.setError(invalidCodeError);\r\n return ;\r\n }\r\n return giftCardTypes;\r\n })\r\n .catch(error => {\r\n this.setError(invalidCodeError);\r\n return undefined;\r\n });\r\n };\r\n}\r\n\r\nexport default withModuleState(CheckoutGiftCard);\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './smwe-checkout-gift-card';\r\n\r\nexport const From: React.FC = ({ formProps, label, inputPinLabel, inputExpLabel, alert, inputProps, inputNumProps,\r\n inputPinProps, inputExpProps, inputNumber, inputPin, inputExp, applyButton, supportExternalGiftCard, showGiftCardPinInput, showGiftCardExpInput, alertFieldLabel }) => (\r\n \r\n {alert}\r\n {supportExternalGiftCard ?\r\n \r\n \r\n {label}\r\n {inputNumber}\r\n \r\n {showGiftCardPinInput &&\r\n \r\n {inputPinLabel}\r\n {inputPin}\r\n \r\n }\r\n {showGiftCardExpInput &&\r\n \r\n {inputExpLabel}\r\n {inputExp}\r\n \r\n }\r\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\r\n \r\n : <>{label}{inputNumber}\r\n }\r\n {applyButton}\r\n \r\n);\r\n\r\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\r\n \r\n {selectedGiftCard}\r\n {removeButton}\r\n \r\n);\r\n\r\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\r\n \r\n {list.map(({ id, ...item }) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const AddResource: React.FC = ({ form, list }) => (\r\n <>\r\n {form && }\r\n {list && }\r\n \r\n);\r\n\r\nexport const ShowResource: React.FC = ({ title, list }) => (\r\n <>\r\n {title}\r\n {list && }\r\n \r\n);\r\n\r\nconst CheckoutGiftCardView: React.FC = props => {\r\n const { checkoutGiftCardProps, showGiftCard, addGiftCard } = props;\r\n return (\r\n \r\n {showGiftCard && }\r\n {addGiftCard && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutGiftCardView;\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\nconst Loading: React.FC = () =>
;\r\n\r\nexport default Loading;\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 { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { computed, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ISmweCheckoutSectionContainerData } from './smwe-checkout-section-container.data';\r\nimport { ISmweCheckoutSectionContainerProps } from './smwe-checkout-section-container.props.autogenerated';\r\nimport LoadingComponent from './components/loading';\r\n\r\n/**\r\n * ICheckoutSectionContainerModuleProps interface.\r\n */\r\nexport interface ICheckoutSectionContainerModuleProps\r\n extends ISmweCheckoutSectionContainerProps,\r\n IModuleStateProps {\r\n enableControl: boolean;\r\n}\r\n\r\ninterface ICheckoutSectionContainerState {\r\n isCollapse?: boolean;\r\n}\r\n\r\nexport interface ICheckoutSectionContainerItem {\r\n id: string;\r\n loading?: React.ReactNode;\r\n itemProps: INodeProps;\r\n item: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutSectionContainerViewProps extends ISmweCheckoutSectionContainerProps<{}> {\r\n className: string;\r\n checkoutPlainContainerProps: IModuleProps;\r\n items: ICheckoutSectionContainerItem[];\r\n}\r\n\r\nconst paymentInstrumentModuleId = 'payment-instrument';\r\n\r\nconst zeroAmount = 0;\r\n\r\n/**\r\n *\r\n * CheckoutPlainContainer component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nexport class CheckoutPlainContainer extends React.Component {\r\n @computed public get amountDue(): number {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n if (!checkout?.result) {\r\n return 0;\r\n }\r\n\r\n const checkoutResult = checkout.result;\r\n const cart = checkoutResult.checkoutCart?.cart;\r\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\r\n return 0;\r\n }\r\n\r\n return cart.TotalAmount ?? zeroAmount;\r\n }\r\n\r\n public constructor(props: ICheckoutSectionContainerModuleProps) {\r\n super(props);\r\n this.state = { isCollapse: false };\r\n }\r\n\r\n public componentDidMount(): void {\r\n const items = this.getItems();\r\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\r\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\r\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\r\n childIds\r\n });\r\n\r\n reaction(\r\n () => this.props.moduleState.isReady,\r\n () => {\r\n this.onContainerReady();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.moduleState.shouldSubmitContainer,\r\n () => {\r\n this.onSubmit();\r\n }\r\n );\r\n\r\n // Reaction to collapse the payment section for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\r\n shouldCollapsePaymentSection => {\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\r\n this.setState({ isCollapse: shouldCollapsePaymentSection });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to submit section container for new checkout flow\r\n reaction(\r\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\r\n () => {\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\r\n this.onSubmit();\r\n }\r\n }\r\n );\r\n\r\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\r\n reaction(\r\n () => this.props.moduleState.isReady,\r\n async isReady => {\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\r\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\r\n newIsPaymentSectionContainerReady: isReady\r\n });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\r\n reaction(\r\n () => this.props.moduleState.hasError,\r\n async hasError => {\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\r\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\r\n newIsPaymentSectionContainerHasError: hasError\r\n });\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\r\n async () => {\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\r\n this.onEdit();\r\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (!this.props.moduleState.hasExternalSubmitGroup) {\r\n return;\r\n }\r\n\r\n /**\r\n * Review all modules to updating status if one of the modules has error.\r\n */\r\n const { childIds, hasError, getModule } = this.props.moduleState;\r\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\r\n const state = getModule(childId);\r\n return !!state && (state.isReady || state.isSkipped);\r\n });\r\n if (hasReadyOrSkippedItems && hasError) {\r\n this.onEdit();\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): boolean {\r\n if (this.state === nextState && 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 | null {\r\n const {\r\n enableControl,\r\n moduleState,\r\n config: { width }\r\n } = this.props;\r\n\r\n const items = this.getItems();\r\n if (items.length === 0) {\r\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const moduleClassName = classname(\r\n 'ms-checkout-section-container',\r\n {\r\n 'has-initialized': moduleState.hasInitialized,\r\n 'is-ready': moduleState.isReady,\r\n 'is-updating': !moduleState.isReady,\r\n container: width === 'container',\r\n 'col-12 fullwidth': width === 'fluid'\r\n },\r\n this.props.config.className\r\n );\r\n\r\n const viewProps: ICheckoutSectionContainerViewProps = {\r\n ...this.props,\r\n\r\n className: moduleClassName,\r\n checkoutPlainContainerProps: {\r\n moduleProps: this.props,\r\n className: moduleClassName\r\n },\r\n items: items.map((item: React.ReactNode) => {\r\n const childId = get(item, 'props.id');\r\n const state = moduleState.getModule(childId);\r\n\r\n // Modules has not completed initializing or it's disable\r\n const hidden =\r\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\r\n return {\r\n id: childId,\r\n loading: state.hasModuleState && !state.hasInitialized && ,\r\n itemProps: {\r\n 'data-type-name': state.typeName,\r\n className: classname('ms-checkout-section-container__item', {\r\n hidden,\r\n initialized: state.hasInitialized,\r\n disabled: state.isDisabled,\r\n skipped: state.isSkipped,\r\n ready: state.isReady,\r\n updating: state.isUpdating,\r\n pending: state.isPending\r\n })\r\n },\r\n item: React.cloneElement(item as React.ReactElement, { enableControl })\r\n };\r\n })\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly getItems = (): React.ReactNode[] => {\r\n const { slots } = this.props;\r\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\r\n };\r\n\r\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\r\n const { childIds, getModule } = this.props.moduleState;\r\n return childIds\r\n .map(getModule)\r\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n // Clear error before action, otherwise it will rise conflict;\r\n this.getActiveChildModuleStates().forEach(state => {\r\n state.hasError && state.setHasError(false);\r\n });\r\n };\r\n\r\n private readonly onSubmit = (): void => {\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n this.props.telemetry.information('Section container onSubmit is called.');\r\n\r\n this.clearError();\r\n this.getActiveChildModuleStates().forEach(state => {\r\n !state.isReady && state.onSubmit && state.onSubmit();\r\n });\r\n\r\n // Handle when the amount due is zero\r\n if (\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n isPaymentSectionContainer &&\r\n this.amountDue === zeroAmount\r\n ) {\r\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\r\n newIsPaymentSectionContainerReady: true\r\n });\r\n }\r\n };\r\n\r\n private readonly onCancel = (): void => {\r\n this.props.telemetry.information('Section container onCancel is called.');\r\n\r\n this.clearError();\r\n this.getActiveChildModuleStates().forEach(state => {\r\n !state.isReady && state.onCancel && state.onCancel();\r\n });\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.props.telemetry.information('Section container onEdit is called.');\r\n\r\n this.getActiveChildModuleStates().forEach(state => {\r\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\r\n });\r\n };\r\n\r\n private readonly onContainerReady = (): void => {\r\n this.props.telemetry.information('Section container onContainerReady is called.');\r\n\r\n this.getActiveChildModuleStates().forEach(state => {\r\n state.isReady && state.onContainerReady && state.onContainerReady();\r\n });\r\n };\r\n}\r\n\r\nexport default withModuleState(CheckoutPlainContainer);\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './smwe-checkout-section-container';\r\n\r\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\r\n <>\r\n {loading}\r\n {item}\r\n \r\n);\r\n\r\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\r\n \r\n {items.map(item => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport default CheckoutSectionContainerView;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../../..';\n\nexport interface IB2bRequestsTileLinksProps {\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 defaultClassName = 'ms-account-b2b-requests-tile';\n\nexport const B2bRequestsTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (!ArrayExtensions.hasElements(links)) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n return linkdata.map(link => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return {\n ariaLabel: link.ariaLabel,\n className: `${defaultClassName}__link`,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n } as Msdyn365.ILinksData;\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileData } from './b2b-requests-tile.data';\nimport { IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nimport { B2bRequestsTileLinks } from './components/account-b2b-requests-tile-links';\n\nexport interface IB2bRequestsTileViewProps extends IB2bRequestsTileProps {\n b2bRequestsTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsTile component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IB2bRequestsTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n const { className, heading, links } = config;\n\n const defaultClassName = 'ms-account-b2b-requests-tile';\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n b2bRequestsTile: {\n moduleProps: this.props,\n className: classnames(defaultClassName, config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: ArrayExtensions.hasElements(links) && (\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 handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default B2bRequestsTile;\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 { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetVerificationButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetVerificationButton;\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\nexport interface IPasswordResetVerificationErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetVerificationInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetVerificationInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange\n}) => (\n \n);\n\nexport default PasswordResetVerificationInput;\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 IPasswordResetVerificationLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetVerificationLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetVerificationLabel;\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 IPasswordResetVerificationLoadingIcon {\n className: string;\n}\n\nconst PasswordResetVerificationLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default PasswordResetVerificationLoadingIcon;\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 IPasswordResetVerificationLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetVerificationLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetVerificationLoadingMessage;\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\nexport interface IPasswordResetVerificationSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationSuccess;\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 { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetVerificationButtonComponent from './components/password-reset-verification-button';\nimport PasswordResetVerificationErrorComponent from './components/password-reset-verification-error';\nimport PasswordResetVerificationInputComponent from './components/password-reset-verification-input';\nimport PasswordResetVerificationLabelComponent from './components/password-reset-verification-label';\nimport PasswordResetVerificationLoadingIconComponent from './components/password-reset-verification-loading-icon';\nimport PasswordResetVerificationLoadingMessageComponent from './components/password-reset-verification-loading-message';\nimport PasswordResetVerificationSuccessComponent from './components/password-reset-verification-success';\nimport { IPasswordResetVerificationConfig, IPasswordResetVerificationProps } from './password-reset-verification.props.autogenerated';\n\nexport interface IPasswordResetVerificationViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetVerificationItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationLocalAccount {\n localAccount: INodeProps;\n verificationControlWrapper: INodeProps;\n items: IPasswordResetVerificationItem[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationButtonsWrapper: INodeProps;\n verificationButtons: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetVerificationLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationViewProps {\n className: string;\n viewState: IPasswordResetVerificationViewState;\n loading: IPasswordResetVerificationLoading;\n passwordResetVerification: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetVerificationLocalAccount: IPasswordResetVerificationLocalAccount;\n}\n\n/**\n *\n * PasswordResetVerification component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordResetVerification extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset-verification';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetVerificationProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.templateVersion = '';\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IPasswordResetVerificationProps,\n nextState: IPasswordResetVerificationViewState\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 const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordResetVerification: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: (\n \n )\n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n \n ),\n passwordResetVerificationLocalAccount: this._renderLocalAccount()\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 // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private _prePopulateData(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n if (obj.ID.toLowerCase() === 'email') {\n this.emailRegex = obj.PAT;\n } else if (obj.ID.toLowerCase() === 'emailverificationcontrol') {\n this.templateVersion = 'v2';\n }\n });\n if (!this.templateVersion) {\n this.templateVersion = 'v1';\n }\n }\n }\n\n private _updateErrorMessage(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: this.props.resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n }\n\n private _renderLocalAccount(): IPasswordResetVerificationLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n items: [\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n )\n ],\n successMessage: [\n ,\n\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n \n ],\n verificationButtonsWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n verificationButtons: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): IPasswordResetVerificationItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n}\n\nexport default PasswordResetVerification;\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 {\n IPasswordResetVerificationItem,\n IPasswordResetVerificationLoading,\n IPasswordResetVerificationLocalAccount,\n IPasswordResetVerificationViewProps\n} from './password-reset-verification';\n\nconst PasswordResetVerificationItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n verificationControlWrapper,\n items,\n successMessage,\n errorMessage,\n verificationButtonsWrapper,\n verificationButtons,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n \n {successMessage &&\n successMessage.map((message: React.ReactNode, index: number) => {\n return {message};\n })}\n {items &&\n items.map((item: IPasswordResetVerificationItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {verificationButtons &&\n verificationButtons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n \n );\n};\n\nconst PasswordResetVerificationLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetVerificationView: React.FC = props => {\n const {\n passwordResetVerification,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n passwordResetVerificationLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetVerificationLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetVerificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\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 { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressAddNewButtonText?: string;\n addressAddNewButtonAriaLabel?: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \n )\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 React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\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 IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\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\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

\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 React from 'react';\n\nexport interface IAdressErrorMessage {\n message: string;\n}\n\n/**\n * Address error message.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\n const { message } = props;\n\n return

{message}

;\n};\n\nexport default AddressErrorMessageFunctionComponent;\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 IAdressErrorTitle {\n title: string;\n}\n\n/**\n * Address error title.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorTitleFunctionComponent: React.FC = (props: IAdressErrorTitle) => {\n const { title } = props;\n\n return

{title}

;\n};\n\nexport default AddressErrorTitleFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressInput {\n id?: string;\n name?: string;\n className: string;\n type: string;\n value: string;\n maxLength?: number;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address input.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressInputFunctionComponent: React.FC = (props: IAdressInput) => {\n const {\n id: itemId,\n name,\n className,\n type,\n value,\n maxLength,\n additionalAddributes,\n autoFocus: shouldUseAutoFocus,\n telemetryContent,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressInputFunctionComponent;\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 IAdressLabel {\n id: string;\n text: string;\n}\n\n/**\n * Address label.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressLabelFunctionComponent: React.FC = (props: IAdressLabel) => {\n const { id: itemId, text } = props;\n\n return (\n \n );\n};\n\nexport default AddressLabelFunctionComponent;\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 { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressListError {\n Error: INodeProps;\n isShowError: boolean;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressListItem {\n Item: INodeProps;\n key: number;\n error: IAddressListError;\n showItems: IAddressShowProps;\n isShowPrimaryButton: boolean;\n primaryButton: React.ReactNode;\n editButton: React.ReactNode;\n removeButton: React.ReactNode;\n}\n\nexport interface IAddressList {\n List: INodeProps;\n isShowList: boolean;\n heading: React.ReactNode;\n items: IAddressListItem[];\n}\n\nexport interface IAddressListProps {\n ListAddress: INodeProps;\n heading: React.ReactNode;\n isShowEmptyListMessage: boolean;\n emptyListMessage: React.ReactNode;\n addButton: React.ReactNode;\n primaryAddressList: IAddressList;\n otherAddressList: IAddressList;\n}\n\nexport interface IAddressListInputProps {\n isUpdating?: boolean;\n selectedAddress?: Address;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n heading?: HeadingData;\n primaryAddressSectionHeading?: HeadingData;\n otherAddressSectionHeading?: HeadingData;\n addressActionResponse?: IAddressResponse;\n resources: IAddressResource;\n contextRequest: Msdyn365.IRequestContext;\n telemetryContent?: ITelemetryContent;\n handleLineItemHeadingChange?(event: Msdyn365.ContentEditableEvent): void;\n onAddAddress(): void;\n onEditAddress(address?: Address): void;\n onRemoveAddress(address?: Address): void;\n onUpdatePrimaryAddress(address: Address): void;\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\n isAsyncCustomer?: boolean;\n isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\n isEditAsyncCustomerFeatureEnabled?: boolean;\n}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (\n className: string,\n addresses: Address[],\n showPrimaryButton: boolean,\n props: IAddressListInputProps,\n heading?: HeadingData\n): IAddressList => {\n const {\n resources,\n isUpdating,\n addressActionResponse,\n selectedAddress,\n addressFormat,\n onEditAddress,\n onRemoveAddress,\n onUpdatePrimaryAddress,\n addressPurposes,\n telemetryContent\n } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className },\n isShowList: addresses.length > 0,\n heading: heading && ,\n items: addresses.map(\n (address: Address): IAddressListItem => {\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\n\n // Disable 'primary', 'edit', and 'remove' buttons if the customer IS EITHER async OR async address creation feature is enabled and edit async customer feature is disabled.\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\n const isInvalidAsyncState: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n Item: { className: `${className}-list` },\n key: address.RecordId || 0,\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n }),\n error: {\n Error: { className: `${className}-error` },\n isShowError: !!isShowError,\n title: ,\n message: \n },\n isShowPrimaryButton: showPrimaryButton,\n\n primaryButton: (\n {\n onUpdatePrimaryAddress(address);\n }\n }}\n />\n ),\n editButton: (\n {\n onEditAddress(address);\n },\n role: 'link'\n }}\n />\n ),\n removeButton: (\n {\n onRemoveAddress(address);\n },\n role: 'link'\n }}\n />\n )\n };\n }\n )\n };\n};\n\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, primaryAddressSectionHeading } = props;\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\n};\n\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, otherAddressSectionHeading } = props;\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\n};\n\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\n const { addresses, heading, resources, onAddAddress, telemetryContent, handleLineItemHeadingChange } = props;\n const headingComponent = heading?.text && (\n {\n // Required\n },\n requestContext: props.contextRequest\n }}\n />\n );\n\n // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\n const disableAddButton: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false) &&\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { format, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressInputComponent from './address-input';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressSelectInputProps {\n hasExternalSubmitGroup?: boolean;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n resources: IAddressResource;\n selectedAddress: Address;\n telemetryContent?: ITelemetryContent;\n onAddressOptionChange(event: React.ChangeEvent): void;\n onAddAddress(): void;\n onSave(): void;\n onCancel(): void;\n multipleAddressShippingEnabled?: boolean;\n}\n\nexport interface IAddressSelectItem {\n key: number;\n SelectItem: INodeProps;\n input: React.ReactNode;\n showItems: IAddressShowProps;\n}\n\nexport interface IAddressSelectProps {\n SelectAddress: INodeProps;\n addButton: React.ReactNode;\n items: IAddressSelectItem[];\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\n const { addresses, onAddressOptionChange, selectedAddress, resources, addressPurposes } = props;\n const addressTypeDescription = address.AddressTypeValue\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\n : '';\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1,\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel, addressTypeDescription)\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n })\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup, multipleAddressShippingEnabled } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n
\n \n
\n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressItemType, IAddressItem } from '../address-format.data';\nimport AddressDetailItemComponent from './address-detail-item';\n\nexport interface IAddressShowItem {\n key: string;\n description: React.ReactNode;\n}\n\nexport interface IAddressShowProps {\n AddressDetail: INodeProps;\n items: IAddressShowItem[];\n}\n\nexport interface IAddressShowInputProps {\n addressFormat: IAddressItem[];\n address: Address;\n addressPurposes: AddressPurpose[];\n}\n\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\n const { addressFormat, addressPurposes, address } = props;\n\n return {\n AddressDetail: { className: 'msc-address-detail' },\n items: addressFormat.map(item => {\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n const addressType = addressPurposes.find(\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\n );\n if (addressType) {\n const addressTypeDescription = addressType.Description || '';\n return {\n key: item.name,\n description: (\n \n )\n };\n }\n }\n return {\n key: item.name,\n description: (\n \n )\n };\n })\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressList, IAddressListProps } from '../../common/components/address-list';\nimport { IAccountManagementAddressData } from './account-management-address.data';\nimport { IAccountManagementAddressProps } from './account-management-address.props.autogenerated';\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewProps extends React.Component> {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: IAccountManagementAddressViewState;\n AccountAddressManagement: IModuleProps;\n isUpdating: boolean;\n showAddressList: IAddressListProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n screenReaderNotification: React.ReactNode;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountManagementAddress extends React.Component> {\n @observable private currentOperation: AddressOperation;\n @observable private selectedAddress?: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private addUpdateAddress: Address;\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private removeAddressData?: Address;\n\n private readonly addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[] = [];\n private addressPurposes: AddressPurpose[] = [];\n private readonly resources: IAddressResource;\n private readonly defaultAddressType: number = 6; // Default to Home\n private readonly telemetryContent: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n public constructor(props: IAccountManagementAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.addUpdateAddress = {};\n this.validationError = {};\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n if (this.props.data.countryRegions.result !== undefined) {\n this._setDefaultCountryRegionId();\n }\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => {\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n },\n async () => {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n await this._attachMapAutoSuggest();\n }\n }\n );\n }\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n /**\n * Should component update function.\n * @param nextProps - Account management address props.\n * @param nextState - Next state.\n * @returns - True if component should update, false otherwise.\n */\n public shouldComponentUpdate(\n nextProps: IAccountManagementAddressProps,\n nextState: IAccountManagementAddressViewState\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 const { renderView, config, resources, data } = this.props;\n const customerInformation = data.customerInformation.result;\n\n // Set the feature state value for 'Async Customer Address Creation'.\n this.asyncCustomerAddressCreationFeatureIsEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.asyncCustAddressCreationFeatureName)?.IsEnabled || false;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const viewProps = {\n ...this.props,\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n !this.isEditAsyncCustomerFeatureEnabled &&\n (customerInformation?.IsAsyncCustomer || false) && (\n \n ),\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddresList: this.currentOperation === AddressOperation.List,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\n },\n AccountAddressManagement: {\n moduleProps: this.props,\n className: classnames('ms-account-management-address', config.className)\n },\n showAddressList: this._renderListAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On Suggestion Selected Function.\n * @param result - Microsoft.Maps.ISuggestionResult.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear Address Fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear Validation Function.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IAccountManagementAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n };\n\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n onSave: this._onAddressAddUpdateSubmit,\n onCancel: this._resetView\n });\n };\n\n /**\n * Render List Address Function.\n * @returns - AddressList.\n */\n private readonly _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n /**\n * Render Address title.\n * @param event - Msdyn365.ContentEditableEvent.\n */\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n config.heading!.text = event.target.value;\n };\n const heading = config.heading && {\n text: config.heading.text,\n headingTag: config.heading.tag\n };\n\n return AddressList({\n isUpdating: this.isUpdating,\n selectedAddress: this.selectedAddress,\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n addressPurposes: this.addressPurposes,\n resources: this.resources,\n heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n contextRequest: this.props.context.request,\n telemetryContent: this.telemetryContent,\n handleLineItemHeadingChange,\n onEditAddress: this._goToEditAddress,\n onRemoveAddress: this._onRemoveAddress,\n onAddAddress: this._goToAddAddress,\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress,\n isAsyncCustomerAddressCreationFeatureEnabled: this.asyncCustomerAddressCreationFeatureIsEnabled || false,\n isAsyncCustomer: this.props.data.customerInformation.result?.IsAsyncCustomer || false,\n canRenderAsyncCustomerDataAsUnmodifiable: this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false,\n isEditAsyncCustomerFeatureEnabled: this.isEditAsyncCustomerFeatureEnabled\n });\n };\n\n /**\n * Attach Map Auto Suggest Function.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On Address Add Update Function.\n * @param name - String.\n * @param value - String | Boolean | Number.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * On Address Add Update Input Change.\n * @param event - Input Change Event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * On Address Add Update Dropdown Change.\n * @param event - Dropdown Change Event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n this.onAddressAddUpdate(event.target.name, +event.target.value);\n } else {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n }\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * On Address Update Function.\n * @param response - Promise.\n * @param onSuccess - IAddressResponse.\n */\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\n this.isUpdating = true;\n response.then(\n (result: IAddressResponse) => {\n if (result.address) {\n this.hasError = false;\n onSuccess(result);\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n }\n this.isUpdating = false;\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n }\n );\n };\n\n /**\n * On Address Add Update Submit Function.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow()) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * On Country Change Function.\n * @param countryRegionId - String.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\n this._clearAddressFields();\n };\n\n /**\n * Get Address Format Exclude List Function.\n * @returns - Address Format Exclude List.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Get State Provinces Function.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Update CurrentOperation Function.\n * @param operation - AddressOperation.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n this._clearAddressFields();\n };\n\n /**\n * On Submit Update Primary Address Function.\n * @param address - Address.\n */\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n };\n\n /**\n * Go To Edit Address Function.\n * @param address - Address.\n */\n private readonly _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n };\n\n /**\n * On Remove Address Function.\n * @param address - Address.\n */\n private readonly _onRemoveAddress = (address: Address): void => {\n address.Deactivate = true;\n this.removeAddressData = address;\n const response = this.addressCommon.updateCustomerAddress(address);\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * Renders Notification screen reader text for removed address.\n * @param address - Address input.\n * @returns Notification for removed address.\n */\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\n return (\n
\n {notification}\n
\n );\n };\n\n /**\n * Go To Add Address Function.\n */\n private readonly _goToAddAddress = (): void => {\n this.addUpdateAddress = {};\n this._setDefaultCountryRegionId();\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * On Add Or Update Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n };\n\n /**\n * On Update Primary Address Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n };\n\n /**\n * Reset view function.\n */\n private readonly _resetView = (): void => {\n this.selectedAddress = undefined;\n this._updateCurrentOperation(AddressOperation.List);\n };\n}\n\nexport default AccountManagementAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address List Component.\n * @param param0 - Root param.\n * @param param0.List - Address list.\n * @param param0.isShowList - Boolean.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressListItem[].\n * @returns - AddressListComponent Node.\n */\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n \n );\n })}\n \n );\n};\n\n/**\n * Address Lists Component.\n * @param param0 - Root param.\n * @param param0.ListAddress - List address.\n * @param param0.heading - List heading.\n * @param param0.isShowEmptyListMessage - Boolean.\n * @param param0.emptyListMessage - Empty list message.\n * @param param0.addButton - Add button.\n * @param param0.primaryAddressList - Primary address.\n * @param param0.otherAddressList - Other address.\n * @returns Address Lists Component Node.\n */\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\n/**\n * AddressAddUpdateComponent.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Account Management Address View Component.\n * @param props - Props.\n * @returns - AccountAddressManagement Module.\n */\nconst AccountManagementAddressView: React.FC = props => {\n const {\n AccountAddressManagement,\n infoMessageBar,\n viewState,\n showAddressList,\n showAddOrUpdateAddress,\n screenReaderNotification\n } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {screenReaderNotification}\n \n );\n};\n\nexport default AccountManagementAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction, set } from 'mobx';\nimport * as React from 'react';\n\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressData } from './business-account-address.data';\nimport { IBusinessAccountAddressProps } from './business-account-address.props.autogenerated';\n\n/**\n * Interface for IBusinessAccountAddressExtendedProps.\n */\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\n hasError: boolean;\n isRequired: boolean;\n resetAddress: boolean;\n updateForm(errors: boolean, currentAddress?: Address): void;\n}\n\n/**\n * Interface for IBusinessAccountAddressState.\n */\nexport interface IBusinessAccountAddressState {\n countryId?: string;\n states?: StateProvinceInfo[];\n}\n\n/**\n * Interface for IBusinessAccountAddressViewProps.\n */\nexport interface IBusinessAccountAddressViewProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n BusinessAccountAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component, IBusinessAccountAddressState>}\n */\nclass BusinessAccountAddress extends React.Component {\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private readonly validationError: object;\n\n private readonly addressActionResponse?: IAddressResponse;\n\n private readonly isUpdating?: boolean;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 0; // Default to None (This value set in HQ as Business)\n\n private readonly shouldAutoFocus?: boolean = false;\n\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBusinessAccountAddressExtendedProps) {\n super(props);\n\n const { context, data, resources, telemetry } = this.props;\n this.addUpdateAddress = {};\n this.resources = resources;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\n this.addressPurposes\n );\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n // Initializing data props\n this._dataInitialize(this.props);\n\n this._setDefaultCountryRegionId();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): 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 { renderView, config, hasError, resetAddress } = this.props;\n\n // Business-sign-up will pass this flag when cancel button is clicked\n if (resetAddress) {\n this._resetAddressFields();\n }\n\n const viewProps = {\n ...this.props,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n hasError,\n className: config.className,\n BusinessAccountAddress: {\n moduleProps: this.props,\n className: classnames('ms-business-account-address', config.className)\n },\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Reset Address.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _resetAddressFields = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n\n addressFormat.map(addressFormatItem => {\n switch (addressFormatItem.displayType) {\n case AddressItemDisplayType.Input:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n case AddressItemDisplayType.Checkbox:\n this.addUpdateAddress[addressFormatItem.name] = false;\n break;\n default:\n switch (addressFormatItem.type) {\n case AddressItemType.ThreeLetterISORegionName:\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\n break;\n case AddressItemType.AddressTypeValue:\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\n break;\n case AddressItemType.State:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n default:\n this.addUpdateAddress[addressFormatItem.name] = undefined;\n }\n }\n });\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IBusinessAccountAddressExtendedProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n // Set validationError and hasError to hide error messages since in the B2B\n // request form, no errors would visually show since user wont be able to submit\n // until form is filled and correct\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Company,\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n shouldAutoFocus: this.shouldAutoFocus,\n validationError: this.validationError,\n hasError: this.props.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange\n });\n };\n\n /**\n * On Address Add Update Input Change Function.\n * @param event - Input event change function.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n this._updateAddress(event.target.name, event.target.value);\n };\n\n /**\n * On Address Add Update Dropdown Change Function.\n * @param event - Change dropdown event.\n */\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n await this._updateCountryRegionId(event.target.value);\n } else {\n this._updateAddress(event.target.name, event.target.value);\n }\n };\n\n /**\n * Update Address Function.\n * @param name - String.\n * @param value - String.\n */\n private readonly _updateAddress = (name: string, value: string | number) => {\n const { updateForm, isRequired, resources } = this.props;\n let cleanValue = value;\n if (typeof value === 'string') {\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\n }\n set(this.addUpdateAddress, { [name]: cleanValue });\n\n if (this._isEmpty()) {\n if (isRequired) {\n updateForm(true, undefined);\n } else {\n // Reset addressFormat as if address was NOT a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, []),\n this.addressPurposes\n );\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // Get new addressFormat if address was a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, this.props.isRequired ? undefined : []),\n this.addressPurposes\n );\n\n // Verify with new rules\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n updateForm(false, this.addUpdateAddress);\n } else {\n updateForm(true, undefined);\n }\n }\n };\n\n /**\n * Is empty Function.\n * @returns - Boolean.\n */\n // Walk through array and check if valued is defined or value is not an empty string\n private readonly _isEmpty = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n for (const addressFormatItem of addressFormat) {\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\n\n // Check each input field, if value is defined and not an empty string --> address is not empty\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n /**\n * Is Input Required Function.\n * @param addressFormatItem - IAddressItem.\n * @returns - Boolean.\n */\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\n if (\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\n !addressFormatItem.validationRules ||\n addressFormatItem.validationRules.length === 0\n ) {\n return false;\n }\n\n for (const validationRule of addressFormatItem.validationRules) {\n if (validationRule.type === AddressValidationRuleType.Required) {\n return false;\n }\n }\n\n return true;\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\n\n // Set default AddressType\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n }\n\n /**\n * Update Country Region Id Function.\n * @param value - String.\n */\n private readonly _updateCountryRegionId = async (value: string) => {\n this.countryRegionId = value;\n\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n this._updateAddress('State', '');\n }\n\n this.stateProvinceInfo = result;\n });\n\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\n };\n}\n\nexport default BusinessAccountAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {hasError && alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Business Account Address View Component.\n * @param props - Props.\n * @returns - BusinessAccountAddress Module.\n */\nconst BusinessAccountAddressView: React.FC = props => {\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n \n \n );\n};\n\nexport default BusinessAccountAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport AddressInputComponent from './address-input';\n\nexport interface IAddressBillingCheckbox {\n isChecked: boolean;\n value: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const AddressBillingCheckbox: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n text,\n telemetryContent,\n onChange\n}) => {\n const additionalAttributes = {\n checked: isChecked,\n 'aria-checked': isChecked\n };\n\n return (\n \n );\n};\nexport default AddressBillingCheckbox;\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 IAddressBillingHeading {\n text: string;\n}\n\nexport const AddressBillingHeading: React.FC = ({ text }) => (\n

{text}

\n);\n\nexport default IAddressBillingHeading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\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 | null {\n if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n}\n\nexport default CheckoutBillingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n const quantity = 1;\n return (\n
\n
\n
{title}
\n
{itemTitle}
\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
\n )\n : isShowQty && (\n
\n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
\n );\n })}\n
\n
\n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\n this.state = { shippingGroups: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): 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 if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n const numberOfCartLines = this._countItems(cartlines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: itemTitle,\n title: headingImages,\n resources: this.props.resources\n };\n\n const cartLineImages: React.ReactNode = ;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState } = this.props.data;\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n /**\n * Show address select.\n * @param onAddAddressHandler - On add address click function.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddressSelectHandler: (onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderSelectAddress(onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\n showAddressSelect: this._renderSelectAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Initialize pickup group.\n */\n @action\n private readonly _initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\n const cartLines: ICartLineWithProduct[] = [];\n\n try {\n const products = await this._getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n for (const line of pickupCartLines) {\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n cartLines.push({ cartLine: line, product });\n }\n this.setState({ shippingGroups: cartLines });\n } catch (error) {\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n }\n };\n\n /**\n * On suggestion selected.\n * @param result - Suggestion result interface.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n const timeout = 0;\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, timeout);\n };\n\n /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n for (const formatAddress of addressFormatItem) {\n if (\n this.addUpdateAddress[formatAddress.name] !== undefined &&\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\n ) {\n this.addressFormat[formatAddress.name] = '';\n }\n }\n this._clearValidation();\n };\n\n /**\n * Method to clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n\n reaction(\n () => data.featureState.result,\n () => {\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n }\n );\n };\n\n /**\n * Method to get cart lines for delivery.\n * @returns The cart line collection.\n */\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\n };\n\n /**\n * Method to check cart line for delivery.\n * @param line -The cart line.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isDelivery = (line: CartLine): boolean => {\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\n };\n\n /**\n * Method to check cart line for delivery.\n * @param deliveryMode -The delivery mode.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\n pickupMode => pickupMode !== deliveryMode\n );\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\n };\n\n /**\n * Method to check cart line for delivery.\n * @param channelId - The channelId.\n * @param cartLines - Cart line collections.\n * @returns Collection of SimpleProduct.\n */\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext,\n line.CatalogId || 0\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n /**\n * Method to render add/update address.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n * @returns Address app/update props.\n */\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\n const addressFormat =\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\n ? this.addressFormat\n : this.addressFormat;\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render select address.\n * @param onAddAddressHandler - To handle add address button click.\n * @param onSaveHandler - To handle save button click.\n * @param onCancelHandler - To handle cancel button click.\n * @returns Select address props.\n */\n private readonly _renderSelectAddress = (\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n\n /**\n * On Add Address Function.\n */\n onAddAddress: () => {\n this._goToAddAddress();\n onAddAddressHandler?.();\n },\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this._onSelectAddress();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler,\n\n multipleAddressShippingEnabled: this.props.config.multipleAddressShippingEnabled\n });\n };\n\n /**\n * Method to render show address.\n * @returns Show address props.\n */\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * Method to render map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * Method gets called on address option change.\n * @param event - To get current option.\n */\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n /**\n * Method to render map auto suggest.\n * @param name - Address name field.\n * @param value - Address name value field.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method to get called on address update change.\n * @param event - Input element.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * Method to get called on address update dropdown change.\n * @param event - Select element.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Method to get called on address update submit.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._clearError();\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: result.address });\n } else {\n this._onAddOrUpdateSuccess({ address: result.address });\n }\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n /**\n * Method to get called on country change.\n * @param countryRegionId - Country region id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Method to get all address format exclude list.\n * @returns Collection of address items.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Method to get all state/provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Method to set default country region id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Method to get default address region id.\n * @returns - Address object from existing addresses.\n */\n private readonly _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n /**\n * Method to get address from express payment details from cart page.\n * @returns - Address.\n */\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\n if (this.expressPaymentDetailsFromCartPage) {\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\n\n let addressFromCartExpress: Address | undefined;\n\n if (isExpressAddressAppliedInCartPage) {\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\n } else {\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\n }\n\n return addressFromCartExpress;\n }\n return undefined;\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n TwoLetterISORegionName: twoLetterIsoRegionName,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get address from expressAddress.\n * @param expressAddress -- The expressAddress.\n * @returns The address.\n */\n private readonly getExpressAddress = (expressAddress: Address): Address => {\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n ...expressAddress,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get three letter ISO region name from two letter ISO region name.\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\n * @returns The three letter ISO region name.\n */\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\n const countryRegion = this.countryRegions.find(country => {\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\n });\n\n return countryRegion?.CountryRegionId;\n };\n\n /**\n * Method to initialize all module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const checkoutState = this.props.data.checkout.result;\n\n if (this._canShip()) {\n let defaultAddress;\n const shippingCartLines: CartLine[] = this._getCartLinesforDelivery();\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (\n ArrayExtensions.hasElements(shippingCartLines) &&\n shippingCartLines[0].ShippingAddress !== undefined &&\n shippingCartLines[0].ShippingAddress.FullAddress !== ''\n ) {\n defaultAddress = shippingCartLines[0].ShippingAddress;\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\n } else if (this._getDefaultAddress()) {\n defaultAddress = this._getDefaultAddress();\n } else {\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\n }\n\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\n }\n }\n };\n\n /**\n * Method get called on submit address.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address submit for List operation.');\n this._onSelectAddress();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n /**\n * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutShippingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {addButton}\n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutShippingAddressView;\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';\nimport { KeyCodes } from '@msdyn365-commerce-modules/utilities';\n\nexport interface ISearchBarProps {\n className: string;\n searchPlaceholderLabel: string;\n onSearch(searchText: string): void;\n}\n\nexport interface ISearchBarState {\n searchText: string;\n}\n\nexport class SearchBar extends React.Component {\n constructor(props: ISearchBarProps) {\n super(props);\n this.state = {\n searchText: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, searchPlaceholderLabel } = this.props;\n return (\n
\n \n
\n );\n }\n\n private readonly onSearchTextChange = (ev: React.ChangeEvent): void => {\n this.setState({\n searchText: ev.target.value\n });\n };\n\n private readonly onSearch = (): void => {\n this.props.onSearch(this.state.searchText);\n };\n\n private readonly handleKeyUp = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter) {\n this.onSearch();\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 { IComponentProps } from '@msdyn365-commerce/core';\nimport { CommerceException } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { moduleClassName } from '../business-partners';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { SearchBar } from './search-bar';\n\n/**\n * Props of DataGrid component.\n */\nexport interface IDataGridProps extends IComponentProps {\n className: string;\n pageSize?: number;\n searchPlaceholderLabel: string;\n defaultSorting?: ISortingInfo;\n resources: IBusinessPartnersResources;\n columns: IDataGridColumn[];\n loadData(): Promise;\n}\n\n/**\n * State of DataGrid component.\n */\nexport interface IDataGridState {\n data: Tdata[];\n paging: IPagingInfo;\n filter: IFilterInfo;\n sorting?: ISortingInfo;\n isLoading: boolean;\n errorMessage: string;\n}\n\nexport interface IPagingInfo {\n index: number;\n}\n\nexport interface IFilterInfo {\n searchText: string;\n}\n\nexport interface ISortingInfo {\n fieldName: string;\n ascending: boolean;\n}\n\n/**\n * Column definition of DataGrid component.\n */\nexport interface IDataGridColumn {\n /**\n * A unique key for identifying the column.\n */\n reactKey: string;\n\n /**\n * Name to render on the column header.\n */\n name: string;\n\n /**\n * Class name added to table cell.\n */\n className?: string;\n\n /**\n * The field to pull the text value from for the column.Can be unset if a custom `onRender` method is provided.\n */\n fieldName?: string;\n\n /**\n * Whether the user can search this column by text.\n */\n isSearchable?: boolean;\n\n /**\n * Custom renderer for cell content, instead of the default text rendering.\n */\n onRender?(item: Tdata): JSX.Element;\n\n /**\n * Event when the table cell is clicked.\n */\n onClick?(item: Tdata): void;\n}\n\nconst defaultPageSize = 10;\n\n/**\n * DataGrid component encapsulates common table functionalities.\n */\nexport class DataGrid extends React.Component, IDataGridState> {\n constructor(props: IDataGridProps) {\n super(props);\n this.state = {\n data: [],\n sorting: props.defaultSorting,\n paging: { index: 0 },\n filter: { searchText: '' },\n isLoading: true,\n errorMessage: ''\n };\n }\n\n public componentDidMount(): void {\n this.loadDataInternal();\n }\n\n public shouldComponentUpdate(nextProps: Readonly>, nextState: Readonly>): boolean {\n return (\n this.props.id !== nextProps.id ||\n this.props.columns !== nextProps.columns ||\n this.state.data !== nextState.data ||\n this.state.paging !== nextState.paging ||\n this.state.filter !== nextState.filter ||\n this.state.isLoading !== nextState.isLoading ||\n this.state.errorMessage !== nextState.errorMessage\n );\n }\n\n public render(): JSX.Element | null {\n const data = this.getDataToDisplay();\n const hasMore = this.hasMore();\n if (this.state.errorMessage) {\n return {this.state.errorMessage};\n }\n if (this.state.isLoading) {\n return {this.props.resources.loadingLabel};\n }\n if (!ArrayExtensions.hasElements(data)) {\n return (\n <>\n \n

{this.props.resources.noDataMessage}

\n \n );\n }\n return (\n <>\n \n \n {this.renderGridHeader()}\n {data.map((item, index) => this.renderGridRow(item, index))}\n
\n {hasMore && (\n
\n \n
\n )}\n \n );\n }\n\n /**\n * Renders the TH header in the table.\n * @returns - Header react node.\n */\n private readonly renderGridHeader = () => {\n const className = `${this.props.className}__header`;\n const rowClassName = `${className}__row`;\n return (\n \n \n {this.props.columns.map(column => (\n \n {column.name}\n \n ))}\n \n \n );\n };\n\n /**\n * Renders table row.\n * @param item - Data item for this row.\n * @param index - Index of the row.\n * @returns - Row react node.\n */\n private readonly renderGridRow = (item: Tdata, index: number) => {\n const rowClassName = `${this.props.className}__row`;\n return (\n \n {this.props.columns.map(column => {\n let cell: JSX.Element = <>;\n if (column.onRender) {\n cell = column.onRender(item);\n } else if (column.fieldName) {\n cell = {((item as unknown) as { [key: string]: string })[column.fieldName]};\n }\n return (\n column.onClick?.(item)}>\n {cell}\n \n );\n })}\n \n );\n };\n\n /**\n * Load data for the table.\n * @returns Promise.\n */\n private readonly loadDataInternal = async () => {\n if (!this.props.context.actionContext.requestContext.user.isAuthenticated) {\n this.setState({\n isLoading: false\n });\n return;\n }\n try {\n const result = await this.props.loadData();\n this.setState({\n isLoading: false,\n data: result\n });\n } catch (e) {\n this.setState({\n isLoading: false,\n errorMessage: (e as { data: CommerceException })?.data?.LocalizedMessage || this.props.resources.genericErrorMessage\n });\n }\n };\n\n private readonly onSearch = (searchText: string): void => {\n this.setState({\n paging: { index: 0 },\n filter: { searchText }\n });\n };\n\n private readonly loadMore = (): void => {\n this.setState({\n paging: { index: this.state.paging.index + 1 }\n });\n };\n\n private readonly sortData = (): Tdata[] => {\n const sorting = this.state.sorting;\n if (!sorting) {\n return this.state.data;\n }\n const { fieldName, ascending } = sorting;\n return this.state.data.sort((item1: Tdata, item2: Tdata) => {\n let value1 = ((item1 as unknown) as { [key: string]: string })[fieldName];\n let value2 = ((item2 as unknown) as { [key: string]: string })[fieldName];\n if (typeof value1 === 'string' && typeof value2 === 'string') {\n value1 = value1.toLowerCase();\n value2 = value2.toLowerCase();\n }\n const compareResult = value1 > value2 ? 1 : value1 < value2 ? -1 : 0;\n return ascending ? compareResult : compareResult * -1;\n });\n };\n\n private readonly filterData = (): Tdata[] => {\n const column = this.props.columns.find(c => c.isSearchable);\n const searchText = this.state.filter.searchText;\n return this.sortData().filter(item => {\n if (!column?.fieldName || !searchText) {\n return true;\n }\n const columnValue = ((item as unknown) as { [key: string]: string })[column.fieldName];\n return columnValue && columnValue.toLowerCase().indexOf(searchText.trim().toLowerCase()) >= 0;\n });\n };\n\n private readonly getDataToDisplay = (): Tdata[] => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.slice(0, itemsCount);\n };\n\n private readonly hasMore = (): boolean => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.length > itemsCount;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { ReactNode } from 'react';\nimport { isMobile, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\n\nimport { BusinessPartner, BusinessPartnerUser, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * View model of business partner user, used to display.\n */\nexport interface IBusinessPartnerUserViewModel extends BusinessPartnerUser {\n name: string;\n spendingLimit: ReactNode;\n}\n\n/**\n * Props of BusinessPartnerUsersTable.\n */\nexport interface IBusinessPartnerUsersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n businessPartner: BusinessPartner;\n resources: IBusinessPartnersResources;\n onSelect(businessPartnerUser: BusinessPartnerUser): void;\n}\n\n/**\n * BusinessPartnerUsersTable component.\n */\nexport class BusinessPartnerUsersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessUserTableNameHeadingText,\n isSearchable: true,\n fieldName: 'name',\n onClick: this.props.onSelect,\n onRender: (data: IBusinessPartnerUserViewModel) => {data.name}\n },\n {\n reactKey: 'email',\n name: this.props.resources.businessUserTableEmailHeadingText,\n fieldName: 'Email',\n onClick: this.props.onSelect\n },\n {\n reactKey: 'spendingLimit',\n name: this.props.resources.businessUserTableSpendingLimitHeadingText,\n className: `${this.props.className}__row__column-with-number`,\n fieldName: 'spendingLimit',\n onClick: !isMobileDevice ? this.props.onSelect : undefined\n }\n ];\n };\n\n /**\n * Call retail proxy to get business partner users.\n * @returns - Business partner users view model.\n */\n private readonly getBusinessPartnerUsers = async (): Promise => {\n const businessPartners = await BusinessPartnersDataActions.getUsersAsync(\n {\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n },\n this.props.businessPartner.BusinessPartnerId\n );\n return businessPartners\n .filter(user => user.StatusValue === 1)\n .map(user => {\n return {\n ...user,\n name: `${user.FirstName} ${user.LastName}`,\n spendingLimit: (\n \n {!ObjectExtensions.isNullOrUndefined(user.SpendingLimit)\n ? this.props.context.cultureFormatter.formatCurrency(user.SpendingLimit.toString())\n : ''}\n {!ObjectExtensions.isNullOrUndefined(user.SpendingLimit) && user.SpendingLimit === 0 ? (\n \n