{"version":3,"file":"static/js/18.3bb8e3fa36adbc3d5cc0.chunk.js","mappings":";yKASkBA,gpBAAlB,SAAkBA,GACdA,EAAA,oCACAA,EAAA,kBACAA,EAAA,SACH,CAJD,CAAkBA,IAAAA,EAAoB,KCwCtC,MAAMC,UAAuBC,EAAAA,cAkBzBC,YAAYC,GACRC,MAAMD,GAdF,KAAAE,UAAW,EACX,KAAAC,OAAQ,EAkMR,KAAAC,qBAAwBC,IAC5B,OAAQA,GACJ,KAAKT,EAAqBU,iBACtBC,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBY,QACtBD,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBa,IACtBF,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EAET,EAlMZI,KAAKG,gBAAkBH,KAAKG,gBAAgBC,KAAKJ,MACjDA,KAAKK,SACDZ,EAAMa,QAAQC,SAAWd,EAAMa,QAAQC,QAAQC,QAAgD,WAAtCf,EAAMa,QAAQC,QAAQC,OAAOC,KAAoB,KAAO,KACrHT,KAAKH,qBAAqBG,KAAKP,MAAMiB,QAAUV,KAAKP,MAAMiB,OAAOrB,sBACjEW,KAAKW,MAAQ,CAAEC,SAAUZ,KAAKY,UAC9BZ,KAAKa,aAAe,EACxB,CAjBOC,uBAAuBC,EAAgBC,GAC1C,IAAIC,EAKJ,OAJIF,GAAUC,GAAoBA,EAAiBE,OAAS,IACxDD,EAAkBD,EAAiBG,MAAKC,GAAQA,EAAKC,SAAUC,gBAAkBP,EAAOO,iBAGrFL,GAAmBA,EAAgBM,IAC9C,CAYcX,eACV,MAAyB,OAAlBZ,KAAKK,QAChB,CAEOmB,oBACHxB,KAAKyB,4BAA8BC,SAAUC,EAAAA,EAAAA,mBAAkBD,OAAQ,SAAU1B,KAAKG,iBACtFH,KAAKG,iBACT,CAEOyB,uBACHF,QAAUA,OAAOG,oBAAoB,SAAU7B,KAAKyB,6BAA8B,EACtF,CAEOK,SAEH,GADA9B,KAAKa,aAAeb,KAAK+B,YACrBC,EAAAA,EAAAA,IAAoBhC,KAAKP,MAAMwC,MAE/B,OADAjC,KAAKP,MAAMyC,UAAUC,MAAM,+BACpB,KAGX,MAAMC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAGRC,EAASC,EAAAA,EAAAA,EAAA,GACR7C,KAAKP,OACLO,KAAKW,OAAK,IACbmC,cAAeV,EACfW,aAAc/C,KAAKP,MAAMa,QAAQC,QAAQwC,aACzCC,WAAY,CACRC,YAAajD,KAAKP,MAClByD,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,UAAWlD,KAAKW,MAAMC,SAAW,YAAc,cACjGwC,IAAK,MACLC,KAAM,aACN,aAAcrD,KAAKP,MAAM6D,UAAUC,eAEvCC,SAAU,CACNN,UAAW,eACXE,IAAK,KACLC,KAAM,QAEVI,SAAU,CACNP,UAAW,qBACXG,KAAM,eACND,IAAK,MAETM,KAAM,CACFN,IAAK,IACLF,UAAW,2BACXG,KAAM,YAEVM,OAAQ,CACJT,UAAW,6BACXE,IAAK,SACLC,KAAM,WACNO,QAAS5D,KAAKP,OAElBoE,eAAgB,CACZX,UAAW,6BAEfY,KAAM,CACFZ,UAAW,2BACXE,IAAK,QAETW,2BAA4B,CACxBb,UAAW,mCAEfc,iBAAkB,CACdd,UAAW,0CACXE,IAAK,SACL,aAAcpD,KAAKP,MAAM6D,UAAUW,oBACnCL,QAAS5D,KAAKP,OAElByE,uBAAwB,CACpBhB,UAAW,wCACXE,IAAK,QAGTe,cAAc,EACdC,aAAcpE,KAAKa,aACnBqC,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,aAGtD,OAAOlD,KAAKP,MAAM4E,WAAWzB,EACjC,CAEQb,WACJ,MAAM,KAAEE,EAAI,OAAEvB,GAAWV,KAAKP,MACxB6E,EAA8B,GAUpC,OATItE,KAAKL,UAAYsC,GAAQA,EAAKsC,YAActC,EAAKsC,WAAWC,QAAUvC,EAAKsC,WAAWC,OAAOtD,OAAS,GACtGe,EAAKsC,WAAWC,OAAOC,KAAKrD,GAA4BkD,EAAWI,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,MAGrH5E,KAAKJ,OAASc,EAAOmE,aAAenE,EAAOmE,YAAY3D,OAAS,GAChER,EAAOmE,YAAYJ,KAAI,CAACrD,EAAwB0D,IAC5CR,EAAWI,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,EAAM,MAG3ER,CACX,CAEQK,uBACJI,EACAC,EACArF,EACAsF,GAEA,MAAMlE,EACFf,KAAKP,MAAMa,SAAWN,KAAKP,MAAMa,QAAQC,SAAWP,KAAKP,MAAMa,QAAQC,QAAQQ,OACzEf,KAAKP,MAAMa,QAAQC,QAAQQ,OAC3B,QACV,IAAImE,EAAa,GAQjB,OAPIH,GACIA,EAAWI,QACPJ,EAAWI,OAAO,KAClBD,EAAQH,EAAWI,OAAO,GAAGC,KAIrCzF,EACO,CACH0F,GAAI/F,EAAegG,eACnBC,SAAUjG,EAAekG,gBAAgBzE,EAAQgE,GAAcA,EAAWU,mBAAqB,GAC/FC,QAASX,GAAcA,EAAWY,IAClCC,QAAS5F,KAAK6F,mBAAmBd,GACjCe,YAAaZ,GAGV,CACHG,GAAI/F,EAAeyG,gBACnBR,SAAWP,GAAWA,EAAQO,UAAa,GAC3CG,QAAUV,GAAWA,EAAQgB,SAAWhB,EAAQgB,QAAQC,gBAAmB,GAC3EC,oBAAsBlB,GAAWA,EAAQmB,WAAanB,EAAQmB,UAAUF,gBAAmB,GAC3FH,YAAcd,GAAWA,EAAQE,OAASF,EAAQE,MAAMkB,KAAQ,GAChER,QAAS5F,KAAKqG,sBAAsBrB,GAGhD,CAEQa,mBAAmBS,GACvB,MAAMC,EAAkC,GACxC,OAAKD,GAAaA,EAASE,UAAaF,EAASE,SAAStF,QAI1DqF,EAAe7B,KAAK,CAChBa,SAAUvF,KAAKP,MAAM6D,UAAUmD,oBAC/Bf,SAASgB,EAAAA,EAAAA,gBAAeJ,EAAWtG,KAAKP,MAAMa,QAAuC,CAAC,KAE1FgG,EAASE,SAAS/B,KAAKrD,IACnBmF,EAAe7B,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,GAAM,IAEpE2B,GAVI,EAWf,CAEQF,sBAAsBC,GAC1B,MAAMC,EAAkC,GAExC,OAAKD,GAAaA,EAASK,UAAaL,EAASK,SAASzF,QAI1DoF,EAASK,SAASlC,KAAI,CAACrD,EAAqB0D,KACxCyB,EAAe7B,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,GAAK,IAE1EyB,GANI,EAOf,CAoBQpG,kBACJH,KAAKK,SAAWL,KAAK4G,eACrB5G,KAAK6G,SAAS,CAAEjG,SAAUZ,KAAKY,UACnC,CAEQgG,eACJ,MAAM,QAAEtG,GAAYN,KAAKP,MAGzB,GAAIa,EAAQC,SAAWD,EAAQC,QAAQC,QAA0C,WAAhCF,EAAQC,QAAQC,OAAOC,KACpE,MAAO,KAGX,QAAsBmE,WAAXlD,QAAwBA,OAAOoF,WAAY,CAClD,MAAM/D,EAAezC,EAAQC,QAAQwC,aACrC,GAAIA,EACA,OAAIA,EAAaT,IAAMZ,OAAOoF,YAAc/D,EAAaT,GAAGE,EACjD,KACAO,EAAagE,IAAMrF,OAAOoF,YAAc/D,EAAagE,GAAGvE,EACxD,KACAO,EAAaiE,IAAMtF,OAAOoF,YAAc/D,EAAaiE,GAAGxE,EACxD,KACAO,EAAakE,IAAMvF,OAAOoF,YAAc/D,EAAakE,GAAGzE,EACxD,KAEA,KAKnB,MAAO,IACX,EAxPelD,EAAAyG,cAAgB,IAChBzG,EAAAgG,aAAe,KAM9B4B,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAqBDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,6BAgOb,kICxRM,MAAOC,UAA2B9H,EAAAA,cAKpCC,YAAYC,GACRC,MAAMD,GAJF,KAAA6H,eAAiB,EACjB,KAAAC,aAAe,EAgNf,KAAAC,sBAAwB,CAACvF,EAAqBwF,IAAsB,KACnEzH,KAAKP,MAAM0E,cAMZkD,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CACVc,WAAY1F,EAAKoD,GACjBuC,oBAAqB3F,EAAKsD,SAC1BsC,WAAYJ,KAThBzH,KAAK6G,SAAS,CACVc,WAAY3H,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAe1F,EAAKoD,QAAMT,EAAY3C,EAAKoD,GAC3FwC,WAAYJ,IAWpBzH,KAAK8H,aAAa,EAGd,KAAAC,cAAgB,IAAM,KAC1BV,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CAAEc,WAAY3H,KAAKW,MAAMkH,aAEvC7H,KAAK8H,aAAa,EAGd,KAAAA,YAAc,KACd9H,KAAKP,MAAM0E,cACX6D,YAAW,KACPhI,KAAKiI,UAAYjI,KAAKiI,SAASC,SAAWlI,KAAKiI,SAASC,QAAQC,OAAO,GACxE,IAKH,KAAAC,oBAAuBC,IACvBrI,KAAKiI,SAASC,UAAYlI,KAAKiI,SAASC,QAAQI,SAASD,EAAME,SAC/DvI,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,MAhPhE5H,KAAKiI,SAAW1I,EAAAA,YAChBS,KAAKW,MAAQ,CAAEgH,gBAAY/C,EAAWgD,oBAAqB,GAAIC,gBAAYjD,GAC3E5E,KAAKwI,cAAgBxI,KAAKwI,cAAcpI,KAAKJ,KACjD,CAEOwB,oBACHiH,SAASC,MAAQD,SAASC,KAAKC,iBAAiB,YAAa3I,KAAKoI,oBACtE,CAEOxG,uBACH6G,SAASC,MAAQD,SAASC,KAAK7G,oBAAoB,YAAa7B,KAAKoI,qBAAqB,EAC9F,CAEOtG,SACH,MAAM,aAAEqC,EAAY,SAAEX,EAAQ,iBAAEQ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAElB,GAAehD,KAAKP,MAG1H,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GACC9F,EAAU,CACdE,UAAWC,IAAWH,EAAWE,UAAWiB,QAA0CS,IAA1B5E,KAAKW,MAAMgH,WAA2B,QAAU,YAE5GpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEwF,IAAKhJ,KAAKiI,SAAUgB,SAAS,OAC5C9E,QAA0CS,IAA1B5E,KAAKW,MAAMgH,YACxBpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK/E,GACNxE,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK9E,EAAgB,CAAEJ,QAAS5D,KAAK+H,mBAC1CxI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK5E,GAAyBlE,KAAKW,MAAMiH,sBAGrD5H,KAAKkJ,kBAItB,CAEQA,iBACJ,MAAM,SAAEzF,EAAQ,aAAEW,EAAY,aAAED,GAAiBnE,KAAKP,OAChD,WAAEkI,GAAe3H,KAAKW,MACtBE,EAA8B,GAEpC,GAAIsD,QAA+BS,IAAf+C,GAA4BvD,EAAalD,OAAS,EAAG,CACrE,IAAIiI,EAA0B,CAAC,EAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAIhF,EAAalD,OAAQkI,IAAK,CAC1C,GAAIhF,EAAagF,IAAMhF,EAAagF,GAAG/D,KAAOsC,EAAY,CACtDwB,EAAW/E,EAAagF,GACvB/B,EAAmBK,YAEd1H,KAAK6G,SAAS,CAAEgB,gBAAYjD,EAAWgD,oBAAqBxD,EAAagF,GAAG7D,WAD5EvF,KAAK6G,SAAS,CAAEgB,gBAAYjD,IAElC,MAGJ,GADAuE,EAAWnJ,KAAKqJ,gBAAgBjF,EAAagF,IACzCD,GAAYA,EAAS9D,KAAOsC,EAC5B,MAIRwB,GACItI,EAAa6D,KACTnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKH,EAAS9D,IAAQ5B,GACvB,IACAzD,KAAKuJ,oBAAoBJ,GAAW,WAIjD/E,EAAaoF,SAAQ,CAACpI,EAAqBqI,KACvC5I,EAAa6D,KACTnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAWhG,GACjBzD,KAAKuJ,oBAAoBnI,IAEjC,IAIT,OAAOP,CACX,CAEQwI,gBAAgBjI,GACpB,MAAMuF,EAAWvF,GAAQA,EAAKwE,QAC9B,GAAIe,GAAYA,EAASzF,OAAS,EAC9B,IAAK,IAAIkI,EAAI,EAAGA,GAAKzC,EAASzF,OAAS,EAAGkI,IAAK,CAC3C,GAAIzC,EAASyC,GAAG/D,KAAOrF,KAAKW,MAAMgH,WAI9B,OAHCN,EAAmBK,YAEd1H,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,GAAIuC,oBAAqBjB,EAASyC,GAAG7D,WAD9EvF,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,KAExCsB,EAASyC,GAEpB,MAAMM,EAAQ1J,KAAKqJ,gBAAgB1C,EAASyC,IAC5C,GAAIM,EACA,OAAOA,EAInB,OAAO,IACX,CAEQH,oBAAoBnF,GACxB,OAAIA,GAAgBA,EAAawB,SAAWxB,EAAawB,QAAQ1E,OAAS,EAClElB,KAAKP,MAAM0E,mBAA0CS,IAA1B5E,KAAKW,MAAMgH,WAC/B3H,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,IAG1D9F,EAAAA,cAACA,EAAAA,SAAc,KACVS,KAAK4J,sBAAsBxF,GAC3BpE,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,KAI7DjB,GAAgBA,EAAamB,UAAYnB,EAAasB,SAAWtB,EAAasB,QAAQxE,OAAS,EAC/FlB,KAAK6J,oBAAoBzF,GACzBA,GAAgBA,EAAamB,WAAanB,EAAasB,QACvD1F,KAAK8J,oBAAoB1F,GAG7B,IACX,CAEQuF,eAAehD,EAA4BgB,GAC/C,MAAM,aAAExD,EAAY,SAAEV,GAAazD,KAAKP,MACxC,GAAIkI,GAAc3H,KAAKW,MAAMgH,aAAeA,EACxC,OAAO,KAGX,IAAKhB,GAAgC,IAApBA,EAASzF,OACtB,OAAO,KAGX,IAAI6I,EAAiB,GACrB,MAAMC,EACFrD,GACAA,EAASlC,KAAI,CAACwF,EAAuBnF,KACjC,MAAMoF,EAAaD,EAAOrE,SAAWqE,EAAOrE,QAAQ1E,OAAS,EAC7D,IAAIiI,EAOAvD,EAUJ,OAfIuD,EADAe,GAAc/F,EACHnE,KAAK4J,sBAAsBK,EAAQtC,EAAY7C,GAE/CmF,EAAOvE,QAAU1F,KAAK6J,oBAAoBI,EAAQnF,GAAO9E,KAAK8J,oBAAoBG,GAK7FC,IACAlK,KAAKuH,eACDvH,KAAKuH,cAAgBvH,KAAKsH,eAAiB,IAC3CyC,EAAiB,SAAS/J,KAAKuH,aAAa4C,aAC5CvE,EAAU5F,KAAK2J,eAAeM,EAAOrE,QAASzB,EAAe8F,EAAO5E,QAAKT,KAK7ErF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKrF,EAAQ,CAAE6F,IAAKW,EAAO5E,KAC3B8D,EACAvD,EACE,IAInB,OAAO5F,KAAKoK,YAAYL,EAAgBC,EAAarC,EACzD,CAEQiC,sBAAsBK,EAAuBtC,EAAqB8B,GACtE,MAAM,OAAE9F,GAAW3D,KAAKP,MACxB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CACDQ,IAAKG,GACD9F,EAAM,CACVC,QAAS5D,KAAKwH,sBAAsByC,EAAQtC,GAC5C0C,QAASrK,KAAKwI,cAAa,iBACZ,EAAI,mBACJxI,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAesC,EAAO5E,IAAiB,cAC7EsC,IAEZsC,EAAO1E,SAGpB,CAEQsE,oBAAoBI,EAAuBR,GAC/C,MAAM,KAAE/F,GAAS1D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKpF,EAAI,CAAE4F,IAAKG,EAAOa,KAAML,EAAOvE,UACpCuE,EAAO1E,SAGpB,CAEQuE,oBAAoBG,EAAuBR,GAC/C,MAAM,KAAE3F,GAAS9D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAW3F,GACjBmG,EAAO1E,SAGpB,CAEQ6E,YAAYG,EAAeP,EAA4BQ,GAC3D,MAAM,SAAEhH,GAAaxD,KAAKP,MAE1B,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEN,UAAWC,IAAWK,EAASN,UAAWqH,KACzDP,EAGb,CA0CQxB,gBACCxI,KAAKP,MAAM0E,cACZnE,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,IAEpE,EA9PeP,EAAAK,aAAc,EAiQjC,iEC9QkBrI,gpBAAlB,SAAkBA,GACdA,EAAA,oCACAA,EAAA,kBACAA,EAAA,SACH,CAJD,CAAkBA,IAAAA,EAAoB,KCmCtC,MAAMC,UAAuBC,EAAAA,cAkBzBC,YAAYC,GACRC,MAAMD,GAdF,KAAAE,UAAoB,EACpB,KAAAC,OAAiB,EAyLjB,KAAAC,qBAAwBC,IAC5B,OAAOA,GACH,KAAKT,EAAqBU,iBACtBC,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBY,QACtBD,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBa,IACtBF,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EAET,EAzLZI,KAAKG,gBAAkBH,KAAKG,gBAAgBC,KAAKJ,MACjDA,KAAKK,SAAWZ,EAAMa,QAAQC,SAAWd,EAAMa,QAAQC,QAAQC,QAAgD,WAAtCf,EAAMa,QAAQC,QAAQC,OAAOC,KAAoB,KAAO,KACjIT,KAAKH,qBAAqBG,KAAKP,MAAMiB,QAAUV,KAAKP,MAAMiB,OAAOrB,sBACjEW,KAAKW,MAAQ,CAACC,SAAUZ,KAAKY,UAC7BZ,KAAKa,aAAe,EACxB,CAhBOC,uBAAuBC,EAAgBC,GAC1C,IAAIC,EAKJ,OAJIF,GAAUC,GAAoBA,EAAiBE,OAAS,IACxDD,EAAkBD,EAAiBG,MAAKC,GAAQA,EAAKC,SAAUC,gBAAkBP,EAAOO,iBAGrFL,GAAmBA,EAAgBM,IAC9C,CAWcX,eACV,MAA0B,OAAlBZ,KAAKK,QACjB,CAEOmB,oBACHxB,KAAKyB,4BACLC,SAAUC,EAAAA,EAAAA,mBAAkBD,OAAQ,SAAU1B,KAAKG,iBACnDH,KAAKG,iBACT,CAEOyB,uBACHF,QAAUA,OAAOG,oBAAoB,SAAU7B,KAAKyB,6BAA8B,EACtF,CAEOK,SAEH,GADA9B,KAAKa,aAAgBb,KAAK+B,YACtBC,EAAAA,EAAAA,IAAoBhC,KAAKP,MAAMwC,MAE/B,OADAjC,KAAKP,MAAMyC,UAAUC,MAAM,+BACpB,KAGX,MAAMC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAGRC,EAASC,EAAAA,EAAAA,EAAA,GACR7C,KAAKP,OACLO,KAAKW,OAAK,IACbmC,cAAeV,EACfW,aAAc/C,KAAKP,MAAMa,QAAQC,QAAQwC,aACzCC,WAAY,CACRC,YAAajD,KAAKP,MAClByD,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,UAAWlD,KAAKW,MAAMC,SAAW,YAAc,cACjGwC,IAAI,MACJC,KAAK,aACL,aAAcrD,KAAKP,MAAM6D,UAAUC,eAEvCC,SAAU,CACNN,UAAW,eACXE,IAAI,KACJC,KAAM,QAEVI,SAAU,CACNP,UAAW,qBACXG,KAAM,eACND,IAAI,MAERM,KAAM,CACFN,IAAK,IACLF,UAAW,2BACXG,KAAM,YAEVM,OAAQ,CACJT,UAAW,6BACXE,IAAI,SACJC,KAAK,WACLO,QAAQ5D,KAAKP,OAEjBoE,eAAgB,CACZX,UAAW,6BAEfY,KAAM,CACFZ,UAAW,2BACXE,IAAI,QAERW,2BAA4B,CACxBb,UAAW,mCAEfc,iBAAkB,CACdd,UAAW,0CACXE,IAAI,SACJ,aAAcpD,KAAKP,MAAM6D,UAAUW,oBACnCL,QAAQ5D,KAAKP,OAEjByE,uBAAwB,CACpBhB,UAAW,wCACXE,IAAI,QAGRe,cAAc,EACdC,aAAcpE,KAAKa,aACnBqC,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,aAGtD,OAAOlD,KAAKP,MAAM4E,WAAWzB,EACjC,CAEQb,WACJ,MAAM,KAAEE,EAAI,OAAEvB,GAAWV,KAAKP,MACxB6E,EAA8B,GAYpC,OAXItE,KAAKL,UAAYsC,GAAQA,EAAKsC,YAActC,EAAKsC,WAAWC,QAAUvC,EAAKsC,WAAWC,OAAOtD,OAAS,GACtGe,EAAKsC,WAAWC,OAAOC,KAAKrD,GACxBkD,EAAWI,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,MAIjE5E,KAAKJ,OAASc,EAAOmE,aAAgBnE,EAAOmE,YAAY3D,OAAS,GACjER,EAAOmE,YAAYJ,KAAI,CAACrD,EAAwB0D,IAC5CR,EAAWI,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,EAAI,MAGzER,CACX,CAEQK,uBAAuBI,EAAgCC,EAA4BrF,EAAoBmF,GAC3G,MAAM/D,EAASf,KAAKP,MAAMa,SAAWN,KAAKP,MAAMa,QAAQC,SAAWP,KAAKP,MAAMa,QAAQC,QAAQQ,OAASf,KAAKP,MAAMa,QAAQC,QAAQQ,OAAS,QAC3I,IAAImE,EAAY,GAQhB,OAPGH,GACEA,EAAWI,QACTJ,EAAWI,OAAO,KACnBD,EAAQH,EAAWI,OAAO,GAAGC,KAI/BzF,EACO,CACH0F,GAAI/F,EAAegG,eACnBC,SAAUjG,EAAekG,gBAAgBzE,EAAQgE,GAAcA,EAAWU,mBAAqB,GAC/FC,QAASX,GAAcA,EAAWY,IAClCC,QAAS5F,KAAK6F,mBAAmBd,GACjCe,YAAYZ,GAGT,CACHG,GAAI/F,EAAeyG,gBACnBR,SAAUP,GAAWA,EAAQO,UAAY,GACzCG,QAASV,GAAWA,EAAQgB,SAAWhB,EAAQgB,QAAQC,gBAAkB,GACzEC,oBAAqBlB,GAAWA,EAAQmB,WAAanB,EAAQmB,UAAUF,gBAAkB,GACzFH,YAAad,GAAWA,EAAQE,OAASF,EAAQE,MAAMkB,KAAO,GAC9DR,QAAS5F,KAAKqG,sBAAsBrB,GAGhD,CAEQa,mBAAmBS,GACvB,MAAMC,EAAkC,GACxC,OAAKD,GAAaA,EAASE,UAAaF,EAASE,SAAStF,QAI1DqF,EAAe7B,KAAK,CAACa,SAAUvF,KAAKP,MAAM6D,UAAUmD,oBAAqBf,SAASgB,EAAAA,EAAAA,gBAAeJ,EAAUtG,KAAKP,MAAMa,QAAsC,CAAC,KAC7JgG,EAASE,SAAS/B,KAAKrD,IACnBmF,EAAe7B,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,GAAM,IAEpE2B,GAPI,EAQf,CAEQF,sBAAsBC,GAC1B,MAAMC,EAAkC,GAExC,OAAKD,GAAaA,EAASK,UAAaL,EAASK,SAASzF,QAI1DoF,EAASK,SAASlC,KAAI,CAACrD,EAAqB0D,KACxCyB,EAAe7B,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,GAAK,IAE1EyB,GANI,EAOf,CAoBQpG,kBACJH,KAAKK,SAAWL,KAAK4G,eACrB5G,KAAK6G,SAAS,CAAEjG,SAAUZ,KAAKY,UACnC,CAEQgG,eACJ,MAAM,QAAEtG,GAAYN,KAAKP,MAGzB,GAAIa,EAAQC,SAAWD,EAAQC,QAAQC,QAA0C,WAAhCF,EAAQC,QAAQC,OAAOC,KACpE,MAAO,KAGX,QAAsBmE,WAAXlD,QAAwBA,OAAOoF,WAAY,CAClD,MAAM/D,EAAezC,EAAQC,QAAQwC,aACrC,GAAIA,EACA,OAAIA,EAAaT,IAAMZ,OAAOoF,YAAc/D,EAAaT,GAAGE,EACjD,KACAO,EAAagE,IAAMrF,OAAOoF,YAAc/D,EAAagE,GAAGvE,EACxD,KACAO,EAAaiE,IAAMtF,OAAOoF,YAAc/D,EAAaiE,GAAGxE,EACxD,KACAO,EAAakE,IAAMvF,OAAOoF,YAAc/D,EAAakE,GAAGzE,EACxD,KAEA,KAKnB,MAAO,IACX,EA/OelD,EAAAyG,cAAwB,IACxBzG,EAAAgG,aAAuB,KAMtC4B,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAoBDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,6BAwNb,kIC1QM,MAAOC,UAA2B9H,EAAAA,cAKpCC,YAAYC,GACRC,MAAMD,GAJF,KAAA6H,eAAyB,EACzB,KAAAC,aAAuB,EAmMvB,KAAAC,sBAAwB,CAACvF,EAAqBwF,IAAsB,KACnEzH,KAAKP,MAAM0E,cAMZkD,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CACVc,WAAY1F,EAAKoD,GACjBuC,oBAAqB3F,EAAKsD,SAC1BsC,WAAYJ,KAThBzH,KAAK6G,SAAS,CACVc,WAAa3H,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAe1F,EAAKoD,QAAOT,EAAY3C,EAAKoD,GAC7FwC,WAAYJ,IAWpBzH,KAAK8H,aAAa,EAGd,KAAAC,cAAgB,IAAM,KAC1BV,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CAAEc,WAAY3H,KAAKW,MAAMkH,aAEvC7H,KAAK8H,aAAa,EAGd,KAAAA,YAAc,KACd9H,KAAKP,MAAM0E,cACX6D,YAAW,KACPhI,KAAKiI,UAAYjI,KAAKiI,SAASC,SAAWlI,KAAKiI,SAASC,QAAQC,OAAO,GACxE,IAKH,KAAAC,oBAAuBC,IACvBrI,KAAKiI,SAASC,UAAYlI,KAAKiI,SAASC,QAAQI,SAASD,EAAME,SAC/DvI,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,MAnOhE5H,KAAKiI,SAAW1I,EAAAA,YAChBS,KAAKW,MAAQ,CAAEgH,gBAAY/C,EAAWgD,oBAAqB,GAAIC,gBAAYjD,GAC3E5E,KAAKwI,cAAgBxI,KAAKwI,cAAcpI,KAAKJ,KACjD,CAEOwB,oBACHiH,SAASC,MAAQD,SAASC,KAAKC,iBAAiB,YAAa3I,KAAKoI,oBACtE,CAEOxG,uBACH6G,SAASC,MAAQD,SAASC,KAAK7G,oBAAoB,YAAa7B,KAAKoI,qBAAqB,EAC9F,CAEOtG,SACH,MAAM,aAAEqC,EAAY,SAAEX,EAAQ,iBAAEQ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAElB,GAAehD,KAAKP,MAG1H,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAK9F,EAAU,CAAEE,UAAWC,IAAWH,EAAWE,UAAWiB,QAA0CS,IAA1B5E,KAAKW,MAAMgH,WAA2B,QAAU,YAChIpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEwF,IAAKhJ,KAAKiI,SAAUgB,SAAS,OAC5C9E,QAA0CS,IAA1B5E,KAAKW,MAAMgH,YACxBpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK/E,GACNxE,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK9E,EAAgB,CAAEJ,QAAS5D,KAAK+H,mBAC1CxI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK5E,GAAyBlE,KAAKW,MAAMiH,sBAErD5H,KAAKkJ,kBAItB,CAEQA,iBACJ,MAAM,SAAEzF,EAAQ,aAAEW,EAAY,aAAED,GAAiBnE,KAAKP,OAChD,WAAEkI,GAAe3H,KAAKW,MACtBE,EAA8B,GAEpC,GAAIsD,QAA+BS,IAAf+C,GAA4BvD,EAAalD,OAAS,EAAG,CACrE,IAAIiI,EAA0B,CAAC,EAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAIhF,EAAalD,OAAQkI,IAAK,CAC1C,GAAIhF,EAAagF,IAAMhF,EAAagF,GAAG/D,KAAOsC,EAAY,CACtDwB,EAAW/E,EAAagF,GACvB/B,EAAmBK,YAAyD1H,KAAK6G,SAAS,CAAEgB,gBAAYjD,EAAWgD,oBAAqBxD,EAAagF,GAAG7D,WAAvHvF,KAAK6G,SAAS,CAAEgB,gBAAYjD,IAC9D,MAGJ,GADAuE,EAAWnJ,KAAKqJ,gBAAgBjF,EAAagF,IACzCD,GAAYA,EAAS9D,KAAOsC,EAC5B,MAIRwB,GAAYtI,EAAa6D,KACrBnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKH,EAAS9D,IAAQ5B,GAAQ,IAAIzD,KAAKuJ,oBAAoBJ,GAAS,WAG9E/E,EAAaoF,SAAQ,CAACpI,EAAqBqI,KACvC5I,EAAa6D,KACTnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAWhG,GACjBzD,KAAKuJ,oBAAoBnI,IAEjC,IAIT,OAAOP,CACX,CAEQwI,gBAAgBjI,GACpB,MAAMuF,EAAWvF,GAAQA,EAAKwE,QAC9B,GAAIe,GAAYA,EAASzF,OAAS,EAC9B,IAAK,IAAIkI,EAAI,EAAGA,GAAKzC,EAASzF,OAAS,EAAGkI,IAAK,CAC3C,GAAIzC,EAASyC,GAAG/D,KAAOrF,KAAKW,MAAMgH,WAE9B,OADCN,EAAmBK,YAA+D1H,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,GAAIuC,oBAAqBjB,EAASyC,GAAG7D,WAA/HvF,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,KACpEsB,EAASyC,GAEpB,MAAMM,EAAQ1J,KAAKqJ,gBAAgB1C,EAASyC,IAC5C,GAAIM,EACA,OAAOA,EAInB,OAAO,IACX,CAEQH,oBAAoBnF,GACxB,OAAIA,GAAgBA,EAAawB,SAAWxB,EAAawB,QAAQ1E,OAAS,EAClElB,KAAKP,MAAM0E,mBAA0CS,IAA1B5E,KAAKW,MAAMgH,WAC9B3H,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,IAG3D9F,EAAAA,cAACA,EAAAA,SAAc,KACVS,KAAK4J,sBAAsBxF,GAC3BpE,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,KAI7DjB,GAAgBA,EAAamB,UAAYnB,EAAasB,SAAWtB,EAAasB,QAAQxE,OAAS,EAC9FlB,KAAK6J,oBAAoBzF,GAC1BA,GAAgBA,EAAamB,WAAanB,EAAasB,QACtD1F,KAAK8J,oBAAoB1F,GAG9B,IACX,CAEQuF,eAAehD,EAA4BgB,GAC/C,MAAM,aAAExD,EAAY,SAAEV,GAAazD,KAAKP,MACxC,GAAIkI,GAAc3H,KAAKW,MAAMgH,aAAeA,EACxC,OAAO,KAGX,IAAKhB,GAAgC,IAApBA,EAASzF,OACtB,OAAO,KAGX,IAAI6I,EAAyB,GAC7B,MAAMC,EAAcrD,GAAYA,EAASlC,KAAI,CAACwF,EAAuBnF,KACjE,MAAMoF,EAAcD,EAAOrE,SAAWqE,EAAOrE,QAAQ1E,OAAS,EAC9D,IAAIiI,EAUAvD,EAUJ,OAlBIuD,EADAe,GAAc/F,EACHnE,KAAK4J,sBAAsBK,EAAQtC,EAAY7C,GAE9CmF,EAAOvE,QACb1F,KAAK6J,oBAAoBI,EAAQnF,GACjC9E,KAAK8J,oBAAoBG,GAM/BC,IACAlK,KAAKuH,eACDvH,KAAKuH,cAAgBvH,KAAKsH,eAAiB,IAC3CyC,EAAiB,oBAAoB/J,KAAKuH,aAAa4C,aACvDvE,EAAU5F,KAAK2J,eAAeM,EAAOrE,QAASzB,EAAe8F,EAAO5E,QAAKT,KAK7ErF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKrF,EAAQ,CAAE6F,IAAKW,EAAO5E,KAC3B8D,EACAvD,EACE,IAIf,OAAQ5F,KAAKoK,YAAYL,EAAgBC,EAAarC,EAC1D,CAEQiC,sBAAsBK,EAAuBtC,EAAqB8B,GACtE,MAAM,OAAE9F,GAAW3D,KAAKP,MACxB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CACDQ,IAAKG,GACD9F,EAAM,CACVC,QAAS5D,KAAKwH,sBAAsByC,EAAQtC,GAC5C0C,QAASrK,KAAKwI,cAAa,iBACZ,EAAI,mBACJxI,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAesC,EAAO5E,IAAiB,cAC7EsC,IAEZsC,EAAO1E,SAGpB,CAEQsE,oBAAoBI,EAAuBR,GAC/C,MAAM,KAAE/F,GAAS1D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKpF,EAAI,CAAE4F,IAAKG,EAAOa,KAAML,EAAOvE,UACpCuE,EAAO1E,SAGpB,CAEQuE,oBAAoBG,EAAuBR,GAC/C,MAAM,KAAE3F,GAAS9D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAW3F,GAAOmG,EAAO1E,SAE5C,CAEQ6E,YAAYG,EAAeP,EAA4BQ,GAC3D,MAAM,SAAEhH,GAAaxD,KAAKP,MAE1B,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEN,UAAWC,IAAWK,EAASN,UAAWqH,KACzDP,EAGb,CA0CQxB,gBACCxI,KAAKP,MAAM0E,cACZnE,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,IAEpE,EAjPeP,EAAAK,aAAuB,EAoP1C,iECjQkBrI,gpBAAlB,SAAkBA,GACdA,EAAA,oCACAA,EAAA,kBACAA,EAAA,SACH,CAJD,CAAkBA,IAAAA,EAAoB,KCmCtC,MAAMC,UAAuBC,EAAAA,cAkBzBC,YAAYC,GACRC,MAAMD,GAdF,KAAAE,UAAoB,EACpB,KAAAC,OAAiB,EAyLjB,KAAAC,qBAAwBC,IAC5B,OAAOA,GACH,KAAKT,EAAqBU,iBACtBC,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBY,QACtBD,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBa,IACtBF,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EAET,EAzLZI,KAAKG,gBAAkBH,KAAKG,gBAAgBC,KAAKJ,MACjDA,KAAKK,SAAWZ,EAAMa,QAAQC,SAAWd,EAAMa,QAAQC,QAAQC,QAAgD,WAAtCf,EAAMa,QAAQC,QAAQC,OAAOC,KAAoB,KAAO,KACjIT,KAAKH,qBAAqBG,KAAKP,MAAMiB,QAAUV,KAAKP,MAAMiB,OAAOrB,sBACjEW,KAAKW,MAAQ,CAACC,SAAUZ,KAAKY,UAC7BZ,KAAKa,aAAe,EACxB,CAhBOC,uBAAuBC,EAAgBC,GAC1C,IAAIC,EAKJ,OAJIF,GAAUC,GAAoBA,EAAiBE,OAAS,IACxDD,EAAkBD,EAAiBG,MAAKC,GAAQA,EAAKC,SAAUC,gBAAkBP,EAAOO,iBAGrFL,GAAmBA,EAAgBM,IAC9C,CAWcX,eACV,MAA0B,OAAlBZ,KAAKK,QACjB,CAEOmB,oBACHxB,KAAKyB,4BACLC,SAAUC,EAAAA,EAAAA,mBAAkBD,OAAQ,SAAU1B,KAAKG,iBACnDH,KAAKG,iBACT,CAEOyB,uBACHF,QAAUA,OAAOG,oBAAoB,SAAU7B,KAAKyB,6BAA8B,EACtF,CAEOK,SAEH,GADA9B,KAAKa,aAAgBb,KAAK+B,YACtBC,EAAAA,EAAAA,IAAoBhC,KAAKP,MAAMwC,MAE/B,OADAjC,KAAKP,MAAMyC,UAAUC,MAAM,+BACpB,KAGX,MAAMC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAGRC,EAASC,EAAAA,EAAAA,EAAA,GACR7C,KAAKP,OACLO,KAAKW,OAAK,IACbmC,cAAeV,EACfW,aAAc/C,KAAKP,MAAMa,QAAQC,QAAQwC,aACzCC,WAAY,CACRC,YAAajD,KAAKP,MAClByD,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,UAAWlD,KAAKW,MAAMC,SAAW,YAAc,cACjGwC,IAAI,MACJC,KAAK,aACL,aAAcrD,KAAKP,MAAM6D,UAAUC,eAEvCC,SAAU,CACNN,UAAW,eACXE,IAAI,KACJC,KAAM,QAEVI,SAAU,CACNP,UAAW,qBACXG,KAAM,eACND,IAAI,MAERM,KAAM,CACFN,IAAK,IACLF,UAAW,2BACXG,KAAM,YAEVM,OAAQ,CACJT,UAAW,6BACXE,IAAI,SACJC,KAAK,WACLO,QAAQ5D,KAAKP,OAEjBoE,eAAgB,CACZX,UAAW,6BAEfY,KAAM,CACFZ,UAAW,2BACXE,IAAI,QAERW,2BAA4B,CACxBb,UAAW,mCAEfc,iBAAkB,CACdd,UAAW,0CACXE,IAAI,SACJ,aAAcpD,KAAKP,MAAM6D,UAAUW,oBACnCL,QAAQ5D,KAAKP,OAEjByE,uBAAwB,CACpBhB,UAAW,wCACXE,IAAI,QAGRe,cAAc,EACdC,aAAcpE,KAAKa,aACnBqC,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,aAGtD,OAAOlD,KAAKP,MAAM4E,WAAWzB,EACjC,CAEQb,WACJ,MAAM,KAAEE,EAAI,OAAEvB,GAAWV,KAAKP,MACxB6E,EAA8B,GAYpC,OAXItE,KAAKL,UAAYsC,GAAQA,EAAKsC,YAActC,EAAKsC,WAAWC,QAAUvC,EAAKsC,WAAWC,OAAOtD,OAAS,GACtGe,EAAKsC,WAAWC,OAAOC,KAAKrD,GACxBkD,EAAWI,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,MAIjE5E,KAAKJ,OAASc,EAAOmE,aAAgBnE,EAAOmE,YAAY3D,OAAS,GACjER,EAAOmE,YAAYJ,KAAI,CAACrD,EAAwB0D,IAC5CR,EAAWI,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,EAAI,MAGzER,CACX,CAEQK,uBAAuBI,EAAgCC,EAA4BrF,EAAoBmF,GAC3G,MAAM/D,EAASf,KAAKP,MAAMa,SAAWN,KAAKP,MAAMa,QAAQC,SAAWP,KAAKP,MAAMa,QAAQC,QAAQQ,OAASf,KAAKP,MAAMa,QAAQC,QAAQQ,OAAS,QAC3I,IAAImE,EAAY,GAQhB,OAPGH,GACEA,EAAWI,QACTJ,EAAWI,OAAO,KACnBD,EAAQH,EAAWI,OAAO,GAAGC,KAI/BzF,EACO,CACH0F,GAAI/F,EAAegG,eACnBC,SAAUjG,EAAekG,gBAAgBzE,EAAQgE,GAAcA,EAAWU,mBAAqB,GAC/FC,QAASX,GAAcA,EAAWY,IAClCC,QAAS5F,KAAK6F,mBAAmBd,GACjCe,YAAYZ,GAGT,CACHG,GAAI/F,EAAeyG,gBACnBR,SAAUP,GAAWA,EAAQO,UAAY,GACzCG,QAASV,GAAWA,EAAQgB,SAAWhB,EAAQgB,QAAQC,gBAAkB,GACzEC,oBAAqBlB,GAAWA,EAAQmB,WAAanB,EAAQmB,UAAUF,gBAAkB,GACzFH,YAAad,GAAWA,EAAQE,OAASF,EAAQE,MAAMkB,KAAO,GAC9DR,QAAS5F,KAAKqG,sBAAsBrB,GAGhD,CAEQa,mBAAmBS,GACvB,MAAMC,EAAkC,GACxC,OAAKD,GAAaA,EAASE,UAAaF,EAASE,SAAStF,QAI1DqF,EAAe7B,KAAK,CAACa,SAAUvF,KAAKP,MAAM6D,UAAUmD,oBAAqBf,SAASgB,EAAAA,EAAAA,gBAAeJ,EAAUtG,KAAKP,MAAMa,QAAsC,CAAC,KAC7JgG,EAASE,SAAS/B,KAAKrD,IACnBmF,EAAe7B,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,GAAM,IAEpE2B,GAPI,EAQf,CAEQF,sBAAsBC,GAC1B,MAAMC,EAAkC,GAExC,OAAKD,GAAaA,EAASK,UAAaL,EAASK,SAASzF,QAI1DoF,EAASK,SAASlC,KAAI,CAACrD,EAAqB0D,KACxCyB,EAAe7B,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,GAAK,IAE1EyB,GANI,EAOf,CAoBQpG,kBACJH,KAAKK,SAAWL,KAAK4G,eACrB5G,KAAK6G,SAAS,CAAEjG,SAAUZ,KAAKY,UACnC,CAEQgG,eACJ,MAAM,QAAEtG,GAAYN,KAAKP,MAGzB,GAAIa,EAAQC,SAAWD,EAAQC,QAAQC,QAA0C,WAAhCF,EAAQC,QAAQC,OAAOC,KACpE,MAAO,KAGX,QAAsBmE,WAAXlD,QAAwBA,OAAOoF,WAAY,CAClD,MAAM/D,EAAezC,EAAQC,QAAQwC,aACrC,GAAIA,EACA,OAAIA,EAAaT,IAAMZ,OAAOoF,YAAc/D,EAAaT,GAAGE,EACjD,KACAO,EAAagE,IAAMrF,OAAOoF,YAAc/D,EAAagE,GAAGvE,EACxD,KACAO,EAAaiE,IAAMtF,OAAOoF,YAAc/D,EAAaiE,GAAGxE,EACxD,KACAO,EAAakE,IAAMvF,OAAOoF,YAAc/D,EAAakE,GAAGzE,EACxD,KAEA,KAKnB,MAAO,IACX,EA/OelD,EAAAyG,cAAwB,IACxBzG,EAAAgG,aAAuB,KAMtC4B,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAoBDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,6BAwNb,kIC1QM,MAAOC,UAA2B9H,EAAAA,cAKpCC,YAAYC,GACRC,MAAMD,GAJF,KAAA6H,eAAyB,EACzB,KAAAC,aAAuB,EAmMvB,KAAAC,sBAAwB,CAACvF,EAAqBwF,IAAsB,KACnEzH,KAAKP,MAAM0E,cAMZkD,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CACVc,WAAY1F,EAAKoD,GACjBuC,oBAAqB3F,EAAKsD,SAC1BsC,WAAYJ,KAThBzH,KAAK6G,SAAS,CACVc,WAAa3H,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAe1F,EAAKoD,QAAOT,EAAY3C,EAAKoD,GAC7FwC,WAAYJ,IAWpBzH,KAAK8H,aAAa,EAGd,KAAAC,cAAgB,IAAM,KAC1BV,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CAAEc,WAAY3H,KAAKW,MAAMkH,aAEvC7H,KAAK8H,aAAa,EAGd,KAAAA,YAAc,KACd9H,KAAKP,MAAM0E,cACX6D,YAAW,KACPhI,KAAKiI,UAAYjI,KAAKiI,SAASC,SAAWlI,KAAKiI,SAASC,QAAQC,OAAO,GACxE,IAKH,KAAAC,oBAAuBC,IACvBrI,KAAKiI,SAASC,UAAYlI,KAAKiI,SAASC,QAAQI,SAASD,EAAME,SAC/DvI,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,MAnOhE5H,KAAKiI,SAAW1I,EAAAA,YAChBS,KAAKW,MAAQ,CAAEgH,gBAAY/C,EAAWgD,oBAAqB,GAAIC,gBAAYjD,GAC3E5E,KAAKwI,cAAgBxI,KAAKwI,cAAcpI,KAAKJ,KACjD,CAEOwB,oBACHiH,SAASC,MAAQD,SAASC,KAAKC,iBAAiB,YAAa3I,KAAKoI,oBACtE,CAEOxG,uBACH6G,SAASC,MAAQD,SAASC,KAAK7G,oBAAoB,YAAa7B,KAAKoI,qBAAqB,EAC9F,CAEOtG,SACH,MAAM,aAAEqC,EAAY,SAAEX,EAAQ,iBAAEQ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAElB,GAAehD,KAAKP,MAG1H,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAK9F,EAAU,CAAEE,UAAWC,IAAWH,EAAWE,UAAWiB,QAA0CS,IAA1B5E,KAAKW,MAAMgH,WAA2B,QAAU,YAChIpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEwF,IAAKhJ,KAAKiI,SAAUgB,SAAS,OAC5C9E,QAA0CS,IAA1B5E,KAAKW,MAAMgH,YACxBpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK/E,GACNxE,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK9E,EAAgB,CAAEJ,QAAS5D,KAAK+H,mBAC1CxI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK5E,GAAyBlE,KAAKW,MAAMiH,sBAErD5H,KAAKkJ,kBAItB,CAEQA,iBACJ,MAAM,SAAEzF,EAAQ,aAAEW,EAAY,aAAED,GAAiBnE,KAAKP,OAChD,WAAEkI,GAAe3H,KAAKW,MACtBE,EAA8B,GAEpC,GAAIsD,QAA+BS,IAAf+C,GAA4BvD,EAAalD,OAAS,EAAG,CACrE,IAAIiI,EAA0B,CAAC,EAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAIhF,EAAalD,OAAQkI,IAAK,CAC1C,GAAIhF,EAAagF,IAAMhF,EAAagF,GAAG/D,KAAOsC,EAAY,CACtDwB,EAAW/E,EAAagF,GACvB/B,EAAmBK,YAAyD1H,KAAK6G,SAAS,CAAEgB,gBAAYjD,EAAWgD,oBAAqBxD,EAAagF,GAAG7D,WAAvHvF,KAAK6G,SAAS,CAAEgB,gBAAYjD,IAC9D,MAGJ,GADAuE,EAAWnJ,KAAKqJ,gBAAgBjF,EAAagF,IACzCD,GAAYA,EAAS9D,KAAOsC,EAC5B,MAIRwB,GAAYtI,EAAa6D,KACrBnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKH,EAAS9D,IAAQ5B,GAAQ,IAAIzD,KAAKuJ,oBAAoBJ,GAAS,WAG9E/E,EAAaoF,SAAQ,CAACpI,EAAqBqI,KACvC5I,EAAa6D,KACTnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAWhG,GACjBzD,KAAKuJ,oBAAoBnI,IAEjC,IAIT,OAAOP,CACX,CAEQwI,gBAAgBjI,GACpB,MAAMuF,EAAWvF,GAAQA,EAAKwE,QAC9B,GAAIe,GAAYA,EAASzF,OAAS,EAC9B,IAAK,IAAIkI,EAAI,EAAGA,GAAKzC,EAASzF,OAAS,EAAGkI,IAAK,CAC3C,GAAIzC,EAASyC,GAAG/D,KAAOrF,KAAKW,MAAMgH,WAE9B,OADCN,EAAmBK,YAA+D1H,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,GAAIuC,oBAAqBjB,EAASyC,GAAG7D,WAA/HvF,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,KACpEsB,EAASyC,GAEpB,MAAMM,EAAQ1J,KAAKqJ,gBAAgB1C,EAASyC,IAC5C,GAAIM,EACA,OAAOA,EAInB,OAAO,IACX,CAEQH,oBAAoBnF,GACxB,OAAIA,GAAgBA,EAAawB,SAAWxB,EAAawB,QAAQ1E,OAAS,EAClElB,KAAKP,MAAM0E,mBAA0CS,IAA1B5E,KAAKW,MAAMgH,WAC9B3H,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,IAG3D9F,EAAAA,cAACA,EAAAA,SAAc,KACVS,KAAK4J,sBAAsBxF,GAC3BpE,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,KAI7DjB,GAAgBA,EAAamB,UAAYnB,EAAasB,SAAWtB,EAAasB,QAAQxE,OAAS,EAC9FlB,KAAK6J,oBAAoBzF,GAC1BA,GAAgBA,EAAamB,WAAanB,EAAasB,QACtD1F,KAAK8J,oBAAoB1F,GAG9B,IACX,CAEQuF,eAAehD,EAA4BgB,GAC/C,MAAM,aAAExD,EAAY,SAAEV,GAAazD,KAAKP,MACxC,GAAIkI,GAAc3H,KAAKW,MAAMgH,aAAeA,EACxC,OAAO,KAGX,IAAKhB,GAAgC,IAApBA,EAASzF,OACtB,OAAO,KAGX,IAAI6I,EAAyB,GAC7B,MAAMC,EAAcrD,GAAYA,EAASlC,KAAI,CAACwF,EAAuBnF,KACjE,MAAMoF,EAAcD,EAAOrE,SAAWqE,EAAOrE,QAAQ1E,OAAS,EAC9D,IAAIiI,EAUAvD,EAUJ,OAlBIuD,EADAe,GAAc/F,EACHnE,KAAK4J,sBAAsBK,EAAQtC,EAAY7C,GAE9CmF,EAAOvE,QACb1F,KAAK6J,oBAAoBI,EAAQnF,GACjC9E,KAAK8J,oBAAoBG,GAM/BC,IACAlK,KAAKuH,eACDvH,KAAKuH,cAAgBvH,KAAKsH,eAAiB,IAC3CyC,EAAiB,SAAS/J,KAAKuH,aAAa4C,aAC5CvE,EAAU5F,KAAK2J,eAAeM,EAAOrE,QAASzB,EAAe8F,EAAO5E,QAAKT,KAK7ErF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKrF,EAAQ,CAAE6F,IAAKW,EAAO5E,KAC3B8D,EACAvD,EACE,IAIf,OAAQ5F,KAAKoK,YAAYL,EAAgBC,EAAarC,EAC1D,CAEQiC,sBAAsBK,EAAuBtC,EAAqB8B,GACtE,MAAM,OAAE9F,GAAW3D,KAAKP,MACxB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CACDQ,IAAKG,GACD9F,EAAM,CACVC,QAAS5D,KAAKwH,sBAAsByC,EAAQtC,GAC5C0C,QAASrK,KAAKwI,cAAa,iBACZ,EAAI,mBACJxI,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAesC,EAAO5E,IAAiB,cAC7EsC,IAEZsC,EAAO1E,SAGpB,CAEQsE,oBAAoBI,EAAuBR,GAC/C,MAAM,KAAE/F,GAAS1D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKpF,EAAI,CAAE4F,IAAKG,EAAOa,KAAML,EAAOvE,UACpCuE,EAAO1E,SAGpB,CAEQuE,oBAAoBG,EAAuBR,GAC/C,MAAM,KAAE3F,GAAS9D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAW3F,GAAOmG,EAAO1E,SAE5C,CAEQ6E,YAAYG,EAAeP,EAA4BQ,GAC3D,MAAM,SAAEhH,GAAaxD,KAAKP,MAE1B,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEN,UAAWC,IAAWK,EAASN,UAAWqH,KACzDP,EAGb,CA0CQxB,gBACCxI,KAAKP,MAAM0E,cACZnE,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,IAEpE,EAjPeP,EAAAK,aAAuB,EAoP1C,iECjQkBrI,gpBAAlB,SAAkBA,GACdA,EAAA,oCACAA,EAAA,kBACAA,EAAA,SACH,CAJD,CAAkBA,IAAAA,EAAoB,KCmCtC,MAAMC,UAAuBC,EAAAA,cAkBzBC,YAAYC,GACRC,MAAMD,GAdF,KAAAE,UAAoB,EACpB,KAAAC,OAAiB,EAyLjB,KAAAC,qBAAwBC,IAC5B,OAAOA,GACH,KAAKT,EAAqBU,iBACtBC,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBY,QACtBD,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBa,IACtBF,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EAET,EAzLZI,KAAKG,gBAAkBH,KAAKG,gBAAgBC,KAAKJ,MACjDA,KAAKK,SAAWZ,EAAMa,QAAQC,SAAWd,EAAMa,QAAQC,QAAQC,QAAgD,WAAtCf,EAAMa,QAAQC,QAAQC,OAAOC,KAAoB,KAAO,KACjIT,KAAKH,qBAAqBG,KAAKP,MAAMiB,QAAUV,KAAKP,MAAMiB,OAAOrB,sBACjEW,KAAKW,MAAQ,CAACC,SAAUZ,KAAKY,UAC7BZ,KAAKa,aAAe,EACxB,CAhBOC,uBAAuBC,EAAgBC,GAC1C,IAAIC,EAKJ,OAJIF,GAAUC,GAAoBA,EAAiBE,OAAS,IACxDD,EAAkBD,EAAiBG,MAAKC,GAAQA,EAAKC,SAAUC,gBAAkBP,EAAOO,iBAGrFL,GAAmBA,EAAgBM,IAC9C,CAWcX,eACV,MAA0B,OAAlBZ,KAAKK,QACjB,CAEOmB,oBACHxB,KAAKyB,4BACLC,SAAUC,EAAAA,EAAAA,mBAAkBD,OAAQ,SAAU1B,KAAKG,iBACnDH,KAAKG,iBACT,CAEOyB,uBACHF,QAAUA,OAAOG,oBAAoB,SAAU7B,KAAKyB,6BAA8B,EACtF,CAEOK,SAEH,GADA9B,KAAKa,aAAgBb,KAAK+B,YACtBC,EAAAA,EAAAA,IAAoBhC,KAAKP,MAAMwC,MAE/B,OADAjC,KAAKP,MAAMyC,UAAUC,MAAM,+BACpB,KAGX,MAAMC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAGRC,EAASC,EAAAA,EAAAA,EAAA,GACR7C,KAAKP,OACLO,KAAKW,OAAK,IACbmC,cAAeV,EACfW,aAAc/C,KAAKP,MAAMa,QAAQC,QAAQwC,aACzCC,WAAY,CACRC,YAAajD,KAAKP,MAClByD,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,UAAWlD,KAAKW,MAAMC,SAAW,YAAc,cACjGwC,IAAI,MACJC,KAAK,aACL,aAAcrD,KAAKP,MAAM6D,UAAUC,eAEvCC,SAAU,CACNN,UAAW,eACXE,IAAI,KACJC,KAAM,QAEVI,SAAU,CACNP,UAAW,qBACXG,KAAM,eACND,IAAI,MAERM,KAAM,CACFN,IAAK,IACLF,UAAW,2BACXG,KAAM,YAEVM,OAAQ,CACJT,UAAW,6BACXE,IAAI,SACJC,KAAK,WACLO,QAAQ5D,KAAKP,OAEjBoE,eAAgB,CACZX,UAAW,6BAEfY,KAAM,CACFZ,UAAW,2BACXE,IAAI,QAERW,2BAA4B,CACxBb,UAAW,mCAEfc,iBAAkB,CACdd,UAAW,0CACXE,IAAI,SACJ,aAAcpD,KAAKP,MAAM6D,UAAUW,oBACnCL,QAAQ5D,KAAKP,OAEjByE,uBAAwB,CACpBhB,UAAW,wCACXE,IAAI,QAGRe,cAAc,EACdC,aAAcpE,KAAKa,aACnBqC,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,aAGtD,OAAOlD,KAAKP,MAAM4E,WAAWzB,EACjC,CAEQb,WACJ,MAAM,KAAEE,EAAI,OAAEvB,GAAWV,KAAKP,MACxB6E,EAA8B,GAYpC,OAXItE,KAAKL,UAAYsC,GAAQA,EAAKsC,YAActC,EAAKsC,WAAWC,QAAUvC,EAAKsC,WAAWC,OAAOtD,OAAS,GACtGe,EAAKsC,WAAWC,OAAOC,KAAKrD,GACxBkD,EAAWI,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,MAIjE5E,KAAKJ,OAASc,EAAOmE,aAAgBnE,EAAOmE,YAAY3D,OAAS,GACjER,EAAOmE,YAAYJ,KAAI,CAACrD,EAAwB0D,IAC5CR,EAAWI,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,EAAI,MAGzER,CACX,CAEQK,uBAAuBI,EAAgCC,EAA4BrF,EAAoBmF,GAC3G,MAAM/D,EAASf,KAAKP,MAAMa,SAAWN,KAAKP,MAAMa,QAAQC,SAAWP,KAAKP,MAAMa,QAAQC,QAAQQ,OAASf,KAAKP,MAAMa,QAAQC,QAAQQ,OAAS,QAC3I,IAAImE,EAAY,GAQhB,OAPGH,GACEA,EAAWI,QACTJ,EAAWI,OAAO,KACnBD,EAAQH,EAAWI,OAAO,GAAGC,KAI/BzF,EACO,CACH0F,GAAI/F,EAAegG,eACnBC,SAAUjG,EAAekG,gBAAgBzE,EAAQgE,GAAcA,EAAWU,mBAAqB,GAC/FC,QAASX,GAAcA,EAAWY,IAClCC,QAAS5F,KAAK6F,mBAAmBd,GACjCe,YAAYZ,GAGT,CACHG,GAAI/F,EAAeyG,gBACnBR,SAAUP,GAAWA,EAAQO,UAAY,GACzCG,QAASV,GAAWA,EAAQgB,SAAWhB,EAAQgB,QAAQC,gBAAkB,GACzEC,oBAAqBlB,GAAWA,EAAQmB,WAAanB,EAAQmB,UAAUF,gBAAkB,GACzFH,YAAad,GAAWA,EAAQE,OAASF,EAAQE,MAAMkB,KAAO,GAC9DR,QAAS5F,KAAKqG,sBAAsBrB,GAGhD,CAEQa,mBAAmBS,GACvB,MAAMC,EAAkC,GACxC,OAAKD,GAAaA,EAASE,UAAaF,EAASE,SAAStF,QAI1DqF,EAAe7B,KAAK,CAACa,SAAUvF,KAAKP,MAAM6D,UAAUmD,oBAAqBf,SAASgB,EAAAA,EAAAA,gBAAeJ,EAAUtG,KAAKP,MAAMa,QAAsC,CAAC,KAC7JgG,EAASE,SAAS/B,KAAKrD,IACnBmF,EAAe7B,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,GAAM,IAEpE2B,GAPI,EAQf,CAEQF,sBAAsBC,GAC1B,MAAMC,EAAkC,GAExC,OAAKD,GAAaA,EAASK,UAAaL,EAASK,SAASzF,QAI1DoF,EAASK,SAASlC,KAAI,CAACrD,EAAqB0D,KACxCyB,EAAe7B,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,GAAK,IAE1EyB,GANI,EAOf,CAoBQpG,kBACJH,KAAKK,SAAWL,KAAK4G,eACrB5G,KAAK6G,SAAS,CAAEjG,SAAUZ,KAAKY,UACnC,CAEQgG,eACJ,MAAM,QAAEtG,GAAYN,KAAKP,MAGzB,GAAIa,EAAQC,SAAWD,EAAQC,QAAQC,QAA0C,WAAhCF,EAAQC,QAAQC,OAAOC,KACpE,MAAO,KAGX,QAAsBmE,WAAXlD,QAAwBA,OAAOoF,WAAY,CAClD,MAAM/D,EAAezC,EAAQC,QAAQwC,aACrC,GAAIA,EACA,OAAIA,EAAaT,IAAMZ,OAAOoF,YAAc/D,EAAaT,GAAGE,EACjD,KACAO,EAAagE,IAAMrF,OAAOoF,YAAc/D,EAAagE,GAAGvE,EACxD,KACAO,EAAaiE,IAAMtF,OAAOoF,YAAc/D,EAAaiE,GAAGxE,EACxD,KACAO,EAAakE,IAAMvF,OAAOoF,YAAc/D,EAAakE,GAAGzE,EACxD,KAEA,KAKnB,MAAO,IACX,EA/OelD,EAAAyG,cAAwB,IACxBzG,EAAAgG,aAAuB,KAMtC4B,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAoBDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,6BAwNb,kIC1QM,MAAOC,UAA2B9H,EAAAA,cAKpCC,YAAYC,GACRC,MAAMD,GAJF,KAAA6H,eAAyB,EACzB,KAAAC,aAAuB,EAmMvB,KAAAC,sBAAwB,CAACvF,EAAqBwF,IAAsB,KACnEzH,KAAKP,MAAM0E,cAMZkD,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CACVc,WAAY1F,EAAKoD,GACjBuC,oBAAqB3F,EAAKsD,SAC1BsC,WAAYJ,KAThBzH,KAAK6G,SAAS,CACVc,WAAa3H,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAe1F,EAAKoD,QAAOT,EAAY3C,EAAKoD,GAC7FwC,WAAYJ,IAWpBzH,KAAK8H,aAAa,EAGd,KAAAC,cAAgB,IAAM,KAC1BV,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CAAEc,WAAY3H,KAAKW,MAAMkH,aAEvC7H,KAAK8H,aAAa,EAGd,KAAAA,YAAc,KACd9H,KAAKP,MAAM0E,cACX6D,YAAW,KACPhI,KAAKiI,UAAYjI,KAAKiI,SAASC,SAAWlI,KAAKiI,SAASC,QAAQC,OAAO,GACxE,IAKH,KAAAC,oBAAuBC,IACvBrI,KAAKiI,SAASC,UAAYlI,KAAKiI,SAASC,QAAQI,SAASD,EAAME,SAC/DvI,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,MAnOhE5H,KAAKiI,SAAW1I,EAAAA,YAChBS,KAAKW,MAAQ,CAAEgH,gBAAY/C,EAAWgD,oBAAqB,GAAIC,gBAAYjD,GAC3E5E,KAAKwI,cAAgBxI,KAAKwI,cAAcpI,KAAKJ,KACjD,CAEOwB,oBACHiH,SAASC,MAAQD,SAASC,KAAKC,iBAAiB,YAAa3I,KAAKoI,oBACtE,CAEOxG,uBACH6G,SAASC,MAAQD,SAASC,KAAK7G,oBAAoB,YAAa7B,KAAKoI,qBAAqB,EAC9F,CAEOtG,SACH,MAAM,aAAEqC,EAAY,SAAEX,EAAQ,iBAAEQ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAElB,GAAehD,KAAKP,MAG1H,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAK9F,EAAU,CAAEE,UAAWC,IAAWH,EAAWE,UAAWiB,QAA0CS,IAA1B5E,KAAKW,MAAMgH,WAA2B,QAAU,YAChIpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEwF,IAAKhJ,KAAKiI,SAAUgB,SAAS,OAC5C9E,QAA0CS,IAA1B5E,KAAKW,MAAMgH,YACxBpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK/E,GACNxE,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK9E,EAAgB,CAAEJ,QAAS5D,KAAK+H,mBAC1CxI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK5E,GAAyBlE,KAAKW,MAAMiH,sBAErD5H,KAAKkJ,kBAItB,CAEQA,iBACJ,MAAM,SAAEzF,EAAQ,aAAEW,EAAY,aAAED,GAAiBnE,KAAKP,OAChD,WAAEkI,GAAe3H,KAAKW,MACtBE,EAA8B,GAEpC,GAAIsD,QAA+BS,IAAf+C,GAA4BvD,EAAalD,OAAS,EAAG,CACrE,IAAIiI,EAA0B,CAAC,EAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAIhF,EAAalD,OAAQkI,IAAK,CAC1C,GAAIhF,EAAagF,IAAMhF,EAAagF,GAAG/D,KAAOsC,EAAY,CACtDwB,EAAW/E,EAAagF,GACvB/B,EAAmBK,YAAyD1H,KAAK6G,SAAS,CAAEgB,gBAAYjD,EAAWgD,oBAAqBxD,EAAagF,GAAG7D,WAAvHvF,KAAK6G,SAAS,CAAEgB,gBAAYjD,IAC9D,MAGJ,GADAuE,EAAWnJ,KAAKqJ,gBAAgBjF,EAAagF,IACzCD,GAAYA,EAAS9D,KAAOsC,EAC5B,MAIRwB,GAAYtI,EAAa6D,KACrBnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKH,EAAS9D,IAAQ5B,GAAQ,IAAIzD,KAAKuJ,oBAAoBJ,GAAS,WAG9E/E,EAAaoF,SAAQ,CAACpI,EAAqBqI,KACvC5I,EAAa6D,KACTnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAWhG,GACjBzD,KAAKuJ,oBAAoBnI,IAEjC,IAIT,OAAOP,CACX,CAEQwI,gBAAgBjI,GACpB,MAAMuF,EAAWvF,GAAQA,EAAKwE,QAC9B,GAAIe,GAAYA,EAASzF,OAAS,EAC9B,IAAK,IAAIkI,EAAI,EAAGA,GAAKzC,EAASzF,OAAS,EAAGkI,IAAK,CAC3C,GAAIzC,EAASyC,GAAG/D,KAAOrF,KAAKW,MAAMgH,WAE9B,OADCN,EAAmBK,YAA+D1H,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,GAAIuC,oBAAqBjB,EAASyC,GAAG7D,WAA/HvF,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,KACpEsB,EAASyC,GAEpB,MAAMM,EAAQ1J,KAAKqJ,gBAAgB1C,EAASyC,IAC5C,GAAIM,EACA,OAAOA,EAInB,OAAO,IACX,CAEQH,oBAAoBnF,GACxB,OAAIA,GAAgBA,EAAawB,SAAWxB,EAAawB,QAAQ1E,OAAS,EAClElB,KAAKP,MAAM0E,mBAA0CS,IAA1B5E,KAAKW,MAAMgH,WAC9B3H,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,IAG3D9F,EAAAA,cAACA,EAAAA,SAAc,KACVS,KAAK4J,sBAAsBxF,GAC3BpE,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,KAI7DjB,GAAgBA,EAAamB,UAAYnB,EAAasB,SAAWtB,EAAasB,QAAQxE,OAAS,EAC9FlB,KAAK6J,oBAAoBzF,GAC1BA,GAAgBA,EAAamB,WAAanB,EAAasB,QACtD1F,KAAK8J,oBAAoB1F,GAG9B,IACX,CAEQuF,eAAehD,EAA4BgB,GAC/C,MAAM,aAAExD,EAAY,SAAEV,GAAazD,KAAKP,MACxC,GAAIkI,GAAc3H,KAAKW,MAAMgH,aAAeA,EACxC,OAAO,KAGX,IAAKhB,GAAgC,IAApBA,EAASzF,OACtB,OAAO,KAGX,IAAI6I,EAAyB,GAC7B,MAAMC,EAAcrD,GAAYA,EAASlC,KAAI,CAACwF,EAAuBnF,KACjE,MAAMoF,EAAcD,EAAOrE,SAAWqE,EAAOrE,QAAQ1E,OAAS,EAC9D,IAAIiI,EAUAvD,EAUJ,OAlBIuD,EADAe,GAAc/F,EACHnE,KAAK4J,sBAAsBK,EAAQtC,EAAY7C,GAE9CmF,EAAOvE,QACb1F,KAAK6J,oBAAoBI,EAAQnF,GACjC9E,KAAK8J,oBAAoBG,GAM/BC,IACAlK,KAAKuH,eACDvH,KAAKuH,cAAgBvH,KAAKsH,eAAiB,IAC3CyC,EAAiB,SAAS/J,KAAKuH,aAAa4C,aAC5CvE,EAAU5F,KAAK2J,eAAeM,EAAOrE,QAASzB,EAAe8F,EAAO5E,QAAKT,KAK7ErF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKrF,EAAQ,CAAE6F,IAAKW,EAAO5E,KAC3B8D,EACAvD,EACE,IAIf,OAAQ5F,KAAKoK,YAAYL,EAAgBC,EAAarC,EAC1D,CAEQiC,sBAAsBK,EAAuBtC,EAAqB8B,GACtE,MAAM,OAAE9F,GAAW3D,KAAKP,MACxB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CACDQ,IAAKG,GACD9F,EAAM,CACVC,QAAS5D,KAAKwH,sBAAsByC,EAAQtC,GAC5C0C,QAASrK,KAAKwI,cAAa,iBACZ,EAAI,mBACJxI,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAesC,EAAO5E,IAAiB,cAC7EsC,IAEZsC,EAAO1E,SAGpB,CAEQsE,oBAAoBI,EAAuBR,GAC/C,MAAM,KAAE/F,GAAS1D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKpF,EAAI,CAAE4F,IAAKG,EAAOa,KAAML,EAAOvE,UACpCuE,EAAO1E,SAGpB,CAEQuE,oBAAoBG,EAAuBR,GAC/C,MAAM,KAAE3F,GAAS9D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAW3F,GAAOmG,EAAO1E,SAE5C,CAEQ6E,YAAYG,EAAeP,EAA4BQ,GAC3D,MAAM,SAAEhH,GAAaxD,KAAKP,MAE1B,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEN,UAAWC,IAAWK,EAASN,UAAWqH,KACzDP,EAGb,CA0CQxB,gBACCxI,KAAKP,MAAM0E,cACZnE,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,IAEpE,EAjPeP,EAAAK,aAAuB,EAoP1C,iECjQkBrI,gpBAAlB,SAAkBA,GACdA,EAAA,oCACAA,EAAA,kBACAA,EAAA,SACH,CAJD,CAAkBA,IAAAA,EAAoB,KCmCtC,MAAMC,UAAuBC,EAAAA,cAkBzBC,YAAYC,GACRC,MAAMD,GAdF,KAAAE,UAAoB,EACpB,KAAAC,OAAiB,EAyLjB,KAAAC,qBAAwBC,IAC5B,OAAOA,GACH,KAAKT,EAAqBU,iBACtBC,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBY,QACtBD,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EACb,MACJ,KAAKP,EAAqBa,IACtBF,KAAKL,UAAW,EAChBK,KAAKJ,OAAQ,EAET,EAzLZI,KAAKG,gBAAkBH,KAAKG,gBAAgBC,KAAKJ,MACjDA,KAAKK,SAAWZ,EAAMa,QAAQC,SAAWd,EAAMa,QAAQC,QAAQC,QAAgD,WAAtCf,EAAMa,QAAQC,QAAQC,OAAOC,KAAoB,KAAO,KACjIT,KAAKH,qBAAqBG,KAAKP,MAAMiB,QAAUV,KAAKP,MAAMiB,OAAOrB,sBACjEW,KAAKW,MAAQ,CAACC,SAAUZ,KAAKY,UAC7BZ,KAAKa,aAAe,EACxB,CAhBOC,uBAAuBC,EAAgBC,GAC1C,IAAIC,EAKJ,OAJIF,GAAUC,GAAoBA,EAAiBE,OAAS,IACxDD,EAAkBD,EAAiBG,MAAKC,GAAQA,EAAKC,SAAUC,gBAAkBP,EAAOO,iBAGrFL,GAAmBA,EAAgBM,IAC9C,CAWcX,eACV,MAA0B,OAAlBZ,KAAKK,QACjB,CAEOmB,oBACHxB,KAAKyB,4BACLC,SAAUC,EAAAA,EAAAA,mBAAkBD,OAAQ,SAAU1B,KAAKG,iBACnDH,KAAKG,iBACT,CAEOyB,uBACHF,QAAUA,OAAOG,oBAAoB,SAAU7B,KAAKyB,6BAA8B,EACtF,CAEOK,SAEH,GADA9B,KAAKa,aAAgBb,KAAK+B,YACtBC,EAAAA,EAAAA,IAAoBhC,KAAKP,MAAMwC,MAE/B,OADAjC,KAAKP,MAAMyC,UAAUC,MAAM,+BACpB,KAGX,MAAMC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAGRC,EAASC,EAAAA,EAAAA,EAAA,GACR7C,KAAKP,OACLO,KAAKW,OAAK,IACbmC,cAAeV,EACfW,aAAc/C,KAAKP,MAAMa,QAAQC,QAAQwC,aACzCC,WAAY,CACRC,YAAajD,KAAKP,MAClByD,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,UAAWlD,KAAKW,MAAMC,SAAW,YAAc,cACjGwC,IAAI,MACJC,KAAK,aACL,aAAcrD,KAAKP,MAAM6D,UAAUC,eAEvCC,SAAU,CACNN,UAAW,eACXE,IAAI,KACJC,KAAM,QAEVI,SAAU,CACNP,UAAW,qBACXG,KAAM,eACND,IAAI,MAERM,KAAM,CACFN,IAAK,IACLF,UAAW,2BACXG,KAAM,YAEVM,OAAQ,CACJT,UAAW,6BACXE,IAAI,SACJC,KAAK,WACLO,QAAQ5D,KAAKP,OAEjBoE,eAAgB,CACZX,UAAW,6BAEfY,KAAM,CACFZ,UAAW,2BACXE,IAAI,QAERW,2BAA4B,CACxBb,UAAW,mCAEfc,iBAAkB,CACdd,UAAW,0CACXE,IAAI,SACJ,aAAcpD,KAAKP,MAAM6D,UAAUW,oBACnCL,QAAQ5D,KAAKP,OAEjByE,uBAAwB,CACpBhB,UAAW,wCACXE,IAAI,QAGRe,cAAc,EACdC,aAAcpE,KAAKa,aACnBqC,UAAWC,IAAW,SAAUnD,KAAKP,MAAMiB,OAAOwC,aAGtD,OAAOlD,KAAKP,MAAM4E,WAAWzB,EACjC,CAEQb,WACJ,MAAM,KAAEE,EAAI,OAAEvB,GAAWV,KAAKP,MACxB6E,EAA8B,GAYpC,OAXItE,KAAKL,UAAYsC,GAAQA,EAAKsC,YAActC,EAAKsC,WAAWC,QAAUvC,EAAKsC,WAAWC,OAAOtD,OAAS,GACtGe,EAAKsC,WAAWC,OAAOC,KAAKrD,GACxBkD,EAAWI,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,MAIjE5E,KAAKJ,OAASc,EAAOmE,aAAgBnE,EAAOmE,YAAY3D,OAAS,GACjER,EAAOmE,YAAYJ,KAAI,CAACrD,EAAwB0D,IAC5CR,EAAWI,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,EAAI,MAGzER,CACX,CAEQK,uBAAuBI,EAAgCC,EAA4BrF,EAAoBmF,GAC3G,MAAM/D,EAASf,KAAKP,MAAMa,SAAWN,KAAKP,MAAMa,QAAQC,SAAWP,KAAKP,MAAMa,QAAQC,QAAQQ,OAASf,KAAKP,MAAMa,QAAQC,QAAQQ,OAAS,QAC3I,IAAImE,EAAY,GAQhB,OAPGH,GACEA,EAAWI,QACTJ,EAAWI,OAAO,KACnBD,EAAQH,EAAWI,OAAO,GAAGC,KAI/BzF,EACO,CACH0F,GAAI/F,EAAegG,eACnBC,SAAUjG,EAAekG,gBAAgBzE,EAAQgE,GAAcA,EAAWU,mBAAqB,GAC/FC,QAASX,GAAcA,EAAWY,IAClCC,QAAS5F,KAAK6F,mBAAmBd,GACjCe,YAAYZ,GAGT,CACHG,GAAI/F,EAAeyG,gBACnBR,SAAUP,GAAWA,EAAQO,UAAY,GACzCG,QAASV,GAAWA,EAAQgB,SAAWhB,EAAQgB,QAAQC,gBAAkB,GACzEC,oBAAqBlB,GAAWA,EAAQmB,WAAanB,EAAQmB,UAAUF,gBAAkB,GACzFH,YAAad,GAAWA,EAAQE,OAASF,EAAQE,MAAMkB,KAAO,GAC9DR,QAAS5F,KAAKqG,sBAAsBrB,GAGhD,CAEQa,mBAAmBS,GACvB,MAAMC,EAAkC,GACxC,OAAKD,GAAaA,EAASE,UAAaF,EAASE,SAAStF,QAI1DqF,EAAe7B,KAAK,CAACa,SAAUvF,KAAKP,MAAM6D,UAAUmD,oBAAqBf,SAASgB,EAAAA,EAAAA,gBAAeJ,EAAUtG,KAAKP,MAAMa,QAAsC,CAAC,KAC7JgG,EAASE,SAAS/B,KAAKrD,IACnBmF,EAAe7B,KAAK1E,KAAK2E,uBAAuBvD,OAAMwD,GAAW,GAAM,IAEpE2B,GAPI,EAQf,CAEQF,sBAAsBC,GAC1B,MAAMC,EAAkC,GAExC,OAAKD,GAAaA,EAASK,UAAaL,EAASK,SAASzF,QAI1DoF,EAASK,SAASlC,KAAI,CAACrD,EAAqB0D,KACxCyB,EAAe7B,KAAK1E,KAAK2E,4BAAuBC,EAAWxD,GAAM,EAAO0D,GAAK,IAE1EyB,GANI,EAOf,CAoBQpG,kBACJH,KAAKK,SAAWL,KAAK4G,eACrB5G,KAAK6G,SAAS,CAAEjG,SAAUZ,KAAKY,UACnC,CAEQgG,eACJ,MAAM,QAAEtG,GAAYN,KAAKP,MAGzB,GAAIa,EAAQC,SAAWD,EAAQC,QAAQC,QAA0C,WAAhCF,EAAQC,QAAQC,OAAOC,KACpE,MAAO,KAGX,QAAsBmE,WAAXlD,QAAwBA,OAAOoF,WAAY,CAClD,MAAM/D,EAAezC,EAAQC,QAAQwC,aACrC,GAAIA,EACA,OAAIA,EAAaT,IAAMZ,OAAOoF,YAAc/D,EAAaT,GAAGE,EACjD,KACAO,EAAagE,IAAMrF,OAAOoF,YAAc/D,EAAagE,GAAGvE,EACxD,KACAO,EAAaiE,IAAMtF,OAAOoF,YAAc/D,EAAaiE,GAAGxE,EACxD,KACAO,EAAakE,IAAMvF,OAAOoF,YAAc/D,EAAakE,GAAGzE,EACxD,KAEA,KAKnB,MAAO,IACX,EA/OelD,EAAAyG,cAAwB,IACxBzG,EAAAgG,aAAuB,KAMtC4B,EAAAA,EAAAA,IAAA,CADCC,EAAAA,IAAU,gCAoBDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,6BAwNb,kIC1QM,MAAOC,UAA2B9H,EAAAA,cAKpCC,YAAYC,GACRC,MAAMD,GAJF,KAAA6H,eAAyB,EACzB,KAAAC,aAAuB,EAmMvB,KAAAC,sBAAwB,CAACvF,EAAqBwF,IAAsB,KACnEzH,KAAKP,MAAM0E,cAMZkD,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CACVc,WAAY1F,EAAKoD,GACjBuC,oBAAqB3F,EAAKsD,SAC1BsC,WAAYJ,KAThBzH,KAAK6G,SAAS,CACVc,WAAa3H,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAe1F,EAAKoD,QAAOT,EAAY3C,EAAKoD,GAC7FwC,WAAYJ,IAWpBzH,KAAK8H,aAAa,EAGd,KAAAC,cAAgB,IAAM,KAC1BV,EAAmBK,aAAc,EACjC1H,KAAK6G,SAAS,CAAEc,WAAY3H,KAAKW,MAAMkH,aAEvC7H,KAAK8H,aAAa,EAGd,KAAAA,YAAc,KACd9H,KAAKP,MAAM0E,cACX6D,YAAW,KACPhI,KAAKiI,UAAYjI,KAAKiI,SAASC,SAAWlI,KAAKiI,SAASC,QAAQC,OAAO,GACxE,IAKH,KAAAC,oBAAuBC,IACvBrI,KAAKiI,SAASC,UAAYlI,KAAKiI,SAASC,QAAQI,SAASD,EAAME,SAC/DvI,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,MAnOhE5H,KAAKiI,SAAW1I,EAAAA,YAChBS,KAAKW,MAAQ,CAAEgH,gBAAY/C,EAAWgD,oBAAqB,GAAIC,gBAAYjD,GAC3E5E,KAAKwI,cAAgBxI,KAAKwI,cAAcpI,KAAKJ,KACjD,CAEOwB,oBACHiH,SAASC,MAAQD,SAASC,KAAKC,iBAAiB,YAAa3I,KAAKoI,oBACtE,CAEOxG,uBACH6G,SAASC,MAAQD,SAASC,KAAK7G,oBAAoB,YAAa7B,KAAKoI,qBAAqB,EAC9F,CAEOtG,SACH,MAAM,aAAEqC,EAAY,SAAEX,EAAQ,iBAAEQ,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAElB,GAAehD,KAAKP,MAG1H,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAK9F,EAAU,CAAEE,UAAWC,IAAWH,EAAWE,UAAWiB,QAA0CS,IAA1B5E,KAAKW,MAAMgH,WAA2B,QAAU,YAChIpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEwF,IAAKhJ,KAAKiI,SAAUgB,SAAS,OAC5C9E,QAA0CS,IAA1B5E,KAAKW,MAAMgH,YACxBpI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK/E,GACNxE,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK9E,EAAgB,CAAEJ,QAAS5D,KAAK+H,mBAC1CxI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK5E,GAAyBlE,KAAKW,MAAMiH,sBAErD5H,KAAKkJ,kBAItB,CAEQA,iBACJ,MAAM,SAAEzF,EAAQ,aAAEW,EAAY,aAAED,GAAiBnE,KAAKP,OAChD,WAAEkI,GAAe3H,KAAKW,MACtBE,EAA8B,GAEpC,GAAIsD,QAA+BS,IAAf+C,GAA4BvD,EAAalD,OAAS,EAAG,CACrE,IAAIiI,EAA0B,CAAC,EAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAIhF,EAAalD,OAAQkI,IAAK,CAC1C,GAAIhF,EAAagF,IAAMhF,EAAagF,GAAG/D,KAAOsC,EAAY,CACtDwB,EAAW/E,EAAagF,GACvB/B,EAAmBK,YAAyD1H,KAAK6G,SAAS,CAAEgB,gBAAYjD,EAAWgD,oBAAqBxD,EAAagF,GAAG7D,WAAvHvF,KAAK6G,SAAS,CAAEgB,gBAAYjD,IAC9D,MAGJ,GADAuE,EAAWnJ,KAAKqJ,gBAAgBjF,EAAagF,IACzCD,GAAYA,EAAS9D,KAAOsC,EAC5B,MAIRwB,GAAYtI,EAAa6D,KACrBnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKH,EAAS9D,IAAQ5B,GAAQ,IAAIzD,KAAKuJ,oBAAoBJ,GAAS,WAG9E/E,EAAaoF,SAAQ,CAACpI,EAAqBqI,KACvC5I,EAAa6D,KACTnF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAWhG,GACjBzD,KAAKuJ,oBAAoBnI,IAEjC,IAIT,OAAOP,CACX,CAEQwI,gBAAgBjI,GACpB,MAAMuF,EAAWvF,GAAQA,EAAKwE,QAC9B,GAAIe,GAAYA,EAASzF,OAAS,EAC9B,IAAK,IAAIkI,EAAI,EAAGA,GAAKzC,EAASzF,OAAS,EAAGkI,IAAK,CAC3C,GAAIzC,EAASyC,GAAG/D,KAAOrF,KAAKW,MAAMgH,WAE9B,OADCN,EAAmBK,YAA+D1H,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,GAAIuC,oBAAqBjB,EAASyC,GAAG7D,WAA/HvF,KAAK6G,SAAS,CAAEgB,WAAYzG,GAAQA,EAAKiE,KACpEsB,EAASyC,GAEpB,MAAMM,EAAQ1J,KAAKqJ,gBAAgB1C,EAASyC,IAC5C,GAAIM,EACA,OAAOA,EAInB,OAAO,IACX,CAEQH,oBAAoBnF,GACxB,OAAIA,GAAgBA,EAAawB,SAAWxB,EAAawB,QAAQ1E,OAAS,EAClElB,KAAKP,MAAM0E,mBAA0CS,IAA1B5E,KAAKW,MAAMgH,WAC9B3H,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,IAG3D9F,EAAAA,cAACA,EAAAA,SAAc,KACVS,KAAK4J,sBAAsBxF,GAC3BpE,KAAK2J,eAAevF,EAAawB,QAASxB,EAAaiB,KAI7DjB,GAAgBA,EAAamB,UAAYnB,EAAasB,SAAWtB,EAAasB,QAAQxE,OAAS,EAC9FlB,KAAK6J,oBAAoBzF,GAC1BA,GAAgBA,EAAamB,WAAanB,EAAasB,QACtD1F,KAAK8J,oBAAoB1F,GAG9B,IACX,CAEQuF,eAAehD,EAA4BgB,GAC/C,MAAM,aAAExD,EAAY,SAAEV,GAAazD,KAAKP,MACxC,GAAIkI,GAAc3H,KAAKW,MAAMgH,aAAeA,EACxC,OAAO,KAGX,IAAKhB,GAAgC,IAApBA,EAASzF,OACtB,OAAO,KAGX,IAAI6I,EAAyB,GAC7B,MAAMC,EAAcrD,GAAYA,EAASlC,KAAI,CAACwF,EAAuBnF,KACjE,MAAMoF,EAAcD,EAAOrE,SAAWqE,EAAOrE,QAAQ1E,OAAS,EAC9D,IAAIiI,EAUAvD,EAUJ,OAlBIuD,EADAe,GAAc/F,EACHnE,KAAK4J,sBAAsBK,EAAQtC,EAAY7C,GAE9CmF,EAAOvE,QACb1F,KAAK6J,oBAAoBI,EAAQnF,GACjC9E,KAAK8J,oBAAoBG,GAM/BC,IACAlK,KAAKuH,eACDvH,KAAKuH,cAAgBvH,KAAKsH,eAAiB,IAC3CyC,EAAiB,SAAS/J,KAAKuH,aAAa4C,aAC5CvE,EAAU5F,KAAK2J,eAAeM,EAAOrE,QAASzB,EAAe8F,EAAO5E,QAAKT,KAK7ErF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKrF,EAAQ,CAAE6F,IAAKW,EAAO5E,KAC3B8D,EACAvD,EACE,IAIf,OAAQ5F,KAAKoK,YAAYL,EAAgBC,EAAarC,EAC1D,CAEQiC,sBAAsBK,EAAuBtC,EAAqB8B,GACtE,MAAM,OAAE9F,GAAW3D,KAAKP,MACxB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CACDQ,IAAKG,GACD9F,EAAM,CACVC,QAAS5D,KAAKwH,sBAAsByC,EAAQtC,GAC5C0C,QAASrK,KAAKwI,cAAa,iBACZ,EAAI,mBACJxI,KAAKW,MAAMgH,YAAc3H,KAAKW,MAAMgH,aAAesC,EAAO5E,IAAiB,cAC7EsC,IAEZsC,EAAO1E,SAGpB,CAEQsE,oBAAoBI,EAAuBR,GAC/C,MAAM,KAAE/F,GAAS1D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKpF,EAAI,CAAE4F,IAAKG,EAAOa,KAAML,EAAOvE,UACpCuE,EAAO1E,SAGpB,CAEQuE,oBAAoBG,EAAuBR,GAC/C,MAAM,KAAE3F,GAAS9D,KAAKP,MACtB,OACIF,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKG,GAAW3F,GAAOmG,EAAO1E,SAE5C,CAEQ6E,YAAYG,EAAeP,EAA4BQ,GAC3D,MAAM,SAAEhH,GAAaxD,KAAKP,MAE1B,OADAO,KAAKuH,aAAe,EAEhBhI,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKtF,EAAQ,CAAEN,UAAWC,IAAWK,EAASN,UAAWqH,KACzDP,EAGb,CA0CQxB,gBACCxI,KAAKP,MAAM0E,cACZnE,KAAK6G,SAAS,CAAEc,gBAAY/C,EAAWgD,oBAAqB,IAEpE,EAjPeP,EAAAK,aAAuB,EAoP1C,osBCjPA,MAAM+C,UAA2BlL,EAAAA,cAG7BC,YAAYC,GACRC,MAAMD,GA0CH,KAAAiL,oBAAuBrC,GAA0CrI,KAAKP,MAAMiB,OAAOiK,QAASC,KAAOvC,EAAME,OAAOsC,MAEhH,KAAAC,qBAAwBC,GAAuB1C,IAC9CrI,KAAKP,MAAMiB,OAAOsK,OAAShL,KAAKP,MAAMiB,OAAOsK,MAAMD,KACnD/K,KAAKP,MAAMiB,OAAOsK,MAAMD,GAAWxF,SAAW8C,EAAME,OAAOsC,MAAM,EA7CrE7K,KAAKiL,kBAAmBC,EAAAA,EAAAA,oBACpBlL,KAAKP,MAAMa,QAAQC,QAAQ4K,kBAC3BnL,KAAKP,MAAM2L,aACXpL,KAAKP,MAAMyC,UAEnB,CAEOJ,SACH,MAAM,OAAEpB,GAAWV,KAAKP,OAClB,UAAEyD,EAAS,QAAEyH,EAAO,MAAEK,GAAUtK,EAEhCkC,EAASC,EAAAA,EAAA,GACR7C,KAAKP,OAAK,IACbyD,YACAuH,mBAAoB,CAChBxH,YAAajD,KAAKP,MAClByD,UAAWC,IAAW,0BAA2BzC,EAAOwC,YAE5DyH,QAASA,GAAWA,EAAQC,MACxBrL,EAAAA,cAAC8L,EAAAA,GAAa,CACVnI,UAAU,mCACVE,IAAKuH,EAAQvH,KAAO,KACpBwH,KAAMD,EAAQC,KACdU,UAAW,CAAEC,OAAQvL,KAAK0K,oBAAqBc,eAAgBxL,KAAKP,MAAMa,QAAQC,WAG1FyK,MAAOA,GAASA,EAAM9J,OAAS,GAC3B3B,EAAAA,cAACkM,EAAAA,EAAc5C,OAAAC,OAAA,GACP,CACAkC,QACAU,aAAc1L,KAAK8K,qBACnBU,eAAgBxL,KAAKP,MAAMa,QAAQC,QACnC0K,iBAAkBjL,KAAKiL,sBAMvC,OAAOjL,KAAKP,MAAM4E,WAAWzB,EACjC,EAWJ,8ECtEA,MAWA,EAXuEnD,IACnE,MAAM,mBAAEgL,EAAkB,QAAEE,EAAO,MAAEK,GAAUvL,EAE/C,OACIF,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAK2B,GACPE,EACAK,EACI,gECKjB,MAcMW,EAAoBA,CAACC,EAAwBX,KAC/C,IAAKW,GAAgC,IAApBA,EAAS1K,OACtB,OAAO,KAEX,MAAM2K,EAAuC,GACvCC,GAAUC,EAAAA,EAAAA,kBAAiB,QAASd,EAAmB,IAgB7D,OAfAW,EAASpC,SAAQ,CAACwC,EAAMvC,KACpBqC,EAAQG,cAAcC,MAAQF,EAAKzG,SACnC,MAAM4G,GAAaC,EAAAA,EAAAA,wBAAuBnB,EAAmBa,GACvDO,EAAoC,CACtCC,UAAWN,EAAKM,UAChBpJ,UAAW,gCACXqC,SAAUyG,EAAKzG,SACfS,QAASgG,EAAKhG,QAAQC,eACtBsG,aAAcP,EAAKO,aACnBlJ,KAAM,OACNmJ,qBAAsBL,GAE1BN,EAAcnH,KAAK2H,EAAa,IAG7BR,CAAa,EAGxB,EAtCoEY,IAA8D,IAA7D,MAAEzB,EAAK,iBAAEC,EAAgB,eAAEO,EAAc,aAAEE,GAAce,EAC1H,GAAqB,IAAjBzB,EAAM9J,OACN,OAAO,KAEX,MAAM2K,EAAgBF,EAAkBX,EAAOC,GAC/C,OACI1L,EAAAA,cAAA,OAAK2D,UAAU,kCACV2I,GAAiBA,EAAc3K,OAAS,EACrC3B,EAAAA,cAAC8L,EAAAA,GAAc,CAACL,MAAOa,EAAeP,UAAW,CAAEI,eAAcF,oBACjE,KACF,8GCTd,MAAMkB,EAAmB,+BAEZC,EAA6DF,IAA8D,IAA7D,MAAEzB,EAAK,iBAAEC,EAAgB,aAAES,EAAY,eAAEF,GAAgBiB,EAChI,IAAKG,EAAAA,gBAAAA,YAA4B5B,GAC7B,OAAO,KAEX,MAAMa,EAAgBF,EAAkBX,EAAOC,GAC/C,OACI1L,EAAAA,cAAA,OAAK2D,UAAW,GAAGwJ,YACdE,EAAAA,gBAAAA,YAA4Bf,GACzBtM,EAAAA,cAAC8L,EAAAA,GAAc,CAACL,MAAOa,EAAeP,UAAW,CAAEI,eAAcF,oBACjE,KACF,EAIRG,EAAoBA,CAACC,EAAwBX,KAC/C,IAAK2B,EAAAA,gBAAAA,YAA4BhB,GAC7B,OAAO,KAGX,MAAME,GAAUC,EAAAA,EAAAA,kBAAiB,QAASd,EAAmB,IAE7D,OAAOW,EAASnH,KAAIuH,IAChBF,EAAQG,cAAcC,MAAQF,EAAKzG,SACnC,MAAM4G,GAAaC,EAAAA,EAAAA,wBAAuBnB,EAAmBa,GAC7D,MAAO,CACHQ,UAAWN,EAAKM,UAChBpJ,UAAW,GAAGwJ,UACdnH,SAAUyG,EAAKzG,SACfS,QAASgG,EAAKhG,QAAQC,eACtBsG,aAAcP,EAAKO,aACnBlJ,KAAM,OACNmJ,qBAAsBL,EACF,GAC1B,ukBC/BN,MAAMU,UAAwBtN,EAAAA,cAG1BC,YAAYC,GACRC,MAAMD,GA8CH,KAAAiL,oBAAuBrC,GAA0CrI,KAAKP,MAAMiB,OAAOiK,QAAQC,KAAOvC,EAAME,OAAOsC,MAE/G,KAAAC,qBAAwBC,GAAuB1C,IAC9CrI,KAAKP,MAAMiB,OAAOsK,OAAShL,KAAKP,MAAMiB,OAAOsK,MAAMD,KACnD/K,KAAKP,MAAMiB,OAAOsK,MAAMD,GAAWxF,SAAW8C,EAAME,OAAOsC,MAAM,EAjDrE7K,KAAKiL,kBAAmBC,EAAAA,EAAAA,oBACpBlL,KAAKP,MAAMa,QAAQC,QAAQ4K,kBAC3BnL,KAAKP,MAAM2L,aACXpL,KAAKP,MAAMyC,UAEnB,CAEOJ,SAAM,IAAAgL,EACT,MAAM,OAAEpM,EAAM,KAAEuB,GAASjC,KAAKP,OACxB,UAAEyD,EAAS,QAAEyH,EAAO,MAAEK,GAAUtK,EAEhCgM,EAAmB,+BAEzB,GAAoC,QAAhCI,EAAC7K,EAAK8K,oBAAoBvI,cAAM,IAAAsI,IAA/BA,EAAiCE,MAClC,OAAO,KAGX,MAAMpK,EAASC,EAAAA,EAAA,GACR7C,KAAKP,OAAK,IACbyD,YACA+J,gBAAiB,CACbhK,YAAajD,KAAKP,MAClByD,UAAWC,IAAWuJ,EAAkBhM,EAAOwC,YAEnDyH,QAASA,GAAWA,EAAQC,MACxBrL,EAAAA,cAAC8L,EAAAA,GAAa,CACVnI,UAAW,GAAGwJ,aACdtJ,IAAKuH,EAAQvH,IACbwH,KAAMD,EAAQC,KACdU,UAAW,CAAEC,OAAQvL,KAAK0K,oBAAqBc,eAAgBxL,KAAKP,MAAMa,QAAQC,WAG1FyK,MAAO4B,EAAAA,gBAAAA,YAA4B5B,IAC/BzL,EAAAA,cAACoN,EAAoB,CACjB3B,MAAOA,EACPU,aAAc1L,KAAK8K,qBACnBU,eAAgBxL,KAAKP,MAAMa,QAAQC,QACnC0K,iBAAkBjL,KAAKiL,qBAKnC,OAAOjL,KAAKP,MAAM4E,WAAWzB,EACjC,EAWJ,8EC5EA,MAWA,EAXiEnD,IAC7D,MAAM,gBAAEwN,EAAe,QAAEtC,EAAO,MAAEK,GAAUvL,EAE5C,OACIF,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAKmE,GACPtC,EACAK,EACI,yDCCjB,MAkBA,EAlBoFyB,IAQ/E,IARgF,GACjFpH,EAAE,UACFnC,EAAS,KACT0H,EAAI,UACJ0B,EAAS,iBACTrB,EAAgB,SAChBiC,EAAQ,QACRtJ,GACH6I,EACG,MAAMX,GAAUC,EAAAA,EAAAA,kBAAiB,QAASd,EAAmBL,GACvDuB,GAAaC,EAAAA,EAAAA,wBAAuBnB,EAAmBa,GAC7D,OACIvM,EAAAA,cAACoE,EAAAA,OAAMkF,OAAAC,OAAA,CAACzD,GAAIA,EAAInC,UAAWA,EAAS,aAAcoJ,EAAWY,SAAUA,EAAUtJ,QAASA,GAAauI,GAClGvB,EACI,6DCjBjB,MAUA,EAVuF6B,IAA8C,IAA7C,GAAEpH,EAAE,UAAEnC,EAAS,KAAEiK,EAAO,OAAM,QAAEC,GAASX,EAC7H,MAAMY,EAAiB,GAAGnK,MAAciK,UAExC,OACI5N,EAAAA,cAAA,OAAK8F,GAAIA,EAAInC,UAAWC,IAAWkK,EAAgB,QAAS,GAAGF,UAAc9J,KAAK,QAAO,YAAW,YAAW,cAAa,QACxH9D,EAAAA,cAAA,KAAG2D,UAAW,GAAGmK,UAAwBD,GACvC,mDCOd,MAAME,EAAgBC,IAClB,GAAIA,EAAW,CACX,MAAMC,EAAkBC,OAAOC,SAASH,EAAW,IACnD,IAAKI,MAAMH,GACP,OAAOA,CAAe,CAId,EAwBpB,EArBuFf,IAAA,IAAC,GACpFpH,EAAE,KACF8H,EAAI,MACJtC,EAAK,QACL+C,EAAO,UACP1K,EAAS,UACTqK,EAAS,SACTM,GACHpB,EAAA,OACGlN,EAAAA,cAAA,SACI8F,GAAIA,EACJ8H,KAAMA,EACNtC,MAAOA,EACP3H,UAAW,GAAGA,WAAmBA,KAAamC,IAC9CuI,QAAqB,KAAZA,EAAiBA,OAAUhJ,EAAS,gBAC/B,OACd2I,UAAWD,EAAaC,GACxBM,SAAUA,GACZ,6CC3CN,MAMA,EANkFpB,IAAA,IAAC,GAAEpH,EAAE,MAAEyI,EAAK,UAAE5K,EAAS,KAAE0H,GAAM6B,EAAA,OAC7GlN,EAAAA,cAAA,SAAO8F,GAAI,GAAGA,UAAYnC,UAAW,GAAGA,UAAmB6K,QAASD,GAC/DlD,EACG,6CCNZ,MAIA,EAJ8F6B,IAAA,IAAC,UAAEvJ,GAAWuJ,EAAA,OACxGlN,EAAAA,cAAA,OAAK2D,UAAW,GAAGA,mBAA6B,6CCApD,MAIA,EAJoGuJ,IAAA,IAAC,UAAEvJ,EAAS,QAAEkK,GAASX,EAAA,OACvHlN,EAAAA,cAAA,OAAK2D,UAAW,GAAGA,sBAA+BkK,EAAc,6DCEpE,MAUA,EAVsFX,IAA8C,IAA7C,GAAEpH,EAAE,UAAEnC,EAAS,KAAEiK,EAAO,OAAM,QAAEC,GAASX,EAC5H,MAAMuB,EAAmB,GAAG9K,MAAciK,YAE1C,OACI5N,EAAAA,cAAA,QAAM8F,GAAIA,EAAInC,UAAWC,IAAW6K,EAAkB,GAAGb,UAAc9J,KAAK,QAAO,YAAW,YAAW,cAAa,QAClH9D,EAAAA,cAAA,KAAG2D,UAAW,GAAG8K,UAA0BZ,GACxC,mxBCmDf,IAAMa,EAAN,cAAwC1O,EAAAA,UAcpCC,YAAYC,GACRC,MAAMD,GAdO,KAAAyO,gBAA0B,iCA8FpC,KAAAxD,oBAAuBrC,GAA0CrI,KAAKP,MAAMiB,OAAOiK,QAASC,KAAOvC,EAAME,OAAOsC,MAGhH,KAAAsD,QAAU,KACbnO,KAAKoO,mBACLpO,KAAKqO,sBAGLrO,KAAKsO,oBAAsBC,aAAY,KACnCvO,KAAKwO,6BAA6B,GACnC,KACHxG,YAAW,KACPyG,cAAczO,KAAKsO,oBAAoB,GACxC,IAAO,EAIG,KAAAE,4BAA8B,KAEvC9M,QAAUA,OAAe,QAAKA,OAAe,OAA4B,2BACzE+M,cAAczO,KAAKsO,qBACnBtO,KAAK0O,eAAgB,EAAK,EAgPjB,KAAAC,SAAW,CAACC,EAAiBC,IACtC7O,KAAK8O,gBAC2B,OAAzB9O,KAAK8O,gBAA2BF,EAAUC,EAE9C,GAxVP7O,KAAK+O,WAAaC,EAAAA,WAAAA,aAAAA,OAClBhP,KAAK0O,eAAgB,EACrB1O,KAAK8O,gBAAkB,GACvB9O,KAAKiL,kBAAmBC,EAAAA,EAAAA,oBACpBlL,KAAKP,MAAMa,QAAQC,QAAQ4K,kBAC3BnL,KAAKP,MAAM2L,aACXpL,KAAKP,MAAMyC,UAEnB,CAEOV,oBACHxB,KAAKmO,SACT,CAGOc,qBAECjP,KAAK0O,eAAiBhN,QAAUA,OAAiB,UAAKA,OAAiB,SAAc,YAErFA,OAAiB,SAAc,YAEvC,CAEOwN,sBACHC,EACAC,GAEA,OAAIpP,KAAKW,QAAUyO,GAAapP,KAAKP,MAAMwC,OAASkN,EAAUlN,IAIlE,CAEOH,SACH,MAAM,OAAEpB,EAAM,UAAE4C,GAActD,KAAKP,MAE7BmD,EAASC,EAAAA,EAAA,GACR7C,KAAKP,OAAK,IACb4P,UAAW,CACPC,eAAgBtP,KAAK0O,eAEzBa,0BAA2B,CACvBtM,YAAajD,KAAKP,MAClByD,UAAWC,IAAWnD,KAAKkO,gBAAiBxN,EAAOwC,YAEvDsM,QAAS,CACLC,MAAO,CACHrM,IAAKsM,EAAAA,MACLC,QAAQ,GAEZC,UAAW,CACPxM,IAAKyM,EAAAA,WAETC,KAAMvQ,EAAAA,cAACwQ,EAAAA,EAA6C,CAAC7M,UAAWlD,KAAKkO,kBACrEd,QACI7N,EAAAA,cAACyQ,EAAAA,EAAgD,CAAC9M,UAAWlD,KAAKkO,gBAAiBd,QAAS9J,EAAU2M,kBAG9GC,mBAAoB,CAChB7K,GAAI,MACJ8K,MAAO,CAAEC,QAAS,SAEtBC,YAAa,CACThL,GAAIrF,KAAK0O,cAAgB,MAAQ,KACjCxL,UAAW,GAAGlD,KAAKkO,8BAEvBvD,QAASjK,EAAOiK,SACZpL,EAAAA,cAAC8L,EAAAA,GAAaxC,OAAAC,OAAA,CACV5F,UAAW,GAAGlD,KAAKkO,4BACfxN,EAAOiK,QAAO,CAClBW,UAAW,CAAEC,OAAQvL,KAAK0K,oBAAqBc,eAAgBxL,KAAKP,MAAMa,QAAQC,YAG1F+P,sCAAuCtQ,KAAKuQ,wBAGhD,OAAOvQ,KAAKP,MAAM4E,WAAWzB,EACjC,CA2BQwL,mBAEA1M,OAAkB,WAAKA,OAAkB,UAAmB,kBAE5DA,OAAkB,UAAmB,gBAAE+C,KAAK+L,IACX,UAAzBA,EAAIC,GAAGnP,cACPtB,KAAK+O,WAAayB,EAAIE,IACU,6BAAzBF,EAAIC,GAAGnP,gBACdtB,KAAK8O,gBAAkB,KAAK,IAG/B9O,KAAK8O,kBACN9O,KAAK8O,gBAAkB,MAGnC,CAEQT,sBAEJ,GAAI3M,QAAUA,OAAgB,QAAG,CAC7B,MAAM0L,EAAU,CACZuD,gBAAiB3Q,KAAKP,MAAM6D,UAAU2M,gBAI1CpH,OAAOC,OAAOpH,OAAgB,QAAG0L,EAAS,CAElD,CAEQmD,sBACJ,MAAM,UAAEjN,GAActD,KAAKP,MAC3B,MAAO,CACHmR,aAAc,CACVvL,GAAI,gBACJnC,UAAW,GAAGlD,KAAKkO,uCAEvB2C,2BAA4B,CACxBxL,GAAI,2BACJnC,UAAW,GAAGlD,KAAKkO,4EAEvB4C,MAAO,CACH9Q,KAAK+Q,aAAa,QAAS,QAASzN,EAAU0N,2BAAuBpM,EAAW5E,KAAK+O,YACrF/O,KAAK+Q,aACD/Q,KAAK2O,SAAS,kBAAmB,yBACjC,OACArL,EAAU2N,+BACVrM,OACAA,EACA,qBAGRsM,eAAgB,CACZ3R,EAAAA,cAAC4R,EAAAA,EAAyC,CACtC7H,IAAI,aACJjE,GAAIrF,KAAK2O,SAAS,aAAc,yCAChCzL,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAU8N,8BAGvB7R,EAAAA,cAAC4R,EAAAA,EAAyC,CACtC7H,IAAI,gBACJjE,GAAIrF,KAAK2O,SAAS,gBAAiB,4CACnCzL,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAU+N,+BAG3BC,aAAc,CACV/R,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,yCACJjE,GAAG,yCACHnC,UAAWlD,KAAKkO,kBAEpB3O,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,mBACJjE,GAAG,mBACHnC,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAUkO,aAEvBjS,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,sBACJjE,GAAG,sBACHnC,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAUmO,uBAEvBlS,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,uBACJjE,GAAG,uBACHnC,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAUoO,iBAEvBnS,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,0BACJjE,GAAG,0BACHnC,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAUqO,mBAEvBpS,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,oBACJjE,GAAG,oBACHnC,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAUsO,cAEvBrS,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,yBACJjE,GAAG,yBACHnC,UAAWlD,KAAKkO,gBAChBd,QAAS9J,EAAUuO,oBAEvBtS,EAAAA,cAACgS,EAAAA,EAAuC,CACpCjI,IAAI,+BACJjE,GAAG,+BACHnC,UAAWlD,KAAKkO,mBAGxB4D,2BAA4B,CACxB5O,UAAW,GAAGlD,KAAKkO,+CAA+ClO,KAAK2O,SAAS,SAAU,MAC1F,gBAAiB,SAErBoD,oBAAqB,CACjBxS,EAAAA,cAACyS,EAAAA,EAAwC,CACrC1I,IAAI,qBACJjE,GAAIrF,KAAK2O,SAAS,qBAAsB,0CACxCzL,UAAW,GAAGlD,KAAKkO,8CACflO,KAAKkO,sCACclO,KAAK2O,SAAS,aAAc,cACnDrC,UAAWhJ,EAAU2O,wBACrBrH,KAAMtH,EAAU4O,mBAChBjH,iBAAkBjL,KAAKiL,mBAE3B1L,EAAAA,cAACyS,EAAAA,EAAwC,CACrC1I,IAAI,uBACJjE,GAAIrF,KAAK2O,SAAS,uBAAwB,4CAC1CzL,UAAW,GAAGlD,KAAKkO,8CACflO,KAAKkO,wCACgBlO,KAAK2O,SAAS,eAAgB,gBACvDrC,UAAWhJ,EAAU6O,0BACrBvH,KAAMtH,EAAU8O,qBAChBnH,iBAAkBjL,KAAKiL,mBAE3B1L,EAAAA,cAACyS,EAAAA,EAAwC,CACrC1I,IAAI,uBACJjE,GAAIrF,KAAK2O,SAAS,uBAAwB,8CAC1CzL,UAAW,GAAGlD,KAAKkO,8CACflO,KAAKkO,wCACgBlO,KAAK2O,SAAS,aAAc,iBACrDrC,UAAWhJ,EAAU+O,0BACrBzH,KAAMtH,EAAUgP,qBAChBrH,iBAAkBjL,KAAKiL,mBAE3B1L,EAAAA,cAACyS,EAAAA,EAAwC,CACrC1I,IAAI,qBACJjE,GAAIrF,KAAK2O,SAAS,qBAAsB,8CACxCzL,UAAW,GAAGlD,KAAKkO,8CACflO,KAAKkO,sCACclO,KAAK2O,SAAS,aAAc,kBACnDrC,UAAWhJ,EAAUiP,2BACrB3H,KAAMtH,EAAUkP,sBAChBvH,iBAAkBjL,KAAKiL,oBAG/BwH,eAAgB,CACZvP,UAAW,GAAGlD,KAAKkO,4BAEvBwE,QAAS,CACLnT,EAAAA,cAACyS,EAAAA,EAAwC,CACrC1I,IAAI,WACJjE,GAAG,WACHnC,UAAW,GAAGlD,KAAKkO,mCACnB5B,UAAWhJ,EAAUqP,wBACrB/H,KAAMtH,EAAUsP,mBAChB3H,iBAAkBjL,KAAKiL,mBAE3B1L,EAAAA,cAACyS,EAAAA,EAAwC,CACrC1I,IAAI,SACJjE,GAAG,SACHnC,UAAW,GAAGlD,KAAKkO,iCACnB5B,UAAWhJ,EAAUuP,sBACrBjI,KAAMtH,EAAUwP,oBAGxBC,yBAA0B,CACtB7P,UAAW,GAAGlD,KAAKkO,oDAEvB8E,gCAAiC,CAC7B3N,GAAI,kBACJnC,UAAW,GAAGlD,KAAKkO,4CAG/B,CAEQ6C,aACJ1L,EACA8H,EACA8F,EACA1F,EACAK,EACAsF,GAEA,MAAMhQ,EAAY,GAAGlD,KAAKkO,gCAC1B,MAAO,CACHiF,QAAS,CACLjQ,UAAWC,IAAWD,EAAW,GAAGA,KAAamC,IAAM,aAAc,YAAa6N,IAEtF5J,IAAKjE,EACL+N,MACI7T,EAAAA,cAAC8T,EAAAA,EAAuCxK,OAAAC,OAAA,GAChC,CACAzD,KACAyI,MAAOzI,EACPnC,YACA0H,KAAMqI,KAIlB3B,aACI/R,EAAAA,cAACgS,EAAAA,EAAuC1I,OAAAC,OAAA,GAChC,CACA5F,UAAWlD,KAAKkO,gBAChBf,KAAM,UAIlBmG,MACI/T,EAAAA,cAACgU,EAAAA,EAAuC1K,OAAAC,OAAA,GAChC,CACAzD,KACA8H,OACAI,YACAK,UACA1K,eAKpB,IA7VYgE,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,qCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sCATT8G,GAAyB/G,EAAAA,EAAAA,IAAA,CAD9BsM,EAAAA,IACKvF,GA4WN,8ECraA,MAAMwF,EAA0EhH,IAA4C,IAA3C,QAAE0G,EAAO,MAAEC,EAAK,aAAE9B,EAAY,MAAEgC,GAAO7G,EACpH,OACIlN,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKqK,GACLC,EACA9B,EACAgC,EACE,EAuDTI,EAAgFC,IAAwC,IAAvC,MAAElE,EAAK,UAAEG,EAAS,KAAEE,EAAI,QAAE1C,GAASuG,EACtH,OACIpU,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK2G,GACNlQ,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK8G,GACLE,EACA1C,GAEF,EA2Bf,EAvBqF3N,IACjF,MAAM,0BACF8P,EAAyB,UACzBF,EAAS,QACTG,EAAO,mBACPU,EAAkB,YAClBG,EAAW,QACX1F,EAAO,sCACP2F,GACA7Q,EAEJ,OACIF,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAKyG,GACPF,EAAUC,eAAiB/P,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKoH,IACrCb,EAAUC,eAAiB/P,EAAAA,cAACmU,EAAgC7K,OAAAC,OAAA,GAAK0G,IAClEjQ,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKuH,GACL1F,EA9EsDiJ,KAYlE,IAZmE,aACpEhD,EAAY,2BACZC,EAA0B,MAC1BC,EAAK,eACLI,EAAc,aACdI,EAAY,2BACZQ,EAA0B,oBAC1BC,EAAmB,eACnBU,EAAc,QACdC,EAAO,yBACPK,EAAwB,gCACxBC,GACHY,EACG,OACIrU,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK8H,GACNrR,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK+H,GACLC,GACGA,EAAMrM,KAAKrD,GAEA7B,EAAAA,cAACkU,EAA6B5K,OAAAC,OAAA,GAAK1H,MAEjD8P,GACGA,EAAezM,KAAI,CAAC2I,EAA0B3D,IACnClK,EAAAA,cAACA,EAAAA,SAAc,CAAC+J,IAAKG,GAAQ2D,KAE3CkE,GACGA,EAAa7M,KAAI,CAACtC,EAAwBsH,IAC/BlK,EAAAA,cAACA,EAAAA,SAAc,CAAC+J,IAAKG,GAAQtH,KAE5C5C,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKgJ,GACLC,GACGA,EAAoBtN,KAAI,CAACoP,EAAyBpK,IACvClK,EAAAA,cAACA,EAAAA,SAAc,CAAC+J,IAAKG,GAAQoK,MAIhDtU,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK2J,GACLC,GACGA,EAAQjO,KAAI,CAACoP,EAAyBpK,IAC3BlK,EAAAA,cAACA,EAAAA,SAAc,CAAC+J,IAAKG,GAAQoK,MAIhDtU,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKiK,GACNxT,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKkK,MAGf,EAgCEc,CAAaxD,IAEb,gICxFV,MAAM5M,EAAwB+I,IAA2E,IAA1E,KAAE7B,EAAI,UAAE1H,EAAS,KAAEoH,EAAI,UAAEgC,EAAS,MAAE7C,EAAK,QAAEsK,EAAO,iBAAE9I,GAAkBwB,EACxG,MAAMX,GAAUC,EAAAA,EAAAA,kBAAiB,QAASd,EAAkB,GAAI,IAE1D1F,OAAoBX,IAATgG,EAAqBA,EAAO,GAC7CkB,EAAQG,cAAcC,MAAQ3G,EAG9B,MAAMyO,GAAY5H,EAAAA,EAAAA,wBAAuBnB,EAAkBa,GAE3D,OACIvM,EAAAA,cAAA,IAAAsJ,OAAAC,OAAA,GACQkL,EAAS,CACb9Q,UAAWA,EACXoH,KAAMA,EAAI,aACEgC,EACZ1I,SAASqQ,EAAAA,EAAAA,kBAAiBhJ,EAAkBa,EAASvG,IAChDwO,GAAW,CAAE,iBAAiB,IAEnCxU,EAAAA,cAAA,QAAM2U,SAAS,QAAQ3O,GACvBhG,EAAAA,cAAA,QAAM2U,SAAS,WAAWC,QAAS1K,IACnC,EC3BC2K,EAAkC3H,IAAA,IAAC,UAAE4H,GAAW5H,EAAA,OACzDlN,EAAAA,cAAA,sBAAkB,QACb,IACA8U,EACA,IACE,ukBCkBX,MAAMC,UAAmB/U,EAAAA,cAAzBC,cAAA,oBACqB,KAAA+U,UAAgCvU,KAAKP,MAAMa,QAAQC,QAAQiU,UAAUC,SAErE,KAAAxJ,kBAAsCC,EAAAA,EAAAA,oBACnDlL,KAAKP,MAAMa,QAAQC,QAAQ4K,kBAC3BnL,KAAKP,MAAM2L,aACXpL,KAAKP,MAAMyC,WA8DE,KAAAwS,aAAe,KAC5B,MAAM,KAAEC,GAAS3U,KAAKP,MAAMiB,OAC5B,OAAKiU,GAASA,EAAK3O,SAAY2O,EAAK3O,QAAQC,eAKxC1G,EAAAA,cAACmE,EAAI,CACDkH,KAAM+J,EAAKpP,SACX+G,UAAWqI,EAAKrI,WAAaqI,EAAKpP,SAClC+E,KAAMqK,EAAK3O,SAAW2O,EAAK3O,QAAQC,eACnCwD,MAAM,IACNvG,UAAU,qBACV+H,iBAAkBjL,KAAKiL,oBAV3BjL,KAAKP,MAAMa,QAAQ4B,UAAUC,MAAM,0DAC5B,KAUL,EAIO,KAAAyS,0BAA6BC,IAC1C,MAAM,MAAE7J,GAAUhL,KAAKP,MAAMiB,OAE7B,IAAKsK,GAA0B,IAAjBA,EAAM9J,OAEhB,OADAlB,KAAKP,MAAMa,QAAQ4B,UAAUC,MAAM,wDAC5B,KAGX,OAAO6I,EAAMvG,KAAI,CAACoG,EAAmBpB,KACjCoL,IACA,MAAMC,EAAWrL,EACjB,OAAOA,IAAUuB,EAAM9J,OAJI,EAKvB3B,EAAAA,cAACmE,EAAI,CACD4F,IAAKG,EACLmB,KAAMC,EAAMtF,SACZ+G,UAAWzB,EAAMyB,WAAazB,EAAMtF,SACpC+E,KAAMO,EAAM7E,SAAW6E,EAAM7E,QAAQC,eACrCwD,MAAO,CAAEoL,gBAAe1K,WACxBjH,UAAU,qBACV+H,iBAAkBjL,KAAKiL,mBAG3B1L,EAAAA,cAAA,OAAK+J,IAAKwL,EAAU5R,UAAU,iDACzB2H,EAAMtF,SAEd,GACH,EAGW,KAAAwP,sBAAyBF,IACtC,MAAM,KAAE5S,GAASjC,KAAKP,MAChBuV,EAAoB/S,EAAK+S,kBAAkBxQ,OACjD,OAAKwQ,EAIEA,EAAkBvQ,KAAI,CAACoG,EAA0BpB,KACpDoL,IAEA,MAAMzJ,EAAepL,KAAKiV,iBAAiBjV,KAAKP,MAAMa,QAAQC,QAAQQ,OAAQ8J,EAAMpF,kBAEpF,OACIlG,EAAAA,cAACmE,EAAI,CACD4F,IAAKG,EACLmB,KAAMQ,EACNkB,UAAWlB,EACXd,KAAMO,EAAMlF,IACZ8D,MAAOoL,EAAa1K,WACpBjH,UAAU,qBACV6Q,QAAStK,IAAUuL,EAAkB9T,OAAS,EAC9C+J,iBAAkBjL,KAAKiL,kBACzB,KAlBNjL,KAAKP,MAAMa,QAAQ4B,UAAUC,MAAM,2DAC5B,KAmBT,EASW,KAAA8S,iBAAmB,CAAClU,EAAgBC,KAAiE,IAAAkU,EAClH,IAAIjU,EAUJ,OATIF,GAAUC,GAAoB4L,EAAAA,gBAAAA,YAA4B5L,KAC1DC,EAAkBD,EAAiBG,MAAKC,GAAQA,EAAKC,SAAUC,gBAAkBP,EAAOO,sBAIpEsD,IAApB3D,GAAiC2L,EAAAA,gBAAAA,YAA4B5L,KAC7DC,EAAkBD,EAAiB,IAGjB,QAAtBkU,EAAOjU,SAAe,IAAAiU,OAAA,EAAfA,EAAiB3T,IAAI,EAGf,KAAA4T,aAAgBN,IAC7B,MAAM,KAAE5S,EAAI,OAAEvB,GAAWV,KAAKP,MACxBuV,EAAoB/S,EAAKmT,cAAc5Q,OACvC6Q,EAAUpT,EAAKoT,QAAQ7Q,OACvB8Q,EAAMtV,KAAKP,MAAMa,QAAQC,QAAQ+U,IAAIC,WAAWjL,KACtD,IAAK0K,EAED,OADAhV,KAAKP,MAAMa,QAAQ4B,UAAUC,MAAM,kDAC5B,KAEX,MAAM6I,EAAuB,GA8B7B,OA5BAgK,EAAkBvQ,KAAI,CAACoG,EAAqBpB,KACxCoL,IACA7J,EAAMtG,KACFnF,EAAAA,cAACmE,EAAI,CACD4F,IAAKG,EACLmB,KAAMC,EAAM2K,KACZlJ,UAAWzB,EAAM2K,KACjBlL,KAAMO,EAAMlF,IACZ8D,MAAOoL,EAAa1K,WACpBjH,UAAU,qBACV+H,iBAAkBjL,KAAKiL,mBAE9B,IAEDoK,IAAY3U,EAAO+U,kBACnBZ,IACA7J,EAAMtG,KACFnF,EAAAA,cAACmE,EAAI,CACDkH,KAAMyK,EAAQG,KACdlJ,UAAW+I,EAAQG,KACnBlL,KAAMgL,EACN7L,MAAOoL,EAAa1K,WACpB4J,SAAO,EACP7Q,UAAU,qBACV+H,iBAAkBjL,KAAKiL,qBAI5BD,CAAK,EAGC,KAAA0K,QAAU,KACvBhU,OAAOiU,QAAQC,MAAM,EAGR,KAAAC,kBAAoB,IAE7B7V,KAAKP,MAAMa,SAAWN,KAAKP,MAAMa,QAAQC,SAAWP,KAAKP,MAAMa,QAAQC,QAAQuV,OAAS9V,KAAKP,MAAMa,QAAQC,QAAQuV,MAAMF,KAIzHG,EAAAA,GAAAA,YAA6C,KAAtBtN,SAASuN,UAAmBtU,OAAOiU,QAAQzU,OAAS,GACpE,KAGP3B,EAAAA,cAAA,KACI2D,UAAU,4BACVG,KAAK,SACLiH,KAAK,sBACL1G,QAAS5D,KAAK0V,QAAO,aACT1V,KAAKP,MAAM6D,UAAU2S,mBAEhCjW,KAAKP,MAAM6D,UAAU2S,mBAbnB,IAiBnB,CA5NWnU,SACH,MAAM,UAAEoB,GAAclD,KAAKP,MAAMiB,OACjC,IAAIwV,EAAW,KACXC,EAAkB,KAClBC,EAAsB,KAC1BF,EAAWlW,KAAK0U,eAChB,MAAMG,EAAeqB,EAAW,EAAI,EACpC,GAAuB,aAAnBlW,KAAKuU,UACL4B,EAAkBnW,KAAK4U,0BAA0BC,GAC5CsB,IACDA,EAAkBnW,KAAK+U,sBAAsBF,SAE9C,GAAuB,YAAnB7U,KAAKuU,WAEZ,GADA4B,EAAkBnW,KAAK4U,0BAA0BC,IAC5CsB,EAAiB,CAClB,MAAME,EAAgBrW,KAAKP,MAAMa,QAAQgW,IAAI5V,OAAO6V,eAC9B,aAAlBF,IACAF,EAAkBnW,KAAKmV,aAAaN,IAElB,oBAAlBwB,IACAD,EAAsBpW,KAAK6V,oBAC3BM,EAAkBnW,KAAKmV,aAAaN,IAElB,SAAlBwB,IACAD,EAAsBpW,KAAK6V,oBACC,OAAxBO,IACAD,EAAkBnW,KAAKmV,aAAaN,IAAa,OAK7DsB,EAAkBnW,KAAK4U,0BAA0BC,GAErD,MAAM2B,EAAgBjX,EAAAA,cAAC6U,EAAS,CAACC,UAAU,MAErCoC,EAAmB5T,EAAAA,EAAA,GAClB7C,KAAKP,OAAK,IACbiX,oBAAqB,CACjBzT,YAAajD,KAAKP,MAClByD,UAAWC,IAAW,gBAAiBD,GACvCE,IAAK,MACLC,KAAM,cAEVsT,eAAgB,CACZvT,IAAK,KACLF,UAAW,sBAEf0T,mBAAoB,CAChBxT,IAAK,KACLF,UAAW,sBAEfyR,KAAMuB,EACNlL,MAAOmL,EACPU,WAAYT,EACZ/B,UAAWmC,IAEf,OAAOxW,KAAKP,MAAM4E,WAAWoS,EACjC,EAqKJ,+FC9PA,MAoCA,EApCuDhX,IACnD,MAAM,KAAEkV,EAAI,MAAE3J,EAAK,WAAE6L,EAAU,oBAAEH,EAAmB,eAAEC,EAAc,mBAAEC,EAAkB,UAAEvC,GAAc5U,EACxG,OAAKkV,GAAS3J,GAAU6L,EAKpBtX,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAK4N,GACRnX,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK6N,GACLhC,GACGpV,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK8N,GACLjC,EACA3J,GAASqJ,GAGjBwC,GAActX,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK8N,GAAqBC,GAC7C7L,GACGA,EAAMvG,KAAI,CAACuH,EAAMvC,IACblK,EAAAA,cAACA,EAAAA,SAAc,CAAC+J,IAAKG,GACjBlK,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GACG8N,EAAkB,CACtB1T,UAAWC,IACPyT,EAAmB1T,UACnBuG,IAAUuB,EAAM9J,OAAS,EAAI,0BAA4B,MAG5D8K,EACAhB,EAAMvB,EAAQ,IAAM4K,SAxB7C5U,EAAMa,QAAQ4B,UAAUC,MAAM,mDACvB,KA4BE,gsBCaV,MAAM2U,UAAsBvX,EAAAA,cAW/BC,YAAmBC,GACfC,MAAMD,GAXO,KAAAsX,mBAAuC7L,EAAAA,EAAAA,oBACpDlL,KAAKP,MAAMa,QAAQC,QAAQ4K,kBAC3BnL,KAAKP,MAAM2L,aACXpL,KAAKP,MAAMyC,WAGE,KAAA8U,yBAAmC,oBAEnC,KAAAC,sBAAwB,OAuFzB,KAAAC,WAAa,KACzBlX,KAAK6G,SAAS,CACVsQ,aAAa,GACf,EA8GW,KAAAC,6BAA+B,KAAW,IAAAC,EACvD,MAAMC,EAA0D,QAA5CD,EAAGrX,KAAKP,MAAMa,QAAQC,QAAQgX,sBAAc,IAAAF,OAAA,EAAzCA,EAA2CC,eAClE,GAAIA,EAAgB,CAChB,MAAME,EAAaxX,KAAKyX,qBAAqBH,GAC7CtX,KAAK0X,eAAe1X,KAAKgX,yBAA0BQ,EAAY,CAEnExX,KAAKkX,YAAY,EASJ,KAAAS,aAAe,CAACC,EAAqBC,IAA0B,KAC5E7X,KAAK0X,eAAeE,EAAYC,EAAa,EAQhC,KAAAH,eAAiB,CAACE,EAAqBC,KACpD,IAAKD,IAAeC,EAChB,OAEJ,MAAMC,EAAmC,CAAEC,QAAQ,EAAMC,SAAU,QACnEF,EAAcG,OAASjY,KAAKiX,sBAC5BjX,KAAKP,MAAMa,QAAQC,QAAQ2X,QAAQC,IAAIP,EAAYC,EAAcC,EAAc,EAQlE,KAAAL,qBAAwBW,GAC7BA,EAAQC,SAAS,YAAqCD,EAAvB,WAAWA,IA3OlD,IAAIE,GAA4B,EAC5B7Y,EAAMa,QAAQC,QAAQ2X,QAAQK,IAAIvY,KAAKgX,0BAA0BnM,QACjEyN,GAAmB,GAEvBtY,KAAKW,MAAQ,CACTwW,aAAcmB,QAAkE1T,IAA9C5E,KAAKP,MAAMa,QAAQC,QAAQgX,eAErE,CAEOzV,SAAM,IAAA0W,EACT,MAAM,QAAE7N,EAAO,WAAE8N,EAAU,YAAEC,EAAW,WAAEC,GAAe3Y,KAAKP,MAAMiB,OAIpE,IAFuBV,KAAKP,MAAMa,QAAQC,QAAQ2X,QAAQU,iBAGtD,OAAO,KAGX,MAAMC,EAAuBlO,GACzBpL,EAAAA,cAACwW,EAAAA,GAAa,CACV7S,UAAU,6BACVE,IAAgB,QAAboV,EAAE7N,EAAQvH,WAAG,IAAAoV,EAAAA,EAAI,KACpB5N,KAAMD,EAAQC,KACdU,UAAW,CAAEC,OAAQvL,KAAK8Y,iBAAkBtN,eAAgBxL,KAAKP,MAAMa,QAAQC,WAIjFwY,EAA0BN,GAC5BlZ,EAAAA,cAACwW,EAAAA,GAA0B,CACvBnL,KAAM6N,EACNvV,UAAU,gCACVoI,UAAW,CAAEC,OAAQvL,KAAKgZ,sBAAuBxN,eAAgBxL,KAAKP,MAAMa,QAAQC,WAItF0Y,EAA0BN,GAAc3Y,KAAKkZ,WAAWP,GACxDQ,EACF5Z,EAAAA,cAACoE,EAAAA,OAAM,CAACT,UAAU,kCAAkCU,QAAS5D,KAAKoX,6BAA8BnO,SAAU,GACrGjJ,KAAKP,MAAM6D,UAAU8V,6BAIxBC,EAASxW,EAAAA,EAAA,GACR7C,KAAKP,OAAK,IACbkB,MAAOX,KAAKW,MACZwW,YAAanX,KAAKW,MAAMwW,YACxBmC,eAAgB,CACZrW,YAAajD,KAAKP,MAClB2D,IAAKsM,EAAAA,MACLxM,UAAW,4BACXyM,QAAQ,EACR,aAAc,iBACd4J,OAAQvZ,KAAKkX,WACbsC,gBAAiB,CAAEC,QAAS,GAC5BC,iCAAiC,GAErCC,qBAAsB,CAClBvW,IAAKwW,EAAAA,YACL1W,UAAW,kCACXqW,OAAQvZ,KAAKkX,WACb2C,oBAAqB,GAEzBC,qBAAsB,CAClB1W,IAAK2W,EAAAA,YACL7W,UAAW,kCAEf8W,mBAAoB,CAChB5W,IAAKyM,EAAAA,UACL3M,UAAW,gCAEfyH,QAASkO,EACTJ,WAAYM,EACZ/M,KAAMiN,EACNP,YAAaA,GAAe1Y,KAAKia,oBACjCC,wBAAyBf,IAG7B,OAAOnZ,KAAKP,MAAM4E,WAAWgV,EACjC,CAWOL,sBAAsB3Q,GACzBrI,KAAKP,MAAMiB,OAAO+X,WAAapQ,EAAME,OAAOsC,KAChD,CAEOiO,iBAAiBzQ,GACpBrI,KAAKP,MAAMiB,OAAOiK,QAASC,KAAOvC,EAAME,OAAOsC,KACnD,CAEOC,qBAAqBzC,GAAoC,IAAA8R,EAC5B,QAAhCA,EAAIna,KAAKP,MAAMiB,OAAOiY,kBAAU,IAAAwB,GAA5BA,EAA8B5U,WAC9BvF,KAAKP,MAAMiB,OAAOiY,WAAWpT,SAAW8C,EAAME,OAAOsC,MAE7D,CAEOqO,WAAWlN,GACd,IAAKoO,EAAAA,iBAAAA,cAA+BpO,aAAI,EAAJA,EAAMhG,QAAQC,gBAAiB,CAAC,IAADoU,EAC/D,MAAM9U,EAAyB,QAAjB8U,EAAGrO,aAAI,EAAJA,EAAMzG,gBAAQ,IAAA8U,EAAAA,EAAI,GAC7BvO,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS/L,KAAK+W,kBAAmB,GAAI,IAChE5K,GAAaC,EAAAA,EAAAA,wBAAuBpM,KAAK+W,kBAAmBjL,GAC5DO,EAAoC,CACtCC,UAAWN,aAAI,EAAJA,EAAMM,UACjBpJ,UAAW,yBACXqC,WACAS,QAASgG,aAAI,EAAJA,EAAMhG,QAAQC,eACvBsG,aAAcP,aAAI,EAAJA,EAAMO,aACpBlJ,KAAM,OACNmJ,qBAAsBL,EACtBvI,SAASqQ,EAAAA,EAAAA,kBAAiBjU,KAAK+W,kBAAmBjL,EAASvG,IAE/D,OACIhG,EAAAA,cAACwW,EAAAA,GAAa,CACV/J,KAAMK,EACNf,UAAW,CAAEI,aAAc1L,KAAK8K,qBAAsBU,eAAgBxL,KAAKP,MAAMa,QAAQC,UAC3F,CAGV,OAAO,IACX,CAEO0Z,oBACH,MAAM1C,EAAiBvX,KAAKP,MAAMa,QAAQC,QAAQgX,eAClD,IAAKA,EACD,OAOJ,OALoBA,EAAe+C,YACF7V,KAAKoG,GAC3B7K,KAAKua,cAAc1P,IAIlC,CAEO0P,cAAcC,GAAwB,IAAAC,EAAAC,EACzC,MAAMhC,EAAc1Y,KAAKP,MAAMiB,OAAOgY,YACtC,IAAIN,EAAUoC,EAAWG,cACzBvC,EAAUpY,KAAKyX,qBAAqBW,GACpC,MAAMwC,EAAqBlC,aAAW,EAAXA,EAAavX,MAAKC,GAAQA,EAAKkU,MAAQ8C,IAClE,IAAKwC,EACD,OAAO,KAEX,MAAMC,EAA6B,CAAEtY,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GAC5DL,EAAgD,CAClDC,UAAW,CACPC,GAAIuY,EACJ5T,GAAI4T,EACJnY,GAAImY,GAERlY,UAAU,GAERuC,EAAQ0V,EAAmB1V,MAC3B4V,EAAa,CACf/X,aAAc/C,KAAKP,MAAMa,QAAQC,QAAQwC,aACzCD,cAAmC,QAAtB2X,EAAEvV,aAAK,EAALA,EAAOpC,qBAAa,IAAA2X,EAAAA,EAAIrY,GAE3C,OACI7C,EAAAA,cAAA,KACI+J,IAAKsR,EAAmBG,cACxB7X,UAAU,yCACV+F,SAAU,EACVqB,KAAMsQ,EAAmBtF,IAAG,aAChBsF,EAAmBG,cAC/BnX,QAAS5D,KAAK2X,aAAa3X,KAAKgX,yBAA0B4D,EAAmBtF,MAE5EpQ,GACG3F,EAAAA,cAACwW,EAAAA,GAAc,CACXvK,eAAgBxL,KAAKP,MAAMa,QAAQC,QACnC2C,UAAU,wCACVoG,IAAKsR,EAAmBG,cACxB3U,IAAc,QAAXsU,EAAExV,EAAMkB,WAAG,IAAAsU,EAAAA,EAAI,GAClB3X,aAAc+X,EAAW/X,aACzBD,cAAegY,EAAWhY,cAC1BkY,QAAS9V,EAAM8V,QACfC,oBAAoB,OACpBC,uBAAqB,IAG7B3b,EAAAA,cAAA,OAAK2D,UAAU,6CACX3D,EAAAA,cAAA,QAAM2D,UAAU,mDAAmD0X,EAAmBG,eACtFxb,EAAAA,cAAA,QAAM2D,UAAU,sDAAsD0X,EAAmBO,mBAIzG,EAgDJ,uGCrSO,MAAMC,EAAwD3b,IACjE,MAAM,YACF0X,EAAW,eACXmC,EAAc,qBACdK,EAAoB,mBACpBK,EAAkB,QAClBrP,EAAO,qBACPmP,EAAoB,WACpBrB,EAAU,KACVzM,EAAI,YACJ0M,EAAW,wBACXwB,GACAza,EACJ,OAAO0X,GAAeuB,EAClBnZ,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAKwQ,GACR/Z,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK6Q,GACLhP,EACA8N,GAELlZ,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKkR,GACLtB,EAAYjU,KAAI4W,GACb9b,EAAAA,cAAAA,EAAAA,SAAA,KAAG8b,MAGX9b,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKgR,GACLI,EACAlO,IAGT,IAAI,EAGZ,+qBCjBO,MAAMsP,UAAkB/b,EAAAA,cAG3BC,YAAmBC,GACfC,MAAMD,GAsEH,KAAAqZ,iBAAoBzQ,IACvBrI,KAAKP,MAAMiB,OAAOiK,QAASC,KAAOvC,EAAME,OAAOsC,KAAK,EAOjD,KAAAmO,sBAAyB3Q,IAC5BrI,KAAKP,MAAMiB,OAAO6a,UAAYlT,EAAME,OAAOsC,KAAK,EA9EhD7K,KAAKwb,sBAAwBjc,EAAAA,WACjC,CAEOuC,SAAM,IAAA0W,EACT,MAAM,QAAE7N,EAAO,UAAE4Q,GAAcvb,KAAKP,MAAMiB,OAIpC+a,EAAqBF,GACvBhc,EAAAA,cAAC8L,EAAAA,GAA0B,CACvBT,KAAM2Q,EACNrY,UAAU,8BACVoI,UAAW,CAAEC,OAAQvL,KAAKgZ,sBAAuBxN,eAAgBxL,KAAKP,MAAMa,QAAQC,WAItFmb,EAAmB/Q,GACrBpL,EAAAA,cAAC8L,EAAAA,GAAa,CACVnI,UAAU,iCACVE,IAAgB,QAAboV,EAAE7N,EAAQvH,WAAG,IAAAoV,EAAAA,EAAI,KACpB5N,KAAMD,EAAQC,KACdU,UAAW,CAAEC,OAAQvL,KAAK8Y,iBAAkBtN,eAAgBxL,KAAKP,MAAMa,QAAQC,WAGjFqC,EAASC,EAAAA,EAAA,GACR7C,KAAKP,OAAK,IACbkc,WAAY3b,KAAK8Y,iBACjB8C,UAAW,CACP3Y,YAAajD,KAAKP,MAClByD,UAvBgB,gBAyBpB2Y,mBAAoB,CAChB3Y,UAAW,yBAEfyH,QAAS+Q,EACT9Q,KAAM6Q,EACNK,cAAe,CACX5Y,UAAW,8BACXE,IAAK,OACL,aAAcpD,KAAKP,MAAM6D,UAAUyY,uBACnCC,KAAM,gBACN3Y,KAAM,OACN4Y,aAAc,OAElBC,WAAY,CACRhZ,UAAW,qCACXE,IAAK,QACL4F,IAAKhJ,KAAKwb,sBACVrO,KAAM,QACN,aAAcnN,KAAKP,MAAM6D,UAAU6Y,4BACnCC,YAAapc,KAAKP,MAAM6D,UAAU+Y,+BAEtCC,aAAc,CACVpZ,UAAW,sCACXE,IAAKO,EAAAA,OACL,aAAc3D,KAAKP,MAAM6D,UAAUiZ,6BACnCpP,KAAM,SACNqP,MAAOxc,KAAKP,MAAM6D,UAAUmZ,sBAEhCC,sBAAuB1c,KAAKP,MAAM6D,UAAUmZ,uBAGhD,OAAOzc,KAAKP,MAAM4E,WAAWzB,EACjC,EAmBJ,mGCvGA,MAAM+Z,EAAYtU,IACdA,EAAMuU,gBAAgB,EAQbC,EAA+Cpd,IAAQ,IAAAqd,EAAAC,EAAAC,EAChE,MAAM,UAAEpB,EAAS,mBAAEC,EAAkB,QAAElR,EAAO,KAAEC,EAAI,cAAEkR,EAAa,WAAEI,EAAU,aAAEI,GAAiB7c,EAClG,OACIF,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAK8S,GACRrc,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAK+S,EAAkB,CAAE3Y,UAAW2Y,EAAmB3Y,YACvDyH,EACAC,EACDrL,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKgT,EAAa,CAAEa,SAAUA,EAAUzZ,UAAmC,QAA1B4Z,EAAEhB,aAAa,EAAbA,EAAe5Y,iBAAS,IAAA4Z,EAAAA,EAAI,KAChFvd,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKoT,EAAU,CAAEhZ,UAAgC,QAAvB6Z,EAAEb,aAAU,EAAVA,EAAYhZ,iBAAS,IAAA6Z,EAAAA,EAAI,MAC1Dxd,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKwT,EAAY,CAAEpZ,UAAkC,QAAzB8Z,EAAEV,aAAY,EAAZA,EAAcpZ,iBAAS,IAAA8Z,EAAAA,EAAI,KACzDvd,EAAMid,yBAId,EAIjB,+VCPA,MAOMO,GAA8CzJ,EAAAA,EAAAA,KAAU/T,IAC1D,MAAM,UACFyd,EAAS,aACTC,EACAlb,MAAM,KAAEmb,IACR3d,EAGE4d,EAAWD,EAAOA,EAAKE,iBAFQ,EAGrC,IAAIC,EAAmB,GAInBA,EADAF,EAF4B,GACC,OAIlBG,EAAAA,EAAAA,QAAOL,EAAcE,GAEpC,MAAMjK,GAAQoK,EAAAA,EAAAA,QAAON,EAAWG,GAG1BvR,GAAUC,EAAAA,EAAAA,kBAAiB,QAAStM,EAAMwL,iBAAmB,YAAa,IAC1EkB,GAAaC,EAAAA,EAAAA,wBAAuB3M,EAAMwL,iBAAmBa,GAC7DqE,EAA6B,CAC/BsN,WAAYL,EAAO,UAAY,UAEnC,OACI7d,EAAAA,cAAA,MAAAsJ,OAAAC,OAAA,CAAK5F,UAAU,gBAAgBG,KAAK,SAAQ,aAAa+P,EAAOoJ,MAAOpJ,GAAWjH,GAC9E5M,EAAAA,cAAA,OAAK2D,UAAU,uBAAsB,iBAAaiN,MAAOA,GACpDoN,GAEH,IAIDG,EAAsEC,EAAAA,GAAAA,wBAGjF,gXAAU9a,CAAA,CAAI+a,UAAWX,GA5CM,CAAC,IA8ClC,qHCrDA,MA8BaY,EAC+Cpe,IACxD,MAAM,kBAEFqe,EAAiB,eACjBC,EAAc,cACdC,EAAa,OACbC,EAAM,cACNC,EAAa,QACbvT,EAAO,eACPwT,EAAc,0BACdC,EAAyB,4BACzBC,GACA5e,EAEJ,OACIF,EAAAA,cAACqJ,EAAAA,OAAMC,OAAAC,OAAA,GAAKgV,GACPnT,EACW,YAAXsT,GAAwBC,EACzB3e,EAAAA,cAACwJ,EAAAA,KAAI,CAAC7F,UAAU,IACA,YAAX+a,GAA0BF,GAAmBI,GAAmBvR,EAAAA,gBAAAA,YAA4BuR,GAOzFC,EANA7e,EAAAA,cAAA,OAAK2D,UAAU,iCACX3D,EAAAA,cAAA,MAAI2D,UAAU,yCAAyCzD,EAAM6D,UAAUgb,kCACvE/e,EAAAA,cAAA,KAAG2D,UAAU,sCAAsCzD,EAAM6D,UAAUib,+BAClEH,GAKRC,GAEJN,GAAkBI,GAAkBvR,EAAAA,gBAAAA,YAA4BuR,IAC7D5e,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,GAAKiV,GACLI,EAAe1Z,KAAI+Z,GA/DZC,EAACD,EAA8CE,KAEvE,MAAM,IAAEpV,EAAG,gBAAEqV,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAEC,EAAY,kBAAEC,GAAsBP,EAE5GQ,EAAiDJ,EACjDK,EAAyBD,EAA0Bvf,MAAMyf,SAAShe,OAGxE,GAAI+d,EAF8B,EAG9B,IAAK,IAAIxV,EAAQ,EAAGA,EAHU,EAG0BwV,EAAwBxV,IAC5EuV,EAA0Bvf,MAAMyf,SAASxa,KAAKnF,EAAAA,cAAA,iBAItD,OACIA,EAAAA,cAACwJ,EAAAA,KAAIF,OAAAC,OAAA,CAACQ,IAAKA,EAAKpG,UAAWwb,EAAwBxb,WAAewb,GAC7DK,EACAH,EACAD,EACAG,EACAD,EACE,EA2CgBJ,CAAoBD,EAAeR,MAIjD,EAIjB","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-navigation-menu/arborb2b-navigation-menu.props.autogenerated.ts?6e9e","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-navigation-menu/arborb2b-navigation-menu.tsx?b7a3","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-navigation-menu/arborb2b-navigation-menu.view.tsx?a4d1","webpack://Msdyn365.Commerce.Online/./src/modules/base-navigation-menu/base-navigation-menu.props.autogenerated.ts?d954","webpack://Msdyn365.Commerce.Online/./src/modules/base-navigation-menu/base-navigation-menu.tsx?7d1e","webpack://Msdyn365.Commerce.Online/./src/modules/base-navigation-menu/base-navigation-menu.view.tsx?70da","webpack://Msdyn365.Commerce.Online/./src/modules/freedom-navigation-menu/freedom-navigation-menu.props.autogenerated.ts?0cfa","webpack://Msdyn365.Commerce.Online/./src/modules/freedom-navigation-menu/freedom-navigation-menu.tsx?b7d2","webpack://Msdyn365.Commerce.Online/./src/modules/freedom-navigation-menu/freedom-navigation-menu.view.tsx?16a6","webpack://Msdyn365.Commerce.Online/./src/modules/kent-navigation-menu/kent-navigation-menu.props.autogenerated.ts?03c3","webpack://Msdyn365.Commerce.Online/./src/modules/kent-navigation-menu/kent-navigation-menu.tsx?6835","webpack://Msdyn365.Commerce.Online/./src/modules/kent-navigation-menu/kent-navigation-menu.view.tsx?ffb5","webpack://Msdyn365.Commerce.Online/./src/modules/liquid-navigation-menu/liquid-navigation-menu.props.autogenerated.ts?1265","webpack://Msdyn365.Commerce.Online/./src/modules/liquid-navigation-menu/liquid-navigation-menu.tsx?a1d7","webpack://Msdyn365.Commerce.Online/./src/modules/liquid-navigation-menu/liquid-navigation-menu.view.tsx?b95a","webpack://Msdyn365.Commerce.Online/./src/modules/account-generic-tile/account-generic-tile.tsx?4353","webpack://Msdyn365.Commerce.Online/./src/modules/account-generic-tile/account-generic-tile.view.tsx?4b58","webpack://Msdyn365.Commerce.Online/./src/modules/account-generic-tile/components/account-generic-tile-links.tsx?2bc7","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-tile/components/account-b2b-requests-tile-links.tsx?d6f5","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-tile/b2b-requests-tile.tsx?9498","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-tile/b2b-requests-tile.view.tsx?3f4e","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-button.tsx?c1c2","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-error.tsx?347f","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-input.tsx?fd25","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-label.tsx?aab5","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-loading-icon.tsx?d70e","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-loading-message.tsx?d239","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/components/password-reset-verification-success.tsx?3c81","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/password-reset-verification.tsx?691f","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset-verification/password-reset-verification.view.tsx?dffa","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.tsx?4fcb","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.view.tsx?0036","webpack://Msdyn365.Commerce.Online/./src/modules/subscribe/subscribe.tsx?9fea","webpack://Msdyn365.Commerce.Online/./src/modules/subscribe/subscribe.view.tsx?19c8","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/carticon.component.tsx?3c7c","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IArborb2bNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface IArborb2bNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface IArborb2bNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface IArborb2bNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IArborb2bNavigationMenuResources;\r\n config: IArborb2bNavigationMenuConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, IArborb2BNavigationMenuData } from './arborb2b-navigation-menu.data';\r\nimport {\r\n ICmsNavItemsData,\r\n IArborb2bNavigationMenuProps,\r\n ISubMenusData,\r\n navigationMenuSource\r\n} from './arborb2b-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IArborb2bNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer: INodeProps;\r\n MobileDescriptionContainer: INodeProps;\r\n MobileBackButton: INodeProps;\r\n MobileDescriptionLabel: INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit = 1000;\r\n private static RSItemIdInit = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail = true;\r\n private isCMS = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: IArborb2bNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = { isMobile: this.isMobile };\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n tag: 'nav',\r\n role: 'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag: 'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: 'menuitem'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag: 'button',\r\n role: 'menuitem',\r\n onClick: this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag: 'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag: 'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick: this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag: 'span'\r\n },\r\n //Hack to remove mobile\r\n isMobileView: false,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy) => mergedData.push(this._constructMenuItemData(item, undefined, true)));\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\r\n );\r\n }\r\n return mergedData;\r\n }\r\n\r\n private _constructMenuItemData(\r\n retailItem?: CategoryHierarchy,\r\n cmsItem?: ICmsNavItemsData,\r\n isRetail?: boolean,\r\n _idx?: number\r\n ): IMenuItemData {\r\n const locale =\r\n this.props.context && this.props.context.request && this.props.context.request.locale\r\n ? this.props.context.request.locale\r\n : 'en-us';\r\n let image: any = '';\r\n if (retailItem) {\r\n if (retailItem.Images) {\r\n if (retailItem.Images[0]) {\r\n image = retailItem.Images[0].Uri;\r\n }\r\n }\r\n }\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n subMenu: this._getNestedChildren(retailItem),\r\n imageSource: image\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: (cmsItem && cmsItem.linkText) || '',\r\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n nestedChildren.push({\r\n linkText: this.props.resources.allCategoryMenuText,\r\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\r\n });\r\n category.Children.map((item: CategoryHierarchy) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch (sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './arborb2b-navigation-menu';\r\nimport { IMenuItemData } from './arborb2b-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack = false;\r\n private supportedLevel = 2;\r\n private currentLevel = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {isMobileView && this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n )}\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: undefined })\r\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: item && item.id })\r\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList } = this.props;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IBaseNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface IBaseNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface IBaseNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface IBaseNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IBaseNavigationMenuResources;\r\n config: IBaseNavigationMenuConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject} from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, IBaseNavigationMenuData } from './base-navigation-menu.data';\r\nimport { ICmsNavItemsData, IBaseNavigationMenuProps, ISubMenusData, navigationMenuSource } from './base-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IBaseNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer:INodeProps;\r\n MobileDescriptionContainer:INodeProps;\r\n MobileBackButton:INodeProps;\r\n MobileDescriptionLabel:INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: IBaseNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = {isMobile: this.isMobile};\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return (this.viewport === 'xs');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n tag:'nav',\r\n role:'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag:'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag:'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: 'menuitem'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag:'button',\r\n role:'menuitem',\r\n onClick:this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag:'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag:'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick:this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag:'span'\r\n },\r\n //Hack to remove mobile\r\n isMobileView: false,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy) => (\r\n mergedData.push(this._constructMenuItemData(item, undefined, true))\r\n ));\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) => (\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx+1))\r\n ));\r\n }\r\n return mergedData;\r\n }\r\n\r\n private _constructMenuItemData(retailItem?: CategoryHierarchy, cmsItem?: ICmsNavItemsData, isRetail?: boolean, idx?: number): IMenuItemData {\r\n const locale = this.props.context && this.props.context.request && this.props.context.request.locale ? this.props.context.request.locale : 'en-us';\r\n let image:any = '';\r\n if(retailItem){\r\n if(retailItem.Images){\r\n if(retailItem.Images[0]){\r\n image = retailItem.Images[0].Uri\r\n }\r\n }\r\n }\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n subMenu: this._getNestedChildren(retailItem),\r\n imageSource:image\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: cmsItem && cmsItem.linkText || '',\r\n linkURL: cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl || '',\r\n imageDestinationURL: cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl || '',\r\n imageSource: cmsItem && cmsItem.image && cmsItem.image.src || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n nestedChildren.push({linkText: this.props.resources.allCategoryMenuText, linkURL: getCategoryUrl(category, this.props.context as unknown as IActionContext, {}) });\r\n category.Children.map((item: CategoryHierarchy) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch(sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './base-navigation-menu';\r\nimport { IMenuItemData } from './base-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n private supportedLevel: number = 2;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {isMobileView && this.state.activeMenu !== undefined &&\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: undefined }) : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push(\r\n {this._createMenuItemList(menuItem)} \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: item && item.id }) : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id));\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return (this._renderLinkMenuItem(menuItemData));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `inside-xxl level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu));\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n {option.linkText}\r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList } = this.props;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n}\r\n\r\nexport default NavigationMenuView;","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IFreedomNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface IFreedomNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface IFreedomNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface IFreedomNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IFreedomNavigationMenuResources;\r\n config: IFreedomNavigationMenuConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject} from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, IFreedomNavigationMenuData } from './freedom-navigation-menu.data';\r\nimport { ICmsNavItemsData, IFreedomNavigationMenuProps, ISubMenusData, navigationMenuSource } from './freedom-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IFreedomNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer:INodeProps;\r\n MobileDescriptionContainer:INodeProps;\r\n MobileBackButton:INodeProps;\r\n MobileDescriptionLabel:INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: IFreedomNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = {isMobile: this.isMobile};\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return (this.viewport === 'xs');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n tag:'nav',\r\n role:'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag:'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag:'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: 'menuitem'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag:'button',\r\n role:'menuitem',\r\n onClick:this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag:'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag:'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick:this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag:'span'\r\n },\r\n //Hack to remove mobile\r\n isMobileView: false,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy) => (\r\n mergedData.push(this._constructMenuItemData(item, undefined, true))\r\n ));\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) => (\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx+1))\r\n ));\r\n }\r\n return mergedData;\r\n }\r\n\r\n private _constructMenuItemData(retailItem?: CategoryHierarchy, cmsItem?: ICmsNavItemsData, isRetail?: boolean, idx?: number): IMenuItemData {\r\n const locale = this.props.context && this.props.context.request && this.props.context.request.locale ? this.props.context.request.locale : 'en-us';\r\n let image:any = '';\r\n if(retailItem){\r\n if(retailItem.Images){\r\n if(retailItem.Images[0]){\r\n image = retailItem.Images[0].Uri\r\n }\r\n }\r\n }\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n subMenu: this._getNestedChildren(retailItem),\r\n imageSource:image\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: cmsItem && cmsItem.linkText || '',\r\n linkURL: cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl || '',\r\n imageDestinationURL: cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl || '',\r\n imageSource: cmsItem && cmsItem.image && cmsItem.image.src || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n nestedChildren.push({linkText: this.props.resources.allCategoryMenuText, linkURL: getCategoryUrl(category, this.props.context as unknown as IActionContext, {}) });\r\n category.Children.map((item: CategoryHierarchy) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch(sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './freedom-navigation-menu';\r\nimport { IMenuItemData } from './freedom-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n private supportedLevel: number = 2;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {isMobileView && this.state.activeMenu !== undefined &&\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: undefined }) : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push(\r\n {this._createMenuItemList(menuItem)} \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: item && item.id }) : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id));\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return (this._renderLinkMenuItem(menuItemData));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu));\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n {option.linkText}\r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList } = this.props;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n}\r\n\r\nexport default NavigationMenuView;","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IKentNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface IKentNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface IKentNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface IKentNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IKentNavigationMenuResources;\r\n config: IKentNavigationMenuConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject} from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, IKentNavigationMenuData } from './kent-navigation-menu.data';\r\nimport { ICmsNavItemsData, IKentNavigationMenuProps, ISubMenusData, navigationMenuSource } from './kent-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IKentNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer:INodeProps;\r\n MobileDescriptionContainer:INodeProps;\r\n MobileBackButton:INodeProps;\r\n MobileDescriptionLabel:INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: IKentNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = {isMobile: this.isMobile};\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return (this.viewport === 'xs');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n tag:'nav',\r\n role:'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag:'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag:'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: 'menuitem'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag:'button',\r\n role:'menuitem',\r\n onClick:this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag:'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag:'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick:this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag:'span'\r\n },\r\n //Hack to remove mobile\r\n isMobileView: false,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy) => (\r\n mergedData.push(this._constructMenuItemData(item, undefined, true))\r\n ));\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) => (\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx+1))\r\n ));\r\n }\r\n return mergedData;\r\n }\r\n\r\n private _constructMenuItemData(retailItem?: CategoryHierarchy, cmsItem?: ICmsNavItemsData, isRetail?: boolean, idx?: number): IMenuItemData {\r\n const locale = this.props.context && this.props.context.request && this.props.context.request.locale ? this.props.context.request.locale : 'en-us';\r\n let image:any = '';\r\n if(retailItem){\r\n if(retailItem.Images){\r\n if(retailItem.Images[0]){\r\n image = retailItem.Images[0].Uri\r\n }\r\n }\r\n }\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n subMenu: this._getNestedChildren(retailItem),\r\n imageSource:image\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: cmsItem && cmsItem.linkText || '',\r\n linkURL: cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl || '',\r\n imageDestinationURL: cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl || '',\r\n imageSource: cmsItem && cmsItem.image && cmsItem.image.src || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n nestedChildren.push({linkText: this.props.resources.allCategoryMenuText, linkURL: getCategoryUrl(category, this.props.context as unknown as IActionContext, {}) });\r\n category.Children.map((item: CategoryHierarchy) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch(sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './kent-navigation-menu';\r\nimport { IMenuItemData } from './kent-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n private supportedLevel: number = 2;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {isMobileView && this.state.activeMenu !== undefined &&\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: undefined }) : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push(\r\n {this._createMenuItemList(menuItem)} \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: item && item.id }) : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id));\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return (this._renderLinkMenuItem(menuItemData));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu));\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n {option.linkText}\r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList } = this.props;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n}\r\n\r\nexport default NavigationMenuView;","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ILiquidNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface ILiquidNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface ILiquidNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface ILiquidNavigationMenuProps extends Msdyn365.IModule {\r\n resources: ILiquidNavigationMenuResources;\r\n config: ILiquidNavigationMenuConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject} from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, ILiquidNavigationMenuData } from './liquid-navigation-menu.data';\r\nimport { ICmsNavItemsData, ILiquidNavigationMenuProps, ISubMenusData, navigationMenuSource } from './liquid-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends ILiquidNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer:INodeProps;\r\n MobileDescriptionContainer:INodeProps;\r\n MobileBackButton:INodeProps;\r\n MobileDescriptionLabel:INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: ILiquidNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = {isMobile: this.isMobile};\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return (this.viewport === 'xs');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n tag:'nav',\r\n role:'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag:'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag:'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: 'menuitem'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag:'button',\r\n role:'menuitem',\r\n onClick:this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag:'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag:'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick:this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag:'span'\r\n },\r\n //Hack to remove mobile\r\n isMobileView: false,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy) => (\r\n mergedData.push(this._constructMenuItemData(item, undefined, true))\r\n ));\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) => (\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx+1))\r\n ));\r\n }\r\n return mergedData;\r\n }\r\n\r\n private _constructMenuItemData(retailItem?: CategoryHierarchy, cmsItem?: ICmsNavItemsData, isRetail?: boolean, idx?: number): IMenuItemData {\r\n const locale = this.props.context && this.props.context.request && this.props.context.request.locale ? this.props.context.request.locale : 'en-us';\r\n let image:any = '';\r\n if(retailItem){\r\n if(retailItem.Images){\r\n if(retailItem.Images[0]){\r\n image = retailItem.Images[0].Uri\r\n }\r\n }\r\n }\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n subMenu: this._getNestedChildren(retailItem),\r\n imageSource:image\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: cmsItem && cmsItem.linkText || '',\r\n linkURL: cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl || '',\r\n imageDestinationURL: cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl || '',\r\n imageSource: cmsItem && cmsItem.image && cmsItem.image.src || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n nestedChildren.push({linkText: this.props.resources.allCategoryMenuText, linkURL: getCategoryUrl(category, this.props.context as unknown as IActionContext, {}) });\r\n category.Children.map((item: CategoryHierarchy) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch(sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './liquid-navigation-menu';\r\nimport { IMenuItemData } from './liquid-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n private supportedLevel: number = 2;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {isMobileView && this.state.activeMenu !== undefined &&\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: undefined }) : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push(\r\n {this._createMenuItemList(menuItem)} \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack ? this.setState({ parentMenu: item && item.id }) : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id));\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return (this._renderLinkMenuItem(menuItemData));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu));\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n {option.linkText}\r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList } = this.props;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n}\r\n\r\nexport default NavigationMenuView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountGenericTileConfig, IAccountGenericTileProps } from './account-generic-tile.props.autogenerated';\nimport LinksComponent from './components/account-generic-tile-links';\n\nexport interface IAccountGenericTileViewProps extends IAccountGenericTileProps {\n AccountGenericTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * AccountGeneric component.\n * @extends {React.PureComponent>}\n */\nclass AccountGenericTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountGenericTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config } = this.props;\n const { className, heading, links } = config;\n\n const viewProps = {\n ...this.props,\n className,\n AccountGenericTile: {\n moduleProps: this.props,\n className: classnames('ms-account-generic-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountGenericTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountGenericTileViewProps } from './account-generic-tile';\n\nconst AccountGenericTileView: React.FC = props => {\n const { AccountGenericTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default AccountGenericTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-generic-tile.props.autogenerated';\n\nexport interface IAccountGenericTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountGenericTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-generic-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountGenericTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../../..';\n\nexport interface IB2bRequestsTileLinksProps {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst defaultClassName = 'ms-account-b2b-requests-tile';\n\nexport const B2bRequestsTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (!ArrayExtensions.hasElements(links)) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n return linkdata.map(link => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return {\n ariaLabel: link.ariaLabel,\n className: `${defaultClassName}__link`,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n } as Msdyn365.ILinksData;\n });\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileData } from './b2b-requests-tile.data';\nimport { IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nimport { B2bRequestsTileLinks } from './components/account-b2b-requests-tile-links';\n\nexport interface IB2bRequestsTileViewProps extends IB2bRequestsTileProps {\n b2bRequestsTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsTile component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IB2bRequestsTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, data } = this.props;\n const { className, heading, links } = config;\n\n const defaultClassName = 'ms-account-b2b-requests-tile';\n\n if (!data.customerInformation.result?.IsB2b) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n b2bRequestsTile: {\n moduleProps: this.props,\n className: classnames(defaultClassName, config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: ArrayExtensions.hasElements(links) && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default B2bRequestsTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetVerificationButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetVerificationButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetVerificationInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetVerificationInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange\n}) => (\n \n);\n\nexport default PasswordResetVerificationInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetVerificationLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetVerificationLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationLoadingIcon {\n className: string;\n}\n\nconst PasswordResetVerificationLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default PasswordResetVerificationLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetVerificationLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetVerificationLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetVerificationSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationSuccess;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetVerificationButtonComponent from './components/password-reset-verification-button';\nimport PasswordResetVerificationErrorComponent from './components/password-reset-verification-error';\nimport PasswordResetVerificationInputComponent from './components/password-reset-verification-input';\nimport PasswordResetVerificationLabelComponent from './components/password-reset-verification-label';\nimport PasswordResetVerificationLoadingIconComponent from './components/password-reset-verification-loading-icon';\nimport PasswordResetVerificationLoadingMessageComponent from './components/password-reset-verification-loading-message';\nimport PasswordResetVerificationSuccessComponent from './components/password-reset-verification-success';\nimport { IPasswordResetVerificationConfig, IPasswordResetVerificationProps } from './password-reset-verification.props.autogenerated';\n\nexport interface IPasswordResetVerificationViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetVerificationItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationLocalAccount {\n localAccount: INodeProps;\n verificationControlWrapper: INodeProps;\n items: IPasswordResetVerificationItem[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationButtonsWrapper: INodeProps;\n verificationButtons: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetVerificationLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationViewProps {\n className: string;\n viewState: IPasswordResetVerificationViewState;\n loading: IPasswordResetVerificationLoading;\n passwordResetVerification: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetVerificationLocalAccount: IPasswordResetVerificationLocalAccount;\n}\n\n/**\n *\n * PasswordResetVerification component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordResetVerification extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset-verification';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetVerificationProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.templateVersion = '';\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IPasswordResetVerificationProps,\n nextState: IPasswordResetVerificationViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordResetVerification: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: (\n \n )\n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n \n ),\n passwordResetVerificationLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private _prePopulateData(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n if (obj.ID.toLowerCase() === 'email') {\n this.emailRegex = obj.PAT;\n } else if (obj.ID.toLowerCase() === 'emailverificationcontrol') {\n this.templateVersion = 'v2';\n }\n });\n if (!this.templateVersion) {\n this.templateVersion = 'v1';\n }\n }\n }\n\n private _updateErrorMessage(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: this.props.resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n }\n\n private _renderLocalAccount(): IPasswordResetVerificationLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n items: [\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n )\n ],\n successMessage: [\n ,\n\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n \n ],\n verificationButtonsWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n verificationButtons: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): IPasswordResetVerificationItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n}\n\nexport default PasswordResetVerification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IPasswordResetVerificationItem,\n IPasswordResetVerificationLoading,\n IPasswordResetVerificationLocalAccount,\n IPasswordResetVerificationViewProps\n} from './password-reset-verification';\n\nconst PasswordResetVerificationItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n verificationControlWrapper,\n items,\n successMessage,\n errorMessage,\n verificationButtonsWrapper,\n verificationButtons,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n \n {items &&\n items.map((item: IPasswordResetVerificationItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {successMessage &&\n successMessage.map((message: React.ReactNode, index: number) => {\n return {message};\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {verificationButtons &&\n verificationButtons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n \n );\n};\n\nconst PasswordResetVerificationLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetVerificationView: React.FC = props => {\n const {\n passwordResetVerification,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n passwordResetVerificationLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetVerificationLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetVerificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n {linkText}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n \n );\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return index !== links.length - defaultValueToSubtract ? (\n \n ) : (\n
\n {value.linkText}\n
\n );\n });\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n });\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n };\n}\n\nexport default Breadcrumb;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root && (\n \n {root}\n {links && separator}\n \n )}\n {backButton && {backButton}}\n {links &&\n links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n
\n \n );\n};\n\nexport default BreadCrumbView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const { heading, subheading, countryList, actionLink } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n \n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal,\n closeButtonTabIndex: 1\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n return this.renderCountry(value);\n });\n\n return countryLinks;\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && (\n \n )}\n
\n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\n
\n \n );\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerViewProps } from './country-picker';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n}\n\nexport default Subscribe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n salesAgreementPricePrompt?: string;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const {\n cartLabel,\n cartQtyLabel,\n data: { cart }\n } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n
\n
\n {qtyLabel}\n
\n
\n );\n});\n\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n // @ts-expect-error -- Compatible issue with the component override.\n ICartIconComponent\n>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\n\nexport default CartIconComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\n\n/**\n * Interface for OrderTemplateImage.\n */\ninterface IOrderTemplateImage {\n props: {\n children: React.ReactElement[];\n };\n}\n\n/**\n * To render order template.\n * @param orderTemplate - The order template view props.\n * @param orderTemplateNodeProps - The order template node props.\n * @returns The JSX Element.\n */\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\n const currentImageListLength = orderTemplateImageElement.props.children.length;\n const defaultNumberImagesInTile = 4;\n\n if (currentImageListLength < defaultNumberImagesInTile) {\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\n orderTemplateImageElement.props.children.push();\n }\n }\n\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\n/**\n * Order Template List View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nexport const OrderTemplateListViewComponent: React.FC> = props => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n OrderTemplateList,\n OrderTemplates,\n OrderTemplate,\n status,\n statusMessage,\n heading,\n orderTemplates,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n {status !== 'SUCCESS' && statusMessage}\n \n {status === 'SUCCESS' && (!OrderTemplates || !orderTemplates || !ArrayExtensions.hasElements(orderTemplates)) ? (\n
\n

