{"version":3,"file":"static/js/31c30b5b44c64df93e1b.bundle.js","mappings":";6PA+BA,SAASA,EAA0CC,GAC/C,MAAO,CACHC,yBAA0BD,EAAUC,yBAEpCC,wBAAyBF,EAAUE,wBACnCC,4BAA6BH,EAAUG,4BAEvCC,gCAAiCJ,EAAUI,gCAC3CC,iCAAkCL,EAAUK,iCAC5CC,sCAAuCN,EAAUM,sCAEjDC,oBAAqBP,EAAUO,oBAC/BC,wBAAyBR,EAAUQ,wBACnCC,cAAeT,EAAUS,eASjC,SAASC,EAAyCV,GAC9C,MAAO,CACHW,yBAA0BX,EAAUY,0BACpCC,wBAAyBb,EAAUc,mBACnCC,2BAA4Bf,EAAUe,2BACtCC,yBAA0BhB,EAAUiB,+BAEpCC,yBAA0BlB,EAAUkB,yBAEpCC,yBAA0BnB,EAAUoB,8BACpCC,+BAAgCrB,EAAUsB,0CASlD,SAASC,EAAgDvB,GACrD,MAAO,CACHwB,4BAA6BxB,EAAUwB,4BACvCC,2BAA4BzB,EAAUyB,2BACtCC,0CAA2C1B,EAAU0B,0CACrDC,6CAA8C3B,EAAU2B,6CACxDC,0CAA2C5B,EAAU4B,0CACrDC,cAAe7B,EAAU8B,UACzBC,kBAAmB/B,EAAU+B,kBAC7BC,iBAAkBhC,EAAUgC,kBASpC,SAASC,EACLjC,GAEA,MAAO,CACHkC,yBAA0BlC,EAAUkC,yBACpCC,8BAA+BnC,EAAUmC,8BACzCC,yBAA0BpC,EAAUoC,yBACpCC,+BAAgCrC,EAAUqC,gCAWlD,MAAMC,EAA6BA,CAACC,EAA6BvC,EAAmCwC,IAChGC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlBH,EAAOI,QAAiCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MCzE5H,IAAKC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,eADJ,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBX,GAAiCY,IAClDZ,EAAUa,gBACHb,EAAUa,eAAeD,GA6HlCE,EAA2BA,CAC7BC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMG,qBAAuBjB,EAC9B,OAAO,KAGX,MAAMkB,ED7DoCC,EAC1CL,EACAC,EACAhB,EACAC,KAEA,MAAM,GAEFoB,EAAE,SACFC,EAAQ,QACRC,EACAN,MACIO,gBAAkBtB,OAAQsB,GAC1BC,qBAAuBvB,OAAQuB,IAClC,UACDhE,GACAsD,GAEE,SAAEW,GAAaV,EAIrB,OACIQ,GACIG,EAAAA,cAACC,EAAAA,4BAA2B,CACxBC,UAAU,gCACVC,6BAA8BrE,EAAUqE,6BACxCC,gCAAiCtE,EAAUsE,gCAC3CC,kCAAmCxE,EAA0CC,GAC7EwE,mCAAoC9D,EAAyCV,GAC7EyE,wCAAyClD,EAAgDvB,GACzF0E,uDAAwDzC,EACpDjC,GAEJwD,KAAM,CAAEhB,QAAAA,EAASyB,SAAAA,EAAUF,eAAAA,EAAgBC,oBAAAA,GAC3CF,QAASA,EACTF,GAAIA,EACJC,SAAUA,EACVc,QAASrC,EAA2BC,EAAWvC,EAAWwC,GAC1DoC,8BAA+BrB,EAAMsB,sBACrCC,mBAAmB,EACnBC,gBArBa,KCyCGpB,CAA+BL,EAAOC,EAAOhB,EAAWC,GAEpF,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMG,mBAAmB0B,gBAC9B7B,EAAMG,mBAAmB2B,WACzB1B,IAYP2B,EAAwBA,CAAC9C,EAA6BvC,EAAmCwC,IAC3FC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlBH,EAAOI,QAAgCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MAmD5HsC,EAAsBA,CACxBhC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMiC,gBAAkB/C,EACzB,OAAO,KAGX,IAAKc,EAAMkC,OAAOC,eACd,OAAO,KAGX,MAAMC,EArDwBC,EAC9BrC,EACAC,EACAhB,EACAC,KAEA,MAAM,QAAEsB,EAAO,UAAE9D,GAAcsD,EACzBsC,EAAYtC,EAAME,KAAKoC,UAAUnD,OAEvC,OACIyB,EAAAA,cAAC2B,EAAAA,uBAAsB,CACnBzB,UAAU,gCACV0B,wBAAyB9F,EAAU8F,wBACnCC,6BAA8B/F,EAAU+F,6BACxCC,qBAAsBhG,EAAUgG,qBAChCC,2BAA4BjG,EAAUiG,2BACtCC,uBAAwBlG,EAAUkG,uBAClCC,4BAA6BnG,EAAUmG,4BACvCC,eAAgBpG,EAAUoG,eAC1B5C,KAAM,CAAEhB,QAAAA,EAASoD,UAAAA,GACjB9B,QAASA,EACTuC,SAAS,SACTzC,GAAIN,EAAMM,GACVC,SAAUP,EAAMO,SAChBc,QAASU,EAAsB9C,EAAWvC,EAAWwC,GACrD8D,mBAAoB/C,EAAMgD,gBAC1BxB,gBAlBwB,EAmBxBD,mBAAmB,KA0BJa,CAA0BrC,EAAOC,EAAOhB,EAAWC,GAC1E,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMiC,cAAcJ,gBACzB7B,EAAMiC,cAAcH,WACpBM,IAUPc,EAAyBC,IAE3B,MAAM,eAAEtB,EAAc,OAAEuB,EAAM,MAAEC,GAAUF,EAE1C,OACIvC,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLuB,EACAC,IAuBPC,EAA2BC,IAC7B,MAAM,eAAE1B,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,EAAM,OAAEM,GAAWH,EAEzE,OACI3C,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BC,EACAN,IA2Qb,EAtPoFpD,IAAQ,IAAA2D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAGxF,MAAM,YACFC,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlE,EAAkB,cAClB8B,EAAa,wBACbqC,EAAuB,UACvBC,EAAS,YACTC,EAAW,YACXC,EAAW,SACX9D,EAAQ,MACR+D,EAAK,MACLC,EAAK,OACLC,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IAEtBC,EAAG,cACHC,EAAa,UACbjG,EAAS,MACTgB,EAAK,UACLvD,EAAS,uBACTyI,EAAsB,iBACtBC,EACAC,KAAOnD,OAAQoD,GAAW,SAC1BC,GACAvF,EACJ,IAAIwF,EAAkBxF,EAAMtD,UAAU8I,QACtCA,GAAoC,QAA7B7B,EAAI3D,EAAME,KAAKhB,QAAQC,cAAM,IAAAwE,OAAA,EAAzBA,EAA2B8B,OACtC,MAAMC,EAAwF,QAAtE9B,EAA2B5D,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAyE,OAAA,EAA3CA,EAA6CgC,eAC1FC,EAAmBH,MAAAA,GAAAA,EAAoBI,QAAUJ,EAAmBI,QAAU,GAC9EC,EAAqBL,MAAAA,GAAAA,EAAoBM,UAAYN,EAAmBM,UAAY,IAEnFC,EAAcC,GAAmBtF,EAAAA,SAAuB,KACxDuF,EAAeC,IAAoBxF,EAAAA,UAAwB,GAsB5DyF,GAAezF,EAAAA,aAAkB0F,UAAW,IAAAC,EAC9C,MAAMlD,EAAQ,IAAImD,EAAAA,qCACW,QADyBD,EAClDvG,EAAME,KAAKhB,QAAQC,cAAM,IAAAoH,OAAA,EAAzBA,EAA2BE,SAC3B9G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,MAChB,SAoBEC,EAAAA,EAAAA,iCAAgCtD,EAAOrD,EAAMQ,QAAQoG,eACtDC,OAAOC,IACJ9G,EAAM+G,UAAUD,MAAMA,EAAME,YAE/BC,MAAKC,IACF,GAAIA,GAAYC,EAAAA,gBAAgBC,YAAYF,GAAW,KAAAG,EACnD,MAAMC,EAAoBC,IAA+B,IAAAC,EAAA,OAC5B,QAAzBA,EAAAD,EAAME,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB9B,GAC5D+B,EAAkCV,EAASW,OAAOP,GAClDQ,EAA6BX,EAAAA,gBAAgBC,YAAYQ,GACzDA,EAAgCjI,EAAgB+G,WAChDqB,EACAC,EAtDUC,CAAAA,IAC5B,GAAIA,GAAyBd,EAAAA,gBAAgBC,YAAYa,EAAsBC,6BAC3E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,KAAAE,EACzF,IAC6C,QAAzCA,EAAAH,EAAsBR,2BAAmB,IAAAW,GAAiB,QAAjBA,EAAzCA,EAA2CV,uBAAe,IAAAU,OAAA,EAA1DA,EAA4DC,uBAC5DF,EAA4BG,iBAE5B,OAAOH,EAA4BI,kBA+CUC,CAAuBV,GAE9DW,GA1BQC,EAyBqBZ,MAAAA,GAA+C,QAArBT,EAA1BS,EAA4BL,2BAAmB,IAAAJ,OAAA,EAA/CA,EAAiDsB,oBAxBvFrD,EAAUsD,oBAIXzB,EAAAA,gBAAgBC,YAAYsB,IACrBA,EAAmB/I,EAAgB+G,MAAMmC,kBAAqBlJ,EAAgB+G,MAoB/C1G,EAAMtD,UAAUoM,YAAc9I,EAAMtD,UAAUqM,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGC,EAAAA,EAAAA,QACtClJ,EAAMtD,UAAUyM,iCAChBpD,MACCiD,IACL9C,EAAgB+C,GAhCFP,IAAAA,KAoC1BtC,IAAiB,KAClB,CAC0B,QAD1BvC,EACC7D,EAAME,KAAKhB,QAAQC,cAAM,IAAA0E,OAAA,EAAzBA,EAA2B4C,SAC3BnB,EAAUsD,iBACV/C,EACAE,EACA/F,EAAMQ,QAAQoG,cACd5G,EAAMtD,UAAUyM,iCAChBnJ,EAAMtD,UAAUoM,YAChB9I,EAAMtD,UAAUqM,eAChB/I,EAAM+G,YAGVnG,EAAAA,WAAgB,KACRZ,EAAMkC,OAAOkH,0BACb/C,KAAeQ,OAAOC,IAClB9G,EAAM+G,UAAUD,MAAMA,EAAME,cAGrC,CAACX,GAAcF,EAAenG,EAAM+G,UAAW/G,EAAMkC,OAAOkH,4BAE/DC,EAAAA,EAAAA,KACI,SAAAC,EAAA,OAAiD,QAAjDA,EAAMtJ,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAmK,OAAA,EAA3CA,EAA6CC,2BACnD,KACInD,IAAiB,MAQzB,MAsBMoD,GAAwD,QAA7C1F,EAAG9D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA2E,OAAA,EAA1CA,EAA4C4F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAUsE,2BACnGC,GAAsD,QAA7C9F,EAAG/D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA4E,OAAA,EAA1CA,EAA4C2F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAUwE,yBACjGC,GAAwD,QAA7C/F,EAAGhE,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA6E,OAAA,EAA1CA,EAA4C0F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAU0E,2BACnGC,GAA8D,QAA7ChG,EAAGjE,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA8E,OAAA,EAA1CA,EAA4CyF,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAU4E,iCAC/G,OACItJ,EAAAA,cAACuJ,EAAAA,OAAMxI,OAAAC,OAAA,GAAKsC,GACRtD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKuC,GAA6BnE,EAAMoK,cAC7CxJ,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKwC,GACNxD,EAAAA,cAAA,KAAGE,UAAU,yCACTF,EAAAA,cAAA,YAAOiJ,MAAAA,QAAS,EAATA,GAAWQ,WAClBzJ,EAAAA,cAAA,YAAO2E,GAAYA,EAAS,GAAGoE,OAElChF,EACD/D,EAAAA,cAAA,OAAKE,UAAU,4CACXF,EAAAA,cAAA,QAAME,UAAU,wCAAwCd,EAAMtD,UAAU4N,SAAQ,IAAGd,MAAAA,QAAW,EAAXA,GAAae,WAAU,IAAGR,MAAAA,QAAW,EAAXA,GAAaM,YAE9HzJ,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,+BAEZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwC0E,GACtDZ,GAGLhE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,6BACZF,EAAAA,cAAA,OAAKE,UAAU,kCAAkCd,EAAMtD,UAAU8N,WAChE9F,GAEJH,GA9MQA,CAAAA,IACrB,MAAM,eAAE1C,EAAc,UAAE4I,GAAclG,EAEtC,OAAO3D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GAAiB4I,EAAUC,IAAIpH,KA2MtBqH,CAAgBpG,GAC7BQ,GAvaSA,CAAAA,IACtB,MAAM,eAAElD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,MAAEJ,GAAU0B,EAEhE,OACInE,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BJ,IAiakBuH,CAAiB7F,GAChCnE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCACZF,EAAAA,cAAA,OAAKE,UAAU,yCACVH,GA5dFkK,EACnBC,EACA7L,EACAe,EACAC,EACA8K,EACA5F,EAGAF,EACAG,EACAF,KAGA,MAAM,eAAErD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,GAAW0H,GAE3D,UAAEpO,GAAcsD,GAEhB,SAAEW,GAAaV,EAErB,OACIW,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAGLxC,EAAAA,cAACoK,EAAAA,oBAAmB,CAChB1K,GAAG,oCACH2E,IAAKA,EACLgG,aAActK,EACduK,SAAUtL,EAAgBX,GAC1BkM,uBAAwBzO,EAAUyO,uBAClCC,yBAA0B1O,EAAU0O,yBACpCC,yBAA0B3O,EAAU2O,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpCnG,iBAAkBA,IAErBF,EACAC,IAqbe0F,CACIlK,EACA1B,EACAe,EACAC,EACAvD,EACAyI,EACAF,EACAG,EACAF,GAEPlF,EAAMwL,iBACP5K,EAAAA,cAAA,QAAME,UAAU,8BAA8Bd,EAAMkC,OAAOuJ,sBAGlEzL,EAAMkC,OAAOkH,0BAA4BvD,GApEX6F,MAA8B,IAAAC,EAAAC,EAErE,GAD6BzE,EAAAA,gBAAgBC,YAAqC,QAA1BuE,EAAC3L,EAAME,KAAKhB,QAAQC,cAAM,IAAAwM,OAAA,EAAzBA,EAA2BE,kBACT9D,KAAtB,QAAzB6D,EAAA5L,EAAME,KAAKhB,QAAQC,cAAM,IAAAyM,OAAA,EAAzBA,EAA2BE,iBACnD,OAOJ,OAAOlL,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GALuB,CAC/Bd,UAAW,0CACXiL,IAAK,SAGyB9F,IA0DoCyF,GAC7D7G,EA3aQR,CAAAA,IAErB,MAAM,eAAExC,EAAc,WAAEC,EAAU,OAAEkK,GAAW3H,EAE/C,OACIzD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLC,EACAkK,IAqaIC,CAAgB5H,GAChBI,GA5ZUA,CAAAA,IAEvB,MAAM,eAAE5C,EAAc,cAAEqK,EAAa,QAAEzI,EAAO,YAAEe,EAAW,OAAEpB,EAAM,OAAE4I,EAAM,MAAEG,EAAK,wBAAEC,GAA4B3H,EAEhH,OACI7D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLqK,EACAzI,EACA2I,EACA5H,EACApB,EACA4I,EACAG,IAgZmBE,CAAkB5H,GACjCxC,GAAiBD,EAAoBhC,EAAOC,EAAOhB,GACnDqF,EACAnE,GAAsBJ,EAAyBC,EAAOC,EAAOhB,GAtQlDqN,CAAAA,IACxB,GAAKA,GAAsC,IAAvBA,EAAYC,OAIhC,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAG0L,EAAY,KAqQTE,CAAmBxM,EAAMyM,OAASzM,EAAMyM,MAAMH,aAG/C1L,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,gCACXgE,GAAmB5B,EAAsB4B,GACzCE,GAA0B9B,EAAsB8B,IAErDpE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,mCACZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwCd,EAAMtD,UAAUgQ,iBACvE9L,EAAAA,cAAC+L,EAAAA,GAAI,CAAC7L,UAAU,iCAAiC8L,KA1ExCC,CAAAA,IACrB,IAAKA,EACD,MAAO,GAIX,OAFeA,EACkB7M,MAAM8M,UAqE4BC,CAAgBvI,KACtEyF,IAAqD,KAAhCA,GAAkBI,WAAoBzJ,EAAAA,cAAC+L,EAAAA,GAAI,CAAC7L,UAAU,iCAAiC8L,KAAM3C,MAAAA,QAAiB,EAAjBA,GAAmBI,aAGzIlD,EAAAA,gBAAgBC,YAAYpH,EAAMyM,MAAMO,sBACrCpM,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCAAqCd,EAAMyM,MAAMO,qBAAqB,IACtF,iKC5iBpB,SAASvQ,EAA0CC,GAC/C,MAAO,CACHC,yBAA0BD,EAAUC,yBAEpCC,wBAAyBF,EAAUE,wBACnCC,4BAA6BH,EAAUG,4BAEvCC,gCAAiCJ,EAAUI,gCAC3CC,iCAAkCL,EAAUK,iCAC5CC,sCAAuCN,EAAUM,sCAEjDC,oBAAqBP,EAAUO,oBAC/BC,wBAAyBR,EAAUQ,wBACnCC,cAAeT,EAAUS,eASjC,SAASC,EAAyCV,GAC9C,MAAO,CACHW,yBAA0BX,EAAUY,0BACpCC,wBAAyBb,EAAUc,mBACnCC,2BAA4Bf,EAAUe,2BACtCC,yBAA0BhB,EAAUiB,+BAEpCC,yBAA0BlB,EAAUkB,yBAEpCC,yBAA0BnB,EAAUoB,8BACpCC,+BAAgCrB,EAAUsB,0CASlD,SAASC,EAAgDvB,GACrD,MAAO,CACHwB,4BAA6BxB,EAAUwB,4BACvCC,2BAA4BzB,EAAUyB,2BACtCC,0CAA2C1B,EAAU0B,0CACrDC,6CAA8C3B,EAAU2B,6CACxDC,0CAA2C5B,EAAU4B,0CACrDC,cAAe7B,EAAU8B,UACzBC,kBAAmB/B,EAAU+B,kBAC7BC,iBAAkBhC,EAAUgC,kBASpC,SAASC,EACLjC,GAEA,MAAO,CACHkC,yBAA0BlC,EAAUkC,yBACpCC,8BAA+BnC,EAAUmC,8BACzCC,yBAA0BpC,EAAUoC,yBACpCC,+BAAgCrC,EAAUqC,gCAWlD,MAAMC,EAA6BA,CAACC,EAA6BvC,EAAmCwC,IAChGC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlBH,EAAOI,QAAiCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MCzE5H,IAAKC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,eADJ,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBX,GAAiCY,IAClDZ,EAAUa,gBACHb,EAAUa,eAAeD,GA6HlCE,EAA2BA,CAC7BC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMG,qBAAuBjB,EAC9B,OAAO,KAGX,MAAMkB,ED7DoCC,EAC1CL,EACAC,EACAhB,EACAC,KAEA,MAAM,GAEFoB,EAAE,SACFC,EAAQ,QACRC,EACAN,MACIO,gBAAkBtB,OAAQsB,GAC1BC,qBAAuBvB,OAAQuB,IAClC,UACDhE,GACAsD,GAEE,SAAEW,GAAaV,EAIrB,OACIQ,GACIG,EAAAA,cAACC,EAAAA,4BAA2B,CACxBC,UAAU,gCACVC,6BAA8BrE,EAAUqE,6BACxCC,gCAAiCtE,EAAUsE,gCAC3CC,kCAAmCxE,EAA0CC,GAC7EwE,mCAAoC9D,EAAyCV,GAC7EyE,wCAAyClD,EAAgDvB,GACzF0E,uDAAwDzC,EACpDjC,GAEJwD,KAAM,CAAEhB,QAAAA,EAASyB,SAAAA,EAAUF,eAAAA,EAAgBC,oBAAAA,GAC3CF,QAASA,EACTF,GAAIA,EACJC,SAAUA,EACVc,QAASrC,EAA2BC,EAAWvC,EAAWwC,GAC1DoC,8BAA+BrB,EAAMsB,sBACrCC,mBAAmB,EACnBC,gBArBa,KCyCGpB,CAA+BL,EAAOC,EAAOhB,EAAWC,GAEpF,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMG,mBAAmB0B,gBAC9B7B,EAAMG,mBAAmB2B,WACzB1B,IAYP2B,EAAwBA,CAAC9C,EAA6BvC,EAAmCwC,IAC3FC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlBH,EAAOI,QAAgCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MAmD5HsC,EAAsBA,CACxBhC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMiC,gBAAkB/C,EACzB,OAAO,KAGX,IAAKc,EAAMkC,OAAOC,eACd,OAAO,KAGX,MAAMC,EArDwBC,EAC9BrC,EACAC,EACAhB,EACAC,KAEA,MAAM,QAAEsB,EAAO,UAAE9D,GAAcsD,EACzBsC,EAAYtC,EAAME,KAAKoC,UAAUnD,OAEvC,OACIyB,EAAAA,cAAC2B,EAAAA,uBAAsB,CACnBzB,UAAU,gCACV0B,wBAAyB9F,EAAU8F,wBACnCC,6BAA8B/F,EAAU+F,6BACxCC,qBAAsBhG,EAAUgG,qBAChCC,2BAA4BjG,EAAUiG,2BACtCC,uBAAwBlG,EAAUkG,uBAClCC,4BAA6BnG,EAAUmG,4BACvCC,eAAgBpG,EAAUoG,eAC1B5C,KAAM,CAAEhB,QAAAA,EAASoD,UAAAA,GACjB9B,QAASA,EACTuC,SAAS,SACTzC,GAAIN,EAAMM,GACVC,SAAUP,EAAMO,SAChBc,QAASU,EAAsB9C,EAAWvC,EAAWwC,GACrD8D,mBAAoB/C,EAAMgD,gBAC1BxB,gBAlBwB,EAmBxBD,mBAAmB,KA0BJa,CAA0BrC,EAAOC,EAAOhB,EAAWC,GAC1E,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMiC,cAAcJ,gBACzB7B,EAAMiC,cAAcH,WACpBM,IAUPc,EAAyBC,IAE3B,MAAM,eAAEtB,EAAc,OAAEuB,EAAM,MAAEC,GAAUF,EAE1C,OACIvC,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLuB,EACAC,IAuBPC,EAA2BC,IAC7B,MAAM,eAAE1B,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,EAAM,OAAEM,GAAWH,EAEzE,OACI3C,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BC,EACAN,IA0Qb,EArPoFpD,IAAQ,IAAA2D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAGxF,MAAM,YACFE,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlE,EAAkB,cAClB8B,EAAa,wBACbqC,EAAuB,UACvBC,EAAS,YACTC,EAAW,YACXC,EAAW,SACX9D,EAAQ,MACR+D,EAAK,MACLC,EAAK,OACLC,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IAEtBC,EAAG,cACHC,EAAa,UACbjG,EAAS,MACTgB,EAAK,UACLvD,EAAS,uBACTyI,EAAsB,iBACtBC,EACAC,KAAOnD,OAAQoD,GAAW,SAC1BC,GACAvF,EACJ,IAAIwF,EAAkBxF,EAAMtD,UAAU8I,QACtCA,GAAoC,QAA7B7B,EAAI3D,EAAME,KAAKhB,QAAQC,cAAM,IAAAwE,OAAA,EAAzBA,EAA2B8B,OACtC,MAAMC,EAAwF,QAAtE9B,EAA2B5D,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAyE,OAAA,EAA3CA,EAA6CgC,eAC1FC,EAAmBH,MAAAA,GAAAA,EAAoBI,QAAUJ,EAAmBI,QAAU,GAC9EC,EAAqBL,MAAAA,GAAAA,EAAoBM,UAAYN,EAAmBM,UAAY,IAEnFC,EAAcC,GAAmBtF,EAAAA,SAAuB,KACxDuF,EAAeC,GAAoBxF,EAAAA,UAAwB,GAsB5DyF,GAAezF,EAAAA,aAAkB0F,UAAW,IAAAC,EAC9C,MAAMlD,EAAQ,IAAImD,EAAAA,qCACW,QADyBD,EAClDvG,EAAME,KAAKhB,QAAQC,cAAM,IAAAoH,OAAA,EAAzBA,EAA2BE,SAC3B9G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,MAChB,SAoBEC,EAAAA,EAAAA,iCAAgCtD,EAAOrD,EAAMQ,QAAQoG,eACtDC,OAAOC,IACJ9G,EAAM+G,UAAUD,MAAMA,EAAME,YAE/BC,MAAKC,IACF,GAAIA,GAAYC,EAAAA,gBAAgBC,YAAYF,GAAW,KAAAG,EACnD,MAAMC,EAAoBC,IAA+B,IAAAC,EAAA,OAC5B,QAAzBA,EAAAD,EAAME,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB9B,GAC5D+B,EAAkCV,EAASW,OAAOP,GAClDQ,EAA6BX,EAAAA,gBAAgBC,YAAYQ,GACzDA,EAAgCjI,EAAgB+G,WAChDqB,EACAC,EAtDUC,CAAAA,IAC5B,GAAIA,GAAyBd,EAAAA,gBAAgBC,YAAYa,EAAsBC,6BAC3E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,KAAAE,EACzF,IAC6C,QAAzCA,EAAAH,EAAsBR,2BAAmB,IAAAW,GAAiB,QAAjBA,EAAzCA,EAA2CV,uBAAe,IAAAU,OAAA,EAA1DA,EAA4DC,uBAC5DF,EAA4BG,iBAE5B,OAAOH,EAA4BI,kBA+CUC,CAAuBV,GAE9DW,GA1BQC,EAyBqBZ,MAAAA,GAA+C,QAArBT,EAA1BS,EAA4BL,2BAAmB,IAAAJ,OAAA,EAA/CA,EAAiDsB,oBAxBvFrD,EAAUsD,oBAIXzB,EAAAA,gBAAgBC,YAAYsB,IACrBA,EAAmB/I,EAAgB+G,MAAMmC,kBAAqBlJ,EAAgB+G,MAoB/C1G,EAAMtD,UAAUoM,YAAc9I,EAAMtD,UAAUqM,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGC,EAAAA,EAAAA,QACtClJ,EAAMtD,UAAUyM,iCAChBpD,MACCiD,IACL9C,EAAgB+C,GAhCFP,IAAAA,KAoC1BtC,GAAiB,KAClB,CAC0B,QAD1BvC,EACC7D,EAAME,KAAKhB,QAAQC,cAAM,IAAA0E,OAAA,EAAzBA,EAA2B4C,SAC3BnB,EAAUsD,iBACV/C,EACAE,EACA/F,EAAMQ,QAAQoG,cACd5G,EAAMtD,UAAUyM,iCAChBnJ,EAAMtD,UAAUoM,YAChB9I,EAAMtD,UAAUqM,eAChB/I,EAAM+G,YAGVnG,EAAAA,WAAgB,KACRZ,EAAMkC,OAAOkH,0BACb/C,KAAeQ,OAAOC,IAClB9G,EAAM+G,UAAUD,MAAMA,EAAME,cAGrC,CAACX,GAAcF,EAAenG,EAAM+G,UAAW/G,EAAMkC,OAAOkH,4BAE/DC,EAAAA,EAAAA,KACI,SAAAC,EAAA,OAAiD,QAAjDA,EAAMtJ,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAmK,OAAA,EAA3CA,EAA6CC,2BACnD,KACInD,GAAiB,MAQzB,MAsBMoD,GAAwD,QAA7C1F,EAAG9D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA2E,OAAA,EAA1CA,EAA4C4F,MAAKvK,GAAUA,EAAOsH,WAAanB,EAAU2H,+BACvGpD,GAAsD,QAA7C9F,EAAG/D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA4E,OAAA,EAA1CA,EAA4C2F,MAAKvK,GAAUA,EAAOsH,WAAanB,EAAU4H,6BACrGnD,GAAwD,QAA7C/F,EAAGhE,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA6E,OAAA,EAA1CA,EAA4C0F,MAAKvK,GAAUA,EAAOsH,WAAanB,EAAU6H,+BAE7G,OACIvM,EAAAA,cAACuJ,EAAAA,OAAMxI,OAAAC,OAAA,GAAKsC,GACRtD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKuC,GAA6BnE,EAAMoK,cAC7CxJ,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKwC,GACNxD,EAAAA,cAAA,KAAGE,UAAU,yCACTF,EAAAA,cAAA,YAAOiJ,MAAAA,QAAS,EAATA,GAAWQ,WAClBzJ,EAAAA,cAAA,YAAO2E,GAAYA,EAAS,GAAGoE,OAElChF,EACD/D,EAAAA,cAAA,OAAKE,UAAU,4CACXF,EAAAA,cAAA,QAAME,UAAU,wCAAwCd,EAAMtD,UAAU4N,SAAQ,IAAGd,MAAAA,QAAW,EAAXA,GAAae,WAAU,IAAGR,MAAAA,QAAW,EAAXA,GAAaM,YAE9HzJ,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,+BAEZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwC0E,GACtDZ,GAGLhE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,6BACZF,EAAAA,cAAA,OAAKE,UAAU,kCAAkCd,EAAMtD,UAAU8N,WAChE9F,GAEJH,GA9MQA,CAAAA,IACrB,MAAM,eAAE1C,EAAc,UAAE4I,GAAclG,EAEtC,OAAO3D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GAAiB4I,EAAUC,IAAIpH,KA2MtBqH,CAAgBpG,GAC7BQ,GAvaSA,CAAAA,IACtB,MAAM,eAAElD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,MAAEJ,GAAU0B,EAEhE,OACInE,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BJ,IAiakBuH,CAAiB7F,GAChCnE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCACZF,EAAAA,cAAA,OAAKE,UAAU,yCACVH,GA5dFkK,EACnBC,EACA7L,EACAe,EACAC,EACA8K,EACA5F,EAGAF,EACAG,EACAF,KAGA,MAAM,eAAErD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,GAAW0H,GAE3D,UAAEpO,GAAcsD,GAEhB,SAAEW,GAAaV,EAErB,OACIW,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAGLxC,EAAAA,cAACoK,EAAAA,oBAAmB,CAChB1K,GAAG,oCACH2E,IAAKA,EACLgG,aAActK,EACduK,SAAUtL,EAAgBX,GAC1BkM,uBAAwBzO,EAAUyO,uBAClCC,yBAA0B1O,EAAU0O,yBACpCC,yBAA0B3O,EAAU2O,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpCnG,iBAAkBA,IAErBF,EACAC,IAqbe0F,CACIlK,EACA1B,EACAe,EACAC,EACAvD,EACAyI,EACAF,EACAG,EACAF,GAEPlF,EAAMwL,iBACP5K,EAAAA,cAAA,QAAME,UAAU,8BAA8Bd,EAAMkC,OAAOuJ,sBAGlEzL,EAAMkC,OAAOkH,0BAA4BvD,GApEX6F,MAA8B,IAAAC,EAAAC,EAErE,GAD6BzE,EAAAA,gBAAgBC,YAAqC,QAA1BuE,EAAC3L,EAAME,KAAKhB,QAAQC,cAAM,IAAAwM,OAAA,EAAzBA,EAA2BE,kBACT9D,KAAtB,QAAzB6D,EAAA5L,EAAME,KAAKhB,QAAQC,cAAM,IAAAyM,OAAA,EAAzBA,EAA2BE,iBACnD,OAOJ,OAAOlL,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GALuB,CAC/Bd,UAAW,0CACXiL,IAAK,SAGyB9F,IA0DoCyF,GAC7D7G,EA3aQR,CAAAA,IAErB,MAAM,eAAExC,EAAc,WAAEC,EAAU,OAAEkK,GAAW3H,EAE/C,OACIzD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLC,EACAkK,IAqaIC,CAAgB5H,GAChBI,GA5ZUA,CAAAA,IAEvB,MAAM,eAAE5C,EAAc,cAAEqK,EAAa,QAAEzI,EAAO,YAAEe,EAAW,OAAEpB,EAAM,OAAE4I,EAAM,MAAEG,EAAK,wBAAEC,GAA4B3H,EAEhH,OACI7D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLqK,EACAzI,EACA2I,EACA5H,EACApB,EACA4I,EACAG,IAgZmBE,CAAkB5H,GACjCxC,GAAiBD,EAAoBhC,EAAOC,EAAOhB,GACnDqF,EACAnE,GAAsBJ,EAAyBC,EAAOC,EAAOhB,GAtQlDqN,CAAAA,IACxB,GAAKA,GAAsC,IAAvBA,EAAYC,OAIhC,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAG0L,EAAY,KAqQTE,CAAmBxM,EAAMyM,OAASzM,EAAMyM,MAAMH,aAG/C1L,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,gCACXgE,GAAmB5B,EAAsB4B,GACzCE,GAA0B9B,EAAsB8B,IAErDpE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,mCACZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwCd,EAAMtD,UAAUgQ,iBACvE9L,EAAAA,cAAC+L,EAAAA,GAAI,CAAC7L,UAAU,iCAAiC8L,KA1ExCC,CAAAA,IACrB,IAAKA,EACD,MAAO,GAIX,OAFeA,EACkB7M,MAAM8M,UAqE4BC,CAAgBvI,MAG1E2C,EAAAA,gBAAgBC,YAAYpH,EAAMyM,MAAMO,sBACrCpM,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCAAqCd,EAAMyM,MAAMO,qBAAqB,IACtF,iKC3iBpB,SAASvQ,EAA0CC,GAC/C,MAAO,CACHC,yBAA0BD,EAAUC,yBAEpCC,wBAAyBF,EAAUE,wBACnCC,4BAA6BH,EAAUG,4BAEvCC,gCAAiCJ,EAAUI,gCAC3CC,iCAAkCL,EAAUK,iCAC5CC,sCAAuCN,EAAUM,sCAEjDC,oBAAqBP,EAAUO,oBAC/BC,wBAAyBR,EAAUQ,wBACnCC,cAAeT,EAAUS,eASjC,SAASC,EAAyCV,GAC9C,MAAO,CACHW,yBAA0BX,EAAUY,0BACpCC,wBAAyBb,EAAUc,mBACnCC,2BAA4Bf,EAAUe,2BACtCC,yBAA0BhB,EAAUiB,+BAEpCC,yBAA0BlB,EAAUkB,yBAEpCC,yBAA0BnB,EAAUoB,8BACpCC,+BAAgCrB,EAAUsB,0CASlD,SAASC,EAAgDvB,GACrD,MAAO,CACHwB,4BAA6BxB,EAAUwB,4BACvCC,2BAA4BzB,EAAUyB,2BACtCC,0CAA2C1B,EAAU0B,0CACrDC,6CAA8C3B,EAAU2B,6CACxDC,0CAA2C5B,EAAU4B,0CACrDC,cAAe7B,EAAU8B,UACzBC,kBAAmB/B,EAAU+B,kBAC7BC,iBAAkBhC,EAAUgC,kBASpC,SAASC,EACLjC,GAEA,MAAO,CACHkC,yBAA0BlC,EAAUkC,yBACpCC,8BAA+BnC,EAAUmC,8BACzCC,yBAA0BpC,EAAUoC,yBACpCC,+BAAgCrC,EAAUqC,gCAWlD,MAAMC,EAA6BA,CAACC,EAA6BvC,EAAmCwC,IAChGC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlBH,EAAOI,QAAiCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MCzE5H,IAAKC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,eADJ,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBX,GAAiCY,IAClDZ,EAAUa,gBACHb,EAAUa,eAAeD,GA6HlCE,EAA2BA,CAC7BC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMG,qBAAuBjB,EAC9B,OAAO,KAGX,MAAMkB,ED7DoCC,EAC1CL,EACAC,EACAhB,EACAC,KAEA,MAAM,GAEFoB,EAAE,SACFC,EAAQ,QACRC,EACAN,MACIO,gBAAkBtB,OAAQsB,GAC1BC,qBAAuBvB,OAAQuB,IAClC,UACDhE,EAAS,OACTwF,GACAlC,GAEE,SAAEW,GAAaV,EAGfmN,EAAmCpN,EAAMqN,0CAA2C,EAC1F,OACI5M,GACIG,EAAAA,cAACC,EAAAA,4BAA2Bc,OAAAC,OAAA,CACxBd,UAAU,gCACVC,6BAA8BrE,EAAUqE,6BACxCC,gCAAiCtE,EAAUsE,gCAC3CC,kCAAmCxE,EAA0CC,GAC7EwE,mCAAoC9D,EAAyCV,GAC7EyE,wCAAyClD,EAAgDvB,GACzF0E,uDAAwDzC,EACpDjC,GAEJwD,KAAM,CAAEhB,QAAAA,EAASyB,SAAAA,EAAUF,eAAAA,EAAgBC,oBAAAA,GAC3CF,QAASA,EACTF,GAAIA,EACJC,SAAUA,EACVc,QAASrC,EAA2BC,EAAWvC,EAAWwC,GAC1DoC,8BAA+BrB,EAAMsB,sBACrCC,mBAAmB,EACnBC,gBArBa,EAsBb6L,cAAepL,QAAmC6F,IAAzB7F,EAAOoL,cAA8BpL,EAAOoL,mBAAgBvF,EACrFwF,oCAAqCH,GAChCA,GAAoC,CAAEI,UAAWxN,EAAMyN,qBCgB5CpN,CAA+BL,EAAOC,EAAOhB,EAAWC,GAEpF,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMG,mBAAmB0B,gBAC9B7B,EAAMG,mBAAmB2B,WACzB1B,IAYP2B,EAAwBA,CAAC9C,EAA6BvC,EAAmCwC,IAC3FC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlBH,EAAOI,QAAgCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MAmD5HsC,EAAsBA,CACxBhC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMiC,gBAAkB/C,EACzB,OAAO,KAGX,IAAKc,EAAMkC,OAAOC,eACd,OAAO,KAGX,MAAMC,EArDwBC,EAC9BrC,EACAC,EACAhB,EACAC,KAEA,MAAM,QAAEsB,EAAO,UAAE9D,GAAcsD,EACzBsC,EAAYtC,EAAME,KAAKoC,UAAUnD,OAEvC,OACIyB,EAAAA,cAAC2B,EAAAA,uBAAsB,CACnBzB,UAAU,gCACV0B,wBAAyB9F,EAAU8F,wBACnCC,6BAA8B/F,EAAU+F,6BACxCC,qBAAsBhG,EAAUgG,qBAChCC,2BAA4BjG,EAAUiG,2BACtCC,uBAAwBlG,EAAUkG,uBAClCC,4BAA6BnG,EAAUmG,4BACvCC,eAAgBpG,EAAUoG,eAC1B5C,KAAM,CAAEhB,QAAAA,EAASoD,UAAAA,GACjB9B,QAASA,EACTuC,SAAS,SACTzC,GAAIN,EAAMM,GACVC,SAAUP,EAAMO,SAChBc,QAASU,EAAsB9C,EAAWvC,EAAWwC,GACrD8D,mBAAoB/C,EAAMgD,gBAC1BxB,gBAlBwB,EAmBxBD,mBAAmB,KA0BJa,CAA0BrC,EAAOC,EAAOhB,EAAWC,GAC1E,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMiC,cAAcJ,gBACzB7B,EAAMiC,cAAcH,WACpBM,IAUPc,EAAyBC,IAE3B,MAAM,eAAEtB,EAAc,OAAEuB,EAAM,MAAEC,GAAUF,EAE1C,OACIvC,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLuB,EACAC,IAuBPC,EAA2BC,IAC7B,MAAM,eAAE1B,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,EAAM,OAAEM,GAAWH,EAEzE,OACI3C,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BC,EACAN,IA0Qb,EArPoFpD,IAAQ,IAAA2D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAGxF,MAAM,YACFE,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlE,EAAkB,cAClB8B,EAAa,wBACbqC,EAAuB,UACvBC,EAAS,YACTC,EAAW,YACXC,EAAW,SACX9D,EAAQ,MACR+D,EAAK,MACLC,EAAK,OACLC,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IAEtBC,EAAG,cACHC,EAAa,UACbjG,EAAS,MACTgB,EAAK,UACLvD,EAAS,uBACTyI,EAAsB,iBACtBC,EACAC,KAAOnD,OAAQoD,GAAW,SAC1BC,GACAvF,EACJ,IAAIwF,EAAkBxF,EAAMtD,UAAU8I,QACtCA,GAAoC,QAA7B7B,EAAI3D,EAAME,KAAKhB,QAAQC,cAAM,IAAAwE,OAAA,EAAzBA,EAA2B8B,OACtC,MAAMC,EAAwF,QAAtE9B,EAA2B5D,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAyE,OAAA,EAA3CA,EAA6CgC,eAC1FC,EAAmBH,MAAAA,GAAAA,EAAoBI,QAAUJ,EAAmBI,QAAU,GAC9EC,EAAqBL,MAAAA,GAAAA,EAAoBM,UAAYN,EAAmBM,UAAY,IAEnFC,EAAcC,GAAmBtF,EAAAA,SAAuB,KACxDuF,EAAeC,GAAoBxF,EAAAA,UAAwB,GAsB5DyF,GAAezF,EAAAA,aAAkB0F,UAAW,IAAAC,EAC9C,MAAMlD,EAAQ,IAAImD,EAAAA,qCACW,QADyBD,EAClDvG,EAAME,KAAKhB,QAAQC,cAAM,IAAAoH,OAAA,EAAzBA,EAA2BE,SAC3B9G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,MAChB,SAoBEC,EAAAA,EAAAA,iCAAgCtD,EAAOrD,EAAMQ,QAAQoG,eACtDC,OAAOC,IACJ9G,EAAM+G,UAAUD,MAAMA,EAAME,YAE/BC,MAAKC,IACF,GAAIA,GAAYC,EAAAA,gBAAgBC,YAAYF,GAAW,KAAAG,EACnD,MAAMC,EAAoBC,IAA+B,IAAAC,EAAA,OAC5B,QAAzBA,EAAAD,EAAME,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB9B,GAC5D+B,EAAkCV,EAASW,OAAOP,GAClDQ,EAA6BX,EAAAA,gBAAgBC,YAAYQ,GACzDA,EAAgCjI,EAAgB+G,WAChDqB,EACAC,EAtDUC,CAAAA,IAC5B,GAAIA,GAAyBd,EAAAA,gBAAgBC,YAAYa,EAAsBC,6BAC3E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,KAAAE,EACzF,IAC6C,QAAzCA,EAAAH,EAAsBR,2BAAmB,IAAAW,GAAiB,QAAjBA,EAAzCA,EAA2CV,uBAAe,IAAAU,OAAA,EAA1DA,EAA4DC,uBAC5DF,EAA4BG,iBAE5B,OAAOH,EAA4BI,kBA+CUC,CAAuBV,GAE9DW,GA1BQC,EAyBqBZ,MAAAA,GAA+C,QAArBT,EAA1BS,EAA4BL,2BAAmB,IAAAJ,OAAA,EAA/CA,EAAiDsB,oBAxBvFrD,EAAUsD,oBAIXzB,EAAAA,gBAAgBC,YAAYsB,IACrBA,EAAmB/I,EAAgB+G,MAAMmC,kBAAqBlJ,EAAgB+G,MAoB/C1G,EAAMtD,UAAUoM,YAAc9I,EAAMtD,UAAUqM,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGC,EAAAA,EAAAA,QACtClJ,EAAMtD,UAAUyM,iCAChBpD,MACCiD,IACL9C,EAAgB+C,GAhCFP,IAAAA,KAoC1BtC,GAAiB,KAClB,CAC0B,QAD1BvC,EACC7D,EAAME,KAAKhB,QAAQC,cAAM,IAAA0E,OAAA,EAAzBA,EAA2B4C,SAC3BnB,EAAUsD,iBACV/C,EACAE,EACA/F,EAAMQ,QAAQoG,cACd5G,EAAMtD,UAAUyM,iCAChBnJ,EAAMtD,UAAUoM,YAChB9I,EAAMtD,UAAUqM,eAChB/I,EAAM+G,YAGVnG,EAAAA,WAAgB,KACRZ,EAAMkC,OAAOkH,0BACb/C,KAAeQ,OAAOC,IAClB9G,EAAM+G,UAAUD,MAAMA,EAAME,cAGrC,CAACX,GAAcF,EAAenG,EAAM+G,UAAW/G,EAAMkC,OAAOkH,4BAE/DC,EAAAA,EAAAA,KACI,SAAAC,EAAA,OAAiD,QAAjDA,EAAMtJ,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAmK,OAAA,EAA3CA,EAA6CC,2BACnD,KACInD,GAAiB,MAQzB,MAsBMoD,GAAwD,QAA7C1F,EAAG9D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA2E,OAAA,EAA1CA,EAA4C4F,MAAKvK,GAAUA,EAAOsH,WAAanB,EAAU2H,+BACvGpD,GAAsD,QAA7C9F,EAAG/D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA4E,OAAA,EAA1CA,EAA4C2F,MAAKvK,GAAUA,EAAOsH,WAAanB,EAAU4H,6BACrGnD,GAAwD,QAA7C/F,EAAGhE,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA6E,OAAA,EAA1CA,EAA4C0F,MAAKvK,GAAUA,EAAOsH,WAAanB,EAAU6H,+BAE7G,OACIvM,EAAAA,cAACuJ,EAAAA,OAAMxI,OAAAC,OAAA,GAAKsC,GACRtD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKuC,GAA6BnE,EAAMoK,cAC7CxJ,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKwC,GACNxD,EAAAA,cAAA,KAAGE,UAAU,yCACTF,EAAAA,cAAA,YAAOiJ,MAAAA,QAAS,EAATA,GAAWQ,WAClBzJ,EAAAA,cAAA,YAAO2E,GAAYA,EAAS,GAAGoE,OAElChF,EACD/D,EAAAA,cAAA,OAAKE,UAAU,4CACXF,EAAAA,cAAA,QAAME,UAAU,wCAAwCd,EAAMtD,UAAU4N,SAAQ,IAAGd,MAAAA,QAAW,EAAXA,GAAae,WAAU,IAAGR,MAAAA,QAAW,EAAXA,GAAaM,YAE9HzJ,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,+BAEZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwC0E,GACtDZ,GAGLhE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,6BACZF,EAAAA,cAAA,OAAKE,UAAU,kCAAkCd,EAAMtD,UAAU8N,WAChE9F,GAEJH,GA9MQA,CAAAA,IACrB,MAAM,eAAE1C,EAAc,UAAE4I,GAAclG,EAEtC,OAAO3D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GAAiB4I,EAAUC,IAAIpH,KA2MtBqH,CAAgBpG,GAC7BQ,GAvaSA,CAAAA,IACtB,MAAM,eAAElD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,MAAEJ,GAAU0B,EAEhE,OACInE,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BJ,IAiakBuH,CAAiB7F,GAChCnE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCACZF,EAAAA,cAAA,OAAKE,UAAU,yCACVH,GA5dFkK,EACnBC,EACA7L,EACAe,EACAC,EACA8K,EACA5F,EAGAF,EACAG,EACAF,KAGA,MAAM,eAAErD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,GAAW0H,GAE3D,UAAEpO,GAAcsD,GAEhB,SAAEW,GAAaV,EAErB,OACIW,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAGLxC,EAAAA,cAACoK,EAAAA,oBAAmB,CAChB1K,GAAG,oCACH2E,IAAKA,EACLgG,aAActK,EACduK,SAAUtL,EAAgBX,GAC1BkM,uBAAwBzO,EAAUyO,uBAClCC,yBAA0B1O,EAAU0O,yBACpCC,yBAA0B3O,EAAU2O,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpCnG,iBAAkBA,IAErBF,EACAC,IAqbe0F,CACIlK,EACA1B,EACAe,EACAC,EACAvD,EACAyI,EACAF,EACAG,EACAF,GAEPlF,EAAMwL,iBACP5K,EAAAA,cAAA,QAAME,UAAU,8BAA8Bd,EAAMkC,OAAOuJ,sBAGlEzL,EAAMkC,OAAOkH,0BAA4BvD,GApEX6F,MAA8B,IAAAC,EAAAC,EAErE,GAD6BzE,EAAAA,gBAAgBC,YAAqC,QAA1BuE,EAAC3L,EAAME,KAAKhB,QAAQC,cAAM,IAAAwM,OAAA,EAAzBA,EAA2BE,kBACT9D,KAAtB,QAAzB6D,EAAA5L,EAAME,KAAKhB,QAAQC,cAAM,IAAAyM,OAAA,EAAzBA,EAA2BE,iBACnD,OAOJ,OAAOlL,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GALuB,CAC/Bd,UAAW,0CACXiL,IAAK,SAGyB9F,IA0DoCyF,GAC7D7G,EA3aQR,CAAAA,IAErB,MAAM,eAAExC,EAAc,WAAEC,EAAU,OAAEkK,GAAW3H,EAE/C,OACIzD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLC,EACAkK,IAqaIC,CAAgB5H,GAChBI,GA5ZUA,CAAAA,IAEvB,MAAM,eAAE5C,EAAc,cAAEqK,EAAa,QAAEzI,EAAO,YAAEe,EAAW,OAAEpB,EAAM,OAAE4I,EAAM,MAAEG,EAAK,wBAAEC,GAA4B3H,EAEhH,OACI7D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLqK,EACAzI,EACA2I,EACA5H,EACApB,EACA4I,EACAG,IAgZmBE,CAAkB5H,GACjCxC,GAAiBD,EAAoBhC,EAAOC,EAAOhB,GACnDqF,EACAnE,GAAsBJ,EAAyBC,EAAOC,EAAOhB,GAtQlDqN,CAAAA,IACxB,GAAKA,GAAsC,IAAvBA,EAAYC,OAIhC,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAG0L,EAAY,KAqQTE,CAAmBxM,EAAMyM,OAASzM,EAAMyM,MAAMH,aAG/C1L,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,gCACXgE,GAAmB5B,EAAsB4B,GACzCE,GAA0B9B,EAAsB8B,IAErDpE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,mCACZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwCd,EAAMtD,UAAUgQ,iBACvE9L,EAAAA,cAAC+L,EAAAA,GAAI,CAAC7L,UAAU,iCAAiC8L,KA1ExCC,CAAAA,IACrB,IAAKA,EACD,MAAO,GAIX,OAFeA,EACkB7M,MAAM8M,UAqE4BC,CAAgBvI,MAG1E2C,EAAAA,gBAAgBC,YAAYpH,EAAMyM,MAAMO,sBACrCpM,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCAAqCd,EAAMyM,MAAMO,qBAAqB,IACtF,iKC3iBpB,SAASvQ,EAA0CC,GAC/C,MAAO,CACHC,yBAA0BD,EAAUC,yBAEpCC,wBAAyBF,EAAUE,wBACnCC,4BAA6BH,EAAUG,4BAEvCC,gCAAiCJ,EAAUI,gCAC3CC,iCAAkCL,EAAUK,iCAC5CC,sCAAuCN,EAAUM,sCAEjDC,oBAAqBP,EAAUO,oBAC/BC,wBAAyBR,EAAUQ,wBACnCC,cAAeT,EAAUS,eASjC,SAASC,EAAyCV,GAC9C,MAAO,CACHW,yBAA0BX,EAAUY,0BACpCC,wBAAyBb,EAAUc,mBACnCC,2BAA4Bf,EAAUe,2BACtCC,yBAA0BhB,EAAUiB,+BAEpCC,yBAA0BlB,EAAUkB,yBAEpCC,yBAA0BnB,EAAUoB,8BACpCC,+BAAgCrB,EAAUsB,0CASlD,SAASC,EAAgDvB,GACrD,MAAO,CACHwB,4BAA6BxB,EAAUwB,4BACvCC,2BAA4BzB,EAAUyB,2BACtCC,0CAA2C1B,EAAU0B,0CACrDC,6CAA8C3B,EAAU2B,6CACxDC,0CAA2C5B,EAAU4B,0CACrDC,cAAe7B,EAAU8B,UACzBC,kBAAmB/B,EAAU+B,kBAC7BC,iBAAkBhC,EAAUgC,kBASpC,SAASC,EACLjC,GAEA,MAAO,CACHkC,yBAA0BlC,EAAUkC,yBACpCC,8BAA+BnC,EAAUmC,8BACzCC,yBAA0BpC,EAAUoC,yBACpCC,+BAAgCrC,EAAUqC,gCAWlD,MAAMC,EAA6BA,CAACC,EAA6BvC,EAAmCwC,IAChGC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlBH,EAAOI,QAAiCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MCzE5H,IAAKC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,eADJ,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBX,GAAiCY,IAClDZ,EAAUa,gBACHb,EAAUa,eAAeD,GA6HlCE,EAA2BA,CAC7BC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMG,qBAAuBjB,EAC9B,OAAO,KAGX,MAAMkB,ED7DoCC,EAC1CL,EACAC,EACAhB,EACAC,KAEA,MAAM,GAEFoB,EAAE,SACFC,EAAQ,QACRC,EACAN,MACIO,gBAAkBtB,OAAQsB,GAC1BC,qBAAuBvB,OAAQuB,IAClC,UACDhE,EAAS,OACTwF,GACAlC,GAEE,SAAEW,GAAaV,EAGfmN,EAAmCpN,EAAMqN,0CAA2C,EAC1F,OACI5M,GACIG,EAAAA,cAACC,EAAAA,4BAA2Bc,OAAAC,OAAA,CACxBd,UAAU,gCACVC,6BAA8BrE,EAAUqE,6BACxCC,gCAAiCtE,EAAUsE,gCAC3CC,kCAAmCxE,EAA0CC,GAC7EwE,mCAAoC9D,EAAyCV,GAC7EyE,wCAAyClD,EAAgDvB,GACzF0E,uDAAwDzC,EACpDjC,GAEJwD,KAAM,CAAEhB,QAAAA,EAASyB,SAAAA,EAAUF,eAAAA,EAAgBC,oBAAAA,GAC3CF,QAASA,EACTF,GAAIA,EACJC,SAAUA,EACVc,QAASrC,EAA2BC,EAAWvC,EAAWwC,GAC1DoC,8BAA+BrB,EAAMsB,sBACrCC,mBAAmB,EACnBC,gBArBa,EAsBb6L,cAAepL,QAAmC6F,IAAzB7F,EAAOoL,cAA8BpL,EAAOoL,mBAAgBvF,EACrFwF,oCAAqCH,GAChCA,GAAoC,CAAEI,UAAWxN,EAAMyN,qBCgB5CpN,CAA+BL,EAAOC,EAAOhB,EAAWC,GAEpF,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMG,mBAAmB0B,gBAC9B7B,EAAMG,mBAAmB2B,WACzB1B,IAYP2B,EAAwBA,CAAC9C,EAA6BvC,EAAmCwC,IAC3FC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlBH,EAAOI,QAAgCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MAmD5HsC,EAAsBA,CACxBhC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMiC,gBAAkB/C,EACzB,OAAO,KAGX,IAAKc,EAAMkC,OAAOC,eACd,OAAO,KAGX,MAAMC,EArDwBC,EAC9BrC,EACAC,EACAhB,EACAC,KAEA,MAAM,QAAEsB,EAAO,UAAE9D,GAAcsD,EACzBsC,EAAYtC,EAAME,KAAKoC,UAAUnD,OAEvC,OACIyB,EAAAA,cAAC2B,EAAAA,uBAAsB,CACnBzB,UAAU,gCACV0B,wBAAyB9F,EAAU8F,wBACnCC,6BAA8B/F,EAAU+F,6BACxCC,qBAAsBhG,EAAUgG,qBAChCC,2BAA4BjG,EAAUiG,2BACtCC,uBAAwBlG,EAAUkG,uBAClCC,4BAA6BnG,EAAUmG,4BACvCC,eAAgBpG,EAAUoG,eAC1B5C,KAAM,CAAEhB,QAAAA,EAASoD,UAAAA,GACjB9B,QAASA,EACTuC,SAAS,SACTzC,GAAIN,EAAMM,GACVC,SAAUP,EAAMO,SAChBc,QAASU,EAAsB9C,EAAWvC,EAAWwC,GACrD8D,mBAAoB/C,EAAMgD,gBAC1BxB,gBAlBwB,EAmBxBD,mBAAmB,KA0BJa,CAA0BrC,EAAOC,EAAOhB,EAAWC,GAC1E,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMiC,cAAcJ,gBACzB7B,EAAMiC,cAAcH,WACpBM,IAUPc,EAAyBC,IAE3B,MAAM,eAAEtB,EAAc,OAAEuB,EAAM,MAAEC,GAAUF,EAE1C,OACIvC,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLuB,EACAC,IAuBPC,EAA2BC,IAC7B,MAAM,eAAE1B,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,EAAM,OAAEM,GAAWH,EAEzE,OACI3C,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BC,EACAN,IA0Qb,EArPoFpD,IAAQ,IAAA2D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAGxF,MAAM,YACFE,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlE,EAAkB,cAClB8B,EAAa,wBACbqC,EAAuB,UACvBC,EAAS,YACTC,EAAW,YACXC,EAAW,SACX9D,EAAQ,MACR+D,EAAK,MACLC,EAAK,OACLC,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IAEtBC,EAAG,cACHC,EAAa,UACbjG,EAAS,MACTgB,EAAK,UACLvD,EAAS,uBACTyI,EAAsB,iBACtBC,EACAC,KAAOnD,OAAQoD,GAAW,SAC1BC,GACAvF,EACJ,IAAIwF,EAAkBxF,EAAMtD,UAAU8I,QACtCA,GAAoC,QAA7B7B,EAAI3D,EAAME,KAAKhB,QAAQC,cAAM,IAAAwE,OAAA,EAAzBA,EAA2B8B,OACtC,MAAMC,EAAwF,QAAtE9B,EAA2B5D,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAyE,OAAA,EAA3CA,EAA6CgC,eAC1FC,EAAmBH,MAAAA,GAAAA,EAAoBI,QAAUJ,EAAmBI,QAAU,GAC9EC,EAAqBL,MAAAA,GAAAA,EAAoBM,UAAYN,EAAmBM,UAAY,IAEnFC,EAAcC,GAAmBtF,EAAAA,SAAuB,KACxDuF,EAAeC,GAAoBxF,EAAAA,UAAwB,GAsB5DyF,GAAezF,EAAAA,aAAkB0F,UAAW,IAAAC,EAC9C,MAAMlD,EAAQ,IAAImD,EAAAA,qCACW,QADyBD,EAClDvG,EAAME,KAAKhB,QAAQC,cAAM,IAAAoH,OAAA,EAAzBA,EAA2BE,SAC3B9G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,MAChB,SAoBEC,EAAAA,EAAAA,iCAAgCtD,EAAOrD,EAAMQ,QAAQoG,eACtDC,OAAOC,IACJ9G,EAAM+G,UAAUD,MAAMA,EAAME,YAE/BC,MAAKC,IACF,GAAIA,GAAYC,EAAAA,gBAAgBC,YAAYF,GAAW,KAAAG,EACnD,MAAMC,EAAoBC,IAA+B,IAAAC,EAAA,OAC5B,QAAzBA,EAAAD,EAAME,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB9B,GAC5D+B,EAAkCV,EAASW,OAAOP,GAClDQ,EAA6BX,EAAAA,gBAAgBC,YAAYQ,GACzDA,EAAgCjI,EAAgB+G,WAChDqB,EACAC,EAtDUC,CAAAA,IAC5B,GAAIA,GAAyBd,EAAAA,gBAAgBC,YAAYa,EAAsBC,6BAC3E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,KAAAE,EACzF,IAC6C,QAAzCA,EAAAH,EAAsBR,2BAAmB,IAAAW,GAAiB,QAAjBA,EAAzCA,EAA2CV,uBAAe,IAAAU,OAAA,EAA1DA,EAA4DC,uBAC5DF,EAA4BG,iBAE5B,OAAOH,EAA4BI,kBA+CUC,CAAuBV,GAE9DW,GA1BQC,EAyBqBZ,MAAAA,GAA+C,QAArBT,EAA1BS,EAA4BL,2BAAmB,IAAAJ,OAAA,EAA/CA,EAAiDsB,oBAxBvFrD,EAAUsD,oBAIXzB,EAAAA,gBAAgBC,YAAYsB,IACrBA,EAAmB/I,EAAgB+G,MAAMmC,kBAAqBlJ,EAAgB+G,MAoB/C1G,EAAMtD,UAAUoM,YAAc9I,EAAMtD,UAAUqM,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGC,EAAAA,EAAAA,QACtClJ,EAAMtD,UAAUyM,iCAChBpD,MACCiD,IACL9C,EAAgB+C,GAhCFP,IAAAA,KAoC1BtC,GAAiB,KAClB,CAC0B,QAD1BvC,EACC7D,EAAME,KAAKhB,QAAQC,cAAM,IAAA0E,OAAA,EAAzBA,EAA2B4C,SAC3BnB,EAAUsD,iBACV/C,EACAE,EACA/F,EAAMQ,QAAQoG,cACd5G,EAAMtD,UAAUyM,iCAChBnJ,EAAMtD,UAAUoM,YAChB9I,EAAMtD,UAAUqM,eAChB/I,EAAM+G,YAGVnG,EAAAA,WAAgB,KACRZ,EAAMkC,OAAOkH,0BACb/C,KAAeQ,OAAOC,IAClB9G,EAAM+G,UAAUD,MAAMA,EAAME,cAGrC,CAACX,GAAcF,EAAenG,EAAM+G,UAAW/G,EAAMkC,OAAOkH,4BAE/DC,EAAAA,EAAAA,KACI,SAAAC,EAAA,OAAiD,QAAjDA,EAAMtJ,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAmK,OAAA,EAA3CA,EAA6CC,2BACnD,KACInD,GAAiB,MAQzB,MAsBMoD,GAAwD,QAA7C1F,EAAG9D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA2E,OAAA,EAA1CA,EAA4C4F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAUsE,2BACnGC,GAAsD,QAA7C9F,EAAG/D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA4E,OAAA,EAA1CA,EAA4C2F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAUwE,yBACjGC,GAAwD,QAA7C/F,EAAGhE,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA6E,OAAA,EAA1CA,EAA4C0F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAU0E,2BAEzG,OACIpJ,EAAAA,cAACuJ,EAAAA,OAAMxI,OAAAC,OAAA,GAAKsC,GACRtD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKuC,GAA6BnE,EAAMoK,cAC7CxJ,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKwC,GACNxD,EAAAA,cAAA,KAAGE,UAAU,yCACTF,EAAAA,cAAA,YAAOiJ,MAAAA,QAAS,EAATA,GAAWQ,WAClBzJ,EAAAA,cAAA,YAAO2E,GAAYA,EAAS,GAAGoE,OAElChF,EACD/D,EAAAA,cAAA,OAAKE,UAAU,4CACXF,EAAAA,cAAA,QAAME,UAAU,wCAAwCd,EAAMtD,UAAU4N,SAAQ,IAAGd,MAAAA,QAAW,EAAXA,GAAae,WAAU,IAAGR,MAAAA,QAAW,EAAXA,GAAaM,YAE9HzJ,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,+BAEZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwC0E,GACtDZ,GAGLhE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,6BACZF,EAAAA,cAAA,OAAKE,UAAU,kCAAkCd,EAAMtD,UAAU8N,WAChE9F,GAEJH,GA9MQA,CAAAA,IACrB,MAAM,eAAE1C,EAAc,UAAE4I,GAAclG,EAEtC,OAAO3D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GAAiB4I,EAAUC,IAAIpH,KA2MtBqH,CAAgBpG,GAC7BQ,GAvaSA,CAAAA,IACtB,MAAM,eAAElD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,MAAEJ,GAAU0B,EAEhE,OACInE,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BJ,IAiakBuH,CAAiB7F,GAChCnE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCACZF,EAAAA,cAAA,OAAKE,UAAU,yCACVH,GA5dFkK,EACnBC,EACA7L,EACAe,EACAC,EACA8K,EACA5F,EAGAF,EACAG,EACAF,KAGA,MAAM,eAAErD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,GAAW0H,GAE3D,UAAEpO,GAAcsD,GAEhB,SAAEW,GAAaV,EAErB,OACIW,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAGLxC,EAAAA,cAACoK,EAAAA,oBAAmB,CAChB1K,GAAG,oCACH2E,IAAKA,EACLgG,aAActK,EACduK,SAAUtL,EAAgBX,GAC1BkM,uBAAwBzO,EAAUyO,uBAClCC,yBAA0B1O,EAAU0O,yBACpCC,yBAA0B3O,EAAU2O,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpCnG,iBAAkBA,IAErBF,EACAC,IAqbe0F,CACIlK,EACA1B,EACAe,EACAC,EACAvD,EACAyI,EACAF,EACAG,EACAF,GAEPlF,EAAMwL,iBACP5K,EAAAA,cAAA,QAAME,UAAU,8BAA8Bd,EAAMkC,OAAOuJ,sBAGlEzL,EAAMkC,OAAOkH,0BAA4BvD,GApEX6F,MAA8B,IAAAC,EAAAC,EAErE,GAD6BzE,EAAAA,gBAAgBC,YAAqC,QAA1BuE,EAAC3L,EAAME,KAAKhB,QAAQC,cAAM,IAAAwM,OAAA,EAAzBA,EAA2BE,kBACT9D,KAAtB,QAAzB6D,EAAA5L,EAAME,KAAKhB,QAAQC,cAAM,IAAAyM,OAAA,EAAzBA,EAA2BE,iBACnD,OAOJ,OAAOlL,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GALuB,CAC/Bd,UAAW,0CACXiL,IAAK,SAGyB9F,IA0DoCyF,GAC7D7G,EA3aQR,CAAAA,IAErB,MAAM,eAAExC,EAAc,WAAEC,EAAU,OAAEkK,GAAW3H,EAE/C,OACIzD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLC,EACAkK,IAqaIC,CAAgB5H,GAChBI,GA5ZUA,CAAAA,IAEvB,MAAM,eAAE5C,EAAc,cAAEqK,EAAa,QAAEzI,EAAO,YAAEe,EAAW,OAAEpB,EAAM,OAAE4I,EAAM,MAAEG,EAAK,wBAAEC,GAA4B3H,EAEhH,OACI7D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLqK,EACAzI,EACA2I,EACA5H,EACApB,EACA4I,EACAG,IAgZmBE,CAAkB5H,GACjCxC,GAAiBD,EAAoBhC,EAAOC,EAAOhB,GACnDqF,EACAnE,GAAsBJ,EAAyBC,EAAOC,EAAOhB,GAtQlDqN,CAAAA,IACxB,GAAKA,GAAsC,IAAvBA,EAAYC,OAIhC,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAG0L,EAAY,KAqQTE,CAAmBxM,EAAMyM,OAASzM,EAAMyM,MAAMH,aAG/C1L,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,gCACXgE,GAAmB5B,EAAsB4B,GACzCE,GAA0B9B,EAAsB8B,IAErDpE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,mCACZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwCd,EAAMtD,UAAUgQ,iBACvE9L,EAAAA,cAAC+L,EAAAA,GAAI,CAAC7L,UAAU,iCAAiC8L,KA1ExCC,CAAAA,IACrB,IAAKA,EACD,MAAO,GAIX,OAFeA,EACkB7M,MAAM8M,UAqE4BC,CAAgBvI,MAG1E2C,EAAAA,gBAAgBC,YAAYpH,EAAMyM,MAAMO,sBACrCpM,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCAAqCd,EAAMyM,MAAMO,qBAAqB,IACtF,iKC3iBpB,SAASvQ,EAA0CC,GAC/C,MAAO,CACHC,yBAA0BD,EAAUC,yBAEpCC,wBAAyBF,EAAUE,wBACnCC,4BAA6BH,EAAUG,4BAEvCC,gCAAiCJ,EAAUI,gCAC3CC,iCAAkCL,EAAUK,iCAC5CC,sCAAuCN,EAAUM,sCAEjDC,oBAAqBP,EAAUO,oBAC/BC,wBAAyBR,EAAUQ,wBACnCC,cAAeT,EAAUS,eASjC,SAASC,EAAyCV,GAC9C,MAAO,CACHW,yBAA0BX,EAAUY,0BACpCC,wBAAyBb,EAAUc,mBACnCC,2BAA4Bf,EAAUe,2BACtCC,yBAA0BhB,EAAUiB,+BAEpCC,yBAA0BlB,EAAUkB,yBAEpCC,yBAA0BnB,EAAUoB,8BACpCC,+BAAgCrB,EAAUsB,0CASlD,SAASC,EAAgDvB,GACrD,MAAO,CACHwB,4BAA6BxB,EAAUwB,4BACvCC,2BAA4BzB,EAAUyB,2BACtCC,0CAA2C1B,EAAU0B,0CACrDC,6CAA8C3B,EAAU2B,6CACxDC,0CAA2C5B,EAAU4B,0CACrDC,cAAe7B,EAAU8B,UACzBC,kBAAmB/B,EAAU+B,kBAC7BC,iBAAkBhC,EAAUgC,kBASpC,SAASC,EACLjC,GAEA,MAAO,CACHkC,yBAA0BlC,EAAUkC,yBACpCC,8BAA+BnC,EAAUmC,8BACzCC,yBAA0BpC,EAAUoC,yBACpCC,+BAAgCrC,EAAUqC,gCAWlD,MAAMC,EAA6BA,CAACC,EAA6BvC,EAAmCwC,IAChGC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlBH,EAAOI,QAAiCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MCzE5H,IAAKC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,eADJ,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBX,GAAiCY,IAClDZ,EAAUa,gBACHb,EAAUa,eAAeD,GA6HlCE,EAA2BA,CAC7BC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMG,qBAAuBjB,EAC9B,OAAO,KAGX,MAAMkB,ED7DoCC,EAC1CL,EACAC,EACAhB,EACAC,KAEA,MAAM,GAEFoB,EAAE,SACFC,EAAQ,QACRC,EACAN,MACIO,gBAAkBtB,OAAQsB,GAC1BC,qBAAuBvB,OAAQuB,IAClC,UACDhE,EAAS,OACTwF,GACAlC,GAEE,SAAEW,GAAaV,EAGfmN,EAAmCpN,EAAMqN,0CAA2C,EAC1F,OACI5M,GACIG,EAAAA,cAACC,EAAAA,4BAA2Bc,OAAAC,OAAA,CACxBd,UAAU,gCACVC,6BAA8BrE,EAAUqE,6BACxCC,gCAAiCtE,EAAUsE,gCAC3CC,kCAAmCxE,EAA0CC,GAC7EwE,mCAAoC9D,EAAyCV,GAC7EyE,wCAAyClD,EAAgDvB,GACzF0E,uDAAwDzC,EACpDjC,GAEJwD,KAAM,CAAEhB,QAAAA,EAASyB,SAAAA,EAAUF,eAAAA,EAAgBC,oBAAAA,GAC3CF,QAASA,EACTF,GAAIA,EACJC,SAAUA,EACVc,QAASrC,EAA2BC,EAAWvC,EAAWwC,GAC1DoC,8BAA+BrB,EAAMsB,sBACrCC,mBAAmB,EACnBC,gBArBa,EAsBb6L,cAAepL,QAAmC6F,IAAzB7F,EAAOoL,cAA8BpL,EAAOoL,mBAAgBvF,EACrFwF,oCAAqCH,GAChCA,GAAoC,CAAEI,UAAWxN,EAAMyN,qBCgB5CpN,CAA+BL,EAAOC,EAAOhB,EAAWC,GAEpF,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMG,mBAAmB0B,gBAC9B7B,EAAMG,mBAAmB2B,WACzB1B,IAYP2B,EAAwBA,CAAC9C,EAA6BvC,EAAmCwC,IAC3FC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlBH,EAAOI,QAAgCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MAmD5HsC,EAAsBA,CACxBhC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMiC,gBAAkB/C,EACzB,OAAO,KAGX,IAAKc,EAAMkC,OAAOC,eACd,OAAO,KAGX,MAAMC,EArDwBC,EAC9BrC,EACAC,EACAhB,EACAC,KAEA,MAAM,QAAEsB,EAAO,UAAE9D,GAAcsD,EACzBsC,EAAYtC,EAAME,KAAKoC,UAAUnD,OAEvC,OACIyB,EAAAA,cAAC2B,EAAAA,uBAAsB,CACnBzB,UAAU,gCACV0B,wBAAyB9F,EAAU8F,wBACnCC,6BAA8B/F,EAAU+F,6BACxCC,qBAAsBhG,EAAUgG,qBAChCC,2BAA4BjG,EAAUiG,2BACtCC,uBAAwBlG,EAAUkG,uBAClCC,4BAA6BnG,EAAUmG,4BACvCC,eAAgBpG,EAAUoG,eAC1B5C,KAAM,CAAEhB,QAAAA,EAASoD,UAAAA,GACjB9B,QAASA,EACTuC,SAAS,SACTzC,GAAIN,EAAMM,GACVC,SAAUP,EAAMO,SAChBc,QAASU,EAAsB9C,EAAWvC,EAAWwC,GACrD8D,mBAAoB/C,EAAMgD,gBAC1BxB,gBAlBwB,EAmBxBD,mBAAmB,KA0BJa,CAA0BrC,EAAOC,EAAOhB,EAAWC,GAC1E,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMiC,cAAcJ,gBACzB7B,EAAMiC,cAAcH,WACpBM,IAUPc,EAAyBC,IAE3B,MAAM,eAAEtB,EAAc,OAAEuB,EAAM,MAAEC,GAAUF,EAE1C,OACIvC,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLuB,EACAC,IAuBPC,EAA2BC,IAC7B,MAAM,eAAE1B,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,EAAM,OAAEM,GAAWH,EAEzE,OACI3C,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BC,EACAN,IA6Qb,EAxPoFpD,IAAQ,IAAA2D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAGxF,MAAM,YACFC,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlE,EAAkB,cAClB8B,EAAa,wBACbqC,EAAuB,UACvBC,EAAS,YACTC,EAAW,YACXC,EAAW,SACX9D,EAAQ,MACR+D,EAAK,MACLC,EAAK,OACLC,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IAEtBC,EAAG,cACHC,EAAa,UACbjG,EAAS,MACTgB,EAAK,UACLvD,EAAS,uBACTyI,EAAsB,iBACtBC,EACAC,KAAOnD,OAAQoD,GAAW,SAC1BC,GACAvF,EACJ,IAAIwF,EAAkBxF,EAAMtD,UAAU8I,QACtCA,GAAoC,QAA7B7B,EAAI3D,EAAME,KAAKhB,QAAQC,cAAM,IAAAwE,OAAA,EAAzBA,EAA2B8B,OACtC,MAAMC,EAAwF,QAAtE9B,EAA2B5D,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAyE,OAAA,EAA3CA,EAA6CgC,eAC1FC,EAAmBH,MAAAA,GAAAA,EAAoBI,QAAUJ,EAAmBI,QAAU,GAC9EC,EAAqBL,MAAAA,GAAAA,EAAoBM,UAAYN,EAAmBM,UAAY,IAEnFC,EAAcC,GAAmBtF,EAAAA,SAAuB,KACxDuF,EAAeC,IAAoBxF,EAAAA,UAAwB,GAsB5DyF,GAAezF,EAAAA,aAAkB0F,UAAW,IAAAC,EAC9C,MAAMlD,EAAQ,IAAImD,EAAAA,qCACW,QADyBD,EAClDvG,EAAME,KAAKhB,QAAQC,cAAM,IAAAoH,OAAA,EAAzBA,EAA2BE,SAC3B9G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,MAChB,SAoBEC,EAAAA,EAAAA,iCAAgCtD,EAAOrD,EAAMQ,QAAQoG,eACtDC,OAAOC,IACJ9G,EAAM+G,UAAUD,MAAMA,EAAME,YAE/BC,MAAKC,IACF,GAAIA,GAAYC,EAAAA,gBAAgBC,YAAYF,GAAW,KAAAG,EACnD,MAAMC,EAAoBC,IAA+B,IAAAC,EAAA,OAC5B,QAAzBA,EAAAD,EAAME,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB9B,GAC5D+B,EAAkCV,EAASW,OAAOP,GAClDQ,EAA6BX,EAAAA,gBAAgBC,YAAYQ,GACzDA,EAAgCjI,EAAgB+G,WAChDqB,EACAC,EAtDUC,CAAAA,IAC5B,GAAIA,GAAyBd,EAAAA,gBAAgBC,YAAYa,EAAsBC,6BAC3E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,KAAAE,EACzF,IAC6C,QAAzCA,EAAAH,EAAsBR,2BAAmB,IAAAW,GAAiB,QAAjBA,EAAzCA,EAA2CV,uBAAe,IAAAU,OAAA,EAA1DA,EAA4DC,uBAC5DF,EAA4BG,iBAE5B,OAAOH,EAA4BI,kBA+CUC,CAAuBV,GAE9DW,GA1BQC,EAyBqBZ,MAAAA,GAA+C,QAArBT,EAA1BS,EAA4BL,2BAAmB,IAAAJ,OAAA,EAA/CA,EAAiDsB,oBAxBvFrD,EAAUsD,oBAIXzB,EAAAA,gBAAgBC,YAAYsB,IACrBA,EAAmB/I,EAAgB+G,MAAMmC,kBAAqBlJ,EAAgB+G,MAoB/C1G,EAAMtD,UAAUoM,YAAc9I,EAAMtD,UAAUqM,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGC,EAAAA,EAAAA,QACtClJ,EAAMtD,UAAUyM,iCAChBpD,MACCiD,IACL9C,EAAgB+C,GAhCFP,IAAAA,KAoC1BtC,IAAiB,KAClB,CAC0B,QAD1BvC,EACC7D,EAAME,KAAKhB,QAAQC,cAAM,IAAA0E,OAAA,EAAzBA,EAA2B4C,SAC3BnB,EAAUsD,iBACV/C,EACAE,EACA/F,EAAMQ,QAAQoG,cACd5G,EAAMtD,UAAUyM,iCAChBnJ,EAAMtD,UAAUoM,YAChB9I,EAAMtD,UAAUqM,eAChB/I,EAAM+G,YAGVnG,EAAAA,WAAgB,KACRZ,EAAMkC,OAAOkH,0BACb/C,KAAeQ,OAAOC,IAClB9G,EAAM+G,UAAUD,MAAMA,EAAME,cAGrC,CAACX,GAAcF,EAAenG,EAAM+G,UAAW/G,EAAMkC,OAAOkH,4BAE/DC,EAAAA,EAAAA,KACI,SAAAC,EAAA,OAAiD,QAAjDA,EAAMtJ,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAmK,OAAA,EAA3CA,EAA6CC,2BACnD,KACInD,IAAiB,MAQzB,MAsBMoD,GAAwD,QAA7C1F,EAAG9D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA2E,OAAA,EAA1CA,EAA4C4F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAUsE,2BACnGC,GAAsD,QAA7C9F,EAAG/D,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA4E,OAAA,EAA1CA,EAA4C2F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAUwE,yBACjGC,GAAwD,QAA7C/F,EAAGhE,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA6E,OAAA,EAA1CA,EAA4C0F,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAU0E,2BACnGC,GAA8D,QAA7ChG,EAAGjE,EAAME,KAAKuJ,yBAAyBtK,cAAM,IAAA8E,OAAA,EAA1CA,EAA4CyF,MAAKvK,GAAUA,EAAOwK,OAASrE,EAAU4E,iCAE/G,OACItJ,EAAAA,cAACuJ,EAAAA,OAAMxI,OAAAC,OAAA,GAAKsC,GACRtD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKuC,GAA6BnE,EAAMoK,cAC7CxJ,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKwC,GACNxD,EAAAA,cAAA,KAAGE,UAAU,yCACTF,EAAAA,cAAA,YAAOiJ,MAAAA,QAAS,EAATA,GAAWQ,WAClBzJ,EAAAA,cAAA,YAAO2E,GAAYA,EAAS,GAAGoE,OAElChF,EACD/D,EAAAA,cAAA,OAAKE,UAAU,4CACXF,EAAAA,cAAA,QAAME,UAAU,wCAAwCd,EAAMtD,UAAU4N,SAAQ,IAAGd,MAAAA,QAAW,EAAXA,GAAae,WAAU,IAAGR,MAAAA,QAAW,EAAXA,GAAaM,YAE9HzJ,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,+BAEZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwC0E,GACtDZ,GAGLhE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,6BACZF,EAAAA,cAAA,OAAKE,UAAU,kCAAkCd,EAAMtD,UAAU8N,WAChE9F,GAEJH,GA/MQA,CAAAA,IACrB,MAAM,eAAE1C,EAAc,UAAE4I,GAAclG,EAEtC,OAAO3D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GAAiB4I,EAAUC,IAAIpH,KA4MtBqH,CAAgBpG,GAC7BQ,GAxaSA,CAAAA,IACtB,MAAM,eAAElD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,MAAEJ,GAAU0B,EAEhE,OACInE,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BJ,IAkakBuH,CAAiB7F,GAChCnE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCACZF,EAAAA,cAAA,OAAKE,UAAU,yCACVH,GA7dFkK,EACnBC,EACA7L,EACAe,EACAC,EACA8K,EACA5F,EAGAF,EACAG,EACAF,KAGA,MAAM,eAAErD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,GAAW0H,GAE3D,UAAEpO,GAAcsD,GAEhB,SAAEW,GAAaV,EAErB,OACIW,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAGLxC,EAAAA,cAACoK,EAAAA,oBAAmB,CAChB1K,GAAG,oCACH2E,IAAKA,EACLgG,aAActK,EACduK,SAAUtL,EAAgBX,GAC1BkM,uBAAwBzO,EAAUyO,uBAClCC,yBAA0B1O,EAAU0O,yBACpCC,yBAA0B3O,EAAU2O,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpCnG,iBAAkBA,IAErBF,EACAC,IAsbe0F,CACIlK,EACA1B,EACAe,EACAC,EACAvD,EACAyI,EACAF,EACAG,EACAF,GAEPlF,EAAMwL,iBACP5K,EAAAA,cAAA,QAAME,UAAU,8BAA8Bd,EAAMkC,OAAOuJ,sBAGlEzL,EAAMkC,OAAOkH,0BAA4BvD,GArEX6F,MAA8B,IAAAC,EAAAC,EAErE,GAD6BzE,EAAAA,gBAAgBC,YAAqC,QAA1BuE,EAAC3L,EAAME,KAAKhB,QAAQC,cAAM,IAAAwM,OAAA,EAAzBA,EAA2BE,kBACT9D,KAAtB,QAAzB6D,EAAA5L,EAAME,KAAKhB,QAAQC,cAAM,IAAAyM,OAAA,EAAzBA,EAA2BE,iBACnD,OAOJ,OAAOlL,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GALuB,CAC/Bd,UAAW,0CACXiL,IAAK,SAGyB9F,IA2DoCyF,GAC7D7G,EA5aQR,CAAAA,IAErB,MAAM,eAAExC,EAAc,WAAEC,EAAU,OAAEkK,GAAW3H,EAE/C,OACIzD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLC,EACAkK,IAsaIC,CAAgB5H,GAChBI,GA7ZUA,CAAAA,IAEvB,MAAM,eAAE5C,EAAc,cAAEqK,EAAa,QAAEzI,EAAO,YAAEe,EAAW,OAAEpB,EAAM,OAAE4I,EAAM,MAAEG,EAAK,wBAAEC,GAA4B3H,EAEhH,OACI7D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLqK,EACAzI,EACA2I,EACA5H,EACApB,EACA4I,EACAG,IAiZmBE,CAAkB5H,GACjCxC,GAAiBD,EAAoBhC,EAAOC,EAAOhB,GACnDqF,EACAnE,GAAsBJ,EAAyBC,EAAOC,EAAOhB,GAvQlDqN,CAAAA,IACxB,GAAKA,GAAsC,IAAvBA,EAAYC,OAIhC,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAG0L,EAAY,KAsQTE,CAAmBxM,EAAMyM,OAASzM,EAAMyM,MAAMH,aAG/C1L,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,gCACXgE,GAAmB5B,EAAsB4B,GACzCE,GAA0B9B,EAAsB8B,IAErDpE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,mCACZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwCd,EAAMtD,UAAUgQ,iBACvE9L,EAAAA,cAAC+L,EAAAA,GAAI,CAAC7L,UAAU,iCAAiC8L,KA3ExCC,CAAAA,IACrB,IAAKA,EACD,MAAO,GAIX,OAFeA,EACkB7M,MAAM8M,UAsE4BC,CAAgBvI,KACtEyF,IAAqD,KAAhCA,GAAkBI,WAAoBzJ,EAAAA,cAAC+L,EAAAA,GAAI,CAAC7L,UAAU,iCAAiC8L,KAAM3C,MAAAA,QAAiB,EAAjBA,GAAmBI,aAIzIlD,EAAAA,gBAAgBC,YAAYpH,EAAMyM,MAAMO,sBACrCpM,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCAAqCd,EAAMyM,MAAMO,qBAAqB,IACtF,6mBC7kBpB,MAAMU,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAmBlCC,EAA8BA,CAACC,EAAqBC,KAUlD,GADAL,EAAQE,YAAYE,GAAuBC,GACtCL,EAAQE,YAAYE,GAAqBE,QAC1C,MAAM,IAAIC,MAAM,oBAAsBH,EAAsB,mCAEhEJ,EAAQE,YAAYE,GAAqBE,QAAQE,UAAUC,eAAiBL,EACxEJ,EAAQE,YAAYE,GAAqBE,QAAQE,UAAU5N,KAC3DoN,EAAQE,YAAYF,EAAQE,YAAYE,GAAqBE,QAAQE,UAAU5N,IAAMwN,IAMhGJ,EAAQC,QAAgB,OAAI,CACzBS,EAAGA,IAAMC,EAAQ,KACjBC,MAAO,kBACPC,GAAI,CAAC,CAACC,KAAK,OAASC,KAAK,+EAAgFC,MAAO,GAAG,CAACF,KAAK,oBAAsBC,KAAK,4EAA6EC,MAAO,GAAG,CAACF,KAAK,WAAaC,KAAK,kEAAmEC,MAAO,GAAG,CAACF,KAAK,8BAAgCC,KAAK,+FAAgGC,MAAO,GAAG,CAACF,KAAK,sBAAwBC,KAAK,kEAAmEC,MAAO,GAAG,CAACF,KAAK,kBAAoBC,KAAK,+FAAgGC,MAAO,GAAG,CAACF,KAAK,eAAiBC,KAAK,uEAAwEC,MAAO,GAAG,CAACF,KAAK,iBAAmBC,KAAK,iGAAkGC,MAAO,GAAG,CAACF,KAAK,UAAYC,KAAK,0EAA2EC,MAAO,GAAG,CAACF,KAAK,2BAA6BC,KAAK,qGAAsGC,MAAO,GAAG,CAACF,KAAK,oBAAsBC,KAAK,yFAA0FC,MAAO,GAAG,CAACF,KAAK,eAAiBC,KAAK,oFAAqFC,MAAO,GAAG,CAACF,KAAK,iBAAmBC,KAAK,yEAA0EC,MAAO,GAAG,CAACF,KAAK,4BAA8BC,KAAK,4HAA6HC,MAAO,GAAG,CAACF,KAAK,YAAcC,KAAK,iFAAkFC,MAAO,IAE92DC,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,0EAOAnB,EAF4B,4HACXQ,EAAQ,KAQzBR,EAF4B,4EACXQ,EAAQ,MAQzBR,EAF4B,kEACXQ,EAAQ,MAQzBR,EAF4B,+FACXQ,EAAQ,KAQzBR,EAF4B,kEACXQ,EAAQ,KAQzBR,EAF4B,+FACXQ,EAAQ,MAQzBR,EAF4B,yFACXQ,EAAQ,MAQzBR,EAF4B,uEACXQ,EAAQ,KAQzBR,EAF4B,oFACXQ,EAAQ,MAQzBR,EAF4B,qGACXQ,EAAQ,MAQzBR,EAF4B,yEACXQ,EAAQ,MAQzBR,EAF4B,0EACXQ,EAAQ,KAQzBR,EAF4B,iFACXQ,EAAQ,MAQzBR,EAF4B,iGACXQ,EAAQ,MAQzBR,EAF4B,+EACXQ,EAAQ,KAMjCY,OAAOC,aAAeD,OAAOC,cAAgB,GAC7CD,OAAOC,aAAavB,QAAOwB,EAAAA,EAAA,GACpBF,OAAOC,aAAavB,SAAW,IAC/BD,EAAQC,SAGXsB,OAAOC,aAAatB,YAAWuB,EAAAA,EAAA,GAC5BF,OAAOC,aAAatB,aAAe,IACnCF,EAAQE,aAEY,MAAMwB,EAAiB,GAC9BA,EAAe,2DAA6D,CACpFhB,EAAGA,IAAMC,EAAQ,MACjBgB,GAAI,8BAEpBD,EAAe,+DAAiE,CAChEhB,EAAGA,IAAMC,EAAQ,MACjBgB,GAAI,8BAEpBD,EAAe,2DAA6D,CAC5DhB,EAAGA,IAAMC,EAAQ,MACjBgB,GAAI,8BAEpBD,EAAe,kEAAoE,CACnEhB,EAAGA,IAAMC,EAAQ,MACjBgB,GAAI,8BAEpBD,EAAe,uDAAyD,CACxDhB,EAAGA,IAAMC,EAAQ,MACjBgB,GAAI,8BAEpBD,EAAe,2DAA6D,CAC5DhB,EAAGA,IAAMC,EAAQ,KACjBgB,GAAI,4CAEpBD,EAAe,gFAAkF,CACjFhB,EAAGA,IAAMC,EAAQ,MACjBgB,GAAI,yDAEpBD,EAAe,yFAA2F,CAC1FhB,EAAGA,IAAMC,EAAQ,MACjBgB,GAAI,4DAEpBJ,OAAOC,aAAeD,OAAOC,cAAgB,GAC7CD,OAAOC,aAAaE,eAAcD,EAAAA,EAAA,GACPF,OAAOC,aAAaE,gBAAkB,IACtCA,0LC5LpB,MAAeE,EAyBlBC,cAVmB,KAAAC,iBAAsC,CAAEC,aAAa,EAAMC,YAAY,GAQzE,KAAAC,8BAAwC,6BAGrDC,KAAKC,mBAAoB,EACzB,MAAMtI,EAAQqI,KAAKE,kBAAkBF,KAAKD,+BAC1C,IACI,MAAMI,EAAoCxI,EAAQyI,KAAKC,MAAM1I,QAASQ,EAClEgI,IACAH,KAAKhK,eAAiBmK,GAE5B,MAAAG,GACEN,KAAKhK,oBAAiBmC,GAjCpB,mBACN,YAAyBA,IAAlB6H,KAAKO,SAGN,cACN,OAAOP,KAAKO,SAqCT,+BACHP,KAAKJ,iBAAmB,CACpBC,aAAcG,KAAKJ,iBAAiBC,YACpCC,YAAaE,KAAKJ,iBAAiBE,YAKpC,yBAAyBrM,GAC5BuM,KAAKC,kBAAoBxM,EAItB,iCAAiCA,GACpCuM,KAAKO,SAAW9M,EAIb,iCAAiC+M,GACpCR,KAAKrG,wBAA0B6G,EAI5B,gCACHA,EACAC,GAGkB,IAFlBC,EAAAC,UAAAhE,OAAA,QAAAxE,IAAAwI,UAAA,IAAAA,UAAA,GAIA,MAAMR,EAAwB,CAAEjK,QAASsK,EAASpK,UAAWqK,EAAWG,SAHvDD,UAAAhE,OAAA,EAAAgE,UAAA,QAAAxI,EAG2E0I,UAF1EF,UAAAhE,OAAA,EAAAgE,UAAA,QAAAxI,GAGlB6H,KAAKhK,eAAiBmK,EAClBO,GACAV,KAAKc,eAAed,KAAKD,8BAA+BK,KAAKW,UAAUZ,IAKxE,6BAA6Ba,EAAmBC,GACnD,MAAMd,EAAwB,CAAEjK,QAAS,GAAIE,UAAW,GAAIwK,SAAUI,EAAUH,UAAWI,GAC3FjB,KAAKkB,yBAA2Bf,EAI7B,0BAA0BO,GAC7BV,KAAKhK,oBAAiBmC,EAClBuI,GACAV,KAAKmB,cAAcnB,KAAKD,+BAKzB,iBAAiBtM,GACpB,GAAIuM,KAAKO,UAAYP,KAAKO,SAAS7P,KAAO+C,EAAM/C,GAC5C,MAAM,IAAI2N,MAAM,4BAGpB2B,KAAKO,SAAW9M,EAIb,oBACHuM,KAAKO,cAAWpI,EAGZgJ,cAAcC,GAClB,GAAKA,GAGDC,EAAAA,GAASC,UAAW,CACJjC,OAAOkC,aACfC,WAAWJ,IAInBN,eAAeM,EAAazJ,GAChC,GAAKyJ,GAAQzJ,GAGT0J,EAAAA,GAASC,UAAW,CACJjC,OAAOkC,aACfE,QAAQL,EAAKzJ,IAIrBuI,kBAAkBkB,GACtB,GAAKA,GAGDC,EAAAA,GAASC,UAAW,CACpB,MACMI,EADUrC,OAAOkC,aACKI,QAAQP,GACpC,GAAIM,EACA,OAAOA,KAvITE,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,kCAICD,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,6BAIGD,EAAAA,EAAAA,IAAA,CAAXE,EAAAA,IAAU,sCAECF,EAAAA,EAAAA,IAAA,CAAXE,EAAAA,IAAU,+CAECF,EAAAA,EAAAA,IAAA,CAAXE,EAAAA,IAAU,sCAECF,EAAAA,EAAAA,IAAA,CAAXE,EAAAA,IAAU,wCAECF,EAAAA,EAAAA,IAAA,CAAXE,EAAAA,IAAU,yCAECF,EAAAA,EAAAA,IAAA,CAAXE,EAAAA,IAAU,gDAECF,EAAAA,EAAAA,IAAA,CAAXE,EAAAA,IAAU,gCAsBXF,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,4CASPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,wCAMPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,gDAMPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,gDAMPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,+CAgBPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,4CAOPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,yCASPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,gCAUPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,gCCzGJ,MAAMC,UAAqCtC,EAAlDC,cAAA,oBACqB,KAAAsC,iBAA2B,wCAE3B,KAAAC,iBAA2B,gEAGrC,gBAAgBC,EAAoBnL,GACvC,KACKmL,GACAnL,EAAcoL,eAAeC,SAC7BrL,EAAcoL,eAAeC,QAAQC,gBACrCtL,EAAcoL,eAAeC,QAAQE,iBAEtC,OAGJ,IAAIC,EAAwBL,EAE5B,MAAMM,EAAQ,qBAAqBC,OAAOC,gBAAgB,IAAIC,YAAY,IAAI,KAE1E5L,EAAcoL,eAAeC,QAAQQ,8BACrCL,EAAgB,GAAGL,EAAWW,UAAU9L,EAAcoL,eAAeC,QAAQQ,+BAGjF,MAAME,EAAQC,UAAUR,GAClBpB,EAAM4B,UAAUhM,EAAcoL,eAAeC,QAAQC,gBAErDW,EACFjM,EAAcoL,eAAe3M,KAC7BuB,EAAcoL,eAAe3M,IAAInD,QACjC0E,EAAcoL,eAAe3M,IAAInD,OAAO2Q,kBACtCC,EAAa,GACfD,GAAwCjD,KAAKiC,oCAC7Bc,SAAa3B,WAAaqB,IAE9C,OAAO,IAAIU,SAA4CC,IACnD,MAAMC,EAASC,SAASC,cAAc,UACtCF,EAAOG,aAAa,OAAQ,mBAC5BH,EAAOG,aAAa,MAAON,GAE3B7D,OAAOoD,GAAUnS,WACN+O,OAAOoD,GACdY,EAAOI,SAEHnT,GAAQA,EAAKoT,cAAgBpT,EAAKoT,aAAa/G,OAAS,GAAKrM,EAAKoT,aAAa,GAAG5W,UAAU6P,OAAS,GACrGyG,EAAQ,CACJpC,SAAU1Q,EAAKoT,aAAa,GAAG5W,UAAU,GAAG6W,MAAMC,YAAY,GAC9D3C,UAAW3Q,EAAKoT,aAAa,GAAG5W,UAAU,GAAG6W,MAAMC,YAAY,KAIvER,OAAQjL,IAGZmL,SAASO,KAAKC,YAAYT,MAK3B,iBAAiB5P,GAAuB,IAAAsQ,EAC3C,GAAIC,EAAAA,iBAAiBC,cAAcxQ,EAAM2N,KACrC,OAAO+B,QAAQC,UAKnB,KAFwC,QAATW,EAACT,gBAAQ,IAAAS,IAARA,EAAUG,eAAe,yBAE9B,CACvB,GAAI7E,OAAQ,CACR,MAAM8E,EAAmB9E,OAAO+E,YAChC/E,OAAO+E,YAAc,KACbD,GACAA,IAEJnE,KAAKqE,gBAAiB,GAI9B,OAAOlB,QAAQC,UAGnB,MAAMkB,EAAM,GAAGtE,KAAKkC,mBAAmBzO,EAAM2N,IAAM,QAAQ3N,EAAM2N,MAAQ,KAAK3N,EAAM8Q,KAAO,YAAY9Q,EAAM8Q,OAAS,KAClH9Q,EAAM+Q,OAAS,WAAW/Q,EAAM+Q,SAAW,KAG/C,OAAO,IAAIrB,SAAQ,CAACC,EAASqB,KAAU,IAAAC,EAAAC,EACnC,MAAMtB,EAAiB,QAAXqB,EAAGpB,gBAAQ,IAAAoB,OAAA,EAARA,EAAUnB,cAAc,UACvCF,EAAOuB,KAAO,kBACdvB,EAAO3M,OAAQ,EACf2M,EAAOwB,OAAQ,EACfxB,EAAOyB,IAAMR,EACbjB,EAAO3S,GAAK,uBACR2O,SACAA,OAAO+E,YAAc,KACjBpE,KAAKqE,gBAAiB,EACtBjB,MAGRC,EAAO0B,iBAAiB,SAAU7N,IAC9BuN,EAAOvN,MAEH,QAARyN,EAAArB,gBAAQ,IAAAqB,GAAM,QAANA,EAARA,EAAUd,YAAI,IAAAc,GAAdA,EAAgBb,YAAYT,OC5GjC,SAAS2B,EAA8BzV,GAC1C,OAAO,IAAI0V,EAAAA,aAAyC,UAAW1V,EAAQ,+BDavEqS,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,+BAsDPH,EAAAA,EAAAA,IAAA,CADCG,EAAAA,IAAM,+BC9DX,MAIamD,GAA6BC,EAAAA,EAAAA,IAA2B,CACjEpD,OAA6CqD,EAAAA,iBAC7C3R,MAN2C4R,GACpCL,EAA8B,IAAIhD,KAQ7C,+ECKA,MAmEMsD,EAAoBC,IACtB,GAAKA,GAAoC,IAAtBA,EAAW5I,OAI9B,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAGuU,EAAW,KAGnB3I,EAAsBF,IACxB,GAAKA,GAAsC,IAAvBA,EAAYC,OAIhC,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAG0L,EAAY,KAGpB8I,EAAwBA,CAC1B/Q,EACAlE,EACA8B,KAEA,GAAKoC,GAAcpC,EAInB,OACIrB,EAAAA,cAAA,OAAKE,UAAU,uBACVuD,GAAaA,EAAUvC,WACvB3B,GAAsBA,EAAmB2B,WACzCG,GAAiBA,EAAcH,WAChClB,EAAAA,cAAA,OAAKE,UAAU,WACVuD,GAAaA,EAAU2H,OACvB7L,GAAsBA,EAAmB6L,OACzC/J,GAAiBA,EAAc+J,UAM1CqJ,EAAoB9Q,IACtB,MAAM,eAAE1C,EAAc,UAAE4I,GAAclG,EAEtC,OAAO3D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GAAiB4I,EAAUC,IAAI4K,KAG9CA,EAA4B/R,IAC9B,MAAM,eAAE1B,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,EAAM,OAAEM,GAAWH,EAEzE,OACI3C,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAEJM,IAKP6R,EAAsB9Q,IACxB,MAAM,eAAE5C,EAAc,cAAEqK,EAAa,QAAEzI,EAAO,YAAEe,EAAW,OAAEpB,EAAM,OAAE4I,EAAM,MAAEG,EAAK,wBAAEC,GAA4B3H,EAEhH,OACI7D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLqK,EACAzI,EACA2I,EACA5H,EACApB,EACA4I,EACAG,IAUPvM,EAAmBX,GAAiCY,IAClDZ,EAAUa,gBACHb,EAAUa,eAAeD,GAKlC2V,EAAkBA,CACpB1K,EACA7L,EACAe,EACAC,EACA8K,EACA5F,EACAsQ,EACAxQ,EACAyQ,EACAtQ,KAEA,MAAM,eAAEvD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,GAAW0H,GAE3D,UAAEpO,GAAcsD,GAEhB,SAAEW,GAAaV,EAErB,OACIW,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAGLxC,EAAAA,cAACoK,EAAAA,oBAAmB,CAChB1K,GAAG,oCACHmV,IAAKA,EACLxQ,IAAKA,EACLyQ,0BAA2BA,EAC3BzK,aAActK,EACduK,SAAUtL,EAAgBX,GAC1BkM,uBAAwBzO,EAAUyO,uBAClCC,yBAA0BL,EAAmBK,yBAC7CC,yBAA0BN,EAAmBM,yBAC7CC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpCnG,iBAAkBA,IAErBD,IAKPwQ,EAAqB5Q,IACvB,MAAM,eAAElD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,MAAEJ,GAAU0B,EAEhE,OACInE,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BJ,IAKPuS,EAA0BzS,IAC5B,MAAM,eAAEtB,EAAc,OAAEuB,EAAM,MAAEC,GAAUF,EAE1C,OACIvC,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLuB,EACAC,IAKb,EA5NoFrD,IAChF,MAAM,YACFkE,EAAW,2BACXC,EAA0B,0BAC1BC,EAAyB,UACzBC,EAAS,mBACTlE,EAAkB,cAClB8B,EAAa,iBACbmD,EAAgB,UAChBb,EAAS,YACTC,EAAW,YACXC,EAAW,SACX9D,EAAQ,MACR+D,EAAK,MACLC,EAAK,OACLC,EAAM,UACN3F,EAAS,MACTgB,EAAK,UACLvD,EAAS,eACTmI,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVI,EAAsB,IACtBsQ,EAAG,IACHxQ,EAAG,0BACHyQ,EAAyB,uBACzB1Q,EAAsB,cACtBE,GACAlF,EAEJ,OACIY,EAAAA,cAACuJ,EAAAA,OAAMxI,OAAAC,OAAA,GAAKsC,GACRtD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKuC,GAA6BnE,EAAMoK,cAC7CxJ,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKwC,GACLO,EACAD,EACAQ,EACAlF,EAAMwL,iBACNhH,EACA0Q,EAAiBlV,EAAMyM,MAAM0I,YAC7BvQ,EACAL,GAAa8Q,EAAiB9Q,GAC9BQ,GAAc4Q,EAAkB5Q,GAChCpE,GACG6U,EACI7U,EACA1B,EACAe,EACAC,EACAvD,EACAyI,EACAsQ,EACAxQ,EACAyQ,EACAtQ,GAEPP,EACAuQ,EAAsB/Q,EAAWlE,EAAoB8B,GACrDwC,GAAe8Q,EAAmB9Q,GAClC+H,EAAmBxM,EAAMyM,OAASzM,EAAMyM,MAAMH,aAC9CxH,GAAmB8Q,EAAuB9Q,GAC1CE,GAA0B4Q,EAAuB5Q,sNCrE3D,MAAM6Q,EAAbtG,cAKW,KAAAuG,YAAc,IAAc,oBAM5B,KAAAC,mBAAqB,IAAc,oBAMnC,KAAAC,cAAgB,IAAiB,eAQrC,MAAMC,EAAqChB,GACvC,IAAIY,EASRvP,eAAe4P,EAA2B7S,EAA+B8S,GAE5E,aADgCC,EAAAA,iBAAAA,sBAAuC,CAAEC,cAAeF,IASrF,MAAMG,GAAiCvB,EAAAA,EAAAA,IAA8C,CACxFzU,GAAI,mEACJqR,OAAQuE,EACR7S,MAAO4S,IAGX,sJCzCA,SAASxZ,EAA0CC,GAC/C,MAAO,CACHC,yBAA0BD,EAAUC,yBAEpCC,wBAAyBF,EAAUE,wBACnCC,4BAA6BH,EAAUG,4BAEvCC,gCAAiCJ,EAAUI,gCAC3CC,iCAAkCL,EAAUK,iCAC5CC,sCAAuCN,EAAUM,sCAEjDC,oBAAqBP,EAAUO,oBAC/BC,wBAAyBR,EAAUQ,wBACnCC,cAAeT,EAAUS,eASjC,SAASC,EAAyCV,GAC9C,MAAO,CACHW,yBAA0BX,EAAUY,0BACpCC,wBAAyBb,EAAUc,mBACnCC,2BAA4Bf,EAAUe,2BACtCC,yBAA0BhB,EAAUiB,+BAEpCC,yBAA0BlB,EAAUkB,yBAEpCC,yBAA0BnB,EAAUoB,8BACpCC,+BAAgCrB,EAAUsB,0CASlD,SAASC,EAAgDvB,GACrD,MAAO,CACHwB,4BAA6BxB,EAAUwB,4BACvCC,2BAA4BzB,EAAUyB,2BACtCC,0CAA2C1B,EAAU0B,0CACrDC,6CAA8C3B,EAAU2B,6CACxDC,0CAA2C5B,EAAU4B,0CACrDC,cAAe7B,EAAU8B,UACzBC,kBAAmB/B,EAAU+B,kBAC7BC,iBAAkBhC,EAAUgC,kBASpC,SAASC,EACLjC,GAEA,MAAO,CACHkC,yBAA0BlC,EAAUkC,yBACpCC,8BAA+BnC,EAAUmC,8BACzCC,yBAA0BpC,EAAUoC,yBACpCC,+BAAgCrC,EAAUqC,gCAWlD,MAAMC,EAA6BA,CAACC,EAA6BvC,EAAmCwC,IAChGC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,iBACXC,gBACsB,sBAAlBH,EAAOI,QAAiCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MC1E5H,IAAKC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,eADJ,CAAYA,IAAAA,EAAe,KAS3B,MAAMC,EAAmBX,GAAiCY,IAClDZ,EAAUa,gBACHb,EAAUa,eAAeD,GAiIlCE,EAA2BA,CAC7BC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMG,qBAAuBjB,EAC9B,OAAO,KAGX,MAAMkB,EDhEoCC,EAC1CL,EACAC,EACAhB,EACAC,KAEA,MAAM,GAEFoB,EAAE,SACFC,EAAQ,QACRC,EACAN,MACIO,gBAAkBtB,OAAQsB,GAC1BC,qBAAuBvB,OAAQuB,IAClC,UACDhE,EAAS,OACTwF,GACAlC,GAEE,SAAEW,GAAaV,EAGfmN,EAAmCpN,EAAMqN,0CAA2C,EAC1F,OACI5M,GACIG,EAAAA,cAACC,EAAAA,4BAA2Bc,OAAAC,OAAA,CACxBd,UAAU,gCACVC,6BAA8BrE,EAAUqE,6BACxCC,gCAAiCtE,EAAUsE,gCAC3CC,kCAAmCxE,EAA0CC,GAC7EwE,mCAAoC9D,EAAyCV,GAC7EyE,wCAAyClD,EAAgDvB,GACzF0E,uDAAwDzC,EACpDjC,GAEJwD,KAAM,CAAEhB,QAAAA,EAASyB,SAAAA,EAAUF,eAAAA,EAAgBC,oBAAAA,GAC3CF,QAASA,EACTF,GAAIA,EACJC,SAAUA,EACVc,QAASrC,EAA2BC,EAAWvC,EAAWwC,GAC1DoC,8BAA+BrB,EAAMsB,sBACrCC,mBAAmB,EACnBC,gBArBa,EAsBb6L,cAAepL,QAAmC6F,IAAzB7F,EAAOoL,cAA8BpL,EAAOoL,mBAAgBvF,EACrFwF,oCAAqCH,GAChCA,GAAoC,CAAEI,UAAWxN,EAAMyN,qBCmB5CpN,CAA+BL,EAAOC,EAAOhB,EAAWC,GAEpF,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMG,mBAAmB0B,gBAC9B7B,EAAMG,mBAAmB2B,WACzB1B,IAYP2B,EAAwBA,CAAC9C,EAA6BvC,EAAmCwC,IAC3FC,IAEAF,EAAUG,iBAAiB,CACvBC,UAAW,WACXC,gBACsB,qBAAlBH,EAAOI,QAAgCC,EAAAA,EAAAA,IAAmBL,EAAOM,kBAAmB/C,EAAWwC,MAAAA,OAAO,EAAPA,EAASQ,YAAc,MAmD5HsC,EAAsBA,CACxBhC,EACAC,EACAhB,KAEA,MAAMC,EAAUc,EAAME,KAAKhB,QAAQC,OACnC,IAAKa,EAAMiC,gBAAkB/C,EACzB,OAAO,KAGX,IAAKc,EAAMkC,OAAOC,eACd,OAAO,KAGX,MAAMC,EArDwBC,EAC9BrC,EACAC,EACAhB,EACAC,KAEA,MAAM,QAAEsB,EAAO,UAAE9D,GAAcsD,EACzBsC,EAAYtC,EAAME,KAAKoC,UAAUnD,OAEvC,OACIyB,EAAAA,cAAC2B,EAAAA,uBAAsB,CACnBzB,UAAU,gCACV0B,wBAAyB9F,EAAU8F,wBACnCC,6BAA8B/F,EAAU+F,6BACxCC,qBAAsBhG,EAAUgG,qBAChCC,2BAA4BjG,EAAUiG,2BACtCC,uBAAwBlG,EAAUkG,uBAClCC,4BAA6BnG,EAAUmG,4BACvCC,eAAgBpG,EAAUoG,eAC1B5C,KAAM,CAAEhB,QAAAA,EAASoD,UAAAA,GACjB9B,QAASA,EACTuC,SAAS,SACTzC,GAAIN,EAAMM,GACVC,SAAUP,EAAMO,SAChBc,QAASU,EAAsB9C,EAAWvC,EAAWwC,GACrD8D,mBAAoB/C,EAAMgD,gBAC1BxB,gBAlBwB,EAmBxBD,mBAAmB,KA0BJa,CAA0BrC,EAAOC,EAAOhB,EAAWC,GAC1E,OACI0B,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK5B,EAAMiC,cAAcJ,gBACzB7B,EAAMiC,cAAcH,WACpBM,IAUPc,EAAyBC,IAE3B,MAAM,eAAEtB,EAAc,OAAEuB,EAAM,MAAEC,GAAUF,EAE1C,OACIvC,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLuB,EACAC,IAuBPC,EAA2BC,IAC7B,MAAM,eAAE1B,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,EAAM,OAAEM,GAAWH,EAEzE,OACI3C,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BC,EACAN,IAoPb,EA/NoFpD,IAAQ,IAAA2D,EAAAC,EAAAC,EAExF,MAAM,YACFK,EAAW,2BAEXC,EAA0B,0BAE1BC,EAAyB,UACzBC,EAAS,mBACTlE,EAAkB,cAClB8B,EAAa,wBACbqC,EAAuB,UACvBC,EAAS,YACTC,EAAW,YACXC,EAAW,SACX9D,EAAQ,MACR+D,EAAK,MACLC,EAAK,OACLC,EAAM,eACNC,EAAc,gBACdC,EAAe,WACfC,EAAU,uBACVC,EAAsB,IACtByQ,EAAG,IAEHxQ,EAAG,0BACHyQ,EAAyB,cACzBxQ,EAAa,UACbjG,EAAS,MACTgB,EAAK,UACLvD,EAAS,uBACTyI,EAAsB,iBACtBC,EACAC,KAAOnD,OAAQoD,GAAW,SAC1BC,GACAvF,EACJ,IAAIwF,EAAkBxF,EAAMtD,UAAU8I,QACtCA,GAAoC,QAA7B7B,EAAI3D,EAAME,KAAKhB,QAAQC,cAAM,IAAAwE,OAAA,EAAzBA,EAA2B8B,OACtC,MAAMC,EAAwF,QAAtE9B,EAA2B5D,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAyE,OAAA,EAA3CA,EAA6CgC,eAC1FC,EAAmBH,MAAAA,GAAAA,EAAoBI,QAAUJ,EAAmBI,QAAU,GAC9EC,EAAqBL,MAAAA,GAAAA,EAAoBM,UAAYN,EAAmBM,UAAY,IAEnFC,EAAcC,GAAmBtF,EAAAA,SAAuB,KACxDuF,EAAeC,GAAoBxF,EAAAA,UAAwB,GAsB5DyF,EAAezF,EAAAA,aAAkB0F,UAAW,IAAAC,EAC9C,MAAMlD,EAAQ,IAAImD,EAAAA,qCACW,QADyBD,EAClDvG,EAAME,KAAKhB,QAAQC,cAAM,IAAAoH,OAAA,EAAzBA,EAA2BE,SAC3B9G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,KAChB/G,EAAgB+G,MAChB,SAoBEC,EAAAA,EAAAA,iCAAgCtD,EAAOrD,EAAMQ,QAAQoG,eACtDC,OAAOC,IACJ9G,EAAM+G,UAAUD,MAAMA,EAAME,YAE/BC,MAAKC,IACF,GAAIA,GAAYC,EAAAA,gBAAgBC,YAAYF,GAAW,CAAC,IAADG,EACnD,MAAMC,EAAoBC,IAA+B,IAAAC,EAAA,OAC5B,QAAzBA,EAAAD,EAAME,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzBA,EAA2BE,uBAAe,IAAAF,OAAA,EAA1CA,EAA4CG,iBAAkB9B,GAC5D+B,EAAkCV,EAASW,OAAOP,GAClDQ,EAA6BX,EAAAA,gBAAgBC,YAAYQ,GACzDA,EAAgCjI,EAAgB+G,WAChDqB,EACAC,EAtDUC,CAAAA,IAC5B,GAAIA,GAAyBd,EAAAA,gBAAgBC,YAAYa,EAAsBC,6BAC3E,IAAK,MAAMC,KAA+BF,EAAsBC,4BAA6B,CAAC,IAADE,EACzF,IAC6C,QAAzCA,EAAAH,EAAsBR,2BAAmB,IAAAW,GAAiB,QAAjBA,EAAzCA,EAA2CV,uBAAe,IAAAU,OAAA,EAA1DA,EAA4DC,uBAC5DF,EAA4BG,iBAE5B,OAAOH,EAA4BI,kBA+CUC,CAAuBV,GAE9DW,GA1BQC,EAyBqBZ,MAAAA,GAA+C,QAArBT,EAA1BS,EAA4BL,2BAAmB,IAAAJ,OAAA,EAA/CA,EAAiDsB,oBAxBvFrD,EAAUsD,oBAIXzB,EAAAA,gBAAgBC,YAAYsB,IACrBA,EAAmB/I,EAAgB+G,MAAMmC,kBAAqBlJ,EAAgB+G,MAoB/C1G,EAAMtD,UAAUoM,YAAc9I,EAAMtD,UAAUqM,eAC1EC,EAAgChB,GAAsCS,EACtEQ,EAAiC,IAAGC,EAAAA,EAAAA,QACtClJ,EAAMtD,UAAUyM,iCAChBpD,MACCiD,IACL9C,EAAgB+C,GAhCFP,IAAAA,KAoC1BtC,GAAiB,KAClB,CAC0B,QAD1BvC,EACC7D,EAAME,KAAKhB,QAAQC,cAAM,IAAA0E,OAAA,EAAzBA,EAA2B4C,SAC3BnB,EAAUsD,iBACV/C,EACAE,EACA/F,EAAMQ,QAAQoG,cACd5G,EAAMtD,UAAUyM,iCAChBnJ,EAAMtD,UAAUoM,YAChB9I,EAAMtD,UAAUqM,eAChB/I,EAAM+G,YAGVnG,EAAAA,WAAgB,KACRZ,EAAMkC,OAAOkH,0BACb/C,IAAeQ,OAAOC,IAClB9G,EAAM+G,UAAUD,MAAMA,EAAME,cAGrC,CAACX,EAAcF,EAAenG,EAAM+G,UAAW/G,EAAMkC,OAAOkH,4BAE/DC,EAAAA,EAAAA,KACI,SAAAC,EAAA,OAAiD,QAAjDA,EAAMtJ,EAAME,KAAKyF,0BAA0BxG,cAAM,IAAAmK,OAAA,EAA3CA,EAA6CC,2BACnD,KACInD,GAAiB,MAoBzB,OACIxF,EAAAA,cAACuJ,EAAAA,OAAMxI,OAAAC,OAAA,GAAKsC,GACRtD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKuC,GAA6BnE,EAAMoK,cAC7CxJ,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKwC,GACLmB,GAAYA,EAAS,GAAGoE,KACxBhF,EACD/D,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,+BACZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwC0E,GACtDZ,GAELhE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,6BACZF,EAAAA,cAAA,OAAKE,UAAU,kCAAkCd,EAAMtD,UAAU8N,WAChE9F,GAEJH,GAzLQA,CAAAA,IACrB,MAAM,eAAE1C,EAAc,UAAE4I,GAAclG,EAEtC,OAAO3D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GAAiB4I,EAAUC,IAAIpH,KAsLtBqH,CAAgBpG,GAC7BQ,GAlZSA,CAAAA,IACtB,MAAM,eAAElD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,MAAEJ,GAAU0B,EAEhE,OACInE,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GAAsBC,GAC/BJ,IA4YkBuH,CAAiB7F,GAChCnE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCACZF,EAAAA,cAAA,OAAKE,UAAU,yCACVH,GA3cFkK,EACnBC,EACA7L,EACAe,EACAC,EACA8K,EACA5F,EAGAsQ,EACAxQ,EACAyQ,EACAtQ,EACAF,KAGA,MAAM,eAAErD,EAAc,oBAAE2B,EAAmB,QAAEC,EAAO,OAAEL,GAAW0H,GAE3D,UAAEpO,GAAcsD,GAEhB,SAAEW,GAAaV,EAErB,OACIW,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACNjB,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAK4B,GACLC,EACAL,GAGLxC,EAAAA,cAACoK,EAAAA,oBAAmB,CAChB1K,GAAG,oCACHmV,IAAKA,EACLxQ,IAAKA,EACLyQ,0BAA2BA,EAC3BzK,aAActK,EACduK,SAAUtL,EAAgBX,GAC1BkM,uBAAwBzO,EAAUyO,uBAClCC,yBAA0B1O,EAAU0O,yBACpCC,yBAA0B3O,EAAU2O,yBACpCC,gBAAiBP,EAAmBO,gBACpCC,gBAAiBR,EAAmBQ,gBACpCnG,iBAAkBA,IAErBF,EACAC,IAgae0F,CACIlK,EACA1B,EACAe,EACAC,EACAvD,EACAyI,EACAsQ,EACAxQ,EACAyQ,EACAtQ,EACAF,GAEPlF,EAAMwL,mBAGdxL,EAAMkC,OAAOkH,0BAA4BvD,GA/CX6F,MAA8B,IAAAC,EAAAC,EAErE,GAD6BzE,EAAAA,gBAAgBC,YAAqC,QAA1BuE,EAAC3L,EAAME,KAAKhB,QAAQC,cAAM,IAAAwM,OAAA,EAAzBA,EAA2BE,kBACT9D,KAAtB,QAAzB6D,EAAA5L,EAAME,KAAKhB,QAAQC,cAAM,IAAAyM,OAAA,EAAzBA,EAA2BE,iBACnD,OAOJ,OAAOlL,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GALuB,CAC/Bd,UAAW,0CACXiL,IAAK,SAGyB9F,IAqCoCyF,GAC7D7G,EAvZQR,CAAAA,IAErB,MAAM,eAAExC,EAAc,WAAEC,EAAU,OAAEkK,GAAW3H,EAE/C,OACIzD,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLC,EACAkK,IAiZIC,CAAgB5H,GAChBI,GAxYUA,CAAAA,IAEvB,MAAM,eAAE5C,EAAc,cAAEqK,EAAa,QAAEzI,EAAO,YAAEe,EAAW,OAAEpB,EAAM,OAAE4I,EAAM,MAAEG,EAAK,wBAAEC,GAA4B3H,EAEhH,OACI7D,EAAAA,cAACc,EAAAA,KAAIC,OAAAC,OAAA,GAAKC,GACLqK,EACAzI,EACA2I,EACA5H,EACApB,EACA4I,EACAG,IA4XmBE,CAAkB5H,GACjCxC,GAAiBD,EAAoBhC,EAAOC,EAAOhB,GACnDqF,EACAnE,GAAsBJ,EAAyBC,EAAOC,EAAOhB,GAC7DwF,MAAAA,GAAAA,EAAa2H,wBACVxL,EAAAA,cAAA,OAAKE,UAAU,8BAA8B2D,EAAY2H,yBACzD,KArPQE,CAAAA,IACxB,GAAKA,GAAsC,IAAvBA,EAAYC,OAIhC,OAAO3L,EAAAA,cAAAA,EAAAA,SAAA,KAAG0L,EAAY,KAiPTE,CAAmBxM,EAAMyM,OAASzM,EAAMyM,MAAMH,aAC/C1L,EAAAA,cAAA,OAAKE,UAAU,gCAAgCd,EAAMtD,UAAU6Z,UAC/D3V,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,gCACXgE,GAAmB5B,EAAsB4B,GACzCE,GAA0B9B,EAAsB8B,IAErDpE,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,mCACZF,EAAAA,cAAA,OAAKE,UAAU,wCAAwCd,EAAMtD,UAAUgQ,iBACtElI,GAEJ2C,EAAAA,gBAAgBC,YAAYpH,EAAMyM,MAAMO,sBACrCpM,EAAAA,cAACc,EAAAA,KAAI,CAACZ,UAAU,qCAAqCd,EAAMyM,MAAMO,qBAAqB,IACtF,eCvjBpBwJ,EAAOC,QAAU7V,cCAjB4V,EAAOC,QAAUC","sources":["webpack://illumina-commerce/./src/themes/newsunshine-b2c/views/components/buybox-add-to-order-template.tsx?d0da","webpack://illumina-commerce/./src/themes/newsunshine-b2c/views/buybox.view.tsx?7bf0","webpack://illumina-commerce/./src/themes/newsunshine-dev-b2c/views/components/buybox-add-to-order-template.tsx?20a5","webpack://illumina-commerce/./src/themes/newsunshine-dev-b2c/views/buybox.view.tsx?b2ee","webpack://illumina-commerce/./src/themes/newsunshine-dev/views/components/buybox-add-to-order-template.tsx?adbc","webpack://illumina-commerce/./src/themes/newsunshine-dev/views/buybox.view.tsx?104b","webpack://illumina-commerce/./src/themes/newsunshine-retail-dev/views/components/buybox-add-to-order-template.tsx?e700","webpack://illumina-commerce/./src/themes/newsunshine-retail-dev/views/buybox.view.tsx?ffe5","webpack://illumina-commerce/./src/themes/newsunshine/views/components/buybox-add-to-order-template.tsx?0426","webpack://illumina-commerce/./src/themes/newsunshine/views/buybox.view.tsx?cc62","webpack://illumina-commerce/./lib/buybox/module-registration.js?bcce","webpack://illumina-commerce/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://illumina-commerce/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://illumina-commerce/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://illumina-commerce/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://illumina-commerce/../../src/get-cart-configuration.ts?4302","webpack://illumina-commerce/./src/modules/adventureworks/views/components/buybox-add-to-order-template.tsx?ceb4","webpack://illumina-commerce/./src/modules/adventureworks/views/buybox.view.tsx?98cf","webpack://illumina-commerce/external var \"React\"?0d3b","webpack://illumina-commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport {\r\n AddToOrderTemplateComponent,\r\n IAddToOrderTemplateDialogResources,\r\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources,\r\n IOrderTemplateActionErrorResult,\r\n IOrderTemplateNameDialogResources\r\n} 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\r\n} 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(\r\n resources: IBuyboxCommonResources\r\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IOrderTemplateActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): React.ReactNode => {\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 { quantity } = state;\r\n\r\n const isShowButtonText = true;\r\n\r\n return (\r\n orderTemplates && (\r\n \r\n )\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Text } from '@msdyn365-commerce/core';\r\nimport { AddToWishlistComponent, IWishlistActionErrorResult } 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 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,\r\n getFullAvailableInventoryNearby,\r\n 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 { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { renderAddToOrderTemplateButton } from './components/buybox-add-to-order-template';\r\nimport { IBuyboxData } from './buybox.data';\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\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\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\r\n): JSX.Element => {\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 { resources } = props;\r\n\r\n const { quantity } = 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 {heading}\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): 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 return (\r\n \r\n {errorBlock}\r\n {button}\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 { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IWishlistActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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 if (!props.config.enableWishlist) {\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 <>{socialShare[0]};\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 {heading}\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 {dropdowns.map(renderConfigureDropdown)};\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\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 productComparisonButton,\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 quantityLimitsMessages,\r\n telemetryContent,\r\n app: { config: appConfig },\r\n catalogs\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 /**\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 (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId\r\n ) {\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(\r\n props.data.product.result?.RecordId,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n true\r\n );\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)\r\n .catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n })\r\n .then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\r\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\r\n : 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(\r\n props.resources.availabilityAtPreferredStoreText,\r\n preferredStoreName\r\n )} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId,\r\n appConfig.enableStockCheck,\r\n preferredStoreId,\r\n preferredStoreName,\r\n props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText,\r\n props.resources.inStockText,\r\n props.resources.outOfStockText,\r\n 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 /**\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 {availability};\r\n };\r\n\r\n const descriptionNode = (node: React.ReactNode): string => {\r\n if (!node) {\r\n return '';\r\n }\r\n const nodeEl = node as JSX.Element;\r\n const DescriptionObject = nodeEl.props.children;\r\n return DescriptionObject;\r\n }\r\n\r\n const productSize = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productSizeAttributeName);\r\n const brandName = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.brandNameAttributeName);\r\n const productUnit = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productUnitAttributeName);\r\n const productIngredient = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productIngredientAttributeName);\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n

\r\n {brandName?.TextValue}\r\n {catalogs && catalogs[0].Name}\r\n

\r\n {title}\r\n
\r\n {props.resources.sizeText} {productSize?.FloatValue} {productUnit?.TextValue}\r\n
\r\n \r\n\r\n
{skuText}
\r\n {rating}\r\n
\r\n\r\n \r\n
{props.resources.priceText}
\r\n {price}\r\n
\r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity &&\r\n renderQuantity(\r\n quantity,\r\n callbacks,\r\n props,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n max,\r\n telemetryContent,\r\n unitOfMeasure\r\n )}\r\n {props.bulkPurchaseLink}\r\n {props.config.stockAvailableText}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {inventoryLabel}\r\n {renderAddToCart(addToCart)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {productComparisonButton}\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 {/*
{props.resources.shopText}
*/}\r\n\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n \r\n
{props.resources.descriptionText}
\r\n \r\n {productIngredient && productIngredient.TextValue !== '' && }\r\n {/* {description} */}\r\n
\r\n {ArrayExtensions.hasElements(props.slots.productSpecification) ? (\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.\r\n * All rights reserved. See LICENSE 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\r\n} 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\r\n} 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(\r\n resources: IBuyboxCommonResources\r\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IOrderTemplateActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): React.ReactNode => {\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 { quantity } = state;\r\n\r\n const isShowButtonText = true;\r\n\r\n return (\r\n orderTemplates && (\r\n \r\n )\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Text } from '@msdyn365-commerce/core';\r\nimport { AddToWishlistComponent, IWishlistActionErrorResult } 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 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,\r\n getFullAvailableInventoryNearby,\r\n 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 { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { renderAddToOrderTemplateButton } from './components/buybox-add-to-order-template';\r\nimport { IBuyboxData } from './buybox.data';\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\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\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\r\n): JSX.Element => {\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 { resources } = props;\r\n\r\n const { quantity } = 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 {heading}\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): 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 return (\r\n \r\n {errorBlock}\r\n {button}\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 { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IWishlistActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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 if (!props.config.enableWishlist) {\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 <>{socialShare[0]};\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 {heading}\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 {dropdowns.map(renderConfigureDropdown)};\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\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 productComparisonButton,\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 quantityLimitsMessages,\r\n telemetryContent,\r\n app: { config: appConfig },\r\n catalogs\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 /**\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 (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId\r\n ) {\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(\r\n props.data.product.result?.RecordId,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n true\r\n );\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)\r\n .catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n })\r\n .then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\r\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\r\n : 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(\r\n props.resources.availabilityAtPreferredStoreText,\r\n preferredStoreName\r\n )} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId,\r\n appConfig.enableStockCheck,\r\n preferredStoreId,\r\n preferredStoreName,\r\n props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText,\r\n props.resources.inStockText,\r\n props.resources.outOfStockText,\r\n 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 /**\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 {availability};\r\n };\r\n\r\n const descriptionNode = (node: React.ReactNode): string => {\r\n if (!node) {\r\n return '';\r\n }\r\n const nodeEl = node as JSX.Element;\r\n const DescriptionObject = nodeEl.props.children;\r\n return DescriptionObject;\r\n }\r\n\r\n const productSize = props.data.productSpecificationData.result?.find(result => result.RecordId === appConfig.productSizeAttributeRecordId);\r\n const brandName = props.data.productSpecificationData.result?.find(result => result.RecordId === appConfig.brandNameAttributeRecordId);\r\n const productUnit = props.data.productSpecificationData.result?.find(result => result.RecordId === appConfig.productUnitAttributeRecordId);\r\n\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n

\r\n {brandName?.TextValue}\r\n {catalogs && catalogs[0].Name}\r\n

\r\n {title}\r\n
\r\n {props.resources.sizeText} {productSize?.FloatValue} {productUnit?.TextValue}\r\n
\r\n \r\n\r\n
{skuText}
\r\n {rating}\r\n
\r\n\r\n \r\n
{props.resources.priceText}
\r\n {price}\r\n
\r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity &&\r\n renderQuantity(\r\n quantity,\r\n callbacks,\r\n props,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n max,\r\n telemetryContent,\r\n unitOfMeasure\r\n )}\r\n {props.bulkPurchaseLink}\r\n {props.config.stockAvailableText}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {inventoryLabel}\r\n {renderAddToCart(addToCart)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {productComparisonButton}\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 {/*
{props.resources.shopText}
*/}\r\n\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\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 {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.\r\n * All rights reserved. See LICENSE 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\r\n} 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\r\n} 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(\r\n resources: IBuyboxCommonResources\r\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IOrderTemplateActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): React.ReactNode => {\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 config\r\n } = props;\r\n\r\n const { quantity } = state;\r\n\r\n const isShowButtonText = true;\r\n const isMultipleCatalogsFeatureEnabled = props.isChannelMultipleCatalogsFeatureEnabled || false;\r\n return (\r\n orderTemplates && (\r\n \r\n )\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Text } from '@msdyn365-commerce/core';\r\nimport { AddToWishlistComponent, IWishlistActionErrorResult } 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 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,\r\n getFullAvailableInventoryNearby,\r\n 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 { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { renderAddToOrderTemplateButton } from './components/buybox-add-to-order-template';\r\nimport { IBuyboxData } from './buybox.data';\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\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\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\r\n): JSX.Element => {\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 { resources } = props;\r\n\r\n const { quantity } = 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 {heading}\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): 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 return (\r\n \r\n {errorBlock}\r\n {button}\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 { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IWishlistActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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 if (!props.config.enableWishlist) {\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 <>{socialShare[0]};\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 {heading}\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 {dropdowns.map(renderConfigureDropdown)};\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\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 productComparisonButton,\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 quantityLimitsMessages,\r\n telemetryContent,\r\n app: { config: appConfig },\r\n catalogs\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 /**\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 (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId\r\n ) {\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(\r\n props.data.product.result?.RecordId,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n true\r\n );\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)\r\n .catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n })\r\n .then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\r\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\r\n : 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(\r\n props.resources.availabilityAtPreferredStoreText,\r\n preferredStoreName\r\n )} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId,\r\n appConfig.enableStockCheck,\r\n preferredStoreId,\r\n preferredStoreName,\r\n props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText,\r\n props.resources.inStockText,\r\n props.resources.outOfStockText,\r\n 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 /**\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 {availability};\r\n };\r\n\r\n const descriptionNode = (node: React.ReactNode): string => {\r\n if (!node) {\r\n return '';\r\n }\r\n const nodeEl = node as JSX.Element;\r\n const DescriptionObject = nodeEl.props.children;\r\n return DescriptionObject;\r\n }\r\n\r\n const productSize = props.data.productSpecificationData.result?.find(result => result.RecordId === appConfig.productSizeAttributeRecordId);\r\n const brandName = props.data.productSpecificationData.result?.find(result => result.RecordId === appConfig.brandNameAttributeRecordId);\r\n const productUnit = props.data.productSpecificationData.result?.find(result => result.RecordId === appConfig.productUnitAttributeRecordId);\r\n\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n

\r\n {brandName?.TextValue}\r\n {catalogs && catalogs[0].Name}\r\n

\r\n {title}\r\n
\r\n {props.resources.sizeText} {productSize?.FloatValue} {productUnit?.TextValue}\r\n
\r\n \r\n\r\n
{skuText}
\r\n {rating}\r\n
\r\n\r\n \r\n
{props.resources.priceText}
\r\n {price}\r\n
\r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity &&\r\n renderQuantity(\r\n quantity,\r\n callbacks,\r\n props,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n max,\r\n telemetryContent,\r\n unitOfMeasure\r\n )}\r\n {props.bulkPurchaseLink}\r\n {props.config.stockAvailableText}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {inventoryLabel}\r\n {renderAddToCart(addToCart)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {productComparisonButton}\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 {/*
{props.resources.shopText}
*/}\r\n\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\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 {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.\r\n * All rights reserved. See LICENSE 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\r\n} 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\r\n} 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(\r\n resources: IBuyboxCommonResources\r\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IOrderTemplateActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): React.ReactNode => {\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 config\r\n } = props;\r\n\r\n const { quantity } = state;\r\n\r\n const isShowButtonText = true;\r\n const isMultipleCatalogsFeatureEnabled = props.isChannelMultipleCatalogsFeatureEnabled || false;\r\n return (\r\n orderTemplates && (\r\n \r\n )\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Text } from '@msdyn365-commerce/core';\r\nimport { AddToWishlistComponent, IWishlistActionErrorResult } 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 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,\r\n getFullAvailableInventoryNearby,\r\n 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 { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { renderAddToOrderTemplateButton } from './components/buybox-add-to-order-template';\r\nimport { IBuyboxData } from './buybox.data';\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\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\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\r\n): JSX.Element => {\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 { resources } = props;\r\n\r\n const { quantity } = 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 {heading}\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): 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 return (\r\n \r\n {errorBlock}\r\n {button}\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 { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IWishlistActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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 if (!props.config.enableWishlist) {\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 <>{socialShare[0]};\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 {heading}\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 {dropdowns.map(renderConfigureDropdown)};\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\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 productComparisonButton,\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 quantityLimitsMessages,\r\n telemetryContent,\r\n app: { config: appConfig },\r\n catalogs\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 /**\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 (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId\r\n ) {\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(\r\n props.data.product.result?.RecordId,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n true\r\n );\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)\r\n .catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n })\r\n .then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\r\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\r\n : 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(\r\n props.resources.availabilityAtPreferredStoreText,\r\n preferredStoreName\r\n )} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId,\r\n appConfig.enableStockCheck,\r\n preferredStoreId,\r\n preferredStoreName,\r\n props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText,\r\n props.resources.inStockText,\r\n props.resources.outOfStockText,\r\n 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 /**\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 {availability};\r\n };\r\n\r\n const descriptionNode = (node: React.ReactNode): string => {\r\n if (!node) {\r\n return '';\r\n }\r\n const nodeEl = node as JSX.Element;\r\n const DescriptionObject = nodeEl.props.children;\r\n return DescriptionObject;\r\n }\r\n\r\n const productSize = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productSizeAttributeName);\r\n const brandName = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.brandNameAttributeName);\r\n const productUnit = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productUnitAttributeName);\r\n\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n

\r\n {brandName?.TextValue}\r\n {catalogs && catalogs[0].Name}\r\n

\r\n {title}\r\n
\r\n {props.resources.sizeText} {productSize?.FloatValue} {productUnit?.TextValue}\r\n
\r\n \r\n\r\n
{skuText}
\r\n {rating}\r\n
\r\n\r\n \r\n
{props.resources.priceText}
\r\n {price}\r\n
\r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity &&\r\n renderQuantity(\r\n quantity,\r\n callbacks,\r\n props,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n max,\r\n telemetryContent,\r\n unitOfMeasure\r\n )}\r\n {props.bulkPurchaseLink}\r\n {props.config.stockAvailableText}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {inventoryLabel}\r\n {renderAddToCart(addToCart)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {productComparisonButton}\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 {/*
{props.resources.shopText}
*/}\r\n\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\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 {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.\r\n * All rights reserved. See LICENSE 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\r\n} 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\r\n} 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(\r\n resources: IBuyboxCommonResources\r\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IOrderTemplateActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): React.ReactNode => {\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 config\r\n } = props;\r\n\r\n const { quantity } = state;\r\n\r\n const isShowButtonText = true;\r\n const isMultipleCatalogsFeatureEnabled = props.isChannelMultipleCatalogsFeatureEnabled || false;\r\n return (\r\n orderTemplates && (\r\n \r\n )\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Text } from '@msdyn365-commerce/core';\r\nimport { AddToWishlistComponent, IWishlistActionErrorResult } 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 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,\r\n getFullAvailableInventoryNearby,\r\n 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 { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { renderAddToOrderTemplateButton } from './components/buybox-add-to-order-template';\r\nimport { IBuyboxData } from './buybox.data';\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\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\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\r\n): JSX.Element => {\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 { resources } = props;\r\n\r\n const { quantity } = 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 {heading}\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): 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 return (\r\n \r\n {errorBlock}\r\n {button}\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 { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IWishlistActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors:\r\n 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): 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 = (\r\n props: IBuyboxViewProps & IBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): 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 if (!props.config.enableWishlist) {\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 <>{socialShare[0]};\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 {heading}\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 {dropdowns.map(renderConfigureDropdown)};\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\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 productComparisonButton,\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 quantityLimitsMessages,\r\n telemetryContent,\r\n app: { config: appConfig },\r\n catalogs\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 /**\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 (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId\r\n ) {\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(\r\n props.data.product.result?.RecordId,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n true\r\n );\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)\r\n .catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n })\r\n .then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\r\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\r\n : 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(\r\n props.resources.availabilityAtPreferredStoreText,\r\n preferredStoreName\r\n )} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId,\r\n appConfig.enableStockCheck,\r\n preferredStoreId,\r\n preferredStoreName,\r\n props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText,\r\n props.resources.inStockText,\r\n props.resources.outOfStockText,\r\n 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 /**\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 {availability};\r\n };\r\n\r\n const descriptionNode = (node: React.ReactNode): string => {\r\n if (!node) {\r\n return '';\r\n }\r\n const nodeEl = node as JSX.Element;\r\n const DescriptionObject = nodeEl.props.children;\r\n return DescriptionObject;\r\n }\r\n\r\n const productSize = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productSizeAttributeName);\r\n const brandName = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.brandNameAttributeName);\r\n const productUnit = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productUnitAttributeName);\r\n const productIngredient = props.data.productSpecificationData.result?.find(result => result.Name === appConfig.productIngredientAttributeName);\r\n\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n

\r\n {brandName?.TextValue}\r\n {catalogs && catalogs[0].Name}\r\n

\r\n {title}\r\n
\r\n {props.resources.sizeText} {productSize?.FloatValue} {productUnit?.TextValue}\r\n
\r\n \r\n\r\n
{skuText}
\r\n {rating}\r\n
\r\n\r\n \r\n
{props.resources.priceText}
\r\n {price}\r\n
\r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity &&\r\n renderQuantity(\r\n quantity,\r\n callbacks,\r\n props,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n max,\r\n telemetryContent,\r\n unitOfMeasure\r\n )}\r\n {props.bulkPurchaseLink}\r\n {props.config.stockAvailableText}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {inventoryLabel}\r\n {renderAddToCart(addToCart)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {productComparisonButton}\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 {/*
{props.resources.shopText}
*/}\r\n\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n \r\n
{props.resources.descriptionText}
\r\n \r\n {productIngredient && productIngredient.TextValue !== '' && }\r\n \r\n {/* {description} */}\r\n
\r\n {ArrayExtensions.hasElements(props.slots.productSpecification) ? (\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","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['buybox'] = {\n c: () => require('@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'cartConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration', runOn: 0},{name:'catalogs', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailableQuantity', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'buybox',\n p: 'buybox',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|themes|newsunshine-b2c|views|buybox'] = {\n c: () => require('partner/themes/newsunshine-b2c/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['__local__|__local__|themes|newsunshine-dev-b2c|views|buybox'] = {\n c: () => require('partner/themes/newsunshine-dev-b2c/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['__local__|__local__|themes|newsunshine-dev|views|buybox'] = {\n c: () => require('partner/themes/newsunshine-dev/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['__local__|__local__|themes|newsunshine-retail-dev|views|buybox'] = {\n c: () => require('partner/themes/newsunshine-retail-dev/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['__local__|__local__|themes|newsunshine|views|buybox'] = {\n c: () => require('partner/themes/newsunshine/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|buybox|buybox'] = {\n c: () => require('@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-buybox-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|buybox'] = {\n c: () => require('@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|buybox'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/buybox.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-buybox'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n if (window) {\n const currentWindowAPI = window.mapAPIReady;\n window.mapAPIReady = () => {\n if (currentWindowAPI) {\n currentWindowAPI();\n }\n this.isMapApiLoaded = true;\n };\n }\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\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 { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { CartConfiguration, CartsDataActions } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for the getCartConfiguration data action.\n * The life time of the data action is 'application'.\n */\nexport class CartConfigurationInput implements IActionInput {\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => 'cartConfiguration';\n\n /**\n * Get Cache type Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'cartConfiguration';\n\n /**\n * Get Cache type.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * CreateInput method for the getCartConfiguration method.\n * @param inputData -- The input data passed to the createInput method.\n * @returns - Input for data action.\n */\nexport const createCartConfigurationInputInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CartConfigurationInput();\n};\n\n/**\n * The action method for the getCartConfiguration data action.\n * @param input -- The action input.\n * @param ctx -- The action context.\n * @returns -- cart configuration.\n */\nexport async function getCartConfigurationAction(input: CartConfigurationInput, ctx: IActionContext): Promise {\n const cartConfiguration = await CartsDataActions.getConfigurationAsync({ callerContext: ctx });\n return cartConfiguration;\n}\n\n/**\n * The getCartConfiguration data action.\n * Gets the cart configuration state via the read RetailServer API.\n * @returns Address information associated with the retrieved customer.\n */\nexport const getCartConfigurationDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-cart-configuration',\n action: getCartConfigurationAction as IAction,\n input: createCartConfigurationInputInput\n});\n\nexport default getCartConfigurationDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddToOrderTemplateComponent,\n IAddToOrderTemplateDialogResources,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n IOrderTemplateActionErrorResult,\n IOrderTemplateNameDialogResources\n} from '@msdyn365-commerce/components';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n getConfigureErrors,\n IBuyboxCallbacks,\n IBuyboxCommonResources,\n IBuyboxData,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport * as React from 'react';\n\nimport { IBuyboxProps as IBuyboxExtentionProps } from '../../definition-extensions/buybox.ext.props.autogenerated';\n\n/**\n * To generate AddToOrderTemplateDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of AddToOrderTemplateDialog resources..\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\n/**\n * To generate OrderTemplateNameDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of OrderTemplateNameDialog resources..\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\n/**\n * To generate ItemAddedToOrderTemplateDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of ItemAddedToOrderTemplateDialog resources..\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\n/**\n * To generate DuplicateItemsWhenAddingToOrderTemplateDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of DuplicateItemsWhenAddingToOrderTemplateDialog resources..\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 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 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\n/**\n * RenderAddToOrderTemplateButton.\n * @param props - Buybox view props.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @param product - Product data.\n * @returns -- Returns JSX element.\n */\nexport const renderAddToOrderTemplateButton = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n product: SimpleProduct\n): React.ReactNode => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n id,\n typeName,\n context,\n data: {\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n resources,\n config\n } = props;\n\n const { quantity } = state;\n\n const isShowButtonText = true;\n const isMultipleCatalogsFeatureEnabled = props.isChannelMultipleCatalogsFeatureEnabled || false;\n return (\n orderTemplates && (\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 { AddToWishlistComponent, IWishlistActionErrorResult } from '@msdyn365-commerce/components';\nimport { format, ItemAvailability, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n getConfigureErrors,\n IBuyboxAddToCartViewProps,\n IBuyboxCallbacks,\n IBuyboxCommonResources,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxResources as IBuyboxExtentionResources,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { IncrementalQuantity, INodeProps, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\nimport { renderAddToOrderTemplateButton } from './components/buybox-add-to-order-template';\n\n/**\n * BuyBoxConstants enum.\n */\nexport enum BuyBoxConstants {\n zero = 0\n}\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\n/**\n * RenderQuantity.\n * @param quantityComponent - QuantityComponent.\n * @param callbacks - Callbacks.\n * @param props - Props.\n * @param state - State.\n * @param extentionResources - ExtentionResources.\n * @param quantityLimitsMessages - QuantityLimitsMessages.\n * @param max - Max.\n * @param telemetryContent - TelemetryContent.\n * @param unitOfMeasure - Unit Of Measure.\n * @returns -- Returns.\n */\nconst renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent,\n unitOfMeasure?: React.ReactNode\n): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {unitOfMeasure}\n {quantityLimitsMessages}\n \n );\n};\n\n/**\n * Render key in price function.\n * @param keyInPrice - KeyInPrice.\n * @returns -- Returns.\n */\nconst renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\n/**\n * RenderAddToCart.\n * @param addToCart - AddToCart.\n * @returns -- Returns.\n */\nconst renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, errorBlock, button } = addToCart;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\n/**\n * RenderFindInStore.\n * @param findInStore - FindInStore.\n * @returns -- Returns.\n */\nconst renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * RenderAddToOrderTemplate.\n * @param props - Buybox view props.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @returns -- Returns.\n */\nconst renderAddToOrderTemplate = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): JSX.Element | null => {\n const product = props.data.product.result;\n if (!props.addToOrderTemplate || !product) {\n return null;\n }\n\n const orderTemplateButton = renderAddToOrderTemplateButton(props, state, callbacks, product);\n\n return (\n \n {props.addToOrderTemplate.errorBlock}\n {orderTemplateButton}\n \n );\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\n/**\n * RenderAddToWishlist.\n * @param props - Buybox view props.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @param product - Product data.\n * @returns -- Returns.\n */\nconst renderAddtoWishlistButton = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n product: SimpleProduct\n): React.ReactNode => {\n const { context, resources } = props;\n const wishlists = props.data.wishlists.result;\n const isShowWishlitButtonText = true;\n return (\n \n );\n};\n\n/**\n * RenderAddToWishlist.\n * @param props - Buybox viewprops.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @returns -- Returns.\n */\nconst renderAddToWishlist = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): JSX.Element | null => {\n const product = props.data.product.result;\n if (!props.addToWishlist || !product) {\n return null;\n }\n\n if (!props.config.enableWishlist) {\n return null;\n }\n\n const wishlistButton = renderAddtoWishlistButton(props, state, callbacks, product);\n return (\n \n {props.addToWishlist.errorBlock}\n {wishlistButton}\n \n );\n};\n\n/**\n * RRenderShopSimilarItem.\n * @param shopSimilarItem - ShopSimilarItem.\n * @returns -- Returns.\n */\nconst renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\n/**\n * RenderSocialShare.\n * @param socialShare - Social share react node array.\n * @returns -- Returns.\n */\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\n/**\n * RenderConfigureDropdown.\n * @param dropdown - Buybox product configure dropdown view props.\n * @returns -- Returns JSX.Element.\n */\nconst renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n {heading}\n {select}\n {errors}\n \n );\n};\n\n/**\n * RenderConfigure.\n * @param configure - Buybox product configure view props.\n * @returns -- Returns JSX.Element.\n */\nconst renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(renderConfigureDropdown)};\n};\n\n/**\n * BuyboxView.\n * @param props - Props.\n * @returns -- Returns.\n */\nconst BuyboxView: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const {\n ModuleProps,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n MediaGalleryContainerProps,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n productComparisonButton,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n shopSimilarDescription,\n min,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n max,\n applyDefaultOrderSettings,\n unitOfMeasure,\n callbacks,\n state,\n resources,\n quantityLimitsMessages,\n telemetryContent,\n app: { config: appConfig },\n catalogs\n } = props;\n let skuText: string = props.resources.skuText;\n skuText += props.data.product.result?.ItemId;\n const preferredStoreInfo: IStoreInfo | undefined = props.data.storeSelectorStateManager.result?.preferredStore;\n const preferredStoreId = preferredStoreInfo?.StoreId ? preferredStoreInfo.StoreId : '';\n const preferredStoreName = preferredStoreInfo?.StoreName ? preferredStoreInfo.StoreName : '';\n\n const [availability, setAvailability] = React.useState('');\n const [isStoreChange, setIsStoreChange] = React.useState(false);\n\n /**\n * GetStockInventoryLabel.\n * @param availabilityWithHours - Stock availability with hours.\n * @returns -- Returns.\n */\n const getStockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (const productInventoryInformation of availabilityWithHours.ProductInventoryInformation) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n productInventoryInformation.InventLocationId\n ) {\n return productInventoryInformation.StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n const getInventory = React.useCallback(async () => {\n const input = new GetFullAvailableInventoryNearbyInput(\n props.data.product.result?.RecordId,\n BuyBoxConstants.zero,\n BuyBoxConstants.zero,\n BuyBoxConstants.zero,\n BuyBoxConstants.zero,\n true\n );\n\n /**\n * IsProductInStock.\n * @param itemAvailabilities - Item availability array.\n * @returns -- Returns.\n */\n const isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!appConfig.enableStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[BuyBoxConstants.zero].AvailableQuantity! > BuyBoxConstants.zero;\n }\n\n return false;\n };\n\n await getFullAvailableInventoryNearby(input, props.context.actionContext)\n .catch((error: Error) => {\n props.telemetry.error(error.message);\n })\n .then(response => {\n if (response && ArrayExtensions.hasElements(response)) {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\n : undefined;\n const stockStatusLabel: string | undefined = getStockInventoryLabel(preferredStoreAvailability);\n const isInStock = isProductInStock(preferredStoreAvailability?.OrgUnitAvailability?.ItemAvailabilities);\n const resourceLabel = isInStock ? props.resources.inStockText : props.resources.outOfStockText;\n const stockText: string | undefined = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const preferredStoreAvailabilityText = `${format(\n props.resources.availabilityAtPreferredStoreText,\n preferredStoreName\n )} ${stockText}`;\n setAvailability(preferredStoreAvailabilityText);\n }\n });\n\n setIsStoreChange(false);\n }, [\n props.data.product.result?.RecordId,\n appConfig.enableStockCheck,\n preferredStoreId,\n preferredStoreName,\n props.context.actionContext,\n props.resources.availabilityAtPreferredStoreText,\n props.resources.inStockText,\n props.resources.outOfStockText,\n props.telemetry\n ]);\n\n React.useEffect(() => {\n if (props.config.displayStockAvailability) {\n getInventory().catch((error: Error) => {\n props.telemetry.error(error.message);\n });\n }\n }, [getInventory, isStoreChange, props.telemetry, props.config.displayStockAvailability]);\n\n reaction(\n () => props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n () => {\n setIsStoreChange(true);\n }\n );\n\n /**\n * RenderAvailabiltyAtPreferredStore.\n * @returns -- Returns.\n */\n const renderAvailabilityAtPreferredStore = (): JSX.Element | undefined => {\n const hasProductDimensions = ArrayExtensions.hasElements(props.data.product.result?.Dimensions);\n if (hasProductDimensions && props.data.product.result?.MasterProductId === undefined) {\n return undefined;\n }\n const containerProps: INodeProps = {\n className: 'ms-buybox__preferred-store-availability',\n tag: 'span'\n };\n\n return {availability};\n };\n return (\n \n {props.mediaGallery}\n \n {catalogs && catalogs[0].Name}\n {title}\n \n
{skuText}
\n {rating}\n
\n \n
{props.resources.priceText}
\n {price}\n
\n {configure && renderConfigure(configure)}\n {keyInPrice && renderKeyInPrice(keyInPrice)}\n \n
\n {quantity &&\n renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent,\n unitOfMeasure\n )}\n {props.bulkPurchaseLink}\n
\n
\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\n {inventoryLabel}\n {renderAddToCart(addToCart)}\n {findInStore && renderFindInStore(findInStore)}\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\n {productComparisonButton}\n {addToOrderTemplate && renderAddToOrderTemplate(props, state, callbacks)}\n {findInStore?.productPickupOptionList ? (\n
{findInStore.productPickupOptionList}
\n ) : null}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n
{props.resources.shopText}
\n \n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\n \n \n
{props.resources.descriptionText}
\n {description}\n
\n {ArrayExtensions.hasElements(props.slots.productSpecification) ? (\n {props.slots.productSpecification[0]}\n ) : null}\n
\n
\n );\n};\n\nexport default BuyboxView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["generateAddToOrderTemplateDialogResources","resources","addToOrderTemplateHeader","noOrderTemplatesMessage","noOrderTemplatesDescription","createAnOrderTemplateButtonText","createNewOrderTemplateButtonText","cancelOrderTemplateCreationButtonText","selectTemplatesText","addToTemplateButtonText","lineItemsText","generateOrderTemplateNameDialogResources","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","generateItemAddedToOrderTemplateDialogResources","viewOrderTemplateButtonText","continueShoppingButtonText","itemAddedToOrderTemplateHeaderItemOneText","itemAddedToOrderTemplateHeaderItemFormatText","itemAddedToOrderTemplateHeaderMessageText","freePriceText","priceFree","originalPriceText","currentPriceText","generateDuplicateItemsWhenAddingToOrderTemplateDialogResources","duplicatedProductsHeader","duplicatedProductsDescription","updateQuantityButtonText","cancelDuplicateItemsButtonText","onAddToOrderTemplateFailed","callbacks","product","result","updateErrorState","errorHost","configureErrors","status","getConfigureErrors","missingDimensions","IsGiftCard","BuyBoxConstants","onChangeHandler","newValue","updateQuantity","renderAddToOrderTemplate","props","state","data","addToOrderTemplate","orderTemplateButton","renderAddToOrderTemplateButton","id","typeName","context","orderTemplates","customerInformation","quantity","React","AddToOrderTemplateComponent","className","addToOrderTemplateButtonText","addToOrderTemplateButtonTooltip","addToOrderTemplateDialogResources","createOrderTemplateDialogResources","itemAddedToOrderTemplateDialogResources","duplicateItemsWhenAddingToOrderTemplateDialogResources","onError","shouldShowButtonFailedTooltip","isCustomPriceSelected","showButtonTooltip","showButtonText","Node","Object","assign","ContainerProps","errorBlock","onAddToWishlistFailed","renderAddToWishlist","addToWishlist","config","enableWishlist","wishlistButton","renderAddtoWishlistButton","wishlists","AddToWishlistComponent","addToWishlistButtonText","removeFromWishlistButtonText","addToWishlistMessage","removedFromWishlistMessage","addItemToWishlistError","removeItemFromWishlistError","nameOfWishlist","ariaRole","getSelectedProduct","selectedProduct","renderShopSimilarItem","shopSimilarItem","errors","input","renderConfigureDropdown","dropdown","LabelContainerProps","heading","select","_props$data$product$r","_props$data$storeSele","_props$data$product$r3","_props$data$productSp","_props$data$productSp2","_props$data$productSp3","_props$data$productSp4","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","addToCart","productComparisonButton","configure","description","findInStore","price","title","rating","inventoryLabel","shopSimilarLook","keyInPrice","shopSimilarDescription","max","unitOfMeasure","quantityLimitsMessages","telemetryContent","app","appConfig","catalogs","skuText","ItemId","preferredStoreInfo","storeSelectorStateManager","preferredStore","preferredStoreId","StoreId","preferredStoreName","StoreName","availability","setAvailability","isStoreChange","setIsStoreChange","getInventory","async","_props$data$product$r2","GetFullAvailableInventoryNearbyInput","RecordId","zero","getFullAvailableInventoryNearby","actionContext","catch","error","telemetry","message","then","response","ArrayExtensions","hasElements","_preferredStoreAvaila","isPreferredStore","value","_value$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","OrgUnitNumber","filteredFullOrgUnitAvailability","filter","preferredStoreAvailability","undefined","stockStatusLabel","availabilityWithHours","ProductInventoryInformation","productInventoryInformation","_availabilityWithHour","InventoryLocationId","InventLocationId","StockLevelLabel","getStockInventoryLabel","resourceLabel","itemAvailabilities","ItemAvailabilities","enableStockCheck","AvailableQuantity","inStockText","outOfStockText","stockText","preferredStoreAvailabilityText","format","availabilityAtPreferredStoreText","displayStockAvailability","reaction","_props$data$storeSele2","selectedStoreLocationId","productSize","productSpecificationData","find","Name","productSizeAttributeName","brandName","brandNameAttributeName","productUnit","productUnitAttributeName","productIngredient","productIngredientAttributeName","Module","mediaGallery","TextValue","sizeText","FloatValue","priceText","dropdowns","map","renderConfigure","renderKeyInPrice","renderQuantity","quantityComponent","extentionResources","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","bulkPurchaseLink","stockAvailableText","renderAvailabilityAtPreferredStore","_props$data$product$r4","_props$data$product$r5","Dimensions","MasterProductId","tag","button","renderAddToCart","storeSelector","modal","productPickupOptionList","renderFindInStore","socialShare","length","_renderSocialShare","slots","descriptionText","Text","text","node","children","descriptionNode","productSpecification","productSizeAttributeRecordId","brandNameAttributeRecordId","productUnitAttributeRecordId","isMultipleCatalogsFeatureEnabled","isChannelMultipleCatalogsFeatureEnabled","imageSettings","isMultipleCatalogFeatureEnabledInHq","catalogId","currentCatalogId","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","_objectSpread","viewDictionary","cn","BaseStoreSelectorStateManager","constructor","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","this","isMapModuleLoaded","_readFromToCookie","storeInfo","JSON","parse","_unused","_context","storeId","storeName","writeToCookie","arguments","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","key","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","requestContext","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","requestUrl","Promise","resolve","script","document","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","currentWindowAPI","mapAPIReady","isMapApiLoaded","url","lang","market","reject","_document2","_document3","type","defer","src","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","_renderTextBlock","textBlocks","_renderCartAndActions","_renderConfigure","_renderConfigureDropdown","_renderFindInStore","_renderQuantity","min","applyDefaultOrderSettings","_renderKeyInPrice","_renderShopSimilarItem","CartConfigurationInput","getCacheKey","getCacheObjectType","dataCacheType","createCartConfigurationInputInput","getCartConfigurationAction","ctx","CartsDataActions","callerContext","getCartConfigurationDataAction","shopText","module","exports","ReactDOM"],"sourceRoot":""}