{"version":3,"file":"static/js/b135249eaa8bf009cf1d.bundle.js","mappings":"yzBAgBe,MAAMA,UAAcC,EAAAA,cAgBxBC,SACH,MAAM,GACFC,EAAE,UACFC,EAAS,eACTC,EAAc,UACdC,EAAS,IACTC,EAAG,OACHC,EAAM,MACNC,EAAK,OACLC,EAAM,SACNC,EAAQ,WACRC,EAAU,KACVC,EAAI,UACJC,EAAS,kBACTC,EACA,aAAcC,GACdC,KAAKC,MAEHC,EAAUJ,GAAoBK,EAAAA,EAAAA,IAChCC,IACIjB,EACA,YACA,aAAaK,KAEjBH,GACAF,EAEEkB,GAAeF,EAAAA,EAAAA,IAAgBC,IAAW,QAAShB,GAAiBC,GAEpEiB,EAAe,SACdC,EAAAA,EAAAA,cACAZ,GAAU,IACba,UAAWZ,EAAO,OAAS,GAC3Ba,QAASb,GAAQD,EAAaA,EAAWc,QAAe,EACxDC,SAAUd,EACVe,QAASf,EACTgB,OAAQhB,IAGNiB,EAAMvB,GAAO,MACbwB,EAAWlB,EAAO,gBAAkB,iBAEpCmB,EACF/B,EAAAA,cAAAA,EAAAA,SAAAA,KACKO,EAASP,EAAAA,cAAAA,MAAAA,KACNA,EAAAA,cAAAA,SAAAA,CACIgC,KAAK,SACL9B,GAAI4B,EACJ3B,UAAWkB,EAAY,aACXL,KAAKC,MAAMgB,eACvBC,QAAS3B,IAEbP,EAAAA,cAACmC,EAAAA,EAAmB,CAACjC,GAAG,eAAekC,OAAQ,IAAIN,IAAYO,UAAU,OAAK,UAGzE,KACR3B,GAIH4B,EAAQ7B,OAAS8B,EAAY,CAAEC,QAAS,QAQ9C,OAAI5B,GAAQC,EAEJb,EAAAA,cAAC6B,EAAG,CACAS,MAAOA,EAAOpC,GAAIA,EAAIC,UAAWe,EACjCuB,KAAK,QAAO,YAAW,YAAW,aAAa1B,GAC/Cf,EAAAA,cAACuB,EAAAA,EAAI,iBAAKD,EAAe,CAAEhB,IAAKuB,EAAKa,GAAIjC,IACpCsB,IAINnB,EAEHZ,EAAAA,cAACuB,EAAAA,EAAI,eACDrB,GAAIA,GAAQoB,EAAe,CAAEhB,IAAKuB,EAClC1B,UAAWe,EAASuB,KAAK,QAAQC,GAAIjC,IACpCsB,GAKT/B,EAAAA,cAAC6B,EAAG,CACAS,MAAOA,EAAOpC,GAAIA,EAAIC,UAAWe,EACjCuB,KAAK,QAAO,YAAY5B,EAAY,iBAAc0B,EAAS,aAAcxB,GACxEgB,EAIb,EA7GchC,EAAAA,aAAqC,CAC/CS,MAAO,UACPC,QAAQ,EACRH,IAAK,MACL2B,eAAgB,QAChBrB,MAAM,EACNC,WAAW,EACXC,mBAAmB,EACnBH,WAAW,EAAD,KACHY,EAAAA,EAAAA,cAAiB,IACpBoB,eAAe,I,uJCLZ,MAAMC,UAAkB5C,EAAAA,cASnC6C,YAAY5B,GACR6B,MAAM7B,GAiDO,KAAA8B,eAAkBC,GAE3BhD,EAAAA,cAACiD,EAAAA,GAAa,CACV9C,UAAU,uCACV6C,KAAMA,EACNE,UAAWlC,KAAKC,MAAMiC,YArD9BlC,KAAKmC,MAAQ,CAAEC,WAAY,CAAE,eAAe,EAAMC,UAAW,IAC7DrC,KAAKsC,oBAAsBtC,KAAKsC,oBAAoBC,KAAKvC,MACzDA,KAAKwC,aAAexC,KAAKwC,aAAaD,KAAKvC,MAC3C,MAAMyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzC,EAAM0C,iBAAmBC,EAAAA,kBAAAA,WACnE5C,KAAKoC,YAAaS,EAAAA,EAAAA,wBAAuB5C,EAAM0C,iBAAmBF,EACtE,CAEOK,oBACHC,OAAOC,iBAAiB,SAAUhD,KAAKsC,qBACvCS,OAAOC,iBAAiB,SAAUhD,KAAKsC,qBACvCtC,KAAKsC,qBACT,CAEOW,uBACHF,OAAOG,oBAAoB,SAAUlD,KAAKsC,qBAC1CS,OAAOG,oBAAoB,SAAUlD,KAAKsC,oBAC9C,CAEOrD,SACH,MAAM,EAAgEe,KAAKC,OAArE,UAAEd,EAAS,UAAEgE,EAAS,UAAEC,EAAS,eAAEC,GAA0B,EAAPpD,GAAK,YAC3DP,EAAWM,KAAKC,MAAMP,UAAaV,EAAAA,cAAAA,IAAAA,CAAGG,UAAU,mBACtD,OAAIa,KAAKC,MAAM+B,KAEPhD,EAAAA,cAAAA,IAAAA,OAAAA,OAAAA,CACIG,UAAW,eAAeA,KACtBc,EACAD,KAAKmC,MAAMC,WAAU,CACzBX,KAAK,OACLP,QAASlB,KAAKwC,cACVxC,KAAKoC,YAERpC,KAAK+B,eAAe/B,KAAKC,MAAM+B,OAIxChD,EAAAA,cAAAA,IAAAA,OAAAA,OAAAA,CACIG,UAAW,eAAeA,KACtBc,EACAD,KAAKmC,MAAMC,WAAU,CACzBX,KAAK,OACLP,QAASlB,KAAKwC,cACVxC,KAAKoC,YAER1C,EAGb,CAYQ4D,cACoE,KAAnEC,SAASC,gBAAgBC,WAAaF,SAASG,KAAKD,aACrDE,cAAc3D,KAAKmC,MAAMyB,YACzB5D,KAAK6D,SAAS,CAAED,WAAY,IAC5B5D,KAAKsC,uBAGqB,IAA1BtC,KAAKmC,MAAMyB,aACXb,OAAOe,SAAS,EAAGP,SAASG,KAAKD,UAAYzD,KAAKC,MAAMoD,gBACxDE,SAASG,KAAKD,UAAYF,SAASG,KAAKD,UAAY,EAAIF,SAASG,KAAKD,UAAYzD,KAAKC,MAAMoD,eAAiB,EAEtH,CAEQb,aAAauB,GACjBA,EAAEC,iBACF,MAAMJ,EAAaK,YAAYjE,KAAKsD,YAAYf,KAAKvC,MAAOA,KAAKC,MAAMmD,WACvEpD,KAAK6D,SAAS,CAAED,cACpB,CAEQtB,sBAKJ,MAAMmB,EAAYV,OAAOmB,aAAeX,SAASG,KAAKD,UAChDU,EAASC,KAAKC,IAAItB,OAAOuB,YAAaf,SAASC,gBAAgBe,cAC/DpB,EAAYiB,KAAKC,SAA6B9C,IAAzBvB,KAAKC,MAAMkD,UAA0BnD,KAAKC,MAAMkD,WAAa,EAAG,KACrFqB,EAAOf,EAAY,GAAKN,GAAa,EAAIM,GAAaF,SAASC,gBAAgBiB,aAAeN,GAAUhB,EAAY,IAAMM,EAAqB,EAATU,EACtIO,EAAgBF,GAAQ,EAAI,EAClCxE,KAAK6D,SAAS,CAAEzB,WAAY,CAAE,cAAeoC,EAAMnC,SAAUqC,IACjE,EAlGc9C,EAAAA,aAAyC,CACnDzC,UAAW,2BACXiE,UAAW,EACXC,eAAgB,G,+LCbT,MAAMsB,UAAe3F,EAAAA,cAShC6C,YAAY5B,GACR6B,MAAM7B,GA+CO,KAAAiB,QAAW6C,IACpB/D,KAAKC,MAAM2E,SACXb,EAAEC,iBAKFhE,KAAKC,MAAMiB,SACXlB,KAAKC,MAAMiB,QAAQ6C,EAAG,EAtD1B/D,KAAKC,MAAQA,EACbD,KAAKkB,QAAUlB,KAAKkB,QAAQqB,KAAKvC,KACrC,CAEOf,SACH,MAAM,EAWFe,KAAKC,OAXH,OACF4E,EAAM,MACNC,EAAK,UACL3F,EAAS,UACTE,EAAS,MACTG,EAAK,QACLuF,EAAO,KACPC,EAAI,IACJ1F,EAAG,SACH2F,GAEH,EADM7C,GAAU,YAEXlC,GAAUC,EAAAA,EAAAA,IACZC,IACIjB,EACA,UACA4F,GAAWvF,EAAQ,eAAeA,IAAWA,IAAqB,IAAZuF,EAAoB,OAAOvF,SAAoB+B,IAAV/B,IAAmC,IAAZuF,EAAmB,cAAgB,KACrJC,GAAO,OAAOA,MACdF,GAAQ,YACR,CAAED,SAAQD,SAAU5E,KAAKC,MAAM2E,WAEnCvF,GAGJ,IAAIwB,EAAMvB,GAAO,SAMjB,OAJI8C,EAAW8C,MAAgB,WAARrE,IACnBA,EAAM,KAIN7B,EAAAA,cAAC6B,EAAG,eACAG,KAAe,WAARH,GAAoBuB,EAAWlB,QAAW,cAAWK,GACxDa,EAAU,CACdjD,UAAWe,EACXiF,IAAKF,EACL/D,QAASlB,KAAKkB,UAG1B,EArDcyD,EAAAA,aAAsC,CAChDrF,IAAK,SACLyF,SAAS,E,64BCOF,MAAMK,UAAiBpG,EAAAA,UAoBlC6C,YAAY5B,GACR6B,MAAM7B,GAVO,KAAAoF,6BAAsC,CACnDC,SAAU,aACVC,QAAS,gBACTC,QAAS,aACTC,OAAQ,YAGK,KAAAC,QAAwC1G,EAAAA,YAqJxC,KAAA2G,qBAAwBC,IACrC,MAAMC,EAAgBD,EAAKC,cACvBA,IACIA,EAAcC,UAAUC,SAAS,aAAeF,EAAcC,UAAUC,SAAS,UACjFF,EAAcvE,MAAM0E,UAAY,QAEpChG,KAAK2F,qBAAqBE,GAAe,EAvJ7C7F,KAAKC,MAAQA,EAEbD,KAAKmC,MAAQ,CACTgC,OAAQ,GAGZnE,KAAKiG,YAAcjG,KAAKiG,YAAY1D,KAAKvC,MACzCA,KAAKkG,QAAUlG,KAAKkG,QAAQ3D,KAAKvC,MACjCA,KAAKmG,UAAYnG,KAAKmG,UAAU5D,KAAKvC,MACrCA,KAAKoG,WAAapG,KAAKoG,WAAW7D,KAAKvC,MACvCA,KAAKqG,kBAAoBrG,KAAKqG,kBAAkB9D,KAAKvC,KACzD,CAEO8C,oBACHC,QAAUA,OAAOC,iBAAiB,SAAUhD,KAAKqG,kBACrD,CAEOC,mBAAmBC,GAClBA,EAAU7G,WAAaM,KAAKC,MAAMP,UAClCM,KAAKqG,mBAEb,CAEOpD,uBACHF,QAAUA,OAAOG,oBAAoB,SAAUlD,KAAKqG,kBACxD,CAEOG,sBAAsBD,EACzBE,GACA,OAAIzG,KAAKmC,QAAUsE,GAAazG,KAAKC,QAAUsG,CAInD,CAEOtH,SACH,MAAM,EAuBFe,KAAKC,OAvBH,IACFX,EAAG,OACHG,EAAM,UACNN,EAAS,SACTO,EAAQ,OACRgH,EAAM,UACNrH,EAEAqC,GAAIiF,EAAU,aACdC,EAAY,cACZjF,EAAa,OACbjB,EAAM,MACNC,EAAK,KACLC,EAAI,QACJH,EAAO,QACPoG,EAAO,WACPC,EAAU,UACVC,EAAS,OACTC,EAAM,UACNC,EAAS,SACTC,GAGH,EADMC,GAAU,YAGXtG,EAAMvB,GAAO,MACb8H,EAAkB,CACpB1F,GAAIiF,EACJC,eACAjF,gBACAjB,SACAC,QACAC,OACAiG,UACAC,aACAC,YACAC,SACAC,YACAC,aAGE,OAAE/C,GAAWnE,KAAKmC,MAClBb,EAAmB,OAAX6C,GAA8B,IAAXA,EAAe,KAAO,CAAE6B,UAAW7B,GAEpE,OACInF,EAAAA,cAACqI,EAAAA,GAAU,iBACHD,EAAe,CACnB1F,GAAIjC,EACJgB,QAASA,GAAW6G,EAAAA,GAAAA,SACpBR,WAAY9G,KAAKiG,YACjBe,OAAQhH,KAAKkG,QACbe,UAAWjH,KAAKoG,WAChBc,SAAUlH,KAAKmG,aAEboB,IACE,MAAMC,EAAgBxH,KAAKyH,oBAAoBF,GACzCrH,GAAUC,EAAAA,EAAAA,IAAgBC,IAAWjB,EAAWqI,EAAed,GAAU,mBAAoBrH,GAEnG,OACIL,EAAAA,cAAC6B,EAAG,iBACIsG,EAAU,CAAEhI,UAAWe,EAASiF,IAAKnF,KAAK0F,QAC9CpE,MAAK,KAAOA,KACX5B,EACC,GAK1B,CAEQ2G,oBACJ,MAAMT,EAAO5F,KAAK0F,QAAQgC,QACb,OAAT9B,GAAiBA,EAAK+B,mBAAqB/B,EAAK+B,kBAAkBlD,aAAe,GACjFzE,KAAK6D,SAAS,CAAEM,OAAQyB,EAAK+B,kBAAkBlD,cAEvD,CAEQgD,oBAAoBF,GACxB,OAAOvH,KAAKqF,6BAA6BkC,IAAW,UACxD,CAEQtB,YAAYL,EAAmBgC,GACnC5H,KAAK6D,SAAS,CAAEM,OAAQyB,EAAKnB,eAEzBzE,KAAKC,MAAM6G,YACX9G,KAAKC,MAAM6G,WAAWlB,EAAMgC,EAEpC,CAEQ1B,QAAQN,GACZ5F,KAAK6D,SAAS,CAAEM,OAAQyB,EAAKnB,eAEzBzE,KAAKC,MAAM+G,QACXhH,KAAKC,MAAM+G,OAAOpB,EAE1B,CAEQQ,WAAWR,GACf5F,KAAK6D,SAAS,CAAEM,OAAQ,IAEpBnE,KAAKC,MAAMgH,WACXjH,KAAKC,MAAMgH,UAAUrB,EAE7B,CAgBQO,UAAUP,GACd5F,KAAK6D,SAAS,CAAEM,OAAQ,OACxBnE,KAAK2F,qBAAqBC,GAEtB5F,KAAKC,MAAMiH,UACXlH,KAAKC,MAAMiH,SAAStB,EAE5B,EAvLcR,EAAAA,aAAwC,CAClD3F,QAAQ,EACRH,IAAK,MACLmB,QAAS6G,EAAAA,GAAAA,S,6BCxBV,IAAKO,E,iBAAZ,SAAYA,GACRA,EAAAA,EAAAA,KAAAA,GAAAA,OACAA,EAAAA,EAAAA,IAAAA,GAAAA,MACAA,EAAAA,EAAAA,MAAAA,IAAAA,QACAA,EAAAA,EAAAA,MAAAA,IAAAA,QACAA,EAAAA,EAAAA,KAAAA,IAAAA,OACAA,EAAAA,EAAAA,IAAAA,IAAAA,MACAA,EAAAA,EAAAA,MAAAA,IAAAA,QACAA,EAAAA,EAAAA,SAAAA,IAAAA,WACAA,EAAAA,EAAAA,OAAAA,IAAAA,SACAA,EAAAA,EAAAA,MAAAA,IAAAA,QACAA,EAAAA,EAAAA,OAAAA,IAAAA,SACAA,EAAAA,EAAAA,SAAAA,IAAAA,WACAA,EAAAA,EAAAA,IAAAA,IAAAA,MACAA,EAAAA,EAAAA,KAAAA,IAAAA,OACAA,EAAAA,EAAAA,UAAAA,IAAAA,YACAA,EAAAA,EAAAA,QAAAA,IAAAA,UACAA,EAAAA,EAAAA,WAAAA,IAAAA,aACAA,EAAAA,EAAAA,UAAAA,IAAAA,YACAA,EAAAA,EAAAA,MAAAA,IAAAA,QACAA,EAAAA,EAAAA,OAAAA,IAAAA,SACAA,EAAAA,EAAAA,OAAAA,IAAAA,SACAA,EAAAA,EAAAA,OAAAA,IAAAA,SACAA,EAAAA,EAAAA,QAAAA,IAAAA,UACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,OAAAA,KAAAA,SACAA,EAAAA,EAAAA,OAAAA,KAAAA,SACAA,EAAAA,EAAAA,YAAAA,IAAAA,cACAA,EAAAA,EAAAA,aAAAA,IAAAA,eACAA,EAAAA,EAAAA,aAAAA,KAAAA,eACAA,EAAAA,EAAAA,KAAAA,IAAAA,OACAA,EAAAA,EAAAA,QAAAA,IAAAA,UACAA,EAAAA,EAAAA,QAAAA,IAAAA,UACAA,EAAAA,EAAAA,QAAAA,IAAAA,UACAA,EAAAA,EAAAA,QAAAA,IAAAA,UACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,eAAAA,KAAAA,iBACAA,EAAAA,EAAAA,WAAAA,KAAAA,aACAA,EAAAA,EAAAA,YAAAA,KAAAA,cACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,aAAAA,KAAAA,eACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,WAAAA,KAAAA,aACAA,EAAAA,EAAAA,WAAAA,KAAAA,aACAA,EAAAA,EAAAA,WAAAA,KAAAA,aACAA,EAAAA,EAAAA,aAAAA,KAAAA,eACAA,EAAAA,EAAAA,eAAAA,KAAAA,iBACAA,EAAAA,EAAAA,eAAAA,KAAAA,iBACAA,EAAAA,EAAAA,gBAAAA,KAAAA,kBACAA,EAAAA,EAAAA,iBAAAA,KAAAA,mBACAA,EAAAA,EAAAA,QAAAA,KAAAA,UACAA,EAAAA,EAAAA,WAAAA,KAAAA,aACAA,EAAAA,EAAAA,MAAAA,KAAAA,QACAA,EAAAA,EAAAA,OAAAA,KAAAA,SACAA,EAAAA,EAAAA,MAAAA,KAAAA,QACAA,EAAAA,EAAAA,MAAAA,KAAAA,QACAA,EAAAA,EAAAA,aAAAA,KAAAA,eACAA,EAAAA,EAAAA,MAAAA,KAAAA,QACAA,EAAAA,EAAAA,SAAAA,KAAAA,WACAA,EAAAA,EAAAA,SAAAA,KAAAA,WACAA,EAAAA,EAAAA,SAAAA,KAAAA,WACAA,EAAAA,EAAAA,SAAAA,KAAAA,WACAA,EAAAA,EAAAA,mBAAAA,KAAAA,qBACAA,EAAAA,EAAAA,kBAAAA,KAAAA,oBACAA,EAAAA,EAAAA,mBAAAA,KAAAA,qBACAA,EAAAA,EAAAA,oBAAAA,KAAAA,sBACAA,EAAAA,EAAAA,cAAAA,KAAAA,gBACAA,EAAAA,EAAAA,gBAAAA,KAAAA,kBACAA,EAAAA,EAAAA,gBAAAA,KAAAA,kBACAA,EAAAA,EAAAA,iBAAAA,KAAAA,mBACAA,EAAAA,EAAAA,cAAAA,KAAAA,gBACAA,EAAAA,EAAAA,aAAAA,KAAAA,eACAA,EAAAA,EAAAA,sBAAAA,KAAAA,wBACAA,EAAAA,EAAAA,uBAAAA,KAAAA,yBACAA,EAAAA,EAAAA,wBAAAA,KAAAA,0BACAA,EAAAA,EAAAA,0BAAAA,KAAAA,4BACAA,EAAAA,EAAAA,2BAAAA,KAAAA,6BACAA,EAAAA,EAAAA,0BAAAA,KAAAA,4BACAA,EAAAA,EAAAA,yBAAAA,KAAAA,2BACAA,EAAAA,EAAAA,2BAAAA,KAAAA,6BACAA,EAAAA,EAAAA,4BAAAA,KAAAA,8BACAA,EAAAA,EAAAA,2BAAAA,KAAAA,6BACAA,EAAAA,EAAAA,YAAAA,KAAAA,cACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,aAAAA,KAAAA,eACAA,EAAAA,EAAAA,MAAAA,KAAAA,OACH,CAnGD,CAAYA,IAAAA,EAAQ,I,+ECAb,SAASC,EAAOC,GAA6C,2BAAjBC,EAAiB,iCAAjBA,EAAiB,kBAChE,OAAKD,EAIEA,EAAgBE,QAAQ,YAAY,CAACC,EAAeC,KAEvD,GAAIA,GAASH,EAAWI,OACpB,OAAOF,EAGX,MAAMG,EAAQL,EAAWG,GAEzB,MAAqB,iBAAVE,GAAuBA,EAIb,iBAAVA,EACAA,EAGJA,EAAMC,WAPF,EAOY,IAnBhB,EAqBf,CAUO,SAASC,EAAmBF,GAC/B,OAASA,GAA4B,iBAAVA,IAWxB,SAAcA,GAEjB,IAAKA,GAA2B,iBAAVA,EAClB,OAAOA,EAGX,GAAIA,EAAMG,KACN,OAAOH,EAAMG,OAGjB,OAAOH,EAAMJ,QAAQ,aAAc,GACvC,CAtBwDO,CAAKH,EAC7D,C,uFCbYzF,E,OAsEL,SAAS6F,EAAmBC,EAAkBC,EAAoBC,GAErE,MAD4C,CAAEF,WAAUC,aAAYC,YAExE,CAYO,SAASlG,EAAiBmG,EAAmBlG,EAAqCmG,EAAeC,GAapG,MAV0B,CACtBC,gBAAiBH,EACjBI,cAAe,CACXC,OALSvG,GAAoBA,EAAiB+F,SAAW/F,EAAiB+F,SAAW,GAMrFS,MALWxG,GAAoBA,EAAiBgG,WAAahG,EAAiBgG,WAAa,GAM3FG,QACAC,QACAK,MAAOP,GAInB,CAQO,SAAShG,EAAuBF,EAAqCF,GACxE,MAAM4G,EAAc5G,EAAQwG,cAAcF,MAAQtG,EAAQwG,cAAcF,MAAQtG,EAAQwG,cAAcH,MAKtG,OAJoDnG,GACpDA,EAAiBiG,WACjBjG,EAAiBiG,UAAUU,uBAC3B3G,EAAiBiG,UAAUU,sBAAsBD,EAAc5G,EAAQwG,cAE3E,EAlHA,SAAYrG,GACRA,EAAAA,iBAAAA,qBACAA,EAAAA,uBAAAA,2BACAA,EAAAA,cAAAA,mBACAA,EAAAA,eAAAA,yBACAA,EAAAA,qBAAAA,yBACAA,EAAAA,kBAAAA,qBACAA,EAAAA,kBAAAA,qBACAA,EAAAA,SAAAA,WACAA,EAAAA,cAAAA,iBACAA,EAAAA,eAAAA,mBACAA,EAAAA,eAAAA,mBACAA,EAAAA,SAAAA,YACAA,EAAAA,aAAAA,gBACAA,EAAAA,gBAAAA,mBACAA,EAAAA,eAAAA,kBACAA,EAAAA,QAAAA,WACAA,EAAAA,WAAAA,eACAA,EAAAA,cAAAA,gBACAA,EAAAA,eAAAA,SACAA,EAAAA,KAAAA,OACAA,EAAAA,aAAAA,oBACAA,EAAAA,OAAAA,SACAA,EAAAA,gBAAAA,mBACAA,EAAAA,2BAAAA,gCACAA,EAAAA,UAAAA,aACAA,EAAAA,YAAAA,eACAA,EAAAA,OAAAA,SACAA,EAAAA,SAAAA,WACAA,EAAAA,OAAAA,UACAA,EAAAA,OAAAA,UACAA,EAAAA,QAAAA,WACAA,EAAAA,kBAAAA,qBACAA,EAAAA,iBAAAA,qBACAA,EAAAA,mBAAAA,uBACAA,EAAAA,mBAAAA,uBACAA,EAAAA,kBAAAA,sBACAA,EAAAA,eAAAA,mBACAA,EAAAA,SAAAA,YACAA,EAAAA,UAAAA,cACAA,EAAAA,KAAAA,OACAA,EAAAA,QAAAA,kBACAA,EAAAA,mBAAAA,wBACAA,EAAAA,iBAAAA,oBACAA,EAAAA,uBAAAA,6BACAA,EAAAA,iBAAAA,qBACAA,EAAAA,YAAAA,eACAA,EAAAA,KAAAA,OACAA,EAAAA,SAAAA,WACAA,EAAAA,aAAAA,gBACAA,EAAAA,cAAAA,UACAA,EAAAA,YAAAA,eACAA,EAAAA,aAAAA,iBACAA,EAAAA,cAAAA,kBACAA,EAAAA,cAAAA,iBACAA,EAAAA,gBAAAA,oBACAA,EAAAA,UAAAA,aACAA,EAAAA,WAAAA,aACH,CA1DD,CAAYA,IAAAA,EAAiB,KA0HtB,MAAM2G,EAAmB,CAAC5G,EAAqCF,EAAmB+G,IAAqB,KAC1G/G,EAAQwG,cAAcH,MAAQU,EAC1B7G,GAAoBA,EAAiBiG,WACrCjG,EAAiBiG,UAAUa,SAASC,EAAAA,GAAAA,OAAuBjH,EAAS,C,2HCxHrE,SAASkH,EAAMtB,EAAehE,EAAauF,GAC9C,OAAIvF,GAAOuF,EACAxF,KAAKC,IAAID,KAAKwF,IAAIvB,EAAOhE,GAAMuF,GAEnC,CAEX,CAOO,SAASC,EAAqBxB,GACjC,OAAIA,EAAMD,OAAS,EACRC,EAAMyB,OAAO,GAAGC,cAAgB1B,EAAM2B,OAAO,GAEnC,IAAjB3B,EAAMD,OACCC,EAAMyB,OAAO,GAAGC,cAEpB,EAEX,CAMO,SAASE,EAAOC,EAAsBC,GACzC,IAAI7I,EAAQ4I,EAAQ5I,MAAM6I,GAM1B,OAJK7I,IACDA,EAAQ8I,iBAAiBF,GAASC,IAG/B7I,CACX,CAEO,SAAS+I,EAAqBC,EAAyBnH,GAE1D,IAAIoH,EACAC,EAAO,EAEX,OAAQC,IACJ,MAAMC,EAAMC,KAAKD,MAEbH,IACAK,aAAaL,GACbA,OAAQhJ,GAGRiJ,GAASE,EAAMF,EAAOrH,EACtBoH,EAAQM,YAAW,KACfL,EAAOG,KAAKD,MACZJ,EAASG,EAAM,GAEnBtH,GAAauH,EAAMF,KAEnBA,EAAOE,EACPJ,EAASG,GAAO,CAG5B,CAEO,SAASK,EAAkB1J,EAAqB2J,EAAcT,GAAgD,IAAvBnH,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAoB,IAG9G,MAAM6H,EAAwBX,EAAqBC,EAAUnH,GAG7D,OAFA/B,EAAO4B,iBAAiB+H,EAAMC,GAAuB,GAE9CA,CACX,CAIO,SAAS7K,IAAsD,IAAtChB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAoB,GAAIE,EAAc,uCAClE,OAAKA,EAIEF,EACF8L,MAAM,KACNC,KAAKC,GAAc9L,EAAU8L,IAAMA,IACnCC,KAAK,KANCjM,CAOf,CAyCO,MAAMkM,IACS,oBAAXtI,SACHA,OAAOQ,WACPR,OAAOQ,SAAS+H,eAyBjB,SAASC,EAAUnK,GACtB,MAAMoK,EAvBH,SAAyBpK,GAC5B,IACI,GAAsB,iBAAXA,GAAuBiK,EAAW,CACzC,IAAIG,EAAYjI,SAASkI,iBAAiBrK,GAM1C,GAJyB,IAArBoK,EAAUpD,SACVoD,EAAYjI,SAASkI,iBAAiB,IAAIrK,MAGrB,IAArBoK,EAAUpD,OACV,MAAM,IAAIsD,MAEd,OAAOF,CAAU,CAGrB,OAAOpK,CAGK,CAFd,SAEE,OADAuK,QAAQC,MAAM,eAAexK,8DACtB,IAAK,CAEpB,CAGsByK,CAAwBzK,GAC1C,OAAIoK,GAAaA,EAAUpD,OAAS,EACZoD,EAAU,GAG3BpK,CACX,CAEO,SAAS0K,EAAiB1K,GAC7B,MAAM2K,EAAgBR,EAAUnK,GAChC,OA9EG,SAAeA,GAClB,QAAKA,QAIqDG,IAApBH,EAAQsG,OAClD,CAwEQsE,CAAMD,GACgCA,EAAerE,QAvEtD,SAAmBtG,GACtB,QAAKA,QAI6CG,IAA7BH,EAAQ4B,gBACjC,CAmEQiJ,CAAUF,GACUA,EAGjB,IACX,CAEO,MAAMzE,EAAqB,CAC9B/G,KAAM,IACN6E,SAAU,IACV8G,MAAO,IACPC,SAAU,KAKDC,EAAoB,CAC7B,UACA,aACA,2CACA,yBACA,2BACA,yBACA,SACA,SACA,QACA,yBACA,kBACA,kBACA,mD,yVC3MW,MAAMC,UAAyBrN,EAAAA,cAa1C6C,YAAY5B,GACR6B,MAAM7B,GACN,MAAM,UAAEqM,EAAS,WAAEC,GAAevM,KAAKC,MACvCD,KAAKwM,QAAUxM,KAAKwM,QAAQjK,KAAKvC,MACjCA,KAAKyM,mBAAoB,EACzBzM,KAAKmC,MAAQ,CAAE1C,OAASQ,EAAMyM,eAAiBzM,EAAMyM,cAAcjN,SAAW,GAC9EO,KAAK2M,WAAa3M,KAAKmC,MAAM1C,OAC7BO,KAAK4M,iBAAmBC,IAAW,gBAAiB7M,KAAKC,MAAM6M,sBAAwB,IACvF9M,KAAKyC,SAAUC,EAAAA,EAAAA,kBAAiB,QAASzC,EAAM0C,iBAAmB,IAE9D3C,KAAKC,MAAM8M,cACX/M,KAAKgN,gBAAkBH,IAAW,CAAC7M,KAAK4M,iBAAkBN,GAAaC,GAAc,KACrFvM,KAAKiN,iBAAmBjN,KAAKgN,kBAE7BhN,KAAKgN,gBAAkBH,IAAW,CAAC7M,KAAK4M,iBAAkBN,GAAa,KACvEtM,KAAKiN,iBAAmBJ,IAAW,CAAC7M,KAAK4M,iBAAkBL,GAAc,KAEjF,CAEOtN,SACH,MAAMyN,E,qWAAa,IAAQ1M,KAAKC,MAAMyM,eACtCA,EAAcjN,OAASO,KAAKyM,kBAAoBzM,KAAKmC,MAAM1C,OAASiN,EAAcjN,SAAU,EAC5FiN,EAAchN,SAAWM,KAAKC,MAAMP,SACpC,MAAMwN,EAAcL,IAAW,SAAU7M,KAAKC,MAAMd,WAAa,IACjEa,KAAKyM,mBAAoB,EACzBzM,KAAK2M,WAAaD,EAAcjN,OAChCO,KAAKmC,MAAQ,CAAE1C,OAAQiN,EAAcjN,QACrCO,KAAKyC,QAAQwG,cAAcH,MAAQ4D,EAAcjN,OAASmD,EAAAA,kBAAAA,SAA6BA,EAAAA,kBAAAA,OACvF,MAAMR,GAAaS,EAAAA,EAAAA,wBAAuB7C,KAAKC,MAAM0C,iBAAmB3C,KAAKyC,SAC7E,OACIzD,EAAAA,cAAAA,MAAAA,CAAKG,UAAW+N,GACZlO,EAAAA,cAAC2F,EAAAA,OAAM,iBACC3E,KAAKC,MAAMkN,kBAAiB,CAChCjM,QAASlB,KAAKwM,QAAO,gBACNE,EAAcjN,OAC7BqF,OAAK,EACLF,SAAU5E,KAAKC,MAAM2E,SACrBzF,UAAU,kBACNiD,GAEHpC,KAAKoN,iCAAiCV,EAAcjN,SAEzDT,EAAAA,cAACoG,EAAAA,EAAQ,iBAAKsH,IAG1B,CAEQU,iCAAiCC,GACrC,MAAM,iBAAEC,GAAqBtN,KAAKC,MAC5BsN,EAAwBV,IAAW,qBAAsB7M,KAAKC,MAAMuN,uBAAyB,IACnG,GAAkC,QAA9BxN,KAAKC,MAAMwN,eACX,OACIzO,EAAAA,cAAAA,EAAAA,SAAAA,KACKgB,KAAK0N,eAAeb,IAAWU,EAAuB,WAAYD,EAAiBhF,YACnFtI,KAAK2N,qBAAqB,qBAAsBN,IAK7D,MAAMO,EAAwC,UAA9B5N,KAAKC,MAAMwN,eACrBI,EAAsB,MAAKD,EAAU,MAAQ,SACnD,OACI5O,EAAAA,cAAAA,EAAAA,SAAAA,KACK4O,GAAW5N,KAAK2N,qBAAqB,uBAAwBN,GAC7DrN,KAAK0N,eAAeb,IAAWU,EAAuBM,GAAsB7N,KAAKC,MAAMqN,iBAAiBhF,YAGrH,CAEQoF,eAAeI,EAAyBC,GAC5C,OAAI/N,KAAKC,MAAM+N,cAAgBhO,KAAKC,MAAMgO,eAElCjP,EAAAA,cAACiD,EAAAA,GAAa,CACV3C,IAAI,OACJ0C,KAAM+L,EACN5O,UAAW2O,EACX5L,UAAW,CAAEgM,OAAQlO,KAAKC,MAAM+N,aAAcC,eAAgBjO,KAAKC,MAAMgO,kBAKjFjP,EAAAA,cAAAA,OAAAA,CAAMG,UAAW2O,GACZC,EAIb,CAEQJ,qBAAqBQ,EAAkBd,GAC3C,MAAMe,EAAa,GAAGf,EAAgBrN,KAAKgN,gBAAkBhN,KAAKiN,oBAAoBkB,IACtF,OACInP,EAAAA,cAAAA,OAAAA,CAAMG,UAAWiP,GAEzB,CAEQ5B,QAAQzI,GACZA,EAAEC,iBACFhE,KAAK2M,YAAc3M,KAAK2M,WACxB3M,KAAK6D,SAAS,CAAEpE,OAAQO,KAAK2M,aAC7B3M,KAAKyM,mBAAoB,EACrBzM,KAAKC,MAAMoO,UACXrO,KAAKC,MAAMoO,SAASrO,KAAKmC,MAEjC,E,6UC9GW,MAAMmM,UAAetP,EAAAA,cAWhC6C,YAAY5B,GAAmB,QAC3B6B,MAAM7B,GACND,KAAKwM,QAAUxM,KAAKwM,QAAQjK,KAAKvC,MACjCA,KAAKyM,mBAAoB,EACzBzM,KAAKmC,MAAQ,CAAE1C,OAAoC,QAA9B,EAAsB,QAAtB,EAAGQ,EAAMyM,qBAAa,aAAnB,EAAqBjN,cAAM,SAAY8O,WAAY,IAC3EvO,KAAK4M,iBAAmBC,IAAW,gBAE/B7M,KAAKC,MAAM6M,qBAAuB9M,KAAKC,MAAM6M,qBAAuB,IAEpE9M,KAAKC,MAAM8M,cACX/M,KAAKgN,gBAAkBH,IAAW7M,KAAK4M,iBAEnC5M,KAAKC,MAAMqM,UAAYtM,KAAKC,MAAMqM,UAAatM,KAAKC,MAAMsM,WAAavM,KAAKC,MAAMsM,WAAa,IACnGvM,KAAKiN,iBAAmBjN,KAAKgN,kBAE7BhN,KAAKgN,gBAAkBH,IAAW7M,KAAK4M,iBAEnC5M,KAAKC,MAAMqM,UAAYtM,KAAKC,MAAMqM,UAAY,IAClDtM,KAAKiN,iBAAmBJ,IAAW7M,KAAK4M,iBAEpC5M,KAAKC,MAAMsM,WAAavM,KAAKC,MAAMsM,WAAa,IAE5D,CAEOtN,SACH,MAAMyN,E,qWAAa,IAAQ1M,KAAKC,MAAMyM,oBAGTnL,IAAzBmL,EAAcjN,QAAwBO,KAAKyM,kBAC3CC,EAAcjN,OAASO,KAAKmC,MAAM1C,OAElCO,KAAKmC,MAAM1C,OAASiN,EAAcjN,OAEtCiN,EAAchN,SAAWM,KAAKC,MAAMP,SACpC,MAAMwN,EAAcL,IAAW,SAE3B7M,KAAKC,MAAMd,UAAYa,KAAKC,MAAMd,UAAY,IAElD,OADAa,KAAKyM,mBAAoB,EAErBzN,EAAAA,cAAAA,MAAAA,CAAKG,UAAW+N,EAAazL,KAAMzB,KAAKC,MAAMwB,MAC1CzC,EAAAA,cAAC2F,EAAAA,OAAM,iBACC3E,KAAKC,MAAMkN,kBAAiB,CAChCjM,QAASlB,KAAKwM,QAAO,gBACNE,EAAcjN,OAC7BqF,OAAK,eACO9E,KAAKC,MAAMF,UACvB6E,SAAU5E,KAAKC,MAAM2E,SACrBzF,UAAU,iBACVK,MAAM,cAELQ,KAAKoN,iCAAiCV,EAAcjN,SAEzDT,EAAAA,cAACoG,EAAAA,EAAQ,iBAAKsH,IAG1B,CAOQU,iCAAiCC,GACrC,MAAME,EAAwBV,IAAW,qBAErC7M,KAAKC,MAAMuN,sBAAwBxN,KAAKC,MAAMuN,sBAAwB,IAC1E,MAAkC,QAA9BxN,KAAKC,MAAMwN,eAEPzO,EAAAA,cAAAA,EAAAA,SAAAA,KACIA,EAAAA,cAAAA,OAAAA,CAAMG,UAAW0N,IAAWU,EAAuB,YAC9CvN,KAAKC,MAAMqN,kBAEftN,KAAK2N,qBAAqB,qBAAsBN,IAK3B,UAA9BrN,KAAKC,MAAMwN,eAEPzO,EAAAA,cAAAA,EAAAA,SAAAA,KACKgB,KAAK2N,qBAAqB,uBAAwBN,GACnDrO,EAAAA,cAAAA,OAAAA,CAAMG,UAAW0N,IAAWU,EAAuB,UAC9CvN,KAAKC,MAAMqN,mBAKpBtO,EAAAA,cAAAA,OAAAA,CAAMG,UAAW0N,IAAWU,EAAuB,YACtDvN,KAAKC,MAAMqN,iBAGpB,CAQQK,qBAAqBQ,EAAkBd,GAC3C,IAAIe,EAAaf,EAAgBrN,KAAKgN,gBAAkBhN,KAAKiN,iBAE7D,OADAmB,EAAa,GAAGA,KAAcD,IAE1BnP,EAAAA,cAAAA,OAAAA,CAAMG,UAAWiP,GAEzB,CAMQ5B,QAAQzI,GACZA,EAAEC,iBACFhE,KAAKyM,mBAAoB,EAErBzM,KAAKC,MAAMoO,SACXrO,KAAK6D,SAAS,CAAEpE,QAASO,KAAKmC,MAAM1C,OAAQ8O,WAAYxK,EAAEyK,cAAcC,YAAa,IAAMzO,KAAKC,MAAMoO,UAAYrO,KAAKC,MAAMoO,SAASrO,KAAKmC,SAE3InC,KAAK6D,SAAS,CAAEpE,QAASO,KAAKmC,MAAM1C,QAE5C,E,sVCxIW,MAAMc,UAAavB,EAAAA,UAavBwH,sBAAsBD,GACzB,SAAIA,EAAU7E,IAAO1B,KAAKC,MAAMyB,KAAO6E,EAAU7E,GAIrD,CAEOzC,SACH,MAAM,EAuBgBe,KAAKC,OAvBrB,IACFX,EAAG,UACHH,EAAS,UACTE,EAAS,UACTmB,EAAS,gBACTkO,EAAe,OAEfhO,EAAM,MACNC,EAAK,KACLC,EACAc,GAAIiN,EAAM,aACV/H,EAAY,cACZjF,EACAlB,QAASmO,EAAkB,eAC3BC,EAAc,QACdhI,EAAO,WACPC,EAAU,UACVC,EAAS,OACTC,EAAM,UACNC,EAAS,SACTC,EAAQ,SACRxH,GAEe,EAAZyH,GAAU,YAGXC,EAAkB,CACpB1G,SACAC,QACAC,OACAc,GAAIiN,EACJ/H,eACAjF,gBACAlB,aATmCc,IAAvBqN,EAAmCA,EAAqBtH,EAAAA,GAAAA,KAUpEuH,iBACAhI,UACAC,aACAC,YACAC,SACAC,YACAC,WACAxH,YAGEmB,EAAMb,KAAKC,MAAMX,IAAMU,KAAKC,MAAMX,IAAM,MACxCwP,EAAkBtO,GAAa,OAC/BuO,EAAwBL,GAAmB,OAEjD,OACI1P,EAAAA,cAACqI,EAAAA,GAAU,iBAAKD,IACVG,IACE,MAAMyH,EAAsB,YAAXzH,EACXrH,GAAUC,EAAAA,EAAAA,IACZC,IAAW,CACPjB,EACA2P,EACAE,GAAYD,IAEhB1P,GAGJ,OACIL,EAAAA,cAAC6B,EAAG,eAAC1B,UAAWe,GAAaiH,GACxBzH,EACC,GAK1B,EAxFca,EAAAA,aAAoC,CAC9CjB,IAAK,MACLkB,UAAW,OACXkO,gBAAiB,OACjBjO,QAAS6G,EAAAA,GAAAA,KACT5F,IAAI,EACJhB,QAAQ,EACRC,OAAO,EACPC,MAAM,E,2LCpBC,MAAMqO,UAAgBjQ,EAAAA,cAGjC6C,YAAY5B,GACR6B,MAAM7B,GACND,KAAKyC,SAAUC,EAAAA,EAAAA,kBAAiB,QAAS1C,KAAKC,MAAM0C,iBAAmB3C,KAAKC,MAAMiP,eACtF,CAEOjQ,SACH,MAAM,EAAwGe,KAAKC,OAA7G,UAAEd,EAAS,WAAEgQ,EAAU,KAAEnK,EAAI,eAAEoK,EAAc,SAAExK,EAAQ,iBAAEjC,EAAgB,eAAEuM,GAA0B,EAAPjP,GAAK,YACnGoP,EAAqB,UAATrK,EAAmB,qBAAiC,UAATA,EAAmB,qBAAuB,GACjG5E,EAAajB,EAAY,eAAekQ,KAAalQ,IAAc,eAAekQ,IAClFC,GAAYzM,EAAAA,EAAAA,wBAAuBF,EAAmB3C,KAAKyC,SAKjE,OAFA0M,EAAWhQ,UAAY,GAAGgQ,EAAWhQ,qCAGjCH,EAAAA,cAAAA,EAAAA,SAAAA,KACIA,EAAAA,cAAAA,SAAAA,OAAAA,OAAAA,CACI4F,SAAUA,EAAUzF,UAAWiB,GAAgBH,EAC3CqP,GACJtQ,EAAAA,cAAAA,IAAAA,OAAAA,OAAAA,CAAAA,EAAOmQ,EAAU,sBAEpBC,IAAmBxK,GAAY5F,EAAAA,cAACmC,EAAAA,oBAAmB,CAACoO,QAAQ,cAAcnO,OAAQnB,EAAMf,IACpF,IACAe,EAAM,eAIvB,E,yFC+BG,MAAMuP,EAA8D,IAEtE,IAFuE,aACxEC,GACH,EACG,OAAKA,EAKDzQ,EAAAA,cAAAA,OAAAA,CAAMG,UAAU,gCACZH,EAAAA,cAAAA,OAAAA,KACKyQ,IANF,IAQA,EAOR,MAAMC,UAAoB1Q,EAAAA,UAG7B6C,YAAmB5B,GACf6B,MAAM7B,GAsHO,KAAA0P,UAAYC,UACzBnF,EAAMzG,iBACN,MAAM6L,EAAwD7P,KAAKC,MAAM6P,KAAK5E,KAAI,CAAC6E,EAAwB5H,KACvG,MAAM6H,EAAuBhQ,KAAKmC,MAAM8N,OAAOC,OAAO/H,IACtD,MAAO,CACH4H,QAAS,CAAEI,WAAYJ,EAAQI,WAAaC,cAAeL,EAAQK,eACnE/H,MAAO2H,EACV,UAEChQ,KAAKC,MAAMoQ,SAASR,GAC1B7P,KAAK6D,UAAUyM,IACJ,CAAEL,OAAQK,EAAcL,OAAQM,aAAa,KACtD,EAQW,KAAAC,eAAiBZ,UAAoE,MAClGnF,EAAMzG,iBACN,MAAMyM,EAA4BP,OAAOQ,SAAgD,QAAxC,EAACjG,EAAMrJ,OAAOuP,aAAa,qBAAa,QAAI,GAAI,IACjG,GAAIC,EAAAA,iBAAAA,kBAAmCH,GACnC,OAAOI,QAAQC,OAAO,IAAIpF,MAAM,uCAEpC,MAAMqF,EAAW,CACbd,OAAQjQ,KAAKmC,MAAM8N,OAAO/E,KAAI,CAAC7C,EAAeF,KAC1C,MAAM6I,EAA4BhR,KAAKC,MAAM6P,KAAKI,OAAO/H,IACE,IAAD,EAA1D,OAAIA,IAAUsI,GAAqBO,EAAWb,YAC1CnQ,KAAKiR,qBAAqBC,SAASF,EAAWb,WAAkC,QAAtB,EAACa,EAAWG,kBAAU,UAAqC,KAAvB1G,EAAMrJ,OAAOiH,OACpGoC,EAAMrJ,OAAOiH,OAEjBA,CAAK,KAIpB,OADArI,KAAK6D,SAASkN,GACPF,QAAQO,SAAS,EA1JxBpR,KAAKmC,MAAQ,CAAE8N,OAAQjQ,KAAKC,MAAM6P,KAAK5E,KAAI,IAAM,KAAKqF,aAAa,GAGnEvQ,KAAKiR,qBAAuB,IAAII,EAAAA,WAChC,IAAK,MAAMtB,KAAW/P,KAAKC,MAAM6P,KAAM,CACV,IAAD,EAAxB,GAAIC,EAAQI,WACRnQ,KAAKiR,qBAAqBC,SAASnB,EAAQI,WAA8B,QAApB,EAAEJ,EAAQoB,kBAAU,SAAU,CAG/F,CAEO3K,sBAAsBD,EAA8BE,GACvD,OAAIzG,KAAKC,MAAMqR,UAAY/K,EAAU+K,SACjCtR,KAAKC,MAAMsR,wBAA0BhL,EAAUgL,uBAC/CvR,KAAKC,MAAMuR,mBAAqBjL,EAAUiL,kBAC1CxR,KAAKC,MAAMwR,mCAAqClL,EAAUkL,oCAKzDzR,KAAKC,MAAM6P,KAAK4B,OAAM,CAAC3B,EAAwB5H,IACzC5B,EAAUuJ,KAAKI,OAAO/H,IAAQgJ,aAAepB,EAAQoB,YACxD5K,EAAUuJ,KAAKI,OAAO/H,IAAQgI,aAAeJ,EAAQI,YACrD5J,EAAUuJ,KAAKI,OAAO/H,IAAQiI,gBAAkBL,EAAQK,kBAM5DpQ,KAAKmC,MAAMoO,cAAgB9J,EAAU8J,cACpCvQ,KAAKmC,MAAM8N,OAAOyB,OAAM,CAACrJ,EAAeF,IAC9BE,IAAU5B,EAAUyJ,OAAO/H,OAM9C,CAEOlJ,SACH,OACID,EAAAA,cAAAA,EAAAA,SAAAA,MAESgB,KAAKmC,MAAMoO,aAAeoB,EAAAA,gBAAAA,YAA4B3R,KAAKC,MAAM6P,OAC9D9Q,EAAAA,cAAAA,MAAAA,CAAKG,UAAU,4DACXH,EAAAA,cAAAA,KAAAA,CAAIG,UAAU,6BACTa,KAAKC,MAAMqR,SAEhBtS,EAAAA,cAAAA,MAAAA,CAAKG,UAAU,oCACXH,EAAAA,cAAAA,OAAAA,CACIqR,SAAUrQ,KAAK2P,UACfxQ,UAAU,yBAAwB,aACtBa,KAAKC,MAAMuR,iBACvBI,aAAa,MAGT5R,KAAKC,MAAM6P,KAAK+B,QAAQ9B,IACZa,EAAAA,iBAAAA,kBAAmCb,EAAQI,cAC9CS,EAAAA,iBAAAA,kBAAmCb,EAAQK,iBACjDlF,KAAI,CAAC6E,EAAwB5H,KAAiB,QAC7C,MAAM6H,EAAuBhQ,KAAKmC,MAAM8N,OAAOC,OAAO/H,IACtD,OACInJ,EAAAA,cAAAA,MAAAA,CAAK8S,IAAK/B,EAAQI,WAAYhR,UAAU,yBACpCH,EAAAA,cAAAA,QAAAA,CAAOE,GAAI,GAAG6Q,EAAQI,mBAAqB4B,QAAShC,EAAQI,WAAYhR,UAAU,2BAC5E,GAAG4Q,EAAQK,gBAAiBL,EAAQoB,WAAa,KAAO,KAEtDnR,KAAKiR,qBAAqBe,SAASjC,EAAQI,aAC3CnR,EAAAA,cAACwQ,EAAyB,CAACC,aAAczP,KAAKC,MAAMwR,mCAExDzS,EAAAA,cAAAA,QAAAA,CACIgC,KAAK,OACL9B,GAAI,GAAG6Q,EAAQI,mBACfhR,UAAU,0BACV2S,IAAK/B,EAAQI,WAAU,aACXhI,EACZ8J,SAAUjS,KAAKwQ,eACfnI,MAAO2H,EAAY,aACPD,EAAQK,cAAa,gBACA,QADA,EAClBL,EAAQoB,kBAAU,SACjCe,SAA4B,QAApB,EAAEnC,EAAQoB,kBAAU,YAGlC,IAIlBnS,EAAAA,cAAAA,MAAAA,CAAKG,UAAU,yBACXH,EAAAA,cAAC2F,EAAAA,EAAM,cACS3E,KAAKC,MAAMuR,iBACvBrS,UAAU,mCACVyF,SAAU5E,KAAKmS,2BAEdnS,KAAKC,MAAMuR,sBAQpCxR,KAAKmC,MAAMoO,aACXvQ,KAAKC,MAAMsR,sBAI3B,CAEYY,gCAER,OAD0B,IACnBnS,KAAKiR,qBAAqBmB,YAAYC,WAAWC,GAAuBA,GACnF,E,yECpMJ,MAQA,EARgB,QAAGC,WAAYC,EAAO,KAAMlT,IAAKuB,EAAG,UAAE1B,EAAS,KAAE6C,GAAqB,SAClFnB,EAAM7B,EAAAA,cAAC6B,EAAG,CAAC1B,UAAW0N,IAAW1N,IAC5B6C,GACIhD,EAAAA,cAACwT,EAAI,CAACrT,UAAW0N,IAAW1N,IAChC6C,EACE,C,gYCMX,IAAqByQ,EAAmB,EAAxC,cAAiDzT,EAAAA,cAa7C6C,YAAY5B,GAAgC,QACxC6B,MAAM7B,GALO,KAAAyS,SAA8C1T,EAAAA,YAqH9C,KAAA2T,aAAe,KAE5B,MAUMC,GAAgBC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAAA,QAAqBC,QAV/C,CACZC,aAAc,CACVC,GAAI,CAAEC,EAAG,KACTC,GAAI,CAAED,EAAG,KACTE,GAAI,CAAEF,EAAG,MACTG,GAAI,CAAEH,EAAG,MACTI,GAAI,CAAEJ,EAAG,UAKjB,MAAyB,OAAlBP,GAA4C,OAAlBA,CAAsB,EAwD1C,KAAAY,mBAAqB,KAClC,KAAS,KACL,GAAItD,OAAOuD,MAAMzT,KAAKmC,MAAMuR,cACxB,OAIJ1T,KAAKC,MAAMgS,UAAYjS,KAAKC,MAAMgS,SAASjS,KAAKmC,MAAMuR,cAEtD,MAAMC,EAAe3T,KAAK0S,UAAY1S,KAAK0S,SAAShL,SAAW1H,KAAK0S,SAAShL,mBAAmBkM,kBAAoB5T,KAAK0S,SAAShL,QAC9HiM,IACAA,EAAaE,aAAa,gBAAiB7T,KAAKmC,MAAMuR,aAAapL,YACnEqL,EAAaE,aAAa,QAAS7T,KAAKmC,MAAMuR,aAAapL,YAAY,GAE5E,IAbH,EAaS,EAMI,KAAAwL,aAAe,KAC5B,GAAI5D,OAAOuD,MAAMzT,KAAKmC,MAAMuR,cACxB1T,KAAK6D,SACD,CAAE6P,aAAc1T,KAAK+T,WACrB/T,KAAKwT,wBAEN,CACH,MAAMxD,EAAe5L,KAAKC,IAAIrE,KAAKC,MAAM2J,IAAKxF,KAAKwF,IAAI5J,KAAK+T,UAAW/T,KAAKmC,MAAMuR,eAC9E1D,IAAiBhQ,KAAKmC,MAAMuR,aAC5B1T,KAAK6D,SACD,CAAE6P,aAAc1D,GAChBhQ,KAAKwT,oBAGTxT,KAAKwT,oBAAoB,GAtNjCxT,KAAKmC,MAAQ,CAAEuR,aAAgC,QAApB,EAAEzT,EAAM+T,oBAAY,QAAI,EAAGC,YAAY,GAClEjU,KAAKkU,aAAelU,KAAKkU,aAAa3R,KAAKvC,MAC3CA,KAAKmU,aAAenU,KAAKmU,aAAa5R,KAAKvC,MAC3CA,KAAKoU,cAAgBpU,KAAKoU,cAAc7R,KAAKvC,MAC7CA,KAAKyC,SAAUC,EAAAA,EAAAA,IAAiB,QAAS1C,KAAKC,MAAM0C,iBAAmB,IACvE3C,KAAK+T,UAA0B,QAAjB,EAAG/T,KAAKC,MAAMoE,WAAG,QAAIgQ,EAAoBC,aAAajQ,GACxE,CAEOkQ,gCAAgCtU,EAA4CkC,GAC/E,MAAMsE,E,qWAAS,IAAQtE,GAMmB,IAAD,GAJrClC,EAAM2E,WAAazC,EAAM8R,aACzBxN,EAAUwN,YAAa,IAGtBhU,EAAM2E,UAAYzC,EAAM8R,cACzBxN,EAAUiN,aAAiC,QAArB,EAAGzT,EAAM+T,oBAAY,QAAI,EAC/CvN,EAAUwN,YAAa,GAE3B,OAAOxN,CACX,CAEOxH,SAAM,QACT,MAAM,IACFoF,EAAG,IACHuF,GACA5J,KAAKC,MAEHuU,EAA8B,GAAGxU,KAAKC,MAAMwU,+CAC5CC,EAA6B,GAAG1U,KAAKC,MAAM0U,+CAC3CC,EAAoB5U,KAAKmC,MAAMuR,eAAiBrP,QAAAA,EAAO,IAAMrE,KAAKC,MAAM4U,WACxEC,EAAoB9U,KAAKmC,MAAMuR,cAAgB9J,GAAO5J,KAAKC,MAAM4U,WACjE7E,EAAehQ,KAAKmC,MAAMuR,aAChC1T,KAAKyC,QAAQwG,cAAcH,MAAQlG,EAAAA,GAAAA,kBACnC,MAAMmS,GAAsBlS,EAAAA,EAAAA,IAAuB7C,KAAKC,MAAM0C,iBAAmB3C,KAAKyC,SACtFzC,KAAKyC,QAAQwG,cAAcH,MAAQlG,EAAAA,GAAAA,kBACnC,MAAMoS,GAAsBnS,EAAAA,EAAAA,IAAuB7C,KAAKC,MAAM0C,iBAAmB3C,KAAKyC,SAChFwS,EAAiB,GAAoC,QAApC,EAAGjV,KAAKC,MAAMiV,8BAAsB,QAAI,MAAMlV,KAAKmC,MAAMuR,eAEhF,IAAIyB,EAAsB,GACtBP,EAEAO,EAAsB,WAEfnV,KAAKC,MAAM2E,WAElBuQ,EAAsB,cAE1B,IAAIC,EAAsB,GAS1B,OARIN,EAEAM,EAAsB,WACfpV,KAAKC,MAAM2E,WAElBwQ,EAAsB,cAItBpW,EAAAA,cAAAA,EAAAA,SAAAA,KACIA,EAAAA,cAAAA,MAAAA,CAAKG,UAAU,WAAWD,GAAIc,KAAKC,MAAMf,IACrCF,EAAAA,cAAAA,SAAAA,OAAAA,OAAAA,CACI4F,SAAU5E,KAAKC,MAAM2E,UAAYgQ,EACjC7G,MAAO6G,EAAoB,GAAK5U,KAAKC,MAAMoV,yBAC3ClW,UAAW,gCAAgCgW,IAC3CjU,QAASlB,KAAKmU,aAAY,gBACXS,EAAiB,aACpB,GAAG5U,KAAKC,MAAMoV,2BAC1B7V,MAAM,aACFuV,GAEJ/V,EAAAA,cAAAA,OAAAA,CAAMG,UAAWqV,KAErBxV,EAAAA,cAAAA,QAAAA,CACIgC,KAAK,SACL7B,UAAU,iBACVmW,QAAQ,SACRjN,MAAOrI,KAAKmC,MAAMuR,aAClBzB,SAAUjS,KAAKoU,cACfmB,OAAQvV,KAAK8T,aAAY,YACf,SAAQ,aACN9T,KAAK2S,eAAiBsC,EAAiB,GAAoC,QAApC,EAAGjV,KAAKC,MAAMiV,8BAAsB,QAAI,KAC3FzT,KAAK,aAAY,gBACFzB,KAAK+T,UAAS,gBACdnK,EAAG,gBACHoG,EACf7K,IAAKnF,KAAK0S,SACV9N,SAAU5E,KAAKC,MAAM2E,SACrBP,IAAKrE,KAAK+T,UACVnK,IAAK5J,KAAKC,MAAM2J,MAEpB5K,EAAAA,cAAAA,SAAAA,OAAAA,OAAAA,CACI4F,SAAU5E,KAAKC,MAAM2E,UAAYkQ,EACjC/G,MAAO+G,EAAoB,GAAK9U,KAAKC,MAAMuV,yBAC3CrW,UAAW,gCAAgCiW,IAC3ClU,QAASlB,KAAKkU,aAAY,gBACXY,EAAiB,aACpB,GAAG9U,KAAKC,MAAMuV,2BAC1BhW,MAAM,aACFwV,GAEJhW,EAAAA,cAAAA,OAAAA,CAAMG,UAAWuV,MAKrC,CAsBQR,eACJ,IAAIuB,GAAiB,EACrB,MAAMC,EAAe1V,KAAKmC,MAAMuR,aAChC,IAAIiC,EAEAD,EAAe1V,KAAKC,MAAM2J,KAC1B6L,GAAiB,EACjBE,EAAkBD,EAAe,IAEjCD,GAAiB,EACjBE,EAAkB3V,KAAKC,MAAM2J,KAG7B6L,GAAkBzV,KAAKC,MAAMgS,UACzBjS,KAAKC,MAAMgS,SAAS0D,IACpB3V,KAAK6D,SAAS,CAAE6P,aAAciC,GAG1C,CAEQxB,eACJ,IAAIsB,GAAiB,EACrB,MAAMC,EAAe1V,KAAKmC,MAAMuR,aAChC,IAAIiC,EAEAD,GAAgB1V,KAAK+T,WACrB0B,GAAiB,EACjBE,EAAkBD,EAAe,IAEjCD,GAAiB,EACjBE,EAAkB3V,KAAK+T,WAGvB0B,GAAkBzV,KAAKC,MAAMgS,UACzBjS,KAAKC,MAAMgS,SAAS0D,IACpB3V,KAAK6D,SAAS,CAAE6P,aAAciC,GAG1C,CAEQvB,cAAcrQ,GAClB,IAAIiM,EAAeE,OAAOQ,SAAU3M,EAAE3C,OAAOiH,MAAQ,IAChD6H,OAAOuD,MAAMzD,KACdA,EAAe5L,KAAKC,IAAIrE,KAAKC,MAAM2J,IAAKxF,KAAKwF,IAAI5J,KAAK+T,UAAW/D,KAErEhQ,KAAK6D,SACD,CAAE6P,aAAc1D,GAExB,GA7LcyC,EAAAA,aAAmD,CAC7DpO,IAAK,EACLoQ,oBAAqB,eACrBE,oBAAqB,eAJRlC,EAAmB,YADvCmD,EAAAA,IACoBnD,GAyOpB,S,uvECtPM,MAAMI,EAAY5S,IAAuB,MAC5C,MAAM,QAAE6S,EAAO,QAAEE,GAAY/S,EAC7B,OAAQ6S,GACJ,KAAKC,EAAAA,EAAAA,QACD,GAAI8C,EAAAA,GAAAA,WAAsB9S,OAAO+S,WAAY,CACzC,MAAM7C,EAAeD,aAAO,EAAPA,EAASC,aAC9B,GAAIA,EACA,OAAIA,EAAaC,IAAMnQ,OAAO+S,YAAc7C,EAAaC,GAAGC,EACjD,KACAF,EAAaG,IAAMrQ,OAAO+S,YAAc7C,EAAaG,GAAGD,EACxD,KACAF,EAAaI,IAAMtQ,OAAO+S,YAAc7C,EAAaI,GAAGF,EACxD,KACAF,EAAaK,IAAMvQ,OAAO+S,YAAc7C,EAAaK,GAAGH,EACxD,KAEJ,IAAI,CAKnB,MAAO,KACX,KAAKJ,EAAAA,EAAAA,SAED,MAD2C,YAA1BC,SAAe,QAAR,EAAPA,EAAS+C,cAAM,WAAR,EAAP,EAAiBC,MAAoB,KAAO,KAEjE,QACI,MAAO,KAAK,C,6BChCjB,IAAKjD,E,iBAAZ,SAAYA,GACRA,EAAAA,EAAAA,QAAAA,GAAAA,UACAA,EAAAA,EAAAA,SAAAA,GAAAA,UACH,CAHD,CAAYA,IAAAA,EAAW,I,yECUR,MAAMkD,UAAwBjX,EAAAA,cAKzC6C,YAAY5B,GACR6B,MAAM7B,GACND,KAAKkW,gBAAkBlW,KAAKkW,gBAAgB3T,KAAKvC,MACjD,MAAMmW,EAAcnW,KAAKC,MAAMmW,eAAetE,IACxChC,EAAO9P,KAAKC,MAAMoW,gBAAgBnL,KAAIoL,GAAWA,EAAOxE,MAC9D9R,KAAKmC,MAAQ,CAAEoU,cAAezG,EAAK0G,QAAQL,GAC/C,CAEOlX,SACH,MAAM,UACFwX,EAAS,eACTC,EAAc,WACdC,EAAU,gBACVN,EAAe,kBACfO,GACA5W,KAAKC,MAEH4W,EAAkBzW,IAAW,wBAAyBsW,GACtDI,EAAqB1W,IAAW,iBAAkBwW,GAClDL,EAAgBvW,KAAK+W,oBAE3B,OACI/X,EAAAA,cAAAA,EAAAA,SAAAA,KACIA,EAAAA,cAAAA,QAAAA,CAAOG,UAAW0X,EAAiB9E,QAAS4E,GACvCF,GAELzX,EAAAA,cAAAA,SAAAA,CAAQE,GAAIyX,EAAYxX,UAAW2X,EAAoB7E,SAAUjS,KAAKkW,iBACjEG,EAAgBnL,KAAI,CAACoL,EAAQnO,KAC1B,MAAM6O,EAAW7O,IAAUoO,EAC3B,OAAQvX,EAAAA,cAAAA,SAAAA,CACJG,UAAU,yBAAyB2S,IAAKwE,EAAOxE,IAAKkF,SAAUA,EAAQ,gBACvDA,GACdV,EAAOjO,MACH,KAK7B,CAEQ0O,oBACJ,GAAI/W,KAAKC,MAAMgX,mBAAoB,CAC/B,IAAIV,GAAiB,EACrB,MAAMJ,EAAcnW,KAAKC,MAAMmW,eAAetE,IAC9C,IAAK,IAAIoF,EAAI,EAAGA,EAAIlX,KAAKC,MAAMoW,gBAAgBjO,OAAQ8O,IACnD,GAAIlX,KAAKC,MAAMoW,gBAAgBa,GAAGpF,MAAQqE,EAAa,CACnDI,EAAgBW,EAChB,KAAM,CAId,OAAOX,CAAc,CAGzB,OAAOvW,KAAKmC,MAAMoU,aACtB,CAEQL,gBAAgBzL,GACpB,MAAM,gBACF4L,EAAe,eACfc,GACAnX,KAAKC,MACHkI,EAAQsC,EAAM+D,cAAc4I,gBAAgB,GAAGjP,MAC/CiO,EAAiBC,EAAgBlO,GACvCnI,KAAK6D,SAAS,CAAE0S,cAAepO,IAC/BgP,EAAe,CAAEf,kBACrB,EAtEcH,EAAAA,aAA+C,CACzDoB,YAAa,O,2LCDN,MAAMC,UAAetY,EAAAA,cAChC6C,YAAY5B,GACR6B,MAAM7B,GAEND,KAAKmC,MAAQ,CACToV,YAAa,KAErB,CAEOtU,uBACCjD,KAAKmC,MAAMoV,aACXvX,KAAKmC,MAAMoV,YAAYC,QAE/B,CAEOvY,SACH,IAAI2G,EAAO,KACX,OAAKyF,EAAAA,IAIArL,KAAKC,MAAM2F,MAAS5F,KAAKmC,MAAMoV,cAChC3R,EAAOrC,SAAS+H,cAAc,OAC9B/H,SAASG,KAAK+T,YAAY7R,GAC1B5F,KAAK6D,SAAS,CAAE0T,YAAa3R,MAE1B8R,EAAAA,EAAAA,cAAa1X,KAAKC,MAAMP,SAAUM,KAAKC,MAAM2F,MAAQA,IARjD,IASf,E,g7BCpBW,MAAMsG,UAAclN,EAAAA,cAkC/B6C,YAAY5B,GACR6B,MAAM7B,GACND,KAAKkK,QAAU,KACflK,KAAKmF,IAAMnG,EAAAA,YACXgB,KAAK2X,SAAU,EAEf3X,KAAK4X,sBAAwB5X,KAAK4X,sBAAsBrV,KAAKvC,MAC7DA,KAAK6X,qBAAuB7X,KAAK6X,qBAAqBtV,KAAKvC,MAC3DA,KAAK8X,yBAA2B9X,KAAK8X,yBAAyBvV,KAAKvC,MACnEA,KAAK+X,cAAgB/X,KAAK+X,cAAcxV,KAAKvC,MAC7CA,KAAKgY,WAAahY,KAAKgY,WAAWzV,KAAKvC,MACvCA,KAAKiY,UAAYjY,KAAKiY,UAAU1V,KAAKvC,MACrCA,KAAKkY,UAAYlY,KAAKkY,UAAU3V,KAAKvC,MAErCA,KAAKmC,MAAQ,CACTgW,SAAS,EACT1Y,OAAQQ,EAAMR,SAAU,EACxB2Y,iBAAkB,MAGlBnY,EAAMR,QACNO,KAAKqY,OAEb,CAEOvV,oBACC9C,KAAKC,MAAM4G,SACX7G,KAAKC,MAAM4G,UAEf7G,KAAK2X,SAAU,EAEf,MAAMzN,EAAU3G,SAAS+H,cAAc,OACvCpB,EAAQ2J,aAAa,WAAY,MACjC3J,EAAQ5I,MAAMgX,WAAa,SAC3BpO,EAAQ5I,MAAMiX,SAAW,WACzBvY,KAAKkK,QAAUA,EACf3G,SAASG,KAAK+T,YAAYvN,GAE1BlK,KAAKwY,gBAAmBxY,KAAKC,MAAMuY,2BAA2BC,YAAezY,KAAKC,MAAMuY,gBAAkBjV,SAASmV,cAAc,IAAI1Y,KAAKC,MAAMuY,mBAE5IxY,KAAKmC,MAAM1C,SAAWO,KAAKmC,MAAMgW,SACjCnY,KAAKqY,OAEb,CAEOpV,uBACCjD,KAAKC,MAAM+G,QACXhH,KAAKC,MAAM+G,SAEXhH,KAAKmC,MAAM1C,QACXO,KAAK2Y,SAET3Y,KAAK2X,SAAU,EAEX3X,KAAKkK,SACLlK,KAAKkK,QAAQsN,QAErB,CAEOlR,mBAAmBsS,EAAyBC,IAC1C7Y,KAAKmC,MAAM1C,SAAWoZ,EAAUpZ,QAAYO,KAAKC,MAAM6Y,kCAAoCF,EAAWE,kCACvGjO,YAAW,KACP,MAAMkO,EAAsB/Y,KAAK4X,wBACjC,GAAImB,GAAuBA,EAAoB3Q,OAAS,GAAK2Q,EAAoB,GAAI,CACnDA,EAAoB,GAC5BC,OAAQ,IAEnC,IAEX,CAEOC,0BAA0B1S,GACzBA,EAAU9G,SAAWO,KAAKC,MAAMR,QAChCO,KAAK6D,SAAS,CAAEpE,OAAQ8G,EAAU9G,QAE1C,CAEOR,SAIH,GAHIe,KAAKmC,MAAM1C,SAAWO,KAAKmC,MAAMgW,SACjCnY,KAAKqY,QAEY,OAAjBrY,KAAKkK,QAAkB,CACvB,MAAM,EAMFlK,KAAKC,OANH,cACFiZ,EAAa,eAAEC,EAAc,kBAAEC,EAAiB,iBAAEC,EAAgB,UAAEla,EAAS,UAAEE,EAAS,gBACxFia,EAAe,mBAAEC,EAAkB,SAAEC,EAAQ,OAAE/Z,EAAM,SAAEga,EAAQ,SAAEC,EAAQ,KACzEjY,EAAI,KAAEuD,EAAI,SAAE3C,EAAQ,SAAEsX,EAAQ,iBAAEC,EAAgB,mBAAEC,EAAkB,SAAEC,EAAQ,OAAEC,EAAM,KAAEna,EAAI,OAAEL,EAAM,SACpGG,EAAQ,gBAAE8Y,EAAe,eAAEwB,EAAgB,kBAAmBC,GAEjE,EADMC,GAAgB,YAGjBC,EAAkB,CACpBjZ,QAASlB,KAAK6X,qBACduC,YAAapa,KAAK8X,yBAClBuC,QAASra,KAAK+X,cACduC,UAAWta,KAAKgY,WAChB1W,MAAO,CAAEE,QAAS,UAGhB+Y,EAAgB,SACfha,EAAAA,EAAAA,cACA+Y,GAAe,IAClB9Y,UAAWZ,GAAQ0Z,EAAkBA,EAAgB9Y,UAAY,GACjEC,QAASb,GAAQ0Z,EAAkBA,EAAgB7Y,QAAU,IAE3D+Z,EAAmB,SAClBja,EAAAA,EAAAA,cACAgZ,GAAkB,IACrB/Y,UAAWZ,GAAQ2Z,EAAqBA,EAAmB/Y,UAAY,GACvEC,QAASb,GAAQ2Z,EAAqBA,EAAmB9Y,QAAU,IAGjEga,EAAW7a,EACbZ,EAAAA,cAACuB,EAAAA,EAAI,iBACGia,EAAmB,CACvB9Y,GAAI1B,KAAKmC,MAAM1C,UAAY+Z,EAC3Bna,UAAWA,EACXF,UAAWiB,IAAW,sBAAuBgZ,MAEjDpa,EAAAA,cAAAA,MAAAA,CAAKG,UAAWiB,IAAW,sBAAuB,OAAQgZ,KAExDsB,EAAkB,oBAClBC,EACFva,IAAW,CACPsa,EACAvb,EACA6F,EAAO,cAAcA,IAAS,OAGhC4V,EACF5b,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CACImG,IAAKnF,KAAKmF,KACN+U,EAAgB,CACpB/a,UAAWwb,EACXlZ,KAAMA,EAAI,aACEzB,KAAKmC,MAAM1C,OAAM,kBACZO,KAAKC,MAAM,mBAC5BoC,SAAUA,IAEVrD,EAAAA,cAAAA,MAAAA,CACIG,UAAWiB,IAAW,qBAAsBiZ,GAC5C5X,KAAK,YAEJ/B,IAKb,OACIV,EAAAA,cAACsY,EAAM,CAAC1R,KAAM5F,KAAKkK,SACflL,EAAAA,cAAAA,MAAAA,CAAKG,UAAW+Z,GACZla,EAAAA,cAACuB,EAAAA,EAAI,iBACG4Z,EACAI,EAAgB,CACpB7Y,GAAIjC,EACJsH,UAAW/G,KAAKiY,UAChB/Q,SAAUlH,KAAKkY,UACf7Y,UAAWA,EACXqB,OAAQd,EACRT,UAAWiB,IAAW,YAAa+Y,KAElCQ,EACAiB,GAEJH,GAEA,CAIjB,OAAO,IACX,CAEQpC,QACJ,GAAIrY,KAAKkK,QAAS,CAAC,IAAD,EAId,GAHAlK,KAAKkK,QAAQ5I,MAAMyY,OAAS,GAAG/Z,KAAKC,MAAM8Z,QAAU,MACpD/Z,KAAKkK,QAAQ5I,MAAME,QAAU,QAC7BxB,KAAKkK,QAAQ5I,MAAMgX,WAAa,UACR,IAApBpM,EAAM2O,UAAiB,CACvB,GAAI9X,OAAQ,CACR,MAAM+X,EAAU/X,OAAO+X,QACjBC,EAAiBhY,OAAO+S,WAAavS,SAASG,KAAKsX,YACzDzX,SAASG,KAAKpC,MAAMiX,SAAW,QAC/BhV,SAASG,KAAKpC,MAAM2Z,IAAM,IAAIH,MAC9BvX,SAASG,KAAKpC,MAAM4Z,MAAQ,GAAGH,MAC/BxX,SAASG,KAAKpC,MAAM6Z,KAAO,KAAM,CAGrC5X,SAASG,KAAKvE,UAAYiB,IACtBmD,SAASG,KAAKvE,UACd,aACF,CAEN+M,EAAM2O,WAAa,EACY,QAA/B,EAAAtX,SAASG,KAAKiE,yBAAiB,OAA/B,EAAiCkM,aAAa,cAAe,QACzD7T,KAAKwY,iBACLxY,KAAKwY,gBAAgB3E,aAAa,cAAe,QAGrD7T,KAAK6D,SAAS,EAAD,KAAM7D,KAAKmC,OAAK,IAAEgW,SAAS,IAAQ,CAExD,CAEQQ,SACJ,GAAK3Y,KAAKmC,MAAM1C,OAAhB,CAeA,GAXIO,KAAKkK,UACLlK,KAAKkK,QAAQ5I,MAAME,QAAU,OAC7BqJ,YAAW,KACH7K,KAAKkK,UACLlK,KAAKkK,QAAQ5I,MAAMgX,WAAa,SAChCtY,KAAKkK,QAAQ5I,MAAM8Z,eAAe,WAAW,GAElD,IAIHlP,EAAM2O,WAAa,EAAG,CAAC,IAAD,EACtB,MAAMQ,EAAqB,aACI,QAA/B,EAAA9X,SAASG,KAAKiE,yBAAiB,OAA/B,EAAiCkM,aAAa,cAAe,SAG7D,MAAMyH,EAA0B,IAAIC,OAAO,QAAQF,UAGnD,GAFA9X,SAASG,KAAKvE,UAAYoE,SAASG,KAAKvE,UAAU8I,QAAQqT,EAAyB,KAAK9S,OAEpFzF,OAAQ,CACR,MAAM+X,EAAUvX,SAASG,KAAKpC,MAAM2Z,IACpC1X,SAASG,KAAKpC,MAAMiX,SAAW,GAC/BhV,SAASG,KAAKpC,MAAM2Z,IAAM,GAC1B1X,SAASG,KAAKpC,MAAM4Z,MAAQ,GAC5B3X,SAASG,KAAKpC,MAAM6Z,KAAO,GAC3BpY,OAAOe,SAAS,GAAIoM,OAAOQ,SAASoK,GAAW,IAAK,IAAK,CAAD,CAGhE5O,EAAM2O,WAAa,EAEf7a,KAAKwY,iBACLxY,KAAKwY,gBAAgB3E,aAAa,cAAe,SAGjD7T,KAAKC,MAAM+Z,gBAAkBha,KAAKC,MAAM+Z,eAAetS,SACvD1H,KAAKC,MAAM+Z,eAAetS,QAAQsR,QAGtChZ,KAAK6D,SAAS,EAAD,KAAM7D,KAAKmC,OAAK,IAAEgW,SAAS,IAzC7B,CA0Cf,CAEQP,wBACJ,OAAqB,OAAjB5X,KAAKkK,QACE,KAGJlK,KAAKkK,QAAQuB,iBAAiBW,EAAAA,GAAAA,KAAuB,MAChE,CAEQoP,mBACJ,MAAMC,EAAoBzb,KAAK4X,wBAE/B,IACI,OAAOrU,SAASmY,aAEgD,CADlE,SACE,OAA6B,OAAtBD,EAA6B,KAAOA,EAAkB,EAAG,CAExE,CAEQ5D,qBAAqB9T,GACzB,GAAIA,EAAE3C,SAAWpB,KAAKmC,MAAMiW,iBAAkB,CAE1C,GADArU,EAAE4X,mBACG3b,KAAKC,MAAMR,SAAkC,IAAxBO,KAAKC,MAAMuZ,SACjC,OAGJ,MAAMoC,EAAY5b,KAAKmF,IAAIuC,QAEvB3D,EAAE3C,QAAUwa,IAAcA,EAAU7V,SAAShC,EAAE3C,SAAmBpB,KAAKC,MAAMV,QAC7ES,KAAKC,MAAMV,QAAQ,CAG/B,CAEQyY,WAAWjU,GACf,GAAgB,IAAZA,EAAE8X,MACF,OAGJ,MAAMJ,EAAoBzb,KAAK4X,wBAC/B,GAA0B,OAAtB6D,EACA,OAGJ,MAAMK,EAAiBL,EAAkBrT,OACnC2T,EAAe/b,KAAKwb,mBAE1B,IAAIQ,EAAe,EAEnB,IAAK,IAAI9E,EAAI,EAAGA,EAAI4E,EAAgB5E,GAAK,EACrC,GAAIuE,EAAkBvE,KAAO6E,EAAc,CACvCC,EAAe9E,EACf,KAAM,CAId,IAAI+E,EAAyB,KACzBlY,EAAEmY,UAA6B,IAAjBF,GACdjY,EAAEC,iBACFiY,EAAKR,EAAkBK,EAAiB,IAChC/X,EAAEmY,UAAYF,IAAiBF,EAAiB,IACxD/X,EAAEC,iBACFiY,EAAKR,EAAkB,IAEvBQ,GACAA,EAAGjD,OAEX,CAEQlB,yBAAyB/T,GAC7B/D,KAAK6D,SAAS,CACVuU,iBAAkBrU,EAAE3C,QAE5B,CAEQ2W,cAAchU,GACd/D,KAAKC,MAAMR,QAAUO,KAAKC,MAAM6Z,UAA0B,KAAd/V,EAAEoY,SAAkBnc,KAAKC,MAAMV,QAC3ES,KAAKC,MAAMV,QAEnB,CAEQ0Y,UAAUrS,EAAmBgC,QACLrG,IAAxBvB,KAAKC,MAAMwZ,UACXzZ,KAAKC,MAAMwZ,gBAEoBlY,IAA/BvB,KAAKC,MAAMqZ,sBAA0E/X,IAAzCvB,KAAKC,MAAMqZ,gBAAgBvS,WACvE/G,KAAKC,MAAMqZ,gBAAgBvS,UAAUnB,EAAMgC,EAEnD,CAEQsQ,UAAUtS,QACcrE,IAAxBvB,KAAKC,MAAMyZ,UACX1Z,KAAKC,MAAMyZ,WAEf1Z,KAAK2Y,cAC8BpX,IAA/BvB,KAAKC,MAAMqZ,sBAAyE/X,IAAxCvB,KAAKC,MAAMqZ,gBAAgBpS,UACvElH,KAAKC,MAAMqZ,gBAAgBpS,SAAStB,GAEpC5F,KAAK2X,SACL3X,KAAK6D,SAAS,CAAEpE,QAAQ,GAEhC,EA7XcyM,EAAAA,aAAqC,CAC/CzM,QAAQ,EACR2c,WAAW,EACXxC,iBAAkB,MAClBC,mBAAoB,SACpBpY,KAAM,SACN+X,UAAU,EACVM,UAAU,EACVC,OAAQ,IACR1X,SAAU,EACVzC,MAAM,EACN0Z,gBAAiB,CACb7Y,QAAS6G,EAAAA,GAAAA,OAEbiS,mBAAoB,CAChB3S,cAAc,EACdnG,QAAS6G,EAAAA,GAAAA,OAIF4E,EAAAA,UAAoB,E,6CChCxB,MAAMmQ,UAAkBrd,EAAAA,cAK5BC,SACH,MAAM,EAAmDe,KAAKC,OAAxD,UAAEd,EAAS,UAAEE,EAAS,IAAEC,EAAG,GAAEJ,GAAmB,EAAZkD,GAAU,YAC9CvB,EAAMvB,GAAO,MACbY,GAAUC,EAAAA,EAAAA,IAAgBC,IAAWjB,EAAW,mBAAoBE,GAC1E,OAAOL,EAAAA,cAAC6B,EAAG,iBAAKuB,EAAU,CAAEjD,UAAWe,IAC3C,EATcmc,EAAAA,aAAyC,CACnD/c,IAAK,O,wCCFE,MAAMgd,UAAoBtd,EAAAA,cAK9BC,SACH,MAAM,EAA+Ce,KAAKC,OAApD,UAAEd,EAAS,UAAEE,EAAS,IAAEC,GAAoB,EAAZ8C,GAAU,YAC1CvB,EAAMvB,GAAO,MACbY,GAAUC,EAAAA,EAAAA,IAAgBC,IAAWjB,EAAW,qBAAsBE,GAC5E,OAAOL,EAAAA,cAAC6B,EAAG,iBAAKuB,EAAU,CAAEjD,UAAWe,IAC3C,EATcoc,EAAAA,aAA2C,CACrDhd,IAAK,O,+GCFE,MAAMid,UAAoBvd,EAAAA,cAC9BC,SACH,IAAIud,EACJ,MAAM,EAWFxc,KAAKC,OAXH,UACFd,EAAS,UACTE,EAAS,SACTK,EAAQ,OACRH,EAAM,IACND,EAAG,QACHmd,EAAO,eACPxb,EAAc,iBACdyb,EAAgB,GAChBxd,GAEH,EADMkD,GAAU,YAGXvB,EAAMvB,GAAO,KACbqd,EAAUF,GAAW,MACrBvc,GAAUC,EAAAA,EAAAA,IAAgBC,IAAWjB,EAAW,qBAAsBE,GAU5E,OARIE,IACAid,EACIxd,EAAAA,cAAAA,SAAAA,CACIgC,KAAK,SAASE,QAAS3B,EAAQJ,WAAWgB,EAAAA,EAAAA,IAAgB,0BAA2Bd,GAAU,aACnF4B,GAAkB,WAKtCjC,EAAAA,cAAC2d,EAAO,iBAAKva,EAAU,CAAEjD,UAAWe,IAC9BR,GAAYV,EAAAA,cAAC6B,EAAG,CAAC1B,WAAWgB,EAAAA,EAAAA,IAAgB,mBAAoBd,IAC7DK,GAEJ8c,EAGb,E,8KCpCW,MAAMI,UAAmB5d,EAAAA,cAO7BC,SACH,MAAM,EAWGe,KAAKC,OAXR,UACFd,EAAS,cACT0d,EAAa,UACbxd,EAAS,KACT2F,EACA1F,IAAKuB,EACLic,QAASC,EACT,aAAcC,EAAK,KACnBvb,GAGH,EAFMxB,GAAK,YAINgd,GAAoB9c,EAAAA,EAAAA,IAAgBC,IAAWjB,GAAYE,GAE3D6d,GAAwB/c,EAAAA,EAAAA,IAC1BC,IAAWyc,EAAe,iBAAkB,CACxC,CAAC,kBAAkB7X,OAAWA,IAElC3F,GAGJ,OACIL,EAAAA,cAAC6B,EAAG,CAAC1B,UAAW8d,EAAmBxb,KAAK,aAAY,aAAaub,GAC7Dhe,EAAAA,cAAC+d,EAAO,iBAAK9c,EAAK,CAAEd,UAAW+d,KAG3C,EAlCcN,EAAAA,aAA0C,CACpDtd,IAAK,MACLwd,QAAS,KACT,aAAc,a,8JCJP,MAAMK,UAAuBne,EAAAA,cAKjCC,SACH,MAAM,EAAsEe,KAAKC,OAA3E,OAAE4E,EAAM,UAAE1F,EAAS,UAAEE,EAAS,SAAEuF,EAAUtF,IAAKuB,GAAe,EAAPZ,GAAK,YAE5Dmd,GAAwBjd,EAAAA,EAAAA,IAC1BC,IAAWjB,EAAW,gBAAiB,CACnC0F,SACAD,aAEJvF,GAGJ,OAAOL,EAAAA,cAAC6B,EAAG,iBAAKZ,EAAK,CAAEd,UAAWie,IACtC,EAhBcD,EAAAA,aAA8C,CACxD7d,IAAK,K,mMCDE,MAAM+d,UAAuBre,EAAAA,cAQxC6C,YAAY5B,GACR6B,MAAM7B,GACND,KAAKyC,SAAUC,EAAAA,EAAAA,IAAiB,QAAS1C,KAAKC,MAAM0C,iBAAmB,GAC3E,CAEO1D,SACH,IAAI,EAAgGe,KAAKC,OAArG,UAAEd,EAAS,UAAEE,EAAS,KAAEie,EAAI,SAAEC,EAAUje,IAAKuB,EAAG,SAAEnB,EAAQ,iBAAEiD,GAA4B,EAAP1C,GAAK,YACtF6I,EAAgBpJ,EACpB,MAAM8d,GAAwBrd,EAAAA,EAAAA,IAAgBC,IAAWjB,EAAW,iBAAkBE,GAEtF,IAAIoe,EACAF,GACAE,EAAe,IACf3U,EAAQ,YACDwU,IACPG,EAAe,IACf3U,EAAQ,QAGRpJ,GAAYge,MAAMC,QAAQje,IAAiC,IAApBA,EAAS0I,SAChD1I,EAAW,MAEVO,EAAMiF,MAAgB,MAARrE,IACfA,EAAM,SAGN0c,GAAYD,KACZ5d,EAAW,CAEHV,EAAAA,cAAAA,OAAAA,CAAM8S,IAAI,SACLpS,GAAY+d,KAM7Bzd,KAAKyC,QAAQwG,cAAcH,MAAQA,EACnC,MAAMwG,GAAYzM,EAAAA,EAAAA,IAAuBF,EAAkB3C,KAAKyC,SAEhE,OACIzD,EAAAA,cAAC6B,EAAG,iBAAKZ,EAAK,CAAEd,UAAWqe,GAA2BlO,GACjD5P,EAGb,EAnDc2d,EAAAA,aAA8C,CACxD/d,IAAK,IACLmC,KAAM,O,iWCDC,MAAMmc,UAA+B5e,EAAAA,cAsBhD6C,YAAY5B,GACR6B,MAAM7B,GATF,KAAA4d,WAAqB,EAUzB7d,KAAK8d,SAAW9d,KAAKC,MAAM8d,MAAQ3Z,KAAK4Z,KAAKhe,KAAKC,MAAM8d,MAAQ/d,KAAKC,MAAMge,cAAiB,EAC5Fje,KAAK6d,WAAazZ,KAAK8Z,OAAOle,KAAKC,MAAMke,cAAgB,GAAKne,KAAKC,MAAMge,cACzEje,KAAKoe,KAAO,CAAC,EACb,MAAMC,EAAWre,KAAKC,MAAMqe,IAAIrT,MAAM,KAEtC,GAAIoT,EAAS,GAAI,CACbre,KAAKse,IAAMD,EAAS,GACpB,MAAME,EAAcF,EAAS,GAAGpT,MAAM,KACtCjL,KAAKwe,KAAOD,EAAY,GAAK,IAAIA,EAAY,KAAO,GACpD,MAAME,EAAaF,EAAY,GAAGtT,MAAM,KAExC,IAAK,MAAMyT,KAAOD,EAAY,CAC1B,MAAME,EAAUD,EAAIzT,MAAM,KAEtBjL,KAAKC,MAAMye,MAAQC,EAAQ,KAC3B3e,KAAKoe,KAAKO,EAAQ,IAAMA,EAAQ,GAAE,MAGvC,CACH,MAAMJ,EAAcF,EAAS,GAAGpT,MAAM,KACtCjL,KAAKse,IAAMC,EAAY,GACvBve,KAAKwe,KAAOD,EAAY,GAAK,IAAIA,EAAY,KAAO,EAAG,CAE/D,CAEOtf,SACH,MAAM,EAqBGe,KAAKC,OArBR,UACFd,EAAS,QACTyf,EAAO,IACPF,EAAG,MACHX,EAAK,aACLE,EAAY,aACZE,EAAY,aACZU,EAAY,SACZC,EAAQ,kBACRC,EAAiB,cACjBC,EAAa,cACbnC,EAAa,UACbxd,EAAS,SACTK,EAAQ,KACRsF,EACA1F,IAAKuB,EACLic,QAASC,EACT,aAAcC,EAAK,KACnBvb,GAGH,EAFMxB,GAAK,YAIZD,KAAK8d,SAAW9d,KAAKC,MAAM8d,MAAQ3Z,KAAK4Z,KAAKhe,KAAKC,MAAM8d,MAAQ/d,KAAKC,MAAMge,cAAiB,EAC5Fje,KAAK6d,WAAazZ,KAAK8Z,OAAOle,KAAKC,MAAMke,cAAgB,GAAKne,KAAKC,MAAMge,cACzEje,KAAKoe,KAAO,CAAC,EACb,MAAMC,EAAWre,KAAKC,MAAMqe,IAAIrT,MAAM,KAEtC,GAAIoT,EAAS,GAAI,CACbre,KAAKse,IAAMD,EAAS,GACpB,MAAME,EAAcF,EAAS,GAAGpT,MAAM,KACtCjL,KAAKwe,KAAOD,EAAY,GAAK,IAAIA,EAAY,KAAO,GACpD,MAAME,EAAaF,EAAY,GAAGtT,MAAM,KAExC,IAAK,MAAMgU,KAAaR,EAAY,CAChC,MAAME,EAAUM,EAAUhU,MAAM,KAE5BjL,KAAKC,MAAMye,MAAQC,EAAQ,KAC3B3e,KAAKoe,KAAKO,EAAQ,IAAMA,EAAQ,GAAE,MAGvC,CACH,MAAMJ,EAAcF,EAAS,GAAGpT,MAAM,KACtCjL,KAAKse,IAAMC,EAAY,GACvBve,KAAKwe,KAAOD,EAAY,GAAK,IAAIA,EAAY,KAAO,EAAG,CAG3D,MAAMtB,GAAoB9c,EAAAA,EAAAA,IACtBC,IACIjB,GAEJE,GAGE6d,GAAwB/c,EAAAA,EAAAA,IAC1BC,IACIyc,EACA,iBACA,CACI,CAAC,kBAAkB7X,OAAWA,IAGtC3F,GAGJ,OACIL,EAAAA,cAAC6B,EAAG,CAAC1B,UAAW8d,EAAmBxb,KAAK,aAAY,aAAaub,GAC7Dhe,EAAAA,cAAC+d,EAAO,iBAAK9c,EAAK,CAAEd,UAAW+d,IAC1Bld,KAAKkf,sBAItB,CAEQC,aAAaC,GACjB,MAAMrB,EAAQ/d,KAAKC,MAAMge,aAAgBmB,EACnCtP,EAAOuP,OAAOvP,KAAK9P,KAAKoe,MAC9B,IAAIkB,EAASF,EAAO,EAAI,IAAIpf,KAAKC,MAAMye,OAAOX,IAAU,GAMxD,OAJAjO,EAAKyP,SAASzN,IACVwN,EAASA,EAAS,GAAGA,KAAUxN,KAAO9R,KAAKoe,KAAKtM,KAAS,IAAIA,KAAO9R,KAAKoe,KAAKtM,IAAM,IAGjF9R,KAAKse,IAAMgB,EAAStf,KAAKwe,IACpC,CAEQgB,yBAAyBlC,EAAemC,EAAkBtgB,GAC9D,MAAMmf,EAAMmB,OAAUle,EAAYvB,KAAKmf,aAAanf,KAAK6d,YAAcP,EAAO,GAAK,IAC7EoC,EAAYpC,EAAOtd,KAAKC,MAAM0f,OAAS3f,KAAKC,MAAM2f,OAClDC,EAAkBvC,EAAOtd,KAAKC,MAAM6f,kBAAoB9f,KAAKC,MAAM8f,kBACnE1e,EAAYic,EAAO,QAAU,OAC7Bhe,EAAMmgB,EAAU,OAAS,IAE/B,OACIzgB,EAAAA,cAACme,EAAAA,EAAc,CAACvY,SAAU6a,EAAStgB,UAAWA,GAC1CH,EAAAA,cAACqe,EAAAA,EAAc,CACXne,GAAIwgB,EACJxa,KAAMoZ,EACNhB,KAAMA,EACNC,UAAWD,EAAI,mBACGuC,EAClBvgB,IAAKA,EAAG,aACIge,EAAOtd,KAAKC,MAAM+e,cAAgBhf,KAAKC,MAAM8e,kBAAiB,gBAC3DU,EACf9c,iBAAkB3C,KAAKC,MAAM0C,kBAE5B2a,EAAOtd,KAAKC,MAAM6e,SAAW9e,KAAKC,MAAM4e,cAE5Ca,GACG1gB,EAAAA,cAACmC,EAAAA,oBAAmB,CAACE,UAAWA,EAAWnC,GAAI2gB,EAAiBze,OAAQse,GACnEpC,EAAO,OAAS,YAKrC,CAEQ0C,wBAAwBZ,GAC5B,MAAMva,EAAS7E,KAAK6d,aAAeuB,EAC7Bd,EAAMte,KAAKmf,aAAaC,GAG9B,OAFAA,GAAQ,EAGJpgB,EAAAA,cAACme,EAAAA,EAAc,CAACtY,OAAQA,GACpB7F,EAAAA,cAACqe,EAAAA,EAAc,CAACnY,KAAML,OAAStD,EAAY+c,EAAK3b,iBAAkB3C,KAAKC,MAAM0C,kBACxEyc,GAIjB,CAEQa,mBACJ,OACIjhB,EAAAA,cAACme,EAAAA,EAAc,KACXne,EAAAA,cAACqe,EAAAA,EAAc,CAAC/d,IAAI,QAAM,OAKtC,CAEQ4f,qBAEJ,IAAIgB,EAAelgB,KAAK6d,WACpBsC,EAAgBngB,KAAK8d,SAAW9d,KAAK6d,WAAa,EACtD,MAAMuC,EAAcpgB,KAAK8d,SAAWF,EAAuByC,gBAAkBH,EAAe,EACtFI,EAAetgB,KAAK8d,SAAWF,EAAuByC,gBAAkBF,EAAgB,EAE9FD,EAAe9b,KAAKC,IAAI6b,EANC,GAOzBC,EAAgB/b,KAAKC,IAAI8b,EAPA,GAQzB,MAAMI,EAAQ,GAERC,EAAuBN,GAVJ,EAUuCC,IAD1CC,GAAe,EAAI,GAEnCK,EAAgBrc,KAAKwF,IAAI5J,KAAK6d,WAAa2C,EAAsB,GACjEE,EAAWtc,KAAKC,IAAKoc,EAAgB,GAAKH,EAAe,EAAI,IAAMF,EAAc,EAAI,GACtFE,EAAetgB,KAAK8d,SAAW,EAAI9d,KAAK8d,UAEzCsC,IACAG,EAAMI,KAAK3gB,KAAKggB,wBAAwB,IACxCO,EAAMI,KAAK3gB,KAAKigB,qBAGpB,IAAK,IAAI/I,EAAIuJ,EAAevJ,EAAIwJ,EAAUxJ,IACtCqJ,EAAMI,KAAK3gB,KAAKggB,wBAAwB9I,IAQ5C,OALIoJ,IACAC,EAAMI,KAAK3gB,KAAKigB,oBAChBM,EAAMI,KAAK3gB,KAAKggB,wBAAwBhgB,KAAK8d,SAAW,KAIxD9e,EAAAA,cAAAA,EAAAA,SAAAA,KACMgB,KAAKwf,0BAAyB,EAA4B,IAApBxf,KAAK6d,WAAmB,YAC/D0C,EACCvgB,KAAKwf,0BAAyB,EAAOxf,KAAK6d,aAAe7d,KAAK8d,SAAW,EAAI,QAG3F,EAnOcF,EAAAA,aAAsD,CAChEte,IAAK,MACLwd,QAAS,KACT,aAAc,aACdiB,MAAO,EACPE,aAAc,GACdE,aAAc,GAGMP,EAAAA,eAAyB,C,+RCZtC,MAAMgD,UAAgB5hB,EAAAA,cAiBjC6C,YAAY5B,GACR6B,MAAM7B,GAHF,KAAA4gB,YAAsB,EAI1B7gB,KAAKC,MAAQA,EAEbD,KAAK8gB,QAAU,KACf9gB,KAAK+gB,iBAAmB/gB,KAAK+gB,iBAAiBxe,KAAKvC,MACnDA,KAAKghB,qBAAuBhhB,KAAKghB,qBAAqBze,KAAKvC,MAC3DA,KAAKihB,oBAAsBjhB,KAAKihB,oBAAoB1e,KAAKvC,MACzDA,KAAKkhB,OAASlhB,KAAKkhB,OAAO3e,KAAKvC,MAC/BA,KAAKwM,QAAUxM,KAAKwM,QAAQjK,KAAKvC,MACjCA,KAAKmhB,gBAAkBnhB,KAAKmhB,gBAAgB5e,KAAKvC,MACjDA,KAAKohB,iBAAmBphB,KAAKohB,iBAAiB7e,KAAKvC,MACnDA,KAAKqhB,SAAWrhB,KAAKqhB,SAAS9e,KAAKvC,MACnCA,KAAKshB,MAAQthB,KAAKshB,MAAM/e,KAAKvC,MAC7BA,KAAKuhB,MAAQvhB,KAAKuhB,MAAMhf,KAAKvC,MAC7BA,KAAKoB,OAAS,IAClB,CAEO0B,oBACH9C,KAAKoB,QAAS0K,EAAAA,EAAAA,IAAiB9L,KAAKC,MAAMmB,QAC1CpB,KAAKwhB,cACT,CAEOlb,qBACHtG,KAAKwhB,cACT,CAEOve,uBACHjD,KAAKihB,qBACT,CAEOC,OAAO/b,GACVnF,KAAK8gB,QAAU3b,CACnB,CAEOlG,SACH,IAAKe,KAAKC,MAAMR,OACZ,OAAO,KAGX,MAAM,EAgBFO,KAAKC,OAhBH,UACFZ,EAAS,OACTI,EAAM,OACN2B,EAAM,gBACNqgB,EAAe,UACfC,EAAS,UACTviB,EAAS,eACTwiB,EAAc,UACdC,EAAS,UACTvgB,EAAS,UACTua,EAAS,OACTiG,EAAM,OACNtiB,EAAM,kBACNuiB,EAAiB,KACjBrgB,GAEH,EADMW,GAAU,YAGXlC,GAAUC,EAAAA,EAAAA,IACZC,IACI,oBACAJ,KAAKC,MAAM0hB,gBAEf3hB,KAAKC,MAAMZ,WAGT0iB,GAAgB5hB,EAAAA,EAAAA,IAClBC,IACI,cACA,OACAJ,KAAKC,MAAMd,WAEfa,KAAKC,MAAMZ,WAGf,OACIL,EAAAA,cAACgjB,EAAAA,EAAa,CACV7iB,UAAW4iB,EACX3gB,OAAQA,EACR3B,OAAQA,EACRiiB,UAAWA,EACXrgB,UAAWA,EACXogB,gBAAiBA,EACjB7F,UAAWA,EACXgG,UAAWA,EACXK,SAAUjiB,KAAKohB,iBACfS,OAAQA,EACRC,kBAAmBA,GAEnB9iB,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CAAAA,EACQoD,EAAU,CAAEX,KAAMA,EAAMtC,UAAWe,EACvCiF,IAAKnF,KAAKkhB,UAG1B,CAEQM,eACAxhB,KAAKC,MAAMR,OACXO,KAAKshB,QAELthB,KAAKuhB,OAEb,CAEQD,QACJthB,KAAK6gB,YAAa,EAClB7gB,KAAK+gB,mBACA/gB,KAAKC,MAAMR,QACZO,KAAKwM,SAEb,CAEQ+U,QACJvhB,KAAKihB,sBACDjhB,KAAKC,MAAMR,QACXO,KAAKwM,SAEb,CAEQwU,qBAAqBjd,GACzB,IAAK/D,KAAKoB,OACN,OAGJ,MAAMA,EAAS2C,EAAE3C,OAEb2C,EAAE3C,SAAWpB,KAAKoB,QACjBpB,KAAKoB,OAAO2E,SAAS3E,IACtB2C,EAAE3C,SAAWpB,KAAK8gB,SAChB9gB,KAAK8gB,SAAW9gB,KAAK8gB,QAAQ/a,SAAS3E,IAEpCpB,KAAKC,MAAMR,QACXO,KAAKwM,SAGjB,CAEQuU,mBACC/gB,KAAKoB,QAGNiK,EAAAA,KACA,CAAC,QAAS,cAAckU,SAAS9U,IAC7BlH,SAASP,iBAAiByH,EAAOzK,KAAKghB,sBAAsB,EAAK,IAErEhhB,KAAKoB,OAAO4B,iBAAiB,WAAYhD,KAAKmhB,iBAAiB,GAC/DnhB,KAAKoB,OAAO4B,iBAAiB,UAAWhD,KAAKqhB,UAAU,GAE/D,CAEQJ,sBACCjhB,KAAKoB,QAGNiK,EAAAA,KACA,CAAC,QAAS,cAAckU,SAAS9U,IAC7BlH,SAASL,oBAAoBuH,EAAOzK,KAAKghB,sBAAsB,EAAK,IAExEhhB,KAAKoB,OAAO8B,oBAAoB,WAAYlD,KAAKmhB,iBAAiB,GAClEnhB,KAAKoB,OAAO8B,oBAAoB,UAAWlD,KAAKqhB,UAAU,GAElE,CAEQD,mBACJvW,YAAW,KACP,MAAMqX,EAAY3e,SAASmY,cACvB1b,KAAK8gB,UAAY9gB,KAAK8gB,QAAQ/a,SAASmc,IACvCliB,KAAKuhB,OAAQ,GAElB,EACP,CAEQJ,kBACAnhB,KAAK6gB,aACL7gB,KAAK6gB,YAAa,EAClBhW,YAAW,KACP,MAAMqX,EAAY3e,SAASmY,cACvB1b,KAAK8gB,UAAY9gB,KAAK8gB,QAAQ/a,SAASmc,IACvCliB,KAAKuhB,OAAQ,GAElB,GAEX,CAEQF,SAAStd,GACK,IAAdA,EAAEoY,QACFnc,KAAK6gB,YAAa,EACX7gB,KAAKC,MAAMR,QAAwB,KAAdsE,EAAEoY,SAAkBnc,KAAKC,MAAMV,QAC3DS,KAAKC,MAAMV,QAEnB,CAEQiN,UACAxM,KAAKC,MAAM2E,UAIX5E,KAAKC,MAAMV,QACXS,KAAKC,MAAMV,QAEnB,EAxNcqhB,EAAAA,aAAuC,CACjDnhB,QAAQ,EACR4B,UAAW,QACX9B,OAAQ,KACE,E,s8BCCH,MAAMyiB,UAAsBhjB,EAAAA,UAcvC6C,YAAY5B,GACR6B,MAAM7B,GAEND,KAAKmiB,uBAAyBniB,KAAKmiB,uBAAuB5f,KAAKvC,MAC/DA,KAAKmC,MAAQ,CAAE1C,OAAQQ,EAAMR,OACjC,CAEOqD,oBACH9C,KAAKwhB,cACT,CAEOlb,mBAAmB8b,GAClBpiB,KAAKC,MAAMR,SAAW2iB,EAAU3iB,QAChCO,KAAKwhB,cAEb,CAEOhb,sBAAsBD,EACzBE,GACA,OAAIzG,KAAKmC,QAAUsE,GAAazG,KAAKC,QAAUsG,CAInD,CAEOtH,SACH,OAAOe,KAAKC,MAAMR,OAASO,KAAKqiB,kBAAoB,IACxD,CAEQF,uBAAuBG,GAK3B,OAJItiB,KAAKmC,MAAMd,YAAcihB,EAAKjhB,WAC9BrB,KAAK6D,SAAS,CAAExC,UAAWihB,EAAKjhB,YAG7BihB,CACX,CAEQd,eACyB,WAAzBxhB,KAAKC,MAAM2b,YACP5b,KAAKC,MAAMR,OACXO,KAAKshB,QAELthB,KAAKuhB,QAGjB,CAEQA,QACJvhB,KAAK6D,SAAS,CAAEpE,QAAQ,GAC5B,CAEQ6hB,QACJthB,KAAK6D,SAAS,CAAEpE,QAAQ,GAC5B,CAEQ4iB,kBACJ,MAAM,EAiBFriB,KAAKC,OAjBH,UACFZ,EAAS,SACTK,EAAQ,OACRD,EAAM,KACN8iB,EAAI,OACJV,EAAM,OACNzgB,EAAM,kBACNohB,EAAiB,SACjBP,EAAQ,gBACRR,EACAgB,eAAgBC,EAAyB,UACzChB,EAAS,UACTviB,EAAS,IACTG,EAAG,UACHsiB,EAAS,kBACTE,GAEH,EADMa,GAAK,YAGNF,GAAiBtiB,EAAAA,EAAAA,IACnBC,IACI,YACAsiB,GAEJrjB,GAGEgC,GAAarB,KAAKmC,MAAMd,WAAashB,EAAMthB,WAAa,QAAQ4J,MAAM,KAAK,GAC3E2X,GAAkBziB,EAAAA,EAAAA,IACpBC,IACIjB,EACAsiB,EAAkB,GAAGA,KAAmBpgB,IAAcA,GAE1DrB,KAAKC,MAAMZ,WAGTwjB,E,qWAAiB,EACnBhB,OAAQ,CAAEA,UACVU,KAAM,CAAEO,QAASP,EAAMQ,SAAUP,GACjCQ,gBAAiB,CAAElB,qBACnBmB,OAAQ,CACJH,SAAS,EACTI,MAAO,IACPC,GAAInjB,KAAKmiB,yBAEVP,GAGD7V,GAAgBD,EAAAA,EAAAA,IAAiB1K,GACvC,OAAsB,OAAlB2K,EACO,KAIP/M,EAAAA,cAACokB,EAAAA,GAAW,iBACJT,EAAK,CACTf,UAAWiB,EACXzhB,OAAQ2K,EACRsX,UAAW/jB,EACXiW,OAAQ0M,EACR9iB,UAAWyjB,EAAe,cACb5iB,KAAKmC,MAAMd,WAAashB,EAAMthB,UAC3CC,MAAO,CAAEE,QAASxB,KAAKmC,MAAM1C,OAAS,QAAU,UAE/CC,GACCgiB,GAAa1iB,EAAAA,cAACskB,EAAAA,GAAK,CAACnkB,UAAWsjB,IAG7C,EAxIcT,EAAAA,aAA6C,CACvDF,kBAAmB,eACnBzgB,UAAW,OACXqgB,WAAW,EACXjiB,QAAQ,EACRoiB,OAAQ,EACRW,kBAAmB,OACnBD,MAAM,EACN3G,UAAW,OACXgG,UAAW,CAAC,E,yFCRb,MA6BP,EA7B8B2B,IAC1B,MAAM,mBAAEC,EAAkB,cAAEC,EAAa,UAAEtkB,EAAS,KAAE6C,EAAI,UAAE0hB,EAAS,aAAEC,GAAiBJ,EAElFK,EAAa5kB,EAAAA,aAAkB,KACjC2kB,GAAa,EAAM,GACpB,CAACA,IAEJ,OAAKF,GAAkBzhB,EAKnBhD,EAAAA,cAACkN,EAAAA,GAAK,CACF3M,OAAQqkB,EAAYnkB,OAAQikB,EAAWhK,SAAUkK,EACjDzkB,UAAW,GAAGA,aACdH,EAAAA,cAACud,EAAAA,GAAW,CAAChd,OAAQqkB,EAAYzkB,UAAW,GAAGA,sBAC/CH,EAAAA,cAACqd,EAAAA,GAAS,CAACld,UAAW0N,IAAW,GAAG1N,kBAA2B,GAAGA,oBAA4BqkB,MAC1FxkB,EAAAA,cAAAA,MAAAA,CAAKG,UAAW,GAAGA,qBACnBH,EAAAA,cAAAA,MAAAA,CAAKG,UAAW,GAAGA,6BACd6C,GAELhD,EAAAA,cAAC2F,EAAAA,OAAM,CAACxF,UAAW,GAAGA,oCAA6C+B,QAAS0iB,EAAY7V,MAAO0V,EAAcI,uBACxGJ,EAAcI,yBAdpB,IAiBC,C,6GCbT,MA+FP,EA/FsBN,IAA2B,MAC7C,MAAM,cAAEE,EAAa,UAAEtkB,EAAS,cAAE2kB,EAAa,aAAE7Q,EAAcqP,MAAM,QAAEyB,EAAO,MAAEC,GAAO,gBAAEC,EAAe,eAAEC,EAAc,cAAEC,EAAa,UAAET,EAAS,iBAAE/gB,EAAgB,aAAEghB,EAAY,QAAE3Q,GAAYuQ,EAC1LK,EAAa5kB,EAAAA,aAAkB,KACjC2kB,GAAa,EAAM,GACpB,CAACA,IACJ,IAAKF,IAAkBM,EACnB,OAAO,KAEX,MAAMthB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmBC,EAAAA,kBAAAA,kBACvDwhB,GAA4BvhB,EAAAA,EAAAA,wBAAuBF,EAAmBF,GAC5EA,EAAQwG,cAAcH,MAAQlG,EAAAA,kBAAAA,mBAC9B,MAAMyhB,GAAmBxhB,EAAAA,EAAAA,wBAAuBF,EAAmBF,GAE7D6hB,GAAmBC,EAAAA,EAAAA,qBAAoBR,EAAQS,OAAQxR,EAAQyR,cAAcxW,eAAeyW,aAC9FZ,IACAA,EAAca,iBAAkB,GAEpC,MAAMC,OAA+BrjB,IAApB0iB,EAAgCA,EAAkB,EAC7DY,EAA2B,IAAbD,EAAiBnB,EAAcqB,kBAAoBrB,EAAcsB,qBAAqB9c,QAAQ,MAAO2c,EAAStc,YAE5H0c,GAA+C,QAAlB,EAAAhS,EAAQiS,IAAIC,cAAM,aAAlB,EAAoBC,2BAA4E,SAAhDnS,EAAQiS,IAAIC,OAAOC,yBAEhGC,EAA4BrB,EAAQsB,WAAatB,EAAQsB,WAAWC,QACtE,CAACC,EAAKC,IACEA,EAAiBC,gBAAkBD,EAAiBC,eAAeC,MAC/DH,EACO,GAAGA,MAAQC,EAAiBC,eAAeC,QAG/C,GAAGF,EAAiBC,eAAeC,QAGvCH,GAEX,IAAM,GAEV,OACIvmB,EAAAA,cAACkN,EAAAA,GAAK,CACFzM,OAAQikB,EACRhK,SAAUkK,EACVzkB,UAAW,GAAGA,YACdI,OAAQqkB,GAER5kB,EAAAA,cAACud,EAAAA,GAAW,CAAChd,OAAQqkB,EAAYzkB,UAAW,GAAGA,qBAC3CH,EAAAA,cAAAA,OAAAA,KACK6lB,GAEL7lB,EAAAA,cAAAA,OAAAA,KACKykB,EAAckC,oBAGvB3mB,EAAAA,cAACqd,EAAAA,GAAS,CAACld,UAAW,GAAGA,mBACrBH,EAAAA,cAAC4mB,EAAAA,GAAK,CACF3X,eAAgB+E,EAAQyR,cAAcxW,eACtC9O,UAAW,GAAGA,mBACd0mB,IAAK9B,EAAQ+B,iBAAmB,GAChCC,YAAazB,EACb0B,QAASjC,EAAQkC,KACjBhT,aAAcA,GAAgB,CAAC,EAC/B6Q,cAAeA,EACfoC,oBAAoB,UAExBlnB,EAAAA,cAAAA,OAAAA,CAAMG,UAAW,GAAGA,4BACf4kB,EAAQkC,MAEU,KAAtBb,EAA2BpmB,EAAAA,cAAAA,MAAAA,CAAKG,UAAW,GAAGA,+BAC1CimB,GACI,GACRpB,EACGhlB,EAAAA,cAAAA,MAAAA,CAAKG,UAAW,GAAGA,4BACd+kB,GAEL,GACHH,EAAQoC,sBAAwBnB,EAC7BhmB,EAAAA,cAAAA,MAAAA,CAAKG,UAAW,GAAGA,oCACfH,EAAAA,cAAAA,OAAAA,KACK+kB,EAAQoC,uBAGjB,GACJnnB,EAAAA,cAAC2F,EAAAA,OAAM,eACHxF,UAAW,GAAGA,wBAAiC+F,KAAMif,EAAa,aAAcV,EAAc2C,cAC1F/B,GACHZ,EAAc2C,cAEnBpnB,EAAAA,cAAC2F,EAAAA,OAAM,eACHxF,UAAW,GAAGA,8BAAuC+B,QAAS0iB,EAAU,aAAcH,EAAc4C,sBAChGjC,GACHX,EAAc4C,uBAGnB,C,gEC7FJC,E,iEAAZ,SAAYA,GACRA,EAAAA,EAAAA,KAAAA,GAAAA,OACAA,EAAAA,EAAAA,QAAAA,GAAAA,SACH,CAHD,CAAYA,IAAAA,EAA6B,KAWzC,MAAMC,EAA4C,CAACC,EAA0CC,KACzF,OAAQD,GACJ,KAAKF,EAA8BI,KAC/B,OAAOD,EAAUE,wBACrB,KAAKL,EAA8BM,QAC/B,OAAOH,EAAUI,wBACrB,QACI,MAAM,IAAInb,MAAM,qFAAqF,EAU3Gob,EAAiB,CAACC,EAAuEP,IAA6C,KACxIO,EAAkBP,EAAU,EAgC1BQ,EAAuB,CAACC,EAAgEC,IAA4B,KACtHD,GAAiBC,EAAe,EAQvBC,EAA+ElnB,IACxF,MAAMmnB,EAAmBpoB,IAAAA,aAClBqoB,EAAgBC,GAAqBtoB,IAAAA,UAAe,IAEpDwnB,EAAWe,GAAgBvoB,IAAAA,SAAeiB,EAAMunB,cAMjDC,EAAgBC,IAClBH,EAAaG,GACbJ,GAAkB,GAClBrnB,EAAM0nB,eAAeD,EAAa,EAGtC,OACI1oB,IAAAA,cAAAA,MAAAA,CAAKG,UAAWc,EAAMd,WAClBH,IAAAA,cAAC2F,EAAAA,EAAM,CACHxF,UAAW,GAAGc,EAAMd,iCACpB8F,SAAUmiB,EAAgB,gBACXC,EAAc,mBACXpnB,EAAMd,UACxB+B,QAAS8lB,EAAqBM,EAAmBD,IAEhDd,EAA0CC,EAAWvmB,EAAMwmB,YAEhEznB,IAAAA,cAAC4hB,EAAAA,QAAO,CACJ1hB,GAAIe,EAAMd,UACVkC,UAAU,aACV5B,OAAQ4nB,EACRjmB,OAAQgmB,EACR7nB,OAAQynB,EAAqBM,EAAmBD,IAG5CO,EAAAA,eAAAA,cAA4DtB,GAA+Bpb,KAAI/I,GAjEvF,EACxBqkB,EACAC,EACAtnB,EACA4nB,KAEA,MAAMc,EAA4BvB,EAA8BE,GAEhE,OACIxnB,IAAAA,cAAAA,SAAAA,CAAQG,UAAW,GAAGA,YAAoB0oB,IAA6B3mB,QAAS4lB,EAAeC,EAAmBP,IAC7GD,EAA0CC,EAAWC,GACjD,EAuDcqB,CAAoB3lB,EAAOlC,EAAMwmB,UAAWxmB,EAAMd,UAAWsoB,MAI9E,ECnGP,MAAMM,UAAoB/oB,EAAAA,cAM7B6C,YAAmB5B,GACf6B,MAAM7B,GAsEO,KAAA+nB,kBAAoB,KACjChoB,KAAK6D,SAAS,CAAEokB,gBAAgB,GAAO,EAM1B,KAAAC,iBAAmB,KAChCloB,KAAK6D,SAAS,CAAEokB,gBAAgB,GAAQ,EAO3B,KAAAE,6BAAgCpX,IAGrC,IAAD,EAFHA,IAAauV,EAA8BI,KAC3C1mB,KAAKooB,cAAcpoB,KAAKC,MAAMooB,eAE9BroB,KAAK6D,SAAS,CAAEmM,kBAAczO,IACR,QAAtB,EAAAvB,KAAKsoB,UAAU5gB,eAAO,OAAtB,EAAwBsR,QAAQ,EAQvB,KAAAoP,cAAiBG,IAC9BvoB,KAAK6D,SAAS,CAAEmM,aAAcuY,IAE1BvoB,KAAKC,MAAMuoB,cACXxoB,KAAKC,MAAMuoB,aAAaD,EAAW,EAQ1B,KAAAnU,cAAiB3J,IAC9B,IAAIuF,EAAeE,OAAOuY,WAAWhe,EAAMrJ,OAAOiH,OAE9C6H,OAAOuD,MAAMzD,GACbhQ,KAAK6D,SAAS,CAAEmM,kBAAczO,KAIlCyO,GAAgBA,EAAa0Y,QAAQX,EAAYY,aAE5C/X,EAAAA,iBAAAA,kBAAmC5Q,KAAKC,MAAM2oB,eAAiB5Y,EAAehQ,KAAKC,MAAM2oB,aAC1F5oB,KAAKooB,cAAcpoB,KAAKC,MAAM2oB,eACtBhY,EAAAA,iBAAAA,kBAAmC5Q,KAAKC,MAAMooB,eAAiBrY,EAAehQ,KAAKC,MAAMooB,aACjGroB,KAAKooB,cAAcpoB,KAAKC,MAAMooB,cAE9BroB,KAAKooB,cAAcpY,GAAc,EA3HrChQ,KAAKsoB,UAAYtpB,EAAAA,YAEjB,IAAI6pB,EAAe5oB,EAAM6oB,eAEpBlY,EAAAA,iBAAAA,kBAAmC5Q,KAAKC,MAAM2oB,eAAiBC,EAAe7oB,KAAKC,MAAM2oB,aAC1FC,EAAe7oB,KAAKC,MAAM2oB,cAClBhY,EAAAA,iBAAAA,kBAAmC5Q,KAAKC,MAAMooB,eAAiBQ,EAAe7oB,KAAKC,MAAMooB,eACjGQ,EAAe7oB,KAAKC,MAAMooB,cAG9BroB,KAAKmC,MAAQ,CACT6N,aAAc6Y,EACdZ,gBAAgB,EAExB,CAEOhpB,SAAM,UACT,MAAM8pB,EAAqB,mBAErBC,GAAoBpY,EAAAA,iBAAAA,kBAAmC5Q,KAAKC,MAAMooB,cAExE,IAAIY,EAAO3C,EAA8BM,QAEpChW,EAAAA,iBAAAA,kBAAmC5Q,KAAKC,MAAMooB,eAAiBroB,KAAKmC,MAAM6N,eAAiBhQ,KAAKC,MAAMooB,eACvGY,EAAO3C,EAA8BI,MAGzC,MAAMwC,EAAyE,QAA3D,EAA0B,QAA1B,EAAGlpB,KAAKmC,MAAM6N,oBAAY,aAAvB,EAAyB0Y,QAAQX,EAAYY,mBAAW,QAAI,GAC7EQ,EAAqC,QAA1B,EAAGnpB,KAAKmC,MAAM6N,oBAAY,QAAI,GAE/C,OACIhR,EAAAA,cAAAA,MAAAA,CAAKG,UAAW0N,IAAW7M,KAAKC,MAAMd,UAAW4pB,IAC7C/pB,EAAAA,cAAAA,QAAAA,CACIG,UAAW0N,IAAW,GAAG7M,KAAKC,MAAMd,mBAAoB,2BACxD6B,KAAK,SACLqD,IAAKrE,KAAKC,MAAM2oB,aAChBhf,IAAK5J,KAAKC,MAAMooB,aAChB/S,QAAQ,yBACRjN,MAAOrI,KAAKmC,MAAM8lB,eAAiBkB,EAAcD,EACjDjX,SAAUjS,KAAKoU,cAAa,YAClB,SAAQ,aACN,GAAGpU,KAAKC,MAAMwmB,UAAU2C,4BACpC3nB,KAAK,aAAY,gBACFzB,KAAKC,MAAM2oB,aAAY,gBACvB5oB,KAAKC,MAAMooB,aAAY,gBACvBroB,KAAKmC,MAAM6N,aAC1BqZ,QAASrpB,KAAKgoB,kBACdzS,OAAQvV,KAAKkoB,iBACb/iB,IAAKnF,KAAKsoB,YAGVU,GAAoBhqB,EAAAA,cAAAA,MAAAA,CAAKG,UAAW0N,IAAW,GAAG7M,KAAKC,MAAMd,qBAAsB,8BAC/EH,EAAAA,cAACmoB,EAAiC,CAC9BrV,IAAKmX,EACL9pB,UAAW,GAAGa,KAAKC,MAAMd,kDACzBqoB,aAAcyB,EACdxC,UAAWzmB,KAAKC,MAAMwmB,UACtBkB,eAAgB3nB,KAAKmoB,gCAM7C,EAtEwBJ,EAAAA,WAAa,C,yEC9BlC,MAAMuB,EAAsCrpB,IAC/C,MAAM,GAAEf,EAAE,UAAEC,EAAS,IAAEyK,EAAG,IAAEvF,EAAG,MAAEgE,EAAK,UAAEtI,GAAcE,EAChDspB,EAAUnlB,KAAKwF,IAAI,EAAGxF,KAAKC,IAAY,IAARgE,EAAcuB,EAAK,MAClDtI,EAAQ,CAAEkoB,MAAO,GAAGD,MAE1B,OACIvqB,EAAAA,cAAAA,MAAAA,CAAKG,UAAWsqB,IAAU,eAAgBtqB,GAAU,YAAaoqB,EAAU,KACvEvqB,EAAAA,cAAAA,MAAAA,CACIG,UAAU,oBAAoBmC,MAAOA,EAAOpC,GAAIA,EAChDuC,KAAK,cAAa,gBAAgBmI,EAAG,gBAAiBvB,EAAK,gBAC5ChE,EAAG,aAActE,EAAS,YAAawpB,EAAU,MAClE,EAKdD,EAAShV,aAAe,CACpB,gBAAiB,IACjB,gBAAiB,GAGrB,S,sFCnBe,MAAMoV,UAAiB1qB,EAAAA,cAOlC6C,YAAY5B,GAAqB,MAC7B6B,MAAM7B,GAHO,KAAAyS,SAA8C1T,EAAAA,YAqE9C,KAAA8U,aAAe,KAC5B,MAAM6V,OAA8BpoB,IAAnBvB,KAAKC,MAAMoE,IAAoB,EAAIrE,KAAKC,MAAMoE,IAC3DoP,MAAMzT,KAAKmC,MAAMuR,eAAkB1T,KAAKmC,MAAMuR,aAAeiW,EAC7D3pB,KAAK6D,SAAS,CAAE6P,aAAciW,IAAY,KACtC3pB,KAAKC,MAAMgS,UAAYjS,KAAKC,MAAMgS,SAASjS,KAAKmC,MAAMuR,aAAa,IAGvE1T,KAAKC,MAAMgS,UAAYjS,KAAKC,MAAMgS,SAASjS,KAAKmC,MAAMuR,aAAc,EAxExE1T,KAAKmC,MAAQ,CAAEuR,aAAgC,QAApB,EAAEzT,EAAM+T,oBAAY,QAAI,GACnDhU,KAAKoU,cAAgBpU,KAAKoU,cAAc7R,KAAKvC,KACjD,CAEOf,SACH,MAAM+Q,EAAehQ,KAAKmC,MAAMuR,aAEhC,OACI1U,EAAAA,cAAAA,QAAAA,CACIgC,KAAK,SACLqD,IAAKrE,KAAKC,MAAMoE,IAChBlF,UAAU,qBACVmW,QAAQ,SACRjN,MAAOrI,KAAKmC,MAAMuR,aAClBzB,SAAUjS,KAAKoU,cACfmB,OAAQvV,KAAK8T,aAAY,YACf,SAAQ,aACN,GAAG9T,KAAKC,MAAMiV,yBAC1BzT,KAAK,aAAY,gBACFzB,KAAKC,MAAMoE,IAAG,gBACdrE,KAAKC,MAAM2J,IAAG,gBACdoG,EACf9Q,GAAIc,KAAKC,MAAMf,GACfiG,IAAKnF,KAAK0S,UAGtB,CAEQ0B,cAAcrQ,GAClB,MAAMiM,EAAeE,OAAOQ,SAAU3M,EAAE3C,OAAOiH,MAAQ,IACjDshB,OAA8BpoB,IAAnBvB,KAAKC,MAAMoE,IAAoB,EAAIrE,KAAKC,MAAMoE,IACzDsP,EAAe3T,KAAK0S,UAAY1S,KAAK0S,SAAShL,SAAW1H,KAAK0S,SAAShL,mBAAmBkM,kBAAoB5T,KAAK0S,SAAShL,QAE9HsI,EAAehQ,KAAKC,MAAM2J,IAC1B5J,KAAK6D,SACD,CAAE6P,aAAc1T,KAAKC,MAAM2J,MAC3B,KACIggB,KACI,KACI5pB,KAAKC,MAAMgS,UAAYjS,KAAKC,MAAMgS,SAASjS,KAAKmC,MAAMuR,aAAa,GAEvE,IAJJkW,EAIU,IAIlB5pB,KAAK6D,SACD,CAAE6P,aAAc1D,IAChB,KACI4Z,KACI,KACSnW,MAAMzT,KAAKmC,MAAMuR,eAAmB1T,KAAKmC,MAAMuR,aAAeiW,IAC/D3pB,KAAKC,MAAMgS,UAAYjS,KAAKC,MAAMgS,SAASjS,KAAKmC,MAAMuR,cAElDC,IACAA,EAAaE,aAAa,gBAAiB7D,EAAa1H,YACxDqL,EAAaE,aAAa,QAAS7D,EAAa1H,aAAW,GAIvE,IAXJshB,EAWU,GAI1B,EAvEcF,EAAAA,aAAwC,CAClDrlB,IAAK,E,oXCDE,MAAMwlB,UAA4B7qB,EAAAA,cAqC7C6C,YAAY5B,GACR6B,MAAM7B,GAzBF,KAAA6pB,aAAuB,EAEvB,KAAAC,UAAoB,EAEpB,KAAAC,SAAmB,EAgBV,KAAAC,iBAA2B,OAE3B,KAAAC,iBAA2B,OA0R3B,KAAAC,WAAa,KAC1BnqB,KAAKoqB,oBAAoB,EAvRzBpqB,KAAKqqB,WAAarqB,KAAKqqB,WAAW9nB,KAAKvC,MACvCA,KAAKsqB,eAAiBtqB,KAAKsqB,eAAe/nB,KAAKvC,MAC/CA,KAAKuqB,kBAAoBvqB,KAAKuqB,kBAAkBhoB,KAAKvC,MACrDA,KAAKwqB,gBAAkBxqB,KAAKwqB,gBAAgBjoB,KAAKvC,MACjDA,KAAKyqB,SAAWzqB,KAAKyqB,SAASloB,KAAKvC,MACnCA,KAAKmqB,WAAanqB,KAAKmqB,WAAW5nB,KAAKvC,MACvCA,KAAKmC,MAAQ,CAAEuoB,cAAc,EAAOC,UAAU,EAAO9I,OAAQ,GAC7D7hB,KAAKmF,IAAMnG,EAAAA,YACXgB,KAAK4qB,SAAW5rB,EAAAA,YAChBgB,KAAK6qB,QAAU7rB,EAAAA,YACfgB,KAAK8qB,UAAY,OACjB9qB,KAAKd,GAAKe,EAAM8qB,UAAY,GAC5B/qB,KAAKgrB,qBAAsDzpB,IAApCvB,KAAKC,MAAMgrB,qBAAqCjrB,KAAKC,MAAMgrB,qBAAuB,GAC7G,CAEO3kB,qBACHtG,KAAKkrB,SAAWlrB,KAAKmF,IAAIuC,QACzB1H,KAAKmrB,MAAQnrB,KAAK4qB,SAASljB,QAC3B1H,KAAKorB,KAAOprB,KAAK6qB,QAAQnjB,QACzB1H,KAAKqrB,YACLrrB,KAAKsrB,gBAAgBtrB,KAAKmC,MAAM0f,OACpC,CAEO/e,oBACH9C,KAAK8qB,UAAY9qB,KAAKC,MAAMsrB,SAAW,MAAQ,OAC/CvrB,KAAKkrB,SAAWlrB,KAAKmF,IAAIuC,QACzB1H,KAAKmrB,MAAQnrB,KAAK4qB,SAASljB,QAC3B1H,KAAKorB,KAAOprB,KAAK6qB,QAAQnjB,QACzB1H,KAAKqrB,YACLrrB,KAAKwrB,4BACDzoB,SAAU+H,EAAAA,EAAAA,IAAkB/H,OAAQ,SAAU/C,KAAKmqB,YACvDnqB,KAAKsrB,gBAAgB,EACzB,CAEOroB,uBACHF,QAAUA,OAAOG,oBAAoB,SAAUlD,KAAKwrB,6BAA8B,EACtF,CAEOvsB,SACH,MAAMwsB,GAA0C,IAAxBzrB,KAAKC,MAAMsrB,SAC7BG,EAAqB,CAAC,EACtBC,EAAmB3rB,KAAK4rB,mBAAmBH,GACjDC,EAAmB1rB,KAAK8qB,WAAa,GAAG9qB,KAAKmC,MAAM0f,WACnD,MAAMgK,EAAiBJ,EAAU,uBAAyB,kBACpDK,EAAsBL,EAAU,6BAA+B,wBAC/DM,EAAiBN,EAAU,6BAA+B,wBAC1DO,EAAwBP,EAAU,iBAAmB,mBACrDQ,EAAoBR,EAAU,mBAAqB,oBACnDS,EAA4BT,EAAU,gCAAkC,2BACxEU,EAAwBV,EAAU,oEAAsE,0DACxGW,EAAoBpsB,KAAKmC,MAAMuoB,cAAiB1qB,KAAKmC,MAAMwoB,SAAwB,KAAb,WAC5E,OACI3rB,EAAAA,cAAAA,MAAAA,CACIG,UAAW0sB,EACXQ,aAAcrsB,KAAKuqB,kBACnB+B,WAAYtsB,KAAKwqB,iBAEjBxrB,EAAAA,cAACiQ,EAAAA,EAAO,CACJ/P,GAAI,yBAAyBc,KAAKd,KAClCiQ,WAAY,CAAEhQ,UAAW6sB,GACzB9qB,QAASlB,KAAKsqB,eACdnrB,UAAYa,KAAKmC,MAAMuoB,aAAmE,GAAGwB,IAAvD,GAAGA,KAA4BE,IAAkD,eACzGpsB,KAAKmC,MAAMuoB,aAAY,aACzB1qB,KAAKC,MAAMiqB,iBACvBtlB,UAAW5E,KAAKmC,MAAMuoB,aACtBtb,kBAAmBpP,KAAKC,MAAMiqB,kBAAoBlqB,KAAKC,MAAMiqB,iBAAiB9hB,OAAS,GACvFzF,iBAAkB3C,KAAKC,MAAM0C,iBAC7BuM,eAAgBlP,KAAKkqB,mBAEzBlrB,EAAAA,cAACiQ,EAAAA,EAAO,CACJ/P,GAAI,qBAAqBc,KAAKd,KAC9BiQ,WAAY,CAAEhQ,UAAW8sB,GACzB/qB,QAASlB,KAAKqqB,WACdlrB,UAAYa,KAAKmC,MAAMwoB,SAA2D,GAAGwB,IAAnD,GAAGA,KAAwBC,IAA8C,eAC7FpsB,KAAKmC,MAAMwoB,SAAQ,aACrB3qB,KAAKC,MAAMgqB,iBACvBrlB,UAAW5E,KAAKmC,MAAMwoB,SACtBvb,kBAAmBpP,KAAKC,MAAMgqB,kBAAoBjqB,KAAKC,MAAMgqB,iBAAiB7hB,OAAS,GACvFzF,iBAAkB3C,KAAKC,MAAM0C,iBAC7BuM,eAAgBlP,KAAKiqB,mBAEzBjrB,EAAAA,cAAAA,MAAAA,CAAKmG,IAAKnF,KAAKmF,IAAKhG,UAAW,GAAG4sB,KAC9B/sB,EAAAA,cAAAA,KAAAA,CACIG,UAAW2sB,EAAoBxqB,MAAOoqB,EAAoBvmB,IAAKnF,KAAK4qB,SACpEnpB,KAAMzB,KAAKC,MAAMssB,WAAa,UAAY,QACzCZ,IAKrB,CAEQC,mBAAmBH,GACvB,OAAOzsB,EAAAA,SAAAA,IAAmBgB,KAAKC,MAAMP,UAAU,CAAC8sB,EAAwBrkB,KACpE,MAAMskB,EAAaD,EACnB,OAAc,IAAVrkB,EACOnJ,EAAAA,aAAmBytB,EAAW,CACjCttB,UAAW,GAAGssB,EAAS5B,EAAoB6C,sBAAwB7C,EAAoB8C,iBAAiBF,EAAUxsB,MAAMd,YAGxHgG,IAAKnF,KAAK6qB,QACVxB,QAASrpB,KAAKyqB,WAGfzrB,EAAAA,aAAmBytB,EAAW,CACjCttB,UAAW,GAAGssB,EAAS5B,EAAoB6C,sBAAwB7C,EAAoB8C,iBAAiBF,EAAUxsB,MAAMd,YAGxHkqB,QAASrpB,KAAKyqB,UAChB,GAEV,CAEQJ,aACJrqB,KAAK4sB,kBAAiB,EAC1B,CAEQtC,iBACJtqB,KAAK4sB,kBAAiB,EAC1B,CAEQrC,kBAAkBsC,GACK,IAAvBA,EAAIC,QAAQ1kB,OACZpI,KAAK+sB,iBAAcxrB,EAEnBvB,KAAK+sB,aAAsC,IAAxB/sB,KAAKC,MAAMsrB,SAAoBsB,EAAIC,QAAQ,GAAGE,QAAUH,EAAIC,QAAQ,GAAGG,OAElG,CAEQzC,gBAAgBqC,GACpB,GAAIA,EAAIK,eAAe9kB,OAAS,QAA0B7G,IAArBvB,KAAK+sB,YAA2B,CACjE,MAEMI,IAF4C,IAAxBntB,KAAKC,MAAMsrB,SAAoBsB,EAAIK,eAAe,GAAGF,QAAUH,EAAIK,eAAe,GAAGD,SAErFjtB,KAAK+sB,YAE3BI,EAAQntB,KAAKgrB,iBACbhrB,KAAKsqB,iBAGL6C,GAASntB,KAAKgrB,iBACdhrB,KAAKqqB,YAAY,CAIzBrqB,KAAK+sB,iBAAcxrB,CAGvB,CAEQqrB,iBAAiBtP,GACrB,IAAI8P,EAAgBld,OAAOQ,UAASzG,EAAAA,EAAAA,IAAOjK,KAAKmrB,MAAQnrB,KAAK8qB,WAAY,IACzE,MAAMhB,EAAe9pB,KAAK8pB,aAC1B,IAAIuD,EAAiBjpB,KAAK8Z,MAAM4L,EAAgB9pB,KAAKgqB,UACrD,MAAMsD,EAAoBhQ,GAAQ,EAAI,EACtC8P,EAAiB3Z,MAAM2Z,IAA2C,iBAAlBA,EAA6C,EAAhBA,EAEtD,IAAnBC,IACAA,EAAiB,GAGrBA,EAAiBvD,EAAgB9pB,KAAKgqB,UAAc,EAAIqD,EAAiB,EAAIA,EAC7EA,EAAiBjpB,KAAKwF,IAAIyjB,EAAgB,GAC1C,MAAME,EAAoBF,EAAkBrtB,KAAKgqB,SACjD,IAAIwD,EAAiBlQ,EAAOtd,KAAK+pB,UAAYD,EAAesD,EAAgBhpB,KAAKqpB,IAAIL,GACrFI,EAAiBppB,KAAKwF,IAAI,EAAG4jB,GAE7B,MAAM3L,EACF0L,GAAqBC,EAAiBD,EAAoBD,EAAoBF,EAAgBI,EAAiBF,EAAoBF,EAEvIptB,KAAKsrB,gBAAgBzJ,EACzB,CAEQwJ,YACJ,MAAMD,EAAOprB,KAAKorB,KAEdprB,KAAKgqB,SADLoB,EACgBprB,KAAKC,MAAMsrB,SAAWH,EAAK3mB,aAAe2mB,EAAKsC,YAE/C,EAGpB1tB,KAAK8pB,aAAe9pB,KAAK2tB,yBACzB3tB,KAAK+pB,UAAY/pB,KAAKmrB,MAASnrB,KAAKC,MAAMsrB,SAAWvrB,KAAKmrB,MAAM1mB,aAAezE,KAAKmrB,MAAMuC,YAAe,CAC7G,CAEQC,yBACJ,IAAK3tB,KAAKkrB,SACN,OAAO,EAGX,MAAM0C,EAAgBxjB,iBAAiBpK,KAAKkrB,UAEtC2C,EAAU7tB,KAAKC,MAAMsrB,SAAWrb,OAAOuY,WAAWmF,EAAcE,YAAc,IAAM5d,OAAOuY,WAAWmF,EAAcG,eAAiB,IAAM7d,OAAOuY,WAAWmF,EAAcI,aAAe,IAAM9d,OAAOuY,WAAWmF,EAAcK,cAAgB,IAEtP,OAAOjuB,KAAKC,MAAMsrB,SAAWvrB,KAAKkrB,SAAS3mB,aAAespB,EAAU7tB,KAAKkrB,SAASlQ,YAAc6S,CACpG,CAEQK,mBAAmBrM,GACvB,OAAQpO,MAAMoO,IAAsB,IAAXA,CAC7B,CAEQsM,eAAetM,GACnB,QAAI7hB,KAAK8pB,aAAe1lB,KAAKqpB,IAAI5L,IAAW7hB,KAAK+pB,UAKrD,CAEQuB,gBAAgBzJ,GACpB7hB,KAAK6D,SAAS,CACV6mB,aAAc1qB,KAAKkuB,mBAAmBrM,GACtC8I,SAAU3qB,KAAKmuB,eAAetM,GAC9BA,UAER,CAEQuM,oBAAoBhD,GACxB,MAAMtB,EAAe9pB,KAAK8pB,aAC1B,IAAIjI,EAAU7hB,KAAKC,MAAMsrB,SAAYH,EAAKiD,UAAYjD,EAAKkD,WACvDC,GAAe,EAEnB,MAAMpT,EAAOjL,OAAOQ,UAASzG,EAAAA,EAAAA,IAAOjK,KAAKmrB,MAAQ,QAAS,KAAO,EAC3DlQ,EAAM/K,OAAOQ,UAASzG,EAAAA,EAAAA,IAAOjK,KAAKmrB,MAAQ,OAAQ,KAAO,EAE3DnrB,KAAKC,MAAMsrB,SACPtQ,EAAM,IAAMA,EAAM4G,GACH,IAAXA,IACAA,EAAmB,EAATA,GAEd0M,GAAe,GACRtT,EAAM4G,EAASiI,EAAe9pB,KAAKgqB,WAC1CnI,EAASiI,EAAe9pB,KAAKgqB,SAAWnI,EAAS,EACjD0M,GAAe,GAEO,SAAnBvuB,KAAK8qB,YACR3P,EAAO,IAAMA,EAAO0G,GACL,IAAXA,IACAA,EAAmB,EAATA,GAEd0M,GAAe,GACRpT,EAAO0G,EAASiI,EAAe9pB,KAAKgqB,WAC3CnI,EAASiI,EAAe9pB,KAAKgqB,SAAWnI,EAAS,GACjD0M,GAAe,IAInBA,IACAvuB,KAAKsrB,gBAAgBzJ,GAEjB7hB,KAAKC,MAAMsrB,SACX1gB,YAAW,KACN7K,KAAKmrB,MAAetlB,cAAepC,UAAY,CAAC,GAClD,GAEHoH,YAAW,KACN7K,KAAKmrB,MAAetlB,cAAe2oB,WAAa,CAAC,GACnD,GAGf,CAEQ/D,SAAShgB,GACb,MAAMrJ,EAASqJ,EAAM+D,cACrBxO,KAAKouB,oBAAoBhtB,EAC7B,CAEQgpB,qBACJpqB,KAAKqrB,YACL,IAAIxJ,EAAS3R,OAAOQ,UAASzG,EAAAA,EAAAA,IAAOjK,KAAKmrB,MAAQnrB,KAAK8qB,WAAY,KAG7DrX,MAAMoO,IAAWA,EAAS,GAAK7hB,KAAK+pB,UAAYlI,EAAS7hB,KAAK8pB,eAC/DjI,EAASzd,KAAKC,IAAI,EAAGrE,KAAK8pB,aAAe9pB,KAAK+pB,YAGlD/pB,KAAKsrB,gBAAgBzJ,EACzB,EA1TwBgI,EAAAA,cAAwB,uBAExBA,EAAAA,sBAAgC,2B,iJCT7C,MAAM4E,UAAoBzvB,EAAAA,cAAzC6C,cAAAA,SAAAA,WASW,KAAA6sB,gBAAmD1vB,EAAAA,WA8B9D,CA5BWC,SACH,MAAM0vB,EAAuB,iBACvBC,EAAmB5uB,KAAKC,MAAM4uB,gBAAkB,kBAA2B7uB,KAAKC,MAAM4uB,kBAAoBF,EAEhH,OACI3vB,EAAAA,cAAAA,EAAAA,SAAAA,KACIA,EAAAA,cAAAA,MAAAA,CACIyC,KAAK,QACLvC,GAAIc,KAAKC,MAAMf,GACfiG,IAAKnF,KAAK0uB,gBACVtU,YAAapa,KAAKC,MAAM6uB,YACxBC,UAAW/uB,KAAKC,MAAM+uB,UACtBC,YAAajvB,KAAKC,MAAMivB,WACxB5C,WAAYtsB,KAAKC,MAAM+uB,UACvB1U,UAAWta,KAAKC,MAAMkvB,cACtB9F,QAASrpB,KAAKC,MAAMmvB,YACpB7Z,OAAQvV,KAAKC,MAAMovB,WACnB/tB,MAAOtB,KAAKC,MAAMqB,MAClBnC,UAAWyvB,EAAgB,aACf5uB,KAAKC,MAAMF,YAEzBC,KAAKC,MAAMqvB,aACTtwB,EAAAA,cAACmC,EAAAA,oBAAmB,CAACE,UAAWrB,KAAKC,MAAMsvB,QAASluB,UAAWD,OAAQpB,KAAK0uB,iBACvE1uB,KAAKC,MAAMuvB,kBAAoBxvB,KAAKC,MAAMuvB,kBAAkBxvB,KAAKC,MAAMwvB,aAAgBzvB,KAAKC,MAAMwvB,YAAannB,YAIpI,E,qkBApCcmmB,EAAAA,aAA2C,CACrDa,aAAa,EACbC,QAAS,CACLluB,UAAW,QCIvB,MAAMquB,EAAe,CACjBC,WAAY,CACRC,UAAW,QACX9E,UAAW,OACX+E,WAAY,KAEhBtE,SAAU,CACNqE,UAAW,SACX9E,UAAW,MACX+E,WAAY,MAUpB,IAAKC,GAAL,SAAKA,GACDA,EAAAA,EAAAA,MAAAA,GAAAA,QACAA,EAAAA,EAAAA,IAAAA,GAAAA,MACAA,EAAAA,EAAAA,OAAAA,GAAAA,QACH,CAJD,CAAKA,IAAAA,EAAS,KAaC,MAAMC,UAAe/wB,EAAAA,UAkChC6C,YAAY5B,GACR6B,MAAM7B,GApBO,KAAAkF,IAAuCnG,EAAAA,YAEvC,KAAAgxB,UAA0ChxB,EAAAA,YAE1C,KAAAixB,UAA0CjxB,EAAAA,YA+H1C,KAAAkxB,cAAiBC,GAE1BnxB,EAAAA,cAAAA,MAAAA,CAAKG,UAAU,sBACVgxB,EAAOjlB,KAAK8R,GAELhe,EAAAA,cAAAA,MAAAA,CAAK8S,IAAKkL,EAAMoT,QAAS3uB,KAAK,eAAetC,UAAW,uBAAuB6d,EAAMqT,oBAChFrT,EAAMsT,gBAQd,KAAAC,oBAAuBC,IAEpC,MAUM5d,GAAgBC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAAA,QAAqBC,QAV/C,CACZC,aAAc,CACVC,GAAI,CAAEC,EAAG,KACTC,GAAI,CAAED,EAAG,KACTE,GAAI,CAAEF,EAAG,MACTG,GAAI,CAAEH,EAAG,MACTI,GAAI,CAAEJ,EAAG,UAKXR,EAAiC,OAAlBC,GAA4C,OAAlBA,EAEzC6d,GAAqB3oB,EAAAA,EAAAA,QAAO,UAAW9H,KAAKC,MAAMywB,aAAa,GAAG3wB,UAAWC,KAAKmC,MAAMuuB,aAAa,GAAGroB,OAExGsoB,EAAqB3wB,KAAK4wB,eAAgB9oB,EAAAA,EAAAA,QAAO,UAAW9H,KAAKC,MAAMywB,aAAa,GAAG3wB,UAAWC,KAAKmC,MAAMuuB,aAAa,GAAGroB,OAAS,GAC5I,OACIrJ,EAAAA,cAAAA,EAAAA,SAAAA,KACIA,EAAAA,cAAAA,QAAAA,CACIgC,KAAK,QACL9B,GAAI,GAAGc,KAAKC,MAAMywB,aAAa,GAAGxxB,UAClCC,UAAU,+BACVkF,IAAKrE,KAAKC,MAAMoE,IAChBuF,IAAK5J,KAAK4wB,cAAgB5wB,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAAQrI,KAAKC,MAAM4wB,KAAO7wB,KAAKC,MAAM2J,IAC1FvB,MAAOrI,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAClC5G,KAAK,SAAQ,YACH,SAAQ,gBACHzB,KAAKC,MAAMoE,IAAG,gBACdrE,KAAK4wB,cAAgB5wB,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAAQrI,KAAKC,MAAM4wB,KAAO7wB,KAAKC,MAAM2J,IAAG,aAC3F+I,EAAe8d,EAAqBzwB,KAAKC,MAAMywB,aAAa,GAAG3wB,UAAS,mBAClEC,KAAKC,MAAM6wB,YAC7B7e,SAAUjS,KAAK+wB,gBACfxb,OAAQvV,KAAKC,MAAMsV,OACnBlT,SAAU,EACVf,MAAOkvB,EAAY,GAAE,gBACN7d,OAAepR,EAAYvB,KAAKmC,MAAMuuB,aAAa,GAAGroB,QAEzErJ,EAAAA,cAACyvB,EAAW,CACRvvB,GAAIc,KAAKC,MAAMywB,aAAa,GAAGxxB,GAC/BiG,IAAKnF,KAAKgwB,UACVlB,YAAa9uB,KAAKgxB,aAClB9B,WAAYlvB,KAAKixB,YACjBjC,UAAWhvB,KAAKkxB,WAChB9B,YAAapvB,KAAKC,MAAMopB,QACxBgG,WAAYrvB,KAAKC,MAAMsV,OACvBia,kBAAmBxvB,KAAKC,MAAMuvB,kBAC9BF,YAAatvB,KAAKC,MAAMqvB,YACxBhuB,MAAOkvB,EAAY,GACnB3B,gBAAiB7uB,KAAKC,MAAM4uB,gBAC5BY,YAAazvB,KAAKmC,MAAMuuB,aAAa,GAAGroB,MACxCtI,UAAW4S,EAAe8d,EAAqBzwB,KAAKC,MAAMywB,aAAa,GAAG3wB,YAE7E,IACAC,KAAK4wB,eACF5xB,EAAAA,cAAAA,EAAAA,SAAAA,KACIA,EAAAA,cAAAA,QAAAA,CACIgC,KAAK,QACL9B,GAAI,GAAGc,KAAKC,MAAMywB,aAAa,GAAGxxB,UAClCC,UAAU,+BACVkF,IAAKrE,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAAQrI,KAAKC,MAAM4wB,KACnDjnB,IAAK5J,KAAKC,MAAM2J,IAChBvB,MAAOrI,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAClC5G,KAAK,SAAQ,YACH,SAAQ,gBACHzB,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAAQrI,KAAKC,MAAM4wB,KAAI,gBAClD7wB,KAAKC,MAAM2J,IAAG,aACjB+I,EAAege,EAAqB3wB,KAAKC,MAAMywB,aAAa,GAAG3wB,UAAS,mBAClEC,KAAKC,MAAM6wB,YAC7B7e,SAAUjS,KAAK+wB,gBACfxb,OAAQvV,KAAKC,MAAMsV,OACnB8T,QAASrpB,KAAKC,MAAMopB,QACpBhnB,SAAU,EACVf,MAAOkvB,EAAY,GAAE,gBACN7d,OAAepR,EAAYvB,KAAKmC,MAAMuuB,aAAa,GAAGroB,QAEzErJ,EAAAA,cAACyvB,EAAW,CACRvvB,GAAIc,KAAKC,MAAMywB,aAAa,GAAGxxB,GAC/BiG,IAAKnF,KAAKiwB,UACVR,YAAazvB,KAAKmC,MAAMuuB,aAAa,GAAGroB,MACxCymB,YAAa9uB,KAAKgxB,aAClB9B,WAAYlvB,KAAKixB,YACjBjC,UAAWhvB,KAAKkxB,WAChB9B,YAAapvB,KAAKC,MAAMopB,QACxBgG,WAAYrvB,KAAKC,MAAMsV,OACvBia,kBAAmBxvB,KAAKC,MAAMuvB,kBAC9BF,YAAatvB,KAAKC,MAAMqvB,YACxBhuB,MAAOkvB,EAAY,GACnB3B,gBAAiB7uB,KAAKC,MAAM4uB,gBAC5BsC,cAAenxB,KAAKC,MAAMywB,aAAa,GAAGS,cAC1CpxB,UAAW4S,EAAege,EAAqB3wB,KAAKC,MAAMywB,aAAa,GAAG3wB,aAIvF,EAIM,KAAAqxB,cAAgB,KAC7B,MAAM,YAAEN,GAAgB9wB,KAAKC,MACvBoxB,GAAexnB,EAAAA,EAAAA,IAAqB6lB,EAAaoB,GAAalB,WAG9D0B,EAAYtxB,KAAKmF,IAAIuC,QAAS,SAAS2pB,KACvCE,EAAYvxB,KAAKgwB,UAAUtoB,QAASgnB,gBAAgBhnB,QAAS,SAAS2pB,KAE1D,IAAdE,GACAvxB,KAAK6D,SAAS,CACV2tB,MAAOF,EAAYC,EACnBE,KAA4C,UAAtC/B,EAAaC,WAAW7E,WAAyByG,EAAY,EAAIA,EAAY,GACpF,EAIM,KAAAP,aAAgBjtB,IAC7BA,EAAE4X,kBACF,MAAM9S,EAAY9E,EAAE/C,KACpBuC,SAASP,iBAAiB,YAAchD,KAAKixB,aAC7C1tB,SAASP,iBAAiB,UAAYhD,KAAKkxB,YAC3C,MAAMQ,EAAa3tB,EAAE3C,OACfuwB,EAAUD,GAAcA,EAAWxyB,GACzCc,KAAK6D,UACA+tB,IACU,CAAE/sB,QAAQ,EAAM3F,GAAIyyB,MAE/B,KACI3xB,KAAK6xB,yBAAyBH,EAAY5B,EAAUgC,MAAOjpB,EAAU,GAE5E,EA8EY,KAAAkpB,UAAahuB,IAC1B,MAAM,KAAE0tB,GAASzxB,KAAKmC,OAChB,YAAE2uB,GAAgB9wB,KAAKC,MACvB+xB,EAAajuB,EACb6B,EAAO5F,KAAKmF,IACZ8sB,GAAkBpoB,EAAAA,EAAAA,IAAqB6lB,EAAaoB,GAAajB,YACjEqC,EAAiBxC,EAAaoB,GAAahG,UAG3CqH,EAAwB,SAASF,IACjCpC,EAAcmC,EAAUlF,QAAqCkF,EAAUlF,QAAQ,GAAGqF,GAAhDpuB,EAAEouB,GACpCrH,EAAYllB,EAAK8B,QAAS0qB,wBAAwBF,GAClDG,EAA4C,UAAtC3C,EAAaC,WAAW7E,UAAwBA,EAAY+E,EAAa4B,EAAO5B,EAAa/E,EAAY2G,EACrH,OAAOzxB,KAAKsyB,sBAAsBD,EAAI,EAGzB,KAAAE,sBAAyBlqB,IACtC,MAAM,MAAEmpB,GAAUxxB,KAAKmC,OACjB,IAAEkC,EAAG,IAAEuF,GAAQ5J,KAAKC,MAGpBuyB,GADanqB,EAAQhE,IADRuF,EAAMvF,GAGzB,OAAOD,KAAKquB,MAAMD,EAAahB,EAAM,EAQxB,KAAAc,sBAAyBD,IACtC,MAAM,MAAEb,GAAUxxB,KAAKmC,OACjB,YAAE2uB,EAAW,IAAEzsB,EAAG,IAAEuF,EAAG,KAAEinB,GAAS7wB,KAAKC,MAEvCuyB,GAAa7oB,EAAAA,EAAAA,IAAM0oB,EAAK,EAAGb,IAAUA,GAAS,GAC9CkB,EAAU7B,EAAOzsB,KAAKquB,MAAOD,GAAc5oB,EAAMvF,GAAQwsB,GACzDxoB,EAAwB,eAAhByoB,EAA+B4B,EAAUruB,EAAMuF,EAAM8oB,EAEnE,OAAO/oB,EAAAA,EAAAA,IAAMtB,EAAOhE,EAAKuF,EAAI,EAQhB,KAAA+oB,aAAgBN,IAC7B,MAAM,MAAEb,EAAK,KAAEC,GAASzxB,KAAKmC,OACvB,YAAE2uB,GAAgB9wB,KAAKC,MACvBoI,EAAQrI,KAAKsyB,sBAAsBD,GACnC9Z,EAAWvY,KAAKuyB,sBAAsBlqB,GACtCkpB,EAA4B,eAAhBT,EAA+BvY,EAAWkZ,EAAOlZ,EAGnE,MAAO,CACHqa,KAH4B,eAAhB9B,EAA+BS,EAAYC,EAAQD,EAI/DsB,OAAQtB,EACRvU,MAAOuU,EACV,EAYY,KAAAuB,gBAAkB,CAACC,EAAkCrB,EAAyB7oB,KACvF7I,KAAK4wB,eACD5wB,KAAKC,MAAMywB,aAAa,GAAGroB,MAAQrI,KAAKC,MAAMywB,aAAa,GAAGroB,QAC9DrI,KAAKC,MAAMywB,aAAa,GAAGroB,MAAQrI,KAAKC,MAAMywB,aAAa,GAAGroB,OAElErI,KAAK6D,UAAU+tB,IACJ,CACHlB,aAAa,EAAD,GAAO1wB,KAAKC,MAAMywB,kBAEnC,KACC1wB,KAAK6xB,yBAAyBH,EAAY5B,EAAUkD,OAAQnqB,EAAU,KAG1E7I,KAAK6D,UAAU+tB,IACJ,CACHlB,aAAcqC,MAEnB,KACC/yB,KAAK6xB,yBAAyBH,EAAY5B,EAAUkD,OAAQnqB,EAAU,GACvE,EAcM,KAAAoqB,qBAAuB,CACpCC,EACAC,EACAtqB,KAEAsqB,EAAS,CACLj0B,GAAKg0B,GAASA,EAAMh0B,IAAO,GAC3Bk0B,OAAQpzB,KACRqzB,gBAAiBrzB,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAC5CirB,iBAAmBtzB,KAAKmC,MAAMuuB,aAAa,IAAM1wB,KAAKmC,MAAMuuB,aAAa,GAAGroB,OAAU6H,OAAOqjB,IAC7F1qB,aACF,EAGW,KAAAgpB,yBAA2B,CAAC3nB,EAAsBrB,EAAsB2qB,KACrF,IAAIC,EAAa,GACbvpB,GAAWA,EAAQhL,IAAM2J,IAAcinB,EAAUkD,SACjDS,EAAavpB,EAAQhL,GAAG+I,QAAQ,QAAS,KAE7C,MAAMirB,EAAQhpB,GAAWlK,KAAK0zB,mBAAmBD,GAE7C5qB,IAAcinB,EAAU6D,KACpB3zB,KAAKC,MAAM2zB,aACX5zB,KAAKizB,qBAAqBC,GAASA,EAAM,GAAIlzB,KAAKC,MAAM2zB,YAAaJ,GAGzE3qB,IAAcinB,EAAUgC,OACpB9xB,KAAKC,MAAM4zB,eACX7zB,KAAKizB,qBAAqBC,GAASA,EAAM,GAAIlzB,KAAKC,MAAM4zB,cAAeL,GAG3E3qB,IAAcinB,EAAUkD,QACpBhzB,KAAKC,MAAMgS,UACXjS,KAAKizB,qBAAqBC,GAASA,EAAM,GAAIlzB,KAAKC,MAAMgS,SAAUuhB,EAAgB,EAnd1FxzB,KAAK4wB,cAAmD,IAAnC5wB,KAAKC,MAAMywB,aAAatoB,OAC7CpI,KAAKmC,MAAQ,CACTuuB,aAAc1wB,KAAKC,MAAMywB,aACzBe,KAAM,EACND,MAAO,EACP3sB,QAAQ,EACR3F,GAAI,IAERc,KAAKoxB,cAAgBpxB,KAAKoxB,cAAc7uB,KAAKvC,MAC7CA,KAAKixB,YAAcjxB,KAAKixB,YAAY1uB,KAAKvC,MACzCA,KAAKkxB,WAAalxB,KAAKkxB,WAAW3uB,KAAKvC,MACvCA,KAAKgxB,aAAehxB,KAAKgxB,aAAazuB,KAAKvC,MAC3CA,KAAK+wB,gBAAkB/wB,KAAK+wB,gBAAgBxuB,KAAKvC,MACjDA,KAAK8yB,gBAAkB9yB,KAAK8yB,gBAAgBvwB,KAAKvC,MACjDA,KAAK0zB,mBAAqB1zB,KAAK0zB,mBAAmBnxB,KAAKvC,MACvDA,KAAKizB,qBAAuBjzB,KAAKizB,qBAAqB1wB,KAAKvC,MAC3DA,KAAK6xB,yBAA2B7xB,KAAK6xB,yBAAyBtvB,KAAKvC,MACnEA,KAAK8zB,qBAAuB9zB,KAAK8zB,qBAAqBvxB,KAAKvC,MAC3DA,KAAK+zB,eAAiB/zB,KAAK+zB,eAAexxB,KAAKvC,MAC3C6V,EAAAA,GAAAA,WAAsBtS,SAASG,KAAKmC,eAAqE,QAApDtC,SAASG,KAAKmC,cAAc8K,aAAa,cAA4DpP,IAAvCvB,KAAKC,MAAM+zB,yBAAyCh0B,KAAKC,MAAM+zB,2BAClLtE,EAAaC,WAAW7E,UAAY,QAE5C,CArCOvW,gCAAgCtU,EAAqBkC,GACxD,GAAKlC,EAAMywB,aAAatoB,OAAS,GAAKnI,EAAMywB,aAAa,GAAGroB,QAAUlG,EAAMuuB,aAAa,GAAGroB,OACnFpI,EAAMywB,aAAatoB,OAAS,GAAKnI,EAAMywB,aAAa,GAAGroB,QAAUlG,EAAMuuB,aAAa,GAAGroB,MAAQ,CACpG,MAAM5B,EAAS,KAAQtE,GAKvB,OAJAsE,EAAUiqB,aAAa,GAAGroB,MAAQpI,EAAMywB,aAAa,GAAGroB,MACpDpI,EAAMywB,aAAatoB,OAAS,IAC5B3B,EAAUiqB,aAAa,GAAGroB,MAAQpI,EAAMywB,aAAa,GAAGroB,OAErD5B,CAAU,CAErB,OAAO,IACX,CA4BO3D,oBACH9C,KAAKoxB,gBACLvb,EAAAA,GAAAA,WAAsB9S,OAAOC,iBAAiB,SAAUhD,KAAKoxB,cACjE,CAEO9qB,qBACCtG,KAAKmF,IAAIuC,SAAW1H,KAAKmF,IAAIuC,QAAQusB,YAzEpB,OAyE0Dj0B,KAAKmC,MAAMqvB,OACtFxxB,KAAKoxB,eAEb,CAEO5qB,sBAAsBD,EAAyB2tB,GAClD,IAAIC,GAAe,EACnB,GAAIn0B,KAAK4wB,cAAe,CACpB,MAAMwD,EAAiBp0B,KAAKuyB,sBAAsBhsB,EAAUmqB,aAAa,GAAGroB,OACtEgsB,EAAiBr0B,KAAKuyB,sBAAsBhsB,EAAUmqB,aAAa,GAAGroB,OAO5E8rB,IAAeE,EAAiB,IAAIA,GAAkBD,EAAiB7tB,EAAUsqB,IAAY,CAEjG,OAAOsD,CACX,CAEOlxB,uBACHF,OAAOG,oBAAoB,SAAUlD,KAAKoxB,cAC9C,CAEOnyB,SACH,MAAM,YAAE6xB,GAAgB9wB,KAAKC,MACvBq0B,EAAct0B,KAAKC,MAAMd,UAAY,GAAG4wB,EAAOwE,0BAA0BzD,KAAe9wB,KAAKC,MAAMd,YAAc,GAAG4wB,EAAOwE,0BAA0BzD,IAErJ0D,EAAWx0B,KAAKC,MAAMf,GACtB0wB,EAAYF,EAAaoB,GAAalB,UACtC9E,EAAY4E,EAAaoB,GAAahG,UACtC2J,GAAsB5qB,EAAAA,EAAAA,IAAqBihB,GAC3C4J,EAAiB10B,KAAKuyB,sBAAsBvyB,KAAKC,MAAMywB,aAAa,GAAGroB,OACvEssB,EAAe30B,KAAK2yB,aAAa+B,GACvC,IAAIE,EAAY,CAAE,CAAChF,GAAY,GAAG+E,EAAa/B,UAC/C,MAAMiC,EAAqC,GAC3CA,EAAYlU,KAAK,CAAE,CAACmK,GAAY,GAAG6J,EAAa9B,aAChD,MAAMiC,EAAqBjoB,IAAW,eAAgB7M,KAAKC,MAAM60B,mBAAqB90B,KAAKC,MAAM60B,mBAAqB,IAChHC,EAAY/0B,KAAKC,MAAM80B,UAAY,IAAIC,OAAOh1B,KAAKC,MAAM80B,aAAe,GAE9E,GAAI/0B,KAAK4wB,cAAe,CACpB,MAAMqE,EAAiBj1B,KAAKuyB,sBAAsBvyB,KAAKC,MAAMywB,aAAa,GAAGroB,OACvE6sB,EAAel1B,KAAK2yB,aAAasC,GACvCJ,EAAYlU,KAAK,CAAE,CAACmK,GAAY,GAAGoK,EAAarC,aAE5C+B,EADgB,aAAhB9D,EACY,CACR,aAAgB,GAAG6D,EAAa/B,SAChC,CAAChD,GAAesF,EAAatC,KAAO+B,EAAa/B,KAApC,MAGL,CACR,CAAC,SAAS6B,KAAwB,GAAyC,UAAtC/E,EAAaC,WAAW7E,UAAwB6J,EAAa/B,KAAO5yB,KAAKmC,MAAMsvB,KAAOkD,EAAa/B,SACxI,CAAChD,GAAesF,EAAarC,OAAS8B,EAAa9B,OAAtC,KAChB,CAIT,OACI7zB,EAAAA,cAAAA,MAAAA,CAAKG,UAAWm1B,EAAanvB,IAAKnF,KAAKmF,KACnCnG,EAAAA,cAAAA,MAAAA,CAAKG,UAAU,oBAAoB+B,QAASlB,KAAK+zB,eAAgBtyB,KAAK,QACjEzB,KAAKC,MAAMk1B,iBACRn2B,EAAAA,cAACsqB,EAAAA,SAAQ,eACLpqB,GAAI,YAAYs1B,IAChBz0B,UAAWC,KAAKC,MAAMF,UACtBZ,UAAW21B,EACXzwB,IAAKrE,KAAKC,MAAMoE,IAChBuF,IAAK5J,KAAKC,MAAM2J,IAChBvB,MAAOrI,KAAKC,MAAMm1B,eAAiBp1B,KAAKC,MAAMm1B,eAAiB,GAC1Dp1B,KAAKC,MAAMm1B,eAAiB,CAAE,iBAAkBp1B,KAAKC,MAAMm1B,gBAAmB,CAAC,IAG5Fp2B,EAAAA,cAAAA,MAAAA,CAAKG,UAAU,gBAAgBD,GAAI,GAAGs1B,IAAWO,IAAazzB,MAAOszB,IACpE50B,KAAKuwB,oBAAoBsE,IAE7B70B,KAAKC,MAAMo1B,WAAar1B,KAAKkwB,cAAclwB,KAAKC,MAAMkwB,QAAW,KAG9E,CAoJQe,WAAWntB,GACfA,EAAE4X,kBACF,MAAM9S,EAAY9E,EAAE/C,KACd0wB,EAAa3tB,EAAE3C,OACrBpB,KAAK6D,UACA+tB,IACU,CAAE/sB,QAAQ,EAAO3F,GAAI,OAEhC,KACIc,KAAK6xB,yBAAyBH,EAAY5B,EAAU6D,IAAK9qB,EAAU,IAG3EtF,SAASL,oBAAoB,YAAclD,KAAKixB,aAChD1tB,SAASL,oBAAoB,UAAYlD,KAAKkxB,WAClD,CAEQD,YAAYltB,GAChBA,EAAE4X,kBACF,MAAMtT,EAAQrI,KAAK+xB,UAAUhuB,GACvB8E,EAAY9E,EAAE/C,KACds0B,EAAYvxB,EAAE3C,OACdm0B,EAAUv1B,KAAKmC,MAAMjD,IAAOo2B,GAAaA,EAAUp2B,GACnDs2B,EAAex1B,KAAK0zB,mBAAmB6B,GAEzCC,IAAiBx1B,KAAK8zB,qBAAqB0B,EAAa,GAAIzxB,KAC5DyxB,EAAa,GAAGntB,MAAQA,EACxBrI,KAAK8yB,gBAAgB0C,EAAcF,EAAWzsB,GAEtD,CAEQkrB,eAAehwB,GACnBA,EAAE4X,kBACF,MAAMpD,EAAWvY,KAAK+xB,UAAUhuB,GAC1BuxB,EAAYvxB,EAAE3C,OACdyH,EAAY9E,EAAE/C,KACdy0B,EAASz1B,KAAK0zB,mBAAmB1zB,KAAKC,MAAMywB,aAAa,GAAGxxB,IAElE,GAAIc,KAAK4wB,cAAe,CACpB,MAAM8E,EAAS11B,KAAK0zB,mBAAmB1zB,KAAKC,MAAMywB,aAAa,GAAGxxB,IAElE,GAAIu2B,GAAUC,EAAQ,CAGOnd,EAFDkd,EAAO,GAAGptB,MACVqtB,EAAO,GAAGrtB,MAESkQ,EAGvCkd,EAAO,GAAGptB,MAAQkQ,EAElBmd,EAAO,GAAGrtB,MAAQkQ,EAGtBvY,KAAK6D,UACA+tB,IACW,CAAElB,aAAc,CAAC+E,EAAO,GAAIC,EAAO,QAE/C,KACI11B,KAAK6xB,yBAAyByD,EAAWxF,EAAUkD,OAAQnqB,EAAU,GAE3E,CAAD,MAGE4sB,IACPA,EAAO,GAAGptB,MAAQkQ,EAClBvY,KAAK6D,UACA+tB,IACW,CAAElB,aAAc+E,MAE5B,KACIz1B,KAAK6xB,yBAAyByD,EAAWxF,EAAUkD,OAAQnqB,EAAU,IAIrF,CA+DQkoB,gBAAgBhtB,GACpBA,EAAE4X,kBACF,MAAM+V,EAAa3tB,EAAE3C,OACfu0B,EAAsBjE,GAAc1xB,KAAK0zB,mBAAmBhC,EAAWxyB,GAAG+I,QAAQ,QAAS,KAC3FY,EAAY9E,EAAE/C,KACpB20B,EAAqB,GAAGttB,MAAQ6H,OAAOQ,SAAS3M,EAAE3C,OAAOiH,MAAO,IAChErI,KAAK8yB,gBAAgB6C,EAAsBjE,EAAY7oB,EAC3D,CAyBQ6qB,mBAAmB6B,GACvB,IAAIK,EAMJ,OAJAA,EAAa51B,KAAKC,MAAMywB,aAAa7e,QAAQqhB,GAClCA,EAAMh0B,KAAOq2B,IAGjBK,EAAWxtB,OAAS,EAAIwtB,EAAa,IAChD,CAwCQ9B,qBACJ0B,EACA/qB,GAEA,IAAKzK,KAAK4wB,cACN,OAAO,EAEX,IAAIiF,EAAU,EACVC,GAAiB,EAErB,GAAmB,YAAfrrB,EAAMzJ,KAAoB,CAG1B,GADA60B,EADmBprB,EACC0R,QAEfqZ,IAAiBx1B,KAAKC,MAAMywB,aAAa,KAAmB,KAAZmF,GAA8B,KAAZA,IAC9DL,IAAiBx1B,KAAKC,MAAMywB,aAAa,KAAmB,KAAZmF,GAA8B,KAAZA,GAEvE,OAAO,EAEXC,GAAiB,CAAK,CAG1B,GAAmB,cAAfrrB,EAAMzJ,MAAuC,cAAfyJ,EAAMzJ,MAAuC,UAAfyJ,EAAMzJ,KAAkB,CACpF,MAAMqH,EAAQrI,KAAK+xB,UAAUtnB,GAC7B,GACKzK,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAAQA,GAASmtB,EAAat2B,KAAOc,KAAKC,MAAMywB,aAAa,GAAGxxB,IACvFc,KAAKmC,MAAMuuB,aAAa,GAAGroB,MAAQA,GAASmtB,EAAat2B,KAAOc,KAAKC,MAAMywB,aAAa,GAAGxxB,GAEhG,OAAO,EAEX42B,GAAiB,CAAK,CAI1B,QAASA,GAAkB91B,KAAKC,MAAMywB,aAAa,GAAGroB,MAA0B,EAAlBrI,KAAKC,MAAM4wB,MAAY7wB,KAAKC,MAAMywB,aAAa,GAAGroB,MAEpH,EA/hBc0nB,EAAAA,aAAsC,CAChDT,aAAa,EACbyG,QAAQ,EACRjF,YAAa,aACbzsB,IAAK,EACLuF,IAAK,IACLinB,KAAM,EACNH,aAAc,CAAC,CAAExxB,GAAI,kBAAmBmJ,MAAO,MAG3B0nB,EAAAA,gBAA0B,Q,4ECiE1CiG,E,wDAAZ,SAAYA,GACRA,EAAAA,OAAAA,SACAA,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,OACH,CAJD,CAAYA,IAAAA,EAAa,KAMV,MAAMC,UAAcj3B,IAAAA,cAO/B6C,YAAY5B,GACR6B,MAAM7B,GAPH,KAAAi2B,mBAA6B,WAEnB,KAAAC,cAAwB,QAExB,KAAAC,wBAAkC,QAiElC,KAAAC,kBAAqB5rB,IAClC,MAAMrJ,EAASqJ,EAAMrJ,OACfk1B,EAAal1B,EAAOuP,aAAa,kBAAoBvP,EAAOuP,aAAa,kBAA8B,IACvG,WAAE4lB,EAAU,eAAEC,GAAmBx2B,KAAKmC,MAC5C,IAAIs0B,GAAW,EAEXF,IAAeD,IACfG,GAAYD,GAGhBx2B,KAAK6D,SAAS,CACV0yB,WAAYD,EACZE,eAAgBC,EAChBC,aAAa,GACf,EAUW,KAAAC,yBAA2B,CAACC,EAAwBC,EAAuD1uB,IAAmB,KACvIyI,EAAAA,iBAAAA,SAA0BzI,KAC1ByuB,EAAKzuB,GAAO2uB,YAAcF,EAAKzuB,GAAO2uB,YAE1CD,EAAiBD,EAAK,EAGT,KAAAG,kBAAqBC,IAClC,MAAM,UACFvQ,EAAS,eAAEwQ,EAAc,eAAEC,EAAc,cAAEC,EAAa,KAAEP,EAAI,eAC9DQ,EAAc,WAAEC,EAAU,iBAAER,EAAgB,eAAES,EAAc,mBAC5DC,EAAkB,wCAAEC,EAAuC,gBAAEC,EAAe,iBAAEC,GAC9E13B,KAAKC,OACH,WAAEs2B,EAAU,eAAEC,GAAmBx2B,KAAKmC,MAEtCw1B,EAAmBnB,EAAiB,MAAQ,MAE5CoB,EAAepB,EAAiBiB,EAAkBC,EAElDG,EAAUb,EAAW9rB,KAAI,CAACoX,EAAMwV,KAClC,IAAKxV,EACD,OAEJ,MACMyV,EAAmBD,EADD,EAGlBxmB,EAAUmV,EAAU,GAAGzmB,KAAKm2B,gBAAgB7T,EAAKvX,oBACnD0b,EAAU,GAAG6Q,IAAkBt3B,KAAKo2B,0BAA0B9T,EAAKvX,oBACnE0b,EAAU,GAAGnE,EAAKvX,oBAAsBuX,EAAKvX,KAE3CitB,EAAmBzB,IAAejU,EAAKvX,WAAyBxJ,IAAjBq2B,EAA8BA,EAAe,GAE5FK,EAAkB3V,EAAKviB,UAAY,IAAG+H,EAAAA,EAAAA,QAAOwa,EAAKviB,UAAWuR,MAAY0mB,IAAoB,GAsBnG,OApBgBX,GAAc/U,EAAK4V,UAC/Bl5B,IAAAA,cAAAA,KAAAA,CAAAA,iBACoBsjB,EAAKvX,KAAM7J,QAASlB,KAAKq2B,kBAAmBhc,QAASra,KAAKm4B,oBAC1Eh5B,UAAW0N,IAAW,GAAG7M,KAAKk2B,wCAC9BpkB,IAAK,WAAWimB,IAAoBK,MAAM,MAC1C32B,KAAK,eAAeY,SAAU,GAC9BrD,IAAAA,cAAAA,MAAAA,CACIG,UAAW0N,IAAW,GAAG7M,KAAKk2B,sCAAuCK,IAAejU,EAAKvX,MAAQ4sB,GAAiB,aACtGrV,EAAKviB,WAAak4B,EAAgBzvB,OAAM,iBACpC,GAAG8Z,EAAKvX,OAAM,YACpB,UACTuG,KAGRtS,IAAAA,cAAAA,KAAAA,CACDo5B,MAAM,MACN32B,KAAK,eAAeY,SAAU,GAC7BiP,EAIM,IAIT+mB,EAAgBpB,GAAkBJ,IAAqBU,GACzDv4B,IAAAA,cAACs5B,EAAAA,EAAc,CACXrmB,SAAUjS,KAAK22B,yBAAyBC,EAAMC,GAC9C9rB,KAAK,MACLhL,UAAWy3B,IAIbe,EACFv5B,IAAAA,cAAAA,MAAAA,CACIG,UAAW0N,IAAW,GAAG7M,KAAKk2B,sCAAqC,aACvDiB,EAAgB,GAAKC,EAAc,YACrC,UACTD,EAAgB,GAAKC,GAI9B,OACIp4B,IAAAA,cAAAA,KAAAA,CAAIG,UAAW,GAAGa,KAAKk2B,mCACjBe,GAAkBj3B,KAAKw4B,UAAU,CAC/BC,QAAQ,EACRt5B,UAAW,GAAGa,KAAKk2B,0DAA2DwC,QAASL,EACvFP,WAAY,EACZM,MAAO,QACTP,EACAX,GAAkBl3B,KAAKw4B,UAAU,CAC/BC,QAAQ,EACRt5B,UAAW,GAAGa,KAAKk2B,oDACnBwC,QAASH,EACTT,UAAW,EACXM,MAAO,QAEV,EAII,KAAAO,WAAc/B,IAC3B,MAAM,eACFM,EAAc,eAAED,EAAc,gBAAE2B,EAAe,QAAEC,EAAO,iBACxDhC,EAAgB,YAAEiC,EAAW,mBAAEvB,EAAkB,wCACjDC,GACAx3B,KAAKC,MA8CT,OA5CkB22B,EAAK1rB,KAAI,CAAC6tB,EAAU5wB,KAClC,IAAIhJ,EAAYgJ,EAAQ,EAAI,GAAGnI,KAAKk2B,mCAAqC,GAAGl2B,KAAKk2B,kCAC7EQ,GAAc,EAElB,MAAMsC,EAA0BD,EAASE,IAAI,GAAG5wB,MAAMC,WAChD0uB,EAAa+B,EAASE,IAAI/tB,KAAIguB,IAChC,GAAIN,GAAmBA,EAAgBO,SAASD,EAAKh6B,IACjD,OAIJ,MAAMk6B,EAAaF,EAAKl4B,OAASg1B,EAAc9lB,QAAUgpB,EAAKl4B,OAASg1B,EAAcqD,MAAQ,WAAa,GACpGC,EAAcJ,EAAKl4B,OAASg1B,EAAcqD,OAASP,EAAcA,EAAYI,EAAK7wB,OAAmB6wB,EAAK7wB,MAC1GkxB,EAAsBL,EAAK/5B,WAAa,GAC9C,OAAOa,KAAKw4B,UAAU,CAAEC,QAAQ,EAAOt5B,UAAW0N,IAAW,GAAG7M,KAAKk2B,+BAAgCkD,EAAYG,GAAsBb,QAASY,EAAaxB,UAAW3vB,EAAOiwB,MAAO,OAAQ,IAG5LC,EAAgBpB,GAAkBJ,GACpC73B,IAAAA,cAACs5B,EAAAA,EAAc,CACXrmB,SAAUjS,KAAK22B,yBAAyBC,EAAMC,EAAkB1uB,GAChE4C,KAAK,gBACL1C,MAAO,YAAYF,IACnBovB,mBAAoBA,EACpBx3B,UAAW,GAAGy3B,KAA4CwB,MAG5DQ,EAAS,OAAOrxB,IAElBqxB,IAAWx5B,KAAKmC,MAAMoU,eAAiBvW,KAAKmC,MAAMu0B,cAClDv3B,GAAa,YACbu3B,GAAc,GAGlB,MAAM+C,EAAgBZ,GAAW74B,KAAK05B,eAAeX,EAASE,IAAKvC,EAAa8C,EAAQT,EAASY,kBAEjG,OACI36B,IAAAA,cAAAA,KAAAA,CAAI8S,IAAK0nB,EAAQr6B,UAAWA,GACtB83B,GAAkBj3B,KAAKw4B,UAAU,CAAEC,QAAQ,EAAOt5B,UAAW,GAAGa,KAAKk2B,+BAAgCwC,QAASL,EAAeP,UAAW3vB,EAAOiwB,MAAO,MAAOwB,QAASb,IACtK/B,EACAE,GAAkBl3B,KAAKw4B,UAAU,CAAEC,QAAQ,EAAOt5B,UAAW,GAAGa,KAAKk2B,+BAAgCwC,QAASe,EAAe3B,UAAW3vB,EAAOiwB,MAAO,MAAOwB,QAASb,IACvK,GAIG,EAGH,KAAAW,eAAiB,CAACpX,EAAyBoU,EAAsB5kB,EAAa+nB,KAC3F,MAAM,aAAEC,EAAY,eAAEC,EAAc,aAAEC,EAAY,gBAAEC,EAAe,kBAAEC,EAAiB,gBAAEC,EAAe,kBAAEC,EAAiB,cACtHjD,EAAa,mBAAEkD,EAAkB,eAAEjD,EAAgByB,SAAS,OAAE3qB,EAAM,SAAEosB,EAAQ,OAAEC,IAAav6B,KAAKC,MAChGu6B,OAA6Bj5B,IAAX2M,EAAuB,KAAK,MAChDA,EAAOoU,EAAMuX,SAAqB,QAAN,EAAfA,EAAiBY,YAAI,WAAN,EAAf,EAAuB/yB,QAAQ,OAC5CnG,EACEm5B,OAAiCn5B,IAAb+4B,EAAyB,KAAK,MACpDA,EAAShY,EAAMuX,SAAuB,QAAR,EAAfA,EAAiBc,cAAM,WAAR,EAAf,EAAyBjzB,QAAQ,OAChDnG,EACEq5B,OAA6Br5B,IAAXg5B,EAAuB,KAC3CA,EAAOjY,EAAK,OACZ/gB,EAEEk4B,EACFz6B,IAAAA,cAAC67B,EAAAA,KAAI,CAAC17B,UAAW,GAAGa,KAAKk2B,iCACnB0E,GAAmB57B,IAAAA,cAAC2F,EAAAA,OAAM,CACxBxF,UAAW,GAAGa,KAAKk2B,qCAAoC,aAAciE,EACrEj5B,QAAS05B,GACRZ,GAEHQ,GAAmBx7B,IAAAA,cAAC2F,EAAAA,OAAM,CACxBM,SAAU40B,aAAe,EAAfA,EAAiBY,KAC3Bt7B,UAAW,GAAGa,KAAKk2B,qCAAoC,aAAc+D,EACrE/4B,QAASs5B,GACRV,GAEHY,GAAqB17B,IAAAA,cAAC2F,EAAAA,OAAM,CAC1BM,SAAU40B,aAAe,EAAfA,EAAiBc,OAC3Bx7B,UAAW,GAAGa,KAAKk2B,uCAAsC,aAAcgE,EAAmBh5B,QAASw5B,GAClGX,IAKb,OAAI5C,EAEIn4B,IAAAA,cAAC67B,EAAAA,KAAI,CAAC17B,UAAW,GAAGa,KAAKk2B,0CACrBl3B,IAAAA,cAAC2F,EAAAA,OAAM,CACHxF,UAAW,GAAGa,KAAKk2B,uCAAsC,aAC7CkB,EAAc,YACftlB,EACX/D,MAAOqsB,EACPl5B,QAASlB,KAAK86B,eAAc,gBACb96B,KAAKmC,MAAMu0B,aAEzB2D,GAA0C,IAE7C3D,GAAe+C,GAItBA,CAAa,EAIP,KAAAqB,eAAkBrwB,IAC/B,MAAMrJ,EAASqJ,GAASA,EAAMrJ,OACxB25B,EAAS35B,GAAUA,EAAOuP,aAAa,aAAevP,EAAOuP,aAAa,aAAyB,GACzG3Q,KAAK6D,SAAS,CACV6yB,aAAc12B,KAAKmC,MAAMu0B,YACzBngB,cAAewkB,GACjB,EAGW,KAAAC,cAAgB,CAACC,EAAyBC,EAAoB1E,IACpEyE,EAAME,MAAK,CAACC,EAAyBC,KACxC,MAAMC,EAAcF,EAAQnC,IAAIsC,MAAKrC,GAC1BA,EAAKh6B,KAAOg8B,IAEjBM,EAAcH,EAAQpC,IAAIsC,MAAKrC,GAC1BA,EAAKh6B,KAAOg8B,IAGvB,IAAKI,IAAgBE,EACjB,OAAQ,EAGZ,GAAiC,iBAAtBF,EAAYjzB,OAAmD,iBAAtBmzB,EAAYnzB,MAC5D,OAAOmuB,EAAkB8E,EAAYjzB,MAAQmzB,EAAYnzB,MAAUmzB,EAAYnzB,MAAQizB,EAAYjzB,MAGvG,MAAMozB,EAAaH,EAAYjzB,OAAmBizB,EAAYjzB,MAAMC,WAAWozB,cAAclzB,OACvFmzB,EAAcL,EAAYjzB,OAAmBmzB,EAAYnzB,MAAMC,WAAWozB,cAAclzB,OAE9F,OAAKizB,GAAeE,EAGhBnF,EACOiF,EAAaE,GAAe,EAAI,EAEpCF,EAAaE,GAAe,EAAI,GAL3B,CAK4B,IAK/B,KAAAC,oBAAsB,CAACC,EAA6BC,EAAeC,KAChF,GAAID,GAASC,EACT,OAAOF,EAGX,MAAMG,EAAS,GACf,IAAK,IAAI9kB,EAAI4kB,EAAO5kB,EAAI6kB,EAAK7kB,IACzB2kB,EAAU3kB,IAAM8kB,EAAOrb,KAAKkb,EAAU3kB,IAG1C,OAAO8kB,CAAM,EAGA,KAAAxD,UAAav4B,IAC1B,MAAM,UAAEd,EAAS,OAAEs5B,EAAM,UAAEX,EAAS,MAAEM,EAAK,QAAE6D,EAAO,QAAEvD,GAAYz4B,EAGlE,OAAOw4B,EACHz5B,IAAAA,cAAAA,KAAAA,CACIG,UAAWA,EAAW2S,IAAK,WAAWgmB,IAAaM,MAAOA,EAC1D6D,QAASA,EACT55B,SAAUy1B,EALM,KADA,GAQfY,GAGL15B,IAAAA,cAAAA,KAAAA,CAAIG,UAAWA,EAAWi5B,MAAOA,EAAO6D,QAASA,GAC5CvD,EAER,EAQY,KAAAwD,YAAeC,GAExBn9B,IAAAA,cAAAA,MAAAA,CAAKG,UAAU,wBACXH,IAAAA,cAAAA,OAAAA,CAAMG,UAAU,yCAAwC,cAAa,SACrEH,IAAAA,cAAAA,OAAAA,CAAMG,UAAU,aACXg9B,IAWA,KAAAC,YAAeC,GAExBr9B,IAAAA,cAAAA,MAAAA,CAAKG,UAAU,wBACXH,IAAAA,cAAAA,OAAAA,CAAMG,UAAU,aACXk9B,GAELr9B,IAAAA,cAAAA,OAAAA,CAAMG,UAAU,0CAAyC,cAAa,UASjE,KAAAg5B,oBAAuB1tB,IAChCA,EAAM0R,UAAYtU,EAAAA,SAAAA,OAAkB4C,EAAM0R,UAAYtU,EAAAA,SAAAA,OACtD7H,KAAKq2B,kBAAkB5rB,EAAO,EA/YlCzK,KAAKmC,MAAQ,CACTq0B,gBAAgB,EAChBD,WAAYt2B,EAAMq8B,SAAS,IAAMr8B,EAAMq8B,SAAS,GAAGvxB,MAAQ,GAC3D2rB,iBAAqCn1B,IAAxBtB,EAAMk3B,gBAA+Bl3B,EAAMk3B,cACxD5gB,cAAe,GAEvB,CAEOtX,SACH,MAAM,UAAEE,EAAS,SAAEm9B,EAAQ,KAAE1F,EAAI,WAAES,EAAU,eAAEkF,EAAc,mBAAEC,GAAuBx8B,KAAKC,OACrF,WAAEs2B,EAAU,eAAEC,GAAmBx2B,KAAKmC,MAEtCsnB,EAAY5c,IAAW7M,KAAKk2B,mBAAoB/2B,GACtD,IAAI08B,EAAYxE,GAAcd,EAAav2B,KAAKg7B,cAAcpE,EAAML,EAAYC,GAAkBI,EAC9F6F,EAAkB,KAEtB,GAAIF,EAAgB,CAChB,MAAM,UAAEG,EAAS,YAAEC,EAAW,SAAE7d,EAAQ,SAAE8d,EAAQ,eAAEC,EAAc,IAAEve,GAAQke,EAE5EC,EACIz9B,IAAAA,cAAC4e,EAAAA,uBAAsB,CACnBze,UAAU,oCACVsC,KAAK,aAAY,aACLo7B,EACZve,IAAKA,EACLI,IAAI,OACJX,MAAO8d,EAAUzzB,OACjB6V,aAAc0e,EACdxe,aAAcue,EACd7d,aAAc7e,KAAKk8B,YAAYU,GAC/B9d,SAAU9e,KAAKo8B,YAAYtd,GAC3BC,kBAAmB6d,EACnB5d,cAAeF,IAIvB+c,EAAY77B,KAAK47B,oBAAoBC,EAAWa,EAAWA,EAAYC,EAAa,CAGxF,MAAMG,EAAY98B,KAAK24B,WAAWkD,GAC5BkB,EAAY/8B,KAAK+2B,kBAAkBuF,GAEzC,OACIt9B,IAAAA,cAAAA,MAAAA,CAAKG,UAAW,GAAGa,KAAKk2B,iCACpBl3B,IAAAA,cAAAA,QAAAA,CAAOG,UAAWsqB,GACdzqB,IAAAA,cAAAA,QAAAA,KACK+9B,GAEL/9B,IAAAA,cAAAA,QAAAA,KACK89B,IAGRL,EAGb,E,yECzKJ,MAyBA,EAzBoD,IAQ/C,IARgD,UACjDO,EAAS,MACT30B,EAAK,UACLtI,EAAS,KACTgL,EAAI,UACJ5L,EAAS,SACT8S,EAAQ,mBACRslB,GACH,EAEG,MAAM0F,EAAWpwB,IAAW,iBAAkB1N,GAAwB,IACtE,OACIH,EAAAA,cAAAA,QAAAA,CACIG,UAAW89B,EACXC,QAASF,EAAS,eACJA,EACdh8B,KAAMu2B,EAAqB,QAAU,WAAU,aACnCx3B,EACZsI,MAAOA,EACP0C,KAAMA,EACNkH,SAAUA,GACZ,C,iaCzCJkrB,EAAiB,CACnBC,KAAM,EACN54B,KAAM,KAMK,MAAM64B,UAAgBr+B,EAAAA,cA0BjC6C,YAAY5B,GACR6B,MAAM7B,GAEND,KAAKmF,IAAMnG,EAAAA,YACXgB,KAAKs9B,gBAAkBt9B,KAAKs9B,gBAAgB/6B,KAAKvC,MACjDA,KAAKu9B,oBAAsBv9B,KAAKu9B,oBAAoBh7B,KAAKvC,MACzDA,KAAKw9B,mBAAqBx9B,KAAKw9B,mBAAmBj7B,KAAKvC,MACvDA,KAAKT,OAASS,KAAKT,OAAOgD,KAAKvC,MAC/BA,KAAKy9B,mBAAqBz9B,KAAKy9B,mBAAmBl7B,KAAKvC,MACvDA,KAAK09B,oBAAsB19B,KAAK09B,oBAAoBn7B,KAAKvC,MACzDA,KAAK29B,0BAA4B39B,KAAK29B,0BAA0Bp7B,KAAKvC,MACrEA,KAAK49B,2BAA6B59B,KAAK49B,2BAA2Br7B,KAAKvC,MACvEA,KAAKo9B,KAAOp9B,KAAKo9B,KAAK76B,KAAKvC,MAC3BA,KAAKwE,KAAOxE,KAAKwE,KAAKjC,KAAKvC,MAC3BA,KAAK69B,iBAAmB79B,KAAK69B,iBAAiBt7B,KAAKvC,MACnDA,KAAK89B,aAAe99B,KAAK89B,aAAav7B,KAAKvC,MAC3CA,KAAK+9B,mBAAqB/9B,KAAK+9B,mBAAmBx7B,KAAKvC,MACvDA,KAAKoB,OAAS,KACdpB,KAAK6S,UAAW,EAChB7S,KAAK6gB,YAAa,CACtB,CAEO/d,oBACH9C,KAAKoB,QAAS0K,EAAAA,EAAAA,IAAiB9L,KAAKC,MAAMmB,QAC1CpB,KAAKs9B,kBAIL,MAAM55B,EAAOH,SAASy6B,qBAAqB,QAAQ5S,KAAK,GACxD,GAAI1nB,EAAM,CACN,MAAMu6B,EAAcv6B,EAAKiN,aAAa,SAClCstB,GAAeA,EAAY9E,SAAS,YACpCn5B,KAAK6S,UAAW,EAAI,CAIR,OAAhB7S,KAAKoB,QAA+E,OAA5DpB,KAAKoB,OAAOgB,WAAW87B,aAAa,qBAC5Dl+B,KAAKoB,OAAOgB,WAAW+7B,gBAAgB,mBAE/C,CAEOl7B,uBACHjD,KAAKo+B,mBACLp+B,KAAKq+B,mBACLr+B,KAAKw9B,oBACT,CAEOC,mBAAmB15B,GAClB/D,KAAKs+B,aACLt+B,KAAKo+B,mBAETp+B,KAAKu+B,YAAcx7B,OAAO8H,WAAW7K,KAAKo9B,KAAK76B,KAAKvC,KAAM+D,GAAI/D,KAAKw+B,SAAS,QAChF,CAEOd,oBAAoB35B,GACnB/D,KAAKu+B,aACLv+B,KAAKq+B,mBAETr+B,KAAKs+B,YAAcv7B,OAAO8H,WAAW7K,KAAKwE,KAAKjC,KAAKvC,KAAM+D,GAAI/D,KAAKw+B,SAAS,QAChF,CAEOb,4BACC39B,KAAKs+B,aACLt+B,KAAKo+B,kBAEb,CAEOR,2BAA2B75B,GAC1B/D,KAAKu+B,aACLv+B,KAAKq+B,mBAETr+B,KAAKs+B,YAAcv7B,OAAO8H,WAAW7K,KAAKwE,KAAKjC,KAAKvC,KAAM+D,EAAE06B,aAAcz+B,KAAKw+B,SAAS,QAC5F,CAEOX,iBAAiB95B,GACf/D,KAAKC,MAAMR,SAIZO,KAAK6gB,YACL7gB,KAAK6gB,YAAa,EAClBhW,YAAW,KACP,MAAMqX,EAAY3e,SAASmY,cAEtB1b,KAAKmF,KAAQnF,KAAKmF,IAAIuC,SAAY1H,KAAKmF,IAAIuC,QAAQ3B,SAASmc,IAC7DliB,KAAKwE,KAAKT,EAAG,GAElB,IAEH/D,KAAKwE,KAAKT,GAElB,CAEO+5B,aAAa/5B,GACE,IAAdA,EAAEoY,QACFnc,KAAK6gB,YAAa,EACD,WAAV9c,EAAE+N,KACT9R,KAAKwE,KAAKT,EAAE06B,YAEpB,CAEOV,mBAAmBh6B,GACJ,IAAdA,EAAEoY,QACFnc,KAAK6gB,YAAa,EACD,WAAV9c,EAAE+N,KACT9R,KAAKwE,KAAKT,EAElB,CAEOy6B,SAAS1sB,GACZ,MAAM,MAAE4sB,GAAU1+B,KAAKC,MACvB,MAAqB,iBAAVy+B,EACCjrB,MAAMirB,EAAM5sB,IAAQqrB,EAAerrB,GAAO4sB,EAAM5sB,GAGrD4sB,GAAS,CACpB,CAEOtB,KAAKr5B,GACR,IAAK/D,KAAKC,MAAMR,SACZO,KAAKq+B,mBACLr+B,KAAKT,OAAOwE,GAGQ,OAAhB/D,KAAKoB,QAAiB,CACtB,MAAMu9B,EAAWp7B,SAASq7B,gBAAgB,oBAC1CD,EAASt2B,MAAQrI,KAAKC,MAAMf,GAC5Bc,KAAKoB,OAAOgB,WAAWy8B,aAAaF,EAAU,CAG1D,CAEOn6B,KAAKT,GACJ/D,KAAKC,MAAMR,SACXO,KAAKo+B,mBACLp+B,KAAKT,OAAOwE,GAGQ,OAAhB/D,KAAKoB,QAA+E,OAA5DpB,KAAKoB,OAAOgB,WAAW87B,aAAa,qBAC5Dl+B,KAAKoB,OAAOgB,WAAW+7B,gBAAgB,oBAGnD,CAEOE,mBACHzzB,aAAa5K,KAAKu+B,aAClBv+B,KAAKu+B,iBAAch9B,CACvB,CAEO68B,mBACHxzB,aAAa5K,KAAKs+B,aAClBt+B,KAAKs+B,iBAAc/8B,CACvB,CAEOg8B,oBAAoBx5B,GACvB,IAAK/D,KAAKoB,OACN,OAGJ,MAAMA,EAAS2C,EAAE3C,OACb2C,EAAE3C,SAAWpB,KAAKoB,QAAUpB,KAAKoB,OAAO2E,SAAS3E,IAC7CpB,KAAKs+B,aACLt+B,KAAKo+B,mBAGJp+B,KAAKC,MAAMR,QACZO,KAAKT,OAAOwE,IAET/D,KAAKC,MAAMR,QAA0C,YAAhC2B,EAAOuP,aAAa,UAC5C3Q,KAAKu+B,aACLv+B,KAAKq+B,mBAETr+B,KAAKs+B,YAAcv7B,OAAO8H,WAAW7K,KAAKwE,KAAKjC,KAAKvC,KAAM+D,GAAI/D,KAAKw+B,SAAS,SAEpF,CAEOlB,kBACH,GAAKt9B,KAAKoB,OAIV,GAAIpB,KAAKC,MAAMsP,QAAS,CACpB,MAAMuvB,EAAW9+B,KAAKC,MAAMsP,QAAQtE,MAAM,KACrC6zB,EAAS3F,SAAS,YACf2F,EAAS3F,SAAS,UAClB,CAAC,QAAS,cAAc5Z,SAAS9U,IAC7BlH,SAASP,iBAAiByH,EAAOzK,KAAKu9B,qBAAqB,EAAK,IAGpEuB,EAAS3F,SAAS,WAClBn5B,KAAKoB,OAAO4B,iBAAiB,YAAahD,KAAKy9B,oBAAoB,GACnEz9B,KAAKoB,OAAO4B,iBAAiB,WAAYhD,KAAK09B,qBAAqB,IAEnEoB,EAAS3F,SAAS,WAClBn5B,KAAKoB,OAAO4B,iBAAiB,UAAWhD,KAAKo9B,MAAM,GACpB,WAA3Bp9B,KAAKC,MAAM8+B,YACX/+B,KAAKoB,OAAO4B,iBAAiB,WAAYhD,KAAK69B,kBAAkB,GAEhE79B,KAAKoB,OAAO4B,iBAAiB,WAAYhD,KAAKwE,MAAM,IAG5DxE,KAAKoB,OAAO4B,iBAAiB,UAAWhD,KAAK+9B,oBAAoB,GAAK,MAG1E/9B,KAAKoB,OAAO4B,iBAAiB,YAAahD,KAAKy9B,oBAAoB,GACnEz9B,KAAKoB,OAAO4B,iBAAiB,WAAYhD,KAAK09B,qBAAqB,GACnE19B,KAAKoB,OAAO4B,iBAAiB,UAAWhD,KAAK+9B,oBAAoB,GACjE/9B,KAAKoB,OAAO4B,iBAAiB,UAAWhD,KAAKo9B,MAAM,GACpB,WAA3Bp9B,KAAKC,MAAM8+B,YACX/+B,KAAKoB,OAAO4B,iBAAiB,WAAYhD,KAAK69B,kBAAkB,GAEhE79B,KAAKoB,OAAO4B,iBAAiB,WAAYhD,KAAKwE,MAAM,GAGxD,CAAC,QAAS,cAAc+a,SAAS9U,IAC7BlH,SAASP,iBAAiByH,EAAOzK,KAAKu9B,qBAAqB,EAAK,GAG5E,CAEOC,qBACEx9B,KAAKoB,SAIVpB,KAAKoB,OAAO8B,oBAAoB,YAAalD,KAAKy9B,oBAAoB,GACtEz9B,KAAKoB,OAAO8B,oBAAoB,WAAYlD,KAAK09B,qBAAqB,GACtE19B,KAAKoB,OAAO8B,oBAAoB,UAAWlD,KAAK+9B,oBAAoB,GACpE/9B,KAAKoB,OAAO8B,oBAAoB,UAAWlD,KAAKo9B,MAAM,GACtDp9B,KAAKoB,OAAO8B,oBAAoB,WAAYlD,KAAK69B,kBAAkB,GACnE79B,KAAKoB,OAAO8B,oBAAoB,WAAYlD,KAAKwE,MAAM,GAEvD,CAAC,QAAS,cAAc+a,SAAS9U,IAC7BlH,SAASL,oBAAoBuH,EAAOzK,KAAKu9B,qBAAqB,EAAK,IAE3E,CAEOh+B,OAAOwE,GACNA,GAAK/D,KAAKC,MAAM2E,UAChBb,EAAEC,iBAGFhE,KAAKC,MAAMV,QACXS,KAAKC,MAAMV,QAEnB,CAEON,SACH,IAAKe,KAAKC,MAAMR,QAAUO,KAAK6S,SAC3B,OAAO,KAGX,MAAM,EAqBF7S,KAAKC,OArBH,UACFZ,EAAS,OACTI,EAAM,OACN2B,EAAM,gBACNqgB,EAAe,UACfC,EAAS,UACTviB,EAAS,eACTwiB,EAAc,SACd1c,EAAQ,UACR2c,EAAS,OACTriB,EAAM,MACNm/B,EAAK,UACLr9B,EAAS,SACTuD,EAAQ,QACR2K,EAAO,kBACPuS,EAAiB,OACjBD,EAAM,eACNY,EAAc,YACdsc,EAAW,GACX7/B,GAEH,EADMkD,GAAU,YAGXlC,GAAUC,EAAAA,EAAAA,IAAgBC,IACZ,WAAhB2+B,EAA2B,mBAAqB,oBAChD/+B,KAAKC,MAAM0hB,gBACZ3hB,KAAKC,MAAMZ,WAER0iB,GAAgB5hB,EAAAA,EAAAA,IAAgBC,IAClB,WAAhB2+B,EAA2B,aAAe,cAC1C,OACA/+B,KAAKC,MAAMd,WACZa,KAAKC,MAAMZ,WAEd,OACIL,EAAAA,cAAAA,MAAAA,CAAKmG,IAAKnF,KAAKmF,KACXnG,EAAAA,cAACgjB,EAAAA,EAAa,CACV3gB,UAAWA,EACX5B,OAAQA,IAAU,EAClB2B,OAAQA,EACRjC,UAAW4iB,EACXL,UAAWA,EACXD,gBAAiBA,EACjBK,kBAAmBA,EACnBW,eAAgBA,EAChBZ,OAAQA,EACRD,UAAWA,EACXviB,UAAWA,GAEVW,KAAKC,MAAMV,QAAUS,KAAKC,MAAM++B,sBAAwBhgC,EAAAA,cAAAA,SAAAA,CACrDgC,KAAK,SAAS7B,UAAU,2BAA2B+B,QAASlB,KAAKC,MAAMV,OAAM,aAClE,UAAa,GAC5BP,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CAAAA,EACQoD,EAAU,CACdjD,UAAWe,EACXuB,UAAsBF,IAAhBw9B,GAA6C,YAAhBA,EAA4B,eAAYx9B,EAC3E4D,IAAKF,EACL/F,GAAIc,KAAKC,MAAMf,GAAE,cACJO,EACbw/B,YAAaj/B,KAAK29B,0BAClBuB,aAAcl/B,KAAK49B,2BACnBtjB,UAAWta,KAAK89B,iBAKpC,EAvVcT,EAAAA,aAAuC,CACjD59B,QAAQ,EACR0/B,oBAAoB,EACpBH,uBAAuB,EACvBtd,WAAW,EACXrgB,UAAW,MACXogB,gBAAiB,iBACjBid,MAAOvB,EACP59B,OAAQ,KACE,E,yFCZH,MAAM4B,UAA4BnC,EAAAA,cAG7C6C,YAAY5B,GACR6B,MAAM7B,GACND,KAAKmC,MAAQ,CAAE1C,QAAQ,GACvBO,KAAKwM,QAAUxM,KAAKwM,QAAQjK,KAAKvC,MACjCA,KAAKo/B,yBAA0B,CACnC,CAEOngC,SACH,MAAMogC,GAAcC,EAAAA,iBAAAA,mBAAoCt/B,KAAKC,MAAMs/B,cAC/Dx8B,OAAOoL,SAAS7F,WAAW6wB,SAASn5B,KAAKC,MAAMs/B,aAanD,OAXIv/B,KAAKC,MAAMk/B,qBAAuBE,IAC7Br/B,KAAKo/B,wBAIEp/B,KAAKmC,MAAM1C,SAEnBO,KAAKo/B,yBAA0B,IAJ/Bp/B,KAAK6D,SAAS,CAAEpE,QAAQ,IACxBO,KAAKo/B,yBAA0B,IAOhCpgC,EAAAA,cAACq+B,EAAAA,EAAO,eAAC59B,OAAQO,KAAKmC,MAAM1C,OAAQF,OAAQS,KAAKwM,SAAaxM,KAAKC,OAC9E,CAEQuM,UACJxM,KAAK6D,UAASyM,IAAa,CAAO7Q,QAAS6Q,EAAc7Q,UAC7D,E,gGCpCW,MAAM+/B,UAAgBxgC,EAAAA,cAK1BC,SACH,MAAM,EAA0Be,KAAKC,OAA/B,UAAEd,GAAqB,EAAPc,GAAK,YACrBw/B,EAAkB,eAAetgC,IAEvC,OAAQH,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CAAKG,UAAWsgC,GAAoBx/B,GAChD,EATcu/B,EAAAA,aAAuC,CACjDrgC,UAAW,uB,yHCANugC,EAAiC,QAAC,UAAEvgC,EAAY,GAAE,GAAED,EAAK,GAAII,IAAKuB,EAAM,MAAK,YAAE8+B,GAA+B,EAAfC,GAAa,mBACrH5gC,EAAAA,cAAC6B,EAAG,eACA1B,UAAWA,EAAWD,GAAIA,GAAQygC,EAAYE,uBAAuBF,GACjEC,GAAiB,C,gHCahB/E,EAA6B77B,EAAAA,YAAiB,CAAC,EAA0EmG,KAAO,IAAjF,UAAEhG,EAAY,GAAIG,IAAKuB,EAAM,MAAOqJ,QAAS41B,GAA2B,EAAfF,GAAa,YAC9H,OAAQ5gC,EAAAA,cAAC6B,EAAG,eAAC1B,UAAWA,GAAeygC,EAAa,CAAEz6B,IAAKA,IAAO,G,yFCd/D,MAAM46B,EAA4C9/B,IACrD,MAAMyD,EACF1E,IAAAA,cAAC67B,EAAAA,KAAI,CAACv7B,IAAK+c,EAAAA,UAAWld,UAAU,2BAC1Bc,EAAM+/B,iBAIVC,EACFjhC,IAAAA,cAACkN,EAAAA,MAAK,CACFkQ,WAAS,EACT5D,gBAAgB,aAChB/Y,OAAQQ,EAAMigC,YACd3gC,OAAQU,EAAMkgC,SACdhhC,UAAWiB,IAAW,qBAAsBH,EAAMG,YAClD2Z,OAAQ,OAIVqmB,EACFphC,IAAAA,cAACud,EAAAA,YAAW,CAAChd,OAAQU,EAAMkgC,WAG/B,OAAOnhC,IAAAA,aAAmBihC,EAAa,CAAC,EAAGG,EAAa18B,EAAK,C,8IClC1D,SAAS28B,IACZ,MAAMC,EAA0C/8B,SAASG,KAAK68B,uBAAuB,6BAG/EC,EAAoB9iB,MAAM+iB,KAAKH,GACrC,IAAK,MAAMlV,KAAQoV,EACfpV,EAAK9pB,MAAMkoB,MAAQ,IACnB4B,EAAK9pB,MAAM6C,OAAS,GAE5B,CAKO,MAAMu8B,EAAmB,EAMzB,SAASC,EAAwBl2B,GACpC,MAAMm2B,EAAWn2B,EAAM+D,cACvBoyB,EAASt/B,MAAMgX,WAAa,SAC5BsoB,EAAS96B,UAAU0R,OAAO,wCAE1B,MAAMqpB,EAAuBt9B,SAASG,KAAKgV,cAA8B,6BACrEmoB,IACAA,EAAqBv/B,MAAMgX,WAAa,SAEhD,CAqDA,SAASwoB,EAAU97B,GAEf,MAAO,CACH+7B,EAAG/7B,EAAKwkB,MAFU,EAGlBwX,EAAGh8B,EAAKb,OAHU,EAK1B,CASA,SAAS88B,EAAgBC,EAA2BC,EAAiBC,GACjE,MAAMC,EAAaP,EAAUK,GAEvB5oB,EAAsB,CACxBwoB,EAAGG,EAAeH,EAAIM,EAAWN,EACjCC,EAAGE,EAAeF,EAAIK,EAAWL,GAK/BM,EAAeF,EAAa5X,MAAQ2X,EAAS3X,MACnDjR,EAASwoB,EAAI38B,KAAKC,IAAID,KAAKwF,IAAI2O,EAASwoB,EAFnB,GAEqCO,GAE1D,MACMC,EAAeH,EAAaj9B,OAASg9B,EAASh9B,OAGpD,OAFAoU,EAASyoB,EAAI58B,KAAKC,IAAID,KAAKwF,IAAI2O,EAASyoB,EAFnB,GAEqCO,GAEnDhpB,CACX,CAQA,SAASipB,EAAkB/2B,EAAyBP,GAChD,MAAMu3B,EAAwBv3B,EAAQkoB,wBACtC,MAAO,CACH2O,EAAGt2B,EAAMi3B,MAAQD,EAAsBtmB,KAAOpY,OAAO4+B,YACrDX,EAAGv2B,EAAMm3B,MAAQH,EAAsBxmB,IAAMlY,OAAOmB,YAE5D,CAOA,SAAS29B,EAAkBC,GACvB,MAAO,GAAGA,KACd,CAiBA,SAASC,EAAmBC,EAA6CC,EAAuBx3B,GAC5Fu3B,EAAYE,gBAAgB,SAC5B,MAAMC,EAAeH,EAAYn8B,cAAeu8B,uBAAwB1pB,cAAc,OAEhF2pB,EAAYnyB,OAAO+xB,GAEnBK,EAA4B,CAC9B9Y,MAAO2Y,EAAalO,YACpB9vB,OAAQg+B,EAAaI,cAGnBC,EAAyB,CAC3BhZ,MAAO8Y,EAAmB9Y,MAAQ6Y,EAClCl+B,OAAQm+B,EAAmBn+B,OAASk+B,GAGxCL,EAAY1gC,MAAMkoB,MAAQqY,EAAkBW,EAAgBhZ,OAC5DwY,EAAY1gC,MAAM6C,OAAS09B,EAAkBW,EAAgBr+B,QAC7D69B,EAAY1gC,MAAMmhC,QAAU,IAE5B,MAAMvB,EAAiBM,EAAkB/2B,EAAO03B,GAC1CO,EAAc5B,EAAUwB,GACxBzgB,EACCqf,EAAeH,EAAI2B,EAAY3B,EADhClf,EAECqf,EAAeF,EAAI0B,EAAY1B,EAGhC2B,EAAkC,CACpC5B,EAAGG,EAAeH,EAAIsB,EACtBrB,EAAGE,EAAeF,EAAIqB,GAE1BM,EAAqB5B,GAAKlf,EAC1B8gB,EAAqB3B,GAAKnf,EAE1B,MAAM+gB,EAAsB3B,EAAgB0B,EAAsBL,EAAoBE,GAEtFR,EAAY1gC,MAAM6Z,KAAO0mB,GAAmBe,EAAoB7B,GAChEiB,EAAY1gC,MAAM2Z,IAAM4mB,GAAmBe,EAAoB5B,EACnE,CAOO,SAAS6B,EAAoBp4B,EAA2C43B,GAAkB,QAC7F,GAAmB,cAAf53B,EAAMzJ,MAAuC,eAAfyJ,EAAMzJ,MAAwC,aAAfyJ,EAAMzJ,KACnE,OAGJ,MAAM8hC,EAA2C,QAApC,EAAGr4B,EAAM+D,cAAc3I,qBAAa,OAAoB,QAApB,EAAjC,EAAmCk9B,0BAAkB,WAApB,EAAjC,EAAuDrqB,cAAc,OAChFoqB,GAILf,EAAmBe,EAAST,QAAAA,EAAa,IAAK53B,EAClD,CAQA,SAASu4B,EACLv4B,EAAyC03B,EAAgCc,GAAkC,MAE3G,IAAIC,EAAkB3/B,SAASG,KAAKgV,cAA8B,6BAC7DwqB,IACDA,EAAkB3/B,SAAS+H,cAAc,OACzC43B,EAAgBrvB,aAAa,QAAS,4BACtCtQ,SAASG,KAAK+T,YAAYyrB,IAG9B,MAAM/B,EAAkB,CACpB3X,MAAOyZ,EAAKhP,YACZ9vB,OAAQ8+B,EAAKV,cAGXF,EAAYnyB,OAAsC,QAAhC,EAAC+yB,EAAKtyB,aAAa,qBAAa,QAAI+vB,GAEtDQ,EAAiBM,EAAkB/2B,EAAO03B,GAC1CgB,EAjLV,SAA+BhB,GAC3B,MAAMiB,EAAqBjB,EAAakB,cAClCC,EAAoBnB,EAAaoB,aACjCC,EAAuBrB,EAAah+B,OAGpCs/B,EAFsBtB,EAAa3Y,MAEK8Z,EACxCI,EAAmBF,EAAuBJ,EAE1CO,EAAav/B,KAAKC,IAAIo/B,EAAiBC,GAE7C,MAAO,CACHla,MAAO8Z,EAAoBK,EAC3Bx/B,OAAQi/B,EAAqBO,EAErC,CAkK+BC,CAAsBzB,GAC3CG,EAA4B,CAC9B9Y,MAAO2Y,EAAalO,YACpB9vB,OAAQg+B,EAAaI,cAGnBsB,EAAe5C,EAAgBC,EAAgBC,EAAUmB,GAC/DW,EAAK3hC,MAAMgX,WAAa,QACxB2qB,EAAK3hC,MAAM6Z,KAAO0mB,EAAkBgC,EAAa9C,GACjDkC,EAAK3hC,MAAM2Z,IAAM4mB,EAAkBgC,EAAa7C,GAEhD,MAAM8C,EAAkB3B,EAAaxxB,aAAa,OAElDuyB,EAAgB5hC,MAAMgX,WAAa,QACnC4qB,EAAgB5hC,MAAMyiC,gBAzGf,QAyG0DD,MACjEZ,EAAgB5hC,MAAMkoB,MAAQqY,EAAkBV,EAAS3X,MAAQ6Y,GACjEa,EAAgB5hC,MAAM6C,OAAS09B,EAAkBV,EAAS3X,MAAQ6Y,GAElE,MAIM2B,EAAelD,EAJK,CACtBtX,MAAO8Y,EAAmB9Y,MAAQ2Z,EAAmB3Z,MACrDrlB,OAAQm+B,EAAmBn+B,OAASg/B,EAAmBh/B,SAGrD8/B,GAAuBD,EAAajD,EAAI8C,EAAa9C,GAAKsB,EAC1D6B,GAAuBF,EAAahD,EAAI6C,EAAa7C,GAAKqB,EAEhEa,EAAgB5hC,MAAM6iC,oBAAsBtC,EAAkBoC,GAC9Df,EAAgB5hC,MAAM8iC,oBAAsBvC,EAAkBqC,GAE9DhB,EAAgB5hC,MAAM+iC,eAClB,GAAGxC,EAAkBsB,EAAmB3Z,MAAQ6Y,MAAcR,EAAkBsB,EAAmBh/B,OAASk+B,KAEhH,MAAMiC,EAAcnC,EAAa/P,wBAAwBnX,IACzDioB,EAAgB5hC,MAAM2Z,IAAM4mB,EAAkByC,EAClD,CAEO,SAASC,EAA0B95B,GACtC,MAAMw4B,EAAOx4B,EAAM+D,cAAc3I,cAAeu8B,uBAChDa,EAAKn9B,UAAU0+B,IAAI,wCAInBxB,EAAmCv4B,EAFdA,EAAM+D,cAE6By0B,EAC5D,CAEO,SAASwB,EAAyBh6B,GACrC,GAAmB,cAAfA,EAAMzJ,MAAuC,eAAfyJ,EAAMzJ,MAAwC,aAAfyJ,EAAMzJ,KACnE,OAGJ,MAAMmhC,EAAe13B,EAAM+D,cAAcu0B,mBAAoBrqB,cAAc,OAG3EsqB,EAAmCv4B,EAAO03B,EAF7B13B,EAAM+D,cAGvB,CAEO,SAASk2B,EAAoBj6B,GAChC,IAAKlH,SAASG,KAAKgV,cAAc,6BAA8B,CAC3D,MAAMisB,EAAephC,SAAS+H,cAAc,OAC5Cq5B,EAAa9wB,aAAa,QAAS,4BACnCtQ,SAASG,KAAK+T,YAAYktB,EAAc,CAG5CJ,EAA0B95B,EAC9B,CAEO,SAASm6B,EAA2Bn6B,GAAyC,MAChF,GAAmB,cAAfA,EAAMzJ,MAAuC,eAAfyJ,EAAMzJ,MAAwC,aAAfyJ,EAAMzJ,KACnE,OAGJ,MAAM6E,EAAgB4E,EAAM+D,cAAc3I,cAAeA,cAIzDk8B,EAHgBt3B,EAAM+D,cAEoC,QAA3C,EAAG3I,EAAc8K,aAAa,qBAAa,QAAI,GAAG+vB,IAC1Bj2B,EAC3C,CAEO,SAASo6B,EAA0Bp6B,GACnB,cAAfA,EAAMzJ,MAAuC,eAAfyJ,EAAMzJ,MAAwC,aAAfyJ,EAAMzJ,OAIvEyJ,EAAM+D,cAAclN,MAAM6C,OAAS,IACnCsG,EAAM+D,cAAclN,MAAMkoB,MAAQ,IACtC,CAeO,SAASsb,EAAuBr6B,GAA8D,IAAnBs6B,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAgB,IAC9F,GAAmB,cAAft6B,EAAMzJ,MAAuC,eAAfyJ,EAAMzJ,MAAwC,aAAfyJ,EAAMzJ,KACnE,OAGJ,MAAMgkC,EAAYv6B,EAAM+D,cAAc3I,cAAek9B,mBAAoBrqB,cAAc,OACvFqpB,EAAmBiD,EAAWD,EAAOt6B,EACzC,CAKO,SAASw6B,IAEZ,MAAMrE,EAAWr9B,SAASG,KAAKgV,cAA8B,gCACzDkoB,IACAA,EAASt/B,MAAMgX,WAAa,SAC5BsoB,EAAS96B,UAAU0R,OAAO,yCAG9B,MAAMqpB,EAAuBt9B,SAASG,KAAKgV,cAA8B,6BACrEmoB,IACAA,EAAqBv/B,MAAMgX,WAAa,SAEhD,C,8BC7WA,IAAI4sB,EAAc,EAAQ,IAEtBC,EAAaC,UAEjBC,EAAOC,QAAU,SAAUC,EAAGC,GAC5B,WAAYD,EAAEC,GAAI,MAAML,EAAW,0BAA4BD,EAAYM,GAAK,OAASN,EAAYK,GACvG,C,6BCNA,IAAIE,EAAI,EAAQ,IACZC,EAAc,EAAQ,IACtBC,EAAY,EAAQ,IACpBC,EAAW,EAAQ,IACnBC,EAAoB,EAAQ,IAC5BC,EAAwB,EAAQ,MAChCx9B,EAAW,EAAQ,IACnBy9B,EAAQ,EAAQ,IAChBC,EAAe,EAAQ,KACvBC,EAAsB,EAAQ,KAC9BC,EAAK,EAAQ,KACbC,EAAa,EAAQ,KACrBC,EAAK,EAAQ,IACbC,EAAS,EAAQ,KAEjBC,EAAO,GACPC,EAAab,EAAYY,EAAKnL,MAC9Bxa,EAAO+kB,EAAYY,EAAK3lB,MAGxB6lB,EAAqBT,GAAM,WAC7BO,EAAKnL,UAAK55B,EACZ,IAEIklC,EAAgBV,GAAM,WACxBO,EAAKnL,KAAK,KACZ,IAEIuL,EAAgBT,EAAoB,QAEpCU,GAAeZ,GAAM,WAEvB,GAAIK,EAAI,OAAOA,EAAK,GACpB,KAAIF,GAAMA,EAAK,GAAf,CACA,GAAIC,EAAY,OAAO,EACvB,GAAIE,EAAQ,OAAOA,EAAS,IAE5B,IACIO,EAAMC,EAAKx+B,EAAOF,EADlB6zB,EAAS,GAIb,IAAK4K,EAAO,GAAIA,EAAO,GAAIA,IAAQ,CAGjC,OAFAC,EAAM7R,OAAO8R,aAAaF,GAElBA,GACN,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAIv+B,EAAQ,EAAG,MAC/C,KAAK,GAAI,KAAK,GAAIA,EAAQ,EAAG,MAC7B,QAASA,EAAQ,EAGnB,IAAKF,EAAQ,EAAGA,EAAQ,GAAIA,IAC1Bm+B,EAAK3lB,KAAK,CAAEomB,EAAGF,EAAM1+B,EAAO6+B,EAAG3+B,GAEnC,CAIA,IAFAi+B,EAAKnL,MAAK,SAAU8L,EAAGC,GAAK,OAAOA,EAAEF,EAAIC,EAAED,CAAG,IAEzC7+B,EAAQ,EAAGA,EAAQm+B,EAAKl+B,OAAQD,IACnC0+B,EAAMP,EAAKn+B,GAAO4+B,EAAEj9B,OAAO,GACvBkyB,EAAOlyB,OAAOkyB,EAAO5zB,OAAS,KAAOy+B,IAAK7K,GAAU6K,GAG1D,MAAkB,gBAAX7K,CA7BiB,CA8B1B,IAeAyJ,EAAE,CAAErkC,OAAQ,QAAS+lC,OAAO,EAAMC,OAbrBZ,IAAuBC,IAAkBC,IAAkBC,GAapB,CAClDxL,KAAM,SAAckM,QACA9lC,IAAd8lC,GAAyB1B,EAAU0B,GAEvC,IAAIC,EAAQ1B,EAAS5lC,MAErB,GAAI2mC,EAAa,YAAqBplC,IAAd8lC,EAA0Bd,EAAWe,GAASf,EAAWe,EAAOD,GAExF,IAEIE,EAAap/B,EAFb4V,EAAQ,GACRypB,EAAc3B,EAAkByB,GAGpC,IAAKn/B,EAAQ,EAAGA,EAAQq/B,EAAar/B,IAC/BA,KAASm/B,GAAO3mB,EAAK5C,EAAOupB,EAAMn/B,IAQxC,IALA69B,EAAajoB,EA3BI,SAAUspB,GAC7B,OAAO,SAAUtG,EAAGC,GAClB,YAAUz/B,IAANy/B,GAAyB,OACnBz/B,IAANw/B,EAAwB,OACVx/B,IAAd8lC,GAAiCA,EAAUtG,EAAGC,IAAM,EACjD14B,EAASy4B,GAAKz4B,EAAS04B,GAAK,GAAK,CAC1C,CACF,CAoBwByG,CAAeJ,IAEnCE,EAAc1B,EAAkB9nB,GAChC5V,EAAQ,EAEDA,EAAQo/B,GAAaD,EAAMn/B,GAAS4V,EAAM5V,KACjD,KAAOA,EAAQq/B,GAAa1B,EAAsBwB,EAAOn/B,KAEzD,OAAOm/B,CACT,G,gBCxGF,IAAI7B,EAAI,EAAQ,IACZhd,EAAa,EAAQ,KAKzBgd,EAAE,CAAErkC,OAAQ,SAAUsmC,MAAM,EAAMN,OAAQl3B,OAAOuY,YAAcA,GAAc,CAC3EA,WAAYA,G","sources":["webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/alert/Alert.tsx?44c5","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/back-to-top/BackToTop.tsx?0cf6","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/button/Button.tsx?457f","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/collapse/Collapse.tsx?27f6","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/common/KeyCodes.ts?0c24","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/common/stringExtensions.ts?f421","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/common/telemetryHelper.ts?068b","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/common/utilities.ts?93e6","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/ControlledDrawer.tsx?9a39","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/Drawer.tsx?da2c","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/fade/Fade.tsx?31ba","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/flipper/Flipper.tsx?36cd","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/form-builder/form-builder.tsx?c7f3","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/heading/Heading.tsx?c36b","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/incremental-quantity/IncrementalQuantity.tsx?1af1","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.tsx?1fd3","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.props.ts?d9d2","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/labeled-dropdown/LabeledDropdown.tsx?ab7c","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Portal.tsx?c937","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Modal.tsx?7d4b","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalBody.tsx?c097","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalFooter.tsx?8e31","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalHeader.tsx?627d","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/Pagination.tsx?ebf9","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationItem.tsx?6f25","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationLink.tsx?b97e","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/UncontrolledPagination.tsx?4877","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/popover/Popover.tsx?3cf4","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/popper-content/PopperContent.tsx?1148","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/popup-products/Popup-products.tsx?2288","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/popup/Popup.tsx?0173","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor-mode-selection.tsx?3c70","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor.tsx?ca15","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/progress/Progress.tsx?fbb5","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/quantity/Quantity.tsx?b66b","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/single-slide-carousel/SingleSlideCarousel.tsx?b47d","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/slider/SliderThumb.tsx?5d3f","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/slider/Slider.tsx?bb4c","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/table/Table.tsx?8faf","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/table/checkbox.tsx?36f8","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/Tooltip.tsx?8355","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/UncontrolledTooltip.tsx?30ec","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/waiting/Waiting.tsx?ba13","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/module.tsx?dadb","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/node.tsx?cdf8","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ImagefullView.tsx?adc9","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ZoomImage.tsx?3088","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/delete-property-or-throw.js?8052","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.array.sort.js?67f8","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.number.parse-float.js?9d30"],"sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport UncontrolledTooltip from '../tooltip/UncontrolledTooltip';\nimport { IAlertProps } from './Alert.props';\n\n/**\n * Alert component.\n */\nexport default class Alert extends React.PureComponent {\n\n public static defaultProps: Partial = {\n color: 'success',\n isOpen: true,\n tag: 'div',\n closeAriaLabel: 'Close',\n fade: true,\n assertive: false,\n includeAlertClass: true,\n transition: {\n ...Fade.defaultProps,\n unmountOnExit: true\n }\n };\n\n public render(): JSX.Element {\n const {\n id,\n className,\n closeClassName,\n cssModule,\n tag,\n toggle,\n color,\n isOpen,\n children,\n transition,\n fade,\n assertive,\n includeAlertClass,\n 'aria-label': ariaLabel\n } = this.props;\n\n const classes = includeAlertClass ? mapToCssModules(\n classNames(\n className,\n 'msc-alert',\n `msc-alert-${color}`\n ),\n cssModule\n ) : className;\n\n const closeClasses = mapToCssModules(classNames('close', closeClassName), cssModule);\n\n const alertTransition = {\n ...Fade.defaultProps,\n ...transition,\n baseClass: fade ? 'fade' : '',\n timeout: fade ? (transition ? transition.timeout : 0) : 0,\n appear: !!fade,\n enter: !!fade,\n exit: !!fade\n };\n\n const Tag = tag || 'div';\n const buttonId = fade ? 'buttonDismiss' : 'buttonFadeless';\n\n const innerContent = (\n <>\n {toggle ?
\n \n \n close\n \n
: null}\n {children}\n \n );\n\n const style = isOpen ? undefined : { display: 'none' };\n\n // When using assertive alerts, you need to have the assertive region rendered on the page from\n // the start. When using fade, the entire fade region doesn't render. So you gotta first wrap the\n // fade region in a tag, keep that tag hidden if the alert is closed.\n //\n // Note that this current approach will have some issues if tag is something like li. But that is a bridge\n // that can be crossed when/if we need to cross it this works for divs/spans so it should be good enough for now\n if (fade && assertive) {\n return (\n \n \n {innerContent}\n \n \n );\n } else if (fade) {\n return (\n \n {innerContent}\n \n );\n }\n return (\n \n {innerContent}\n \n );\n\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, TelemetryConstant } from '..';\nimport { IBackToTopProps } from './BackToTop.props';\n\nexport interface IBackToTopStateAttributes {\n 'aria-hidden': boolean;\n 'tabIndex': number;\n}\n\nexport interface IBackToTopState extends React.ComponentState {\n attributes: IBackToTopStateAttributes;\n}\n\n/**\n * Back To Top - This component is used to scroll to the top of the page.\n */\nexport default class BackToTop extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'btn btn-lg btn-secondary',\n delayInMs: 0,\n scrollStepInPx: 25\n };\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: IBackToTopProps) {\n super(props);\n this.state = { attributes: { 'aria-hidden': true, tabIndex: -1 } };\n this._reevaluatePosition = this._reevaluatePosition.bind(this);\n this._scrollToTop = this._scrollToTop.bind(this);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.BackToTop);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public componentDidMount(): void {\n window.addEventListener('resize', this._reevaluatePosition);\n window.addEventListener('scroll', this._reevaluatePosition);\n this._reevaluatePosition();\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._reevaluatePosition);\n window.removeEventListener('scroll', this._reevaluatePosition);\n }\n\n public render(): JSX.Element {\n const { className, threshold, delayInMs, scrollStepInPx, ...props } = this.props;\n const children = this.props.children || ();\n if (this.props.text) {\n return (\n \n {this._renderHeading(this.props.text)}\n );\n }\n return (\n \n {children}\n );\n\n }\n\n private readonly _renderHeading = (text: string): JSX.Element | undefined => {\n return (\n \n );\n };\n\n private _scrollStep(): void {\n if ((document.documentElement.scrollTop || document.body.scrollTop) === 0) {\n clearInterval(this.state.intervalId);\n this.setState({ intervalId: 0 });\n this._reevaluatePosition();\n }\n\n if (this.state.intervalId !== 0) {\n window.scrollTo(0, document.body.scrollTop - this.props.scrollStepInPx);\n document.body.scrollTop = document.body.scrollTop > 0 ? document.body.scrollTop - this.props.scrollStepInPx : 0;\n }\n }\n\n private _scrollToTop(e: any): void {\n e.preventDefault();\n const intervalId = setInterval(this._scrollStep.bind(this), this.props.delayInMs);\n this.setState({ intervalId });\n }\n\n private _reevaluatePosition(): void {\n // TODO:\n // change the threshold minimum to zero\n // add a prop for specifying multiplier of page height instead of absolute threshold\n // add clientWidth check to hide at < 768\n const scrollTop = window.pageYOffset || document.body.scrollTop;\n const height = Math.min(window.innerHeight, document.documentElement.clientHeight);\n const threshold = Math.min(this.props.threshold !== undefined ? this.props.threshold : -1, 100);\n const hide = scrollTop > 0 && threshold >= 0 ? scrollTop < (document.documentElement.scrollHeight - height) * threshold / 100 : scrollTop < height * 2;\n const tabIndexValue = hide ? -1 : 0;\n this.setState({ attributes: { 'aria-hidden': hide, tabIndex: tabIndexValue } });\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IButtonProps } from './Button.props';\n\n/**\n * Button component.\n */\nexport default class Button extends React.PureComponent {\n\n public static defaultProps: Partial = {\n tag: 'button',\n outline: false\n };\n\n public props: IButtonProps;\n\n constructor(props: IButtonProps) {\n super(props);\n this.props = props;\n this.onClick = this.onClick.bind(this); // Put this in componentDidMount\n }\n\n public render(): JSX.Element {\n const {\n active,\n block,\n className,\n cssModule,\n color,\n outline,\n size,\n tag,\n innerRef,\n ...attributes\n } = this.props;\n const classes = mapToCssModules(\n classNames(\n className,\n 'msc-btn',\n outline && color ? `btn-outline-${color}` : (color && outline === false ? `btn-${color}` : color === undefined && outline === true ? 'btn-outline' : ''),\n size ? `btn-${size}` : false,\n block ? 'btn-block' : false,\n { active, disabled: this.props.disabled }\n ),\n cssModule\n );\n\n let Tag = tag || 'button';\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n return (\n \n );\n }\n\n private readonly onClick = (e: React.MouseEvent) => {\n if (this.props.disabled) {\n e.preventDefault();\n\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Transition from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionStatuses, TransitionTimeouts } from '../common/utilities';\nimport { ICollapseProps } from './Collapse.props';\n\nexport interface ICollapseState {\n height: number | null;\n}\n\ntype IHash = {\n [key in TransitionStatuses]: string;\n};\n\n/**\n * This is the controlled version of a Collapse component, and as such the toggle behavior is expected to be handled in a parent component.\n * @see See [Uncontrolled Components - React](https://reactjs.org/docs/uncontrolled-components.html) to learn more.\n * @visibleName Collapse (controlled)\n */\nexport default class Collapse extends React.Component {\n public static defaultProps: Partial = {\n isOpen: false,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n };\n\n public props: ICollapseProps;\n\n public state: ICollapseState;\n\n private readonly _transitionStatusToClassHash: IHash = {\n entering: 'collapsing',\n entered: 'collapse show',\n exiting: 'collapsing',\n exited: 'collapse'\n };\n\n private readonly _tagRef: React.RefObject = React.createRef();\n\n constructor(props: ICollapseProps) {\n super(props);\n this.props = props;\n\n this.state = {\n height: 0\n };\n\n this._onEntering = this._onEntering.bind(this);\n this._onExit = this._onExit.bind(this);\n this._onExited = this._onExited.bind(this);\n this._onExiting = this._onExiting.bind(this);\n this._reevaluateHeight = this._reevaluateHeight.bind(this);\n }\n\n public componentDidMount(): void {\n window && window.addEventListener('resize', this._reevaluateHeight);\n }\n\n public componentDidUpdate(nextProps: ICollapseProps): void {\n if (nextProps.children !== this.props.children) {\n this._reevaluateHeight();\n }\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this._reevaluateHeight);\n }\n\n public shouldComponentUpdate(nextProps: ICollapseProps,\n nextState: ICollapseState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n isOpen,\n className,\n children,\n navbar,\n cssModule,\n\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n timeout,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n\n ...otherProps\n } = this.props;\n\n const Tag = tag || 'div';\n const transitionProps = {\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n };\n\n const { height } = this.state;\n const style = height === null || height === 0 ? null : { minHeight: height };\n\n return (\n \n {(status: TransitionStatuses) => {\n const collapseClass = this._getTransitionClass(status);\n const classes = mapToCssModules(classNames(className, collapseClass, navbar && 'navbar-collapse'), cssModule);\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n\n private _reevaluateHeight(): void {\n const node = this._tagRef.current;\n if (node !== null && node.firstElementChild && node.firstElementChild.scrollHeight > 0) {\n this.setState({ height: node.firstElementChild.scrollHeight });\n }\n }\n\n private _getTransitionClass(status: TransitionStatuses): string {\n return this._transitionStatusToClassHash[status] || 'collapse';\n }\n\n private _onEntering(node: HTMLElement, isAppearing: boolean): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onEntering) {\n this.props.onEntering(node, isAppearing);\n }\n }\n\n private _onExit(node: HTMLElement): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onExit) {\n this.props.onExit(node);\n }\n }\n\n private _onExiting(node: HTMLElement): void {\n this.setState({ height: 0 });\n\n if (this.props.onExiting) {\n this.props.onExiting(node);\n }\n }\n\n /**\n * Get Parent element.\n * @param node - HTML Element.\n */\n private readonly _updateParentElement = (node: HTMLElement): void => {\n const parentElement = node.parentElement;\n if (parentElement) {\n if (parentElement.classList.contains('collapse') && parentElement.classList.contains('show')) {\n parentElement.style.minHeight = 'auto';\n }\n this._updateParentElement(parentElement);\n }\n };\n\n private _onExited(node: HTMLElement): void {\n this.setState({ height: null });\n this._updateParentElement(node);\n\n if (this.props.onExited) {\n this.props.onExited(node);\n }\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum KeyCodes {\n Back = 8,\n Tab = 9,\n Enter = 13,\n Shift = 16,\n Ctrl = 17,\n Alt = 18,\n Break = 19,\n CapsLock = 20,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40,\n Print = 44,\n Insert = 45,\n Delete = 46,\n Colon2 = 59, // Opera and Firefox\n Equals2 = 61, // Opera\n Equals3 = 107, // Firefox\n Minus2 = 109, // Opera and Firefox\n Period = 190,\n WindowsLeft = 91,\n WindowsRight = 92,\n WindowsOpera = 219, // Opera\n Menu = 93,\n NumPad0 = 96,\n NumPad1 = 97,\n NumPad2 = 98,\n NumPad3 = 99,\n NumPad4 = 100,\n NumPad5 = 101,\n NumPad6 = 102,\n NumPad7 = 103,\n NumPad8 = 104,\n NumPad9 = 105,\n NumPadMultiply = 106,\n NumPadPlus = 107,\n NumPadMinus = 109,\n NumPadDot = 110,\n NumPadDivide = 111,\n Function1 = 112,\n Function2 = 113,\n Function3 = 114,\n Function4 = 115,\n Function5 = 116,\n Function6 = 117,\n Function7 = 118,\n Function8 = 119,\n Function9 = 120,\n Function10 = 121,\n Function11 = 122,\n Function12 = 123,\n NavigationUp = 138,\n NavigationDown = 139,\n NavigationLeft = 140,\n NavigationRight = 141,\n NavigationAccept = 142,\n NumLock = 144,\n ScrollLock = 145,\n Colon = 186,\n Equals = 187,\n Comma = 188,\n Minus = 189,\n ForwardSlash = 191,\n Tilde = 192,\n GamepadA = 195,\n GamepadB = 196,\n GamepadX = 197,\n GamepadY = 198,\n GamepadRightButton = 199,\n GamepadLeftButton = 200,\n GamepadLeftTrigger = 201,\n GamepadRightTrigger = 202,\n GamepadDPadUp = 203,\n GamepadDPadDown = 204,\n GamepadDPadLeft = 205,\n GamepadDPadRight = 206,\n GamepadSelect = 207,\n GamepadStart = 208,\n GamepadLeftThumbstick = 209,\n GamepadRightThumbstick = 210,\n GamepadLeftThumbstickUp = 211,\n GamepadLeftThumbstickDown = 212,\n GamepadLeftThumbstickRight = 213,\n GamepadLeftThumbstickLeft = 214,\n GamepadRightThumbstickUp = 215,\n GamepadRightThumbstickDown = 216,\n GamepadRightThumbstickRight = 217,\n GamepadRightThumbstickLeft = 218,\n OpenBracket = 219,\n BackSlash = 220,\n CloseBracket = 221,\n Quote = 222\n}\n\n/**\n * Here for test coverage.\n */\nexport class KeycodesClass {\n public testCoverage(): string {\n return ':(';\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport function format(formatSpecifier: string, ...parameters: any[]): string {\n if (!formatSpecifier) {\n return '';\n }\n\n return formatSpecifier.replace(/{(\\d+)}/g, (match: string, index: number) => {\n\n if (index >= parameters.length) {\n return match;\n }\n\n const value = parameters[index];\n\n if (typeof value !== 'number' && !value) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n return value.toString();\n });\n}\n\n/**\n * @name - isNullOrWhiteSpace\n * @description - Determines if the specified string is undefined, null, empty, or whitespace.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {boolean} - True if the value is undefined, null, empty, or whitespace, otherwise false.\n */\nexport function isNullOrWhiteSpace(value: string): boolean {\n return (!value) || (typeof value !== 'string') || (!trim(value));\n}\n\n/**\n * @name - trim\n * @description - Trims leading and trailing whitespace from the string.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {string} - The trimmed string.\n */\nexport function trim(value: string): string {\n // Any flavor of !value (ie. null/undefined/'') should return itself.\n if (!value || (typeof value !== 'string')) {\n return value;\n }\n\n if (value.trim) {\n return value.trim();\n }\n\n return value.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * @name - startsWith\n * @description - Determines if the specified string starts with the specified value.\n * @param ignoreCase\n * @export\n * @public\n * @param {string} value - The string to look in.\n * @param {string} prefix - The prefix to look for.\n * @returns {boolean} - True if the string starts with the prefix, otherwise false.\n */\nexport function startsWith(value: string, prefix: string, ignoreCase: boolean = true): boolean {\n if (!value || !prefix) {\n return false;\n }\n\n if (ignoreCase) {\n value = value.toLocaleLowerCase();\n prefix = prefix.toLocaleLowerCase();\n }\n\n // @ts-expect-error\n if ((value).startsWith) {\n return (value).startsWith(prefix);\n }\n\n return value.startsWith(prefix);\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IDictionary, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\n\nexport interface IContentAction {\n pgname: string;\n mname: string;\n etext?: string;\n recid?: string;\n etype?: string;\n}\n\nexport interface IPayLoad {\n contentCategory: string;\n contentAction: IContentAction;\n}\n\nexport interface ITelemetryContent {\n pageName: string;\n moduleName: string;\n telemetry?: ITelemetry;\n}\n\nexport enum TelemetryConstant {\n ShopSimliarLooks = 'shop similar looks',\n ShopSimliarDescription = 'shop similar description',\n PickupInStore = 'pick up in store',\n PreferredStore = 'set as preferred store',\n RemovePreferredStore = 'remove preferred store',\n IncrementQuantity = 'Increment quantity',\n DecrementQuantity = 'Decrement quantity',\n Checkout = 'Checkout',\n GuestCheckout = 'Guest checkout',\n BackToShopping = 'Back to shopping',\n ApplyPromoCode = 'Apply promo code',\n ViewMore = 'View more',\n OrderDetails = 'Order details',\n AvailablePoints = 'Available points',\n ExpiringPoints = 'Expiring points',\n AddUser = 'Add user',\n BuyItAgain = 'Buy it again',\n ContactNumber = 'ContactNumber',\n CheckoutChange = 'Change',\n Save = 'Save',\n SaveContinue = 'Save and Continue',\n Cancel = 'Cancel',\n DeliveryOptions = 'Delivery options',\n CheckoutTermsAndConditions = 'Checkout terms and conditions',\n ExpandAll = 'Expand all',\n CollapseAll = 'Collapse all',\n Expand = 'Expand',\n Collapse = 'Collapse',\n SignIn = 'Sign in',\n SignUp = 'Sign up',\n SignOut = 'Sign out',\n LoyaltyDetailLink = 'Loyalty detail ink',\n LoyaltyTermsLink = 'Loyalty terms link',\n LoyaltyTermsCancel = 'Loyalty terms cancel',\n LoyaltyTermsSubmit = 'Loyalty terms submit',\n LoyaltyTermsAgree = 'Loyalty terms agree',\n RemoveCartItem = 'Remove cart item',\n EditCart = 'Edit cart',\n BackToTop = 'Back to top',\n Logo = 'Logo',\n NavIcon = 'Navigation icon',\n ViewBagAndCheckout = 'View bag and checkout',\n ContinueShopping = 'Continue shopping',\n AddOrderTemplateToCart = 'Add order template to cart',\n PromoBannerClose = 'Close promo banner',\n WriteReview = 'Write Review',\n Next = 'Next',\n Previous = 'Previous',\n SubmitReview = 'Submit review',\n SuccessButton = 'Success',\n SearchStore = 'Search store',\n ShowAllStore = 'Show all store',\n ToggleMapView = 'Toggle map view',\n PrivacyPolicy = 'Privacy policy',\n ViewShoppingBag = 'View shopping bag',\n MyProfile = 'My profile',\n seeDetails = 'See Details'\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param pageName\n * @param {string} moduleName - Module Name.\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n * @param telemetry\n */\nexport function getTelemetryObject(pageName: string, moduleName: string, telemetry: ITelemetry): ITelemetryContent {\n const telemetryContent: ITelemetryContent = { pageName, moduleName, telemetry };\n return telemetryContent;\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param {string} moduleName - Module Name.\n * @param eventType\n * @param telemetryContent\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n */\nexport function getPayloadObject(eventType: string, telemetryContent: ITelemetryContent, etext: string, recid?: string): IPayLoad {\n const pageName = telemetryContent && telemetryContent.pageName ? telemetryContent.pageName : '';\n const moduleName = telemetryContent && telemetryContent.moduleName ? telemetryContent.moduleName : '';\n const payload: IPayLoad = {\n contentCategory: eventType,\n contentAction: {\n pgname: pageName,\n mname: moduleName,\n etext,\n recid,\n etype: eventType\n }\n };\n return payload;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param telemetryContent\n * @param {IPayLoad} payLoad - Pay Load.\n */\nexport function getTelemetryAttributes(telemetryContent: ITelemetryContent, payLoad: IPayLoad): IDictionary | undefined {\n const contentData = payLoad.contentAction.recid ? payLoad.contentAction.recid : payLoad.contentAction.etext;\n const attributes: IDictionary | undefined = telemetryContent &&\n telemetryContent.telemetry &&\n telemetryContent.telemetry.setTelemetryAttribute &&\n telemetryContent.telemetry.setTelemetryAttribute(contentData!, payLoad.contentAction);\n return attributes;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param {IPayLoad} payLoad - Pay Load.\n */\n\nexport const onTelemetryClick = (telemetryContent: ITelemetryContent, payLoad: IPayLoad, linkText: string) => () => {\n payLoad.contentAction.etext = linkText;\n if (telemetryContent && telemetryContent.telemetry) {\n telemetryContent.telemetry.logEvent(TelemetryEvent.Custom, payLoad);\n }\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport interface IClientDimension {\n width: number;\n height: number;\n}\n\n/* A type safe Dictionary */\nexport interface IDictionaryStringString {\n [key: string]: string;\n}\n\n/**\n * @interface IGrid\n * @classdesc - The IGrid interface contract.\n * @export\n */\nexport interface IGrid {\n rows: number;\n columns: number;\n}\n\n/**\n * Clamp position between a range.\n * @param {number} value - Value to be clamped.\n * @param {number} min - Minimum value in range.\n * @param {number} max - Maximum value in range.\n * @returns The clap value if min passed is less than max else returns 0.\n */\nexport function clamp(value: number, min: number, max: number): number {\n if (min <= max) {\n return Math.min(Math.max(value, min), max);\n }\n return 0;\n\n}\n\n/**\n * Upper case the first letter of the string, if only one char exists on the string, uppercase it.\n * @param {string} value - Value to be upper cased.\n * @returns The upper cased string of the passed value, if it has just one char uppercase it.\n */\nexport function toUpperCaseFirstChar(value: string): string {\n if (value.length > 1) {\n return value.charAt(0).toUpperCase() + value.substr(1);\n }\n if (value.length === 1) {\n return value.charAt(0).toUpperCase();\n }\n return '';\n\n}\n\nexport function htmlCollectionToArray(nodeList: HTMLCollection): HTMLElement[] {\n return Array.prototype.slice.call(nodeList);\n}\n\nexport function getCSS(element: HTMLElement, property: string): string {\n let style = element.style[property];\n\n if (!style) {\n style = getComputedStyle(element)[property];\n }\n\n return style;\n}\n\nexport function createThrottledEvent(listener: EventListener, threshold: number):\n(event: Event) => void {\n let timer: any;\n let last = 0;\n\n return (event: Event) => {\n const now = Date.now();\n\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n\n if (last && (now < last + threshold)) {\n timer = setTimeout(() => {\n last = Date.now();\n listener(event);\n },\n threshold - (now - last));\n } else {\n last = now;\n listener(event);\n }\n };\n}\n\nexport function addThrottledEvent(target: EventTarget, name: string, listener: EventListener, threshold: number = 150):\n(event: Event) => void {\n\n const throttledEventHandler = createThrottledEvent(listener, threshold);\n target.addEventListener(name, throttledEventHandler, false);\n\n return throttledEventHandler;\n}\n\n/* RTS utilities */\n/* TODO: Using any here for now, need to convert cssmodules into a dictionary in all modules */\nexport function mapToCssModules(className: string = '', cssModule: any): string {\n if (!cssModule) {\n return className;\n }\n\n return className\n .split(' ')\n .map((c: string) => cssModule[c] || c)\n .join(' ');\n}\n\nexport function isRef(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (>target).current !== undefined;\n}\n\nexport function isElement(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (target).addEventListener !== undefined;\n}\n\nexport const keyCodes = {\n esc: 27,\n space: 32,\n tab: 9,\n up: 38,\n down: 40,\n enter: 13\n};\n\ninterface IMap {\n [key: string]: T;\n}\nconst warned: IMap = {};\n\nexport function warnOnce(message: string): void {\n if (!warned[message]) {\n if (typeof console !== 'undefined') {\n throw new Error(message);\n }\n warned[message] = true;\n }\n}\n\nexport const canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nexport function findDOMElements(target: string): NodeListOf | string | null {\n try {\n if (typeof target === 'string' && canUseDOM) {\n let selection = document.querySelectorAll(target);\n\n if (selection.length === 0) {\n selection = document.querySelectorAll(`#${target}`);\n }\n\n if (selection.length === 0) {\n throw new Error();\n }\n return selection;\n }\n\n return target;\n } catch {\n console.error(`The target '${target}' could not be identified in the dom, tip: check spelling`);\n return null;\n }\n}\n\nexport function getTarget(target: string | HTMLElement | React.Ref): HTMLElement | React.Ref | null | string {\n const selection = findDOMElements(target);\n if (selection && selection.length > 0) {\n return selection[0];\n }\n\n return target;\n}\n\nexport function getTargetElement(target: string | HTMLElement | React.Ref): HTMLElement | null {\n const targetElement = getTarget(target);\n if (isRef(targetElement)) {\n return (>targetElement).current;\n }\n if (isElement(targetElement)) {\n return targetElement;\n }\n\n return null;\n}\n\nexport const TransitionTimeouts = {\n Fade: 150,\n Collapse: 350,\n Modal: 300,\n Carousel: 600\n};\n\nexport type TransitionStatuses = 'entering' | 'entered' | 'exiting' | 'exited';\n\nexport const focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '[tabindex]:not(.modal)',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])'\n];\n\n/**\n * @name - extend\n * @description - extends an object with properties/values from one or more others.\n * @export\n * @public\n * @param {any[]} parameters - The objects to merge together.\n * @returns {any} - The extended object.\n */\n\nexport function extend(...parameters: any[]): any {\n if (!parameters || parameters.length === 0) {\n return null;\n }\n\n const recursive = (typeof (parameters[0]) === 'boolean') && parameters[0];\n\n if (parameters.length < 2) {\n return recursive ? null : parameters[0];\n }\n\n if (recursive && (parameters.length < 3)) {\n return parameters[1];\n }\n\n const target = recursive ? parameters[1] : parameters[0];\n\n for (let paramIndex = recursive ? 2 : 1; paramIndex < parameters.length; paramIndex++) {\n if (parameters[paramIndex] !== undefined) {\n for (const key of Object.keys(parameters[paramIndex])) {\n if (parameters[paramIndex].hasOwnProperty(key)) {\n const source = parameters[paramIndex][key];\n\n if (recursive) {\n let isSourceArray = Array.isArray ? Array.isArray(source) : ({}).toString.call(source) === '[object Array]';\n let isTargetArray = !!target[key] && (Array.isArray ? Array.isArray(target[key]) : ({}).toString.call(target[key]) === '[object Array]');\n let isSourceObject = !isSourceArray && (typeof source === 'object');\n let isTargetObject = !isTargetArray && !!target[key] && (typeof target[key] === 'object');\n\n if (isSourceArray && isTargetArray) {\n for (const [arrayIndex, element] of source.entries()) {\n isSourceArray = Array.isArray ? Array.isArray(element) : ({}).toString.call(element) === '[object Array]';\n isTargetArray = !!target[key][arrayIndex] && (Array.isArray ? Array.isArray(target[key][arrayIndex]) : ({}).toString.call(target[key][arrayIndex]) === '[object Array]');\n isSourceObject = !isSourceArray && (typeof element === 'object');\n isTargetObject = !isTargetArray && !!target[key][arrayIndex] && (typeof target[key][arrayIndex] === 'object');\n\n if (isSourceArray) {\n target[key][arrayIndex] = extend(true, isTargetArray ? target[key][arrayIndex] : [], element);\n } else if (isSourceObject) {\n target[key][arrayIndex] = extend(true, isTargetObject ? target[key][arrayIndex] : {}, element);\n } else {\n target[key][arrayIndex] = element;\n }\n }\n continue;\n } else if (isSourceArray) {\n target[key] = extend(true, [], source);\n continue;\n } else if (isSourceObject) {\n target[key] = extend(true, isTargetObject ? target[key] : {}, source);\n continue;\n }\n }\n\n target[key] = source;\n }\n }\n }\n }\n\n return target;\n}\n\n/**\n * @name - getDimensions\n * @description - Gets the dimension of an element.\n * @export\n * @param {HTMLElement} containerElement - The container element.\n * @returns {IClientDimension} - The client dimension.\n * {IClientDimension.width} - The client width\n * {IClientDimension.height} - The client height.\n */\nexport function getDimensions(containerElement: HTMLElement): IClientDimension | null {\n if (containerElement === null) {\n return null;\n }\n return {\n width: containerElement.clientWidth,\n height: containerElement.clientHeight\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\nexport interface IControlledDrawerState {\n isOpen: boolean;\n}\n\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * ControlledDrawer - This is a full width controlled collapse where the button glyph changes\n * when the drawer is open and closed. The toggle function can be managed by the parent.\n */\n\nexport default class ControlledDrawer extends React.PureComponent {\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n private isExpanded: boolean;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IDrawerProps) {\n super(props);\n const { openGlyph, closeGlyph } = this.props;\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\n this.isExpanded = this.state.isOpen;\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName || '');\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || closeGlyph || '']);\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || '']);\n this.drawerCloseGlyph = classnames([this.drawerGlyphClass, closeGlyph || '']);\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n collapseProps.isOpen = this.isManuallyToggled ? this.state.isOpen : collapseProps.isOpen || false;\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer', this.props.className || '');\n this.isManuallyToggled = false;\n this.isExpanded = collapseProps.isOpen;\n this.state = { isOpen: collapseProps.isOpen };\n this.payLoad.contentAction.etext = collapseProps.isOpen ? TelemetryConstant.Collapse : TelemetryConstant.Expand;\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const { toggleButtonText } = this.props;\n const drawerButtonTextClass = classnames('drawer__buttontext', this.props.toggleButtonClassName || '');\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n {this._generateTitle(classnames(drawerButtonTextClass, '__start'), toggleButtonText.toString())}\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n const isStart = this.props.glyphPlacement === 'start';\n const additionalClassName = `__${isStart ? 'end' : 'start'}`;\n return (\n <>\n {isStart && this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n {this._generateTitle(classnames(drawerButtonTextClass, additionalClassName), this.props.toggleButtonText.toString())}\n \n );\n }\n\n private _generateTitle(titleLClassName: string, title: string): JSX.Element {\n if (this.props.onTextChange && this.props.requestContext) {\n return (\n \n );\n }\n return (\n \n {title}\n \n );\n\n }\n\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n const glyphClass = `${collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph} ${location}`;\n return (\n \n );\n }\n\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isExpanded = !this.isExpanded;\n this.setState({ isOpen: this.isExpanded });\n this.isManuallyToggled = true;\n if (this.props.onToggle) {\n this.props.onToggle(this.state);\n }\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\n/**\n * Drawer State Interface\n */\nexport interface IDrawerState {\n isOpen: boolean;\n buttonText?: string;\n}\n\n/**\n * Glyph placement type.\n */\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * Drawer - This is a full width uncontrolled collapse where the button glyph changes\n * when the drawer is open and closed.\n */\n\nexport default class Drawer extends React.PureComponent {\n public state: IDrawerState;\n\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n constructor(props: IDrawerProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps?.isOpen) ?? false, buttonText: '' };\n this.drawerGlyphClass = classnames('drawer__glyph',\n\n this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : (this.props.closeGlyph ? this.props.closeGlyph : ''));\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : '');\n this.drawerCloseGlyph = classnames(this.drawerGlyphClass,\n\n this.props.closeGlyph ? this.props.closeGlyph : '');\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n\n // If the drawer is manually toggled by pressing the button, then we use the internal state\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\n collapseProps.isOpen = this.state.isOpen;\n } else {\n this.state.isOpen = collapseProps.isOpen;\n }\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer',\n\n this.props.className ? this.props.className : '');\n this.isManuallyToggled = false;\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n /**\n * Method generate drawer inner markup.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const drawerButtonTextClass = classnames('drawer__buttontext',\n\n this.props.toggleButtonClassName ? this.props.toggleButtonClassName : '');\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n \n {this.props.toggleButtonText}\n \n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n if (this.props.glyphPlacement === 'start') {\n return (\n <>\n {this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n \n {this.props.toggleButtonText}\n \n \n );\n }\n return (\n {this.props.toggleButtonText}\n );\n\n }\n\n /**\n * Method generate glyph markup.\n * @param location -Glyph icon location.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\n glyphClass = `${glyphClass} ${location}`;\n return (\n \n );\n }\n\n /**\n * Method on click of drawer button.\n * @param e -Mouse event for drawer button.\n */\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isManuallyToggled = true;\n\n if (this.props.onToggle) {\n this.setState({ isOpen: !this.state.isOpen, buttonText: e.currentTarget.innerText }, () => this.props.onToggle && this.props.onToggle(this.state));\n } else {\n this.setState({ isOpen: !this.state.isOpen });\n }\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING, UNMOUNTED } from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionTimeouts } from '../common/utilities';\nimport { IFadeProps } from './Fade.props';\n\nexport interface IFadeState {\n fadeIn: boolean;\n}\n\ntype TransitionStatus =\n typeof ENTERING |\n typeof ENTERED |\n typeof EXITING |\n typeof EXITED |\n typeof UNMOUNTED;\n\n/**\n * Fade component.\n */\nexport default class Fade extends React.Component {\n\n public static defaultProps: Partial = {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n in: true,\n appear: true,\n enter: true,\n exit: true\n };\n\n public shouldComponentUpdate(nextProps: IFadeProps): boolean {\n if (nextProps.in || (this.props.in !== nextProps.in)) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n className,\n cssModule,\n baseClass,\n baseClassActive,\n\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout: timeoutOrUndefined,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children,\n\n ...otherProps } = this.props;\n const timeout = timeoutOrUndefined !== undefined ? timeoutOrUndefined : TransitionTimeouts.Fade;\n\n const transitionProps = {\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children\n };\n\n const Tag = this.props.tag ? this.props.tag : 'div';\n const baseClassAlways = baseClass || 'fade';\n const baseClassActiveAlways = baseClassActive || 'show';\n\n return (\n \n {(status: TransitionStatus) => {\n const isActive = status === 'entered';\n const classes = mapToCssModules(\n classNames([\n className,\n baseClassAlways,\n isActive && baseClassActiveAlways\n ]),\n cssModule\n );\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, UncontrolledTooltip } from '..';\nimport { IFlipperProps } from './Flipper.props';\n\nexport type FlipperSize = 'small' | 'medium' | 'large';\n\n/**\n * Flipper Component - This component is used to add\n * flippers to a carousel/jumbotron.\n */\nexport default class Flipper extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n constructor(props: IFlipperProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, this.props.telemetryLabel!);\n }\n\n public render(): JSX.Element {\n const { className, glyphProps, size, displayTooltip, disabled, telemetryContent, telemetryLabel, ...props } = this.props;\n const sizeClass = size === 'small' ? 'msc-flipper__small' : (size === 'large' ? 'msc-flipper__large' : '');\n const classNames = className ? `msc-flipper ${sizeClass} ${className}` : `msc-flipper ${sizeClass}`;\n const attribute = getTelemetryAttributes(telemetryContent!, this.payLoad);\n\n // Do not flip next/previous glyphs in RTL (commonly chevron-left and chevron-right)\n glyphProps.className = `${glyphProps.className} msc-no-rtl-flip-required`;\n\n return (\n <>\n \n \n \n {displayTooltip && !disabled && \n {' '}\n {props['aria-label']}\n }\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ArrayExtensions, Dictionary, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport Button from '../button/Button';\nimport { IFormKeyProps } from './form-builder.props';\n\n/**\n * The state of the form builder.\n */\nexport interface IFormBuilderState {\n\n /**\n * The captured values.\n */\n values: string[];\n\n /**\n * If the form has been submitted.\n */\n isSubmitted: boolean;\n}\n\n/**\n * The properties of the form builder.\n */\nexport interface IFormBuilderProps {\n\n /**\n * The component showing confirmation after form submitted successfully.\n */\n confirmationComponent: React.ReactNode;\n\n /**\n * The heading for the component shown above the input boxes.\n */\n heading: string;\n\n /**\n * The text shown on the submit button.\n */\n submitButtonText: string;\n\n /**\n * The keys of the form values to capture, which will be shown as labels for the inputs.\n */\n keys: IFormKeyProps[];\n\n /**\n * The error message shown when submitting the form and required value is missing.\n */\n requiredValueMissingErrorMessage: string;\n\n /**\n * The action to perform when the form is submitted.\n * @param { formKey: IFormKeyProps, value: string[] } entry - The form data as key-value pairs to submit.\n */\n onSubmit(entry?: { formKey: IFormKeyProps; value: string }[]): Promise;\n}\n\n/**\n * The interface for properties of form builder error.\n */\nexport interface IFormBuilderErrorProps {\n errorMessage?: string;\n}\n\n/**\n * The error component in form builder.\n * @param errorProperties - The error properties.\n * @param errorProperties.errorMessage - The error message to show.\n * @returns The error component.\n */\nexport const FormBuilderErrorComponent: React.FC = ({\n errorMessage\n}) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n {errorMessage}\n \n \n );\n};\n\n/**\n * The component to capture form data.\n */\nexport class FormBuilder extends React.Component {\n private readonly requiredValueMissing: Dictionary;\n\n public constructor(props: IFormBuilderProps) {\n super(props);\n this.state = { values: this.props.keys.map(() => ''), isSubmitted: false };\n\n // Setup a boolean dictionary to keep track if required value is missing for every field to submit.\n this.requiredValueMissing = new Dictionary();\n for (const formKey of this.props.keys) {\n if (formKey.resourceId) {\n this.requiredValueMissing.setValue(formKey.resourceId, formKey.isRequired ?? false);\n }\n }\n }\n\n public shouldComponentUpdate(nextProps: IFormBuilderProps, nextState: IFormBuilderState): boolean {\n if (this.props.heading !== nextProps.heading ||\n this.props.confirmationComponent !== nextProps.confirmationComponent ||\n this.props.submitButtonText !== nextProps.submitButtonText ||\n this.props.requiredValueMissingErrorMessage !== nextProps.requiredValueMissingErrorMessage) {\n return true;\n }\n\n // If any form key has changed, the component should update.\n if (!this.props.keys.every((formKey: IFormKeyProps, index: number) => {\n return nextProps.keys[Number(index)].isRequired === formKey.isRequired &&\n nextProps.keys[Number(index)].resourceId === formKey.resourceId &&\n nextProps.keys[Number(index)].resourceValue === formKey.resourceValue;\n })) {\n return true;\n }\n\n // If any value has changed, the component should update.\n if (this.state.isSubmitted !== nextState.isSubmitted ||\n !this.state.values.every((value: string, index: number) => {\n return value === nextState[Number(index)];\n })) {\n return true;\n }\n\n return false;\n }\n\n public render(): JSX.Element {\n return (\n <>\n {\n !this.state.isSubmitted && ArrayExtensions.hasElements(this.props.keys) &&\n
\n

\n {this.props.heading}\n

\n
\n \n {\n this.props.keys.filter((formKey: IFormKeyProps) => {\n return !ObjectExtensions.isNullOrUndefined(formKey.resourceId) &&\n !ObjectExtensions.isNullOrUndefined(formKey.resourceValue);\n }).map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return (\n
\n \n
\n );\n })\n }\n
\n \n {this.props.submitButtonText}\n \n
\n \n
\n
\n }\n {\n this.state.isSubmitted &&\n this.props.confirmationComponent\n }\n \n );\n }\n\n private get isAnyRequiredValueMissing(): boolean {\n const notFound: number = -1;\n return this.requiredValueMissing.getValues().findIndex((isMissing: boolean) => isMissing) !== notFound;\n }\n\n /**\n * The action to perform when the submit button is clicked.\n * @param event - The click event.\n * @returns The async result.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n const formData: { formKey: IFormKeyProps; value: string }[] = this.props.keys.map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return {\n formKey: { resourceId: formKey.resourceId!, resourceValue: formKey.resourceValue },\n value: currentValue\n };\n });\n await this.props.onSubmit(formData);\n this.setState((previousState: Readonly) => {\n return { values: previousState.values, isSubmitted: true };\n });\n };\n\n /**\n * The action to perform when any input in the form has changed.\n * @param event - The input change event.\n * @returns The async result.\n */\n private readonly _onInputChange = async (event: React.ChangeEvent): Promise => {\n event.preventDefault();\n const changedValueIndex: number = Number.parseInt(event.target.getAttribute('data-index') ?? '', 10);\n if (ObjectExtensions.isNullOrUndefined(changedValueIndex)) {\n return Promise.reject(new Error('form-builder: invalid value index.'));\n }\n const newState = {\n values: this.state.values.map((value: string, index: number) => {\n const currentKey: IFormKeyProps = this.props.keys[Number(index)];\n if (index === changedValueIndex && currentKey.resourceId) {\n this.requiredValueMissing.setValue(currentKey.resourceId, (currentKey.isRequired ?? false) && event.target.value === '');\n return event.target.value;\n }\n return value;\n })\n };\n this.setState(newState);\n return Promise.resolve();\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingProps } from './Heading.props';\n\n/**\n * Heading component.\n * @extends {React.PureComponent}\n */\n\nconst Heading = ({ headingTag: HTag = 'h1', tag: Tag, className, text }: IHeadingProps) => (\n Tag ? \n {text}\n : \n {text}\n \n);\n\nexport default Heading;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IRequestContext } from '@msdyn365-commerce/core';\nimport { debounce } from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isMobile, VariantType } from '..';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '../common/telemetryHelper';\nimport { IIncrementalQuantityProps } from './IncrementalQuantity.props';\n\n/**\n * IIncrementalQuantityState interface.\n */\ninterface IIncrementalQuantityState {\n currentInput: number;\n isUpdating: boolean;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class IncrementalQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private readonly _minValue: number;\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IIncrementalQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1, isUpdating: false };\n this._onIncrement = this._onIncrement.bind(this);\n this._onDecrement = this._onDecrement.bind(this);\n this._handleChange = this._handleChange.bind(this);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n this._minValue = this.props.min ?? IncrementalQuantity.defaultProps.min!;\n }\n\n public static getDerivedStateFromProps(props: Readonly, state: IIncrementalQuantityState): IIncrementalQuantityState {\n const nextState = { ...state };\n\n if (props.disabled && !state.isUpdating) {\n nextState.isUpdating = true;\n }\n\n if (!props.disabled && state.isUpdating) {\n nextState.currentInput = props.currentCount ?? 1;\n nextState.isUpdating = false;\n }\n return nextState;\n }\n\n public render(): JSX.Element {\n const {\n min,\n max\n } = this.props;\n\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const decrementDisabled = this.state.currentInput <= (min ?? 1) || this.props.isGiftCard;\n const incrementDisabled = this.state.currentInput >= max || this.props.isGiftCard;\n const currentValue = this.state.currentInput;\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n const ariaLablelText = `${this.props.inputQuantityAriaLabel ?? ''} ${this.state.currentInput}`;\n\n let extraClassDecrement = '';\n if (decrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassDecrement = 'disabled';\n\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassDecrement = 'transition';\n }\n let extraClassIncrement = '';\n if (incrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassIncrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassIncrement = 'transition';\n }\n\n return (\n <>\n
\n \n \n \n \n \n \n \n
\n \n );\n }\n\n /**\n * It checks if its in mobile view or not.\n * @returns Boolean.\n */\n private readonly isMobileView = (): boolean => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n return isMobileCheck === 'xs' || isMobileCheck === 'sm';\n };\n\n private _onIncrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity < this.props.max) {\n invokeCallback = true;\n updatedQuantity = currQuantity + 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this.props.max;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _onDecrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity >= this._minValue) {\n invokeCallback = true;\n updatedQuantity = currQuantity - 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this._minValue;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n let currentValue = Number.parseInt((e.target.value), 10);\n if (!Number.isNaN(currentValue)) {\n currentValue = Math.min(this.props.max, Math.max(this._minValue, currentValue));\n }\n this.setState(\n { currentInput: currentValue }\n );\n }\n\n /**\n * Updates html element and triggers callbacks whenever state is changed.\n */\n private readonly _handleUpdateState = () => {\n debounce(() => {\n if (Number.isNaN(this.state.currentInput)) {\n return;\n }\n\n // Due of usage debouncer, we may ignore onChange return value\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n const inputElement = this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', this.state.currentInput.toString());\n inputElement.setAttribute('value', this.state.currentInput.toString());\n }\n }, 200)();\n };\n\n /**\n * Validates min and updates.\n */\n private readonly _validateMin = (): void => {\n if (Number.isNaN(this.state.currentInput)) {\n this.setState(\n { currentInput: this._minValue },\n this._handleUpdateState\n );\n } else {\n const currentValue = Math.min(this.props.max, Math.max(this._minValue, this.state.currentInput));\n if (currentValue !== this.state.currentInput) {\n this.setState(\n { currentInput: currentValue },\n this._handleUpdateState\n );\n } else {\n this._handleUpdateState();\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365 from '@msdyn365-commerce/core';\n\nimport { IMobileProps, VariantType } from './isMobile.props';\n\n/**\n * IsMobile component.\n * @param props\n */\nexport const isMobile = (props: IMobileProps) => {\n const { variant, context } = props;\n switch (variant) {\n case VariantType.Browser:\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context?.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n\n }\n }\n\n return 'lg';\n case VariantType.Viewport:\n const viewport = context?.device?.Type === 'Mobile' ? 'xs' : 'lg';\n return viewport;\n default:\n return 'lg';\n }\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nexport enum VariantType {\n Browser,\n Viewport\n}\n\n/**\n * IsMobile properties.\n */\nexport interface IMobileProps {\n\n /**\n * Contains variant i.e browser | viewport.\n */\n variant?: VariantType;\n context?: Msdyn365.IRequestContext;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { ILabeledDropdownProps } from './LabeledDropdown.props';\n\nexport interface ILabeledDropdownState {\n selectedIndex: number;\n}\n\n/**\n * Labeled Dropdown component.\n */\nexport default class LabeledDropdown extends React.PureComponent {\n public static defaultProps: Partial = {\n toggleColor: 'link'\n };\n\n constructor(props: ILabeledDropdownProps) {\n super(props);\n this._onSelectOption = this._onSelectOption.bind(this);\n const selectedKey = this.props.selectedOption.key;\n const keys = this.props.dropdownOptions.map(option => (option.key));\n this.state = { selectedIndex: keys.indexOf(selectedKey) };\n }\n\n public render(): JSX.Element {\n const {\n labelText,\n labelClassname,\n dropdownId,\n dropdownOptions,\n dropdownClassname\n } = this.props;\n\n const labelClassNames = classNames('msc-l-dropdown__label', labelClassname);\n const dropdownClassNames = classNames('msc-l-dropdown', dropdownClassname);\n const selectedIndex = this._getSelectedIndex();\n\n return (\n <>\n \n \n \n );\n }\n\n private _getSelectedIndex(): number {\n if (this.props.controlledByParent) {\n let selectedIndex = -1;\n const selectedKey = this.props.selectedOption.key;\n for (let i = 0; i < this.props.dropdownOptions.length; i++) {\n if (this.props.dropdownOptions[i].key === selectedKey) {\n selectedIndex = i;\n break;\n }\n }\n\n return selectedIndex;\n }\n\n return this.state.selectedIndex;\n }\n\n private _onSelectOption(event: React.ChangeEvent): void {\n const {\n dropdownOptions,\n onSelectOption\n } = this.props;\n const index = event.currentTarget.selectedOptions[0].index;\n const selectedOption = dropdownOptions[index];\n this.setState({ selectedIndex: index });\n onSelectOption({ selectedOption });\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { canUseDOM } from '../common/utilities';\nimport { IPortalProps } from './Portal.props';\n\nexport interface IPortalState {\n defaultNode: Element | null;\n}\n\n/**\n * Portal component.\n */\nexport default class Portal extends React.PureComponent {\n constructor(props: IPortalProps) {\n super(props);\n\n this.state = {\n defaultNode: null\n };\n }\n\n public componentWillUnmount(): void {\n if (this.state.defaultNode) {\n this.state.defaultNode.remove();\n }\n }\n\n public render(): React.ReactPortal | null {\n let node = null;\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.state.defaultNode) {\n node = document.createElement('div');\n document.body.appendChild(node);\n this.setState({ defaultNode: node });\n }\n return createPortal(this.props.children, this.props.node || node);\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { focusableElements, TransitionTimeouts } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport IModalProps from './Modal.props';\nimport Portal from './Portal';\n\nexport interface IModalState {\n wasOpen: boolean;\n isOpen: boolean;\n mouseDownElement: EventTarget | null;\n}\n\nexport type ModalVerticalPosition = 'top' | 'center' | 'bottom';\nexport type ModalHorizontalPosition = 'left' | 'center' | 'right';\n\n/**\n * Modal component.\n */\nexport default class Modal extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n autoFocus: true,\n verticalPosition: 'top', // Needs to be non-null since we use non-null assertion in getVerticalPositionClass\n horizontalPosition: 'center', // Needs to be non-null since we use non-null assertion in getHorizontalPositionClass\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1000,\n tabIndex: 0,\n fade: true,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // Uses standard fade transition\n }\n };\n\n private static openCount: number = 0;\n\n private element: HTMLElement | null;\n\n private mounted: boolean;\n\n private readonly ref: React.RefObject;\n\n /**\n * This property is initialized in componentDidMount rather than constructor in case the dialog needs to be pre-rendered.\n */\n private applicationNode!: HTMLElement | null;\n\n constructor(props: IModalProps) {\n super(props);\n this.element = null;\n this.ref = React.createRef();\n this.mounted = false;\n\n this._getFocusableChildren = this._getFocusableChildren.bind(this);\n this._handleBackdropClick = this._handleBackdropClick.bind(this);\n this._handleBackdropMouseDown = this._handleBackdropMouseDown.bind(this);\n this._handleEscape = this._handleEscape.bind(this);\n this._handleTab = this._handleTab.bind(this);\n this._onOpened = this._onOpened.bind(this);\n this._onClosed = this._onClosed.bind(this);\n\n this.state = {\n wasOpen: false,\n isOpen: props.isOpen || false,\n mouseDownElement: null\n };\n\n if (props.isOpen) {\n this._open();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.onEnter) {\n this.props.onEnter();\n }\n this.mounted = true;\n\n const element = document.createElement('div');\n element.setAttribute('tabindex', '-1');\n element.style.visibility = 'hidden';\n element.style.position = 'position';\n this.element = element;\n document.body.appendChild(element);\n\n this.applicationNode = (this.props.applicationNode instanceof HTMLElement) ? this.props.applicationNode : document.querySelector(`#${this.props.applicationNode}`);\n\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n }\n\n public componentWillUnmount(): void {\n if (this.props.onExit) {\n this.props.onExit();\n }\n if (this.state.isOpen) {\n this._close();\n }\n this.mounted = false;\n\n if (this.element) {\n this.element.remove();\n }\n }\n\n public componentDidUpdate(_prevProps: IModalProps, prevState: IModalState): void {\n if ((this.state.isOpen && !prevState.isOpen) || (this.props.shouldUpdateFocusToFirstElement && !_prevProps.shouldUpdateFocusToFirstElement)) {\n setTimeout(() => {\n const focusableElementArr = this._getFocusableChildren();\n if (focusableElementArr && focusableElementArr.length > 0 && focusableElementArr[0]) {\n const firstFocusableElement = focusableElementArr[0] as HTMLElement;\n firstFocusableElement.focus();\n }\n }, 100);\n }\n }\n\n public componentWillReceiveProps(nextProps: IModalProps): void {\n if (nextProps.isOpen && !this.props.isOpen) {\n this.setState({ isOpen: nextProps.isOpen });\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n if (this.element !== null) {\n const {\n wrapClassName, modalClassName, backdropClassName, contentClassName, className, cssModule,\n modalTransition, backdropTransition, backdrop, isOpen, onOpened, onClosed,\n role, size, tabIndex, external, verticalPosition, horizontalPosition, keyboard, zIndex, fade, toggle,\n children, applicationNode, returnFocusRef, 'aria-labelledby': ariaLabelledbyId,\n ...dialogAttributes\n } = this.props;\n\n const modalAttributes = {\n onClick: this._handleBackdropClick,\n onMouseDown: this._handleBackdropMouseDown,\n onKeyUp: this._handleEscape,\n onKeyDown: this._handleTab,\n style: { display: 'block' }\n };\n\n const modalTransitions = {\n ...Fade.defaultProps,\n ...modalTransition,\n baseClass: fade && modalTransition ? modalTransition.baseClass : '',\n timeout: fade && modalTransition ? modalTransition.timeout : 0\n };\n const backdropTransitions = {\n ...Fade.defaultProps,\n ...backdropTransition,\n baseClass: fade && backdropTransition ? backdropTransition.baseClass : '',\n timeout: fade && backdropTransition ? backdropTransition.timeout : 0\n };\n\n const Backdrop = fade ? (\n \n ) :
;\n\n const dialogBaseClass = 'msc-modal__dialog';\n const dialogClasses =\n classNames([\n dialogBaseClass,\n className,\n size ? `msc-modal__${size}` : null\n ]);\n\n const dialog = (\n \n \n {children}\n
\n \n );\n\n return (\n \n
\n \n {external}\n {dialog}\n \n {Backdrop}\n
\n
\n );\n }\n\n return null;\n }\n\n private _open(): void {\n if (this.element) {\n this.element.style.zIndex = `${this.props.zIndex || 1000}`;\n this.element.style.display = 'block';\n this.element.style.visibility = 'visible';\n if (Modal.openCount === 0) {\n if (window) {\n const scrollY = window.scrollY;\n const scrollbarWidth = window.innerWidth - document.body.clientWidth;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${scrollY}px`;\n document.body.style.right = `${scrollbarWidth}px`;\n document.body.style.left = '0px';\n }\n\n document.body.className = classNames(\n document.body.className,\n 'modal-open'\n );\n }\n Modal.openCount += 1;\n document.body.firstElementChild?.setAttribute('aria-hidden', 'true');\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'true');\n }\n\n this.setState({ ...this.state, wasOpen: true });\n }\n }\n\n private _close(): void {\n if (!this.state.isOpen) {\n return;\n }\n\n if (this.element) {\n this.element.style.display = 'none';\n setTimeout(() => {\n if (this.element) {\n this.element.style.visibility = 'hidden';\n this.element.style.removeProperty('display');\n }\n }, 0);\n\n }\n\n if (Modal.openCount <= 1) {\n const modalOpenClassName = 'modal-open';\n document.body.firstElementChild?.setAttribute('aria-hidden', 'false');\n\n // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n const modalOpenClassNameRegex = new RegExp(`(^| )${modalOpenClassName}( |$)`);\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n\n if (window) {\n const scrollY = document.body.style.top;\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.right = '';\n document.body.style.left = '';\n window.scrollTo(0, -Number.parseInt(scrollY || '0', 10));\n }\n }\n Modal.openCount -= 1;\n\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'false');\n }\n\n if (this.props.returnFocusRef && this.props.returnFocusRef.current) {\n this.props.returnFocusRef.current.focus();\n }\n\n this.setState({ ...this.state, wasOpen: false });\n }\n\n private _getFocusableChildren(): NodeListOf | null {\n if (this.element === null) {\n return null;\n }\n\n return this.element.querySelectorAll(focusableElements.join(', '));\n }\n\n private _getFocusedChild(): Element | null {\n const focusableChildren = this._getFocusableChildren();\n\n try {\n return document.activeElement;\n } catch {\n return focusableChildren === null ? null : focusableChildren[0];\n }\n }\n\n private _handleBackdropClick(e: React.MouseEvent): void {\n if (e.target === this.state.mouseDownElement) {\n e.stopPropagation();\n if (!this.props.isOpen || this.props.backdrop !== true) {\n return;\n }\n\n const container = this.ref.current;\n\n if (e.target && container && !container.contains(e.target as Node) && this.props.toggle) {\n this.props.toggle();\n }\n }\n }\n\n private _handleTab(e: React.KeyboardEvent): void {\n if (e.which !== 9) {\n return;\n }\n\n const focusableChildren = this._getFocusableChildren();\n if (focusableChildren === null) {\n return;\n }\n\n const totalFocusable = focusableChildren.length;\n const currentFocus = this._getFocusedChild();\n\n let focusedIndex = 0;\n\n for (let i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n let el: HTMLElement | null = null;\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n el = focusableChildren[totalFocusable - 1] as HTMLElement;\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n el = focusableChildren[0] as HTMLElement;\n }\n if (el) {\n el.focus();\n }\n }\n\n private _handleBackdropMouseDown(e: React.MouseEvent): void {\n this.setState({\n mouseDownElement: e.target\n });\n }\n\n private _handleEscape(e: React.KeyboardEvent): void {\n if (this.props.isOpen && this.props.keyboard && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _onOpened(node: HTMLElement, isAppearing: boolean): void {\n if (this.props.onOpened !== undefined) {\n this.props.onOpened();\n }\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onEntered !== undefined) {\n this.props.modalTransition.onEntered(node, isAppearing);\n }\n }\n\n private _onClosed(node: HTMLElement): void {\n if (this.props.onClosed !== undefined) {\n this.props.onClosed();\n }\n this._close();\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onExited !== undefined) {\n this.props.modalTransition.onExited(node);\n }\n if (this.mounted) {\n this.setState({ isOpen: false });\n }\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalBodyProps from './ModalBody.props';\n\n/**\n * ModalBody component.\n */\nexport default class ModalBody extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, id, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__body'), cssModule);\n return ;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalFooterProps from './ModalFooter.props';\n\n/**\n * ModalFooter component.\n */\nexport default class ModalFooter extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__footer'), cssModule);\n return ;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalHeaderProps from './ModalHeader.props';\n\n/**\n * ModalHeader component.\n */\nexport default class ModalHeader extends React.PureComponent {\n public render(): JSX.Element {\n let closeButton;\n const {\n className,\n cssModule,\n children,\n toggle,\n tag,\n wrapTag,\n closeAriaLabel,\n closeButtonLabel,\n id,\n ...attributes\n } = this.props;\n\n const Tag = tag || 'h5';\n const WrapTag = wrapTag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__header'), cssModule);\n\n if (toggle) {\n closeButton = (\n \n );\n }\n\n return (\n \n { children && \n {children}\n }\n {closeButton}\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationProps } from './Pagination.props';\n\n/**\n * Pagination component.\n */\nexport default class Pagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination'\n };\n\n public render(): JSX.Element {\n const {\n className,\n listClassName,\n cssModule,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n\n }: any = this.props;\n\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\n\n const listpaginationClasses = mapToCssModules(\n classNames(listClassName, 'msc-pagination', {\n [`msc-pagination-${size}`]: !!size\n }),\n cssModule\n );\n\n return (\n \n \n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationItemProps } from './PaginationItem.props';\n\n/**\n * PaginationItem component.\n */\nexport default class PaginationItem extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'li'\n };\n\n public render(): JSX.Element {\n const { active, className, cssModule, disabled, tag: Tag, ...props }: any = this.props;\n\n const paginationItemClasses = mapToCssModules(\n classNames(className, 'msc-page-item', {\n active,\n disabled\n }),\n cssModule\n );\n\n return ;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad } from '../common/telemetryHelper';\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationLinkProps } from './PaginationLink.props';\n\n/**\n * PaginationLink component.\n */\nexport default class PaginationLink extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'a',\n role: 'link'\n };\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IPaginationLinkProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n }\n\n public render(): JSX.Element {\n let { className, cssModule, next, previous, tag: Tag, children, telemetryContent, ...props }: any = this.props;\n let etext: string = children;\n const paginationLinkclasses = mapToCssModules(classNames(className, 'msc-page-link'), cssModule);\n\n let defaultCaret;\n if (previous) {\n defaultCaret = '\\u00AB';\n etext = 'previous';\n } else if (next) {\n defaultCaret = '\\u00BB';\n etext = 'next';\n }\n\n if (children && Array.isArray(children) && children.length === 0) {\n children = null;\n }\n if (!props.href && Tag === 'a') {\n Tag = 'span';\n }\n\n if (previous || next) {\n children = [\n (\n \n {children || defaultCaret}\n \n )\n ];\n }\n\n this.payLoad.contentAction.etext = etext;\n const attribute = getTelemetryAttributes(telemetryContent, this.payLoad);\n\n return (\n \n {children}\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { UncontrolledTooltip } from '..';\nimport { mapToCssModules } from '../common/utilities';\nimport PaginationItem from './PaginationItem';\nimport PaginationLink from './PaginationLink';\nimport { IUncontrolledPaginationProps } from './UncontrolledPagination.props';\n\n/**\n * Uncontrolled Pagination component.\n */\nexport default class UncontrolledPagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination',\n items: 0,\n itemsPerPage: 25,\n startingItem: 0\n };\n\n private static readonly pagesDisplayed: number = 7;\n\n private maxPages: number;\n\n private activePage: number = 0;\n\n private qsps: { [param: string]: string };\n\n private url: string;\n\n private hash: string;\n\n constructor(props: IUncontrolledPaginationProps) {\n super(props);\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const qsp of parsedQsps) {\n const qspPair = qsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n }\n\n public render(): JSX.Element {\n const {\n className,\n baseUrl,\n qsp,\n items,\n itemsPerPage,\n startingItem,\n previousText,\n nextText,\n previousAriaLabel,\n nextAriaLabel,\n listClassName,\n cssModule,\n children,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n\n }: any = this.props;\n\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const activeQsp of parsedQsps) {\n const qspPair = activeQsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n\n const paginationClasses = mapToCssModules(\n classNames(\n className\n ),\n cssModule\n );\n\n const listpaginationClasses = mapToCssModules(\n classNames(\n listClassName,\n 'msc-pagination',\n {\n [`msc-pagination-${size}`]: !!size\n }\n ),\n cssModule\n );\n\n return (\n \n \n {this._generatePageLinks()}\n \n \n );\n }\n\n private _generateUrl(page: number): string {\n const items = this.props.itemsPerPage! * page;\n const keys = Object.keys(this.qsps);\n let qspUrl = page > 0 ? `?${this.props.qsp}=${items}` : '';\n\n keys.forEach((key: string) => {\n qspUrl = qspUrl ? `${qspUrl}&${key}=${this.qsps[key]}` : `?${key}=${this.qsps[key]}`;\n });\n\n return this.url + qspUrl + this.hash;\n }\n\n private _generatePaginationArrow(next: boolean, disable: boolean, className: string): React.ReactElement {\n const url = disable ? undefined : this._generateUrl(this.activePage + (next ? 1 : -1));\n const tooltipId = next ? this.props.nextId : this.props.prevId;\n const ariaDescribedBy = next ? this.props.nextAreaDescribed : this.props.prevAreaDescribed;\n const placement = next ? 'right' : 'left';\n const tag = disable ? 'span' : 'a';\n\n return (\n \n \n {next ? this.props.nextText : this.props.previousText}\n \n {tooltipId && (\n \n {next ? 'next' : 'previous'}\n \n )}\n \n );\n }\n\n private _generatePaginationItem(page: number): React.ReactElement {\n const active = this.activePage === page;\n const url = this._generateUrl(page);\n page += 1;\n\n return (\n \n \n {page}\n \n \n );\n }\n\n private _generateEllipse(): React.ReactElement {\n return (\n \n \n ...\n \n \n );\n }\n\n private _generatePageLinks(): React.ReactFragment {\n const displayCountSide = 3;\n let leftDistance = this.activePage;\n let rightDistance = this.maxPages - this.activePage - 1;\n const leftEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && leftDistance > 3;\n const rightEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && rightDistance > 3;\n\n leftDistance = Math.min(leftDistance, displayCountSide);\n rightDistance = Math.min(rightDistance, displayCountSide);\n const pages = [];\n const ellipseOffset = leftEllipse ? -1 : 0;\n const displayedPagesOnLeft = leftDistance + (displayCountSide - rightDistance) + ellipseOffset;\n const startingIndex = Math.max(this.activePage - displayedPagesOnLeft, 0);\n const endIndex = Math.min((startingIndex + 5 + (rightEllipse ? 0 : 1) + (leftEllipse ? 0 : 1)),\n (rightEllipse ? this.maxPages - 1 : this.maxPages));\n\n if (leftEllipse) {\n pages.push(this._generatePaginationItem(0));\n pages.push(this._generateEllipse());\n }\n\n for (let i = startingIndex; i < endIndex; i++) {\n pages.push(this._generatePaginationItem(i));\n }\n\n if (rightEllipse) {\n pages.push(this._generateEllipse());\n pages.push(this._generatePaginationItem(this.maxPages - 1));\n }\n\n return (\n <>\n { this._generatePaginationArrow(false, (this.activePage === 0), 'previous') }\n {pages}\n { this._generatePaginationArrow(true, (this.activePage === this.maxPages - 1), 'next') }\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { canUseDOM, getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { IPopoverProps } from './Popover.props';\n\n/**\n * Popover component.\n */\nexport default class Popover extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n placement: 'right',\n toggle: () => {\n return;\n }\n };\n\n public props: IPopoverProps;\n\n private target: HTMLElement | null;\n\n private popover: HTMLDivElement | null;\n\n private tabPressed: boolean = false;\n\n constructor(props: IPopoverProps) {\n super(props);\n this.props = props;\n\n this.popover = null;\n this._addTargetEvents = this._addTargetEvents.bind(this);\n this._handleDocumentClick = this._handleDocumentClick.bind(this);\n this._removeTargetEvents = this._removeTargetEvents.bind(this);\n this.getRef = this.getRef.bind(this);\n this._toggle = this._toggle.bind(this);\n this._focusOutTarget = this._focusOutTarget.bind(this);\n this._focusOutPopover = this._focusOutPopover.bind(this);\n this._keyDown = this._keyDown.bind(this);\n this._show = this._show.bind(this);\n this._hide = this._hide.bind(this);\n this.target = null;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this._handleProps();\n }\n\n public componentDidUpdate(): void {\n this._handleProps();\n }\n\n public componentWillUnmount(): void {\n this._removeTargetEvents();\n }\n\n public getRef(ref: HTMLDivElement | null): void {\n this.popover = ref;\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n className,\n innerClassName,\n modifiers,\n placement,\n container,\n offset,\n toggle,\n boundariesElement,\n role,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(\n classNames(\n 'msc-popover-inner',\n this.props.innerClassName\n ),\n this.props.cssModule\n );\n\n const popperClasses = mapToCssModules(\n classNames(\n 'msc-popover',\n 'show',\n this.props.className\n ),\n this.props.cssModule\n );\n\n return (\n \n \n \n );\n }\n\n private _handleProps(): void {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n\n private _show(): void {\n this.tabPressed = false;\n this._addTargetEvents();\n if (!this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _hide(): void {\n this._removeTargetEvents();\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n\n if (e.target !== this.target &&\n !this.target.contains(target) &&\n e.target !== this.popover &&\n !(this.popover && this.popover.contains(target))\n ) {\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n }\n\n private _addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this._handleDocumentClick, true);\n });\n this.target.addEventListener('focusout', this._focusOutTarget, true);\n this.target.addEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this._handleDocumentClick, true);\n });\n this.target.removeEventListener('focusout', this._focusOutTarget, true);\n this.target.removeEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _focusOutPopover(): void {\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n\n private _focusOutTarget(): void {\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n }\n\n private _keyDown(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (this.props.isOpen && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _toggle(): void {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.toggle) {\n this.props.toggle();\n }\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport { Data } from 'popper.js';\nimport * as React from 'react';\nimport { Arrow, Popper as ReactPopper } from 'react-popper';\n\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport { IPopperContentProps } from './PopperContent.props';\n\nexport interface IPopperContentState {\n placement?: string;\n isOpen: boolean;\n}\n\n/**\n * Renders popper content. This is an internal helper class shared between components.\n */\nexport default class PopperContent extends React.Component {\n\n public static defaultProps: Partial = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: 0,\n fallbackPlacement: 'flip',\n flip: true,\n container: 'body',\n modifiers: {}\n };\n\n constructor(props: IPopperContentProps) {\n super(props);\n\n this._handlePlacementChange = this._handlePlacementChange.bind(this);\n this.state = { isOpen: props.isOpen };\n }\n\n public componentDidMount(): void {\n this._handleProps();\n }\n\n public componentDidUpdate(prevProps: IPopperContentProps): void {\n if (this.props.isOpen !== prevProps.isOpen) {\n this._handleProps();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPopperContentProps,\n nextState: IPopperContentState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this.props.isOpen ? this._renderChildren() : null;\n }\n\n private _handlePlacementChange(data: Data): Data {\n if (this.state.placement !== data.placement) {\n this.setState({ placement: data.placement });\n }\n\n return data;\n }\n\n private _handleProps(): void {\n if (this.props.container !== 'inline') {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n }\n\n private _hide(): void {\n this.setState({ isOpen: false });\n }\n\n private _show(): void {\n this.setState({ isOpen: true });\n }\n\n private _renderChildren(): JSX.Element | null {\n const {\n cssModule,\n children,\n isOpen,\n flip,\n offset,\n target,\n fallbackPlacement,\n focusOut,\n placementPrefix,\n arrowClassName: arrowClassNameOrUndefined,\n hideArrow,\n className,\n tag,\n modifiers,\n boundariesElement,\n ...attrs\n } = this.props;\n\n const arrowClassName = mapToCssModules(\n classNames(\n 'msc-arrow',\n arrowClassNameOrUndefined\n ),\n cssModule\n );\n\n const placement = (this.state.placement || attrs.placement || 'auto').split('-')[0];\n const popperClassName = mapToCssModules(\n classNames(\n className,\n placementPrefix ? `${placementPrefix}-${placement}` : placement\n ),\n this.props.cssModule\n );\n\n const extendedModifiers = {\n offset: { offset },\n flip: { enabled: flip, behavior: fallbackPlacement },\n preventOverflow: { boundariesElement },\n update: {\n enabled: true,\n order: 950,\n fn: this._handlePlacementChange\n },\n ...modifiers\n };\n\n const targetElement = getTargetElement(target);\n if (targetElement === null) {\n return null;\n }\n\n return (\n \n {children}\n {!hideArrow && }\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport { Modal, ModalBody, ModalHeader } from '../modal';\n\nexport interface IPopupProductsProps {\n dialogStrings?: {\n closeWindowButtonText: string;\n };\n\n className: string;\n processStatusClass: string;\n text: string;\n\n modalOpen: boolean | undefined;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const PopupProducts = (popupProps: IPopupProductsProps) => {\n const { processStatusClass, dialogStrings, className, text, modalOpen, setModalOpen } = popupProps;\n\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n\n if (!dialogStrings || !text) {\n return null;\n }\n\n return (\n \n \n \n
\n
\n {text}\n
\n \n \n \n );\n};\n\nexport default PopupProducts;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '..';\nimport { Modal, ModalBody, ModalHeader } from '../modal';\n\nexport interface IPopupProps extends IComponentProps<{ product: SimpleProduct | undefined; price: ProductPrice | undefined }> {\n dialogStrings?: {\n goToCartText: string;\n continueShoppingText: string;\n headerItemOneText: string;\n headerItemFormatText: string;\n headerMessageText: string;\n freePriceText: string;\n originalPriceText: string;\n currentPriceText: string;\n };\n\n className: string;\n imageSettings?: IImageSettings;\n gridSettings: IGridSettings | undefined;\n productQuantity: number;\n priceComponent: React.ReactNode;\n navigationUrl?: string;\n modalOpen: boolean | undefined;\n telemetryContent?: ITelemetryContent;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const Popup = (popupProps: IPopupProps) => {\n const { dialogStrings, className, imageSettings, gridSettings, data: { product, price }, productQuantity, priceComponent, navigationUrl, modalOpen, telemetryContent, setModalOpen, context } = popupProps;\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n if (!dialogStrings || !product) {\n return null;\n }\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.ContinueShopping);\n const continueShoppingAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ViewBagAndCheckout;\n const viewBagAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n const fallbackImageUrl = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const quantity = productQuantity !== undefined ? productQuantity : 1;\n const itemsString = quantity === 1 ? dialogStrings.headerItemOneText : dialogStrings.headerItemFormatText.replace('{0}', quantity.toString());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const shouldDisplayUnitOfMeasure = context.app.config?.unitOfMeasureDisplayType && context.app.config.unitOfMeasureDisplayType !== 'none';\n\n const reducedDimensions: string = product.Dimensions ? product.Dimensions.reduce(\n (str, productDimension) => {\n if (productDimension.DimensionValue && productDimension.DimensionValue.Value) {\n if (str) {\n return `${str}, ${productDimension.DimensionValue.Value}`;\n }\n\n return `${productDimension.DimensionValue.Value}`;\n }\n\n return str;\n },\n '') : '';\n\n return (\n \n \n \n {itemsString}\n \n \n {dialogStrings.headerMessageText}\n \n \n \n \n \n {product.Name}\n \n {reducedDimensions !== '' ?
\n {reducedDimensions}\n
: ''}\n {price ? (\n
\n {priceComponent}\n
\n ) : ''}\n {product.DefaultUnitOfMeasure && shouldDisplayUnitOfMeasure ? (\n
\n \n {product.DefaultUnitOfMeasure}\n \n
\n ) : ''}\n \n {dialogStrings.goToCartText}\n \n \n {dialogStrings.continueShoppingText}\n \n
\n \n );\n};\n\nexport default Popup;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport Button from '../button/Button';\nimport { Popover } from '../popover';\n\n/**\n * Resources for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionResources {\n specifyAmountButtonText: string;\n payFullAmountButtonText: string;\n}\n\n/**\n * Props for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionProps {\n className: string;\n\n resources: IPriceEditorModeSelectionResources;\n\n currentState: PriceEditorModeSelectionState;\n onStateChanged(state: PriceEditorModeSelectionState): void;\n}\n\n/**\n * Defines editor modes for the amount.\n */\nexport enum PriceEditorModeSelectionState {\n full = 0,\n partial = 1\n}\n\n/**\n * Retrieves resource value based by the given mode state.\n * @param modeState - Given state.\n * @param resources - All resources.\n * @returns Resource value for the given state.\n */\nconst getPriceEditorModeSelectionStateResources = (modeState: PriceEditorModeSelectionState, resources: IPriceEditorModeSelectionResources): string => {\n switch (modeState) {\n case PriceEditorModeSelectionState.full:\n return resources.payFullAmountButtonText;\n case PriceEditorModeSelectionState.partial:\n return resources.specifyAmountButtonText;\n default:\n throw new Error('Failed to retrieve resource description for unknown price editor selection state.');\n }\n};\n\n/**\n * On click functionality.\n * @param handleStateChange - Handle change state function.\n * @param modeState - New state.\n * @returns Event handler.\n */\nconst onClickHandler = (handleStateChange: (modeState: PriceEditorModeSelectionState) => void, modeState: PriceEditorModeSelectionState) => () => {\n handleStateChange(modeState);\n};\n\n/**\n * Renders a button that allows to update the mode to the given state.\n * @param modeState - The state to render.\n * @param resources - Resource values.\n * @param className - Element class name.\n * @param handleStateChange - Event handler to update the state.\n * @returns React node.\n */\nconst renderModeStateItem = (\n modeState: PriceEditorModeSelectionState,\n resources: IPriceEditorModeSelectionResources,\n className: string,\n handleStateChange: (modeState: PriceEditorModeSelectionState) => void): React.ReactNode => {\n\n const stateStringRepresentation = PriceEditorModeSelectionState[modeState];\n\n return (\n \n );\n};\n\n/**\n * On Toggle Popover functionality.\n * @param setPopoverState -Set popover state function.\n * @param isPopoverState -Boolean value.\n * @returns Set toggle popover state functionality.\n */\nconst togglePopoverHandler = (setPopoverState: React.Dispatch>, isPopoverState: boolean) => () => {\n setPopoverState(!isPopoverState);\n};\n\n/**\n * Price editor component which handles selection modes (for instance, full or partial amount).\n * @param props - Configuration of the component.\n * @returns React element.\n */\nexport const PriceEditorModeSelectionComponent: React.FC = (props: IPriceEditorModeSelectionProps) => {\n const popoverReference = React.createRef();\n const [isPopoverShown, setIsPopoverShown] = React.useState(false);\n\n const [modeState, setModeState] = React.useState(props.currentState);\n\n /**\n * Updates component state when a selection is changed.\n * @param clickedState - New mode state.\n */\n const onChangeMode = (clickedState: PriceEditorModeSelectionState) => {\n setModeState(clickedState);\n setIsPopoverShown(false);\n props.onStateChanged(clickedState);\n };\n\n return (\n
\n \n {getPriceEditorModeSelectionStateResources(modeState, props.resources)}\n \n \n {\n EnumExtensions.getEnumValues(PriceEditorModeSelectionState).map(state => {\n return renderModeStateItem(state, props.resources, props.className, onChangeMode);\n })\n }\n \n
\n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IPriceEditorModeSelectionResources, PriceEditorModeSelectionComponent, PriceEditorModeSelectionState } from './price-editor-mode-selection';\n\n/**\n * Resources for price editor.\n */\nexport interface IPriceEditorResources extends IPriceEditorModeSelectionResources {\n priceEditorInputAriaLabel: string;\n}\n\n/**\n * The props required to render the component.\n */\nexport interface IPriceEditorProps {\n className: string;\n\n defaultAmount: number;\n\n resources: IPriceEditorResources;\n\n minimumValue?: number;\n maximumValue?: number;\n\n handleChange?(newValue: number): void;\n}\n\n/**\n * The state of the component.\n */\nexport interface IPriceEditorState {\n currentValue?: number;\n isInputFocused: boolean;\n}\n\n/**\n * Provides an input field which allows entering a price amount.\n */\nexport class PriceEditor extends React.PureComponent {\n\n private static readonly _precision = 2;\n\n private readonly _inputRef: React.RefObject;\n\n public constructor(props: IPriceEditorProps) {\n super(props);\n\n this._inputRef = React.createRef();\n\n let defaultValue = props.defaultAmount;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && defaultValue < this.props.minimumValue) {\n defaultValue = this.props.minimumValue;\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && defaultValue > this.props.maximumValue) {\n defaultValue = this.props.maximumValue;\n }\n\n this.state = {\n currentValue: defaultValue,\n isInputFocused: false\n };\n }\n\n public render(): JSX.Element {\n const containerClassName = 'msc-price-editor';\n\n const hasMultipleModes = !ObjectExtensions.isNullOrUndefined(this.props.maximumValue);\n\n let mode = PriceEditorModeSelectionState.partial;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && this.state.currentValue === this.props.maximumValue) {\n mode = PriceEditorModeSelectionState.full;\n }\n\n const formattedValue = this.state.currentValue?.toFixed(PriceEditor._precision) ?? '';\n const editedValue = this.state.currentValue ?? '';\n\n return (\n
\n \n {\n hasMultipleModes &&
\n \n
\n }\n
\n );\n }\n\n /**\n * Handles input focus.\n */\n private readonly _handleInputFocus = () => {\n this.setState({ isInputFocused: true });\n };\n\n /**\n * Handles input blur.\n */\n private readonly _handleInputBlur = () => {\n this.setState({ isInputFocused: false });\n };\n\n /**\n * Handles editor mode state change.\n * @param newState - New selection mode state.\n */\n private readonly _handleEditorModeStateChange = (newState: PriceEditorModeSelectionState) => {\n if (newState === PriceEditorModeSelectionState.full) {\n this._updateAmount(this.props.maximumValue!);\n } else {\n this.setState({ currentValue: undefined });\n this._inputRef.current?.focus();\n }\n };\n\n /**\n * Update the price and calls corresponding callbacks.\n * @param newAmount - New price amount.\n */\n private readonly _updateAmount = (newAmount: number) => {\n this.setState({ currentValue: newAmount });\n\n if (this.props.handleChange) {\n this.props.handleChange(newAmount);\n }\n };\n\n /**\n * Handles value change.\n * @param event - React change event.\n */\n private readonly _handleChange = (event: React.ChangeEvent) => {\n let currentValue = Number.parseFloat(event.target.value);\n\n if (Number.isNaN(currentValue)) {\n this.setState({ currentValue: undefined });\n return;\n }\n\n currentValue = +currentValue.toFixed(PriceEditor._precision);\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && currentValue < this.props.minimumValue) {\n this._updateAmount(this.props.minimumValue);\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && currentValue > this.props.maximumValue) {\n this._updateAmount(this.props.maximumValue);\n } else {\n this._updateAmount(currentValue);\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IProgressProps {\n id?: string;\n className?: string;\n max: number;\n min?: number;\n value: number;\n ariaLabel?: string;\n}\n\nexport const Progress: React.FC = (props: IProgressProps) => {\n const { id, className, max, min, value, ariaLabel } = props;\n const percent = Math.max(0, Math.min(value * 100 / max, 100));\n const style = { width: `${percent}%` };\n\n return (\n
\n \n
\n );\n};\n\n// Set default props\nProgress.defaultProps = {\n 'aria-valuemax': 100,\n 'aria-valuenow': 0\n} as Partial;\n\nexport default Progress;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport debounce from 'lodash/debounce';\nimport * as React from 'react';\n\nimport { IQuantityProps } from './Quantity.props';\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to allow input of quantity between a\n * range of values.\n */\n\nexport default class Quantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1 };\n this._handleChange = this._handleChange.bind(this);\n }\n\n public render(): JSX.Element {\n const currentValue = this.state.currentInput;\n\n return (\n \n );\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt((e.target.value), 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement = this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState(\n { currentInput: this.props.max },\n () => {\n debounce(\n () => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n },\n 200)();\n }\n );\n } else {\n this.setState(\n { currentInput: currentValue },\n () => {\n debounce(\n () => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }\n },\n 200)();\n }\n );\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n if (isNaN(this.state.currentInput) || (this.state.currentInput < minValue)) {\n this.setState({ currentInput: minValue }, () => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n });\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { addThrottledEvent, getCSS } from '../common/utilities';\nimport Flipper from '../flipper/Flipper';\nimport { ISingleSlideCarouselProps } from './SingleSlideCarousel.props';\n\ninterface ISingleSlideCarouselState {\n showPrevious: boolean;\n showNext: boolean;\n offset: number;\n}\n\n/**\n * SingleSlideCarousel - yup.\n */\nexport default class SingleSlideCarousel extends React.PureComponent {\n private static readonly itemsSelector: string = 'msc-ss-carousel-item';\n\n private static readonly verticalItemsSelector: string = 'msc-ss-carousel-vert-item';\n\n private direction: string;\n\n private item: HTMLElement | undefined;\n\n private slide: HTMLElement | undefined;\n\n private carousel: HTMLElement | undefined;\n\n private carouselSize: number = 0;\n\n private slideSize: number = 0;\n\n private itemSize: number = 0;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private readonly ref: React.RefObject;\n\n private readonly slideRef: React.RefObject;\n\n private readonly itemRef: React.RefObject;\n\n private readonly id: string;\n\n private scrollStart: number | undefined;\n\n private readonly scrollThreshold: number;\n\n private readonly flipperNextLabel: string = 'next';\n\n private readonly flipperPrevLabel: string = 'prev';\n\n constructor(props: ISingleSlideCarouselProps) {\n super(props);\n this._nextSlide = this._nextSlide.bind(this);\n this._previousSlide = this._previousSlide.bind(this);\n this._handleTouchStart = this._handleTouchStart.bind(this);\n this._handleTouchEnd = this._handleTouchEnd.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onResized = this._onResized.bind(this);\n this.state = { showPrevious: false, showNext: false, offset: 0 };\n this.ref = React.createRef();\n this.slideRef = React.createRef();\n this.itemRef = React.createRef();\n this.direction = 'left';\n this.id = props.parentId || '';\n this.scrollThreshold = this.props.touchScrollThreshold !== undefined ? this.props.touchScrollThreshold : 100;\n }\n\n public componentDidUpdate(): void {\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this._updateFlippers(this.state.offset);\n }\n\n public componentDidMount(): void {\n this.direction = this.props.vertical ? 'top' : 'left';\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this.resizeThrottledEventHandler =\n window && addThrottledEvent(window, 'resize', this._onResized as EventListener);\n this._updateFlippers(0);\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n\n public render(): JSX.Element {\n const isVert: boolean = this.props.vertical === true;\n const slidePositionStyle = {} as React.CSSProperties;\n const modifiedChildren = this._getClonedChildren(isVert);\n slidePositionStyle[this.direction] = `${this.state.offset}px`;\n const carouselClass = (isVert) ? 'msc-ss-carousel-vert' : 'msc-ss-carousel';\n const carouselSlideClass = (isVert) ? 'msc-ss-carousel-vert-slide' : 'msc-ss-carousel-slide';\n const overflowClass = (isVert) ? 'msc-ss-carousel-vert-strip' : 'msc-ss-carousel-strip';\n const previousFlipperGlyph = (isVert) ? 'msi-chevron-up' : 'msi-chevron-left';\n const nextFlipperGlyph = (isVert) ? 'msi-chevron-down' : 'msi-chevron-right';\n const previousFlipperClassName = (isVert) ? 'msc-ss-carousel-vert__flipper' : 'msc-ss-carousel__flipper';\n const nextFlipperClassName = (isVert) ? 'msc-ss-carousel-vert__flipper msc-ss-carousel-vert__flipper--next' : 'msc-ss-carousel__flipper msc-ss-carousel__flipper--next';\n const disableClassName = !this.state.showPrevious || !this.state.showNext ? 'disabled' : null;\n return (\n \n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperPrevLabel}\n />\n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperNextLabel}\n />\n
\n \n {modifiedChildren}\n \n
\n
\n );\n }\n\n private _getClonedChildren(isVert: boolean): React.DetailedReactHTMLElement, HTMLElement>[] {\n return React.Children.map(this.props.children, (child: React.ReactNode, index: number) => {\n const castChild = (child as React.ReactChild) as React.ReactElement;\n if (index === 1) {\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${castChild.props.className}`,\n\n // @ts-expect-error\n ref: this.itemRef,\n onFocus: this._onFocus\n });\n }\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${castChild.props.className}`,\n\n // @ts-expect-error\n onFocus: this._onFocus\n });\n });\n }\n\n private _nextSlide(): void {\n this._moveSingleSlide(true);\n }\n\n private _previousSlide(): void {\n this._moveSingleSlide(false);\n }\n\n private _handleTouchStart(evt: React.TouchEvent): void {\n if (evt.touches.length === 0) {\n this.scrollStart = undefined;\n } else {\n this.scrollStart = this.props.vertical === true ? evt.touches[0].screenY : evt.touches[0].screenX;\n }\n }\n\n private _handleTouchEnd(evt: React.TouchEvent): void {\n if (evt.changedTouches.length > 0 && this.scrollStart !== undefined) {\n const newTarget: number = this.props.vertical === true ? evt.changedTouches[0].screenY : evt.changedTouches[0].screenX;\n\n const delta = newTarget - this.scrollStart;\n\n if (delta > this.scrollThreshold) {\n this._previousSlide();\n }\n\n if (delta < -this.scrollThreshold) {\n this._nextSlide();\n }\n }\n\n this.scrollStart = undefined;\n\n return;\n }\n\n private _moveSingleSlide(next: boolean): void {\n let currentOffset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n const carouselSize = this.carouselSize;\n let maxScrollCount = Math.floor(carouselSize / (this.itemSize));\n const directionModifier = next ? -1 : 1;\n currentOffset = !isNaN(currentOffset) && typeof currentOffset === 'number' ? currentOffset : 0;\n\n if (maxScrollCount === 0) {\n maxScrollCount = 1;\n }\n\n maxScrollCount = carouselSize % (this.itemSize) === 0 ? maxScrollCount - 1 : maxScrollCount;\n maxScrollCount = Math.max(maxScrollCount, 1);\n const maxScrollDistance = maxScrollCount * (this.itemSize);\n let distanceToEdge = next ? this.slideSize - carouselSize + currentOffset : Math.abs(currentOffset);\n distanceToEdge = Math.max(0, distanceToEdge);\n\n const offset =\n maxScrollDistance <= distanceToEdge ? maxScrollDistance * directionModifier + currentOffset : distanceToEdge * directionModifier + currentOffset;\n\n this._updateFlippers(offset);\n }\n\n private _setSizes(): void {\n const item = this.item;\n if (item) {\n this.itemSize = this.props.vertical ? item.scrollHeight : item.scrollWidth;\n } else {\n this.itemSize = 0;\n }\n\n this.carouselSize = this._calculateCarouselSize();\n this.slideSize = this.slide ? (this.props.vertical ? this.slide.scrollHeight : this.slide.scrollWidth) : 0;\n }\n\n private _calculateCarouselSize(): number {\n if (!this.carousel) {\n return 0;\n }\n\n const carouselStyle = getComputedStyle(this.carousel);\n\n const padding = this.props.vertical ? Number.parseFloat(carouselStyle.paddingTop || '') + Number.parseFloat(carouselStyle.paddingBottom || '') : Number.parseFloat(carouselStyle.paddingLeft || '') + Number.parseFloat(carouselStyle.paddingRight || '');\n\n return this.props.vertical ? this.carousel.clientHeight - padding : this.carousel.clientWidth - padding;\n }\n\n private _canScrollPrevious(offset: number): boolean {\n return !isNaN(offset) && offset !== 0;\n }\n\n private _canScrollNext(offset: number): boolean {\n if (this.carouselSize + Math.abs(offset) >= this.slideSize) {\n return false;\n }\n\n return true;\n }\n\n private _updateFlippers(offset: number): void {\n this.setState({\n showPrevious: this._canScrollPrevious(offset),\n showNext: this._canScrollNext(offset),\n offset\n });\n }\n\n private _scrollItemIntoView(item: HTMLElement): void {\n const carouselSize = this.carouselSize;\n let offset = (this.props.vertical) ? item.offsetTop : item.offsetLeft;\n let updateOffset = false;\n\n const left = Number.parseInt(getCSS(this.slide!, 'left'), 10) || 0;\n const top = Number.parseInt(getCSS(this.slide!, 'top'), 10) || 0;\n\n if (this.props.vertical) {\n if (top < 0 && -top > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (top + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset - 1;\n updateOffset = true;\n }\n } else if (this.direction === 'left') {\n if (left < 0 && -left > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (left + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset + 19;\n updateOffset = true;\n }\n }\n\n if (updateOffset) {\n this._updateFlippers(offset);\n\n if (this.props.vertical) {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollTop = 0;\n }, 0);\n } else {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollLeft = 0;\n }, 0);\n }\n }\n }\n\n private _onFocus(event: React.FocusEvent): void {\n const target = event.currentTarget as HTMLElement;\n this._scrollItemIntoView(target);\n }\n\n private _onCarouselResized(): void {\n this._setSizes();\n let offset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n\n // Ensure the carousel slide fits across the entire alotted space\n if (!isNaN(offset) && offset < 0 && this.slideSize + offset < this.carouselSize) {\n offset = Math.min(0, this.carouselSize - this.slideSize);\n }\n\n this._updateFlippers(offset);\n }\n\n private readonly _onResized = (): void => {\n this._onCarouselResized();\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { UncontrolledTooltip } from '..';\nimport { ISliderThumbProps } from './SliderThumb.props';\n\n/**\n * Sliderthumb - This is a sliderthumb component this component which is\n * used to control the slider thumb.\n */\nexport default class SliderThumb extends React.PureComponent {\n\n public static defaultProps: Partial = {\n showTooltip: true,\n tooltip: {\n placement: 'top'\n }\n };\n\n public sliderButtonRef: React.RefObject = React.createRef();\n\n public render(): JSX.Element {\n const sliderThumbBaseClass = 'slider__thumb ';\n const sliderThumbClass = this.props.trackThumbClass ? `${sliderThumbBaseClass} ${this.props.trackThumbClass}` : sliderThumbBaseClass;\n\n return (\n <>\n \n { this.props.showTooltip &&\n \n {this.props.handleTooltipText ? this.props.handleTooltipText(this.props.sliderValue!) : this.props.sliderValue!.toString()}\n }\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, isMobile, Progress, VariantType } from '..';\nimport { clamp, toUpperCaseFirstChar } from '../common/utilities';\nimport { ISliderChangeNotification, ISliderLabel, ISliderProps, ISliderThumbProps } from './Slider.props';\nimport SliderThumb from './SliderThumb';\n\n// This maintains the min and max values for the 2 thumbs\nexport interface ISliderState {\n sliderThumbs: ISliderThumbProps[];\n limit: number;\n grab: number;\n active: boolean;\n id: string;\n}\n\nconst orientations = {\n horizontal: {\n dimension: 'width',\n direction: 'left',\n coordinate: 'x'\n },\n vertical: {\n dimension: 'height',\n direction: 'top',\n coordinate: 'y'\n }\n};\n\ninterface IFillCoordinates {\n fill: number;\n handle: number;\n label: number;\n}\n\nenum EventType {\n Start,\n End,\n Change\n}\n\nconst rangeDefaultChkValue = 0;\n\n/**\n * Slider - This is a slider component this component morphs into a range slider\n * based on flags.\n */\n\nexport default class Slider extends React.Component {\n public static defaultProps: Partial = {\n showTooltip: true,\n inForm: false,\n orientation: 'horizontal',\n min: 0,\n max: 100,\n step: 1,\n sliderThumbs: [{ id: 'slider_thumb_id', value: 50 }]\n };\n\n private static readonly sliderBaseClass: string = 'slider';\n\n public isRangeSlider: boolean;\n\n private readonly ref: React.RefObject = React.createRef();\n\n private readonly thumb1Ref: React.RefObject = React.createRef();\n\n private readonly thumb2Ref: React.RefObject = React.createRef();\n\n public static getDerivedStateFromProps(props: ISliderProps, state: ISliderState): ISliderState | null {\n if ((props.sliderThumbs.length > 0 && props.sliderThumbs[0].value !== state.sliderThumbs[0].value) ||\n (props.sliderThumbs.length > 1 && props.sliderThumbs[1].value !== state.sliderThumbs[1].value)) {\n const nextState = { ...state };\n nextState.sliderThumbs[0].value = props.sliderThumbs[0].value;\n if (props.sliderThumbs.length > 1) {\n nextState.sliderThumbs[1].value = props.sliderThumbs[1].value;\n }\n return nextState;\n }\n return null;\n }\n\n constructor(props: ISliderProps) {\n super(props);\n this.isRangeSlider = this.props.sliderThumbs.length === 2;\n this.state = {\n sliderThumbs: this.props.sliderThumbs,\n grab: 0,\n limit: 0,\n active: false,\n id: ''\n };\n this._handleUpdate = this._handleUpdate.bind(this);\n this._handleDrag = this._handleDrag.bind(this);\n this._handleEnd = this._handleEnd.bind(this);\n this._handleStart = this._handleStart.bind(this);\n this._handleOnChange = this._handleOnChange.bind(this);\n this._setSliderValue = this._setSliderValue.bind(this);\n this._getThumbFromProps = this._getThumbFromProps.bind(this);\n this._publishNotification = this._publishNotification.bind(this);\n this._getThumbAndPublishEvent = this._getThumbAndPublishEvent.bind(this);\n this._willThumbsCrossOver = this._willThumbsCrossOver.bind(this);\n this._handleOnClick = this._handleOnClick.bind(this);\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl' && (this.props.shouldSliderAdjustToRTL === undefined || this.props.shouldSliderAdjustToRTL)) {\n orientations.horizontal.direction = 'right';\n }\n }\n\n public componentDidMount(): void {\n this._handleUpdate();\n MsDyn365.isBrowser && window.addEventListener('resize', this._handleUpdate);\n }\n\n public componentDidUpdate(): void {\n if (this.ref.current && this.ref.current.offsetWidth > rangeDefaultChkValue && this.state.limit === rangeDefaultChkValue) {\n this._handleUpdate();\n }\n }\n\n public shouldComponentUpdate(nextProps: ISliderProps, _nextState: ISliderState): boolean {\n let shouldRender = true;\n if (this.isRangeSlider) {\n const thumb1Position = this._getPositionFromValue(nextProps.sliderThumbs[0].value);\n const thumb2Position = this._getPositionFromValue(nextProps.sliderThumbs[1].value);\n\n /**\n * During first render the second thumb isn't positioned since handleUpdate positions it after it's mounted\n * in the componentDidMount method. This check is to make sure that the first render happens correctly and then\n * for all subsequent renders and updates, the thumb2 position cannot be 0 thanks to this condition.\n */\n shouldRender = thumb2Position > 0 ? thumb2Position >= thumb1Position + nextProps.step : true;\n }\n return shouldRender;\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._handleUpdate);\n }\n\n public render(): JSX.Element {\n const { orientation } = this.props;\n const sliderClass = this.props.className ? `${Slider.sliderBaseClass} slider-${orientation} ${this.props.className}` : `${Slider.sliderBaseClass} slider-${orientation}`;\n\n const sliderId = this.props.id;\n const dimension = orientations[orientation].dimension;\n const direction = orientations[orientation].direction;\n const camelCasedDirection = toUpperCaseFirstChar(direction);\n const positionThumb1 = this._getPositionFromValue(this.props.sliderThumbs[0].value);\n const coordsThumb1 = this._coordinates(positionThumb1);\n let fillStyle = { [dimension]: `${coordsThumb1.fill}px` };\n const handleStyle: React.CSSProperties[] = [];\n handleStyle.push({ [direction]: `${coordsThumb1.handle}px` });\n const trackProgressClass = classnames('progress-bar', this.props.trackProgressClass ? this.props.trackProgressClass : '');\n const sliderKey = this.props.sliderKey ? `_${String(this.props.sliderKey)}` : '';\n\n if (this.isRangeSlider) {\n const positionThumb2 = this._getPositionFromValue(this.props.sliderThumbs[1].value);\n const coordsThumb2 = this._coordinates(positionThumb2);\n handleStyle.push({ [direction]: `${coordsThumb2.handle}px` });\n if (orientation === 'vertical') {\n fillStyle = {\n 'marginBottom': `${coordsThumb1.fill}px`,\n [dimension]: `${coordsThumb2.fill - coordsThumb1.fill}px`\n };\n } else {\n fillStyle = {\n [`margin${camelCasedDirection}`]: `${orientations.horizontal.direction === 'right' ? coordsThumb1.fill - this.state.grab : coordsThumb1.fill}px`,\n [dimension]: `${coordsThumb2.handle - coordsThumb1.handle}px`\n };\n }\n }\n\n return (\n
\n
\n {this.props.showProgressBar && (\n \n )}\n
\n {this._renderSliderThumbs(handleStyle)}\n
\n {this.props.showLabels ? this._renderLabels(this.props.labels!) : null}\n
\n );\n }\n\n private readonly _renderLabels = (labels: ISliderLabel[]): JSX.Element => {\n return (\n
\n {labels.map((label: ISliderLabel) => {\n return (\n
\n {label.labelString}\n
\n );\n })}\n
\n );\n };\n\n private readonly _renderSliderThumbs = (thumbStyles: React.CSSProperties[]): React.ReactFragment | JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n const sliderAriaLabelMin = format('{0} {1}', this.props.sliderThumbs[0].ariaLabel, this.state.sliderThumbs[0].value);\n\n const sliderAriaLabelMax = this.isRangeSlider ? format('{0} {1}', this.props.sliderThumbs[1].ariaLabel, this.state.sliderThumbs[1].value) : '';\n return (\n <>\n \n \n {' '}\n {this.isRangeSlider && (\n <>\n \n \n \n )}\n \n );\n };\n\n private readonly _handleUpdate = (): void => {\n const { orientation } = this.props;\n const dimensionStr = toUpperCaseFirstChar(orientations[orientation].dimension);\n\n // To get the offsetWidth and offsetHeight of the slider element\n const sliderPos = this.ref.current![`offset${dimensionStr}`];\n const handlePos = this.thumb1Ref.current!.sliderButtonRef.current![`offset${dimensionStr}`];\n\n if (handlePos !== 0) {\n this.setState({\n limit: sliderPos - handlePos,\n grab: orientations.horizontal.direction === 'right' ? -handlePos / 2 : handlePos / 2\n });\n }\n };\n\n private readonly _handleStart = (e: React.TouchEvent | React.KeyboardEvent | React.MouseEvent): void => {\n e.stopPropagation();\n const eventType = e.type;\n document.addEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.addEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n const castTarget = e.target as HTMLElement;\n const thumbid = castTarget && castTarget.id;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: true, id: thumbid };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Start, eventType);\n }\n );\n };\n\n private _handleEnd(e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const eventType = e.type;\n const castTarget = e.target as HTMLElement;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: false, id: '' };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.End, eventType);\n }\n );\n document.removeEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.removeEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n }\n\n private _handleDrag(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const value = this._position(e);\n const eventType = e.type;\n const castThumb = e.target as HTMLElement;\n const thumbId = this.state.id || (castThumb && castThumb.id);\n const thumbPressed = this._getThumbFromProps(thumbId);\n\n if (thumbPressed && !this._willThumbsCrossOver(thumbPressed[0], e)) {\n thumbPressed[0].value = value;\n this._setSliderValue(thumbPressed, castThumb, eventType);\n }\n }\n\n private _handleOnClick(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const position = this._position(e);\n const castThumb = e.target as HTMLElement;\n const eventType = e.type;\n const thumb1 = this._getThumbFromProps(this.props.sliderThumbs[0].id);\n\n if (this.isRangeSlider) {\n const thumb2 = this._getThumbFromProps(this.props.sliderThumbs[1].id);\n\n if (thumb1 && thumb2) {\n const currentMinValue = thumb1[0].value;\n const currentMaxValue = thumb2[0].value;\n const lengthToMinValue = position - currentMinValue;\n const lengthToMaxValue = currentMaxValue - position;\n\n if (lengthToMinValue < lengthToMaxValue) {\n thumb1[0].value = position;\n } else {\n thumb2[0].value = position;\n }\n\n this.setState(\n (_prevState: ISliderState) => {\n return ({ sliderThumbs: [thumb1[0], thumb2[0]] });\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n\n } else if (thumb1) {\n thumb1[0].value = position;\n this.setState(\n (_prevState: ISliderState) => {\n return ({ sliderThumbs: thumb1 });\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n }\n\n private readonly _position = (e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): number => {\n const { grab } = this.state;\n const { orientation } = this.props;\n const castEvent = (e as unknown) as TouchEvent;\n const node = this.ref;\n const coordinateStyle = toUpperCaseFirstChar(orientations[orientation].coordinate);\n const directionStyle = orientations[orientation].direction;\n\n // String conversion to the right property value\n const clientCoordinateStyle = `client${coordinateStyle}`;\n const coordinate = !castEvent.touches ? e[clientCoordinateStyle] : castEvent.touches[0][clientCoordinateStyle];\n const direction = node.current!.getBoundingClientRect()[directionStyle];\n const pos = orientations.horizontal.direction === 'right' ? direction - coordinate - grab : coordinate - direction - grab;\n return this._getValueFromPosition(pos);\n };\n\n private readonly _getPositionFromValue = (value: number): number => {\n const { limit } = this.state;\n const { min, max } = this.props;\n const diffMaxMin = max - min;\n const diffValMin = value - min;\n const percentage = diffValMin / diffMaxMin;\n return Math.round(percentage * limit);\n };\n\n /**\n * Translate position of slider to slider value.\n * @param {number} pos - Current position/coordinates of slider.\n * @returns {number} Value - Slider value.\n */\n private readonly _getValueFromPosition = (pos: number): number => {\n const { limit } = this.state;\n const { orientation, min, max, step } = this.props;\n\n const percentage = clamp(pos, 0, limit) / (limit || 1);\n const baseVal = step * Math.round((percentage * (max - min)) / step);\n const value = orientation === 'horizontal' ? baseVal + min : max - baseVal;\n\n return clamp(value, min, max);\n };\n\n /**\n * Grab coordinates of slider.\n * @param {Object} pos - Position object.\n * @returns {Object} - Slider fill/handle coordinates.\n */\n private readonly _coordinates = (pos: number): IFillCoordinates => {\n const { limit, grab } = this.state;\n const { orientation } = this.props;\n const value = this._getValueFromPosition(pos);\n const position = this._getPositionFromValue(value);\n const handlePos = orientation === 'horizontal' ? position + grab : position;\n const fillPos = orientation === 'horizontal' ? handlePos : limit - handlePos;\n\n return {\n fill: fillPos,\n handle: handlePos,\n label: handlePos\n };\n };\n\n private _handleOnChange(e: React.ChangeEvent): void {\n e.stopPropagation();\n const castTarget = e.target as HTMLInputElement;\n const thumbInteractedWith = castTarget && this._getThumbFromProps(castTarget.id.replace('range', ''));\n const eventType = e.type;\n thumbInteractedWith![0].value = Number.parseInt(e.target.value, 10);\n this._setSliderValue(thumbInteractedWith!, castTarget, eventType);\n }\n\n private readonly _setSliderValue = (sliderThumb: ISliderThumbProps[], castTarget: HTMLElement, eventType: string): void => {\n if (this.isRangeSlider) {\n if (this.props.sliderThumbs[0].value > this.props.sliderThumbs[1].value) {\n this.props.sliderThumbs[0].value = this.props.sliderThumbs[1].value;\n }\n this.setState((_prevState: ISliderState) => {\n return {\n sliderThumbs: { ...this.props.sliderThumbs }\n };\n }, () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n });\n } else {\n this.setState((_prevState: ISliderState) => {\n return {\n sliderThumbs: sliderThumb\n };\n }, () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n });\n }\n };\n\n private _getThumbFromProps(thumbId: string): ISliderThumbProps[] | null {\n let thumbFound;\n\n thumbFound = this.props.sliderThumbs.filter((thumb: ISliderThumbProps) => {\n return thumb.id === thumbId;\n });\n\n return thumbFound.length > 0 ? thumbFound : null;\n }\n\n private readonly _publishNotification = (\n thumb: ISliderThumbProps | null,\n delegate: (sliderNotification: Readonly) => void,\n eventType: string\n ): void => {\n delegate({\n id: (thumb && thumb.id) || '',\n slider: this,\n firstThumbValue: this.state.sliderThumbs[0].value,\n secondThumbValue: (this.state.sliderThumbs[1] && this.state.sliderThumbs[1].value) || Number.NaN,\n eventType\n });\n };\n\n private readonly _getThumbAndPublishEvent = (element: HTMLElement, eventType: EventType, nativeEventType: string): void => {\n let elmenentId = '';\n if (element && element.id && eventType === EventType.Change) {\n elmenentId = element.id.replace('range', '');\n }\n const thumb = element && this._getThumbFromProps(elmenentId);\n\n if (eventType === EventType.End) {\n if (this.props.onChangeEnd) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeEnd, nativeEventType);\n }\n }\n if (eventType === EventType.Start) {\n if (this.props.onChangeStart) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeStart, nativeEventType);\n }\n }\n if (eventType === EventType.Change) {\n if (this.props.onChange) {\n this._publishNotification(thumb && thumb[0], this.props.onChange, nativeEventType);\n }\n }\n };\n\n private _willThumbsCrossOver(\n thumbPressed: ISliderThumbProps,\n event: React.KeyboardEvent | React.MouseEvent | React.TouchEvent\n ): boolean {\n if (!this.isRangeSlider) {\n return false;\n }\n let keycode = 0;\n let checkCondition = false;\n\n if (event.type === 'keydown') {\n const castEvent = (event as unknown) as KeyboardEvent;\n keycode = castEvent.keyCode;\n if (\n (thumbPressed === this.props.sliderThumbs[1] && (keycode === 38 || keycode === 39)) ||\n (thumbPressed === this.props.sliderThumbs[0] && (keycode === 37 || keycode === 40))\n ) {\n return false;\n }\n checkCondition = true;\n\n }\n if (event.type === 'touchmove' || event.type === 'mousemove' || event.type === 'click') {\n const value = this._position(event);\n if (\n (this.state.sliderThumbs[1].value < value && thumbPressed.id === this.props.sliderThumbs[1].id) ||\n (this.state.sliderThumbs[0].value > value && thumbPressed.id === this.props.sliderThumbs[0].id)\n ) {\n return false;\n }\n checkCondition = true;\n\n }\n\n return !(checkCondition && this.props.sliderThumbs[1].value - this.props.step * 2 >= this.props.sliderThumbs[0].value);\n\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { Button, format, KeyCodes, Node, UncontrolledPagination } from '..';\nimport CheckBoxButton from './checkbox';\n\n/**\n * Table Resources.\n */\nexport interface ITableResources {\n\n}\n\n/**\n * Table props.\n */\nexport interface IDataTableProps {\n resources: ITableResources;\n headings: (IHeadingsProperty | undefined)[];\n rows: ITableRowProps[];\n className?: string;\n editLinkText?: string;\n actionLinkText?: string;\n deleteLinkText?: string;\n viewLinkText?: string;\n editLinkTooltip?: string;\n actionLinkTooltip?: string;\n deleteLinkTooltip?: string;\n viewLinkTooltip?: string;\n enableToModify: boolean;\n showCheckBoxes?: boolean;\n isSortable?: boolean;\n showPagination?: boolean;\n paginationProperty: IPaginationProperty;\n minifyActions?: boolean;\n minifiedButtonText?: string;\n excludedColumns?: string[]; // Filled with ITableItemProps.id of columns not to show\n isSingleSelectOnly: boolean;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n resourcePrefix?: string;\n actions: {\n onDelete?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onEdit?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onView?(userData: ITableItemProps[]): void | undefined;\n };\n checkBoxCallback?(records: ITableRowProps[]): void;\n formatPrice?(price: number): string;\n}\n\n/**\n * Table IPaginationProperty props.\n */\nexport interface IPaginationProperty {\n itemPerPage: number;\n skipCount: number;\n prevText: string;\n nextText: string;\n paginationText: string;\n url: string;\n}\n\n/**\n * Table ITableItemProps props.\n */\nexport interface ITableItemProps {\n id: string;\n type: TableDataType;\n value: boolean | number | string;\n className?: string;\n}\n\n/**\n * Table IButtonReferences props.\n */\nexport interface IButtonReferences {\n edit?: React.RefObject;\n delete?: React.RefObject;\n}\n\n/**\n * Table ITableRowProps props.\n */\nexport interface ITableRowProps {\n row: ITableItemProps[];\n isSelected: boolean;\n buttonReferences?: IButtonReferences;\n}\n\n/**\n * Table IDataTableCells props.\n */\ninterface IDataTableCells {\n header: boolean;\n className: string;\n content: string | number | React.ReactNode;\n cellIndex: number;\n scope: 'col' | 'row';\n colSpan?: number;\n records?: ITableRowProps;\n}\n\n/**\n * Table IHeadingsProperty props.\n */\nexport interface IHeadingsProperty {\n name: string;\n sortable: boolean;\n ariaLabel?: string;\n}\n\n/**\n * Table ITableState props.\n */\nexport interface ITableState {\n sortingKey: string;\n ascendingOrder: boolean;\n showActions: boolean;\n selectedIndex: string;\n}\n\n/**\n * Table TableDataType props.\n */\nexport enum TableDataType {\n Number = 'Number',\n Text = 'Text',\n Price = 'Price'\n}\n\nexport default class Table extends React.PureComponent {\n public componentClassName: string = 'ms-table';\n\n private readonly headingPrefix: string = 'table';\n\n private readonly capitalizeHeadingPrefix: string = 'Table';\n\n constructor(props: IDataTableProps) {\n super(props);\n this.state = {\n ascendingOrder: true,\n sortingKey: props.headings[0] && props.headings[0].name || '',\n showActions: props.minifyActions !== undefined ? !props.minifyActions : true,\n selectedIndex: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, headings, rows, isSortable, showPagination, paginationProperty } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const classname = classnames(this.componentClassName, className);\n let tableRows = isSortable && sortingKey ? this._sortTableRow(rows, sortingKey, ascendingOrder) : rows;\n let paginationLinks = null;\n\n if (showPagination) {\n const { skipCount, itemPerPage, nextText, prevText, paginationText, url } = paginationProperty;\n\n paginationLinks = (\n \n );\n\n tableRows = this._getCurrentPageData(tableRows, skipCount, skipCount + itemPerPage);\n }\n\n const tableBody = this._renderRow(tableRows);\n const tableHead = this._renderHeadingRow(headings);\n\n return (\n
\n \n \n {tableHead}\n \n \n {tableBody}\n \n
\n {paginationLinks}\n
\n );\n }\n\n /**\n * Set sorting key.\n * @param event -The mouse event.\n */\n private readonly _selectSortingKey = (event: React.MouseEvent | React.KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const columnName = target.getAttribute('data-sort-name') ? target.getAttribute('data-sort-name') as string : '';\n const { sortingKey, ascendingOrder } = this.state;\n let newOrder = true;\n\n if (sortingKey === columnName) {\n newOrder = !ascendingOrder;\n }\n\n this.setState({\n sortingKey: columnName,\n ascendingOrder: newOrder,\n showActions: false\n });\n };\n\n /**\n * Checkbox change.\n * @param rows -Table rows.\n * @param checkBoxCallback -Checkboxcallback function.\n * @param index -Index value for row.\n * @returns Checkbox rows.\n */\n private readonly _onCheckBoxChangeHandler = (rows: ITableRowProps[], checkBoxCallback: (records: ITableRowProps[]) => void, index?: number) => () => {\n if (ObjectExtensions.isNumber(index)) {\n rows[index].isSelected = !rows[index].isSelected;\n }\n checkBoxCallback(rows);\n };\n\n private readonly _renderHeadingRow = (columnData: (IHeadingsProperty | undefined)[]) => {\n const {\n resources, showCheckBoxes, enableToModify, minifyActions, rows,\n actionLinkText, isSortable, checkBoxCallback, resourcePrefix,\n isSingleSelectOnly, businessUserSelectCheckBoxAriaLabelText, sortByAscending, sortByDescending\n } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const sortingClassName = ascendingOrder ? 'asc' : 'dsc';\n\n const sortingValue = ascendingOrder ? sortByAscending : sortByDescending;\n\n const columns = columnData.map((data, cellIndex) => {\n if (!data) {\n return;\n }\n const counterAddition = 1;\n const updatedCellIndex = cellIndex + counterAddition;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- unsafe assignment.\n const heading = resources[`${this.headingPrefix}${data.name}HeadingText`] ||\n resources[`${resourcePrefix!}${this.capitalizeHeadingPrefix}${data.name}HeadingText`] ||\n resources[`${data.name}HeadingText`] || data.name;\n\n const columnSortValue = (sortingKey === data.name && sortingValue !== undefined) ? sortingValue : '';\n\n const columnAriaLabel = data.ariaLabel ? `${format(data.ariaLabel, heading)} ${columnSortValue}` : '';\n\n const content = isSortable && data.sortable && (\n \n \n {heading}\n
\n \n ) || \n {heading}\n ;\n\n return (\n content\n );\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && !isSingleSelectOnly && (\n \n );\n\n const actionContent = (\n \n {minifyActions ? '' : actionLinkText}\n \n );\n\n return (\n \n { showCheckBoxes && this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data__checkbox checkbox`, content: radioCheckBox,\n cellIndex: -1,\n scope: 'col' }) }\n { columns }\n { enableToModify && this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data action-links`,\n content: actionContent,\n cellIndex: 1,\n scope: 'col'\n }) }\n \n );\n };\n\n private readonly _renderRow = (rows: ITableRowProps[]) => {\n const {\n enableToModify, showCheckBoxes, excludedColumns, actions,\n checkBoxCallback, formatPrice, isSingleSelectOnly,\n businessUserSelectCheckBoxAriaLabelText\n } = this.props;\n\n const tableRows = rows.map((rowsData, index) => {\n let className = index % 2 ? `${this.componentClassName}__row even-row` : `${this.componentClassName}__row odd-row`;\n let showActions = false;\n\n const additionalNameAriaLabel = rowsData.row[0].value.toString();\n const columnData = rowsData.row.map(cell => {\n if (excludedColumns && excludedColumns.includes(cell.id)) {\n return;\n }\n\n // Numbers/price data types will always be right-aligned per design standards\n const extraClass = cell.type === TableDataType.Number || cell.type === TableDataType.Price ? 'num-type' : '';\n const cellContent = cell.type === TableDataType.Price && formatPrice ? formatPrice(cell.value as number) : cell.value;\n const columnSpecificClass = cell.className || '';\n return this.tableCell({ header: false, className: classnames(`${this.componentClassName}__row-data`, extraClass, columnSpecificClass), content: cellContent, cellIndex: index, scope: 'row' });\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && (\n \n );\n const rowKey = `row-${index}`;\n\n if (rowKey === this.state.selectedIndex && this.state.showActions) {\n className += ' selected';\n showActions = true;\n }\n\n const actionButtons = actions && this._renderActions(rowsData.row, showActions, rowKey, rowsData.buttonReferences);\n\n return (\n \n { showCheckBoxes && this.tableCell({ header: false, className: `${this.componentClassName}__row-data`, content: radioCheckBox, cellIndex: index, scope: 'row', records: rowsData }) }\n { columnData }\n { enableToModify && this.tableCell({ header: false, className: `${this.componentClassName}__row-data`, content: actionButtons, cellIndex: index, scope: 'row', records: rowsData }) }\n \n );\n });\n\n return tableRows;\n };\n\n private readonly _renderActions = (data: ITableItemProps[], showActions: boolean, key: string, buttonReference?: IButtonReferences): React.ReactNode => {\n const { editLinkText, deleteLinkText, viewLinkText, editLinkTooltip, deleteLinkTooltip, viewLinkTooltip, actionLinkTooltip,\n minifyActions, minifiedButtonText, actionLinkText, actions: { onEdit, onDelete, onView } } = this.props;\n const handleClickEdit = onEdit !== undefined ? () => {\n onEdit(data, buttonReference?.edit?.current);\n } : undefined;\n const handleClickDelete = onDelete !== undefined ? () => {\n onDelete(data, buttonReference?.delete?.current);\n } : undefined;\n const handleClickView = onView !== undefined ? () => {\n onView(data);\n } : undefined;\n\n const actionButtons = (\n \n { handleClickView && \n {viewLinkText}\n }\n { handleClickEdit && \n {editLinkText}\n }\n { handleClickDelete && \n {deleteLinkText}\n }\n \n );\n\n if (minifyActions) {\n return (\n \n \n {minifiedButtonText ? minifiedButtonText : ''}\n \n { showActions && actionButtons }\n \n );\n }\n return actionButtons;\n\n };\n\n private readonly _toggleActions = (event: React.MouseEvent) => {\n const target = event && event.target as HTMLElement;\n const newKey = target && target.getAttribute('data-type') ? target.getAttribute('data-type') as string : '';\n this.setState({\n showActions: !this.state.showActions,\n selectedIndex: newKey\n });\n };\n\n private readonly _sortTableRow = (table: ITableRowProps[], sortingkey: string, ascendingOrder: boolean): ITableRowProps[] => {\n return table.sort((userOne: ITableRowProps, userTwo: ITableRowProps) => {\n const userOneData = userOne.row.find(cell => {\n return cell.id === sortingkey;\n });\n const userTwoData = userTwo.row.find(cell => {\n return cell.id === sortingkey;\n });\n\n if (!userOneData || !userTwoData) {\n return -1;\n }\n\n if (typeof userOneData.value === 'number' && typeof userTwoData.value === 'number') {\n return ascendingOrder ? (userOneData.value - userTwoData.value) : (userTwoData.value - userOneData.value);\n }\n\n const cleanFirst = userOneData.value as string && userOneData.value.toString().toLowerCase().trim();\n const cleanSecond = userOneData.value as string && userTwoData.value.toString().toLowerCase().trim();\n\n if (!cleanFirst || !cleanSecond) {\n return -1;\n }\n if (ascendingOrder) {\n return cleanFirst < cleanSecond ? -1 : 1;\n }\n return cleanFirst > cleanSecond ? -1 : 1;\n\n });\n };\n\n private readonly _getCurrentPageData = (tableRows: ITableRowProps[], start: number, end: number): ITableRowProps[] => {\n if (start >= end) {\n return tableRows;\n }\n\n const result = [];\n for (let i = start; i < end; i++) {\n tableRows[i] && result.push(tableRows[i]);\n }\n\n return result;\n };\n\n private readonly tableCell = (props: IDataTableCells) => {\n const { className, header, cellIndex, scope, colSpan, content } = props;\n const hiddenTabIndex = -1;\n const initialTabIndex = 0;\n return header ? (\n initialTabIndex ? initialTabIndex : hiddenTabIndex}\n >\n {content}\n \n ) : (\n \n {content}\n \n );\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n \n {paginationNextText}\n \n
\n );\n };\n\n /**\n * Calls method display result.\n * @param event - Keyboard event.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this._selectSortingKey(event);\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IRadioButtonProps {\n isChecked?: boolean;\n value?: string;\n ariaSetSize?: number;\n ariaPosInSet?: number;\n ariaLabel?: string;\n name: string;\n className?: string;\n isSingleSelectOnly?: boolean;\n onChange(reacords: object): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaLabel\n * @param root0.name\n * @param root0.className\n * @param root0.onChange\n * @param root0.isSingleSelectOnly\n * @extends {React.FC}\n */\nconst CheckBoxButton: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n name,\n className,\n onChange,\n isSingleSelectOnly\n}) => {\n\n const cssClass = classnames('ms-input-radio', className ? className : '');\n return (\n \n );\n};\n\nexport default CheckBoxButton;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { ITooltipProps } from './Tooltip.props';\n\nconst DEFAULT_DELAYS = {\n show: 0,\n hide: 250\n};\n\n/**\n * Tooltip component.\n */\nexport default class Tooltip extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n shouldShowMiniCart: false,\n shouldShowCloseButton: false,\n hideArrow: false,\n placement: 'top',\n placementPrefix: 'msc-bs-tooltip',\n delay: DEFAULT_DELAYS,\n toggle: () => {\n return;\n }\n };\n\n public ref: React.RefObject;\n\n public hideTimeout?: number;\n\n public showTimeout?: number;\n\n public target: HTMLElement | null;\n\n public isMobile: boolean;\n\n public tabPressed: boolean;\n\n constructor(props: ITooltipProps) {\n super(props);\n\n this.ref = React.createRef();\n this.addTargetEvents = this.addTargetEvents.bind(this);\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n this.removeTargetEvents = this.removeTargetEvents.bind(this);\n this.toggle = this.toggle.bind(this);\n this.onMouseOverTooltip = this.onMouseOverTooltip.bind(this);\n this.onMouseLeaveTooltip = this.onMouseLeaveTooltip.bind(this);\n this.onMouseOverTooltipContent = this.onMouseOverTooltipContent.bind(this);\n this.onMouseLeaveTooltipContent = this.onMouseLeaveTooltipContent.bind(this);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this);\n this.onFocusOutTarget = this.onFocusOutTarget.bind(this);\n this.onEscKeyDown = this.onEscKeyDown.bind(this);\n this.onEscKeyDownNative = this.onEscKeyDownNative.bind(this);\n this.target = null;\n this.isMobile = false;\n this.tabPressed = false;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this.addTargetEvents();\n\n // Remove the attr from parent obj when tooltip is hidden\n\n const body = document.getElementsByTagName('body').item(0);\n if (body) {\n const bodyClasses = body.getAttribute('class');\n if (bodyClasses && bodyClasses.includes('mobile')) {\n this.isMobile = true;\n }\n }\n\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n\n public componentWillUnmount(): void {\n this.clearHideTimeout();\n this.clearShowTimeout();\n this.removeTargetEvents();\n }\n\n public onMouseOverTooltip(e: MouseEvent): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n this.showTimeout = window.setTimeout(this.show.bind(this, e), this.getDelay('show'));\n }\n\n public onMouseLeaveTooltip(e: MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n\n public onMouseOverTooltipContent(): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n }\n\n public onMouseLeaveTooltipContent(e: React.MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e.nativeEvent), this.getDelay('hide'));\n }\n\n public onFocusOutTarget(e: Event): void {\n if (!this.props.isOpen) {\n return;\n }\n\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n\n if (!this.ref || !this.ref.current || !this.ref.current.contains(nextFocus)) {\n this.hide(e);\n }\n }, 1);\n } else {\n this.hide(e);\n }\n }\n\n public onEscKeyDown(e: React.KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e.nativeEvent);\n }\n }\n\n public onEscKeyDownNative(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e);\n }\n }\n\n public getDelay(key: 'show' | 'hide'): number {\n const { delay } = this.props;\n if (typeof delay === 'object') {\n return (isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key]);\n }\n\n return delay || 0;\n }\n\n public show(e: Event): void {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.toggle(e);\n\n // Create a new attr for parent obj when tooltip shown\n if (this.target !== null) {\n const ariaAttr = document.createAttribute('aria-describedby');\n ariaAttr.value = this.props.id as string;\n this.target.attributes.setNamedItem(ariaAttr);\n }\n }\n }\n\n public hide(e: Event): void {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.toggle(e);\n\n // Remove the attr from parent obj when tooltip is hidden\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n }\n\n public clearShowTimeout(): void {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n\n public clearHideTimeout(): void {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n\n public handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n if (e.target === this.target || this.target.contains(target)) {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n } else if (this.props.isOpen && target.getAttribute('role') !== 'tooltip') {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n }\n\n public addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n if (this.props.trigger) {\n const triggers = this.props.trigger.split(' ');\n if (!triggers.includes('manual')) {\n if (triggers.includes('click')) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n if (triggers.includes('hover')) {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n }\n if (triggers.includes('focus')) {\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n }\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n }\n } else {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n }\n\n public removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n this.target.removeEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.removeEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.removeEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.removeEventListener('focusin', this.show, true);\n this.target.removeEventListener('focusout', this.onFocusOutTarget, true);\n this.target.removeEventListener('focusout', this.hide, true);\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this.handleDocumentClick, true);\n });\n }\n\n public toggle(e?: Event): void {\n if (e && this.props.disabled) {\n e.preventDefault();\n }\n\n if (this.props.toggle) {\n this.props.toggle();\n }\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen || this.isMobile) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n className,\n innerClassName,\n innerRef,\n modifiers,\n toggle,\n delay,\n placement,\n disabled,\n trigger,\n boundariesElement,\n offset,\n arrowClassName,\n displayMode,\n id,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(classNames(\n displayMode === 'FLYOUT' ? 'msc-flyout-inner' : 'msc-tooltip-inner',\n this.props.innerClassName\n ), this.props.cssModule);\n\n const popperClasses = mapToCssModules(classNames(\n displayMode === 'FLYOUT' ? 'msc-flyout' : 'msc-tooltip',\n 'show',\n this.props.className\n ), this.props.cssModule);\n\n return (\n
\n \n {this.props.toggle && this.props.shouldShowCloseButton ? : ''}\n \n \n
\n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport Tooltip from './Tooltip';\nimport { IUncontrolledTooltipProps } from './Tooltip.props';\n\nexport interface IUncontrolledTooltipState {\n isOpen: boolean;\n}\n\n/**\n * UncontrolledTooltip examples.\n */\nexport default class UncontrolledTooltip extends React.PureComponent {\n private _isAutoDisplayTriggered: boolean;\n\n constructor(props: IUncontrolledTooltipProps) {\n super(props);\n this.state = { isOpen: false };\n this._toggle = this._toggle.bind(this);\n this._isAutoDisplayTriggered = false;\n }\n\n public render(): JSX.Element {\n const isCartPage = !StringExtensions.isNullOrWhitespace(this.props.cartPageUrl) &&\n window.location.toString().includes(this.props.cartPageUrl!);\n\n if (this.props.shouldShowMiniCart && !isCartPage) {\n if (!this._isAutoDisplayTriggered) {\n // First time trigger auto mini cart.\n this.setState({ isOpen: true });\n this._isAutoDisplayTriggered = true;\n } else if (!this.state.isOpen) {\n // If tooptip is closed, reset the flag.\n this._isAutoDisplayTriggered = false;\n }\n }\n\n return ;\n }\n\n private _toggle(): void {\n this.setState(previousState => ({ isOpen: !previousState.isOpen }));\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { IWaitingProps } from './Waiting.props';\n\n/**\n * Waiting - this component is a visual indication of a pre-loader.\n */\nexport default class Waiting extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'msc-waiting-circular'\n };\n\n public render(): JSX.Element {\n const { className, ...props } = this.props;\n const watingClassName = `msc-waiting ${className}`;\n\n return (
);\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { INodeProps } from './node';\n\nexport interface IModuleProps extends INodeProps {\n moduleProps: Msdyn365.IModule;\n}\n\nexport const Module: React.FC = ({ className = '', id = '', tag: Tag = 'div', moduleProps, ...restAttribute }) => (\n \n);\n\nexport default Module;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport type NodeTag = React.ReactType;\n\nexport interface INodeProps {\n\n /* Wrapper class */\n className: string;\n\n /* Children node */\n children?: React.ReactNode;\n\n /* Wrapper Tag */\n tag?: NodeTag;\n\n /* Other attrributes */\n [x: string]: any;\n}\n\nexport type IComponentNodeProps = INodeProps & T & {\n\n /* Wrapper Tag */\n tag?: React.ReactType;\n};\n\nexport const Node: React.FC = React.forwardRef(({ className = '', tag: Tag = 'div', element: Element, ...restAttribute }, ref) => {\n return ();\n});\n\nexport default Node;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { Modal, ModalBody, ModalHeader, Node } from '..';\n\nexport interface IModalViewProps {\n classNames?: string;\n galleryCarousel: React.ReactElement;\n modalIsOpen: boolean;\n ontoggle(): void;\n}\n\nexport const ImagefullView: React.FC = (props: IModalViewProps): React.ReactElement => {\n const body = (\n \n { props.galleryCarousel }\n \n );\n\n const modalWindow = (\n \n );\n\n const modalHeader = (\n \n );\n\n return React.cloneElement(modalWindow, {}, modalHeader, body);\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport function removeInlineZoomStyle(): void {\n const zoomedImages: HTMLCollectionOf = document.body.getElementsByClassName('ms-inline-zoom__zoomedImg');\n\n // eslint-disable-next-line xss/no-mixed-html -- Need raw HTML.\n const zoomedImagesArray = Array.from(zoomedImages) as HTMLImageElement[];\n for (const item of zoomedImagesArray) {\n item.style.width = '0';\n item.style.height = '0';\n }\n}\n\n/**\n * Represents default data scale value which should be used in case improper value specified in module config.\n */\nexport const defaultDataScale = 2;\n\n/**\n * Clears zooming state and reverts to initial image.\n * @param event - Event of moving the mouse out of the image.\n */\nexport function onMouseOutLensContainer(event: React.MouseEvent): void {\n const zoomLens = event.currentTarget;\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n\n/**\n * Represents size dimensions.\n */\ninterface ISize {\n width: number;\n height: number;\n}\n\n/**\n * Represents two-dimensional position.\n */\ninterface ILocation {\n\n /**\n * Left offset.\n */\n x: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n\n /**\n * Top offset.\n */\n y: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n}\n\n/**\n * Retrieves the displayed image size preserving image proportions.\n * @param imageElement - The html image element which is displayed.\n * @returns The dimensions of the displayed image ignoring all the offsets and paddings.\n */\nfunction getDisplayedImageSize(imageElement: HTMLImageElement): ISize {\n const imageInitialHeight = imageElement.naturalHeight;\n const imageInitialWidth = imageElement.naturalWidth;\n const imageContainerHeight = imageElement.height;\n const imageContainerWidth = imageElement.width;\n\n const widthScaleRatio = imageContainerWidth / imageInitialWidth;\n const heightScaleRatio = imageContainerHeight / imageInitialHeight;\n\n const scaleRatio = Math.min(widthScaleRatio, heightScaleRatio);\n\n return {\n width: imageInitialWidth * scaleRatio,\n height: imageInitialHeight * scaleRatio\n };\n}\n\n/**\n * Retrieves the center point based on the given dimensions.\n * @param size - Dimensions of an element.\n * @returns The point of the center.\n */\nfunction getCenter(size: ISize): ILocation {\n const centerDivider = 2;\n return {\n x: size.width / centerDivider,\n y: size.height / centerDivider\n };\n}\n\n/**\n * Retrieves the position where the lens must be placed based by the mouse position, lens size, and container size.\n * @param cursorPosition - The location of the mouse.\n * @param lensSize - The size of the lens.\n * @param originalSize - The container in which the lens should be placed.\n * @returns The location where the lens must be placed.\n */\nfunction getLensPosition(cursorPosition: ILocation, lensSize: ISize, originalSize: ISize) {\n const lensCenter = getCenter(lensSize);\n\n const position: ILocation = {\n x: cursorPosition.x - lensCenter.x,\n y: cursorPosition.y - lensCenter.y\n };\n\n // Limit lens to be inside the image element.\n const minPositionX = 0;\n const maxPositionX = originalSize.width - lensSize.width;\n position.x = Math.min(Math.max(position.x, minPositionX), maxPositionX);\n\n const minPositionY = 0;\n const maxPositionY = originalSize.height - lensSize.height;\n position.y = Math.min(Math.max(position.y, minPositionY), maxPositionY);\n\n return position;\n}\n\n/**\n * Retrieves mouse position.\n * @param event - Mouse event.\n * @param element - Element in which the event happened.\n * @returns Mouse position inside the given element.\n */\nfunction getCursorPosition(event: React.MouseEvent, element: HTMLElement): ILocation {\n const containerBoundingRect = element.getBoundingClientRect();\n return {\n x: event.pageX - containerBoundingRect.left - window.pageXOffset,\n y: event.pageY - containerBoundingRect.top - window.pageYOffset\n };\n}\n\n/**\n * Formats number to represent pixels, e.g. 42px.\n * @param numericValue - The numeric value of pixels.\n * @returns String in pixel format.\n */\nfunction formatPixelsValue(numericValue: number): string {\n return `${numericValue}px`;\n}\n\n/**\n * Formats the given url to be a background image style value.\n * @param sourceUrl - The image source.\n * @returns Background image style value.\n */\nfunction formatBackgroundImageUrl(sourceUrl: string): string {\n return `url('${sourceUrl}')`;\n}\n\n/**\n * Get the cursor position on image click.\n * @param zoomedImage - The target image.\n * @param dataScaleText - Zoom factor for image.\n * @param event - Mouse event action.\n */\nfunction handleInlineStyles(zoomedImage: EventTarget & HTMLImageElement, dataScaleText: string, event: React.MouseEvent): void {\n zoomedImage.removeAttribute('style');\n const imageElement = zoomedImage.parentElement!.previousElementSibling!.querySelector('img')!;\n\n const dataScale = Number(dataScaleText);\n\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const zoomedImageSize: ISize = {\n width: imageContainerSize.width * dataScale,\n height: imageContainerSize.height * dataScale\n };\n\n zoomedImage.style.width = formatPixelsValue(zoomedImageSize.width);\n zoomedImage.style.height = formatPixelsValue(zoomedImageSize.height);\n zoomedImage.style.opacity = '1';\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const imageCenter = getCenter(imageContainerSize);\n const offset: ILocation = {\n x: cursorPosition.x - imageCenter.x,\n y: cursorPosition.y - imageCenter.y\n };\n\n const scaledCursorPosition: ILocation = {\n x: cursorPosition.x * dataScale,\n y: cursorPosition.y * dataScale\n };\n scaledCursorPosition.x -= offset.x;\n scaledCursorPosition.y -= offset.y;\n\n const zoomedImagePosition = getLensPosition(scaledCursorPosition, imageContainerSize, zoomedImageSize);\n\n zoomedImage.style.left = formatPixelsValue(-zoomedImagePosition.x);\n zoomedImage.style.top = formatPixelsValue(-zoomedImagePosition.y);\n}\n\n/**\n * ZoomIn functionality on image click.\n * @param event -The mouse event.\n * @param dataScale -The zoom factor.\n */\nexport function inlineZoomInitClick(event: React.MouseEvent, dataScale?: string): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomImg = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomImg) {\n return;\n }\n\n handleInlineStyles(zoomImg, dataScale ?? '2', event);\n}\n\n/**\n * Updates lens and zoomed image positions on the page.\n * @param event - Mouse movement event.\n * @param imageElement - Original image element.\n * @param lens - The element which shows the part of the image which is zoomed.\n */\nfunction handleMouseMovementInContainerZoom(\n event: React.MouseEvent, imageElement: HTMLImageElement, lens: EventTarget & HTMLDivElement): void {\n\n let zoomedContainer = document.body.querySelector('.ms-containerZoom__result');\n if (!zoomedContainer) {\n zoomedContainer = document.createElement('div');\n zoomedContainer.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(zoomedContainer);\n }\n\n const lensSize: ISize = {\n width: lens.offsetWidth,\n height: lens.offsetHeight\n };\n\n const dataScale = Number(lens.getAttribute('data-scale') ?? defaultDataScale);\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const displayedImageSize = getDisplayedImageSize(imageElement);\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const lensPosition = getLensPosition(cursorPosition, lensSize, imageContainerSize);\n lens.style.visibility = 'unset';\n lens.style.left = formatPixelsValue(lensPosition.x);\n lens.style.top = formatPixelsValue(lensPosition.y);\n\n const mainImageSource = imageElement.getAttribute('src')!;\n\n zoomedContainer.style.visibility = 'unset';\n zoomedContainer.style.backgroundImage = formatBackgroundImageUrl(mainImageSource);\n zoomedContainer.style.width = formatPixelsValue(lensSize.width * dataScale);\n zoomedContainer.style.height = formatPixelsValue(lensSize.width * dataScale);\n\n const offsetSize: ISize = {\n width: imageContainerSize.width - displayedImageSize.width,\n height: imageContainerSize.height - displayedImageSize.height\n };\n const offsetCenter = getCenter(offsetSize);\n const lensScaledPositionX = (offsetCenter.x - lensPosition.x) * dataScale;\n const lensScaledPositionY = (offsetCenter.y - lensPosition.y) * dataScale;\n\n zoomedContainer.style.backgroundPositionX = formatPixelsValue(lensScaledPositionX);\n zoomedContainer.style.backgroundPositionY = formatPixelsValue(lensScaledPositionY);\n\n zoomedContainer.style.backgroundSize =\n `${formatPixelsValue(displayedImageSize.width * dataScale)} ${formatPixelsValue(displayedImageSize.height * dataScale)}`;\n\n const topPosition = imageElement.getBoundingClientRect().top;\n zoomedContainer.style.top = formatPixelsValue(topPosition);\n}\n\nexport function onMouseOverImageContainer(event: React.MouseEvent): void {\n const lens = event.currentTarget.parentElement!.previousElementSibling! as HTMLDivElement;\n lens.classList.add('ms-containerZoom__zoom-lens__opacity');\n\n const imageElement = event.currentTarget as HTMLImageElement;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onMouseMoveLensContainer(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const imageElement = event.currentTarget.nextElementSibling!.querySelector('img')!;\n const lens = event.currentTarget;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onContainerZoomInit(event: React.MouseEvent): void {\n if (!document.body.querySelector('.ms-containerZoom__result')) {\n const containerDiv = document.createElement('div');\n containerDiv.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(containerDiv);\n }\n\n onMouseOverImageContainer(event);\n}\n\nexport function inlineZoomImageOnMouseMove(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const parentElement = event.currentTarget.parentElement!.parentElement!;\n const zoomImg = event.currentTarget;\n\n const dataScale = parentElement.getAttribute('data-scale') ?? `${defaultDataScale}`;\n handleInlineStyles(zoomImg, dataScale, event);\n}\n\nexport function inlineZoomImageOnMouseOut(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n event.currentTarget.style.height = '0';\n event.currentTarget.style.width = '0';\n}\n\nexport function inlineZoomInit(event: React.MouseEvent, dataScale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImage = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomedImage) {\n return;\n }\n\n handleInlineStyles(zoomedImage, dataScale, event);\n}\n\nexport function inlineZoomImageOnHover(event: React.MouseEvent, scale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImg = event.currentTarget.parentElement!.nextElementSibling!.querySelector('img')!;\n handleInlineStyles(zoomedImg, scale, event);\n}\n\n/**\n * Remove container zoomed image.\n */\nexport function removeContainerZoomStyle(): void {\n\n const zoomLens = document.body.querySelector('.ms-containerZoom__zoom-lens');\n if (zoomLens) {\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n }\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n parseFloat: parseFloat\n});\n"],"names":["Alert","React","render","id","className","closeClassName","cssModule","tag","toggle","color","isOpen","children","transition","fade","assertive","includeAlertClass","ariaLabel","this","props","classes","mapToCssModules","classNames","closeClasses","alertTransition","Fade","baseClass","timeout","appear","enter","exit","Tag","buttonId","innerContent","type","closeAriaLabel","onClick","UncontrolledTooltip","target","placement","style","undefined","display","role","in","unmountOnExit","BackToTop","constructor","super","_renderHeading","text","Msdyn365","editProps","state","attributes","tabIndex","_reevaluatePosition","bind","_scrollToTop","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","getTelemetryAttributes","componentDidMount","window","addEventListener","componentWillUnmount","removeEventListener","threshold","delayInMs","scrollStepInPx","_scrollStep","document","documentElement","scrollTop","body","clearInterval","intervalId","setState","scrollTo","e","preventDefault","setInterval","pageYOffset","height","Math","min","innerHeight","clientHeight","hide","scrollHeight","tabIndexValue","Button","disabled","active","block","outline","size","innerRef","href","ref","Collapse","_transitionStatusToClassHash","entering","entered","exiting","exited","_tagRef","_updateParentElement","node","parentElement","classList","contains","minHeight","_onEntering","_onExit","_onExited","_onExiting","_reevaluateHeight","componentDidUpdate","nextProps","shouldComponentUpdate","nextState","navbar","collapseIn","mountOnEnter","onEnter","onEntering","onEntered","onExit","onExiting","onExited","otherProps","transitionProps","Transition","TransitionTimeouts","status","collapseClass","_getTransitionClass","current","firstElementChild","isAppearing","KeyCodes","format","formatSpecifier","parameters","replace","match","index","length","value","toString","isNullOrWhiteSpace","trim","getTelemetryObject","pageName","moduleName","telemetry","eventType","etext","recid","contentCategory","contentAction","pgname","mname","etype","contentData","setTelemetryAttribute","onTelemetryClick","linkText","logEvent","TelemetryEvent","clamp","max","toUpperCaseFirstChar","charAt","toUpperCase","substr","getCSS","element","property","getComputedStyle","createThrottledEvent","listener","timer","last","event","now","Date","clearTimeout","setTimeout","addThrottledEvent","name","throttledEventHandler","split","map","c","join","canUseDOM","createElement","getTarget","selection","querySelectorAll","Error","console","error","findDOMElements","getTargetElement","targetElement","isRef","isElement","Modal","Carousel","focusableElements","ControlledDrawer","openGlyph","closeGlyph","_toggle","isManuallyToggled","collapseProps","isExpanded","drawerGlyphClass","classnames","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","drawerCloseGlyph","drawerClass","toggleButtonProps","_generateDrawerButtonInnerMarkup","collapseState","toggleButtonText","drawerButtonTextClass","toggleButtonClassName","glyphPlacement","_generateTitle","_generateGlyphMarkup","isStart","additionalClassName","titleLClassName","title","onTextChange","requestContext","onEdit","location","glyphClass","onToggle","Drawer","buttonText","currentTarget","innerText","baseClassActive","fadeIn","timeoutOrUndefined","addEndListener","baseClassAlways","baseClassActiveAlways","isActive","Flipper","telemetryLabel","glyphProps","displayTooltip","sizeClass","attribute","trigger","FormBuilderErrorComponent","errorMessage","FormBuilder","_onSubmit","async","formData","keys","formKey","currentValue","values","Number","resourceId","resourceValue","onSubmit","previousState","isSubmitted","_onInputChange","changedValueIndex","parseInt","getAttribute","ObjectExtensions","Promise","reject","newState","currentKey","requiredValueMissing","setValue","isRequired","resolve","Dictionary","heading","confirmationComponent","submitButtonText","requiredValueMissingErrorMessage","every","ArrayExtensions","autoComplete","filter","key","htmlFor","getValue","onChange","required","isAnyRequiredValueMissing","getValues","findIndex","isMissing","headingTag","HTag","IncrementalQuantity","inputRef","isMobileView","isMobileCheck","isMobile","variant","VariantType","context","gridSettings","xs","w","sm","md","lg","xl","_handleUpdateState","isNaN","currentInput","inputElement","HTMLInputElement","setAttribute","_validateMin","_minValue","currentCount","isUpdating","_onIncrement","_onDecrement","_handleChange","IncrementalQuantity_1","defaultProps","static","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","decrementAttributes","incrementAttributes","ariaLablelText","inputQuantityAriaLabel","extraClassDecrement","extraClassIncrement","decrementButtonAriaLabel","pattern","onBlur","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","observer","MsDyn365","innerWidth","device","Type","LabeledDropdown","_onSelectOption","selectedKey","selectedOption","dropdownOptions","option","selectedIndex","indexOf","labelText","labelClassname","dropdownId","dropdownClassname","labelClassNames","dropdownClassNames","_getSelectedIndex","selected","controlledByParent","i","onSelectOption","selectedOptions","toggleColor","Portal","defaultNode","remove","appendChild","createPortal","mounted","_getFocusableChildren","_handleBackdropClick","_handleBackdropMouseDown","_handleEscape","_handleTab","_onOpened","_onClosed","wasOpen","mouseDownElement","_open","visibility","position","applicationNode","HTMLElement","querySelector","_close","_prevProps","prevState","shouldUpdateFocusToFirstElement","focusableElementArr","focus","componentWillReceiveProps","wrapClassName","modalClassName","backdropClassName","contentClassName","modalTransition","backdropTransition","backdrop","onOpened","onClosed","external","verticalPosition","horizontalPosition","keyboard","zIndex","returnFocusRef","ariaLabelledbyId","dialogAttributes","modalAttributes","onMouseDown","onKeyUp","onKeyDown","modalTransitions","backdropTransitions","Backdrop","dialogBaseClass","dialogClasses","dialog","openCount","scrollY","scrollbarWidth","clientWidth","top","right","left","removeProperty","modalOpenClassName","modalOpenClassNameRegex","RegExp","_getFocusedChild","focusableChildren","activeElement","stopPropagation","container","which","totalFocusable","currentFocus","focusedIndex","el","shiftKey","keyCode","autoFocus","ModalBody","ModalFooter","ModalHeader","closeButton","wrapTag","closeButtonLabel","WrapTag","Pagination","listClassName","listTag","ListTag","label","paginationClasses","listpaginationClasses","PaginationItem","paginationItemClasses","PaginationLink","next","previous","paginationLinkclasses","defaultCaret","Array","isArray","UncontrolledPagination","activePage","maxPages","items","ceil","itemsPerPage","floor","startingItem","qsps","splitUrl","url","secondSplit","hash","parsedQsps","qsp","qspPair","baseUrl","previousText","nextText","previousAriaLabel","nextAriaLabel","activeQsp","_generatePageLinks","_generateUrl","page","Object","qspUrl","forEach","_generatePaginationArrow","disable","tooltipId","nextId","prevId","ariaDescribedBy","nextAreaDescribed","prevAreaDescribed","_generatePaginationItem","_generateEllipse","leftDistance","rightDistance","leftEllipse","pagesDisplayed","rightEllipse","pages","displayedPagesOnLeft","startingIndex","endIndex","push","Popover","tabPressed","popover","_addTargetEvents","_handleDocumentClick","_removeTargetEvents","getRef","_focusOutTarget","_focusOutPopover","_keyDown","_show","_hide","_handleProps","placementPrefix","hideArrow","innerClassName","modifiers","offset","boundariesElement","popperClasses","PopperContent","focusOut","nextFocus","_handlePlacementChange","prevProps","_renderChildren","data","flip","fallbackPlacement","arrowClassName","arrowClassNameOrUndefined","attrs","popperClassName","extendedModifiers","enabled","behavior","preventOverflow","update","order","fn","ReactPopper","component","Arrow","popupProps","processStatusClass","dialogStrings","modalOpen","setModalOpen","closeModal","closeWindowButtonText","imageSettings","product","price","productQuantity","priceComponent","navigationUrl","continueShoppingAttribute","viewBagAttribute","fallbackImageUrl","getFallbackImageUrl","ItemId","actionContext","apiSettings","cropFocalRegion","quantity","itemsString","headerItemOneText","headerItemFormatText","shouldDisplayUnitOfMeasure","app","config","unitOfMeasureDisplayType","reducedDimensions","Dimensions","reduce","str","productDimension","DimensionValue","Value","headerMessageText","Image","src","PrimaryImageUrl","fallBackSrc","altText","Name","loadFailureBehavior","DefaultUnitOfMeasure","goToCartText","continueShoppingText","PriceEditorModeSelectionState","getPriceEditorModeSelectionStateResources","modeState","resources","full","payFullAmountButtonText","partial","specifyAmountButtonText","onClickHandler","handleStateChange","togglePopoverHandler","setPopoverState","isPopoverState","PriceEditorModeSelectionComponent","popoverReference","isPopoverShown","setIsPopoverShown","setModeState","currentState","onChangeMode","clickedState","onStateChanged","EnumExtensions","stateStringRepresentation","renderModeStateItem","PriceEditor","_handleInputFocus","isInputFocused","_handleInputBlur","_handleEditorModeStateChange","_updateAmount","maximumValue","_inputRef","newAmount","handleChange","parseFloat","toFixed","_precision","minimumValue","defaultValue","defaultAmount","containerClassName","hasMultipleModes","mode","formattedValue","editedValue","priceEditorInputAriaLabel","onFocus","Progress","percent","width","classname","Quantity","minValue","debounce","SingleSlideCarousel","carouselSize","slideSize","itemSize","flipperNextLabel","flipperPrevLabel","_onResized","_onCarouselResized","_nextSlide","_previousSlide","_handleTouchStart","_handleTouchEnd","_onFocus","showPrevious","showNext","slideRef","itemRef","direction","parentId","scrollThreshold","touchScrollThreshold","carousel","slide","item","_setSizes","_updateFlippers","vertical","resizeThrottledEventHandler","isVert","slidePositionStyle","modifiedChildren","_getClonedChildren","carouselClass","carouselSlideClass","overflowClass","previousFlipperGlyph","nextFlipperGlyph","previousFlipperClassName","nextFlipperClassName","disableClassName","onTouchStart","onTouchEnd","useTabList","child","castChild","verticalItemsSelector","itemsSelector","_moveSingleSlide","evt","touches","scrollStart","screenY","screenX","changedTouches","delta","currentOffset","maxScrollCount","directionModifier","maxScrollDistance","distanceToEdge","abs","scrollWidth","_calculateCarouselSize","carouselStyle","padding","paddingTop","paddingBottom","paddingLeft","paddingRight","_canScrollPrevious","_canScrollNext","_scrollItemIntoView","offsetTop","offsetLeft","updateOffset","scrollLeft","SliderThumb","sliderButtonRef","sliderThumbBaseClass","sliderThumbClass","trackThumbClass","handleStart","onMouseUp","handleEnd","onTouchMove","handleDrag","handleKeydown","handleFocus","handleBlur","showTooltip","tooltip","handleTooltipText","sliderValue","orientations","horizontal","dimension","coordinate","EventType","Slider","thumb1Ref","thumb2Ref","_renderLabels","labels","labelId","labelPositioning","labelString","_renderSliderThumbs","thumbStyles","sliderAriaLabelMin","sliderThumbs","sliderAriaLabelMax","isRangeSlider","step","orientation","_handleOnChange","_handleStart","_handleDrag","_handleEnd","ariaValueText","_handleUpdate","dimensionStr","sliderPos","handlePos","limit","grab","castTarget","thumbid","_prevState","_getThumbAndPublishEvent","Start","_position","castEvent","coordinateStyle","directionStyle","clientCoordinateStyle","getBoundingClientRect","pos","_getValueFromPosition","_getPositionFromValue","percentage","round","baseVal","_coordinates","fill","handle","_setSliderValue","sliderThumb","Change","_publishNotification","thumb","delegate","slider","firstThumbValue","secondThumbValue","NaN","nativeEventType","elmenentId","_getThumbFromProps","End","onChangeEnd","onChangeStart","_willThumbsCrossOver","_handleOnClick","shouldSliderAdjustToRTL","offsetWidth","_nextState","shouldRender","thumb1Position","thumb2Position","sliderClass","sliderBaseClass","sliderId","camelCasedDirection","positionThumb1","coordsThumb1","fillStyle","handleStyle","trackProgressClass","sliderKey","String","positionThumb2","coordsThumb2","showProgressBar","fillTrackValue","showLabels","castThumb","thumbId","thumbPressed","thumb1","thumb2","thumbInteractedWith","thumbFound","keycode","checkCondition","inForm","TableDataType","Table","componentClassName","headingPrefix","capitalizeHeadingPrefix","_selectSortingKey","columnName","sortingKey","ascendingOrder","newOrder","showActions","_onCheckBoxChangeHandler","rows","checkBoxCallback","isSelected","_renderHeadingRow","columnData","showCheckBoxes","enableToModify","minifyActions","actionLinkText","isSortable","resourcePrefix","isSingleSelectOnly","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","sortingClassName","sortingValue","columns","cellIndex","updatedCellIndex","columnSortValue","columnAriaLabel","sortable","_handleKeyPressPrev","scope","radioCheckBox","CheckBoxButton","actionContent","tableCell","header","content","_renderRow","excludedColumns","actions","formatPrice","rowsData","additionalNameAriaLabel","row","cell","includes","extraClass","Price","cellContent","columnSpecificClass","rowKey","actionButtons","_renderActions","buttonReferences","records","buttonReference","editLinkText","deleteLinkText","viewLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","actionLinkTooltip","minifiedButtonText","onDelete","onView","handleClickEdit","edit","handleClickDelete","delete","handleClickView","Node","_toggleActions","newKey","_sortTableRow","table","sortingkey","sort","userOne","userTwo","userOneData","find","userTwoData","cleanFirst","toLowerCase","cleanSecond","_getCurrentPageData","tableRows","start","end","result","colSpan","_renderPrev","paginationPreviousText","_renderNext","paginationNextText","headings","showPagination","paginationProperty","paginationLinks","skipCount","itemPerPage","prevText","paginationText","tableBody","tableHead","isChecked","cssClass","checked","DEFAULT_DELAYS","show","Tooltip","addTargetEvents","handleDocumentClick","removeTargetEvents","onMouseOverTooltip","onMouseLeaveTooltip","onMouseOverTooltipContent","onMouseLeaveTooltipContent","onFocusOutTarget","onEscKeyDown","onEscKeyDownNative","getElementsByTagName","bodyClasses","getNamedItem","removeNamedItem","clearHideTimeout","clearShowTimeout","hideTimeout","showTimeout","getDelay","nativeEvent","delay","ariaAttr","createAttribute","setNamedItem","triggers","displayMode","shouldShowCloseButton","onMouseOver","onMouseLeave","shouldShowMiniCart","_isAutoDisplayTriggered","isCartPage","StringExtensions","cartPageUrl","Waiting","watingClassName","Module","moduleProps","restAttribute","renderModuleAttributes","Element","ImagefullView","galleryCarousel","modalWindow","modalIsOpen","ontoggle","modalHeader","removeInlineZoomStyle","zoomedImages","getElementsByClassName","zoomedImagesArray","from","defaultDataScale","onMouseOutLensContainer","zoomLens","zoomedImageContainer","getCenter","x","y","getLensPosition","cursorPosition","lensSize","originalSize","lensCenter","maxPositionX","maxPositionY","getCursorPosition","containerBoundingRect","pageX","pageXOffset","pageY","formatPixelsValue","numericValue","handleInlineStyles","zoomedImage","dataScaleText","removeAttribute","imageElement","previousElementSibling","dataScale","imageContainerSize","offsetHeight","zoomedImageSize","opacity","imageCenter","scaledCursorPosition","zoomedImagePosition","inlineZoomInitClick","zoomImg","nextElementSibling","handleMouseMovementInContainerZoom","lens","zoomedContainer","displayedImageSize","imageInitialHeight","naturalHeight","imageInitialWidth","naturalWidth","imageContainerHeight","widthScaleRatio","heightScaleRatio","scaleRatio","getDisplayedImageSize","lensPosition","mainImageSource","backgroundImage","offsetCenter","lensScaledPositionX","lensScaledPositionY","backgroundPositionX","backgroundPositionY","backgroundSize","topPosition","onMouseOverImageContainer","add","onMouseMoveLensContainer","onContainerZoomInit","containerDiv","inlineZoomImageOnMouseMove","inlineZoomImageOnMouseOut","inlineZoomImageOnHover","scale","zoomedImg","removeContainerZoomStyle","tryToString","$TypeError","TypeError","module","exports","O","P","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","deletePropertyOrThrow","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","test","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","chr","fromCharCode","k","v","a","b","proto","forced","comparefn","array","itemsLength","arrayLength","getSortCompare","stat"],"sourceRoot":""}