{props.resources.headingForEmptyOrderTemplateList}

\n

{props.resources.textForEmptyOrderTemplateList}

\n {createOrderTemplateButton}\n
\n ) : (\n createOrderTemplateButton\n )}\n {templateHeaderStatusMessage}\n
\n {OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) && (\n \n {orderTemplates.map(orderTemplate => {\n return renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n
\n );\n};\n\nexport default OrderTemplateListViewComponent;\n"],"names":["navigationMenuSource","NavigationMenu","React","constructor","props","super","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","this","cmsOnly","all","_updateViewport","bind","viewport","context","request","device","Type","config","state","isMobile","menuItemList","static","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","removeEventListener","render","_mapData","isEmptyOrNullObject","data","telemetry","error","defaultImageSettings","viewports","xs","q","w","h","xl","lazyload","viewProps","_objectSpread","imageSettings","gridSettings","Navigation","moduleProps","className","classnames","tag","role","resources","menuAriaLabel","MenuList","ListItem","Link","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","renderView","mergedData","categories","result","map","push","_constructMenuItemData","undefined","cmsNavItems","idx","retailItem","cmsItem","_idx","image","Images","Uri","id","RSItemIdInit","linkText","getFriendlyName","NameTranslations","linkURL","Url","subMenu","_getNestedChildren","imageSource","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","src","_getCMSNestedChildren","category","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","setState","innerWidth","sm","md","lg","__decorate","observable","computed","NavigationMenuView","supportedLevel","currentLevel","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","_handleGoBack","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","_closeSubmenu","document","body","addEventListener","Module","Object","assign","Node","ref","tabIndex","_renderDisplay","menuItem","i","_getFromSubMenu","key","_createMenuItemList","forEach","index","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","levelClassName","menuOptions","option","hasOptions","toString","_renderMenu","onFocus","href","level","currentItem","AccountGenericTile","handleHeadingChange","heading","text","value","handleLinkTextChange","linkIndex","links","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","Msdyn365","editProps","onEdit","requestContext","LinksComponent","onTextChange","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","link","contentAction","etext","attributes","getTelemetryAttributes","editableLink","ariaLabel","openInNewTab","additionalProperties","_ref","defaultClassName","B2bRequestsTileLinks","ArrayExtensions","B2bRequestsTile","_data$customerInforma","customerInformation","IsB2b","b2bRequestsTile","disabled","type","message","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","pattern","onChange","forId","htmlFor","successClassName","PasswordResetVerification","moduleClassName","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","getValue","v1Value","v2Value","templateVersion","emailRegex","EmailRegex","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","viewState","isShowLoading","passwordResetVerification","loading","modal","Modal","isOpen","modalBody","ModalBody","icon","PasswordResetVerificationLoadingIconComponent","PasswordResetVerificationLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","passwordResetVerificationLocalAccount","_renderLocalAccount","obj","ID","PAT","verifying_blurb","localAccount","verificationControlWrapper","items","_renderInput","emailAddressLabelText","verificationCodeLabelText","successMessage","PasswordResetVerificationSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","errorMessage","PasswordResetVerificationErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","verificationButtonsWrapper","verificationButtons","PasswordResetVerificationButtonComponent","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","buttonsWrapper","buttons","continueButtonAriaLabel","continueButtonText","cancelButtonAriaLabel","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","labelText","cssClassName","wrapper","label","PasswordResetVerificationLabelComponent","input","PasswordResetVerificationInputComponent","observer","PasswordResetVerificationItem","PasswordResetVerificationLoading","_ref3","_ref2","button","LocalAccount","noclick","attribute","onTelemetryClick","itemProp","content","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","_getCustomBreadcrumbLinks","itemPosition","keyIndex","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","_nameTranslation","_getPDPLinks","categoryPaths","product","url","requestUrl","Name","hideProductName","_goBack","history","back","_getPDPBackButton","query","MsDyn365","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","CountryPicker","_telemetryContent","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","isModalOpen","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","set","baseUrl","includes","isCookieValueSet","get","_heading$tag","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","handleTextChange","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","stayOnCurrentSiteButtonText","viewprops","modalContainer","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","renderCountryList","stayOnCurrentSiteButton","_this$props$config$ac","StringExtensions","_link$linkText","localeItems","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","imageSize","imageProps","displayString","altText","loadFailureBehavior","shouldSkipToMainImage","displaySubString","countryPickerView","country","Subscribe","paragraph","_emailAddressInputRef","subscribeParagraph","subscribeHeading","handleText","subscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","name","autoComplete","emailInput","subscribeFormEmailAriaLabel","placeholder","subscribeEmailPlaceholderText","submitButton","subscribeFormSubmitAriaLabel","title","subscribeButtonLabel","submitButtonLabelText","onSubmit","preventDefault","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","totalItemsInCart","qtyLabel","format","visibility","CartIconComponent","msdyn365Commerce","component","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","status","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","removeButton","orderTemplateName","orderTemplateImageElement","currentImageListLength","children"],"sourceRoot":""}