{"version":3,"file":"1320-a1bde0c4b8b423337909.js","mappings":"2GAAO,MAAMA,EAAW,CACpBC,kBAAmB,8BACnBC,oBAAqB,gCACrBC,aAAc,qBACdC,gBAAiB,wBACjBC,SAAU,iDAEVC,OAAQ,cACRC,kBAAmB,uBACnBC,cAAe,sBACfC,OAAQ,oCACRC,iBAAkB,uCAElBC,YAAa,qCACbC,UAAW,mCACXC,YAAa,qC,8BCfV,SAASC,EAAMC,GAClB,OAAO,IAAIC,SAASC,GAAYC,WAAWD,EAASF,IACxD,CASO,SAASI,EAAMC,EAAOC,GACzB,OAAOC,KAAKD,IAAIC,KAAKC,IAAIH,EAAOC,GAAM,EAC1C,C,oCAIO,MAIMG,EAAuBC,GAAUA,EAAMC,WAAW,aAAc,iC,iFCnBtE,SAASC,EAAWC,GACvB,MAAMC,EAAcD,EAAiBC,aAAeD,EAAiBE,MAAQ,YACvEC,EAAuBC,GACjBC,EAAAA,cAAoBC,EAAAA,EAAY,CAAEC,SAAUC,EAAAA,EAAcC,QAAQ,GACtEJ,EAAAA,cAAoBL,EAAkB,IAAKI,KAGnD,OADAD,EAAoBF,YAAc,cAAcA,KACzCE,CACX,C,iFCPO,SAASO,EAAOC,GACnB,MAAMC,EAAqBP,EAAAA,SACrBQ,GAAeC,EAAAA,EAAAA,MACdC,EAAMC,GAAWX,EAAAA,SAAeM,EAAOM,cACvCC,EAAQC,GAAad,EAAAA,SAAe,WA+C3C,OA1CAA,EAAAA,WAAgB,KAEZ,KAAIQ,IAAgBF,EAAOM,gBAIvBN,EAAOS,UAAaT,EAAOS,YAQ/B,OAJAR,EAAmBS,QAAU,IAAIC,gBAQjCC,eAAuBC,GACnBL,EAAU,WACV,MAAMM,EAAQC,KAAKC,MACbC,QAAYC,MAAMlB,EAAOmB,IAAK,CAChCC,MAAO,WACPC,YAAa,cACbC,QAAS,CACLC,OAAQ,oBAEZC,OAAQ,MACRX,WAEEY,QAAgBR,EAAIS,OAC1BrB,OAAQsB,GACR,MACMC,EADMb,KAAKC,MACEF,EAEfc,EAvCI,WAwCErD,EAAAA,EAAAA,IAxCF,IAwCkBqD,GAE1BvB,EAAQoB,GACRjB,EAAU,WACd,CA3BAqB,CAFe5B,EAAmBS,QAAQG,QAGnC,KAAM,IAAAiB,EAEiB,QAA1BA,EAAA7B,EAAmBS,eAAO,IAAAoB,GAA1BA,EAA4BC,OAAO,CAwBvC,GACD,CAAC/B,EAAOmB,MACJ,CAAEa,MA7CKA,KACV3B,OAAQsB,EAAU,EA4CNvB,OAAMG,SAC1B,C,gFCrDO,MAAM0B,EAAcA,CAACC,EAAUrD,KAClC,MAAMsD,EAAMzC,EAAAA,SAUZ,OATAA,EAAAA,WAAgB,KACZyC,EAAIzB,QAAUwB,CAAQ,GACvB,CAACA,IACsBxC,EAAAA,SAAc,IAI7B0C,KAHMC,KAAM,IAAAC,EACJ,QAAXA,EAAAH,EAAIzB,eAAO,IAAA4B,GAAXA,EAAAC,KAAAJ,EAAe,GAEGtD,IACvB,GACqB,C,+ECXrB,MAAM2D,EAA4BA,CAAC3D,EAAO4D,IAA2B,iBAAV5D,GAAqBA,EAAM6D,OAAOC,OAAS,GAAKF,EAC3G,SAASG,EAAQ5C,GACpB,MAAM6C,EAAenD,EAAAA,OAAa,MAC5BoD,GAAyBC,EAAAA,EAAAA,IAAiB,CAC5CC,cAAehD,EAAOgD,cACtBC,KAAM,WACNC,eAAgB,WAChBC,2BAA2B,KAEzB,aAAEC,GAAiBN,GAClBvC,EAAQC,GAAad,EAAAA,SAAe,YACpC2D,EAAqBC,GAA0B5D,EAAAA,SAAe,KAC9D6D,EAAcC,GAAmB9D,EAAAA,SAAe,IA+EvD,MAAO,CACH2D,sBACAR,eACAU,eACAhD,SACAkD,SAAUL,GAnFGxC,MAAO8C,EAAUC,KAAU,IAAAC,EACxC,IAAI3C,EACJ,GAAoB,cAAhBjB,EAAOiD,KAAsB,CAC7B,MAAMS,EAAW,IAAIG,SAASF,aAAK,EAALA,EAAOG,QAGrCtD,EAAU,WACVS,QAAYC,MAAMlB,EAAO+D,SAAU,CAC/BC,KAAMN,EACNlC,OAAQ,QAEhB,MAEIhB,EAAU,WACVS,QAAYC,MAAMlB,EAAO+D,SAAU,CAC/BC,KAAMC,KAAKC,UAAUR,GACrBlC,OAAQ,OACRF,QAAS,CACL,eAAgB,sBAK5B,IAAKL,EAAIkD,GAcL,OAbA3D,EAAU,SACVgD,EAAgB,CAAC,0BACZxD,EAAOoE,sBAERzF,YAAW,KAAM,IAAA0F,EACO,QAApBA,EAAAxB,EAAanC,eAAO,IAAA2D,GAApBA,EAAsBC,eAAe,CAAEC,SAAU,OAAQC,MAAO,SAAU,GAC3E,UAEHxE,EAAOyE,mBACP9F,YAAW,KACP6B,EAAU,UAAU,GACrB,MAIX,MAAMiB,QAAiBR,EAAIS,OAE3B,OAAkB,QAAlBkC,EAAInC,EAAQiD,cAAM,IAAAd,GAAdA,EAAgBjB,QAChBnC,EAAU,SACVgD,EAAgB/B,EAAQiD,QAExB/F,YAAW,KAAM,IAAAgG,EACO,QAApBA,EAAA9B,EAAanC,eAAO,IAAAiE,GAApBA,EAAsBL,eAAe,CAAEC,SAAU,OAAQC,MAAO,SAAU,GAC3E,UACCxE,EAAOyE,mBACP9F,YAAW,KACP6B,EAAU,UAAU,GACrB,QAMPR,EAAO4E,0BACD5E,EAAO4E,qBAGbnD,EAAQoD,SACRrE,EAAUR,EAAOyE,kBAAoB,UAAY,aACjDnB,EAAuB7B,EAAQoD,cAC1B7E,EAAOoE,sBAERzF,YAAW,KAAM,IAAAmG,EACO,QAApBA,EAAAjC,EAAanC,eAAO,IAAAoE,GAApBA,EAAsBR,eAAe,CAAEC,SAAU,OAAQC,MAAO,SAAU,GAC3E,YAKP/C,EAAQsD,WACRC,OAAOC,SAASC,KAAOzD,EAAQsD,WAEnC,IAQAjC,yBAER,C,6DCpGO,MAAMqC,EAAmBjD,IAC5B,MAAMC,EAAMzC,EAAAA,OAAa,MAczB,OAbAA,EAAAA,WAAgB,KACZ,MAAM0F,EAAezB,IACbxB,EAAIzB,UAAYyB,EAAIzB,QAAQ2E,SAAS1B,EAAMG,SAC3C5B,GACJ,EAIJ,OAFAoD,SAASC,iBAAiB,QAASH,GAAa,GAChDE,SAASC,iBAAiB,QAASH,GAAa,GACzC,KACHE,SAASE,oBAAoB,QAASJ,GAAa,GACnDE,SAASE,oBAAoB,QAASJ,GAAa,EAAK,CAC3D,GACF,CAACjD,IACGA,CAAG,C,gKCLd,MAAMsD,EAAYC,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,6BAAAuG,YAAA,eAAVH,CAAU,kJACxBI,EAAAA,EAAAA,IAAW,WAEOC,EAAAA,EAAMC,OAAOC,OAS7BC,EAAOR,EAAAA,GAAOS,KAAIP,WAAA,CAAAtG,YAAA,wBAAAuG,YAAA,eAAXH,CAAW,yMACpBI,EAAAA,EAAAA,IAAW,iBAMOM,EAAAA,EAAAA,IAAKL,EAAAA,EAAMM,KAAKC,KAAM,KAGhCC,EAAAA,EAAAA,IAAM,GAAI,IAGFR,EAAAA,EAAMM,KAAKC,KAIXP,EAAAA,EAAMS,WAAWC,SAG/BC,EAAQhB,EAAAA,GAAOiB,MAAKf,WAAA,CAAAtG,YAAA,yBAAAuG,YAAA,eAAZH,CAAY,SACtBkB,EAAAA,GAEEC,EAAQnB,EAAAA,GAAOoB,MAAKlB,WAAA,CAAAtG,YAAA,yBAAAuG,YAAA,eAAZH,CAAY,oIACtBqB,EAAAA,EAAMC,KAAKC,QAQJlB,EAAAA,EAAMC,OAAOC,MAGXF,EAAAA,EAAMM,KAAKC,MAGlBY,EAASxB,EAAAA,GAAOyB,OAAMvB,WAAA,CAAAtG,YAAA,0BAAAuG,YAAA,eAAbH,CAAa,uLACxB0B,EAAAA,GACAtB,EAAAA,EAAAA,IAAW,cAqBTuB,EAAc3B,EAAAA,GAAO4B,GAAE1B,WAAA,CAAAtG,YAAA,+BAAAuG,YAAA,eAATH,CAAS,uWACzBI,EAAAA,EAAAA,IAAW,sBAKOC,EAAAA,EAAMwB,QAAQlB,KAWhCZ,EAAiBoB,GAMVW,EAAAA,EAAAA,IAAKC,EAAAA,GAAOC,cACjBC,EAAAA,GAoBN,EATwB,CACpBlC,YACAyB,SACAR,QACAG,QACAe,kBAbsBlC,EAAAA,GAAOyB,OAAMvB,WAAA,CAAAtG,YAAA,qCAAAuG,YAAA,eAAbH,CAAa,iDACnC0B,EAAAA,EACAL,EAAAA,EAAMC,KAAKa,SACXC,EAAAA,IAWA5B,OACAmB,c,gKCpHJ,MAsGA,EAtGmB5H,IAAU,IAAAsI,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACzB,MAAM,SAAE9E,EAAUX,wBAAwB,MAAE0F,EAAK,SAAEC,EAAQ,SAAEC,EAAQ,SAAEC,EAAUC,WAAW,OAAElE,IAAW,OAAEnE,IAAYqC,EAAAA,EAAAA,GAAQ,CAC3HI,cAAe,CAAE6F,WAAYpJ,EAAMoJ,YACnC9E,SAAUtG,EAAAA,EAASG,aACnBqF,KAAM,UAEF4F,WAAYC,GAAgBN,KAC7BK,EAAYE,GAAiBrJ,EAAAA,SAA+B,QAAjBqI,EAACtI,EAAMoJ,kBAAU,IAAAd,EAAAA,EAAI,KAChEiB,EAAiBC,GAAsBvJ,EAAAA,UAAe,IACtDwJ,EAAcC,GAAmBzJ,EAAAA,SAAe,IACvDA,EAAAA,WAAgB,KACZ0J,GAA2B,GAC5B,CAACN,IACJ,MAYMM,GAA4BnH,EAAAA,EAAAA,IAZToH,KACjBP,GACAA,EAAYnG,OAAS,GACrBkG,IAAeC,GACfA,IAAgBI,GAChBH,EAAcD,GACdG,GAAmB,IAGnBA,GAAmB,EACvB,GAE4D,KAChEvJ,EAAAA,WAAgB,KAAM,IAAA4J,EAAAC,EAClBR,EAA8B,QAAjBO,EAAC7J,EAAMoJ,kBAAU,IAAAS,EAAAA,EAAI,IAClCZ,EAAS,aAA8B,QAAlBa,EAAE9J,EAAMoJ,kBAAU,IAAAU,EAAAA,EAAI,GAAG,GAC/C,CAAC9J,EAAMoJ,aACV,MAAMW,GAASzJ,EAAAA,EAAAA,GAAO,CAClBoB,IAAK,GAAG1D,EAAAA,EAASI,mBAAmB4L,IAAAA,UAAa,CAC7CZ,aACAa,YAAajK,EAAMiK,gBAEvBjJ,SAAUA,KAAOhB,EAAMkK,eAAiBd,GAAcA,IAAepJ,EAAMoJ,aAEzEe,EAAWlK,EAAAA,OAAa,IACxBmK,GAAe1E,EAAAA,EAAAA,IAAgB,IAAM8D,GAAmB,KAC9D,OAAQvJ,EAAAA,cAAoBoK,EAAAA,EAAErE,UAAW,CAAEtD,IAAK0H,GAC5CnK,EAAAA,cAAoBoK,EAAAA,EAAE5D,KAAM,CAAEzC,cAA6B9B,IAAnBlC,EAAMgE,SACnCE,IAAU,IAAAoG,EACTpG,EAAMqG,iBACQ,QAAdD,EAAAtK,EAAMgE,gBAAQ,IAAAsG,GAAdA,EAAAxH,KAAA9C,EAAiBoJ,GACjBG,GAAmBC,GAAmB,EAAM,EAE9CxJ,EAAMwK,UACDtG,IACCA,EAAMqG,iBACNhF,OAAOC,SAASC,KAAO,GAAGzF,EAAMwK,aAAaR,IAAAA,UAAa,CACtDZ,WAAYA,EACZa,YAAajK,EAAMiK,eACnB,EAENjG,GACV/D,EAAAA,cAAoBoK,EAAAA,EAAEpD,MAAO,CAAEwD,GAAI,GAAiB,QAAjBlC,EAAGvI,EAAM0K,gBAAQ,IAAAnC,EAAAA,EAAI,sBAAwBvI,EAAMkH,OACtFjH,EAAAA,cAAoBoK,EAAAA,EAAEjD,MAAO,CAAEuD,KAAM,SAAUC,YAAa5K,EAAM4K,YAAaC,KAAM,WAAY,oBAAqB,OAAQ,gBAAiBtB,KAAqBQ,EAAOpJ,MAAQoJ,EAAOpJ,KAAKmK,YAAY5H,OAAS,EAAG,gBAAiB,GAAiB,QAAjBsF,EAAGxI,EAAM0K,gBAAQ,IAAAlC,EAAAA,EAAI,uBAAwB,kBAAmB,GAAiB,QAAjBC,EAAGzI,EAAM0K,gBAAQ,IAAAjC,EAAAA,EAAI,wBAAyBO,EAAS,aAAc,CACrW+B,SAA0D,QAAlDrC,EAAoB,QAApBC,EAAE3I,EAAMgL,oBAAY,IAAArC,OAAA,EAAlBA,EAAqB,mCAA2B,IAAAD,EAAAA,EAAI,GAC9D1H,SAAW5B,IAAK,IAAA6L,EAAAC,EAAA,OAAKnI,EAAAA,EAAAA,GAA0B3D,EAAuD,QAAlD6L,EAAoB,QAApBC,EAAElL,EAAMgL,oBAAY,IAAAE,OAAA,EAAlBA,EAAqB,mCAA2B,IAAAD,EAAAA,EAAI,GAAG,IAC7G,iBAAkBhG,EAAOmE,WAAY,oBAAqB,GAAiB,QAAjBR,EAAG5I,EAAM0K,gBAAQ,IAAA9B,EAAAA,EAAI,qBAAsBuC,UAAYjH,IACjH,OAAQA,EAAMkH,KACV,IAAK,YACgC,IAAAC,EAA7BlB,EAASlJ,QAAQiC,OAAS,IACP,QAAnBmI,EAAAlB,EAASlJ,QAAQ,UAAE,IAAAoK,GAAnBA,EAAqBC,SAEzB,MACJ,IAAK,SACD9B,GAAmB,GAE3B,EACD,gBAA4B,YAAX1I,EAAsByK,aAAc,QAC5DtG,EAAOmE,YAAcnJ,EAAAA,cAAoBoK,EAAAA,EAAEpD,MAAO,CAAEwD,GAAI,GAAiB,QAAjB5B,EAAG7I,EAAM0K,gBAAQ,IAAA7B,EAAAA,EAAI,qBAAsB2C,GAAI,SACvGvL,EAAAA,cAAoBoK,EAAAA,EAAE5C,OAAQ,CAAEkD,KAAM,SAAU,aAAc3K,EAAMyL,YAAa,gBAA4B,YAAX3K,IAAwB4K,EAAAA,EAAAA,IAAWC,EAAAA,GAAcC,UACvJ3L,EAAAA,cAAoBoK,EAAAA,EAAEzC,YAAa,CAAE6C,GAAI,GAAiB,QAAjB3B,EAAG9I,EAAM0K,gBAAQ,IAAA5B,EAAAA,EAAI,uBAAwB,eAAgBiB,EAAOpJ,MAA2C,IAAnCoJ,EAAOpJ,KAAKmK,YAAY5H,OAAc2I,SAAUtC,GAAmB,OAAIrH,KAAe6H,EAAOpJ,MAASV,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM8J,EAAOpJ,KAAKmK,YAAYgB,KAAI,CAACC,EAAYC,IAAO/L,EAAAA,cAAoB,KAAM,CAAEmL,IAAKW,EAAWtB,SAAyBvI,IAAnB6J,EAAWrK,IAAqBzB,EAAAA,cAAoBoK,EAAAA,EAAElC,kBAAmB,CAAEzF,IAAMuJ,GAAQ9B,EAASlJ,QAAQ+K,GAAKC,EAAKT,GAAI,IAAK/F,KAAMsG,EAAWrK,IAAKyJ,UAAYe,IAAC,IAAAC,EAAA,OAAKC,EAAWF,EAAGF,GAAe,QAAZG,EAACpC,EAAOpJ,YAAI,IAAAwL,OAAA,EAAXA,EAAarB,aAAa5H,OAAS,EAAE,EAAE2I,SAAUtC,GAAmB,OAAIrH,GAAa6J,EAAW3M,OAAWa,EAAAA,cAAoBoK,EAAAA,EAAElC,kBAAmB,CAAEzF,IAAMuJ,GAAQ9B,EAASlJ,QAAQ+K,GAAKC,EAAKI,QAAUH,IAC/tBA,EAAE3B,iBACF2B,EAAEI,kBACF5C,EAAgBqC,EAAW3M,OAC3B6J,EAAS,aAAc8C,EAAW3M,MAAM,EACzC+L,UAAYe,IAAC,IAAAK,EAAA,OAAKH,EAAWF,EAAGF,GAAe,QAAZO,EAACxC,EAAOpJ,YAAI,IAAA4L,OAAA,EAAXA,EAAazB,aAAa5H,OAAS,EAAE,EAAE2I,SAAUtC,GAAmB,OAAIrH,GAAa6J,EAAW3M,aAC/I,SAASgN,EAAWlI,EAAO8H,EAAGQ,GAAU,IAAAC,EAAAC,EACpC,MAAMC,EAAYX,IAAMQ,EAAW,GAAIrN,EAAAA,EAAAA,IAAM6M,EAAI,EAAGQ,GAC9CI,EAAkB,IAANZ,EAAUQ,GAAWrN,EAAAA,EAAAA,IAAM6M,EAAI,EAAGQ,GACpD,OAAQtI,EAAMkH,KACV,IAAK,YACDlH,EAAMqG,iBACNrG,EAAMoI,kBACqB,QAA3BG,EAAAtC,EAASlJ,QAAQ0L,UAAU,IAAAF,GAA3BA,EAA6BnB,QAC7B,MACJ,IAAK,UACDpH,EAAMqG,iBACNrG,EAAMoI,kBACqB,QAA3BI,EAAAvC,EAASlJ,QAAQ2L,UAAU,IAAAF,GAA3BA,EAA6BpB,QAC7B,MACJ,IAAK,SACD9B,GAAmB,GACnBN,EAAS,cAKrB,E,iEC9GA2D,EAAOC,E,4DACX,SAASC,IAAa,OAAOA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIjB,EAAI,EAAGA,EAAIkB,UAAUlK,OAAQgJ,IAAK,CAAE,IAAImB,EAAID,UAAUlB,GAAI,IAAK,IAAIoB,KAAKD,GAAG,CAAG,GAAEE,eAAezK,KAAKuK,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGJ,EAASS,MAAM,KAAMJ,UAAY,CAEnR,MAWA,EAXoBpN,GAAsB,gBAAoB,MAAO+M,EAAS,CAC5EU,QAAS,cACTC,KAAM,OACNC,MAAO,8BACN3N,GAAQ6M,IAAUA,EAAqB,gBAAoB,OAAQ,CACpEe,EAAG,ixBACHF,KAAM,UACHZ,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEc,EAAG,wTACHF,KAAM,WCZR,IAAI,EACJ,SAAS,IAAa,OAAO,EAAWV,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIjB,EAAI,EAAGA,EAAIkB,UAAUlK,OAAQgJ,IAAK,CAAE,IAAImB,EAAID,UAAUlB,GAAI,IAAK,IAAIoB,KAAKD,GAAG,CAAG,GAAEE,eAAezK,KAAKuK,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAG,EAASK,MAAM,KAAMJ,UAAY,CAEnR,MAQA,EARqBpN,GAAsB,gBAAoB,MAAO,EAAS,CAC7EyN,QAAS,cACTC,KAAM,OACNC,MAAO,8BACN3N,GAAQ,IAAU,EAAqB,gBAAoB,OAAQ,CACpE4N,EAAG,wyBACHF,KAAM,WCTR,IAAI,EACJ,SAAS,IAAa,OAAO,EAAWV,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIjB,EAAI,EAAGA,EAAIkB,UAAUlK,OAAQgJ,IAAK,CAAE,IAAImB,EAAID,UAAUlB,GAAI,IAAK,IAAIoB,KAAKD,GAAG,CAAG,GAAEE,eAAezK,KAAKuK,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAG,EAASK,MAAM,KAAMJ,UAAY,CAEnR,MAQA,EARoBpN,GAAsB,gBAAoB,MAAO,EAAS,CAC5EyN,QAAS,cACTC,KAAM,OACNC,MAAO,8BACN3N,GAAQ,IAAU,EAAqB,gBAAoB,OAAQ,CACpE4N,EAAG,0hEACHF,KAAM,WCTR,IAAI,EAAO,EACX,SAAS,IAAa,OAAO,EAAWV,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIjB,EAAI,EAAGA,EAAIkB,UAAUlK,OAAQgJ,IAAK,CAAE,IAAImB,EAAID,UAAUlB,GAAI,IAAK,IAAIoB,KAAKD,GAAG,CAAG,GAAEE,eAAezK,KAAKuK,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAG,EAASK,MAAM,KAAMJ,UAAY,CAEnR,MAWA,EAXoBpN,GAAsB,gBAAoB,MAAO,EAAS,CAC5EyN,QAAS,cACTC,KAAM,OACNC,MAAO,8BACN3N,GAAQ,IAAU,EAAqB,gBAAoB,OAAQ,CACpE4N,EAAG,yqBACHF,KAAM,UACH,IAAW,EAAsB,gBAAoB,OAAQ,CAChEE,EAAG,8IACHF,KAAM,W,8KCCR,MAAM1H,EAAYC,EAAAA,GAAO4H,OAAM1H,WAAA,CAAAtG,YAAA,0BAAAuG,YAAA,gBAAbH,CAAa,ihCAkBzBI,EAAAA,EAAAA,IAAW,YAAa,IAGNC,EAAAA,EAAMwB,QAAQgG,OAAOC,OAKhChG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAWZjG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOiG,eAMnB5H,EAAAA,EAAAA,IAAW,YAAa,KAENC,EAAAA,EAAMwB,QAAQoG,KAAKH,OAS9BhG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAQZjG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOiG,eAaVlG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAMrBG,EAAQlI,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,sBAAAuG,YAAA,gBAAVH,CAAU,ipCACpBmI,EAAAA,GAEatH,EAAAA,EAAAA,IAAM,GAAI,KAGhBR,EAAAA,EAAMC,OAAO8H,OACPvH,EAAAA,EAAAA,IAAM,GAAI,KACPA,EAAAA,EAAAA,IAAM,GAAI,KAGnBiB,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAELlH,EAAAA,EAAAA,IAAM,GAAI,IAWJR,EAAAA,EAAMwB,QAAQgG,OAAOC,OAEhChG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAKZjG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOiG,cAKrBK,EAAAA,GAAatI,UACCM,EAAAA,EAAMwB,QAAQoG,KAAKrH,KAEXP,EAAAA,EAAMM,KAAKmH,MACdzH,EAAAA,EAAMwB,QAAQoG,KAAKH,OAKpBjH,EAAAA,EAAAA,IAAM,GAAI,IACZR,EAAAA,EAAMC,OAAO8H,MACL/H,EAAAA,EAAMM,KAAKC,KACdP,EAAAA,EAAMwB,QAAQoG,KAAKrH,KAMtCyH,EAAAA,GAAaC,YAOXD,EAAAA,GAAaC,aAKRxG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,aAKrBQ,EAAAA,EAAqBxI,UAEZM,EAAAA,EAAMC,OAAO8H,OAGbI,EAAAA,EAAAA,IAAMzG,EAAAA,GAAOgG,aAClBQ,EAAAA,EAAqB/G,OAKrB+G,EAAAA,EAAqBE,QAKfF,EAAAA,EAAqB/G,OAAkC+G,EAAAA,EAAqBE,SAK7E3G,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAEFlH,EAAAA,EAAAA,IAAM,GAAI,KAI3B6H,EAAO1I,EAAAA,GAAO2I,EAACzI,WAAA,CAAAtG,YAAA,qBAAAuG,YAAA,gBAARH,CAAQ,4HAOV8B,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cACFlH,EAAAA,EAAAA,IAAM,GAAI,KAGzB+H,EAAY5I,EAAAA,GAAO6I,EAAC3I,WAAA,CAAAtG,YAAA,0BAAAuG,YAAA,gBAARH,CAAQ,yHACtBqB,EAAAA,EAAMC,KAAKwH,MAIAjI,EAAAA,EAAAA,IAAM,GAAI,KACRA,EAAAA,EAAAA,IAAM,GAAI,KAGhBiB,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAIjBgB,EAAiB/I,EAAAA,GAAO6I,EAAC3I,WAAA,CAAAtG,YAAA,+BAAAuG,YAAA,gBAARH,CAAQ,wUAC3BgJ,EAAAA,IAME5I,EAAAA,EAAAA,IAAW,yBAA0B,IAKnCC,EAAAA,EAAMwB,QAAQoG,KAAKrH,KACnBP,EAAAA,EAAMwB,QAAQoG,KAAKrH,KAQrBb,GAKK+B,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAKjBkB,EAAgBjJ,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,8BAAAuG,YAAA,gBAAVH,CAAU,uIAGvBa,EAAAA,EAAAA,IAAM,EAAG,KAGPiB,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAMjBmB,EAAoBlJ,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,kCAAAuG,YAAA,gBAAVH,CAAU,6QAIzB8B,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAIZlH,EAAAA,EAAAA,IAAM,GAAI,KACPA,EAAAA,EAAAA,IAAM,GAAI,KAASA,EAAAA,EAAAA,IAAM,GAAI,KAOhCiB,EAAAA,EAAAA,IAAKC,EAAAA,GAAOiG,eAKjBmB,GAAmBC,EAAAA,EAAAA,IAAG,8BACxBhH,EAAAA,GAEkB/B,EAAAA,EAAMC,OAAO8H,OAE7BiB,EAAgBrJ,EAAAA,GAAOgJ,GAAE9I,WAAA,CAAAtG,YAAA,8BAAAuG,YAAA,gBAATH,CAAS,uCAC3BqB,EAAAA,EAAMC,KAAKwH,MAEAjI,EAAAA,EAAAA,IAAM,GAAI,KAGnByI,EAAiBtJ,EAAAA,GAAOyB,OAAMvB,WAAA,CAAAtG,YAAA,+BAAAuG,YAAA,gBAAbH,CAAa,wgBAChC0B,EAAAA,GAIYb,EAAAA,EAAAA,IAAM,GAAI,IAGpBQ,EAAAA,EAAMC,KAAKwH,MAEAjI,EAAAA,EAAAA,IAAM,GAAI,IAYIR,EAAAA,EAAMwB,QAAQoG,KAAKrH,MAarC4H,EAAAA,EAAAA,IAAMzG,EAAAA,GAAOgG,cAClB3H,EAAAA,EAAAA,IAAW,YAAa,MAOnB0B,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,aAMnBoB,GAKOX,EAAAA,EAAAA,IAAMzG,EAAAA,GAAOgG,cAMpB3H,EAAAA,EAAAA,IAAW,YAAa,MAMxBmJ,GAAWvJ,EAAAA,EAAAA,IAAOwJ,EAAAA,EAAE5H,IAAG1B,WAAA,CAAAtG,YAAA,yBAAAuG,YAAA,gBAAZH,CAAY,sVAGpBa,EAAAA,EAAAA,IAAM,GAAI,IAIbQ,EAAAA,EAAMC,KAAKC,SAEAV,EAAAA,EAAAA,IAAM,GAAI,KACRA,EAAAA,EAAAA,IAAM,GAAI,IAIvBsI,GAaKrH,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAWjB0B,EAAczJ,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,4BAAAuG,YAAA,iBAAVH,CAAU,0KAInB8B,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,aAMnB2B,EAAAA,EAAkB3J,WAGTyI,EAAAA,EAAAA,IAAMzG,EAAAA,GAAOgG,cAKpB4B,EAAa3J,EAAAA,GAAOgJ,GAAE9I,WAAA,CAAAtG,YAAA,2BAAAuG,YAAA,iBAATH,CAAS,oEACxB4J,EAAAA,IAGe/I,EAAAA,EAAAA,IAAM,GAAI,KAElB2H,EAAAA,EAAAA,IAAMzG,EAAAA,GAAOgG,cAIlB8B,EAAU7J,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,wBAAAuG,YAAA,iBAAVH,CAAU,wFAGf8B,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,aAKjBwB,GAKAO,GAAY9J,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,0BAAAuG,YAAA,iBAAVH,CAAU,meACxBqB,EAAAA,EAAMC,KAAKC,SAKAV,EAAAA,EAAAA,IAAM,GAAI,KACRA,EAAAA,EAAAA,IAAM,GAAI,KAed2H,EAAAA,EAAAA,IAAMzG,EAAAA,GAAOgG,cAKbjG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,aAWjBoB,GAGKrH,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgI,cAIZjI,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAKdjG,EAAAA,EAAAA,IAAKC,EAAAA,GAAOgG,cAGLlH,EAAAA,EAAAA,IAAM,GAAI,KA4C5B,GAjBqB,CACjBd,YACAmI,QACAQ,OACAE,YACAG,iBACAE,gBACAC,oBACAI,iBACAC,WACAS,QAjCYhK,EAAAA,GAAOC,IAAGC,WAAA,CAAAtG,YAAA,wBAAAuG,YAAA,iBAAVH,CAAU,qMAGJK,EAAAA,EAAMwB,QAAQgG,OAAOjH,MAQtBC,EAAAA,EAAAA,IAAM,GAAI,KAKbA,EAAAA,EAAAA,IAAM,GAAI,KAGjB2H,EAAAA,EAAAA,IAAMzG,EAAAA,GAAOgG,cAepB0B,YAAW,EACXE,aACAE,UACAC,aACAT,iBCzbJ,IAAe3P,EAAAA,EAAAA,IA1ECK,IAAU,IAAAkQ,EAAAxH,EAAAC,EAAAsC,EAAAC,EACtB,MAAOiF,EAAMC,GAAWnQ,EAAAA,UAAgB,IACjCmK,EAAciG,IAAUC,EAAAA,EAAAA,GAAU,CAAEC,WAAUA,EAAAA,KAAI,EAAwB,QAAnBL,EAAElQ,EAAMwQ,mBAAW,IAAAN,OAAA,EAAjBA,EAAmBO,YAC7EC,EAAezQ,EAAAA,SAAc,IAAMD,EAAM2Q,aAAaC,SAASC,GAAMA,EAAEC,QAAO5N,OAASlD,EAAM2Q,aAAazN,QAAQ,CAAClD,EAAM2Q,eAC/H,OAAQ1Q,EAAAA,cAAoBoK,GAAErE,UAAW,CAAEtD,IAAK0H,EAAc,eAAgBiG,GAC1EpQ,EAAAA,cAAoBoK,GAAE8D,MAAO,KACzBlO,EAAAA,cAAoBoK,GAAEsE,KAAM,CAAElJ,KAAMzF,EAAM+Q,KAAKrP,IAAK,aAAc1B,EAAM+Q,KAAK7J,OAuDrF,SAAoB6J,GAChB,OAAQA,GACJ,KAAKC,EAAAA,KAAKC,IACN,OAAOhR,EAAAA,cAAoBiR,EAAQ,MACvC,KAAKF,EAAAA,KAAKG,KACN,OAAOlR,EAAAA,cAAoBmR,EAAS,MACxC,KAAKJ,EAAAA,KAAKK,IACN,OAAOpR,EAAAA,cAAoBqR,EAAQ,MACvC,KAAKN,EAAAA,KAAKO,IACN,OAAOtR,EAAAA,cAAoBuR,EAAQ,MAE/C,CAlE8FC,CAAWzR,EAAM+Q,KAAKpG,OAC5G3K,EAAM0R,YAAczR,EAAAA,cAAoBoK,GAAEwE,UAAW,KAAM7O,EAAM0R,YACjEzR,EAAAA,cAAoBwH,EAAAA,GAAQ,CAAEkK,WAAY,UAAWC,UAAU,EAAM,eAAe,EAAMvF,QAASA,KAC3F9G,OAAOsM,SAAS,CAAEC,IAAK,GAAI,GACqB,QAAjDpJ,EAAoB,QAApBC,EAAE3I,EAAMgL,oBAAY,IAAArC,OAAA,EAAlBA,EAAqB,kCAA0B,IAAAD,EAAAA,EAAI,IAC5D1I,EAAM+R,YAAe9R,EAAAA,cAAoBoK,GAAE2E,eAAgB,CAAEgD,wBAAyB,CAAEC,QAAQzS,EAAAA,EAAAA,IAAoBQ,EAAM+R,eAC1H/R,EAAMkS,SAAWlS,EAAMkS,QAAQhP,OAAS,GAAMjD,EAAAA,cAAoBoK,GAAE6E,cAAe,CAAE,eAAgBiD,EAAAA,EAAkBC,QAAUpS,EAAMkS,QAAQpG,KAAI,CAACpE,EAAQsE,IAAO/L,EAAAA,cAAoBoS,EAAAA,GAAY,CAAEjH,IAAK,iBAAiBY,IAAK2F,WAAYjK,EAAOiK,WAAajK,EAAOiK,WAAmB,IAAN3F,EAAU,YAAc,UAAWvG,KAAMiC,EAAOhG,IAAK2C,OAAQqD,EAAOrD,OAAQiO,KAAM5K,EAAO4K,MAAQ5K,EAAO6K,SAC5XvS,EAAM2Q,cAAgB3Q,EAAM2Q,aAAazN,OAAS,EAAKjD,EAAAA,cAAoBoK,GAAE8E,kBAAmB,KAAMnP,EAAM2Q,aAAa7E,KAAI,CAAC0G,EAAOxG,IAAO/L,EAAAA,cAAoB,MAAO,CAAEmL,IAAK,gBAAgBoH,EAAM/H,KAAM,YAAa+H,EAAM1B,MAAM5N,OAASwN,GACxOzQ,EAAAA,cAAoBoK,GAAEkF,eAAgB,CAAE,YAAaY,IAASnE,EAAGK,QAASA,KAE9D+D,EADAD,IAASnE,GACA,EAGDA,EACZ,EACD,gBAAiB,gBAAgBwG,EAAM/H,MAC1CxK,EAAAA,cAAoB,KAAM,KAAMuS,EAAMtL,MAAMqL,OAC5C7G,EAAAA,EAAAA,IAAWC,EAAAA,GAAc8G,UAC7BxS,EAAAA,cAAoBoK,GAAEiF,cAAe,KACjCrP,EAAAA,cAAoBoK,GAAEkF,eAAgB,IAAOiD,EAAMtL,MAAMxF,IAE/C,CAAE8J,GAAI,IAAK/F,KAAM+M,EAAMtL,MAAMxF,IAAK2C,OAAQmO,EAAMtL,MAAMxF,KADtD,CAAE8J,GAAI,SAC0DgH,EAAMtL,MAAMqL,OAC1FtS,EAAAA,cAAoBoK,GAAEmF,SAAU,CAAE/E,GAAI,gBAAgB+H,EAAM/H,KAAMiI,SAAU,CACpEC,QAAS,CACLC,OAAQ,EACRC,aAAc,EACdC,cAAe,CAAEC,WAAY,WAEjC5C,KAAM,CAAEyC,OAAQ,OAAQC,aAAc,GAAIE,WAAY,YACvDC,QAAS7C,IAASnE,EAAI,OAAS,WAClCwG,EAAMtL,MAAMxF,KAAQzB,EAAAA,cAAoB,KAAM,CAAE,oBAAoB,GAChEA,EAAAA,cAAoB,IAAK,CAAEwF,KAAM+M,EAAMtL,MAAMxF,IAAK2C,OAAQmO,EAAMtL,MAAM7C,QAAUmO,EAAMtL,MAAMqL,OAChGC,EAAM1B,MAAMhF,KAAI,CAACzD,EAAM4K,IAAOhT,EAAAA,cAAoB,KAAM,CAAEmL,IAAK,gBAAgBoH,EAAM/H,MAAMwI,KACvFhT,EAAAA,cAAoB,IAAK,CAAEwF,KAAM4C,EAAK3G,IAAK2C,OAAQgE,EAAKhE,QAAUgE,EAAKkK,cAAiB,KACpGtS,EAAAA,cAAoBiT,EAAAA,EAAgB,IAAKlT,EAAMmT,iBAC/CnT,EAAMoT,aAAepT,EAAMoT,YAAYlQ,OAAS,GAAMjD,EAAAA,cAAoBoK,GAAEqF,YAAa,KACrFzP,EAAAA,cAAoBoK,GAAEuF,WAAY,KAAuD,QAAnD3E,EAAoB,QAApBC,EAAElL,EAAMgL,oBAAY,IAAAE,OAAA,EAAlBA,EAAqB,oCAA4B,IAAAD,EAAAA,EAAI,IAC7FhL,EAAAA,cAAoByP,EAAAA,EAAa,CAAE2D,MAAOrT,EAAMoT,eACpDpT,EAAMsT,WAAatT,EAAMsT,UAAUpQ,OAAS,GAAMjD,EAAAA,cAAoBA,EAAAA,SAAgB,KAAMD,EAAMsT,UAAUxH,KAAI,CAACyH,EAASvH,IAAO/L,EAAAA,cAAoBoK,GAAEyF,QAAS,CAAE1E,IAAK,oBAAoBY,KACvL/L,EAAAA,cAAoBoK,GAAEuF,WAAY,KAAM2D,EAAQC,SAChDvT,EAAAA,cAAoBoK,GAAEmF,SAAU,KAAM+D,EAAQzC,MAAMhF,KAAI,CAACzD,EAAM4K,IAAOhT,EAAAA,cAAoB,KAAM,CAAEmL,IAAK,oBAAoBY,KAAKiH,KAC5HhT,EAAAA,cAAoB,IAAK,CAAEwF,KAAM,GAAG4C,EAAKiK,OAAS3G,EAAAA,GAAc8H,KACtD,UACApL,EAAKiK,OAAS3G,EAAAA,GAAc+H,MACxB,OACA,KAAKrL,EAAK3G,MAAO2C,OAAQgE,EAAKhE,SACxCqH,EAAAA,EAAAA,IAAWrD,EAAKiK,MAChBjK,EAAKkK,eAChBvS,EAAM2T,eAAiB3T,EAAM4T,aAAgB3T,EAAAA,cAAoBoK,GAAE0F,UAAW,KAC3E/P,EAAM2T,eAAiB3T,EAAM2T,cAAczQ,OAAS,GAAMjD,EAAAA,cAAoB,IAAK,KAAMD,EAAM2T,cAAc7H,KAAI,CAAC+H,EAAI7H,IAAO/L,EAAAA,cAAoB,OAAQ,CAAEmL,IAAK,oBAAoBY,KAAO6H,MAC3L7T,EAAM4T,YAAc5T,EAAM4T,WAAW1Q,OAAS,GAAMjD,EAAAA,cAAoB,KAAM,KAAMD,EAAM4T,WAAW9H,KAAI,CAACzD,EAAM2D,IAAO/L,EAAAA,cAAoB,KAAM,CAAEmL,IAAK,sBAAsBY,KAC1K/L,EAAAA,cAAoB,IAAK,CAAEwF,KAAM4C,EAAK3G,IAAK2C,OAAQgE,EAAKhE,QAAUgE,EAAKkK,WAC/EtS,EAAAA,cAAoBoK,GAAE4F,QAAS,CAAEpF,KAAM,YAAa,cAAc,IAClE5K,EAAAA,cAAoBoK,GAAE4F,QAAS,CAAEpF,KAAM,YAAa,eAAe,IACnE5K,EAAAA,cAAoBoK,GAAE4F,QAAS,CAAEpF,KAAM,YAAa,cAAc,KAY1E,G,uBCvFJ,IAAIiJ,EAAQ,eACRC,EAAgB,IAAIC,OAAO,IAAMF,EAAQ,aAAc,MACvDG,EAAe,IAAID,OAAO,IAAMF,EAAQ,KAAM,MAElD,SAASI,EAAiBC,EAAYC,GACrC,IAEC,MAAO,CAACC,mBAAmBF,EAAWG,KAAK,KAC5C,CAAE,MAAOC,GAET,CAEA,GAA0B,IAAtBJ,EAAWjR,OACd,OAAOiR,EAGRC,EAAQA,GAAS,EAGjB,IAAII,EAAOL,EAAWM,MAAM,EAAGL,GAC3BM,EAAQP,EAAWM,MAAML,GAE7B,OAAOO,MAAMC,UAAUC,OAAO/R,KAAK,GAAIoR,EAAiBM,GAAON,EAAiBQ,GACjF,CAEA,SAASI,EAAOzN,GACf,IACC,OAAOgN,mBAAmBhN,EAC3B,CAAE,MAAOkN,GAGR,IAFA,IAAIQ,EAAS1N,EAAM2N,MAAMjB,IAAkB,GAElC/H,EAAI,EAAGA,EAAI+I,EAAO7R,OAAQ8I,IAGlC+I,GAFA1N,EAAQ6M,EAAiBa,EAAQ/I,GAAGsI,KAAK,KAE1BU,MAAMjB,IAAkB,GAGxC,OAAO1M,CACR,CACD,CAuCA4N,EAAOC,QAAU,SAAUC,GAC1B,GAA0B,iBAAfA,EACV,MAAM,IAAIC,UAAU,6DAA+DD,EAAa,KAGjG,IAIC,OAHAA,EAAaA,EAAWE,QAAQ,MAAO,KAGhChB,mBAAmBc,EAC3B,CAAE,MAAOZ,GAER,OAjDF,SAAkClN,GAQjC,IANA,IAAIiO,EAAa,CAChB,SAAU,KACV,SAAU,MAGPN,EAAQf,EAAasB,KAAKlO,GACvB2N,GAAO,CACb,IAECM,EAAWN,EAAM,IAAMX,mBAAmBW,EAAM,GACjD,CAAE,MAAOT,GACR,IAAIxK,EAAS+K,EAAOE,EAAM,IAEtBjL,IAAWiL,EAAM,KACpBM,EAAWN,EAAM,IAAMjL,EAEzB,CAEAiL,EAAQf,EAAasB,KAAKlO,EAC3B,CAGAiO,EAAW,OAAS,IAIpB,IAFA,IAAIE,EAAUxI,OAAOyI,KAAKH,GAEjBtJ,EAAI,EAAGA,EAAIwJ,EAAQtS,OAAQ8I,IAAK,CAExC,IAAIZ,EAAMoK,EAAQxJ,GAClB3E,EAAQA,EAAMgO,QAAQ,IAAIrB,OAAO5I,EAAK,KAAMkK,EAAWlK,GACxD,CAEA,OAAO/D,CACR,CAcSqO,CAAyBP,EACjC,CACD,C,wBC5FAF,EAAOC,QAAU,SAAUS,EAAKC,GAK/B,IAJA,IAAIC,EAAM,CAAC,EACPJ,EAAOzI,OAAOyI,KAAKE,GACnBG,EAAQnB,MAAMoB,QAAQH,GAEjB5J,EAAI,EAAGA,EAAIyJ,EAAKvS,OAAQ8I,IAAK,CACrC,IAAIZ,EAAMqK,EAAKzJ,GACXgK,EAAML,EAAIvK,IAEV0K,GAAoC,IAA5BF,EAAUK,QAAQ7K,GAAcwK,EAAUxK,EAAK4K,EAAKL,MAC/DE,EAAIzK,GAAO4K,EAEb,CAEA,OAAOH,CACR,C,8BCfA,MAAMK,EAAkB,EAAQ,MAC1BC,EAAkB,EAAQ,KAC1BC,EAAe,EAAQ,KACvBC,EAAe,EAAQ,MAIvBC,EAA2BC,OAAO,4BAgNxC,SAASC,EAA6BpX,GACrC,GAAqB,iBAAVA,GAAuC,IAAjBA,EAAM8D,OACtC,MAAM,IAAIkS,UAAU,uDAEtB,CAEA,SAASqB,EAAOrX,EAAOsX,GACtB,OAAIA,EAAQD,OACJC,EAAQrW,OAAS6V,EAAgB9W,GAASuX,mBAAmBvX,GAG9DA,CACR,CAEA,SAAS0V,EAAO1V,EAAOsX,GACtB,OAAIA,EAAQ5B,OACJqB,EAAgB/W,GAGjBA,CACR,CAEA,SAASwX,EAAWvP,GACnB,OAAIsN,MAAMoB,QAAQ1O,GACVA,EAAMwP,OAGO,iBAAVxP,EACHuP,EAAW5J,OAAOyI,KAAKpO,IAC5BwP,MAAK,CAACjI,EAAGkI,IAAMC,OAAOnI,GAAKmI,OAAOD,KAClChL,KAAIV,GAAO/D,EAAM+D,KAGb/D,CACR,CAEA,SAAS2P,EAAW3P,GACnB,MAAM4P,EAAY5P,EAAM4O,QAAQ,KAKhC,OAJmB,IAAfgB,IACH5P,EAAQA,EAAMoN,MAAM,EAAGwC,IAGjB5P,CACR,CAYA,SAAS6P,EAAQ7P,GAEhB,MAAM8P,GADN9P,EAAQ2P,EAAW3P,IACM4O,QAAQ,KACjC,OAAoB,IAAhBkB,EACI,GAGD9P,EAAMoN,MAAM0C,EAAa,EACjC,CAEA,SAASC,EAAWhY,EAAOsX,GAO1B,OANIA,EAAQW,eAAiBN,OAAOO,MAAMP,OAAO3X,KAA6B,iBAAVA,GAAuC,KAAjBA,EAAM6D,OAC/F7D,EAAQ2X,OAAO3X,IACLsX,EAAQa,eAA2B,OAAVnY,GAA2C,SAAxBA,EAAMoY,eAAoD,UAAxBpY,EAAMoY,gBAC9FpY,EAAgC,SAAxBA,EAAMoY,eAGRpY,CACR,CAEA,SAASqY,EAAMC,EAAOhB,GAUrBF,GATAE,EAAU1J,OAAOC,OAAO,CACvB6H,QAAQ,EACR+B,MAAM,EACNc,YAAa,OACbC,qBAAsB,IACtBP,cAAc,EACdE,eAAe,GACbb,IAEkCkB,sBAErC,MAAMC,EA7LP,SAA8BnB,GAC7B,IAAI3M,EAEJ,OAAQ2M,EAAQiB,aACf,IAAK,QACJ,MAAO,CAACvM,EAAKhM,EAAO0Y,KACnB/N,EAAS,aAAawL,KAAKnK,GAE3BA,EAAMA,EAAIiK,QAAQ,WAAY,IAEzBtL,QAKoB7H,IAArB4V,EAAY1M,KACf0M,EAAY1M,GAAO,CAAC,GAGrB0M,EAAY1M,GAAKrB,EAAO,IAAM3K,GAR7B0Y,EAAY1M,GAAOhM,CAQe,EAGrC,IAAK,UACJ,MAAO,CAACgM,EAAKhM,EAAO0Y,KACnB/N,EAAS,UAAUwL,KAAKnK,GACxBA,EAAMA,EAAIiK,QAAQ,QAAS,IAEtBtL,OAKoB7H,IAArB4V,EAAY1M,GAKhB0M,EAAY1M,GAAO,GAAGyJ,OAAOiD,EAAY1M,GAAMhM,GAJ9C0Y,EAAY1M,GAAO,CAAChM,GALpB0Y,EAAY1M,GAAOhM,CASiC,EAGvD,IAAK,uBACJ,MAAO,CAACgM,EAAKhM,EAAO0Y,KACnB/N,EAAS,WAAWwL,KAAKnK,GACzBA,EAAMA,EAAIiK,QAAQ,SAAU,IAEvBtL,OAKoB7H,IAArB4V,EAAY1M,GAKhB0M,EAAY1M,GAAO,GAAGyJ,OAAOiD,EAAY1M,GAAMhM,GAJ9C0Y,EAAY1M,GAAO,CAAChM,GALpB0Y,EAAY1M,GAAOhM,CASiC,EAGvD,IAAK,QACL,IAAK,YACJ,MAAO,CAACgM,EAAKhM,EAAO0Y,KACnB,MAAM/B,EAA2B,iBAAV3W,GAAsBA,EAAM2Y,SAASrB,EAAQkB,sBAC9DI,EAAmC,iBAAV5Y,IAAuB2W,GAAWjB,EAAO1V,EAAOsX,GAASqB,SAASrB,EAAQkB,sBACzGxY,EAAQ4Y,EAAiBlD,EAAO1V,EAAOsX,GAAWtX,EAClD,MAAM6Y,EAAWlC,GAAWiC,EAAiB5Y,EAAMgV,MAAMsC,EAAQkB,sBAAsB9L,KAAIoM,GAAQpD,EAAOoD,EAAMxB,KAAsB,OAAVtX,EAAiBA,EAAQ0V,EAAO1V,EAAOsX,GACnKoB,EAAY1M,GAAO6M,CAAQ,EAG7B,IAAK,oBACJ,MAAO,CAAC7M,EAAKhM,EAAO0Y,KACnB,MAAM/B,EAAU,UAAUoC,KAAK/M,GAG/B,GAFAA,EAAMA,EAAIiK,QAAQ,QAAS,KAEtBU,EAEJ,YADA+B,EAAY1M,GAAOhM,EAAQ0V,EAAO1V,EAAOsX,GAAWtX,GAIrD,MAAMgZ,EAAuB,OAAVhZ,EAClB,GACAA,EAAMgV,MAAMsC,EAAQkB,sBAAsB9L,KAAIoM,GAAQpD,EAAOoD,EAAMxB,UAE3CxU,IAArB4V,EAAY1M,GAKhB0M,EAAY1M,GAAO,GAAGyJ,OAAOiD,EAAY1M,GAAMgN,GAJ9CN,EAAY1M,GAAOgN,CAIsC,EAG5D,QACC,MAAO,CAAChN,EAAKhM,EAAO0Y,UACM5V,IAArB4V,EAAY1M,GAKhB0M,EAAY1M,GAAO,GAAGyJ,OAAOiD,EAAY1M,GAAMhM,GAJ9C0Y,EAAY1M,GAAOhM,CAIiC,EAGzD,CAyFmBiZ,CAAqB3B,GAGjCb,EAAM7I,OAAOsL,OAAO,MAE1B,GAAqB,iBAAVZ,EACV,OAAO7B,EAKR,KAFA6B,EAAQA,EAAMzU,OAAOoS,QAAQ,SAAU,KAGtC,OAAOQ,EAGR,IAAK,MAAM0C,KAASb,EAAMtD,MAAM,KAAM,CACrC,GAAc,KAAVmE,EACH,SAGD,IAAKnN,EAAKhM,GAASgX,EAAaM,EAAQ5B,OAASyD,EAAMlD,QAAQ,MAAO,KAAOkD,EAAO,KAIpFnZ,OAAkB8C,IAAV9C,EAAsB,KAAO,CAAC,QAAS,YAAa,qBAAqB2Y,SAASrB,EAAQiB,aAAevY,EAAQ0V,EAAO1V,EAAOsX,GACvImB,EAAU/C,EAAO1J,EAAKsL,GAAUtX,EAAOyW,EACxC,CAEA,IAAK,MAAMzK,KAAO4B,OAAOyI,KAAKI,GAAM,CACnC,MAAMzW,EAAQyW,EAAIzK,GAClB,GAAqB,iBAAVhM,GAAgC,OAAVA,EAChC,IAAK,MAAMoZ,KAAKxL,OAAOyI,KAAKrW,GAC3BA,EAAMoZ,GAAKpB,EAAWhY,EAAMoZ,GAAI9B,QAGjCb,EAAIzK,GAAOgM,EAAWhY,EAAOsX,EAE/B,CAEA,OAAqB,IAAjBA,EAAQG,KACJhB,IAGiB,IAAjBa,EAAQG,KAAgB7J,OAAOyI,KAAKI,GAAKgB,OAAS7J,OAAOyI,KAAKI,GAAKgB,KAAKH,EAAQG,OAAO4B,QAAO,CAAC1O,EAAQqB,KAC9G,MAAMhM,EAAQyW,EAAIzK,GAQlB,OAPIsN,QAAQtZ,IAA2B,iBAAVA,IAAuBuV,MAAMoB,QAAQ3W,GAEjE2K,EAAOqB,GAAOwL,EAAWxX,GAEzB2K,EAAOqB,GAAOhM,EAGR2K,CAAM,GACXiD,OAAOsL,OAAO,MAClB,CAEApD,EAAQgC,QAAUA,EAClBhC,EAAQuC,MAAQA,EAEhBvC,EAAQzQ,UAAY,CAACkU,EAAQjC,KAC5B,IAAKiC,EACJ,MAAO,GAURnC,GAPAE,EAAU1J,OAAOC,OAAO,CACvBwJ,QAAQ,EACRpW,QAAQ,EACRsX,YAAa,OACbC,qBAAsB,KACpBlB,IAEkCkB,sBAErC,MAAMgB,EAAexN,GACnBsL,EAAQmC,UAnXwBzZ,MAmXMuZ,EAAOvN,IAC7CsL,EAAQoC,iBAAmC,KAAhBH,EAAOvN,GAG9ByM,EAnXP,SAA+BnB,GAC9B,OAAQA,EAAQiB,aACf,IAAK,QACJ,OAAOvM,GAAO,CAACrB,EAAQ3K,KACtB,MAAM2Z,EAAQhP,EAAO7G,OAErB,YACWhB,IAAV9C,GACCsX,EAAQmC,UAAsB,OAAVzZ,GACpBsX,EAAQoC,iBAA6B,KAAV1Z,EAErB2K,EAGM,OAAV3K,EACI,IAAI2K,EAAQ,CAAC0M,EAAOrL,EAAKsL,GAAU,IAAKqC,EAAO,KAAKzE,KAAK,KAG1D,IACHvK,EACH,CAAC0M,EAAOrL,EAAKsL,GAAU,IAAKD,EAAOsC,EAAOrC,GAAU,KAAMD,EAAOrX,EAAOsX,IAAUpC,KAAK,IACvF,EAGH,IAAK,UACJ,OAAOlJ,GAAO,CAACrB,EAAQ3K,SAEX8C,IAAV9C,GACCsX,EAAQmC,UAAsB,OAAVzZ,GACpBsX,EAAQoC,iBAA6B,KAAV1Z,EAErB2K,EAGM,OAAV3K,EACI,IAAI2K,EAAQ,CAAC0M,EAAOrL,EAAKsL,GAAU,MAAMpC,KAAK,KAG/C,IAAIvK,EAAQ,CAAC0M,EAAOrL,EAAKsL,GAAU,MAAOD,EAAOrX,EAAOsX,IAAUpC,KAAK,KAGhF,IAAK,uBACJ,OAAOlJ,GAAO,CAACrB,EAAQ3K,SAEX8C,IAAV9C,GACCsX,EAAQmC,UAAsB,OAAVzZ,GACpBsX,EAAQoC,iBAA6B,KAAV1Z,EAErB2K,EAGM,OAAV3K,EACI,IAAI2K,EAAQ,CAAC0M,EAAOrL,EAAKsL,GAAU,UAAUpC,KAAK,KAGnD,IAAIvK,EAAQ,CAAC0M,EAAOrL,EAAKsL,GAAU,SAAUD,EAAOrX,EAAOsX,IAAUpC,KAAK,KAGnF,IAAK,QACL,IAAK,YACL,IAAK,oBAAqB,CACzB,MAAM0E,EAAsC,sBAAxBtC,EAAQiB,YAC3B,MACA,IAED,OAAOvM,GAAO,CAACrB,EAAQ3K,SAEX8C,IAAV9C,GACCsX,EAAQmC,UAAsB,OAAVzZ,GACpBsX,EAAQoC,iBAA6B,KAAV1Z,EAErB2K,GAIR3K,EAAkB,OAAVA,EAAiB,GAAKA,EAER,IAAlB2K,EAAO7G,OACH,CAAC,CAACuT,EAAOrL,EAAKsL,GAAUsC,EAAavC,EAAOrX,EAAOsX,IAAUpC,KAAK,KAGnE,CAAC,CAACvK,EAAQ0M,EAAOrX,EAAOsX,IAAUpC,KAAKoC,EAAQkB,uBAExD,CAEA,QACC,OAAOxM,GAAO,CAACrB,EAAQ3K,SAEX8C,IAAV9C,GACCsX,EAAQmC,UAAsB,OAAVzZ,GACpBsX,EAAQoC,iBAA6B,KAAV1Z,EAErB2K,EAGM,OAAV3K,EACI,IAAI2K,EAAQ0M,EAAOrL,EAAKsL,IAGzB,IAAI3M,EAAQ,CAAC0M,EAAOrL,EAAKsL,GAAU,IAAKD,EAAOrX,EAAOsX,IAAUpC,KAAK,KAGhF,CA6QmB2E,CAAsBvC,GAElCwC,EAAa,CAAC,EAEpB,IAAK,MAAM9N,KAAO4B,OAAOyI,KAAKkD,GACxBC,EAAaxN,KACjB8N,EAAW9N,GAAOuN,EAAOvN,IAI3B,MAAMqK,EAAOzI,OAAOyI,KAAKyD,GAMzB,OAJqB,IAAjBxC,EAAQG,MACXpB,EAAKoB,KAAKH,EAAQG,MAGZpB,EAAK3J,KAAIV,IACf,MAAMhM,EAAQuZ,EAAOvN,GAErB,YAAclJ,IAAV9C,EACI,GAGM,OAAVA,EACIqX,EAAOrL,EAAKsL,GAGhB/B,MAAMoB,QAAQ3W,GACI,IAAjBA,EAAM8D,QAAwC,sBAAxBwT,EAAQiB,YAC1BlB,EAAOrL,EAAKsL,GAAW,KAGxBtX,EACLqZ,OAAOZ,EAAUzM,GAAM,IACvBkJ,KAAK,KAGDmC,EAAOrL,EAAKsL,GAAW,IAAMD,EAAOrX,EAAOsX,EAAQ,IACxDyC,QAAOC,GAAKA,EAAElW,OAAS,IAAGoR,KAAK,IAAI,EAGvCY,EAAQmE,SAAW,CAAC3X,EAAKgV,KACxBA,EAAU1J,OAAOC,OAAO,CACvB6H,QAAQ,GACN4B,GAEH,MAAO4C,EAAMC,GAAQnD,EAAa1U,EAAK,KAEvC,OAAOsL,OAAOC,OACb,CACCvL,IAAK4X,EAAKlF,MAAM,KAAK,IAAM,GAC3BsD,MAAOD,EAAMP,EAAQxV,GAAMgV,IAE5BA,GAAWA,EAAQ8C,yBAA2BD,EAAO,CAACE,mBAAoB3E,EAAOyE,EAAM7C,IAAY,CAAC,EACpG,EAGFxB,EAAQwE,aAAe,CAACf,EAAQjC,KAC/BA,EAAU1J,OAAOC,OAAO,CACvBwJ,QAAQ,EACRpW,QAAQ,EACR,CAACiW,IAA2B,GAC1BI,GAEH,MAAMhV,EAAMsV,EAAW2B,EAAOjX,KAAK0S,MAAM,KAAK,IAAM,GAC9CuF,EAAezE,EAAQgC,QAAQyB,EAAOjX,KACtCkY,EAAqB1E,EAAQuC,MAAMkC,EAAc,CAAC9C,MAAM,IAExDa,EAAQ1K,OAAOC,OAAO2M,EAAoBjB,EAAOjB,OACvD,IAAImC,EAAc3E,EAAQzQ,UAAUiT,EAAOhB,GACvCmD,IACHA,EAAc,IAAIA,KAGnB,IAAIN,EAlML,SAAiB7X,GAChB,IAAI6X,EAAO,GACX,MAAMtC,EAAYvV,EAAIuU,QAAQ,KAK9B,OAJmB,IAAfgB,IACHsC,EAAO7X,EAAI+S,MAAMwC,IAGXsC,CACR,CA0LYO,CAAQnB,EAAOjX,KAK1B,OAJIiX,EAAOc,qBACVF,EAAO,IAAI7C,EAAQJ,GAA4BG,EAAOkC,EAAOc,mBAAoB/C,GAAWiC,EAAOc,sBAG7F,GAAG/X,IAAMmY,IAAcN,GAAM,EAGrCrE,EAAQ6E,KAAO,CAAC1S,EAAO8R,EAAQzC,KAC9BA,EAAU1J,OAAOC,OAAO,CACvBuM,yBAAyB,EACzB,CAAClD,IAA2B,GAC1BI,GAEH,MAAM,IAAChV,EAAG,MAAEgW,EAAK,mBAAE+B,GAAsBvE,EAAQmE,SAAShS,EAAOqP,GACjE,OAAOxB,EAAQwE,aAAa,CAC3BhY,MACAgW,MAAOrB,EAAaqB,EAAOyB,GAC3BM,sBACE/C,EAAQ,EAGZxB,EAAQ8E,QAAU,CAAC3S,EAAO8R,EAAQzC,KACjC,MAAMuD,EAAkBtF,MAAMoB,QAAQoD,GAAU/N,IAAQ+N,EAAOpB,SAAS3M,GAAO,CAACA,EAAKhM,KAAW+Z,EAAO/N,EAAKhM,GAE5G,OAAO8V,EAAQ6E,KAAK1S,EAAO4S,EAAiBvD,EAAQ,C,uBC9drDzB,EAAOC,QAAU,CAACgF,EAAQC,KACzB,GAAwB,iBAAXD,GAA4C,iBAAdC,EAC1C,MAAM,IAAI/E,UAAU,iDAGrB,GAAkB,KAAd+E,EACH,MAAO,CAACD,GAGT,MAAME,EAAiBF,EAAOjE,QAAQkE,GAEtC,OAAwB,IAApBC,EACI,CAACF,GAGF,CACNA,EAAOzF,MAAM,EAAG2F,GAChBF,EAAOzF,MAAM2F,EAAiBD,EAAUjX,QACxC,C,wBCnBF+R,EAAOC,QAAUmF,GAAO1D,mBAAmB0D,GAAKhF,QAAQ,YAAY+D,GAAK,IAAIA,EAAEkB,WAAW,GAAGC,SAAS,IAAIC,iB","sources":["webpack://brc/./src/helpers/api.ts","webpack://brc/./src/helpers/utils.ts","webpack://brc/./src/hoc/withMotion.tsx","webpack://brc/./src/hooks/useApi.ts","webpack://brc/./src/hooks/useDebounce.ts","webpack://brc/./src/hooks/useForm.ts","webpack://brc/./src/hooks/useOutsideClick.ts","webpack://brc/./src/stories/Components/Misc/Searchbox/Searchbox.styles.ts","webpack://brc/./src/stories/Components/Misc/Searchbox/Searchbox.tsx","webpack://brc/./src/img/logos/brc-white.svg","webpack://brc/./src/img/logos/nirc-white.svg","webpack://brc/./src/img/logos/src-white.svg","webpack://brc/./src/img/logos/wrc-white.svg","webpack://brc/./src/stories/Widgets/Global/Footer/Footer.styles.ts","webpack://brc/./src/stories/Widgets/Global/Footer/Footer.tsx","webpack://brc/./node_modules/decode-uri-component/index.js","webpack://brc/./node_modules/filter-obj/index.js","webpack://brc/./node_modules/query-string/index.js","webpack://brc/./node_modules/split-on-first/index.js","webpack://brc/./node_modules/strict-uri-encode/index.js"],"sourcesContent":["export const API_URLS = {\r\n brandCardsListing: '/umbraco/api/brandapi/cards',\r\n contentCardsListing: '/umbraco/api/contentapi/cards',\r\n searchSubmit: '/api/search/submit',\r\n searchTypeahead: '/api/search/typeahead',\r\n savePage: '/umbraco/api/favouritesapi/postfavouriteupdate',\r\n // SIGN IN\r\n signIn: '/auth/login',\r\n forgottenPassword: '/auth/forgotpassword',\r\n resetPassword: '/auth/resetpassword',\r\n signUp: '/umbraco/api/crmapi/createaccount',\r\n checkCompanyName: '/umbraco/api/crmapi/checkcompanyname',\r\n // PORTAL FORMS\r\n communities: '/umbraco/api/portalapi/communities',\r\n myAccount: '/umbraco/api/portalapi/myaccount',\r\n newsletters: '/umbraco/api/portalapi/newsletters',\r\n};\r\n","export function sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\nexport function formatNumberValue(value, maximumDecimals, minimumDigits) {\r\n const formatter = new Intl.NumberFormat(undefined, {\r\n maximumFractionDigits: maximumDecimals ?? 0,\r\n minimumIntegerDigits: minimumDigits ?? 1,\r\n });\r\n return formatter.format(value);\r\n}\r\n/** Clamp index to be within the min/max index range. */\r\nexport function clamp(value, max) {\r\n return Math.max(Math.min(value, max), 0);\r\n}\r\n/**\r\n * Rule structure for react-hook-form\r\n */\r\nexport const EMAIL_RULE = {\r\n message: `Please enter a valid email address`,\r\n value: /^[\\w\\-.\\d*]+@[\\w\\-\\d.]+(\\.\\w*)$/,\r\n};\r\nexport const highlightTitleWords = (title) => title.replaceAll(/\\*(.*?)\\*/g, '$1');\r\n","import { domAnimation, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotion(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotion = (props) => {\r\n return (React.createElement(LazyMotion, { features: domAnimation, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotion.displayName = `withMotion(${displayName})`;\r\n return ComponentWithMotion;\r\n}\r\n","import { sleep } from '@helpers/utils';\r\nimport * as React from 'react';\r\nimport { useFirstMountState } from 'react-use';\r\nexport function useApi(params) {\r\n const refAbortController = React.useRef();\r\n const isFirstMount = useFirstMountState();\r\n const [data, setData] = React.useState(params.initialData);\r\n const [status, setStatus] = React.useState('initial');\r\n const minTime = 500;\r\n const clear = () => {\r\n setData(undefined);\r\n };\r\n React.useEffect(() => {\r\n // Ignore first mount if initial data is supplied.\r\n if (isFirstMount && params.initialData) {\r\n return;\r\n }\r\n // Ignore if validate is supplied and returns false.\r\n if (params.validate && !params.validate()) {\r\n return;\r\n }\r\n // Setup abortable fetch.\r\n refAbortController.current = new AbortController();\r\n const signal = refAbortController.current.signal;\r\n // Trigger fetch with abort signal.\r\n doAsync(signal);\r\n return () => {\r\n // Abort pending request if re-fetching.\r\n refAbortController.current?.abort();\r\n };\r\n async function doAsync(signal) {\r\n setStatus('loading');\r\n const start = Date.now();\r\n const res = await fetch(params.url, {\r\n cache: 'no-cache',\r\n credentials: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n method: 'get',\r\n signal,\r\n });\r\n const resData = await res.json();\r\n setData(undefined);\r\n const end = Date.now();\r\n const diff = end - start;\r\n /** Ensure at least 500ms is taken to return results to prevent loader flash */\r\n if (diff < minTime) {\r\n await sleep(minTime - diff);\r\n }\r\n setData(resData);\r\n setStatus('complete');\r\n }\r\n }, [params.url]);\r\n return { clear, data, status };\r\n}\r\n","import React from 'react';\r\nimport debounce from 'lodash/debounce';\r\nexport const useDebounce = (callback, value) => {\r\n const ref = React.useRef();\r\n React.useEffect(() => {\r\n ref.current = callback;\r\n }, [callback]);\r\n const debouncedCallback = React.useMemo(() => {\r\n const func = () => {\r\n ref.current?.();\r\n };\r\n return debounce(func, value);\r\n }, []);\r\n return debouncedCallback;\r\n};\r\n","import * as React from 'react';\r\nimport { useForm as useReactHookForm, } from 'react-hook-form';\r\nexport const validateNotWhitespaceOnly = (value, error) => typeof value === 'string' ? value.trim().length > 0 || error : true;\r\nexport function useForm(params) {\r\n const refContainer = React.useRef(null);\r\n const useReactHookFormReturn = useReactHookForm({\r\n defaultValues: params.defaultValues,\r\n mode: 'onSubmit',\r\n reValidateMode: 'onChange',\r\n shouldUseNativeValidation: false,\r\n });\r\n const { handleSubmit } = useReactHookFormReturn;\r\n const [status, setStatus] = React.useState('initial');\r\n const [confirmationMessage, setConfirmationMessage] = React.useState('');\r\n const [serverErrors, setServerErrors] = React.useState([]);\r\n const onSubmit = async (formData, event) => {\r\n let res;\r\n if (params.mode === 'multipart') {\r\n const formData = new FormData(event?.target);\r\n // We have to create the FormData instance before changing status\r\n // as disabled fields/fieldsets are not included otherwise.\r\n setStatus('pending');\r\n res = await fetch(params.endpoint, {\r\n body: formData,\r\n method: 'POST',\r\n });\r\n }\r\n else {\r\n setStatus('pending');\r\n res = await fetch(params.endpoint, {\r\n body: JSON.stringify(formData),\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n // If we're showing an error message then change to error.\r\n if (!res.ok) {\r\n setStatus('error');\r\n setServerErrors([`Something went wrong.`]);\r\n if (!params.disableSuccessScroll) {\r\n // Add a delay to ensure the errors are rendered before scrolling\r\n setTimeout(() => {\r\n refContainer.current?.scrollIntoView({ behavior: 'auto', block: 'start' });\r\n }, 375);\r\n }\r\n if (params.initialPostSubmit) {\r\n setTimeout(() => {\r\n setStatus('initial');\r\n }, 3000);\r\n }\r\n return;\r\n }\r\n const resData = (await res.json());\r\n // If we're showing an error message then change to error.\r\n if (resData.errors?.length) {\r\n setStatus('error');\r\n setServerErrors(resData.errors);\r\n // Add a delay to ensure the errors are rendered before scrolling\r\n setTimeout(() => {\r\n refContainer.current?.scrollIntoView({ behavior: 'auto', block: 'start' });\r\n }, 375);\r\n if (params.initialPostSubmit) {\r\n setTimeout(() => {\r\n setStatus('initial');\r\n }, 3000);\r\n }\r\n return;\r\n }\r\n // At this stage we consider the submission successful so we\r\n // can trigger the optional callback.\r\n if (params.postSubmitCallback) {\r\n await params.postSubmitCallback();\r\n }\r\n // If we're showing a message then change to fulfilled.\r\n if (resData.message) {\r\n setStatus(params.initialPostSubmit ? 'initial' : 'fulfilled');\r\n setConfirmationMessage(resData.message);\r\n if (!params.disableSuccessScroll) {\r\n // Add a delay to ensure the messag ise rendered before scrolling\r\n setTimeout(() => {\r\n refContainer.current?.scrollIntoView({ behavior: 'auto', block: 'start' });\r\n }, 375);\r\n }\r\n return;\r\n }\r\n // If we're redirecting leave status pending.\r\n if (resData.redirect) {\r\n window.location.href = resData.redirect;\r\n return;\r\n }\r\n };\r\n return {\r\n confirmationMessage,\r\n refContainer,\r\n serverErrors,\r\n status,\r\n onSubmit: handleSubmit(onSubmit),\r\n useReactHookFormReturn,\r\n };\r\n}\r\n","import * as React from 'react';\r\nexport const useOutsideClick = (callback) => {\r\n const ref = React.useRef(null);\r\n React.useEffect(() => {\r\n const handleClick = (event) => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n callback();\r\n }\r\n };\r\n document.addEventListener('click', handleClick, true);\r\n document.addEventListener('focus', handleClick, true);\r\n return () => {\r\n document.removeEventListener('click', handleClick, true);\r\n document.removeEventListener('focus', handleClick, true);\r\n };\r\n }, [ref]);\r\n return ref;\r\n};\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from } from '@helpers/media';\r\nimport scrollbars from '@helpers/scrollbars';\r\nimport srOnly from '@helpers/srOnly';\r\nimport { link } from '@helpers/typography';\r\nimport { rgba } from 'polished';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n ${transition('opacity')};\r\n\r\n --textLinkColour: ${brand.global.black};\r\n\r\n position: relative;\r\n\r\n &:has(input[aria-disabled='true'], button[aria-disabled='true']) {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n`;\r\nconst Form = styled.form `\r\n ${transition('border-color')};\r\n\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n border-radius: 50px;\r\n border: 1px solid ${rgba(brand.grey.dark, 0.6)};\r\n width: 100%;\r\n padding: 0 12px;\r\n height: ${fluid(36, 50)};\r\n\r\n &:focus-within {\r\n border-color: ${brand.grey.dark};\r\n }\r\n\r\n &:has(span) {\r\n border-color: ${brand.validation.invalid} !important;\r\n }\r\n`;\r\nconst Label = styled.label `\r\n ${srOnly};\r\n`;\r\nconst Input = styled.input `\r\n ${fonts.lato.regular};\r\n\r\n border: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n font-size: 14px;\r\n line-height: 22px;\r\n flex: 1;\r\n color: ${brand.global.black};\r\n\r\n &::placeholder {\r\n color: ${brand.grey.dark};\r\n }\r\n`;\r\nconst Button = styled.button `\r\n ${ButtonReset};\r\n ${transition('transform')};\r\n\r\n order: -1;\r\n border-radius: 50%;\r\n\r\n svg {\r\n display: block;\r\n width: 24px;\r\n }\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 1px;\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n transform: scale(1.1);\r\n }\r\n`;\r\nconst Suggestions = styled.ul `\r\n ${transition('opacity, transform')};\r\n\r\n position: absolute;\r\n top: calc(100% + 16px);\r\n left: 0;\r\n background-color: ${brand.primary.grey};\r\n box-shadow: 0px 4px 13px 0px rgba(0, 0, 0, 0.25);\r\n display: flex;\r\n flex-direction: column;\r\n gap: 23px;\r\n padding: 12px;\r\n border-radius: 10px;\r\n min-width: 252px;\r\n max-height: 500px;\r\n overflow: auto;\r\n\r\n ${Container}:has(${Input}[aria-expanded='false']) & {\r\n opacity: 0;\r\n pointer-events: none;\r\n transform: translateY(-20px);\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n ${scrollbars};\r\n }\r\n`;\r\nconst AutosuggestOption = styled.button `\r\n ${ButtonReset};\r\n ${fonts.lato.semiBold};\r\n ${link};\r\n\r\n font-size: 16px;\r\n line-height: 32px;\r\n`;\r\nconst SearchboxStyles = {\r\n Container,\r\n Button,\r\n Label,\r\n Input,\r\n AutosuggestOption,\r\n Form,\r\n Suggestions,\r\n};\r\nexport default SearchboxStyles;\r\n","import { API_URLS } from '@helpers/api';\r\nimport { InterfaceIcon, getSvgIcon } from '@helpers/icons';\r\nimport { clamp } from '@helpers/utils';\r\nimport { useApi } from '@hooks/useApi';\r\nimport { useDebounce } from '@hooks/useDebounce';\r\nimport { useForm, validateNotWhitespaceOnly } from '@hooks/useForm';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport qs from 'qs';\r\nimport * as React from 'react';\r\nimport S from './Searchbox.styles';\r\nconst Searchbox = (props) => {\r\n const { onSubmit, useReactHookFormReturn: { watch, register, setValue, setFocus, formState: { errors }, }, status, } = useForm({\r\n defaultValues: { searchTerm: props.searchTerm },\r\n endpoint: API_URLS.searchSubmit,\r\n mode: 'json',\r\n });\r\n const { searchTerm: searchValue } = watch();\r\n const [searchTerm, setSearchTerm] = React.useState(props.searchTerm ?? '');\r\n const [showSuggestions, setShowSuggestions] = React.useState(false);\r\n const [selectedTerm, setSelectedTerm] = React.useState('');\r\n React.useEffect(() => {\r\n debouncedUpdateSearchTerm();\r\n }, [searchValue]);\r\n const updateSearchTerm = () => {\r\n if (searchValue &&\r\n searchValue.length > 1 &&\r\n searchTerm !== searchValue &&\r\n searchValue !== selectedTerm) {\r\n setSearchTerm(searchValue);\r\n setShowSuggestions(true);\r\n }\r\n else {\r\n setShowSuggestions(false);\r\n }\r\n };\r\n const debouncedUpdateSearchTerm = useDebounce(updateSearchTerm, 200);\r\n React.useEffect(() => {\r\n setSearchTerm(props.searchTerm ?? '');\r\n setValue('searchTerm', props.searchTerm ?? '');\r\n }, [props.searchTerm]);\r\n const result = useApi({\r\n url: `${API_URLS.searchTypeahead}?${qs.stringify({\r\n searchTerm,\r\n cultureCode: props.cultureCode,\r\n })}`,\r\n validate: () => !props.noTypeahead && !!searchTerm && searchTerm !== props.searchTerm,\r\n });\r\n const itemsRef = React.useRef([]);\r\n const containerRef = useOutsideClick(() => setShowSuggestions(false));\r\n return (React.createElement(S.Container, { ref: containerRef },\r\n React.createElement(S.Form, { onSubmit: props.onSubmit !== undefined\r\n ? (event) => {\r\n event.preventDefault();\r\n props.onSubmit?.(searchTerm);\r\n showSuggestions && setShowSuggestions(false);\r\n }\r\n : props.submitUrl\r\n ? (event) => {\r\n event.preventDefault();\r\n window.location.href = `${props.submitUrl}?${qs.stringify({\r\n searchTerm: searchTerm,\r\n cultureCode: props.cultureCode,\r\n })}`;\r\n }\r\n : onSubmit },\r\n React.createElement(S.Label, { id: `${props.idPrefix ?? ''}-searchbox-label` }, props.label),\r\n React.createElement(S.Input, { type: \"search\", placeholder: props.placeholder, role: \"combobox\", \"aria-autocomplete\": \"list\", \"aria-expanded\": showSuggestions && !!result.data && result.data.suggestions.length > 0, \"aria-controls\": `${props.idPrefix ?? ''}-typeahead-listbox`, \"aria-labelledby\": `${props.idPrefix ?? ''}-searchbox-label`, ...register('searchTerm', {\r\n required: props.translations?.['global.search.validation'] ?? '',\r\n validate: (value) => validateNotWhitespaceOnly(value, props.translations?.['global.search.validation'] ?? ''),\r\n }), \"aria-invalid\": !!errors.searchTerm, \"aria-errormessage\": `${props.idPrefix ?? ''}-searchbox-error`, onKeyDown: (event) => {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n if (itemsRef.current.length > 0) {\r\n itemsRef.current[0]?.focus();\r\n }\r\n break;\r\n case 'Escape':\r\n setShowSuggestions(false);\r\n break;\r\n }\r\n }, \"aria-disabled\": status === 'pending', autoComplete: \"off\" }),\r\n errors.searchTerm && React.createElement(S.Label, { id: `${props.idPrefix ?? ''}-searchbox-error`, as: \"span\" }),\r\n React.createElement(S.Button, { type: \"submit\", \"aria-label\": props.buttonLabel, \"aria-disabled\": status === 'pending' }, getSvgIcon(InterfaceIcon.Search))),\r\n React.createElement(S.Suggestions, { id: `${props.idPrefix ?? ''}-typeahead-listbox`, \"aria-hidden\": !result.data || result.data.suggestions.length === 0, tabIndex: showSuggestions ? -1 : undefined }, !!result.data && (React.createElement(React.Fragment, null, result.data.suggestions.map((suggestion, i) => (React.createElement(\"li\", { key: suggestion.id }, suggestion.url !== undefined ? (React.createElement(S.AutosuggestOption, { ref: (el) => (itemsRef.current[i] = el), as: \"a\", href: suggestion.url, onKeyDown: (e) => onKeyPress(e, i, (result.data?.suggestions).length - 1), tabIndex: showSuggestions ? -1 : undefined }, suggestion.value)) : (React.createElement(S.AutosuggestOption, { ref: (el) => (itemsRef.current[i] = el), onClick: (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setSelectedTerm(suggestion.value);\r\n setValue('searchTerm', suggestion.value);\r\n }, onKeyDown: (e) => onKeyPress(e, i, (result.data?.suggestions).length - 1), tabIndex: showSuggestions ? -1 : undefined }, suggestion.value))))))))));\r\n function onKeyPress(event, i, maxIndex) {\r\n const nextIndex = i === maxIndex ? 0 : clamp(i + 1, maxIndex);\r\n const prevIndex = i === 0 ? maxIndex : clamp(i - 1, maxIndex);\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[nextIndex]?.focus();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n itemsRef.current[prevIndex]?.focus();\r\n break;\r\n case 'Escape':\r\n setShowSuggestions(false);\r\n setFocus('searchTerm');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n};\r\nexport default Searchbox;\r\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgBrcWhite = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 380 172\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M354.948 126.552c-6.081 7.384-14.9 12.032-24.718 12.032-18.34 0-33.205-16.208-33.205-36.204 0-19.997 14.865-36.204 33.205-36.204 9.818 0 18.637 4.647 24.718 12.032L380 53.18c-12.883-12.616-30.686-20.422-50.359-20.422-17.626 0-36.547 6.745-49.83 19.92 3.432 2.792 26.51 36.44-20.469 59.168 17.846 15.182 34.724 60.072 70.303 60.158 19.678 0 37.476-7.806 50.36-20.422l-25.053-25.027-.004-.004ZM250.957 77.306c0-31.093-36.577-31.093-36.577-31.093h-7.685v62.172h8.691s35.571.013 35.571-31.08ZM206.695 119.386v50.363h63.389c-32.514-17.526-35.73-50.363-63.389-50.363ZM107.706 74.028c0-8.991-7.362-16.345-16.362-16.345H78.267v32.69h13.077c9 0 16.362-7.354 16.362-16.345ZM97.304 114.644H78.267v35.602h19.037c9.533 0 17.334-7.792 17.334-17.316v-.966c0-9.524-7.801-17.316-17.334-17.316v-.004Z\",\n fill: \"#fff\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M159.815 36.342 54.191 0 0 100.365l45.156 36.698V34.989h58.946c19.394 0 35.262 15.85 35.262 35.224 0 12.286-6.386 23.15-16.001 29.456 14.599 4.712 25.237 18.446 25.237 34.546v2.028c0 14.957-9.181 27.879-22.193 33.416h28.605c7.869 0 14.306-6.431 14.306-14.292V49.783c0-6.177-3.986-11.461-9.507-13.446l.004.005Z\",\n fill: \"#fff\"\n})));\nexport default SvgBrcWhite;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNircWhite = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 217 101\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M203.746 66.325c-3.01 3.664-7.377 5.97-12.237 5.97-9.079 0-16.438-8.041-16.438-17.962 0-9.92 7.359-17.962 16.438-17.962 4.86 0 9.227 2.306 12.237 5.97l12.402-12.417c-6.378-6.26-15.191-10.131-24.93-10.131-8.726 0-18.093 3.346-24.669 9.882 1.699 1.385 13.124 18.079-10.133 29.355 8.835 7.532 17.19 29.803 34.804 29.846 9.741 0 18.552-3.873 24.93-10.132l-12.402-12.417-.002-.002ZM152.265 41.895c0-15.425-18.108-15.425-18.108-15.425h-3.804v30.845h4.302s17.61.006 17.61-15.42ZM130.353 62.77v24.987h31.381c-16.096-8.696-17.688-24.987-31.381-24.987ZM107.349 21.61 51.885 0 0 25.566l23.28 33.017V24.289h11.162L63.304 60.69v-36.4h14.302v61.98h-11.51L37.581 50.826V86.27H23.353L18.902 101l82.846-12.176s10.033-.456 10.3-8.318V28.264c0-3.058-1.967-5.671-4.697-6.651l-.002-.003Zm-6.499 64.657h-14.3v-61.98h14.3v61.98Z\",\n fill: \"#fff\"\n})));\nexport default SvgNircWhite;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgSrcWhite = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 223 101\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.916 68.361c-3.622 4.403-8.874 7.173-14.721 7.173-10.922 0-19.775-9.662-19.775-21.583 0-11.921 8.853-21.583 19.775-21.583 5.847 0 11.099 2.77 14.721 7.173l14.92-14.92c-7.673-7.521-18.275-12.175-29.991-12.175-10.498 0-21.766 4.02-29.676 11.875 2.043 1.665 15.788 21.724-12.19 35.274 10.628 9.05 20.679 35.812 41.868 35.863 11.719 0 22.319-4.653 29.991-12.174l-14.92-14.92-.002-.003ZM145.985 39.003c0-18.536-21.783-18.536-21.783-18.536h-4.577v37.064h5.176s21.184.008 21.184-18.528ZM119.625 64.09v30.024h37.751c-19.363-10.449-21.279-30.024-37.751-30.024ZM91.832 11.995 45.832 0l3.712 15.401c3.203-.942 6.579-1.418 10.128-1.418 2.715 0 5.355.25 7.928.75 2.572.5 5.017 1.142 7.338 1.928 2.32.787 4.517 1.68 6.589 2.679 2.072 1.001 3.928 2 5.57 2.999L79.49 36.908c-.287-.284-1.07-.82-2.356-1.606-1.286-.786-2.894-1.605-4.822-2.463-1.929-.858-4.036-1.606-6.32-2.249a25.228 25.228 0 0 0-6.856-.963c-3 0-5.304.536-6.91 1.606-1.605 1.07-2.41 2.643-2.41 4.712 0 1.286.356 2.356 1.071 3.214.715.858 1.731 1.626 3.053 2.305 1.321.678 2.963 1.303 4.927 1.874 1.964.574 4.23 1.217 6.802 1.929 3.641 1.001 6.927 2.09 9.854 3.267 2.927 1.178 5.427 2.643 7.498 4.392a17.585 17.585 0 0 1 4.769 6.375c1.106 2.499 1.66 5.5 1.66 8.999 0 4.284-.805 7.91-2.413 10.873-1.606 2.963-3.731 5.358-6.374 7.179-2.643 1.82-5.696 3.142-9.158 3.964a46.152 46.152 0 0 1-10.661 1.232c-2.786 0-5.624-.216-8.518-.643a62.273 62.273 0 0 1-8.517-1.875 70.37 70.37 0 0 1-8.142-2.947c-2.642-1.142-5.073-2.464-7.285-3.965L36.096 66.8c.356.358 1.322 1.037 2.891 2.036 1.57 1.001 3.499 2 5.785 2.999 2.285 1.001 4.856 1.892 7.714 2.678a32.536 32.536 0 0 0 8.676 1.178c6.213 0 9.32-1.892 9.32-5.677 0-1.427-.466-2.607-1.394-3.534-.93-.927-2.215-1.767-3.856-2.517-1.644-.75-3.573-1.448-5.785-2.09a995.115 995.115 0 0 1-7.286-2.144c-3.501-1.07-6.536-2.23-9.107-3.483-2.571-1.25-4.715-2.694-6.428-4.338-1.713-1.641-2.983-3.536-3.803-5.677-.822-2.144-1.232-4.64-1.232-7.499 0-1.18.075-2.317.205-3.416l-23.85 3.29L0 62.554 24.77 101l61.922-6.226s10.707-1.121 10.91-9.76V20.16c0-3.751-2.418-6.957-5.767-8.161l-.003-.003Z\",\n fill: \"#fff\"\n})));\nexport default SvgSrcWhite;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgWrcWhite = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 191 101\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M178.443 62.57c-2.95 3.586-7.228 5.843-11.991 5.843-8.896 0-16.108-7.87-16.108-17.581 0-9.71 7.212-17.581 16.108-17.581 4.763 0 9.041 2.257 11.991 5.843l12.153-12.153c-6.25-6.127-14.886-9.917-24.429-9.917-8.551 0-17.729 3.275-24.173 9.673 1.665 1.356 12.86 17.695-9.929 28.732 8.657 7.372 16.844 29.17 34.104 29.213 9.545 0 18.179-3.79 24.429-9.917l-12.153-12.153-.002-.002ZM127.995 38.658c0-15.098-17.744-15.098-17.744-15.098h-3.727v30.19h4.215s17.256.007 17.256-15.092ZM106.524 59.09v24.457h30.749c-15.772-8.511-17.332-24.457-30.749-24.457ZM25.727 61.247 37.26 22.848h14.431l11.536 38.4 11.108-38.4h13.859a6.988 6.988 0 0 0-4.074-3.878L38.249 0l-23.63 22.85 11.108 38.4v-.003Z\",\n fill: \"#fff\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.916 83.698H55.678L44.476 48.864 33.274 83.698H18.036L2.62 37.062 0 101l79.933-16.584s8.518-.747 8.785-7.822v-46.75L70.916 83.701v-.002Z\",\n fill: \"#fff\"\n})));\nexport default SvgWrcWhite;","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { siteWide } from '@helpers/grid';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { h2, link, paragraphRegular } from '@helpers/typography';\r\nimport ButtonStyles from '@stories/Components/Buttons/Button/Button.styles';\r\nimport RegionSelectorStyles from '@stories/Components/Misc/RegionSelector/RegionSelector.styles';\r\nimport SocialLinksStyles from '@stories/Components/Misc/SocialLinks/SocialLinks.styles';\r\nimport { m } from 'framer-motion';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.footer `\r\n position: relative;\r\n z-index: 1;\r\n overflow: hidden;\r\n\r\n @media print {\r\n display: none;\r\n }\r\n\r\n &::before,\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n z-index: -1;\r\n }\r\n\r\n &::before {\r\n ${transition('transform', 0.5)};\r\n\r\n bottom: 0;\r\n background-color: ${brand.primary.purple.light};\r\n width: 300%;\r\n aspect-ratio: 1;\r\n transform: translate(-25%, 0%) rotate(40deg);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n width: 1800px;\r\n border-top-right-radius: 120px;\r\n transform: translate(-27.5%, -80%) rotate(40deg) skew(0deg, 10deg);\r\n transform-origin: bottom left;\r\n bottom: auto;\r\n top: 0;\r\n right: 0;\r\n left: auto;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n transform: translate(-35%, -65%) rotate(40deg) skew(0deg, 5deg);\r\n }\r\n }\r\n\r\n &::after {\r\n ${transition('transform', 0.65)};\r\n\r\n background-color: ${brand.primary.blue.light};\r\n mix-blend-mode: multiply;\r\n bottom: 0;\r\n width: 100%;\r\n aspect-ratio: 1;\r\n transform: translate(-66%, 66%) rotate(40deg);\r\n transition-delay: 500ms;\r\n border-radius: 60px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n right: 0;\r\n left: auto;\r\n transform: translate(50%, 40%) rotate(40deg);\r\n aspect-ratio: 0.9;\r\n width: 850px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n transform: translate(55%, 57.5%) rotate(40deg);\r\n }\r\n }\r\n\r\n &[data-animate='false'] {\r\n &::before {\r\n transform: translate(-25%, 0%) rotate(0deg);\r\n }\r\n\r\n &::after {\r\n transform: translate(50%, 125%) rotate(40deg);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n transform: translate(0%, 125%) rotate(40deg);\r\n }\r\n }\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n ${siteWide};\r\n\r\n --logoWidth: ${fluid(88, 167)};\r\n\r\n display: grid;\r\n color: ${brand.global.white};\r\n padding-top: ${fluid(40, 44)};\r\n padding-bottom: ${fluid(28, 32)};\r\n grid-template-columns: min-content auto min-content;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-columns: repeat(6, 1fr);\r\n column-gap: ${fluid(16, 20)};\r\n }\r\n\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n z-index: -1;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 50%;\r\n background-color: ${brand.primary.purple.light};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n height: 100%;\r\n width: 25%;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n width: 67%;\r\n }\r\n }\r\n\r\n ${ButtonStyles.Container}[data-scroll] {\r\n --bgColour: ${brand.primary.blue.dark};\r\n --bgColourActive: var(--bgColourHover);\r\n --bgColourDisabled: ${brand.grey.light};\r\n --bgColourHover: ${brand.primary.blue.light};\r\n --borderColorActive: var(--bgColourActive);\r\n --borderColorHover: var(--bgColourHover);\r\n --borderColour: var(--bgColour);\r\n --borderColourDisabled: var(--bgColourDisabled);\r\n --buttonHeight: ${fluid(48, 80)};\r\n --colourText: ${brand.global.white};\r\n --colourTextDisabled: ${brand.grey.dark};\r\n --colourTextHover: ${brand.primary.blue.dark};\r\n\r\n grid-column: 3;\r\n grid-row: 1;\r\n margin-left: auto;\r\n\r\n ${ButtonStyles.IconWrapper} {\r\n transform: rotate(-90deg);\r\n }\r\n\r\n &:hover,\r\n &:focus-visible,\r\n &.focus-ring {\r\n ${ButtonStyles.IconWrapper} {\r\n transform: translateY(-4px) rotate(-90deg);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 6 / span 1;\r\n }\r\n }\r\n\r\n ${RegionSelectorStyles.Container} {\r\n grid-column: 1 / span 3;\r\n color: ${brand.global.white};\r\n margin-bottom: 40px;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n ${RegionSelectorStyles.Button} {\r\n justify-content: center;\r\n width: 100%;\r\n }\r\n\r\n ${RegionSelectorStyles.Regions} {\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n &:has(${RegionSelectorStyles.Button}[aria-expanded='false']) ${RegionSelectorStyles.Regions} {\r\n transform: translate(-50%, 20px);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-row: 2;\r\n margin-bottom: ${fluid(28, 34)};\r\n }\r\n }\r\n`;\r\nconst Logo = styled.a `\r\n display: block;\r\n width: var(--logoWidth);\r\n flex: 0 0 var(--logoWidth);\r\n grid-column: 1;\r\n grid-row: 1;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-bottom: ${fluid(24, 32)};\r\n }\r\n`;\r\nconst Strapline = styled.p `\r\n ${fonts.lato.bold};\r\n\r\n grid-column: 2 / span 1;\r\n grid-row: 1;\r\n font-size: ${fluid(13, 20)};\r\n line-height: ${fluid(19, 28)};\r\n margin: auto 16px auto 24px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin: 0;\r\n }\r\n`;\r\nconst StraplineLarge = styled.p `\r\n ${h2};\r\n\r\n grid-column: 1 / span 3;\r\n margin: 24px 0;\r\n\r\n > span {\r\n ${transition('background-size, color', 0.5)};\r\n\r\n display: inline;\r\n background-image: linear-gradient(\r\n to right,\r\n ${brand.primary.blue.dark},\r\n ${brand.primary.blue.dark}\r\n );\r\n background-repeat: no-repeat;\r\n background-size: 100% 100%;\r\n transition-delay: 1s;\r\n padding: 0 8px;\r\n margin-left: -8px;\r\n\r\n ${Container}[data-animate='false'] & {\r\n background-size: 0% 100%;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 3 / span 2;\r\n margin: 0;\r\n }\r\n`;\r\nconst ButtonWrapper = styled.div `\r\n grid-column: 1 / span 3;\r\n display: flex;\r\n gap: ${fluid(8, 32)};\r\n flex-wrap: wrap;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 4 / span 2;\r\n grid-row: 6;\r\n margin: auto 0 auto auto;\r\n }\r\n`;\r\nconst LinkListContainer = styled.div `\r\n grid-column: 1 / span 3;\r\n margin: 55px 0 40px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 1 / span 6;\r\n display: grid;\r\n grid-template-columns: repeat(4, 1fr);\r\n gap: ${fluid(16, 20)};\r\n margin: ${fluid(34, 46)} 0 ${fluid(36, 52)};\r\n\r\n > div[data-long='true'] {\r\n grid-row: span 2;\r\n }\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n grid-column: 1 / span 5;\r\n grid-template-columns: repeat(5, 1fr);\r\n }\r\n`;\r\nconst footerLinkStyles = css `\r\n ${link};\r\n\r\n --textLinkColour: ${brand.global.white};\r\n`;\r\nconst LinkListTitle = styled.h2 `\r\n ${fonts.lato.bold};\r\n\r\n font-size: ${fluid(15, 20)};\r\n line-height: 1.2;\r\n`;\r\nconst LinkListHeader = styled.button `\r\n ${ButtonReset};\r\n\r\n display: block;\r\n color: currentColor;\r\n margin: 0 0 ${fluid(15, 25)};\r\n\r\n h2 {\r\n ${fonts.lato.bold};\r\n\r\n font-size: ${fluid(15, 20)};\r\n line-height: 1.2;\r\n }\r\n\r\n button& {\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n text-align: left;\r\n gap: 24px;\r\n justify-content: space-between;\r\n padding: 0 0 15px;\r\n border-bottom: 1px solid ${brand.primary.blue.dark};\r\n\r\n &:focus-visible {\r\n outline: auto;\r\n outline-offset: 5px;\r\n outline-width: 1px;\r\n }\r\n\r\n &[data-open='true'] svg {\r\n transform: rotate(180deg);\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform', 0.15)};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n }\r\n\r\n a& {\r\n ${footerLinkStyles};\r\n }\r\n\r\n a&,\r\n span& {\r\n @media ${until(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n }\r\n\r\n svg {\r\n ${transition('transform', 0.25)};\r\n\r\n display: block;\r\n width: 24px;\r\n }\r\n`;\r\nconst LinkList = styled(m.ul) `\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${fluid(16, 24)};\r\n overflow: hidden;\r\n\r\n li {\r\n ${fonts.lato.regular};\r\n\r\n font-size: ${fluid(14, 16)};\r\n line-height: ${fluid(18, 20)};\r\n }\r\n\r\n a {\r\n ${footerLinkStyles};\r\n\r\n &:has(svg) {\r\n line-height: 24px;\r\n }\r\n\r\n svg {\r\n display: inline-block;\r\n width: 24px;\r\n margin: 0 8px -8px 0;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n height: auto !important;\r\n padding-bottom: 3px;\r\n margin-bottom: 0 !important;\r\n visibility: visible !important;\r\n\r\n li[data-mobile-only] {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst SocialLinks = styled.div `\r\n grid-column: 1 / span 3;\r\n margin-bottom: 40px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-row: 6;\r\n grid-column: span 1;\r\n margin-bottom: 0;\r\n }\r\n\r\n ${SocialLinksStyles.Container} {\r\n --fgColour: currentColor;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n justify-content: center;\r\n }\r\n }\r\n`;\r\nconst GroupTitle = styled.h2 `\r\n ${paragraphRegular};\r\n\r\n font-weight: 700;\r\n margin-bottom: ${fluid(16, 18)};\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst Enquiry = styled.div `\r\n display: none;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: block;\r\n grid-row: 6;\r\n grid-column: span 1;\r\n\r\n ${LinkList} {\r\n gap: 8px;\r\n }\r\n }\r\n`;\r\nconst Copyright = styled.div `\r\n ${fonts.lato.regular};\r\n\r\n grid-column: 1 / span 3;\r\n display: flex;\r\n flex-direction: column;\r\n font-size: ${fluid(12, 14)};\r\n line-height: ${fluid(16, 24)};\r\n gap: 24px;\r\n\r\n p {\r\n text-align: center;\r\n\r\n span {\r\n display: inline;\r\n\r\n &:not(:first-child)::before {\r\n content: '\\\\2022';\r\n margin: 0 2ch;\r\n }\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n max-width: 48ch;\r\n margin: 0 auto;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n text-align: left;\r\n }\r\n }\r\n\r\n ul {\r\n display: flex;\r\n justify-content: space-between;\r\n gap: 16px;\r\n\r\n a {\r\n ${footerLinkStyles};\r\n }\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n justify-content: center;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin-left: auto;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-row: 8;\r\n grid-column: 1 / span 5;\r\n margin-top: ${fluid(32, 40)};\r\n flex-direction: row;\r\n }\r\n`;\r\nconst Divider = styled.div `\r\n grid-column: 1 / span 5;\r\n height: 1px;\r\n background-color: ${brand.primary.purple.dark};\r\n\r\n &[data-first] {\r\n grid-row: 3;\r\n }\r\n\r\n &[data-second] {\r\n grid-row: 5;\r\n margin-bottom: ${fluid(14, 18)};\r\n }\r\n\r\n &[data-third] {\r\n grid-row: 7;\r\n margin-top: ${fluid(20, 24)};\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst FooterStyles = {\r\n Container,\r\n Inner,\r\n Logo,\r\n Strapline,\r\n StraplineLarge,\r\n ButtonWrapper,\r\n LinkListContainer,\r\n LinkListHeader,\r\n LinkList,\r\n Divider,\r\n SocialLinks,\r\n GroupTitle,\r\n Enquiry,\r\n Copyright,\r\n LinkListTitle,\r\n};\r\nexport default FooterStyles;\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { InterfaceIcon, getSvgIcon } from '@helpers/icons';\r\nimport { highlightTitleWords } from '@helpers/utils';\r\nimport { withMotion } from '@hoc/withMotion';\r\nimport { useInView } from '@hooks/useInView';\r\nimport SvgBRC from '@img/logos/brc-white.svg';\r\nimport SvgNIRC from '@img/logos/nirc-white.svg';\r\nimport SvgSRC from '@img/logos/src-white.svg';\r\nimport SvgWRC from '@img/logos/wrc-white.svg';\r\nimport Button, { LinkButton } from '@stories/Components/Buttons/Button/Button';\r\nimport RegionSelector from '@stories/Components/Misc/RegionSelector/RegionSelector';\r\nimport { BackgroundVariant } from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport SocialLinks from '@stories/Components/Misc/SocialLinks/SocialLinks';\r\nimport * as React from 'react';\r\nimport { Site } from '../Header/Header';\r\nimport S from './Footer.styles';\r\nconst Footer = (props) => {\r\n const [open, setOpen] = React.useState(-1);\r\n const [containerRef, inView] = useInView({ rootMargin }, false, props.pageContext?.isEditMode);\r\n const averageLinks = React.useMemo(() => props.linkSections.flatMap((s) => s.links).length / props.linkSections.length, [props.linkSections]);\r\n return (React.createElement(S.Container, { ref: containerRef, \"data-animate\": inView },\r\n React.createElement(S.Inner, null,\r\n React.createElement(S.Logo, { href: props.site.url, \"aria-label\": props.site.label }, renderLogo(props.site.type)),\r\n props.strapline1 && React.createElement(S.Strapline, null, props.strapline1),\r\n React.createElement(Button, { buttonType: \"primary\", iconOnly: true, \"data-scroll\": true, onClick: () => {\r\n window.scrollTo({ top: 0 });\r\n } }, props.translations?.['global.footer.scrollTop'] ?? ''),\r\n props.strapline2 && (React.createElement(S.StraplineLarge, { dangerouslySetInnerHTML: { __html: highlightTitleWords(props.strapline2) } })),\r\n props.buttons && props.buttons.length > 0 && (React.createElement(S.ButtonWrapper, { \"data-variant\": BackgroundVariant.Purple }, props.buttons.map((button, i) => (React.createElement(LinkButton, { key: `footer-button-${i}`, buttonType: button.buttonType ? button.buttonType : i === 0 ? 'secondary' : 'primary', href: button.url, target: button.target, icon: button.icon }, button.text))))),\r\n props.linkSections && props.linkSections.length > 0 ? (React.createElement(S.LinkListContainer, null, props.linkSections.map((group, i) => (React.createElement(\"div\", { key: `footer-links-${group.id}`, \"data-long\": group.links.length > averageLinks },\r\n React.createElement(S.LinkListHeader, { \"data-open\": open === i, onClick: () => {\r\n if (open === i) {\r\n setOpen(-1);\r\n }\r\n else {\r\n setOpen(i);\r\n }\r\n }, \"aria-controls\": `footer-links-${group.id}` },\r\n React.createElement(\"h2\", null, group.label.text),\r\n getSvgIcon(InterfaceIcon.Chevron)),\r\n React.createElement(S.LinkListTitle, null,\r\n React.createElement(S.LinkListHeader, { ...(!group.label.url\r\n ? { as: 'span' }\r\n : { as: 'a', href: group.label.url, target: group.label.url }) }, group.label.text)),\r\n React.createElement(S.LinkList, { id: `footer-links-${group.id}`, variants: {\r\n initial: {\r\n height: 0,\r\n marginBottom: 0,\r\n transitionEnd: { visibility: 'hidden' },\r\n },\r\n open: { height: 'auto', marginBottom: 24, visibility: 'visible' },\r\n }, animate: open === i ? 'open' : 'initial' },\r\n group.label.url && (React.createElement(\"li\", { \"data-mobile-only\": true },\r\n React.createElement(\"a\", { href: group.label.url, target: group.label.target }, group.label.text))),\r\n group.links.map((link, j) => (React.createElement(\"li\", { key: `footer-links-${group.id}-${j}` },\r\n React.createElement(\"a\", { href: link.url, target: link.target }, link.text)))))))))) : null,\r\n React.createElement(RegionSelector, { ...props.regionSelector }),\r\n props.socialLinks && props.socialLinks.length > 0 && (React.createElement(S.SocialLinks, null,\r\n React.createElement(S.GroupTitle, null, props.translations?.['global.footer.socialLinks'] ?? ''),\r\n React.createElement(SocialLinks, { items: props.socialLinks }))),\r\n props.enquiries && props.enquiries.length > 0 && (React.createElement(React.Fragment, null, props.enquiries.map((enquiry, i) => (React.createElement(S.Enquiry, { key: `footer-enquiries-${i}` },\r\n React.createElement(S.GroupTitle, null, enquiry.heading),\r\n React.createElement(S.LinkList, null, enquiry.links.map((link, j) => (React.createElement(\"li\", { key: `footer-enquiries-${i}-${j}` },\r\n React.createElement(\"a\", { href: `${link.icon === InterfaceIcon.Mail\r\n ? 'mailto:'\r\n : link.icon === InterfaceIcon.Phone\r\n ? 'tel:'\r\n : ''}${link.url}`, target: link.target },\r\n getSvgIcon(link.icon),\r\n link.text)))))))))),\r\n (props.copyrightText || props.legalLinks) && (React.createElement(S.Copyright, null,\r\n props.copyrightText && props.copyrightText.length > 0 && (React.createElement(\"p\", null, props.copyrightText.map((cr, i) => (React.createElement(\"span\", { key: `footer-copyright-${i}` }, cr))))),\r\n props.legalLinks && props.legalLinks.length > 0 && (React.createElement(\"ul\", null, props.legalLinks.map((link, i) => (React.createElement(\"li\", { key: `footer-legal-links-${i}` },\r\n React.createElement(\"a\", { href: link.url, target: link.target }, link.text)))))))),\r\n React.createElement(S.Divider, { role: \"separator\", \"data-first\": true }),\r\n React.createElement(S.Divider, { role: \"separator\", \"data-second\": true }),\r\n React.createElement(S.Divider, { role: \"separator\", \"data-third\": true }))));\r\n function renderLogo(site) {\r\n switch (site) {\r\n case Site.BRC:\r\n return React.createElement(SvgBRC, null);\r\n case Site.NIRC:\r\n return React.createElement(SvgNIRC, null);\r\n case Site.SRC:\r\n return React.createElement(SvgSRC, null);\r\n case Site.WRC:\r\n return React.createElement(SvgWRC, null);\r\n }\r\n }\r\n};\r\nexport default withMotion(Footer);\r\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n"],"names":["API_URLS","brandCardsListing","contentCardsListing","searchSubmit","searchTypeahead","savePage","signIn","forgottenPassword","resetPassword","signUp","checkCompanyName","communities","myAccount","newsletters","sleep","ms","Promise","resolve","setTimeout","clamp","value","max","Math","min","highlightTitleWords","title","replaceAll","withMotion","WrappedComponent","displayName","name","ComponentWithMotion","props","React","LazyMotion","features","domAnimation","strict","useApi","params","refAbortController","isFirstMount","useFirstMountState","data","setData","initialData","status","setStatus","validate","current","AbortController","async","signal","start","Date","now","res","fetch","url","cache","credentials","headers","Accept","method","resData","json","undefined","diff","doAsync","_refAbortController$c","abort","clear","useDebounce","callback","ref","debounce","func","_ref$current","call","validateNotWhitespaceOnly","error","trim","length","useForm","refContainer","useReactHookFormReturn","useReactHookForm","defaultValues","mode","reValidateMode","shouldUseNativeValidation","handleSubmit","confirmationMessage","setConfirmationMessage","serverErrors","setServerErrors","onSubmit","formData","event","_resData$errors","FormData","target","endpoint","body","JSON","stringify","ok","disableSuccessScroll","_refContainer$current","scrollIntoView","behavior","block","initialPostSubmit","errors","_refContainer$current2","postSubmitCallback","message","_refContainer$current3","redirect","window","location","href","useOutsideClick","handleClick","contains","document","addEventListener","removeEventListener","Container","styled","div","withConfig","componentId","transition","brand","global","black","Form","form","rgba","grey","dark","fluid","validation","invalid","Label","label","srOnly","Input","input","fonts","lato","regular","Button","button","ButtonReset","Suggestions","ul","primary","from","Device","DesktopSmall","scrollbars","AutosuggestOption","semiBold","link","_props$searchTerm","_props$idPrefix","_props$idPrefix2","_props$idPrefix3","_props$translations$g","_props$translations","_props$idPrefix4","_props$idPrefix5","_props$idPrefix6","watch","register","setValue","setFocus","formState","searchTerm","searchValue","setSearchTerm","showSuggestions","setShowSuggestions","selectedTerm","setSelectedTerm","debouncedUpdateSearchTerm","updateSearchTerm","_props$searchTerm2","_props$searchTerm3","result","qs","cultureCode","noTypeahead","itemsRef","containerRef","S","_props$onSubmit","preventDefault","submitUrl","id","idPrefix","type","placeholder","role","suggestions","required","translations","_props$translations$g2","_props$translations2","onKeyDown","key","_itemsRef$current$","focus","autoComplete","as","buttonLabel","getSvgIcon","InterfaceIcon","Search","tabIndex","map","suggestion","i","el","e","_result$data","onKeyPress","onClick","stopPropagation","_result$data2","maxIndex","_itemsRef$current$nex","_itemsRef$current$pre","nextIndex","prevIndex","_path","_path2","_extends","Object","assign","bind","n","arguments","t","r","hasOwnProperty","apply","viewBox","fill","xmlns","d","footer","purple","light","TabletLarge","DesktopLarge","blue","Inner","siteWide","white","ButtonStyles","IconWrapper","RegionSelectorStyles","until","Regions","Logo","a","Strapline","p","bold","StraplineLarge","h2","ButtonWrapper","LinkListContainer","footerLinkStyles","css","LinkListTitle","LinkListHeader","LinkList","m","SocialLinks","SocialLinksStyles","GroupTitle","paragraphRegular","Enquiry","Copyright","MobileLarge","Divider","_props$pageContext","open","setOpen","inView","useInView","rootMargin","pageContext","isEditMode","averageLinks","linkSections","flatMap","s","links","site","Site","BRC","SvgBRC","NIRC","SvgNIRC","SRC","SvgSRC","WRC","SvgWRC","renderLogo","strapline1","buttonType","iconOnly","scrollTo","top","strapline2","dangerouslySetInnerHTML","__html","buttons","BackgroundVariant","Purple","LinkButton","icon","text","group","Chevron","variants","initial","height","marginBottom","transitionEnd","visibility","animate","j","RegionSelector","regionSelector","socialLinks","items","enquiries","enquiry","heading","Mail","Phone","copyrightText","legalLinks","cr","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","left","slice","right","Array","prototype","concat","decode","tokens","match","module","exports","encodedURI","TypeError","replace","replaceMap","exec","entries","keys","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","encode","options","encodeURIComponent","keysSorter","sort","b","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","parseBooleans","toLowerCase","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","item","test","arrayValue","parserForArrayFormat","create","param","k","reduce","Boolean","object","shouldFilter","skipNull","skipEmptyString","index","keyValueSep","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","string","separator","separatorIndex","str","charCodeAt","toString","toUpperCase"],"sourceRoot":""}