{"version":3,"file":"static/js/4790.d0a706b8.chunk.js","mappings":"yMAOaA,EAAW,wCAgCrB,OAhCqB,oEACtB,WAAmBC,EAAaC,GAAqB,4FACrBC,KAAKC,eAAeH,EAAI,MAAOC,GAAS,KAAD,EAAhD,OAAfG,EAAe,yBACdF,KAAKG,eAAeD,IAAgB,gDAC5C,qDAJqB,IAIrB,2DAED,WAAoBJ,EAAaC,GAAqB,4FACtBC,KAAKC,eAAeH,EAAK,OAAQC,GAAS,KAAD,EAAlD,OAAfG,EAAe,yBACdF,KAAKG,eAAeD,IAAgB,gDAC5C,qDALA,IAKA,mCAED,WACE,OAAO,IAAIE,eACb,GAAC,2BAED,WACE,OAAO,IAAIC,OACb,GAAC,qEAED,WAAqBP,EAAaQ,EAAgBP,GAAqB,4EAC9B,OAAvCA,GAAO,kBAAOA,GAAO,IAAEO,OAAQA,IAAQ,SAChBC,MAAMT,EAAKC,GAAS,KAAD,EAA5B,OAARS,EAAQ,yBAEPA,GAAQ,2CAChB,uDAPA,IAOA,qEAED,WAA8BA,GAAkB,yEAC1CA,EAASC,GAAG,CAAD,qBACP,IAAIC,EAAAA,EAAUF,GAAU,KAAD,mBAGlBG,EAAAA,EAAAA,GAAmBH,GAAU,KAAD,8EAC1C,mDARA,MAQA,EAhCqB,E,mLCAXI,EAA+B,+BAG/BC,GAAe,EAgBzBC,EAAAA,GAAAA,IAAc,EAGdC,EAAAA,GAAAA,MAAY,aAjBb,WAAoBC,EAAkCC,EAAwCC,GAA8E,IAAD,4BAAvJF,QAAAA,EAAwB,KAAUC,cAAAA,EAA8B,KAAUC,oBAAAA,EAA2E,KAajKC,aAAoB,MAAK,sCAyDzBC,qCAAwE,GAAG,KAiB3EC,6BAA8CC,QAAQC,WAtF5DC,EAAAA,EAAAA,IAAexB,MAEfA,KAAKyB,kBAELzB,KAAK0B,sBAAsB1B,KAAKgB,QAAQW,SAASC,SAAU,eAE3D5B,KAAKgB,QAAQa,iBAAiB,YAAY,WACxC,EAAKH,sBAAsB,EAAKV,QAAQW,SAASC,SAAU,YAC3D,EAAKE,wBACP,GACF,CAoOC,OApOA,sCAMD,SACuBC,GACrB/B,KAAKmB,aAAenB,KAAKgC,WACzBhC,KAAKgC,WAAaD,CACpB,GAAC,6BAGD,WACE/B,KAAKiC,eAAejC,KAAKkC,mCACtBlC,KAAKgB,QAAQW,SAASQ,OAASnC,KAAKgC,WAAWI,YAC9CpC,KAAKgB,QAAQqB,QAAQC,aAAa,KAAM,GAAItC,KAAKgC,WAAWI,WAElE,GAAC,oCAED,WACE,IAAMG,EAAevC,KAAKgC,WAAWQ,SAASC,UAAUL,WAAWM,cACnE1C,KAAKiB,cAAc0B,QAAQ/B,EAA8B2B,EAAaH,WACxE,GAAC,6CAED,WACE,IAAIQ,GAAmBC,EAAAA,EAAAA,IAAY7C,KAAKgB,QAAQW,SAASQ,MACzD,OAAOnC,KAAK8C,YAAY9C,KAAK+C,uBAAuBH,GACtD,GAAC,2CAED,SAAsCI,GACpChD,KAAKoB,qCAAqC6B,SAAQ,SAAAC,GAChD,IACEA,EAAQF,EAGV,CAFE,MAAOG,GACPC,QAAQC,MAAM,2CAA4CF,EAC5D,CACF,GACF,GAAC,oCACD,WAAiD,IAAD,OAC1CpB,EAAS/B,KAAKkC,kCAKlB,OAHAlC,KAAKsD,8BAA8BvB,GAG5B,IAAIT,SAAc,SAACC,EAASgC,GAEjCC,YAAW,WACT,IACE,EAAKvB,eAAeF,GACpBR,GAGF,CAFE,MAAO4B,GACPI,EAAOJ,EACT,CACF,GAAG,EACL,GAEF,GAAC,sCAGD,SAAyBD,GACvBlD,KAAKoB,qCAAqCqC,KAAKP,EACjD,GAAC,iCAGD,SAA4BQ,GAQ1B,OALGC,EAAAA,EAAAA,IAAaD,GACLE,QAAQ5D,KAAKgB,QAAQW,SAASQ,OAASuB,GAEvCE,QAAQF,IAAW1D,KAAKgB,QAAQW,SAASC,SAAW5B,KAAKgB,QAAQW,SAASkC,OAAS7D,KAAKgB,QAAQW,SAASmC,KAGtH,GAAC,gCAGD,SAA2BhE,EAAaiE,GAA+D,IAAD,OAMpG,GAJAjE,GADAA,GAAOA,GAAO,IAAIkE,SACL,IAEbhE,KAAK0B,sBAAsB5B,EAAK,QAE7BE,KAAKiE,eAAenE,GACrB,OAAOE,KAAKkE,SAASpE,GAGrB,IAAM4D,EAAS1D,KAAK+C,uBAAuBjD,GAY3C,OAVIE,KAAKmE,oBAAoBT,IAC3BK,EAAmBL,GAGjB1D,KAAKmE,oBAAoBnE,KAAKgC,WAAWI,cAC3CpC,KAAKqB,6BAA+BrB,KAAKqB,6BAA6B+C,MAAK,kBAAM,EAAKtC,wBAAwB,KAKzG9B,KAAKqB,4BAGhB,GAEA,kBAWA,SAAKvB,GAA6B,IAAD,OAC/B,OAAOE,KAAKqE,mBAAmBvE,GAAK,SAAC4D,GAAM,OAAK,EAAK1C,QAAQqB,QAAQiC,UAAU,KAAM,GAAIZ,EAAO,GAClG,GAAC,mCAED,SAAsB5D,GACpBE,KAAKgB,QAAQqB,QAAQiC,UAAU,KAAM,GAAIxE,EAC3C,GAAC,oBAED,WAAmB,IAAZyE,EAAK,wDAAI,EACdvE,KAAKgB,QAAQqB,QAAQmC,GAAGD,EAC1B,GAEA,qBASA,SAAQzE,GAA6B,IAAD,OAClC,OAAOE,KAAKqE,mBAAmBvE,GAAK,SAAC4D,GAAM,OAAK,EAAK1C,QAAQqB,QAAQC,aAAa,KAAM,GAAIoB,EAAO,GACrG,GAAC,sBAGD,SAAS5D,GAEP,OADAE,KAAKgB,QAAQW,SAASQ,KAAOrC,EACtBwB,QAAQC,SACjB,GAAC,oBAED,WACE,OAAOvB,KAAKyD,KAAK,IACnB,GAAC,4BAID,SAAuB3D,GACrB,GAAGA,GAAkB,MAAXA,EAAI,GACZ,OAAO,EAGT,IAAI2E,EAAYzE,KAAK8C,YAAYhD,GACjC,SAAG2E,GAAaA,EAAUC,OAAOhC,gBAAkB1C,KAAKgC,WAAW0C,OAAOhC,cAK5E,GAAC,gCAED,WACE,QAAG1C,KAAKmB,YAIV,GAAC,yBAED,SAAYrB,GACV,IACE,OAAO,IAAI6E,EAAAA,EAAI,IAAIC,IAAI5E,KAAK6E,cAAc/E,IAG5C,CAFE,MAAOgF,GACP,OAAO,IACT,CACF,GAAC,2BAED,SAAsBhF,GACpB,IACE,OAAOiF,EAAAA,EAAAA,IAA4BjF,EAIrC,CAHE,MAAMqD,GAEN,OADAC,QAAQC,MAAM,yBAA2BvD,GAClCA,CACT,CACF,GAAC,0BAED,SAAakF,GACX,IAAMC,GAAsB,OAAVD,QAAU,IAAVA,OAAU,EAAVA,EAAY5C,aAAc,IAC5C,OAAO,IAAIuC,EAAAA,EAAI,IAAIC,IAAIK,EAAWjF,KAAKgC,WAAWI,YACpD,GAAC,mCAED,SAA8BtC,EAAaoF,GAEzC,IACE,GAAW,UAARpF,GAA2B,SAARA,GAA0B,WAARA,GAA4B,UAARA,EAAiB,CAC3E,IAAIqF,EAAU,IAAIC,MAAM,+BAAD,OAAgCF,EAAY,6BAAqBlF,KAAKgB,QAAQW,SAASQ,KAAI,+BAAuBkD,SAASC,WAAYC,MAC3JvF,KAAKkB,qBACNlB,KAAKkB,oBAAoB,sBAAuBgE,EAAcC,GAGhE/B,QAAQC,MAAM8B,EAEhB,CAGF,CAFE,MAAOhC,GACPC,QAAQC,MAAM,+BAAgCF,EAChD,CAEF,GAAC,oCAED,SAA+BrD,GAC3B,OAAOE,KAAKwF,+BAA+BC,iBAAiB3F,EAChE,GAAC,0CAGD,WACE,IAAM4F,EAAW1F,KAAKiB,cAAc0E,QAAQ/E,GAC5C,OAAG8E,EACM,IAAIE,EAAyBF,GAE3B,IAAIG,CAEjB,GAAC,sBAED,WACE,OAAO7F,KAAKwF,+BAA+BM,WAAW9F,KAAKgC,WAAWQ,SACxE,KAAC,EA9NY,GA8NZ,gHAhOiB,IAAK,KAAD,sHAyOlBoD,EAAwB,WAE1B,WAAYF,IAAmB,oBAIdK,eAAS,EAHxB/F,KAAK+F,UAAY,IAAIC,EAAAA,EAAQN,EAAShD,cACxC,CAmCC,OAnCA,kCAID,SAAWF,GACT,OAAOxC,KAAK+F,UAAUE,OAAOzD,EAC/B,GAAC,8BAED,SAAiB1C,GACb,GAAIA,EAAIoG,WAAW,KACf,OAAOpG,EAGX,IAAI4D,EAAS1D,KAAKmG,aAAarG,GAC/B,OAAG4D,GACMA,EAAO9B,SAASc,cAAcwD,WAAWlG,KAAK+F,UAAU3D,cACzDsB,EAAO9B,SAAW5B,KAAK+F,UAAUK,OAAO1C,EAAO9B,UAAUQ,aAGtDS,EAAAA,EAAAA,IAAYa,EAAOvB,KAAKC,aAE7BtC,EAAI4C,cAAcwD,WAAWlG,KAAK+F,UAAU3D,YAK3CtC,EAJIE,KAAK+F,UAAUK,OAAOtG,GAAKsC,UAK1C,GAAC,0BAED,SAAqBtC,GACnB,IACE,OAAO,IAAI8E,IAAI9E,EAGjB,CAFE,MAAOgF,GACL,OAAO,IACX,CACF,KAAC,EAvCyB,GA4CxBe,EAA0B,wCAO3B,OAP2B,kCAC5B,SAAWrD,GACP,OAAOA,EAAS6D,OACpB,GAAC,8BAED,SAAiBvG,GACf,OAAOA,CACT,KAAC,EAP2B,E,sGCzSnBwG,EAAS,WAEpB,WAAYC,GAA4B,IAAD,4BAwB/BC,QAAgD,CAAC,EApB3B,OAH5BD,GAAqBA,GAAqB,IAAIvC,QAGzB,KACnBuC,EAAoBA,EAAkBE,UAAU,IAG/CF,GACCA,EAAkBG,MAAM,KAAKzD,SAAQ,SAAA0D,GACjC,IAAIC,EAAWD,EAAYD,MAAM,KAC7BG,EAAMD,EAAS,GACfE,EAAQF,EAAS,GAClBA,EAASG,OAAS,IACnBD,EAAQF,EAASI,MAAM,GAAGC,KAAK,MAEjC,EAAKT,QAAQK,EAAInE,eAAiB,CAC9BwE,aAAcL,EACdC,MAAOA,EAEf,GAEN,CAmEC,OAnEA,oCAID,WACE,OAAOK,OAAOC,OAAOpH,KAAKwG,QAC5B,GAAC,2BAED,SAAca,GACZ,IAAIC,EAAkBtH,KAAKwG,QAAQa,EAAU3E,eAC7C,GAAI4E,EAGJ,OAAOvC,EAAAA,EAAAA,IAA4BuC,EAAgBR,MACrD,GAAC,sBAED,WACE,IAAMS,EAAYvH,KAAKwH,eACvB,OAAwB,IAArBD,EAAUR,OACJ,GAEF,IAAMQ,EAAUE,KAAI,SAAAC,GAAC,OAAIA,EAAER,aAAe,IAAMQ,EAAEZ,KAAK,IAAEG,KAAK,IACvE,GAAC,yBAED,SAAYI,GACV,IAAIM,GAAY,UAAO3H,KAAKwG,gBACrBmB,EAAsB,OAATN,QAAS,IAATA,OAAS,EAATA,EAAW3E,eAC/B,IAAMkF,EAAiBT,OAAOU,KAAKF,GAAcF,KAAI,SAAAJ,GACjD,IAAMC,EAAkBK,EAAaN,GACrC,MAAM,GAAN,OAAUC,EAAgBJ,aAAY,YAAII,EAAgBR,MAC9D,IACA,OAAO,IAAIR,EAAUsB,EAAeX,KAAK,KAC3C,GAAC,sBAED,SAASa,GACP,OAAOlE,QAAQ5D,KAAKwG,QAAQsB,EAAKpF,eACnC,GAAC,sBAED,SAASoF,EAAchB,GACrB9G,KAAKwG,QAAQsB,EAAKpF,eAAiB,CACjCwE,aAAcY,EACdhB,MAAOA,EAEX,GAAC,oBAED,SAAOiB,GACL,IAAIC,EAAQb,OAAOU,KAAK7H,KAAKwG,SACzByB,EAAQd,OAAOU,KAAKE,EAASvB,SAEjC,GAAGwB,EAAMjB,SAAWkB,EAAMlB,OACxB,OAAO,EAGT,IAAI,IAAImB,EAAI,EAAGA,EAAIF,EAAMjB,OAAQmB,IAAK,CACpC,IAAIb,EAAYW,EAAME,GAGtB,GAFWlI,KAAKwG,QAAQa,GAAWP,SACxBiB,EAASvB,QAAQa,IAAcU,EAASvB,QAAQa,GAAWP,OAEpE,OAAO,CAEX,CAEA,OAAO,CACT,GAAC,mBAED,WACE,OAAsC,IAA/B9G,KAAKwH,eAAeT,MAC7B,KAAC,EA3FmB,E,iHCJTf,EAAO,WAClB,WAAYmC,IAAe,oBAIVC,WAAK,EAHpBpI,KAAKoI,OAASD,GAAQ,KAAKnE,MAC7B,CA8DC,OA9DA,gCAGD,WACE,MAAqB,MAAlBhE,KAAKoI,MAAM,GACL,IAAMpI,KAAKoI,MAGbpI,KAAKoI,KACd,GAAC,qBAED,WACE,IAAIC,EAAQrI,KAAKoC,WAAWsE,MAAM,KAClC,OAAO,IAAIV,EAAQqC,EAAM,GAAI,IAAMA,EAAM,GAC3C,GAAC,qBAED,WACE,IAAIA,EAAQrI,KAAKoC,WAAWsE,MAAM,KAAK4B,QAAO,SAAAC,GAAI,OAAIA,CAAI,IAC1D,MAAM,CAAE,KAAG,eAAKF,GAClB,GAAC,oBAED,SAAON,GACL,OAAGS,EAAAA,MAAAA,kBAAwBT,IAGpB/H,KAAKyI,qBAAqBzI,KAAKoC,YAAYM,gBAAkB1C,KAAKyI,qBAAqBV,EAAS3F,YAAYM,aACrH,GAAC,mBAED,WACE,MAAsB,MAAf1C,KAAKoI,KACd,GAAC,4BAED,WAEE,IAAIM,EAA4B1I,KAAKoC,WAWrC,MAToC,MAAjCsG,EAA0B,KAC3BA,EAA4BA,EAA0BjC,UAAU,IAGK,MAApEiC,EAA0BA,EAA0B3B,OAAS,KAC9D2B,EAA4BA,EAA0BjC,UAAU,EAAGiC,EAA0B3B,OAAS,IAIrG2B,EACMA,EAA0BhG,cAAciG,QAAQ,MAAO,KAAO,QAE9DC,EAAAA,EAEX,GAAC,kCAcD,SAA6B9I,GAK3B,MAJ2B,MAAxBA,EAAIA,EAAIiH,OAAS,KAClBjH,GAAY,KAGPA,CACT,GAAC,oBAED,SAAO+I,GAOL,OANKA,aAAiB7C,IACpB6C,EAAQ,IAAI7C,EAAQ6C,IAKf,IAAI7C,GAAShG,KAAKoC,WAAayG,EAAMzG,YAAYuG,QAAQ,QAAS,KAC3E,IAAC,wBA5BD,SAAiBG,EAAaC,GAC5B,OAAGP,EAAAA,MAAAA,kBAAwBM,KACtBN,EAAAA,MAAAA,kBAAwBO,GAMpBD,EAAG7C,OAAO8C,EAErB,KAAC,EAjEiB,E,4HCAPC,EAAO,WAClB,WAAYlF,IAAe,oBAgBnBmF,WAAK,EAfXjJ,KAAKiJ,MAAQjJ,KAAKkJ,eAAepF,GAAQ,IACvB,MAAf9D,KAAKiJ,QACNjJ,KAAKiJ,MAAQ,GAEjB,CAmCC,OAnCA,2BAGD,WACE,MAAqB,MAAlBjJ,KAAKiJ,MAAM,GACLjJ,KAAKiJ,MAAMxC,UAAU,GAErBzG,KAAKiJ,KAEhB,GAAC,sBAID,WACE,OAAIjJ,KAAKiJ,MAIY,MAAlBjJ,KAAKiJ,MAAM,GACLjJ,KAAKiJ,MAEL,IAAMjJ,KAAKiJ,MANXjJ,KAAKiJ,KAQhB,GAAC,oBAcD,SAAOlB,GACL,OAAGS,EAAAA,MAAAA,kBAAwBT,IAIpB/H,KAAKoC,WAAWM,gBAAkBqF,EAAS3F,WAAWM,aAC/D,GAAC,mBAED,WACE,OAAO8F,EAAAA,MAAAA,QAAcxI,KAAKiJ,MAC5B,GAAC,4BAED,SAAuBnF,GACrB,IACE,OAAOiB,EAAAA,EAAAA,IAA4BjB,EAIrC,CAHE,MAAMX,GAEN,OADAC,QAAQC,MAAM,0BAA4BS,GACnCA,CACT,CACF,IAAC,wBA/BD,SAAiBqF,EAAaC,GAC5B,OAAGZ,EAAAA,MAAAA,kBAAwBW,KACtBX,EAAAA,MAAAA,kBAAwBY,GAMpBD,EAAGlD,OAAOmD,EAErB,KAAC,EAzCiB,GCGPzE,EAAG,WAEd,WAAY7E,IAAW,oBAOfuJ,kBAAY,OAUHC,eAAS,OAKTC,kBAAY,OAKZN,WAAK,EA1BpBjJ,KAAKqJ,aAAevJ,EACpBE,KAAKsJ,UAAY,IAAItD,EAAAA,EAAQhG,KAAKqJ,aAAazH,UAC/C5B,KAAKuJ,aAAe,IAAIjD,EAAAA,EAAUtG,KAAKqJ,aAAaxF,QACpD7D,KAAKiJ,MAAQ,IAAID,EAAQhJ,KAAKqJ,aAAavF,KAC7C,CAkEC,OAlEA,8BAID,WACE,OAAO9D,KAAKqJ,aAAaG,SAAS9G,aACpC,GAAC,kBAED,WACE,OAAO1C,KAAKqJ,aAAa3E,OAAOhC,aAClC,GAAC,oBAGD,WACE,OAAO1C,KAAKsJ,SACd,GAAC,uBAGD,WACE,OAAOtJ,KAAKuJ,YACd,GAAC,gBAGD,WACE,OAAOvJ,KAAKiJ,KACd,GAAC,sBAED,WAEE,OADiBpG,EAAAA,EAAAA,IAAY7C,KAAKqJ,aAAalH,KAEjD,GAAC,oBAED,SAAO4F,GACL,OAAGS,EAAAA,MAAAA,kBAAwBT,KAIpB/H,KAAK0E,SAAWqD,EAASrD,QACvB1E,KAAKwC,SAASyD,OAAO8B,EAASvF,WAC9BxC,KAAKyJ,YAAYxD,OAAO8B,EAAS0B,cACjCzJ,KAAK8D,KAAKmC,OAAO8B,EAASjE,MACrC,GAAC,+BAED,WACE,OAAO9D,KAAKqJ,aAAa3E,OAAS1E,KAAKqJ,aAAazH,SAAW5B,KAAKqJ,aAAaxF,MACnF,GAAC,+BAED,SAAkBwD,GAChB,IAAIO,EAAiB5H,KAAKyJ,YAAYC,YAAYrC,GAAWjF,WAC7D,OAAO,IAAIuC,EAAI,IAAIC,IAAI5E,KAAKqJ,aAAa3E,OAAS1E,KAAKqJ,aAAazH,SAAWgG,EAAiB5H,KAAKqJ,aAAavF,MACpH,GAAC,wCAED,WACE,OAAO9D,KAAKqJ,aAAa3E,OAAS1E,KAAKqJ,aAAazH,QACtD,IAAC,wBAED,SAAiB+H,EAASC,GACxB,OAAGpB,EAAAA,MAAAA,kBAAwBmB,KACtBnB,EAAAA,MAAAA,kBAAwBoB,GAMpBD,EAAG1D,OAAO2D,EAErB,KAAC,EAzEa,E,4DCJXC,E,uBAAU,SAAVA,GAAAA,EAAAA,EAAU,iBAAVA,EAAAA,EAAU,eAAVA,EAAAA,EAAU,eAAVA,EAAAA,EAAU,kBAAVA,IAAAA,EAAU,KAOR,IAAMC,EAAoB,WAE/B,WAAoBC,IAAsB,oBAAtBA,WAAAA,EAAmB,KAIvCC,UAAwB,EAFxB,CA+CC,OA/CA,6BAID,SAAM7E,GAAkD,IAAD,uBAA7B8E,EAAc,iCAAdA,EAAc,kBACtCjK,KAAKkK,KAAK,QAAS/E,EAAS8E,EAC9B,GAAC,kBAED,SAAK9E,GAAkD,IAAD,uBAA7B8E,EAAc,iCAAdA,EAAc,kBACrCjK,KAAKkK,KAAK,OAAQ/E,EAAS8E,EAC7B,GAAC,qBAED,SAAQ9E,GAAkD,IAAD,uBAA7B8E,EAAc,iCAAdA,EAAc,kBACxCjK,KAAKkK,KAAK,OAAQ/E,EAAS8E,EAC7B,GAAC,mBAED,SAAM9E,GAAkD,IAAD,uBAA7B8E,EAAc,iCAAdA,EAAc,kBACtCjK,KAAKmK,aAAahF,EAAS8E,GAE3BjK,KAAKkK,KAAK,QAAS/E,EAAS8E,EAC9B,GAGA,kBAIA,SAAcG,EAAkBjF,GAC9B,GAAInF,KAAKqK,kBAAkBD,EAASE,eAAgB,CAAC,IAAD,uBADFL,EAAc,iCAAdA,EAAc,kBAE9D7G,QAAQgH,GAAUjF,EAAS8E,EAC7B,CACF,GAAC,+BAED,SAA0BG,GACxB,OAAQP,EAAWO,IAAaP,EAAWU,OAAkB,UAC/D,GAAC,0BAED,SAAqBpF,GACnB,GAAInF,KAAK+J,WAAT,CAI8B,KAA1B/J,KAAKgK,UAAUjD,QACjB/G,KAAKgK,UAAUQ,OAAO,EAAG,GAC1B,2BAPsCP,EAAc,iCAAdA,EAAc,kBASrDjK,KAAKgK,UAAUvG,KAAK,CAAC0B,QAASA,EAASsF,KAAM,IAAIC,KAAQC,aAAcV,GANvE,CAOF,KAAC,EAnD8B,E,yGCT1B,IAAMW,EAAsB,OACtBC,EAAsB,OAE5B,SAASC,EAAoBpF,GAEhC,OAAIA,IAAakF,GAIblF,IAAamF,CAKrB,C,wGCXaE,EAAmB,0CAC9B,WAAYC,GAAyB,kCAC7BC,aAAcD,EACtB,CAAC,iBAH6B,C,SAASE,E,kFCC5BA,EAAkB,WAC3B,WAA6BC,EACAH,IAAyB,oBADzBG,QAAAA,EAAgB,KAChBH,OAAAA,CAE7B,CAgCC,OAhCA,+BAED,SAAQnE,GACJ,OAAO7G,KAAKmL,QAAQxF,QAAQkB,EAChC,GAAC,qBAED,SAAQA,EAAaC,GACjB9G,KAAKmL,QAAQxI,QAAQkE,EAAKC,EAC9B,GAAC,qBAGD,SAAiBD,GACb,IAAIC,EAAQ9G,KAAK2F,QAAQkB,GACzB,IAAKC,EACD,OAAO,KAGX,IACI,OAAOsE,KAAKC,MAAMvE,EAItB,CAHE,MAAO3D,GAEL,OADAnD,KAAKgL,OAAO3H,MAAM,iDAAD,OAAkDwD,EAAG,uBAAeC,GAAS3D,GACvF,IACX,CACJ,GAAC,qBAED,SAAQ0D,EAAaC,GACjB9G,KAAK2C,QAAQkE,EAAKuE,KAAKE,UAAUxE,GACrC,GAAC,wBAGD,SAAWD,GACP7G,KAAKmL,QAAQI,WAAW1E,EAC5B,KAAC,EApC0B,E,kHCWlB2E,EAAa,WAExB,cAAe,oBA+BEC,gCAA0B,EA9BzCzL,KAAKyL,2BAA6B,IAAIC,EAAAA,EAA0BnB,OAClE,CA4GC,OA5GA,yCAGD,SAAkBzC,GAChB,OAAOyC,OAAOzC,EAChB,GAAC,+BAED,SAAkBA,EAAchB,GAC9ByD,OAAOzC,GAAQhB,CACjB,GAAC,8BAED,SAAiB6E,GACf,OAAOpB,OAAOqB,iBAAiBD,EACjC,GAAC,6BAED,SAAgBA,GACd,OAAOE,SAAS7L,KAAK4L,iBAAiBD,GAASG,MAAMnD,QAAQ,KAAM,IACrE,GAAC,mDAED,SAAsCgD,GACpC,IAAII,EAAmB/L,KAAK4L,iBAAiBD,GAASK,iBAAiB,sBAAwBzB,OAAOqB,iBAAiBD,GAASK,iBAAiB,aAEjJ,OAAOH,SAASE,EAAiBrF,MAAM,KAAK,KAAOqF,EAAiBrF,MAAM,KAAK,KAAO,CACxF,GAAC,oBAED,WACE,OAAO6D,OAAO5I,QAChB,GAAC,uBAID,WACE,OAAO3B,KAAKyL,0BACd,GAAC,sBAED,WACE,OAAOlB,OAAO0B,UAChB,GAAC,uBAED,WACE,OAAO1B,OAAO2B,WAChB,GAAC,oBAED,WACE3B,OAAO5I,SAASwK,QAClB,GAAC,kBAED,SAAKrM,EAAcsM,EAAiBC,GAClC9B,OAAO+B,KAAKxM,EAAKsM,EAAQC,EAC3B,GAAC,sBAED,SAASvM,GACPE,KAAKsM,KAAKxM,EAAK,QACjB,GAAC,kBAED,WACE,OAAOyK,OAAO5I,SAAS+C,MACzB,GAAC,oBAED,WACE,OAAO6F,OAAO5I,SAASC,QACzB,GAAC,mBAED,WACE,OAAO2I,OAAOlI,OAChB,GAAC,sBAED,SAASkK,EAAWC,GAClBjC,OAAOkC,SAASF,EAAGC,EACrB,GAAC,mBAED,WACE,OAAOjC,OAAOmC,OAChB,GAAC,mBAED,WACE,OAAOnC,OAAOnH,OAChB,GAAC,sBAED,SAASmJ,EAAWC,GAClBjC,OAAOoC,SAASJ,EAAGC,EACrB,GAAC,0BAED,SAAa1M,GACX,OAAO6D,EAAAA,EAAAA,IAAa7D,EACtB,GAAC,6BAED,SAAgB6L,GACd,GAAInD,EAAAA,MAAAA,kBAAwBmD,GAC1B,MAAO,CACLG,MAAO,EACPc,OAAQ,GAIZ,IAAMC,EAAoB7M,KAAK4L,iBAAiBD,GAChD,MAAO,CACLG,MAAOD,SAASgB,EAAaf,MAAMnD,QAAQ,KAAM,KACjDiE,OAAQf,SAASgB,EAAaD,OAAOjE,QAAQ,KAAM,KAEvD,GAAC,+BAED,WACE,OAAO4B,OAAO+B,KAAK,cACrB,GAAC,0BAED,SAAaxM,GACXE,KAAKsM,KAAKxM,EACZ,KAAC,EAhHuB,E,w/BCfnB,IAAM8I,EAAY,YACZkE,EAAa,aACbC,EAAa,aACbC,EAAiB,iBACjBC,EAAgB,gBAChBC,EAAgB,gBAChBC,EAAoB,oBACpBC,EAA+B,+BAC/BC,EAAiB,iBACjBC,EAAsB,sBACtBC,EAA2B,2BAC3BC,EAAuB,uBACvBC,EAAuB,uBACvBC,EAAiB,iBACjBC,EAAmB,mBACnBC,EAAqB,qBACrBC,EAA2B,sBAC3BC,EAAuB,uBACvBC,EAAyB,yBACzBC,EAAsB,sBACtBC,EAA0B,0BAE1BC,EAAY,YACZC,EAAgB,gBAChBC,EAAgB,gBAChBC,EAAmB,mBAEnBC,EAAsB,sBACtBC,EAAoB,oBAEpBC,EAAuB,uBAEvBC,EAAW,WACXC,EAAS,SACTC,EAAmB,mBACnBC,EAAmB,sBACnBC,EAAe,eACfC,EAAc,cACdC,EAAc,aACdC,EAAkB,iBAClBC,EAAS,SACTC,EAA2B,2BAC3BC,EAAY,YACZC,EAAW,WACXC,EAAmB,kB,oJC1CnB3O,GAAS,QAIlB,cAA6C,IAAhC4O,EAAM,EAANA,OAAQC,EAAU,EAAVA,YAAU,oBAHfC,gBAAU,OACVrK,aAAO,EAGnBnF,KAAKwP,WAAaF,EAClBtP,KAAKmF,QAAUmK,EAAS,MAAQC,CACpC,IAIG,SAAe5O,EAAmB,GAAD,+BAiBvC,8CAjBM,WAAkCH,GAAkB,oFAEc,GAA/DiP,EAAoBjP,EAASkP,QAAQC,IAAI,iBAAmB,KAE/DnH,EAAAA,MAAAA,QAAciH,IAAsBA,EAAkBG,QAAQ,qBAAuB,GAAC,gCACxEpP,EAASqP,OAAO,KAAD,EAEC,KAAD,GASO,KAAD,oCAXN,YACtBJ,EAAkBG,QAAQ,eAAiB,GAAC,kCACrCpP,EAASsP,OAAM,QAM/B,OAHGC,EAAU,QACXN,EAAkBG,QAAQ,aAAe,IAAI,EAC/B,kBAAkBI,KAAKP,GAAmB,GAAD,YAApDM,EAAO,MACZ,UAEkBvP,EAASyP,OAAO,KAAD,GAAxB,OAAJA,EAAI,iBACGC,EAAWD,EAAMF,GAAQ,6CACzC,sBAGD,SAASG,EAAWC,GAA6D,IAA/CC,EAAgB,uDAAG,SACjD,OAAO,IAAI9O,SAAQ,SAAAC,GACf,IAAM8O,EAAS,IAAIC,WACnBD,EAAOE,UAAY,WACfhP,EAAQ8O,EAAOG,OACnB,EACAH,EAAOI,WAAWN,EAAQC,EAC9B,GACJ,C,wDCzCO,IAAMM,EAAgB,W,kFCIhBhF,EAAyB,WACpC,WAAYC,GAAuB,IAAD,4BAI1BgF,cAAQ,OA+BhBC,OAAS,SAAC1N,GAOR,OAAO,EAAK2N,WAAW,WAAY3N,EACrC,EAAC,KAED4N,YAAc,SAAC5N,GACb,OAAO,EAAK2N,WAAW,QAAS3N,EAClC,EAAC,KAED6N,UAAY,SAAC7N,GACX,OAAO,EAAK2N,WAAW,OAAQ3N,EACjC,EAAC,KAGS2N,WAAa,SAACG,EAAmB9N,GAEzC,OADA,EAAKyN,SAAS9O,iBAAiBmP,EAAW9N,GACnC,CACL+N,QAAS,wBAAmB,QAAnB,EAAM,EAAKN,gBAAQ,aAAb,EAAeO,oBAAoBF,EAAW9N,EAAQ,EAEzE,EA1DElD,KAAK2Q,SAAWhF,CAClB,CA+BC,OA/BA,8BAID,SAAOzI,GACL,OAAOlD,KAAK6Q,WAAW,SAAU3N,EACnC,GAAC,oBAED,SAAOA,GACL,OAAOlD,KAAK6Q,WAAW,SAAU3N,EACnC,GAAC,mBAED,SAAMA,GACJ,OAAOlD,KAAK6Q,WAAW,QAAS3N,EAClC,GAAC,yBAED,SAAYA,GACV,OAAOlD,KAAK6Q,WAAW,UAAW3N,EACpC,GAAC,2BAED,SAAcA,GACZ,OAAOlD,KAAK6Q,WAAW,kBAAmB3N,EAE5C,GAAC,sBAED,SAASA,GACP,OAAOlD,KAAK6Q,WAAW,WAAY3N,EACrC,GAAC,gCAED,SAAmBA,GACjB,OAAOlD,KAAK6Q,WAAW,aAAc3N,EACvC,KAAC,EAlCmC,E,kLCHhCiO,EAAeC,EAAQ,IAEtB,SAASrM,EAA4BjF,GAC1C,IAAIA,EACF,OAAOA,EAKT,IAFA,IAAIuR,EAAaC,mBAAmBxR,GAE9BA,IAAQuR,GACZvR,EAAMuR,EACNA,EAAaC,mBAAmBxR,GAGlC,OAAOuR,CAET,CAoCO,SAASE,EAAmBzK,GAEjC,OAAG0B,EAAAA,MAAAA,SAAe1B,GApCb,SAAuBhH,GAC5B,IAAIA,EACF,OAAOA,EAGT,IACE,OAAO0R,UAAU1R,EAInB,CAHE,MAAOqD,GAEP,OADAC,QAAQC,MAAM,8CAAD,OAA+CvD,IACrDA,CACT,CAGF,CAwBW2R,CAAc3K,GACb0B,EAAAA,MAAAA,SAAe1B,GAvB3B,SAAiC4K,GAC/B,IAAIC,EAAQR,EAAa,CAAC,EAAGO,GAM7B,OAJAvK,OAAOU,KAAK8J,GAAO1O,SAAQ,SAAA2O,GACzBD,EAAMC,GAAYL,EAAmBI,EAAMC,GAC7C,IAEOD,CACT,CAgBWE,CAAwB/K,GACvB0B,EAAAA,MAAAA,QAAc1B,GAf1B,SAAgCgL,GAE9B,IADA,IAAIH,GAAK,OAAOG,GACR5J,EAAI,EAAGA,EAAIyJ,EAAM5K,OAAQmB,IAC/ByJ,EAAMzJ,GAAKqJ,EAAmBI,EAAMzJ,IAEtC,OAAOyJ,CACT,CAUWI,CAAuBjL,GAEvBA,CAEX,CAgBO,SAASkL,EAAclS,EAAamS,GACvC,OAAU,OAAHnS,QAAG,IAAHA,GAAAA,EAAKoS,SAAS,KAAQpS,EAAM,IAAMmS,EAAenS,EAAM,IAAMmS,CACxE,CAEO,SAAStO,EAAa7D,GACzB,GAAGA,EAAIoG,WAAW,KACd,OAAO,EAGX,IAEI,OADA,IAAItB,IAAI9E,IACD,CAGX,CAFE,MAAOqD,GACL,OAAO,CACX,CACJ,CAIO,SAASN,EAAY/C,GACxB,OAAOA,EAAIsC,UACf,C","sources":["app-react/services/http/http.service.ts","app-react/services/location/location.service.ts","app-react/services/location/uri-params/uri-params.ts","app-react/services/location/uri-path/uri-path.ts","app-react/services/location/uri-hash/uri-hash.ts","app-react/services/location/uri/uri.ts","app-react/services/logger/console-logger.service.ts","app-react/services/mini-orbit/mini-orbit-consts.ts","app-react/services/storage/local-storage.service.ts","app-react/services/storage/storage-service-base.ts","app-react/services/window/window.service.ts","app-react/themes/css-global-classes.ts","common/utils/parse-fetch-response.ts","orbit-version.ts","utils/event-listener-registration.ts","utils/url-utils.ts"],"sourcesContent":["import {\n IHttpService\n} from './http.service.interface';\nimport {HttpError, parseFetchResponse} from \"../../../common/utils/parse-fetch-response\";\n\n\n\nexport class HttpService implements IHttpService {\n async get(url: string, options?: RequestInit): Promise {\n const fetchedResponse = await this._fetchResponse(url,'GET', options);\n return this._parseResponse(fetchedResponse);\n }\n\n async post(url: string, options?: RequestInit): Promise {\n const fetchedResponse = await this._fetchResponse(url, 'POST', options);\n return this._parseResponse(fetchedResponse);\n }\n\n createUrlSearchParams(): URLSearchParams {\n return new URLSearchParams();\n }\n\n createHeaders(): Headers {\n return new Headers();\n }\n\n async _fetchResponse(url: string, method: string, options?: RequestInit):Promise {\n options = {...options, method: method};\n const response = await fetch(url, options);\n\n return response;\n }\n\n async _parseResponse(response: Response):Promise {\n if(!response.ok) {\n throw new HttpError(response);\n }\n\n return await parseFetchResponse(response);\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\nimport {Uri} from './uri/uri';\nimport {ILocationService} from './location.service.interface';\nimport {decodeUriComponentRecursive, isAbsolutUrl, sanitizeUrl} from '../../../utils/url-utils';\nimport {IStorageService} from '../storage/storage.service.interface';\nimport {UriPath} from './uri-path/uri-path';\n\nexport const ORBIT_LOCATION_OVERRIDE_BASE = 'orbit_location_override_base';\n\n\nexport class LocationService implements ILocationService {\n\n constructor(private _window: Partial, private _localStorage: IStorageService, private _sendTechnicalEvent?: (action: string, label?: string, value?: any) => void) {\n makeObservable(this);\n\n this._initCurrentUri();\n\n this._checkUrlIsNullString(this._window.location.pathname, 'constructor');\n\n this._window.addEventListener('popstate', () => {\n this._checkUrlIsNullString(this._window.location.pathname, 'popstate');\n this._updateCurrentUriAsync();\n });\n }\n\n private _previousUri: Uri = null;\n @observable.ref\n currentUri: Uri = null;\n\n @action.bound\n private _setCurrentUri(newUri: Uri) {\n this._previousUri = this.currentUri;\n this.currentUri = newUri;\n }\n\n\n private _initCurrentUri() {\n this._setCurrentUri(this._createNewUriForCurrentLocation());\n if(this._window.location.href !== this.currentUri.toString()) {\n this._window.history.replaceState(null, '', this.currentUri.toString());\n }\n }\n\n enableBasePathOverride(): void {\n const basePathName = this.currentUri.pathName.getBase().toString().toLowerCase();\n this._localStorage.setItem(ORBIT_LOCATION_OVERRIDE_BASE, basePathName.toString());\n }\n\n private _createNewUriForCurrentLocation(): Uri {\n let locationOverride = sanitizeUrl(this._window.location.href);\n return this.tryParseUrl(this._applyLocationOverride(locationOverride));\n }\n\n private _fireOnBeforeChangingLocation(targetUri: Uri) {\n this._onBeforeChangingLocationSubscribers.forEach(handler => {\n try {\n handler(targetUri);\n } catch (err) {\n console.error('OnBeforeChangingLocation handler failed!', err);\n }\n });\n }\n private _updateCurrentUriAsync(): Promise {\n let newUri = this._createNewUriForCurrentLocation();\n\n this._fireOnBeforeChangingLocation(newUri);\n\n // we set the current location async so we can give the spinner the chance to show up.\n return new Promise((resolve, reject) => {\n // Never remove this setTimeout- without this, while you click menu items to move between arenas, the spinner animation will not be smooth.\n setTimeout(() => {\n try {\n this._setCurrentUri(newUri);\n resolve();\n } catch (err) {\n reject(err);\n }\n }, 0);\n });\n\n }\n\n private _onBeforeChangingLocationSubscribers: Array<(targetUri: Uri) => void> = [];\n onBeforeChangingLocation(handler: (targetUri: Uri) => void): void {\n this._onBeforeChangingLocationSubscribers.push(handler);\n }\n\n\n private _isSameAsCurrentUrl(newUrl: string): boolean {\n\n let result:boolean;\n if(isAbsolutUrl(newUrl)) {\n result = Boolean(this._window.location.href === newUrl);\n } else {\n result = Boolean(newUrl === this._window.location.pathname + this._window.location.search + this._window.location.hash);\n }\n return result;\n }\n\n private _lastUpdateCurrentUriPromise: Promise = Promise.resolve();\n private _executeNavigation(url: string, historyApiCallback: (newUrl: string) => void) : Promise {\n url = (url || '').trim();\n url = url || '/';\n\n this._checkUrlIsNullString(url, 'push');\n\n if(this._isRedirectUrl(url)) {\n return this.redirect(url);\n } else {\n\n const newUrl = this._applyLocationOverride(url);\n\n if(!this._isSameAsCurrentUrl(newUrl)) {\n historyApiCallback(newUrl);\n }\n\n if(!this._isSameAsCurrentUrl(this.currentUri.toString())) {\n this._lastUpdateCurrentUriPromise = this._lastUpdateCurrentUriPromise.then(() => this._updateCurrentUriAsync());\n }\n\n // This is for making very quick subsequent calls to this function to happen in the order they were called.\n // related bug: BUG 1668336\n return this._lastUpdateCurrentUriPromise;\n\n }\n }\n\n /**\n * @param {string} url\n * url parameter can be a full url or just a relative url:\n * url parameter examples:\n * https://www.888casino.com/slots\n * /slots\n * /slots#filters=someFilter\n * #justTheHash\n * @param {boolean} forceHistoryPush\n * used by the \"browser-buttons-handler\" to overwrite the current url;\n */\n push(url: string): Promise {\n return this._executeNavigation(url, (newUrl) => this._window.history.pushState(null, '', newUrl));\n }\n\n pushWithoutValidation(url){\n this._window.history.pushState(null, '', url);\n }\n\n goBack(index = -1){\n this._window.history.go(index);\n }\n\n /**\n * @param {string} url\n * url parameter can be a full url or just a relative url:\n * url parameter examples:\n * https://www.888casino.com/slots\n * /slots\n * /slots#filters=someFilter\n * #justTheHash\n */\n replace(url: string): Promise {\n return this._executeNavigation(url, (newUrl) => this._window.history.replaceState(null, '', newUrl));\n }\n\n\n redirect(url: string): Promise {\n this._window.location.href = url;\n return Promise.resolve();\n }\n\n goHome(): Promise {\n return this.push('/');\n }\n\n\n\n private _isRedirectUrl(url: string): boolean {\n if(url && url[0] === '#') {\n return false;\n }\n\n let parsedUrl = this.tryParseUrl(url);\n if(parsedUrl && parsedUrl.origin.toLowerCase() !== this.currentUri.origin.toLowerCase()) {\n return true;\n } else {\n return false;\n }\n }\n\n get hasNavigationHistory(): boolean {\n if(this._previousUri) {\n return true;\n }\n return false;\n }\n\n tryParseUrl(url: string): Uri {\n try {\n return new Uri(new URL(this._tryDecodeUrl(url)));\n } catch (e) {\n return null;\n }\n }\n\n private _tryDecodeUrl(url: string): string {\n try {\n return decodeUriComponentRecursive(url);\n } catch(err) {\n console.error('Failed to decode url: ' + url);\n return url;\n }\n }\n\n buildFullUri(partialUri: string): Uri {\n const candidate = partialUri?.toString() || '/';\n return new Uri(new URL(candidate, this.currentUri.toString()));\n }\n\n private _checkUrlIsNullString(url: string, functionName: string): void {\n\n try {\n if(url === '/null' || url === 'null' || url === '/null/' || url === 'null/') {\n let message = new Error(`null route detected! Action=${functionName}; CurrentLocation=${this._window.location.href}; DocumentReferrer: ${document.referrer}`).stack;\n if(this._sendTechnicalEvent) {\n this._sendTechnicalEvent('NULL_ROUTE_DETECTED', functionName, message);\n }\n\n console.error(message);\n\n }\n } catch (err) {\n console.error('_checkUrlIsNullString Failed', err);\n }\n\n }\n\n private _applyLocationOverride(url: string): string {\n return this._getLocationOverrideStrategy().overrideLocation(url);\n }\n\n\n private _getLocationOverrideStrategy(): ILocationOverrideStrategy {\n const basePath = this._localStorage.getItem(ORBIT_LOCATION_OVERRIDE_BASE);\n if(basePath) {\n return new LocationOverrideStrategy(basePath);\n } else {\n return new NoLocationOverrideStrategy();\n }\n }\n\n get isHomePage(): boolean {\n return this._getLocationOverrideStrategy().isHomePage(this.currentUri.pathName);\n }\n}\n\ninterface ILocationOverrideStrategy {\n overrideLocation(url: string): string;\n isHomePage(pathName: UriPath): boolean;\n}\n\n\nclass LocationOverrideStrategy implements ILocationOverrideStrategy {\n\n constructor(basePath: string) {\n this._basePath = new UriPath(basePath.toLowerCase());\n }\n\n private readonly _basePath: UriPath;\n\n isHomePage(pathName: UriPath): boolean {\n return this._basePath.equals(pathName);\n }\n\n overrideLocation(url: string): string {\n if (url.startsWith('#')) {\n return url;\n }\n\n let newUrl = this._tryParseUrl(url);\n if(newUrl) {\n if (!newUrl.pathname.toLowerCase().startsWith(this._basePath.toString())) {\n newUrl.pathname = this._basePath.append(newUrl.pathname).toString();\n }\n\n return sanitizeUrl(newUrl.href.toString());\n } else {\n if(!url.toLowerCase().startsWith(this._basePath.toString())) {\n return this._basePath.append(url).toString();\n }\n }\n\n return url;\n }\n\n private _tryParseUrl(url): URL {\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n }\n\n}\n\n\nclass NoLocationOverrideStrategy implements ILocationOverrideStrategy {\n isHomePage(pathName: UriPath): boolean {\n return pathName.isEmpty;\n }\n\n overrideLocation(url: string): string {\n return url;\n }\n}","import {decodeUriComponentRecursive} from '../../../../utils/url-utils';\n\ninterface ParameterDescriptor {\n originalName: string;\n value: string;\n}\n\nexport class UriParams {\n\n constructor(queryParamsString: string) {\n queryParamsString = (queryParamsString || '').trim();\n\n\n if(queryParamsString[0] === '?') {\n queryParamsString = queryParamsString.substring(1);\n }\n\n if(queryParamsString) {\n queryParamsString.split('&').forEach(paramString => {\n let keyValue = paramString.split('=');\n let key = keyValue[0];\n let value = keyValue[1];\n if(keyValue.length > 2) {\n value = keyValue.slice(1).join('=');\n }\n this._params[key.toLowerCase()] = {\n originalName: key,\n value: value\n };\n });\n }\n }\n\n private _params: {[key: string]: ParameterDescriptor} = {};\n\n getAllParams(): ParameterDescriptor[] {\n return Object.values(this._params);\n }\n\n getParamValue(paramName: string): string {\n let paramDescriptor = this._params[paramName.toLowerCase()];\n if(!paramDescriptor) {\n return undefined;\n }\n return decodeUriComponentRecursive(paramDescriptor.value);\n }\n\n toString() {\n const allParams = this.getAllParams();\n if(allParams.length === 0) {\n return '';\n }\n return '?' + allParams.map(p => p.originalName + '=' + p.value).join('&');\n }\n\n removeParam(paramName: string): UriParams {\n let clonedParams = {...this._params};\n delete clonedParams[paramName?.toLowerCase()];\n const newQueryParams = Object.keys(clonedParams).map(paramName => {\n const paramDescriptor = clonedParams[paramName];\n return `${paramDescriptor.originalName}=${paramDescriptor.value}`;\n });\n return new UriParams(newQueryParams.join('&'));\n }\n\n hasParam(name: string): boolean {\n return Boolean(this._params[name.toLowerCase()]);\n }\n\n addParam(name: string, value: string) {\n this._params[name.toLowerCase()] = {\n originalName: name,\n value: value\n }\n }\n\n equals(theOther: UriParams): boolean {\n let keys1 = Object.keys(this._params);\n let keys2 = Object.keys(theOther._params);\n\n if(keys1.length !== keys2.length) {\n return false;\n }\n\n for(let i = 0; i < keys1.length; i++) {\n let paramName = keys1[i];\n let val1 = this._params[paramName].value;\n let val2 = theOther._params[paramName] && theOther._params[paramName].value;\n if (val1 !== val2) {\n return false;\n }\n }\n\n return true;\n }\n\n get isEmpty(): boolean {\n return this.getAllParams().length === 0;\n }\n}\n","import {Check} from '@sparkware/app-utils';\nimport {HOME_PAGE} from '../../../themes/css-global-classes';\n\nexport class UriPath {\n constructor(path: string) {\n this._path = (path || '/').trim();\n }\n\n private readonly _path: string;\n toString(): string {\n if(this._path[0] !== '/') {\n return '/' + this._path;\n }\n\n return this._path;\n }\n\n getBase(): UriPath {\n let parts = this.toString().split('/');\n return new UriPath(parts[0] +'/' + parts[1]);\n }\n\n toArray(): string[] {\n let parts = this.toString().split('/').filter(part => part);\n return ['/', ...parts];\n }\n\n equals(theOther: UriPath): boolean {\n if(Check.isNullOrUndefined(theOther)) {\n return false;\n }\n return this._appendSlashToTheEnd(this.toString()).toLowerCase() === this._appendSlashToTheEnd(theOther.toString()).toLowerCase();\n }\n\n get isEmpty(): boolean {\n return this._path === '/';\n }\n\n toCssClassName(): string {\n\n let urlWithoutTrailingSlashes = this.toString();\n\n if(urlWithoutTrailingSlashes[0] === '/') {\n urlWithoutTrailingSlashes = urlWithoutTrailingSlashes.substring(1)\n }\n\n if(urlWithoutTrailingSlashes[urlWithoutTrailingSlashes.length - 1] === '/') {\n urlWithoutTrailingSlashes = urlWithoutTrailingSlashes.substring(0, urlWithoutTrailingSlashes.length - 1);\n }\n\n\n if(urlWithoutTrailingSlashes) {\n return urlWithoutTrailingSlashes.toLowerCase().replace(/\\//g, '-') + '-page';\n } else {\n return HOME_PAGE;\n }\n }\n\n static areEquals(p1: UriPath, p2: UriPath): boolean {\n if(Check.isNullOrUndefined(p1)) {\n if(Check.isNullOrUndefined(p2)) {\n return true;\n } else {\n return false;\n }\n } else {\n return p1.equals(p2);\n }\n }\n\n private _appendSlashToTheEnd(url: string): string {\n if(url[url.length - 1] !== '/') {\n url = url + '/';\n }\n\n return url;\n }\n\n append(other: UriPath | string): UriPath {\n if(!(other instanceof UriPath)) {\n other = new UriPath(other);\n }\n\n\n\n return new UriPath((this.toString() + other.toString()).replace(/\\/\\//g, '/'));\n }\n}\n","import {Check} from '@sparkware/app-utils';\nimport {decodeUriComponentRecursive} from '../../../../utils/url-utils';\n\nexport class UriHash {\n constructor(hash: string) {\n this._hash = this._tryDecodeHash(hash || '');\n if(this._hash === '#') {\n this._hash = '';\n }\n }\n\n\n get value(): string {\n if(this._hash[0] === '#') {\n return this._hash.substring(1);\n } else {\n return this._hash;\n }\n }\n\n private _hash: string;\n\n toString() {\n if(!this._hash) {\n return this._hash;\n }\n\n if(this._hash[0] === '#') {\n return this._hash;\n } else {\n return '#' + this._hash;\n }\n }\n\n static areEquals(h1: UriHash, h2: UriHash): boolean {\n if(Check.isNullOrUndefined(h1)) {\n if(Check.isNullOrUndefined(h2)) {\n return true;\n } else {\n return false;\n }\n } else {\n return h1.equals(h2);\n }\n }\n\n equals(theOther: UriHash) {\n if(Check.isNullOrUndefined(theOther)) {\n return false;\n }\n\n return this.toString().toLowerCase() === theOther.toString().toLowerCase();\n }\n\n get isEmpty(): boolean {\n return Check.isEmpty(this._hash);\n }\n\n private _tryDecodeHash(hash: string): string {\n try {\n return decodeUriComponentRecursive(hash);\n } catch(err) {\n console.error('Failed to decode hash: ' + hash);\n return hash;\n }\n }\n}\n","import {UriPath} from '../uri-path/uri-path';\nimport {UriParams} from '../uri-params/uri-params';\nimport {UriHash} from '../uri-hash/uri-hash';\nimport {Check} from '@sparkware/app-utils';\nimport {sanitizeUrl} from '../../../../utils/url-utils';\n\nexport class Uri {\n\n constructor(url: URL) {\n this._originalUrl = url;\n this._pathName = new UriPath(this._originalUrl.pathname);\n this._queryParams = new UriParams(this._originalUrl.search);\n this._hash = new UriHash(this._originalUrl.hash);\n }\n\n private _originalUrl: URL;\n\n get hostName(): string {\n return this._originalUrl.hostname.toLowerCase();\n }\n\n get origin(): string {\n return this._originalUrl.origin.toLowerCase();\n }\n\n private readonly _pathName: UriPath;\n get pathName(): UriPath {\n return this._pathName;\n }\n\n private readonly _queryParams: UriParams;\n get queryParams(): UriParams {\n return this._queryParams;\n }\n\n private readonly _hash: UriHash;\n get hash(): UriHash {\n return this._hash;\n }\n\n toString() {\n let ret:string = sanitizeUrl(this._originalUrl.href);\n return ret;\n }\n\n equals(theOther: Uri): boolean {\n if(Check.isNullOrUndefined(theOther)) {\n return false;\n }\n\n return this.origin === theOther.origin\n && this.pathName.equals(theOther.pathName)\n && this.queryParams.equals(theOther.queryParams)\n && this.hash.equals(theOther.hash);\n }\n\n getUrlWithoutHash() {\n return this._originalUrl.origin + this._originalUrl.pathname + this._originalUrl.search;\n }\n\n removeSearchParam(paramName: string): Uri {\n let newQueryParams = this.queryParams.removeParam(paramName).toString();\n return new Uri(new URL(this._originalUrl.origin + this._originalUrl.pathname + newQueryParams + this._originalUrl.hash));\n }\n\n getUrlWithoutSearchAndHash() {\n return this._originalUrl.origin + this._originalUrl.pathname;\n }\n\n static areEquals(u1: Uri, u2: Uri): boolean {\n if(Check.isNullOrUndefined(u1)) {\n if(Check.isNullOrUndefined(u2)) {\n return true;\n } else {\n return false;\n }\n } else {\n return u1.equals(u2);\n }\n }\n}\n","import {ILoggerService, LogError} from './logger.service.interface';\n\nenum LOG_LEVELS {\n DEBUG = 1,\n INFO = 2,\n WARN =3,\n ERROR = 4\n}\n\nexport class ConsoleLoggerService implements ILoggerService {\n\n constructor(private _debugMode: boolean) {\n\n }\n\n errorLogs: LogError[] = [];\n\n debug(message: string, ...optionalParams: any[]): void {\n this._log('debug', message, optionalParams);\n }\n\n info(message: string, ...optionalParams: any[]): void {\n this._log('info', message, optionalParams);\n }\n\n warning(message: string, ...optionalParams: any[]): void {\n this._log('warn', message, optionalParams);\n }\n\n error(message: string, ...optionalParams: any[]): void {\n this._addErrorLog(message, optionalParams);\n\n this._log('error', message, optionalParams);\n }\n\n\n /**\n * Private method, provides single point of access to the \"console.log\" API.\n * Prevents mess around the code and a clean way to prevent the output of the log or the severity level.\n */\n private _log(severity: string, message: string, ...optionalParams: any[]) {\n if (this._isConsoleEnabled(severity.toUpperCase())) {\n console[severity](message, optionalParams);\n }\n }\n\n private _isConsoleEnabled(severity: string): boolean {\n return LOG_LEVELS[severity] >= LOG_LEVELS[window['LOG_LEVEL']]\n }\n\n private _addErrorLog(message: string, ...optionalParams: any[]) {\n if(!this._debugMode) {\n return;\n }\n\n if (this.errorLogs.length === 30) {\n this.errorLogs.splice(0, 1);\n }\n\n this.errorLogs.push({message: message, date: new Date(), errorDetails: optionalParams});\n }\n\n}\n","export const MINI_CIP_BASE_ROUTE = '/cip';\nexport const MINI_CIS_BASE_ROUTE = '/cis';\n\nexport function isMiniOrbitBasePath(basePath: string) {\n\n if (basePath === MINI_CIP_BASE_ROUTE) {\n return true;\n }\n\n if (basePath === MINI_CIS_BASE_ROUTE) {\n return true;\n }\n\n return false;\n}","import {StorageServiceBase} from \"./storage-service-base\";\nimport {ILoggerService} from \"../logger/logger.service.interface\";\n\nexport class LocalStorageService extends StorageServiceBase {\n constructor(logger: ILoggerService) {\n super(localStorage, logger);\n }\n\n}\n","import {IStorageService} from \"./storage.service.interface\";\nimport {ILoggerService} from \"../logger/logger.service.interface\";\nimport {Nullable, NullableString} from \"../../../common/types/nullable-types\";\n\nexport class StorageServiceBase implements IStorageService {\n constructor(private readonly storage: Storage,\n private readonly logger: ILoggerService) {\n\n }\n \n getItem(key: string): NullableString {\n return this.storage.getItem(key);\n }\n\n setItem(key: string, value: any): void {\n this.storage.setItem(key, value);\n }\n\n\n getJson(key: string): Nullable {\n let value = this.getItem(key);\n if (!value) {\n return null;\n }\n\n try {\n return JSON.parse(value) as T;\n } catch (err) {\n this.logger.error(`Failed to parse to JSON the local storage key ${key} with value ${value}`, err);\n return null;\n }\n }\n\n setJson(key: string, value: object): void {\n this.setItem(key, JSON.stringify(value));\n }\n\n\n removeItem(key: string): void {\n this.storage.removeItem(key);\n }\n}","import {IWindowService} from './window.service.interface';\nimport {isAbsolutUrl} from '../../../utils/url-utils';\nimport { CGP_OBJECT_NAME } from '../../app-bootstrap/constants';\nimport { API } from '../../../sdk/src/core/api';\nimport { EventListenerRegistration } from '../../../utils/event-listener-registration';\nimport {Check} from \"@sparkware/app-utils\";\n\ndeclare global {\n interface Window {\n LOG_LEVEL: string;\n [CGP_OBJECT_NAME]: API;\n [key: string]: any;\n }\n}\n\nexport class WindowService implements IWindowService {\n\n constructor() {\n this._eventListenerRegistration = new EventListenerRegistration(window);\n }\n\n\n getGlobalProperty(name: string): any {\n return window[name];\n }\n\n setGlobalProperty(name: string, value: any): void {\n window[name] = value;\n }\n\n getComputedStyle(element: HTMLElement): CSSStyleDeclaration {\n return window.getComputedStyle(element);\n }\n\n getElementWidth(element: HTMLElement): number {\n return parseInt(this.getComputedStyle(element).width.replace('px', ''));\n }\n\n getElementHorizontalTranslationAmount(element: HTMLElement): number {\n let elementTransform = this.getComputedStyle(element).getPropertyValue(\"-webkit-transform\") || window.getComputedStyle(element).getPropertyValue(\"transform\");\n // we need split(\",\")[12] and [4] to support ie\n return parseInt(elementTransform.split(\",\")[12] || elementTransform.split(\",\")[4]) || 0;\n }\n\n get location(): Location {\n return window.location;\n }\n\n private readonly _eventListenerRegistration: EventListenerRegistration;\n\n get subscribeTo(): EventListenerRegistration {\n return this._eventListenerRegistration;\n }\n\n get innerWidth(): number {\n return window.innerWidth;\n }\n\n get innerHeight(): number {\n return window.innerHeight;\n }\n\n reload() {\n window.location.reload();\n }\n\n open(url?: string, target?: string, features?: string): void {\n window.open(url, target, features);\n }\n\n openSelf(url?: string): void {\n this.open(url, '_self')\n }\n\n get origin(): string {\n return window.location.origin;\n }\n\n get pathname(): string {\n return window.location.pathname;\n }\n\n get history(): History {\n return window.history;\n }\n\n scrollTo(x: number, y: number): void {\n window.scrollTo(x, y);\n }\n\n get scrollY(): number {\n return window.scrollY;\n }\n \n get console(): Console {\n return window.console;\n } \n\n scrollBy(x: number, y: number): void {\n window.scrollBy(x, y)\n }\n\n isAbsolutUrl(url: string): boolean {\n return isAbsolutUrl(url);\n }\n\n getComputedSize(element: HTMLElement): { width: number; height: number } {\n if (Check.isNullOrUndefined(element)) {\n return {\n width: 0,\n height: 0\n };\n }\n\n const elementStyle: any = this.getComputedStyle(element);\n return {\n width: parseInt(elementStyle.width.replace('px', '')),\n height: parseInt(elementStyle.height.replace('px', ''))\n };\n }\n\n createBlankWindow(): Window | null {\n return window.open('about:blank');\n }\n\n openInNewTab(url: string) {\n this.open(url);\n }\n}\n","export const HOME_PAGE = 'home-page';\nexport const LOBBY_PAGE = 'lobby-page';\nexport const SLOTS_PAGE = 'slots-page';\nexport const BLACKJACK_PAGE = 'blackjack-page';\nexport const ROULETTE_PAGE = 'roulette-page';\nexport const JACKPOTS_PAGE = 'jackpots-page';\nexport const CASINO_GAMES_PAGE = 'casino-games-page';\nexport const PROGRESSIVE_VIDEO_SLOTS_PAGE = 'progressive-video-slots-page';\nexport const NEW_GAMES_PAGE = 'new-games-page';\nexport const GAMING_HISTORY_PAGE = 'gaming-history-page';\nexport const GAMES_OPEN_SESSIONS_PAGE = 'games-open-sessions-page';\nexport const TIPPING_HISTORY_PAGE = 'tipping-history-page';\nexport const SESSION_HISTORY_PAGE = 'session-history-page';\nexport const CHALLENGE_PAGE = 'challenge-page';\nexport const VIDEO_POKER_PAGE = 'video-poker-page';\nexport const SCRATCH_CARDS_PAGE = 'scratch-cards-page';\nexport const EXCLUSIVE_888_GAMES_PAGE = '888-exclusive-games';\nexport const NEW_LIVE_CASINO_PAGE = 'live-casino-new-page';\nexport const INSTANT_WIN_GAMES_PAGE = 'instant-win-games-page';\nexport const VIRTUAL_SPORTS_PAGE = 'virtual-sports-page';\nexport const NEW_LIVE_AB_CASINO_PAGE = 'live-casino-new-ab-page';\n\nexport const ORBIT_TAP = 'orbit-tap';\nexport const CGP_GAME_OPEN = 'cgp-game-open';\nexport const JACKPOTS_ITEM = 'jackpots-item';\nexport const LIVE_CASINO_ITEM = 'live-casino-item';\n\nexport const LIVE_STREAMING_ITEM = 'live-streaming-item';\nexport const STATIC_VIDEO_ITEM = 'static-video-item';\n\nexport const EXCLUSIVES_LIST_ICON = 'exclusives-list-icon';\n\nexport const MOVE_TOP = 'move-top';\nexport const STICKY = 'sticky';\nexport const CGP_OVERLAY_OPEN = 'cgp-overlay-open';\nexport const EMBEDDED_HYBRID = 'cgp-embedded-hybrid';\nexport const MODAL_DIALOG = 'modal-dialog';\nexport const MAIN_SCREEN = 'main-screen';\nexport const MINI_ORBIT = 'mini-orbit';\nexport const USER_MENU_OPEN = 'user-menu-open';\nexport const ACTIVE = 'active';\nexport const LIVE_CASINO_PAGE_WRAPPER = 'live-casino-page-wrapper';\nexport const OPEN_MENU = 'open-menu';\nexport const DRAGGING = 'dragging';\nexport const SDK_CSS_OVERRIDE = 'sdk-css-override';","import {Check} from \"@sparkware/app-utils\";\n\nexport class HttpError {\n public readonly statusCode: number;\n public readonly message: string;\n\n constructor({status, statusText}: Response) {\n this.statusCode = status;\n this.message = status + ' - ' + statusText;\n }\n}\n\n\nexport async function parseFetchResponse(response: Response): Promise {\n\n const contentTypeHeader = response.headers.get('content-type') || '';\n\n if(Check.isEmpty(contentTypeHeader) || contentTypeHeader.indexOf('application/json') >= 0) {\n return await response.json();\n } else if(contentTypeHeader.indexOf('text/plain') >= 0) {\n return await response.text();\n }\n\n let charset = 'utf-8';\n if(contentTypeHeader.indexOf('charset=') > -1) {\n [,charset] = /charset=([^ ]+)/.exec(contentTypeHeader);\n }\n\n const blob = await response.blob();\n return await decodeBlob(blob, charset);\n}\n\n\nfunction decodeBlob(source: Blob, encoding: string = 'utf-16'): Promise {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onloadend = () => {\n resolve(reader.result as string);\n };\n reader.readAsText(source, encoding);\n })\n}","export const ORBIT_VERSION = '4.1863.20';\n","export interface DomEventSubscription {\n dispose();\n}\n\nexport class EventListenerRegistration {\n constructor(element: EventTarget) {\n this._element = element;\n }\n\n private _element: EventTarget;\n\n scroll(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('scroll', handler);\n }\n\n resize(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('resize', handler);\n }\n\n click(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('click', handler);\n }\n\n postMessage(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('message', handler);\n }\n\n devicechanged(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('ondevicechanged', handler);\n\n }\n\n popstate(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('popstate', handler);\n }\n\n hardwareBackButton(handler: EventListenerOrEventListenerObject): DomEventSubscription {\n return this._subscribe('backbutton', handler);\n }\n\n unload = (handler: EventListenerOrEventListenerObject): DomEventSubscription => {\n // Why use \"pagehide\" instead of unload\n // https://dev.azure.com/888holdings/GamingNDL/_git/ff235275-fba4-4733-a4ee-b6fd0d1639bf/pullrequest/38438\n // https://web.dev/bfcache/?utm_source=lighthouse&utm_medium=lr#never-use-the-unload-event\n\n // Later we should switch to visibilityChange which covers even more cases, but it's not supported below Safari 14:\n // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon#sending_analytics_at_the_end_of_a_session\n return this._subscribe('pagehide', handler);\n }\n\n focusGained = (handler: EventListenerOrEventListenerObject): DomEventSubscription => {\n return this._subscribe('focus', handler);\n }\n\n focusLost = (handler: EventListenerOrEventListenerObject): DomEventSubscription => {\n return this._subscribe('blur', handler);\n }\n\n\n protected _subscribe = (eventName: string, handler: EventListenerOrEventListenerObject): DomEventSubscription => {\n this._element.addEventListener(eventName, handler);\n return {\n dispose: () => this._element?.removeEventListener(eventName, handler)\n }\n }\n\n}\n","import {Check} from '@sparkware/app-utils';\nconst overrideJson = require('json-override');\n\nexport function decodeUriComponentRecursive(url: string): string {\n if(!url) {\n return url\n }\n\n let decodedUrl = decodeURIComponent(url);\n\n while(url !== decodedUrl) {\n url = decodedUrl;\n decodedUrl = decodeURIComponent(url);\n }\n\n return decodedUrl;\n\n}\n\nexport function safeUriEncode(url: string): string {\n if(!url) {\n return url;\n }\n\n try {\n return encodeURI(url);\n } catch (err) {\n console.error(`Failed to URI encode the following string: ${url}`);\n return url;\n }\n\n\n}\n\nfunction encodeUriPropsForObject(obj: any): any {\n let clone = overrideJson({}, obj);\n\n Object.keys(clone).forEach(propName => {\n clone[propName] = encodeUriRecursive(clone[propName]);\n });\n\n return clone;\n}\n\nfunction encodeUriPropsForArray(arr: any): any {\n let clone = [...arr];\n for(let i = 0; i < clone.length; i++) {\n clone[i] = encodeUriRecursive(clone[i]);\n }\n return clone;\n}\n\n\nexport function encodeUriRecursive(value: any): any {\n\n if(Check.isString(value)) {\n return safeUriEncode(value);\n } else if(Check.isObject(value)) {\n return encodeUriPropsForObject(value);\n } else if(Check.isArray(value)) {\n return encodeUriPropsForArray(value);\n } else {\n return value;\n }\n}\n\nexport function joinUrlParts(baseUrl: string, path: string, hash?: string): string {\n let urlBuilder = new URL(baseUrl);\n\n if(path) {\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n urlBuilder.pathname = (urlBuilder.pathname + path).replace('//', '/');\n }\n\n urlBuilder.hash = hash || '';\n return urlBuilder.href;\n}\n\nexport function addQueryParam(url: string, queryParam: string): string {\n return url?.includes('?') ? (url + '&' + queryParam) : (url + '?' + queryParam);\n}\n\nexport function isAbsolutUrl(url: string): boolean {\n if(url.startsWith('#')) {\n return false;\n }\n\n try {\n new URL(url);\n return true;\n } catch (err) {\n return false;\n }\n}\n\n/** This method should be used to sanitize URLs. This is required in order to pass checkmarx scan.\nFor now it does minimal sanitization, but it can be expanded in the future, according to good practices to prevent security issues**/\nexport function sanitizeUrl(url: string): string {\n return url.toString();\n}"],"names":["HttpService","url","options","this","_fetchResponse","fetchedResponse","_parseResponse","URLSearchParams","Headers","method","fetch","response","ok","HttpError","parseFetchResponse","ORBIT_LOCATION_OVERRIDE_BASE","LocationService","observable","action","_window","_localStorage","_sendTechnicalEvent","_previousUri","_onBeforeChangingLocationSubscribers","_lastUpdateCurrentUriPromise","Promise","resolve","makeObservable","_initCurrentUri","_checkUrlIsNullString","location","pathname","addEventListener","_updateCurrentUriAsync","newUri","currentUri","_setCurrentUri","_createNewUriForCurrentLocation","href","toString","history","replaceState","basePathName","pathName","getBase","toLowerCase","setItem","locationOverride","sanitizeUrl","tryParseUrl","_applyLocationOverride","targetUri","forEach","handler","err","console","error","_fireOnBeforeChangingLocation","reject","setTimeout","push","newUrl","isAbsolutUrl","Boolean","search","hash","historyApiCallback","trim","_isRedirectUrl","redirect","_isSameAsCurrentUrl","then","_executeNavigation","pushState","index","go","parsedUrl","origin","Uri","URL","_tryDecodeUrl","e","decodeUriComponentRecursive","partialUri","candidate","functionName","message","Error","document","referrer","stack","_getLocationOverrideStrategy","overrideLocation","basePath","getItem","LocationOverrideStrategy","NoLocationOverrideStrategy","isHomePage","_basePath","UriPath","equals","startsWith","_tryParseUrl","append","isEmpty","UriParams","queryParamsString","_params","substring","split","paramString","keyValue","key","value","length","slice","join","originalName","Object","values","paramName","paramDescriptor","allParams","getAllParams","map","p","clonedParams","newQueryParams","keys","name","theOther","keys1","keys2","i","path","_path","parts","filter","part","Check","_appendSlashToTheEnd","urlWithoutTrailingSlashes","replace","HOME_PAGE","other","p1","p2","UriHash","_hash","_tryDecodeHash","h1","h2","_originalUrl","_pathName","_queryParams","hostname","queryParams","removeParam","u1","u2","LOG_LEVELS","ConsoleLoggerService","_debugMode","errorLogs","optionalParams","_log","_addErrorLog","severity","_isConsoleEnabled","toUpperCase","window","splice","date","Date","errorDetails","MINI_CIP_BASE_ROUTE","MINI_CIS_BASE_ROUTE","isMiniOrbitBasePath","LocalStorageService","logger","localStorage","StorageServiceBase","storage","JSON","parse","stringify","removeItem","WindowService","_eventListenerRegistration","EventListenerRegistration","element","getComputedStyle","parseInt","width","elementTransform","getPropertyValue","innerWidth","innerHeight","reload","target","features","open","x","y","scrollTo","scrollY","scrollBy","height","elementStyle","LOBBY_PAGE","SLOTS_PAGE","BLACKJACK_PAGE","ROULETTE_PAGE","JACKPOTS_PAGE","CASINO_GAMES_PAGE","PROGRESSIVE_VIDEO_SLOTS_PAGE","NEW_GAMES_PAGE","GAMING_HISTORY_PAGE","GAMES_OPEN_SESSIONS_PAGE","TIPPING_HISTORY_PAGE","SESSION_HISTORY_PAGE","CHALLENGE_PAGE","VIDEO_POKER_PAGE","SCRATCH_CARDS_PAGE","EXCLUSIVE_888_GAMES_PAGE","NEW_LIVE_CASINO_PAGE","INSTANT_WIN_GAMES_PAGE","VIRTUAL_SPORTS_PAGE","NEW_LIVE_AB_CASINO_PAGE","ORBIT_TAP","CGP_GAME_OPEN","JACKPOTS_ITEM","LIVE_CASINO_ITEM","LIVE_STREAMING_ITEM","STATIC_VIDEO_ITEM","EXCLUSIVES_LIST_ICON","MOVE_TOP","STICKY","CGP_OVERLAY_OPEN","EMBEDDED_HYBRID","MODAL_DIALOG","MAIN_SCREEN","MINI_ORBIT","USER_MENU_OPEN","ACTIVE","LIVE_CASINO_PAGE_WRAPPER","OPEN_MENU","DRAGGING","SDK_CSS_OVERRIDE","status","statusText","statusCode","contentTypeHeader","headers","get","indexOf","json","text","charset","exec","blob","decodeBlob","source","encoding","reader","FileReader","onloadend","result","readAsText","ORBIT_VERSION","_element","unload","_subscribe","focusGained","focusLost","eventName","dispose","removeEventListener","overrideJson","require","decodedUrl","decodeURIComponent","encodeUriRecursive","encodeURI","safeUriEncode","obj","clone","propName","encodeUriPropsForObject","arr","encodeUriPropsForArray","addQueryParam","queryParam","includes"],"sourceRoot":""}