{"version":3,"file":"static/js/18.748273a54481860081a7.chunk.js","mappings":";i2BA8DA,IAAMA,EAAN,cAAuCC,EAAAA,UAuCnCC,YAAmBC,GACfC,MAAMD,GAnCU,KAAAE,gBAA0B,MAsBtC,KAAAC,eAAsC,GAEtC,KAAAC,gBAAoC,GAI3B,KAAAC,mBAA6B,EAoC7B,KAAAC,sBAAwBC,UACrCC,KAAKC,sBACL,MAAMC,EAAUF,KAAKG,cAAcC,qBAAqBC,EAAQL,KAAKM,oBACrEC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQ,MACrCF,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEE,QAASR,EAAQQ,WAC9CH,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEG,WAAYT,EAAQS,cACjDJ,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEI,KAAMV,EAAQU,QAC3CL,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAOX,EAAQW,SAC5CN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEM,aAAcZ,EAAQY,gBACnDP,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEO,YAAab,EAAQa,cAGlDC,YAAW,MACPT,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQP,EAAQO,QAAS,GACvD,EAAE,EAOQ,KAAAR,oBAAsB,KACTD,KAAKG,cAAcc,iBACzCjB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,iBAEzCyB,SAAQC,IAAS,IAAAC,OACYC,IAAvCtB,KAAKQ,iBAAiBY,EAAOG,OAAwC,QAAjBF,EAACrB,KAAKwB,mBAAW,IAAAH,GAAhBA,EAAkBI,sBAAsBC,SAASN,EAAOG,QAC7GvB,KAAKG,cAAciB,EAAOG,MAAQ,OAG1CvB,KAAK2B,kBAAkB,EAOV,KAAAA,iBAAmB,KAChC3B,KAAK4B,gBAAkB,CAAC,CAAC,EA8IZ,KAAAC,gBAAmBrC,IAChC,MAAM,KAAEsC,GAAStC,GAEjBuC,EAAAA,EAAAA,KACI,IAAMD,EAAKnC,eAAeU,SAC1B,KAAK,IAAA2B,EACDhC,KAAKL,eAA2C,QAA7BqC,EAAGF,EAAKnC,eAAeU,cAAM,IAAA2B,EAAAA,EAAI,EAAE,KAI9DD,EAAAA,EAAAA,KACI,IAAMD,EAAKlC,gBAAgBS,SAC3B,KAAK,IAAA4B,EACDjC,KAAKJ,gBAA6C,QAA9BqC,EAAGH,EAAKlC,gBAAgBS,cAAM,IAAA4B,EAAAA,EAAI,EAAE,KAIhEF,EAAAA,EAAAA,KACI,IAAMD,EAAK5B,QAAQG,SACnB,KAAK,IAAA6B,EACDlC,KAAKmC,kBAAuC,QAAtBD,EAAGJ,EAAK5B,QAAQG,cAAM,IAAA6B,EAAAA,EAAI,EAAE,GAEzD,EAOY,KAAAE,0BAA4B,KAClCC,EAAAA,EAAAA,kBAAiB,CACpBC,WAAYtC,KAAKsC,WACjBC,UAAWvC,KAAKuC,UAChBC,YAAaC,EAAAA,YAAYC,SACzBvC,cAAeH,KAAKG,cAAcc,iBAAiBjB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,iBAC1GiD,uBAAwB3C,KAAKN,gBAC7BG,mBAAoBG,KAAKH,mBACzB+C,gBAAiB5C,KAAKQ,iBACtBoB,gBAAiB5B,KAAK4B,gBACtBiB,sBAAuB7C,KAAK6C,sBAC5BC,oBAAqB9C,KAAKG,cAAc4C,gCACpC/C,KAAKuC,UAAUS,iCACfhD,KAAKM,mBAET2C,iBAAkBjD,KAAKiD,iBACvBC,cAAelD,KAAKmD,+BACpBC,iBAAkBpD,KAAKqD,kCACvBC,OAAQtD,KAAKuD,0BACbC,SAAUxD,KAAKyD,aAQN,KAAAC,mBAAqB,KAClC,MAAM,OAAEC,GAAW3D,KAAKR,MASlBoE,EAAUD,EAAOC,SAAW,CAC9BC,KAAMF,EAAOC,QAAQC,KACrBC,WAAYH,EAAOC,QAAQG,KAG/B,OAAOC,EAAAA,EAAAA,aAAY,CACf1B,WAAYtC,KAAKsC,WACjBM,gBAAiB5C,KAAK4C,gBACtBzC,cAAeH,KAAKG,cACpB8D,UAAWjE,KAAKmC,kBAChBvC,gBAAiBI,KAAKJ,gBACtB2C,UAAWvC,KAAKuC,UAChBqB,UACAM,6BAA8BP,EAAOO,6BACrCC,2BAA4BR,EAAOQ,2BACnCC,eAAgBpE,KAAKR,MAAM6E,QAAQC,QACnCrB,iBAAkBjD,KAAKiD,iBACvBsB,4BApBiCC,IACjCb,EAAOC,QAASC,KAAOW,EAAMC,OAAOC,KAAK,EAoBzCC,cAAe3E,KAAK4E,iBACpBC,gBAAiB7E,KAAK8E,iBACtBC,aAAc/E,KAAKgF,gBACnBC,uBAAwBjF,KAAKkF,+BAC/B,EAMW,KAAAC,sBAAwBpF,UACrC,MACI+B,MACIsD,2BAA6B/E,OAAQ+E,KAEzCpF,KAAKR,MAEsC,IAAA6F,EAA3CD,SAAAA,EAA2BE,iBACX,QAAhBD,EAAArF,KAAKwB,mBAAW,IAAA6D,GAAhBA,EAAkBE,kBAAkB,0BAA2B,oCAAqCvF,KAAKF,yBAShG,KAAA0F,mBAAqB,CAACjE,EAAcmD,MACjDnE,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE,CAACe,GAAOmD,IACrC1E,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,gBAAiB6B,EAAK,EAOpG,KAAA4B,+BAAkCqB,IAC/C,GAA0B,aAAtBA,EAAMC,OAAOiB,KACb1F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMiD,EAAMC,OAAOkB,aACrD,CACH,MAAMjB,GAASF,EAAMC,OAAOC,OAAS,IAAIkB,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IAC3E7F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMmD,KAQlC,KAAArB,kCAAqCmB,IAC9CA,EAAMC,OAAOlD,OAASuE,EAAAA,gBAAgBA,EAAAA,gBAAgBC,kBACtD/F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,MAAOiD,EAAMC,OAAOC,OAEzD1E,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMiD,EAAMC,OAAOC,OAExDF,EAAMC,OAAOlD,OAASuE,EAAAA,gBAAgBA,EAAAA,gBAAgB5E,2BACtDlB,KAAKgG,iBAAiBxB,EAAMC,OAAOC,QAS1B,KAAAuB,iBAAmB,CAACC,EAAqCC,KACtEnG,KAAKsC,YAAa,EAClB4D,EAASE,MACJ/F,IACOA,EAAOH,SACPF,KAAKqG,UAAW,EAChBF,EAAU9F,KAEVL,KAAKqG,UAAW,EAChBrG,KAAK6C,sBAAwBxC,GAEjCL,KAAKsC,YAAa,CAAK,IAE3B,KACItC,KAAKqG,UAAW,EAChBrG,KAAKsC,YAAa,CAAK,GAE9B,EAMY,KAAAiB,0BAA4B,KACzC,IAAKvD,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,iBAC5F,OAEJ,IAAIwG,EAEAA,EADAlG,KAAKsG,cAAcC,sBAEfvG,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,OACrC1G,KAAKsG,cAAcK,sBAAsB3G,KAAKQ,kBAC9CR,KAAKsG,cAAcM,mBAAmB5G,KAAKQ,kBAE1CqG,QAAQC,QAAQ,CAAE5G,QAASF,KAAKQ,mBAG/CR,KAAKiG,iBAAiBC,EAAUlG,KAAK+G,sBAAsB,EAO9C,KAAAf,iBAAoBtG,IAA2B,IAAAsH,EAC5DhH,KAAKN,gBAAkBA,EACvB,MAAMuH,EAAyBjH,KAAKG,cAAc+G,0BAA0BxH,IAC5Ea,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEU,yBAA0BxB,KACvDa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE2G,uBAAwBF,IACrC,QAAhBD,EAAAhH,KAAKwB,mBAAW,IAAAwF,GAAhBA,EAAkBI,gCAAgCH,GAClDjH,KAAKC,qBAAqB,EAOb,KAAAoH,6BAA+B,KAC5C,MAAM,OAAE1D,GAAW3D,KAAKR,MAClB8H,EAA8C,GAQpD,OANK3D,EAAO4D,iBACRD,EAAyBE,KAAK1B,EAAAA,gBAAgBC,kBAGlDuB,EAAyBE,KAAK1B,EAAAA,gBAAgB2B,WAEvCH,CAAwB,EAMlB,KAAAI,mBAAqB,MAE7B1H,KAAKN,iBACJM,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,QAK9F1G,KAAKsG,cAAcsB,kBAAkB5H,KAAKN,iBAAiB0G,MAAM/F,IAChDA,EAAOwH,MAAKC,GAASA,EAAMC,UAAY/H,KAAKQ,iBAAiBK,UAI3EN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAO,KAExCb,KAAKM,kBAAoBD,CAAM,GACjC,EAcW,KAAA2H,wBAA2BC,IACxCjI,KAAKwG,iBAAmByB,EACxBjI,KAAKC,qBAAqB,EAOb,KAAAiF,8BAAiChF,IAC9CF,KAAK4C,gBAAkB1C,EACvB,MAAMgG,EAAWlG,KAAKsG,cAAc4B,6BAA6BhI,GACjEF,KAAKiG,iBAAiBC,EAAUlG,KAAKmI,+BAA+B,EAOvD,KAAAvD,iBAAoB1E,IACjCF,KAAKQ,iBAAgB4H,EAAA,GAAQlI,GAC7BF,KAAKN,gBAAkBM,KAAKQ,iBAAiBU,0BAA4B,MACzElB,KAAKgI,wBAAwBvB,EAAAA,iBAAiBC,OAAO,EAOxC,KAAA5B,iBAAoB5E,IACjCA,EAAQmI,YAAa,EACrBrI,KAAKsI,kBAAoBpI,EACzB,MAAMgG,EAAWlG,KAAKsG,cAAcK,sBAAsBzG,GAC1DF,KAAKiG,iBAAiBC,EAAUlG,KAAK+G,sBAAsB,EAQ9C,KAAAwB,8BAAiCrI,IAC9C,MAAMsI,GAAeC,EAAAA,EAAAA,QAAmBzI,KAAKuC,UAAUmG,0BAA4B,GAAGxI,EAAQyI,QAC9F,OACIrJ,EAAAA,cAAA,OAAKsJ,UAAU,+BAA8B,YAAW,UACnDJ,EACC,EAOG,KAAAxD,gBAAkB,KAC/BhF,KAAKQ,iBAAmB,CAAC,EACzBR,KAAK6I,8BACLtI,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEU,yBAA0BlB,KAAKN,mBAC5Da,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEuF,iBAAkB/F,KAAKH,qBACpDG,KAAK6I,6BACL7I,KAAKgI,wBAAwBvB,EAAAA,iBAAiBkB,IAAI,EAOrC,KAAAZ,sBAAyBb,IAClCA,EAAS/D,oBACTnC,KAAKmC,kBAAoB+D,EAAS/D,mBAEtCnC,KAAKyD,YAAY,EAOJ,KAAA0E,+BAAkCjC,IAC3CA,EAAS/D,oBACTnC,KAAKmC,kBAAoB+D,EAAS/D,oBAOzB,KAAAsB,WAAa,KAC1BzD,KAAK4C,qBAAkBtB,EACvBtB,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqC,KAAK,EApiBnD,MAAM,QAAEzE,EAAO,KAAEvC,EAAI,UAAES,EAAS,UAAEwG,GAAc/I,KAAKR,MAErDQ,KAAKuC,UAAYA,EACjBvC,KAAKwG,iBAAmBC,EAAAA,iBAAiBqC,KACzC9I,KAAKL,eAAiBmC,EAAKnC,eAAeU,QAAU,GACpDL,KAAKJ,gBAAkBkC,EAAKlC,gBAAgBS,QAAU,GACtDL,KAAKmC,kBAAoBL,EAAK5B,QAAQG,QAAU,GAChDL,KAAKQ,iBAAmB,CAAC,EACzBR,KAAK4B,gBAAkB,CAAC,EACxB5B,KAAKsG,cAAgB,IAAI0C,EAAAA,cAAc3E,EAAS9B,EAAWwG,GAC3D/I,KAAKG,cAAgB,IAAI8I,EAAAA,cACrBjJ,KAAKL,eACL,IAAIuJ,EAAAA,gBAAed,EAAC,CAAC,EAAI7F,GAAavC,KAAKqH,gCAE3CrH,KAAKJ,gBAAgBuJ,QAAQjJ,GAAoD,IAAxBA,EAAQuC,eAErEzC,KAAKiD,kBAAmBmG,EAAAA,EAAAA,oBACpBpJ,KAAKR,MAAM6E,QAAQC,QAAQ+E,kBAC3BrJ,KAAKR,MAAM8J,aACXtJ,KAAKR,MAAMuJ,UAEnB,CAgDOhJ,0BACH,MACIsE,SAAS,UACL0E,EACAQ,eACIC,gBAAgB,QAAEC,KAG1B9F,QAAQ,sBAAE+F,EAAqB,mBAAEC,IACjC3J,KAAKR,MAuBT,GApBAQ,KAAK6B,gBAAgB7B,KAAKR,OAErBQ,KAAKR,MAAMsC,KAAKnC,eAAeyG,MAAK,KACrCpG,KAAK6I,4BAA4B,KAGrC9G,EAAAA,EAAAA,KACI,IAAM/B,KAAKN,kBACX,KACIM,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,IAAM/B,KAAKwG,mBACX,KACIxG,KAAK0H,oBAAoB,IAI7BgC,EAAuB,CACvB,GAAID,IAAYA,EAAQG,eAEpB,YADAb,EAAUc,MAAM,8BAIpB,GAAIJ,IAAYA,EAAQK,gBAEpB,YADAf,EAAUc,MAAM,4BAIpB,MAAME,EAAO3B,EAAA,GAA6BuB,GAC1C3J,KAAKwB,YAAc,IAAIwI,EAAAA,YACnBjB,EACAgB,EACAN,aAAO,EAAPA,EAASG,eACTH,aAAO,EAAPA,EAASQ,4BACTR,aAAO,EAAPA,EAASS,oBAGbnI,EAAAA,EAAAA,KACI,SAAAoI,EAAA,YACqE7I,KAAjB,QAAhD6I,EAAAnK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAA8J,OAAA,EAAhDA,EAAkDC,cACjDpK,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,OAAO,IACzG3G,UAAW,IAAAsK,QACe,QAAtBA,EAAMrK,KAAKwB,mBAAW,IAAA6I,OAAA,EAAhBA,EAAkBC,kBAAkBtK,KAAKR,MAAMsC,KAAKsD,2BAA0B,KAI5FrD,EAAAA,EAAAA,KACI,KAAK,IAAAwI,EAC+C,QAAhDA,EAAAvK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAkK,GAAhDA,EAAkDjF,cAAc,IAEpEvF,UACQC,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,cACvF1G,KAAKmF,2BAK/B,CAKOpF,2BACsG,IAAAyK,EAIlGC,EAJHzK,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,OACzC,QAApD8D,EAAIxK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAmK,GAAhDA,EAAkDlF,sBAC5CtF,KAAKmF,wBAGC,QAAhBsF,EAAAzK,KAAKwB,mBAAW,IAAAiJ,GAAhBA,EAAkBC,oBAE1B,CAQOC,sBACHC,EACAC,GAEA,OAAI7K,KAAK8H,QAAU+C,GAAa7K,KAAKR,MAAMsC,OAAS8I,EAAU9I,IAIlE,CAEOgJ,SACH,MAAM,WAAEC,EAAU,OAAEpH,GAAW3D,KAAKR,MA4BpC,OAAOuL,EA1BQ3C,EAAAA,EAAA,GACRpI,KAAKR,OAAK,IACbgH,iBAAkBxG,KAAKwG,iBACvB5D,gBAAiB5C,KAAK4C,gBACtBpC,iBAAkBR,KAAKQ,iBACvBd,gBAAiBM,KAAKN,gBACtBY,kBAAmBN,KAAKM,kBACxB6B,kBAAmBnC,KAAKmC,kBACxBP,gBAAiB5B,KAAK4B,gBACtBiB,sBAAuB7C,KAAK6C,sBAC5BP,WAAYtC,KAAKsC,WACjB+D,SAAUrG,KAAKqG,SACfuC,UAAWjF,EAAOiF,UAClBoC,UAAW,CACPC,iBAAkBjL,KAAKwG,mBAAqBC,EAAAA,iBAAiBqC,KAC7DoC,yBAA0BlL,KAAKwG,mBAAqBC,EAAAA,iBAAiBqC,MAEzEqC,yBAA0B,CACtBC,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAW,gCAAiC1H,EAAOiF,YAElE0C,gBAAiBtL,KAAK0D,qBACtB6H,uBAAwBvL,KAAKoC,4BAC7BoJ,yBAA0BxL,KAAKsI,kBAAoBtI,KAAKuI,8BAA8BvI,KAAKsI,mBAAqB,OAIxH,CAuPQO,6BACJ,MAAM,QAAEvE,GAAYtE,KAAKR,MAAM6E,QACzBoH,EAASnH,GAAWA,EAAQmF,SAAWnF,EAAQmF,QAAQQ,4BAE7DjK,KAAKN,gBAAkBM,KAAKsG,cAAcoF,0BAA0B1L,KAAKN,gBAAiBM,KAAKL,eAAgB8L,EACnH,IA9eYE,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAgDXD,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,6CAsBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,2CAiBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,uCAzGLxM,GAAwBsM,EAAAA,EAAAA,IAAA,CAD7BG,EAAAA,IACKzM,GAilBN,yGChnBA,MAAM0M,EAA2CC,IAA6B,IAA5B,cAAEC,EAAa,MAAEC,GAAOF,EACtE,OACI1M,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKJ,GACLC,EAAMI,KAAKC,GACDjN,EAAAA,cAAAA,EAAAA,SAAA,KAAGiN,EAAKC,eAEhB,EAaTxI,EAAsCyI,IAAyC,IAAxC,KAAE3D,EAAI,WAAE4D,EAAU,QAAE9I,EAAO,MAAEsI,GAAOO,EAC7E,OAAKC,EAKDpN,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKvD,GACLlF,EACAsI,EAAMI,KAAKC,IACR,MAAM,KAAEI,EAAI,IAAEC,EAAG,MAAE/C,EAAK,UAAEgD,EAAS,oBAAEC,EAAmB,cAAEC,EAAa,WAAEC,EAAU,aAAEC,GAAiBV,GAChG,MAAEW,EAAK,YAAEC,EAAW,MAAEC,EAAK,QAAEC,GAAYxD,EAI/C,OACIvK,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKM,EAAI,CAAEC,IAAKA,IACjBtN,EAAAA,cAACyM,EAAWK,OAAAC,OAAA,GAAKQ,IAChBM,GACG7N,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKa,GACLE,EACAC,GAGRP,GAAuBC,EACvBC,EACAC,EACE,KAxBZ,IA2BA,EAgBTK,EAA4CC,IAQ7C,IAR8C,YAC/CC,EAAW,QACX5J,EAAO,uBACP6J,EAAsB,iBACtBC,EAAgB,UAChBC,EAAS,mBACTC,EAAkB,iBAClBC,GACHN,EACG,OACIjO,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKmB,GACL5J,EACA6J,GAA0BC,EAC1BC,EACDrO,EAAAA,cAAC0E,EAAWoI,OAAAC,OAAA,GAAKuB,IACjBtO,EAAAA,cAAC0E,EAAWoI,OAAAC,OAAA,GAAKwB,IACd,EAkBTxL,EAAqDyL,IAUtD,IAVuD,YACxDC,EAAW,QACXnK,EAAO,MACPsI,EAAK,SACL7F,EAAQ,MACRwD,EAAK,iBACLmE,EAAgB,WAChBC,EAAU,mBACVC,EAAkB,aAClBC,GACHL,EACG,OACIxO,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK0B,GACLnK,EACAsI,EAAMI,KAAKC,IACR,MAAM,YAAE6B,EAAW,IAAExB,EAAG,MAAEyB,EAAK,MAAEC,EAAK,MAAEC,GAAUhC,EAClD,OACIjN,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+B,EAAW,CAAExB,IAAKA,IACvByB,EACAC,EACAC,EACE,IAGdlI,GACG/G,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKxC,EAAM2E,cACX3E,EAAMuD,MACNvD,EAAMwD,SAGdW,GAAoBC,EACpBC,GAAsBC,EACpB,EA+Bf,EAtBmF3O,IAAQ,IAAAiP,EACvF,MAAM,yBAAEtD,EAAwB,UAAEH,EAAS,gBAAEM,EAAe,uBAAEC,EAAsB,yBAAEC,GAA6BhM,EAI7GkP,EAA0G,QAAjGD,EAAGjP,EAAM2C,kBAAkBwM,QAAQC,MAAK1O,GAD9B,IACyCA,EAAQ6F,0BAAsC,IAAA0I,OAAA,EAA9FA,EAAgGI,SAC5GC,EAAiBxD,EAAgBuC,iBAAiB3B,MAAM0C,MAAK1O,GAAWA,EAAQ0M,MAAQ8B,IAO9F,OANII,IACAA,EAAe9B,gBAAa1L,EAC5BwN,EAAe/B,mBAAgBzL,EAC/BwN,EAAe7B,kBAAe3L,GAI9BhC,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKlB,GACPH,EAAUC,kBAAoB3L,EAAAA,cAACgO,EAAYlB,OAAAC,OAAA,GAAKf,IAChDN,EAAUE,0BAA4B5L,EAAAA,cAAC+C,EAAgB+J,OAAAC,OAAA,GAAKd,IAC5DC,EACI,suBCjHjB,IAAMwD,EAAN,cAAqC1P,EAAAA,UA6BjCC,YAAmBC,GACfC,MAAMD,GArBU,KAAAE,gBAA0B,MAYtC,KAAAC,eAAsC,GAEtC,KAAAC,gBAAoC,GAI3B,KAAAC,mBAA6B,EAoH7B,KAAAgC,gBAAmBrC,IAChC,MAAM,KAAEsC,GAAStC,GAEjBuC,EAAAA,EAAAA,KACI,IAAMD,EAAKnC,eAAeU,SAC1B,KAAK,IAAA2B,EACDhC,KAAKL,eAA2C,QAA7BqC,EAAGF,EAAKnC,eAAeU,cAAM,IAAA2B,EAAAA,EAAI,EAAE,KAI9DD,EAAAA,EAAAA,KACI,IAAMD,EAAKlC,gBAAgBS,SAC3B,KAAK,IAAA4B,EACDjC,KAAKJ,gBAA6C,QAA9BqC,EAAGH,EAAKlC,gBAAgBS,cAAM,IAAA4B,EAAAA,EAAI,EAAE,KAIhEF,EAAAA,EAAAA,KACI,IAAMD,EAAKmN,cAAc5O,SACzB,KAAK,IAAA6O,EACDlP,KAAKM,kBAA6C,QAA5B4O,EAAGpN,EAAKmN,cAAc5O,cAAM,IAAA6O,EAAAA,EAAI,EAAE,KAIhEnN,EAAAA,EAAAA,KACI,IAAMD,EAAK5B,QAAQG,SACnB,KAAK,IAAA6B,EACDlC,KAAKiE,UAA+B,QAAtB/B,EAAGJ,EAAK5B,QAAQG,cAAM,IAAA6B,EAAAA,EAAI,EAAE,IAIlDlC,KAAKmP,oBAAoB,EAmBZ,KAAA9H,6BAA+B,KAC5C,MAAM,OAAE1D,GAAW3D,KAAKR,MAClB8H,EAA8C,GAQpD,OANK3D,EAAO4D,iBACRD,EAAyBE,KAAK1B,EAAAA,gBAAgBC,kBAGlDuB,EAAyBE,KAAK1B,EAAAA,gBAAgB2B,WAEvCH,CAAwB,EAMlB,KAAAI,mBAAqB,MAE7B1H,KAAKN,iBACJM,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,QAK9F1G,KAAKsG,cAAcsB,kBAAkB5H,KAAKN,iBAAiB0G,MAAM/F,IAChDA,EAAOwH,MAAKC,GAASA,EAAMC,UAAY/H,KAAKQ,iBAAiBK,UAI3EN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAO,KAExCb,KAAKM,kBAAoBD,CAAM,GACjC,EAMW,KAAA+O,iBAAmB,KAAW,IAAAC,EAC3CrP,KAAKR,MAAM8P,YAAYC,KAAK,CACxBC,OAAQxP,KAAKyP,yBAA2B,WAAa,aAGzD,MAAM,eAAEC,EAAc,sCAAEC,GAAyE,QAAlCN,EAAGrP,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAgP,EAAAA,EAAI,CAAC,EAEtG,GAAIrP,KAAKyP,yBACL,GAAIC,EACA1P,KAAK6P,+BAAiCF,SAAAA,EACtC3P,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqJ,KAAMJ,GACpD1P,KAAK+P,0BACF,GAAI/P,KAAKgQ,+BAAgC,CAC5ChQ,KAAK6P,gCAAiC,EACtC7P,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqJ,UAAMxO,GAEpD,MACIiB,WAAW,sBAAE0N,IACbjQ,KAAKR,MAETQ,KAAKkQ,SAASD,GAAuB,QAErCjQ,KAAK6P,gCAAiC,EACtC7P,KAAKgI,wBAAwBvB,EAAAA,iBAAiBkB,MA8FzC,KAAAuI,SAAW,CAACC,EAAkC9J,KAC3DrG,KAAKR,MAAM8P,YAAYc,YAAY/J,GACnCrG,KAAKqQ,SAAS,CAAEF,gBAAe,EAG3B,KAAAG,mBAAqB,IACzBhR,EAAAA,cAAA,OAAKsJ,UAAW,gCACZtJ,EAAAA,cAAA,KAAGsJ,UAAW,wCAAyC5I,KAAK8H,MAAMqI,eAQzD,KAAAhB,mBAAqB,KAClC,GAAInP,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAQ,CACjC,MAAMkQ,EAAgB,EAChBC,EAAexQ,KAAKiE,UAAUkF,QAAQjJ,GAAqBA,EAAQ6F,mBAAqBwK,IAAeE,OAG7G,GAAqB,IAAjBD,EAAoB,CACpB,MAAMtQ,EAAUF,KAAKiE,UAAU2K,MAAK1O,GAAWA,EAAQ6F,mBAAqBwK,IAC5EvQ,KAAK4C,gBAAkB1C,GAAoBF,KAAK4C,gBAEhD,MAAM8N,EAAiBtI,EAAA,GAAiBlI,GAEpCA,SAAAA,EAASgB,2BAA6BwP,EAAkBvJ,yBACxDuJ,EAAkBvJ,uBAAyBnH,KAAKG,cAAc+G,0BAC1DhH,aAAO,EAAPA,EAASgB,2BAIZlB,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOsQ,qBAAqB,CACtDD,oBACAE,qBAAsB,CAClBjB,sCAAuC3P,KAAK6P,kCAIpD7P,KAAKkQ,cAAS5O,GAAW,OACtB,CAEHtB,KAAK4C,qBAAkBtB,EAClBtB,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOwQ,qBAAqB,CACtDD,qBAAsB,CAClBjB,uCAAuC,KAI/C,MACIpN,WAAW,sBAAE0N,EAAqB,4BAAEa,IACpC9Q,KAAKR,MAETQ,KAAKkQ,SAA0B,IAAjBM,EAAqBP,EAAwBa,GAA6B,MAUnF,KAAA9I,wBAA0B,CAACC,EAA6BrF,KACrE5C,KAAKwG,iBAAmByB,EACxBjI,KAAK4C,gBAAkBA,EAEnB5C,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,SAC7F1G,KAAKQ,iBAAmB4H,EAAA,GAAKpI,KAAK4C,kBAAqB,CAAC,GACxDrC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CACvBU,yBAA0BlB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,mBAErFa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEuF,iBAAkB/F,KAAKQ,iBAAiBuF,kBAAoB/F,KAAKH,uBAOrF,KAAAkQ,mBAAqB,KAC9B/P,KAAKwG,mBAAqBC,EAAAA,iBAAiBqJ,KAC3C9P,KAAKR,MAAM8P,YAAYyB,UAEvB/Q,KAAKR,MAAM8P,YAAY0B,cAjZ3BhR,KAAK8H,MAAQ,CAAEqI,kBAAc7O,GAC7B,MAAM,QAAE+C,EAAO,KAAEvC,EAAI,UAAES,EAAS,UAAEwG,GAAc/I,KAAKR,MAErDQ,KAAKQ,iBAAmB,CAAC,EACzBR,KAAK4B,gBAAkB,CAAC,EACxB5B,KAAK6P,gCAAiC,EACtC7P,KAAKwG,iBAAmBC,EAAAA,iBAAiBqC,KACzC9I,KAAKJ,gBAAkBkC,EAAKlC,gBAAgBS,QAAU,GACtDL,KAAKiE,UAAYnC,EAAK5B,QAAQG,QAAU,GACxCL,KAAKL,eAAiBmC,EAAKnC,eAAeU,QAAU,GACpDL,KAAKM,kBAAoBwB,EAAKmN,cAAc5O,QAAU,GACtDL,KAAKsG,cAAgB,IAAI0C,EAAAA,cAAc3E,EAAS9B,EAAWwG,GAC3D/I,KAAKG,cAAgB,IAAI8I,EAAAA,cACrBjJ,KAAKL,eACL,IAAIuJ,EAAAA,gBAAed,EAAC,CAAC,EAAI7F,GAAavC,KAAKqH,gCAC3CrH,KAAKJ,gBAEb,CAEOG,0BAGHC,KAAK6B,gBAAgB7B,KAAKR,OAErBQ,KAAKR,MAAMsC,KAAK8N,SAASxJ,MAAK,KAC/BpG,KAAK6I,6BACL7I,KAAKoP,kBAAkB,KAG3BrN,EAAAA,EAAAA,KACI,IAAM/B,KAAKN,kBACX,KACIM,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,IAAM/B,KAAKwG,mBACX,KACIxG,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,IAAM/B,KAAKR,MAAMsC,KAAK8N,SAASvP,QAAUL,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAO4Q,kBACzEA,IACQjR,KAAKR,MAAM8P,YAAYhN,aACnB2O,GAAmBjR,KAAK6P,gCAEjBoB,GAAmBjR,KAAK6P,iCAD/B7P,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqJ,KAAMmB,OAQpElP,EAAAA,EAAAA,KACI,IAAM/B,KAAKyP,2BACXA,IACmC,IAAAyB,EAA1BzB,IAC8B,QAA/ByB,EAAAlR,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA6Q,GAA/BA,EAAiCL,qBAAqB,CAAC,GACvD7Q,KAAKR,MAAM8P,YAAY6B,eAIvC,CAEOxG,sBAAsBC,EAAmBC,GAC5C,OAAI7K,KAAK8H,QAAU+C,GAAa7K,KAAKR,MAAMsC,OAAS8I,EAAU9I,IAIlE,CAEOgJ,SACH,IAAK9K,KAAKyP,yBACN,OAAO,KAGX,MAAM,UAAElN,GAAcvC,KAAKR,OACrB,WAAEuL,EAAU,OAAEpH,GAAW3D,KAAKR,MAyBpC,OAAOuL,EAvBQ3C,EAAAA,EAAA,GACRpI,KAAKR,OAAK,IACbgH,iBAAkBxG,KAAKwG,iBACvB5D,gBAAiB5C,KAAKR,MAAM8P,YAAYjJ,cAAW/E,EAAYtB,KAAK4C,gBACpEpC,iBAAkBR,KAAKR,MAAM8P,YAAYjJ,cAAW/E,EAAYtB,KAAKQ,iBACrEd,gBAAiBM,KAAKN,gBACtBY,kBAAmBN,KAAKM,kBACxBsB,gBAAiB5B,KAAK4B,gBACtBiB,sBAAuB7C,KAAK6C,sBAC5B+F,UAAWjF,EAAOiF,UAClBoC,UAAW,CACPoG,cAAepR,KAAK4C,iBAAmB5C,KAAKwG,mBAAqBC,EAAAA,iBAAiBqJ,OAAS9P,KAAKR,MAAM8P,YAAYjJ,SAClHgL,QAASrR,KAAKR,MAAM8P,YAAYjJ,UAEpC2I,uBAAwB,CACpB5D,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAW,8BAA+B1H,EAAOiF,YAEhEhF,QAAStE,EAAAA,cAACgS,EAAAA,sBAAqBlF,OAAAC,OAAA,GAAK,CAAExI,KAAMtB,EAAUgP,gCACtDC,YAAaxR,KAAKyR,qBAClB5H,MAAO7J,KAAKsQ,uBAIpB,CAwCQmB,qBACsB,IAAAC,EAA1B,OAAI1R,KAAK4C,iBACEmJ,EAAAA,EAAAA,aAAY,CACf7L,QAASF,KAAK4C,gBACdzC,cAAeH,KAAKG,cAAcc,iBAA8D,QAA9CyQ,EAAC1R,KAAK4C,gBAAgB1B,gCAAwB,IAAAwQ,EAAAA,EAAI,IACpG9R,gBAAiBI,KAAKJ,kBAIvB,IACX,CA2EQiJ,6BAA0B,IAAA8I,EAC9B,MAAM,QAAErN,GAAYtE,KAAKR,MAAM6E,QACzBoH,EAAwB,QAAlBkG,EAAGrN,EAAQmF,eAAO,IAAAkI,OAAA,EAAfA,EAAiB1H,4BAEhCjK,KAAKN,gBAAkBM,KAAKsG,cAAcoF,0BAA0B1L,KAAKN,gBAAiBM,KAAKL,eAAgB8L,EACnH,CAEsBuE,qCAA8B,IAAA4B,EAAAC,EAAAC,EAAAC,EAChD,MAAM,QAAEzN,GAAYtE,KAAKR,MAAM6E,SAEzB,4BAAE2N,EAA2B,aAAEC,GAAiBjS,KAAKR,MAAMsC,KAC3DoQ,EAAuD,QAAtBN,EAAGK,EAAa5R,cAAM,IAAAuR,GAAiE,QAAjEA,EAAnBA,EAAqBhD,MAAKuD,GAF9B,oEAEyCA,EAAQxJ,cAAuC,IAAAiJ,OAAA,EAApFA,EACpCQ,UAEAC,EAAwC,QAAlBR,EAAGvN,EAAQmF,eAAO,IAAAoI,OAAA,EAAfA,EAAiBS,uBAC1CC,EAAuC,QAAlBT,EAAGxN,EAAQmF,eAAO,IAAAqI,OAAA,EAAfA,EAAiBU,sBAG/C,OAAsC,QAA/BT,EAAA/R,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA0R,IAA/BA,EAAiCU,aAAaC,kBAE/CR,GACElS,KAAKR,MAAMsC,KAAK8N,SAASvP,QAAUL,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOoS,aAAaE,KAAKC,WAAc,IAAI/K,MAAKgL,IAAQ,IAAAC,EAAA,OAClHD,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjBD,EACjBd,EAA4B3R,cAAM,IAAAyS,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6DlE,MACzDqE,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBR,EACnCM,CAAQ,KAEhB7S,KAAKR,MAAMsC,KAAK8N,SAASvP,QAAUL,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOoS,aAAaE,KAAKC,WAAc,IAAI/K,MAAKgL,GAC1GA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBV,GAA0BQ,EAASE,eAAiBR,EAC9EM,IAEpB,CAEsBK,uBAClB,MAAMC,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAC/C,OAAO8S,SAAAA,EAAeC,cAAgBD,EAAcC,cAAgB,CACxE,CAEsBC,6BAClB,MAAMF,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAC/C,OAAK8S,GAAkBA,EAAcG,gBAG9BH,EAAcG,gBAAgBC,QAAO,CAACC,EAAeC,IACjDD,GAASC,EAASC,SAAW,IACrC,GAJQ,CAKf,CAEsBC,+BAAwB,IAAAC,EAC1C,MAAMT,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAG/C,OAA2C,QAA3CuT,EAAOT,aAAa,EAAbA,EAAeU,6BAAqB,IAAAD,EAAAA,EAFrB,CAG1B,CAEsBE,uBAClB,MACIhS,MAAM,SAAE8N,GAAU,OAClBjM,GACA3D,KAAKR,MACT,IAAKoQ,EAASvP,OACV,OAAO,EAGX,MAAM0T,EAAiBnE,EAASvP,OAC1BsS,EAAOoB,EAAetB,aAAaE,KACzC,IAAKA,IAASA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUnC,OAC3C,OAAO,EAGX,MAAM,kBAAEuD,EAAiB,qBAAEC,GAAyBF,EAC9CG,EAA6BvQ,EAAOwQ,mBAAqBH,GAAqBC,EAKpF,OAFmBtB,EAAKyB,aAAe,GAAKpU,KAAKqT,uBAAyBrT,KAAKkT,iBAAmBlT,KAAK2T,yBAEpF,IAAMO,CAC7B,CAEsBzE,+BAClB,OAAOzP,KAAK8T,gBAChB,IAzVYnI,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sDAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CA8PDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,oDA6BC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,sCAKC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,4CAUC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,8CAOC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,sCAwBC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,6CAxVPrF,GAAsBrD,EAAAA,EAAAA,IAAA,CAF3B2I,EAAAA,gBACAxI,EAAAA,IACKkD,GAqbN,yGC3eA,MAAMjD,EAA2CC,IAA6B,IAA5B,cAAEC,EAAa,MAAEC,GAAOF,EACtE,OACI1M,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKJ,GACLC,EAAMI,KAAKC,GACDjN,EAAAA,cAAAA,EAAAA,SAAA,KAAGiN,EAAKC,eAEhB,EAoBf,EAX+EhN,IAC3E,MAAM,uBAAEwP,EAAsB,UAAEhE,EAAS,YAAEwG,EAAW,MAAE3H,GAAUrK,EAElE,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAK2C,GACPhE,EAAUoG,eAAiB9R,EAAAA,cAACyM,EAAWK,OAAAC,OAAA,GAAKmF,IAC5CxG,EAAUqG,SAAWxH,EACjB,6NCCV,MAAM0K,EAAqEvI,IAM7E,IAN8E,gBAC/EwI,EAAe,UACfC,EAAS,MACTrH,EAAK,UACLsH,EAAS,UACTnS,GACHyJ,EACG,MASM2I,GAAgBC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,QAAS1Q,QAT9C,CACb2Q,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,IAAKa,EAAAA,gBAAgBC,YAAYhB,GAC7B,OAAO,KAGX,OACInV,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,mBACflV,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,0BACflV,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,+BAA8CpH,GACjE9N,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,+BAA8CE,IAErEpV,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,yBACdC,EAAUnI,KAAKuG,IACZ,MAAM6C,EAAY7C,EAAS8C,SAT1B,EAUD,IAAI/M,EAAY,GAAG4L,gCAKnB,OAHIkB,IACA9M,EAAYyC,IAAWzC,EAAW,wBAGlCtJ,EAAAA,cAAA,OAAKsJ,UAAWA,EAAWgE,IAAKiG,EAAS+C,QACrCtW,EAAAA,cAACuW,EAAAA,GAAKzJ,OAAAC,OAAA,GAAKwG,EAASiD,aACnBP,EACKG,GACIpW,EAAAA,cAAA,OACIyW,KAVT,OAUmB,cACE3U,EAAAA,EAAAA,QAAOmB,EAAUyT,oBAAqBnD,EAAS8C,SAAU9C,EAASiD,WAAWG,SACzFrN,UAAW,GAAG4L,uCAEb3B,EAAS8C,UAGlBD,GACIpW,EAAAA,cAAA,yBACqBuT,EAAS+C,OAAM,cACpB,OACZhN,UAAW,GAAG4L,uCAEb3B,EAAS8C,WAGtBJ,GAAgBG,GACdpW,EAAAA,cAAA,QAAM4W,GAAIrD,EAAS+C,OAAQhN,UAAU,+BAChCxH,EAAAA,EAAAA,QAAOmB,EAAUyT,oBAAqBnD,EAAS8C,SAAU9C,EAASiD,WAAWG,UAGpF,KAIhB,EAODE,EAAuC,CAChDC,UAAW,CACPnB,GAAI,CAAEoB,EAAG,6BAA8BnB,EAAG,IAAKoB,EAAG,KAClDjB,GAAI,CAAEgB,EAAG,6BAA8BnB,EAAG,IAAKoB,EAAG,KAClDhB,GAAI,CAAEe,EAAG,6BAA8BnB,EAAG,IAAKoB,EAAG,MAEtDC,UAAU,EACVC,QAAS,ykBCVb,IAAMC,EAAN,cAAsCnX,EAAAA,UA2ClCC,YAAmBC,GAA4B,IAAAkX,EAC3CjX,MAAMD,GArCU,KAAAE,gBAA0B,MAI1B,KAAAyC,kBAA+B,GAU/B,KAAAwU,2BAAsC,CAAC,EAMnD,KAAAhX,eAAsC,GAEtC,KAAAC,gBAAoC,GAI3B,KAAAC,mBAA6B,EAM7B,KAAA+W,8BAAwC,kEAEjD,KAAA1E,mCAA8C,EAmCrC,KAAA2E,iBAAmB9W,UAChC,MAAM+W,EAA8B9W,KAAK+W,2BACnCtC,EAAoC,GAE1C,IAAI,IAAApF,EACA,MAAM2H,QAAiBhX,KAAKiX,yBACO,QAA/B5H,EAAArP,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAgP,OAAA,EAA/BA,EAAiCoD,aAAaE,KAAKuE,YAAa,EAChEJ,GAEJ,IAAK,MAAMK,KAAQL,EAAiB,CAChC,MAAMM,EAAqCJ,EAASpI,MAAKyI,GAAKA,EAAExI,WAAasI,EAAKG,YAClF7C,EAAUjN,KAAK,CAAEqL,SAAUsE,EAAMC,YAErCpX,KAAKqQ,SAAS,CAAEkH,eAAgB9C,IAClC,MAAO5K,GACL7J,KAAKR,MAAMuJ,UAAUc,MAAMA,GAC3B7J,KAAKqQ,SAAS,CAAEkH,eAAgB,OASvB,KAAAzX,sBAAwBC,UACrCC,KAAKC,sBACL,MAAMC,EAAUF,KAAKG,cAAcC,qBAAqBC,EAAQL,KAAKM,oBAErEC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQ,MACrCF,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEE,QAASR,EAAQQ,WAC9CH,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEG,WAAYT,EAAQS,cACjDJ,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEI,KAAMV,EAAQU,QAC3CL,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAOX,EAAQW,SAC5CN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEM,aAAcZ,EAAQY,gBACnDP,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEO,YAAab,EAAQa,cAGlDC,YAAW,MACPT,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQP,EAAQO,QAAS,GAX1C,EAYL,EAOE,KAAAR,oBAAsB,KACnC,MAAMuX,EAAoBxX,KAAKG,cAAcc,iBACzCjB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,iBAE3D,IAAK,MAAM+X,KAAiBD,EAAmB,KAAAnW,OAEOC,IAA9CtB,KAAKQ,iBAAiBiX,EAAclW,OACnB,QAAjBF,EAACrB,KAAKwB,mBAAW,IAAAH,GAAhBA,EAAkBI,sBAAsBC,SAAS+V,EAAclW,QAEhEvB,KAAKG,cAAcsX,EAAclW,MAAQ,IAGjDvB,KAAK2B,kBAAkB,EAOV,KAAAA,iBAAmB,KAChC3B,KAAK4B,gBAAkB,CAAC,CAAC,EA8OZ,KAAAC,gBAAmBrC,IAChC,MAAM,KAAEsC,GAAStC,GAEjBuC,EAAAA,EAAAA,KACI,IAAMD,EAAKnC,eAAeU,SAC1B,KAAK,IAAA2B,EACDhC,KAAKL,eAA2C,QAA7BqC,EAAGF,EAAKnC,eAAeU,cAAM,IAAA2B,EAAAA,EAAI,EAAE,KAI9DD,EAAAA,EAAAA,KACI,IAAMD,EAAKlC,gBAAgBS,SAC3B,KAAK,IAAA4B,EACDjC,KAAKJ,gBAA6C,QAA9BqC,EAAGH,EAAKlC,gBAAgBS,cAAM,IAAA4B,EAAAA,EAAI,EAAE,KAIhEF,EAAAA,EAAAA,KACI,IAAMD,EAAK5B,QAAQG,SACnB,KAAK,IAAA6B,EACDlC,KAAKmC,kBAAuC,QAAtBD,EAAGJ,EAAK5B,QAAQG,cAAM,IAAA6B,EAAAA,EAAI,EAAE,KAI1DH,EAAAA,EAAAA,KACI,IAAMD,EAAKmN,cAAc5O,SACzB,KAAK,IAAA6O,EACDlP,KAAKM,kBAA6C,QAA5B4O,EAAGpN,EAAKmN,cAAc5O,cAAM,IAAA6O,EAAAA,EAAI,EAAE,KAIhEnN,EAAAA,EAAAA,KACI,IAAMD,EAAKmQ,aAAa5R,SACxB,KAAK,IAAAqX,EACD1X,KAAKkS,kCAA4D,QAA3BwF,EAAG5V,EAAKmQ,aAAa5R,cAAM,IAAAqX,GAEhE,QAFgEA,EAAxBA,EAA0B9I,MAC/DuD,GAAWA,EAAQxJ,OAAS3I,KAAK4W,uCACpC,IAAAc,OAAA,EAFwCA,EAEtCtF,SAAS,GAEnB,EAOY,KAAA2E,yBAA2B,KAAiB,IAAA7F,EAAAa,EACzD,OAA2G,QAA3Gb,EAAsC,QAAtCa,EAAO/R,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA0R,GAA6B,QAA7BA,EAA/BA,EAAiCU,aAAaE,KAAKC,iBAAS,IAAAb,OAAA,EAA5DA,EAA8D5I,QAAOgO,GAAQnX,KAAK2X,YAAYR,YAAM,IAAAjG,EAAAA,EAAI,EAAE,EAQpG,KAAAyG,YAAeR,GACrBnX,KAAK4X,iBAAiBT,EAAKpE,qBAA8CzR,IAA5B6V,EAAKU,oBAAgE,KAA5BV,EAAKU,oBAQrF,KAAAD,iBAAoB3E,IAA6C,IAAA6E,EAAAlG,EAC9E,MAAMS,EAA2D,QAArCyF,EAAG9X,KAAKR,MAAM6E,QAAQC,QAAQmF,eAAO,IAAAqO,OAAA,EAAlCA,EAAoCxF,wBAE7D,4BAAEN,EAA2B,aAAEC,GAAiBjS,KAAKR,MAAMsC,KAGjE,IAF6D,QAAtB8P,EAAGK,EAAa5R,cAAM,IAAAuR,GAAiE,QAAjEA,EAAnBA,EAAqBhD,MAAKuD,GAF9B,oEAEyCA,EAAQxJ,cAAuC,IAAAiJ,OAAA,EAApFA,EACpCQ,iBACoD9Q,IAAjB2R,EAA4B,KAAAH,EACjE,MAAMiF,EAAuD,QAArCjF,EAAGd,EAA4B3R,cAAM,IAAAyS,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6DjL,MACpFmQ,GAAcA,IAAe/E,IAEjC,YAA8B3R,IAAvByW,GAAmCA,EAE9C,YAAwBzW,IAAjB2R,QAAyD3R,IAA3B+Q,GAAwCY,IAAiBZ,CAAsB,EASvG,KAAA4E,wBAA0BlX,MAAOkY,EAAmBxD,KACjE,MAAMlL,EAAgBvJ,KAAKR,MAAM6E,QAAQkF,cACnC2O,EAAgBzD,EACjBtL,QAAOgO,IAASgB,EAAAA,iBAAiBC,kBAAkBjB,EAAKG,aACxDhL,KACG6K,GACI,IAAIkB,EAAAA,aACAlB,EAAKG,WAAa,EAClB/N,EAAcC,eAAe8O,YAC7BL,OACA3W,EACAiI,EAAcC,kBAG9B,OAAO+O,EAAAA,EAAAA,mBAAkBL,EAAe3O,EAAc,EASzC,KAAAnH,0BAA4B,CAACoW,EAA4BC,KACtE,MAAMtY,GACFH,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKsG,cAAcC,sBAC/DvG,KAAKG,eAUf,OAAOkC,EAAAA,EAAAA,kBAAiB,CACpBC,WAAYtC,KAAKsC,WACjBC,UAAWvC,KAAKuC,UAChBC,YAAaC,EAAAA,YAAYC,SACzBvC,cAAeA,EAAcc,iBAAiBjB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,iBACrGiD,uBAAwB3C,KAAKN,gBAC7BG,mBAAoBG,KAAKH,mBACzB+C,gBAAiB5C,KAAKQ,iBACtBoB,gBAAiB5B,KAAK4B,gBACtByE,SAAUrG,KAAKqG,SACfxD,sBAAuB7C,KAAK6C,sBAC5BI,iBAAkBjD,KAAKiD,iBACvBH,oBAAqB3C,EAAc4C,gCAC/B/C,KAAKuC,UAAUS,iCACfhD,KAAKM,mBAET4C,cAAelD,KAAKmD,+BACpBC,iBAAkBpD,KAAKqD,kCACvBqV,uBAAwB1Y,KAAKR,MAAM8P,YAAYoJ,uBAK/CpV,OAAQA,KACJtD,KAAK2Y,WACLH,SAAAA,GAAiB,EAGrBhV,SAAWxD,KAAK4C,iBAAoB5C,KAAKsG,cAAcC,sBAhC7BqS,KAC1B5Y,KAAKyD,aACLgV,SAAAA,GAAmB,EA8B4D,QACjF,EAUW,KAAAI,qBAAuB,CACpCC,EACAN,EACAC,KASOM,EAAAA,EAAAA,eAAc,CACjB5Y,cAAeH,KAAKG,cACpB8D,UAAWjE,KAAKmC,kBAChBI,UAAWvC,KAAKuC,UAChB3C,gBAAiBI,KAAKJ,gBACtBgD,gBAAiB5C,KAAK2W,2BACtBqC,sBAAuBhZ,KAAKiZ,uBAC5BP,uBAAwB1Y,KAAKR,MAAM8P,YAAYoJ,uBAC/CzV,iBAAkBjD,KAAKiD,iBAKvB8B,aAAcA,KACV/E,KAAKgF,kBACL8T,SAAAA,GAAuB,EAM3BxV,OAAQA,KACJtD,KAAKkZ,mBACLV,SAAAA,GAAiB,EAGrBhV,SAAWxD,KAAK4C,gBA9BUgW,KAC1B5Y,KAAKyD,aACLgV,SAAAA,GAAmB,EA4Be,SAuBzB,KAAAtT,sBAAwBpF,UACrC,MACI+B,MACIsD,2BAA6B/E,OAAQ+E,KAEzCpF,KAAKR,MAEsC,IAAA6F,EAA3CD,SAAAA,EAA2BE,iBACX,QAAhBD,EAAArF,KAAKwB,mBAAW,IAAA6D,GAAhBA,EAAkBE,kBAAkB,0BAA2B,oCAAqCvF,KAAKF,yBAQhG,KAAAmZ,uBAA0BzU,IACvC,MAAM2U,EAAkB3U,EAAM4U,cAAc1U,MACtC9B,EAAkB5C,KAAKmC,kBAAkByM,MAAK1O,IAAYA,EAAQ2O,UAAY,IAAIwK,aAAeF,IACnGvW,IACA5C,KAAK2W,2BAA6B/T,IASzB,KAAA4C,mBAAqB,CAACjE,EAAcmD,MACjDnE,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE,CAACe,GAAOmD,IACrC1E,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,gBAAiB6B,EAAK,EAOpG,KAAA4B,+BAAkCqB,IAC/C,GAA0B,aAAtBA,EAAMC,OAAOiB,KACb1F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMiD,EAAMC,OAAOkB,aACrD,CACH,MAAMjB,GAASF,EAAMC,OAAOC,OAAS,IAAIkB,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IAC3E7F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMmD,KAQlC,KAAArB,kCAAqCmB,IAClDxE,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMiD,EAAMC,OAAOC,OAEpDF,EAAMC,OAAOlD,OAASuE,EAAAA,gBAAgBA,EAAAA,gBAAgB5E,2BACtDlB,KAAKgG,iBAAiBxB,EAAMC,OAAOC,QAO1B,KAAAnB,0BAA4B,KACzC,IAAKvD,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,iBAC5F,OAGJ,IAAIwG,EAEAA,EADAlG,KAAKsG,cAAcC,uBAAyBvG,KAAKsZ,cAActZ,KAAKQ,kBAEhER,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,OACrC1G,KAAKsG,cAAcK,sBAAsB3G,KAAKQ,kBAC9CR,KAAKsG,cAAcM,mBAAmB5G,KAAKQ,kBAE1CqG,QAAQC,QAAQ,CAAE5G,QAASF,KAAKQ,mBAG/CR,KAAKsC,YAAa,EAClBtC,KAAK+P,qBAEL7J,EAASE,MACJ/F,IACGL,KAAKsC,YAAa,EAClB,IAAIiX,GAAclZ,EAAO8B,mBAAqB,IAAIyM,MAC9C4K,GACIxZ,KAAKQ,iBAAiBmI,OAAS6Q,EAAI7Q,MACnC3I,KAAKQ,iBAAiBC,SAAW+Y,EAAI/Y,QACrCT,KAAKQ,iBAAiBK,QAAU2Y,EAAI3Y,OACpCb,KAAKQ,iBAAiBI,OAAS4Y,EAAI5Y,MACnCZ,KAAKQ,iBAAiBE,UAAY8Y,EAAI9Y,UAEzC6Y,IACDA,EAAalZ,EAAOH,QACpBqZ,EAAUnR,EAAAA,EAAA,GAAQmR,GAAevZ,KAAKQ,mBAGtCH,EAAOH,SACPF,KAAKqG,UAAW,EACZhG,EAAO8B,kBACPnC,KAAK+G,sBAAsB,CAAE5E,kBAAmB9B,EAAO8B,kBAAmBjC,QAASqZ,IAEnFvZ,KAAK+G,sBAAsB,CAAE7G,QAASqZ,MAG1CvZ,KAAKqG,UAAW,EAChBrG,KAAK6C,sBAAwBxC,EAC7BL,KAAK+P,yBAGb,KACI/P,KAAKqG,UAAW,EAChBrG,KAAKsC,YAAa,EAClBtC,KAAK+P,oBAAoB,GAEhC,EAOY,KAAA/J,iBAAoBtG,IAA2B,IAAAsH,EAC5DhH,KAAKN,gBAAkBA,EACvB,MAAM+Z,EAAyBzZ,KAAKG,cAAc+G,0BAA0BxH,IAC5Ea,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEU,yBAA0BxB,KACvDa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE2G,uBAAwBsS,IACrC,QAAhBzS,EAAAhH,KAAKwB,mBAAW,IAAAwF,GAAhBA,EAAkBI,gCAAgCqS,GAClDzZ,KAAKC,qBAAqB,EAOb,KAAAoH,6BAA+B,KAC5C,MAAM,OAAE1D,GAAW3D,KAAKR,MAClB8H,EAA8C,GAQpD,OANK3D,EAAO4D,iBACRD,EAAyBE,KAAK1B,EAAAA,gBAAgBC,kBAGlDuB,EAAyBE,KAAK1B,EAAAA,gBAAgB2B,WAEvCH,CAAwB,EAMlB,KAAAI,mBAAqB,MAE7B1H,KAAKN,iBACJM,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,QAKnG1G,KAAKsG,cAAcsB,kBAAkB5H,KAAKN,iBAAiB0G,MAAM/F,IAC3CA,EAAOwH,MAAKC,GAASA,EAAMC,UAAY/H,KAAKQ,iBAAiBK,UAI3EN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAO,KAGxCb,KAAKM,kBAAoBD,CAAM,GACjC,EAgBW,KAAAqZ,mBAAqB,KAClC,GAAI1Z,KAAKmC,kBAAmB,CAExB,OADuBnC,KAAKmC,kBAAkByM,MAAM1O,GAAqBA,EAAQuH,cACvDzH,KAAKmC,kBAAkBsO,OAAS,EAAIzQ,KAAKmC,kBAAkB,QAAKb,GAE9E,EAOH,KAAAqY,yCAA2C,KACxD,GAAI3Z,KAAK4Z,kCAAmC,CACxC,MAAM,qBAAE3F,EAAoB,QAAE/T,EAAO,kCAAE2Z,GAAsC7Z,KAAK4Z,kCAElF,IAAIE,EAQJ,OALIA,EADAD,EACyB3Z,EAAUF,KAAK+Z,kBAAkB7Z,QAAWoB,EAE5C2S,EAAuBjU,KAAKga,mCAAmC/F,QAAwB3S,EAG7GwY,EAEK,EAQH,KAAAE,mCAAsC/F,IACnD,MAAMwF,EAAyBxF,EAAqBgG,QAE9CC,EAA2BT,EAAyBzZ,KAAKma,4BAA4BV,QAA0BnY,EAEjH4Y,GAA4BA,IAA6Bla,KAAKN,iBAC9DM,KAAKgG,iBAAiBkU,GAgB1B,MAbyB,CACrB/S,uBAAwBsS,EACxB9Q,KAAMsL,EAAqBmG,WAC3B3Z,OAAQwT,EAAqBoG,SAC7BC,aAAcrG,EAAqBsG,SACnC3Z,KAAMqT,EAAqBrT,KAC3BC,MAAOoT,EAAqBpT,MAC5BH,QAASuT,EAAqBuG,IAC9BC,MAAOxG,EAAqBwG,MAC5BvZ,yBAA0BgZ,EAC1BnU,iBAAkB/F,KAAKH,mBAGb,EAQD,KAAAka,kBAAqBW,IAClC,MAAMjB,EAAyBiB,EAAevT,uBAExC+S,EAA2BT,EAAyBzZ,KAAKma,4BAA4BV,QAA0BnY,EAEjH4Y,GAA4BA,IAA6Bla,KAAKN,iBAC9DM,KAAKgG,iBAAiBkU,GAS1B,OANa9R,EAAAA,EAAA,GACNsS,GAAc,IACjBxZ,yBAA0BgZ,EAC1BnU,iBAAkB/F,KAAKH,oBAGb,EAQD,KAAAsa,4BAA+BV,IAC5C,MAAMkB,EAAgB3a,KAAKL,eAAeiP,MAAKgM,IAAU,IAAAC,EACrD,OAAsB,QAAfA,EAAAD,EAAQE,eAAO,IAAAD,OAAA,EAAfA,EAAiBE,iBAAkBtB,EAAuBsB,aAAa,IAGlF,OAAOJ,aAAa,EAAbA,EAAeK,eAAe,EAMxB,KAAA5L,iBAAmB,KAChCpP,KAAKR,MAAM8P,YAAYC,KAAK,CACxBC,OAAQxP,KAAKib,WAAa,WAAa,WACvCC,OAAQlb,KAAKkb,OACb1X,SAAUxD,KAAKwD,SACfmV,SAAU3Y,KAAK2Y,WAGnB,MAAMxF,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAE/C,GAAIL,KAAKib,WAAY,CACjB,IAAIE,EAGAA,EADAhI,SAAAA,EAAeV,aAAaE,KAAKyI,gBAChBjI,EAAcV,aAAaE,KAAKyI,gBAC1Cpb,KAAK2Z,2CACK3Z,KAAK2Z,2CACf3Z,KAAK0Z,qBACK1Z,KAAK0Z,qBAELvG,SAAAA,EAAekI,yBAA2BlI,EAAcmI,wCAAqCha,EAG9G6Z,IAAmBnb,KAAKsG,cAAciV,QAAQJ,IAC9Cnb,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqJ,KAAMqL,GACpDnb,KAAKwb,oBAAoBL,GACzBnb,KAAK+P,qBACLoD,SAAAA,EAAesI,yBAAyB,CAAEC,uBAAuB,MAEjE1b,KAAKgI,wBAAwBvB,EAAAA,iBAAiBkB,KAC9CwL,SAAAA,EAAesI,yBAAyB,CAAEC,uBAAuB,OAQ5D,KAAA/C,SAAW,KACxB,OAAQ3Y,KAAKwG,kBACT,KAAKC,EAAAA,iBAAiBkB,IACtB,KAAKlB,EAAAA,iBAAiBC,OAClB1G,KAAKuD,4BACL,MACJ,KAAKkD,EAAAA,iBAAiBqC,KAClB9I,KAAKkZ,mBACL,MACJ,QACIlZ,KAAKR,MAAMuJ,UAAUc,MAAM,uBAOtB,KAAArG,SAAW,KACxB,OAAQxD,KAAKwG,kBACT,KAAKC,EAAAA,iBAAiBkB,IACtB,KAAKlB,EAAAA,iBAAiBC,OAClB1G,KAAKC,uBACED,KAAK4C,iBAAoB5C,KAAKsG,cAAcC,wBAC/CvG,KAAKyD,aAGT,MACJ,KAAKgD,EAAAA,iBAAiBqC,KACd9I,KAAK4C,iBACL5C,KAAKyD,aAET,MACJ,QACIzD,KAAKR,MAAMuJ,UAAUc,MAAM,uBAOtB,KAAAqR,OAAS,KAClBlb,KAAKsG,cAAcC,uBAAyBvG,KAAKiR,gBACjDjR,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqC,KAAM9I,KAAKiR,iBAClDjR,KAAKiR,iBACZjR,KAAKgI,wBAAwBvB,EAAAA,iBAAiBC,OAAQ1G,KAAKiR,iBAG/DjR,KAAK+P,oBAAoB,EAOZ,KAAAkL,SAAW,KAAc,IAAAU,EAAAC,EACtC,MAAM,SAAEhM,EAAQ,4BAAEoC,GAAgChS,KAAKR,MAAMsC,MACvD,QAAEwC,GAAYtE,KAAKR,MAAM6E,QACzBgO,EAAyB/N,GAAWA,EAAQmF,SAAWnF,EAAQmF,QAAQ6I,uBACvEC,EAAwBjO,GAAWA,EAAQmF,SAAWnF,EAAQmF,QAAQ+I,sBAC5E,SAAK5C,EAASvP,SAAWiE,EAAQmF,SAAWmG,EAASvP,OAAOoS,aAAa8I,SAAW3L,EAASvP,OAAOoS,aAAaC,kBAK1G1S,KAAKkS,kCACqC,QADJyJ,EACvC/L,EAASvP,OAAOoS,aAAaE,KAAKC,iBAAS,IAAA+I,OAAA,EAA3CA,EAA6C9T,MAAKgL,IAAQ,IAAAgJ,EAAA,OACtDhJ,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjB8I,EACjB7J,EAA4B3R,cAAM,IAAAwb,GAAyB,QAAzBA,EAAlCA,EAAoC7I,+BAAuB,IAAA6I,OAAA,EAA3DA,EAA6DjN,MACzDqE,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBR,EACnCM,CAAQ,IAEyB,QAD1C+I,EACDhM,EAASvP,OAAOoS,aAAaE,KAAKC,iBAAS,IAAAgJ,OAAA,EAA3CA,EAA6C/T,MAAKgL,GAC9CA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBV,GAA0BQ,EAASE,eAAiBR,EAC9EM,IACT,EAMM,KAAAqG,iBAAmB,KAChClZ,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqJ,KAAM9P,KAAK2W,4BACzD3W,KAAKwb,oBAAoBxb,KAAK2W,4BAC9B3W,KAAK+P,oBAAoB,EAMZ,KAAA/K,gBAAkB,KAC/BhF,KAAK6I,6BACL7I,KAAKgI,wBAAwBvB,EAAAA,iBAAiBkB,IAAI,EAOrC,KAAAZ,sBAAyBb,IAClCA,EAAS/D,oBACTnC,KAAKmC,kBAAoB+D,EAAS/D,mBAGlC+D,EAAShG,UACTF,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqJ,KAAM5J,EAAShG,SAC7DF,KAAKwb,oBAAoBtV,EAAShG,SAClCF,KAAK+P,uBAQI,KAAAyL,oBAAuBtb,IACpC,GAAIF,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAQ,CACjC,MAAMyb,EAAkB1T,EAAA,GAAQlI,GAE5BA,EAAQgB,2BAA6B4a,EAAmB3U,yBACxD2U,EAAmB3U,uBAAyBnH,KAAKG,cAAc+G,0BAA0BhH,EAAQgB,2BAGrGlB,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAO0b,sBAAsB,CAAED,uBACxD9b,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOoS,aAAasJ,sBAAsB,CAAED,uBAAsBE,OAAMnS,IAC7F7J,KAAKR,MAAMuJ,UAAUc,MAAMA,EAAM,MAY5B,KAAApG,WAAa,KAC1B,OAAQzD,KAAKwG,kBACT,KAAKC,EAAAA,iBAAiBkB,IACtB,KAAKlB,EAAAA,iBAAiBC,OAClB1G,KAAKgI,wBACDhI,KAAKsG,cAAcC,sBAAwBE,EAAAA,iBAAiBqC,KAAOrC,EAAAA,iBAAiBqJ,KACpF9P,KAAKiR,iBAET,MACJ,QACIjR,KAAKgI,wBAAwBvB,EAAAA,iBAAiBqJ,KAAM9P,KAAKiR,iBAEjEjR,KAAK+P,oBAAoB,EAQZ,KAAA/H,wBAA0B,CAACC,EAA6BrF,KACrE5C,KAAKwG,iBAAmByB,EACxBjI,KAAK4C,gBAAkBA,EAEnB5C,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,QAC7F1G,KAAKQ,iBAAmB4H,EAAA,GAAKpI,KAAK4C,kBAAqB,CAAC,GACxDrC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CACvBU,yBAA0BlB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,mBAErFa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CACvBuF,iBAAkB/F,KAAKQ,iBAAiBuF,kBAAoB/F,KAAKH,sBAE9DG,KAAKwG,mBAAqBC,EAAAA,iBAAiBqC,OAClD9I,KAAK2W,2BAA6BvO,EAAA,GAAKpI,KAAK4C,kBAAqB,CAAC,IAOzD,KAAAmN,mBAAqB,KAC9B/P,KAAKwG,mBAAqBC,EAAAA,iBAAiBqJ,KAC3C9P,KAAKR,MAAM8P,YAAYyB,UAChB/Q,KAAKsC,WACZtC,KAAKR,MAAM8P,YAAY2M,YAEvBjc,KAAKR,MAAM8P,YAAY0B,cAQd,KAAAsI,cAAiBpZ,IAC9B,IAAK,MAAMgc,KAAmBlc,KAAKmC,kBAAmB,KAAAga,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAClD,IACiB,QAAbR,EAACjc,EAAQyI,YAAI,IAAAwT,EAAAA,EAAI,MAAQD,EAAgBvT,OAC1B,QAAfyT,EAAClc,EAAQO,cAAM,IAAA2b,EAAAA,EAAI,MAAQF,EAAgBzb,SACtB,QAArB4b,EAACnc,EAAQoa,oBAAY,IAAA+B,EAAAA,EAAI,MAAQH,EAAgB5B,eACpC,QAAbgC,EAACpc,EAAQU,YAAI,IAAA0b,EAAAA,EAAI,MAAQJ,EAAgBtb,OAC3B,QAAd2b,EAACrc,EAAQW,aAAK,IAAA0b,EAAAA,EAAI,MAAQL,EAAgBrb,QAC1B,QAAhB2b,EAACtc,EAAQQ,eAAO,IAAA8b,EAAAA,EAAI,MAAQN,EAAgBxb,UAC9B,QAAd+b,EAACvc,EAAQua,aAAK,IAAAgC,EAAAA,EAAI,MAAQP,EAAgBzB,QACT,QAAjCiC,EAACxc,EAAQgB,gCAAwB,IAAAwb,EAAAA,EAAI,MAAQR,EAAgBhb,2BACpC,QAAzByb,EAACzc,EAAQ6F,wBAAgB,IAAA4W,EAAAA,EAAI,MAAQT,EAAgBnW,iBAErD,OAAO,EAIf,OAAO,CAAI,EA7jCX/F,KAAK8H,MAAQ,CAAEyP,eAAgB,IAC/B,MAAM,QAAElT,EAAO,KAAEvC,EAAI,UAAES,EAAS,UAAEwG,GAAc/I,KAAKR,MAErDQ,KAAKQ,iBAAmB,CAAC,EACzBR,KAAKuC,UAAYA,EACjBvC,KAAKwG,iBAAmBC,EAAAA,iBAAiBqC,KACzC9I,KAAKL,eAAiBmC,EAAKnC,eAAeU,QAAU,GACpDL,KAAKJ,gBAAkBkC,EAAKlC,gBAAgBS,QAAU,GACtDL,KAAKmC,kBAAoBL,EAAK5B,QAAQG,QAAU,GAChDL,KAAKM,kBAAoBwB,EAAKmN,cAAc5O,QAAU,GACtDL,KAAKsG,cAAgB,IAAI0C,EAAAA,cAAc3E,EAAS9B,EAAWwG,GAC3D/I,KAAKG,cAAgB,IAAI8I,EAAAA,cACrBjJ,KAAKL,eACL,IAAIuJ,EAAAA,gBAAed,EAAC,CAAC,EAAI7F,GAAavC,KAAKqH,gCAC3CrH,KAAKJ,iBAETI,KAAK4B,gBAAkB,CAAC,EACxB5B,KAAKkS,kCAA4D,QAA3BwE,EAAG5U,EAAKmQ,aAAa5R,cAAM,IAAAqW,GAEhE,QAFgEA,EAAxBA,EAA0B9H,MAC/DuD,GAAWA,EAAQxJ,OAAS3I,KAAK4W,uCACpC,IAAAF,OAAA,EAFwCA,EAEtCtE,UACHpS,KAAKiD,kBAAmBmG,EAAAA,EAAAA,oBACpBpJ,KAAKR,MAAM6E,QAAQC,QAAQ+E,kBAC3BrJ,KAAKR,MAAM8J,aACXtJ,KAAKR,MAAMuJ,UAEnB,CA4EW6Q,wCAAiC,IAAAgD,EAAAC,EAExC,MAAMC,EAEe,QAFLF,EACQ,QADRC,EACZ7c,KAAKR,MAAMsC,KAAK6Q,YAAI,IAAAkK,GAAQ,QAARA,EAApBA,EAAsBxc,cAAM,IAAAwc,GAAM,QAANA,EAA5BA,EAA8BlK,YAAI,IAAAkK,GAAqB,QAArBA,EAAlCA,EAAoCE,2BAAmB,IAAAF,GAA4D,QAA5DA,EAAvDA,EAAyDjO,MAAKoO,GAA6B,0BAAjBA,EAASC,aAAgC,IAAAJ,GAAO,QAAPA,EAAnHA,EAAqHK,aAAK,IAAAL,OAAA,EAA1HA,EACMM,mBAAW,IAAAP,EAAAA,EAAI,GAEzB,OAAOE,EAAcM,KAAKC,MAAMP,GAAyC,IAC7E,CAEO/c,0BACH,MACIsE,SAAS,UACL0E,EACAQ,eACIC,gBAAgB,QAAEC,KAG1B9F,QAAQ,sBAAE+F,EAAqB,mBAAEC,GAAoB,UACrDpH,GACAvC,KAAKR,MAoDT,GAjDAQ,KAAK6B,gBAAgB7B,KAAKR,OAE1BQ,KAAKG,cAAgB,IAAI8I,EAAAA,cACrBjJ,KAAKL,eACL,IAAIuJ,EAAAA,gBAAed,EAAC,CAAC,EAAI7F,GAAavC,KAAKqH,gCAC3CrH,KAAKJ,iBAGTI,KAAKR,MAAMsC,KAAK8N,SAASxJ,MAAK,KAC1BpG,KAAK6I,6BACL7I,KAAKoP,kBAAkB,KAG3BrN,EAAAA,EAAAA,KACI,IAAM/B,KAAKN,kBACX,KACIM,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,IAAM/B,KAAKwG,mBACX,KACIxG,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,SAAAub,EAAA,OAAqC,QAArCA,EAAMtd,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAid,OAAA,EAA/BA,EAAiChC,kCAAkC,IACzE,KACI,IAAKtb,KAAK4Z,mCAAqC5Z,KAAKib,WAAY,KAAAsC,EAAAC,EAC5D,IAAItd,EAAyC,QAAlCqd,EAAGvd,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAkd,OAAA,EAA/BA,EAAiCjC,mCAE/C,GAAW,QAAXkC,EAAItd,SAAO,IAAAsd,GAAPA,EAASrW,uBAAwB,CACjC,MAAM+S,EAA2Bla,KAAKma,4BAA4Bja,EAAQiH,wBAE1EjH,EAAOkI,EAAAA,EAAA,GAAQlI,GAAO,IAAEgB,yBAA0BgZ,IAE9CA,GAA4BA,IAA6Bla,KAAKN,iBAC9DM,KAAKgG,iBAAiBkU,GAI9Bla,KAAKgI,wBAAwBvB,EAAAA,iBAAiBkB,IAAKzH,GACnDF,KAAKuD,gCAKbmG,EAAuB,CACvB,GAAID,IAAYA,EAAQG,eAEpB,YADAb,EAAUc,MAAM,8BAIpB,GAAIJ,IAAYA,EAAQK,gBAEpB,YADAf,EAAUc,MAAM,4BAIpB,MAAME,EAAO3B,EAAA,GAA6BuB,GAC1C3J,KAAKwB,YAAc,IAAIwI,EAAAA,YACnBjB,EACAgB,EACAN,aAAO,EAAPA,EAASG,eACTH,aAAO,EAAPA,EAASQ,4BACTR,aAAO,EAAPA,EAASS,oBAKTlK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,QACzCL,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,cAExF1G,KAAKwB,YAAY8I,kBAAkBtK,KAAKR,MAAMsC,KAAKsD,4BAG7DrD,EAAAA,EAAAA,KACI,SAAAoI,EAAA,OACoD,QAAhDA,EAAAnK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAA8J,OAAA,EAAhDA,EAAkDC,cACjDpK,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,OAAO,IACzG3G,UAAW,IAAAsK,QACe,QAAtBA,EAAMrK,KAAKwB,mBAAW,IAAA6I,OAAA,EAAhBA,EAAkBC,kBAAkBtK,KAAKR,MAAMsC,KAAKsD,2BAA0B,KAI5FrD,EAAAA,EAAAA,KACI,SAAAwI,EAAA,OAAsD,QAAtDA,EAAMvK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAkK,OAAA,EAAhDA,EAAkDjF,cAAc,IACtEvF,gBACUC,KAAKmF,uBAAuB,UAIxCnF,KAAK6W,kBACf,CAEO9W,2BACsG,IAAAyK,EAIlGC,EAJHzK,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,OACzC,QAApD8D,EAAIxK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAmK,GAAhDA,EAAkDlF,sBAC5CtF,KAAKmF,wBAGC,QAAhBsF,EAAAzK,KAAKwB,mBAAW,IAAAiJ,GAAhBA,EAAkBC,oBAE1B,CAEOC,sBAAsBC,EAAkCC,GAC3D,OAAI7K,KAAK8H,QAAU+C,GAAa7K,KAAKR,MAAMsC,OAAS8I,EAAU9I,IAIlE,CAEOgJ,SAAM,IAAA2S,EACT,IAAKzd,KAAKib,WACN,OAAO,KAGX,MAAM,OAAEtX,EAAM,QAAEU,EAAO,WAAE0G,EAAU,UAAExI,GAAcvC,KAAKR,OAClD,cAAEke,EAAa,UAAEC,EAAS,eAAEC,GAAmBrb,GAC/C,cAAEsb,GAAkBla,EAGpBma,EAA6C9d,KAAK8H,MAAMyP,eACzDpO,QAAOkO,IAAMc,EAAAA,iBAAiBC,kBAAkBf,EAAED,WAClD9K,KAAI6K,IAAI,IAAA4G,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MAAK,CACVxI,OAA4B,QAAtBmI,EAAE5G,EAAKtE,SAASwL,cAAM,IAAAN,EAAAA,EAAI,GAChCjI,WAAY,CACRtM,eAAgBnF,EAAQkF,cAAcC,eACtCZ,UAAW,8DACXqN,QAAqB,QAAd+H,EAAE7G,EAAKC,eAAO,IAAA4G,OAAA,EAAZA,EAAcrV,KACvB2V,IAAkC,QAA/BL,EAAc,QAAdC,EAAE/G,EAAKC,eAAO,IAAA8G,OAAA,EAAZA,EAAcK,uBAAe,IAAAN,EAAAA,EAAI,GACtCO,aAAaC,EAAAA,EAAAA,qBAAgC,QAAbN,EAAChH,EAAKC,eAAO,IAAA+G,OAAA,EAAZA,EAAcO,OAAQra,EAAQkF,cAAcC,eAAe8O,aAC5FtD,aAAc3Q,EAAQC,QAAQ0Q,aAC9B6I,cAAeA,QAAAA,EAAiB1H,EAChCwI,oBAAqB,SAEzBhJ,SAAgC,QAAxByI,EAAEjH,EAAKtE,SAAS+L,gBAAQ,IAAAR,EAAAA,EAAI,EACvC,IAGCS,EAAWf,EAAUrN,OADV,EAC8BkN,EAAYC,EAErDkB,EAAkD,CACpDtK,gBAAiB,+BACjBC,UAAWqJ,EAAU3U,QAAOkO,IAAMc,EAAAA,iBAAiBC,kBAAkBf,KACrE3C,UAAW,KAAItT,EAAAA,EAAAA,QAAOyd,EAAUf,EAAUrN,WAC1CrD,MAAOsQ,EACPnb,UAAWvC,KAAKR,MAAM+C,WAGpBwc,EAAkCzf,EAAAA,cAACiV,EAAuBnI,OAAAC,OAAA,GAAKyS,KAE/D,aAAE7M,GAAiBjS,KAAKR,MAAMsC,KAC9Bkd,EAAyD,QAAtBvB,EAAGxL,EAAa5R,cAAM,IAAAod,GAAiE,QAAjEA,EAAnBA,EAAqB7O,MAAKuD,GAFhC,oEAE2CA,EAAQxJ,cAAuC,IAAA8U,OAAA,EAApFA,EACtCrL,UAmDN,OAAOrH,EAjDQ3C,EAAAA,EAAA,GACRpI,KAAKR,OAAK,IACbgH,iBAAkBxG,KAAKwG,iBACvB5D,gBAAiB5C,KAAK4C,gBACtBpC,iBAAkBR,KAAKQ,iBACvBmW,2BAA4B3W,KAAK2W,2BACjCjX,gBAAiBM,KAAKN,gBACtBY,kBAAmBN,KAAKM,kBACxB6B,kBAAmBnC,KAAKmC,kBACxBP,gBAAiB5B,KAAK4B,gBACtBiB,sBAAuB7C,KAAK6C,sBAC5BP,WAAYtC,KAAKsC,WACjB+D,SAAUrG,KAAKqG,SACfuC,UAAWjF,EAAOiF,UAClBoC,UAAW,CACPoG,cAAepR,KAAKwG,mBAAqBC,EAAAA,iBAAiBqJ,MAAQ9P,KAAK4C,gBACvEqI,iBAAkBjL,KAAKwG,mBAAqBC,EAAAA,iBAAiBqC,MAAQ9I,KAAKmC,kBAAkBsO,OAAS,EACrGvF,yBACIlL,KAAKwG,mBAAqBC,EAAAA,iBAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,iBAAiBC,QAErG+P,wBAAyB,CACrBrL,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAW,+BAAgC1H,EAAOiF,YAEjE4I,YAAaxR,KAAKyR,qBASlBwN,yBAA0BA,CAACnG,EAAkCN,EAA4BC,IACrFzY,KAAK6Y,qBAAqBC,EAAqBN,EAAeC,GAQlEyG,8BAA+BA,CAAC1G,EAA4BC,IACxDzY,KAAKoC,0BAA0BoW,EAAeC,GAClDlN,uBAAwBvL,KAAKoC,4BAC7B2c,eAAgBC,EAAsCD,OAAiBzd,EACvE6d,kBAAmBnf,KAAK6Y,yBAIhC,CAmNQpH,qBACJ,OAAIzR,KAAK4C,iBACEmJ,EAAAA,EAAAA,aAAY,CACf7L,QAASF,KAAK4C,gBACdzC,cAAeH,KAAKG,cAAcc,iBAAiBjB,KAAK4C,gBAAgB1B,0BAA4B,IACpGtB,gBAAiBI,KAAKJ,kBAIvB,IACX,CAkLQiJ,6BAA0B,IAAA8I,EAC9B,MAAM,QAAErN,GAAYtE,KAAKR,MAAM6E,QACzBoH,EAAwB,QAAlBkG,EAAGrN,EAAQmF,eAAO,IAAAkI,OAAA,EAAfA,EAAiB1H,4BAChCjK,KAAKN,gBAAkBM,KAAKsG,cAAcoF,0BAA0B1L,KAAKN,gBAAiBM,KAAKL,eAAgB8L,EACnH,CAkRsBwF,sBAAe,IAAAmO,EACjC,OAAsC,QAAtCA,EAAOpf,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA+e,OAAA,EAA/BA,EAAiCnO,eAC5C,IA7hCYtF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kDAuDXD,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,wCA0BPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,6CAuBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,2CAoBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,wCA+4BGF,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,oCA5hCPoC,GAAuB9K,EAAAA,EAAAA,IAAA,CAF5B2I,EAAAA,gBACAxI,EAAAA,IACK2K,GA8mCN,yGC7sCA,MAAM1K,EAA2CC,IAA6B,IAA5B,cAAEC,EAAa,MAAEC,GAAOF,EACtE,OACI1M,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKJ,GACLC,EAAMI,KAAKC,GACDjN,EAAAA,cAAAA,EAAAA,SAAA,KAAGiN,EAAKC,eAEhB,EAgBTuM,EAA+CtM,IAQhD,IARiD,cAClD4S,EAAa,UACb1R,EAAS,MACTzB,EAAK,iBACL8B,EAAgB,WAChBC,EAAU,mBACVC,EAAkB,aAClBC,GACH1B,EACG,OACInN,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKgT,GACL1R,EACAzB,EAAMI,KAAKC,IACR,MAAM+S,EAAa/S,EAAK+S,WACxB,OACIhgB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKiT,EAAU,CAAE1S,IAAKL,EAAKK,MAC3BL,EAAKgC,MACNjP,EAAAA,cAACyM,EAAWK,OAAAC,OAAA,GAAKE,EAAKM,YACnB,IAGdmB,GAAoBC,EACpBC,GAAsBC,EACpB,EAkBT9L,EAAqDkL,IAUtD,IAVuD,YACxDQ,EAAW,QACXnK,EAAO,MACPsI,EAAK,SACL7F,EAAQ,MACRwD,EAAK,iBACLmE,EAAgB,WAChBC,EAAU,mBACVC,EAAkB,aAClBC,GACHZ,EACG,OACIjO,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK0B,GACLnK,EACAsI,EAAMI,KAAKC,IACR,MAAM,YAAE6B,EAAW,IAAExB,EAAG,MAAEyB,EAAK,MAAEC,EAAK,MAAEC,GAAUhC,EAClD,OACIjN,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+B,EAAW,CAAExB,IAAKA,IACvByB,EACAC,EACAC,EACE,IAGdlI,GACG/G,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKxC,EAAM2E,cACX3E,EAAMuD,MACNvD,EAAMwD,SAGdW,GAAoBC,EACpBC,GAAsBC,EACpB,EAsBf,EAbiF3O,IAC7E,MAAM,wBAAEiX,EAAuB,UAAEzL,EAAS,YAAEwG,EAAW,kBAAE2N,EAAiB,uBAAE5T,EAAsB,eAAEwT,GAAmBvf,EAEvH,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKoK,GACPsI,EACA/T,EAAUoG,eAAiB9R,EAAAA,cAACyM,EAAWK,OAAAC,OAAA,GAAKmF,IAC5CxG,EAAUC,kBAAoB3L,EAAAA,cAACyZ,EAAa3M,OAAAC,OAAA,GAAK8S,IACjDnU,EAAUE,0BAA4B5L,EAAAA,cAAC+C,EAAgB+J,OAAAC,OAAA,GAAKd,IACxD,kNCzGjB,SAASgU,EAA0Chd,GAC/C,MAAO,CACHid,yBAA0Bjd,EAAUid,yBAEpCC,wBAAyBld,EAAUkd,wBACnCC,4BAA6Bnd,EAAUmd,4BAEvCC,gCAAiCpd,EAAUod,gCAC3CC,iCAAkCrd,EAAUqd,iCAC5CC,sCAAuCtd,EAAUsd,sCAEjDC,oBAAqBvd,EAAUud,oBAC/BC,wBAAyBxd,EAAUwd,wBACnCC,cAAezd,EAAUyd,cAEjC,CAOA,SAASC,EAAyC1d,GAC9C,MAAO,CACH2d,yBAA0B3d,EAAU4d,0BACpCC,wBAAyB7d,EAAU8d,mBACnCC,2BAA4B/d,EAAU+d,2BACtCC,yBAA0Bhe,EAAUie,+BAEpCC,yBAA0Ble,EAAUke,yBAEpCC,yBAA0Bne,EAAUoe,8BACpCC,+BAAgCre,EAAUse,yCAElD,CAOA,SAASC,EAAgDve,GACrD,MAAO,CACHwe,4BAA6Bxe,EAAUwe,4BACvCC,2BAA4Bze,EAAUye,2BACtCC,0CAA2C1e,EAAU0e,0CACrDC,6CAA8C3e,EAAU2e,6CACxDC,0CAA2C5e,EAAU4e,0CACrDC,cAAe7e,EAAU8e,UACzBC,kBAAmB/e,EAAU+e,kBAC7BC,iBAAkBhf,EAAUgf,iBAEpC,CAOA,SAASC,EAA+Djf,GAEpE,MAAO,CACHkf,yBAA0Blf,EAAUkf,yBACpCC,8BAA+Bnf,EAAUmf,8BACzCC,yBAA0Bpf,EAAUof,yBACpCC,+BAAgCrf,EAAUqf,+BAElD,CASA,MAAMC,EAA6BA,CAACC,EAChCvf,EAAmC6U,IAAwC/W,IAC3EyhB,EAAUC,iBAAiB,CACvBC,UAAW,iBACXC,gBAAmC,sBAAlB5hB,EAAOmP,QAAiC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC3I,EC9DC,IAAKC,GAAZ,SAAYA,GACVA,EAAAA,EAAA,cACD,CAFD,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBR,GAAiCS,IACpDT,EAAUU,gBACLV,EAAUU,eAAeD,GAyK9BE,EAA2BA,CAACjjB,EACAsI,EAAqBga,KACrD,MAAM1K,EAAU5X,EAAMsC,KAAKsV,QAAQ/W,OACnC,IAAKb,EAAMkjB,qBAAuBtL,EAChC,OAAO,KAGT,MAAMuL,EDlHsCC,EAACpjB,EAC3CsI,EAAqBga,EAA6B1K,KAElD,MAAM,GAEFlB,EAAE,SACF2M,EAAQ,QACRxe,EACAvC,MACIghB,gBAAkBziB,OAAQyiB,GAC1BC,qBAAuB1iB,OAAQ0iB,IAClC,UACDxgB,GACA/C,GAGA,SACImW,GACA7N,EAIR,OAAOgb,GACHxjB,EAAAA,cAAC0jB,EAAAA,4BAA2B,CACxBpa,UAAU,gCACVqa,6BAA8B1gB,EAAU0gB,6BACxCC,gCAAiC3gB,EAAU2gB,gCAC3CC,kCAAmC5D,EAA0Chd,GAC7E6gB,mCAAoCnD,EAAyC1d,GAC7E8gB,wCAAyCvC,EAAgDve,GACzF+gB,uDAAwD9B,EAA+Djf,GACvHT,KAAM,CAAEsV,UAASzB,WAAUmN,iBAAgBC,uBAC3C1e,QAASA,EACT6R,GAAIA,EACJ2M,SAAUA,EACVU,QAAS1B,EAA2BC,EAAWvf,EAAW6U,GAC1DoM,8BAA+B1b,EAAM2b,sBACrCC,mBAAmB,EACnBC,gBAlBiB,GAoBxB,EC0EyBf,CAA+BpjB,EAAOsI,EAAOga,EAAW1K,GAEpF,OACE9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMkjB,mBAAmBkB,gBAChCpkB,EAAMkjB,mBAAmBmB,WACzBlB,EACI,EAWLmB,EAAwBA,CAAChC,EACAvf,EAAmC6U,IAAwC/W,IACxGyhB,EAAUC,iBAAiB,CACzBC,UAAW,WACXC,gBAAmC,qBAAlB5hB,EAAOmP,QAAgC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GACxI,EA8CE2B,EAAsBA,CAACvkB,EACAsI,EAAqBga,KAChD,MAAM1K,EAAU5X,EAAMsC,KAAKsV,QAAQ/W,OACnC,IAAKb,EAAMwkB,gBAAkB5M,EAC3B,OAAO,KAGT,MAAM6M,EA1C0BC,EAAC1kB,EACAsI,EAAqBga,EAA6B1K,KACnF,MAAM,QAAE/S,EAAO,UAAE9B,GAAc/C,EACzB2kB,EAAY3kB,EAAMsC,KAAKqiB,UAAU9jB,OAEvC,OACEf,EAAAA,cAAC8kB,EAAAA,uBAAsB,CACrBxb,UAAU,gCACVyb,wBAAyB9hB,EAAU8hB,wBACnCC,6BAA8B/hB,EAAU+hB,6BACxCC,qBAAsBhiB,EAAUgiB,qBAChCC,2BAA4BjiB,EAAUiiB,2BACtCC,uBAAwBliB,EAAUkiB,uBAClCC,4BAA6BniB,EAAUmiB,4BACvCC,eAAgBpiB,EAAUoiB,eAC1B7iB,KAAM,CAAEsV,UAAS+M,aACjB9f,QAASA,EACTugB,SAAS,SACT1O,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChBU,QAASO,EAAsBhC,EAAWvf,EAAW6U,GACrDyN,mBAAoB/c,EAAMgd,gBAC1BnB,gBAlB4B,EAmB5BD,mBAAmB,GACnB,EAkBmBQ,CAA0B1kB,EAAOsI,EAAOga,EAAW1K,GAC1E,OACE9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMwkB,cAAcJ,gBAC3BpkB,EAAMwkB,cAAcH,WACpBI,EACI,EASLc,EAAyBC,IAE7B,MAAM,eAAEpB,EAAc,OAAEqB,EAAM,MAAE1W,GAAUyW,EAE1C,OACE1lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPqB,EACA1W,EACI,EA0BL2W,EAA2BC,IAC/B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACE7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACRtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACPxhB,GAEFyhB,EACAJ,EACI,EA2QX,EAnPoFzlB,IAAQ,IAAA8lB,EAAAC,EAAAC,EAE1F,MAAM,YACJC,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlD,EAAkB,cAClBsB,EAAa,UACb6B,EAAS,YACTrZ,EAAW,YACXsZ,EAAW,SACXnQ,EAAQ,MACRoQ,EAAK,MACL3Y,EAAK,OACL4Y,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IAEtBC,EAAG,cACHC,EAAa,UACbxE,EAAS,MACTha,EAAK,UACLvF,EACAA,WAAW,mBACTgkB,EAAkB,uBAClBC,GACD,uBACDC,EAAsB,iBACtBxjB,EACAU,QAAQ,+BACN+iB,EAA8B,6BAC9BC,EAA4B,uBAC5BC,GAEFviB,SACEC,SACEuiB,MAAM,UAAEC,EAAS,gBAAEC,KAGvBC,KACErjB,OAAQsjB,IAERznB,EAEJ,IAAI0nB,EAAkB1nB,EAAM+C,UAAU2kB,QACtCA,GAAoC,QAA7B5B,EAAI9lB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAilB,OAAA,EAAzBA,EAA2B5G,OACtC,MAAMyI,EAAwF,QAAtE5B,EAA2B/lB,EAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAklB,OAAA,EAA3CA,EAA6C6B,eAC1FC,EAAmBF,SAAAA,EAAoBG,QAAUH,EAAmBG,QAAU,GAC9EC,EAAqBJ,SAAAA,EAAoBK,UAAYL,EAAmBK,UAAY,GACpFpQ,GAAU5X,EAAMsC,KAAKsV,QAAQ/W,QAE5BonB,GAAcC,IAAmBpoB,EAAAA,SAAuB,KACxDqoB,GAAeC,IAAoBtoB,EAAAA,UAAwB,IAC3DuoB,GAA2BC,IAAgCxoB,EAAAA,UAAwB,IACnFyoB,GAAqBC,IAA0B1oB,EAAAA,SAAkC,IAaxFA,EAAAA,WAAgB,KAXIS,WAA0B,IAAAkoB,EAC5C,GAAIJ,GACF,OAEF,MAAMK,GAAkC,QAAzBD,EAAAzoB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAA4nB,OAAA,EAAzBA,EAA2BvJ,SAAU,GAC9CyJ,QAAaC,EAAAA,EAAAA,IAA6B,CAAEC,cAAe7oB,EAAM6E,QAAQkF,eAAiB,CAAC2e,IACjGI,QAAQC,IAAIJ,GACZL,IAA6B,GAC7BE,GAAuBG,EAAK,EAIvBK,EAAa,GACjB,CAAChpB,EAAMsC,KAAKsV,UAEf,MAAMqR,GAAwB9B,GAAgCC,EAmBxD8B,GAAeppB,EAAAA,aAAkBS,UAAW,IAAA4oB,EAChD,MAAMpa,EAAQ,IAAIqa,EAAAA,qCAA8D,QAA1BD,EAACnpB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAsoB,OAAA,EAAzBA,EAA2B9Z,SAAUwT,EAAgBwG,KAC1GxG,EAAgBwG,KAAMxG,EAAgBwG,KAAMxG,EAAgBwG,MAAM,SAmB9DC,EAAAA,EAAAA,iCAAgCva,EAAO/O,EAAM6E,QAAQkF,eAAeyS,OAAOnS,IAC/ErK,EAAMuJ,UAAUc,MAAMA,EAAMwD,QAAQ,IACnCjH,MAAKF,IACN,GAAIA,GAAYsP,EAAAA,gBAAgBC,YAAYvP,GAAW,KAAA6iB,EACrD,MAAMC,EAAoBtkB,IAA+B,IAAAukB,EAAA,OAA8B,QAAzBA,EAAAvkB,EAAMwkB,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB/B,CAAgB,EACtIgC,EAAkCnjB,EAASiD,OAAO6f,GAClDM,EAA6B9T,EAAAA,gBAAgBC,YAAY4T,GAC7DA,EAAgChH,EAAgBwG,WAASvnB,EACrDioB,EA1CoBC,KAC9B,GAAIA,GAAyBhU,EAAAA,gBAAgBC,YAAY+T,EAAsBC,6BAC7E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,KAAAE,EAC3F,IAA6C,QAAzCA,EAAAH,EAAsBN,2BAAmB,IAAAS,GAAiB,QAAjBA,EAAzCA,EAA2CR,uBAAe,IAAAQ,OAAA,EAA1DA,EAA4DC,uBAC9DF,EAA4BG,iBAC5B,OAAOH,EAA4BI,gBAKzB,EAgCiCC,CAAuBT,GAE9DU,GAtBgBC,EAqBaX,SAA+C,QAArBP,EAA1BO,EAA4BJ,2BAAmB,IAAAH,OAAA,EAA/CA,EAAiDmB,oBApBjFjD,EAAUkD,oBAIX3U,EAAAA,gBAAgBC,YAAYwU,IACvBA,EAAmB5H,EAAgBwG,MAAMuB,kBAAqB/H,EAAgBwG,MAgBnDrpB,EAAM+C,UAAU8nB,YAAc7qB,EAAM+C,UAAU+nB,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGppB,EAAAA,EAAAA,QAAO5B,EAAM+C,UAAUkoB,iCAAkClD,MAAuBgD,IAC1H7C,GAAgB8C,GAzBMP,SA6B1BrC,IAAiB,EAAM,GACtB,CACwB,QADxBpC,EACDhmB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAmlB,OAAA,EAAzBA,EAA2B3W,SAAUoY,EAAUkD,iBAAkB9C,EAAkBE,EAAoB/nB,EAAM6E,QAAQkF,cACrH/J,EAAM+C,UAAUkoB,iCAAkCjrB,EAAM+C,UAAU8nB,YAAa7qB,EAAM+C,UAAU+nB,eAAgB9qB,EAAMuJ,YAGvHzJ,EAAAA,WAAgB,KACVE,EAAMmE,OAAO+mB,0BACfhC,KAAe1M,OAAOnS,IACpBrK,EAAMuJ,UAAUc,MAAMA,EAAMwD,QAAQ,MAGvC,CAACqb,GAAcf,GAAenoB,EAAMuJ,UAAWvJ,EAAMmE,OAAO+mB,4BAE/D3oB,EAAAA,EAAAA,KACE,SAAA4oB,EAAA,OAAiD,QAAjDA,EAAMnrB,EAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAsqB,OAAA,EAA3CA,EAA6CC,uBAAuB,IAC1E,KACEhD,IAAiB,EAAK,IAI1BU,QAAQC,IAAI/oB,GAsBZ,OACEF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKoZ,GACVnmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GACPlmB,EAAMqrB,cAETvrB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACPvY,EACD9N,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,+BACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,wCACZse,GAEFlB,GAEDe,IAAoBL,EACpBpnB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,6BACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,kCACZpJ,EAAM+C,UAAUuoB,WAElB/E,IA1gBYgF,GA4gBGjE,EA5gBWjjB,GA4gBA0iB,EA1gBnCjnB,EAAAA,cAAA,KAAGsJ,UAAU,yBACXtJ,EAAAA,cAAA,KAAG0rB,KAAMD,IAAMlnB,MA2gBZgiB,GArNgBA,KACvB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OACEvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPqH,EAAU3e,IAAI4Y,GACV,EA+MWgG,CAAgBrF,GAC7BM,GAnciBA,KACxB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACE7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACRtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACPxhB,GAEF2K,EACI,EA0bY4c,CAAiBhF,GAChC7mB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,yCACZ+M,GA5fUyV,EACrBC,EACAvJ,EACAtiB,EACAsI,EACAwjB,EACA7E,EAEAJ,EACApjB,EACAqjB,KAGA,MAAM,eAAE1C,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,GAAWoG,GAE3D,UACJ9oB,GACE/C,GAGF,SACEmW,GACE7N,EAEN,OACExI,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACRtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACPxhB,EACAqhB,GAGH3lB,EAAAA,cAACisB,EAAAA,oBAAmB,CAClBrV,GAAG,oCACHmQ,IAAKA,EACLmF,aAAc7V,EACd8V,SAAUnJ,EAAgBR,GAC1B4J,uBAAwBnpB,EAAUmpB,uBAClCC,yBAA0BppB,EAAUopB,yBACpCC,yBAA0BrpB,EAAUqpB,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpC7oB,iBAAkBA,IAEnBqjB,EACAG,EACI,EA+cc2E,CAAezV,EAAUmM,EAAWtiB,EAAOsI,EAAOvF,EAAWkkB,EAAwBJ,EAAKpjB,EAAkBqjB,GACxH9mB,EAAMusB,mBAGVvsB,EAAMmE,OAAO+mB,0BAA4BrD,GA9CL2E,MAA8B,IAAAC,EAAAC,EAEvE,GAD6B1W,EAAAA,gBAAgBC,YAAqC,QAA1BwW,EAACzsB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAA4rB,OAAA,EAAzBA,EAA2BE,kBACT7qB,KAAtB,QAAzB4qB,EAAA1sB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAA6rB,OAAA,EAAzBA,EAA2BE,iBACrD,OAOF,OACE9sB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAN4B,CACjCzD,UAAW,0CACX7E,IAAK,SAKF0jB,GACI,EAiCyDuE,GAC7D/F,EAzbeoG,EAACzG,EAAsCxO,EAAoC2Q,EAAwCuE,KAEzI,MAAM,eAAE1I,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAE/C,GAAIxO,EAAS,KAAAoV,EAAAC,EACX,MAAMC,GAAmBC,EAAAA,EAAAA,GAA+BvV,EAAQ2F,oBAAqB6P,EAAAA,EAAgBC,UAAWC,EAAAA,EAA0BC,QACpIC,EAAmBN,EAAmBA,EAAiBrT,WAAa,IACpE4T,EAAmBC,SAASF,EAAkB,IACpD,IAAIG,EACJpF,EAAoBzb,KAAI8gB,IAAK,IAAAC,EAC3B,MAAMC,EAAyB,QAAbD,EAAGD,EAAGG,eAAO,IAAAF,OAAA,EAAVA,EAAYze,MAAK4e,GAAKA,EAAE9O,SAAWtH,EAAQsH,QAAqB,QAAX8O,EAAEC,OACxEH,IACFH,EAAaG,MAIjB,MACMI,EAAeT,IADW,QAAVT,EAAAW,SAAU,IAAAX,GAAVA,EAAYmB,eAAe,6BAA8DrsB,KAA1B,QAAVmrB,EAAAU,SAAU,IAAAV,OAAA,EAAVA,EAAYmB,qBAAoCT,EAAWS,oBAAsB,GAI5J,OACEtuB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPC,EACC6J,EACApuB,EAAAA,cAAA,OAAKsJ,UAAU,6BAA6B0jB,GAD7BC,GAMvB,OAAOjtB,EAAAA,cAAAA,EAAAA,SAAA,KAAK,EA6ZL+sB,CAAgBzG,EAAWxO,GAAS2Q,GAAqBvB,GACzDV,GAtZkBA,KAEzB,MAAM,eACJlC,EAAc,cACdiK,EAAa,QACbjqB,EAAO,YACP4I,EAAW,OACXyY,EAAM,OACNsH,EAAM,MACNuB,EAAK,wBACLC,GACEjI,EAEJ,OACExmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPiK,EACAjqB,EACAmqB,EACAvhB,EACAyY,EACAsH,EACAuB,EACI,EAgYaE,CAAkBlI,GACjC9B,GAAiBD,EAAoBvkB,EAAOsI,EAAOga,GACnDY,GAAsBD,EAAyBjjB,EAAOsI,EAAOga,GAC7DgE,SAAAA,EAAaiI,wBAA0BzuB,EAAAA,cAAA,OAAKsJ,UAAU,8BACpDkd,EAAYiI,yBACN,KAzQWE,KAC1B,GAAKA,GAAsC,IAAvBA,EAAYxd,OAIhC,OACEnR,EAAAA,cAAAA,EAAAA,SAAA,KACG2uB,EAAY,GACZ,EAkQEC,CAAmB1uB,EAAM2uB,OAAS3uB,EAAM2uB,MAAMF,aAC9CxF,GACCnpB,EAAAA,cAACA,EAAAA,SAAc,KACbA,EAAAA,cAAA,OAAKsJ,UAAU,gCACZpJ,EAAM+C,UAAU6rB,UAEnB9uB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gCACbsd,GAAmBnB,EAAsBmB,GACzCE,GAA0BrB,EAAsBqB,KAGnD,KAEJ9mB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,mCACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,wCACZpJ,EAAM+C,UAAU8rB,iBAElB7hB,GAEFgJ,EAAAA,gBAAgBC,YAAYjW,EAAM2uB,MAAMG,sBACvChvB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACbpJ,EAAM2uB,MAAMG,qBAAqB,IAC1B,OArjBIC,IAACxD,GAAclnB,EAujB1B,2uBC5lBb,MAmBMigB,EAAwBA,CAAChC,EAC3Bvf,EAAmC6U,IAAwC/W,IAC3EyhB,SAAAA,EAAWC,iBAAiB,CACxBC,UAAW,WACXC,gBAAmC,qBAAlB5hB,EAAOmP,QAAgC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC1I,EA6CA2B,EAAsBA,CAACvkB,EACzBsI,EAAqBga,KAA+D,IAAA0M,EACpF,MAAMpX,EAA8B,QAAvBoX,EAAGhvB,EAAMivB,sBAAc,IAAAD,OAAA,EAApBA,EAAsBpX,QACtC,IAAK5X,EAAMwkB,gBAAkB5M,EACzB,OAAO,KAGX,MAAM6M,EAzCwBC,EAAC1kB,EAC/BsI,EAAqBga,EAAyC1K,KAC9D,MAAM,QAAE/S,EAAO,UAAE9B,GAAc/C,EACzB2kB,EAAY3kB,EAAMsC,KAAKqiB,UAAU9jB,OAEvC,OACIf,EAAAA,cAAC8kB,EAAAA,uBAAsB,CACnBxb,UAAU,gCACVyb,wBAAyB9hB,EAAU8hB,wBACnCC,6BAA8B/hB,EAAU+hB,6BACxCC,qBAAsBhiB,EAAUgiB,qBAChCC,2BAA4BjiB,EAAUiiB,2BACtCC,uBAAwBliB,EAAUkiB,uBAClCC,4BAA6BniB,EAAUmiB,4BACvCC,eAAgBpiB,EAAUoiB,eAC1B7iB,KAAM,CAAEsV,UAAS+M,aACjB9f,QAASA,EACT6R,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChBU,QAASO,EAAsBhC,EAAWvf,EAAW6U,GACrDyN,mBAAoB/c,EAAMgd,gBAC1BnB,gBAjBwB,EAkBxBD,mBAAmB,GACrB,EAkBiBQ,CAA0B1kB,EAAOsI,EAAOga,EAAW1K,GAC1E,OACI9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMwkB,cAAcJ,gBACzBpkB,EAAMwkB,cAAcH,WACpBI,EACE,EAqDTiB,EAA2BC,IAC7B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACI7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,GAEJyhB,EACAJ,EACE,EAwBTyJ,EAAqBlvB,IACvB,MAAM,MAAEumB,EAAK,WAAEI,EAAU,SAAExQ,EAAQ,eAAEsQ,EAAc,uBAAEQ,EAAsB,QAAEkI,EAAO,0BAEhFhJ,EAAyB,2BAAED,EAA0B,cAAEkJ,EAAa,cAAE5K,EAAa,UAAE6B,EAAS,UAAE/D,EAAS,MAAEha,GAAUtI,EACzH,OAAImvB,EAEIrvB,EAAAA,cAAAA,EAAAA,SAAA,KACKqvB,GAMTrvB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GACNpmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuiB,KAEdtvB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACNrmB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gCACZtJ,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACXpJ,EAAM+C,UAAUuoB,UAChB/E,GAEJ/B,GAAiBD,EAAoBvkB,EAAOsI,EAAOga,IAEvD+D,GAxCQA,KACrB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OACIvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLqH,EAAU3e,IAAI4Y,GACZ,EAkCegG,CAAgBrF,GAC7BM,GA/ESA,KAEtB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACI7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,GAEJ2K,EACE,EAqEgB4c,CAAiBhF,GAC/BxQ,GAvGMyV,EAACzV,EAA2C8Q,EAAyCjnB,KAExG,MAAM,eAAEokB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,EAAK,OAAE0W,GAAWtP,GAClE,cAAE2Q,GAAkB9mB,EAE1B,OACIF,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,GAEJ2K,EACA+X,EACAG,EACAxB,EACE,EAyFcmG,CAAezV,EAAU8Q,EAAwBjnB,GAC7DymB,GAEN,EAUL4I,EAAwBrvB,IAAuE,IAAAsvB,EAAAC,EAEjG,MAAM,eAAEC,EAAc,qBAAEC,EAAoB,qBAAEC,EAAoB,mBAAEC,EAAkB,mBAAEC,EAAkB,UAAExJ,EAAS,mBACjHyJ,EAAkB,iBAAEC,GAAqB9vB,EAE7C,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAK2iB,GACR1vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK4iB,GACLE,EACD7vB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,0BACXpJ,EAAM4N,MACL5N,EAAMmvB,SAAYY,EAAAA,iBAAiBC,cAAsC,QAAzBV,EAACtvB,EAAMsI,MAAM2nB,oBAAY,IAAAX,OAAA,EAAxBA,EAA0BpQ,QAGnE,GAH6Epf,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,2BAClGpJ,EAAM+C,UAAU2kB,QACQ,QADD6H,EACvBvvB,EAAMsI,MAAM2nB,oBAAY,IAAAV,OAAA,EAAxBA,EAA0BrQ,QAE9Blf,EAAMwmB,SAGf1mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+iB,GACLV,EAAkBlvB,IAEvBF,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK6iB,GACN5vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKgjB,GACLzJ,GAAa0J,EACb1J,GAxOIA,KAErB,MAAM,eAAEhC,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAE/C,OACItmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAgOmBF,CAAgBzG,KAGjC,EASJ8J,EACgDlwB,IACzD,MAAM,UAAEmwB,EAAS,gBAAEC,EAAe,YAAEC,GAAgBrwB,EAC9CswB,EAAqB1nB,EAAAA,EAAA,GAAsBunB,GAAS,IAAEviB,MAAO5N,EAAM+C,UAAUwtB,sBACnF,OACIzwB,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKyjB,GACPF,EACAC,GAAehB,EAAqBrvB,GAChC,EAIjB,iCC3RO,IAAKotB,mBAAZ,SAAYA,GACVA,EAAA,kCACAA,EAAA,sCACAA,EAAA,qBACD,CAJD,CAAYA,IAAAA,EAAe,mLC6B3B,SAASrN,EAA0Chd,GAC/C,MAAO,CACHid,yBAA0Bjd,EAAUid,yBAEpCC,wBAAyBld,EAAUkd,wBACnCC,4BAA6Bnd,EAAUmd,4BAEvCC,gCAAiCpd,EAAUod,gCAC3CC,iCAAkCrd,EAAUqd,iCAC5CC,sCAAuCtd,EAAUsd,sCAEjDC,oBAAqBvd,EAAUud,oBAC/BC,wBAAyBxd,EAAUwd,wBACnCC,cAAezd,EAAUyd,cAEjC,CAOA,SAASC,EAAyC1d,GAC9C,MAAO,CACH2d,yBAA0B3d,EAAU4d,0BACpCC,wBAAyB7d,EAAU8d,mBACnCC,2BAA4B/d,EAAU+d,2BACtCC,yBAA0Bhe,EAAUie,+BAEpCC,yBAA0Ble,EAAUke,yBAEpCC,yBAA0Bne,EAAUoe,8BACpCC,+BAAgCre,EAAUse,yCAElD,CAOA,SAASC,EAAgDve,GACrD,MAAO,CACHwe,4BAA6Bxe,EAAUwe,4BACvCC,2BAA4Bze,EAAUye,2BACtCC,0CAA2C1e,EAAU0e,0CACrDC,6CAA8C3e,EAAU2e,6CACxDC,0CAA2C5e,EAAU4e,0CACrDC,cAAe7e,EAAU8e,UACzBC,kBAAmB/e,EAAU+e,kBAC7BC,iBAAkBhf,EAAUgf,iBAEpC,CAOA,SAASC,EAA+Djf,GAEpE,MAAO,CACHkf,yBAA0Blf,EAAUkf,yBACpCC,8BAA+Bnf,EAAUmf,8BACzCC,yBAA0Bpf,EAAUof,yBACpCC,+BAAgCrf,EAAUqf,+BAElD,CASA,MAAMC,EAA6BA,CAACC,EAChCvf,EAAmC6U,IAAwC/W,IAC3EyhB,EAAUC,iBAAiB,CACvBC,UAAW,iBACXC,gBAAmC,sBAAlB5hB,EAAOmP,QAAiC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC3I,MC1DMC,sCAAZ,SAAYA,GACVA,EAAAA,EAAA,cACD,CAFD,CAAYA,IAAAA,EAAe,KAe3B,MAAMC,EAAmBR,GAAiCS,IACpDT,EAAUU,gBACLV,EAAUU,eAAeD,GAuJ9BE,EAA2BA,CAACjjB,EAChCsI,EAAqBga,KACrB,MAAM1K,EAAU5X,EAAMsC,KAAKsV,QAAQ/W,OACnC,IAAKb,EAAMkjB,qBAAuBtL,EAChC,OAAO,KAGT,MAAMuL,ED1GsCC,EAACpjB,EAC3CsI,EAAqBga,EAA6B1K,KAElD,MAAM,GAEFlB,EAAE,SACF2M,EAAQ,QACRxe,EACAvC,MACIghB,gBAAkBziB,OAAQyiB,GAC1BC,qBAAuB1iB,OAAQ0iB,IAClC,UACDxgB,GACA/C,GAGA,SACImW,GACA7N,EAIR,OAAOgb,GACHxjB,EAAAA,cAAC0jB,EAAAA,4BAA2B,CACxBpa,UAAU,gCACVqa,6BAA8B1gB,EAAU0gB,6BACxCC,gCAAiC3gB,EAAU2gB,gCAC3CC,kCAAmC5D,EAA0Chd,GAC7E6gB,mCAAoCnD,EAAyC1d,GAC7E8gB,wCAAyCvC,EAAgDve,GACzF+gB,uDAAwD9B,EAA+Djf,GACvHT,KAAM,CAAEsV,UAASzB,WAAUmN,iBAAgBC,uBAC3C1e,QAASA,EACT6R,GAAIA,EACJ2M,SAAUA,EACVU,QAAS1B,EAA2BC,EAAWvf,EAAW6U,GAC1DoM,8BAA+B1b,EAAM2b,sBACrCC,mBAAmB,EACnBC,gBAlBiB,GAoBxB,ECkEyBf,CAA+BpjB,EAAOsI,EAAOga,EAAW1K,GAEpF,OACE9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMkjB,mBAAmBkB,gBAChCpkB,EAAMkjB,mBAAmBmB,WACzBlB,EACI,EAYLmB,EAAwBA,CAAChC,EAC7Bvf,EAAmC6U,IAAwC/W,IACzEyhB,EAAUC,iBAAiB,CACzBC,UAAW,WACXC,gBAAmC,qBAAlB5hB,EAAOmP,QAAgC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GACxI,EA8CA2B,EAAsBA,CAACvkB,EAC3BsI,EAAqBga,KACrB,MAAM1K,EAAU5X,EAAMsC,KAAKsV,QAAQ/W,OACnC,IAAKb,EAAMwkB,gBAAkB5M,EAC3B,OAAO,KAGT,MAAM6M,EA1C0BC,EAAC1kB,EACjCsI,EAAqBga,EAA6B1K,KAClD,MAAM,QAAE/S,EAAO,UAAE9B,GAAc/C,EACzB2kB,EAAY3kB,EAAMsC,KAAKqiB,UAAU9jB,OAEvC,OACEf,EAAAA,cAAC8kB,EAAAA,uBAAsB,CACrBxb,UAAU,gCACVyb,wBAAyB9hB,EAAU8hB,wBACnCC,6BAA8B/hB,EAAU+hB,6BACxCC,qBAAsBhiB,EAAUgiB,qBAChCC,2BAA4BjiB,EAAUiiB,2BACtCC,uBAAwBliB,EAAUkiB,uBAClCC,4BAA6BniB,EAAUmiB,4BACvCC,eAAgBpiB,EAAUoiB,eAC1B7iB,KAAM,CAAEsV,UAAS+M,aACjB9f,QAASA,EACTugB,SAAS,SACT1O,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChBU,QAASO,EAAsBhC,EAAWvf,EAAW6U,GACrDyN,mBAAoB/c,EAAMgd,gBAC1BnB,gBAlB4B,EAmB5BD,mBAAmB,GACnB,EAkBmBQ,CAA0B1kB,EAAOsI,EAAOga,EAAW1K,GAC1E,OACE9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMwkB,cAAcJ,gBAC3BpkB,EAAMwkB,cAAcH,WACpBI,EACI,EASLc,EAAyBC,IAE7B,MAAM,eAAEpB,EAAc,OAAEqB,EAAM,MAAE1W,GAAUyW,EAE1C,OACE1lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPqB,EACA1W,EACI,EA0BL2W,EAA2BC,IAC/B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACE7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACRtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACPxhB,GAEFyhB,EACAJ,EACI,EAmYL0H,EAAiCA,CACrC7P,EACAlQ,EACAojB,KACE,IAAAC,EACF,MAAMjT,EAAWF,SAAoC,QAA1BmT,EAAVnT,EAAYlO,MAAK4e,GAAKA,EAAEvQ,MAAQrQ,WAAI,IAAAqjB,OAAA,EAApCA,EAAsC/S,MAIvD,OADYF,EAAWA,EAASgT,GAAa,IACnC,EAGZ,EAvX4FxwB,IAAQ,IAAA8lB,EAAAC,EAAAoD,EAAAuH,EAElG,MAAM,YACJzK,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlD,EAAkB,cAClBsB,EAAa,UACb6B,EAAS,YAETC,EAAW,SACXnQ,EAAQ,MACRoQ,EAAK,MACL3Y,EAAK,OACL4Y,EAAM,gBAENE,EAAe,WACfC,EAAU,uBACVC,EAAsB,IAEtBC,EAAG,cACHC,EAAa,UACbxE,EAAS,MACTha,EAAK,UACLvF,EACAA,WAAW,mBACTgkB,EAAkB,kBAClB4J,EAAiB,uBACjBC,GAEFtuB,MAAM,QACJsV,EAAO,oBACPiZ,GACD,uBACD5J,EAAsB,iBACtBxjB,EACAU,QAAQ,+BACN+iB,EAA8B,6BAC9BC,EAA4B,uBAC5BC,GAEFviB,SACEC,SACEuiB,MAAM,UAAEC,EAAS,gBAAEC,KAGvBC,KACErjB,OAAQsjB,IAERznB,EACJ,IAAI0nB,GAAkB1nB,EAAM+C,UAAU2kB,QACtCA,IAAoC,QAA7B5B,EAAI9lB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAilB,OAAA,EAAzBA,EAA2B5G,OACtC,MAAMyI,GAAwF,QAAtE5B,EAA2B/lB,EAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAklB,OAAA,EAA3CA,EAA6C6B,eAC1FC,GAAmBF,UAAAA,GAAoBG,QAAUH,GAAmBG,QAAU,GAC9EC,GAAqBJ,UAAAA,GAAoBK,UAAYL,GAAmBK,UAAY,IAEnFC,GAAcC,IAAmBpoB,EAAAA,SAAuB,KACxDqoB,GAAeC,IAAoBtoB,EAAAA,UAAwB,GAE5DmpB,GAAwB9B,GAAgCC,GAEvD0J,GAAYC,IAAiBjxB,EAAAA,YAC7BkxB,GAAoBC,IAAyBnxB,EAAAA,UAAwB,GA0B5EA,EAAAA,WAAgB,KACVynB,GAzBwBhnB,WAA0B,IAAA2wB,EAEtD,MAAMxI,SAAgB9Q,GAASsH,OAE/B,IAAKwJ,EACH,OAEF,MAAMvV,EAAOnT,EAAMsC,KAAK6Q,KAClBpE,EAAQ,IAAIoiB,EAAAA,2BAA2B,CAACzI,IAAS,GAAOvV,SAAY,QAAR+d,EAAJ/d,EAAMtS,cAAM,IAAAqwB,GAAM,QAANA,EAAZA,EAAc/d,YAAI,IAAA+d,OAAA,EAAlBA,EAAoBE,KAAM,GAAI,KAAM,KAAM,aAC1EC,EAAAA,EAAAA,SAA4BtiB,EAAO/O,EAAM6E,QAAQkF,gBAE/DpI,SAAS2vB,IACvB,MAAM5a,EAAKyW,EAA+BmE,EAAE/T,oBAAqB,SAAU+P,EAAAA,EAA0BC,QACrG,GAAIgE,OAAO7a,KAAQgS,EAAQ,CACzB,MAAM3b,EAAqB,CACzBmS,OAAQqS,OAAO7a,GACf8a,WAAYF,EAAEE,YAEhBT,GAAchkB,GACd0kB,QAEF,EAKKC,KAEN,CAAC1xB,EAAMsC,OAEV,MAAMmvB,GAAyBA,KAC7B,MAAME,EAAsB3xB,EAAMsC,KAAKsvB,yBAAyB/wB,OAChE,IAAIgxB,GAAmB,EAEnBF,GAAuBA,EAAoB1gB,OAAS,IACtD4gB,EAAmBF,EAAoB,GAAGG,oBAE5Cb,GAAsBY,EAAiB,EAsBnC3I,GAAeppB,EAAAA,aAAkBS,UAAW,IAAAkoB,EAChD,MAAM1Z,EAAQ,IAAIqa,EAAAA,qCAA8D,QAA1BX,EAACzoB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAA4nB,OAAA,EAAzBA,EAA2BpZ,SAAUwT,EAAgBwG,KAC1GxG,EAAgBwG,KAAMxG,EAAgBwG,KAAMxG,EAAgBwG,MAAM,SAmB9DC,EAAAA,EAAAA,iCAAgCva,EAAO/O,EAAM6E,QAAQkF,eAAeyS,OAAOnS,IAC/ErK,EAAMuJ,UAAUc,MAAMA,EAAMwD,QAAQ,IACnCjH,MAAKF,IACN,GAAIA,GAAYsP,EAAAA,gBAAgBC,YAAYvP,GAAW,KAAA6iB,EACrD,MAAMC,EAAoBtkB,IAA+B,IAAAukB,EAAA,OAA8B,QAAzBA,EAAAvkB,EAAMwkB,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB/B,EAAgB,EACtIgC,EAAkCnjB,EAASiD,OAAO6f,GAClDM,EAA6B9T,EAAAA,gBAAgBC,YAAY4T,GAC7DA,EAAgChH,EAAgBwG,WAASvnB,EACrDioB,EA3CoBC,KAE9B,GAAIA,GAAyBhU,EAAAA,gBAAgBC,YAAY+T,EAAsBC,6BAC7E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,KAAAE,EAC3F,IAA6C,QAAzCA,EAAAH,EAAsBN,2BAAmB,IAAAS,GAAiB,QAAjBA,EAAzCA,EAA2CR,uBAAe,IAAAQ,OAAA,EAA1DA,EAA4DC,uBAC9DF,EAA4BG,iBAC5B,OAAOH,EAA4BI,gBAKzB,EAgCiCC,CAAuBT,GAE9DU,GAtBgBC,EAqBaX,SAA+C,QAArBP,EAA1BO,EAA4BJ,2BAAmB,IAAAH,OAAA,EAA/CA,EAAiDmB,oBApBjFjD,EAAUkD,oBAIX3U,EAAAA,gBAAgBC,YAAYwU,IACvBA,EAAmB5H,EAAgBwG,MAAMuB,kBAAqB/H,EAAgBwG,MAgBnDrpB,EAAM+C,UAAU8nB,YAAc7qB,EAAM+C,UAAU+nB,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGppB,EAAAA,EAAAA,QAAO5B,EAAM+C,UAAUkoB,iCAAkClD,OAAuBgD,IAC1H7C,GAAgB8C,GAzBMP,SA6B1BrC,IAAiB,EAAM,GACtB,CACwB,QADxBe,EACDnpB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAsoB,OAAA,EAAzBA,EAA2B9Z,SAAUoY,EAAUkD,iBAAkB9C,GAAkBE,GAAoB/nB,EAAM6E,QAAQkF,cACrH/J,EAAM+C,UAAUkoB,iCAAkCjrB,EAAM+C,UAAU8nB,YAAa7qB,EAAM+C,UAAU+nB,eAAgB9qB,EAAMuJ,YAGvHzJ,EAAAA,WAAgB,KACVE,EAAMmE,OAAO+mB,0BACfhC,KAAe1M,OAAOnS,IACpBrK,EAAMuJ,UAAUc,MAAMA,EAAMwD,QAAQ,MAGvC,CAACqb,GAAcf,GAAenoB,EAAMuJ,UAAWvJ,EAAMmE,OAAO+mB,4BAE/D3oB,EAAAA,EAAAA,KACE,SAAA4oB,EAAA,OAAiD,QAAjDA,EAAMnrB,EAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAsqB,OAAA,EAA3CA,EAA6CC,uBAAuB,IAC1E,KACEhD,IAAiB,EAAK,IA6F1B,IAAIjV,GAAOnT,EAAMsC,KAAK6Q,KAAKtS,OACvBoU,GAAY9B,cAAI,EAAJA,GAAMA,KAAKC,UACvB2e,IAAY,EACZC,GAAa7e,cAAI,EAAJA,GAAMD,eACvB+B,UAAAA,GAAWtT,SAAQswB,IACA9E,EAA+B8E,EAAE1U,oBAAqB,WAAY+P,EAAAA,EAA0BC,UAE3GwE,IAAY,MAGhB,IAAIG,GAAepyB,EAAAA,cAAA,OAAKsJ,UAAU,aAAapJ,EAAM+C,UAAUovB,WAC3DC,GAAatyB,EAAAA,cAAA,OAAKsJ,UAAU,aAAapJ,EAAM+C,UAAUqvB,YAC7D,OACEtyB,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKoZ,GACVnmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GACPlmB,EAAMqrB,cAETvrB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACPvY,EAGD9N,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,+BACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,wCACZse,IAhHqB2K,MAAK,IAAAC,EACnC,MAAMC,EAA2C,QAAjBD,EAAG1a,EAAQ/W,cAAM,IAAAyxB,OAAA,EAAdA,EAAgB/U,oBACnD,IAAIiV,EACAC,EAuBJ,OAtBIF,GACFA,EAA2B5wB,SAAQ+wB,IAAK,IAAAC,EAAAC,EAAAC,EAAAC,EAGtC,OAFYJ,EAAGjV,KAAO,IAGpB,KAAK2P,EAAAA,EAAgB2F,eACnBP,EAAyB,QAAXG,EAAGD,EAAGhV,aAAK,IAAAiV,OAAA,EAARA,EAAUhV,YAEvB6U,GAAkBA,KAAiC,QAAnBI,EAAKhb,EAAQ/W,cAAM,IAAA+xB,OAAA,EAAdA,EAAgBzpB,QACvDqpB,OAAiB1wB,GAEnB,MACF,KAAKsrB,EAAAA,EAAgB4F,aACnBP,EAAuB,QAAXI,EAAGH,EAAGhV,aAAK,IAAAmV,OAAA,EAARA,EAAUlV,YACrB8U,GAAgBA,KAA+B,QAAnBK,EAAKlb,EAAQ/W,cAAM,IAAAiyB,OAAA,EAAdA,EAAgB5T,UACnDuT,OAAe3wB,OAOpB0wB,GAAmBC,EAKtB3yB,EAAAA,cAAA,OAAKsJ,UAAW,qBACdtJ,EAAAA,cAAA,SAAI6wB,EAAiB,IAAG6B,EAAc,KAAIC,EAAY,MALjD,IAMD,EAiFDJ,GACA7L,GAEDe,IAAoBL,EACpBpnB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,6BACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,kCACZpJ,EAAM+C,UAAUuoB,WAElB/E,IA1mBYgF,GA4mBGjE,EA5mBWjjB,GA4mBA0iB,EA1mBnCjnB,EAAAA,cAAA,KAAGsJ,UAAU,yBACXtJ,EAAAA,cAAA,KAAG0rB,KAAMD,IAAMlnB,MA2mBZgiB,GAtUgBA,KACvB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OACEvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPqH,EAAU3e,IAAI4Y,GACV,EAgUWgG,CAAgBrF,GAC7B0L,IAAaG,GACbF,IAAcI,GACdzL,GApiBiBA,KACxB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACE7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACRtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACPxhB,GAEF2K,EACI,EA2hBY4c,CAAiBhF,GAEhC7mB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,yCACZ+M,IAAa4b,KAAcC,IA/lBjBpG,EACrBC,EACAvJ,EACAtiB,EACAsI,EACAwjB,EACA7E,EAEAJ,EACApjB,EACAqjB,KAGA,MAAM,eAAE1C,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,GAAWoG,GAG3D,UACJ9oB,GACE/C,GAGF,SACEmW,GACE7N,EAEN,OACExI,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACRtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACPxhB,EACAqhB,GAGH3lB,EAAAA,cAACisB,EAAAA,oBAAmB,CAClBrV,GAAG,oCACHmQ,IAAKA,EACLmF,aAAc7V,EACd8V,SAAUnJ,EAAgBR,GAC1B4J,uBAAwBnpB,EAAUmpB,uBAClCC,yBAA0BppB,EAAUopB,yBACpCC,yBAA0BrpB,EAAUqpB,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpC7oB,iBAAkBA,IAEnBqjB,EACAG,EACI,EAijB2C2E,CAAezV,EAAUmM,EAAWtiB,EAAOsI,EAAOvF,EAAWkkB,EAAwBJ,EAAKpjB,EAAkBqjB,GACrJ9mB,EAAMusB,mBAGVvsB,EAAMmE,OAAO+mB,0BAA4BrD,IAhGL2E,MAA8B,IAAAxG,EAAAyG,EAEvE,GAD6BzW,EAAAA,gBAAgBC,YAAqC,QAA1B+P,EAAChmB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAmlB,OAAA,EAAzBA,EAA2B2G,kBACT7qB,KAAtB,QAAzB2qB,EAAAzsB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAA4rB,OAAA,EAAzBA,EAA2BG,iBACrD,OAQF,OACE9sB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAN4B,CACjCzD,UAAW,0CACX7E,IAAK,SAKF0jB,GACI,EAkFyDuE,GA9EpCyG,MAC9B,MAAMrb,EAAU5X,EAAMsC,KAAKsV,QAAQ/W,OAC7B8wB,EAAsB3xB,EAAMsC,KAAKsvB,yBAAyB/wB,OAChE,IAAK+W,IAAY+Z,EACf,OAGF,IAAIuB,EAAkB,GAUtB,OARKpC,UAAAA,GAAYU,aACf0B,EAAkBtC,GAQlBE,UAAAA,GAAYU,WAAaxxB,EAAMymB,eAC7B3mB,EAAAA,cAAA,OAAKsJ,UAAW,6BACdtJ,EAAAA,cAAA,QAAMsJ,UAZqB,8BAaxB8pB,GAGN,EAwDED,IACClB,KAAcC,IAAclB,IA5hBdjE,EAACzG,EAAsC0K,EAA0BE,KAEvF,MAAM,eAAE5M,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAC/C,OACEtmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPC,EACAyM,SAAAA,EAAYU,YAAcR,EAAqBjE,EAAS,GAEpD,EAohByCF,CAAgBzG,EAAW0K,GAAYE,IAClF1K,GA5gBkBA,KAEzB,MAAM,eACJlC,EAAc,cACdiK,EAAa,QACbjqB,EAAO,YACP4I,EAAW,OACXyY,EAAM,OACNsH,EAAM,MACNuB,EAAK,wBACLC,GACEjI,EAEJ,OACExmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACPiK,EACAjqB,EACAmqB,EACAvhB,EACAyY,EACAsH,EACAuB,EACI,EAsfaE,CAAkBlI,GACjC9B,GAAiBD,EAAoBvkB,EAAOsI,EAAOga,GACnDY,GAAsBD,EAAyBjjB,EAAOsI,EAAOga,GAC7DgE,SAAAA,EAAaiI,wBAA0BzuB,EAAAA,cAAA,OAAKsJ,UAAU,8BACpDkd,EAAYiI,yBACN,KA9XWE,KAC1B,GAAKA,GAAsC,IAAvBA,EAAYxd,OAIhC,OACEnR,EAAAA,cAAAA,EAAAA,SAAA,KACG2uB,EAAY,GACZ,EAuXEC,CAAmB1uB,EAAM2uB,OAAS3uB,EAAM2uB,MAAMF,aAC9CxF,GACCnpB,EAAAA,cAACA,EAAAA,SAAc,KACbA,EAAAA,cAAA,OAAKsJ,UAAU,gCACZpJ,EAAM+C,UAAU6rB,UAEnB9uB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gCACbsd,GAAmBnB,EAAsBmB,GACzCE,GAA0BrB,EAAsBqB,KAGnD,KAEJ9mB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,mCACdtJ,EAAAA,cAAA,OAAKsJ,UAAU,wCACZpJ,EAAM+C,UAAU8rB,iBAInB/uB,EAAAA,cAACqzB,EAAAA,GAAiB,CAAC9uB,KAAgC,QAA5BqsB,EAAEG,EAAoBhwB,cAAM,IAAA6vB,OAAA,EAA1BA,EAA4B1jB,eAEtDgJ,EAAAA,gBAAgBC,YAAYjW,EAAM2uB,MAAMG,sBACvChvB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACbpJ,EAAM2uB,MAAMG,qBAAqB,IAC1B,OA3pBIC,IAACxD,GAAclnB,EA6pB1B,2uBC5sBb,MAmBMigB,EAAwBA,CAAChC,EAC3Bvf,EAAmC6U,IAAwC/W,IAC3EyhB,SAAAA,EAAWC,iBAAiB,CACxBC,UAAW,WACXC,gBAAmC,qBAAlB5hB,EAAOmP,QAAgC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC1I,EA6CA2B,EAAsBA,CAACvkB,EACzBsI,EAAqBga,KAA+D,IAAA0M,EACpF,MAAMpX,EAA8B,QAAvBoX,EAAGhvB,EAAMivB,sBAAc,IAAAD,OAAA,EAApBA,EAAsBpX,QACtC,IAAK5X,EAAMwkB,gBAAkB5M,EACzB,OAAO,KAGX,MAAM6M,EAzCwBC,EAAC1kB,EAC/BsI,EAAqBga,EAAyC1K,KAC9D,MAAM,QAAE/S,EAAO,UAAE9B,GAAc/C,EACzB2kB,EAAY3kB,EAAMsC,KAAKqiB,UAAU9jB,OAEvC,OACIf,EAAAA,cAAC8kB,EAAAA,uBAAsB,CACnBxb,UAAU,gCACVyb,wBAAyB9hB,EAAU8hB,wBACnCC,6BAA8B/hB,EAAU+hB,6BACxCC,qBAAsBhiB,EAAUgiB,qBAChCC,2BAA4BjiB,EAAUiiB,2BACtCC,uBAAwBliB,EAAUkiB,uBAClCC,4BAA6BniB,EAAUmiB,4BACvCC,eAAgBpiB,EAAUoiB,eAC1B7iB,KAAM,CAAEsV,UAAS+M,aACjB9f,QAASA,EACT6R,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChBU,QAASO,EAAsBhC,EAAWvf,EAAW6U,GACrDyN,mBAAoB/c,EAAMgd,gBAC1BnB,gBAjBwB,EAkBxBD,mBAAmB,GACrB,EAkBiBQ,CAA0B1kB,EAAOsI,EAAOga,EAAW1K,GAC1E,OACI9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMwkB,cAAcJ,gBACzBpkB,EAAMwkB,cAAcH,WACpBI,EACE,EAqDTiB,EAA2BC,IAC7B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACI7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,GAEJyhB,EACAJ,EACE,EAwBTyJ,EAAqBlvB,IACvB,MAAM,MAAEumB,EAAK,WAAEI,EAAU,SAAExQ,EAAQ,eAAEsQ,EAAc,uBAAEQ,EAAsB,QAAEkI,EAAO,0BAEhFhJ,EAAyB,2BAAED,EAA0B,cAAEkJ,EAAa,cAAE5K,EAAa,UAAE6B,EAAS,UAAE/D,EAAS,MAAEha,GAAUtI,EACzH,OAAImvB,EAEIrvB,EAAAA,cAAAA,EAAAA,SAAA,KACKqvB,GAMTrvB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GACNpmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuiB,KAEdtvB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACNrmB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gCACZtJ,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACXpJ,EAAM+C,UAAUuoB,UAChB/E,GAEJ/B,GAAiBD,EAAoBvkB,EAAOsI,EAAOga,IAEvD+D,GAxCQA,KACrB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OACIvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLqH,EAAU3e,IAAI4Y,GACZ,EAkCegG,CAAgBrF,GAC7BM,GA/ESA,KAEtB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACI7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,GAEJ2K,EACE,EAqEgB4c,CAAiBhF,GAC/BxQ,GAvGMyV,EAACzV,EAA2C8Q,EAAyCjnB,KAExG,MAAM,eAAEokB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,EAAK,OAAE0W,GAAWtP,GAClE,cAAE2Q,GAAkB9mB,EAE1B,OACIF,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,GAEJ2K,EACA+X,EACAG,EACAxB,EACE,EAyFcmG,CAAezV,EAAU8Q,EAAwBjnB,GAC7DymB,GAEN,EAUL4I,EAAwBrvB,IAAuE,IAAAsvB,EAAAC,EAEjG,MAAM,eAAEC,EAAc,qBAAEC,EAAoB,qBAAEC,EAAoB,mBAAEC,EAAkB,mBAAEC,EAAkB,UAAExJ,EAAS,mBACjHyJ,EAAkB,iBAAEC,GAAqB9vB,EAE7C,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAK2iB,GACR1vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK4iB,GACLE,EACD7vB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,0BACXpJ,EAAM4N,MACL5N,EAAMmvB,SAAYY,EAAAA,iBAAiBC,cAAsC,QAAzBV,EAACtvB,EAAMsI,MAAM2nB,oBAAY,IAAAX,OAAA,EAAxBA,EAA0BpQ,QAGnE,GAH6Epf,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,2BAClGpJ,EAAM+C,UAAU2kB,QACQ,QADD6H,EACvBvvB,EAAMsI,MAAM2nB,oBAAY,IAAAV,OAAA,EAAxBA,EAA0BrQ,QAE9Blf,EAAMwmB,SAGf1mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+iB,GACLV,EAAkBlvB,IAEvBF,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK6iB,GACN5vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKgjB,GACLzJ,GAAa0J,EACb1J,GAxOIA,KAErB,MAAM,eAAEhC,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAE/C,OACItmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAgOmBF,CAAgBzG,KAGjC,EASJ8J,EACgDlwB,IACzD,MAAM,UAAEmwB,EAAS,gBAAEC,EAAe,YAAEC,GAAgBrwB,EAC9CswB,EAAqB1nB,EAAAA,EAAA,GAAsBunB,GAAS,IAAEviB,MAAO5N,EAAM+C,UAAUwtB,sBACnF,OACIzwB,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKyjB,GACPF,EACAC,GAAehB,EAAqBrvB,GAChC,EAIjB,mECnROO,eAAe6yB,EAAqBC,EAAgDC,GACvF,MAAM3f,QAAsC4f,EAAAA,EAAAA,kBAAiBD,GAAK9W,OAAOnS,IAErE,MADAipB,EAAI/pB,UAAUiqB,UAAUnpB,GAClBA,CAAK,IAGfgpB,EAAiBI,SAAWJ,EAAiBI,QAAQC,uBAC/C/f,EAAcggB,yBAAyB,CAAEC,sBAAuBC,EAAAA,eAAeC,MACzF,6ECGO,MAAMC,EAA4DvnB,IAOpE,IAPqE,UACtEwnB,EAAS,MACT9uB,EAAK,UACL+uB,EAAS,KACT5vB,EAAI,iBACJZ,EAAgB,SAChBwoB,GACHzf,EACG,MAAM0nB,EAAuB,CACzB/tB,QAAS6tB,EACT,eAAgBA,GAGpB,OACIl0B,EAAAA,cAAA,SAAOsJ,UAAU,uDACbtJ,EAAAA,cAACq0B,EAAAA,EAAqBvnB,OAAAC,OAAA,GACd,CACA3G,KAAM,WACNkD,UAAW,8BACXlE,QACA+mB,WACAmI,qBAAsBF,EACtBzwB,sBAGR3D,EAAAA,cAAA,QAAMsJ,UAAU,+DAA+D/E,GAC3E,4DClCT,MAAMyN,EAA0DtF,IAAA,IAAC,KAAEnI,GAAMmI,EAAA,OAC5E1M,EAAAA,cAAA,MAAIsJ,UAAU,wCAAwC/E,EAAU,4DCY7D,MAAMgwB,EAA0C7nB,IAAA,IAAC,MAAEoB,EAAK,QAAEC,EAAO,UAAEzE,EAAY,kCAAkCoD,EAAA,OACpH1M,EAAAA,cAAA,OAAKsJ,UAAW,GAAGA,WAAoBmN,KAAK,QAAO,YAAW,aAC1DzW,EAAAA,cAAA,KAAGsJ,UAAW,GAAGA,kBAA2BwE,GAC5C9N,EAAAA,cAAA,KAAGsJ,UAAW,GAAGA,oBAA6ByE,GAC5C,iHCqBV,MAAMymB,EAAWA,CAACC,EAAe7zB,EAAkBV,KAAoD,IAAAw0B,EACnG,MAAM,UAAE/vB,EAAS,sBAAE+U,EAAqB,gBAAEpW,EAAe,UAAEL,EAAS,gBAAE3C,GAAoBJ,EACpFy0B,EAAyB/zB,EAAQ6F,mBACgD,QAAjFiuB,EAAAp0B,EAAgBgP,MAAKslB,GAAWA,EAAQzxB,cAAgBvC,EAAQ6F,0BAAiB,IAAAiuB,OAAA,EAAjFA,EAAmFG,cACnF,GACAC,EAAWl0B,EAAQ2O,WAAajM,EAAgBiM,SAChD6kB,EAAuB,CACzB/tB,QAASyuB,EACT,eAAgBA,EAChB,eAAgBnwB,EAAUwM,OAC1B,gBAAiBsjB,EAAQ,EACzB,cAAc3yB,EAAAA,EAAAA,QAAOmB,EAAU8xB,+BAAgCJ,IAGnE,OACI30B,EAAAA,cAACq0B,EAAAA,EAAqBvnB,OAAAC,OAAA,GACd,CACAzD,UAAW,qBACXrH,KAAM,uBACNmE,KAAM,QACNhB,OAAQxE,EAAQ2O,UAAY,IAAIwK,WAChCoS,SAAUzS,EACV4a,qBAAsBF,EACtBzwB,iBAAkBzD,EAAMyD,mBAE9B,EAIJqxB,EAAyB90B,IAC3B,MAAM,UAAEyE,EAAS,cAAE9D,EAAa,gBAAEP,GAAoBJ,EAEtD,OAAOyE,EAAUqI,KAAI,CAACpM,EAAS6zB,KACpB,CACHnnB,IAAK1M,EAAQ2O,UAAY,EACzByQ,WAAY,CAAE1W,UAAW,4BACzB2F,MAAOulB,EAASC,EAAO7zB,EAASV,GAChCqN,WAAWd,EAAAA,EAAAA,GAAY,CACnB5L,cAAeA,EAAcc,iBAAiBf,EAAQgB,0BAA4B,IAClFhB,UACAN,uBAGV,EAGOmZ,EAAiBvZ,IAC1B,MAAM,UACF+C,EAAS,SACTiB,EAAQ,OACRF,EAAM,aACNyB,EAAY,wBACZwvB,EAAuB,uBACvB7b,EAAsB,+BACtB8b,GACAh1B,EAEJ,MAAO,CACH6f,cAAe,CAAEzW,UAAW,sBAC5B+E,UACIrO,EAAAA,cAAA,OAAKsJ,UAAW4rB,EAAiC,uCAAyC,IACtFl1B,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,+BAA8B4rB,EAAiC,UAAY,OACtF3wB,KAAM2wB,EAAiCjyB,EAAUmyB,wBAA2BnyB,EAAUoyB,qBACtFlB,UAAWe,EACLjyB,EAAUqyB,6BACVryB,EAAUsyB,0BAChBC,QAAS/vB,EACT9B,iBAAkBzD,EAAMyD,qBAKxC8xB,4BAA6BP,GAAkCD,GAC3Dj1B,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,qDACX/E,KAAMtB,EAAUyyB,wBAChBvB,UAAWlxB,EAAU0yB,6BACrBH,QAASP,EACTtxB,iBAAkBzD,EAAMyD,oBAIpC+K,kBAAmB0K,EACnBzK,WACI3O,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,kCACX/E,KAAMtB,EAAU2yB,sBAChBzB,UAAWlxB,EAAU4yB,2BACrBL,QAASxxB,EACTL,iBAAkBzD,EAAMyD,oBAIpCiL,oBAAqBwK,EACrBvK,aACI7O,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,oCACX/E,KAAMtB,EAAU6yB,wBAChB3B,UAAWlxB,EAAU8yB,6BACrBP,QAAStxB,EACTP,iBAAkBzD,EAAMyD,oBAIpCiJ,MAAOooB,EAAsB90B,GAChC,iEC9HE,MAAM81B,UAA0Ch2B,EAAAA,cAAvDC,cAAA,oBACW,KAAAuI,MAAiD,CACpD0rB,WAAW,GAGE,KAAA+B,mBAA6B,WAEvC,KAAAC,YAAc,IAAOhxB,IACxBxE,KAAKqQ,SACD,CACImjB,WAAYxzB,KAAK8H,MAAM0rB,YAE3B,KACIxzB,KAAKR,MAAMi2B,aAAaz1B,KAAK8H,MAAM0rB,UAAU,GAEpD,CAiET,CA9DW1oB,SACH,OAAK9K,KAAKR,MAAMoV,SAmCRtV,EAAAA,cAAA,aACIA,EAAAA,cAAA,MAAIsJ,UAAW,GAAG5I,KAAKu1B,mCACnBj2B,EAAAA,cAAA,MAAIo2B,MAAM,MAAMC,MAAO,CAAEC,SAAU,QAASC,SAAU,YAAY,aAAc71B,KAAKR,MAAMs2B,mBACvFx2B,EAAAA,cAAA,SAAOsJ,UAAU,qBAAqB+sB,MAAO,CAAEI,YAAa,SACxDz2B,EAAAA,cAAA,sBACgBU,KAAKR,MAAMs2B,kBACvBltB,UAAU,iBACVlD,KAAK,WAAU,eACD1F,KAAKR,MAAMw2B,cACzBrwB,QAAS3F,KAAKR,MAAMw2B,cACpBvK,SAAUzrB,KAAKw1B,gBAEnBl2B,EAAAA,cAAA,QAAMsJ,UAAU,YAAY+sB,MAAO,CAAEM,OAAQ,yBAA2B,cAK5E32B,EAAAA,cAAA,OAAKq2B,MAAO,CAAEE,SAAU,WAAYK,IAAK,MAAOC,KAAM,MAAOC,UAAW,0BACnEp2B,KAAKR,MAAM62B,yBAnD5B/2B,EAAAA,cAAA,aACIA,EAAAA,cAAA,MAAIsJ,UAAW,GAAG5I,KAAKu1B,mCACnBj2B,EAAAA,cAAA,MAAIo2B,MAAM,MAAK,aAAa11B,KAAKR,MAAMs2B,mBACnCx2B,EAAAA,cAAA,SAAOsJ,UAAU,sBACbtJ,EAAAA,cAAA,sBACgBU,KAAKR,MAAMs2B,kBACvBltB,UAAU,iBACVlD,KAAK,WAAU,eACD1F,KAAKR,MAAMw2B,cACzBrwB,QAAS3F,KAAKR,MAAMw2B,cACpBvK,SAAUzrB,KAAKw1B,gBAEnBl2B,EAAAA,cAAA,QAAMsJ,UAAU,gBAGxBtJ,EAAAA,cAAA,MAAIo2B,MAAM,OAAO11B,KAAKR,MAAM82B,eAC3Bh3B,EAAAA,cAAA,MAAIo2B,MAAM,OAAO11B,KAAKR,MAAM+2B,aAEzBj3B,EAAAA,cAAA,MAAIo2B,MAAM,MAAMC,MAAO,CAAEa,UAAW,UAC/Bx2B,KAAKR,MAAMi3B,kBAIhBn3B,EAAAA,cAAA,MAAIo2B,MAAM,MAAMC,MAAO,CAAEa,UAAW,WAC/Bx2B,KAAKR,MAAMk3B,iBAGnBp3B,EAAAA,cAAA,MAAIo2B,MAAM,OAAO11B,KAAKR,MAAMm3B,iBA+BjD,uFCrDJ,MAAMC,EAAsBA,CAACC,EAAgEtoB,IACzF/J,IAEAqyB,EAA0BrD,WAAaqD,EAA0BrD,UAEjEjlB,EAAMuoB,SAASD,EAA2BryB,EAAMC,OAAOkB,QAAQ,EAGtDoxB,EAAiCxoB,IAC1C,MAAM,kBAAEpM,EAAiB,0BAAE00B,EAAyB,kBAAEG,EAAiB,QAAE5f,EAAO,QAAE/S,EAAO,wBAAE4yB,GAA4B1oB,EAIvH,GAFA+Z,QAAQC,IAAI,4CAEPnR,EACD,OAAO,KAGX,MAAM,OAAEsH,GAAWtH,GACb,SAAEwH,EAAQ,gBAAExD,GAAoByb,EAA0BhkB,SAEhE,MAAO,CACHqkB,WACI53B,IAAAA,cAAA,SAAOsJ,UAAU,sBACbtJ,IAAAA,cAAA,SACIsJ,UAAU,iBACVlD,KAAK,WACLC,QAASkxB,EAA0BrD,UAAS,eAC9BqD,EAA0BrD,UACxC/H,SAAUmL,EAAoBC,EAA2BtoB,KAE7DjP,IAAAA,cAAA,QAAMsJ,UAAU,eAGxBuuB,aAAcC,EACV,GACA/yB,EACA+S,EAAQzO,KACRquB,EAAkBlhB,WAAW0I,YAC7BwY,EAAkBlhB,WAAWwI,KAEjC+Y,YAAaC,EAAkB/oB,GAC/BkhB,aAAc8H,EAAmBhpB,GACjC+nB,cAAelf,GACX9X,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,WAAMof,GACW,SAAhBnQ,EAAM1E,MAAmBvK,IAAAA,cAAA,WAAMk4B,EAAmBjpB,SAAgBjN,GAG3Eo1B,gBAAiB9X,EACjB+X,eACIr3B,IAAAA,cAAA,UACIsJ,UAAW,+CACX6iB,SAAUgM,GAAKR,EAAwBJ,EAA0BhkB,SAAU4kB,GAC3E/yB,MAAO0W,aAAe,EAAfA,EAAiBvM,UAEvB1M,aAAiB,EAAjBA,EAAmBmK,KAAI,CAACpM,EAAkB6zB,IACvCz0B,IAAAA,cAAA,UACIsN,IAAKmnB,EACLrvB,MAAOxE,EAAQ2O,SAAQ,aACX3O,EAAQa,YACpB6H,UAAW,4CAEV1I,EAAQa,gBAK5B,EAGCq2B,EAAqBA,CACvBxuB,EACAvE,EACAT,EACA8zB,EACAC,KACoB,IAAAC,EAAAC,EAUpB,OACIv4B,IAAAA,cAACuW,EAAAA,GAAK,CACFrM,eAAgBnF,SAAsB,QAAfuzB,EAAPvzB,EAASkF,qBAAa,IAAAquB,OAAA,EAAtBA,EAAwBpuB,eACxCZ,UAAWA,EACXqN,QAASrS,EACTwJ,MAAOxJ,EACP0a,IAAKoZ,EACLlZ,YAAamZ,EACb3iB,aAAc3Q,SAAgB,QAATwzB,EAAPxzB,EAASC,eAAO,IAAAuzB,OAAA,EAAhBA,EAAkB7iB,aAChC6I,cAlBqC,CACzCzH,UAAW,CACPnB,GAAI,CAAEoB,EAAG,gBAAiBnB,EAAG,EAAGoB,EAAG,GACnCjB,GAAI,CAAEgB,EAAG,gBAAiBnB,EAAG,EAAGoB,EAAG,GACnChB,GAAI,CAAEe,EAAG,gBAAiBnB,EAAG,EAAGoB,EAAG,IAEvCC,UAAU,GAaNoI,oBAAoB,QACpBmZ,SAAU,GACZ,EAiBJR,EAAqB93B,IACvB,MAAM,QAAE4X,GAAY5X,EACd+B,EAAO6V,aAAO,EAAPA,EAASzO,KAChBovB,EAhBuBv4B,KAC7B,MAAM,QAAE4X,GAAY5X,EACpB,OAAK4X,GAAYA,EAAQ+U,WAGlB/U,EAAQ+U,WAAW7f,KAAI0rB,IAC1B,GAAKA,EAAUC,gBAAmBD,EAAUC,eAAe/a,MAG3D,OAAO8a,EAAUC,eAAe/a,KAAK,IAN9B,EAOT,EAMiBgb,CAAwB14B,GAC3C,IAAK4X,EACD,MAAO,GAEX,MAAMmf,EAAcj3B,IAAAA,cAAA,WAAMiC,GACpB42B,EAAyBJ,EAAWK,KAAK,MAC/C,OACI94B,IAAAA,cAAA,WACIA,IAAAA,cAAA,WAAMi3B,GACNj3B,IAAAA,cAAA,WAAM64B,GACJ,EAIRZ,EAAsB/3B,IACxB,MAAM,QAAE4X,GAAY5X,EAEpB,OAAK4X,SAAAA,EAASihB,MAKV/4B,IAAAA,cAAA,YACIA,IAAAA,cAACg5B,EAAAA,eAAc,CACXx2B,KAAM,CACFikB,MAAO,CACHwS,wBAAyBnhB,EAAQihB,QAGzCh0B,QAAS7E,EAAM6E,QACf6R,GAAI1W,EAAMg5B,SACV3V,SAAUrjB,EAAMi5B,eAChBC,aAAcl5B,EAAMk5B,gBAdrB,IAgBA,EAITlB,EAAsBh4B,IACxB,MAAM,MAAEqK,EAAK,UAAEtH,GAAc/C,EAE7B,IAAKqK,EACD,MAAO,GASX,MANsB,CAClB8uB,IAAKp2B,EAAUq2B,8BACfC,WAAYt2B,EAAUu2B,+BACtBC,KAAM,IAGWlvB,EAAM,kVCzKxB,MAAMmvB,EAAuBx5B,IAChC,MAAM,QACF6E,EAAO,aACPq0B,EAAY,uBACZhgB,EAAsB,SACtB8f,EAAQ,eACRC,EAAc,cACdQ,EAAa,mBACbC,EAAkB,sBAClBC,EAAqB,kBACrBh3B,EAAiB,SACjByS,EAAQ,SACRkiB,EAAQ,YACRsC,EAAW,QACXC,EAAO,wBACPpC,EAAuB,4BACvBqC,EAA2B,oBAC3BC,EAAmB,OACnBj2B,EAAM,SACNE,EAAQ,UACRjB,GACA/C,GAEE,+BAAEs5B,EAA8B,8BAAEF,GAAkCp5B,EAAM+C,UAE1Ei3B,EAAkE,GAExE,IAAK,MAAMriB,KAAQ8hB,EACfO,EAAyBhyB,KAAK,CAC1BgsB,WAAW,EACX3gB,SAAUsE,EAAKtE,WA+DvB,MAAO,CACH4mB,oBAAqB,CAAE7wB,UAAW,sBAClC8wB,wBACIp6B,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,iDACX/E,KAAMtB,EAAUo3B,sBAChBlG,UAAWlxB,EAAUq3B,2BACrB9E,QAASyE,EACTt2B,iBAAkBzD,EAAMyD,oBAIpCozB,qBACI/2B,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,6CACX/E,KAAMtB,EAAUs3B,yBAChBpG,UAAWlxB,EAAUu3B,8BACrBhF,QAASuE,EACTp2B,iBAAkBzD,EAAMyD,iBACxB82B,SAAUZ,EAAsBa,OAAM7iB,IAASA,EAAKqc,eAIhEyG,gBACI36B,EAAAA,cAAA,UACIsJ,UAAW,uCACXwE,MAAO7K,EAAU23B,kCAAiC,aACtC33B,EAAU43B,uCACtB1O,SAAUgM,GAAK6B,EAA4B7B,GAC3C2C,aAAc,GACdL,SAAUZ,EAAsBa,OAAM7iB,IAASA,EAAKqc,aAEpDl0B,EAAAA,cAAA,UAAQoF,MAAM,GAAE,aAAanC,EAAU83B,2BAA4BN,UAAQ,EAACO,QAAM,GAC7E/3B,EAAU23B,mCAEd/3B,aAAiB,EAAjBA,EAAmBmK,KAAI,CAACpM,EAAkB6zB,IACvCz0B,EAAAA,cAAA,UAAQsN,IAAKmnB,EAAOrvB,MAAOxE,EAAQ2O,SAAQ,aAAc3O,EAAQa,aAC5Db,EAAQa,gBAKzBw5B,cAAe,CACX3xB,UAAW,2BACX7E,IAAK,QACLgS,KAAM,QAEVykB,iBAAkB,CACd5xB,UAAW,+BACX7E,IAAK,MAET02B,qBAhHJ,WACI,MAAMC,EAAmD,CACrD5E,kBAAmBvzB,EAAUo4B,yBAC7BrE,cAAe/zB,EAAUq4B,yBACzBrE,YAAah0B,EAAUs4B,mBACvBpE,iBAAkBl0B,EAAUu4B,4BAC5BpE,gBAAiBn0B,EAAUw4B,2BAC3BpE,eAAgBp0B,EAAUy4B,0BAC1BvF,aAAejC,IACX4F,EAAY5F,EAAU,EAE1BwC,cAAemD,GAAyBA,EAAsBa,OAAM7iB,GAAQA,EAAKqc,YACjF5e,SAAUA,EACVyhB,qBACI/2B,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,6CACX/E,KAAMtB,EAAUs3B,yBAChBpG,UAAWlxB,EAAUu3B,8BACrBhF,QAASuE,EACTp2B,iBAAkBzD,EAAMyD,iBACxB82B,SAAUZ,EAAsBa,OAAM7iB,IAASA,EAAKqc,gBAMpE,OAAOl0B,EAAAA,cAACg2B,EAAAA,EAAiClpB,OAAAC,OAAA,GAAKquB,GAClD,CAoF0BO,GACtBzB,yBAlFOP,EAAc3sB,KAAI,CAAC6K,EAAM4c,KAAS,IAAA/V,EAAAkd,EACrC,MAAMC,EAAoD,CACtDtE,0BAA2B,CACvBrD,UAAY2F,GAAyBA,EAAsBpF,IAAUoF,EAAsBpF,GAAOP,YAAc,EAChH3gB,SAAUsE,EAAKtE,UAEnBmkB,kBAAmBkC,EAAmBnF,GACtC3c,QAASD,EAAKC,QAAUD,EAAKC,aAAU9V,EACvCykB,MAAmB,QAAd/H,EAAE7G,EAAKC,eAAO,IAAA4G,OAAA,EAAZA,EAAcqa,MACrBh0B,UACAsR,SAAuB,QAAfulB,EAAE/jB,EAAKtE,gBAAQ,IAAAqoB,OAAA,EAAbA,EAAetc,SACzB4Z,SAAUA,EACVC,eAAgBA,EAChBC,aAAcA,EACdv2B,kBAAmBA,EACnByS,SAAUA,EACVkiB,SAAUA,EACVG,wBAAyBA,EACzB10B,UAAW,CACPu2B,iCACAF,kCAIR,OAAO7B,EAAAA,EAAAA,wWAA6B3uB,CAAC,CAAC,EAAI+yB,GAAoB,IA2DlEntB,kBAAmB0K,EACnBzK,WACI3O,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,2CACX/E,KAAMtB,EAAU64B,wBAChB3H,UAAWlxB,EAAU4yB,2BACrBL,QAASxxB,EACTL,iBAAkBzD,EAAMyD,oBAIpCiL,oBAAqBwK,EACrBvK,aACI7O,EAAAA,cAACm1B,EAAAA,EAAsBroB,OAAAC,OAAA,GACf,CACAzD,UAAW,oCACX/E,KAAMtB,EAAU6yB,wBAChB3B,UAAWlxB,EAAU8yB,6BACrBP,QAAStxB,EACTP,iBAAkBzD,EAAMyD,oBAIpC2R,SAAUA,EACb,usDC1JL,IAAM5F,EAAN,cAAqC1P,EAAAA,UAoCjCC,YAAmBC,GACfC,MAAMD,GA5BU,KAAAE,gBAA0B,MAYtC,KAAAC,eAAsC,GAEtC,KAAAC,gBAAoC,GAI3B,KAAAC,mBAA6B,EAO7B,KAAAgzB,iBAAiDvzB,EAAAA,YAyPjD,KAAAQ,sBAAwBC,UACrCC,KAAKC,sBACL,MAAMC,EAAUF,KAAKG,cAAcC,qBAAqBC,EAAQL,KAAKM,oBACrEC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQ,MACrCF,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEE,QAASR,EAAQQ,WAC9CH,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEG,WAAYT,EAAQS,cACjDJ,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEI,KAAMV,EAAQU,QAC3CL,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAOX,EAAQW,SAC5CN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEM,aAAcZ,EAAQY,gBACnDP,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEO,YAAab,EAAQa,cAGlDC,YAAW,MACPT,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQP,EAAQO,QAAS,GACvD,EAAE,EAOQ,KAAAR,oBAAsB,KACTD,KAAKG,cAAcc,iBACzCjB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,iBAEzCyB,SAAQC,IAAS,IAAAC,OACYC,IAAvCtB,KAAKQ,iBAAiBY,EAAOG,OAAwC,QAAjBF,EAACrB,KAAKwB,mBAAW,IAAAH,GAAhBA,EAAkBI,sBAAsBC,SAASN,EAAOG,QAC7GvB,KAAKG,cAAciB,EAAOG,MAAQ,GAAG,IAG7CvB,KAAK2B,kBAAkB,EAOV,KAAAA,iBAAmB,KAChC3B,KAAK4B,gBAAkB,CAAC,CAAC,EAQZ,KAAA4D,mBAAqB,CAACjE,EAAcmD,MACjDnE,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE,CAACe,GAAOmD,IACrC1E,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,gBAAiB6B,EAAK,EAOpG,KAAAM,gBAAmBrC,IAChC,MAAM,KAAEsC,GAAStC,GAEjBuC,EAAAA,EAAAA,KACI,IAAMD,EAAKnC,eAAeU,SAC1B,KAAK,IAAA2B,EACDhC,KAAKL,eAA2C,QAA7BqC,EAAGF,EAAKnC,eAAeU,cAAM,IAAA2B,EAAAA,EAAI,EAAE,KAI9DD,EAAAA,EAAAA,KACI,IAAMD,EAAKlC,gBAAgBS,SAC3B,KAAK,IAAA4B,EACDjC,KAAKJ,gBAA6C,QAA9BqC,EAAGH,EAAKlC,gBAAgBS,cAAM,IAAA4B,EAAAA,EAAI,EAAE,KAIhEF,EAAAA,EAAAA,KACI,IAAMD,EAAKmN,cAAc5O,SACzB,KAAK,IAAA6O,EACDlP,KAAKM,kBAA6C,QAA5B4O,EAAGpN,EAAKmN,cAAc5O,cAAM,IAAA6O,EAAAA,EAAI,EAAE,GAE/D,EAOY,KAAA9M,0BAA4B,KAA6B,IAAAi5B,EACtE,OAAOh5B,EAAAA,EAAAA,GAAiB,CACpBE,UAAWvC,KAAKuC,UAChBC,YAAaC,EAAAA,EAAY64B,QACzBn7B,cAAeH,KAAKG,cAAcc,iBAA+D,QAA/Co6B,EAACr7B,KAAKQ,iBAAiBU,gCAAwB,IAAAm6B,EAAAA,EAAIr7B,KAAKN,iBAC1GiD,uBAAwB3C,KAAKN,gBAC7BG,mBAAoBG,KAAKH,mBACzB+C,gBAAiB5C,KAAKQ,iBACtBoB,gBAAiB5B,KAAK4B,gBACtBiB,sBAAuB7C,KAAK6C,sBAC5BC,oBAAqB9C,KAAKG,cAAc4C,gCACpC/C,KAAKuC,UAAUS,iCACfhD,KAAKM,mBAET2C,iBAAkBjD,KAAKiD,iBACvBC,cAAelD,KAAKmD,+BACpBC,iBAAkBpD,KAAKqD,kCACvBqV,uBAAwB1Y,KAAKR,MAAM8P,YAAYoJ,uBAC/CpV,OAAQtD,KAAKu7B,iBACb/3B,SAAUxD,KAAKyD,YACjB,EAmBW,KAAAuC,iBAAoBtG,IAA2B,IAAA2F,EAC5DrF,KAAKN,gBAAkBA,EACvB,MAAM+Z,EAAyBzZ,KAAKG,cAAc+G,0BAA0BxH,IAC5Ea,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEU,yBAA0BxB,KACvDa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE2G,uBAAwBsS,IACrC,QAAhBpU,EAAArF,KAAKwB,mBAAW,IAAA6D,GAAhBA,EAAkB+B,gCAAgCqS,GAClDzZ,KAAKC,qBAAqB,EAOb,KAAAoH,6BAA+B,KAC5C,MAAM,OAAE1D,GAAW3D,KAAKR,MAClB8H,EAA8C,GAQpD,OANK3D,EAAO4D,iBACRD,EAAyBE,KAAK1B,EAAAA,GAAgBC,kBAGlDuB,EAAyBE,KAAK1B,EAAAA,GAAgB2B,WAEvCH,CAAwB,EAMlB,KAAAnC,sBAAwBpF,UACrC,MACI+B,MACIsD,2BAA6B/E,OAAQ+E,KAEzCpF,KAAKR,MAEuC,IAADwH,EAA3C5B,SAAAA,EAA2BE,iBACX,QAAhB0B,EAAAhH,KAAKwB,mBAAW,IAAAwF,GAAhBA,EAAkBzB,kBAAkB,yBAA0B,mCAAoCvF,KAAKF,uBAAuB,EAQrH,KAAAqD,+BAAkCqB,IAC/C,MAAME,GAASF,EAAMC,OAAOC,OAAS,IAAIkB,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IAC3E7F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMmD,EAAM,EAOpC,KAAArB,kCAAqCmB,IAClDxE,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMiD,EAAMC,OAAOC,OAEpDF,EAAMC,OAAOlD,OAASuE,EAAAA,GAAgBA,EAAAA,GAAgB5E,2BACtDlB,KAAKgG,iBAAiBxB,EAAMC,OAAOC,MAAO,EAOjC,KAAAgD,mBAAqB,MAE7B1H,KAAKN,iBACJM,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,QAKnG1G,KAAKsG,cAAcsB,kBAAkB5H,KAAKN,iBAAiB0G,MAAM/F,IAC3CA,EAAOwH,MAAKC,GAASA,EAAMC,UAAY/H,KAAKQ,iBAAiBK,UAI3EN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAO,KAExCb,KAAKM,kBAAoBD,CAAM,GACjC,EAMW,KAAA+O,iBAAmB,KAAW,IAAAC,EAC3CrP,KAAKR,MAAM8P,YAAYC,KAAK,CACxBC,OAAQxP,KAAKyP,yBAA2B,WAAa,WACrDyL,OAAQlb,KAAKkb,OACb1X,SAAUxD,KAAKwD,SACfmV,SAAU3Y,KAAK2Y,WAGnB,MAAM,eAAEjJ,EAAc,sCAAEC,GAAyE,QAAlCN,EAAGrP,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAgP,EAAAA,EAAI,CAAC,EAElGrP,KAAKyP,2BACDC,GACA1P,KAAK6P,+BAAiCF,SAAAA,EACtC3P,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAMJ,GACpD1P,KAAK+P,sBACE/P,KAAKgQ,gCACZhQ,KAAK6P,gCAAiC,EACtC7P,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAKiR,mBAEzDjR,KAAK6P,gCAAiC,EACtC7P,KAAKgI,wBAAwBvB,EAAAA,EAAiBkB,MAAI,EAmB7C,KAAA6zB,sCAAyCh3B,IACtDxE,KAAK6P,+BAAiCrL,EAAM4U,cAAczT,QAEtD3F,KAAK6P,gCAAkC7P,KAAKiR,gBAC5CjR,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAKiR,iBAEzDjR,KAAKgI,wBAAwBvB,EAAAA,EAAiBkB,IAAK3H,KAAK0P,eAAgB,EAsG/D,KAAA6rB,iBAAmB,KACmF,IAADrqB,EAAAa,EAAlH,IAAK/R,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,iBAU5F,OATAM,KAAKR,MAAM8P,YAAYc,aAAY,QAGA,QAA/Bc,EAAAlR,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA6Q,GAA/BA,EAAiCuqB,gDACF,QADgD1pB,EAC/E/R,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA0R,GAA/BA,EAAiC2pB,mCAEjC17B,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOs7B,+BAA+B,CAAEC,6BAA6B,KAMtG57B,KAAKmP,mBAAmBnP,KAAKQ,kBAC7BR,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAKQ,kBACzDR,KAAK+P,oBAAoB,EAMZ,KAAA4I,SAAW,KACxB,OAAQ3Y,KAAKwG,kBACT,KAAKC,EAAAA,EAAiBkB,IACtB,KAAKlB,EAAAA,EAAiBC,OAClB1G,KAAKR,MAAMuJ,UAAU8yB,YAAY,uDACjC77B,KAAKu7B,mBACL,MACJ,KAAK90B,EAAAA,EAAiBqJ,KAClB9P,KAAKR,MAAMuJ,UAAU8yB,YAAY,8CAC7B77B,KAAK4C,kBACL5C,KAAKmP,mBAAmBnP,KAAK4C,iBAC7B5C,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAK4C,iBACzD5C,KAAK+P,sBAET,MACJ,QACI/P,KAAKR,MAAMuJ,UAAUc,MAAM,qBAAqB,EAO3C,KAAArG,SAAW,KACxB,OAAQxD,KAAKwG,kBACT,KAAKC,EAAAA,EAAiBkB,IACtB,KAAKlB,EAAAA,EAAiBC,OAClB1G,KAAKR,MAAMuJ,UAAU8yB,YAAY,uDACjC77B,KAAKyD,aACLzD,KAAKC,sBACL,MACJ,KAAKwG,EAAAA,EAAiBqJ,KAClB9P,KAAKR,MAAMuJ,UAAU8yB,YAAY,8CACjC77B,KAAKyD,aACL,MACJ,QACIzD,KAAKR,MAAMuJ,UAAUc,MAAM,qBAAqB,EAO3C,KAAAqR,OAAS,KACtBlb,KAAKR,MAAMuJ,UAAU8yB,YAAY,qCAE7B77B,KAAK6P,gCAAkC7P,KAAKiR,iBAAmBjR,KAAKgQ,+BACpEhQ,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAKiR,iBAEzDjR,KAAKgI,wBAAwBvB,EAAAA,EAAiBkB,IAAK3H,KAAK0P,gBAE5D1P,KAAKR,MAAM8P,YAAY0B,YAAY,EAOtB,KAAA7B,mBAAsBjP,IACnC,GAAIF,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAQ,CACjC,MAAMqQ,EAAiBtI,EAAA,GAAQlI,GAE3BA,EAAQgB,2BAA6BwP,EAAkBvJ,yBACvDuJ,EAAkBvJ,uBAAyBnH,KAAKG,cAAc+G,0BAA0BhH,EAAQgB,2BAGpGlB,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOsQ,qBAAqB,CACjDD,oBACAE,qBAAsB,CAClBjB,sCAAuC3P,KAAK6P,iCAEjD,GAOM,KAAApM,WAAa,KAC1BzD,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAK0P,gBACzD1P,KAAK+P,oBAAoB,EAQZ,KAAA/H,wBAA0B,CAACC,EAA6BrF,KACrE5C,KAAKwG,iBAAmByB,EACxBjI,KAAK4C,gBAAkBA,EAEnB5C,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,SAC7F1G,KAAKQ,iBAAmB4H,EAAA,GAAKpI,KAAK4C,kBAAqB,CAAC,GACxDrC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CACvBU,yBAA0BlB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,mBAErFa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEuF,iBAAkB/F,KAAKQ,iBAAiBuF,kBAAoB/F,KAAKH,qBAAsB,EAO3G,KAAAkQ,mBAAqB,KAC9B/P,KAAKwG,mBAAqBC,EAAAA,EAAiBqJ,KAC3C9P,KAAKR,MAAM8P,YAAYyB,UAEvB/Q,KAAKR,MAAM8P,YAAY0B,YAAa,EAK3B,KAAA8qB,iBAAoB3rB,IACjCnQ,KAAKR,MAAMuJ,UAAUc,MAAMsG,GAC3BnQ,KAAKR,MAAM8P,YAAYc,aAAY,GACnCpQ,KAAKR,MAAM8P,YAAY0B,aACvBhR,KAAKqQ,SAAS,CACVF,gBACF,EAvuBF,MAAM,QAAE9L,EAAO,KAAEvC,EAAI,UAAES,EAAS,UAAEwG,GAAc/I,KAAKR,MAErDQ,KAAKQ,iBAAmB,CAAC,EACzBR,KAAK4B,gBAAkB,CAAC,EACxB5B,KAAK6P,gCAAiC,EACtC7P,KAAKuC,UAAYA,EACjBvC,KAAKwG,iBAAmBC,EAAAA,EAAiBqC,KACzC9I,KAAKJ,gBAAkBkC,EAAKlC,gBAAgBS,QAAU,GACtDL,KAAKL,eAAiBmC,EAAKnC,eAAeU,QAAU,GACpDL,KAAKM,kBAAoBwB,EAAKmN,cAAc5O,QAAU,GACtDL,KAAKsG,cAAgB,IAAI0C,EAAAA,EAAc3E,EAAS9B,EAAWwG,GAC3D/I,KAAKG,cAAgB,IAAI8I,EAAAA,EACrBjJ,KAAKL,eACL,IAAIuJ,EAAAA,EAAed,EAAC,CAAC,EAAI7F,GAAavC,KAAKqH,gCAC3CrH,KAAKJ,iBAETI,KAAKiD,kBAAmBmG,EAAAA,EAAAA,oBACpBpJ,KAAKR,MAAM6E,QAAQC,QAAQ+E,kBAC3BrJ,KAAKR,MAAM8J,aACXtJ,KAAKR,MAAMuJ,WAGf/I,KAAK8H,MAAQ,CACTsJ,eAAe,EACflG,0BAA0B,EAC1B6wB,8BAA8B,EAC9B5rB,aAAc,GAItB,CAEOpQ,0BAAuB,IAAAwd,EAC1B,MACIlZ,SAAS,UACL0E,EACAQ,eACIC,gBAAgB,QAAEC,KAG1B9F,QAAQ,sBAAE+F,EAAqB,mBAAEC,IACjC3J,KAAKR,MAoDT,GAjDAQ,KAAK6B,gBAAgB7B,KAAKR,OAE1BQ,KAAKR,MAAMsC,KAAK8N,SAASxJ,MAAK,KAC1BpG,KAAK6I,6BACL7I,KAAKoP,kBAAkB,KAG3BrN,EAAAA,EAAAA,KACI,IAAM/B,KAAKN,kBACX,KACIM,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,IAAM/B,KAAKwG,mBACX,KACIxG,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,IAAM/B,KAAKR,MAAMsC,KAAK8N,SAASvP,QAAUL,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAO4Q,kBACzEA,IACQjR,KAAKR,MAAM8P,YAAYhN,aACnB2O,GAAmBjR,KAAK6P,gCACxB7P,KAAK6P,gCAAiC,EACtC7P,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAMmB,IAC7CA,GAAmBjR,KAAK6P,gCAC/B7P,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAMmB,GAAgB,KAMpFlP,EAAAA,EAAAA,KACI,IAAM/B,KAAKyP,2BACXA,IAKY,IAAD6N,EAJH7N,EACIzP,KAAKR,MAAM8P,YAAY0sB,YACvBh8B,KAAKkb,UAGsB,QAA/BoC,EAAAtd,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAid,GAA/BA,EAAiCzM,qBAAqB,CAAC,GACvD7Q,KAAKR,MAAM8P,YAAY6B,YAAY,IAK3CzH,EAAuB,CACvB,GAAID,IAAYA,EAAQG,eAEpB,YADAb,EAAUc,MAAM,8BAIpB,GAAIJ,IAAYA,EAAQK,gBAEpB,YADAf,EAAUc,MAAM,4BAIpB,MAAME,EAAO3B,EAAA,GAA6BuB,GAC1C3J,KAAKwB,YAAc,IAAIwI,EAAAA,EACnBjB,EACAgB,EACAN,aAAO,EAAPA,EAASG,eACTH,aAAO,EAAPA,EAASQ,4BACTR,aAAO,EAAPA,EAASS,oBAKTlK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,QACzCL,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,cAExF1G,KAAKwB,YAAY8I,kBAAkBtK,KAAKR,MAAMsC,KAAKsD,4BAG7DrD,EAAAA,EAAAA,KACI,SAAAoI,EAAA,OACoD,QAAhDA,EAAAnK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAA8J,OAAA,EAAhDA,EAAkDC,cACjDpK,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,OAAO,IACzG3G,UAAW,IAAAsK,QACe,QAAtBA,EAAMrK,KAAKwB,mBAAW,IAAA6I,OAAA,EAAhBA,EAAkBC,kBAAkBtK,KAAKR,MAAMsC,KAAKsD,2BAA0B,KAI5FrD,EAAAA,EAAAA,KACI,SAAAwI,EAAA,OAAsD,QAAtDA,EAAMvK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAkK,OAAA,EAAhDA,EAAkDjF,cAAc,IACtEvF,gBACUC,KAAKmF,uBAAuB,GAExC,CAG6B,QAAnCoY,EAAIvd,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAkd,GAA/BA,EAAiC0e,6CACjCl6B,EAAAA,EAAAA,KACI,SAAAqd,EAAA,OAAqC,QAArCA,EAAMpf,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA+e,OAAA,EAA/BA,EAAiC8c,aAAa,IACpDA,IAEQA,GACAA,EAAcC,gBAAkBC,EAAAA,cAAcptB,wBAC9CktB,EAAc/rB,cAEdnQ,KAAK87B,iBAAiBI,EAAc/rB,aAAc,KAK9DpO,EAAAA,EAAAA,KACI,SAAAs6B,EAAA,OAAqC,QAArCA,EAAMr8B,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAg8B,OAAA,EAA/BA,EAAiCC,kBAAkB,IACzDA,IACQA,IAAuBjJ,EAAAA,eAAerkB,yBACtC4jB,EAAAA,EAAAA,GAAqB5yB,KAAK6yB,iBAAkB7yB,KAAKR,MAAM6E,QAAQkF,cAAe,IAKlG,CAEOxJ,2BACuG,IAADyK,EAIlGC,EAJHzK,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,OACzC,QAApD8D,EAAIxK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAmK,GAAhDA,EAAkDlF,sBAC5CtF,KAAKmF,wBAGC,QAAhBsF,EAAAzK,KAAKwB,mBAAW,IAAAiJ,GAAhBA,EAAkBC,oBAE1B,CAEOC,sBACHC,EACAC,GAEA,OAAI7K,KAAK8H,QAAU+C,GAAa7K,KAAKR,MAAMsC,OAAS8I,EAAU9I,IAIlE,CAEOgJ,SACH,IAAK9K,KAAKyP,0BAA4BzP,KAAKu8B,gCACvC,OAAO,KAGX,MAAM,UACFh6B,EACA+M,aAAa,SAAEjJ,IACfrG,KAAKR,OAEH,WAAEuL,EAAU,OAAEpH,GAAW3D,KAAKR,MAE9B2Q,EAAenQ,KAAK8H,MAAMqI,aA0ChC,OAAOpF,EAxCQ3C,EAAAA,EAAA,GACRpI,KAAKR,OAAK,IACbgH,iBAAkBxG,KAAKwG,iBACvB5D,gBAAiB5C,KAAK4C,gBACtBpC,iBAAkBR,KAAKQ,iBACvBd,gBAAiBM,KAAKN,gBACtBY,kBAAmBN,KAAKM,kBACxBsB,gBAAiB5B,KAAK4B,gBACtBiB,sBAAuB7C,KAAK6C,sBAC5B+F,UAAWjF,EAAOiF,UAClBoC,UAAW,CACPoG,cAAepR,KAAK4C,iBAAmB5C,KAAKwG,mBAAqBC,EAAAA,EAAiBqJ,KAClF5E,yBAA0BlL,KAAKwG,mBAAqBC,EAAAA,EAAiBqJ,KACrEisB,6BAA8B/7B,KAAKgQ,gCAAkChQ,KAAKR,MAAM8P,YAAYhN,YAEhG0M,uBAAwB,CACpB5D,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAW,8BAA+B1H,EAAOiF,YAEhEhF,QAAStE,EAAAA,cAACgS,EAAAA,EAAqBlF,OAAAC,OAAA,GAAK,CAAExI,KAAMtB,EAAUgP,gCACtDjD,MAAOjI,GAAY8J,GAAgB7Q,EAAAA,cAACu0B,EAAAA,GAAcznB,OAAAC,OAAA,GAAK,CAAEe,MAAO7K,EAAUi6B,kBAAmBnvB,QAAS8C,KACtG0iB,iBAAkB7yB,KAAK6yB,iBAEvB4J,uBACIn9B,EAAAA,cAACi0B,EAAAA,EAAsBnnB,OAAAC,OAAA,GACf,CACAmnB,UAAWxzB,KAAK6P,+BAChBnK,KAAM,WACNhB,MAAO,OACP+uB,UAAWlxB,EAAUm6B,sCACrB74B,KAAMtB,EAAUo6B,iCAChB15B,iBAAkBjD,KAAKiD,iBACvBwoB,SAAUzrB,KAAKw7B,yCAI3BhqB,YAAaxR,KAAKyR,qBAClBlG,uBAAwBvL,KAAKoC,8BAIrC,CAkHQqP,qBACuB,IAADC,EAA1B,OAAI1R,KAAK4C,iBACEmJ,EAAAA,EAAAA,GAAY,CACf7L,QAASF,KAAK4C,gBACdzC,cAAeH,KAAKG,cAAcc,iBAA8D,QAA9CyQ,EAAC1R,KAAK4C,gBAAgB1B,gCAAwB,IAAAwQ,EAAAA,EAAI,IACpG9R,gBAAiBI,KAAKJ,kBAIvB,IACX,CAyHQiJ,6BAA0B,IAAA8I,EAC9B,MAAM,QAAErN,GAAYtE,KAAKR,MAAM6E,QACzBoH,EAAwB,QAAlBkG,EAAGrN,EAAQmF,eAAO,IAAAkI,OAAA,EAAfA,EAAiB1H,4BAEhCjK,KAAKN,gBAAkBM,KAAKsG,cAAcoF,0BAA0B1L,KAAKN,gBAAiBM,KAAKL,eAAgB8L,EACnH,CAgBsBuE,qCAA8B,IAAA4B,EAAAC,EAAAC,EAAA8qB,EAChD,MAAM,QAAEt4B,GAAYtE,KAAKR,MAAM6E,SAEzB,4BAAE2N,EAA2B,aAAEC,GAAiBjS,KAAKR,MAAMsC,KAC3DoQ,EAAuD,QAAtBN,EAAGK,EAAa5R,cAAM,IAAAuR,GAAiE,QAAjEA,EAAnBA,EAAqBhD,MAAKuD,GAF9B,oEAEyCA,EAAQxJ,cAAuC,IAAAiJ,OAAA,EAApFA,EACpCQ,UAEAC,EAAwC,QAAlBR,EAAGvN,EAAQmF,eAAO,IAAAoI,OAAA,EAAfA,EAAiBS,uBAC1CC,EAAuC,QAAlBT,EAAGxN,EAAQmF,eAAO,IAAAqI,OAAA,EAAfA,EAAiBU,sBAG/C,OAAsC,QAA/BoqB,EAAA58B,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAu8B,IAA/BA,EAAiCnqB,aAAaC,kBAE/CR,GACElS,KAAKR,MAAMsC,KAAK8N,SAASvP,QAAUL,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOoS,aAAaE,KAAKC,WAAc,IAAI/K,MAAKgL,IAAQ,IAAAC,EAAA,OAClHD,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjBD,EACjBd,EAA4B3R,cAAM,IAAAyS,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6DlE,MACzDqE,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBR,EACnCM,CAAQ,KAEhB7S,KAAKR,MAAMsC,KAAK8N,SAASvP,QAAUL,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOoS,aAAaE,KAAKC,WAAc,IAAI/K,MAAKgL,GAC1GA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBV,GAA0BQ,EAASE,eAAiBR,EAC9EM,IAEpB,CAEsBnD,qBAAc,IAAAmtB,EAChC,OAAsC,QAAtCA,EAAO78B,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAw8B,OAAA,EAA/BA,EAAiCntB,cAC5C,CAEsBuB,sBAAe,IAAA6rB,EACjC,OAAsC,QAAtCA,EAAO98B,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAy8B,OAAA,EAA/BA,EAAiC7rB,eAC5C,CAEsBiC,uBAClB,MAAMC,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAC/C,OAAO8S,SAAAA,EAAeC,cAAgBD,EAAcC,cAAgB,CACxE,CAEsBC,6BAClB,MAAMF,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAC/C,OAAK8S,GAAkBA,EAAcG,gBAG9BH,EAAcG,gBAAgBC,QAAO,CAACC,EAAeC,IACjDD,GAASC,EAASC,SAAW,IACrC,GAJQ,CAKf,CAEsBC,+BAAwB,IAAAC,EAC1C,MAAMT,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAG/C,OAA2C,QAA3CuT,EAAOT,aAAa,EAAbA,EAAeU,6BAAqB,IAAAD,EAAAA,EAFrB,CAG1B,CAEsBE,uBAClB,MACIhS,MAAM,SAAE8N,GAAU,OAClBjM,GACA3D,KAAKR,MACT,IAAKoQ,EAASvP,OACV,OAAO,EAGX,MAAM0T,EAAiBnE,EAASvP,OAC1BsS,EAAOoB,EAAetB,aAAaE,KACzC,IAAKA,IAASA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUnC,OAC3C,OAAO,EAGX,MAAM,kBAAEuD,EAAiB,qBAAEC,GAAyBF,EAC9CG,EAA6BvQ,EAAOwQ,mBAAqBH,GAAqBC,EAKpF,OAFmBtB,EAAKyB,aAAe,GAAKpU,KAAKqT,uBAAyBrT,KAAKkT,iBAAmBlT,KAAK2T,yBAEpF,IAAMO,CAC7B,CAEsBzE,+BAAwB,IAAAstB,EAAAC,EAC1C,OACIh9B,KAAK8T,qBACqB,QAAzBipB,EAAC/8B,KAAKR,MAAMsC,KAAK8N,gBAAQ,IAAAmtB,GAAQ,QAARA,EAAxBA,EAA0B18B,cAAM,IAAA08B,GAAhCA,EAAkCE,qCACN,QAAzBD,EAACh9B,KAAKR,MAAMsC,KAAK8N,gBAAQ,IAAAotB,GAAQ,QAARA,EAAxBA,EAA0B38B,cAAM,IAAA28B,IAAhCA,EAAkCE,sBAEhD,CAEsBX,sCAClB,OAAOY,EAAAA,GAAsBn9B,KAAKR,MAAM6E,QAAQC,UAAwD,IAA5C84B,EAAAA,sBAAsBC,iBACtF,IA1nBY1xB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sDAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CA4QXD,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,6CAsBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,2CAiBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,wCA+NGF,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,oDA6BC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,oCAIC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,qCAIC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,sCAKC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,4CAUC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,8CAOC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,sCAwBC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,8CAQC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,qDA8IT1I,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,uCAtwBLmD,GAAsBrD,EAAAA,EAAAA,IAAA,CAF3B2I,EAAAA,gBACAxI,EAAAA,IACKkD,GAixBN,yGC50BA,MAAMjD,EAA2CC,IAA6B,IAA5B,cAAEC,EAAa,MAAEC,GAAOF,EACtE,OACI1M,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKJ,GACLC,EAAMI,KAAKC,GACDjN,EAAAA,cAAAA,EAAAA,SAAA,KAAGiN,EAAKC,eAEhB,EAkBTnK,EAAqDoK,IAUtD,IAVuD,YACxDsB,EAAW,QACXnK,EAAO,MACPsI,EAAK,SACL7F,EAAQ,MACRwD,EAAK,iBACLmE,EAAgB,WAChBC,EAAU,mBACVC,EAAkB,aAClBC,GACH1B,EACG,OACInN,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK0B,GACLnK,EACAsI,EAAMI,KAAKC,IACR,MAAM,YAAE6B,EAAW,IAAExB,EAAG,MAAEyB,EAAK,MAAEC,EAAK,MAAEC,GAAUhC,EAClD,OACIjN,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+B,EAAW,CAAExB,IAAKA,IACvByB,EACAC,EACAC,EACE,IAGdlI,GACG/G,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKxC,EAAM2E,cACX3E,EAAMuD,MACNvD,EAAMwD,SAGdW,GAAoBC,EACpBC,GAAsBC,EACpB,EAgCf,EAvB+E3O,IAC3E,MAAM,uBACFwP,EAAsB,iBACtB6jB,EAAgB,MAChBvkB,EAAK,UACLtD,EAAS,QACTpH,EAAO,uBACP64B,EAAsB,YACtBjrB,EAAW,uBACXjG,GACA/L,EAEJ,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAK2C,EAAsB,CAAEsuB,IAAKzK,IACpCjvB,EACA0K,EACAtD,EAAU+wB,8BAAgCU,EAC1CzxB,EAAUoG,eAAiB9R,EAAAA,cAACyM,EAAWK,OAAAC,OAAA,GAAKmF,IAC5CxG,EAAUE,0BAA4B5L,EAAAA,cAAC+C,EAAgB+J,OAAAC,OAAA,GAAKd,IACxD,wVCzDV,MAAMgJ,EAAqEvI,IAO7E,IAP8E,gBAC/EwI,EAAe,UACfC,EAAS,MACTrH,EAAK,UACLsH,EAAS,UACTnS,EAAS,iCACTg7B,GAAmC,GACtCvxB,EACG,MASM2I,GAAgBC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,QAAS1Q,QAT9C,CACb2Q,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,IAAKa,EAAAA,gBAAgBC,YAAYhB,GAC7B,OAAO,KAEX,MAAM+oB,EAAmC,GACzC,GAAI/oB,EAAUhE,OAAS,EAAG,CACtB,MAAMgtB,EAAsBvxB,GAA2CwxB,IAAQxxB,GAAOK,GAAQA,EAAKoxB,oBACnGH,EAAqBh2B,KAAKi2B,EAAmBhpB,GAAY,CAE7D,MAAMmpB,EAA6BL,GAAoCC,EAAqB/sB,OAAS,EAErG,OAAOmtB,EACHt+B,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,0BAAyCjS,EAAUs7B,sCAEtEv+B,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,mBACflV,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,0BACflV,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,+BAA8CpH,GACjE9N,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,+BAA8CE,IAErEpV,EAAAA,cAAA,OAAKsJ,UAAW,GAAG4L,yBACdC,EAAUnI,KAAKuG,IACZ,MAAM6C,EAAY7C,EAAS8C,SAX1B,EAYD,IAAI/M,EAAY,GAAG4L,gCAKnB,OAHIkB,IACA9M,EAAYyC,IAAWzC,EAAW,wBAGlCtJ,EAAAA,cAAA,OAAKsJ,UAAWA,EAAWgE,IAAKiG,EAAS+C,QACrCtW,EAAAA,cAACuW,EAAAA,GAAKzJ,OAAAC,OAAA,GAAKwG,EAASiD,aACnBP,EACKG,GACIpW,EAAAA,cAAA,OACIyW,KAVT,OAUmB,cACE3U,EAAAA,EAAAA,QAAOmB,EAAUyT,oBAAqBnD,EAAS8C,SAAU9C,EAASiD,WAAWG,SACzFrN,UAAW,GAAG4L,uCAEb3B,EAAS8C,UAGlBD,GACIpW,EAAAA,cAAA,yBACqBuT,EAAS+C,OAAM,cACpB,OACZhN,UAAW,GAAG4L,uCAEb3B,EAAS8C,WAGtBJ,GAAgBG,GACdpW,EAAAA,cAAA,QAAM4W,GAAIrD,EAAS+C,OAAQhN,UAAU,+BAChCxH,EAAAA,EAAAA,QAAOmB,EAAUyT,oBAAqBnD,EAAS8C,SAAU9C,EAASiD,WAAWG,UAGpF,KAKzB,EAMQE,EAAuC,CAChDC,UAAW,CACPnB,GAAI,CAAEoB,EAAG,6BAA8BnB,EAAG,IAAKoB,EAAG,KAClDjB,GAAI,CAAEgB,EAAG,6BAA8BnB,EAAG,IAAKoB,EAAG,KAClDhB,GAAI,CAAEe,EAAG,6BAA8BnB,EAAG,IAAKoB,EAAG,MAEtDC,UAAU,EACVC,QAAS,2mBCYb,IAAMC,EAAN,cAAsCnX,EAAAA,UAoDlCC,YAAmBC,GAA4B,IAAAkX,EAC3CjX,MAAMD,GA9CU,KAAAE,gBAA0B,MAI1B,KAAAyC,kBAA+B,GAU/B,KAAAwU,2BAAsC,CAAC,EAanD,KAAAhX,eAAsC,GAEtC,KAAAC,gBAAoC,GAI3B,KAAAC,mBAA6B,EAM7B,KAAA+W,8BAAwC,kEAEjD,KAAA1E,mCAA8C,EAErC,KAAA2gB,iBAAiDvzB,EAAAA,YAsU3D,KAAAw3B,SAAW,CAAC3f,EAA2Cqc,KAG1D,GAFArc,EAAKqc,UAAYA,EAEbxzB,KAAK8H,MAAMqxB,sBAAuB,CAClC,MAAM2E,EACF99B,KAAK8H,MAAMqxB,sBAAsB7sB,KAAIyxB,IAAe,IAAAC,EAKhD,OAHyB,QAArBA,EAAAD,EAAalrB,gBAAQ,IAAAmrB,GAAU,QAAVA,EAArBA,EAAuBnrB,gBAAQ,IAAAmrB,OAAA,EAA/BA,EAAiC3f,UAAWlH,EAAKtE,SAASwL,SAC1D0f,EAAavK,UAAYA,GAEtBuK,CAAY,KACjB,GAEV/9B,KAAKqQ,SAAS,CACV8oB,sBAAuB2E,GACxB,MAEHxV,QAAQze,MAAM,8BAA+B,EAoB9C,KAAAotB,wBAA0B,CAAC8G,EAAwBv5B,KACtD,MAAM2U,EAAkB3U,EAAM4U,cAAc1U,MACtC9B,EAAkB5C,KAAKmC,kBAAkByM,MAAK1O,IAAYA,EAAQ2O,UAAY,IAAIwK,aAAeF,IACvG,GAAInZ,KAAK8H,MAAMyP,eAAgB,CAC3B,MAAMumB,EAAU99B,KAAK8H,MAAMyP,eAAejL,KAAI6K,IAC1C,GAAIA,EAAKtE,SAASwL,SAAW0f,EAAa1f,OAAQ,CAC9C,MAAM4f,EAAe71B,EAAAA,EAAA,GACd+O,EAAKtE,UAAQ,IAChBuI,gBAAiBxY,IAErB,OAAAwF,EAAAA,EAAA,GACO+O,GAAI,IACPtE,SAAUorB,GAAe,CAGjC,OAAO9mB,CAAI,IAGfnX,KAAKqQ,SAAS,CACVkH,eAAgBumB,GACjB,GAIJ,KAAAI,0BAA4B,CAACH,EAAwBv5B,KACxD,MAAM2U,EAAkB3U,EAAM4U,cAAc1U,MACtC9B,EAAkB5C,KAAKmC,kBAAkByM,MAAK1O,IAAYA,EAAQ2O,UAAY,IAAIwK,aAAeF,IACnGnZ,KAAK8H,MAAMyP,gBACXvX,KAAKqQ,UAAS8tB,IAeH,CACH5mB,eAfY4mB,EAAU5mB,eAAejL,KAAI6K,IACzC,GAAIA,EAAKtE,SAASwL,SAAW0f,EAAa1f,OAAQ,CAC9C,MAAM4f,EAAe71B,EAAAA,EAAA,GACd+O,EAAKtE,UAAQ,IAChBuI,gBAAiBxY,IAErB,OAAAwF,EAAAA,EAAA,GACO+O,GAAI,IACPtE,SAAUorB,GAAe,CAGjC,OAAO9mB,CAAI,OAMhB,EAIJ,KAAAmiB,4BAA+B90B,IAC9BxE,KAAK8H,MAAMqxB,uBAAyBn5B,KAAK8H,MAAMyP,eAC/CvX,KAAK8H,MAAMqxB,sBAAsBh4B,SAAQ,CAAC48B,EAAchK,KACpD,GAAIgK,EAAavK,UAAW,CACxB,MAAM4K,EAAWp+B,KAAK8H,MAAMyP,eAAe3I,MAEvCuI,IAAI,IAAAknB,EAAA,OAAIlnB,EAAKtE,SAASwL,UAAgC,QAA1BggB,EAAKN,EAAalrB,gBAAQ,IAAAwrB,GAAU,QAAVA,EAArBA,EAAuBxrB,gBAAQ,IAAAwrB,OAAA,EAA/BA,EAAiChgB,OAAM,IAGxE+f,GACAp+B,KAAKk+B,0BAA0BE,EAASvrB,SAAUrO,EAAM,KAKpE8jB,QAAQze,MAAM,gCAAiC,EAQtC,KAAAgN,iBAAmB9W,UAChC,MAAM+W,EAA8B9W,KAAK+W,2BACnCtC,EAAoC,GAE1C,IAAK,IAADpF,EACA,MAAM2H,QAAiBhX,KAAKiX,yBACO,QAA/B5H,EAAArP,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAgP,OAAA,EAA/BA,EAAiCoD,aAAaE,KAAKuE,YAAa,EAChEJ,GAEJ,IAAK,MAAMK,KAAQL,EAAiB,CAChC,MAAMM,EAAqCJ,EAASpI,MAAKyI,GAAKA,EAAExI,WAAasI,EAAKG,YAClF7C,EAAUjN,KAAK,CAAEqL,SAAUsE,EAAMC,WAAW,CAEhDpX,KAAKqQ,SAAS,CAAEkH,eAAgB9C,IAChCzU,KAAKqQ,SAAS,CAAEiuB,qBAAsB7pB,IAEtC,MAAM8pB,EAA+B9pB,EAAUnI,KAAIuG,IAAQ,CACvD2gB,WAAW,EACX3gB,SAAUA,MAEd7S,KAAKqQ,SAAS,CAAE8oB,sBAAuBoF,GAMM,CAL/C,MAAO10B,GAEL7J,KAAKR,MAAMuJ,UAAUc,MAAMA,GAC3B7J,KAAKqQ,SAAS,CAAEkH,eAAgB,KAChCvX,KAAKqQ,SAAS,CAAEiuB,qBAAsB,KACtCt+B,KAAKqQ,SAAS,CAAE8oB,sBAAuB,IAAM,GASpC,KAAAr5B,sBAAwBC,UACrCC,KAAKC,sBACL,MAAMC,EAAUF,KAAKG,cAAcC,qBAAqBC,EAAQL,KAAKM,oBAErEC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQ,MACrCF,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEE,QAASR,EAAQQ,WAC9CH,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEG,WAAYT,EAAQS,cACjDJ,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEI,KAAMV,EAAQU,QAC3CL,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAOX,EAAQW,SAC5CN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEM,aAAcZ,EAAQY,gBACnDP,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEO,YAAab,EAAQa,cAGlDC,YAAW,MACPT,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEC,OAAQP,EAAQO,QAAS,GAX1C,EAYL,EAOE,KAAAR,oBAAsB,KACnC,MAAMuX,EAAoBxX,KAAKG,cAAcc,iBACzCjB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,iBAE3D,IAAK,MAAM+X,KAAiBD,EAAmB,CAAC,IAADnW,OAEOC,IAA9CtB,KAAKQ,iBAAiBiX,EAAclW,OACnB,QAAjBF,EAACrB,KAAKwB,mBAAW,IAAAH,GAAhBA,EAAkBI,sBAAsBC,SAAS+V,EAAclW,QAEhEvB,KAAKG,cAAcsX,EAAclW,MAAQ,GAAE,CAGnDvB,KAAK2B,kBAAkB,EAOV,KAAAA,iBAAmB,KAChC3B,KAAK4B,gBAAkB,CAAC,CAAC,EAgBZ,KAAAC,gBAAmBrC,IAChC,MAAM,KAAEsC,GAAStC,GAEjBuC,EAAAA,EAAAA,KACI,IAAMD,EAAKnC,eAAeU,SAC1B,KAAK,IAAA2B,EACDhC,KAAKL,eAA2C,QAA7BqC,EAAGF,EAAKnC,eAAeU,cAAM,IAAA2B,EAAAA,EAAI,EAAE,KAI9DD,EAAAA,EAAAA,KACI,IAAMD,EAAKlC,gBAAgBS,SAC3B,KAAK,IAAA4B,EACDjC,KAAKJ,gBAA6C,QAA9BqC,EAAGH,EAAKlC,gBAAgBS,cAAM,IAAA4B,EAAAA,EAAI,EAAE,KAIhEF,EAAAA,EAAAA,KACI,IAAMD,EAAK5B,QAAQG,SACnB,KAAK,IAAA6B,EACDlC,KAAKmC,kBAAuC,QAAtBD,EAAGJ,EAAK5B,QAAQG,cAAM,IAAA6B,EAAAA,EAAI,EAAE,KAI1DH,EAAAA,EAAAA,KACI,IAAMD,EAAKmN,cAAc5O,SACzB,KAAK,IAAA6O,EACDlP,KAAKM,kBAA6C,QAA5B4O,EAAGpN,EAAKmN,cAAc5O,cAAM,IAAA6O,EAAAA,EAAI,EAAE,KAIhEnN,EAAAA,EAAAA,KACI,IAAMD,EAAKmQ,aAAa5R,SACxB,KAAK,IAAAqX,EACD1X,KAAKkS,kCAA4D,QAA3BwF,EAAG5V,EAAKmQ,aAAa5R,cAAM,IAAAqX,GAEhE,QAFgEA,EAAxBA,EAA0B9I,MAC/DuD,GAAWA,EAAQxJ,OAAS3I,KAAK4W,uCACpC,IAAAc,OAAA,EAFwCA,EAEtCtF,SAAS,GAEnB,EAOY,KAAA2E,yBAA2B,KAAiB,IAAA7F,EAAAa,EACzD,OAA2G,QAA3Gb,EAAsC,QAAtCa,EAAO/R,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA0R,GAA6B,QAA7BA,EAA/BA,EAAiCU,aAAaE,KAAKC,iBAAS,IAAAb,OAAA,EAA5DA,EAA8D5I,QAAOgO,GAAQnX,KAAK2X,YAAYR,YAAM,IAAAjG,EAAAA,EAAI,EAAE,EAQpG,KAAAyG,YAAeR,GACrBnX,KAAK4X,iBAAiBT,EAAKpE,qBAA8CzR,IAA5B6V,EAAKU,oBAAgE,KAA5BV,EAAKU,oBAQrF,KAAAD,iBAAoB3E,IAA6C,IAAA6E,EAAAlG,EAC9E,MAAMS,EAA2D,QAArCyF,EAAG9X,KAAKR,MAAM6E,QAAQC,QAAQmF,eAAO,IAAAqO,OAAA,EAAlCA,EAAoCxF,wBAE7D,4BAAEN,EAA2B,aAAEC,GAAiBjS,KAAKR,MAAMsC,KAGjE,IAF6D,QAAtB8P,EAAGK,EAAa5R,cAAM,IAAAuR,GAAiE,QAAjEA,EAAnBA,EAAqBhD,MAAKuD,GAF9B,oEAEyCA,EAAQxJ,cAAuC,IAAAiJ,OAAA,EAApFA,EACpCQ,iBACoD9Q,IAAjB2R,EAA4B,CAAC,IAADH,EACjE,MAAMiF,EAAuD,QAArCjF,EAAGd,EAA4B3R,cAAM,IAAAyS,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6DjL,MACpFmQ,GAAcA,IAAe/E,IAEjC,YAA8B3R,IAAvByW,GAAmCA,CAA2B,CAEzE,YAAwBzW,IAAjB2R,QAAyD3R,IAA3B+Q,GAAwCY,IAAiBZ,CAAsB,EASvG,KAAA4E,wBAA0BlX,MAAOkY,EAAmBxD,KACjE,MAAMlL,EAAgBvJ,KAAKR,MAAM6E,QAAQkF,cACnC2O,EAAgBzD,EACjBtL,QAAOgO,IAASgB,EAAAA,iBAAiBC,kBAAkBjB,EAAKG,aACxDhL,KACG6K,GACI,IAAIkB,EAAAA,aACAlB,EAAKG,WAAa,EAClB/N,EAAcC,eAAe8O,YAC7BL,OACA3W,EACAiI,EAAcC,eACd2N,EAAKqnB,WAAa,KAGlC,OAAOjmB,EAAAA,EAAAA,mBAAkBL,EAAe3O,EAAc,EAQzC,KAAAk1B,6BAA+B,CAACjmB,EAA4BC,KACzE,MAAM,OAAE9U,EAAM,QAAEU,GAAYrE,KAAKR,OAC3B,cAAEqe,GAAkBla,EAGpB+6B,EAAkD1+B,KAAK8H,MAAMyP,eAC9DpO,QAAOkO,IAAMc,EAAAA,iBAAiBC,kBAAkBf,EAAED,WAClD9K,KAAI6K,IAAI,IAAA4G,EAAAC,EAAAC,EAAAC,EAAAC,EAAAwgB,EAAAvgB,EAAA,MAAK,CACVxI,OAA4B,QAAtBmI,EAAE5G,EAAKtE,SAASwL,cAAM,IAAAN,EAAAA,EAAI,GAChCjI,WAAY,CACRtM,eAAgBnF,EAAQkF,cAAcC,eACtCZ,UAAW,8DACXqN,QAAqB,QAAd+H,EAAE7G,EAAKC,eAAO,IAAA4G,OAAA,EAAZA,EAAcrV,KACvB2V,IAAkC,QAA/BL,EAAc,QAAdC,EAAE/G,EAAKC,eAAO,IAAA8G,OAAA,EAAZA,EAAcK,uBAAe,IAAAN,EAAAA,EAAI,GACtCO,aAAaC,EAAAA,EAAAA,qBACG,QADgBN,EAC5BhH,EAAKC,eAAO,IAAA+G,OAAA,EAAZA,EAAcO,OACdra,EAAQkF,cAAcC,eAAe8O,YAClB,QAD6BqmB,EAChDt6B,EAAQC,QAAQ0iB,WAAG,IAAA2X,GAAQ,QAARA,EAAnBA,EAAqBh7B,cAAM,IAAAg7B,OAAA,EAA3BA,EAA6BC,kBAEjC5pB,aAAc3Q,EAAQC,QAAQ0Q,aAC9B6I,cAAeA,QAAAA,EAAiB1H,EAChCwI,oBAAqB,SAEzBhJ,SAAgC,QAAxByI,EAAEjH,EAAKtE,SAAS+L,gBAAQ,IAAAR,EAAAA,EAAI,EACvC,IAUL,OAAO4a,EAAAA,EAAAA,GAAoB,CAIvB11B,OAAQA,KACJtD,KAAK2Y,WACLH,SAAAA,GAAiB,EAGrBhV,SAAWxD,KAAK4C,iBAAoB5C,KAAKsG,cAAcC,sBAd7BqS,KAC1B5Y,KAAKyD,aACLgV,SAAAA,GAAmB,EAY4D,OAE/Eqe,SAAU92B,KAAK82B,SAAS+H,KAAK7+B,MAE7Bo5B,YAAap5B,KAAKo5B,YAAYyF,KAAK7+B,MAEnCq5B,QAASA,KACLr5B,KAAKo5B,aAAY,EAAM,EAG3BnC,wBAAyBj3B,KAAKi3B,wBAAwB4H,KAAK7+B,MAE3Ds5B,4BAA6Bt5B,KAAKs5B,4BAA4BuF,KAAK7+B,MAKnEu5B,oBAAqBA,KACjB,MAAMuF,EAA6B9+B,KAAK8H,MAAMqxB,sBACxCn5B,KAAK8H,MAAMqxB,sBAAsB7sB,KAAIyxB,IAAY,CAC7CvK,WAAW,EACX3gB,SAAUkrB,EAAalrB,aAE3B,GACN7S,KAAKqQ,SAAS,CACV8oB,sBAAuB2F,EACvBvnB,eAAgBvX,KAAK8H,MAAMw2B,uBAE/Bt+B,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAK2W,4BACzD3W,KAAK+P,oBAAoB,EAG7B2I,uBAAwB1Y,KAAKR,MAAM8P,YAAYoJ,uBAE/CugB,cAAej5B,KAAK8H,MAAMyP,eAE1B2hB,mBAAoBwF,EAEpBvF,sBAAuBn5B,KAAK8H,MAAMqxB,sBAAwBn5B,KAAK8H,MAAMqxB,sBAAwB,GAE7Fh3B,kBAAmBnC,KAAKmC,kBAExBkC,QAASrE,KAAKR,MAAM6E,QAEpBq0B,aAAc14B,KAAK04B,aAEnBF,SAAUx4B,KAAKR,MAAM0W,GAErBuiB,eAAgBz4B,KAAKR,MAAMqjB,SAE3BtgB,UAAWvC,KAAKuC,UAEhBU,iBAAkBjD,KAAKiD,iBAEvB2R,SAAU5U,KAAK4U,UACjB,EASW,KAAAxS,0BAA4B,CAACoW,EAA4BC,KACtE,MAAMtY,GACFH,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKsG,cAAcC,sBAC/DvG,KAAKG,eAUf,OAAOkC,EAAAA,EAAAA,GAAiB,CACpBC,WAAYtC,KAAKsC,WACjBC,UAAWvC,KAAKuC,UAChBC,YAAaC,EAAAA,EAAYC,SACzBvC,cAAeA,EAAcc,iBAAiBjB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,iBACrGiD,uBAAwB3C,KAAKN,gBAC7BG,mBAAoBG,KAAKH,mBACzB+C,gBAAiB5C,KAAKQ,iBACtBoB,gBAAiB5B,KAAK4B,gBACtByE,SAAUrG,KAAKqG,SACfxD,sBAAuB7C,KAAK6C,sBAC5BI,iBAAkBjD,KAAKiD,iBACvBH,oBAAqB3C,EAAc4C,gCAC/B/C,KAAKuC,UAAUS,iCACfhD,KAAKM,mBAET4C,cAAelD,KAAKmD,+BACpBC,iBAAkBpD,KAAKqD,kCACvBqV,uBAAwB1Y,KAAKR,MAAM8P,YAAYoJ,uBAK/CpV,OAAQA,KACJtD,KAAK2Y,WACLH,SAAAA,GAAiB,EAGrBhV,SAAWxD,KAAK4C,iBAAoB5C,KAAKsG,cAAcC,sBAhC7BqS,KAC1B5Y,KAAKyD,aACLgV,SAAAA,GAAmB,EA8B4D,QACjF,EAWW,KAAAI,qBAAuB,CACpCkmB,EACAjmB,EACAN,EACAC,KASOM,EAAAA,EAAAA,GAAc,CACjB5Y,cAAeH,KAAKG,cACpB8D,UAAWjE,KAAKmC,kBAChBI,UAAWvC,KAAKuC,UAChB3C,gBAAiBI,KAAKJ,gBACtBgD,gBAAiB5C,KAAK2W,2BACtBqC,sBAAuBhZ,KAAKiZ,uBAC5BP,uBAAwB1Y,KAAKR,MAAM8P,YAAYoJ,uBAC/CzV,iBAAkBjD,KAAKiD,iBAKvBsxB,wBAAyBA,KACrBv0B,KAAKg/B,6BACLD,SAAAA,GAAkC,EAMtCh6B,aAAcA,KACV/E,KAAKgF,kBACL8T,SAAAA,GAAuB,EAM3BxV,OAAQA,KACJtD,KAAKkZ,mBACLV,SAAAA,GAAiB,EAGrBhV,SAAWxD,KAAK4C,gBAtCUgW,KAC1B5Y,KAAKyD,aACLgV,SAAAA,GAAmB,EAoCe,OAElC+b,+BAAgCx0B,KAAKR,MAAMmE,OAAO6wB,iCAuBzC,KAAArvB,sBAAwBpF,UACrC,MACI+B,MACIsD,2BAA6B/E,OAAQ+E,KAEzCpF,KAAKR,MAEuC,IAAD6F,EAA3CD,SAAAA,EAA2BE,iBACX,QAAhBD,EAAArF,KAAKwB,mBAAW,IAAA6D,GAAhBA,EAAkBE,kBAAkB,0BAA2B,oCAAqCvF,KAAKF,uBAAuB,EAQvH,KAAAmZ,uBAA0BzU,IACvC,MAAM2U,EAAkB3U,EAAM4U,cAAc1U,MACtC9B,EAAkB5C,KAAKmC,kBAAkByM,MAAK1O,IAAYA,EAAQ2O,UAAY,IAAIwK,aAAeF,IACnGvW,IACA5C,KAAK2W,2BAA6B/T,EAAgB,EASzC,KAAA4C,mBAAqB,CAACjE,EAAcmD,MACjDnE,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE,CAACe,GAAOmD,IACrC1E,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,gBAAiB6B,EAAK,EAOpG,KAAA4B,+BAAkCqB,IAC/C,GAA0B,aAAtBA,EAAMC,OAAOiB,KACb1F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMiD,EAAMC,OAAOkB,aACrD,CACH,MAAMjB,GAASF,EAAMC,OAAOC,OAAS,IAAIkB,QAAQ,IAAIC,OAAO,OAAQ,MAAO,IAC3E7F,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMmD,EAAO,GAQzC,KAAArB,kCAAqCmB,IAClDxE,KAAKwF,mBAAmBhB,EAAMC,OAAOlD,KAAMiD,EAAMC,OAAOC,OAEpDF,EAAMC,OAAOlD,OAASuE,EAAAA,GAAgBA,EAAAA,GAAgB5E,2BACtDlB,KAAKgG,iBAAiBxB,EAAMC,OAAOC,MAAO,EAOjC,KAAAnB,0BAA4B,KACzC,IAAKvD,KAAKG,cAAcsF,sBAAsBzF,KAAKQ,iBAAkBR,KAAK4B,gBAAiB5B,KAAKN,iBAC5F,OAGJ,IAAIwG,EAEAA,EADAlG,KAAKsG,cAAcC,uBAAyBvG,KAAKsZ,cAActZ,KAAKQ,kBAEhER,KAAKwG,mBAAqBC,EAAAA,EAAiBC,OACrC1G,KAAKsG,cAAcK,sBAAsB3G,KAAKQ,kBAC9CR,KAAKsG,cAAcM,mBAAmB5G,KAAKQ,kBAE1CqG,QAAQC,QAAQ,CAAE5G,QAASF,KAAKQ,mBAG/CR,KAAKsC,YAAa,EAClBtC,KAAK+P,qBAEL7J,EAASE,MACJ/F,IACGL,KAAKsC,YAAa,EAEdjC,EAAOH,SACPF,KAAKqG,UAAW,EAChBrG,KAAKi/B,cACD5+B,EAAO8B,kBACPnC,KAAK+G,sBAAsB,CAAE5E,kBAAmB9B,EAAO8B,kBAAmBjC,QAASG,EAAOH,UAE1FF,KAAK+G,sBAAsB,CAAE7G,QAASG,EAAOH,YAGjDF,KAAKqG,UAAW,EAChBrG,KAAK6C,sBAAwBxC,EAC7BL,KAAK+P,qBAAqB,IAGlC,KACI/P,KAAKqG,UAAW,EAChBrG,KAAKsC,YAAa,EAClBtC,KAAK+P,oBAAoB,GAEhC,EAOY,KAAA/J,iBAAoBtG,IAA2B,IAAAsH,EAC5DhH,KAAKN,gBAAkBA,EACvB,MAAM+Z,EAAyBzZ,KAAKG,cAAc+G,0BAA0BxH,IAC5Ea,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEU,yBAA0BxB,KACvDa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAE2G,uBAAwBsS,IACrC,QAAhBzS,EAAAhH,KAAKwB,mBAAW,IAAAwF,GAAhBA,EAAkBI,gCAAgCqS,GAClDzZ,KAAKC,qBAAqB,EAOb,KAAAoH,6BAA+B,KAC5C,MAAM,OAAE1D,GAAW3D,KAAKR,MAClB8H,EAA8C,GAQpD,OANK3D,EAAO4D,iBACRD,EAAyBE,KAAK1B,EAAAA,GAAgBC,kBAGlDuB,EAAyBE,KAAK1B,EAAAA,GAAgB2B,WAEvCH,CAAwB,EAMlB,KAAAI,mBAAqB,MAE7B1H,KAAKN,iBACJM,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,QAKnG1G,KAAKsG,cAAcsB,kBAAkB5H,KAAKN,iBAAiB0G,MAAM/F,IAC3CA,EAAOwH,MAAKC,GAASA,EAAMC,UAAY/H,KAAKQ,iBAAiBK,UAI3EN,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CAAEK,MAAO,KAGxCb,KAAKM,kBAAoBD,CAAM,GACjC,EAgBW,KAAAqZ,mBAAqB,KAClC,GAAI1Z,KAAKmC,kBAAmB,CAExB,OADuBnC,KAAKmC,kBAAkByM,MAAM1O,GAAqBA,EAAQuH,cACvDzH,KAAKmC,kBAAkBsO,OAAS,EAAIzQ,KAAKmC,kBAAkB,QAAKb,EAAW,CAEzF,EAOH,KAAAqY,yCAA2C,KACxD,GAAI3Z,KAAK4Z,kCAAmC,CACxC,MAAM,qBAAE3F,EAAoB,QAAE/T,EAAO,kCAAE2Z,GAAsC7Z,KAAK4Z,kCAElF,IAAIE,EAQJ,OALIA,EADAD,EACyB3Z,EAAUF,KAAK+Z,kBAAkB7Z,QAAWoB,EAE5C2S,EAAuBjU,KAAKga,mCAAmC/F,QAAwB3S,EAG7GwY,CAAuB,CAElB,EAQH,KAAAE,mCAAsC/F,IACnD,MAAMwF,EAAyBxF,EAAqBgG,QAE9CC,EAA2BT,EAAyBzZ,KAAKma,4BAA4BV,QAA0BnY,EAEjH4Y,GAA4BA,IAA6Bla,KAAKN,iBAC9DM,KAAKgG,iBAAiBkU,GAgB1B,MAbyB,CACrB/S,uBAAwBsS,EACxB9Q,KAAMsL,EAAqBmG,WAC3B3Z,OAAQwT,EAAqBoG,SAC7BC,aAAcrG,EAAqBsG,SACnC3Z,KAAMqT,EAAqBrT,KAC3BC,MAAOoT,EAAqBpT,MAC5BH,QAASuT,EAAqBuG,IAC9BC,MAAOxG,EAAqBwG,MAC5BvZ,yBAA0BgZ,EAC1BnU,iBAAkB/F,KAAKH,mBAGb,EAQD,KAAAka,kBAAqBW,IAClC,MAAMjB,EAAyBiB,EAAevT,uBAExC+S,EAA2BT,EAAyBzZ,KAAKma,4BAA4BV,QAA0BnY,EAEjH4Y,GAA4BA,IAA6Bla,KAAKN,iBAC9DM,KAAKgG,iBAAiBkU,GAS1B,OANa9R,EAAAA,EAAA,GACNsS,GAAc,IACjBxZ,yBAA0BgZ,EAC1BnU,iBAAkB/F,KAAKH,oBAGb,EAQD,KAAAsa,4BAA+BV,IAC5C,MAAMkB,EAAgB3a,KAAKL,eAAeiP,MAAKgM,IAAU,IAAAC,EACrD,OAAsB,QAAfA,EAAAD,EAAQE,eAAO,IAAAD,OAAA,EAAfA,EAAiBE,iBAAkBtB,EAAuBsB,aAAa,IAGlF,OAAOJ,aAAa,EAAbA,EAAeK,eAAe,EAMxB,KAAA5L,iBAAmB,KAChCpP,KAAKR,MAAM8P,YAAYC,KAAK,CACxBC,OAAQxP,KAAKib,WAAa,WAAa,WACvCC,OAAQlb,KAAKkb,OACb1X,SAAUxD,KAAKwD,SACfmV,SAAU3Y,KAAK2Y,WAGnB,MAAMxF,EAAgBnT,KAAKR,MAAMsC,KAAK8N,SAASvP,OAE/C,GAAIL,KAAKib,WAAY,CACjB,IAAIE,EACJ,MAAM+jB,EAAgCl/B,KAAK+W,2BAGvCoE,EADAhI,SAAAA,EAAeV,aAAaE,KAAKyI,gBAChBjI,EAAcV,aAAaE,KAAKyI,gBAEjD5F,EAAAA,gBAAgBC,YAAYypB,SACa59B,IAAzC49B,EAAkB,GAAG9jB,iBACgC,KAArD8jB,EAAkB,GAAG9jB,gBAAgBra,YAEpBm+B,EAAkB,GAAG9jB,gBAC/Bpb,KAAK2Z,2CACK3Z,KAAK2Z,2CACf3Z,KAAK0Z,qBACK1Z,KAAK0Z,qBAELvG,SAAAA,EAAekI,yBAA2BlI,EAAcmI,wCAAqCha,EAG9G6Z,IAAmBnb,KAAKsG,cAAciV,QAAQJ,IAC9Cnb,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAMqL,GACpDnb,KAAKwb,oBAAoBL,GACzBnb,KAAK+P,qBACLoD,SAAAA,EAAesI,yBAAyB,CAAEC,uBAAuB,MAEjE1b,KAAKgI,wBAAwBvB,EAAAA,EAAiBkB,KAC9CwL,SAAAA,EAAesI,yBAAyB,CAAEC,uBAAuB,IAAQ,GAQpE,KAAA/C,SAAW,KACxB,OAAQ3Y,KAAKwG,kBACT,KAAKC,EAAAA,EAAiBkB,IACtB,KAAKlB,EAAAA,EAAiBC,OAClB1G,KAAKR,MAAMuJ,UAAU8yB,YAAY,wDACjC77B,KAAKuD,4BACL,MACJ,KAAKkD,EAAAA,EAAiBqC,KAClB9I,KAAKR,MAAMuJ,UAAU8yB,YAAY,+CACjC77B,KAAKkZ,mBACL,MACJ,KAAKzS,EAAAA,EAAiB04B,SAClBn/B,KAAKqQ,SAAS,CAAEiuB,qBAAsBt+B,KAAK8H,MAAMyP,iBACjDvX,KAAKkZ,mBACL,MAAM4lB,EAA6B9+B,KAAK8H,MAAMqxB,sBACxCn5B,KAAK8H,MAAMqxB,sBAAsB7sB,KAAIyxB,IAAY,CAC7CvK,WAAW,EACX3gB,SAAUkrB,EAAalrB,aAE3B,GACN7S,KAAKqQ,SAAS,CAAE8oB,sBAAuB2F,IACvC,MACJ,QACI9+B,KAAKR,MAAMuJ,UAAUc,MAAM,qBAAqB,EAO3C,KAAArG,SAAW,KACxB,OAAQxD,KAAKwG,kBACT,KAAKC,EAAAA,EAAiBkB,IACtB,KAAKlB,EAAAA,EAAiBC,OAClB1G,KAAKR,MAAMuJ,UAAU8yB,YAAY,wDACjC77B,KAAKC,uBACED,KAAK4C,iBAAoB5C,KAAKsG,cAAcC,wBAC/CvG,KAAKyD,aAGT,MACJ,KAAKgD,EAAAA,EAAiBqC,KAClB9I,KAAKR,MAAMuJ,UAAU8yB,YAAY,+CAC7B77B,KAAK4C,iBACL5C,KAAKyD,aAET,MACJ,KAAKgD,EAAAA,EAAiB04B,SAClBn/B,KAAKR,MAAMuJ,UAAU8yB,YAAY,mDACjC,MAAMiD,EAA6B9+B,KAAK8H,MAAMqxB,sBACxCn5B,KAAK8H,MAAMqxB,sBAAsB7sB,KAAIyxB,IAAY,CAC7CvK,WAAW,EACX3gB,SAAUkrB,EAAalrB,aAE3B,GACN7S,KAAKqQ,SAAS,CACV8oB,sBAAuB2F,EACvBvnB,eAAgBvX,KAAK8H,MAAMw2B,uBAE/Bt+B,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAK2W,4BACzD3W,KAAK+P,qBACL,MACJ,QACI/P,KAAKR,MAAMuJ,UAAUc,MAAM,qBAAqB,EAO3C,KAAAqR,OAAS,KACtBlb,KAAKR,MAAMuJ,UAAU8yB,YAAY,sCAE7B77B,KAAKsG,cAAcC,uBAAyBvG,KAAKiR,gBACjDjR,KAAKgI,wBAAwBvB,EAAAA,EAAiBqC,KAAM9I,KAAKiR,iBAClDjR,KAAKiR,iBACZjR,KAAKgI,wBAAwBvB,EAAAA,EAAiBC,OAAQ1G,KAAKiR,iBAG/DjR,KAAK+P,oBAAoB,EAOZ,KAAAkL,SAAW,KAAc,IAAAU,EAAAC,EACtC,MAAM,SAAEhM,EAAQ,4BAAEoC,GAAgChS,KAAKR,MAAMsC,MACvD,QAAEwC,GAAYtE,KAAKR,MAAM6E,QACzBgO,EAAyB/N,GAAWA,EAAQmF,SAAWnF,EAAQmF,QAAQ6I,uBACvEC,EAAwBjO,GAAWA,EAAQmF,SAAWnF,EAAQmF,QAAQ+I,sBAC5E,SAAK5C,EAASvP,SAAWiE,EAAQmF,SAAWmG,EAASvP,OAAOoS,aAAa8I,SAAW3L,EAASvP,OAAOoS,aAAaC,kBAK1G1S,KAAKkS,kCACqC,QADJyJ,EACvC/L,EAASvP,OAAOoS,aAAaE,KAAKC,iBAAS,IAAA+I,OAAA,EAA3CA,EAA6C9T,MAAKgL,IAAQ,IAAAgJ,EAAA,OACtDhJ,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjB8I,EACjB7J,EAA4B3R,cAAM,IAAAwb,GAAyB,QAAzBA,EAAlCA,EAAoC7I,+BAAuB,IAAA6I,OAAA,EAA3DA,EAA6DjN,MACzDqE,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBR,EACnCM,CAAQ,IAEyB,QAD1C+I,EACDhM,EAASvP,OAAOoS,aAAaE,KAAKC,iBAAS,IAAAgJ,OAAA,EAA3CA,EAA6C/T,MAAKgL,GAC9CA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBV,GAA0BQ,EAASE,eAAiBR,EAC9EM,IACT,EAMM,KAAAqG,iBAAmB,KAChClZ,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAK2W,4BACrD3W,KAAKR,MAAMmE,OAAO6wB,+BAClBx0B,KAAKo/B,6BAA6Bp/B,KAAK2W,4BAEvC3W,KAAKwb,oBAAoBxb,KAAK2W,4BAGlC3W,KAAK+P,oBAAoB,EAMZ,KAAAivB,2BAA6B,KAC1Ch/B,KAAK6I,6BACL7I,KAAKqQ,SAAS,CAAEiuB,qBAAsBt+B,KAAK8H,MAAMyP,iBACjDvX,KAAKgI,wBAAwBvB,EAAAA,EAAiB04B,SAAS,EAM1C,KAAAn6B,gBAAkB,KAC/BhF,KAAK6I,6BACL7I,KAAKgI,wBAAwBvB,EAAAA,EAAiBkB,IAAI,EAOrC,KAAAZ,sBAAyBb,IAClCA,EAAS/D,oBACTnC,KAAKmC,kBAAoB+D,EAAS/D,mBAGlC+D,EAAShG,UACTF,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM5J,EAAShG,SAC7DF,KAAKwb,oBAAoBtV,EAAShG,SAClCF,KAAK+P,qBAAqB,EAQjB,KAAAyL,oBAAuBtb,IACpC,GAAIF,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAQ,CACjC,MAAMyb,EAAkB1T,EAAA,GAAQlI,GAE5BA,EAAQgB,2BAA6B4a,EAAmB3U,yBACxD2U,EAAmB3U,uBAAyBnH,KAAKG,cAAc+G,0BAA0BhH,EAAQgB,2BAGrGlB,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAO0b,sBAAsB,CAAED,uBACxD9b,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOoS,aAAasJ,sBAAsB,CAAED,uBAAsBE,OAAMnS,IAC7F7J,KAAKR,MAAMuJ,UAAUc,MAAMA,EAAM,GAClC,GAQM,KAAAu1B,6BAAgCl/B,IAC7C,GAAIF,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAQ,CACjC,MAAMg/B,EAAkCr/B,KAAK8H,MAAMyP,eAAejL,KAAIgzB,GAAiBA,EAAczsB,WACrG7S,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOk/B,+BAA+B,CAAEF,oCACjEr/B,KAAKR,MAAMsC,KAAK8N,SAASvP,OAAOoS,aAC3B+sB,8BAA8B,CAAEC,uBAAwBJ,IACxDrjB,OAAMnS,IACH7J,KAAKR,MAAMuJ,UAAUc,MAAMA,EAAM,GAClC,GAgBE,KAAA61B,aAAe,KAC5B,MAAM,QAAEr7B,GAAYrE,KAAKR,MAGzB,GAAI6E,EAAQC,SAAWD,EAAQC,QAAQq7B,QAA0C,WAAhCt7B,EAAQC,QAAQq7B,OAAOC,KACpE,MAAO,KAGX,GAAIC,EAAAA,GAASC,WAAaC,OAAOC,WAAY,CACzC,MAAMhrB,EAAe3Q,EAAQC,QAAQ0Q,aACrC,GAAIA,EACA,OAAIA,EAAaC,IAAM8qB,OAAOC,YAAchrB,EAAaC,GAAGC,EACjD,KACAF,EAAaG,IAAM4qB,OAAOC,YAAchrB,EAAaG,GAAGD,EACxD,KACAF,EAAaI,IAAM2qB,OAAOC,YAAchrB,EAAaI,GAAGF,EACxD,KACAF,EAAaK,IAAM0qB,OAAOC,YAAchrB,EAAaK,GAAGH,EACxD,KAEJ,IAAI,CAInB,MAAO,IAAI,EAME,KAAAzR,WAAa,KAC1B,OAAQzD,KAAKwG,kBACT,KAAKC,EAAAA,EAAiBkB,IACtB,KAAKlB,EAAAA,EAAiBC,OAClB1G,KAAKgI,wBACDhI,KAAKsG,cAAcC,sBAAwBE,EAAAA,EAAiBqC,KAAOrC,EAAAA,EAAiBqJ,KACpF9P,KAAKiR,iBAET,MACJ,KAAKxK,EAAAA,EAAiB04B,SAClB,MAAML,EAA6B9+B,KAAK8H,MAAMqxB,sBACxCn5B,KAAK8H,MAAMqxB,sBAAsB7sB,KAAIyxB,IAAY,CAC7CvK,WAAW,EACX3gB,SAAUkrB,EAAalrB,aAE3B,GACN7S,KAAKqQ,SAAS,CACV8oB,sBAAuB2F,EACvBvnB,eAAgBvX,KAAK8H,MAAMw2B,uBAE/Bt+B,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAKiR,iBACzD,MACJ,QACIjR,KAAKgI,wBAAwBvB,EAAAA,EAAiBqJ,KAAM9P,KAAKiR,iBAEjEjR,KAAK+P,oBAAoB,EAQZ,KAAA/H,wBAA0B,CAACC,EAA6BrF,KACrE5C,KAAKwG,iBAAmByB,EACxBjI,KAAK4C,gBAAkBA,EAEnB5C,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,QAC7F1G,KAAKQ,iBAAmB4H,EAAA,GAAKpI,KAAK4C,kBAAqB,CAAC,GACxDrC,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CACvBU,yBAA0BlB,KAAKQ,iBAAiBU,0BAA4BlB,KAAKN,mBAErFa,EAAAA,EAAAA,IAAIP,KAAKQ,iBAAkB,CACvBuF,iBAAkB/F,KAAKQ,iBAAiBuF,kBAAoB/F,KAAKH,sBAE9DG,KAAKwG,mBAAqBC,EAAAA,EAAiBqC,OAClD9I,KAAK2W,2BAA6BvO,EAAA,GAAKpI,KAAK4C,kBAAqB,CAAC,EAAE,EAO3D,KAAAmN,mBAAqB,KAC9B/P,KAAKwG,mBAAqBC,EAAAA,EAAiBqJ,KAC3C9P,KAAKR,MAAM8P,YAAYyB,UAChB/Q,KAAKsC,WACZtC,KAAKR,MAAM8P,YAAY2M,YAEvBjc,KAAKR,MAAM8P,YAAY0B,YAAa,EAQ3B,KAAAsI,cAAiBpZ,IAC9B,IAAK,MAAMgc,KAAmBlc,KAAKmC,kBAAmB,CAAC,IAADga,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAClD,IACiB,QAAbR,EAACjc,EAAQyI,YAAI,IAAAwT,EAAAA,EAAI,MAAQD,EAAgBvT,OAC1B,QAAfyT,EAAClc,EAAQO,cAAM,IAAA2b,EAAAA,EAAI,MAAQF,EAAgBzb,SACtB,QAArB4b,EAACnc,EAAQoa,oBAAY,IAAA+B,EAAAA,EAAI,MAAQH,EAAgB5B,eACpC,QAAbgC,EAACpc,EAAQU,YAAI,IAAA0b,EAAAA,EAAI,MAAQJ,EAAgBtb,OAC3B,QAAd2b,EAACrc,EAAQW,aAAK,IAAA0b,EAAAA,EAAI,MAAQL,EAAgBrb,QAC1B,QAAhB2b,EAACtc,EAAQQ,eAAO,IAAA8b,EAAAA,EAAI,MAAQN,EAAgBxb,UAC9B,QAAd+b,EAACvc,EAAQua,aAAK,IAAAgC,EAAAA,EAAI,MAAQP,EAAgBzB,QACT,QAAjCiC,EAACxc,EAAQgB,gCAAwB,IAAAwb,EAAAA,EAAI,MAAQR,EAAgBhb,2BACpC,QAAzByb,EAACzc,EAAQ6F,wBAAgB,IAAA4W,EAAAA,EAAI,MAAQT,EAAgBnW,iBAErD,OAAO,CAAK,CAIpB,OAAO,CAAI,EAIE,KAAA+1B,iBAAoB3rB,IACjCnQ,KAAKR,MAAMuJ,UAAUc,MAAMsG,GAC3BnQ,KAAKR,MAAM8P,YAAYc,aAAY,GACnCpQ,KAAKR,MAAM8P,YAAY0B,aACvBhR,KAAKqQ,SAAS,CACVF,gBACF,EAGW,KAAA8uB,YAAc,KAC3Bj/B,KAAKR,MAAM8P,YAAYc,aAAY,GACnCpQ,KAAKqQ,SAAS,CACVF,aAAc,IAChB,EAQW,KAAA8vB,YAAeniB,GACrBA,EAAUvK,QAAO,CAACC,EAAO2D,IACrB3D,GAAS2D,EAAKxB,UAAY,IAClC,GAv/CH3V,KAAKkgC,UACD1gC,EAAM6E,QAAQC,SAAW9E,EAAM6E,QAAQC,QAAQq7B,QAAgD,WAAtCngC,EAAM6E,QAAQC,QAAQq7B,OAAOC,KAAoB,KAAO,KACrH5/B,KAAKmgC,gBAAkBngC,KAAKmgC,gBAAgBtB,KAAK7+B,MACjDA,KAAK8H,MAAQ,CAAEyP,eAAgB,GAAI+mB,qBAAsB,GAAInF,sBAAuB,IACpF,MAAM,QAAE90B,EAAO,KAAEvC,EAAI,UAAES,EAAS,UAAEwG,GAAc/I,KAAKR,MAErDQ,KAAKQ,iBAAmB,CAAC,EACzBR,KAAKuC,UAAYA,EACjBvC,KAAKwG,iBAAmBC,EAAAA,EAAiBqC,KACzC9I,KAAKL,eAAiBmC,EAAKnC,eAAeU,QAAU,GACpDL,KAAKJ,gBAAkBkC,EAAKlC,gBAAgBS,QAAU,GACtDL,KAAKmC,kBAAoBL,EAAK5B,QAAQG,QAAU,GAChDL,KAAKM,kBAAoBwB,EAAKmN,cAAc5O,QAAU,GACtDL,KAAKsG,cAAgB,IAAI0C,EAAAA,EAAc3E,EAAS9B,EAAWwG,GAC3D/I,KAAKG,cAAgB,IAAI8I,EAAAA,EACrBjJ,KAAKL,eACL,IAAIuJ,EAAAA,EAAed,EAAC,CAAC,EAAI7F,GAAavC,KAAKqH,gCAC3CrH,KAAKJ,iBAETI,KAAK4B,gBAAkB,CAAC,EACxB5B,KAAKkS,kCAA4D,QAA3BwE,EAAG5U,EAAKmQ,aAAa5R,cAAM,IAAAqW,GAEhE,QAFgEA,EAAxBA,EAA0B9H,MAC/DuD,GAAWA,EAAQxJ,OAAS3I,KAAK4W,uCACpC,IAAAF,OAAA,EAFwCA,EAEtCtE,UACHpS,KAAKiD,kBAAmBmG,EAAAA,EAAAA,oBACpBpJ,KAAKR,MAAM6E,QAAQC,QAAQ+E,kBAC3BrJ,KAAKR,MAAM8J,aACXtJ,KAAKR,MAAMuJ,WAEf/I,KAAKmgC,iBACT,CAzDcvrB,eACV,MAA0B,OAAnB5U,KAAKkgC,WAAyC,OAAnBlgC,KAAKkgC,SAC3C,CAyDOngC,0BAAuB,IAAAqf,EAC1B,MACI/a,SAAS,UACL0E,EACAQ,eACIC,gBAAgB,QAAEC,KAG1B9F,QAAQ,sBAAE+F,EAAqB,mBAAEC,GAAoB,UACrDpH,GACAvC,KAAKR,MAoDT,GAjDAQ,KAAK6B,gBAAgB7B,KAAKR,OAE1BQ,KAAKG,cAAgB,IAAI8I,EAAAA,EACrBjJ,KAAKL,eACL,IAAIuJ,EAAAA,EAAed,EAAC,CAAC,EAAI7F,GAAavC,KAAKqH,gCAC3CrH,KAAKJ,iBAGTI,KAAKR,MAAMsC,KAAK8N,SAASxJ,MAAK,KAC1BpG,KAAK6I,6BACL7I,KAAKoP,kBAAkB,KAG3BrN,EAAAA,EAAAA,KACI,IAAM/B,KAAKN,kBACX,KACIM,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,IAAM/B,KAAKwG,mBACX,KACIxG,KAAK0H,oBAAoB,KAIjC3F,EAAAA,EAAAA,KACI,SAAAub,EAAA,OAAqC,QAArCA,EAAMtd,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAid,OAAA,EAA/BA,EAAiChC,kCAAkC,IACzE,KACI,IAAKtb,KAAK4Z,mCAAqC5Z,KAAKib,WAAY,CAAC,IAADsC,EAAAC,EAC5D,IAAItd,EAAyC,QAAlCqd,EAAGvd,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAkd,OAAA,EAA/BA,EAAiCjC,mCAE/C,GAAW,QAAXkC,EAAItd,SAAO,IAAAsd,GAAPA,EAASrW,uBAAwB,CACjC,MAAM+S,EAA2Bla,KAAKma,4BAA4Bja,EAAQiH,wBAE1EjH,EAAOkI,EAAAA,EAAA,GAAQlI,GAAO,IAAEgB,yBAA0BgZ,IAE9CA,GAA4BA,IAA6Bla,KAAKN,iBAC9DM,KAAKgG,iBAAiBkU,EAAyB,CAIvDla,KAAKgI,wBAAwBvB,EAAAA,EAAiBkB,IAAKzH,GACnDF,KAAKuD,2BAA4B,KAKzCmG,EAAuB,CACvB,GAAID,IAAYA,EAAQG,eAEpB,YADAb,EAAUc,MAAM,8BAIpB,GAAIJ,IAAYA,EAAQK,gBAEpB,YADAf,EAAUc,MAAM,4BAIpB,MAAME,EAAO3B,EAAA,GAA6BuB,GAC1C3J,KAAKwB,YAAc,IAAIwI,EAAAA,EACnBjB,EACAgB,EACAN,aAAO,EAAPA,EAASG,eACTH,aAAO,EAAPA,EAASQ,4BACTR,aAAO,EAAPA,EAASS,oBAKTlK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,QACzCL,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,cAExF1G,KAAKwB,YAAY8I,kBAAkBtK,KAAKR,MAAMsC,KAAKsD,4BAG7DrD,EAAAA,EAAAA,KACI,SAAAoI,EAAA,OACoD,QAAhDA,EAAAnK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAA8J,OAAA,EAAhDA,EAAkDC,cACjDpK,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,OAAO,IACzG3G,UAAW,IAAAsK,QACe,QAAtBA,EAAMrK,KAAKwB,mBAAW,IAAA6I,OAAA,EAAhBA,EAAkBC,kBAAkBtK,KAAKR,MAAMsC,KAAKsD,2BAA0B,KAI5FrD,EAAAA,EAAAA,KACI,SAAAwI,EAAA,OAAsD,QAAtDA,EAAMvK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAkK,OAAA,EAAhDA,EAAkDjF,cAAc,IACtEvF,gBACUC,KAAKmF,uBAAuB,GAExC,CAG6B,QAAnCia,EAAIpf,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAA+e,GAA/BA,EAAiC6c,6CACjCl6B,EAAAA,EAAAA,KACI,SAAAs6B,EAAA,OAAqC,QAArCA,EAAMr8B,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAg8B,OAAA,EAA/BA,EAAiCH,aAAa,IACpDA,IAEQA,GACAA,EAAcC,gBAAkBC,EAAAA,cAAc3lB,yBAC9CylB,EAAc/rB,cAEdnQ,KAAK87B,iBAAiBI,EAAc/rB,aAAc,KAK9DpO,EAAAA,EAAAA,KACI,SAAA66B,EAAA,OAAqC,QAArCA,EAAM58B,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAu8B,OAAA,EAA/BA,EAAiCN,kBAAkB,IACzDA,IACQA,IAAuBjJ,EAAAA,eAAe5c,0BACtCmc,EAAAA,EAAAA,GAAqB5yB,KAAK6yB,iBAAkB7yB,KAAKR,MAAM6E,QAAQkF,cAAe,KAM1Fs2B,EAAAA,GAASC,YACTC,OAAOK,iBAAiB,SAAUpgC,KAAKmgC,iBACvCngC,KAAKmgC,yBAGHngC,KAAK6W,kBACf,CAEO9W,2BACuG,IAADyK,EAIlGC,EAJHzK,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,OACzC,QAApD8D,EAAIxK,KAAKR,MAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAmK,GAAhDA,EAAkDlF,sBAC5CtF,KAAKmF,wBAGC,QAAhBsF,EAAAzK,KAAKwB,mBAAW,IAAAiJ,GAAhBA,EAAkBC,oBAE1B,CAEO21B,uBACCR,EAAAA,GAASC,WACTC,OAAOO,oBAAoB,SAAUtgC,KAAKmgC,gBAElD,CAEOx1B,sBAAsBC,EAAkCC,GAC3D,OAAI7K,KAAK8H,QAAU+C,GAAa7K,KAAKR,MAAMsC,OAAS8I,EAAU9I,IAIlE,CAEOgJ,SAAM,IAAA2S,EACT,IAAKzd,KAAKib,WACN,OAAO,KAGX,MAAM,OACFtX,EAAM,QACNU,EAAO,WACP0G,EAAU,UACVxI,EACA+M,aAAa,SAAEjJ,IACfrG,KAAKR,OACH,cAAEke,EAAa,UAAEC,EAAS,eAAEC,EAAc,kBAAE4e,GAAsBj6B,GAClE,cAAEsb,GAAkBla,EAGpB8Q,EAA6CzU,KAAK8H,MAAMyP,eACzDpO,QAAOkO,IAAMc,EAAAA,iBAAiBC,kBAAkBf,EAAED,WAClD9K,KAAI6K,IAAI,IAAAopB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MAAK,CACVnrB,OAA4B,QAAtB2qB,EAAEppB,EAAKtE,SAASwL,cAAM,IAAAkiB,EAAAA,EAAI,GAChCzqB,WAAY,CACRtM,eAAgBnF,EAAQkF,cAAcC,eACtCZ,UAAW,8DACXqN,QAAqB,QAAduqB,EAAErpB,EAAKC,eAAO,IAAAopB,OAAA,EAAZA,EAAc73B,KACvB2V,IAAkC,QAA/BmiB,EAAc,QAAdC,EAAEvpB,EAAKC,eAAO,IAAAspB,OAAA,EAAZA,EAAcniB,uBAAe,IAAAkiB,EAAAA,EAAI,GACtCjiB,aAAaC,EAAAA,EAAAA,qBACG,QADgBkiB,EAC5BxpB,EAAKC,eAAO,IAAAupB,OAAA,EAAZA,EAAcjiB,OACdra,EAAQkF,cAAcC,eAAe8O,YAClB,QAD6BsoB,EAChDv8B,EAAQC,QAAQ0iB,WAAG,IAAA4Z,GAAQ,QAARA,EAAnBA,EAAqBj9B,cAAM,IAAAi9B,OAAA,EAA3BA,EAA6BhC,kBAEjC5pB,aAAc3Q,EAAQC,QAAQ0Q,aAC9B6I,cAAeA,QAAAA,EAAiB1H,EAChCwI,oBAAqB,SAEzBhJ,SAAgC,QAAxBkrB,EAAE1pB,EAAKtE,SAAS+L,gBAAQ,IAAAiiB,EAAAA,EAAI,EACpClD,kBAA0D,QAAzCmD,EAA+B,QAA/BC,EAAE5pB,EAAKtE,SAASuI,uBAAe,IAAA2lB,OAAA,EAA7BA,EAA+BlyB,gBAAQ,IAAAiyB,EAAAA,EAAI,EACjE,IAECE,EAAoBhhC,KAAKigC,YAAYxrB,GACrCoK,EAAWmiB,EAAoB,EAAIrjB,EAAYC,EAC/ClJ,EAAY,KAAItT,EAAAA,EAAAA,QAAOyd,EAAUmiB,MAEjCliB,EAAkD,CACpDtK,gBAAiB,+BACjBC,UAAWA,EAAUtL,QAAOkO,IAAMc,EAAAA,iBAAiBC,kBAAkBf,KACrE3C,UAAWA,EACXtH,MAAOsQ,EACPnb,UAAWvC,KAAKR,MAAM+C,UACtBg7B,iCAAkC55B,EAAO6wB,gCAGvCzV,EAAkCzf,EAAAA,cAACiV,EAAuBnI,OAAAC,OAAA,GAAKyS,KAE/D,aAAE7M,GAAiBjS,KAAKR,MAAMsC,KAC9Bkd,EAAyD,QAAtBvB,EAAGxL,EAAa5R,cAAM,IAAAod,GAAiE,QAAjEA,EAAnBA,EAAqB7O,MAAKuD,GAFhC,oEAE2CA,EAAQxJ,cAAuC,IAAA8U,OAAA,EAApFA,EACtCrL,UAEAjC,EAAenQ,KAAK8H,MAAMqI,aAqEhC,OAAOpF,EAnEQ3C,EAAAA,EAAA,GACRpI,KAAKR,OAAK,IACbgH,iBAAkBxG,KAAKwG,iBACvB5D,gBAAiB5C,KAAK4C,gBACtBpC,iBAAkBR,KAAKQ,iBACvBmW,2BAA4B3W,KAAK2W,2BACjCjX,gBAAiBM,KAAKN,gBACtBY,kBAAmBN,KAAKM,kBACxB6B,kBAAmBnC,KAAKmC,kBACxBP,gBAAiB5B,KAAK4B,gBACtBiB,sBAAuB7C,KAAK6C,sBAC5BP,WAAYtC,KAAKsC,WACjB+D,SAAUrG,KAAKqG,SACfuC,UAAWjF,EAAOiF,UAClBoC,UAAW,CACPoG,cAAepR,KAAKwG,mBAAqBC,EAAAA,EAAiBqJ,MAAQ9P,KAAK4C,gBACvEqI,iBAAkBjL,KAAKwG,mBAAqBC,EAAAA,EAAiBqC,MAAQ9I,KAAKmC,kBAAkBsO,OAAS,EACrGvF,yBACIlL,KAAKwG,mBAAqBC,EAAAA,EAAiBkB,KAAO3H,KAAKwG,mBAAqBC,EAAAA,EAAiBC,OACjGu6B,0BAA2BjhC,KAAKwG,mBAAqBC,EAAAA,EAAiB04B,UAE1E1oB,wBAAyB,CACrBrL,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAW,+BAAgC1H,EAAOiF,YAEjE4I,YAAaxR,KAAKyR,qBAClBnD,MAAOjI,GAAY8J,GAAgB7Q,EAAAA,cAACu0B,EAAAA,EAAcznB,OAAAC,OAAA,GAAK,CAAEe,MAAOovB,EAAmBnvB,QAAS8C,KAC5F0iB,iBAAkB7yB,KAAK6yB,iBAUvB5T,yBAA0BA,CACtB8f,EACAjmB,EACAN,EACAC,IACCzY,KAAK6Y,qBAAqBkmB,EAAgCjmB,EAAqBN,EAAeC,GAQnGyoB,iCAAkCA,CAAC1oB,EAA4BC,IAC3DzY,KAAKy+B,6BAA6BjmB,EAAeC,GACrD0oB,0BAA2BnhC,KAAKy+B,+BAQhCvf,8BAA+BA,CAAC1G,EAA4BC,IACxDzY,KAAKoC,0BAA0BoW,EAAeC,GAClDlN,uBAAwBvL,KAAKoC,4BAC7B2c,eAAgBC,EAAsCD,OAAiBzd,EACvE6d,kBAAmBnf,KAAK6Y,yBAIhC,CAuBOugB,YAAY5F,GACf,GAAIxzB,KAAK8H,MAAMqxB,sBAAuB,CAClC,MAAM2E,EACF99B,KAAK8H,MAAMqxB,sBAAsB7sB,KAAIyxB,IACjCA,EAAavK,UAAYA,EAClBuK,MACL,GAEV/9B,KAAKqQ,SAAS,CACV8oB,sBAAuB2E,GACxB,MAEHxV,QAAQze,MAAM,gCAEtB,CA2JW+P,wCAAiC,IAAAgD,EAAAC,EAExC,MAAMC,EAEe,QAFLF,EACQ,QADRC,EACZ7c,KAAKR,MAAMsC,KAAK6Q,YAAI,IAAAkK,GAAQ,QAARA,EAApBA,EAAsBxc,cAAM,IAAAwc,GAAM,QAANA,EAA5BA,EAA8BlK,YAAI,IAAAkK,GAAqB,QAArBA,EAAlCA,EAAoCE,2BAAmB,IAAAF,GAA4D,QAA5DA,EAAvDA,EAAyDjO,MAAKoO,GAA6B,0BAAjBA,EAASC,aAAgC,IAAAJ,GAAO,QAAPA,EAAnHA,EAAqHK,aAAK,IAAAL,OAAA,EAA1HA,EACMM,mBAAW,IAAAP,EAAAA,EAAI,GAEzB,OAAOE,EAAcM,KAAKC,MAAMP,GAAyC,IAC7E,CA0UQrL,qBACJ,OAAIzR,KAAK4C,iBACEmJ,EAAAA,EAAAA,GAAY,CACf7L,QAASF,KAAK4C,gBACdzC,cAAeH,KAAKG,cAAcc,iBAAiBjB,KAAK4C,gBAAgB1B,0BAA4B,IACpGtB,gBAAiBI,KAAKJ,kBAIvB,IACX,CAuKQiJ,6BAA0B,IAAA8I,EAC9B,MAAM,QAAErN,GAAYtE,KAAKR,MAAM6E,QACzBoH,EAAwB,QAAlBkG,EAAGrN,EAAQmF,eAAO,IAAAkI,OAAA,EAAfA,EAAiB1H,4BAChCjK,KAAKN,gBAAkBM,KAAKsG,cAAcoF,0BAA0B1L,KAAKN,gBAAiBM,KAAKL,eAAgB8L,EACnH,CAuVsBwF,sBAAe,IAAA4rB,EACjC,OAAsC,QAAtCA,EAAO78B,KAAKR,MAAMsC,KAAK8N,SAASvP,cAAM,IAAAw8B,OAAA,EAA/BA,EAAiC5rB,eAC5C,CAEcynB,mBACV,OAAO0I,IAAIphC,KAAKR,MAAO,mCAC3B,CAEQ2gC,kBACJngC,KAAKkgC,UAAYlgC,KAAK0/B,cAC1B,IA55CY/zB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kDAGXD,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,iCAGDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,8BA4cT1I,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,wCAoCPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,6CAuBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,2CAoBPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,wCAk2BGF,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,qCAIC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,kCA8HT1I,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,uCAphDL4K,GAAuB9K,EAAAA,EAAAA,IAAA,CAF5B2I,EAAAA,gBACAxI,EAAAA,IACK2K,GAijDN,kHChrDA,MAAM1K,EAA2CC,IAA6B,IAA5B,cAAEC,EAAa,MAAEC,GAAOF,EACtE,OACI1M,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKJ,GACLC,EAAMI,KAAKC,GACDjN,IAAAA,cAAAA,IAAAA,SAAA,KAAGiN,EAAKC,eAEhB,EAiBTuM,EAA+CtM,IAShD,IATiD,cAClD4S,EAAa,4BACb0V,EAA2B,UAC3BpnB,EAAS,MACTzB,EAAK,iBACL8B,EAAgB,WAChBC,EAAU,mBACVC,EAAkB,aAClBC,GACH1B,EACG,OACInN,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKgT,GACN/f,IAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gDACX+E,EACAonB,GAEJ7oB,EAAMI,KAAKC,IACR,MAAM+S,EAAa/S,EAAK+S,WACxB,OACIhgB,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKiT,EAAU,CAAE1S,IAAKL,EAAKK,MAC3BL,EAAKgC,MACNjP,IAAAA,cAACyM,EAAWK,OAAAC,OAAA,GAAKE,EAAKM,YACnB,IAGdmB,GAAoBC,EACpBC,GAAsBC,EACpB,EAmBT6qB,EAAiEzrB,IAclE,IAdmE,oBACpEksB,EAAmB,wBACnBC,EAAuB,qBACvBrD,EAAoB,gBACpB4D,EAAe,cACfM,EAAa,qBACbE,EAAoB,iBACpBD,EAAgB,yBAChBhB,EAAwB,iBACxBxrB,EAAgB,WAChBC,EAAU,mBACVC,EAAkB,aAClBC,EAAY,SACZyG,GACHrH,EACG,OAAIksB,QAAoCn4B,IAAbsT,EAClBA,EA0BGtV,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKotB,GACNn6B,IAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,oDAAoD8wB,GACpEp6B,IAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,+CAA+CqxB,GAC9DM,GAAiBf,GAA4BA,EAAyB/oB,OAAS,GAC5EnR,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKkuB,GACLE,EACDn7B,IAAAA,cAAA,aACKk6B,GACGA,EAAyBltB,KAAK6K,GACnBkqB,EAA+BlqB,EAAMvC,EAAU4lB,OAKzExsB,GAAoBC,EACpBC,GAAsBC,GAvC3B7O,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKotB,GACNn6B,IAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,oDAAoD8wB,GACpEp6B,IAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gDACZtJ,IAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,4CAA4CytB,GAE5D/2B,IAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,+CAA+CqxB,IAElEM,GAAiBf,GAA4BA,EAAyB/oB,OAAS,GAC5EnR,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKkuB,GACLE,EACDn7B,IAAAA,cAAA,aACKk6B,GACGA,EAAyBltB,KAAK6K,GACnBkqB,EAA+BlqB,EAAMvC,EAAU4lB,OAKzExsB,GAAoBC,EACpBC,GAAsBC,GAyB5B,IAAK,EAkBd9L,EAAqDyL,IAUtD,IAVuD,YACxDC,EAAW,QACXnK,EAAO,MACPsI,EAAK,SACL7F,EAAQ,MACRwD,EAAK,iBACLmE,EAAgB,WAChBC,EAAU,mBACVC,EAAkB,aAClBC,GACHL,EACG,OACIxO,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK0B,GACLnK,EACAsI,EAAMI,KAAKC,IACR,MAAM,YAAE6B,EAAW,IAAExB,EAAG,MAAEyB,EAAK,MAAEC,EAAK,MAAEC,GAAUhC,EAClD,OACIjN,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+B,EAAW,CAAExB,IAAKA,IACvByB,EACAC,EACAC,EACE,IAGdlI,GACG/G,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKxC,EAAM2E,cACX3E,EAAMuD,MACNvD,EAAMwD,SAGdW,GAAoBC,EACpBC,GAAsBC,EACpB,EAITkzB,EAAiCA,CACnCxK,EACAjiB,EACA4lB,KAEA,IAAK3D,EACD,OAAO,KAGX,MAAM,WACFK,EAAU,aACVC,EAAY,cACZb,EAAa,YACbe,EAAW,aACX5H,EAAY,gBACZiH,EAAe,eACfC,GACAE,EAEJ,OAAKjiB,EAgBGtV,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,CAACzD,UAAW,GAAG4xB,EAAkB5xB,aAAiB4xB,GACnDl7B,IAAAA,cAAA,UACIA,IAAAA,cAAA,MAAIq2B,MAAO,CAAEE,SAAU,WAAYK,IAAK,OAAQoL,cAAe,QAAUpK,GACzE53B,IAAAA,cAAA,MAAIq2B,MAAO,CAAEE,SAAU,WAAYK,IAAK,SACnCiB,EACAE,EACA,QAAQX,KAEbp3B,IAAAA,cAAA,MAAIsJ,UAAU,qCAAqC6mB,IAEvDnwB,IAAAA,cAAA,UACIA,IAAAA,cAAA,MAAIiiC,QAAS,GAAI5K,KAzBzBr3B,IAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,CAACzD,UAAW,GAAG4xB,EAAkB5xB,aAAiB4xB,GACnDl7B,IAAAA,cAAA,MAAIq2B,MAAO,CAAE6L,MAAO,QAAUtK,GAC9B53B,IAAAA,cAAA,MAAIq2B,MAAO,CAAE6L,MAAO,QAChBliC,IAAAA,cAAA,OAAKq2B,MAAO,CAAE8L,QAAS,iBAAmBtK,GAC1C73B,IAAAA,cAAA,OAAKq2B,MAAO,CAAE8L,QAAS,eAAgBH,cAAe,MAAOI,UAAW,SAAWpL,IAEvFh3B,IAAAA,cAAA,MAAIq2B,MAAO,CAAE6L,MAAO,QAAUnK,GAC9B/3B,IAAAA,cAAA,MAAIq2B,MAAO,CAAE6L,MAAO,MAAOhL,UAAW,UAAY/G,GAClDnwB,IAAAA,cAAA,MAAIq2B,MAAO,CAAE6L,MAAO,MAAOhL,UAAW,WAAaE,GACnDp3B,IAAAA,cAAA,MAAIq2B,MAAO,CAAE6L,MAAO,SAAW7K,GAkB5B,EAqCnB,EA3BiFn3B,IAC7E,MAAM,wBACFiX,EAAuB,iBACvBoc,EAAgB,MAChBvkB,EAAK,UACLtD,EAAS,YACTwG,EAAW,kBACX2N,EAAiB,uBACjB5T,EAAsB,0BACtB41B,EAAyB,eACzBpiB,GACAvf,EAEJ,OACIF,IAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKoK,EAAuB,CAAE6mB,IAAKzK,IACrCvkB,GACCtD,EAAUi2B,2BAA6BliB,EACxC/T,EAAUoG,eAAiB9R,IAAAA,cAACyM,EAAWK,OAAAC,OAAA,GAAKmF,IAC5CxG,EAAUC,kBAAoB3L,IAAAA,cAACyZ,EAAa3M,OAAAC,OAAA,GAAK8S,IACjDnU,EAAUE,0BAA4B5L,IAAAA,cAAC+C,EAAgB+J,OAAAC,OAAA,GAAKd,IAC5DP,EAAUi2B,2BACP3hC,IAAAA,cAAC05B,EAAmB5sB,OAAAC,OAAA,GAAM80B,IAEzB,uuBC1OV,MAAMQ,UAAqBriC,EAAAA,cAM9BC,YAAmBC,GACfC,MAAMD,GALO,KAAAoiC,eAAyB,SACzB,KAAAC,oBAA8B,8BAC9B,KAAAC,YAAyCxiC,EAAAA,YAsDlD,KAAAyiC,yBAA2B,KAAK,IAAAC,EACZ,QAAxBA,EAAAhiC,KAAK8hC,YAAY7O,eAAO,IAAA+O,GAAxBA,EAA0BC,kBAAkB,EA8DxC,KAAAC,gBAAmB/xB,IACvBnQ,KAAKqQ,SAAS,CACV8xB,aAAc,CACVC,YAAajyB,EACbkyB,gBAAiBriC,KAAK4hC,eACtBU,aAActiC,KAAK6hC,oBACnBU,QAAQ,IAEd,EAMW,KAAAC,gBAAkB,KAC/BxiC,KAAKqQ,UAASvI,IAAK,CACf26B,YAAa36B,EAAM26B,cACpB,EAjIHziC,KAAK8H,MAAQ,CACT26B,YAAY,EAEpB,CAEO33B,SAAM,IAAA43B,EACT,MAAMC,EAAuBntB,EAAAA,gBAAgBC,YAAYzV,KAAKR,MAAMojC,mBAC9DC,EAAsBrtB,EAAAA,gBAAgBC,YAA6C,QAAlCitB,EAAC1iC,KAAKR,MAAMsC,KAAK8gC,yBAAiB,IAAAF,OAAA,EAAjCA,EAAmCriC,QAC3F,IAAKsiC,IAAyBE,EAC1B,OAAO,KAGX,MAAMC,EAAS16B,EAAAA,EAAA,GACRpI,KAAKR,OAAK,IACbujC,UAAW,CACP33B,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAWs2B,EAAa/4B,UAAW5I,KAAKR,MAAMmE,OAAOiF,YAEpEo6B,QAAShjC,KAAKijC,uBAAuB,GAAGtB,EAAa/4B,wBAGzD,OAAO5I,KAAKR,MAAMuL,WAAW+3B,EACjC,CAEQG,uBAAuBr6B,GAC3B,OACItJ,EAAAA,cAAA,OAAKsJ,UAAWA,GACX5I,KAAKkjC,sBAAsB,GAAGt6B,sBAC9B5I,KAAKmjC,gBAAgB,GAAGv6B,eAGrC,CAEQs6B,sBAAsBt6B,GAC1B,OACItJ,EAAAA,cAAC8jC,EAAAA,OAAM,CACHx6B,UAAWA,EACXksB,QAAS90B,KAAKwiC,gBAAe,gBACdxiC,KAAK8H,MAAM26B,WAC1Br1B,MAAOpN,KAAKR,MAAM+C,UAAU8gC,yBAE3BrjC,KAAKR,MAAM+C,UAAU8gC,wBAGlC,CASQF,gBAAgBv6B,GACpB,OACItJ,EAAAA,cAACgkC,EAAAA,SAAQ,CAAC16B,UAAWA,EAAW25B,OAAQviC,KAAK8H,MAAM26B,WAAYnF,IAAKt9B,KAAK8hC,aACpE9hC,KAAKujC,mBAAmB,GAAG36B,mBAGxC,CAEQ26B,mBAAmB36B,GACvB,MAAM46B,EAAsG,QAArF5uB,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAY2uB,SAAUp/B,QAASrE,KAAKR,MAAM6E,QAAQC,UAEvFo/B,EAAkB1jC,KAAK8H,MAAMq6B,aAC/B7iC,EAAAA,cAACqkC,EAAAA,MAAK,CAACC,MAAO5jC,KAAK8H,MAAMq6B,aAAaE,gBAAiBE,OAAQviC,KAAK8H,MAAMq6B,aAAaI,QACnFjjC,EAAAA,cAAA,QAAMsJ,UAAW5I,KAAK8H,MAAMq6B,aAAaG,eACzChjC,EAAAA,cAAA,YAAOU,KAAK8H,MAAMq6B,aAAaC,mBAGnC9gC,EAGJ,OACIhC,EAAAA,cAAA,OAAKsJ,UAAWA,IACV46B,GACElkC,EAAAA,cAAA,OAAKsJ,UAAW,GAAGA,kBACftJ,EAAAA,cAACqzB,EAAAA,GAAiB,CAAC9uB,KAAM7D,KAAKR,MAAM+C,UAAUshC,+BAGrDH,EACA1jC,KAAK8jC,cAAc,GAAGl7B,uBAGnC,CAEQk7B,cAAcl7B,GAAiB,IAAAgJ,EAAAmyB,EAAAC,EACnC,MAAMrB,EAAuBntB,EAAAA,gBAAgBC,YAAYzV,KAAKR,MAAMojC,oBAE9D,aAAE3wB,GAAiBjS,KAAKR,MAAMsC,KAC9BmiC,GACFhyB,SAAoB,QAARL,EAAZK,EAAc5R,cAAM,IAAAuR,GAA4E,QAA5EA,EAApBA,EAAsBhD,MAAMrC,GAHO,2DAGgBA,EAAK5D,cAAwC,IAAAiJ,OAAA,EAAhGA,EAAkGQ,aAAa,EAC7G8xB,GAAYC,EAAAA,EAAAA,IAAankC,KAAKR,MAAM6E,QAAQC,SAElD,OADA8/B,EAAAA,EAAAA,mBAAkBF,GAEd5kC,EAAAA,cAAC+kC,EAAAA,wBAAuB,CACpBz7B,UAAWA,EACXvE,QAASrE,KAAKR,MAAM6E,QACpBvC,KAAM,CACFi2B,WAAY4K,EAAuB3iC,KAAKR,MAAMojC,kBAAqB5iC,KAAKR,MAAMsC,KAAK8gC,kBAAmBviC,OACtGyiB,eAA8C,QAAhCihB,EAAE/jC,KAAKR,MAAMsC,KAAKghB,sBAAc,IAAAihB,OAAA,EAA9BA,EAAgC1jC,OAChD0iB,oBAAwD,QAArCihB,EAAEhkC,KAAKR,MAAMsC,KAAKihB,2BAAmB,IAAAihB,OAAA,EAAnCA,EAAqC3jC,QAE9DkC,UAAWvC,KAAKR,MAAM+C,UACtB+hC,kBAAmBtkC,KAAK+hC,yBACxBwC,eAAgBvkC,KAAKkiC,gBACrBsC,oCAAqCP,EACrCC,UAAWA,GAGvB,EAtHuBvC,EAAA/4B,UAAY,mBA6IvC,2TC3IA,MAAM67B,EAAuB5hB,GACe,cAAjCA,EAAS6hB,oBAAsC,eAAiB,YAGpE,SAASjS,EACZjzB,EACAivB,GAAgC,IAAAkW,EAAAC,EAEhC,MAAM,SAAE/hB,GAAarjB,EAIf4xB,EAAsE,QAA9CuT,EAAsC,QAAtCC,EAAGplC,EAAMsC,KAAKsvB,gCAAwB,IAAAwT,OAAA,EAAnCA,EAAqCvkC,cAAM,IAAAskC,EAAAA,EAAIlW,aAAc,EAAdA,EAAgB2C,yBAE1FxoB,EAAY67B,EAAoB5hB,GACtC,IAAKuO,IAA6B5b,EAAAA,gBAAgBC,YAAY2b,GAC1D,OAEJ,MAAMyT,EAAoBzT,EAAyBxiB,MAAKk2B,GAAYA,EAASC,eAAiBhyB,EAAAA,aAAa+xB,WAE3G,GAAID,EAAmB,CACnB,IAAIG,EAMJ,OAJIA,EADAH,EAAkBI,eACG,GAAGr8B,sBAA8BA,qBAA6Bi8B,EAAkBI,eAAelqB,gBAE/F,GAAGnS,qBAGxBtJ,EAAAA,cAAA,OAAKsJ,UAAW,GAAGA,qBACftJ,EAAAA,cAAA,QAAMsJ,UAAWo8B,GAAqBH,EAAkB/a,iBACtD,CAKlB,CAEO,SAASob,EACZ1lC,EACAivB,GAAgC,IAAAziB,EAAAsZ,EAAA6f,EAAAC,EAEhC,MACIzhC,QAAQ,gBAAE0hC,EAAkB,MAAM,SAClCxiB,GACArjB,EACEoJ,EAAY67B,EAAoB5hB,GAIhCzL,EAA+D,QAAxDpL,EAA6B,QAA7BsZ,EAAqB,QAArB6f,EAAG3lC,EAAMsC,KAAKsV,eAAO,IAAA+tB,OAAA,EAAlBA,EAAoB9kC,cAAM,IAAAilB,EAAAA,EAAImJ,aAAc,EAAdA,EAAgBrX,eAAO,IAAApL,EAAAA,OAAI1K,EAEzE,OAAO8V,GAAW9X,EAAAA,cAACgmC,EAAAA,QAAO,CAAC18B,UAAW,GAAGA,mBAA4B9E,WAAYuhC,EAAiBxhC,KAAkB,QAAduhC,EAAEhuB,EAAQzO,YAAI,IAAAy8B,EAAAA,EAAI,IAC5H,CAEO,SAASG,EACZ/lC,EACAivB,GAAgC,IAAAhiB,EAAAwb,EAAAud,EAEhC,MAAM,SAAE3iB,GAAarjB,EACfoJ,EAAY67B,EAAoB5hB,GAIhCzL,EAA+D,QAAxD3K,EAA6B,QAA7Bwb,EAAqB,QAArBud,EAAGhmC,EAAMsC,KAAKsV,eAAO,IAAAouB,OAAA,EAAlBA,EAAoBnlC,cAAM,IAAA4nB,EAAAA,EAAIwG,aAAc,EAAdA,EAAgBrX,eAAO,IAAA3K,EAAAA,OAAInL,EAEzE,OAAO8V,GAAW9X,EAAAA,cAAA,KAAGsJ,UAAW,GAAGA,0BAAmCwO,EAAQ+c,YAClF,CAQO,SAASsR,EACZjmC,EACAivB,GAAgC,IAAA9F,EAAA+c,EAEhC,MAAM,SAAE7iB,GAAarjB,EACfoJ,EAAY67B,EAAoB5hB,GAEtC,GACIrjB,EAAM6E,QAAQ2iB,IAAIrjB,UAChBnE,EAAM6E,QAAQ2iB,IAAIrjB,OAAOgiC,0BAAkF,SAAtDnmC,EAAM6E,QAAQ2iB,IAAIrjB,OAAOgiC,0BAEhF,OAKJ,MAAMvuB,EAAoC,QAA7BuR,EAAqB,QAArB+c,EAAGlmC,EAAMsC,KAAKsV,eAAO,IAAAsuB,OAAA,EAAlBA,EAAoBrlC,cAAM,IAAAsoB,EAAAA,EAAI8F,aAAc,EAAdA,EAAgBrX,QAC9D,GAAKA,GAAYA,EAAQwuB,qBAKzB,OACItmC,EAAAA,cAAA,OAAKsJ,UAAW,GAAGA,8BACftJ,EAAAA,cAAA,YAAO8X,EAAQwuB,uBANnBpmC,EAAMuJ,UAAU88B,QAAQ,8CAShC,CAEA,IAAI5iC,EAcJ,MAAM6iC,EAAoBA,CACtBtmC,EACAsI,EACAga,EACAikB,EACAC,EACArzB,EACAyE,EACA6uB,IACE5lC,IACF,IAAI6lC,EACAC,EACAC,GAAyCC,EAAAA,EAAAA,IACzChmC,EACAsS,EACAnT,EAAM+C,UACN/C,EAAM6E,QACN+S,EACA6uB,OACA3kC,GAcJ,GAX6B,eAAzBjB,EAAOimC,cACPJ,EAAiD,eAAzB7lC,EAAOimC,eAAiCC,EAAAA,EAAAA,IAAiBlmC,EAAOmmC,UAAWhnC,EAAM+C,gBAAajB,EAE7F,qBAAzBjB,EAAOimC,gBACPjmC,EAAOomC,kBACgC,gBAAtCpmC,EAAOomC,iBAAiBC,WAAqE,mBAAtCrmC,EAAOomC,iBAAiBC,YAEhFR,GAAwBG,EAAAA,EAAAA,IAAgBhmC,EAAQsS,EAAMnT,EAAM+C,UAAW/C,EAAM6E,QAAS+S,EAAS6uB,OAAqB3kC,GACpH8kC,OAAqB9kC,GAGI,wBAAzBjB,EAAOimC,cACP,QAA+BhlC,IAA3BwG,EAAM6+B,kBAAkC7+B,EAAM6+B,kBAAoBnnC,EAAMmE,OAAOijC,mBAAqBb,GAA2B,CAC/H,MAAMc,EAAsBrnC,EAAM6E,QAAQyiC,iBAAiBC,eACvDvnC,EAAMmE,OAAOijC,mBAAqBb,GAEtCI,EAA4B3mC,EAAM+C,UAAUykC,6BAA6BphC,QAAQ,cAAeihC,EAAqB,MAClH,GAAI/+B,EAAM6+B,kBAAoBnnC,EAAMmE,OAAOsjC,mBAAqBjB,GAA2B,CAC9F,MAAMa,EAAsBrnC,EAAM6E,QAAQyiC,iBAAiBC,eACvDvnC,EAAMmE,OAAOsjC,mBAAqBjB,GAEtCG,EAA4B3mC,EAAM+C,UAAU2kC,6BAA6BthC,QAAQ,cAAeihC,EAAqB,CAI7H/kB,EAAUC,iBAAiB,CACvBC,UAAW,YACXmlB,cAAejB,EACfjkB,gBAC6B,qBAAzB5hB,EAAOimC,eACDpkB,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB3iB,EAAM+C,UAAW6U,aAAO,EAAPA,EAASgL,YACvE,CAAC,EACXglB,kBAAmBjB,EACnBkB,WAAYjB,GACd,EASAkB,EAAoBA,CAACzkB,EAAkBf,IAAiCzhB,IACzD,cAAbwiB,GACAf,EAAUylB,iBAAgB,EAAO,EAIlC,SAASC,EACZhoC,EACAsI,EACAga,EACAikB,EACAC,EACAvX,EACAgZ,GAA8B,IAAAjiB,EAAAkiB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAE9B,MAAM,GAAE/xB,EAAE,SAAE2M,EAAQ,QAAExe,EAAO,UAAE9B,GAAc/C,EAIvC4X,EAAoC,QAA7BoO,EAAqB,QAArBkiB,EAAGloC,EAAMsC,KAAKsV,eAAO,IAAAswB,OAAA,EAAlBA,EAAoBrnC,cAAM,IAAAmlB,EAAAA,EAAIiJ,aAAc,EAAdA,EAAgBrX,QAIxDzE,EAA8B,QAA1Bg1B,EAAkB,QAAlBC,EAAGpoC,EAAMsC,KAAK6Q,YAAI,IAAAi1B,OAAA,EAAfA,EAAiBvnC,cAAM,IAAAsnC,EAAAA,EAAIlZ,aAAc,EAAdA,EAAgB9b,KAIlDye,EAAsE,QAA9CyW,EAAsC,QAAtCC,EAAGtoC,EAAMsC,KAAKsvB,gCAAwB,IAAA0W,OAAA,EAAnCA,EAAqCznC,cAAM,IAAAwnC,EAAAA,EAAIpZ,aAAc,EAAdA,EAAgB2C,0BAE1F,SACFzb,EACAuyB,YAAY,gBAAEjmB,EAAe,cAAEklB,EAAa,kBAAEC,EAAiB,WAAEC,EAAU,UAAErlB,GAAW,gBACxF8C,EAAe,oBACfqjB,EAAmB,0BACnBC,EAAyB,cACzBC,GACAvgC,EAEEm+B,EAAsBn+B,EAAMspB,yBAC5BtpB,EAAMspB,yBAAyBkX,yBAC/BlX,GAA4BA,EAAyB3gB,OAAS,EAC9D2gB,EAAyB,GAAGkX,8BAC5BhnC,EAEAinC,EAAqC,CACvCC,aAAcjmC,EAAUkmC,mBACxBC,qBAAsBnmC,EAAUomC,2BAChCC,uBAAwBrmC,EAAUqmC,uBAClCC,kBAAmBtmC,EAAUumC,qBAC7BC,qBAAsBxmC,EAAUymC,8BAChCC,kBAAmB1mC,EAAU2mC,wBAC7B9nB,cAAe7e,EAAU8e,UACzBC,kBAAmB/e,EAAU+e,kBAC7BC,iBAAkBhf,EAAUgf,iBAC5B4nB,kBAAmB5mC,EAAU4mC,mBAY3BC,EAAwC,cAAbvmB,GAA2E,YAA/CrjB,EAAMsC,KAAKsvB,yBAAyB5hB,OAC7F45B,GACAtnB,EAAUunB,yBAAwB,GAGtC,MAAMC,EAAwC,cAAbzmB,GAAmE,aAAb,QAA1BklB,EAAAvoC,EAAMsC,KAAKynC,uBAAe,IAAAxB,OAAA,EAA1BA,EAA4Bv4B,QACrF85B,GAA4BxnB,EAAU0nB,+BACtC1nB,EAAU0nB,+BAA8B,GAG5CvmC,GAAmBmG,EAAAA,EAAAA,oBAAmB5J,EAAM6E,QAAQC,QAAQ+E,kBAAoB7J,EAAMqjB,SAAUrjB,EAAMuJ,WAGtG,MAAMwJ,EAA0E,QAArDy1B,EAAGxoC,EAAM6E,QAAQkF,cAAcC,eAAeC,eAAO,IAAAu+B,OAAA,EAAlDA,EAAoDx1B,sBAE5E+2B,EAA+B,cAAb1mB,EAA2B/a,EAAM2hC,uBAAmD,QAA7BxB,EAAGzoC,EAAMsC,KAAKynC,uBAAe,IAAAtB,OAAA,EAA1BA,EAA4B5nC,OACxGqpC,EACFl0B,EAAAA,gBAAgBC,YAAY8zB,aAAe,EAAfA,EAAiBI,kBAAoBJ,EAAiBI,gBAAgB,GAAGlc,OAASlb,EAC5G3J,EAAY67B,EAAoB5hB,GAChCmZ,EAAamM,GAAoC,cAAbtlB,GACpC,6BAAE+mB,IAAiCpqC,EAAM6E,QAAQC,QAAQulC,SAC/D,MAAO,CACHjmB,eAAgB,CACZhb,UAAW,GAAGA,4BAElB2jB,OAAQnV,GACJ9X,EAAAA,cAACwqC,EAAAA,mBAAkB,CACfC,cAAexnC,EAAUwnC,cACzBzf,eAAgB/nB,EAAU+nB,eAC1B0f,eAAeC,EAAAA,EAAAA,IAAW,OAAQ5lC,EAAQkF,eAC1CoM,SAAUA,EACV7T,KAAM,CAAEsV,UAAS2O,MAAOje,EAAM2nB,cAC9BprB,QAASA,EACT01B,SAAUiC,EACV9lB,GAAIA,EACJuxB,qBAAsBA,EACtB5kB,SAAUA,EACVU,QAASuiB,EACLtmC,EACAsI,EACAga,EACAikB,EACAC,EACArzB,EACAyE,EACA6uB,GAEJphB,mBAAoBC,EACpBmhB,oBAAqBA,EACrBmD,yBAA0BA,EAC1BjB,oBAAqBA,EACrBkB,wBAAyBvnB,EAAUunB,wBACnCC,yBAA0BA,EAC1BlB,0BAA2BA,EAC3BoB,8BAA+B1nB,EAAU0nB,8BACzCjB,cAAeA,EACfvzB,aAAcxV,EAAM6E,QAAQC,QAAQ0Q,aACpC6I,cAlEiC,CACzCzH,UAAW,CACPnB,GAAI,CAAEoB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrCjB,GAAI,CAAEgB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrChB,GAAI,CAAEe,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,IAEzCC,UAAU,GA6DFtT,iBAAkBA,EAClBinC,uBAAwB7B,EACxB8B,eAAgBriC,EAAMqiC,eACtBC,kBAAmBtiC,EAAM6+B,iBACzBljB,sBAAuB3b,EAAM2b,sBAC7BwjB,kBAAmBznC,EAAMmE,OAAOsjC,kBAChCL,kBAAmBpnC,EAAMmE,OAAOijC,kBAChCb,yBAA0BA,EAC1BC,yBAA0BA,EAC1BqE,oCAAqCC,EAAqC9qC,IAAU+qC,EAA+B/qC,GACnHgrC,6BAA8Bd,EAC9Be,MAAOnD,EAAkBzkB,EAAUf,GACnC4oB,+BAA6C,cAAb7nB,IAGxCgB,WACIvkB,EAAAA,cAACqrC,EAAgB,CACb1oB,gBAAiBA,EACjBklB,cAAeA,EACfC,kBAAmBA,EACnBC,WAAYA,EACZ9kC,UAAWA,EACXqoC,UAAyB,cAAd5oB,EACX4nB,6BAA8BA,KAI9C,CAQO,SAASiB,EAAsBrrC,EAAgDsI,GAAmB,IAAAgjC,EAAAC,EAAAC,EACrG,MAAM,GAAE90B,EAAE,SAAE2M,EAAQ,QAAExe,EAAO,UAAE9B,GAAc/C,EAE7C,OACIsI,EAAM2nB,cACFnwB,EAAAA,cAACg5B,EAAAA,eAAc,CACXpiB,GAAIA,EACJ2M,SAAUA,EACVxe,QAASA,EACTvC,KAAM,CAAEikB,MAAOje,EAAM2nB,cACrBrY,QAA2B,QAApB0zB,EAAEtrC,EAAMsC,KAAKsV,eAAO,IAAA0zB,OAAA,EAAlBA,EAAoBzqC,OAC7B4qC,qBACkC,QADdF,EAChBvrC,EAAMsC,KAAKmQ,aAAa5R,cAAM,IAAA0qC,GAE7B,QAF6BA,EAA9BA,EAAgCn8B,MAC5BqD,GAAsC,0DAAtBA,EAAatJ,cAChC,IAAAoiC,OAAA,EAFDA,EAEG34B,UAEP84B,oCACkC,QADCF,EAC/BxrC,EAAMsC,KAAKmQ,aAAa5R,cAAM,IAAA2qC,GAE7B,QAF6BA,EAA9BA,EAAgCp8B,MAC5BqD,GAAsC,oEAAtBA,EAAatJ,cAChC,IAAAqiC,OAAA,EAFDA,EAEG54B,UAEP+4B,eAAgB,CACZC,oBAAqB7oC,EAAU6oC,oBAC/BC,0BAA2B9oC,EAAU8oC,0BACrCC,mCAAoC/oC,EAAU+oC,mCAC9CC,sCAAuChpC,EAAUgpC,sCACjDC,sCAAuCjpC,EAAUipC,uCAErDpqB,cAAe7e,EAAU8e,UACzBC,kBAAmB/e,EAAU+e,kBAC7BC,iBAAkBhf,EAAUgf,kBAI5C,CAEO,SAASkqB,EACZjsC,EACAivB,GAAgC,IAAAid,EAAAC,EAEhC,MAAM,GAAEz1B,EAAE,SAAE2M,EAAQ,QAAExe,EAAO,UAAE9B,GAAc/C,EAIvCosC,EAAkD,QAApCF,EAA4B,QAA5BC,EAAGnsC,EAAMsC,KAAK8pC,sBAAc,IAAAD,OAAA,EAAzBA,EAA2BtrC,cAAM,IAAAqrC,EAAAA,EAAIjd,aAAc,EAAdA,EAAgBmd,eAC5E,IAAKA,IAAmBA,EAAeC,cACnC,OAAOvsC,EAAAA,cAAA,YAeX,OAZIA,EAAAA,cAACwsC,EAAAA,gBAAe,CACZC,UAAWH,EAAeC,eAAiB,EAC3CG,UAAQ,EACRvY,WAAWryB,EAAAA,EAAAA,QAAOmB,EAAU0pC,uBAAwBL,EAAeC,cAAe,KAClFK,YAAa,GAAGN,EAAeO,eAC/BrqC,KAAM,CAAC,EACPuC,QAASA,EACT6R,GAAIA,EACJ2M,SAAUA,GAKtB,CAEA,SAAStD,EAA0Chd,GAC/C,MAAO,CACHid,yBAA0Bjd,EAAUid,yBAEpCC,wBAAyBld,EAAUkd,wBACnCC,4BAA6Bnd,EAAUmd,4BAEvCC,gCAAiCpd,EAAUod,gCAC3CC,iCAAkCrd,EAAUqd,iCAC5CC,sCAAuCtd,EAAUsd,sCAEjDC,oBAAqBvd,EAAUud,oBAC/BC,wBAAyBxd,EAAUwd,wBACnCC,cAAezd,EAAUyd,cAEjC,CAEA,SAASC,EAAyC1d,GAC9C,MAAO,CACH2d,yBAA0B3d,EAAU4d,0BACpCC,wBAAyB7d,EAAU8d,mBACnCC,2BAA4B/d,EAAU+d,2BACtCC,yBAA0Bhe,EAAUie,+BAEpCC,yBAA0Ble,EAAUke,yBAEpCC,yBAA0Bne,EAAUoe,8BACpCC,+BAAgCre,EAAUse,yCAElD,CAEA,SAASC,EAAgDve,GACrD,MAAO,CACHwe,4BAA6Bxe,EAAUwe,4BACvCC,2BAA4Bze,EAAUye,2BACtCC,0CAA2C1e,EAAU0e,0CACrDC,6CAA8C3e,EAAU2e,6CACxDC,0CAA2C5e,EAAU4e,0CACrDC,cAAe7e,EAAU8e,UACzBC,kBAAmB/e,EAAU+e,kBAC7BC,iBAAkBhf,EAAUgf,iBAEpC,CAEA,SAASC,EACLjf,GAEA,MAAO,CACHkf,yBAA0Blf,EAAUkf,yBACpCC,8BAA+Bnf,EAAUmf,8BACzCC,yBAA0Bpf,EAAUof,yBACpCC,+BAAgCrf,EAAUqf,+BAElD,CASA,MAAMC,EAA6BA,CAACC,EAA6Bvf,EAAmC6U,IAChG/W,IAEAyhB,EAAUC,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlB5hB,EAAOmP,QAAiC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC9H,EAGC,SAASgqB,EACZ5sC,EACAsI,EACAga,EACAmiB,EACAC,GAAkB,IAAAmI,EAElB,MAAM,GACFn2B,EAAE,SACF2M,EAAQ,QACRxe,EACAvC,MACIghB,gBAAkBziB,OAAQyiB,GAC1BC,qBAAuB1iB,OAAQ0iB,IAClC,UACDxgB,GACA/C,EAEE4X,EAA4B,QAArBi1B,EAAG7sC,EAAMsC,KAAKsV,eAAO,IAAAi1B,OAAA,EAAlBA,EAAoBhsC,QAGhC6nC,YAAY,gBAAEjmB,EAAe,cAAEklB,EAAa,kBAAEC,EAAiB,WAAEC,EAAU,UAAErlB,GAAW,SACxFrM,GACA7N,EAGJ,GAAIA,EAAM2b,sBACN,OAEJ,MAAM7a,EAAY67B,EAAoB5hB,IAChC,6BAAE+mB,GAAiCpqC,EAAM6E,QAAQC,QAAQulC,SAE/D,MAAO,CACHjmB,eAAgB,CACZhb,UAAW,GAAGA,sCAElB2jB,OAAQnV,GAAW0L,GACfxjB,EAAAA,cAAC0jB,EAAAA,4BAA2B5W,OAAAC,OAAA,CACxBzD,UAAU,gCACVqa,6BAA8B1gB,EAAU0gB,6BACxCC,gCAAiC3gB,EAAU2gB,gCAC3CC,kCAAmC5D,EAA0Chd,GAC7E6gB,mCAAoCnD,EAAyC1d,GAC7E8gB,wCAAyCvC,EAAgDve,GACzF+gB,uDAAwD9B,EACpDjf,GAEJT,KAAM,CAAEsV,UAASzB,WAAUmN,iBAAgBC,uBAC3C1e,QAASA,EACT6R,GAAIA,EACJ2M,SAAUA,EACVU,QAAS1B,EAA2BC,EAAWvf,EAAW6U,GAC1DoM,8BAA+B1b,EAAM2b,sBACrC+gB,oCAAqCP,GAChCA,GAAoC,CAAEC,UAAWA,KAG9DrgB,WACIvkB,EAAAA,cAACqrC,EAAgB,CACb1oB,gBAAiBA,EACjBklB,cAAeA,EACfC,kBAAmBA,EACnBC,WAAYA,EACZ9kC,UAAWA,EACXqoC,UAAyB,mBAAd5oB,EACX4nB,6BAA8BA,IAI9C,CAUO,SAAS0C,EACZC,EACAn1B,EACA8sB,EACAp8B,GAEA,IAAIA,EAAM2b,sBAKV,OADA2gB,EAAAA,EAAAA,mBAAkBF,GACX5kC,EAAAA,aAAmBitC,EAA+C,CAAEn1B,UAAS8sB,aACxF,CASA,MAAMpgB,EAAwBA,CAAChC,EAA6Bvf,EAAmC6U,IAC3F/W,IAEAyhB,EAAUC,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlB5hB,EAAOmP,QAAgC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC7H,EAGC,SAASoqB,EACZhtC,EACAsI,EACAga,EACA2M,GAAgC,IAAAge,EAEhC,MAAM,GACFv2B,EAAE,SACF2M,EAAQ,QACRxe,EACAvC,MACIqiB,WAAa9jB,OAAQ8jB,IACxB,UACD5hB,GACA/C,EAEE4X,EAA4B,QAAlBq1B,EAAAjtC,EAAMsC,KAAKsV,eAAO,IAAAq1B,GAAlBA,EAAoBpsC,OAASb,EAAMsC,KAAKsV,QAAQ/W,OAASouB,aAAc,EAAdA,EAAgBrX,SAGrF8wB,YAAY,gBAAEjmB,EAAe,cAAEklB,EAAa,kBAAEC,EAAiB,WAAEC,EAAU,UAAErlB,GAAW,gBACxF8C,GACAhd,EAGJ,GAAIA,EAAM2b,sBACN,OAGJ,MAAM7a,EAAY67B,EAAoB5hB,IAChC,6BAAE+mB,GAAiCpqC,EAAM6E,QAAQC,QAAQulC,SAC/D,MAAO,CACHjmB,eAAgB,CACZhb,UAAW,GAAGA,gCAElB2jB,OAAQnV,GACJ9X,EAAAA,cAAC8kB,EAAAA,uBAAsB,CACnBxb,UAAU,gCACVyb,wBAAyB9hB,EAAU8hB,wBACnCC,6BAA8B/hB,EAAU+hB,6BACxCC,qBAAsBhiB,EAAUgiB,qBAChCC,2BAA4BjiB,EAAUiiB,2BACtCC,uBAAwBliB,EAAUkiB,uBAClCC,4BAA6BniB,EAAUmiB,4BACvCC,eAAgBpiB,EAAUoiB,eAC1B7iB,KAAM,CAAEsV,UAAS+M,aACjB9f,QAASA,EACT6R,GAAIA,EACJ0O,SAAS,SACT/B,SAAUA,EACVU,QAASO,EAAsBhC,EAAWvf,EAAW6U,GACrDyN,mBAAoBC,IAG5BjB,WACIvkB,EAAAA,cAACqrC,EAAgB,CACb1oB,gBAAiBA,EACjBklB,cAAeA,EACfC,kBAAmBA,EACnBC,WAAYA,EACZ9kC,UAAWA,EACXqoC,UAAyB,aAAd5oB,EACX4nB,6BAA8BA,IAI9C,CAOA,MAAM8C,EAA2B5qB,GAAiCS,IAC1DT,EAAUU,gBACVV,EAAUU,eAAeD,EAAU,EAIpC,SAASoqB,EACZntC,EACAsI,EACAga,GAEA,MAAM,UAAEvf,EAAS,SAAEsgB,GAAarjB,GAE1B,SACFmW,EAAQ,IACRi3B,EAAG,IACHvmB,EACA6hB,YAAY,cAAEf,IACdr/B,EAEEc,EAAY67B,EAAoB5hB,GAEtC,MAAO,CACHe,eAAgB,CACZhb,UAAW,GAAGA,eAElBwc,oBAAqB,CACjBrhB,IAAK,QACL6E,UAAW,GAAGA,4BACdikC,QAAS,GAAGjkC,6BAEhBhF,QAAStE,EAAAA,cAAA,OAAKsJ,UAAW,GAAGA,qCAA8CrG,EAAUuqC,wBACpF7nB,OAAQkiB,GACJ7nC,EAAAA,cAAA,QAAMsJ,UAAU,iDACZtJ,EAAAA,cAAA,QAAMsJ,UAAU,2BAA0B,cAAa,SACvDtJ,EAAAA,cAAA,YAAO6nC,IAGf54B,MACIjP,EAAAA,cAACsf,EAAAA,SAAQ,CACL1I,GAAI,GAAGtN,4BACPgkC,IAAKA,EACLvmB,IAAKA,EACLmF,aAAc7V,EACd8V,SAAUihB,EAAwB5qB,GAClC4J,uBAAwBnpB,EAAUmpB,uBAClCzoB,iBAAkBA,IAIlC,CAEO,SAAS8pC,EACZvtC,EACAwtC,GAAkC,IAAAC,EAElC,MAAM,UAAE1qC,EAAS,QAAE8B,EAAO,SAAEwe,GAAarjB,EACnC4X,EAA4B,QAArB61B,EAAGztC,EAAMsC,KAAKsV,eAAO,IAAA61B,OAAA,EAAlBA,EAAoB5sC,OAE9BuI,EAAY67B,EAAoB5hB,GAOhCqqB,EACFF,IAAeG,EAAAA,EAAuBC,MAAQC,EAAAA,kBAAkBC,iBAAmBD,EAAAA,kBAAkBE,uBACnGC,GAAUC,EAAAA,EAAAA,kBAAiB,QAASxqC,EAAkBiqC,GACtDQ,GAAYC,EAAAA,EAAAA,wBAAuB1qC,EAAkBuqC,GACrD3pC,EAAOmpC,IAAeG,EAAAA,EAAuBC,MAAQ7qC,EAAUqrC,qBAAuBrrC,EAAUsrC,2BAEtG,MAAO,CACHjqB,eAAgB,CACZhb,UAAW,GAAGA,iBAAyBokC,KAE3Cz+B,MACIjP,EAAAA,cAAC8jC,EAAAA,OAAMh3B,OAAAC,OAAA,CACHe,MAAOvJ,EACP+E,UAAW,GAAGA,mBAA2BokC,WAAmB,aAChDnpC,EACZixB,SArBWgZ,EAqBYd,EArBuC,KACtE,MAAMe,GAAY9D,EAAAA,EAAAA,IAAW,SAAU5lC,GAAWA,EAAQkF,eACpDykC,EAAYD,EAAWrsC,SAAS,KAAO,IAAM,IACnDusC,SAASC,SAASljB,KAAO,GAAG+iB,IAAYC,cAAsB52B,GAC1DA,EAAQvI,2BAA2Bi/B,GAAwB,IAkBnDJ,GAEH7pC,IAxBUiqC,KA4B3B,CAOA,MAAMK,EAAwBrsB,GAAiCtd,IAC3D,MAAME,EAAQF,EAAM4U,cAAc1U,MAClCod,EAAUssB,iBAAiB1pC,EAAM+L,OAAS,EAAI49B,OAAO3pC,GAAS2pC,OAAOC,WAAW5pC,GAAO,EAGpF,SAAS6pC,EACZ/uC,EACAsI,EACAga,GAEA,MAAM,OAAEne,EAAM,UAAEpB,GAAc/C,GAG1B0oC,eACApgC,EAEEc,EAAY67B,EAAoBjlC,EAAMqjB,UAE5C,MAAO,CACHe,eAAgB,CACZhb,UAAW,GAAGA,mBAElBwc,oBAAqB,CACjBrhB,IAAK,QACL6E,UAAW,GAAGA,wBACdikC,QAAS,GAAGjkC,mBAEhBhF,QAAStE,EAAAA,cAAA,OAAKsJ,UAAW,GAAGA,iCAA0CrG,EAAUisC,8BAChFjgC,MACIjP,EAAAA,cAAA,SACIoG,KAAK,SACLkD,UAAW,GAAGA,uCACd6iB,SAAU0iB,EAAqBrsB,GAAU,aAC7Bvf,EAAUisC,6BAA4B,gBACnC7qC,EAAOijC,kBAAiB,gBACxBjjC,EAAOijC,kBAAiB,gBACxB9+B,EAAM6+B,iBACrBjiC,MAAOoD,EAAM6+B,iBACbiG,IAAKjpC,EAAOijC,kBACZvgB,IAAK1iB,EAAOijC,oBAI5B,CAEO,MAAM+D,EAAqDp9B,IAQ7D,IAR8D,UAC/Dq9B,EAAS,gBACT3oB,EAAe,cACfklB,EAAa,kBACbC,EAAiB,WACjBC,EAAU,UACV9kC,EAAS,6BACTqnC,GACHr8B,EACOkhC,EAAwC,GAoB5C,OAjBK7E,IACD6E,EAAgBriC,OAAOsiC,OAAOzsB,GAAiB9Y,QAAOkE,QAAuB/L,IAAZ+L,KAIjE85B,IAAkByC,GAClB6E,EAAcjnC,KAAK2/B,GAGnBC,GACAqH,EAAcjnC,KAAK4/B,GAGnBC,GACAoH,EAAcjnC,KAAK6/B,GAInB/nC,EAAAA,cAACqkC,EAAAA,MAAK,CAACpB,OAAQqI,GAAa6D,EAAch+B,OAAS,EAAGmzB,MAAM,SAAS+K,WAAS,eAAapsC,EAAUqsC,0BACjGtvC,EAAAA,cAAA,OAAKsJ,UAAU,oBAAmB,cAAa,QAC3CtJ,EAAAA,cAAA,QAAMsJ,UAAU,6BAChBtJ,EAAAA,cAAA,YAAOiD,EAAUqsC,2BAEpBH,EAAcniC,KAAI,CAACe,EAAS0mB,IAErBz0B,EAAAA,cAAA,OAAKsN,IAAKmnB,EAAOnrB,UAAU,mBACtByE,KAIT,EAIT,SAASwhC,EACZrvC,EACAsI,GAEA,MAAM,UAAEvF,GAAc/C,GAEhB,IAAEotC,EAAG,IAAEvmB,GAAQve,EAErB,GAAKwiC,EAAqC9qC,IAAW+qC,EAA+B/qC,GAIpF,OACIF,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,yBACXkmC,EAAgBtvC,EAAO6mB,EAAK9jB,EAAUupB,iBACtCijB,EAAgBvvC,EAAOotC,EAAKrqC,EAAUspB,iBAGnD,CAEO,MAAMmjB,EAAsD,kEACtDC,EACT,sEACSC,EAAuE,iDAE9EJ,EAAkBA,CACpBtvC,EACA6mB,EACAyF,KAEA,MAAM,UAAEvpB,EAAS,SAAEsgB,GAAarjB,EAC1BoJ,EAAY67B,EAAoB5hB,GACtC,GAAIwD,GAAe,IAARA,GAAaA,IAAQgoB,OAAOc,UACnC,OACI7vC,EAAAA,cAAA,KAAGsJ,UAAW,GAAGA,wBACbtJ,EAAAA,cAAA,QAAMsJ,UAAU,WAAWrG,EAAU6sC,qBACrC9vC,EAAAA,cAAA,KAAGsJ,UAAU,iBAAgB,cAAa,SACzCkjB,EAAgBlmB,QAAQ,QAASygB,EAAIhN,YAIlC,EAGd01B,EAAkBA,CACpBvvC,EACAotC,EACA/gB,KAEA,MAAM,UAAEtpB,EAAS,SAAEsgB,GAAarjB,EAC1BoJ,EAAY67B,EAAoB5hB,GACtC,GAAI+pB,GAAOA,EAAM,EACb,OACIttC,EAAAA,cAAA,KAAGsJ,UAAW,GAAGA,wBACbtJ,EAAAA,cAAA,QAAMsJ,UAAU,WAAWrG,EAAU6sC,qBACrC9vC,EAAAA,cAAA,KAAGsJ,UAAU,iBAAgB,cAAa,SACzCijB,EAAgBjmB,QAAQ,QAASgnC,EAAIvzB,YAIlC,EAGdixB,EAAwC9qC,IAAuE,IAAA6vC,EAAAC,EACjH,MAAMC,EAAkB/vC,EAAMsC,KAAKmQ,aAAa5R,OAIhD,KAF6BkvC,SAAwG,QAAzFF,EAAfE,EAAiB3gC,MAAKqD,GAAgBA,EAAatJ,OAASqmC,WAA4C,IAAAK,OAAA,EAAxGA,EACvBj9B,WAEF,OAAO,EAOX,GAJ+Bm9B,SAE9B,QAF6CD,EAAfC,EAAiB3gC,MAC5CqD,GAAgBA,EAAatJ,OAASumC,WACzC,IAAAI,OAAA,EAF8BA,EAE5Bl9B,UAEyB,CAAC,IAADo9B,EACxB,MAAMC,EAAuD,QAAhBD,EAAGhwC,EAAM6E,eAAO,IAAAmrC,GAAS,QAATA,EAAbA,EAAelrC,eAAO,IAAAkrC,GAAK,QAALA,EAAtBA,EAAwBxoB,WAAG,IAAAwoB,GAAU,QAAVA,EAA3BA,EAA6BE,gBAAQ,IAAAF,OAAA,EAArCA,EAAuCG,iCACvF,GAAgD,SAA5CF,EACA,OAAO,EAGX,GAAgD,QAA5CA,EACA,OAAO,EAGX,MAAMG,EAAepwC,EAAMsC,KAAKihB,oBAAoB1iB,OACpD,OACIuvC,IAC8C,QAA5CH,GAAqDG,EAAaC,OACnB,QAA5CJ,IAAsDG,EAAaC,MAAO,CAEhF,CAAC,IAADC,EAAAC,EACH,MAAMC,EAAgD,QAA/BF,EAAGtwC,EAAMsC,KAAKkuC,yBAAiB,IAAAF,OAAA,EAA5BA,EAA8BzvC,OACxD,QAA+C,QAAxC0vC,EAAEC,aAAiB,EAAjBA,EAAmBC,2BAAmB,IAAAF,GAAAA,EAAW,GAI5DxF,EAAkC/qC,IAA2D,IAAA0wC,EAC/F,MAAMX,EAAkB/vC,EAAMsC,KAAKmQ,aAAa5R,OAE1C8vC,EAAoCZ,SAEzC,QAFwDW,EAAfX,EAAiB3gC,MACvDqD,GAAgBA,EAAatJ,OAASsmC,WACzC,IAAAiB,OAAA,EAFyCA,EAEvC99B,UAEH,OAAO+9B,SAAAA,CAA0C,gtBCv8BrD,IAAIltC,EA6EG,SAASmtC,EACZ5wC,EACAsI,EACAga,EACA2M,EACA4hB,GAAuC,IAAAlL,EAAAmL,EAAAC,EAEvC,MAAM,UAAEhuC,EAAS,SAAEsgB,GAAarjB,GAG5B0oC,YAAY,gBAAEjmB,IACdna,GAEE,gBAAE0oC,GAAoB1uB,EAEtBzd,EAAU7E,EAAM6E,QAIhB+S,EAA4B,QAAlB+tB,EAAA3lC,EAAMsC,KAAKsV,eAAO,IAAA+tB,GAAlBA,EAAoB9kC,OAASb,EAAMsC,KAAKsV,QAAQ/W,OAASouB,aAAc,EAAdA,EAAgBrX,QAInFq5B,EAA4D,QAAvCH,EAA+B,QAA/BC,EAAG/wC,EAAMsC,KAAK8gC,yBAAiB,IAAA2N,OAAA,EAA5BA,EAA8BlwC,cAAM,IAAAiwC,EAAAA,EAAI7hB,aAAc,EAAdA,EAAgBmU,kBAGhFzY,EAAmB3qB,EAAM6E,QAAQ2iB,IAAIrjB,OAAOwmB,iBAE5CumB,EAAuBl7B,EAAAA,gBAAgBC,YAAYg7B,GAEzD,IAAKr5B,IAAYs5B,EACb,OAGJ,MAAM9nC,EAAY67B,EAAoB5hB,GAEhC8tB,EAAY5wC,SACd6wC,EAAWpoC,EAAcsZ,EAAU+uB,wBAEjCC,EAAyB/wC,SAC3BgxC,EAAwBvoC,EAAcsZ,EAAUkvB,qBAEpD/tC,GAAmBmG,EAAAA,EAAAA,oBAAmB/E,EAAQC,QAAQ+E,kBAAoB7J,EAAMqjB,SAAUrjB,EAAMuJ,WAEhG,MAAMkoC,EAAiB5sC,EAAQ2iB,IAAIrjB,OAAOstC,eAE1C,IAAIC,EAA0C,GAI9CA,EAF0BT,EAESnkC,KAAI6kC,IAAuB,IAAAnlC,EAAAolC,EAuB1D,MAAO,CACHC,aAvBiBb,EAAgBW,EAAqBG,mBAAoB/uC,GAwB1EgvC,WAvBeJ,EAAqBG,mBAAmBj4B,WAwBvDm4B,cArBoC,QADxBxlC,EAAqD,QAArDolC,EAAID,EAAqBM,oCAA4B,IAAAL,EAAAA,EACjED,EAAqBO,uBAAe,IAAA1lC,EAAAA,EACpC,IAC0C7C,QAC1CzE,IAAK,IAAAitC,EAAAC,EAAA,OAAKz5B,EAAAA,iBAAiBC,kBAAgD,QAA/Bu5B,EAAqB,QAArBC,EAACltC,EAAMuzB,sBAAc,IAAA2Z,OAAA,EAApBA,EAAsB/iC,gBAAQ,IAAA8iC,EAAAA,EAAIjtC,EAAMmK,SAAS,IAG5BvC,KAAwBmlC,IAA+B,IAAAI,EAAAC,EACzH,MAAMC,EAA4D,QAA9CF,EAAGJ,EAA6BxZ,sBAAc,IAAA4Z,EAAAA,EAAIJ,EAChEO,GAAqBC,EAAAA,EAAAA,yCAAwCR,EAA8BR,GACjG,MAAO,CACHvsC,MAA2B,QAAtBotC,EAAEC,EAAe70B,aAAK,IAAA40B,EAAAA,EAAI,GAC/B57B,GAAI67B,EAAeljC,SAASwK,WAC5B64B,aAAcH,EAAeI,aAC7BC,SAAUL,EAAeM,SACzBrW,WAAY7R,GAAoB6nB,IAAuBM,EAAAA,qBAAqBC,WAC5EC,oBAAqBjwC,EAAUiwC,oBAAsBjwC,EAAUiwC,oBAAsB,GACxF,IAMJ,IAGL,MAAMC,EAAoBpC,QAAAA,GAAsBqC,EAAAA,EAAAA,6BAA4BruC,EAAQC,QAAQymB,IAAI4nB,YAChG,IAAK,MAAMC,KAAiB1B,EAAgB,CACxC,MAAM2B,EAA6BJ,EAAkBtpC,QACjD2pC,GAAsBA,EAAmBxB,mBAAmBj4B,aAAeu5B,EAAcrB,aAE7F,IAAK/7B,EAAAA,gBAAgBC,YAAYo9B,GAC7B,SAEJ,MAAME,EAA4BF,EAA2B,GACvDG,EAAwBJ,EAAcpB,aAAaroC,QACrD8pC,IAAa,IAAAC,EAAA,OACTD,EAAcvuC,MAAMggC,uBAAgE,QAA7CwO,EAAKH,EAA0B9a,sBAAc,IAAAib,GAAO,QAAPA,EAAxCA,EAA0Ch2B,aAAK,IAAAg2B,OAAA,EAA/CA,EAAiDxO,oBAAmB,IAEnHlvB,EAAAA,gBAAgBC,YAAYu9B,KAGjCA,EAAsB,GAAGG,WAAY,EAAK,CAG9C,MAAMloB,EAAwDimB,EAAe5kC,KAAIsmC,GAtJjCpzC,KAChD,MAAM4zC,EAAc/E,OAAOnhB,SAAS1tB,EAAM+xC,WAAY,IAChD8B,GAAqBjyC,EAAAA,EAAAA,QAAO5B,EAAM+C,UAAU+wC,4BAA6B9zC,EAAM6xC,cAE/ElhC,EAAe3Q,EAAMyiB,gBAAgBziB,EAAM+xC,YAEjD,IAAIgC,EAAyBC,EAAAA,EAAcruB,SAE3C,MAAMsuB,GAAgBC,EAAAA,EAAAA,6CAA4CN,GAE5DO,EAAkCn0C,EAAM6E,QAAQ2iB,IAAIrjB,OAAOiwC,uBASjE,OAPIp+B,EAAAA,gBAAgBC,YAAYk+B,KAC3BA,EAAgCjyC,SAASmyC,EAAAA,eAAeC,OACzDH,EAAgCjyC,SAAS+xC,KAEzCF,EAAyBC,EAAAA,EAAcO,QAGpC,CACHnwB,eAAgB,CACZhb,UAAW,GAAGpJ,EAAMoJ,uBAExBwc,oBAAqB,CACjBrhB,IAAK,QACL6E,UAAW,GAAGpJ,EAAMoJ,qCACpBikC,QAAS,GAAGrtC,EAAMoJ,qCAAqCpJ,EAAM+xC,cAEjEtsB,OAAQ9U,GACJ7Q,EAAAA,cAAA,QAAMsJ,UAAU,gDAAgDmN,KAAK,QAAO,YAAW,aACnFzW,EAAAA,cAAA,QAAMsJ,UAAU,2BAA0B,cAAa,SACvDtJ,EAAAA,cAAA,YAAO6Q,IAGfvM,QAAStE,EAAAA,cAAA,WAAME,EAAM6xC,cACrBhsB,OACI/lB,EAAAA,cAAC00C,EAAAA,EAAQ,CACLzC,WAAY/xC,EAAM+xC,WAClBF,aAAc7xC,EAAM6xC,aACpBgC,mBAAoBA,EACpB7B,aAAchyC,EAAMgyC,aACpB/lB,SAAUjsB,EAAMy0C,iBAChBC,aAAc10C,EAAM20C,mBACpBlxC,iBAAkBA,EAClBmxC,cAAeb,EACfj7B,YAAa9Y,EAAM6E,QAAQC,QAAQgU,cAG9C,EAuGU+7B,CAA0CjsC,EAAAA,EAAC,CAAC,EAC5CwqC,GAAa,IAChBrwC,YACA0f,kBACAuuB,kBACAyD,iBAAkBtD,EAClBwD,mBAAoBrD,EACpBloC,YACAvE,eAIR,MAAO,CACHuf,eAAgB,CACZhb,UAAW,GAAGA,gBAElBqiB,YAER,CAEA,MAAM2lB,EAAa7wC,MACfyI,EACA8rC,WAEMA,GAAkB9rC,EAAa+oC,WAAY/oC,EAAa+rC,SAAS,EAGrExD,EAA0BA,CAC5BvoC,EACAwoC,KAEIA,GACAA,EAAoBxoC,EAAagsC,qBAAsB,EAIzD/P,EAAuB5hB,GACe,cAAjCA,EAAS6hB,oBAAsC,eAAiB,yCCjJpE,IAAKyI,EA6FA9H,mBA7FZ,SAAY8H,GACRA,EAAA,cACAA,EAAA,0BACH,CAHD,CAAYA,IAAAA,EAAsB,KA6FlC,SAAY9H,GACRA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,OACH,CAPD,CAAYA,IAAAA,EAAe,ksBC9KpB,MAAM2O,UAAiB10C,EAAAA,cAK1BC,YAAmBC,EAAuBsI,GACtCrI,MAAMD,GALO,KAAAi1C,WAAiDn1C,EAAAA,YA0FjD,KAAAo1C,cAAgB30C,UAC7BC,KAAKqQ,SAAS,CAAEskC,cAAepoC,EAAK2b,SAEhCloB,KAAKR,MAAMisB,gBACLzrB,KAAKR,MAAMisB,SAAS,CACtB8lB,WAAYvxC,KAAKR,MAAM+xC,WACvBgD,SAAUhoC,EAAK2b,OACf0sB,cAAeroC,EAAK7H,OACrB,EAIM,KAAAksC,WAAa7wC,UAC1BC,KAAKqQ,SAAS,CAAEskC,cAAenwC,EAAMC,OAAOC,QAExC1E,KAAKR,MAAMisB,gBACLzrB,KAAKR,MAAMisB,SAAS,CACtB8lB,WAAYvxC,KAAKR,MAAM+xC,WACvBgD,SAAU/vC,EAAMC,OAAOC,MACvBkwC,cAAepwC,EAAMC,OAAOowC,WAC7B,EAvGH70C,KAAKR,MAAM00C,cACXl0C,KAAKR,MAAM00C,aAAa,CACpBM,qBAAsBx0C,KAAKR,MAAM+xC,aAIzC,MAAMuD,EAAe90C,KAAKR,MAAMgyC,aAAa5iC,MAAKrC,GAAQA,EAAK4mC,YAC3D2B,GACA90C,KAAK8H,MAAQ,CACT6sC,cAAeG,EAAa5+B,GAAGmD,YAE/BrZ,KAAKR,MAAMisB,UAEXzrB,KAAKR,MAAMisB,SAAS,CAChB8lB,WAAYvxC,KAAKR,MAAM+xC,WACvBgD,SAAUO,EAAa5+B,GACvB0+B,cAAeE,EAAapwC,SAIpC1E,KAAK8H,MAAQ,CACT6sC,cAAe,IAGvB30C,KAAKwtC,SAAUC,EAAAA,EAAAA,kBAAiB,QAASjuC,EAAMyD,iBAAmBjD,KAAKR,MAAM6xC,aACjF,CAEOvmC,SACH,OAAI9K,KAAKR,MAAM8Y,aAAetY,KAAKR,MAAM40C,gBAAkBZ,EAAAA,EAAcO,OAC9D/zC,KAAK+0C,gBAGT/0C,KAAKg1C,iBAChB,CAEQA,kBACJ,MAAM,WAAEzD,EAAU,aAAEC,EAAY,aAAEH,EAAY,mBAAEgC,GAAuBrzC,KAAKR,MACtEkuC,GAAYC,EAAAA,EAAAA,wBAAuB3tC,KAAKR,MAAMyD,iBAAmBjD,KAAKwtC,SAC5E,OACIluC,EAAAA,cAAA,SAAA8M,OAAAC,OAAA,CACI6J,GAAI,uBAAuBq7B,IAC3BjU,IAAKt9B,KAAKy0C,WAAU,aACRpD,EACZzoC,UAAU,uBACV6iB,SAAUzrB,KAAK4wC,YACXlD,GAEJpuC,EAAAA,cAAA,UAAQoF,MAAM,GAAE,gBAA6C,KAA7B1E,KAAK8H,MAAM6sC,cAAsBM,SAAuC,KAA7Bj1C,KAAK8H,MAAM6sC,cAAsBra,QAAM,EAACP,UAAQ,GACtHsZ,GAEJ7B,EAAallC,KACTC,GACGA,GACIjN,EAAAA,cAAA,UACIoF,MAAO6H,EAAK2J,GACZtJ,IAAKL,EAAK2J,GACV++B,SAAUj1C,KAAK8H,MAAM6sC,gBAAkBpoC,EAAK2J,GAAGmD,WAAU,gBAC1CrZ,KAAK8H,MAAM6sC,gBAAkBpoC,EAAK2J,GAAGmD,WACpDzQ,UAAW2D,EAAKyvB,WAAa,sCAAmC16B,GAE/DiL,EAAK7H,SAMlC,CAEQqwC,gBACJ,MAAMG,EAAcl1C,KAAKR,MAAMgyC,aAAallC,KAAiBC,GACzDnE,EAAAA,EAAA,GACOmE,GAAI,IACP2b,OAAQ3b,EAAK2J,GACbu9B,cAAezzC,KAAKR,MAAM6xC,iBAGlC,OAAO/xC,EAAAA,cAAC61C,EAAAA,gBAAe,CAACC,KAAMF,EAAa58B,YAAatY,KAAKR,MAAM8Y,YAAc+8B,aAAcr1C,KAAK00C,eACxG,gCCtGG,IAAKlB,mBAAZ,SAAYA,GACRA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,kBACH,CAHD,CAAYA,IAAAA,EAAa,4lBC6DlB,SAASjN,EAAiBC,EAA+BjkC,GAC5D,OAAKikC,GAAaA,GAAa,EACpBjkC,EAAU+yC,uBACI,IAAd9O,EACAjkC,EAAUgzC,8BAEdhzC,EAAUizC,6BAA6B5vC,QAAQ,YAAa4gC,EAAUntB,WACjF,CAEO,SAASgtB,EACZhmC,EACAsS,EACApQ,EACA8B,EACA+S,EACA6uB,EACAiI,GAEA,GAA6B,eAAzB7tC,EAAOimC,cACP,OAAO/jC,EAAUkzC,0BACd,GAA6B,qBAAzBp1C,EAAOimC,cAAsC,CAAC,IAADoP,EAmBlDC,EAlBF,GAAIt1C,EAAOomC,kBAA0D,gBAAtCpmC,EAAOomC,iBAAiBC,UAA6B,CAEhF,MAAMkP,EA/CX,SACHjjC,EACAyE,EACA82B,GAGA,IAAI0H,GAA0B,EAE9B,MAAMC,EAAkBz+B,aAAO,EAAPA,EAASvI,SAEjC,IAAK,IAAIklB,EAAQ,EAAGA,EAAQphB,EAAMA,KAAKC,UAAWnC,OAAQsjB,IACtD,GACIphB,EAAMA,KAAKC,UAAWmhB,GAAOzc,YAAcu+B,IAC1CljC,EAAMA,KAAKC,UAAWmhB,GAAOlc,oBAAsB,QAASq2B,aAAQ,EAARA,EAAU9kB,gBAAiB,IAC1F,CACEwsB,EAAiB7hB,EAEjB,KAAM,CAId,OAAO6hB,CACX,CAyB2CE,CAAgBnjC,EAAMyE,EAAS82B,GAE9D,IAAI6H,EAA0B,EAC9B,IAAwB,IAApBH,EAAuB,CAAC,IAADI,EACvB,MAAMC,uWAAgB7tC,CAAA,GAAQuK,EAAMA,KAAKC,UAAWgjC,IACpDG,EAA2C,QAA5BC,EAAGC,EAAiBr3B,gBAAQ,IAAAo3B,EAAAA,EAAI,CAAE,CAIrD,MAAME,EArFX,SAA0B7xC,EAAuC4hC,GAGpE,MAAMkQ,EAAiD9xC,EAAQ2iB,IAAIrjB,OAAOwyC,2BACpEC,EAAenQ,aAAmB,EAAnBA,EAAqB7b,kBAG1C,IAAI8rB,EAYJ,OATIA,OAD+B50C,IAA/B60C,QAA6D70C,IAAjB80C,EAJnB,QAMD90C,IAAjB80C,EACSD,QAAAA,EAPS,QAQa70C,IAA/B60C,EACSC,EAEAC,KAAKzJ,IAAIuJ,EAA4BC,GAGlDF,CACX,CAiEkCI,CAAiBjyC,EAAS4hC,GAChD,OAAO1jC,EAAUg0C,qBACZ3wC,QAAQ,gBAAiBmwC,EAAgB18B,YACzCzT,QAAQ,gBAAiBswC,EAAc78B,WAAY,CACrD,OACHhZ,EAAOomC,kBACgC,mBAAtCpmC,EAAOomC,iBAAiBC,WAAwE,kBAAtCrmC,EAAOomC,iBAAiBC,UAK5D,QAAvBgP,EAAAr1C,EAAOomC,wBAAgB,IAAAiP,GAAvBA,EAAyBc,mBAAqBhhC,EAAAA,gBAAgBC,YAAYpV,EAAOomC,iBAAiB+P,mBAC3Fn2C,EAAOomC,iBAAiB+P,kBAC1BlqC,KAAIC,IAAO,IAAAkqC,EACR,OAAOlnB,EAAAA,iBAAiBC,cAAcjjB,EAAKmqC,kBACpB,QADqCD,EACtDlqC,EAAKoqC,oBAAY,IAAAF,EAAAA,EAAIlqC,EAAKqqC,gBAC1BrqC,EAAKmqC,gBAAgB,IAE9Br9B,WAGF9W,EAAUkzC,0BAb8B,QAA3CE,EAAOt1C,EAAOomC,iBAAiBoQ,oBAAY,IAAAlB,OAAA,EAApCA,EAAsCe,gBAaN,CAInD,CAEO,SAASx0B,EACZ7hB,EACAkC,EACAu0C,GAEA,IAAKz2C,EACD,MAAO,CAAC,EAGZ,MAAM03B,EAA4D,CAAC,EAEnE,IAAK,MAAMC,KAAa33B,EACpB03B,EAAWC,EAAUsZ,oBAAsByF,EAAwB/e,EAAUsZ,mBAAoB/uC,EAAWu0C,GAGhH,OAAO/e,CACX,CAEO,SAASgf,EAAwBC,EAA4Bz0C,EAAmCu0C,GACnG,OAAQE,GACJ,KAAK,EACD,OAAOz0C,EAAU00C,sCACrB,KAAK,EACD,OAAO10C,EAAU20C,8CACrB,KAAK,EACD,OAAO30C,EAAU40C,qCACrB,KAAK,EACD,OAAOL,EAAav0C,EAAU60C,uCAAyC70C,EAAU80C,sCACrF,QACI,MAAO,GAEnB,4VCnIA,MAAMC,EAAgEh4C,EAAAA,YAkChEi4C,EAA4BA,CAAC/3C,EAAkCsI,EAAqBga,IAAgC/hB,gBA8R1HA,eAAkCP,EAAkCsI,EAAqBga,GAA2B,IAAA01B,EAChH,MACI11C,MACIsD,2BAA6B/E,OAAQ+E,GACrCuN,MAAQtS,OAAQsS,GAChBye,0BAA4B/wB,OAAQ+wB,IACvC,UACD7uB,EAAS,QACT8B,EAAO,QACPozC,GACAj4C,GAEE,gBAAEslB,EAAe,SAAEnP,GAAa7N,EAEtC,IAAI4vC,EAAcl4C,EAAMsC,KAAKsV,QAAQ/W,OACrC,MAAMuW,EAAgC,kEAChC+gC,EAA8C,QAAbH,EAAGh4C,EAAMsC,YAAI,IAAA01C,GAAc,QAAdA,EAAVA,EAAYvlC,oBAAY,IAAAulC,GAAQ,QAARA,EAAxBA,EAA0Bn3C,cAAM,IAAAm3C,GAEzE,QAFyEA,EAAhCA,EAAkC5oC,MACvEqD,GAA+BA,EAAatJ,OAASiO,WACzD,IAAA4gC,OAAA,EAFyCA,EAEvCplC,UAEC0S,IACA4yB,QAAqB5yB,GAAoB4yB,GAG7C,IAAKA,IAAgBtyC,EACjB,OAGJ,MAAMgS,EAAUsgC,EAEVv1B,EACF/K,EAAQ+U,YACR/U,EAAQ+U,WAAWhjB,QAAQ6uB,KAAkCA,EAAUC,gBAAkBD,EAAUC,eAAe/a,SAEtH,IAAI06B,EAA0B,GAC1BH,GAAWrrC,OAAOyrC,KAAKJ,GAAShnC,OAAS,GAAKgnC,EAAQ5pB,eAAiB4pB,EAAQ5pB,cAAcpd,OAAS,IACtGmnC,EAAkBH,EAAQ5pB,cAAc,GAAG3X,IAG3CiM,GAAqBA,EAAkB1R,OAAS,EAC5CqR,EAAUC,kBACVD,EAAUC,iBAAiB,CACvBC,UAAW,cACXC,iBAAiBC,EAAAA,EAAAA,IAAmBC,EAAmB5f,KAI/D6C,EACK0yC,WAAW,CACR1gC,UACAlB,GAAI0hC,EACJG,iBAAkBT,EAClB/N,gBAAiBoO,EAAoCn4C,EAAMsC,KAAKynC,gBAAgBlpC,YAASiB,EACzF02C,mBAAoBj4C,MAAOk4C,EAAkChlC,KAAwB,IAAAu8B,EACjF,IAAK78B,EACD,OAAO9L,QAAQC,UAGnB,MAAMoxC,EAAwB,QAAhB1I,EAAGhwC,EAAM6E,eAAO,IAAAmrC,GAAK,QAALA,EAAbA,EAAexoB,WAAG,IAAAwoB,GAAQ,QAARA,EAAlBA,EAAoB7rC,cAAM,IAAA6rC,OAAA,EAA1BA,EAA4B2I,kBAE7C,OAAOxlC,EACFylC,iBAAiB,CAAEhhC,UAAS5D,MAAOmC,EAAUu4B,SAAU+J,EAAiBhlC,iBACxE7M,MAAM/F,IACH,GAAsB,WAAlBA,EAAOmP,QAA4C,gBAArBnP,EAAOqmC,UAA6B,CAElE,IAAIT,EACJ,GAFAnkB,EAAUylB,iBAAgB,GAEtBz/B,EAAMspB,yBACN6U,EAAsBn+B,EAAMspB,yBAAyBkX,8BAClD,GAAIlX,GAA4B5b,EAAAA,gBAAgBC,YAAY2b,GAA2B,CAC1F,MAAMyT,EAAoBzT,EAAyBxiB,MAC/Ck2B,GAAYA,EAASC,eAAiBhyB,EAAAA,aAAaslC,SAEvDpS,EAAsBpB,aAAiB,EAAjBA,EAAmByD,wBAAyB,MAElErC,OAAsB3kC,EAE1B,MAAMg3C,EAAyC,CAC3ChS,cAAe,mBACfG,iBAAkB,CAAEj3B,OAAQnP,EAAOmP,OAAQk3B,UAAWrmC,EAAOqmC,YAEjE5kB,EAAUC,iBAAiB,CACvBC,UAAW,YACXC,gBAAiB,CAAC,EAClBolB,YAAYhB,EAAAA,EAAAA,IACRiS,EACA3lC,EACApQ,EACA8B,EACA+S,EACA6uB,EACAgS,IAEL,KACA,CACHn2B,EAAUC,iBAAiB,CACvBE,gBAAiB,CAAC,IAEtB,MAAM+nB,GAAgBC,EAAAA,EAAAA,IAAW,OAAQ5lC,EAAQkF,eACjD,QAAiBjI,IAAb42C,GAA0BA,IAAaK,EAAAA,kBAAkBC,SACnC,YAAlBn4C,EAAOmP,QAAwBw6B,GAC/BjK,OAAOmO,SAAS7hC,OAAO29B,QAExB,GAAIkO,IAAaK,EAAAA,kBAAkBE,UACtC32B,EAAUylB,iBAAgB,QACvB,GAAI2Q,IAAaK,EAAAA,kBAAkBG,iBAAkB,CAAC,IAADC,EACxD,MAAMxiC,EAAuC,CACzCC,UAAW,CACPnB,GAAI,CAAEoB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrCjB,GAAI,CAAEgB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrChB,GAAI,CAAEe,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,IAEzCC,UAAU,GAERtT,GAAmBmG,EAAAA,EAAAA,oBACrB5J,EAAM6E,QAAQC,QAAQ+E,kBACtB7J,EAAM8J,aACN9J,EAAMuJ,WAEJw/B,EAAqC,CACvCC,aAAcjmC,EAAUkmC,mBACxBC,qBAAsBnmC,EAAUomC,2BAChCC,uBAAwBrmC,EAAUqmC,uBAClCC,kBAAmBtmC,EAAUumC,qBAC7BC,qBAAsBxmC,EAAUymC,8BAChCC,kBAAmB1mC,EAAU2mC,wBAC7B9nB,cAAe7e,EAAU8e,UACzBC,kBAAmB/e,EAAU+e,kBAC7BC,iBAAkBhf,EAAUgf,iBAC5B4nB,kBAAmB5mC,EAAU4mC,mBAE3B3gC,EAAe,IAAIowC,EAAAA,wCACrBp5C,EAAM6E,QACNkkC,EACApyB,EACA3W,EAAM6E,QAAQC,QAAQ0Q,aACtBoC,EACuB,QADhBuhC,EACPn5C,EAAMsC,KAAK2tB,oBAAY,IAAAkpB,OAAA,EAAvBA,EAAyBt4C,OACzBsV,EACAq0B,EACA/mC,EACAzD,EAAM0W,GACN1W,EAAMqjB,UAEVg2B,EAAAA,qBAAqBC,WAAWC,gBAAgBvwC,EAAc,CAAD,KAIxEwT,OAAOnS,IACArK,EAAMuJ,YACNvJ,EAAMuJ,UAAUiqB,UAAUnpB,GAC1BrK,EAAMuJ,UAAUiwC,MAAM,iCAAiC,GAE7D,IAGbh9B,OAAOnS,IACArK,EAAMuJ,YACNvJ,EAAMuJ,UAAUc,MAAMA,EAAMwD,SAC5B7N,EAAMuJ,UAAUiwC,MAAM,2BAA2B,GAIrE,CA/bUC,CAAmBz5C,EAAOsI,EAAOga,EAAU,EAgG9C,SAASo3B,EACZ15C,EACAsI,EACAga,GAA2B,IAAAq3B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAvU,EAAAwU,EAE3B,MAAM,KACF73C,EACAqsB,OAAO,cAAEN,GACTtrB,WAAW,UACP8e,EAAS,kBACTC,EAAiB,iBACjBC,EAAgB,sBAChBq4B,EAAqB,mBACrBnR,EAAkB,2BAClBE,EAA0B,uBAC1BC,EAAsB,qBACtBE,EAAoB,8BACpBE,EAA6B,wBAC7BE,EAAuB,sCACvB2Q,GAEJx1C,SACIC,SAAWmF,SAAS,uBAAE6I,GAA2B,CAAEA,4BAAwBhR,MAE/E9B,EAGE4X,EAAUtV,SAAa,QAATq3C,EAAJr3C,EAAMsV,eAAO,IAAA+hC,OAAA,EAAbA,EAAe94C,OACzB0lB,EAAQjkB,SAAkB,QAAds3C,EAAJt3C,EAAM2tB,oBAAY,IAAA2pB,OAAA,EAAlBA,EAAoB/4C,OAC5BsS,EAAO7Q,SAAU,QAANu3C,EAAJv3C,EAAM6Q,YAAI,IAAA0mC,OAAA,EAAVA,EAAYh5C,OACnBkpC,EAAkBznC,SAAqB,QAAjBw3C,EAAJx3C,EAAMynC,uBAAe,IAAA+P,OAAA,EAArBA,EAAuBj5C,OACzC4lC,EAAmD,QAAhCsT,EAAGz3C,EAAKsvB,gCAAwB,IAAAmoB,OAAA,EAA7BA,EAA+Bl5C,OACrDs3C,EAAoC71C,SAAkB,QAAd03C,EAAJ13C,EAAMmQ,oBAAY,IAAAunC,GAAQ,QAARA,EAAlBA,EAAoBn5C,cAAM,IAAAm5C,GAEnE,QAFmEA,EAA1BA,EAA4B5qC,MACjEqD,GAPiC,oEAOFA,EAAatJ,cAChD,IAAA6wC,OAAA,EAFyCA,EAEvCpnC,UACGJ,EAA8BlQ,SAAiC,QAA7B23C,EAAJ33C,EAAMkQ,mCAA2B,IAAAynC,OAAA,EAAjCA,EAAmCp5C,OAEjE8hB,EAAoB/K,SAAmB,QAAZsiC,EAAPtiC,EAAS+U,kBAAU,IAAAutB,OAAA,EAAnBA,EAAqBvwC,QAAO6uB,IAAS,IAAA8hB,EAAA,QAA6B,QAAzBA,EAAC9hB,EAAUC,sBAAc,IAAA6hB,GAAxBA,EAA0B58B,MAAM,KAGhGgrB,YAAY,gBAAEjmB,EAAe,cAAEklB,EAAa,WAAEE,EAAU,UAAErlB,GAAW,UACrE+3B,EAAS,SACTpkC,GACA7N,GAEE,kBAAEkyC,EAAiB,WAAEC,EAAU,YAAEztC,GAxH3C,SACInI,EACA61C,EACAjU,EACAkU,EACAC,GAKA,IAAIJ,EACAC,EACAztC,EAEA6tC,EAEJ,OAAKH,GAAgBE,EACV,CACHJ,mBAAmB,EACnBC,WAAYE,EAAgBG,oBAC5B9tC,YAAa2tC,EAAgBI,6BAIjCtU,IACAoU,EAAkBpU,EAAoBr3B,MAAKypC,GAAUA,EAAOtT,eAAiBhyB,EAAAA,aAAaslC,WAK1FmC,EAAAA,EAAAA,uBAAsBn2C,EAAQkF,eAC1B08B,GAAsC,QAAnBwU,EAAIJ,SAAe,IAAAI,GAAfA,EAAiBnpB,oBACxC0oB,GAAoB,EACpBC,EAAaE,EAAgBG,oBAC7B9tC,EAAc2tC,EAAgBI,6BAE9BP,GAAoB,EACpBC,EAAaE,EAAgBO,kCAC7BluC,EAAc2tC,EAAgBQ,qCAGlCX,GAAoB,EACpBC,EAAaE,EAAgBG,oBAC7B9tC,EAAc2tC,EAAgBI,4BAG3B,CACHP,oBACAxtC,cACAytC,eAnB+C,IAADQ,CAqBtD,CAqE2DG,CACnDp7C,EAAM6E,QACN7E,EAAM6E,QAAQ2iB,IAAIrjB,OAAOwmB,iBACzB8b,EACAzmC,EAAM+C,UACyC,YAA/C/C,EAAMsC,KAAKsvB,yBAAyB5hB,QAAwBgG,EAAAA,gBAAgBC,YAAY0M,IAG5F,IAAK/K,IAAY5B,EAAAA,gBAAgBC,YAAYoY,GACzC,OAGJ,IAAK0b,IAAoBA,EAAgBI,gBACrC,OAKJ,GAAIgO,GAAqC3lC,GACrC,IAhFqB6oC,EACzBC,EACAC,KAEA,MAAMC,EAA2B,GASjC,OARAF,SAAAA,EAAwBxuC,KAAI2uC,IACxB,MAAM5C,EAAS0C,aAAqB,EAArBA,EAAuBnsC,MAAKssC,GAAgBA,IAAiBD,EAASxtB,OAIrF,OAHI4qB,GACA2C,EAAexzC,KAAK6wC,GAEjB2C,CAAc,IAGlBxlC,EAAAA,gBAAgBC,YAAYulC,EAAe,EAmEzCH,CAAqBtR,EAAgBI,gBAAiB33B,aAA2B,EAA3BA,EAA6BgB,yBACpF,YAED,IACFV,IACAi3B,EAAgBI,gBAAgB/6B,MAAMusC,GAA2BA,EAAO1tB,OAASnb,IAElF,OAGJ,MAAMi2B,EAAgB,CAClBC,aAAcC,EACdC,qBAAsBC,EACtBC,yBACAC,kBAAmBC,EACnBC,qBAAsBC,EACtBC,kBAAmBC,EACnB9nB,cAAeC,EACfC,oBACAC,oBAGE65B,EAAiBr1B,EACnBzmB,EAAAA,cAACg5B,EAAAA,eAAc,CACXx2B,KAAM,CAAEikB,SACR1hB,QAAS7E,EAAM6E,QACf6R,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChBzB,cAAemnB,EAAcnnB,cAC7BE,kBAAmBinB,EAAcjnB,kBACjCC,iBAAkBgnB,EAAchnB,mBAGpC,GAYE85B,GAA0B,CAC5Bh3C,QAAS7E,EAAM6E,QACfuE,UAAW,YACXsN,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChB/gB,KAAM,CAAEsV,QAA2B,QAApB+tB,EAAE3lC,EAAMsC,KAAKsV,eAAO,IAAA+tB,OAAA,EAAlBA,EAAoB9kC,OAAQ0lB,MAA8B,QAAzB4zB,EAAEn6C,EAAMsC,KAAK2tB,oBAAY,IAAAkqB,OAAA,EAAvBA,EAAyBt5C,QAC7EkoC,gBACA1qB,cAhByC,CACzCzH,UAAW,CACPnB,GAAI,CAAEoB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrCjB,GAAI,CAAEgB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrChB,GAAI,CAAEe,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,IAEzCC,UAAU,GAWVvB,aAAcxV,EAAM6E,QAAQC,QAAQ0Q,aACpC0hB,gBAAiB/gB,EACjBylC,iBACApR,eAAeC,EAAAA,EAAAA,IAAW,OAAQzqC,EAAM6E,QAAQkF,eAChDwwC,YACAuB,aAAcx5B,EAAUylB,iBAEtBgU,GAAmBj8C,EAAAA,cAACk8C,EAAAA,MAAKpvC,OAAAC,OAAA,GAAKgvC,MAC9B,6BAAEzR,IAAiCpqC,EAAM6E,QAAQC,QAAQulC,SAC/D,MAAO,CACHjmB,eAAgB,CACZhb,UAAW,4BAGfilB,cAAeA,EAAc,GAE7B4tB,sBAAuBlE,EAA0B/3C,EAAOsI,EAAOga,GAE/Dle,QAAStE,EAAAA,cAACgmC,EAAAA,QAAO,CAAC18B,UAAU,mCAAmC9E,WAAW,KAAKD,KAAM+1C,IAErFptC,YAAalN,EAAAA,cAAA,KAAGsJ,UAAU,wCAAwC4D,GAClEuhB,wBACI4pB,IAAsCqC,EAClC16C,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,KAAGsJ,UAAU,wCAAwCixC,GACrDv6C,EAAAA,cAAA,MAAIsJ,UAAU,kCAAiC,aAAaixC,GACvDtQ,EAAgBI,gBAAgBr9B,KAAKC,GAE9BjN,EAAAA,cAAA,MAAIsJ,UAAU,yCAAwC,aAAa2D,EAAK4nB,YAAavnB,IAAKL,EAAKkhB,MAC1FlhB,EAAK4nB,iBAM1B,KACRlP,OACI3lB,EAAAA,cAACqrC,EAAAA,GAAgB,CACb1oB,gBAAiBA,EACjBklB,cAAeA,EACfE,WAAYA,EACZ9kC,UAAW/C,EAAM+C,UACjBqoC,UAAyB,gBAAd5oB,EACX4nB,6BAA8BA,KAItCrd,OACIjtB,EAAAA,cAAA,UACIsJ,UAAU,kCACVksB,QAASyiB,EAA0B/3C,EAAOsI,EAAOga,GACjD8hB,MAAM,YACNtG,IAAKga,EAAyB,aAClB2C,EACZlgB,cAAmBz4B,IAATqR,GAAsBqnC,EAChC5sC,MAAO6sC,GAENA,GAITnsB,MAAOytB,GAEf,olBCpNA,MAAMG,UAAep8C,EAAAA,cA0FjBC,YAAmBC,EAAkCsI,GACjDrI,MAAMD,GAnFO,KAAAm8C,qBAA4C,IAAIC,EAAAA,mBAAyB,GAElF,KAAA7jB,WAAuC,CAAC,EACxC,KAAA8jB,sBAAqC,IAAIC,IAEhC,KAAAC,gBAAoC,CACjDv5B,eAAiBw5B,IACb,MAAM9T,EAAU9/B,EAAA,GAAQpI,KAAK8H,MAAMogC,YAKnC,OAJAA,EAAWf,mBAAgB7lC,EAC3B4mC,EAAWb,gBAAa/lC,EAExBtB,KAAKqQ,SAAS,CAAEsF,SAAUqmC,EAAa9T,gBAChC,CAAI,EAEfnmB,iBAAmBk6B,IACfj8C,KAAKqQ,SAAS,CAAE63B,WAAY+T,GAAgB,EAEhDC,sBAAuBA,CACnBC,EACAC,EACAC,EACAC,KAEAt8C,KAAKqQ,SAAS,CACVyU,gBAAiBq3B,EACjB/qB,yBAA0BgrB,EAC1B3S,uBAAwB6S,IAE5Bt8C,KAAKu8C,aAAaF,EAAS,EAE/BrL,oBAAsBwD,IACdA,GACAx0C,KAAK67C,sBAAsBriC,IAAIg7B,EAAsB,EAG7D3D,uBAAwB9wC,MAAOy8C,EAA6BC,KAAmD,IAAA/Z,EAG3G,GAFA1iC,KAAK+3B,WAAWykB,GAAuBC,EAEnCz8C,KAAK67C,sBAAsBa,SAAwC,QAA9Bha,EAAA1iC,KAAKR,MAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAqiC,GAAY,QAAZA,EAA9BA,EAAgCvW,kBAAU,IAAAuW,OAAA,EAA1CA,EAA4CjyB,SAAU,GAC3F,OAAOzQ,KAAK27C,qBACPgB,SAAQ58C,SACEC,KAAK48C,sBAEf5gC,OAAOnS,IAEJ,GAAIA,IAAUgzC,EAAAA,wBAAwBC,gCAClC,MAAMjzC,CAAM,GAEjB,EAGf2mC,gBAAiBA,CAACiD,EAAuBlxC,IAC9BvC,KAAK+8C,iBAAiBtJ,EAAelxC,GAEhDglC,gBAAkB1X,IACd7vB,KAAKqQ,SAAS,CAAE0pC,UAAWlqB,GAAc,EAE7CwZ,wBAA0BlB,IACtBnoC,KAAKqQ,SAAS,CAAE83B,uBAAsB,EAQ1CqB,8BAAgCpB,IAC5BpoC,KAAKqQ,SAAS,CAAE+3B,6BAA4B,EAGhDgG,iBAAmB4O,IAEf,MAAM9U,EAAU9/B,EAAA,GAAQpI,KAAK8H,MAAMogC,YACnCA,EAAWd,uBAAoB9lC,EAE/BtB,KAAKqQ,SAAS,CAAE85B,gBAAgB,EAAMxD,iBAAkBqW,EAAa9U,eACrEloC,KAAKu8C,aAAav8C,KAAK8H,MAAM2nB,aAAcutB,EAAY,GA6L9C,KAAAC,yBAA4BC,GAAgC,KACzE,MAAMC,EAAeD,EAAmBE,wBAClCC,EAAUF,EAAahnB,KAAO4J,OAAOud,YACrCC,EAAUJ,EAAajnB,IAAM6J,OAAOyd,YAE1Czd,OAAO0d,SAASJ,EAASE,EAAQ,EAEpB,KAAAG,yCAA2C,KACxD,IAAIlZ,GAAsC,EACP,IAADmZ,EAA9B39C,KAAKR,MAAMsC,KAAKmQ,eAChBuyB,GACuC,QAAnCmZ,EAAA39C,KAAKR,MAAMsC,KAAKmQ,aAAa5R,cAAM,IAAAs9C,GAElC,QAFkCA,EAAnCA,EAAqC/uC,MACjCuD,GAA4B,2DAAjBA,EAAQxJ,cACtB,IAAAg1C,OAAA,EAFDA,EAEGvrC,aAAa,GAExB,OAAOoyB,CAAmC,EAwF7B,KAAAoY,kBAAoB78C,UACjC,MAAMqX,EAAUpX,KAAKR,MAAMsC,KAAKsV,QAAQ/W,OAElCuiC,EAAoB5iC,KAAKR,MAAMsC,KAAK8gC,kBAAkBviC,OAEtDqwC,EAAuBl7B,EAAAA,gBAAgBC,YAAYmtB,GAEzD,IAAKxrB,IAAYs5B,EACb,OAGJ,MAAMkN,EAAkBx1C,EAAA,GAAkCpI,KAAK+3B,YAK/D,GAHA/3B,KAAKqQ,SAAS,CAAE83B,qBAAqB,EAAMC,2BAA2B,IAGlEpoC,KAAK8H,MAAMogC,WAAWb,YAAcrnC,KAAK8H,MAAMogC,WAAWf,cAAe,CACzE,MAAM0W,EAAez1C,EAAA,GAAQpI,KAAK8H,MAAMogC,YACxC2V,EAAgBxW,gBAAa/lC,EACW,cAApCtB,KAAK8H,MAAMogC,WAAWlmB,YACtB67B,EAAgB1W,mBAAgB7lC,EAChCu8C,EAAgB77B,eAAY1gB,GAEhCtB,KAAKqQ,SAAS,CAAE63B,WAAY2V,GAAmB,CAInD,IAAK,MAAMjxC,KAAOR,OAAOyrC,KAAK+F,GACtB59C,KAAK8H,MAAMogC,WAAWjmB,gBAAgBrV,IACtC5M,KAAKqQ,UAASytC,IACV,MAAM5V,EAAa4V,EAAc5V,WAEjC,OADAA,EAAWjmB,gBAAgBrV,QAAOtL,EAC3B,CAAE4mC,aAAY,IAKjC,MAAMpmC,EAAO9B,KAAK+9C,mBAAmBH,GAC/BI,QAA6Cl8C,EAAKm8C,sBAExD,IAAKD,EACD,OAGJ,MAAME,EAA4B,CAC9Bl+C,KAAKm+C,iCAAiCH,EAAgBl8C,EAAKs8C,kBAC3Dp+C,KAAKq+C,sBAAsBL,GAC3Bh+C,KAAKs+C,cAAcN,GACnBh+C,KAAKu+C,wBAAwBP,GAC7Bh+C,KAAKw+C,yBAAyBR,UAG5Bn3C,QAAQ43C,IAAIP,EAAS,EAoLd,KAAAnB,iBAAmB,CAACtJ,EAAuBlxC,KAAuC,IAAAm8C,EAC/F,MAAM5H,EAA2C,QAAjC4H,EAAG1+C,KAAKR,MAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAq+C,OAAA,EAA9BA,EAAgCt8B,WAEnD,OAAQqxB,GACJ,KAAK,EACD,OAAOlxC,EAAUo8C,0BACrB,KAAK,EACD,OAAOp8C,EAAUq8C,kCACrB,KAAK,EACD,OAAOr8C,EAAUs8C,yBACrB,KAAK,EACD,OAAO/H,EAAav0C,EAAUu8C,2BAA6Bv8C,EAAUw8C,0BACzE,QACI,MAAO,GAAG,EAjhBlB/+C,KAAK8H,MAAQ,CACTogC,WAAY,CACRjmB,gBAAiB,CAAC,GAEtBtM,SAAU,EACVi3B,SAAKtrC,EACL+kB,SAAK/kB,EACLwjB,qBAAiBxjB,EACjBmuB,kBAAcnuB,EACdmoC,4BAAwBnoC,EAExBy4C,WAAW,EACX5R,qBAAqB,EACrBC,2BAA2B,EAC3B4W,kBAAkB,GAEtBh/C,KAAKiD,kBAAmBmG,EAAAA,EAAAA,oBAAmB5J,EAAM6E,QAAQC,QAAQ+E,kBAAoB7J,EAAM8J,aAAc9J,EAAMuJ,UACnH,CAEOhJ,0BACH,MACI+B,MACIsV,SAAW/W,OAAQ+W,GAAS,aAC5BqY,GACH,QACDprB,GACArE,KAAKR,OAOiBkzC,EAAAA,EAAAA,6BAA4B1yC,KAAKR,MAAM6E,QAAQC,QAAQymB,IAAI4nB,YAG/DliC,OAAS,EAC3BzQ,KAAKqQ,SAAS,CAAE2uC,kBAAkB,IAElCh/C,KAAKqQ,SAAS,CAAE2uC,kBAAkB,IAGtCvvB,EAAarpB,MAAKrG,UACdC,KAAKu8C,aAAal8C,EAAO,IAGzB+W,IAEIA,EAAQ6nC,gBAAkBC,EAAAA,oBAAoBC,SAC9Cn/C,KAAKqQ,SAAS,CAAEg4B,eAAe,UAE7BroC,KAAKw+C,yBAAyBpnC,IAGpCA,GAAW/S,EAAQ2iB,IAAIrjB,OAAOy7C,4BAA8B,GAC5DC,EAAAA,GAAoBvG,SAAS94C,KAAKR,MAAM6E,QAASA,EAAQ2iB,IAAIrjB,OAAOy7C,4BAA6BhoC,EAAQvI,SAEjH,CAEO/D,SAAM,IAAAw0C,EAAAC,EAAAC,EAAA5iC,EAAAC,EACT,MACIsR,OAAO,aAAEtD,EAAY,wBAAE0hB,GACvBzqC,MACIsV,SAAW/W,OAAQ+W,IAEvBzT,QAAQ,UAAEiF,EAAY,KACtB5I,KAAKR,OAEH,IAAEotC,EAAG,IAAEvmB,GAAQrmB,KAAK8H,MAE1B,IAAKsP,EAED,OADApX,KAAKR,MAAM6E,QAAQ0E,UAAUc,MAAM,gDAC5B,KAGX,MAAMrK,EAAQQ,KAAKR,MAKbyxC,EADUjxC,KAAKR,MAAM6E,QACI2iB,IAAIrjB,OAAOstC,eACpCQ,EAA+Bj8B,EAAAA,gBAAgBiqC,QACjDjqC,EAAAA,gBAAgBkqC,YAAoD,QAAzCJ,EAACt/C,KAAKR,MAAMsC,KAAK8gC,kBAAkBviC,cAAM,IAAAi/C,OAAA,EAAxCA,EAA0ChzC,KAAI5H,GAASA,EAAM+sC,iCAEvFkO,EAEa,QADfJ,EAA6B,QAA7BC,EAACx/C,KAAKR,MAAMsC,KAAKmQ,oBAAY,IAAAutC,GAAQ,QAARA,EAA5BA,EAA8Bn/C,cAAM,IAAAm/C,GAAyF,QAAzFA,EAApCA,EAAsC5wC,MAAKqD,GAAgBA,EAAatJ,OAASqmC,EAAAA,YAA4C,IAAAwQ,OAAA,EAA7HA,EACKptC,iBAAS,IAAAmtC,GAAAA,GAEgE,QADtE3iC,EACyB,QADzBC,EACR7c,KAAKR,MAAMsC,KAAKkuC,yBAAiB,IAAAnzB,GAAQ,QAARA,EAAjCA,EAAmCxc,cAAM,IAAAwc,OAAA,EAAzCA,EAA2C+iC,2CAAmC,IAAAhjC,GAAAA,EAC7E6qB,GACDjyB,EAAAA,gBAAgBC,YAAYg8B,IAC7BA,EAA6B5pC,MAAMnD,IACJutC,EAAAA,EAAAA,yCACvBvtC,EACAusC,KAE0BqB,EAAAA,qBAAqBC,aAErDrO,GAAYC,EAAAA,EAAAA,IAAankC,KAAKR,MAAM6E,QAAQC,UAClD8/B,EAAAA,EAAAA,mBAAkBF,GAElB,MAAMpB,EAAS16B,EAAAA,EAAA,GACPpI,KAAKR,OAAmC,IAC5CsI,MAAO9H,KAAK8H,MACZ+iB,aAAcA,GAAgBA,EAAapa,OAAS,EAAIoa,EAAa,QAAKvpB,EAC1EmkB,YAAa,CACTra,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAW,YAAazC,IAEvC+c,0BAA2B,CACvB/c,UAAW,sBAEf8c,2BAA4B,CACxB9c,UAAW,4BAEf3F,iBAAkBjD,KAAKiD,iBACvB6e,UAAW9hB,KAAK+7C,gBAChB3uC,OAAO83B,EAAAA,EAAAA,IAAsB1lC,GAC7BgN,aAAa+4B,EAAAA,EAAAA,IAA4B/lC,GACzCusB,iBAAkB/rB,KAAK6/C,gCACvBv5B,eAAemf,EAAAA,EAAAA,IAA8BjmC,GAC7CqmB,WAAWuqB,EAAAA,EAAAA,GAA0B5wC,EAAOQ,KAAK8H,MAAO9H,KAAK+7C,iBAC7Dj2B,YAAaozB,EAAqBl5C,KAAKR,MAAOQ,KAAK8H,MAAO9H,KAAK+7C,iBAC/Dh2B,OAAO8kB,EAAAA,EAAAA,IAAsBrrC,EAAOQ,KAAK8H,OACzC8d,WAAW4hB,EAAAA,EAAAA,IACPhoC,EACAQ,KAAK8H,MACL9H,KAAK+7C,gBAnDoB,GACA,SAqDzBz6C,EACAmmC,GAEJ8E,wBAAyB/2B,EAAAA,gBAAgBC,YAAY82B,IAC/CD,EAAAA,EAAAA,IACIC,EAAwB,GACxBn1B,GACA+sB,EAAAA,EAAAA,IAAankC,KAAKR,MAAM6E,QAAQC,SAChCtE,KAAK8H,YAETxG,EACNohB,oBAAoB0pB,EAAAA,EAAAA,IAChB5sC,EACAQ,KAAK8H,MACL9H,KAAK+7C,gBACL/7C,KAAK09C,2CACLxZ,GAEJlgB,eAAewoB,EAAAA,EAAAA,IAA8BhtC,EAAOQ,KAAK8H,MAAO9H,KAAK+7C,iBACrE/1B,QAASxmB,EAAM6E,QAAQ2iB,IAAIrjB,OAAOm8C,aAAcrU,EAAAA,EAAAA,IAAuBjsC,GACvEmW,SAAUyB,EAAQgL,gBAAa9gB,GAAYqrC,EAAAA,EAAAA,IAAyBntC,EAAOQ,KAAK8H,MAAO9H,KAAK+7C,iBAC5F91B,gBAAgBwM,EAAAA,EAAAA,IAAwBjzB,GACxC0mB,gBACIlmB,KAAKR,MAAMmE,OAAOijB,yBAA2BxP,EAAQgL,YAC/C2qB,EAAAA,EAAAA,IAA2BvtC,EAAO2tC,EAAAA,EAAuBC,YACzD9rC,EACV8kB,uBACIpmB,KAAKR,MAAMmE,OAAOgjB,+BAAiCvP,EAAQgL,YACrD2qB,EAAAA,EAAAA,IAA2BvtC,EAAO2tC,EAAAA,EAAuBhZ,kBACzD7yB,EACV6kB,WACInmB,KAAKR,MAAMmE,OAAOo8C,kBAAoB//C,KAAK8H,MAAM2b,uBAC3C8qB,EAAAA,EAAAA,IAAoB/uC,EAAOQ,KAAK8H,MAAO9H,KAAK+7C,sBAC5Cz6C,EACVmlB,wBAAwBooB,EAAAA,EAAAA,IAA0BrvC,EAAOQ,KAAK8H,OAC9D8kC,IAAK+S,EAA4B/S,EAAM,EACvCvmB,MACAs5B,0BAA2BA,EAC3BK,wCAAyChgD,KAAK09C,2CAC9CuC,iBAAkB/b,EAClBgc,SAAUlgD,KAAKmgD,wBAAwBjc,KAG3C,OAAOlkC,KAAKR,MAAMuL,WAAW+3B,EACjC,CAyBQ+c,gCAEJ,IAAK7/C,KAAKR,MAAM6E,QAAQ2iB,IAAIrjB,OAAOy8C,sBAC/B,OAAO,KAGX,IAAKC,EAAAA,GAAiBvgB,UAClB,OAAO,KAGX,MAAMwgB,EAAsBC,MAAMC,KAAKvS,SAASwS,uBAAuB9e,EAAAA,aAAa/4B,YAEpF,OAAK4M,EAAAA,gBAAgBC,YAAY6qC,GAK7BhhD,EAAAA,cAAC8jC,EAAAA,OAAM,CACHx6B,UAAU,kCACVwE,MAAOpN,KAAKR,MAAM+C,UAAUm+C,qBAC5B5rB,QAAS90B,KAAKi9C,yBAAyBqD,EAAoB,KAE1DtgD,KAAKR,MAAM+C,UAAUm+C,sBATnB,IAYf,CAEQnE,aAAaF,GAAiG,IAA7DW,EAAA2D,UAAAlwC,OAAA,QAAAnP,IAAAq/C,UAAA,GAAAA,UAAA,GAAkC3gD,KAAK8H,MAAM6+B,iBAC9F3mC,KAAK8H,MAAM2b,uBAAyB44B,IACpCA,EAAS9jB,wBAA0BykB,GAEvCh9C,KAAKqQ,SAAS,CAAEof,aAAc4sB,GAClC,CAEQ0B,mBAAmBH,GACvB,MACI97C,MACIsV,SAAW/W,OAAQ+W,IAEvB/S,SAAS,cACLkF,EACAjF,SACIgU,aAAa,UAAEL,MAGvBjY,KAAKR,MAMH4+C,EAJoBp+C,KAAKR,MAAMsC,KAAK8gC,kBAAkBviC,OAKvDiM,KAAI0rB,IAAY,IAAAhsB,EAAA40C,EAAAC,EAAAC,EACb,MAAM/oB,EACuB,QADb/rB,EAA0C,QAA1C40C,EAAI5oB,EAAUyZ,oCAA4B,IAAAmP,EAAAA,EACtD5oB,EAAU0Z,uBAAe,IAAA1lC,EAAAA,EACzB,GACJ,MAAO,CACHslC,mBAAoBtZ,EAAUsZ,mBAC9BrZ,eAGqB,QAHP4oB,EAGT,QAHSC,EACV/oB,EAAWnpB,MACPlK,IAAK,IAAAitC,EAAA,OAAwB,QAApBA,EAAAjtC,EAAMuzB,sBAAc,IAAA0Z,OAAA,EAApBA,EAAsB9iC,SAASwK,cAAeukC,EAAmB5lB,EAAUsZ,mBAAmB,WAC1G,IAAAwP,OAAA,EAFDA,EAEG7oB,sBAAc,IAAA4oB,EAAAA,EAAI7oB,EAAUC,eACnClb,oBAAqBib,EAAUjb,oBAClC,IAEJ5T,QAAO6uB,GAAaA,EAAUC,kBACnC8oB,EAAAA,EAAAA,2BAA0B/gD,KAAKR,MAAM6E,QAAQkF,cAAcC,eAAeuhB,IAAI4nB,WAAYyL,GAI1F,MAAM4C,GAAyBC,EAAAA,EAAAA,oBAC3B,IAAIC,EAAAA,qBACA9pC,EAASgV,gBAAkBhV,EAASgV,gBAAkBhV,EAASvI,SAC/DoJ,OACA3W,OACAA,EACAtB,KAAKR,MAAM6E,QAAQC,SAEvBiF,GAIJ,OAFAvJ,KAAKqQ,SAAS,CAAEyU,gBAAiBk8B,IAE1B,CAAE/C,sBAAuB+C,EAAwB5C,mBAC5D,CAyDQr+C,uCACJi+C,EACAI,SAQM+C,EAAAA,EAAAA,iCACF,IAAIC,EAAAA,qCACApD,EAAe5xB,gBAAkB4xB,EAAe5xB,gBAAkB4xB,EAAenvC,SACjF7O,KAAKR,MAAM6E,QAAQC,QAAQgU,YAAYL,UACvCmmC,EACAp+C,KAAKR,MAAM6E,QAAQC,SAEvBtE,KAAKR,MAAM6E,QAAQkF,cAE3B,CAEQxJ,4BAA4Bi+C,GAA6B,IAAAqD,EAG7D,MAAMC,QAA6BC,EAAAA,EAAAA,4CAC/B,IAAIC,EAAAA,6CACAxD,EAAenvC,SACf7O,KAAKR,MAAM6E,QAAQC,QAAQgU,YAAYL,UACvC+lC,GAEJh+C,KAAKR,MAAM6E,QAAQkF,eAGjBk4C,EAAsBH,aAAoB,EAApBA,EAAsB1yC,MAG7Ck2B,GAAoCA,EAASC,eAAiBhyB,EAAAA,aAAa+xB,YAEzB,QAA5Buc,EAAGrD,EAAe7xB,kBAAU,IAAAk1B,OAAA,EAAzBA,EAA2BzyC,MACrDopB,IAAS,IAAA8hB,EAAA,OAC4B,IAAjC9hB,EAAUsZ,oBAA4BtZ,EAAUC,gBAAoE,YAApB,QAA9B6hB,EAAA9hB,EAAUC,eAAe/a,aAAK,IAAA48B,OAAA,EAA9BA,EAAgC/+B,cAA0B,KAGhI/a,KAAKqQ,SAAS,CAAEoT,uBAAuB,IAEvCzjB,KAAKqQ,UAASytC,IACV,MAAM5V,EAAa4V,EAAc5V,WAEjC,OADAA,EAAWd,uBAAoB9lC,EACxB,CAAEmiB,uBAAuB,EAAO0mB,gBAAgB,EAAOjC,aAAY,IAI9EuZ,EACAzhD,KAAKqQ,SAAS,CAAE+gB,yBAA0BqwB,IAE1CzhD,KAAKqQ,SAAS,CAAE+gB,8BAA0B9vB,GAElD,CAEQvB,oBAAoBi+C,GAIxB,IAAKh+C,KAAK8H,MAAMk3C,iBAEZ,YADAh/C,KAAKqQ,SAAS,CAAE2uC,kBAAkB,IAKtC,MAAM3C,QAAiBqF,EAAAA,EAAAA,4BACnB,IAAIC,EAAAA,6BAA6B3D,EAAenvC,SAAU7O,KAAKR,MAAM6E,QAAQC,QAAQgU,YAAYL,UAAW+lC,GAC5Gh+C,KAAKR,MAAM6E,QAAQkF,eAGnB8yC,GACAr8C,KAAKu8C,aAAaF,EAE1B,CAEQt8C,8BAA8Bi+C,GAA6B,IAAA4D,EAC/D,MAAMC,EAAsE,QAAtCD,EAAG5hD,KAAKR,MAAMsC,KAAKmQ,aAAa5R,cAAM,IAAAuhD,OAAA,EAAnCA,EAAqChzC,MAC1EqD,GAAsC,oEAAtBA,EAAatJ,OAI3B2zC,QAA2BwF,EAAAA,EAAAA,sCAC7B,IAAIC,EAAAA,0CACA/D,EAAenvC,SACf7O,KAAKR,MAAM6E,QAAQC,QAAQgU,YAAYL,UACvC+lC,OACA18C,EACAugD,aAAgC,EAAhCA,EAAkCzvC,WAEtCpS,KAAKR,MAAM6E,QAAQkF,eAGnB+yC,GACAt8C,KAAKqQ,SAAS,CAAEo5B,uBAAwB6S,GAEhD,CAEQv8C,+BAA+BqX,GACnC,MAAMizB,QAA4CrqC,KAAKsqC,uCACjD0X,QAAsChiD,KAAKuqC,iCAE3CqC,EAAc5sC,KAAKiiD,+BAA+B5X,EAAqCjzB,GACvFiP,EAAcrmB,KAAKkiD,+BACrBF,GAAiC3X,EACjCjzB,GAEJ,IAAIzB,EAAmB3V,KAAKmiD,aAAa/qC,EAASizB,GAClD10B,EAAW0gC,KAAKhwB,IAAI1Q,EAAUi3B,GAE9B5sC,KAAKqQ,SAAS,CACVu8B,MACAvmB,MACA1Q,YAER,CAEQssC,+BAA+B5X,EAA8CjzB,GAAsB,IAAAgrC,EACvG,OACI/X,GACArqC,KAAKqiD,2BADLhY,MAEAjzB,GAAiB,QAAVgrC,EAAPhrC,EAASkrC,gBAAQ,IAAAF,GAAjBA,EAAmBG,iBACnBnrC,EAAQkrC,SAASC,gBAAkB,EAE5BnrC,EAAQkrC,SAASC,gBAGrB,CACX,CAEQL,+BAA+BM,EAAyCprC,GAAsB,IAAAqrC,EAClG,OACID,GACAxiD,KAAKqiD,2BADLG,MAEAprC,GAAiB,QAAVqrC,EAAPrrC,EAASkrC,gBAAQ,IAAAG,GAAjBA,EAAmBC,iBACnBtrC,EAAQkrC,SAASI,gBAAkB,EAE5BtrC,EAAQkrC,SAASI,iBAGrBC,EAAAA,EAAAA,kCAAiC3iD,KAAKR,MAAM6E,QAAQ2iB,IAAIrjB,OAAOwyC,2BAC1E,CAOQkM,0BAAuB,IAAAO,EAAAC,EAC3B,MAAM7S,EAAoBhwC,KAAKR,MAAMsC,KAAKkuC,kBAC1C,QAAuD,QAAhD4S,EAAE5S,SAAyB,QAAR6S,EAAjB7S,EAAmB3vC,cAAM,IAAAwiD,OAAA,EAAzBA,EAA2B5S,2BAAmB,IAAA2S,GAAAA,EAC3D,CAEQT,aAAa/qC,EAAwBizB,GAA4C,IAAAyY,EAAAC,EAAAC,EACrF,MAAM,SAAErtC,GAAa3V,KAAK8H,MAC1B,IAAIm7C,EAAkB,EAEtB,GAAIttC,IAAastC,IAAoB5Y,EACjC,OAAO10B,EAGX,MAAMq6B,EAAoBhwC,KAAKR,MAAMsC,KAAKkuC,kBAE1C,OAD2G,QAAjE8S,EAAG9S,SAAyB,QAAR+S,EAAjB/S,EAAmB3vC,cAAM,IAAA0iD,OAAA,EAAzBA,EAA2BnD,2CAAmC,IAAAkD,GAAAA,GAKvG1rC,SAAiB,QAAV4rC,EAAP5rC,EAASkrC,gBAAQ,IAAAU,GAAjBA,EAAmBE,iBAAmB9rC,EAAQkrC,SAASY,gBAAkB,IACzED,EAAkB7rC,EAAQkrC,SAASY,iBAGhCD,GAPIttC,CAQf,CAmBQ5V,6CAA0C,IAAAsvC,EAAAC,EAC9C,MAAMC,QAAwBvvC,KAAKR,MAAMsC,KAAKmQ,aAK9C,KAH6Bs9B,SAE5B,QAF2CF,EAAfE,EAAiB3gC,MAC1CqD,GAAgBA,EAAatJ,OAASqmC,EAAAA,YACzC,IAAAK,OAAA,EAF4BA,EAE1Bj9B,WAEC,OAAO,EAMX,GAJ+Bm9B,SAE9B,QAF6CD,EAAfC,EAAiB3gC,MAC5CqD,GAAgBA,EAAatJ,OAASumC,EAAAA,YACzC,IAAAI,OAAA,EAF8BA,EAE5Bl9B,UAEyB,CAAC,IAAD+wC,EACxB,MAAM1T,EAA4D,QAArB0T,EAAGnjD,KAAKR,MAAM6E,eAAO,IAAA8+C,GAAS,QAATA,EAAlBA,EAAoB7+C,eAAO,IAAA6+C,GAAK,QAALA,EAA3BA,EAA6Bn8B,WAAG,IAAAm8B,GAAU,QAAVA,EAAhCA,EAAkCzT,gBAAQ,IAAAyT,OAAA,EAA1CA,EAA4CxT,iCAC5F,GAAgD,SAA5CF,EACA,OAAO,EAGX,GAAgD,QAA5CA,EACA,OAAO,EAEX,IAAIG,EACJ,IACIA,QAAqB5vC,KAAKR,MAAMsC,KAAKihB,mBAIxB,CAHf,MAAOlZ,GAGL,OAFA7J,KAAKR,MAAMuJ,UAAU8yB,YAAYhyB,GACjC7J,KAAKR,MAAMuJ,UAAUiwC,MAAM,0EACpB,CAAM,CAGjB,OACIpJ,IAC8C,QAA5CH,GAAqDG,EAAaC,OACnB,QAA5CJ,IAAsDG,EAAaC,MAAO,CAEhF,CAAC,IAADE,EACH,MAAMC,QAA0BhwC,KAAKR,MAAMsC,KAAKkuC,kBAChD,QAA+C,QAAxCD,EAAEC,aAAiB,EAAjBA,EAAmBC,2BAAmB,IAAAF,GAAAA,EAAW,CAElE,CAEQoQ,wBAAwBjc,GAAiB,IAAAkf,EAC7C,MAAMlD,EAAmC,QAA3BkD,EAAGpjD,KAAKR,MAAMsC,KAAKo+C,gBAAQ,IAAAkD,GAAQ,QAARA,EAAxBA,EAA0B/iD,cAAM,IAAA+iD,OAAA,EAAhCA,EAAkCj6C,QAAOoD,GAAQA,EAAKsC,WAAaq1B,IACpF,IAAI1uB,EAAAA,gBAAgBC,YAAYyqC,IAAsC,IAAzBA,EAAS,GAAGrxC,SAIzD,OAAOqxC,CACX,CAEQngD,uCAAoC,IAAAmwC,EACxC,MAAMX,QAAwBvvC,KAAKR,MAAMsC,KAAKmQ,aAExCk+B,EAAoCZ,SAEzC,QAFwDW,EAAfX,EAAiB3gC,MACvDqD,GAAgBA,EAAatJ,OAASsmC,EAAAA,YACzC,IAAAiB,OAAA,EAFyCA,EAEvC99B,UAEH,OAAO+9B,SAAAA,CACX,EAGJ,yGC5xBA,MAkDMkT,EAAoBz9B,IACtB,MAAM,eAAEhC,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAE/C,OACItmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAIT+2B,EAA6B5gC,IAC/B,MAAM,eAAEkB,EAAc,WAAEC,EAAU,OAAE0I,GAAW7J,EAE/C,OACIpjB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAITg3B,EAAwBv/B,IAC1B,MAAM,eAAEJ,EAAc,WAAEC,EAAU,OAAE0I,GAAWvI,EAE/C,OACI1kB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAITi3B,EAAoB39B,IACtB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OAAOvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GAAiBqH,EAAU3e,IAAIm3C,GAAiC,EAG/Ev1B,EAAsBD,IACxB,GAAKA,GAAsC,IAAvBA,EAAYxd,OAIhC,OAAOnR,EAAAA,cAAAA,EAAAA,SAAA,KAAG2uB,EAAY,GAAM,EAG1Bw1B,EAA4Bt+B,IAC9B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACI7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,EACAqhB,GAEJI,EACE,EAITq+B,EAAsB59B,IACxB,MAAM,eAAElC,EAAc,cAAEiK,EAAa,QAAEjqB,EAAO,YAAE4I,EAAW,OAAEyY,EAAM,OAAEsH,EAAM,MAAEuB,EAAK,wBAAEC,GAA4BjI,EAEhH,OACIxmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLiK,EACAjqB,EACAmqB,EACAvhB,EACAyY,EACAsH,EACAuB,EACE,EAIT61B,EAAmBhuC,IACrB,MAAM,eAAEiO,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,EAAK,OAAE0W,GAAWtP,EAExE,OACIrW,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,EACAqhB,GAEJ1W,EACE,EAITq1C,EAAqBz9B,IACvB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACI7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GAAsBxhB,GAC/B2K,EACE,EAITs1C,EAA0B7+B,IAC5B,MAAM,eAAEpB,EAAc,OAAEqB,EAAM,MAAE1W,GAAUyW,EAE1C,OACI1lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLqB,EACA1W,EACE,EAGf,EAlK+C/O,IAC3C,MAAM,YACFimB,EAAW,2BACXC,EAA0B,0BAC1BC,EAAyB,UACzBC,EAAS,mBACTlD,EAAkB,cAClBsB,EAAa,UACb6B,EAAS,YACTrZ,EAAW,YACXsZ,EAAW,SACXnQ,EAAQ,MACRoQ,EAAK,MACL3Y,EAAK,OACL4Y,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,cACtBE,EAAa,wBACbimB,GACA/sC,EAEJ,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKoZ,GACRnmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GAA6BlmB,EAAMqrB,cAC7CvrB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACLvY,EACA2Y,EACAO,EACA9mB,EAAMusB,iBACNvf,EACAwZ,EACAH,GAAa29B,EAAiB39B,GAC9BM,GAAcy9B,EAAkBz9B,GAChCxQ,GAAYguC,EAAgBhuC,GAC5BsQ,EACAL,GAAay9B,EAAiBz9B,GAC9BE,GAAe49B,EAAmB59B,GAClCpD,GAAsB4gC,EAA0B5gC,GAChDsB,GAAiBu/B,EAAqBv/B,GACtCkK,EAAmB1uB,EAAM2uB,OAAS3uB,EAAM2uB,MAAMF,aAC9Cse,EACArmB,GAAmB29B,EAAuB39B,GAC1CE,GAA0By9B,EAAuBz9B,IAEjD,oPCrDV,SAAS09B,EACZz/C,EACA0/C,EACAxtB,EACAytB,GAAqB,IAAAC,EAErB,OAAK5/C,SAAY,QAAL4/C,EAAP5/C,EAAS2iB,WAAG,IAAAi9B,GAAQ,QAARA,EAAZA,EAActgD,cAAM,IAAAsgD,GAApBA,EAAsBrlB,kBAGvBmlB,EACOC,EAHAztB,CAMf,CCjBOx2B,eAAemkD,EAClBC,EACAlsC,EACA1O,EACAsU,EACAiH,GAEA,MAAMof,GAAYC,EAAAA,EAAAA,IAAa56B,EAAcC,gBACvC46C,EAAc,IAAIC,EAAAA,sCAAsCF,EAAWlsC,EAAW6M,EAAiBof,GAErG,OAAOogB,EAAAA,EAAAA,qCAAoCF,EAAa76C,GACnDnD,MAAKm+C,GACEA,EACO19C,QAAQ43C,IAAI8F,EAAej4C,KAAIvM,SAgBtDA,eAAyCykD,EAA8B3mC,GACnE,MAAM4mC,EAAY,CACdnmC,IAAKkmC,EAAcE,KAAO,GAC1BzuC,QAASuuC,EAAcG,SAAW,IAGtC,GAAsB,KAAlBF,EAAUnmC,IACV,MAAO,CAACmmC,GAAW,GAGvB,OAAO,IAAI59C,SAA+BC,IACtC,IACI,MAAM89C,EAAO,IAAIC,eACjBD,EAAKE,KAAK,OAAQL,EAAUnmC,KAAK,GAEjCsmC,EAAKxkB,iBAAiB,QAAQ,KAC1Bt5B,EAAQ,CAAC29C,EAA2B,MAAhBG,EAAKp1C,QAAkC,MAAhBo1C,EAAKp1C,QAAgB,IAGpEo1C,EAAKxkB,iBAAiB,SAAS,KAC3Bt5B,EAAQ,CAAC29C,GAAW,GAAO,IAG/BG,EAAKG,MAEuB,CAD9B,MAAAC,GACEl+C,EAAQ,CAAC29C,GAAW,GAAQ,IAGxC,CA5C6EQ,CAA0BT,MAAgCp+C,MACnH8+C,GACWA,EAAM/7C,QAAOg8C,GAAQA,EAAK,KAAI74C,KAAI64C,GAAQA,EAAK,OAI3D,KAEVnpC,OAAMnS,IACHN,EAAcR,UAAUiqB,UAAUnpB,GAClCN,EAAcR,UAAUiwC,MAAM,sDACvB,KAEnB,4lBCgJA,MAAMoM,UAAkB9lD,IAAAA,UAuGpBC,YAAmBC,GACfC,MAAMD,GAhGO,KAAAm8C,qBAA4C,IAAIC,EAAAA,mBAAyB,GAElF,KAAA7jB,WAAuC,CAAC,EAExC,KAAA8jB,sBAAqC,IAAIC,IAMhC,KAAAuJ,mBAAuC,CACpD7iC,eAAiBw5B,IACb,MAAM9T,EAAU9/B,EAAA,GAAQpI,KAAK8H,MAAMogC,YAKnC,OAJAA,EAAWf,mBAAgB7lC,EAC3B4mC,EAAWb,gBAAa/lC,EAExBtB,KAAKqQ,SAAS,CAAEsF,SAAUqmC,EAAa9T,gBAChC,CAAI,EAEfnmB,iBAAmBk6B,IACfj8C,KAAKqQ,SAAS,CAAE63B,WAAY+T,GAAgB,EAEhDC,sBAAuBA,CACnBC,EACAC,EACAC,EACAC,KAEAt8C,KAAKqQ,SAAS,CACVyU,gBAAiBq3B,EACjB/qB,yBAA0BgrB,EAC1B3S,uBAAwB6S,IAE5Bt8C,KAAKu8C,aAAaF,EAAS,EAE/BrL,oBAAsBwD,IACdA,GACAx0C,KAAK67C,sBAAsBriC,IAAIg7B,EAAsB,EAG7D3D,uBAAwB9wC,MAAOy8C,EAA6BC,KAAmD,IAAA6I,EAG3G,GAFAtlD,KAAK+3B,WAAWykB,GAAuBC,EAEnCz8C,KAAK67C,sBAAsBa,QAA4B,QAAxB4I,EAAKtlD,KAAKyuB,sBAAc,IAAA62B,GAAS,QAATA,EAAnBA,EAAqBluC,eAAO,IAAAkuC,GAAY,QAAZA,EAA5BA,EAA8Bn5B,kBAAU,IAAAm5B,OAAA,EAAxCA,EAA0C70C,QAC9E,OAAOzQ,KAAK27C,qBACPgB,SAAQ58C,SACEC,KAAK48C,sBAEf5gC,OAAOnS,IAEJ,GAAIA,IAAUgzC,EAAAA,wBAAwBC,gCAClC,MAAMjzC,CAAM,GAEjB,EAGf2mC,gBAAiBA,CAACiD,EAAuBlxC,IAC9BvC,KAAK+8C,iBAAiBtJ,EAAelxC,GAEhDglC,gBAAkB1X,IACd7vB,KAAKulD,sBAAsB,EAE/Blc,wBAA0BlB,IACtBnoC,KAAKqQ,SAAS,CAAE83B,uBAAsB,EAE1CiG,iBAAmB4O,IAEf,MAAM9U,EAAU9/B,EAAA,GAAQpI,KAAK8H,MAAMogC,YACnCA,EAAWd,uBAAoB9lC,EAE/BtB,KAAKqQ,SAAS,CAAE85B,gBAAgB,EAAMxD,iBAAkBqW,EAAa9U,eACrEloC,KAAKu8C,aAAav8C,KAAK8H,MAAM2nB,aAAcutB,EAAY,GAI9C,KAAAwI,4BAA8C,CAC3DpvC,UAAW,CACPnB,GAAI,CAAEoB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrCnB,GAAI,CAAEkB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrClB,GAAI,CAAEiB,EAAG,kBAAmBnB,EAAG,EAAGoB,EAAG,GACrCjB,GAAI,CAAEgB,EAAG,YAAanB,EAAG,EAAGoB,EAAG,IAEnCC,UAAU,EACVkvC,iBAAiB,GAGJ,KAAAC,8BAAgD,CAC7DtvC,UAAW,CACPnB,GAAI,CAAEoB,EAAG,YAAanB,EAAG,IAAKoB,EAAG,GACjCjB,GAAI,CAAEgB,EAAG,YAAanB,EAAG,IAAKoB,EAAG,IAErCC,UAAU,EACVkvC,iBAAiB,GAmJJ,KAAAE,uBAA0BvuC,IACvC,MAAM,OAAEzT,GAAW3D,KAAKR,MAClBguC,GAAUC,EAAAA,EAAAA,kBAAiB,QAASztC,KAAKiD,iBAAkBoqC,EAAAA,kBAAkBuY,WAAY,IACzFC,GAAalY,EAAAA,EAAAA,wBAAuB3tC,KAAKiD,iBAAkBuqC,GAEjE,OACIluC,IAAAA,cAAC8jC,EAAAA,OAAMh3B,OAAAC,OAAA,CACHzD,UAAU,iCACVksB,SAASgxB,EAAAA,EAAAA,kBAAiB9lD,KAAKiD,iBAAkBuqC,EAASH,EAAAA,kBAAkBuY,aACxEC,EAAU,cACFliD,EAAOoiD,mBACnB/6B,KAAMhrB,KAAKgmD,eAAe5uC,KAEzBzT,EAAOoiD,mBACH,EAQA,KAAAE,gBAAkB,KAAiB,IAAAC,EAChD,MAAM,OAAEviD,EAAM,UAAEpB,GAAcvC,KAAKR,MACnC,IAAI2mD,EACAtO,EACJ,MAAMuO,EAAuBziD,EAAOyiD,qBAChCA,IACAA,EAAqBX,iBAAkB,GAGvCjwC,EAAAA,gBAAgBC,YAAYzV,KAAK8H,MAAMq+C,oBACvCA,EAAoBnmD,KAAK8H,MAAMq+C,kBAAkB75C,KAAI,CAACC,EAAkBwnB,IAC7D/zB,KAAKqmD,6BAA6B95C,EAAM65C,GAAwBpmD,KAAKwlD,4BAA6BzxB,KAE7G8jB,EAAO,IAAI73C,KAAK8H,MAAMq+C,kBAAkB75C,KAAIC,GAAQA,EAAK+R,SAEzD6nC,EAAoB,CAACnmD,KAAKsmD,kBAAkBF,IAC5CvO,EAAO,CAAC,UAoBZ,MAjBmD,CAC/C9zC,IAAKwiD,EAAAA,SACL39C,UAAW,6BACXsD,MAAOi6C,EACPK,YAAmC,QAAxBN,EAAElmD,KAAK8H,MAAM0+C,mBAAW,IAAAN,EAAAA,EAAI,EACvCO,KAAMzmD,KAAKymD,KACXC,SAAU1mD,KAAK0mD,SACfC,UAAU,EACVC,kBAAmBrkD,EAAUskD,8BAC7BC,kBAAmBvkD,EAAUwkD,0BAC7BC,kBAAmBzkD,EAAU0kD,kBAC7BC,yBAA0BlnD,KAAKmnD,UAC/BC,eAAgBpnD,KAAKqnD,SACrBC,gBAAiBtnD,KAAKunD,UACtB36C,IAAKirC,EAGG,EAOC,KAAA2P,kBAAoB,KACjC,MAAM,OAAE7jD,EAAM,GAAEuS,EAAE,UAAE3T,GAAcvC,KAAKR,MAEjCioD,EAAyB9jD,EAAO8jD,uBAKtC,IAAItB,EACAtO,EAgBJ,OArBI4P,IACAA,EAAuBhC,iBAAkB,GAKzCjwC,EAAAA,gBAAgBC,YAAYzV,KAAK8H,MAAMq+C,oBACvCA,EAAoBnmD,KAAK8H,MAAMq+C,kBAAkB75C,KAAI,CAACC,EAAkBwnB,IAC7D/zB,KAAK0nD,kBACRn7C,EACAk7C,QAAAA,EAA0BznD,KAAK0lD,8BAC/B3xB,EACA/zB,KAAK8H,MAAM0+C,eAGnB3O,EAAO,IAAI73C,KAAK8H,MAAMq+C,kBAAkB75C,KAAIC,GAAQA,EAAK+R,SAEzD6nC,EAAoB,GACpBtO,EAAO,IAGJ,CACH8P,yBAA0B,CAAE/+C,UAAW,0CACvCg/C,kCAAmC,CAC/B7jD,IAAK8jD,EAAAA,oBACLj/C,UAAW,+BACXk/C,iBAAkBvlD,EAAUskD,8BAC5BkB,iBAAkBxlD,EAAUwkD,0BAC5BiB,SAAU9xC,EACV+xC,YAAY,EACZr7C,IAAKwQ,KAAK8qC,UAAUrQ,IAExB3rC,MAAOi6C,EACV,EAoBY,KAAAvJ,kBAAoB78C,UACjC,MACIsE,SAAS,cACLkF,EACAjF,SACIgU,aAAa,UAAEL,MAGvBjY,KAAKR,OAEH,QAAE4X,EAAO,kBAAEwrB,GAAsB5iC,KAAKyuB,eAE5C,IAAKrX,IAAYwrB,EACb,OAGJ,MAAMgb,EAAkBx1C,EAAA,GAAkCpI,KAAK+3B,YAI/D,GAHA/3B,KAAKqQ,SAAS,CAAE83B,qBAAqB,IAGjCnoC,KAAK8H,MAAMogC,WAAWb,YAAcrnC,KAAK8H,MAAMogC,WAAWf,cAAe,CACzE,MAAM0W,EAAez1C,EAAA,GAAQpI,KAAK8H,MAAMogC,YACxC2V,EAAgBxW,gBAAa/lC,EACW,cAApCtB,KAAK8H,MAAMogC,WAAWlmB,YACtB67B,EAAgB1W,mBAAgB7lC,EAChCu8C,EAAgB77B,eAAY1gB,GAEhCtB,KAAKqQ,SAAS,CAAE63B,WAAY2V,GAAmB,CAInD,IAAK,MAAMjxC,KAAOR,OAAOyrC,KAAK+F,GAC1B,GAAI59C,KAAK8H,MAAMogC,WAAWjmB,gBAAgBrV,GAAM,CAC5C,MAAMs7B,EAAU9/B,EAAA,GAAQpI,KAAK8H,MAAMogC,YACnCA,EAAWjmB,gBAAgBrV,QAAOtL,EAElCtB,KAAKqQ,SAAS,CAAE63B,cAAc,CAMtC,MAAMkW,EAAmBxb,EACpBt2B,KAAI0rB,IACM,CACHsZ,mBAAoBtZ,EAAUsZ,mBAC9BrZ,eACIj4B,KAAKmoD,sBAAsBnwB,EAAW4lB,EAAmB5lB,EAAUsZ,sBAAwBtZ,EAAUC,eACzGlb,oBAAqBib,EAAUjb,wBAGtC5T,QAAO6uB,GACGA,GAAaA,EAAUC,iBAKhCnT,EAAkB,IAAIje,SAAiC9G,UACzD,MAAMqoD,QAAmBnH,EAAAA,EAAAA,oBACrB,IAAIC,EAAAA,qBACA9pC,EAAQgV,gBAAkBhV,EAAQgV,gBAAkBhV,EAAQvI,SAC5DoJ,EACAmmC,OACA98C,EACAtB,KAAKR,MAAM6E,QAAQC,SAEvBiF,GAEA6+C,IAEApoD,KAAKyuB,eAAemU,wBAA0Bue,EAAAA,EAAAA,iCAC1C,IAAIC,EAAAA,qCACAgH,EAAWh8B,gBAAkBg8B,EAAWh8B,gBAAkBg8B,EAAWv5C,SACrEoJ,EACAmmC,EACAp+C,KAAKR,MAAM6E,QAAQC,SAEvBiF,IAIRzC,EAAQshD,EAAW,IAGvBpoD,KAAKqQ,SAAS,CAAEyU,oBAChB,MAAMujC,QAAuBvjC,EAE7B,GAAIujC,GAAkBroD,KAAKyuB,eAAgB,CAAC,IAAD65B,EAAA3K,EAGvC39C,KAAKyuB,eAAerX,QAAUixC,EAC9B,IAAIE,QAA6BvoD,KAAKwoD,oBAAoBpxC,EAASixC,GACnEE,EAASvoD,KAAKyoD,8BAA8BF,EAAQF,GACpDroD,KAAKqQ,SAAS,CACV81C,kBAAmB,IAAIoC,GACvB/B,YAAa,EACbkC,WAAYC,KAAKC,QAGrB,MAAMtH,QAA6BC,EAAAA,EAAAA,4CAC/B,IAAIC,EAAAA,6CAA6C6G,EAAex5C,SAAUoJ,GAC1E1O,GAGJvJ,KAAKyuB,eAAe2C,yBAA2BkwB,EAM/C,GAJuD,QAA5BgH,EAAGD,EAAel8B,kBAAU,IAAAm8B,OAAA,EAAzBA,EAA2B15C,MACrDopB,IAAS,IAAA8hB,EAAA,OAAqC,IAAjC9hB,EAAUsZ,oBAA+E,YAA3B,QAAxBwI,EAAA9hB,EAAUC,sBAAc,IAAA6hB,GAAO,QAAPA,EAAxBA,EAA0B58B,aAAK,IAAA48B,OAAA,EAA/BA,EAAiC/+B,cAA0B,IAI9G/a,KAAKqQ,SAAS,CAAEoT,uBAAuB,QACpC,CAEH,MAAMykB,EAAU9/B,EAAA,GAAQpI,KAAK8H,MAAMogC,YACnCA,EAAWd,uBAAoB9lC,EAE/BtB,KAAKqQ,SAAS,CAAEoT,uBAAuB,EAAO0mB,gBAAgB,EAAOjC,cAAc,CAGnFoZ,GAAwBA,EAAqB7wC,OAAS,EACtDzQ,KAAKqQ,SAAS,CAAE+gB,yBAA0BkwB,EAAqB,KAE/DthD,KAAKqQ,SAAS,CAAE+gB,8BAA0B9vB,IAI9C,MAAM+6C,QAAiBqF,EAAAA,EAAAA,4BACnB,IAAIC,EAAAA,6BAA6B0G,EAAex5C,SAAUoJ,GAC1D1O,GAGA8yC,GACAr8C,KAAKu8C,aAAaF,GAGtB,MAAMwM,EAAuE,QAAtClL,EAAG39C,KAAKR,MAAMsC,KAAKmQ,aAAa5R,cAAM,IAAAs9C,OAAA,EAAnCA,EAAqC/uC,MAC3EqD,GAAsC,oEAAtBA,EAAatJ,OAI3B2zC,QAA2BwF,EAAAA,EAAAA,sCAC7B,IAAIC,EAAAA,0CACAsG,EAAex5C,SACfoJ,OACA3W,OACAA,EACAunD,aAAiC,EAAjCA,EAAmCz2C,WAEvC7I,GAGA+yC,GACAt8C,KAAKqQ,SAAS,CAAEo5B,uBAAwB6S,IAG5Ct8C,KAAKqQ,SAAS,CAAE83B,qBAAqB,UAC/BnoC,KAAKw+C,yBAAyB6J,EAAgB,GAuBpD,KAAAtE,oBAAsB,IACc,YAApC/jD,KAAKR,MAAMmE,OAAOmlD,cAqGT,KAAAX,sBAAwB,CACrChX,EACA4X,KAEA,GAAIA,GAAc5X,EAAqBO,gBACnC,OAAOP,EAAqBO,gBAAgB9iC,MAAKopB,GAAaA,EAAUnpB,YAAck6C,GAG1E,EAGH,KAAAhM,iBAAmB,CAACtJ,EAAuBlxC,KAA0C,IAAAymD,EAClG,MAAMlS,EAAgC,QAAtBkS,EAAGhpD,KAAKyuB,sBAAc,IAAAu6B,GAAS,QAATA,EAAnBA,EAAqB5xC,eAAO,IAAA4xC,OAAA,EAA5BA,EAA8B5mC,WAEjD,OAAQqxB,GACJ,KAAK,EACD,OAAOlxC,EAAUo8C,0BACrB,KAAK,EACD,OAAOp8C,EAAUq8C,kCACrB,KAAK,EACD,OAAOr8C,EAAUs8C,yBACrB,KAAK,EACD,OAAO/H,EAAav0C,EAAUu8C,2BAA6Bv8C,EAAUw8C,0BACzE,QACI,MAAO,GAAG,EAwDL,KAAAwI,UAAY,KACzBvnD,KAAKqQ,SAAS,CAAE44C,WAAW,GAAO,EAGrB,KAAA5B,SAAW,KACxBrnD,KAAKqQ,SAAS,CAAE44C,WAAW,GAAQ,EAGtB,KAAAxC,KAAO,KACpB,QAA0BnlD,IAAtBtB,KAAKkpD,aACL,OAGJ,MAAMC,EAAYnpD,KAAKkpD,aAAe,EAAIlpD,KAAK8H,MAAM0+C,YAAe,EACpExmD,KAAKmnD,UAAUgC,EAAU,EAGZ,KAAAzC,SAAW,KACxB,MAAMyC,EAAYnpD,KAAKopD,cACjBppD,KAAK8H,MAAMq+C,kBACPnmD,KAAK8H,MAAMq+C,kBAAkB11C,OAAS,EACtC,EACJzQ,KAAK8H,MAAM0+C,YAAe,EAChCxmD,KAAKmnD,UAAUgC,EAAU,EAGZ,KAAAhC,UAAapzB,IAC1B/zB,KAAKqQ,SAAS,CAAEm2C,YAAazyB,GAAQ,EAOxB,KAAAs1B,iBAAmB,CAAC3xB,EAAmB7Z,EAA+BkW,IACnFz0B,IAAAA,cAACuW,EAAAA,GAAKzJ,OAAAC,OAAA,CACF7C,eAAgBxJ,KAAKR,MAAM6E,QAAQkF,cAAcC,eACjDZ,UAAU,0BACN8uB,EAAK,CACT1iB,aAAchV,KAAKR,MAAM6E,QAAQC,QAAQ0Q,aACzC6I,cAAeA,EACfc,oBAAoB,UACpB5I,KAAK,WACLnJ,IAAK8qB,EAAMpZ,IACXpI,GAAI,GAAGlW,KAAKR,MAAM0W,sBAAsB6d,OAI/B,KAAA2zB,kBAAoB,CACjChwB,EACA7Z,EACAkW,EACAu1B,KAOO,CACHC,4BAA6B,CACzBxlD,IAAK,KACL6E,UARQyC,IACZ,mCACAi+C,IAAwBv1B,EAAQ,0CAA4C,IAOxEhe,KAAM,MACN+hB,SAAU,EACVlrB,IAAKmnB,EACL,aAAc2D,EAAMzhB,QACpB,gBAAiBqzC,IAAwBv1B,EACzC,gBAAiB,GAAG/zB,KAAKR,MAAM0W,sBAAsB6d,IACrDe,QAAS90B,KAAKwpD,0BAA0Bz1B,GACxC01B,UAAWzpD,KAAK0pD,4BAA4B31B,IAEhD41B,QACIrqD,IAAAA,cAACuW,EAAAA,GAAKzJ,OAAAC,OAAA,CACF7C,eAAgBxJ,KAAKR,MAAM6E,QAAQkF,cAAcC,eACjDZ,UAAU,+BACN8uB,EAAK,CACT9qB,IAAK8qB,EAAMpZ,IACXtJ,aAAchV,KAAKR,MAAM6E,QAAQC,QAAQ0Q,aACzC6I,cAAeA,EACfc,oBAAoB,eAMnB,KAAA+qC,4BAA+B31B,GACpCvvB,IACAA,EAAMolD,QAAUC,EAAAA,SAASC,OAAStlD,EAAMolD,QAAUC,EAAAA,SAASE,QAC3DvlD,EAAMwlD,iBACNhqD,KAAKmnD,UAAUpzB,GAAO,EAKjB,KAAAy1B,0BAA6Bz1B,GAClCvvB,IACJA,EAAMwlD,iBACNhqD,KAAKmnD,UAAUpzB,EAAM,EAWZ,KAAAq1B,YAAc,IAAiC,IAA3BppD,KAAK8H,MAAM0+C,YAE/B,KAAA0C,WAAa,IAAMlpD,KAAK8H,MAAMq+C,mBAAqBnmD,KAAK8H,MAAM0+C,cAAgBxmD,KAAK8H,MAAMq+C,kBAAkB11C,OAAS,EAEpH,KAAAw5C,eAAiBlqD,SACvBC,KAAKkqD,SAAS1lD,EAAOxE,KAAKR,OAGpB,KAAA0qD,SAAWnqD,MAAOoqD,EAAuC3qD,KACtE,IAAK2Y,EAAAA,iBAAiBC,kBAAkB5Y,EAAM4qD,mBAAoB,CAC9D,MACI/lD,SAAS,cACLkF,EACAjF,SACIgU,aAAa,UAAEL,MAGvBjY,KAAKR,MAET,GAAIQ,KAAKR,MAAM4qD,kBAAmB,CAC9BpqD,KAAKqQ,SAAS,CAAE0pC,WAAW,IAC3B,MAAMoK,EAAYnkD,KAAKR,MAAM4qD,kBACvB/Z,EAAqBrwC,KAAKR,MAAM6wC,mBACtCrwC,KAAKyuB,qBCn/Bd1uB,eACHokD,EACAlsC,EACA6a,EACAud,GAEA,MAAM5hB,EAAkC,CAAC,EAEzC,GAAI01B,EAAY,GAAKlsC,EAAY,EAAG,CAChC,MAAMoyC,GAAWC,EAAAA,EAAAA,iBAAgBx3B,GAC3By3B,GAAkBC,EAAAA,EAAAA,kBAAiB13B,SAGnCmuB,EAAAA,EAAAA,oBAAmB,IAAIC,EAAAA,qBAAqBiD,EAAWlsC,EAAWo4B,EAAoB,MAAOvd,EAAItpB,gBAAiBspB,GACnH1sB,MAAKrG,UACE0qD,IACAh8B,EAAerX,QAAUqzC,EAAc,IAG9CzuC,OAAMnS,IACHipB,EAAI/pB,UAAUiqB,UAAUnpB,EAAM,UAIhC03C,EAAAA,EAAAA,4CAA2C,IAAIC,EAAAA,6CAA6C2C,EAAWlsC,GAAY6a,GACpH1sB,MAAKskD,IACEA,IACAj8B,EAAe2C,yBAA2Bs5B,EAAsB,IAGvE1uC,OAAMnS,IACHipB,EAAI/pB,UAAUiqB,UAAUnpB,EAAM,UAIhC63C,EAAAA,EAAAA,4BAA2B,IAAIC,EAAAA,6BAA6BwC,EAAWlsC,OAAW3W,GAAYwxB,GAC/F1sB,MAAKqpB,IACEA,IACAhB,EAAegB,aAAeA,EAAa,IAGlDzT,OAAMnS,IACHipB,EAAI/pB,UAAUiqB,UAAUnpB,EAAM,UAIhCs3C,EAAAA,EAAAA,iCACF,IAAIC,EAAAA,qCAAqC+C,EAAWlsC,EAAWo4B,EAAoBvd,EAAItpB,gBACvFspB,GAEC1sB,MAAKw8B,IACEA,IACAnU,EAAemU,kBAAoBA,EAAkB,IAG5D5mB,OAAMnS,IACHipB,EAAI/pB,UAAUiqB,UAAUnpB,EAAM,UAIhC8gD,EAAAA,EAAAA,kBAAiB,IAAIC,EAAAA,sBAAsB93B,EAAItpB,eAAe8O,YAAawa,EAAItpB,gBAAiBspB,GACjG1sB,MAAKykD,IACFp8B,EAAe9b,KAAOk4C,CAAS,IAElC7uC,OAAMnS,IACHipB,EAAI/pB,UAAUiqB,UAAUnpB,EAAM,IAIlCwgD,GAAYE,SACNO,EAAAA,EAAAA,mBAAkB,IAAIC,EAAAA,uBAAuB5G,EAAU9qC,WAAYgxC,EAAUE,GAAkBz3B,GAChG1sB,MAAK4kD,IACEA,IACAv8B,EAAemd,eAAiBof,EAAmB,IAG1DhvC,OAAMnS,IACHipB,EAAI/pB,UAAUiqB,UAAUnpB,EAAM,GAChC,CAId,OAAO4kB,CACX,CDg6B4Cw8B,CAAkB9G,EAAWlsC,EAAW1O,EAAe8mC,GACnF,MAAM,QAAEj5B,EAAO,aAAEqY,GAAiBzvB,KAAKyuB,eACjCy8B,EAAsBvC,KAAKC,MAMjC,GALA5oD,KAAKmrD,kBAAkBD,GACnBz7B,GACAzvB,KAAKu8C,aAAa9sB,GAGlBrY,EAAS,CACT,MAAM,QAAE/S,GAAYrE,KAAKR,MACrB6E,EAAQ2iB,IAAIrjB,OAAOy7C,4BAA8B,GACjDC,EAAAA,GAAoBvG,SAAS94C,KAAKR,MAAM6E,QAASA,EAAQ2iB,IAAIrjB,OAAOy7C,4BAA6BhoC,EAAQvI,UAGzGuI,EAAQ6nC,gBAAkBC,EAAAA,oBAAoBC,SAC9Cn/C,KAAKqQ,SAAS,CAAEg4B,eAAe,UAE7BroC,KAAKw+C,yBAAyBpnC,GACpC,IAAImxC,QAAevoD,KAAKwoD,oBAAoBpxC,EAASA,GACrDmxC,EAASvoD,KAAKyoD,8BAA8BF,GAC5CvoD,KAAKqQ,SAAS,CACV81C,kBAAmB,IAAIoC,GACvB/B,YAAa,EACbkC,WAAYwC,IAGhB,MAAM5O,QAA2B8O,EAAAA,EAAAA,yBAC7B,CACI/iC,cAAeroB,KAAKR,MAAM6E,QAAQkF,cAClC8hD,oBAAqBC,EAAAA,yBAAyBC,qCAC1CvrD,KAAKR,MAAM6E,QAAQkF,gBAG3B,CAACvJ,KAAKR,MAAM4qD,oBAEZ9N,GAAsBA,EAAmB7rC,OAAS,GAClDzQ,KAAKqQ,SAAS,CAAEo5B,uBAAwB6S,EAAmB,IAAK,CAGxEt8C,KAAKqQ,SAAS,CAAEm7C,cAAc,GAAQ,CAAD,GAKzC,KAAAhD,oBAAsBzoD,MAAOqX,EAA2BixC,KAA2D,IAAAoD,EACvH,IAAIlD,EACmD,IAADmD,EAS/CC,EAAAC,EATmB,QAA1BH,EAAIzrD,KAAKR,MAAM6E,QAAQ2iB,WAAG,IAAAykC,GAAQ,QAARA,EAAtBA,EAAwB9nD,cAAM,IAAA8nD,GAA9BA,EAAgC7sB,iBAChC2pB,QDl/BLxoD,eACHokD,EACAJ,EACA9rC,EACA1O,EACAgtB,EACAzR,GAA+B,IAAA+mC,EAE/B,MAAM3nB,GAAYC,EAAAA,EAAAA,IAAa56B,EAAcC,gBAC7C,GAAgC,QAAhCqiD,EAAItiD,EAAcC,sBAAc,IAAAqiD,GAAQ,QAARA,EAA5BA,EAA8BC,cAAM,IAAAD,GAApCA,EAAsCE,UAAW,CACjD,MAAM7lD,QAAiB8lD,EAAAA,EAAAA,IAAmBziD,EAAcC,eAAgB,iCAAkC,OAAQ,CAC9G26C,UAAWA,EACXlsC,UAAWA,EACXisB,UAAWA,IAEf,GAAwB,MAApBh+B,EAASsJ,OAET,OADAjG,EAAcR,UAAUiwC,MAAM,2EACvB,GAEX,MAAMiT,EAAmB/lD,aAAQ,EAARA,EAAUpE,KACnC,OAAImqD,EACOA,EAAiB3/C,KAAIk4C,IAAgB,IAAA0H,EACxC,MAAO,CACH5tC,IAAsB,QAAnB4tC,EAAE1H,EAAcE,WAAG,IAAAwH,EAAAA,EAAI,GAC1Bj2C,QAAS6tC,EAAWv6C,EAAcC,eAAgBu6C,EAAqBxtB,EAAaiuB,EAAcG,SAClG/zC,qBAAsB4zC,EAAc2H,6BAC9B,CACIC,6BAA8B,aAElC9qD,EACT,IAGF,EAAG,CAEd,MAAM8iD,EAAc,IAAIC,EAAAA,sCAAsCF,EAAWlsC,EAAW6M,EAAiBof,GACrG,OAAOogB,EAAAA,EAAAA,qCAAoCF,EAAa76C,GACnDnD,MAAKm+C,GACEA,EACOA,EAAej4C,KAAIk4C,IAAgB,IAAA6H,EACtC,MAAO,CACH/tC,IAAsB,QAAnB+tC,EAAE7H,EAAcE,WAAG,IAAA2H,EAAAA,EAAI,GAC1Bp2C,QAAS6tC,EAAWv6C,EAAcC,eAAgBu6C,EAAqBxtB,EAAaiuB,EAAcG,SAClG/zC,qBAAsB4zC,EAAc2H,6BAC9B,CACIC,6BAA8B,aAElC9qD,EACT,IAGF,KAEV0a,OAAMnS,IACHN,EAAcR,UAAUiqB,UAAUnpB,GAClCN,EAAcR,UAAUiwC,MAAM,sDACvB,KAEnB,CCw7B2BsT,CACXl1C,EAAQvI,SACR7O,KAAK+jD,uBACJ/jD,KAAKR,MAAM6E,QAAQC,QAAQgU,YAAYL,UACxCjY,KAAKR,MAAM6E,QAAQkF,cACnB6N,EAAQzO,KACc,QADV+iD,EACZt0C,EAAQ4mC,sBAAc,IAAA0N,EAAAA,EAAIrD,GAG9BE,QAAerE,EACX9sC,EAAQvI,UAAY,GACnB7O,KAAKR,MAAM6E,QAAQC,QAAQgU,YAAYL,UACxCjY,KAAKR,MAAM6E,QAAQkF,cACqB,QADRoiD,EAChC3rD,KAAKR,MAAMmE,OAAO8jD,8BAAsB,IAAAkE,GAAI3rD,KAAK0lD,8BAC3B,QADwDkG,EAC9Ex0C,EAAQ4mC,sBAAc,IAAA4N,EAAAA,EAAIvD,GAGlC,OAAOE,CAAM,EAGA,KAAAgE,2BAA6B,KAC1CvsD,KAAKulD,sBAAsB,EA+Bd,KAAAjjC,gBAAmBR,GAAiCS,IAC7DT,EAAUU,gBACHV,EAAUU,eAAeD,GAKvB,KAAAohC,gBAAkB,CAC/BnkD,EACAsI,EACAga,KAEA,MAAM,UAAEvf,GAAc/C,GAEhB,SACFmW,EAAQ,IACRi3B,EAAG,IACHvmB,EACA6hB,YAAY,cAAEf,IACdr/B,EAEJ,MAAO,CACH8b,eAAgB,CACZhb,UAAW,0BAEfwc,oBAAqB,CACjBrhB,IAAK,QACL6E,UAAW,uCACXikC,QAAS,wCAEbjpC,QAAStE,IAAAA,cAAA,OAAKsJ,UAAU,gDAAgDrG,EAAUuqC,wBAClF7nB,OAAQkiB,GACJ7nC,IAAAA,cAAA,QAAMsJ,UAAU,iDACZtJ,IAAAA,cAAA,QAAMsJ,UAAU,2BAA0B,cAAa,SACvDtJ,IAAAA,cAAA,YAAO6nC,IAGf54B,MACIjP,IAAAA,cAACisB,EAAAA,oBAAmB,CAChBrV,GAAG,oCACH02B,IAAKA,EACLvmB,IAAKA,EACLmF,aAAc7V,EACd8V,SAAUzrB,KAAKsiB,gBAAgBR,GAC/B4J,uBAAwBnpB,EAAUmpB,uBAClCC,yBAA0BppB,EAAUopB,yBACpCC,yBAA0BrpB,EAAUqpB,yBACpCC,gBAAiBtpB,EAAUspB,gBAC3BC,gBAAiBvpB,EAAUupB,gBAC3B7oB,iBAAkBjD,KAAKiD,iBACvB82B,SAAU/5B,KAAK8H,MAAMqgC,sBAGhC,EA94BDnoC,KAAK8H,MAAQ,CACTiyC,WAAW,EACXpkC,SAAU,EACVi3B,SAAKtrC,EACL+kB,SAAK/kB,EACL4mC,WAAY,CACRjmB,gBAAiB,CAAC,GAEtB6C,qBAAiBxjB,EACjBmuB,kBAAcnuB,EACdmoC,4BAAwBnoC,EACxB6mC,qBAAqB,EACrBqe,YAAa,EACbyC,WAAW,EACX9C,uBAAmB7kD,EACnBkqD,cAAc,GAGlBxrD,KAAKusD,2BAA6BvsD,KAAKusD,2BAA2B1tB,KAAK7+B,MACvEA,KAAKiD,kBAAmBmG,EAAAA,EAAAA,oBAAmB5J,EAAM6E,QAAQC,QAAQ+E,kBAAoB7J,EAAM8J,aAAc9J,EAAMuJ,UACnH,CAQO4B,sBAAsBC,EAA4CC,GACrE,OAAI7K,KAAK8H,QAAU+C,GAAa7K,KAAKR,MAAMsC,OAAS8I,EAAU9I,IAIlE,CAEOgJ,SAAM,IAAA0hD,EAAAC,EACT,MACI9oD,QAAQ,UAAEiF,EAAY,IAAI,UAC1BrG,GACAvC,KAAKR,OACH,IAAE6mB,GAAQrmB,KAAK8H,MACfsP,EAA6B,QAAnBo1C,EAAAxsD,KAAKyuB,sBAAc,IAAA+9B,GAAnBA,EAAqBp1C,QAAUpX,KAAKyuB,eAAerX,aAAU9V,EACvE9B,EAAQQ,KAAKR,MAGbgkC,EAAsG,QAArF5uB,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAY2uB,SAAUp/B,QAASrE,KAAKR,MAAM6E,QAAQC,UACvFooD,EAAStkD,EAAAA,EAAA,GACPpI,KAAKR,OAAiD,IAC1DsI,MAAO9H,KAAK8H,MACZ2mB,eAAgBzuB,KAAKyuB,eACrBoB,YAAa7vB,KAAK8H,MAAMiyC,UACxBpqB,UAAW,CACPvkB,YAAapL,KAAKR,MAClBoJ,UAAWyC,IAAW,eAAgBzC,GACtC7E,IAAK,OAETy/B,iBACA5T,gBACItwB,IAAAA,cAAA,UAAQsJ,UAAU,uBAAuBksB,QAAS90B,KAAKiqD,eAAc,aAAc1nD,EAAUwtB,qBACxFxtB,EAAUwtB,qBAGnBf,eAAgB,CACZ5jB,YAAapL,KAAKR,MAClBuE,IAAK4oD,EAAAA,MACL/jD,UAAW,uBACX25B,OAAQviC,KAAK8H,MAAMiyC,UACnB,cAAc34C,EAAAA,EAAAA,QAAOmB,EAAUqqD,mBAAuC,QAArBH,EAAEzsD,KAAKyuB,sBAAc,IAAAg+B,GAAS,QAATA,EAAnBA,EAAqBr1C,eAAO,IAAAq1C,OAAA,EAA5BA,EAA8B9jD,MACjFkkD,OAAQ7sD,KAAKusD,2BACbO,gBAAiB,CAAEC,QAAS,GAC5BC,gCAAiChtD,KAAK8H,MAAM0jD,cAEhDv8B,qBAAsB,CAClBlrB,IAAKkpD,EAAAA,YACLrkD,UAAW,uBACXikD,OAAQ7sD,KAAKusD,4BAEjBr9B,qBAAsB,CAClBnrB,IAAKmpD,EAAAA,YACLtkD,UAAW,wBAEfumB,mBAAoB,GACpBC,mBAAoB,CAChBrrB,IAAKopD,EAAAA,UACLvkD,UAAW,sBAEfymB,mBAAoB,CAChBzmB,UAAW,qCAEf+c,0BAA2B,CACvB/c,UAAW,yBAEf8c,2BAA4B,CACxB9c,UAAW,+BAEf0mB,iBAAkBtvB,KAAK2lD,uBAAuBvuC,GAC9CuX,SAAU3uB,KAAK8H,MAAM0jD,cACjBlsD,IAAAA,cAAC8tD,EAAAA,EAAO,CAACxkD,UAAU,8BAA8ByF,MAAO9L,EAAU8qD,YAAa3Q,KAAM4Q,EAAAA,EAAYC,QAErGzrC,UAAW9hB,KAAKqlD,mBAChBj4C,MAAOpN,KAAK8H,MAAM0jD,eAAgBtmB,EAAAA,EAAAA,IAAsB1lC,EAAOQ,KAAKyuB,gBACpEjiB,YAAaxM,KAAK8H,MAAM0jD,eAAgBjmB,EAAAA,EAAAA,IAA4B/lC,EAAOQ,KAAKyuB,gBAChF5I,UAAW7lB,KAAK8H,MAAM0jD,cAChBpb,EAAAA,EAAAA,GAA0B5wC,EAAOQ,KAAK8H,MAAO9H,KAAKqlD,mBAAoBrlD,KAAKyuB,eAAgBzuB,KAAKR,MAAM6wC,yBACtG/uC,EACNykB,MAAO/lB,KAAK8H,MAAM0jD,eAAgB3gB,EAAAA,EAAAA,IAAsBrrC,EAAOQ,KAAK8H,OACpEwe,cAAetmB,KAAK8H,MAAM0jD,eAAgB/lB,EAAAA,EAAAA,IAA8BjmC,EAAOQ,KAAKyuB,gBACpFzI,OACIhmB,KAAK8H,MAAM0jD,eAAiBxrD,KAAKR,MAAM6E,QAAQ2iB,IAAIrjB,OAAOm8C,aAAcrU,EAAAA,EAAAA,IAAuBjsC,EAAOQ,KAAKyuB,gBAC/G7I,UAAW5lB,KAAK8H,MAAM0jD,cAChBhkB,EAAAA,EAAAA,IACIhoC,EACAQ,KAAK8H,MACL9H,KAAKqlD,mBAtEc,GACA,IAwEnBrlD,KAAKyuB,qBAETntB,EACN6kB,WACInmB,KAAK8H,MAAM0jD,cAAgBxrD,KAAKR,MAAMmE,OAAOo8C,kBAAoB//C,KAAK8H,MAAM2b,uBACtE8qB,EAAAA,EAAAA,IAAoB/uC,EAAOQ,KAAK8H,MAAO9H,KAAKqlD,yBAC5C/jD,EACVqU,SAAUyB,SAAAA,EAASgL,gBAAa9gB,EAAYtB,KAAK2jD,gBAAgB3jD,KAAKR,MAAOQ,KAAK8H,MAAO9H,KAAKqlD,oBAC9Fp/B,eAAgBjmB,KAAK8H,MAAM0jD,eAAgB/4B,EAAAA,EAAAA,IAAwBjzB,EAAOQ,KAAKyuB,gBAC/EzK,cAAehkB,KAAK8H,MAAM0jD,cACpBhf,EAAAA,EAAAA,IAA8BhtC,EAAOQ,KAAK8H,MAAO9H,KAAKqlD,mBAAoBrlD,KAAKyuB,qBAC/EntB,EACNmlB,uBAAwBzmB,KAAK8H,MAAM0jD,eAAgB3c,EAAAA,EAAAA,IAA0BrvC,EAAOQ,KAAK8H,OACzFue,MACAuI,cAAe5uB,KAAKimD,kBACpBuH,WAAYxtD,KAAKwnD,sBAGrB,OAAOxnD,KAAKR,MAAMuL,WAAW2hD,EACjC,CAgHQvB,kBAAkBsC,GAAuB,IAAAC,EAC7C,MAAMt2C,EAA6B,QAAtBs2C,EAAG1tD,KAAKyuB,sBAAc,IAAAi/B,OAAA,EAAnBA,EAAqBt2C,SAChCpX,KAAK8H,MAAMq+C,mBAAZ,MAAiC/uC,GAAAA,EAASmH,iBAC1Cve,KAAKqQ,SAAS,CACV81C,kBAAmB,CAACnmD,KAAK2tD,uBAAuBv2C,IAChDsxC,WAAY+E,GAGxB,CAEQlR,aAAaF,GAAiG,IAA7DW,EAAA2D,UAAAlwC,OAAA,QAAAnP,IAAAq/C,UAAA,GAAAA,UAAA,GAAkC3gD,KAAK8H,MAAM6+B,iBAC9F3mC,KAAK8H,MAAM2b,uBAAyB44B,IACpCA,EAAS9jB,wBAA0BykB,GAEvCh9C,KAAKqQ,SAAS,CAAEof,aAAc4sB,GAClC,CAmKQ2J,eAAe5uC,GAAkC,IAAAsiC,EACrD,IAAKtiC,IAAYipC,EAAAA,GAAiBvgB,UAC9B,MAAO,GAGX,IAAI8tB,EAAa,GACjBA,GAAaC,EAAAA,EAAAA,uBAAsBz2C,EAAQzO,MAAQ,GAAIyO,EAAQvI,SAAU7O,KAAKR,MAAM6E,QAAQkF,mBAAejI,GAE3G,MAAMwsD,EAAU,IAAIC,IAAIH,EAAY7tB,OAAOmO,SAASljB,MAQpD,OAPkB,QAAlB0uB,EAAAtiC,EAAQ+U,kBAAU,IAAAutB,GAAlBA,EAAoBptC,KAAI0rB,IAAY,IAAAg2B,EAChC,MAAMjc,EAAyC,QAA3Bic,EAAGh2B,EAAUC,sBAAc,IAAA+1B,OAAA,EAAxBA,EAA0B9wC,MACjD,IAAKqS,EAAAA,iBAAiB0+B,mBAAmBlc,GAAiB,CACtD,MAAMmc,GAAgBxa,EAAAA,EAAAA,6CAA4C1b,EAAUsZ,oBAC5Ewc,EAAQK,aAAa5tD,IAAI2tD,EAAenc,EAAiB,KAG1D+b,EAAQ9iC,IACnB,CAUQjrB,+BAA+BqX,GACnC,MAAMizB,QAA4CrqC,KAAKsqC,uCACjD0X,QAAsChiD,KAAKuqC,iCAE3CqC,EAAc5sC,KAAKiiD,+BAA+B5X,EAAqCjzB,GACvFiP,EAAcrmB,KAAKkiD,+BACrBF,GAAiC3X,EACjCjzB,GAEJ,IAAIzB,EAAmB3V,KAAKmiD,aAAa/qC,EAASizB,GAClD10B,EAAW0gC,KAAKhwB,IAAI1Q,EAAUi3B,GAE9B5sC,KAAKqQ,SAAS,CACVu8B,MACAvmB,MACA1Q,YAER,CAEQssC,+BAA+B5X,EAA8CjzB,GAAsB,IAAAgrC,EACvG,OACI/X,GACArqC,KAAKqiD,2BADLhY,MAEAjzB,GAAiB,QAAVgrC,EAAPhrC,EAASkrC,gBAAQ,IAAAF,GAAjBA,EAAmBG,iBACnBnrC,EAAQkrC,SAASC,gBAAkB,EAE5BnrC,EAAQkrC,SAASC,gBAGrB,CACX,CAEQL,+BAA+BM,EAAyCprC,GAAsB,IAAAqrC,EAClG,OACID,GACAxiD,KAAKqiD,2BADLG,MAEAprC,GAAiB,QAAVqrC,EAAPrrC,EAASkrC,gBAAQ,IAAAG,GAAjBA,EAAmBC,iBACnBtrC,EAAQkrC,SAASI,gBAAkB,EAE5BtrC,EAAQkrC,SAASI,iBAGrBC,EAAAA,EAAAA,kCAAiC3iD,KAAKR,MAAM6E,QAAQ2iB,IAAIrjB,OAAOwyC,2BAC1E,CAOQkM,0BAAuB,IAAAO,EAAAC,EAC3B,MAAM7S,EAAoBhwC,KAAKR,MAAMsC,KAAKkuC,kBAC1C,QAAuD,QAAhD4S,EAAE5S,SAAyB,QAAR6S,EAAjB7S,EAAmB3vC,cAAM,IAAAwiD,OAAA,EAAzBA,EAA2B5S,2BAAmB,IAAA2S,GAAAA,EAC3D,CAEQT,aAAa/qC,EAAwBizB,GAA4C,IAAAyY,EAAAC,EAAAC,EACrF,MAAM,SAAErtC,GAAa3V,KAAK8H,MAC1B,IAAIm7C,EAAkB,EAEtB,GAAIttC,IAAastC,IAAoB5Y,EACjC,OAAO10B,EAGX,MAAMq6B,EAAoBhwC,KAAKR,MAAMsC,KAAKkuC,kBAE1C,OAD2G,QAAjE8S,EAAG9S,SAAyB,QAAR+S,EAAjB/S,EAAmB3vC,cAAM,IAAA0iD,OAAA,EAAzBA,EAA2BnD,2CAAmC,IAAAkD,GAAAA,GAKvG1rC,SAAiB,QAAV4rC,EAAP5rC,EAASkrC,gBAAQ,IAAAU,GAAjBA,EAAmBE,iBAAmB9rC,EAAQkrC,SAASY,gBAAkB,IACzED,EAAkB7rC,EAAQkrC,SAASY,iBAGhCD,GAPIttC,CAQf,CAEQ8yC,8BAA8BF,EAAuBnxC,GAAiC,IAAAg3C,EAC1F,MAAMC,EAAmF,QAA5DD,EAAGpuD,KAAKR,MAAMmE,OAAO2qD,+CAAuC,IAAAF,GAAAA,EACzF,IAAIG,EAAgBhG,QAAAA,EAAU,GAC9B,MAAMiG,GACDr2C,EAAAA,iBAAiBC,kBAAkBhB,aAAO,EAAPA,EAASgV,mBAAqBjU,EAAAA,iBAAiBC,kBAAkBhB,aAAO,EAAPA,EAAS4mC,gBAC5G91B,EAAS9Q,aAAO,EAAPA,EAASsH,OAUxB,OATI2vC,GAA2BG,GAAoBtmC,IAC/CqmC,EAAgBA,EAAcplD,QAAOoD,IAAO,IAAAkiD,EAExC,QAD8D,QAA5BA,EAAGliD,EAAKqE,4BAAoB,IAAA69C,OAAA,EAAzBA,EAA2BrC,6BAC5B,IAEnC52C,EAAAA,gBAAgBC,YAAY84C,KAC7BA,EAAgBhG,QAAAA,EAAU,KAG3BgG,CACX,CA8BQxuD,6CAA0C,IAAAsvC,EAAAC,EAC9C,MAAMC,QAAwBvvC,KAAKR,MAAMsC,KAAKmQ,aAK9C,KAH6Bs9B,SAE5B,QAF2CF,EAAfE,EAAiB3gC,MAC1CqD,GAAgBA,EAAatJ,OAASqmC,EAAAA,YACzC,IAAAK,OAAA,EAF4BA,EAE1Bj9B,WAEC,OAAO,EAMX,GAJ+Bm9B,SAE9B,QAF6CD,EAAfC,EAAiB3gC,MAC5CqD,GAAgBA,EAAatJ,OAASumC,EAAAA,YACzC,IAAAI,OAAA,EAF8BA,EAE5Bl9B,UAEyB,CAAC,IAAD+wC,EACxB,MAAM1T,EAA4D,QAArB0T,EAAGnjD,KAAKR,MAAM6E,eAAO,IAAA8+C,GAAS,QAATA,EAAlBA,EAAoB7+C,eAAO,IAAA6+C,GAAK,QAALA,EAA3BA,EAA6Bn8B,WAAG,IAAAm8B,GAAU,QAAVA,EAAhCA,EAAkCzT,gBAAQ,IAAAyT,OAAA,EAA1CA,EAA4CxT,iCAC5F,GAAgD,SAA5CF,EACA,OAAO,EAGX,GAAgD,QAA5CA,EACA,OAAO,EAEX,IAAIG,EACJ,IACIA,QAAqB5vC,KAAKR,MAAMsC,KAAKihB,mBAIxB,CAHf,MAAOlZ,GAGL,OAFA7J,KAAKR,MAAMuJ,UAAU8yB,YAAYhyB,GACjC7J,KAAKR,MAAMuJ,UAAUiwC,MAAM,0EACpB,CAAM,CAGjB,OACIpJ,IAC8C,QAA5CH,GAAqDG,EAAaC,OACnB,QAA5CJ,IAAsDG,EAAaC,MAAO,CAEhF,CAAC,IAADE,EACH,MAAMC,QAA0BhwC,KAAKR,MAAMsC,KAAKkuC,kBAChD,QAA+C,QAAxCD,EAAEC,aAAiB,EAAjBA,EAAmBC,2BAAmB,IAAAF,GAAAA,EAAW,CAElE,CAEQhwC,uCAAoC,IAAAmwC,EACxC,MAAMX,QAAwBvvC,KAAKR,MAAMsC,KAAKmQ,aAExCk+B,EAAoCZ,SAEzC,QAFwDW,EAAfX,EAAiB3gC,MACvDqD,GAAgBA,EAAatJ,OAASsmC,EAAAA,YACzC,IAAAiB,OAAA,EAFyCA,EAEvC99B,UAEH,OAAO+9B,SAAAA,CACX,CAgCQkW,6BAA6B3uB,EAAmB7Z,EAA+BkW,GACnF,OAAOz0B,IAAAA,cAAAA,IAAAA,SAAA,KAAGU,KAAKqpD,iBAAiB3xB,EAAO7Z,EAAekW,GAC1D,CAsEQ45B,uBAAuBv2C,GAC3B,MAAO,CACHkH,IAAKlH,EAAQmH,iBAAmB,GAChCtI,QAASmB,EAAQzO,KAEzB,CAgGQ48C,uBACJvlD,KAAK+3B,WAAa,GAClB/3B,KAAKqQ,SAAS,CACV0pC,WAAW,EACXpkC,SAAU,EACVi3B,SAAKtrC,EACL+kB,SAAK/kB,EACL4mC,WAAY,CACRjmB,gBAAiB,CAAC,GAEtB6C,qBAAiBxjB,EACjBmuB,kBAAcnuB,EACdmoC,4BAAwBnoC,EACxB6mC,qBAAqB,EACrB/W,8BAA0B9vB,EAC1BonD,gBAAYpnD,EACZklD,iBAAallD,EACb2nD,eAAW3nD,EACX6kD,kBAAmB,GACnBqF,cAAc,GAEtB,CA+DQlF,kBAAkBzoC,GACtB,OACIve,IAAAA,cAAA,OAAKsJ,UAAU,0BACXtJ,IAAAA,cAACuW,EAAAA,GAAK,CACFrM,eAAgBxJ,KAAKR,MAAM6E,QAAQkF,cAAcC,eACjDZ,UAAU,gCACV0V,IAAI,QACJtJ,aAAchV,KAAKR,MAAM6E,QAAQC,QAAQ0Q,aACzC6I,cAAeA,QAAAA,EAAiB7d,KAAKwlD,4BACrC7mC,oBAAoB,UAIpC,EAEJ,qIE3qCA,MAsBM8kC,EAA4Bt+B,IAC9B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACI7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,EACAqhB,GAEJI,EACE,EAITqpC,EAAyBlvD,IAC3B,MAAM,eACFwvB,EAAc,qBACdC,EAAoB,qBACpBC,EAAoB,mBACpBC,EAAkB,mBAClBC,EAAkB,cAClBpL,EAAa,UACb4B,EAAS,mBACTyJ,GACA7vB,EAEJ,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAK2iB,GACR1vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK4iB,GAAuBE,GACjC7vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+iB,GAAqBu/B,EAAmBnvD,IAClDF,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK6iB,GACN5vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKgjB,GACLzJ,GAtDKA,KACtB,MAAM,eAAEhC,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAE/C,OACItmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EA+CmB82B,CAAiBz9B,GAC9B5B,GA5CSA,KAC1B,MAAM,eAAEJ,EAAc,WAAEC,EAAU,OAAE0I,GAAWvI,EAE/C,OACI1kB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAqCuBg3B,CAAqBv/B,KAG1C,EAoCX2qC,EAAsBnvD,IACxB,MAAM,MACF4N,EAAK,MACL2Y,EAAK,OACLC,EAAM,WACNG,EAAU,SACVxQ,EAAQ,UACRkQ,EAAS,eACTI,EAAc,uBACdQ,EAAsB,iBACtB6I,EAAgB,QAChBX,EAAO,0BACPhJ,EAAyB,2BACzBD,EAA0B,cAC1BkJ,EAAa,cACbtI,GACA9mB,EACJ,OAAImvB,EACOrvB,EAAAA,cAAAA,EAAAA,SAAA,KAAGqvB,GAGVrvB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GACNpmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuiB,KAEdtvB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACLvY,EACA2Y,EACAO,EACAN,EACAH,GApCSA,KACtB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OAAOvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GAAiBqH,EAAU3e,IAAIm3C,GAAiC,EAiCvDD,CAAiB39B,GAC9BM,GAhDUA,KACvB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACI7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GAAsBxhB,GAC/B2K,EACE,EAyCgBq1C,CAAkBz9B,GAChCxQ,GAhEOguC,EAAChuC,EAA2C8Q,KAChE,MAAM,eAAE7C,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,EAAK,OAAE0W,GAAWtP,EAExE,OACIrW,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,EACAqhB,GAEJ1W,EACAkY,EACE,EAqDck9B,CAAgBhuC,EAAU8Q,GACtC6I,EACArJ,GAEN,EASEyJ,EAA+DlwB,IACxE,MAAM,UAAEmwB,EAAS,gBAAEC,EAAe,YAAEC,EAAW,eAAE2T,GAAmBhkC,EACpE,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKsjB,IACN6T,GAAkB5T,EACnBC,GAAe6+B,EAAsBlvD,GACjC,EAIjB,mDC7JO,MAAMovD,UCFN,MAGHrvD,YAAmB2oB,GACfloB,KAAKkoB,OAASA,CAClB,GDMA3oB,YAAmB4kD,EAAmBjgB,GAElCzkC,MADemvD,EAA0BC,UAAU1K,EAAWjgB,IAG9DlkC,KAAKmkD,UAAYA,EACjBnkD,KAAKkkC,UAAYA,CACrB,CAVO4qB,iBAAiB3K,EAAmBjgB,GACvC,MAAO,GAAGigB,KAAajgB,GAC3B,oBEHG,MAAMmb,UCJN,MAOH9/C,cAAmC,QAAAwvD,EAAApO,UAAAlwC,OAAbvE,EAAa,IAAAq0C,MAAAwO,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAb9iD,EAAa8iD,GAAArO,UAAAqO,GAC/BhvD,KAAKivD,qBAAuB/iD,CAChC,CANWA,YACP,OAAOlM,KAAKivD,oBAChB,GDEOH,gBAAgBzqD,EAAuB+6C,EAAqC+E,GAC/E,MAAM+K,EAAgC7qD,EAAQC,QAAQ6qD,QACtD,IAAIjjD,EAAQmzC,EAAoB+P,0BAA0BF,GAE1D,MAAMhrB,GAAYC,EAAAA,EAAAA,IAAa9/B,EAAQC,SAEjCiI,EAAO,IAAIqiD,EAA0BzK,EAAWjgB,GAChD7d,EAAc+4B,EAA8B,GAAK,GACjDrrB,EAAgB7nB,EAAMI,KAAI+iD,GAAUA,EAAOlL,YAAWmL,QAAQ/iD,EAAK43C,WACrE53C,IAAmB,IAAXwnB,EACR7nB,EAAM1E,KAAK+E,GAEXL,EAAMqjD,OAAOrjD,EAAMuE,OAAS,EAAG,EAAGvE,EAAMqjD,OAAOx7B,EAAO,GAAG,IAEzD7nB,EAAMuE,OAAS4V,IACfna,EAAQA,EAAMyC,MAAM0nC,KAAKhwB,IAAIna,EAAMuE,OAAS4V,EAAK,KAGrDg5B,EAAoBmQ,eAAeN,EAAe7P,EAAoBoQ,+BAAgCvjD,EAC1G,CAEQ4iD,iCAAiCI,GACrC,MAAMhjD,EAAQmzC,EAAoBqQ,gBAAgBR,EAAe7P,EAAoBoQ,gCACrF,OAAKj6C,EAAAA,gBAAgBC,YAAYvJ,GAG1BA,EAFI,EAGf,CAEQ4iD,uBAAuBI,EAA+BS,GAC1D,IAAKA,EACD,OAGJ,IAAKT,EAAcU,iBACf,OAKJ,OAFoBV,EAAc9tB,IAAoDuuB,GAEnEjrD,KACvB,CAEQoqD,sBAAsBI,EAA+BS,EAAmBjrD,GACvEirD,GAILT,EAAc3uD,IAAIovD,EAAWjrD,EAAO,CAAEmrD,QAAQ,EAAMC,OAAQ,QAChE,EAnDwBzQ,EAAAoQ,+BAAyC,wGEQrEM,EAGI,SAAYz3C,GAAZ,IAAA03C,EAAA,KAIO,KAAAC,YAAc,WAAM,OAAAC,EAAAA,EAAAA,eAAc,gBAAiBF,EAAK13C,YAApC,EAEpB,KAAA63C,mBAAqB,WAAM,uBAE3B,KAAAC,cAAgB,WAAiB,iBAPpCpwD,KAAKsY,YAAcA,CACvB,GA6ByC+3C,EAAAA,EAAAA,IAA0C,CACnFxkD,OAhBG,SAAmC0C,EAA2BukB,GAAmB,+EACpF,MAAM,CAAN,EAAO,IAAIw9B,EAAAA,EAAe,QAgB1B/hD,MATgB,SAACgiD,GACjB,OAAO,IAAIR,EAAmBQ,EAAU/mD,eAAe8O,YAC3D,sECxCAg4C,EAAA,oBAAAA,IA+BwB,KAAAE,WAAyB,GAMzB,KAAAC,iBAAsC,GAYtC,KAAAC,eAAyB,EAMzB,KAAAC,oBAA8B,GAC9B,KAAAC,mBAA6B,GAC7B,KAAAC,qBAA+B,GAC/B,KAAAC,MAAc,CAAC,EAkBf,KAAAC,8BAAwC,EAMxC,KAAAC,uBAAiC,CAmFzD,QAlKc5kD,OAAA6kD,eAAWX,EAAAY,UAAA,uBAAoB,KAA/B,WACN,OAAOlxD,KAAKmxD,qBAChB,EAAC,gCAIS/kD,OAAA6kD,eAAWX,EAAAY,UAAA,aAAU,KAArB,WACN,OAAOlxD,KAAKoxD,WAChB,EAAC,gCAIShlD,OAAA6kD,eAAWX,EAAAY,UAAA,iBAAc,KAAzB,WACN,OAAOlxD,KAAKqxD,eAChB,EAAC,gCAISjlD,OAAA6kD,eAAWX,EAAAY,UAAA,kBAAe,KAA1B,WACN,OAAOlxD,KAAKsxD,gBAChB,EAAC,gCAISllD,OAAA6kD,eAAWX,EAAAY,UAAA,aAAU,KAArB,WACN,OAAOlxD,KAAKuxD,WAChB,EAAC,gCAISnlD,OAAA6kD,eAAWX,EAAAY,UAAA,YAAS,KAApB,WACN,OAAOlxD,KAAKwwD,UAChB,EAAC,gCAISpkD,OAAA6kD,eAAWX,EAAAY,UAAA,kBAAe,KAA1B,WACN,OAAOlxD,KAAKywD,gBAChB,EAAC,gCAISrkD,OAAA6kD,eAAWX,EAAAY,UAAA,oBAAiB,KAA5B,WACN,OAAOlxD,KAAKwxD,kBAChB,EAAC,gCAISplD,OAAA6kD,eAAWX,EAAAY,UAAA,gBAAa,KAAxB,WACN,OAAOlxD,KAAK0wD,cAChB,EAAC,gCAOStkD,OAAA6kD,eAAWX,EAAAY,UAAA,qBAAkB,KAA7B,WACN,OAAOlxD,KAAK2wD,mBAChB,EAAC,gCAESvkD,OAAA6kD,eAAWX,EAAAY,UAAA,oBAAiB,KAA5B,WACN,OAAOlxD,KAAK4wD,kBAChB,EAAC,gCAESxkD,OAAA6kD,eAAWX,EAAAY,UAAA,sBAAmB,KAA9B,WACN,OAAOlxD,KAAK6wD,oBAChB,EAAC,gCAESzkD,OAAA6kD,eAAWX,EAAAY,UAAA,OAAI,KAAf,WACN,OAAOlxD,KAAK8wD,KAChB,EAAC,gCAIS1kD,OAAA6kD,eAAWX,EAAAY,UAAA,8BAA2B,KAAtC,WACN,OAAOlxD,KAAK+wD,4BAChB,EAAC,gCAIS3kD,OAAA6kD,eAAWX,EAAAY,UAAA,wBAAqB,KAAhC,WACN,OAAOlxD,KAAKgxD,sBAChB,EAAC,gCAGMV,EAAAY,UAAAO,2BAAP,SAAkCC,GAC9B1xD,KAAKmxD,sBAAwBO,CACjC,EAGOpB,EAAAY,UAAAS,iBAAP,SAAwBC,GACpB5xD,KAAKoxD,YAAcQ,CACvB,EAGOtB,EAAAY,UAAAn1C,sBAAP,SAA6BD,GACzB9b,KAAKsxD,iBAAmBx1C,CAC5B,EAGOw0C,EAAAY,UAAAvgD,qBAAP,SAA4BD,GACxB1Q,KAAKqxD,gBAAkB3gD,CAC3B,EAGO4/C,EAAAY,UAAAW,iBAAP,SAAwBC,GACpB9xD,KAAKuxD,YAAcO,CACvB,EAGOxB,EAAAY,UAAAa,eAAP,SAAsBC,GAClBhyD,KAAKwwD,WAAaxwD,KAAKwwD,WAAWrnD,QAAO,SAAAsK,GAAY,OAAAA,EAASmd,KAAOohC,CAAhB,GACzD,EAGO1B,EAAAY,UAAAe,qBAAP,SAA4BD,GACxBhyD,KAAKywD,iBAAmBzwD,KAAKywD,iBAAiBtnD,QAAO,SAAAsK,GAAY,OAAAA,EAASmd,KAAOohC,CAAhB,GACrE,EAGO1B,EAAAY,UAAAgB,YAAP,SAAmBz+C,GACfzT,KAAKwwD,YAAU2B,EAAAA,EAAAA,IAAA,CAAI1+C,GAAazT,KAAKwwD,WACzC,EAGOF,EAAAY,UAAAkB,kBAAP,SAAyB3+C,GACrBzT,KAAKywD,kBAAgB0B,EAAAA,EAAAA,IAAA,CAAI1+C,GAAazT,KAAKwwD,WAC/C,EAGOF,EAAAY,UAAAmB,wBAAP,SAA+BC,GAC3BtyD,KAAKwxD,mBAAqBc,CAC9B,EAGOhC,EAAAY,UAAAqB,oBAAP,SAA2BC,GACvBxyD,KAAK0wD,eAAiB8B,CAC1B,EAGOlC,EAAAY,UAAAuB,yBAAP,SACIC,EACAC,EACAC,EACAC,GAEA7yD,KAAK2wD,oBAAsB+B,EAC3B1yD,KAAK4wD,mBAAqB+B,EAC1B3yD,KAAK6wD,qBAAuB+B,EAC5B5yD,KAAK8wD,MAAQ+B,CACjB,EAGOvC,EAAAY,UAAA4B,mCAAP,SAA0CC,GACtC/yD,KAAK+wD,6BAA+BgC,CACxC,EAGOzC,EAAAY,UAAA8B,4BAAP,SAAmCR,GAC/BxyD,KAAKgxD,uBAAyBwB,CAClC,GAnKY7mD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,4EAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,0GAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,gGAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,oGAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,qGAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,gGAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,8FAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,oGAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,uGAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,qEAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,mGAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,0EACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yEACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,2EACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,4DAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,wGAIC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,uGAIC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,yGAIC1I,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,0FAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,oFAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,iHAIG1I,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6EAEDD,EAAAA,EAAAA,IAAA,CAAT0I,EAAAA,IAAQ,2GAKT1I,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,6JAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,mJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,wJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,uJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,mJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,iJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,uJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,8IAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,oJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,0JAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,sJAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,gLAcPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,sKAMPF,EAAAA,EAAAA,IAAA,CADCE,EAAAA,IAAM,6JAIXykD,CAAC,CArKD,gCCJQ,IAAKlzB,mBAAZ,SAAYA,GACTA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,sBACH,CAPA,CAAYA,IAAAA,EAAqB,mhBCIlC,IAAA61B,EAAA,WACW,KAAAhD,YAAc,WAAM,qBAEpB,KAAAE,mBAAqB,WAAM,qBAE3B,KAAAC,cAAgB,WAAiB,aAC5C,EAEO,SAAS8C,EAAgBpgC,GAC5B,IAAMqgC,EAAW,IAAIF,EAEjBG,EAA8BtgC,EAAIsO,IAAmB+xB,EAAShD,qBAAsBgD,EAASlD,eACjG,OAAImD,IAGJtgC,EAAIugC,OAAOF,EAAU,CAAC,GACtBC,EAA8BtgC,EAAIsO,IAAmB+xB,EAAShD,qBAAsBgD,EAASlD,eAEjG,CAEO,SAASqD,EAAmB5uD,EAAsBouB,GACrD,IAAMqgC,EAAW,IAAIF,EACrBngC,EAAIugC,OAAOF,EAAUzuD,EACzB,sHCmQA,QAjRwB,SAAmB6uD,GA8QvC,OAvQA,SAAAC,GACI,SAAAC,EAAYj0D,GAAZ,IAAAwwD,EACIwD,EAAAE,KAAA,KAAMl0D,IAAM,KACW,OAeVwwD,EAAA2D,gBAAkB,iBACzBC,EAA4B5D,EAAKxwD,MAA/B0W,EAAE09C,EAAA19C,GAAE2M,EAAQ+wC,EAAA/wC,SAAExe,EAAOuvD,EAAAvvD,QACvBwvD,GAASX,EAAAA,EAAAA,IAAgB7uD,EAAQkF,eAClCsqD,EAKDA,EAAO39C,KAKXo9C,EAAAA,EAAAA,KAAkBQ,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAC,CAAD,EAEPD,KAAME,EAAA,IACR79C,GAAK,CACFA,GAAEA,EACF2M,SAAQA,EACRmxC,gBAAgB,EAChB3tD,UAAU,EACV4tD,YAAY,EACZC,eAAe,EACfC,mBAAmB,EACnB3kD,YAAQlO,EACR8yD,SAAU,IACbL,IAEL1vD,EAAQkF,eAxBRymD,EAAKxwD,MAAMuJ,UAAUc,MAAM,uDA0BnC,EAOiBmmD,EAAAqE,sBAAwB,SAACn+C,GACtC,IAAM5G,EAAc0gD,EAAK5uB,MAAMlrB,GAC/B,OAAA49C,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACOxkD,GAAY,CACf0kD,eAAgBhE,EAAKsE,SAASp+C,EAAI,CAAE89C,gBAAgB,IAAQ,GAC5D3tD,SAAU2pD,EAAKsE,SAASp+C,EAAI,CAAE7P,UAAU,IACxCkuD,QAASvE,EAAKsE,SAASp+C,EAAI,CAAE1G,OAAQ,UAAW,GAAM,GACtDlN,WAAY0tD,EAAKsE,SAASp+C,EAAI,CAAE1G,OAAQ,aACxCglD,UAAWxE,EAAKsE,SAASp+C,EAAI,CAAE1G,OAAQ,YACvCilD,UAAWzE,EAAKsE,SAASp+C,EAAI,CAAE1G,OAAQ,YAAa,GAAM,GAC1DwsB,WAAYg0B,EAAKsE,SAASp+C,EAAI,CAAE1G,OAAQ,aAAc,GACtDklD,gBAAiB1E,EAAKsE,SAASp+C,EAAI,CAAEg+C,eAAe,IAAQ,GAAM,GAClES,sBAAuB3E,EAAKsE,SAASp+C,EAAI,CAAEi+C,mBAAmB,IAC9Dz7C,uBAAwBs3C,EAAKt3C,yBAC7Bk8C,eAAgB5E,EAAK4E,eAAe1+C,GACpC2+C,cAAe,SAACnwD,GACZsrD,EAAKqD,OAAOn9C,EAAI,CAAE+9C,WAAYvvD,GAClC,EACAowD,iBAAkB,SAACpwD,GACfsrD,EAAKqD,OAAOn9C,EAAI,CAAEg+C,cAAexvD,GACrC,EACAqwD,qBAAsB,SAACrwD,GACnBsrD,EAAKqD,OAAOn9C,EAAI,CAAEi+C,kBAAmBzvD,GACzC,EACA0L,YAAa,SAAC1L,GACVsrD,EAAKqD,OAAOn9C,EAAI,CAAE7P,SAAU3B,GAChC,EACAqM,QAAS,WACLi/C,EAAKqD,OAAOn9C,EAAI,CAAE1G,OAAQ,SAC9B,EACAwB,WAAY,WACRg/C,EAAKqD,OAAOn9C,EAAI,CAAE1G,OAAQ,YAC9B,EACAyM,UAAW,WACP+zC,EAAKqD,OAAOn9C,EAAI,CAAE1G,OAAQ,WAC9B,EACAwlD,OAAQ,WACJhF,EAAKqD,OAAOn9C,EAAI,CAAE1G,OAAQ,WAC9B,EACA2B,UAAW,WACP6+C,EAAKqD,OAAOn9C,EAAI,CAAE1G,OAAQ,YAC9B,EACAylD,UAAW,SAACz8B,GAA0C,OAAAw3B,EAAKqE,sBAAsB77B,EAA3B,EACtD08B,oBAAqB,SAACryC,GAA0C,OAAAmtC,EAAKmF,gCAAgCtyC,EAArC,EAChEtT,KAAM,SAACxF,IACCuF,aAAW,EAAXA,EAAa0kD,iBAIjBhE,EAAKqD,OAAOn9C,GAAE49C,EAAAA,EAAAA,IAAA,CACVE,gBAAgB,GACbjqD,GAEX,GAER,EAOiBimD,EAAAmF,gCAAkC,SAACtyC,GAChD,IAAMuwC,GAAeF,EAAAA,EAAAA,IAAgBlD,EAAKxwD,MAAM6E,QAAQkF,eAClD+F,EAAclD,OAAOsiC,OAAO0kB,GAAcxkD,MAAK,SAAAwmD,GAAgB,OAAAA,aAAY,EAAZA,EAAcvyC,YAAaA,CAA3B,IACrE,OAAOmtC,EAAKqE,sBAAuB/kD,GAAeA,EAAY4G,IAAO,GACzE,EAMiB85C,EAAA5uB,IAAM,WACnB,OAAO8xB,EAAAA,EAAAA,IAAgBlD,EAAKxwD,MAAM6E,QAAQkF,cAC9C,EAQiBymD,EAAAqD,OAAS,SAACn9C,EAAYxR,GAEnC,IAAM+yC,EAAUuY,EAAK5uB,MAChBqW,EAAQvhC,GAIbuhC,EAAQvhC,IAAG49C,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACJrc,EAAQvhC,IACRxR,GALHsrD,EAAKxwD,MAAMuJ,UAAUc,MAAM,mDAAmDqM,EAAE,iBAOxF,EAEiB85C,EAAAqF,cAAgB,SAACn/C,EAAYo/C,GAC1C,IACMC,EADUvF,EAAK5uB,MACElrB,GACvB,QAAKq/C,GAGEC,IAAQD,EAAQD,EAC3B,EAEiBtF,EAAAyF,mBAAqB,SAClCv/C,EACAo/C,EACAI,EACAC,GAEA,IACMJ,EADUvF,EAAK5uB,MACElrB,GACvB,IAAKq/C,EAED,QAASG,EAGb,GAAIC,IAAwC,aAAlBJ,EAAO/lD,QAA2C,YAAlB+lD,EAAO/lD,QAE7D,QAASkmD,EAIb,IAAKH,EAAOnB,UAAuC,IAA3BmB,EAAOnB,SAAS3jD,OACpC,OAAOu/C,EAAKqF,cAAcn/C,EAAIo/C,GAGlC,IAAIlB,EAAWmB,EAAOnB,SAStB,OAPIpE,EAAKxwD,MAAM6E,QAAQ2iB,IAAIrjB,OAAO83B,iDAE9B24B,EAAWA,EAASjrD,QAAO,SAAAysD,GAAW,OAAC5F,EAAK6F,2BAA2BD,EAAjC,KAKnCxB,EADQsB,EAAa,QAAU,SACd,SAAAE,GAAW,OAAA5F,EAAKyF,mBAAmBG,EAASN,EAAQI,EAAYC,EAArD,GACvC,EAOiB3F,EAAA6F,2BAA6B,SAACr9B,GAC3C,IAAKA,EAAS92B,SAlNO,qBAmNjB,OAAO,EAGX,IACM6zD,EADUvF,EAAK5uB,MACE5I,GAEvB,SAAI+8B,IAAU//C,EAAAA,gBAAgBC,YAAY8/C,EAAOnB,SAASjrD,QAAO,SAAAysD,GAAW,OAAAA,EAAQl0D,SAxN9D,qBAwNsD,KAKhF,EAUiBsuD,EAAAsE,SAAW,SACxBp+C,EACAo/C,EACAI,EACAC,GAEA,IACMJ,EADUvF,EAAK5uB,MACElrB,GACvB,QAAKq/C,IAKAA,EAAOnB,UAAuC,IAA3BmB,EAAOnB,SAAS3jD,OAKjCu/C,EAAKyF,mBAAmBv/C,EAAIo/C,EAAQI,EAAYC,GAJ5C3F,EAAKqF,cAAcn/C,EAAIo/C,GAKtC,EAMiBtF,EAAAt3C,uBAAyB,WACtC,QAASs3C,EAAKxwD,MAAMs2D,aACxB,EAOiB9F,EAAA4E,eAAiB,SAAC1+C,GAG/B,QAFgB85C,EAAK5uB,MACElrB,EAE3B,EAjQI85C,EAAK2D,kBAAiB,CAC1B,CAiQJ,OArQ0BoC,EAAAA,EAAAA,IAAAtC,EAAAD,GAMfC,EAAAvC,UAAAvmD,sBAAP,SAA6BC,GACzB,OAAI5K,KAAKR,QAAUoL,CAIvB,EAEO6oD,EAAAvC,UAAApmD,OAAP,WACY,IAAAoL,EAAOlW,KAAKR,MAAK0W,GACzB,OAAO5W,EAAAA,cAACi0D,GAAgBO,EAAAA,EAAAA,IAAA,GAAK9zD,KAAKR,MAAK,CAAE8P,YAAatP,KAAKq0D,sBAAsBn+C,KACrF,EAhBEu9C,GAAW9nD,EAAAA,EAAAA,IAAA,CADhBG,EAAAA,IAAQ,uCACH2nD,EAqQL,CArQD,CAA0Bn0D,EAAAA,UAwQ9B,2KCrQA,SAASigB,EAA0Chd,GAC/C,MAAO,CACHid,yBAA0Bjd,EAAUid,yBAEpCC,wBAAyBld,EAAUkd,wBACnCC,4BAA6Bnd,EAAUmd,4BAEvCC,gCAAiCpd,EAAUod,gCAC3CC,iCAAkCrd,EAAUqd,iCAC5CC,sCAAuCtd,EAAUsd,sCAEjDC,oBAAqBvd,EAAUud,oBAC/BC,wBAAyBxd,EAAUwd,wBACnCC,cAAezd,EAAUyd,cAEjC,CAOA,SAASC,EAAyC1d,GAC9C,MAAO,CACH2d,yBAA0B3d,EAAU4d,0BACpCC,wBAAyB7d,EAAU8d,mBACnCC,2BAA4B/d,EAAU+d,2BACtCC,yBAA0Bhe,EAAUie,+BAEpCC,yBAA0Ble,EAAUke,yBAEpCC,yBAA0Bne,EAAUoe,8BACpCC,+BAAgCre,EAAUse,yCAElD,CAOA,SAASC,EAAgDve,GACrD,MAAO,CACHwe,4BAA6Bxe,EAAUwe,4BACvCC,2BAA4Bze,EAAUye,2BACtCC,0CAA2C1e,EAAU0e,0CACrDC,6CAA8C3e,EAAU2e,6CACxDC,0CAA2C5e,EAAU4e,0CACrDC,cAAe7e,EAAU8e,UACzBC,kBAAmB/e,EAAU+e,kBAC7BC,iBAAkBhf,EAAUgf,iBAEpC,CAOA,SAASC,EACLjf,GAEA,MAAO,CACHkf,yBAA0Blf,EAAUkf,yBACpCC,8BAA+Bnf,EAAUmf,8BACzCC,yBAA0Bpf,EAAUof,yBACpCC,+BAAgCrf,EAAUqf,+BAElD,CASA,MAAMC,EAA6BA,CAACC,EAA6Bvf,EAAmC6U,IAChG/W,IAEAyhB,EAAUC,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlB5hB,EAAOmP,QAAiC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC9H,EC3EC,IAAKC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,cACH,CAFD,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBR,GAAiCS,IAClDT,EAAUU,gBACHV,EAAUU,eAAeD,GAiIlCE,EAA2BA,CAC7BjjB,EACAsI,EACAga,KAEA,MAAM1K,EAAU5X,EAAMsC,KAAKsV,QAAQ/W,OACnC,IAAKb,EAAMkjB,qBAAuBtL,EAC9B,OAAO,KAGX,MAAMuL,EDhEoCC,EAC1CpjB,EACAsI,EACAga,EACA1K,KAEA,MAAM,GAEFlB,EAAE,SACF2M,EAAQ,QACRxe,EACAvC,MACIghB,gBAAkBziB,OAAQyiB,GAC1BC,qBAAuB1iB,OAAQ0iB,IAClC,UACDxgB,EAAS,OACToB,GACAnE,GAEE,SAAEmW,GAAa7N,EAGfm8B,EAAmCzkC,EAAMwgD,0CAA2C,EAC1F,OACIl9B,GACIxjB,EAAAA,cAAC0jB,EAAAA,4BAA2B5W,OAAAC,OAAA,CACxBzD,UAAU,gCACVqa,6BAA8B1gB,EAAU0gB,6BACxCC,gCAAiC3gB,EAAU2gB,gCAC3CC,kCAAmC5D,EAA0Chd,GAC7E6gB,mCAAoCnD,EAAyC1d,GAC7E8gB,wCAAyCvC,EAAgDve,GACzF+gB,uDAAwD9B,EACpDjf,GAEJT,KAAM,CAAEsV,UAASzB,WAAUmN,iBAAgBC,uBAC3C1e,QAASA,EACT6R,GAAIA,EACJ2M,SAAUA,EACVU,QAAS1B,EAA2BC,EAAWvf,EAAW6U,GAC1DoM,8BAA+B1b,EAAM2b,sBACrCC,mBAAmB,EACnBC,gBArBa,EAsBb9F,cAAela,QAAmCrC,IAAzBqC,EAAOka,cAA8Bla,EAAOka,mBAAgBvc,EACrFkjC,oCAAqCP,GAChCA,GAAoC,CAAEC,UAAW1kC,EAAMygD,mBAEnE,ECiBuBr9B,CAA+BpjB,EAAOsI,EAAOga,EAAW1K,GAEpF,OACI9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMkjB,mBAAmBkB,gBAC9BpkB,EAAMkjB,mBAAmBmB,WACzBlB,EACE,EAWTmB,EAAwBA,CAAChC,EAA6Bvf,EAAmC6U,IAC3F/W,IAEAyhB,EAAUC,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlB5hB,EAAOmP,QAAgC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC7H,EAkDA2B,EAAsBA,CACxBvkB,EACAsI,EACAga,KAEA,MAAM1K,EAAU5X,EAAMsC,KAAKsV,QAAQ/W,OACnC,IAAKb,EAAMwkB,gBAAkB5M,EACzB,OAAO,KAGX,IAAK5X,EAAMmE,OAAOqyD,eACd,OAAO,KAGX,MAAM/xC,EArDwBC,EAC9B1kB,EACAsI,EACAga,EACA1K,KAEA,MAAM,QAAE/S,EAAO,UAAE9B,GAAc/C,EACzB2kB,EAAY3kB,EAAMsC,KAAKqiB,UAAU9jB,OAEvC,OACIf,EAAAA,cAAC8kB,EAAAA,uBAAsB,CACnBxb,UAAU,gCACVyb,wBAAyB9hB,EAAU8hB,wBACnCC,6BAA8B/hB,EAAU+hB,6BACxCC,qBAAsBhiB,EAAUgiB,qBAChCC,2BAA4BjiB,EAAUiiB,2BACtCC,uBAAwBliB,EAAUkiB,uBAClCC,4BAA6BniB,EAAUmiB,4BACvCC,eAAgBpiB,EAAUoiB,eAC1B7iB,KAAM,CAAEsV,UAAS+M,aACjB9f,QAASA,EACTugB,SAAS,SACT1O,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChBU,QAASO,EAAsBhC,EAAWvf,EAAW6U,GACrDyN,mBAAoB/c,EAAMgd,gBAC1BnB,gBAlBwB,EAmBxBD,mBAAmB,GACrB,EAyBiBQ,CAA0B1kB,EAAOsI,EAAOga,EAAW1K,GAC1E,OACI9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMwkB,cAAcJ,gBACzBpkB,EAAMwkB,cAAcH,WACpBI,EACE,EASTc,EAAyBC,IAE3B,MAAM,eAAEpB,EAAc,OAAEqB,EAAM,MAAE1W,GAAUyW,EAE1C,OACI1lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLqB,EACA1W,EACE,EAsBT2W,EAA2BC,IAC7B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACI7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GAAsBxhB,GAC/ByhB,EACAJ,EACE,EAmPf,EA/NoFzlB,IAAQ,IAAA8lB,EAAAC,EAAAoD,EAExF,MAAM,YACFlD,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlD,EAAkB,cAClBsB,EAAa,wBACbuoB,EAAuB,UACvB1mB,EAAS,YACTrZ,EAAW,YACXsZ,EAAW,SACXnQ,EAAQ,MACRoQ,EAAK,MACL3Y,EAAK,OACL4Y,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IACtBwmB,EAAG,IAEHvmB,EAAG,0BACHs5B,EAAyB,cACzBr5B,EAAa,UACbxE,EAAS,MACTha,EAAK,UACLvF,EAAS,uBACTkkB,EAAsB,iBACtBxjB,EACA+jB,KAAOrjB,OAAQsjB,GAAW,SAC1Bi5B,GACA1gD,EACJ,IAAI0nB,EAAkB1nB,EAAM+C,UAAU2kB,QACtCA,GAAoC,QAA7B5B,EAAI9lB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAilB,OAAA,EAAzBA,EAA2B5G,OACtC,MAAMyI,EAAwF,QAAtE5B,EAA2B/lB,EAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAklB,OAAA,EAA3CA,EAA6C6B,eAC1FC,EAAmBF,SAAAA,EAAoBG,QAAUH,EAAmBG,QAAU,GAC9EC,EAAqBJ,SAAAA,EAAoBK,UAAYL,EAAmBK,UAAY,IAEnFC,EAAcC,GAAmBpoB,EAAAA,SAAuB,KACxDqoB,EAAeC,GAAoBtoB,EAAAA,UAAwB,GAsB5DopB,EAAeppB,EAAAA,aAAkBS,UAAW,IAAAkoB,EAC9C,MAAM1Z,EAAQ,IAAIqa,EAAAA,qCACW,QADyBX,EAClDzoB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAA4nB,OAAA,EAAzBA,EAA2BpZ,SAC3BwT,EAAgBwG,KAChBxG,EAAgBwG,KAChBxG,EAAgBwG,KAChBxG,EAAgBwG,MAChB,SAoBEC,EAAAA,EAAAA,iCAAgCva,EAAO/O,EAAM6E,QAAQkF,eACtDyS,OAAOnS,IACJrK,EAAMuJ,UAAUc,MAAMA,EAAMwD,QAAQ,IAEvCjH,MAAKF,IACF,GAAIA,GAAYsP,EAAAA,gBAAgBC,YAAYvP,GAAW,CAAC,IAAD6iB,EACnD,MAAMC,EAAoBtkB,IAA+B,IAAAukB,EAAA,OAC5B,QAAzBA,EAAAvkB,EAAMwkB,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB/B,CAAgB,EAC5EgC,EAAkCnjB,EAASiD,OAAO6f,GAClDM,EAA6B9T,EAAAA,gBAAgBC,YAAY4T,GACzDA,EAAgChH,EAAgBwG,WAChDvnB,EACAioB,EAtDUC,KAC5B,GAAIA,GAAyBhU,EAAAA,gBAAgBC,YAAY+T,EAAsBC,6BAC3E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,CAAC,IAADE,EACzF,IAC6C,QAAzCA,EAAAH,EAAsBN,2BAAmB,IAAAS,GAAiB,QAAjBA,EAAzCA,EAA2CR,uBAAe,IAAAQ,OAAA,EAA1DA,EAA4DC,uBAC5DF,EAA4BG,iBAE5B,OAAOH,EAA4BI,eAAe,CAK9C,EA0CyCC,CAAuBT,GAE9DU,GA1BQC,EAyBqBX,SAA+C,QAArBP,EAA1BO,EAA4BJ,2BAAmB,IAAAH,OAAA,EAA/CA,EAAiDmB,oBAxBvFjD,EAAUkD,oBAIX3U,EAAAA,gBAAgBC,YAAYwU,IACrBA,EAAmB5H,EAAgBwG,MAAMuB,kBAAqB/H,EAAgBwG,MAoB/CrpB,EAAM+C,UAAU8nB,YAAc7qB,EAAM+C,UAAU+nB,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGppB,EAAAA,EAAAA,QACtC5B,EAAM+C,UAAUkoB,iCAChBlD,MACCgD,IACL7C,EAAgB8C,EAAgC,CAhClCP,KAgCkC,IAI5DrC,GAAiB,EAAM,GACxB,CAC0B,QAD1Be,EACCnpB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAsoB,OAAA,EAAzBA,EAA2B9Z,SAC3BoY,EAAUkD,iBACV9C,EACAE,EACA/nB,EAAM6E,QAAQkF,cACd/J,EAAM+C,UAAUkoB,iCAChBjrB,EAAM+C,UAAU8nB,YAChB7qB,EAAM+C,UAAU+nB,eAChB9qB,EAAMuJ,YAGVzJ,EAAAA,WAAgB,KACRE,EAAMmE,OAAO+mB,0BACbhC,IAAe1M,OAAOnS,IAClBrK,EAAMuJ,UAAUc,MAAMA,EAAMwD,QAAQ,GACrC,GAER,CAACqb,EAAcf,EAAenoB,EAAMuJ,UAAWvJ,EAAMmE,OAAO+mB,4BAE/D3oB,EAAAA,EAAAA,KACI,SAAA4oB,EAAA,OAAiD,QAAjDA,EAAMnrB,EAAMsC,KAAKsD,0BAA0B/E,cAAM,IAAAsqB,OAAA,EAA3CA,EAA6CC,uBAAuB,IAC1E,KACIhD,GAAiB,EAAK,IAoB9B,OACItoB,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKoZ,GACRnmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GAA6BlmB,EAAMqrB,cAC7CvrB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACLu6B,GAAYA,EAAS,GAAGv3C,KACxByE,EACD9N,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,+BACZtJ,EAAAA,cAAA,OAAKsJ,UAAU,wCAAwCse,GACtDlB,GAEL1mB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,6BACZtJ,EAAAA,cAAA,OAAKsJ,UAAU,kCAAkCpJ,EAAM+C,UAAUuoB,WAChE/E,GAEJF,GAzLQA,KACrB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OAAOvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GAAiBqH,EAAU3e,IAAI4Y,GAAgC,EAsLtDgG,CAAgBrF,GAC7BM,GAlZSA,KACtB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACI7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GAAsBxhB,GAC/B2K,EACE,EA2YgB4c,CAAiBhF,GAChC7mB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACZtJ,EAAAA,cAAA,OAAKsJ,UAAU,yCACV+M,GA3cFyV,EACnBC,EACAvJ,EACAtiB,EACAsI,EACAwjB,EACA7E,EAGAmmB,EACAvmB,EACAs5B,EACA18C,EACAqjB,KAGA,MAAM,eAAE1C,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,GAAWoG,GAE3D,UAAE9oB,GAAc/C,GAEhB,SAAEmW,GAAa7N,EAErB,OACIxI,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GACLxhB,EACAqhB,GAGL3lB,EAAAA,cAACisB,EAAAA,oBAAmB,CAChBrV,GAAG,oCACH02B,IAAKA,EACLvmB,IAAKA,EACLs5B,0BAA2BA,EAC3Bn0B,aAAc7V,EACd8V,SAAUnJ,EAAgBR,GAC1B4J,uBAAwBnpB,EAAUmpB,uBAClCC,yBAA0BppB,EAAUopB,yBACpCC,yBAA0BrpB,EAAUqpB,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpC7oB,iBAAkBA,IAErBqjB,EACAG,EACE,EA+Za2E,CACIzV,EACAmM,EACAtiB,EACAsI,EACAvF,EACAkkB,EACAmmB,EACAvmB,EACAs5B,EACA18C,EACAqjB,GAEP9mB,EAAMusB,mBAGdvsB,EAAMmE,OAAO+mB,0BAA4BrD,GA/CX2E,MAA8B,IAAAxG,EAAAyG,EAErE,GAD6BzW,EAAAA,gBAAgBC,YAAqC,QAA1B+P,EAAChmB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAAmlB,OAAA,EAAzBA,EAA2B2G,kBACT7qB,KAAtB,QAAzB2qB,EAAAzsB,EAAMsC,KAAKsV,QAAQ/W,cAAM,IAAA4rB,OAAA,EAAzBA,EAA2BG,iBACnD,OAOJ,OAAO9sB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GALuB,CAC/BzD,UAAW,0CACX7E,IAAK,SAGyB0jB,EAAoB,EAqCgBuE,GAC7D/F,EAvZQL,KAErB,MAAM,eAAEhC,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAE/C,OACItmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAgZEF,CAAgBzG,GAChBE,GAxYUA,KAEvB,MAAM,eAAElC,EAAc,cAAEiK,EAAa,QAAEjqB,EAAO,YAAE4I,EAAW,OAAEyY,EAAM,OAAEsH,EAAM,MAAEuB,EAAK,wBAAEC,GAA4BjI,EAEhH,OACIxmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLiK,EACAjqB,EACAmqB,EACAvhB,EACAyY,EACAsH,EACAuB,EACE,EA2XiBE,CAAkBlI,GACjC9B,GAAiBD,EAAoBvkB,EAAOsI,EAAOga,GACnDyqB,EACA7pB,GAAsBD,EAAyBjjB,EAAOsI,EAAOga,GAC7DgE,SAAAA,EAAaiI,wBACVzuB,EAAAA,cAAA,OAAKsJ,UAAU,8BAA8Bkd,EAAYiI,yBACzD,KArPQE,KACxB,GAAKA,GAAsC,IAAvBA,EAAYxd,OAIhC,OAAOnR,EAAAA,cAAAA,EAAAA,SAAA,KAAG2uB,EAAY,GAAM,EAiPfC,CAAmB1uB,EAAM2uB,OAAS3uB,EAAM2uB,MAAMF,aAC/C3uB,EAAAA,cAAA,OAAKsJ,UAAU,gCAAgCpJ,EAAM+C,UAAU6rB,UAC/D9uB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gCACXsd,GAAmBnB,EAAsBmB,GACzCE,GAA0BrB,EAAsBqB,IAErD9mB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,mCACZtJ,EAAAA,cAAA,OAAKsJ,UAAU,wCAAwCpJ,EAAM+C,UAAU8rB,iBACtE7hB,GAEJgJ,EAAAA,gBAAgBC,YAAYjW,EAAM2uB,MAAMG,sBACrChvB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCAAqCpJ,EAAM2uB,MAAMG,qBAAqB,IACtF,MAEH,2uBC3hBjB,MAmBMxK,EAAwBA,CAC1BhC,EACAvf,EACA6U,IACE/W,IACFyhB,SAAAA,EAAWC,iBAAiB,CACxBC,UAAW,WACXC,gBACsB,qBAAlB5hB,EAAOmP,QAAgC0S,EAAAA,EAAAA,IAAmB7hB,EAAO8hB,kBAAmB5f,EAAW6U,aAAO,EAAPA,EAASgL,YAAc,CAAC,GAC7H,EAiDA2B,EAAsBA,CACxBvkB,EACAsI,EACAga,KACoB,IAAA0M,EACpB,MAAMpX,EAA8B,QAAvBoX,EAAGhvB,EAAMivB,sBAAc,IAAAD,OAAA,EAApBA,EAAsBpX,QACtC,IAAK5X,EAAMwkB,gBAAkB5M,EACzB,OAAO,KAGX,MAAM6M,EAhDwBC,EAC9B1kB,EACAsI,EACAga,EACA1K,KAEA,MAAM,QAAE/S,EAAO,UAAE9B,GAAc/C,EACzB2kB,EAAY3kB,EAAMsC,KAAKqiB,UAAU9jB,OAEvC,OACIf,EAAAA,cAAC8kB,EAAAA,uBAAsB,CACnBxb,UAAU,gCACVyb,wBAAyB9hB,EAAU8hB,wBACnCC,6BAA8B/hB,EAAU+hB,6BACxCC,qBAAsBhiB,EAAUgiB,qBAChCC,2BAA4BjiB,EAAUiiB,2BACtCC,uBAAwBliB,EAAUkiB,uBAClCC,4BAA6BniB,EAAUmiB,4BACvCC,eAAgBpiB,EAAUoiB,eAC1B7iB,KAAM,CAAEsV,UAAS+M,aACjB9f,QAASA,EACT6R,GAAI1W,EAAM0W,GACV2M,SAAUrjB,EAAMqjB,SAChBU,QAASO,EAAsBhC,EAAWvf,EAAW6U,GACrDyN,mBAAoB/c,EAAMgd,gBAC1BnB,gBAjBwB,EAkBxBD,mBAAmB,GACrB,EAqBiBQ,CAA0B1kB,EAAOsI,EAAOga,EAAW1K,GAC1E,OACI9X,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK7M,EAAMwkB,cAAcJ,gBACzBpkB,EAAMwkB,cAAcH,WACpBI,EACE,EAqDTiB,EAA2BC,IAC7B,MAAM,eAAEvB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,OAAEqhB,EAAM,OAAEI,GAAWF,EAEzE,OACI7lB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GAAsBxhB,GAC/ByhB,EACAJ,EACE,EAoBTyJ,EAAqBlvB,IACvB,MAAM,MACFumB,EAAK,WACLI,EAAU,SACVxQ,EAAQ,eACRsQ,EAAc,uBACdQ,EAAsB,QACtBkI,EAAO,0BAEPhJ,EAAyB,2BACzBD,EAA0B,cAC1BkJ,EAAa,cACb5K,EAAa,UACb6B,EAAS,UACT/D,EAAS,MACTha,GACAtI,EACJ,OAAImvB,EACOrvB,EAAAA,cAAAA,EAAAA,SAAA,KAAGqvB,GAIVrvB,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKqZ,GACNpmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuiB,KAEdtvB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKsZ,GACNrmB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,gCACZtJ,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,qCACXpJ,EAAM+C,UAAUuoB,UAChB/E,GAEJ/B,GAAiBD,EAAoBvkB,EAAOsI,EAAOga,IAEvD+D,GA7CQA,KACrB,MAAM,eAAEjC,EAAc,UAAEqH,GAAcpF,EAEtC,OAAOvmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GAAiBqH,EAAU3e,IAAI4Y,GAAgC,EA0CtDgG,CAAgBrF,GAC7BM,GAhFSA,KAEtB,MAAM,eAAEvC,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,GAAU4X,EAEhE,OACI7mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GAAsBxhB,GAC/B2K,EACE,EAwEgB4c,CAAiBhF,GAC/BxQ,GA1GMyV,EACnBzV,EACA8Q,EACAjnB,KAGA,MAAM,eAAEokB,EAAc,oBAAEwB,EAAmB,QAAExhB,EAAO,MAAE2K,EAAK,OAAE0W,GAAWtP,GAClE,cAAE2Q,GAAkB9mB,EAE1B,OACIF,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACNtkB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+Y,GAAsBxhB,GAC/B2K,EACA+X,EACAG,EACAxB,EACE,EA0FcmG,CAAezV,EAAU8Q,EAAwBjnB,GAC7DymB,GAEN,EASL4I,EAAwBrvB,IAAuE,IAAAsvB,EAAAC,EAEjG,MAAM,eACFC,EAAc,qBACdC,EAAoB,qBACpBC,EAAoB,mBACpBC,EAAkB,mBAClBC,EAAkB,UAClBxJ,EAAS,mBACTyJ,EAAkB,iBAClBC,GACA9vB,EAEJ,OACIF,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAK2iB,GACR1vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK4iB,GACLE,EACD7vB,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,0BACXpJ,EAAM4N,MACL5N,EAAMmvB,SAAYY,EAAAA,iBAAiBC,cAAsC,QAAzBV,EAACtvB,EAAMsI,MAAM2nB,oBAAY,IAAAX,OAAA,EAAxBA,EAA0BpQ,QAMzE,GALApf,EAAAA,cAAC6M,EAAAA,KAAI,CAACvD,UAAU,2BACXpJ,EAAM+C,UAAU2kB,QACQ,QADD6H,EACvBvvB,EAAMsI,MAAM2nB,oBAAY,IAAAV,OAAA,EAAxBA,EAA0BrQ,QAKlClf,EAAMwmB,SAGf1mB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK+iB,GAAqBV,EAAkBlvB,IACjDF,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAK6iB,GACN5vB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKgjB,GACLzJ,GAAa0J,EACb1J,GA/PIA,KAErB,MAAM,eAAEhC,EAAc,WAAEC,EAAU,OAAE0I,GAAW3G,EAE/C,OACItmB,EAAAA,cAAC6M,EAAAA,KAAIC,OAAAC,OAAA,GAAKuX,GACLC,EACA0I,EACE,EAuPmBF,CAAgBzG,KAGjC,EASJ8J,EACTlwB,IAEA,MAAM,UAAEmwB,EAAS,gBAAEC,EAAe,YAAEC,GAAgBrwB,EAC9CswB,EAAqB1nB,EAAAA,EAAA,GAAsBunB,GAAS,IAAEviB,MAAO5N,EAAM+C,UAAUwtB,sBACnF,OACIzwB,EAAAA,cAACyP,EAAAA,OAAM3C,OAAAC,OAAA,GAAKyjB,GACPF,EACAC,GAAehB,EAAqBrvB,GAChC,EAIjB","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/b2b-account-management-address/b2b-account-management-address.tsx?e47d","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-account-management-address/b2b-account-management-address.view.tsx?187b","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-checkout-billing-address/b2b-checkout-billing-address.tsx?57b6","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-checkout-billing-address/b2b-checkout-billing-address.view.tsx?c8d4","webpack://Msdyn365.Commerce.Online/./src/modules/eve-checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?bf60","webpack://Msdyn365.Commerce.Online/./src/modules/eve-checkout-shipping-address/eve-checkout-shipping-address.tsx?fa80","webpack://Msdyn365.Commerce.Online/./src/modules/eve-checkout-shipping-address/eve-checkout-shipping-address.view.tsx?21bf","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/buybox-add-to-order-template.tsx?c57b","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/buybox.view.tsx?6f3d","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/quickview.view.tsx?efa8","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/models/SupersessionKey.ts?818f","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/buybox-add-to-order-template.tsx?7592","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/buybox.view.tsx?abca","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/quickview.view.tsx?5429","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","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/common/components/address-error-alert.tsx?bcde","webpack://Msdyn365.Commerce.Online/./src/common/components/address-select.tsx?c1df","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple-heading.tsx?5d65","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple-lines.tsx?ce68","webpack://Msdyn365.Commerce.Online/./src/common/components/address-ship-multiple.tsx?136d","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/bulk-purchase/bulk-purchase.tsx?9fd5","webpack://Msdyn365.Commerce.Online/./src/common/buybox-components.tsx?42b4","webpack://Msdyn365.Commerce.Online/./src/common/buybox-product-configure.tsx?139c","webpack://Msdyn365.Commerce.Online/./src/common/buyboxInterface.ts?9d60","webpack://Msdyn365.Commerce.Online/./src/common/dropdown/dropdown.tsx?f1d3","webpack://Msdyn365.Commerce.Online/./src/common/dropdown/dropdown.props.ts?7676","webpack://Msdyn365.Commerce.Online/./src/common/utilities/error-utilities.ts?bb69","webpack://Msdyn365.Commerce.Online/./src/modules/buybox/components/buybox-find-in-store.tsx?3ef8","webpack://Msdyn365.Commerce.Online/./src/modules/buybox/buybox.tsx?e22d","webpack://Msdyn365.Commerce.Online/./src/modules/buybox/buybox.view.tsx?376b","webpack://Msdyn365.Commerce.Online/./src/modules/quickview/utilities/helper.ts?f31d","webpack://Msdyn365.Commerce.Online/./src/modules/quickview/utilities/get-valid-product-images.ts?78b7","webpack://Msdyn365.Commerce.Online/./src/modules/quickview/quickview.tsx?4080","webpack://Msdyn365.Commerce.Online/./src/modules/quickview/utilities/get-product-details.ts?5cc2","webpack://Msdyn365.Commerce.Online/./src/modules/quickview/quickview.view.tsx?ee5b","webpack://Msdyn365.Commerce.Online/./src/modules/recently-viewed/base/recently-viewed-product-item.ts?4982","webpack://Msdyn365.Commerce.Online/./src/modules/recently-viewed/base/recently-viewed-item.ts?54c9","webpack://Msdyn365.Commerce.Online/./src/modules/recently-viewed/recently-viewed-state.ts?c73b","webpack://Msdyn365.Commerce.Online/./src/modules/recently-viewed/recently-viewed-manager.ts?a2a8","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","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/modules/adventureworks/views/components/buybox-add-to-order-template.tsx?ceb4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/buybox.view.tsx?98cf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/quickview.view.tsx?8e29"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AutoSuggest } from '@msdyn365-commerce-modules/address';\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemType } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressList, IAddressListProps } from '@msdyn365-commerce-modules/address';\r\nimport { IB2bAccountManagementAddressData } from './b2b-account-management-address.data';\r\nimport { IB2bAccountManagementAddressProps } from './b2b-account-management-address.props.autogenerated';\r\n\r\n/**\r\n * Account management address view state interface.\r\n */\r\nexport interface IAccountManagementAddressViewState {\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\n/**\r\n * Account management address view state interface.\r\n */\r\nexport interface IAccountManagementAddressViewProps\r\n extends React.Component> {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: IAccountManagementAddressViewState;\r\n AccountAddressManagement: IModuleProps;\r\n isUpdating: boolean;\r\n showAddressList: IAddressListProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n screenReaderNotification: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountManagementAddress extends React.Component> {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private customerAddresses: Address[];\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n @observable private isUpdating?: boolean;\r\n\r\n @observable private hasError?: boolean;\r\n\r\n @observable private removeAddressData?: Address;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n public constructor(props: IB2bAccountManagementAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.addUpdateAddress = {};\r\n this.validationError = {};\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n // Filter out the Invoice address for the add/update form\r\n this.addressPurposes.filter((address: AddressPurpose) => address.AddressType !== 1)\r\n );\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n /**\r\n * On Suggestion Selected Function.\r\n * @param result - Microsoft.Maps.ISuggestionResult.\r\n */\r\n @action\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n set(this.addUpdateAddress, { Street: '' });\r\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n set(this.addUpdateAddress, { City: address.City });\r\n set(this.addUpdateAddress, { State: address.State });\r\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, 0);\r\n };\r\n\r\n /**\r\n * Clear Address Fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Clear Validation Function.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n void this.props.data.countryRegions.then(() => {\r\n this._setDefaultCountryRegionId();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n },\r\n async () => {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Component did mount function.\r\n */\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n /**\r\n * Should component update function.\r\n * @param nextProps - Account management address props.\r\n * @param nextState - Next state.\r\n * @returns - True if component should update, false otherwise.\r\n */\r\n public shouldComponentUpdate(\r\n nextProps: IB2bAccountManagementAddressProps,\r\n nextState: IAccountManagementAddressViewState\r\n ): 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 {\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddresList: this.currentOperation === AddressOperation.List,\r\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\r\n },\r\n AccountAddressManagement: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-management-address', config.className)\r\n },\r\n showAddressList: this._renderListAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The account management props.\r\n */\r\n private readonly _dataInitialize = (props: IB2bAccountManagementAddressProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.customerAddresses = data.address.result ?? [];\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Render Add Or Update Address Function.\r\n * @returns - AddressAddUpdate.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n telemetryContent: this.telemetryContent,\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n onSave: this._onAddressAddUpdateSubmit,\r\n onCancel: this._resetView\r\n });\r\n };\r\n\r\n /**\r\n * Render List Address Function.\r\n * @returns - AddressList.\r\n */\r\n private readonly _renderListAddress = (): IAddressListProps => {\r\n const { config } = this.props;\r\n\r\n /**\r\n * Render Address ttitle.\r\n * @param event - Msdyn365.ContentEditableEvent.\r\n */\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n config.heading!.text = event.target.value;\r\n };\r\n const heading = config.heading && {\r\n text: config.heading.text,\r\n headingTag: config.heading.tag\r\n };\r\n\r\n return AddressList({\r\n isUpdating: this.isUpdating,\r\n selectedAddress: this.selectedAddress,\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n addressPurposes: this.addressPurposes,\r\n resources: this.resources,\r\n heading,\r\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\r\n otherAddressSectionHeading: config.otherAddressSectionHeading,\r\n contextRequest: this.props.context.request,\r\n telemetryContent: this.telemetryContent,\r\n handleLineItemHeadingChange,\r\n onEditAddress: this._goToEditAddress,\r\n onRemoveAddress: this._onRemoveAddress,\r\n onAddAddress: this._goToAddAddress,\r\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress\r\n });\r\n };\r\n\r\n /**\r\n * Attach Map Auto Suggest Function.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Add Update Function.\r\n * @param name - String.\r\n * @param value - String | Boolean | Number.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * On Address Add Update Input Change.\r\n * @param event - Input Change Event.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Add Update Dropdown Change.\r\n * @param event - Dropdown Change Event.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n this.onAddressAddUpdate(event.target.name, +event.target.value);\r\n } else {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n }\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Update Function.\r\n * @param response - Promise.\r\n * @param onSuccess - IAddressResponse.\r\n */\r\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\r\n this.isUpdating = true;\r\n response.then(\r\n (result: IAddressResponse) => {\r\n if (result.address) {\r\n this.hasError = false;\r\n onSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n }\r\n this.isUpdating = false;\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * On Address Add Update Submit Function.\r\n */\r\n private readonly _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n /**\r\n * On Country Change Function.\r\n * @param countryRegionId - String.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Get Address Format Exclude List Function.\r\n * @returns - Address Format Exclude List.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Get State Provinces Function.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n void this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n /**\r\n * Update CurrentOperation Function.\r\n * @param operation - AddressOperation.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\r\n this.currentOperation = operation;\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * On Submit Update Primary Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\r\n this.selectedAddress = address;\r\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\r\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\r\n };\r\n\r\n /**\r\n * Go To Edit Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _goToEditAddress = (address: Address): void => {\r\n this.addUpdateAddress = { ...address };\r\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\r\n this._updateCurrentOperation(AddressOperation.Update);\r\n };\r\n\r\n /**\r\n * On Remove Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _onRemoveAddress = (address: Address): void => {\r\n address.Deactivate = true;\r\n this.removeAddressData = address;\r\n const response = this.addressCommon.updateCustomerAddress(address);\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n /**\r\n * Renders Notification screen reader text for removed address.\r\n * @param address - Address input.\r\n * @returns Notification for removed address.\r\n */\r\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\r\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\r\n return (\r\n
\r\n {notification}\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Go To Add Address Function.\r\n */\r\n private readonly _goToAddAddress = (): void => {\r\n this.addUpdateAddress = {};\r\n this._setDefaultCountryRegionId();\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n /**\r\n * On Add Or Update Success Function.\r\n * @param response - IAddressResponse.\r\n */\r\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n this._resetView();\r\n };\r\n\r\n /**\r\n * On Update Primary Address Success Function.\r\n * @param response - IAddressResponse.\r\n */\r\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n };\r\n\r\n /**\r\n * Reset view function.\r\n */\r\n private readonly _resetView = (): void => {\r\n this.selectedAddress = undefined;\r\n this._updateCurrentOperation(AddressOperation.List);\r\n };\r\n}\r\n\r\nexport default AccountManagementAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/./account-management-address';\r\n// import { AddressDetailItemComponent } from '@msdyn365-commerce-modules/address/src/common/components/address-detail-item';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address List Component.\r\n * @param param0 - Root param.\r\n * @param param0.List - Address list.\r\n * @param param0.isShowList - Boolean.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressListItem[].\r\n * @returns - AddressListComponent Node.\r\n */\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n\r\n // const component = showItems.items.find(address => address.key === \"AddressTypeValue\")?.description;\r\n\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Lists Component.\r\n * @param param0 - Root param.\r\n * @param param0.ListAddress - List address.\r\n * @param param0.heading - List heading.\r\n * @param param0.isShowEmptyListMessage - Boolean.\r\n * @param param0.emptyListMessage - Empty list message.\r\n * @param param0.addButton - Add button.\r\n * @param param0.primaryAddressList - Primary address.\r\n * @param param0.otherAddressList - Other address.\r\n * @returns Address Lists Component Node.\r\n */\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * AddressAddUpdateComponent.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Account Management Address View Component.\r\n * @param props - Props.\r\n * @returns - AccountAddressManagement Module.\r\n */\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress, screenReaderNotification } = props;\r\n\r\n // Remove buttons from Invoice address\r\n const invoiceAddressId = 1;\r\n const addressId = props.customerAddresses.slice().find(address => address.AddressTypeValue === invoiceAddressId)?.RecordId;\r\n const invoiceAddress = showAddressList.otherAddressList.items.find(address => address.key === addressId);\r\n if (invoiceAddress) {\r\n invoiceAddress.editButton = undefined;\r\n invoiceAddress.primaryButton = undefined;\r\n invoiceAddress.removeButton = undefined;\r\n }\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n {screenReaderNotification}\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n AddressBillingHeading,\r\n AddressCommon,\r\n AddressFormat,\r\n AddressItemType,\r\n AddressMetaData,\r\n AddressOperation,\r\n AddressShow,\r\n IAddressAddUpdateProps,\r\n IAddressResponse,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address';\r\nimport { IB2bCheckoutBillingAddressData } from './b2b-checkout-billing-address.data';\r\nimport { IB2bCheckoutBillingAddressProps } from './b2b-checkout-billing-address.props.autogenerated';\r\n\r\n/**\r\n * Props interface.\r\n */\r\nexport interface IProps extends IB2bCheckoutBillingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutState {\r\n errorMessage: string | undefined;\r\n}\r\n\r\n/**\r\n * Checkout billing address view state interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewState {\r\n isShowAddress: boolean;\r\n isError: boolean;\r\n}\r\n\r\n/**\r\n * Checkout billing address view props interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewProps extends IProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutBillingAddressViewState;\r\n CheckoutBillingAddress: IModuleProps;\r\n sameAsShippingCheckbox: React.ReactNode;\r\n heading: React.ReactNode;\r\n showAddress: IAddressShowProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n error: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutBillingAddress component.\r\n * @extends {React.PureComponent>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutBillingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private isBillingAddressSameAsShipping: boolean;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private readonly addressActionResponse?: IAddressResponse;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private addresses: Address[];\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n public constructor(props: IProps) {\r\n super(props);\r\n this.state = { errorMessage: undefined };\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.validationError = {};\r\n this.isBillingAddressSameAsShipping = false;\r\n this.currentOperation = AddressOperation.List;\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.addresses = data.address.result || [];\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n // Initializing data props\r\n\r\n this._dataInitialize(this.props);\r\n\r\n void this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\r\n shippingAddress => {\r\n if (this.props.moduleState.isUpdating) {\r\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\r\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\r\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\r\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\r\n }\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.isBillingAddressRequried,\r\n isBillingAddressRequried => {\r\n if (!isBillingAddressRequried) {\r\n this.props.data.checkout.result?.removeBillingAddress({});\r\n this.props.moduleState.onDisable();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProps, nextState: ICheckoutState): 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 if (!this.isBillingAddressRequried) {\r\n return null;\r\n }\r\n\r\n const { resources } = this.props;\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.props.moduleState.hasError ? undefined : this.selectedAddress,\r\n addUpdateAddress: this.props.moduleState.hasError ? undefined : this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show && !this.props.moduleState.hasError,\r\n isError: this.props.moduleState.hasError\r\n },\r\n CheckoutBillingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-billing-address', config.className)\r\n },\r\n heading: ,\r\n showAddress: this._renderShowAddress(),\r\n error: this.renderErrorMessage()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: IProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.addresses = data.address.result ?? [];\r\n }\r\n );\r\n\r\n this._setBillingAddress();\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets address format for exclude list.\r\n * @returns - Address item type.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Gets state provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n void this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Initialize module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this.isBillingAddressRequried ? 'updating' : 'disabled'\r\n });\r\n\r\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\r\n\r\n if (this.isBillingAddressRequried) {\r\n if (billingAddress) {\r\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\r\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\r\n this._updateModuleState();\r\n } else if (this.isCartContainsItemsForShipping) {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Show, undefined);\r\n\r\n const {\r\n resources: { noBillingErrorMessage }\r\n } = this.props;\r\n\r\n this.setError(noBillingErrorMessage, true);\r\n } else {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Sets default country region Id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n @computed private get isCartContainsItemsForShipping(): boolean {\r\n const { request } = this.props.context;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\r\n\r\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\r\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\r\n ? false\r\n : retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n }\r\n\r\n @computed private get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\r\n }\r\n\r\n @computed private get getGiftCardTotalAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.giftCardExtends) {\r\n return 0;\r\n }\r\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\r\n return count + (giftCard.Balance || 0);\r\n }, 0);\r\n }\r\n\r\n @computed private get getCustomerAccountAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n const defaultAmount = 0;\r\n\r\n return checkoutState?.customerAccountAmount ?? defaultAmount;\r\n }\r\n\r\n @computed private get shouldPaidByCard(): boolean {\r\n const {\r\n data: { checkout },\r\n config\r\n } = this.props;\r\n if (!checkout.result) {\r\n return false;\r\n }\r\n\r\n const checkoutResult = checkout.result;\r\n const cart = checkoutResult.checkoutCart.cart;\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\r\n return false;\r\n }\r\n\r\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\r\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\r\n\r\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\r\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\r\n\r\n return amountDue > 0 && !isPaidByOtherPaymentSource;\r\n }\r\n\r\n @computed private get isBillingAddressRequried(): boolean {\r\n return this.shouldPaidByCard;\r\n }\r\n\r\n private readonly setError = (errorMessage: string | undefined, hasError: boolean): void => {\r\n this.props.moduleState.setHasError(hasError);\r\n this.setState({ errorMessage });\r\n };\r\n\r\n private renderErrorMessage = (): React.ReactNode => (\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n );\r\n\r\n /**\r\n * Sets billing address.\r\n * @param address - The address.\r\n */\r\n private readonly _setBillingAddress = (): void => {\r\n if (this.props.data.checkout.result) {\r\n const addressTypeId = 1;\r\n const addressCount = this.addresses.filter((address: Address) => address.AddressTypeValue === addressTypeId).length;\r\n\r\n // Only set billing address if there is one Invoice address\r\n if (addressCount === 1) {\r\n const address = this.addresses.find(address => address.AddressTypeValue === addressTypeId);\r\n this.selectedAddress = address ? address : this.selectedAddress;\r\n\r\n const newBillingAddress: Address = { ...address };\r\n\r\n if (address?.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\r\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(\r\n address?.ThreeLetterISORegionName\r\n );\r\n }\r\n\r\n void this.props.data.checkout.result.updateBillingAddress({\r\n newBillingAddress,\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\r\n }\r\n });\r\n\r\n this.setError(undefined, false);\r\n } else {\r\n // Remove the billing address and set appropriate error message\r\n this.selectedAddress = undefined;\r\n void this.props.data.checkout.result.removeBillingAddress({\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: false\r\n }\r\n });\r\n\r\n const {\r\n resources: { noBillingErrorMessage, multipleBillingErrorMessage }\r\n } = this.props;\r\n\r\n this.setError(addressCount === 0 ? noBillingErrorMessage : multipleBillingErrorMessage, true);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - Address operation\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\r\n }\r\n };\r\n\r\n /**\r\n * Updates the module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutBillingAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/checkout-billing-address/../../common/components/address-show';\r\nimport { ICheckoutBillingAddressViewProps } from './b2b-checkout-billing-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Billing Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutBillingAddress Module.\r\n */\r\nconst CheckoutBillingAddressView: React.FC = props => {\r\n const { CheckoutBillingAddress, viewState, showAddress, error } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isError && error}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutBillingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\r\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IEveCheckoutShippingAddressResources } from '../eve-checkout-shipping-address.props.autogenerated';\r\n\r\n/**\r\n * The cartline product interface.\r\n */\r\nexport interface ICartLineWithProduct {\r\n cartLine: CartLine;\r\n product?: SimpleProduct;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline interface.\r\n */\r\nexport interface ICheckoutShippingCartLineInfo {\r\n lineId: string;\r\n imageProps: IImageProps;\r\n quantity: number;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline props.\r\n */\r\nexport interface ICheckoutShippingCartLinesProps {\r\n moduleClassName: string;\r\n cartLines: ICheckoutShippingCartLineInfo[];\r\n title: string;\r\n itemTitle: string;\r\n resources: IEveCheckoutShippingAddressResources;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\r\nexport const CheckoutPickupCartLines: React.FC = ({\r\n moduleClassName,\r\n cartLines,\r\n title,\r\n itemTitle,\r\n resources\r\n}) => {\r\n const context = ({\r\n gridSettings: {\r\n xs: { w: 767 },\r\n sm: { w: 991 },\r\n md: { w: 1199 },\r\n lg: { w: 1599 },\r\n xl: { w: 1600 }\r\n }\r\n } as unknown) as IRequestContext;\r\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\r\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\r\n\r\n if (!ArrayExtensions.hasElements(cartLines)) {\r\n return null;\r\n }\r\n const quantity = 1;\r\n return (\r\n
\r\n
\r\n
{title}
\r\n
{itemTitle}
\r\n
\r\n
\r\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\r\n const isShowQty = cartLine.quantity > quantity;\r\n let className = `${moduleClassName}__group-images-lines-product`;\r\n const role = 'text';\r\n if (isShowQty) {\r\n className = classnames(className, ' product-image-wide');\r\n }\r\n return (\r\n
\r\n \r\n {isMobileView\r\n ? isShowQty && (\r\n \r\n {cartLine.quantity}\r\n
\r\n )\r\n : isShowQty && (\r\n
\r\n )}\r\n {!isMobileView && isShowQty && (\r\n \r\n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\r\n \r\n )}\r\n
\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * The checkout shipping cartline image settings.\r\n */\r\nexport const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\r\n },\r\n lazyload: true,\r\n quality: 80\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n Address,\r\n AddressPurpose,\r\n CartLine,\r\n CountryRegionInfo,\r\n SimpleProduct,\r\n StateProvinceInfo,\r\n TenderLine,\r\n TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getFallbackImageUrl, getSimpleProducts, ObjectExtensions, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AutoSuggest } from '@msdyn365-commerce-modules/address';\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemType } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressSelect, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressShow, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { IEveCheckoutShippingAddressData } from './eve-checkout-shipping-address.data';\r\nimport { IEveCheckoutShippingAddressProps } from './eve-checkout-shipping-address.props.autogenerated';\r\nimport {\r\n CheckoutPickupCartLines,\r\n defaultImageSettings,\r\n ICartLineWithProduct,\r\n ICheckoutShippingCartLineInfo,\r\n ICheckoutShippingCartLinesProps\r\n} from './components/checkout-shipping-cartlines-images';\r\n\r\n/**\r\n * The checkout address props interface.\r\n */\r\nexport interface ICheckoutAddressProps extends IEveCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\n/**\r\n * The checkout shipping address view state.\r\n */\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\n/**\r\n * The checkout shipping address state.\r\n */\r\nexport interface ICheckoutAddresState {\r\n shippingGroups: ICartLineWithProduct[];\r\n}\r\n\r\n/**\r\n * The checkout shipping address view props.\r\n */\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n cartLineImages?: React.ReactNode;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\r\n showAddressSelectHandler?(\r\n onAddAddressHandler?: () => void,\r\n onSaveHandler?: () => void,\r\n onCancelHandler?: () => void\r\n ): IAddressSelectProps;\r\n}\r\n\r\n/**\r\n * IExpressPaymentDetail interface.\r\n */\r\ninterface IExpressPaymentDetails {\r\n email?: string;\r\n tenderLine?: TenderLine;\r\n tokenizedPaymentCard?: TokenizedPaymentCard;\r\n paymentTenderType?: string;\r\n address?: Address;\r\n isExpressCheckoutAppliedInCartPage: boolean;\r\n isExpressAddressAppliedInCartPage?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private customerAddresses: Address[] = [];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n @observable private isUpdating?: boolean;\r\n\r\n @observable private hasError?: boolean;\r\n\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat!: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n public constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n this.state = { shippingGroups: [] };\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n /**\r\n * Initialize pickup group.\r\n */\r\n @action\r\n private readonly _initPickupGroup = async (): Promise => {\r\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\r\n const cartLines: ICartLineWithProduct[] = [];\r\n\r\n try {\r\n const products = await this._getProductsByCartLines(\r\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\r\n pickupCartLines\r\n );\r\n for (const line of pickupCartLines) {\r\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\r\n cartLines.push({ cartLine: line, product });\r\n }\r\n this.setState({ shippingGroups: cartLines });\r\n } catch (error) {\r\n this.props.telemetry.error(error as string);\r\n this.setState({ shippingGroups: [] });\r\n }\r\n };\r\n\r\n /**\r\n * On suggestion selected.\r\n * @param result - Suggestion result interface.\r\n */\r\n @action\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n const timeout = 0;\r\n set(this.addUpdateAddress, { Street: '' });\r\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n set(this.addUpdateAddress, { City: address.City });\r\n set(this.addUpdateAddress, { State: address.State });\r\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, timeout);\r\n };\r\n\r\n /**\r\n * Method to clear address fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n for (const formatAddress of addressFormatItem) {\r\n if (\r\n this.addUpdateAddress[formatAddress.name] !== undefined &&\r\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\r\n ) {\r\n this.addressFormat[formatAddress.name] = '';\r\n }\r\n }\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Method to clear validation.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const properties =\r\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\r\n ?.StringValue ?? '';\r\n\r\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions },\r\n resources\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\r\n () => {\r\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\r\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\r\n\r\n if (address?.TwoLetterISORegionName) {\r\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\r\n\r\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n }\r\n\r\n this._updateCurrentOperation(AddressOperation.Add, address);\r\n this._onAddressAddUpdateSubmit();\r\n }\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n await this._initPickupGroup();\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): 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 if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { config, context, renderView, resources } = this.props;\r\n const { headingImages, itemsText, singleItemText } = resources;\r\n const { imageSettings } = config;\r\n\r\n // Line images\r\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\r\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\r\n .map(line => ({\r\n lineId: line.cartLine.LineId ?? '',\r\n imageProps: {\r\n requestContext: context.actionContext.requestContext,\r\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\r\n altText: line.product?.Name,\r\n src: line.product?.PrimaryImageUrl ?? '',\r\n fallBackSrc: getFallbackImageUrl(line.product?.ItemId, context.actionContext.requestContext.apiSettings),\r\n gridSettings: context.request.gridSettings!,\r\n imageSettings: imageSettings ?? defaultImageSettings,\r\n loadFailureBehavior: 'empty'\r\n },\r\n quantity: line.cartLine.Quantity ?? 0\r\n }));\r\n\r\n const quantity = 1;\r\n const itemText = cartlines.length > quantity ? itemsText : singleItemText;\r\n\r\n const lineImageProps: ICheckoutShippingCartLinesProps = {\r\n moduleClassName: 'ms-checkout-shipping-address',\r\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\r\n itemTitle: `(${format(itemText, cartlines.length)})`,\r\n title: headingImages,\r\n resources: this.props.resources\r\n };\r\n\r\n const cartLineImages: React.ReactNode = ;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { featureState } = this.props.data;\r\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n\r\n /**\r\n * Show address select.\r\n * @param onAddAddressHandler - On add address click function.\r\n * @param onSaveHandler - On save click function.\r\n * @param onCancelHandler - On cancel click function.\r\n * @returns - Renders select address.\r\n */\r\n showAddressSelectHandler: (onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void) =>\r\n this._renderSelectAddress(onAddAddressHandler, onSaveHandler, onCancelHandler),\r\n\r\n /**\r\n * Show add/update address.\r\n * @param onSaveHandler - On save click function.\r\n * @param onCancelHandler - On cancel click function.\r\n * @returns - Renders select address.\r\n */\r\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\r\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\r\n showAddressSelect: this._renderSelectAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.customerAddresses = data.address.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.featureState.result,\r\n () => {\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get cart lines for delivery.\r\n * @returns The cart line collection.\r\n */\r\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\r\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param line -The cart line.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isDelivery = (line: CartLine): boolean => {\r\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param deliveryMode -The delivery mode.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\r\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\r\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\r\n pickupMode => pickupMode !== deliveryMode\r\n );\r\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\r\n }\r\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param channelId - The channelId.\r\n * @param cartLines - Cart line collections.\r\n * @returns Collection of SimpleProduct.\r\n */\r\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\r\n const actionContext = this.props.context.actionContext;\r\n const productInputs = cartLines\r\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\r\n .map(\r\n line =>\r\n new ProductInput(\r\n line.ProductId || 0,\r\n actionContext.requestContext.apiSettings,\r\n channelId,\r\n undefined,\r\n actionContext.requestContext\r\n )\r\n );\r\n return getSimpleProducts(productInputs, actionContext);\r\n };\r\n\r\n /**\r\n * Method to render add/update address.\r\n * @param onSaveHandler -- Handles onsave functionality.\r\n * @param onCancelHandler -- Handles oncancel functionality.\r\n * @returns Address app/update props.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n\r\n /**\r\n * On Cancel Button Function.\r\n */\r\n const onCancelButtonHandler = () => {\r\n this._resetView();\r\n onCancelHandler?.();\r\n };\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n\r\n /**\r\n * On Save Function.\r\n */\r\n onSave: () => {\r\n this.onSubmit();\r\n onSaveHandler?.();\r\n },\r\n\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\r\n });\r\n };\r\n\r\n /**\r\n * Method to render select address.\r\n * @param onAddAddressHandler - To handle add address button click.\r\n * @param onSaveHandler - To handle save button click.\r\n * @param onCancelHandler - To handle cancel button click.\r\n * @returns Select address props.\r\n */\r\n private readonly _renderSelectAddress = (\r\n onAddAddressHandler?: () => void,\r\n onSaveHandler?: () => void,\r\n onCancelHandler?: () => void\r\n ): IAddressSelectProps => {\r\n /**\r\n * On Cancel Button Function.\r\n */\r\n const onCancelButtonHandler = () => {\r\n this._resetView();\r\n onCancelHandler?.();\r\n };\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n\r\n /**\r\n * On Add Address Function.\r\n */\r\n onAddAddress: () => {\r\n this._goToAddAddress();\r\n onAddAddressHandler?.();\r\n },\r\n\r\n /**\r\n * On Save Function.\r\n */\r\n onSave: () => {\r\n this._onSelectAddress();\r\n onSaveHandler?.();\r\n },\r\n\r\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler\r\n });\r\n };\r\n\r\n /**\r\n * Method to render show address.\r\n * @returns Show address props.\r\n */\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n /**\r\n * Method gets called on address option change.\r\n * @param event - To get current option.\r\n */\r\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n * @param name - Address name field.\r\n * @param value - Address name value field.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * Method to get called on address update change.\r\n * @param event - Input element.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update dropdown change.\r\n * @param event - Select element.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update submit.\r\n */\r\n private readonly _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n let newAddress = (result.customerAddresses || []).find(\r\n add =>\r\n this.addUpdateAddress.Name === add.Name &&\r\n this.addUpdateAddress.Street === add.Street &&\r\n this.addUpdateAddress.State === add.State &&\r\n this.addUpdateAddress.City === add.City &&\r\n this.addUpdateAddress.ZipCode === add.ZipCode\r\n );\r\n if (!newAddress) {\r\n newAddress = result.address;\r\n newAddress = { ...newAddress, ...this.addUpdateAddress };\r\n }\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n if (result.customerAddresses) {\r\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: newAddress });\r\n } else {\r\n this._onAddOrUpdateSuccess({ address: newAddress });\r\n }\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get called on country change.\r\n * @param countryRegionId - Country region id.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Method to get all address format exclude list.\r\n * @returns Collection of address items.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Method to get all state/provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Method to set default country region id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n /**\r\n * Method to get default address region id.\r\n * @returns - Address object from existing addresses.\r\n */\r\n private readonly _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Method to get address from express payment details from cart page.\r\n * @returns - Address.\r\n */\r\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\r\n if (this.expressPaymentDetailsFromCartPage) {\r\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\r\n\r\n let addressFromCartExpress: Address | undefined;\r\n\r\n if (isExpressAddressAppliedInCartPage) {\r\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\r\n } else {\r\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\r\n }\r\n\r\n return addressFromCartExpress;\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Get address from tokenizedPaymentCard.\r\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\r\n * @returns The address.\r\n */\r\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\r\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\r\n\r\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n\r\n const address: Address = {\r\n TwoLetterISORegionName: twoLetterIsoRegionName,\r\n Name: tokenizedPaymentCard.NameOnCard,\r\n Street: tokenizedPaymentCard.Address1,\r\n StreetNumber: tokenizedPaymentCard.Address2,\r\n City: tokenizedPaymentCard.City,\r\n State: tokenizedPaymentCard.State,\r\n ZipCode: tokenizedPaymentCard.Zip,\r\n Phone: tokenizedPaymentCard.Phone,\r\n ThreeLetterISORegionName: threeLetterIsoRegionName,\r\n AddressTypeValue: this.defaultAddressType\r\n };\r\n\r\n return address;\r\n };\r\n\r\n /**\r\n * Get address from expressAddress.\r\n * @param expressAddress -- The expressAddress.\r\n * @returns The address.\r\n */\r\n private readonly getExpressAddress = (expressAddress: Address): Address => {\r\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\r\n\r\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n\r\n const address: Address = {\r\n ...expressAddress,\r\n ThreeLetterISORegionName: threeLetterIsoRegionName,\r\n AddressTypeValue: this.defaultAddressType\r\n };\r\n\r\n return address;\r\n };\r\n\r\n /**\r\n * Get three letter ISO region name from two letter ISO region name.\r\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\r\n * @returns The three letter ISO region name.\r\n */\r\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\r\n const countryRegion = this.countryRegions.find(country => {\r\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\r\n });\r\n\r\n return countryRegion?.CountryRegionId;\r\n };\r\n\r\n /**\r\n * Method to initialize all module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n const checkoutState = this.props.data.checkout.result;\r\n\r\n if (this._canShip()) {\r\n let defaultAddress;\r\n\r\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\r\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\r\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\r\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\r\n } else if (this._getDefaultAddress()) {\r\n defaultAddress = this._getDefaultAddress();\r\n } else {\r\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\r\n }\r\n\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on submit address.\r\n */\r\n private readonly onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on cancel.\r\n */\r\n private readonly onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on edit address.\r\n */\r\n private readonly onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Method to check if checkout cartlines are available fro shipping.\r\n * @returns - True/false as per the delivery mode.\r\n */\r\n private readonly _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-expect-error: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n /**\r\n * Method get called on select address.\r\n */\r\n private readonly _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Method get called on goto add address.\r\n */\r\n private readonly _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n /**\r\n * Method get called on add/update success.\r\n * @param response - Retail api response.\r\n */\r\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on set Shipping Address.\r\n * @param address - Retail Api address result.\r\n */\r\n private readonly _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\r\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\r\n this.props.telemetry.error(error);\r\n });\r\n }\r\n };\r\n\r\n @computed private get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result?.shippingAddress;\r\n }\r\n\r\n /**\r\n * Method get called on reset view.\r\n */\r\n private readonly _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - The address operation.\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n /**\r\n * Update module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n /**\r\n * Method to check if the customer already has the address.\r\n * @param address - The address.\r\n */\r\n private readonly _isNewAddress = (address: Address): boolean => {\r\n for (const existingAddress of this.customerAddresses) {\r\n if (\r\n (address.Name ?? '') === existingAddress.Name &&\r\n (address.Street ?? '') === existingAddress.Street &&\r\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\r\n (address.City ?? '') === existingAddress.City &&\r\n (address.State ?? '') === existingAddress.State &&\r\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\r\n (address.Phone ?? '') === existingAddress.Phone &&\r\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\r\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\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 { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './eve-checkout-shipping-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n AddToOrderTemplateComponent,\r\n IAddToOrderTemplateDialogResources,\r\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources,\r\n IOrderTemplateActionErrorResult,\r\n IOrderTemplateNameDialogResources } from '@msdyn365-commerce/components';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getConfigureErrors,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxData,\r\n IBuyboxState,\r\n IBuyboxViewProps } from '@msdyn365-commerce-modules/buybox';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxProps as IBuyboxExtentionProps } from '../../definition-extensions/buybox.ext.props.autogenerated';\r\n\r\n/**\r\n * To generate AddToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of AddToOrderTemplateDialog resources..\r\n */\r\nfunction generateAddToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IAddToOrderTemplateDialogResources {\r\n return {\r\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\r\n\r\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\r\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\r\n\r\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\r\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\r\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\r\n\r\n selectTemplatesText: resources.selectTemplatesText,\r\n addToTemplateButtonText: resources.addToTemplateButtonText,\r\n lineItemsText: resources.lineItemsText\r\n };\r\n}\r\n\r\n/**\r\n * To generate OrderTemplateNameDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of OrderTemplateNameDialog resources..\r\n */\r\nfunction generateOrderTemplateNameDialogResources(resources: IBuyboxCommonResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * To generate ItemAddedToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of ItemAddedToOrderTemplateDialog resources..\r\n */\r\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IItemAddedToOrderTemplateDialogResources {\r\n return {\r\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\r\n continueShoppingButtonText: resources.continueShoppingButtonText,\r\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\r\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\r\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText\r\n };\r\n}\r\n\r\n/**\r\n * To generate DuplicateItemsWhenAddingToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of DuplicateItemsWhenAddingToOrderTemplateDialog resources..\r\n */\r\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(resources: IBuyboxCommonResources):\r\nIDuplicateItemsWhenAddingToOrderTemplateDialogResources {\r\n return {\r\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\r\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\r\n updateQuantityButtonText: resources.updateQuantityButtonText,\r\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToOrderTemplateFailed = (callbacks: IBuyboxCallbacks,\r\n resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (result: IOrderTemplateActionErrorResult) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors: result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\n/**\r\n * RenderAddToOrderTemplateButton.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns JSX element.\r\n */\r\nexport const renderAddToOrderTemplateButton = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks, product: SimpleProduct): React.ReactNode => {\r\n\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n id,\r\n typeName,\r\n context,\r\n data: {\r\n orderTemplates: { result: orderTemplates },\r\n customerInformation: { result: customerInformation }\r\n },\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n quantity\r\n } = state;\r\n\r\n const isShowButtonText = true;\r\n\r\n return orderTemplates && (\r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n AddToWishlistComponent,\r\n IWishlistActionErrorResult\r\n} from \"@msdyn365-commerce/components\";\r\nimport { format, ItemAvailability, SimpleProduct } from \"@msdyn365-commerce/retail-proxy\";\r\nimport { IStoreInfo } from \"@msdyn365-commerce-modules/bopis-utilities\";\r\nimport {\r\n getConfigureErrors,\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxData,\r\n IBuyboxFindInStoreViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxResources as IBuyboxExtentionResources,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from \"@msdyn365-commerce-modules/buybox\";\r\nimport {\r\n ArrayExtensions, getFullAvailableInventoryNearby, GetFullAvailableInventoryNearbyInput,\r\n IFullOrgUnitAvailability\r\n} from \"@msdyn365-commerce-modules/retail-actions\";\r\nimport { IncrementalQuantity, INodeProps, ITelemetryContent, Module, Node } from \"@msdyn365-commerce-modules/utilities\";\r\nimport { reaction } from \"mobx\";\r\nimport * as React from \"react\";\r\nimport { getInventoryLevelRangesAsync } from \"../../../actions/DataActionExtension.g\";\r\nimport { SupersessionKey } from \"../../gardner-theme/models/SupersessionKey\";\r\nimport getExtensionPropertyValueByKey, { CommercePropertyValueEnum } from \"../../../utils/getExtensionPropertyValueByKey\";\r\nimport { IItemInventoryLevelProfileEntity, IProfileDataMap } from \"../../../actions/DataServiceEntities.g\";\r\n\r\nimport {\r\n IBuyboxProps as IBuyboxExtentionProps,\r\n IBuyboxProps\r\n} from \"../definition-extensions/buybox.ext.props.autogenerated\";\r\nimport { renderAddToOrderTemplateButton } from \"./components/buybox-add-to-order-template\";\r\n\r\n/**\r\n * BuyBoxConstants enum.\r\n */\r\nexport enum BuyBoxConstants {\r\n zero = 0\r\n}\r\n\r\n/**\r\n * On Change function.\r\n * @param callbacks -Callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n};\r\n\r\nconst _renderLoginURL = (url?: string, text?: string): JSX.Element => {\r\n return (\r\n

\r\n {text}\r\n

\r\n );\r\n};\r\n\r\n\r\n/**\r\n * RenderQuantity.\r\n * @param quantityComponent - QuantityComponent.\r\n * @param callbacks - Callbacks.\r\n * @param props - Props.\r\n * @param state - State.\r\n * @param extentionResources - ExtentionResources.\r\n * @param quantityLimitsMessages - QuantityLimitsMessages.\r\n * @param max - Max.\r\n * @param telemetryContent - TelemetryContent.\r\n * @param unitOfMeasure - Unit Of Measure.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IBuyboxProps,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxExtentionResources,\r\n quantityLimitsMessages: React.ReactNode,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n max: number | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n unitOfMeasure?: React.ReactNode): JSX.Element => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const {\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n quantity\r\n } = state;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n {unitOfMeasure}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render key in price function.\r\n * @param keyInPrice - KeyInPrice.\r\n * @returns -- Returns.\r\n */\r\nconst renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToCart.\r\n * @param addToCart - AddToCart.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToCart = (addToCart: IBuyboxAddToCartViewProps, product: SimpleProduct | undefined, inventoryRangesList: IProfileDataMap[], unavailableText: string): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n if (product) {\r\n const invPropertyValue = getExtensionPropertyValueByKey(product.ExtensionProperties, SupersessionKey.Inventory, CommercePropertyValueEnum.string)\r\n const currentInvString = invPropertyValue ? invPropertyValue.toString() : '0';\r\n const currentInventory = parseInt(currentInvString, 10);\r\n let invProfOos: IItemInventoryLevelProfileEntity | undefined;\r\n inventoryRangesList.map(ir => {\r\n const tempInvRange = ir.Profile?.find(p => p.ItemId === product.ItemId && p.Code === 'OOS');\r\n if (tempInvRange) {\r\n invProfOos = tempInvRange;\r\n }\r\n });\r\n \r\n const OosUpperBound = invProfOos?.hasOwnProperty('UpperBoundInclusive') && invProfOos?.UpperBoundInclusive !== undefined ? invProfOos.UpperBoundInclusive : 0;\r\n const isOutOfStock = currentInventory <= OosUpperBound;\r\n \r\n \r\n return (\r\n \r\n {errorBlock}\r\n {!isOutOfStock ? button : (\r\n
{unavailableText}
\r\n )}\r\n
\r\n );\r\n }\r\n return <>;\r\n};\r\n\r\n/**\r\n * RenderFindInStore.\r\n * @param findInStore - FindInStore.\r\n * @returns -- Returns.\r\n */\r\nconst renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const {\r\n ContainerProps,\r\n storeSelector,\r\n heading,\r\n description,\r\n errors,\r\n button,\r\n modal,\r\n productPickupOptionList\r\n } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {heading}\r\n {productPickupOptionList}\r\n {description}\r\n {errors}\r\n {button}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToOrderTemplate.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToOrderTemplate = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const product = props.data.product.result;\r\n if (!props.addToOrderTemplate || !product) {\r\n return null;\r\n }\r\n\r\n const orderTemplateButton = renderAddToOrderTemplateButton(props, state, callbacks, product);\r\n\r\n return (\r\n \r\n {props.addToOrderTemplate.errorBlock}\r\n {orderTemplateButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks,\r\n resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (result: IWishlistActionErrorResult) => {\r\n callbacks.updateErrorState({\r\n errorHost: \"WISHLIST\",\r\n configureErrors: result.status === \"MISSINGDIMENSION\" ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddtoWishlistButton = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks, product: SimpleProduct): React.ReactNode => {\r\n const { context, resources } = props;\r\n const wishlists = props.data.wishlists.result;\r\n const isShowWishlitButtonText = true;\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox viewprops.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToWishlist = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const product = props.data.product.result;\r\n if (!props.addToWishlist || !product) {\r\n return null;\r\n }\r\n\r\n const wishlistButton = renderAddtoWishlistButton(props, state, callbacks, product);\r\n return (\r\n \r\n {props.addToWishlist.errorBlock}\r\n {wishlistButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RRenderShopSimilarItem.\r\n * @param shopSimilarItem - ShopSimilarItem.\r\n * @returns -- Returns.\r\n */\r\nconst renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n\r\n return (\r\n \r\n {errors}\r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderSocialShare.\r\n * @param socialShare - Social share react node array.\r\n * @returns -- Returns.\r\n */\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigureDropdown.\r\n * @param dropdown - Buybox product configure dropdown view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {select}\r\n {errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigure.\r\n * @param configure - Buybox product configure view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * BuyboxView.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst BuyboxView: React.FC> = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const {\r\n ModuleProps,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n MediaGalleryContainerProps,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToOrderTemplate,\r\n addToWishlist,\r\n configure,\r\n description,\r\n findInStore,\r\n quantity,\r\n price,\r\n title,\r\n rating,\r\n inventoryLabel,\r\n shopSimilarLook,\r\n keyInPrice,\r\n shopSimilarDescription,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n max,\r\n unitOfMeasure,\r\n callbacks,\r\n state,\r\n resources,\r\n resources: {\r\n loginToViewPricing,\r\n productUnavailableText\r\n },\r\n quantityLimitsMessages,\r\n telemetryContent,\r\n config: {\r\n onlyShowPriceWhenAuthenticated,\r\n enableShopSimilarDescription,\r\n enableShopSimilarLooks\r\n },\r\n context: {\r\n request: {\r\n user: { signInUrl, isAuthenticated }\r\n }\r\n },\r\n app: {\r\n config: appConfig\r\n }\r\n } = props;\r\n\r\n let skuText: string = props.resources.skuText;\r\n skuText += props.data.product.result?.ItemId;\r\n const preferredStoreInfo: IStoreInfo | undefined = props.data.storeSelectorStateManager.result?.preferredStore;\r\n const preferredStoreId = preferredStoreInfo?.StoreId ? preferredStoreInfo.StoreId : \"\";\r\n const preferredStoreName = preferredStoreInfo?.StoreName ? preferredStoreInfo.StoreName : \"\";\r\n const product = props.data.product.result;\r\n\r\n const [availability, setAvailability] = React.useState(\"\");\r\n const [isStoreChange, setIsStoreChange] = React.useState(false);\r\n const [areInventoryRangesChecked, setAreInventoryRangesChecked] = React.useState(false);\r\n const [inventoryRangesList, setInventoryRangesList] = React.useState([]);\r\n\r\n const getInvProfs = async (): Promise => {\r\n if (areInventoryRangesChecked) {\r\n return;\r\n }\r\n const itemId = props.data.product.result?.ItemId || '';\r\n const resp = await getInventoryLevelRangesAsync({ callerContext: props.context.actionContext }, [itemId]);\r\n console.log(resp);\r\n setAreInventoryRangesChecked(true);\r\n setInventoryRangesList(resp);\r\n }\r\n\r\n React.useEffect(() => {\r\n void getInvProfs();\r\n }, [props.data.product]);\r\n\r\n const shouldShowShopOptions = enableShopSimilarDescription || enableShopSimilarLooks;\r\n /**\r\n * GetStockInventoryLabel.\r\n * @param availabilityWithHours - Stock availability with hours.\r\n * @returns -- Returns.\r\n */\r\n const getStockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\r\n for (const productInventoryInformation of availabilityWithHours.ProductInventoryInformation) {\r\n if (availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId) {\r\n return productInventoryInformation.StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n const getInventory = React.useCallback(async () => {\r\n const input = new GetFullAvailableInventoryNearbyInput(props.data.product.result?.RecordId, BuyBoxConstants.zero,\r\n BuyBoxConstants.zero, BuyBoxConstants.zero, BuyBoxConstants.zero, true);\r\n\r\n /**\r\n * IsProductInStock.\r\n * @param itemAvailabilities - Item availability array.\r\n * @returns -- Returns.\r\n */\r\n const isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n if (!appConfig.enableStockCheck) {\r\n return true;\r\n }\r\n\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[BuyBoxConstants.zero].AvailableQuantity! > BuyBoxConstants.zero;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n await getFullAvailableInventoryNearby(input, props.context.actionContext).catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n }).then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) => value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability) ? (\r\n filteredFullOrgUnitAvailability[BuyBoxConstants.zero]) : undefined;\r\n const stockStatusLabel: string | undefined = getStockInventoryLabel(preferredStoreAvailability);\r\n const isInStock = isProductInStock(preferredStoreAvailability?.OrgUnitAvailability?.ItemAvailabilities);\r\n const resourceLabel = isInStock ? props.resources.inStockText : props.resources.outOfStockText;\r\n const stockText: string | undefined = stockStatusLabel ? stockStatusLabel : resourceLabel;\r\n const preferredStoreAvailabilityText = `${format(props.resources.availabilityAtPreferredStoreText, preferredStoreName)} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId, appConfig.enableStockCheck, preferredStoreId, preferredStoreName, props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText, props.resources.inStockText, props.resources.outOfStockText, props.telemetry\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (props.config.displayStockAvailability) {\r\n getInventory().catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n });\r\n }\r\n }, [getInventory, isStoreChange, props.telemetry, props.config.displayStockAvailability]);\r\n\r\n reaction(\r\n () => props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n () => {\r\n setIsStoreChange(true);\r\n }\r\n );\r\n\r\n console.log(props);\r\n\r\n /**\r\n * RenderAvailabiltyAtPreferredStore.\r\n * @returns -- Returns.\r\n */\r\n const renderAvailabilityAtPreferredStore = (): JSX.Element | undefined => {\r\n const hasProductDimensions = ArrayExtensions.hasElements(props.data.product.result?.Dimensions);\r\n if (hasProductDimensions && props.data.product.result?.MasterProductId === undefined) {\r\n return undefined;\r\n }\r\n const containerProps: INodeProps = {\r\n className: \"ms-buybox__preferred-store-availability\",\r\n tag: \"span\"\r\n };\r\n\r\n return (\r\n \r\n {availability}\r\n \r\n );\r\n };\r\n return (\r\n \r\n \r\n {props.mediaGallery}\r\n \r\n \r\n {title}\r\n \r\n
\r\n {skuText}\r\n
\r\n {rating}\r\n
\r\n {(isAuthenticated || !onlyShowPriceWhenAuthenticated) ? (\r\n \r\n
\r\n {props.resources.priceText}\r\n
\r\n {price}\r\n
\r\n ) : _renderLoginURL(signInUrl, loginToViewPricing)}\r\n\r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity && renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent, unitOfMeasure)}\r\n {props.bulkPurchaseLink}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {inventoryLabel}\r\n {renderAddToCart(addToCart, product, inventoryRangesList, productUnavailableText)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {addToOrderTemplate && renderAddToOrderTemplate(props, state, callbacks)}\r\n {findInStore?.productPickupOptionList ?
\r\n {findInStore.productPickupOptionList}\r\n
: null}\r\n {_renderSocialShare(props.slots && props.slots.socialShare)}\r\n {shouldShowShopOptions ? (\r\n \r\n
\r\n {props.resources.shopText}\r\n
\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n
\r\n ) : null}\r\n\r\n \r\n
\r\n {props.resources.descriptionText}\r\n
\r\n {description}\r\n
\r\n {ArrayExtensions.hasElements(props.slots.productSpecification) ?\r\n \r\n {props.slots.productSpecification[0]}\r\n : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default BuyboxView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AddToWishlistComponent, IWishlistActionErrorResult } from '@msdyn365-commerce/components';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getConfigureErrors, IBuyboxAddToCartViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxState,\r\n IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox';\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IQuickviewProps as IQuickviewPropsExtend } from '../definition-extensions/quickview.ext.props.autogenerated';\r\n\r\n/**\r\n * RenderAddToCart.\r\n * @param addToCart - AddToCart.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks | undefined,\r\n resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (result: IWishlistActionErrorResult) => {\r\n callbacks?.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors: result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox viewprops.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddtoWishlistButton = (props: IQuickviewViewProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks | undefined, product: SimpleProduct): React.ReactNode => {\r\n const { context, resources } = props;\r\n const wishlists = props.data.wishlists.result;\r\n const isShowWishlitButtonText = true;\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox viewprops.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToWishlist = (props: IQuickviewViewProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks | undefined): JSX.Element | null => {\r\n const product = props.productDetails?.product;\r\n if (!props.addToWishlist || !product) {\r\n return null;\r\n }\r\n\r\n const wishlistButton = renderAddtoWishlistButton(props, state, callbacks, product);\r\n return (\r\n \r\n {props.addToWishlist.errorBlock}\r\n {wishlistButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderQuantity.\r\n * @param quantity - Quantity.\r\n * @param quantityLimitsMessages - QuantityLimitsMessages.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode, props: IQuickviewViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n const { unitOfMeasure } = props;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n {unitOfMeasure}\r\n {quantityLimitsMessages}\r\n {errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * KenderKeyInPrice.\r\n * @param keyInPrice - KeyInPrice.\r\n * @returns -- Returns.\r\n */\r\nconst renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigureDropdown.\r\n * @param dropdown - Buybox product configure dropdown view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {select}\r\n {errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigure.\r\n * @param configure - Buybox product configure view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderBodyContent.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst renderBodyContent = (props: IQuickviewViewProps & IQuickviewPropsExtend<{}>): JSX.Element => {\r\n const { price, keyInPrice, quantity, inventoryLabel, quantityLimitsMessages, loading,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, addToWishlist, configure, callbacks, state } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.resources.priceText}\r\n {price}\r\n \r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n \r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n {quantity && renderQuantity(quantity, quantityLimitsMessages, props)}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * RenderQuickViewPopup.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuickViewPopup = (props: IQuickviewViewProps & IQuickviewPropsExtend<{}>): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToCart,\r\n cartContainerProps, seeDetailsbutton } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n {props.title}\r\n {!props.loading && !StringExtensions.isNullOrEmpty(props.state.productPrice?.ItemId) ? \r\n {props.resources.skuText}\r\n {props.state.productPrice?.ItemId}\r\n : ''}\r\n {props.rating}\r\n \r\n \r\n \r\n {renderBodyContent(props)}\r\n \r\n \r\n \r\n {addToCart && seeDetailsbutton}\r\n {addToCart && renderAddToCart(addToCart)}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param props - Configuration for the quick view component.\r\n * @returns - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent:\r\nReact.FC> = (props: IQuickviewViewProps & IQuickviewPropsExtend<{}>) => {\r\n const { quickView, quickViewButton, isModalOpen } = props;\r\n const quickViewUpdatedProps: IModuleProps = { ...quickView, title: props.resources.quickViewbuttonText };\r\n return (\r\n \r\n {quickViewButton}\r\n {isModalOpen && renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\r\n","export enum SupersessionKey {\r\n SupersededId = 'superseded-from-id',\r\n SupersededName = 'superseded-from-name',\r\n Inventory = 'inventory'\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n AddToOrderTemplateComponent,\r\n IAddToOrderTemplateDialogResources,\r\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources,\r\n IOrderTemplateActionErrorResult,\r\n IOrderTemplateNameDialogResources } from '@msdyn365-commerce/components';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getConfigureErrors,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxData,\r\n IBuyboxState,\r\n IBuyboxViewProps } from '@msdyn365-commerce-modules/buybox';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxProps as IBuyboxExtentionProps } from '../../definition-extensions/buybox.ext.props.autogenerated';\r\n\r\n/**\r\n * To generate AddToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of AddToOrderTemplateDialog resources..\r\n */\r\nfunction generateAddToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IAddToOrderTemplateDialogResources {\r\n return {\r\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\r\n\r\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\r\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\r\n\r\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\r\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\r\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\r\n\r\n selectTemplatesText: resources.selectTemplatesText,\r\n addToTemplateButtonText: resources.addToTemplateButtonText,\r\n lineItemsText: resources.lineItemsText\r\n };\r\n}\r\n\r\n/**\r\n * To generate OrderTemplateNameDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of OrderTemplateNameDialog resources..\r\n */\r\nfunction generateOrderTemplateNameDialogResources(resources: IBuyboxCommonResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * To generate ItemAddedToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of ItemAddedToOrderTemplateDialog resources..\r\n */\r\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IItemAddedToOrderTemplateDialogResources {\r\n return {\r\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\r\n continueShoppingButtonText: resources.continueShoppingButtonText,\r\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\r\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\r\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText\r\n };\r\n}\r\n\r\n/**\r\n * To generate DuplicateItemsWhenAddingToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of DuplicateItemsWhenAddingToOrderTemplateDialog resources..\r\n */\r\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(resources: IBuyboxCommonResources):\r\nIDuplicateItemsWhenAddingToOrderTemplateDialogResources {\r\n return {\r\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\r\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\r\n updateQuantityButtonText: resources.updateQuantityButtonText,\r\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToOrderTemplateFailed = (callbacks: IBuyboxCallbacks,\r\n resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (result: IOrderTemplateActionErrorResult) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors: result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\n/**\r\n * RenderAddToOrderTemplateButton.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns JSX element.\r\n */\r\nexport const renderAddToOrderTemplateButton = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks, product: SimpleProduct): React.ReactNode => {\r\n\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n id,\r\n typeName,\r\n context,\r\n data: {\r\n orderTemplates: { result: orderTemplates },\r\n customerInformation: { result: customerInformation }\r\n },\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n quantity\r\n } = state;\r\n\r\n const isShowButtonText = true;\r\n\r\n return orderTemplates && (\r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n AddToWishlistComponent,\r\n IWishlistActionErrorResult\r\n} from \"@msdyn365-commerce/components\";\r\nimport { CommerceProperty, format, ItemAvailability, SimpleProduct } from \"@msdyn365-commerce/retail-proxy\";\r\nimport { IStoreInfo } from \"@msdyn365-commerce-modules/bopis-utilities\";\r\nimport {\r\n getConfigureErrors,\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxData,\r\n IBuyboxFindInStoreViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxResources as IBuyboxExtentionResources,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from \"@msdyn365-commerce-modules/buybox\";\r\nimport {\r\n ArrayExtensions, getFullAvailableInventoryNearby, GetFullAvailableInventoryNearbyInput,\r\n IFullOrgUnitAvailability\r\n} from \"@msdyn365-commerce-modules/retail-actions\";\r\nimport { IncrementalQuantity, INodeProps, ITelemetryContent, Module, Node } from \"@msdyn365-commerce-modules/utilities\";\r\nimport { reaction } from \"mobx\";\r\nimport * as React from \"react\";\r\n\r\nimport {\r\n IBuyboxProps as IBuyboxExtentionProps,\r\n IBuyboxProps\r\n} from \"../definition-extensions/buybox.ext.props.autogenerated\";\r\nimport { renderAddToOrderTemplateButton } from \"./components/buybox-add-to-order-template\";\r\nimport { SupersessionKey } from \"../models/SupersessionKey\";\r\nimport { CommercePropertyValueEnum } from \"../../../modules/allowable-freight/utils/CommercePropertyValueEnum\";\r\nimport GetProductEligibilityAction, {\r\n GetProductEligibilityInput\r\n} from \"../../../actions/get-product-eligibility.action\";\r\nimport { IBuyBoxDataExtended } from \"../definition-extensions/buybox.data\";\r\nimport { RichTextComponent } from \"@msdyn365-commerce/core\";\r\n\r\n\r\n/**\r\n * BuyBoxConstants enum.\r\n */\r\nexport enum BuyBoxConstants {\r\n zero = 0\r\n}\r\n\r\ninterface EligibleItem {\r\n ItemId: string;\r\n IsEligible: boolean;\r\n}\r\n\r\n\r\n/**\r\n * On Change function.\r\n * @param callbacks -Callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n};\r\n\r\nconst _renderLoginURL = (url?: string, text?: string): JSX.Element => {\r\n return (\r\n

\r\n {text}\r\n

\r\n );\r\n};\r\n\r\n\r\n/**\r\n * RenderQuantity.\r\n * @param quantityComponent - QuantityComponent.\r\n * @param callbacks - Callbacks.\r\n * @param props - Props.\r\n * @param state - State.\r\n * @param extentionResources - ExtentionResources.\r\n * @param quantityLimitsMessages - QuantityLimitsMessages.\r\n * @param max - Max.\r\n * @param telemetryContent - TelemetryContent.\r\n * @param unitOfMeasure - Unit Of Measure.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IBuyboxProps,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxExtentionResources,\r\n quantityLimitsMessages: React.ReactNode,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n max: number | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n unitOfMeasure?: React.ReactNode): JSX.Element => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n\r\n const {\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n quantity\r\n } = state;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n {unitOfMeasure}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render key in price function.\r\n * @param keyInPrice - KeyInPrice.\r\n * @returns -- Returns.\r\n */\r\nconst renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToCart.\r\n * @param addToCart - AddToCart.\r\n * @returns -- Returns.\r\n */\r\n// const renderAddToCart = (addToCart: IBuyboxAddToCartViewProps, eligbility: EligibleItem, eligibilityText: string): JSX.Element => {\r\nconst renderAddToCart = (addToCart: IBuyboxAddToCartViewProps, eligbility: EligibleItem, isProductAvailable: boolean): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n return (\r\n \r\n {errorBlock}\r\n {eligbility?.IsEligible && isProductAvailable ? button : ''}\r\n {/* {eligbility?.IsEligible ? button : eligbility?.ItemId ? eligibilityText : ''} */}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderFindInStore.\r\n * @param findInStore - FindInStore.\r\n * @returns -- Returns.\r\n */\r\nconst renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const {\r\n ContainerProps,\r\n storeSelector,\r\n heading,\r\n description,\r\n errors,\r\n button,\r\n modal,\r\n productPickupOptionList\r\n } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {heading}\r\n {productPickupOptionList}\r\n {description}\r\n {errors}\r\n {button}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToOrderTemplate.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToOrderTemplate = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const product = props.data.product.result;\r\n if (!props.addToOrderTemplate || !product) {\r\n return null;\r\n }\r\n\r\n const orderTemplateButton = renderAddToOrderTemplateButton(props, state, callbacks, product);\r\n\r\n return (\r\n \r\n {props.addToOrderTemplate.errorBlock}\r\n {orderTemplateButton}\r\n \r\n );\r\n};\r\n\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks,\r\n resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (result: IWishlistActionErrorResult) => {\r\n callbacks.updateErrorState({\r\n errorHost: \"WISHLIST\",\r\n configureErrors: result.status === \"MISSINGDIMENSION\" ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n };\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddtoWishlistButton = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks, product: SimpleProduct): React.ReactNode => {\r\n const { context, resources } = props;\r\n const wishlists = props.data.wishlists.result;\r\n const isShowWishlitButtonText = true;\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox viewprops.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToWishlist = (props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const product = props.data.product.result;\r\n if (!props.addToWishlist || !product) {\r\n return null;\r\n }\r\n\r\n const wishlistButton = renderAddtoWishlistButton(props, state, callbacks, product);\r\n return (\r\n \r\n {props.addToWishlist.errorBlock}\r\n {wishlistButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RRenderShopSimilarItem.\r\n * @param shopSimilarItem - ShopSimilarItem.\r\n * @returns -- Returns.\r\n */\r\nconst renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n\r\n return (\r\n \r\n {errors}\r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderSocialShare.\r\n * @param socialShare - Social share react node array.\r\n * @returns -- Returns.\r\n */\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigureDropdown.\r\n * @param dropdown - Buybox product configure dropdown view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {select}\r\n {errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigure.\r\n * @param configure - Buybox product configure view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * BuyboxView.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst BuyboxView: React.FC> = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const {\r\n ModuleProps,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n MediaGalleryContainerProps,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToOrderTemplate,\r\n addToWishlist,\r\n configure,\r\n // description,\r\n findInStore,\r\n quantity,\r\n price,\r\n title,\r\n rating,\r\n // inventoryLabel,\r\n shopSimilarLook,\r\n keyInPrice,\r\n shopSimilarDescription,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n max,\r\n unitOfMeasure,\r\n callbacks,\r\n state,\r\n resources,\r\n resources: {\r\n loginToViewPricing,\r\n supersessionLabel,\r\n productEligibilityText\r\n },\r\n data: {\r\n product,\r\n enhancedDescription\r\n },\r\n quantityLimitsMessages,\r\n telemetryContent,\r\n config: {\r\n onlyShowPriceWhenAuthenticated,\r\n enableShopSimilarDescription,\r\n enableShopSimilarLooks\r\n },\r\n context: {\r\n request: {\r\n user: { signInUrl, isAuthenticated }\r\n }\r\n },\r\n app: {\r\n config: appConfig\r\n }\r\n } = props;\r\n let skuText: string = props.resources.skuText;\r\n skuText += props.data.product.result?.ItemId;\r\n const preferredStoreInfo: IStoreInfo | undefined = props.data.storeSelectorStateManager.result?.preferredStore;\r\n const preferredStoreId = preferredStoreInfo?.StoreId ? preferredStoreInfo.StoreId : \"\";\r\n const preferredStoreName = preferredStoreInfo?.StoreName ? preferredStoreInfo.StoreName : \"\";\r\n\r\n const [availability, setAvailability] = React.useState(\"\");\r\n const [isStoreChange, setIsStoreChange] = React.useState(false);\r\n\r\n const shouldShowShopOptions = enableShopSimilarDescription || enableShopSimilarLooks;\r\n\r\n const [eligbility, setEligbility] = React.useState();\r\n const [isProductAvailable, setIsProductAvailable] = React.useState(false);\r\n\r\n const getProductEligibility = async (): Promise => {\r\n\r\n const itemId = (await product).ItemId;\r\n\r\n if (!itemId) {\r\n return;\r\n }\r\n const cart = props.data.cart;\r\n const input = new GetProductEligibilityInput([itemId], false, cart?.result?.cart?.Id || '', null, null, null);\r\n const eligibilityData = await GetProductEligibilityAction(input, props.context.actionContext);\r\n\r\n eligibilityData.forEach((i: any) => {\r\n const id = getExtensionPropertyValueByKey(i.ExtensionProperties, \"ItemId\", CommercePropertyValueEnum.string);\r\n if (String(id) === itemId) {\r\n const item: EligibleItem = {\r\n ItemId: String(id),\r\n IsEligible: i.IsEligible\r\n }\r\n setEligbility(item);\r\n getProductAvailability();\r\n }\r\n });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (isAuthenticated) {\r\n void getProductEligibility();\r\n }\r\n }, [props.data]);\r\n\r\n const getProductAvailability = (): void => {\r\n const availableQuantities = props.data.productAvailableQuantity.result;\r\n let isStockAvailable = false\r\n\r\n if (availableQuantities && availableQuantities.length > 0) {\r\n isStockAvailable = availableQuantities[0].IsProductAvailable;\r\n }\r\n setIsProductAvailable(isStockAvailable);\r\n }\r\n\r\n /**\r\n * GetStockInventoryLabel.\r\n * @param availabilityWithHours - Stock availability with hours.\r\n * @returns -- Returns.\r\n */\r\n const getStockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n\r\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\r\n for (const productInventoryInformation of availabilityWithHours.ProductInventoryInformation) {\r\n if (availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId) {\r\n return productInventoryInformation.StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n const getInventory = React.useCallback(async () => {\r\n const input = new GetFullAvailableInventoryNearbyInput(props.data.product.result?.RecordId, BuyBoxConstants.zero,\r\n BuyBoxConstants.zero, BuyBoxConstants.zero, BuyBoxConstants.zero, true);\r\n\r\n /**\r\n * IsProductInStock.\r\n * @param itemAvailabilities - Item availability array.\r\n * @returns -- Returns.\r\n */\r\n const isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n if (!appConfig.enableStockCheck) {\r\n return true;\r\n }\r\n\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[BuyBoxConstants.zero].AvailableQuantity! > BuyBoxConstants.zero;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n await getFullAvailableInventoryNearby(input, props.context.actionContext).catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n }).then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) => value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability) ? (\r\n filteredFullOrgUnitAvailability[BuyBoxConstants.zero]) : undefined;\r\n const stockStatusLabel: string | undefined = getStockInventoryLabel(preferredStoreAvailability);\r\n const isInStock = isProductInStock(preferredStoreAvailability?.OrgUnitAvailability?.ItemAvailabilities);\r\n const resourceLabel = isInStock ? props.resources.inStockText : props.resources.outOfStockText;\r\n const stockText: string | undefined = stockStatusLabel ? stockStatusLabel : resourceLabel;\r\n const preferredStoreAvailabilityText = `${format(props.resources.availabilityAtPreferredStoreText, preferredStoreName)} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId, appConfig.enableStockCheck, preferredStoreId, preferredStoreName, props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText, props.resources.inStockText, props.resources.outOfStockText, props.telemetry\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (props.config.displayStockAvailability) {\r\n getInventory().catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n });\r\n }\r\n }, [getInventory, isStoreChange, props.telemetry, props.config.displayStockAvailability]);\r\n\r\n reaction(\r\n () => props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n () => {\r\n setIsStoreChange(true);\r\n }\r\n );\r\n\r\n const _renderSupersessionData = () => {\r\n const productExtensionProperties = product.result?.ExtensionProperties;\r\n let supersededName: string | undefined;\r\n let supersededId: string | undefined;\r\n if (productExtensionProperties) {\r\n productExtensionProperties.forEach(ep => {\r\n const key = ep.Key || '';\r\n\r\n switch (key) {\r\n case SupersessionKey.SupersededName:\r\n supersededName = ep.Value?.StringValue;\r\n\r\n if (supersededName && supersededName === product.result?.Name) {\r\n supersededName = undefined;\r\n }\r\n break;\r\n case SupersessionKey.SupersededId:\r\n supersededId = ep.Value?.StringValue;\r\n if (supersededId && supersededId === product.result?.ItemId) {\r\n supersededId = undefined;\r\n }\r\n break;\r\n }\r\n })\r\n }\r\n\r\n if (!supersededName && !supersededId) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n

{supersessionLabel} {supersededName} ({supersededId})

\r\n
\r\n )\r\n }\r\n\r\n /**\r\n * RenderAvailabiltyAtPreferredStore.\r\n * @returns -- Returns.\r\n */\r\n const renderAvailabilityAtPreferredStore = (): JSX.Element | undefined => {\r\n const hasProductDimensions = ArrayExtensions.hasElements(props.data.product.result?.Dimensions);\r\n if (hasProductDimensions && props.data.product.result?.MasterProductId === undefined) {\r\n return undefined;\r\n }\r\n\r\n const containerProps: INodeProps = {\r\n className: \"ms-buybox__preferred-store-availability\",\r\n tag: \"span\"\r\n };\r\n\r\n return (\r\n \r\n {availability}\r\n \r\n );\r\n };\r\n\r\n const getBuyBoxInventoryLabel = (): React.ReactNode | React.ReactElement | undefined => {\r\n const product = props.data.product.result;\r\n const availableQuantities = props.data.productAvailableQuantity.result;\r\n if (!product && !availableQuantities) {\r\n return undefined;\r\n }\r\n const className = 'ms-buybox';\r\n let stockLevelLabel = '';\r\n let inventoryClassName: string = `${className}__inventory-label`;\r\n if (!eligbility?.IsEligible) {\r\n stockLevelLabel = productEligibilityText;\r\n }\r\n // } else if (isProductAvailable) {\r\n // stockLevelLabel = resources.availableLabelText;\r\n // } else {\r\n // stockLevelLabel = resources.outOfStockLabelText;\r\n // }\r\n return (\r\n eligbility?.IsEligible ? props.inventoryLabel : (\r\n
\r\n \r\n {stockLevelLabel}\r\n \r\n
\r\n )\r\n );\r\n }\r\n\r\n\r\n // No quantity selector if cart has course\r\n let cart = props.data.cart.result;\r\n let cartLines = cart?.cart.CartLines\r\n let hasCourse = false;\r\n let hasInvoice = cart?.hasInvoiceLine;\r\n cartLines?.forEach(c => {\r\n const courseId = getExtensionPropertyValueByKey(c.ExtensionProperties, \"CourseId\", CommercePropertyValueEnum.string);\r\n if (courseId) {\r\n hasCourse = true;\r\n }\r\n });\r\n let hasCourseErr =
{props.resources.courseErr}
;\r\n let invoiceErr =
{props.resources.invoiceErr}
;\r\n return (\r\n \r\n \r\n {props.mediaGallery}\r\n \r\n \r\n {title}\r\n\r\n\r\n \r\n
\r\n {skuText}\r\n
\r\n {_renderSupersessionData()}\r\n {rating}\r\n
\r\n {(isAuthenticated || !onlyShowPriceWhenAuthenticated) ? (\r\n \r\n
\r\n {props.resources.priceText}\r\n
\r\n {price}\r\n
\r\n ) : _renderLoginURL(signInUrl, loginToViewPricing)}\r\n\r\n {configure && renderConfigure(configure)}\r\n {hasCourse && hasCourseErr}\r\n {hasInvoice && invoiceErr}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n\r\n \r\n
\r\n {quantity && !hasCourse && !hasInvoice && renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent, unitOfMeasure)}\r\n {props.bulkPurchaseLink}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {/* {inventoryLabel} */}\r\n {getBuyBoxInventoryLabel()}\r\n {!hasCourse && !hasInvoice && eligbility && renderAddToCart(addToCart, eligbility, isProductAvailable)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {addToOrderTemplate && renderAddToOrderTemplate(props, state, callbacks)}\r\n {findInStore?.productPickupOptionList ?
\r\n {findInStore.productPickupOptionList}\r\n
: null}\r\n {_renderSocialShare(props.slots && props.slots.socialShare)}\r\n {shouldShowShopOptions ? (\r\n \r\n
\r\n {props.resources.shopText}\r\n
\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n
\r\n ) : null}\r\n\r\n \r\n
\r\n {props.resources.descriptionText}\r\n
\r\n {/* 6704 - Remove the original desription and replace with the enhanced description */}\r\n {/* {description} */}\r\n \r\n
\r\n {ArrayExtensions.hasElements(props.slots.productSpecification) ?\r\n \r\n {props.slots.productSpecification[0]}\r\n : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\n\r\nconst getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n};\r\n\r\nexport default BuyboxView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AddToWishlistComponent, IWishlistActionErrorResult } from '@msdyn365-commerce/components';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getConfigureErrors, IBuyboxAddToCartViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxState,\r\n IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox';\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IQuickviewProps as IQuickviewPropsExtend } from '../definition-extensions/quickview.ext.props.autogenerated';\r\n\r\n/**\r\n * RenderAddToCart.\r\n * @param addToCart - AddToCart.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks | undefined,\r\n resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (result: IWishlistActionErrorResult) => {\r\n callbacks?.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors: result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox viewprops.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddtoWishlistButton = (props: IQuickviewViewProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks | undefined, product: SimpleProduct): React.ReactNode => {\r\n const { context, resources } = props;\r\n const wishlists = props.data.wishlists.result;\r\n const isShowWishlitButtonText = true;\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox viewprops.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToWishlist = (props: IQuickviewViewProps,\r\n state: IBuyboxState, callbacks: IBuyboxCallbacks | undefined): JSX.Element | null => {\r\n const product = props.productDetails?.product;\r\n if (!props.addToWishlist || !product) {\r\n return null;\r\n }\r\n\r\n const wishlistButton = renderAddtoWishlistButton(props, state, callbacks, product);\r\n return (\r\n \r\n {props.addToWishlist.errorBlock}\r\n {wishlistButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderQuantity.\r\n * @param quantity - Quantity.\r\n * @param quantityLimitsMessages - QuantityLimitsMessages.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode, props: IQuickviewViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n const { unitOfMeasure } = props;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n {unitOfMeasure}\r\n {quantityLimitsMessages}\r\n {errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * KenderKeyInPrice.\r\n * @param keyInPrice - KeyInPrice.\r\n * @returns -- Returns.\r\n */\r\nconst renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigureDropdown.\r\n * @param dropdown - Buybox product configure dropdown view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {select}\r\n {errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigure.\r\n * @param configure - Buybox product configure view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderBodyContent.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst renderBodyContent = (props: IQuickviewViewProps & IQuickviewPropsExtend<{}>): JSX.Element => {\r\n const { price, keyInPrice, quantity, inventoryLabel, quantityLimitsMessages, loading,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, addToWishlist, configure, callbacks, state } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.resources.priceText}\r\n {price}\r\n \r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n \r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n {quantity && renderQuantity(quantity, quantityLimitsMessages, props)}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * RenderQuickViewPopup.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuickViewPopup = (props: IQuickviewViewProps & IQuickviewPropsExtend<{}>): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Quickview.tsx file\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToCart,\r\n cartContainerProps, seeDetailsbutton } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n {props.title}\r\n {!props.loading && !StringExtensions.isNullOrEmpty(props.state.productPrice?.ItemId) ? \r\n {props.resources.skuText}\r\n {props.state.productPrice?.ItemId}\r\n : ''}\r\n {props.rating}\r\n \r\n \r\n \r\n {renderBodyContent(props)}\r\n \r\n \r\n \r\n {addToCart && seeDetailsbutton}\r\n {addToCart && renderAddToCart(addToCart)}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param props - Configuration for the quick view component.\r\n * @returns - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent:\r\nReact.FC> = (props: IQuickviewViewProps & IQuickviewPropsExtend<{}>) => {\r\n const { quickView, quickViewButton, isModalOpen } = props;\r\n const quickViewUpdatedProps: IModuleProps = { ...quickView, title: props.resources.quickViewbuttonText };\r\n return (\r\n \r\n {quickViewButton}\r\n {isModalOpen && renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\r\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 { 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\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 { 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 onShipMultipleAddresses?(): 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 shipMultipleAddressesButton?: React.ReactNode;\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 {\n resources,\n onCancel,\n onSave,\n onAddAddress,\n onShipMultipleAddresses,\n hasExternalSubmitGroup,\n multipleAddressShippingEnabled\n } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n
\n \n
\n ),\n shipMultipleAddressesButton: multipleAddressShippingEnabled && onShipMultipleAddresses && (\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 * as React from 'react';\n\nexport interface IShipMultipleAddressesTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productQuantity: string;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n productAddress?: string;\n isAllSelected: boolean;\n isMobile: boolean;\n clearSelectionButton: React.ReactNode;\n}\n\nexport interface IShipMultipleAddressesTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IShipMultipleAddressesTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Ship multiple addresses table heading.\n */\nexport class ShipMultipleAddressesTableHeading extends React.PureComponent {\n public state: IShipMultipleAddressesTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\n\n public getOnChange = () => (event: React.ChangeEvent) => {\n this.setState(\n {\n isChecked: !this.state.isChecked\n },\n () => {\n this.props.clickHandler(this.state.isChecked);\n }\n );\n };\n\n public render(): JSX.Element {\n if (!this.props.isMobile) {\n return (\n \n \n \n \n \n {this.props.productNumber}\n {{this.props.productName}}\n {\n \n {this.props.productUnitPrice}\n \n }\n {\n \n {this.props.productQuantity}\n \n }\n {{this.props.productAddress}}\n \n \n );\n } else {\n return (\n \n \n \n \n\n {/* Clear Selection Button */}\n
\n {this.props.clearSelectionButton}\n
\n \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\nimport React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { Address, CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ICoreContext, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IShipMultipleAddressesLineViewModel } from '../../modules/checkout-shipping-address';\nimport { ICheckoutShippingCartLineInfo } from '../../modules/checkout-shipping-address/components';\n\nexport interface IShipMultipleAddressesLineProps extends CartLine {\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewModel;\n shippingLineImage: ICheckoutShippingCartLineInfo;\n price?: number;\n context: ICoreContext;\n product?: SimpleProduct;\n imageSettings?: IImageSettings;\n quantity: number;\n moduleId: string;\n moduleTypeName: string;\n currencyCode: string | undefined;\n customerAddresses: Address[];\n error?: string;\n isMobile: boolean;\n onSelect(line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void;\n onShippingAddressChange(shippingLine: CartLine, event: React.ChangeEvent): void;\n resources: {\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n };\n}\n\nexport interface IShipMultipleAddressesLineViewProps {\n key?: string;\n productImage?: React.ReactNode;\n productPrice?: React.ReactNode;\n productCurrencyCode?: React.ReactNode;\n productName?: string;\n productNumber?: React.ReactNode;\n productInfo?: React.ReactNode;\n productLabel?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n productQuantity?: number;\n productListId?: string;\n productAddress?: React.ReactNode;\n selectLine?: React.ReactNode;\n popUp?: JSX.Element;\n productAddressPopup?: JSX.Element | null | undefined;\n isMobile?: boolean;\n}\n\n/**\n * On Select line function.\n * @param shipMultipleAddressesLine - Ship multiple addresses line.\n * @param input - Ship multiple addresses line props.\n * @returns Set on select shipping line.\n */\nconst onSelectLineHandler = (shipMultipleAddressesLine: IShipMultipleAddressesLineViewModel, input: IShipMultipleAddressesLineProps) => (\n event: React.ChangeEvent\n) => {\n shipMultipleAddressesLine.isChecked = !shipMultipleAddressesLine.isChecked;\n\n input.onSelect(shipMultipleAddressesLine, event.target.checked);\n};\n\nexport const ShipMultipleAddressesLineView = (input: IShipMultipleAddressesLineProps): IShipMultipleAddressesLineViewProps | null => {\n const { customerAddresses, shipMultipleAddressesLine, shippingLineImage, product, context, onShippingAddressChange } = input;\n\n console.log('ShipMultipleAddressesLineView rendering');\n\n if (!product) {\n return null;\n }\n\n const { ItemId } = product;\n const { Quantity, ShippingAddress } = shipMultipleAddressesLine.cartLine;\n\n return {\n selectLine: (\n \n ),\n productImage: renderProductImage(\n '',\n context,\n product.Name!,\n shippingLineImage.imageProps.fallBackSrc,\n shippingLineImage.imageProps.src\n ),\n productInfo: renderProductInfo(input),\n productPrice: renderProductPrice(input),\n productNumber: product && (\n <>\n
{ItemId}
\n {input.error !== 'NONE' ?
{renderProductError(input)}
: undefined}\n \n ),\n productQuantity: Quantity,\n productAddress: (\n onShippingAddressChange(shipMultipleAddressesLine.cartLine, e)}\n value={ShippingAddress?.RecordId}\n >\n {customerAddresses?.map((address: Address, index: number) => (\n \n {address.FullAddress}\n \n ))}\n \n )\n };\n};\n\nconst renderProductImage = (\n className: string,\n context: ICoreContext,\n heading: string,\n image?: string,\n fallbackImage?: string\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n};\n\nconst renderProductDimensions = (props: IShipMultipleAddressesLineProps): (string | undefined)[] => {\n const { product } = props;\n if (!product || !product.Dimensions) {\n return [];\n }\n return product.Dimensions.map(dimension => {\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\n return undefined;\n }\n return dimension.DimensionValue.Value;\n });\n};\n\nconst renderProductInfo = (props: IShipMultipleAddressesLineProps): React.ReactNode | undefined => {\n const { product } = props;\n const name = product?.Name;\n const dimensions = renderProductDimensions(props);\n if (!product) {\n return [];\n }\n const productName =
{name}
;\n const dimensionsLine: string = dimensions.join(', ');\n return (\n
\n
{productName}
\n
{dimensionsLine}
\n
\n );\n};\n\nconst renderProductPrice = (props: IShipMultipleAddressesLineProps): React.ReactNode | undefined => {\n const { product } = props;\n\n if (!product?.Price) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n\nconst renderProductError = (props: IShipMultipleAddressesLineProps) => {\n const { error, resources } = props;\n\n if (!error) {\n return '';\n }\n\n const errorMessages = {\n OOS: resources.outOfStockProductErrorMessage,\n UNASSORTED: resources.unavailableProductErrorMessage,\n NONE: ''\n };\n\n return errorMessages[error];\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';\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { Address, CartLine } from '@msdyn365-commerce/retail-proxy';\nimport AddressButtonComponent from './address-button';\nimport { IShipMultipleAddressesTableHeadingProps, ShipMultipleAddressesTableHeading } from './address-ship-multiple-heading';\nimport { IAddressResource } from '../address-module.data';\nimport {\n IShipMultipleAddressesLineProps,\n IShipMultipleAddressesLineViewProps,\n ShipMultipleAddressesLineView\n} from './address-ship-multiple-lines';\nimport { IShipMultipleAddressesLineViewModel } from '../../modules/checkout-shipping-address';\nimport { ICartLineWithProduct, ICheckoutShippingCartLineInfo } from '../../modules/checkout-shipping-address/components';\n\nexport interface IAddressShipMultipleInputProps {\n context: ICoreContext;\n hasExternalSubmitGroup?: boolean;\n moduleId: string;\n moduleTypeName: string;\n currencyCode: string | undefined;\n resources: IAddressResource;\n shippingLines: ICartLineWithProduct[];\n shippingLineImages: ICheckoutShippingCartLineInfo[];\n selectedShippingLines: IShipMultipleAddressesLineViewModel[];\n customerAddresses: Address[];\n onSelect(line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void;\n onSelectAll(isChecked: boolean): void;\n onClear(): void;\n onShippingAddressChange(shippingLine: CartLine, event: React.ChangeEvent): void;\n onBulkShippingAddressChange(event: React.ChangeEvent): void;\n onShipSingleAddress(): void;\n onSave(): void;\n onCancel(): void;\n isMobile: boolean;\n telemetryContent?: ITelemetryContent;\n}\n\nexport interface IShipMultipleAddressesViewProps {\n ShipMultipleAddress?: INodeProps;\n shipSingleAddressButton?: React.ReactNode;\n clearSelectionButton?: React.ReactNode;\n addressDropdown?: React.ReactNode;\n ProductsTable?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductsTableRow?: INodeProps;\n shipMultipleAddressLines?: IShipMultipleAddressesLineViewProps[];\n isShowSaveButton?: boolean;\n saveButton?: React.ReactNode;\n isShowCancelButton?: boolean;\n cancelButton?: React.ReactNode;\n isMobile?: boolean;\n}\n\nexport const AddressShipMultiple = (props: IAddressShipMultipleInputProps): IShipMultipleAddressesViewProps => {\n const {\n context,\n currencyCode,\n hasExternalSubmitGroup,\n moduleId,\n moduleTypeName,\n shippingLines,\n shippingLineImages,\n selectedShippingLines,\n customerAddresses,\n isMobile,\n onSelect,\n onSelectAll,\n onClear,\n onShippingAddressChange,\n onBulkShippingAddressChange,\n onShipSingleAddress,\n onSave,\n onCancel,\n resources\n } = props;\n\n const { unavailableProductErrorMessage, outOfStockProductErrorMessage } = props.resources;\n\n const shipMultipleAddressLines: IShipMultipleAddressesLineViewModel[] = [];\n\n for (const line of shippingLines) {\n shipMultipleAddressLines.push({\n isChecked: false,\n cartLine: line.cartLine\n });\n }\n\n function _renderProductListHeader(): React.ReactNode {\n const headers: IShipMultipleAddressesTableHeadingProps = {\n selectAllRowsText: resources.addressSelectAllRowsText,\n productNumber: resources.addressProductNumberText!,\n productName: resources.addressProductText!,\n productUnitPrice: resources.addressProductUnitPriceText!,\n productQuantity: resources.addressProductQuantityText!,\n productAddress: resources.addressProductAddressText,\n clickHandler: (isChecked: boolean) => {\n onSelectAll(isChecked);\n },\n isAllSelected: selectedShippingLines && selectedShippingLines.every(line => line.isChecked),\n isMobile: isMobile,\n clearSelectionButton: (\n !line.isChecked)\n }}\n />\n )\n };\n\n return ;\n }\n\n function _renderShipMultipleAddressLines(): IShipMultipleAddressesLineViewProps[] {\n return shippingLines.map((line, index) => {\n const currentLineProps: IShipMultipleAddressesLineProps = {\n shipMultipleAddressesLine: {\n isChecked: (selectedShippingLines && selectedShippingLines[index] && selectedShippingLines[index].isChecked) || false,\n cartLine: line.cartLine\n },\n shippingLineImage: shippingLineImages[index],\n product: line.product ? line.product : undefined,\n price: line.product?.Price,\n context,\n quantity: line.cartLine?.Quantity!,\n moduleId: moduleId,\n moduleTypeName: moduleTypeName,\n currencyCode: currencyCode,\n customerAddresses: customerAddresses,\n isMobile: isMobile,\n onSelect: onSelect,\n onShippingAddressChange: onShippingAddressChange,\n resources: {\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n }\n };\n\n return ShipMultipleAddressesLineView({ ...currentLineProps })!;\n });\n }\n\n return {\n ShipMultipleAddress: { className: 'msc-address-select' },\n shipSingleAddressButton: (\n \n ),\n clearSelectionButton: (\n !line.isChecked)\n }}\n />\n ),\n addressDropdown: (\n onBulkShippingAddressChange(e)}\n defaultValue={''}\n disabled={selectedShippingLines.every(line => !line.isChecked)}\n >\n \n {customerAddresses?.map((address: Address, index: number) => (\n \n ))}\n \n ),\n ProductsTable: {\n className: `ms-address-select__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `ms-address-select-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: _renderProductListHeader(),\n shipMultipleAddressLines: _renderShipMultipleAddressLines(),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n isMobile: isMobile\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 { 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';\nimport groupBy from 'lodash/groupBy';\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 shippingAddressId?: 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 isMultipleAddressShippingEnabled?: boolean;\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 isMultipleAddressShippingEnabled = false\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 cartLinesForShipping: CartLine[] = [];\n if (cartLines.length > 0) {\n const getGroupByDelivery = (items: ICheckoutShippingCartLineInfo[]) => groupBy(items, item => item.shippingAddressId);\n cartLinesForShipping.push(getGroupByDelivery(cartLines));\n }\n const renderShipMultiAddressView = isMultipleAddressShippingEnabled && cartLinesForShipping.length > 1;\n const quantity = 1;\n return renderShipMultiAddressView ? (\n
{resources.headingAfterMultiSelectAddressSelect}
\n ) : (\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 MsDyn365 from '@msdyn365-commerce/core';\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, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport get from 'lodash/get';\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';\nimport { AddressShipMultiple, IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\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 isShowShipMultipleAddress?: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n shippingGroupsBuffer: ICartLineWithProduct[];\n selectedShippingLines: IShipMultipleAddressesLineViewModel[];\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 showShipMultipleAddresses?: IShipMultipleAddressesViewProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n orderLines?: IShipMultipleAddressesLineViewProps[];\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\nexport interface IShipMultipleAddressesLineViewModel {\n isChecked: boolean;\n cartLine: CartLine;\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\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\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 @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\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._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n this.state = { shippingGroups: [], shippingGroupsBuffer: [], selectedShippingLines: [] };\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 this._updateViewport();\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 if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\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 componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\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 shippingAddressId: line.cartLine.ShippingAddress?.RecordId ?? 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 isMultipleAddressShippingEnabled: config.multipleAddressShippingEnabled\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 isShowShipMultipleAddress: this.currentOperation === AddressOperation.Multiple\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 onShipMultipleAddressesHandler - On ship to multiple addresses click function.\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: (\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ) => this._renderSelectAddress(onShipMultipleAddressesHandler, onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show ship multiple addresses.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders ship multiple addresses.\n */\n showShipMultipleAddressesHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderShipMultipleAddresses(onSaveHandler, onCancelHandler),\n showShipMultipleAddresses: this._renderShipMultipleAddresses(),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders add/update 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 public onSelect = (line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void => {\n line.isChecked = isChecked;\n\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n // @ts-ignore\n if (shippingLine.cartLine?.cartLine?.LineId === line.cartLine.LineId) {\n shippingLine.isChecked = isChecked;\n }\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are invalid.`);\n }\n };\n\n public onSelectAll(isChecked: boolean): void {\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n shippingLine.isChecked = isChecked;\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\n }\n\n public onShippingAddressChange = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n const updated = this.state.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n this.setState({\n shippingGroups: updated\n });\n }\n };\n\n public updateIndividualAddresses = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n this.setState(prevState => {\n const updated = prevState.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n return {\n shippingGroups: updated\n };\n });\n }\n };\n\n public onBulkShippingAddressChange = (event: React.ChangeEvent): void => {\n if (this.state.selectedShippingLines && this.state.shippingGroups) {\n this.state.selectedShippingLines.forEach((shippingLine, index) => {\n if (shippingLine.isChecked) {\n const cartline = this.state.shippingGroups.find(\n // @ts-ignore\n line => line.cartLine.LineId === shippingLine.cartLine?.cartLine?.LineId\n );\n\n if (cartline) {\n this.updateIndividualAddresses(cartline.cartLine, event);\n }\n }\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\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 this.setState({ shippingGroupsBuffer: cartLines });\n\n const initialShippingLineSelection = cartLines.map(cartLine => ({\n isChecked: false,\n cartLine: cartLine as CartLine\n }));\n this.setState({ selectedShippingLines: initialShippingLineSelection });\n } catch (error) {\n // @ts-ignore\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n this.setState({ shippingGroupsBuffer: [] });\n this.setState({ selectedShippingLines: [] });\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 ship multiple addresses.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n */\n private readonly _renderShipMultipleAddresses = (onSaveHandler?: () => void, onCancelHandler?: () => void) => {\n const { config, context } = this.props;\n const { imageSettings } = config;\n\n // Line images\n const cartlineImages: 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 /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n\n return AddressShipMultiple({\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 onSelect: this.onSelect.bind(this),\n\n onSelectAll: this.onSelectAll.bind(this),\n\n onClear: () => {\n this.onSelectAll(false);\n },\n\n onShippingAddressChange: this.onShippingAddressChange.bind(this),\n\n onBulkShippingAddressChange: this.onBulkShippingAddressChange.bind(this),\n\n /**\n * On Ship to Single Address Function.\n */\n onShipSingleAddress: () => {\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n },\n\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n shippingLines: this.state.shippingGroups,\n\n shippingLineImages: cartlineImages,\n\n selectedShippingLines: this.state.selectedShippingLines ? this.state.selectedShippingLines : [],\n\n customerAddresses: this.customerAddresses,\n\n context: this.props.context,\n\n currencyCode: this.currencyCode,\n\n moduleId: this.props.id,\n\n moduleTypeName: this.props.typeName,\n\n resources: this.resources,\n\n telemetryContent: this.telemetryContent,\n\n isMobile: this.isMobile\n });\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 onShipMultipleAddressesHandler - To handle ship to multiple addresses button click.\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 onShipMultipleAddressesHandler?: () => void,\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 Ship to Multiple Addresses Function.\n */\n onShipMultipleAddresses: () => {\n this._goToShipMultipleAddresses();\n onShipMultipleAddressesHandler?.();\n },\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 case AddressOperation.Multiple:\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._onSelectAddress();\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({ selectedShippingLines: resetSelectedShippingLines });\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 case AddressOperation.Multiple:\n this.props.telemetry.information('Shipping address cancel for Multiple operation.');\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\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 if (this.props.config.multipleAddressShippingEnabled) {\n this._setCartLinesShippingAddress(this.addressListSelectedAddress);\n } else {\n this._setShippingAddress(this.addressListSelectedAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method get called on ship to multiple addresses.\n */\n private readonly _goToShipMultipleAddresses = () => {\n this._setDefaultCountryRegionId();\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._updateCurrentOperation(AddressOperation.Multiple);\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 /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setCartLinesShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newCartLinesWithShippingAddress = this.state.shippingGroups.map(shippingGroup => shippingGroup.cartLine);\n this.props.data.checkout.result.updateCartLinesShippingAddress({ newCartLinesWithShippingAddress });\n this.props.data.checkout.result.checkoutCart\n .updateCartLineShippingAddress({ updatedCartLinesObject: newCartLinesWithShippingAddress })\n .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 @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\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 case AddressOperation.Multiple:\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\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 { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport 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';\nimport { IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\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.shipMultipleAddressesButton - Ship to multiple addresses button.\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 shipMultipleAddressesButton,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n \n {addButton}\n {shipMultipleAddressesButton}\n \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 Ship Multiple Component.\n * @param param0 - Root param.\n * @param param0.ShipMultipleAddress - Ship multiple address form.\n * @param param0.shipSingleAddressButton - Ship single address button.\n * @param param0.clearSelectionButton - Clear selection button.\n * @param param0.addressDropdown - Address dropdown button.\n * @param param0.ProductsTable - Products table component.\n * @param param0.ProductsTableHeading - Products table heading component.\n * @param param0.ProductsTableRow - Products table row component.\n * @param param0.shipMultipleAddressLines - Ship multiple address lines.\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @returns Address ship multiple component node.\n */\nconst AddressShipMultiple: React.FC = ({\n ShipMultipleAddress,\n shipSingleAddressButton,\n clearSelectionButton,\n addressDropdown,\n ProductsTable,\n ProductsTableHeading,\n ProductsTableRow,\n shipMultipleAddressLines,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton,\n isMobile\n}) => {\n if (ShipMultipleAddress && isMobile !== undefined) {\n if (!isMobile) {\n return (\n \n {shipSingleAddressButton}\n \n {clearSelectionButton}\n\n {addressDropdown}\n \n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n } else {\n return (\n \n {shipSingleAddressButton}\n {addressDropdown}\n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n }\n } else {\n return null;\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\nconst _renderShipMultipleAddressLine = (\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewProps,\n isMobile: boolean,\n ProductsTableRow?: INodeProps\n): JSX.Element | null => {\n if (!shipMultipleAddressesLine) {\n return null;\n }\n\n const {\n selectLine,\n productImage,\n productNumber,\n productInfo,\n productPrice,\n productQuantity,\n productAddress\n } = shipMultipleAddressesLine;\n\n if (!isMobile) {\n return (\n \n {selectLine}\n \n
{productImage}
\n
{productNumber}
\n \n {productInfo}\n {productPrice}\n {productQuantity}\n {productAddress}\n
\n );\n } else {\n return (\n \n \n {selectLine}\n \n {productImage}\n {productInfo}\n {`QTY: ${productQuantity}`}\n \n {productPrice}\n \n \n {productAddress}\n \n \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 showShipMultipleAddresses,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {!viewState.isShowShipMultipleAddress && cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {viewState.isShowShipMultipleAddress && (\n \n )}\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 { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport { ProductDimensionsMatrix } from '@msdyn365-commerce/components';\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ICoreContext, getCatalogId } from '@msdyn365-commerce/core-internal';\nimport { ArrayExtensions, IDimensionsApp, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Collapse, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { IBulkPurchaseData } from './bulk-purchase.data';\nimport { IBulkPurchaseProps } from './bulk-purchase.props.autogenerated';\n\n/**\n * Additional optional props for the bulk purchase.\n */\nexport interface IBulkPurchaseExtendedProps extends IBulkPurchaseProps {\n productDimensions?: IProductDimensionsWithAvailabilitiesFull[];\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseViewProps extends IBulkPurchaseProps {\n container: IModuleProps;\n content: React.ReactElement;\n}\n\n/**\n * BulkPurchase state message Interface.\n */\nexport interface IBulkPurchaseStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseState {\n isExpanded: boolean;\n stateMessage?: IBulkPurchaseStateMessage;\n}\n\n/**\n * Bulk-purchase module.\n */\nexport class BulkPurchase extends React.PureComponent {\n public static readonly className = 'ms-bulk-purchase';\n private readonly _errorCssClass: string = 'danger';\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n private readonly collapseRef: React.RefObject = React.createRef();\n\n public constructor(props: IBulkPurchaseExtendedProps) {\n super(props);\n\n this.state = {\n isExpanded: false\n };\n }\n\n public render(): React.ReactElement | null {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const hasDimensionsInData = ArrayExtensions.hasElements(this.props.data.productDimensions?.result);\n if (!hasDimensionsInProps && !hasDimensionsInData) {\n return null;\n }\n\n const viewProps: IBulkPurchaseViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className: classnames(BulkPurchase.className, this.props.config.className)\n },\n content: this._renderCollapseContent(`${BulkPurchase.className}__content`)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderCollapseContent(className: string): React.ReactElement {\n return (\n
\n {this._renderCollapseButton(`${className}__collapse-button`)}\n {this._renderCollapse(`${className}__collapse`)}\n
\n );\n }\n\n private _renderCollapseButton(className: string): React.ReactElement {\n return (\n \n {this.props.resources.bulkPurchaseHeaderTitle}\n \n );\n }\n\n /**\n *This function is being used to handel variant change dropdown.\n */\n private _dimensionDropDownChange = () => {\n this.collapseRef.current?.reEvaluateHeight();\n };\n\n private _renderCollapse(className: string): React.ReactElement {\n return (\n \n {this._renderMainContent(`${className}__main-content`)}\n \n );\n }\n\n private _renderMainContent(className: string): React.ReactElement {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n const userMessageNode = this.state.stateMessage ? (\n \n \n {this.state.stateMessage.messageText}\n \n ) : (\n undefined\n );\n\n return (\n
\n {!isMobileDevice && (\n
\n \n
\n )}\n {userMessageNode}\n {this._renderMatrix(`${className}__matrix-container`)}\n
\n );\n }\n\n private _renderMatrix(className: string): React.ReactElement {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const { featureState } = this.props.data;\n const isMultipleCatalogsFeatureEnabled =\n featureState?.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n return (\n }\n data={{\n dimensions: hasDimensionsInProps ? this.props.productDimensions! : this.props.data.productDimensions!.result!,\n orderTemplates: this.props.data.orderTemplates?.result,\n customerInformation: this.props.data.customerInformation?.result\n }}\n resources={this.props.resources}\n dimensionOnChange={this._dimensionDropDownChange}\n onErrorMessage={this._onErrorMessage}\n isMultipleCatalogFeatureEnabledInHq={isMultipleCatalogsFeatureEnabled}\n catalogId={catalogId}\n />\n );\n }\n\n private _onErrorMessage = (errorMessage: string) => {\n this.setState({\n stateMessage: {\n messageText: errorMessage,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n });\n };\n\n /**\n * Callback which toggles collapse mode.\n */\n private readonly _toggleCollapse = () => {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n };\n}\n\nexport default BulkPurchase;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddToCartComponent,\n AddToOrderTemplateComponent,\n AddToWishlistComponent,\n IAddToCartFailureResult,\n IAddToCartResources,\n IAddToOrderTemplateDialogResources,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n IOrderTemplateActionErrorResult,\n IOrderTemplateNameDialogResources,\n IWishlistActionErrorResult,\n PriceComponent,\n RatingComponent\n} from '@msdyn365-commerce/components';\nimport { getUrlSync, IImageSettings } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductAvailableQuantity, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, DeliveryMode, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n Heading,\n ITelemetryContent,\n Node,\n Quantity,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxCommonData,\n IBuyboxCommonResources,\n IBuyboxErrorBlockProps,\n IBuyboxExtentedProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IProductDetails,\n ShopSimiliarButtonType\n} from './buyboxInterface';\nimport { getConfigureErrors, getGenericError, getQuantityError } from './utilities/error-utilities';\n\nconst _getClassNamePrefix = (typeName: string): string => {\n return typeName.toLocaleLowerCase() === 'quickview' ? 'ms-quickView' : 'ms-buybox';\n};\n\nexport function getBuyBoxInventoryLabel(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { typeName } = props;\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const productAvailableQuantity = props.data.productAvailableQuantity?.result ?? productDetails?.productAvailableQuantity;\n\n const className = _getClassNamePrefix(typeName);\n if (!productAvailableQuantity || !ArrayExtensions.hasElements(productAvailableQuantity)) {\n return undefined;\n }\n const shippingInventory = productAvailableQuantity.find(shipping => shipping.deliveryType === DeliveryMode.shipping);\n\n if (shippingInventory) {\n let inventoryClassName: string;\n if (shippingInventory.StockLevelCode) {\n inventoryClassName = `${className}__inventory-label ${className}__inventory-code-${shippingInventory.StockLevelCode.toLowerCase()}`;\n } else {\n inventoryClassName = `${className}__inventory-label`;\n }\n return (\n
\n {shippingInventory.StockLevelLabel}\n
\n );\n }\n\n return undefined;\n}\n\nexport function getBuyboxProductTitle(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const {\n config: { titleHeadingTag = 'h1' },\n typeName\n } = props;\n const className = _getClassNamePrefix(typeName);\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product ?? undefined;\n\n return product && ;\n}\n\nexport function getBuyboxProductDescription(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { typeName } = props;\n const className = _getClassNamePrefix(typeName);\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product ?? undefined;\n\n return product &&

{product.Description}

;\n}\n\n/**\n * Gets the react node for product unit of measure display.\n * @param {IBuyboxExtentedProps} props The buybox module props.\n * @param {IProductDetails} productDetails The product details to be displyed in buybox.\n * @returns {React.ReactElement} The node representing markup for unit of measure component.\n */\nexport function getBuyboxProductUnitOfMeasure(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { typeName } = props;\n const className = _getClassNamePrefix(typeName);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (\n props.context.app.config &&\n (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none')\n ) {\n return undefined;\n }\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product;\n if (!product || !product.DefaultUnitOfMeasure) {\n props.telemetry.warning('Missing defult unit of measureor theproduct');\n return undefined;\n }\n\n return (\n
\n {product.DefaultUnitOfMeasure}\n
\n );\n}\n\nlet telemetryContent: ITelemetryContent;\n\n/**\n * On add to cart failed function.\n * @param props -The buybox module props.\n * @param state -The buybox module state.\n * @param callbacks -The buybox module callbacks.\n * @param defaultMinimumKeyInPrice -The default minimum key in price.\n * @param defaultMaximumKeyInPrice -The default maximum key in price.\n * @param cart -The cart state.\n * @param product -The simple product.\n * @param productAvailability -The product available quantity.\n * @returns Update error state.\n */\nconst onAddToCartFailed = (\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n defaultMinimumKeyInPrice: number,\n defaultMaximumKeyInPrice: number,\n cart: ICartState,\n product: SimpleProduct,\n productAvailability: ProductAvailableQuantity | undefined\n) => (result: IAddToCartFailureResult) => {\n let quantityErrorForState: string | undefined;\n let customAmountErrorForState: string | undefined;\n let otherErrorForState: string | undefined = getGenericError(\n result,\n cart,\n props.resources,\n props.context,\n product,\n productAvailability,\n undefined\n );\n\n if (result.failureReason === 'OUTOFSTOCK') {\n quantityErrorForState = result.failureReason === 'OUTOFSTOCK' ? getQuantityError(result.stockLeft, props.resources) : undefined;\n } else if (\n result.failureReason === 'CARTACTIONFAILED' &&\n result.cartActionResult &&\n (result.cartActionResult.substatus === 'MAXQUANTITY' || result.cartActionResult.substatus === 'QUANTITYLIMITS')\n ) {\n quantityErrorForState = getGenericError(result, cart, props.resources, props.context, product, productAvailability, undefined);\n otherErrorForState = undefined; // Prevent error duplication in otherError and quantityError\n }\n\n if (result.failureReason === 'INVALIDCUSTOMAMOUNT') {\n if (state.keyInPriceAmount === undefined || state.keyInPriceAmount < (props.config.minimumKeyInPrice || defaultMinimumKeyInPrice)) {\n const formatedAmountLimit = props.context.cultureFormatter.formatCurrency(\n props.config.minimumKeyInPrice || defaultMinimumKeyInPrice\n );\n customAmountErrorForState = props.resources.invalidSmallCustomAmountText.replace('{minAmount}', formatedAmountLimit);\n } else if (state.keyInPriceAmount > (props.config.maximumKeyInPrice || defaultMaximumKeyInPrice)) {\n const formatedAmountLimit = props.context.cultureFormatter.formatCurrency(\n props.config.maximumKeyInPrice || defaultMaximumKeyInPrice\n );\n customAmountErrorForState = props.resources.invalidLargeCustomAmountText.replace('{maxAmount}', formatedAmountLimit);\n }\n }\n\n callbacks.updateErrorState({\n errorHost: 'ADDTOCART',\n quantityError: quantityErrorForState,\n configureErrors:\n result.failureReason === 'MISSINGDIMENSION'\n ? getConfigureErrors(result.missingDimensions, props.resources, product?.IsGiftCard)\n : {},\n customAmountError: customAmountErrorForState,\n otherError: otherErrorForState\n });\n};\n\n/**\n * On Item Add To Cart function.\n * @param typeName -Type name.\n * @param callbacks -Buybox Callbacks.\n * @returns Change modal open.\n */\nconst onItemAddedToCart = (typeName: string, callbacks: IBuyboxCallbacks) => (result: ICartActionResult) => {\n if (typeName === 'quickview') {\n callbacks.changeModalOpen(false);\n }\n};\n\nexport function getBuyboxAddToCart(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n defaultMinimumKeyInPrice: number,\n defaultMaximumKeyInPrice: number,\n productDetails?: IProductDetails,\n hasAvailableProducts?: boolean\n): IBuyboxAddToCartViewProps {\n const { id, typeName, context, resources } = props;\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product;\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const cart = props.data.cart?.result ?? productDetails?.cart;\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const productAvailableQuantity = props.data.productAvailableQuantity?.result ?? productDetails?.productAvailableQuantity;\n\n const {\n quantity,\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\n selectedProduct,\n isUpdatingDimension,\n isUpdatingDeliveryOptions,\n isServiceItem\n } = state;\n\n const productAvailability = state.productAvailableQuantity\n ? state.productAvailableQuantity.ProductAvailableQuantity\n : productAvailableQuantity && productAvailableQuantity.length > 0\n ? productAvailableQuantity[0].ProductAvailableQuantity\n : undefined;\n\n const dialogStrings: IAddToCartResources = {\n goToCartText: resources.buyBoxGoToCartText,\n continueShoppingText: resources.buyBoxContinueShoppingText,\n closeNotificationLabel: resources.closeNotificationLabel,\n headerItemOneText: resources.buyBoxSingleItemText,\n headerItemFormatText: resources.buyBoxMultiLineItemFormatText,\n headerMessageText: resources.buyBoxHeaderMessageText,\n freePriceText: resources.priceFree,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n addedQuantityText: resources.addedQuantityText\n };\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const isProductQuantityLoading = typeName !== 'quickview' && props.data.productAvailableQuantity.status === 'LOADING';\n if (isProductQuantityLoading) {\n callbacks.changeUpdatingDimension(false);\n }\n\n const isLoadingDeliveryOptions = typeName !== 'quickview' && props.data.deliveryOptions?.status === 'LOADING';\n if (isLoadingDeliveryOptions && callbacks.changeUpdatingDeliveryOptions) {\n callbacks.changeUpdatingDeliveryOptions(false);\n }\n\n telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.typeName, props.telemetry);\n\n // Check if the product delivery mode is electronic\n const emailDeliveryModeCode = props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode;\n // from quickview we are not getting deliveryoptions in props.data hence getting it from quickview state\n const deliveryOptions = typeName === 'quickview' ? state.productDeliveryOptions : props.data.deliveryOptions?.result;\n const isEmailDelivery =\n ArrayExtensions.hasElements(deliveryOptions?.DeliveryOptions) && deliveryOptions!.DeliveryOptions[0].Code === emailDeliveryModeCode;\n const className = _getClassNamePrefix(typeName);\n const isDisabled = isUpdatingDimension && typeName === 'quickview';\n const { enableHidePdpRepeatingErrors } = props.context.request.features;\n return {\n ContainerProps: {\n className: `${className}__add-to-cart-container`\n },\n button: product && (\n \n ),\n errorBlock: (\n \n )\n };\n}\n\n/**\n * Get the React.ReactElement contains price.\n * @param props - The IBuyboxExtentedProps.\n * @param state - The buybox state.\n * @returns The React.ReactElement.\n */\nexport function getBuyboxProductPrice(props: IBuyboxExtentedProps, state: IBuyboxState): React.ReactElement | undefined {\n const { id, typeName, context, resources } = props;\n\n return (\n state.productPrice && (\n featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n )?.IsEnabled\n }\n isSalesAgreementPriceFeatureEnabled={\n props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSalesAgreementPriceSupportFeature'\n )?.IsEnabled\n }\n priceResources={{\n priceRangeSeparator: resources.priceRangeSeparator,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n salesAgreementExpirationDatePrompt: resources.salesAgreementExpirationDatePrompt,\n salesAgreementCommittedQuantityPrompt: resources.salesAgreementCommittedQuantityPrompt,\n salesAgreementRemainingQuantityPrompt: resources.salesAgreementRemainingQuantityPrompt\n }}\n freePriceText={resources.priceFree}\n originalPriceText={resources.originalPriceText}\n currentPriceText={resources.currentPriceText}\n />\n )\n );\n}\n\nexport function getBuyboxProductRating(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { id, typeName, context, resources } = props;\n\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const ratingsSummary = props.data.ratingsSummary?.result ?? productDetails?.ratingsSummary;\n if (!ratingsSummary || !ratingsSummary.averageRating) {\n return
;\n }\n const ratingComponent = (\n \n );\n\n return ratingComponent;\n}\n\nfunction generateAddToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IAddToOrderTemplateDialogResources {\n return {\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\n\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\n\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\n\n selectTemplatesText: resources.selectTemplatesText,\n addToTemplateButtonText: resources.addToTemplateButtonText,\n lineItemsText: resources.lineItemsText\n };\n}\n\nfunction generateOrderTemplateNameDialogResources(resources: IBuyboxCommonResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n}\n\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IItemAddedToOrderTemplateDialogResources {\n return {\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\n continueShoppingButtonText: resources.continueShoppingButtonText,\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\n freePriceText: resources.priceFree,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText\n };\n}\n\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources: IBuyboxCommonResources\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\n return {\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\n updateQuantityButtonText: resources.updateQuantityButtonText,\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\n };\n}\n\n/**\n * Add to order template failed function.\n * @param callbacks -Buybox callbacks.\n * @param resources -Buybox common resources.\n * @param product -Simple product.\n * @returns Update error state.\n */\nconst onAddToOrderTemplateFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\n result: IOrderTemplateActionErrorResult\n) => {\n callbacks.updateErrorState({\n errorHost: 'ORDER_TEMPLATE',\n configureErrors:\n result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\n });\n};\n\nexport function getBuyboxProductAddToOrderTemplate(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n isMultipleCatalogsFeatureEnabled?: boolean,\n catalogId?: number\n): IBuyboxAddToOrderTemplateViewProps | undefined {\n const {\n id,\n typeName,\n context,\n data: {\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n resources\n } = props;\n\n const product = props.data.product?.result;\n\n const {\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\n quantity\n } = state;\n\n // If custom amount is selected, add-to-orderTemplate is disabled\n if (state.isCustomPriceSelected) {\n return undefined;\n }\n const className = _getClassNamePrefix(typeName);\n const { enableHidePdpRepeatingErrors } = props.context.request.features;\n\n return {\n ContainerProps: {\n className: `${className}__add-to-order-template-container`\n },\n button: product && orderTemplates && (\n \n ),\n errorBlock: (\n \n )\n };\n}\n\n/**\n * Renders add to comparison button for the given product.\n * @param productComparisonButton - React element of the button.\n * @param product - Product information.\n * @param catalogId - Current catalog.\n * @param state - Buybox state.\n * @returns React element of the button.\n */\nexport function getBuyboxProductComparisonButton(\n productComparisonButton: React.ReactNode,\n product: SimpleProduct,\n catalogId: number,\n state: IBuyboxState\n): JSX.Element | undefined {\n if (state.isCustomPriceSelected) {\n return undefined;\n }\n\n validateCatalogId(catalogId);\n return React.cloneElement(productComparisonButton as React.ReactElement, { product, catalogId });\n}\n\n/**\n * Add to wishlist failed function.\n * @param callbacks -Buybox callbacks.\n * @param resources -Buybox resources.\n * @param product -Simple product.\n * @returns Update error state.\n */\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\n result: IWishlistActionErrorResult\n) => {\n callbacks.updateErrorState({\n errorHost: 'WISHLIST',\n configureErrors:\n result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\n });\n};\n\nexport function getBuyboxProductAddToWishlist(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n productDetails?: IProductDetails\n): IBuyboxAddToWishlistViewProps | undefined {\n const {\n id,\n typeName,\n context,\n data: {\n wishlists: { result: wishlists }\n },\n resources\n } = props;\n\n const product = props.data.product?.result ? props.data.product.result : productDetails?.product;\n\n const {\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\n selectedProduct\n } = state;\n\n // If custom amount is selected, add-to-wishlist is disabled\n if (state.isCustomPriceSelected) {\n return undefined;\n }\n\n const className = _getClassNamePrefix(typeName);\n const { enableHidePdpRepeatingErrors } = props.context.request.features;\n return {\n ContainerProps: {\n className: `${className}__add-to-wishlist-container`\n },\n button: product && (\n \n ),\n errorBlock: (\n \n )\n };\n}\n\n/**\n * On quantity change function.\n * @param callbacks -Buybox callbacks.\n * @returns Update quantity.\n */\nconst onQuantityChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number) => {\n if (callbacks.updateQuantity) {\n callbacks.updateQuantity(newValue);\n }\n};\n\nexport function getBuyboxProductQuantity(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): IBuyboxProductQuantityViewProps {\n const { resources, typeName } = props;\n\n const {\n quantity,\n min,\n max,\n errorState: { quantityError }\n } = state;\n\n const className = _getClassNamePrefix(typeName);\n\n return {\n ContainerProps: {\n className: `${className}__quantity`\n },\n LabelContainerProps: {\n tag: 'label',\n className: `${className}__product-quantity-label`,\n htmlFor: `${className}__product-quantity-input`\n },\n heading:
{resources.productQuantityHeading}
,\n errors: quantityError && (\n \n \n ),\n input: (\n \n )\n };\n}\n\nexport function getBuyboxShopSimilarButton(\n props: IBuyboxExtentedProps,\n buttonType: ShopSimiliarButtonType\n): IBuyboxShopSimilarLookViewProps {\n const { resources, context, typeName } = props;\n const product = props.data.product?.result;\n\n const className = _getClassNamePrefix(typeName);\n const navigationUrl = (shopSimiliarButtonType: ShopSimiliarButtonType) => () => {\n const searchURL = getUrlSync('search', context && context.actionContext);\n const separator = searchURL!.includes('?') ? '&' : '?';\n document.location.href = `${searchURL}${separator}productId=${product &&\n product.RecordId}&recommendation=${shopSimiliarButtonType}`;\n };\n const telemetryText =\n buttonType === ShopSimiliarButtonType.Looks ? TelemetryConstant.ShopSimliarLooks : TelemetryConstant.ShopSimliarDescription;\n const payLoad = getPayloadObject('click', telemetryContent, telemetryText);\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n const text = buttonType === ShopSimiliarButtonType.Looks ? resources.shopSimilarLooksText : resources.shopSimilarDescriptionText;\n\n return {\n ContainerProps: {\n className: `${className}__shopsimilar${buttonType}`\n },\n input: (\n \n {text}\n \n )\n };\n}\n\n/**\n * On price change function.\n * @param callbacks -Buybox callbacks.\n * @returns Update key in price.\n */\nconst onPriceChangeHandler = (callbacks: IBuyboxCallbacks) => (event: React.ChangeEvent) => {\n const value = event.currentTarget.value;\n callbacks.updateKeyInPrice(value.length > 0 ? Number(value) : Number.parseFloat(value));\n};\n\nexport function getBuyboxKeyInPrice(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): IBuyboxKeyInPriceViewProps {\n const { config, resources } = props;\n\n const {\n errorState: {}\n } = state;\n\n const className = _getClassNamePrefix(props.typeName);\n\n return {\n ContainerProps: {\n className: `${className}__key_in_price`\n },\n LabelContainerProps: {\n tag: 'label',\n className: `${className}__key_in_price-label`,\n htmlFor: `${className}__key_in_price`\n },\n heading:
{resources.buyboxKeyInPriceLabelHeading}
,\n input: (\n \n )\n };\n}\n\nexport const BuyboxErrorBlock: React.FC = ({\n showError,\n configureErrors,\n quantityError,\n customAmountError,\n otherError,\n resources,\n enableHidePdpRepeatingErrors\n}) => {\n let errorMessages: (string | undefined)[] = [];\n\n // skip configuration repeating errors when flight is enabled\n if (!enableHidePdpRepeatingErrors) {\n errorMessages = Object.values(configureErrors).filter(message => message !== undefined);\n }\n\n // skip quantity repeating errors when flight is enabled\n if (quantityError && !enableHidePdpRepeatingErrors) {\n errorMessages.push(quantityError);\n }\n\n if (customAmountError) {\n errorMessages.push(customAmountError);\n }\n\n if (otherError) {\n errorMessages.push(otherError);\n }\n\n return (\n 0} color='danger' assertive aria-label={resources.buyboxErrorMessageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
\n {message}\n
\n );\n })}\n
\n );\n};\n\nexport function getQuantityLimitsMessages(\n props: IBuyboxExtentedProps,\n state: IBuyboxState\n): React.ReactElement | undefined {\n const { resources } = props;\n\n const { min, max } = state;\n\n if (!_isOrderQuantityLimitsFeatureEnabled(props) && !_isChannelLimitsFeatureEnabled(props)) {\n return undefined;\n }\n\n return (\n \n {_renderMaxLabel(props, max, resources.maxQuantityText)}\n {_renderMinLabel(props, min, resources.minQuantityText)}\n \n );\n}\n\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\nexport const EcommerceQuantityLimitConfigurationsFeatureName: string =\n 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature';\nexport const RevertToSiteBuilderOrderQuantityLimitsSettingsCRTFeatureName: string = 'RevertToSiteBuilderOrderQuantityLimitsSettings';\n\nconst _renderMaxLabel = (\n props: IBuyboxExtentedProps,\n max: number | undefined,\n maxQuantityText: string\n): React.ReactElement | undefined => {\n const { resources, typeName } = props;\n const className = _getClassNamePrefix(typeName);\n if (max && max !== 0 && max !== Number.MAX_VALUE) {\n return (\n

\n {resources.informationIconText}\n