{"version":3,"file":"8997_e7944fbc55735b1115ff.bundle.js","mappings":"2PAkBA,SAASA,EAAYC,GACpB,OAAO,IAAIC,SAAQC,IAClBC,WAAWD,EAASF,EAAG,GAEzB,CA+BA,IAAII,GAAoB,EAExB,IAAIC,EAAY,CACfC,QAAS,CACRC,oBAAoB,GAErBC,KAAM,SAAUF,GACfG,OAAOC,OAAOC,KAAKL,QAASA,GAC5BK,KAAKC,gBAELD,KAAKE,qBACLF,KAAKG,iBACLH,KAAKI,eACLJ,KAAKK,aACLL,KAAKM,qBACLN,KAAKO,eACLP,KAAKQ,sBACLR,KAAKS,oBACLT,KAAKU,wBAEL,WAEA,QAAiB,QAAS,aAAa,CAACC,EAASC,KAChDA,EAAMC,iBAAiB,KAGxB,QAAiBC,SAAU,QAAS,oBAAoBH,IACvD,IAAII,EAAUJ,EAAQK,QAAQD,QAC9B,IAAUE,gBAAgBF,IAC1B,OAAe,6BAA8B,CAAEG,KAAM,WAAY,IAGlEJ,SAASK,cAAc,4CAA4CC,iBAAiB,SAAS,MAC5F,QAAU,kBAAmB,IAAK,EAAE,IACpCN,SAASK,cAAc,sCAAsCE,QAAQ,KAGtE,QAAiBP,SAAU,QAAS,6BAA6BH,IAChE,EAAEA,EAAQW,QAAQ,cAAcC,SAAS,OAAO,IAnEnD,WACC,GAAIC,SAASC,QACZ,IAAK,IAAIC,KAAMZ,SAASa,iBAAiB,sBACxC,QAAYD,EAAI,UAAU,EAG7B,CAgEEE,IAEA,QAAiBd,SAAU,QAAS,sBAAsBH,KACzD,QAAS,CACRkB,IAAK,uBACLC,KAAM,CACLC,OAAQpB,EAAQK,QAAQe,OACxBC,OAAQrB,EAAQK,QAAQgB,UAEvBC,MAAKH,IACHA,EAAKI,QAAQ,OAAe,cAAe,CAAEhB,KAAM,aAClD,OAAe,SAAU,CAAEA,KAAM,UAAW,GAChD,KAGH,QAAiBJ,SAAU,QAAS,cAAc,CAACH,EAASC,KAC3DA,EAAMuB,gBAAgB,GAExB,EACA7B,mBAAoB,WACnB,IAAI8B,EAAOpC,KACN,IAAUqC,SAcfC,OAAOlB,iBAAiB,UAAU,IAAMpB,KAAKuC,yBAC7CD,OAAOE,cAAc,IAAIC,MAAM,YAd9BH,OAAOlB,iBAAiB,UAAU,KACjC,IAAIsB,EAAqBN,EAAKO,8BAC9B,QAAY,mBAAoB,OAAQD,IACxC,QAAY,OAAQ,wBAAyBA,GAEzC5B,SAASK,cAAc,0BAC1B,QAAY,OAAQ,4BAA6BuB,EAClD,GAQH,EACAH,qBAAsB,WACrB,IAAIG,EAAqB1C,KAAK2C,8BAC9B,QAAY,0BAA2B,OAAQD,GAAsB1C,KAAK4C,2BAA6B5C,KAAKL,QAAQC,qBACpH,QAAY,uBAAwB,OAAQ8C,IAE5C,QAAY,OAAQ,wBAAyBA,GACzC5B,SAASK,cAAc,0BAC1B,QAAY,OAAQ,4BAA6BuB,EAEnD,EACAG,aAAc,YACb,QAAY,eAAgB,SAC7B,EACAC,qBAAsB,WACrB9C,KAAKL,QAAQC,oBAAsBI,KAAKL,QAAQC,kBACjD,EACA+C,2BAA4B,WAC3B,IAAII,EAASjC,SAASK,cAAc,oBACpC,GAAK4B,EACL,OAAOT,OAAOU,QAAUD,EAAOE,YAChC,EACAL,uBAAwB,WACvB,IAAIG,EAASjC,SAASK,cAAc,oBACpC,GAAK4B,EACL,OAAOT,OAAOU,SAAW,UAAmBV,OAAOY,YAAoC,EAAtBH,EAAOE,YACzE,EACA1C,aAAc,WACb,IAAI4C,EAAarC,SAASa,iBAAiB,aAC3C,IAAK,IAAIyB,KAASD,EAAY,CAC7B,GAAIC,EAAMC,aAAeD,EAAME,YAAa,OAE5C,IAAIC,EAAQH,EAAMjC,cAAc,kBAC5BqC,EAAWJ,EAAMjC,cAAc,qBACnCqC,GAAUC,UAAUpC,OAAO,aAC3BmC,GAAUC,UAAUC,IAAIC,SAAS,cAEjC,IAAIC,EAAgB,IAAMR,EAAMC,YAAcD,EAAME,YAChDO,EAAgB,KACnB,IAAIC,EAAWV,EAAMW,WAAa,EAC9BC,EAAcZ,EAAMW,WAAaH,KACrC,QAAYL,EAAO,aAAcO,IACjC,QAAYP,EAAO,aAAcO,IACjC,QAAYN,EAAU,aAAcQ,IACpC,QAAYR,EAAU,aAAcQ,EAAY,EAGjDT,GAAOU,GAAG,SAAS,KAClB,EAAEb,GAAOc,QAAQ,CAAEH,WAAYI,KAAKC,IAAI,EAAGhB,EAAMW,WAAaX,EAAME,cAAe,IAAK,KAAMO,EAAc,IAG7GL,GAAUS,GAAG,SAAS,KACrB,EAAEb,GAAOc,QAAQ,CAAEH,WAAYI,KAAKE,IAAIT,IAAiBR,EAAMW,WAAaX,EAAME,cAAe,IAAK,KAAMO,EAAc,GAE5H,CACD,EACApD,kBAAmB,YAClB,QAAiBK,SAAU,QAAS,oBAAoB,KAEnC,MADD,QAAU,iBAE5B,QAAU,eAAgB,IAAK,EAAE,GAAG,IAGpC,QAAU,eAAgB,IAAK,EAAE,GAAG,GAErCd,KAAKsE,oBACLC,SAASC,QAAQ,KAGlB,QAAiB1D,SAAU,QAAS,yBAAyB,KAEnC,MADD,QAAU,sBAEjC,QAAU,oBAAqB,IAAK,IAGpC,QAAU,oBAAqB,IAAK,GAErCd,KAAKsE,oBACLC,SAASC,QAAQ,GAEnB,EACA9D,qBAAsB,YACrB,QAAiBI,SAAU,QAAS,4BAA4B,KAEjD,MADD,QAAU,wBAEtB,QAAU,sBAAuB,IAAK,IAGtC,QAAU,sBAAuB,IAAK,GAEvCd,KAAKyE,4BACLF,SAASC,QAAQ,GAEnB,EACAE,YAAa,SAASC,GACjBrC,OAAOsC,QACVD,KAIDrC,OAAOuC,SAAU,EACjBvC,OAAOwC,UAAY,OACnBxC,OAAOyC,gBAAiB,EACxBzC,OAAOsC,QAAU,CAChBI,eAAgB,WACfJ,QAAQK,YACRN,GACD,IAGD,OAAQ,CACPO,OAAQ,uCACRC,gBAAiB7C,OAAO8C,WAE1B,EACAnF,cAAe,WACd,IAAImC,EAAOpC,MAEX,QAAiBc,SAAU,QAAS,qBAAqBH,KACxD,QAAUA,EAAQK,QAAQqE,KAAM1E,EAAQK,QAAQsE,MAAO3E,EAAQK,QAAQuE,SAAW,GAAG,KAGtF,QAAiBzE,SAAU,SAAU,0BAA0BH,KAC9D,QAASA,EAAQK,QAAQwE,OAAQ7E,EAAQ2E,MAAM,KAGhD,QAAiBxE,SAAU,QAAS,qBAAqBH,KC1P3D,SAAmBA,EAAS2E,IACxB,QAAY3E,EAAS,eAAgB2E,IACrC,QAAY3E,EAAS,gBAA0B8E,MAATH,OAAqBG,GAAaH,GACxE3E,EAAQ6B,cAAc,IAAIC,MAAM,oBAAqB,CAAEiD,SAAS,IACpE,CDuPGC,CAAUhF,EAAQ,KAGnB,QAAiBG,SAAU,QAAS,mBAAmB,KACtD,IAAU8E,UAAU,KAGrB,QAAiB9E,SAAU,QAAS,sBAAsBH,IAAaX,KAAK6F,kBAAkB,EAAElF,GAAQ,KACxG,QAAiBG,SAAU,QAAS,uBAAuBH,IAAaX,KAAK8F,mBAAmB,EAAEnF,GAAQ,KAE1G,QAAiBG,SAAU,QAAS,2BAA2BH,IAAaX,KAAK+F,sBAAsB,EAAEpF,GAAQ,KACjH,QAAiBG,SAAU,SAAU,QAAQ,KAAQd,KAAKgG,iBAAgB,KAE1E,QAAiBlF,SAAU,QAAS,mBAAmBH,IACtD,IAAIkB,EAAM,EAAElB,GAASsF,KAAK,YAC1BjG,KAAKkG,YAAYrE,EAAI,IAGtBO,EAAK4D,mBAEL,QAAiBlF,SAAU,QAAS,0CAA0C,CAACH,EAASwF,KACvFA,EAAEhE,iBACF,IAAIiE,EAAY,EAAEtF,UAAUuF,SACxBC,EAAM,EAAE3F,GAAS4F,SACrB,EAAE,mCAAmCC,OACrC,IAAIC,EAAQH,EAAII,IAAM,GAClBC,EAASL,EAAIM,KAAO,EAAE,mCAAmCC,QAAU,GACnEJ,EAAQL,GAAaA,EAAYK,EAAQ,OAC5CA,EAAQH,EAAII,IAAM,KACfC,EAAS,IAAGA,EAAS,IACzB,EAAE,mCAAmCJ,QAAO,WAC3C,MAAO,CAAEG,IAAKD,EAAOG,KAAMD,EAC5B,GAAE,IAGH,EAAE7F,UAAUgG,SAAQ,SAAUX,GAC7B,IAAIY,EAAY,EAAE,oCAEbA,EAAUC,GAAGb,EAAEX,SAA8C,IAAnCuB,EAAUE,IAAId,EAAEX,QAAQ0B,QAAgB,EAAE,mCAAmCA,OAAS,GACpH,EAAEH,GAAWI,MAEf,KAEA,QAAiBrG,SAAU,QAAS,uBAAuB,MAC1D,QAAY,iBAAkB,UAE9B,IAAIsG,GAAS,EAAE,0BAA0BC,SAAS,UAClDrH,KAAKsH,mBAAmBF,EAAQ,EAAI,EAAE,KAGvC,QAAiBtG,SAAU,QAAS,8EAA8EH,IACjH,IAAUiF,WAEV5F,KAAKuH,gBAAgB5G,EAAQK,QAAQwG,KAAqC,IAA/B7G,EAAQK,QAAQyG,YAAkB,KAI9E,QAAiB3G,SAAU,QAAS,cAAcH,IACjD,EAAEA,GAASgD,SAAS,mBAAmB,KAIxC,QAAiB7C,SAAU,QAAS,yBAAyBH,IAC5D,IAAI+G,EAAO,EAAE/G,GAASsF,KAAK,gBACvB0B,EAAO,EAAEhH,GAASW,QAAQ,kBAC1B,EAAEX,GAAS0G,SAAS,UACvBrH,KAAK4H,cAAcF,EAAMC,GAAM,GAGhC3H,KAAK4H,cAAcF,EAAMC,EAAK,KAG/B,QAAiB7G,SAAU,QAAS,kBAAkB,CAACH,EAASwF,KAC/DA,EAAEhE,iBACF,EAAExB,GAASW,QAAQ,yBAAyBqC,SAAS,SAAS,IAG/DvB,EAAKyF,mBACLzF,EAAK0F,oBAEL,QAAiBhH,SAAU,QAAS,iBAAiB,KACpDd,KAAK0E,aAAY,IAAME,QAAQmD,qBAAoB,KAGpD,QAAiBjH,SAAU,QAAS,qBAAqB,CAACH,EAASwF,KAClEA,EAAEtF,kBACFuB,EAAK4F,cAAc,CAClBC,IAAK,EAAEtH,GAASsF,KAAK,YACrBiC,KAAM,EAAEvH,GAASsF,KAAK,aACtBkC,OAAQ,EAAExH,GAASsF,KAAK,gBACvB,KAGH,QAAiBnF,SAAU,QAAS,6CAA6CH,IAChFX,KAAKoI,gCAAgC,EAAEzH,GAASsF,KAAK,eAAe,KAGrE,QAAiBnF,SAAU,QAAS,gBAAgB,IAAM,IAAU8E,cAEpE,QAAiB9E,SAAU,QAAS,oBAAoBH,IACvD,IAAIwH,EAAS,EAAExH,GAASsF,KAAK,gBAE7B,QAAS,CAAEpE,IAAK,qCAAsCC,KAAM,CAAEqG,YAAWlG,MAAKH,IAC7E,GAAIA,EAAKI,OAAQ,CAChB,IAAImG,EAAM,EAAE,gCAAgCC,QAC5C,QAAUD,EAAK,CAAEnH,KAAM,aACvB,EAAE,8BAA8BG,QACjC,KAAO,CACN,IAAIgH,EAAM,EAAE,gCAAgCC,QAC5C,QAAUD,EAAK,CAAEnH,KAAM,WACxB,IACC,KAGH,QAAiBJ,SAAU,QAAS,2BAA2B,KApVjE,IAA4B0G,EACf,UAARA,IACH,QAAY,4BAA6B,gBAAgB,IACzD,QAAY,4BAA6B,iBAAiB,IAE1C,WAARA,IACR,QAAY,4BAA6B,gBAAgB,IACzD,QAAY,4BAA6B,iBAAiB,KAG1D,QAAY,4BAA6B,8BAGtC1G,SAASK,cAAc,0CAC1B,QAAU,gBAAiB,IAAK,KAGhC,QAAU,gBAAiB,GAAI,GAoUV,GAEtB,EACAoG,gBAAiB,SAASC,EAAMC,GAC1B,IAAUpF,QASd,8BAAuBJ,MAAK,EAAEsG,qBAC7BA,EAAeC,WAAW,QACzBvG,MAAK,KACLsG,EAAeE,cACfF,EAAeG,kBAAkB,QAE7BlB,GAAMe,EAAeI,cAAcnB,GACnCA,GAAQC,GAAec,EAAeK,kBACzCL,EAAeM,QAChB,GACC,KAlBH,IAAcC,KAAKC,QACnB,IAAcD,KAAKJ,kBAAkB,QAEjClB,GAAM,IAAcsB,KAAKH,cAAcnB,GACvCA,GAAQC,GAAe,IAAcqB,KAAKE,YAC7C,IAAcF,KAAKD,OAAO,IAAcC,KAAKG,gBAAgB/H,KAAM,IAAc4H,KAAKE,YAgBzF,EACA5I,aAAc,WAKb,IAAI8I,EAAgBC,UAAUD,cAQ9B,OAPKA,KACJ,QAAU,aAAc,MAAO,IAC/BA,EAA2C,QAA3B,QAAU,iBAEzB,QAAU,aAAc,KAAM,IAGzBA,QAXN,EAAE,0BAA0BE,YAAY,SAY1C,EACAjJ,eAAgB,WACf,IAAIkJ,EAAU7H,SAAS8H,QAAQC,UAC/B,EAAE,yCAAyC7B,KAAK2B,GAE5CA,EAAU,GACb,EAAE,wBAAwBD,YAAY,UAGnC7E,SAASiF,SAASC,WAAW,YAChC,wDAAqBxH,MAAK,EAAGyH,UAC5B,EAAE,oCAAqCA,EAAI/J,QAAQgK,cAAgB,IAAM,SAAUC,KAAK,WAAW,EAAK,GAG3G,EACAtF,kBAAmB,WAEE,MADD,QAAU,gBAE5B,EAAE,sBAAsB8E,YAAY,iBAAiBzF,SAAS,gBAG9D,EAAE,sBAAsByF,YAAY,gBAAgBzF,SAAS,iBAIrC,MADD,QAAU,qBAEjC,EAAE,2BAA2ByF,YAAY,iBAAiBzF,SAAS,gBAGnE,EAAE,2BAA2ByF,YAAY,gBAAgBzF,SAAS,gBAEpE,EACAc,0BAA2B,WAEZ,MADD,QAAU,uBAEtB,EAAE,8BAA8B2E,YAAY,iBAAiBzF,SAAS,gBAGtE,EAAE,8BAA8ByF,YAAY,gBAAgBzF,SAAS,gBAEvE,EACAkC,kBAAmB,SAAUgE,GAC5BA,EAAIC,YAAY,SACjB,EACA/D,sBAAuB,SAAU8D,GAChC,IAAIE,EAAW,EAAEF,GAAK5D,KAAK,kBAC3B,EAAE8D,GAAUX,YAAY,SACzB,EACAtD,mBAAoB,SAAU+D,GAC7B,IAAIG,EAAKH,EAAIvI,QAAQ,OAAO2E,KAAK,MACjCzG,YAAW,WAAa,EAAE,8BAAgCwK,EAAK,MAAMZ,YAAY,SAAW,GAAG,IAEhG,EACApD,gBAAiB,WACZ,EAAE,QAAQ,GAAGiE,aAAe3H,OAAOY,aACtC,EAAE,QAAQS,SAAS,gBACnB,EAAE,aAAaA,SAAS,kBAExB,EAAE,QAAQyF,YAAY,gBACtB,EAAE,aAAaA,YAAY,gBAE7B,EAEAvB,iBAAkB,WACjB,IAAI,QAAgB,eAAgB,CACnC,IAAIqC,GAAa,QAAgB,eACjC,EAAE,sBAAwBA,EAAa,MAAMC,QAAQ,IAAIC,OAC1D,CACD,EAEAtC,iBAAkB,WACqB,MAAlC,QAAgB,gBACnB9H,KAAKuH,iBAEP,EACAK,cAAe,SAAUyC,EAAK1C,EAAM2C,GACnC,IAAIC,EAAY,EAAE5C,GAAM6C,KAAK,yBACzBF,EACHC,EAAU5G,SAAS,WAGpB4G,EAAUnB,YAAY,UACtBmB,EAAUjC,KAAK,4RAA8R+B,GAC7SE,EAAU5G,SAAS,cACpB,EACAzD,mBAAoB,WACsD,QAAtDY,SAASK,cAAc,kBAAkBsJ,YAG3D,QAAS,CAAE5I,IAAK,6BAA8BI,MAAKH,IAC7CA,EAAKI,QACTqC,SAASC,QACV,GAGH,EACA0B,YAAa,SAAUrE,IACtB,QAAS,CAAEA,IAAK,yBAA0BC,KAAM,CAAED,IAAKA,GAAO0C,SAASmG,QAAUzI,MAAKH,IACrF,IACIwG,EAAO,wEAAwExG,EAAKI,yEAC3DJ,EAAKI,iBAElC,IAAUjB,gBAAgBa,EAAKI,SAE/B,QAAW,CACVyI,MAPW,6BAQX5J,QAASuH,EACTsC,QAAS,IAAM,EAAE,yBAAyBvJ,UACzC,GAEJ,EACA2G,cAAe,SAASrI,GACvB,IAAIyC,EAAOpC,KAEX,iEAAmBiC,MAAK,EAAG4I,eAC1B,QAAW,CACVF,MAAO,WACP5J,QAAS,mFACT6J,QAAS,KACR,EAAE,eAAgB,YAAYjH,SAAS,UAEvCvB,EAAK0I,WAAaD,EAAQE,OAAO,CAChCC,YAAa,gBACbC,OAAQ,CACPhD,IAAKtI,EAAQsI,IACbC,KAAMvI,EAAQuI,MAEf7B,OAAQ,KACR6E,KAAM,GACNC,OAAQ,CAACC,EAAMC,EAASC,KACvB,IAAIC,EAAY,IAAIF,EAAQG,UAAU,CAAC7L,EAAQsI,IAAKtI,EAAQuI,OAE5D,SAASuD,IACRH,EAAII,kBAAkB/L,EAAQwI,OAAQ,GAAG,GACvClG,MAAKkE,GAAKmF,EAAIK,kBAAkBxF,GAAG,IACtC,CAEAoF,EAAUK,OAAOlI,IAAI,SAAS,WAC7B+H,IAEA,+BAA0BxJ,MAAK,EAAG4J,eACjCA,EAASC,SAAS,CACjB3D,OAAQxI,EAAQwI,OAChB4D,WAAY,MACZC,UAAW,sBACV,GAEJ,IAEAZ,EAAKa,WAAWvI,IAAI6H,GACpBE,GAAa,GAEb,EAEHS,SAAU,KACT,EAAE,yBAAyB9C,YAAY,UACvCyB,EAAQsB,mBAAmB,GAE3B,GAEJ,EACAC,iBAAkB,WAEjB,OADgBtL,SAASK,cAAc,iBACtBkL,wBAAwB3F,IAAMpE,OAAOU,OACvD,EACAsJ,uBAAwB,WACvB,IAAIC,EAAevM,KAAKoM,mBACpBI,EAAmB1L,SAASK,cAAc,6BAE1CqF,EAAOlE,OAAOU,SAAWuJ,EAAe,GAEvC9M,GACJL,EAAY,KAAK6C,MAAK,IAAMjC,KAAKyM,oBAGlC,IAAIC,EAASF,EAAiBG,QAAQ,WAClCvF,EAAQoF,EAAiBG,QAAQ,UAGjCD,GAAWtF,GAQf,QAAYoF,EAAkB,cAAehG,GAPvCA,IACJ,QAAYgG,EAAkB,cAAehG,EAOhD,EACAnG,WAAY,WAEX,GADAuM,aAAY,IAAM5M,KAAKyM,mBAAmB,KACrC,IAAUpK,SAAY,IAAcyG,KAAK+D,SAO9C7M,KAAKsM,yBACL,EAAExL,UAAUmD,GAAG,UAAU,IAAMjE,KAAKsM,+BARpC,CACyB,EAAE,6BACR3I,SAAS,cAE5B,CAKD,EACA8I,gBAAiB,WAChB,IAAID,EAAmB1L,SAASK,cAAc,6BAC9C,IAAKqL,GAAkBG,QAAQ,WAAY,QAI3C,QAAYH,EAAkB,QAAQ,GACtCpN,EAHY,KAIX6C,MAAK,KAAM,QAAYuK,EAAkB,QAAQ,KACjDvK,MAAK,IAAM7C,EALA,OAMX6C,MAAK,KAAM,QAAYuK,EAAkB,QAAQ,KACjDvK,MAAK,IAAM7C,EAPA,OAQX6C,MAAK,KACLxC,GAAoB,EAGhB+M,EAAiBG,QAAQ,aAC5B,QAAYH,EAAkB,QAAQ,EACvC,GAEF,EACAM,aAAc,WACb,OAAO,IAAIxN,SAAQ,CAACC,EAASwN,MAC5B,QAAS,CAAElL,IAAK,uBAAwBI,MAAKH,IACxCA,EAAKI,OAAQ3C,EAAQuC,EAAKkL,OACzBD,EAAO,qBAAqB,GAChC,GAEJ,EACAE,WAAY,WACX,OAAO,IAAI3N,SAAQ,CAACC,EAASwN,MAC5B,QAAS,CAAElL,IAAK,qBAAsBI,MAAKH,IACtCA,EAAKI,OAAQ3C,EAAQuC,EAAKoL,KACzBH,EAAO,mBAAmB,GAC9B,GAEJ,EACAI,kBAAmB,WAClB,OAAO,IAAI7N,SAAQ,CAACC,EAASwN,MAC5B,QAAS,CAAElL,IAAK,4BAA6BI,MAAKH,IAC7CA,EAAKI,OAAQ3C,EAAQuC,EAAKkL,OACzBD,EAAO,0BAA0B,GACrC,GAEJ,EACAK,sBAAuB,WACtB,OAAO,IAAI9N,SAAQ,CAACC,EAASwN,MAC5B,QAAS,CAAElL,IAAK,gCAAiCI,MAAKH,IACjDA,EAAKI,OAAQ3C,EAAQuC,EAAKkL,OACzBD,EAAO,8BAA8B,GACzC,GAEJ,EACAM,iBAAkB,WACjB,IAAIC,EAAS,EAAE,uBACfA,EAAOhF,KAAK9G,SAAS8H,QAAQC,WAC7B+D,EAAOxD,YAAY,SAAwC,GAA9BtI,SAAS8H,QAAQC,UAC/C,EACAgE,eAAgB,WACf,IAAIC,EAAQ,EAAE,wBACdA,EAAMvH,KAAK,QAASzE,SAAS8H,QAAQmE,QAAU,EAAI,UAAUjM,SAAS8H,QAAQmE,QAAQC,QAAQ,MAAQ,MACtGF,EAAM1D,YAAY,SAAsC,GAA5BtI,SAAS8H,QAAQmE,QAC9C,EACAE,sBAAuB,WACtB,IAAIL,EAAS,EAAE,4BACfA,EAAOhF,KAAK9G,SAAS8H,QAAQsE,gBAC7BN,EAAOxD,YAAY,SAA6C,GAAnCtI,SAAS8H,QAAQsE,eAC/C,EACAC,0BAA2B,WAC1B,IAAIP,EAAS,EAAE,gCACfA,EAAOhF,KAAK9G,SAAS8H,QAAQwE,oBAC7BR,EAAOxD,YAAY,SAAiD,GAAvCtI,SAAS8H,QAAQwE,mBAC/C,EACAC,gBAAiB,WAChB/N,KAAK8M,eACJ7K,MAAK+K,IACLxL,SAAS8H,QAAQC,UAAYyD,EAC7BhN,KAAKqN,kBAAkB,GAEzB,EACAW,cAAe,WACdhO,KAAKiN,aACJhL,MAAKiL,IACL1L,SAAS8H,QAAQmE,QAAUP,EAC3BlN,KAAKuN,gBAAgB,GAEvB,EACAU,qBAAsB,WACrBjO,KAAKmN,oBACJlL,MAAK+K,IACLxL,SAAS8H,QAAQsE,eAAiBZ,EAClChN,KAAK2N,uBAAuB,GAE9B,EACAO,yBAA0B,WACzBlO,KAAKoN,wBACJnL,MAAK+K,IACLxL,SAAS8H,QAAQwE,mBAAqBd,EACtChN,KAAK6N,2BAA2B,GAElC,EACAM,iBAAkB,WACjB,OAAO,EAAE,oBAAoB9G,SAAS,OACvC,EACA+G,gBAAiB,SAASpM,GACzB,OAAO,IAAI1C,SAAQ,CAACC,EAASwN,MAC5B,QAAS,CAAElL,IAAK,gCAAiCC,KAAM,CAAEE,YAAYC,MAAKH,IACrEA,EAAKI,OAAQ3C,EAAQuC,EAAKwD,OACzByH,EAAOjL,EAAKuG,IAAI,GACpB,GAEJ,EACAD,gCAAiC,SAASpG,GACzC1C,QAAQ+O,IAAI,CACXrO,KAAKoO,gBAAgBpM,GACrBhC,KAAKsO,YAAYtM,IACjB,QAAyB,CAAC,6CAE1BC,MAAKsM,IACL,IAAIC,EAAO,KACPC,GAAW,QAAuB,yCAAvB,GACXC,EAAaC,KAAKC,MAAMH,GACxBI,EAAWF,KAAKC,MAAML,EAAQ,GAAGO,mCAAqC,OAE1E,QAAW,CACVnE,MAAO,kCACP5J,QAAS,oCACTgO,WAAY,YACZnE,QAAS,KACR,wDAAyB3I,MAAK,EAAG+M,cAChCA,EAAQjE,OAAO,CACdhE,UAAW,iBACXkI,OAAQP,EACR5M,KAAM+M,EACNK,UAAW,CAACX,EAAQ,MAEpBtM,MAAKkN,GAAKX,EAAOW,GAAE,GACnB,EAEHC,SAAU,KACT,IAAKZ,EAAM,OAEX,IAAKA,EAAKa,WAET,YADA,OAAe,kCAAmC,CAAEnO,KAAM,WAI3D,IAAIY,EAAO0M,EAAKc,UAEhB,SAASC,KACR,OAAe,uDAAwD,CAAErO,KAAM,UAChF,CAEA,MAA0B,SAAtBY,EAAK0N,KAAKC,UAAwB3N,EAAK0N,KAAKE,MAMtB,SAAtB5N,EAAK0N,KAAKC,UAAwB3N,EAAK0N,KAAKG,MAMvB,SAArB7N,EAAK8N,IAAIH,UAAwB3N,EAAK8N,IAAIF,MAMrB,SAArB5N,EAAK8N,IAAIH,UAAwB3N,EAAK8N,IAAID,WAM9C3P,KAAK6P,mBAAmB7N,EAAQ,CAAE8M,kCAAmCH,KAAKmB,UAAUhO,KACnFG,MAAK,MACL,OAAe,YAAa,CAAEf,KAAM,aACpC,SAAa,IAEb6O,OAAM1H,IAAO,OAAeA,GAAO,SAAU,CAAEnH,KAAM,cAVrDqO,SACAf,EAAKwB,aAAa,CAAE3K,KAAM,MAAO4K,MAAO,YAPxCV,SACAf,EAAKwB,aAAa,CAAE3K,KAAM,MAAO4K,MAAO,YAPxCV,SACAf,EAAKwB,aAAa,CAAE3K,KAAM,OAAQ4K,MAAO,YAPzCV,SACAf,EAAKwB,aAAa,CAAE3K,KAAM,OAAQ4K,MAAO,UA2BwB,GAElE,IAEFF,OAAM1H,IAAO,QAAUA,GAAO,SAAU,CAAEnH,KAAM,aAClD,EACA2O,mBAAoB,SAAS7N,EAAQkO,GAEpC,OADAA,EAASlO,OAASA,EACX,IAAI1C,SAAQ,CAACC,EAASwN,MAC5B,QAAQ,uBAAwBmD,GAAUjO,MAAKH,IAC1CA,EAAKI,OAAQ3C,IACZwN,EAAOjL,EAAKuG,IAAI,GACpB,GAEJ,EACA8H,iBAAkB,SAAShI,GAC1B,OAAO,IAAI7I,SAAQ,CAACC,EAASwN,MAC5B,QAAS,CAAElL,IAAK,iCAAkCC,KAAM,CAAEqG,YAAYlG,MAAKH,IACtEA,EAAKI,OAAQ3C,EAAQuC,EAAKwD,OACzByH,EAAOjL,EAAKuG,IAAI,GACpB,GAEJ,EACAiG,YAAa,SAASnG,GACrB,OAAO,IAAI7I,SAAQ,CAACC,EAASwN,MAC5B,QAAS,CAAElL,IAAK,4BAA6BC,KAAM,CAAEqG,YAAYlG,MAAKH,IACjEA,EAAKI,OAAQ3C,EAAQuC,EAAKwD,OACzByH,EAAOjL,EAAKuG,IAAI,GACpB,GAEJ,EAaA+H,kBAAmB,SAASzQ,GAC3B,IAAI0Q,EAAW,EAAE,uCAAyC1Q,EAAQ0F,KAAO,MAEzE,IAAKgL,EAASnJ,OAAQ,CACrBmJ,EAAW,EAAE,uEACgD1Q,EAAQ0F,yOAI/D1F,EAAQ2I,sEAMd,IAAIgI,EAAU,EAAE,mBAAoBD,GAChC1Q,EAAQ+G,KAAK4J,EAAQC,IAAI,MAAO5Q,EAAQ+G,KACxC/G,EAAQ6Q,QAAQF,EAAQC,IAAI,SAAU5Q,EAAQ6Q,QAC9C7Q,EAAQiH,MAAM0J,EAAQC,IAAI,OAAQ5Q,EAAQiH,MAC1CjH,EAAQ8Q,OAAOH,EAAQC,IAAI,QAAS5Q,EAAQ8Q,OAChD,EAAE,QAAQC,OAAOL,GAEjB,IAAUM,eAAeL,EAAQ5M,IAAI/D,EAAQiR,SAAS,IAAMN,EAAQ3M,SAAS,WAC9E,CAEA,OAAO0M,CACR,EACA7P,oBAAqB,YACpB,QAAiBM,SAAU,QAAS,kCAAkCH,IACrE,IAAI,UAQH,YAPA,QAAW,CACKI,QAAS,QAAQD,SAASK,cAAcR,EAAQK,QAAQ6P,eAAepG,kBACvEqG,aAAa,EAC5BC,QAAS,qBACTpG,MAAOhK,EAAQK,QAAQ2J,QAMzB,IAAIhL,EAAU,CACb0F,KAAM1E,EAAQK,QAAQqE,KACtBiD,KAAMxH,SAASK,cAAcR,EAAQK,QAAQ6P,eAAepG,UAC5D/D,IAAK/F,EAAQK,QAAQ0F,IACrB8J,OAAQ7P,EAAQK,QAAQwP,OACxB5J,KAAMjG,EAAQK,QAAQ4F,KACtB6J,MAAO9P,EAAQK,QAAQyP,MACvBG,OAAQ,EAAEjQ,IAGPqQ,EAAiBhR,KAAKoQ,kBAAkBzQ,GAC5C,EAAE,mBAAoBqR,GAAgBlH,YAAY,SAAS,KAG5D,QAAiBhJ,SAAU,QAAS,0BAA0BH,IAC/C,EAAEA,GAASW,QAAQ,oBACzBwI,YAAY,UAEpB,EAAE,kCAAkCmH,MAAM,OAAO,GAEnD,EACA3J,mBAAoB,SAAShC,GAC5B,OAAO,IAAIhG,SAAQC,IAAW,QAAS,CAAEsC,IAAK,2BAA4BC,KAAM,CAAEwD,WAAWrD,KAAK1C,IACnG,EACA2R,gBAAiB,SAAS/I,EAAQgJ,GACjC,OAAO,IAAI7R,SAAQC,IAAW,QAAS,CAAEsC,IAAK,gCAAiCC,KAAM,CAAEqG,OAAQA,EAAQgJ,MAAOA,KAAWlP,KAAK1C,IAC/H,GAGD6R,MAAMC,UAAUC,KAAO,SAAUC,GAChC,OAAOvR,KAAKwR,QAAO,SAAUC,GAC5B,OAAyB,IAAlBF,EAAEG,QAAQD,EAClB,GACD,EAEA,S,qDEn5BA,IAAIE,EAAW,GACXC,EAAU,GAYd,SAASC,GAAY,QAAEC,EAAO,OAAEC,IAC5BJ,EAAWG,EACXF,EAAUG,CACd,CAQA,SAASC,EAAU3M,EAAMC,EAAO2M,EAAO,IAKnC,IAAIC,EACJ,GALIP,IACAtM,EAAOA,EAAO,IAAMsM,GAIpBM,EAAM,CACN,IAAIE,EAAO,IAAIC,KACfD,EAAKE,QAAQF,EAAKG,UAAoB,GAAPL,EAAY,GAAK,GAAK,KACrDC,EAAU,aAAeC,EAAKI,aAClC,MACIL,EAAU,GAGd,IAAIH,EAAS,GACb,GAAIH,EAAS,CACT,IAAIY,EAAaZ,EAAQnI,WAAW,KAAOmI,EAAQa,UAAU,GAAKb,EAE7DrN,SAASmO,SAASC,SAASH,KAC5BZ,EAAUrN,SAASmO,UAGnBnO,SAASmG,KAAKkI,cAAclB,QAAQc,EAAWI,gBAAkB,IACjEb,EAAS,YAAcH,EAE/B,CAEA9Q,SAAS+R,OAASxN,EAAO,IAAMyN,mBAAmBxN,GAAS4M,EAAUH,EAAS,UAClF,CAOA,SAASgB,EAAUC,GAKf,GAJIrB,IACAqB,EAASA,EAAS,IAAMrB,GAGxB7Q,SAAS+R,OAAO3L,OAAS,EAAG,CAC5B,IAAI+L,EAAUnS,SAAS+R,OAAOnB,QAAQsB,EAAS,KAC/C,IAAgB,GAAZC,EAAe,CACfA,EAAUA,EAAUD,EAAO9L,OAAS,EACpC,IAAIgM,EAAQpS,SAAS+R,OAAOnB,QAAQ,IAAKuB,GAIzC,OAHc,GAAVC,IACAA,EAAQpS,SAAS+R,OAAO3L,QAErBiM,mBAAmBrS,SAAS+R,OAAOJ,UAAUQ,EAASC,GACjE,CACJ,CAEA,MAAO,EACX,CAEA5Q,OAAOyQ,UAAYA,EACnBzQ,OAAO0P,UAAYA,C,0DC9DnB,SAASoB,GAAQ,OAAElO,EAAM,QAAEmO,EAAO,gBAAElO,EAAe,gBAAEmO,GAAkB,EAAI,WAAEC,GAAa,IACtF,OAAIF,GACIE,IACAF,EAAU,GAAGA,OAAa7R,SAASgS,WAAa,MAG/C1S,SAASK,cAAc,gCAAgCkS,QACxD,EAAE,QAAQ3C,OAAO,eAAe2C,0BAG7B/T,QAAQC,WAGd4F,EAeE7F,QAAQC,WAdP+T,IAAiB,SAEd,IAAIhU,SAAQ,CAACC,EAASwN,KACzB,MAAM0G,EAAS3S,SAAS4S,cAAc,UACtC5S,SAAS6S,KAAKC,YAAYH,GAC1BA,EAAOI,OAAStU,EAChBkU,EAAOK,QAAU/G,EACjB0G,EAAOM,OAAQ,EACfN,EAAOO,IAAM9O,CAAM,IACpBjD,MAAK,KACAqR,IAAiB,QAAkB,IAKnD,C,wDC7CA,SAASW,IACA,EAAE,gBAAgB/M,QACnB,EAAE,QAAQwJ,OAAO,mCAGrB,EAAE,gBAAgBpI,KAAK,uEAC3B,CAEA,SAAS4L,IACL,EAAE,eAAeC,QAAQ,QAAQ,WAC7B,EAAEnU,MAAMqB,QACZ,GACJ,C,oHCRA,IAAImS,EAAYlR,OAAOd,SAASgS,UAChClR,OAAO8R,WAAa,EAEpB,IAAIC,EAAU,GAGd,SAASC,EAAMC,EAAOC,GAClB,IAAItS,EAAS,GACb,IAAK,IAAIuP,EAAI,EAAGA,EAAI8C,EAAMrN,OAASsN,EAAM/C,IACrCvP,EAAOuS,KAAKF,EAAMG,MAAMjD,EAAI+C,GAAO/C,EAAE,GAAK+C,IAG9C,OAAOtS,CACX,CAEA,IAAIyS,EAAkB,GAClBC,EAAmB,GAGnBC,EAAuB,CAAC,EAGxBC,EAAU,CACVC,OAAQ,CAACxD,EAAEyD,IAAMzD,GAAKyD,EACtBC,GAAI,WAAa,MAAO,IAAIC,WAAWR,MAAM,GAAI,GAAGS,MAAKhP,GAAKA,GAAG,EACjEiP,IAAK,WAAa,MAAO,IAAIF,WAAWR,MAAM,GAAI,GAAGW,OAAMlP,GAAKA,GAAG,EACnEmP,SAAU,WAAa,MAAO,IAAIJ,WAAWR,MAAM,GAAI,GAAGlK,MAAKrE,GAAKA,GAAG,EACvEoP,IAAKhE,IAAMA,EACXiE,OAAQjE,GAAU,MAALA,EACbkE,IAAKlE,IAAMA,GAAK,IAAIrK,OACpBwO,GAAI,CAACnE,EAAEyD,KAAOzD,GAAK,IAAMyD,GAAK,GAC9BW,GAAI,CAACpE,EAAEyD,KAAOzD,GAAK,IAAMyD,GAAK,GAC9BN,MAAO,CAACnD,EAAEyD,EAAEY,KAAOrE,GAAK,IAAImD,MAAOM,GAAK,EAAKY,GAAK,GAClDC,KAAM,CAACtE,EAAEyD,KAAOzD,GAAK,IAAImD,MAAOM,GAAK,GACrCc,SAAU,CAACC,EAAKN,IACPM,EACEA,EAAI7O,OAASuO,EAAMM,EAAItD,UAAU,EAAGgD,GAAO,IAAMM,EADvC,GAGrBC,eAAgB,CAACD,EAAKN,IACbM,EACEA,EAAItD,UAAU,EAAGgD,GAAO,IAAMM,EAAItD,UAAUsD,EAAI7O,OAASuO,EAAKM,EAAI7O,QADxD,GAGrB+O,UAAW1E,GAAKA,EAAEqB,cAClBsD,OAAQ3E,GAAK5C,KAAKmB,UAAUyB,GAAK,CAAC,GAClC4E,gBAAiB5E,GAAK5C,KAAKmB,UAAUyB,EAAG,KAAM,GAC9C6E,QAAS,IAAM,IAAIhE,KACnBiE,UAAW9E,IAAK,QAAUA,GAC1B+E,WAAY,CAAC/E,EAAEyD,IAAMzD,GAAI,OAAW,IAAIa,KAAKb,GAAIyD,GAAK,GACtDuB,aAAchF,GAAK,IAAIiF,KAAKC,aAAa,QAAS,CAAEC,sBAAuBnF,EAAI,EAAI,EAAI,EAAGoF,sBAAuB,IAAKC,OAAOrF,GAC7HsF,cAAetF,GAAK,IAAIiF,KAAKC,aAAa,QAAS,CAAEC,sBAAuB,EAAGC,sBAAuB,IAAKC,OAAOrF,GAClHuF,cAAevF,GAAKA,GAAG7D,QAAQ,GAAGqJ,QAAQ,SAAU,IAAIA,QAAQ,IAAK,KACrEC,UAAWzF,GAAK,IAAIiF,KAAKC,aAAa,QAAS,CAAEQ,qBAAsB,IAAKL,OAAOrF,GACnF2F,YAAa3F,IACT,IAAI4F,EAAQ5F,EAAE7D,QAAQ,GAAGqJ,QAAQ,IAAK,KAClCK,EAAMD,EAAME,MAAM,KACtB,GAAID,EAAIlQ,OAAS,EACjB,CAEI,MADU,qBAAqBiQ,SAAa,IAAIX,KAAKC,aAAa,SAASG,OAAOU,OAAOF,EAAI,YAAY,IAAIZ,KAAKC,aAAa,QAAS,CAAEQ,qBAAsB,IAAKL,OAAOQ,EAAI,sBAEpL,CAII,MADU,qBAAqBD,SAAa,IAAIX,KAAKC,aAAa,SAASG,OAAOU,OAAOF,EAAI,iBAEjG,EAEJ1T,IAAK,CAAC6N,EAAEyD,IAAMsC,OAAO/F,GAAK,GAAK+F,OAAOtC,GAAK,GAC3CuC,SAAU,CAAChG,EAAEyD,KAAOzD,GAAK,IAAIiG,WAAW5E,cAAclB,SAASsD,GAAK,IAAIwC,WAAW5E,gBAAkB,EACrGnJ,WAAY,CAAC8H,EAAEyD,KAAOzD,GAAK,IAAIiG,WAAW5E,cAAcnJ,YAAYuL,GAAK,IAAIwC,WAAW5E,eACxF6E,UAAWlG,GAAKuB,mBAAmBvB,GACnCmG,UAAWnG,GAAKA,GAAGwF,QAAQ,IAAK,OAAOA,QAAQ,IAAK,OACpDY,UAAWpG,IACP,IAAIqG,EAAM,GACV,IACIA,EAAMzE,mBAAmB5B,EAC7B,CAAE,MAAO,CACT,OAAOqG,CAAG,EAEdC,UAAWtG,IACP,IAAIqG,EAAM,CAAC,EACX,IACIA,EAAMjJ,KAAKC,MAAM2C,EACrB,CAAE,MAAO,CACT,OAAOqG,CAAG,EAEdE,QAAS,CAACC,EAAMxG,IACRwG,EAAaxG,EACV,GAEXyG,IAAK,CAACD,EAAMxG,EAAGyD,IACP+C,EAAaxG,EACVyD,EAEXiD,GAAI,CAACC,EAAM3D,IAAUA,EAAM5B,SAASuF,GACpCb,MAAO,CAACc,EAAQC,IAAcD,GAAQd,MAAMe,GAC5CC,KAAM,CAAC9D,EAAO6D,IAAc7D,GAAO8D,KAAKD,GACxC3F,UAAW,CAAC0F,EAAQG,EAAOpR,IAAWiR,GAAQ1F,UAAU6F,EAAOA,EAAQpR,GACvEqR,IAAK,CAAChE,EAAO+D,IACJ/D,EACD+D,GAAS/D,EAAMrN,OAAe,KAC3BqN,EAAM+D,GAFM,KAIvBE,SAAU,CAACC,EAAQC,IAAQD,EAAOC,IAAMlB,WACxCmB,UAAW,CAACF,EAAQC,IAAQD,EAAOC,GACnC3B,QAAS,CAACoB,EAAQS,EAASC,IAAgBV,GAAQpB,QAAQ6B,EAASC,GACpEC,aAAc,CAACX,EAAQS,EAASC,IAAgBV,GAAQpB,QAAQ,IAAIgC,OAAOH,GAAUC,GACrFG,UAAW,CAACb,EAAQS,IAAY,IAAIG,OAAOH,GAASK,KAAKd,GACzDe,YAAa,CAAC3E,EAAOtE,EAAO3K,IAAUiP,GAAO/C,QAAOrL,GAAKA,EAAE8J,IAAU3K,KAAU,GAC/E6T,eAAgB,CAAC5E,EAAOtE,EAAO3K,IAAUiP,GAAO/C,QAAOrL,GAAKA,EAAE8J,IAAU3K,KAAU,GAClF8T,SAAU,SAAS7E,EAAOtE,GACtB,IAAKsE,GAAOrN,OAAQ,MAAO,GAE3B,IAEImS,EAFAC,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChC6E,EAASD,EAAK,GAQlB,OAHID,EAHCE,EAGQpT,GAAK2O,EAAQyE,GAAYpT,KAAMmT,EAAK5E,MAAM,IAF1CvO,GAAKA,EAKXoO,EAAMjJ,KAAInF,GAAKkT,EAAOlT,EAAE8J,KACnC,EACA3E,IAAK,SAASiJ,EAAOgF,GACjB,OAAOhF,GAAOjJ,KAAInF,GAAK2O,EAAQyE,GAAYpT,KAAM,IAAI+O,WAAWR,MAAM,GAAI,GAAGA,MAAM,KACvF,EAMA8E,QAAS,SAASjF,GACd,IAAKA,GAAOrN,OAAQ,MAAO,GAE3B,IAAIoS,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChCzE,EAAQ,KAKZ,OAJmB,GAAfqJ,EAAKpS,SAAa+I,EAAQqJ,EAAK,IAE/BrJ,IAAOsE,EAAQA,EAAM/C,QAAOrL,GAAKA,EAAE8J,KAAQ3E,KAAInF,GAAKA,EAAE8J,MAEnDsE,EAAMiF,SAAQrT,GAAKA,GAC9B,EACAsT,UAAYlF,GAAUA,EAAMpQ,KAAKuV,MAAMvV,KAAKwV,SAAWpF,EAAMrN,SAC7DyS,OAAQ,CAACtV,EAAKD,IAAQC,EAAMF,KAAKuV,MAAMvV,KAAKwV,UAAYvV,EAAMC,EAAM,IACpEuV,OAAQ,WAAa,MAAO,IAAI1E,WAAWR,MAAM,GAAI,GAAG2D,KAAK,GAAI,EACjEwB,QAAS,WACL,IAAIP,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GACpC,OAAI4E,EAAKnE,MAAKhP,IAAMA,IAAW,GACxBmT,EAAKjB,KAAK,GACpB,EACD9D,MAAO,WAAa,MAAO,IAAIW,WAAWR,MAAM,GAAI,EAAG,EACvDlD,OAAQ,SAASD,GACb,IAII8H,EAJAC,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChCzE,EAAQqJ,EAAK,GAEbC,EAASD,EAAK,GAQlB,OAHID,EAHCE,EAGQpT,GAAK2O,EAAQyE,GAAYpT,KAAMmT,EAAK5E,MAAM,IAF1CvO,GAAKA,EAKd8J,EACOsB,EAAEC,QAAOrL,GAAKkT,EAAOlT,EAAE8J,MAG3BsB,EAAEC,QAAOrL,GAAKA,GACzB,EACA2T,cAAe,SAASvI,GACpB,IAII8H,EAJAC,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChCzE,EAAQqJ,EAAK,GAEbC,EAASD,EAAK,GAQlB,OAHID,EAHCE,EAGQpT,GAAK2O,EAAQyE,GAAYpT,KAAMmT,EAAK5E,MAAM,IAF1CvO,GAAKA,EAKd8J,EACOsB,EAAEC,QAAOrL,IAAMkT,EAAOlT,EAAE8J,MAG5BsB,EAAEC,QAAOrL,IAAMA,GAC1B,EACA4T,WAAYxI,IAAK,QAAWA,GAC5ByI,eAAgBra,IACZ,IAAIsa,EAAana,OAAOoa,QAAQva,EAAQwa,MAAM3I,QAAOrL,GAAKA,EAAE,KAC5D,OAAK8T,EAAW/S,OAET+S,EAAW3O,KAAInF,GAAK,GAAGA,EAAE,QAAO,QAAWA,EAAE,GAAGqR,iBAAgBa,KAAK,KAF7C,EAEiD,EAEpF+B,UAAWza,IACP,IAAI0a,EAASva,OAAOoa,QAAQva,EAAQwa,MAAM3I,QAAOrL,GAAKA,EAAE,KACxD,OAAKkU,EAAOnT,OAEL,UAAUmT,EAAO/O,KAAInF,GAAK,GAAGA,EAAE,OAAOA,EAAE,OAAMkS,KAAK,SAF/B,EAEuC,EAEtEtF,UAAW1N,IAAQ,QAAUA,GAC7BiV,KAAM,WACF,IAAIhB,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChC6F,EAAejB,EAAK5E,OAAO,GAAG,GAC9B8F,EAAOlB,EAAK5E,MAAM,GAAI,GAC1B,IAAK,IAAK+F,EAAWnV,KAAUgP,EAAMkG,EAAM,GACvC,GAAIC,EAAW,OAAOnV,EAE1B,OAAOiV,CACX,EACAG,OAAQ,WACJ,IAAIpB,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChCpP,EAAQgU,EAAK,GACbqB,EAAgBrB,EAAK5E,OAAO,GAAG,GAC/B8F,EAAOlB,EAAK5E,MAAM,GAAI,GAC1B,IAAK,IAAKkG,EAAQ1Y,KAAWoS,EAAMkG,EAAM,GACrC,GAAIlV,GAASsV,EAAQ,OAAO1Y,EAEhC,OAAOyY,CACX,EACAE,QAAS,SAAStG,EAAOtE,GACrB,IAAIqJ,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAEpC,GAAI4E,EAAKpS,OAAS,EAAG,CACjB,IAAIqS,EAASD,EAAK,GACdD,EAASlT,GAAK2O,EAAQyE,GAAYpT,KAAMmT,EAAK5E,MAAM,IACvDH,EAAQA,EAAMjJ,IAAI+N,EACtB,CAEA,OAAO,QAAQ9E,EAAOtE,EAC1B,EACA5L,IAAKkQ,IAAS,QAAKA,GAAO,IAAM,KAChCnQ,IAAKmQ,IAAS,QAAKA,GAAO,GAAM,IAAM,KACtCuG,KAAM,SAASvG,EAAOwG,GAClB,IAEI1B,EAFAC,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChC6E,EAASD,EAAK,GAQlB,OAHID,EAHCE,EAGQpT,GAAK2O,EAAQyE,GAAYpT,KAAMmT,EAAK5E,MAAM,IAF1CvO,GAAKA,GAKX,QAAKoO,EAAOwG,EAAM1B,EAC7B,EACA2B,OAAQ,SAASzG,EAAOtE,EAAO8K,GAC3B,IAEI1B,EAFAC,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAChC6E,EAASD,EAAK,GAKdD,EAHCE,EAGQpT,GAAK2O,EAAQyE,GAAYpT,KAAMmT,EAAK5E,MAAM,IAF1CvO,GAAKA,EAKlB,IAAI8U,EAAO,IAAI1G,GAQf,OAPA0G,EAAKH,MAAK,CAACvJ,EAAGyD,IACNqE,EAAO9H,EAAEtB,IAAUoJ,EAAOrE,EAAE/E,IAAgB,EAC5CoJ,EAAO9H,EAAEtB,IAAUoJ,EAAOrE,EAAE/E,KAAiB,EAC1C,IAGP8K,GAAME,EAAKC,UACRD,CACX,EACAE,MAAO,SAAS5G,EAAO5U,GACnB,IAAIyb,EAAQzM,KAAKC,MAAMjP,GAEnBsb,EAAO,IAAI1G,GAEX8G,EAAU,CAAC9J,EAAGyD,EAAGrV,KACbA,EAAQsQ,QACRsB,EAAIA,EAAE5R,EAAQsQ,QAAUsB,GAAE,QAAW5R,EAAQsQ,QAC7C+E,EAAIA,EAAErV,EAAQsQ,QAAU+E,GAAE,QAAWrV,EAAQsQ,SAG7CtQ,EAAQ2L,MACRiG,EAAI5R,EAAQ2L,IAAIiG,IAAM5R,EAAQ2L,IAAe,WAAKiG,EAClDyD,EAAIrV,EAAQ2L,IAAI0J,IAAMrV,EAAQ2L,IAAe,WAAK0J,GAGrC,iBAANzD,EAAuB5R,EAAQob,KAAO/F,EAAIzD,EAAIA,EAAIyD,EAC5C,iBAANzD,EAAuB5R,EAAQob,KAAO/F,EAAEsG,cAAc/J,GAAKA,EAAE+J,cAActG,GACrE,kBAANzD,EAAwB5R,EAAQob,KAAO/F,GAAKzD,EAAIA,GAAKyD,OAAhE,GAaJ,OAFAiG,EAAKH,MAAK,CAACvJ,EAAGyD,IARM,EAACzD,EAAGyD,EAAGuG,KACvB,IAAIrZ,EAAS,EACb,IAAK,IAAIgW,KAAQqD,EACbrZ,EAASA,GAAUmZ,EAAQ9J,EAAGyD,EAAGkD,GAErC,OAAOhW,CAAM,EAGGsZ,CAAcjK,EAAGyD,EAAGoG,KAEjCH,CACX,EACA9Q,MAAOoK,GACEA,GAAOrN,OACLqN,EAAM,GADc,KAG/BkH,KAAMlH,GACGA,GAAOrN,OACLqN,EAAMG,OAAO,GAAG,GADI,KAG/BgH,gBAAiBnK,GAAK,IAAIa,KAAKb,GAAGe,UAClCqJ,gBAAiBpK,GAAK,IAAIa,KAAKb,GAC/BqK,QAAS,SAASrK,GACd,IAAI+H,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAEhCnO,EAAS,EACM,GAAf+S,EAAKpS,SAAaX,EAAS+S,EAAK,IAEpC,IAAIuC,EAAQ,IAAIzJ,KAChByJ,EAAQ,IAAIzJ,KAAKyJ,EAAMC,QAAQD,EAAMzF,UAAY7P,IACjD,IAAIwV,EAAM,IAAI3J,KAAKb,GAGnB,OAAOsK,EAAMG,SAAS,EAAE,EAAE,EAAE,KAAOD,EAAIC,SAAS,EAAE,EAAE,EAAE,EAC1D,EACAC,WAAY,SAAS1K,GACjB,IAAI+H,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAEhCnO,EAAS,EACM,GAAf+S,EAAKpS,SAAaX,EAAS+S,EAAK,IAEpC,IAAIyC,EAAM,IAAI3J,KAAKb,GACnB,OAAO,QAAiBwK,EAAKxV,EACjC,EACA2V,YAAa,SAAS3K,GAClB,IAAI+H,EAAO,IAAIpE,WAAWR,MAAM,GAAI,GAEhCnO,EAAS,EACM,GAAf+S,EAAKpS,SAAaX,EAAS+S,EAAK,IAEpC,IAAIyC,EAAM,IAAI3J,KAAKb,GACfsK,EAAQ,IAAIzJ,KAChB,OAAO2J,EAAII,eAAiBN,EAAMM,eAAiBJ,EAAIK,YAAcP,EAAMO,WAAa7V,CAC5F,EACAiR,SAAUjG,GAAKA,GAAGiG,WAClB0C,QAAS3I,GACAA,EACEzR,OAAOoa,QAAQ3I,GAAGjG,KAAInF,IAAK,CAAGuS,IAAKvS,EAAE,GAAIb,MAAOa,EAAE,OAD1C,KAGnBkW,QAAS9K,GACEH,MAAMiL,QAAQ9K,GAEzB+K,SAAU/K,GACc,iBAANA,EAElBgL,SAAU,CAAChL,EAAGyD,IAAMzD,EAAIyD,EACxBwH,OAAQ,CAACjL,EAAGyD,IAAMzD,EAAIyD,EACtB0E,MAAOnI,GAAKpN,KAAKuV,MAAMnI,GACvBkL,MAAOlL,GAAKpN,KAAKsY,MAAMlL,GACvBmL,IAAK,CAACnL,EAAGyD,IAAMzD,EAAIyD,EACnByD,OAAQ9Y,GAAWA,EAAQwa,KAC3BwC,MAAO,CAACpD,EAAQqD,IAAe9H,EAAQyE,MAAWqD,EAAY,MAC9DC,KAAMtL,GAAKA,EAAEsL,QASjB,SAASC,EAAajb,EAAKkb,GAAoB,GAC3C,GAAIpI,EAAgBjD,QAAQ7P,IAAQ,EAChC,OAAOvC,QAAQC,UAGnB,IAAIyd,EAAe,GACfC,EAAYpb,EAAIqb,MAAM,0CACtB7X,EAAO4X,EAAYA,EAAU,GAAK,KAEtC,OAAOE,MAAMtb,EAAK,CAAEub,QAAS,CAAE,OAAU,UAAYnb,MAAKob,IACtDL,EAAeK,EAASD,QAAQ7E,IAAI,0BAA0BlB,MAAM,KAAK/L,KAAInF,GAAKA,EAAE0W,SAC7EQ,EAAS3V,UACjBzF,MAAKqb,IACAxc,SAASK,cAAc,aAAakE,QACxC,QAAW,OAAQiY,GACnB3I,EAAgBF,KAAK5S,IAFmCvC,QAAQC,aAIjE0C,MAAK,IACA8a,GAAqBC,GAAc9V,QACnC2N,EAAqBxP,GAAQ2X,EAEtB1d,QAAQ+O,IAAI2O,EAAa1R,KAAInF,GACzB2W,EAAa,aAAa3W,YAAYqN,KAAa,MAC1DvR,MAAK,IAAM3C,QAAQC,aAEpBD,QAAQC,WAEvB,CASA,SAASge,EAAwBlY,EAAM0X,GAAoB,EAAMS,GAAU,GACvE,IAAIC,EAAepY,EACfqY,EAAQrJ,EAAQ7J,MAAKrE,GAAKA,EAAEwX,GAAG,IAAMtY,KAAOsY,GAAG,GAG/CC,EAAW,GAFfvY,EAAOqY,GAASrY,IAESmY,EAAU,WAAa,KAChD,GAAI7I,EAAgBhC,SAASiL,GACzB,OAAOte,QAAQC,UAGnB,GAAIqV,EAAiBjC,SAASiL,GAC1B,OAAO,IAAIte,SAAQC,IACfuB,SAASM,iBAAiB,sBAAsB+E,IACxCA,EAAE0X,OAAOP,UAAYM,GACrBre,GACJ,GACF,IAIVqV,EAAiBH,KAAKmJ,GAEtB,IAAIZ,EAAe,GAGnB,OAAOG,MAFG,aAAa9X,mBAAsBmO,IAAYgK,EAAU,gBAAkB,KAEnE,CAAEJ,QAAS,CAAE,OAAU,UAAYnb,MAAKob,IACtDL,EAAeK,EAASD,QAAQ7E,IAAI,0BAA0BlB,MAAM,KAAK/L,KAAInF,GAAKA,EAAE0W,SAAQrL,QAAOrL,GAAKA,IACjGkX,EAAS3V,UACjBzF,MAAKqb,IACJ,GAAIxc,SAASgd,eAAe,eAAezY,KAAS,OAAO/F,QAAQC,UACnE,IAAIkU,EAAS3S,SAAS4S,cAAc,UAepC,OAdAD,EAAOzJ,GAAK,eAAe3E,IAC3BoO,EAAOhJ,UAAY6S,EACnBxc,SAAS6S,KAAKC,YAAYH,GAG1B,WAAoBpO,GAAQ,YAAqBA,GACjD,WAAoB,YAAYA,KAAU,YAAqBA,GAE3DqY,IACA,YAAqBD,GAAgB,YAAqBpY,GAC1D,WAAoBoY,GAAgB,YAAqBpY,GACzD,WAAoB,YAAYoY,KAAkB,YAAqBpY,IAGpE/F,QAAQC,SAAS,IACzB0C,MAAK,IACA8a,GAAqBC,GAAc9V,QACnC2N,EAAqBxP,GAAQ2X,EAEtB1d,QAAQ+O,IAAI2O,EAAa1R,KAAInF,GACzBoX,EAAwBpX,GAAG,MAErClE,MAAK,KACF2S,EAAmBA,EAAiBpD,QAAOrL,GAAKA,GAAKyX,IACrDjJ,EAAgBF,KAAKmJ,GACrB9c,SAAS0B,cAAc,IAAIub,YAAY,qBAAsB,CAAEF,OAAQ,CAAEP,SAAUM,MAC5Ete,QAAQC,eAIvBqV,EAAmBA,EAAiBpD,QAAOrL,GAAKA,GAAKyX,IACrDjJ,EAAgBF,KAAKmJ,GACrB9c,SAAS0B,cAAc,IAAIub,YAAY,qBAAsB,CAAEF,OAAQ,CAAEP,SAAUM,MAC5Ete,QAAQC,YAEvB,CAOA,SAASye,EAAcC,GACnB,OAAO3e,QAAQ+O,IAAI4P,EAAK3S,KAAInF,GAAK2W,EAAa3W,EAAI,MAAQqN,KAC9D,CAOA,SAAS0K,EAAyBC,GAC9B,OAAO7e,QAAQ+O,IAAI8P,EAAM7S,KAAInF,GAAKoX,EAAwBpX,KAC9D,CAQA,SAASiY,IACL,OAAO,oCAAuBnc,MAAKoJ,IAC/B,iBAA0B,YAAY,CAACkG,EAAGyD,KACtC,IAAIlT,EAAOuJ,EAAQgT,QAAQ9M,GAC3B,MAAS,MAALyD,EAAkBlT,EAAKwc,GAAGjZ,KACrB,WAAL2P,EAAuBlT,EAAKyc,QAAQlZ,KAC/B,UAAL2P,EAAsBlT,EAAK0c,OAAOC,MAC7B,QAALzJ,EAAoBlT,EAAK0c,OAAOtd,KAC7B,EAAE,GACX,GAEV,CAOA,SAASwd,EAAuBpB,GAC5B,OAAO,YAAqBA,EAChC,EA1BA,WACI,IAAK,IAAI/D,KAAUzE,EACf,iBAA0ByE,EAAQzE,EAAQyE,GAElD,CAwBAoF,E,iBC3gBA,SAASC,IACL,MAAO,uCAAuC7H,QAAQ,SAAS,SAASnB,GACpE,IAAIiJ,EAAoB,GAAhB1a,KAAKwV,SAAgB,EAC7B,OADyC,KAAL/D,EAAWiJ,EAAS,EAAJA,EAAU,GACrDrH,SAAS,GACtB,GACJ,C,iCCWA,IACKsH,EACHC,EACAC,EACAC,E,iBAoEF,SAvEKH,EAAQ,iEACXC,EAAW,uIACXC,EAAe,cACfC,EAAM,SAAUlJ,EAAKN,GAGpB,IAFAM,EAAMmJ,OAAOnJ,GACbN,EAAMA,GAAO,EACNM,EAAI7O,OAASuO,GAAKM,EAAM,IAAMA,EACrC,OAAOA,CACR,EAGM,SAAU5D,EAAMgN,EAAMC,GAS5B,GAPwB,GAApBlK,UAAUhO,QAAuD,mBAAxCpH,OAAOuR,UAAUmG,SAAS6H,KAAKlN,IAA+B,KAAK8G,KAAK9G,KACpGgN,EAAOhN,EACPA,OAAO1M,GAIR0M,EAAOA,EAAO,IAAIC,KAAKD,GAAQ,IAAIC,KAC/BkN,MAAMnN,GAAO,MAAMoN,YAAY,gBAKX,SAHxBJ,EAAOD,OAAOC,IAGLzK,MAAM,EAAG,KACjByK,EAAOA,EAAKzK,MAAM,GAClB0K,GAAM,GAGP,IAAII,EAAIJ,EAAM,SAAW,MACxBK,EAAItN,EAAKqN,EAAI,UACbE,EAAIvN,EAAKqN,EAAI,aACbG,EAAIxN,EAAKqN,EAAI,cACbI,EAAIzN,EAAKqN,EAAI,WACbK,EAAI1N,EAAKqN,EAAI,WACbM,EAAI3N,EAAKqN,EAAI,aACbO,EAAI5N,EAAKqN,EAAI,kBACbQ,EAAIZ,EAAM,EAAIjN,EAAK8N,oBACnBC,EAAQ,CACPT,EAAMA,EACNU,GAAMlB,EAAIQ,GACVC,EAAMA,EACNU,GAAMnB,EAAIS,GACVW,GAAMnB,OAAOS,GAAGjL,MAAM,GACtB4L,KAAMX,EACNY,EAAMX,EAAI,IAAM,GAChBY,GAAMvB,EAAIW,EAAI,IAAM,IACpBA,EAAMA,EACNa,GAAMxB,EAAIW,GACVC,EAAMA,EAAI,EACVa,GAAMzB,EAAIY,EAAI,GACdC,EAAMA,EACNa,GAAM1B,EAAIa,GACVc,EAAM3B,EAAIc,EAAG,GACbA,EAAMd,EAAIc,EAAI,GAAK5b,KAAKsY,MAAMsD,EAAI,IAAMA,GACxCc,EAAMjB,EAAI,GAAK,IAAO,IACtBkB,GAAMlB,EAAI,GAAK,KAAO,KACtBmB,EAAMnB,EAAI,GAAK,IAAO,IACtBoB,GAAMpB,EAAI,GAAK,KAAO,KACtBqB,EAAM7B,EAAM,OAASF,OAAO/M,GAAM+K,MAAM6B,IAAa,CAAC,KAAKmC,MAAMnK,QAAQiI,EAAc,IACvFgB,GAAOA,EAAI,EAAI,IAAM,KAAOf,EAAmC,IAA/B9a,KAAKuV,MAAMvV,KAAKgd,IAAInB,GAAK,IAAY7b,KAAKgd,IAAInB,GAAK,GAAI,GACvFoB,EAAM,CAAC,KAAM,KAAM,KAAM,MAAM3B,EAAI,GAAK,EAAI,GAAKA,EAAI,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAGjF,OAAON,EAAKpI,QAAQ+H,GAAO,SAAUuC,GACpC,OAAOA,KAAMnB,EAAQA,EAAMmB,GAAMA,EAAG3M,MAAM,EAAG2M,EAAGna,OAAS,EAC1D,GACD,E","sources":["webpack://tumarket/./js/common.js","webpack://tumarket/./js/global/toggle.js","webpack://tumarket/./js/global/cookie.js","webpack://tumarket/./js/global/loadlib.js","webpack://tumarket/./js/global/progressbar.js","webpack://tumarket/./js/global/templates.js","webpack://tumarket/./js/global/uuid.js","webpack://tumarket/./js/lib/dateformat/dateformat.js"],"sourcesContent":["/* global tumarket, LiveTex */\n\nimport * as $ from \"jquery\";\n\nimport tumGlobal from \"./global.js\";\nimport { showDialog, closeDialog, showAlert } from \"./global/dialog\";\nimport { ajaxSend, request } from \"./global/fetch\";\nimport { bootstrapAlert } from \"./global/alert\";\nimport { getUrlParameter } from \"./global/url\";\nimport { getCookie, setCookie } from \"./global/cookie\";\nimport { loadLib } from \"./global/loadlib\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"./global/templates\";\nimport { initPopovers } from \"./global/popover\";\nimport { addEventDelegate, documentHeight, setValue, toggleClass } from \"./global/dom\";\nimport { isMob } from \"./global/util\";\nimport { searchWidgets } from \"./navbar/searchSelect.js\";\nimport { setToggle } from \"./global/toggle.js\";\n\nfunction _setTimeout(ms) {\n\treturn new Promise(resolve => {\n\t\tsetTimeout(resolve, ms);\n\t});\n}\n\nfunction showAdminOnlyStuff(){\n\tif (tumarket.isAdmin) {\n\t\tfor (let el of document.querySelectorAll('[data-admin-only]')){\n\t\t\ttoggleClass(el, 'd-none', false);\n\t\t}\n\t}\n}\n\nfunction toggleExtendedView(code) {\n\tif (code == \"enable\") {\n\t\ttoggleClass(\".tum-enableExtendedView i\", \"fa-toggle-on\", true);\n\t\ttoggleClass(\".tum-enableExtendedView i\", \"fa-toggle-off\", false);\n\t}\n\telse if (code == \"disable\") {\n\t\ttoggleClass(\".tum-enableExtendedView i\", \"fa-toggle-on\", false);\n\t\ttoggleClass(\".tum-enableExtendedView i\", \"fa-toggle-off\", true);\n\t}\n\telse {\n\t\ttoggleClass(\".tum-enableExtendedView i\", \"fa-toggle-off fa-toggle-on\");\n\t}\n\n\tif (document.querySelector(\".tum-enableExtendedView .fa-toggle-on\")) {\n\t\tsetCookie(\"extended_view\", \"1\", 30);\n\t}\n\telse {\n\t\tsetCookie(\"extended_view\", \"\", 30);\n\t}\n}\n\nlet searchIconBlinked = false;\n\nvar tumCommon = {\n\toptions: {\n\t\thideFloatingHeader: false\n\t},\n\tinit: function (options) {\n\t\tObject.assign(this.options, options);\n\t\tthis.initCallbacks();\n\n\t\tthis.checkAuthorization();\n\t\tthis.updateCartInfo();\n\t\tthis.checkCookies();\n\t\tthis.initHeader();\n\t\tthis.initFloatingHeader();\n\t\tthis.initCtuCloud();\n\t\tthis.initFloatingWindows();\n\t\tthis.initCacheControls();\n\t\tthis.initOperatorControls();\n\n\t\tinitPopovers();\n\n\t\taddEventDelegate('click', '.nobubble', (element, event) => {\n\t\t\tevent.stopPropagation();\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.copyToClipboard', element => {\n\t\t\tlet content = element.dataset.content;\n\t\t\ttumGlobal.copyToClipboard(content);\n\t\t\tbootstrapAlert('Скопировано в буфер обмена', { type: 'success' });\n\t\t});\n\n\t\tdocument.querySelector('[data-telegram-connect-suggestion-hide]')?.addEventListener('click', () => {\n\t\t\tsetCookie('hideTelegramMsg', '1', 1/24);\n\t\t\tdocument.querySelector('[data-telegram-connect-suggestion]').remove();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '[data-dismiss=\"dropdown\"]', element => {\n\t\t\t$(element.closest('.dropdown')).dropdown('hide');\n\t\t});\n\n\t\tshowAdminOnlyStuff();\n\n\t\taddEventDelegate(document, 'click', '[data-clear-cache]', element => {\n\t\t\tajaxSend({\n\t\t\t\turl: '/requests/clearcache',\n\t\t\t\tdata: {\n\t\t\t\t\tprefix: element.dataset.prefix,\n\t\t\t\t\tfirmId: element.dataset.firmId\n\t\t\t\t}\n\t\t\t}).then(data => {\n\t\t\t\tif (data.result) bootstrapAlert('Кеш сброшен', { type: 'success' });\n\t\t\t\telse bootstrapAlert('Ошибка', { type: 'danger' });\n\t\t\t});\n\t\t});\n\n\t\taddEventDelegate(document, 'click', 'a.disabled', (element, event) => {\n\t\t\tevent.preventDefault();\n\t\t});\n\t},\n\tinitFloatingHeader: function(){\n\t\tvar self = this;\n\t\tif (!tumGlobal.isMob()) {\n\t\t\twindow.addEventListener('scroll', () => {\n\t\t\t\tlet showFloatingHeader = self.showFloatingHeader_desktop();\n\t\t\t\ttoggleClass('.header-floating', 'show', showFloatingHeader);\n\t\t\t\ttoggleClass('body', 'floating-header-shown', showFloatingHeader);\n\n\t\t\t\tif (document.querySelector('.header-floating.top')) {\n\t\t\t\t\ttoggleClass('body', 'floating-header-shown-top', showFloatingHeader);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\twindow.addEventListener('scroll', () => this.updateFloatingHeader());\n\t\twindow.dispatchEvent(new Event('scroll'));\n\t},\n\tupdateFloatingHeader: function(){\n\t\tlet showFloatingHeader = this.showFloatingHeader_desktop();\n\t\ttoggleClass('.header-floating.bottom', 'show', showFloatingHeader && this.showFloatingHeader_mob() && !this.options.hideFloatingHeader);\n\t\ttoggleClass('.header-floating.top', 'show', showFloatingHeader);\n\n\t\ttoggleClass('body', 'floating-header-shown', showFloatingHeader);\n\t\tif (document.querySelector('.header-floating.top')) {\n\t\t\ttoggleClass('body', 'floating-header-shown-top', showFloatingHeader);\n\t\t}\n\t},\n\ttoggleTopBar: function(){\n\t\ttoggleClass('.topbar.main', 'd-none');\n\t},\n\ttoggleFloatingHeader: function(){\n\t\tthis.options.hideFloatingHeader = !this.options.hideFloatingHeader;\n\t},\n\tshowFloatingHeader_desktop: function(){\n\t\tlet header = document.querySelector('.header-floating');\n\t\tif (!header) return;\n\t\treturn window.scrollY > header.clientHeight;\n\t},\n\tshowFloatingHeader_mob: function(){\n\t\tlet header = document.querySelector('.header-floating');\n\t\tif (!header) return;\n\t\treturn window.scrollY < (documentHeight() - window.innerHeight - header.clientHeight * 3);\n\t},\n\tinitCtuCloud: function(){\n\t\tlet containers = document.querySelectorAll('.ctuCloud');\n\t\tfor (let cloud of containers) {\n\t\t\tif (cloud.scrollWidth <= cloud.offsetWidth) return;\n\t\t\t\n\t\t\tlet $back = cloud.querySelector('.ctuCloud-back');\n\t\t\tlet $forward = cloud.querySelector('.ctuCloud-forward');\n\t\t\t$forward?.classList.remove('d-md-none');\n\t\t\t$forward?.classList.add.addClass('d-md-block');\n\n\t\t\tlet maxScrollLeft = () => cloud.scrollWidth - cloud.offsetWidth;\n\t\t\tlet updateButtons = () => {\n\t\t\t\tlet showBack = cloud.scrollLeft > 0;\n\t\t\t\tlet showForward = cloud.scrollLeft < maxScrollLeft();\n\t\t\t\ttoggleClass($back, 'd-md-none', !showBack);\n\t\t\t\ttoggleClass($back, 'd-md-block', showBack);\n\t\t\t\ttoggleClass($forward, 'd-md-none', !showForward);\n\t\t\t\ttoggleClass($forward, 'd-md-block', showForward);\n\t\t\t};\n\t\t\t\n\t\t\t$back?.on('click', () => {\n\t\t\t\t$(cloud).animate({ scrollLeft: Math.max(0, cloud.scrollLeft - cloud.offsetWidth)}, 200, null, updateButtons);\n\t\t\t});\n\t\t\t\n\t\t\t$forward?.on('click', () => {\n\t\t\t\t$(cloud).animate({ scrollLeft: Math.min(maxScrollLeft(), cloud.scrollLeft + cloud.offsetWidth)}, 200, null, updateButtons);\n\t\t\t});\n\t\t}\n\t},\n\tinitCacheControls: function(){\n\t\taddEventDelegate(document, 'click', '.tum-toggleCache', () => {\n\t\t\tvar disableCache = getCookie(\"disableCache\");\n\t\t\tif (disableCache == \"1\") {\n\t\t\t\tsetCookie(\"disableCache\", \"0\", 1/24/2);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsetCookie(\"disableCache\", \"1\", 1/24/2);\n\t\t\t}\n\t\t\tthis.updateCacheToggle();\n\t\t\tlocation.reload();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-toggleCache-long', () => {\n\t\t\tvar disableCache_long = getCookie(\"disableCache_long\");\n\t\t\tif (disableCache_long == \"1\") {\n\t\t\t\tsetCookie(\"disableCache_long\", \"0\", 1);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsetCookie(\"disableCache_long\", \"1\", 1);\n\t\t\t}\n\t\t\tthis.updateCacheToggle();\n\t\t\tlocation.reload();\n\t\t});\n\t},\n\tinitOperatorControls: function(){\n\t\taddEventDelegate(document, 'click', '.tum-operatorAddonToggle', () => {\n\t\t\tvar enable = getCookie(\"enableOperatorAddon\");\n\t\t\tif (enable == \"1\") {\n\t\t\t\tsetCookie(\"enableOperatorAddon\", \"0\", 1);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsetCookie(\"enableOperatorAddon\", \"1\", 1);\n\t\t\t}\n\t\t\tthis.updateOperatorAddonToggle();\n\t\t\tlocation.reload();\n\t\t});\n\t},\n\tloadLivetex: function(callback) {\n\t\tif (window.LiveTex) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\n\t\twindow.liveTex = true;\n\t\twindow.liveTexID = 170736;\n\t\twindow.liveTex_object = true;\n\t\twindow.LiveTex = {\n\t\t\tonLiveTexReady: function () {\n\t\t\t\tLiveTex.hideLabel();\n\t\t\t\tcallback();\n\t\t\t}\n\t\t};\n\n\t\tloadLib({\n\t\t\tjsLink: \"https://cs15.livetex.ru/js/client.js\",\n\t\t\tconditionObject: window._LiveTex\n\t\t});\n\t},\n\tinitCallbacks: function () {\n\t\tvar self = this;\n\n\t\taddEventDelegate(document, 'click', '[data-set-cookie]', element => {\n\t\t\tsetCookie(element.dataset.name, element.dataset.value, element.dataset.duration / 24);\n\t\t});\n\t\n\t\taddEventDelegate(document, 'change', '[data-set-input-value]', element => {\n\t\t\tsetValue(element.dataset.target, element.value);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '[data-tum-toggle]', element => {\n\t\t\tsetToggle(element);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '[data-scrollup]', () => {\n\t\t\ttumGlobal.scrollUp();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-collapse-link', element => { this.collapseLinkClick($(element)) });\n\t\taddEventDelegate(document, 'click', '.tum-collapse-link2', element => { this.collapseLinkClick2($(element)) });\n\t\t\n\t\taddEventDelegate(document, 'click', '.tum-collapse-link-info', element => { this.collapseLinkInfoClick($(element)) });\n\t\taddEventDelegate(document, 'resize', 'body', () => { this.checkPageHeight() });\n\n\t\taddEventDelegate(document, 'click', '.tu-getShortUrl', element => { \n\t\t\tlet url = $(element).attr('data-url');\n\t\t\tthis.getShortUrl(url);\n\t\t});\n\n\t\tself.checkPageHeight();\n\n\t\taddEventDelegate(document, 'click', '.informer-not-yet-working:not(.d-none)', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tvar docHeight = $(document).height();\n\t\t\tvar pos = $(element).offset();\n\t\t\t$('.informer-not-yet-working-block').show();\n\t\t\tvar c_top = pos.top + 25;\n\t\t\tvar c_left = pos.left - $('.informer-not-yet-working-block').width() + 4;\n\t\t\tif (c_top > docHeight || docHeight - c_top < 100)\n\t\t\t\tc_top = pos.top - 100;\n\t\t\tif (c_left < 0) c_left = 50;\n\t\t\t$('.informer-not-yet-working-block').offset(function () {\n\t\t\t\treturn { top: c_top, left: c_left }\n\t\t\t});\t\n\t\t});\n\n\t\t$(document).mouseup(function (e) {\n\t\t\tvar container = $(\".informer-not-yet-working-block\");\n\t\t\t// if the target of the click isn't the container nor a descendant of the container\n\t\t\tif (!container.is(e.target) && container.has(e.target).length === 0 && $(\".informer-not-yet-working-block\").length > 0) {\n\t\t\t\t$(container).hide();\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".tum-seofooter-hide\", () => {\n\t\t\ttoggleClass(\".tum-seofooter\", 'd-none');\n\n\t\t\tlet shown = !$('.tum-seofooter-content').hasClass('d-none');\n\t\t\tthis.setSeoFooterCookie(shown ? 0 : 1);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-focusSearch, .tu-show-searh, .show-search-menu-focus, .b-catalog-find', element => {\n\t\t\ttumGlobal.scrollUp();\n\n\t\t\tthis.showSearchTypes(element.dataset.code, element.dataset.startSearch == '');\n\t\t});\n\n\t\t//клик по ридмору или меню в миниатуюре ТУ или КА подсвечивает краточку\n\t\taddEventDelegate(document, 'click', \".b-product\", element => {\n\t\t\t$(element).addClass(\"important-border\");\n\t\t});\n\n\t\t//подсказки для доставки по миниатюрам ТУ\n\t\taddEventDelegate(document, 'click', '.tum-isFix-hint-deliv', element => {\n\t\t\tvar text = $(element).attr(\"data-content\");\n\t\t\tvar elem = $(element).closest(\".hasHint_deliv\");\n\t\t\tif ($(element).hasClass(\"d-none\")) {\n\t\t\t\tthis.showHintDeliv(text, elem, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.showHintDeliv(text, elem);\n\t\t});\n\t\t\n\t\taddEventDelegate(document, 'click', \".hideHintDeliv\", (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(element).closest(\".tum-hint-block-deliv\").addClass(\"d-none\");\n\t\t});\n\n\t\tself.defineSearchType();\n\t\tself.defineSearchOpen();\n\n\t\taddEventDelegate(document, 'click', '.operatorChat', () => {\n\t\t\tthis.loadLivetex(() => LiveTex.showWelcomeWindow());\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tu-showFirmOnMap', (element, e) => {\n\t\t\te.stopPropagation();\n\t\t\tself.showFirmOnMap({\n\t\t\t\tlat: $(element).attr('data-lat'),\n\t\t\t\tlong: $(element).attr('data-long'),\n\t\t\t\tfirmID: $(element).attr('data-firmid')\n\t\t\t});\n\t\t});\n\t\t\n\t\taddEventDelegate(document, 'click', '.tu-editUpdateFailureNotificationContacts', element => {\n\t\t\tthis.editFailureNotificationContacts($(element).attr('data-firmid'));\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tu-scrollUp', () => tumGlobal.scrollUp());\n\n\t\taddEventDelegate(document, 'click', '[data-wt-update]', element => {\n\t\t\tlet firmID = $(element).attr('data-firmid');\n\n\t\t\tajaxSend({ url: '/firmRequests/UpdateProductWeights', data: { firmID }}).then(data => {\n\t\t\t\tif (data.result) {\n\t\t\t\t\tlet msg = $('[data-wt-update-success-msg]').html();\n\t\t\t\t\tshowAlert(msg, { type: 'success2' });\n\t\t\t\t\t$('[data-wt-update-container]').remove();\n\t\t\t\t} else {\n\t\t\t\t\tlet msg = $('[data-wt-update-failure-msg]').html();\n\t\t\t\t\tshowAlert(msg, { type: 'danger2' });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".tum-enableExtendedView\", () => {\n\t\t\ttoggleExtendedView();\n\t\t});\n\t},\n\tshowSearchTypes: function(code, startSearch){\n\t\tif (!tumGlobal.isMob()){\n\t\t\tsearchWidgets.main.focus();\n\t\t\tsearchWidgets.main.toggleSearchTypes('show');\n\n\t\t\tif (code) searchWidgets.main.setSearchType(code);\n\t\t\tif (code && startSearch && searchWidgets.main.getQuery()) {\n\t\t\t\tsearchWidgets.main.search(searchWidgets.main.getSearchType().type, searchWidgets.main.getQuery());\n\t\t\t}\n\t\t} else {\n\t\t\timport(\"./searchMenu\").then(({tum_searchMenu}) => {\n\t\t\t\ttum_searchMenu.toggleMenu('show')\n\t\t\t\t.then(() => {\n\t\t\t\t\ttum_searchMenu.focusSearch();\n\t\t\t\t\ttum_searchMenu.toggleSearchTypes('show');\n\n\t\t\t\t\tif (code) tum_searchMenu.setSearchType(code);\n\t\t\t\t\tif (code && startSearch && tum_searchMenu.getSearchQuery()) {\n\t\t\t\t\t\ttum_searchMenu.search();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t},\n\tcheckCookies: function(){\n\t\tfunction showNoCookiesWarning(){\n\t\t\t$('.tum-noCookies-warning').removeClass('d-none');\n\t\t}\n\n\t\tvar cookieEnabled = navigator.cookieEnabled;\n\t\tif (!cookieEnabled){ \n\t\t\tsetCookie('testcookie', \"123\", 1);\n\t\t\tcookieEnabled = getCookie(\"testcookie\") == \"123\";\n\t\t\tif (cookieEnabled) {\n\t\t\t\tsetCookie('testcookie', '0', -1);\n\t\t\t}\n\t\t}\n\t\treturn cookieEnabled || showNoCookiesWarning();\n\t},\n\tupdateCartInfo: function(){\n\t\tvar cartCnt = tumarket.general.cartCount;\n\t\t$('.signIn-cart-warning .menu-count-cart').text(cartCnt);\n\n\t\tif (cartCnt > 0) {\n\t\t\t$(\".signIn-cart-warning\").removeClass(\"d-none\");\n\t\t}\n\n\t\tif (location.pathname.startsWith(\"/signup\")) {\n\t\t\timport(\"./login.js\").then(({ reg }) => {\n\t\t\t\t$(`input[name=saveCartItems][value=\"${(reg.options.saveCartItems ? \"1\" : \"0\")}\"]`).prop(\"checked\", true);\n\t\t\t});\n\t\t}\n\t},\n\tupdateCacheToggle: function(){\n\t\tvar disableCache = getCookie(\"disableCache\");\n\t\tif (disableCache == \"1\") {\n\t\t\t$(\".tum-toggleCache i\").removeClass(\"fa-toggle-off\").addClass(\"fa-toggle-on\");\n\t\t}\n\t\telse {\n\t\t\t$(\".tum-toggleCache i\").removeClass(\"fa-toggle-on\").addClass(\"fa-toggle-off\");\n\t\t}\n\n\t\tvar disableCache_long = getCookie(\"disableCache_long\");\n\t\tif (disableCache_long == \"1\") {\n\t\t\t$(\".tum-toggleCache-long i\").removeClass(\"fa-toggle-off\").addClass(\"fa-toggle-on\");\n\t\t}\n\t\telse {\n\t\t\t$(\".tum-toggleCache-long i\").removeClass(\"fa-toggle-on\").addClass(\"fa-toggle-off\");\n\t\t}\n\t},\n\tupdateOperatorAddonToggle: function(){\n\t\tvar enable = getCookie(\"enableOperatorAddon\");\n\t\tif (enable == \"1\") {\n\t\t\t$(\".tum-operatorAddonToggle i\").removeClass(\"fa-toggle-off\").addClass(\"fa-toggle-on\");\n\t\t}\n\t\telse {\n\t\t\t$(\".tum-operatorAddonToggle i\").removeClass(\"fa-toggle-on\").addClass(\"fa-toggle-off\");\n\t\t}\n\t},\n\tcollapseLinkClick: function (elm) {\t\t\n\t\telm.toggleClass('d-none');\n\t},\n\tcollapseLinkInfoClick: function (elm) {\n\t\tvar selector = $(elm).attr('data-main-link');\n\t\t$(selector).removeClass('d-none');\n\t},\n\tcollapseLinkClick2: function (elm) {\n\t\tvar id = elm.closest('div').attr('id');\n\t\tsetTimeout(function () {$('a.tum-collapse-link[href=\"#' + id + '\"]').removeClass('d-none'); }, 100);\n\t\t\n\t},\n\tcheckPageHeight: function () {\n\t\tif ($('body')[0].scrollHeight < window.innerHeight) {\n\t\t\t$('body').addClass('stuck-bottom');\n\t\t\t$('.b-footer').addClass('stuck-bottom');\n\t\t} else {\n\t\t\t$('body').removeClass('stuck-bottom');\n\t\t\t$('.b-footer').removeClass('stuck-bottom');\n\t\t}\n\t},\n\t//устанавливает тип поиска если таковой был передан\n\tdefineSearchType: function () {\n\t\tif (getUrlParameter(\"search-type\")) {\n\t\t\tvar searchType = getUrlParameter(\"search-type\");\n\t\t\t$(\"[data-search-type='\" + searchType + \"']\").first()[0]?.click();\n\t\t}\n\t},\n\t//открываем поиски если был передан параметр\n\tdefineSearchOpen: function () {\n\t\tif (getUrlParameter(\"search-open\") == \"1\") {\n\t\t\tthis.showSearchTypes();\n\t\t}\n\t},\n\tshowHintDeliv: function (txt, elem, close) {\n\t\tvar hintBlock = $(elem).find(\".tum-hint-block-deliv\");\n\t\tif (close) {\n\t\t\thintBlock.addClass(\"d-none\");\n\t\t\treturn;\n\t\t}\n\t\thintBlock.removeClass(\"d-none\");\n\t\thintBlock.html('
Закрыть
' + txt);\n\t\thintBlock.addClass('hintBorder');\n\t},\n\tcheckAuthorization: function(){\n\t\tlet isAuthorized = document.querySelector(\".t-authorized\")?.innerHTML == \"True\";\n\n\t\tif (isAuthorized) {\n\t\t\tajaxSend({ url: \"/home/checkAuthorization\" }).then(data => {\n\t\t\t\tif (!data.result) {\n\t\t\t\t\tlocation.reload();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\tgetShortUrl: function (url) {\n\t\tajaxSend({ url: '/shortLink/getShortUrl', data: { url: url || location.href } }).then(data => {\n\t\t\tvar title = 'Ссылка для товаров и услуг';\n\t\t\tvar html = `Скопировано в буфер обмена
\n\t\t\t\t\t\t${data.result}`;\n\n\t\t\ttumGlobal.copyToClipboard(data.result);\n\n\t\t\tshowDialog({\n\t\t\t\ttitle: title,\n\t\t\t\tcontent: html,\n\t\t\t\tonShown: () => $('#asModal .btn-primary').remove()\n\t\t\t});\n\t\t});\n\t},\n\tshowFirmOnMap: function(options){\n\t\tlet self = this;\n\n\t\timport(\"./map.js\").then(({ tu_maps }) => {\n\t\t\tshowDialog({\n\t\t\t\ttitle: 'На карте',\n\t\t\t\tcontent: '
',\n\t\t\t\tonShown: () => {\n\t\t\t\t\t$('.btn-primary', '#asModal').addClass('d-none');\n\t\n\t\t\t\t\tself.currentMap = tu_maps.create({\n\t\t\t\t\t\tcontainerId: 'menu-map-cont',\n\t\t\t\t\t\tcenter: {\n\t\t\t\t\t\t\tlat: options.lat,\n\t\t\t\t\t\t\tlong: options.long\n\t\t\t\t\t\t},\n\t\t\t\t\t\theight: null,\n\t\t\t\t\t\tzoom: 16,\n\t\t\t\t\t\tonLoad: (ymap, modules, map) => {\n\t\t\t\t\t\t\tlet placemark = new modules.Placemark([options.lat, options.long]);\n\t\n\t\t\t\t\t\t\tfunction showBalloon() {\n\t\t\t\t\t\t\t\tmap.getBalloonContent(options.firmID, 0, true)\n\t\t\t\t\t\t\t\t\t.then(e => map.showCustomBalloon(e, true));\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tplacemark.events.add('click', function () {\n\t\t\t\t\t\t\t\tshowBalloon();\n\n\t\t\t\t\t\t\t\timport(\"./statistics.js\").then(({ tumStats }) => {\n\t\t\t\t\t\t\t\t\ttumStats.logEvent({\n\t\t\t\t\t\t\t\t\t\tfirmID: options.firmID,\n\t\t\t\t\t\t\t\t\t\tobjectType: 'map',\n\t\t\t\t\t\t\t\t\t\teventType: 'click_showContacts'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\t\tymap.geoObjects.add(placemark);\n\t\t\t\t\t\t\tshowBalloon();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonClosed: () => {\n\t\t\t\t\t$('#asModal .btn-primary').removeClass('d-none');\n\t\t\t\t\ttu_maps.dropSettingsModal();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\t_getSearchBarTop: function(){\n\t\tlet searchbar = document.querySelector('.searchWidget');\n\t\treturn searchbar.getBoundingClientRect().top + window.scrollY;\n\t},\n\tupdateSearchMenuButton: function(){\n\t\tlet searchBarTop = this._getSearchBarTop();\n\t\tlet searchMenuButton = document.querySelector('.topbar .toggleSearchMenu');\n\n\t\tlet show = window.scrollY >= searchBarTop - 20;\n\n\t\tif (!searchIconBlinked) {\n\t\t\t_setTimeout(333).then(() => this.blinkSearchIcon());\n\t\t}\n\n\t\tlet active = searchMenuButton.matches('.active');\n\t\tlet shown = searchMenuButton.matches('.show');\n\n\t\t//если иконка сейчас мигает, то ее можно скрыть, но нельзя \"показать\", иначе ломается анимация\n\t\tif (active && !shown) {\n\t\t\tif (!show) {\n\t\t\t\ttoggleClass(searchMenuButton, 'show active', show);\t\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleClass(searchMenuButton, 'show active', show);\n\t},\n\tinitHeader: function(){\n\t\tsetInterval(() => this.blinkSearchIcon(), 10000);\n\t\tif (!tumGlobal.isMob() || !searchWidgets.main.exists()) {\n\t\t\tlet $searchMenuButton = $('.topbar .toggleSearchMenu');\n\t\t\t$searchMenuButton.addClass('show active');\n\t\t\treturn;\n\t\t} \n\t\t\n\t\t//кнопка меню поиска появляется, только когда поле поиска на странице скрывается с экрана\n\t\tthis.updateSearchMenuButton();\n\t\t$(document).on('scroll', () => this.updateSearchMenuButton());\n\t},\n\tblinkSearchIcon: function(){\n\t\tlet searchMenuButton = document.querySelector('.topbar .toggleSearchMenu');\n\t\tif (!searchMenuButton?.matches('.active')) return;\n\n\t\tlet delay = 333;\n\t\t\n\t\ttoggleClass(searchMenuButton, 'show', false);\n\t\t_setTimeout(delay)\n\t\t.then(() => toggleClass(searchMenuButton, 'show', true))\n\t\t.then(() => _setTimeout(delay))\n\t\t.then(() => toggleClass(searchMenuButton, 'show', false))\n\t\t.then(() => _setTimeout(delay))\n\t\t.then(() => {\n\t\t\tsearchIconBlinked = true\n\t\t\t\n\t\t\t//проверка на случай, если за время анимации иконка скрылась\n\t\t\tif (searchMenuButton.matches('.active')) {\n\t\t\t\ttoggleClass(searchMenuButton, 'show', true);\n\t\t\t}\n\t\t});\n\t},\n\tgetCartCount: function(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: '/home/getCartCount' }).then(data => {\n\t\t\t\tif (data.result) resolve(data.count);\n\t\t\t\telse reject('getCartCount error');\n\t\t\t});\n\t\t});\n\t},\n\tgetCartSum: function(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: '/home/getCartSum' }).then(data => {\n\t\t\t\tif (data.result) resolve(data.sum);\n\t\t\t\telse reject('getCartSum error');\n\t\t\t});\n\t\t});\n\t},\n\tgetFavoritesCount: function(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: '/home/getFavoritesCount' }).then(data => {\n\t\t\t\tif (data.result) resolve(data.count);\n\t\t\t\telse reject('getFavoritesCount error');\n\t\t\t});\n\t\t});\n\t},\n\tgetNotificationsCount: function(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: '/home/getNotificationsCount' }).then(data => {\n\t\t\t\tif (data.result) resolve(data.count);\n\t\t\t\telse reject('getNotificationsCount error');\n\t\t\t});\n\t\t});\n\t},\n\t_updateCartCount: function(){\n\t\tlet $count = $('.topbar .cart-count');\n\t\t$count.html(tumarket.general.cartCount);\n\t\t$count.toggleClass('d-none', tumarket.general.cartCount == 0);\n\t},\n\t_updateCartSum: function(){\n\t\tlet $cart = $('.topbar .topbar-cart');\n\t\t$cart.attr('title', tumarket.general.cartSum > 0 ? `Сумма: ${tumarket.general.cartSum.toFixed(2)}р` : null)\n\t\t$cart.toggleClass('d-none', tumarket.general.cartSum == 0);\n\t},\n\t_updateFavoritesCount: function(){\n\t\tlet $count = $('.topbar .favorites-count');\n\t\t$count.html(tumarket.general.favoritesCount);\n\t\t$count.toggleClass('d-none', tumarket.general.favoritesCount == 0);\n\t},\n\t_updateNotificationsCount: function(){\n\t\tlet $count = $('.topbar .notifications-count');\n\t\t$count.html(tumarket.general.notificationsCount);\n\t\t$count.toggleClass('d-none', tumarket.general.notificationsCount == 0);\n\t},\n\tupdateCartCount: function(){\n\t\tthis.getCartCount()\n\t\t.then(count => {\n\t\t\ttumarket.general.cartCount = count;\n\t\t\tthis._updateCartCount();\n\t\t});\n\t},\n\tupdateCartSum: function(){\n\t\tthis.getCartSum()\n\t\t.then(sum => {\n\t\t\ttumarket.general.cartSum = sum;\n\t\t\tthis._updateCartSum();\n\t\t});\n\t},\n\tupdateFavoritesCount: function(){\n\t\tthis.getFavoritesCount()\n\t\t.then(count => {\n\t\t\ttumarket.general.favoritesCount = count;\n\t\t\tthis._updateFavoritesCount();\n\t\t});\n\t},\n\tupdateNotificationsCount: function(){\n\t\tthis.getNotificationsCount()\n\t\t.then(count => {\n\t\t\ttumarket.general.notificationsCount = count;\n\t\t\tthis._updateNotificationsCount();\n\t\t});\n\t},\n\tisHeaderFloating: function(){\n\t\treturn $('.header-floating').hasClass('show');\n\t},\n\tgetFirmSettings: function(firmId) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: '/firmRequests/getFirmSettings', data: { firmId } }).then(data => {\n\t\t\t\tif (data.result) resolve(data.value);\n\t\t\t\telse reject(data.msg);\n\t\t\t});\n\t\t});\n\t},\n\teditFailureNotificationContacts: function(firmId) {\n\t\tPromise.all([\n\t\t\tthis.getFirmSettings(firmId),\n\t\t\tthis.getUserRole(firmId),\n\t\t\tloadPrecompiledTemplates(['updateFailureNotificationContacts-form'])\n\t\t])\n\t\t.then(results => {\n\t\t\tlet form = null;\n\t\t\tlet formJson = getPrecompiledTemplate('updateFailureNotificationContacts-form')();\n\t\t\tlet formFields = JSON.parse(formJson);\n\t\t\tlet formData = JSON.parse(results[0].updateFailureNotificationContacts || '{}');\n\n\t\t\tshowDialog({\n\t\t\t\ttitle: 'Контакты при сбоях в обновлении',\n\t\t\t\tcontent: '
',\n\t\t\t\tbuttonText: 'Сохранить',\n\t\t\t\tonShown: () => {\n\t\t\t\t\timport(\"./form/form.js\").then(({ tu_form }) => {\n\t\t\t\t\t\ttu_form.create({\n\t\t\t\t\t\t\tcontainer: '.contacts-form',\n\t\t\t\t\t\t\tfields: formFields,\n\t\t\t\t\t\t\tdata: formData,\n\t\t\t\t\t\t\tuserRoles: [results[1]]\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(f => form = f);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonSubmit: () => {\n\t\t\t\t\tif (!form) return;\n\n\t\t\t\t\tif (!form.validate()) {\n\t\t\t\t\t\tbootstrapAlert('Не все поля заполнены корректно', { type: 'danger' });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet data = form.getData();\n\n\t\t\t\t\tfunction alert(){\n\t\t\t\t\t\tbootstrapAlert('Контакт с выбранным приоритетом должен быть заполнен', { type: 'danger' });\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.tech.priority == 'phone' && !data.tech.phone) {\n\t\t\t\t\t\talert();\n\t\t\t\t\t\tform.addHighlight({ name: 'tech', field: 'phone' });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.tech.priority == 'email' && !data.tech.email) {\n\t\t\t\t\t\talert();\n\t\t\t\t\t\tform.addHighlight({ name: 'tech', field: 'email' });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.org.priority == 'phone' && !data.org.phone) {\n\t\t\t\t\t\talert();\n\t\t\t\t\t\tform.addHighlight({ name: 'org', field: 'phone' });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.org.priority == 'email' && !data.org.email) {\n\t\t\t\t\t\talert();\n\t\t\t\t\t\tform.addHighlight({ name: 'org', field: 'email' });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.updateFirmSettings(firmId, { updateFailureNotificationContacts: JSON.stringify(data) })\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tbootstrapAlert('Сохранено', { type: 'success' });\n\t\t\t\t\t\tcloseDialog();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(msg => bootstrapAlert(msg || 'Ошибка', { type: 'danger' }));\n\t\t\t\t}\n\t\t\t});\n\t\t})\n\t\t.catch(msg => showAlert(msg || 'Ошибка', { type: 'danger2' }))\n\t},\n\tupdateFirmSettings: function(firmId, settings) {\n\t\tsettings.firmId = firmId;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\trequest('firm-settings-update', settings).then(data => {\n\t\t\t\tif (data.result) resolve();\n\t\t\t\telse reject(data.msg);\n\t\t\t});\n\t\t});\n\t},\n\tcheckPermissions: function(firmID){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: '/firmRequests/checkPermissions', data: { firmID } }).then(data => {\n\t\t\t\tif (data.result) resolve(data.value);\n\t\t\t\telse reject(data.msg);\n\t\t\t});\n\t\t});\n\t},\n\tgetUserRole: function(firmID){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: '/firmRequests/getUserRole', data: { firmID } }).then(data => {\n\t\t\t\tif (data.result) resolve(data.value);\n\t\t\t\telse reject(data.msg);\n\t\t\t});\n\t\t});\n\t},\n\t/**\n\t * Создает плавающее окно\n\t * По умолчанию у него display: none. Чтобы показать, $('.floating-window', $wrapper).removeClass('d-none'),\n\t * где $wrapper - то, что возвращает эта функция\n\t * @name уникальный идентификатор. Если уже существует, берется существующее окно.\n\t * @html\n\t * @top\n\t * @bottom\n\t * @left\n\t * @right\n\t * @returns {object} Обертка над окном\n\t */\n\tgetFloatingWindow: function(options){\n\t\tlet $wrapper = $('.floating-window-wrapper[data-name=\"' + options.name + '\"]');\n\n\t\tif (!$wrapper.length) {\n\t\t\t$wrapper = $(`\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${options.html}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t`);\n\n\t\t\tlet $window = $('.floating-window', $wrapper);\n\t\t\tif (options.top) $window.css('top', options.top);\n\t\t\tif (options.bottom) $window.css('bottom', options.bottom);\n\t\t\tif (options.left) $window.css('left', options.left);\n\t\t\tif (options.right) $window.css('right', options.right);\n\t\t\t$('body').append($wrapper);\n\n\t\t\ttumGlobal.onClickOutside($window.add(options.button), () => $window.addClass('d-none'));\n\t\t}\n\t\t\n\t\treturn $wrapper;\n\t},\n\tinitFloatingWindows: function(){\n\t\taddEventDelegate(document, 'click', '[data-toggle=\"floatingwindow\"]', element => {\n\t\t\tif (isMob()) {\n\t\t\t\tshowDialog({\n content: `
${document.querySelector(element.dataset.contenttarget).innerHTML}
`,\n pinToBottom: true,\n\t\t\t\t\tclasses: \"opened-as-floating\",\n\t\t\t\t\ttitle: element.dataset.title\n });\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet options = {\n\t\t\t\tname: element.dataset.name,\n\t\t\t\thtml: document.querySelector(element.dataset.contenttarget).innerHTML,\n\t\t\t\ttop: element.dataset.top,\n\t\t\t\tbottom: element.dataset.bottom,\n\t\t\t\tleft: element.dataset.left,\n\t\t\t\tright: element.dataset.right,\n\t\t\t\tbutton: $(element)\n\t\t\t};\n\n\t\t\tlet $windowWrapper = this.getFloatingWindow(options);\n\t\t\t$('.floating-window', $windowWrapper).toggleClass('d-none');\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.floating-window-close', element => {\n\t\t\tlet $window = $(element).closest('.floating-window');\n\t\t\t$window.toggleClass('d-none');\n\n\t\t\t$('.modal.show.opened-as-floating').modal('hide');\n\t\t});\n\t},\n\tsetSeoFooterCookie: function(value){\n\t\treturn new Promise(resolve => ajaxSend({ url: '/home/setSeoFooterCookie', data: { value } }).then(resolve));\n\t},\n\tgetFirmSchedule: function(firmID, depID){\n\t\treturn new Promise(resolve => ajaxSend({ url: '/FirmRequests/GetFirmSchedule', data: { firmID: firmID, depID: depID } }).then(resolve));\n\t}\n}\n\nArray.prototype.diff = function (a) {\n\treturn this.filter(function (i) {\n\t\treturn a.indexOf(i) === -1;\n\t});\n};\n\nexport default tumCommon;","import { toggleClass } from \"./dom\";\n\n/**\n * \n * @param {HTMLElement} element \n * @param {boolean} value\n */\nfunction setToggle(element, value) {\n toggleClass(element, 'fa-toggle-on', value);\n toggleClass(element, 'fa-toggle-off', value == undefined ? undefined : !value);\n element.dispatchEvent(new Event(\"tum.toggle.change\", { bubbles: true }));\n}\n\nexport { setToggle };\n","let _version = \"\";\nlet _domain = \"\";\n\n/**\n * @typedef {object} CookieOptions\n * @property {string} version\n * @property {string} domain\n */\n\n/**\n * \n * @param {CookieOptions} param0 \n */\nfunction initCookies({ version, domain }) {\n _version = version;\n _domain = domain;\n}\n\n/**\n * \n * @param {string} name \n * @param {string} value \n * @param {number} [days] \n */\nfunction setCookie(name, value, days = 30) {\n if (_version) {\n name = name + \"_\" + _version;\n }\n\n var expires;\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toUTCString();\n } else {\n expires = \"\";\n }\n\n var domain = \"\";\n if (_domain) {\n var domainName = _domain.startsWith(\".\") ? _domain.substring(1) : _domain;\n\n if (!location.hostname.includes(domainName)) {\n _domain = location.hostname;\n }\n\n if (location.href.toLowerCase().indexOf(domainName.toLowerCase()) > -1) {\n domain = \"; domain=\" + _domain;\n }\n }\n\n document.cookie = name + \"=\" + encodeURIComponent(value) + expires + domain + \"; path=/\";\n}\n\n/**\n * \n * @param {string} c_name \n * @returns {string}\n */\nfunction getCookie(c_name) {\n if (_version) {\n c_name = c_name + \"_\" + _version;\n }\n\n if (document.cookie.length > 0) {\n var c_start = document.cookie.indexOf(c_name + \"=\");\n if (c_start != -1) {\n c_start = c_start + c_name.length + 1;\n var c_end = document.cookie.indexOf(\";\", c_start);\n if (c_end == -1) {\n c_end = document.cookie.length;\n }\n return decodeURIComponent(document.cookie.substring(c_start, c_end));\n }\n }\n\n return \"\";\n}\n\nwindow.getCookie = getCookie;\nwindow.setCookie = setCookie;\n\nexport { getCookie, setCookie, initCookies };","/* global tumarket */\n\nimport * as $ from \"jquery\";\nimport { openProgressbar, closeProgressbar } from \"./progressbar\";\n\n/**\n * @typedef {object} Lib\n * @property {any} [conditionObject]\n * @property {string} [cssLink]\n * @property {string} [jsLink]\n * @property {boolean} [showProgressbar=true]\n */\n\n/**\n * \n * @param {Lib} param0 \n * @returns \n */\nfunction loadLib({ jsLink, cssLink, conditionObject, showProgressbar = true, useVersion = true }) {\n if (cssLink) {\n if (useVersion) {\n cssLink = `${cssLink}?v=${tumarket.cacheDate || ''}`;\n }\n\n if (!document.querySelector(`link[rel=\"stylesheet\"][href=\"${cssLink}\"]`)) {\n $('head').append(``);\n }\n\n return Promise.resolve();\n }\n\n if (!conditionObject) {\n if (showProgressbar) openProgressbar();\n \n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n document.body.appendChild(script);\n script.onload = resolve;\n script.onerror = reject;\n script.async = true;\n script.src = jsLink;\n }).then(() => {\n if (showProgressbar) closeProgressbar();\n });\n }\n\n return Promise.resolve();\n}\n\nexport { loadLib };\n","import * as $ from \"jquery\";\n\nfunction openProgressbar() {\n if (!$('.as-progCont').length){\n $('body').append(\"
\");\n }\n\n $('.as-progCont').html('
Подождите...
');\n}\n\nfunction closeProgressbar() {\n $('.as-overlay').fadeOut('slow', function () {\n $(this).remove();\n });\n}\n\nexport { openProgressbar, closeProgressbar };\n","import * as Handlebars from \"handlebars\";\nimport dateFormat from \"../lib/dateformat/dateformat\";\nimport { appendHtml } from \"./dom\";\nimport { capitalize, encodeHtml, groupBy, isDateInThisWeek, parseDate, sort } from \"./util\";\nimport { getCookie } from \"./cookie\";\n\nlet cacheDate = window.tumarket.cacheDate;\nwindow.Handlebars = Handlebars;\n\nlet aliases = [\n];\n\nfunction chunk(array, size) {\n let result = [];\n for (let i = 0; i < array.length / size; i++) {\n result.push(array.slice(i * size, (i+1) * size));\n }\n\n return result;\n}\n\nlet loadedTemplates = [];\nlet loadingTemplates = [];\n\n/** @type {Object.} */\nlet templateDependencies = {};\n\n/** @type {Object.} */\nlet helpers = {\n equals: (a,b) => a == b,\n or: function() { return [...arguments].slice(0, -1).some(e => e) },\n and: function() { return [...arguments].slice(0, -1).every(e => e) },\n coalesce: function() { return [...arguments].slice(0, -1).find(e => e) },\n not: a => !a,\n isNull: a => a == null,\n len: a => (a || '').length,\n gt: (a,b) => (a || 0) > (b || 0),\n lt: (a,b) => (a || 0) < (b || 0),\n slice: (a,b,c) => (a || []).slice((b || 0), (c || 0)),\n skip: (a,b) => (a || []).slice((b || 0)),\n truncate: (val, len) => {\n if (!val) return '';\n return val.length > len ? val.substring(0, len) + '…' : val;\n },\n truncateMiddle: (val, len) => {\n if (!val) return '';\n return val.substring(0, len) + '…' + val.substring(val.length - len, val.length);\n },\n lowercase: a => a.toLowerCase(),\n toJson: a => JSON.stringify(a || {}),\n toFormattedJson: a => JSON.stringify(a, null, 2),\n getDate: () => new Date(),\n parseDate: a => parseDate(a),\n formatDate: (a,b) => a ? dateFormat(new Date(a), b) : '',\n formatNumber: a => new Intl.NumberFormat('ru-RU', { minimumFractionDigits: a % 1 ? 2 : 0, maximumFractionDigits: 2 }).format(a),\n formatNumber2: a => new Intl.NumberFormat('ru-RU', { minimumFractionDigits: 0, maximumFractionDigits: 2 }).format(a),\n formatNumber3: a => a?.toFixed(3).replace(/\\.?0+$/, '').replace('.', ','),\n formatKop: a => new Intl.NumberFormat('ru-RU', { minimumIntegerDigits: 2 }).format(a),\n formatPrice: a => {\n var price = a.toFixed(2).replace(',', '.');\n var arr = price.split('.');\n if (arr.length > 1)\n {\n let res = `${new Intl.NumberFormat('ru-RU').format(Number(arr[0]))}${new Intl.NumberFormat('ru-RU', { minimumIntegerDigits: 2 }).format(arr[1])}`;\n return res;\n }\n else\n {\n let res = `${new Intl.NumberFormat('ru-RU').format(Number(arr[0]))}`;\n return res;\n }\n },\n add: (a,b) => Number(a || 0) + Number(b || 0),\n contains: (a,b) => (a || '').toString().toLowerCase().indexOf((b || '').toString().toLowerCase()) > -1,\n startsWith: (a,b) => (a || '').toString().toLowerCase().startsWith((b || '').toString().toLowerCase()),\n urlEncode: a => encodeURIComponent(a),\n urlEscape: a => a?.replace(\"%\", \"%25\").replace(\" \", \"%20\"),\n urlDecode: a => { \n let res = '';\n try {\n res = decodeURIComponent(a);\n } catch {}\n return res;\n },\n parseJson: a => { \n let res = {};\n try {\n res = JSON.parse(a);\n } catch {}\n return res;\n },\n printif: (cond, a) => {\n if (cond) return a;\n return \"\";\n },\n iif: (cond, a, b) => {\n if (cond) return a;\n return b;\n },\n in: (item, array) => array.includes(item),\n split: (string, separator) => string?.split(separator),\n join: (array, separator) => array?.join(separator),\n substring: (string, index, length) => string?.substring(index, index + length),\n get: (array, index) => {\n if (!array) return null;\n if (index >= array.length) return null;\n return array[index];\n },\n getValue: (object, key) => object[key]?.toString(),\n getObject: (object, key) => object[key],\n replace: (string, pattern, replacement) => string?.replace(pattern, replacement),\n replaceRegex: (string, pattern, replacement) => string?.replace(new RegExp(pattern), replacement),\n testRegex: (string, pattern) => new RegExp(pattern).test(string),\n whereEquals: (array, field, value) => array?.filter(e => e[field] == value) || [],\n whereNotEquals: (array, field, value) => array?.filter(e => e[field] != value) || [],\n mapField: function(array, field) {\n if (!array?.length) return [];\n\n let args = [...arguments].slice(0, -1);\n let helper = args[2];\n let mapper;\n if (!helper) {\n mapper = e => e;\n } else {\n mapper = e => helpers[helper](...[e, ...args.slice(3)])\n }\n\n return array.map(e => mapper(e[field]));\n },\n map: function(array, helper) { \n return array?.map(e => helpers[helper](...[e, ...[...arguments].slice(0, -1).slice(2)]));\n },\n /**\n * \n * @param {object[]} array \n * @returns \n */\n flatMap: function(array) {\n if (!array?.length) return [];\n\n let args = [...arguments].slice(0, -1);\n let field = null;\n if (args.length == 2) field = args[1];\n\n if (field) array = array.filter(e => e[field]).map(e => e[field]);\n\n return array.flatMap(e => e);\n },\n getRandom: (array) => array[Math.floor(Math.random() * array.length)],\n random: (min, max) => min + Math.floor(Math.random() * (max - min + 1)),\n concat: function() { return [...arguments].slice(0, -1).join('') },\n nconcat: function() { \n let args = [...arguments].slice(0, -1);\n if (args.some(e => !e)) return '';\n return args.join('');\n },\n array: function() { return [...arguments].slice(0, -1) },\n filter: function(a) {\n let args = [...arguments].slice(0, -1);\n let field = args[1];\n\n let helper = args[2];\n let mapper;\n if (!helper) {\n mapper = e => e;\n } else {\n mapper = e => helpers[helper](...[e, ...args.slice(3)])\n }\n\n if (field) {\n return a.filter(e => mapper(e[field]));\n }\n\n return a.filter(e => e)\n },\n reverseFilter: function(a) {\n let args = [...arguments].slice(0, -1);\n let field = args[1];\n\n let helper = args[2];\n let mapper;\n if (!helper) {\n mapper = e => e;\n } else {\n mapper = e => helpers[helper](...[e, ...args.slice(3)])\n }\n\n if (field) {\n return a.filter(e => !mapper(e[field]));\n }\n\n return a.filter(e => !e)\n },\n capitalize: a => capitalize(a),\n htmlAttributes: options => {\n let attributes = Object.entries(options.hash).filter(e => e[1]);\n if (!attributes.length) return '';\n\n return attributes.map(e => `${e[0]}=\"${encodeHtml(e[1].toString())}\"`).join(' ');\n },\n htmlStyle: options => {\n let styles = Object.entries(options.hash).filter(e => e[1]);\n if (!styles.length) return '';\n \n return `style=\"${styles.map(e => `${e[0]}: ${e[1]}`).join('; ')}\"`;\n },\n getCookie: name => getCookie(name),\n case: function() {\n let args = [...arguments].slice(0, -1);\n let defaultValue = args.slice(-1)[0];\n let rest = args.slice(0, -1);\n for (let [condition, value] of chunk(rest, 2)) {\n if (condition) return value;\n }\n return defaultValue;\n },\n switch: function() {\n let args = [...arguments].slice(0, -1);\n let value = args[0];\n let defaultResult = args.slice(-1)[0];\n let rest = args.slice(1, -1);\n for (let [option, result] of chunk(rest, 2)) {\n if (value == option) return result;\n }\n return defaultResult;\n },\n groupBy: function(array, field) {\n let args = [...arguments].slice(0, -1);\n\n if (args.length > 2) {\n let helper = args[2];\n let mapper = e => helpers[helper](...[e, ...args.slice(3)]);\n array = array.map(mapper);\n }\n\n return groupBy(array, field);\n },\n min: array => sort(array)[0] || null,\n max: array => sort(array, true)[0] || null,\n sort: function(array, desc) {\n let args = [...arguments].slice(0, -1);\n let helper = args[2];\n let mapper;\n if (!helper) {\n mapper = e => e;\n } else {\n mapper = e => helpers[helper](...[e, ...args.slice(3)])\n }\n\n return sort(array, desc, mapper);\n },\n sortBy: function(array, field, desc) {\n let args = [...arguments].slice(0, -1);\n let helper = args[3];\n let mapper;\n if (!helper) {\n mapper = e => e;\n } else {\n mapper = e => helpers[helper](...[e, ...args.slice(4)])\n }\n\n let copy = [...array];\n copy.sort((a, b) => {\n if (mapper(a[field]) > mapper(b[field])) return 1;\n if (mapper(a[field]) < mapper(b[field])) return -1;\n return 0;\n });\n\n if (desc) copy.reverse();\n return copy;\n },\n sort2: function(array, options) {\n let items = JSON.parse(options);\n\n let copy = [...array];\n\n let compare = (a, b, options) => {\n if (options.field) {\n a = a[options.field] || a[capitalize(options.field)];\n b = b[options.field] || b[capitalize(options.field)];\n }\n\n if (options.map) {\n a = options.map[a] || options.map['_default_'] || a;\n b = options.map[b] || options.map['_default_'] || b;\n }\n\n if (typeof a === 'number') return options.desc ? b - a : a - b;\n if (typeof a === 'string') return options.desc ? b.localeCompare(a) : a.localeCompare(b);\n if (typeof a === 'boolean') return options.desc ? b || a : a || b;\n };\n\n let compare_total = (a, b, sort_items) => {\n let result = 0;\n for (let item of sort_items) {\n result = result || compare(a, b, item);\n }\n return result;\n };\n\n copy.sort((a, b) => compare_total(a, b, items));\n\n return copy;\n },\n first: array => {\n if (!array?.length) return null;\n return array[0];\n },\n last: array => {\n if (!array?.length) return null;\n return array.slice(-1)[0];\n },\n dateToTimestamp: a => new Date(a).getTime(),\n timestampToDate: a => new Date(a),\n isToday: function(a) {\n let args = [...arguments].slice(0, -1);\n\n let offset = 0;\n if (args.length == 2) offset = args[1];\n\n let today = new Date();\n today = new Date(today.setDate(today.getDate() + offset));\n let day = new Date(a);\n \n\n return today.setHours(0,0,0,0) === day.setHours(0,0,0,0);\n },\n isThisWeek: function(a) {\n let args = [...arguments].slice(0, -1);\n\n let offset = 0;\n if (args.length == 2) offset = args[1];\n\n let day = new Date(a);\n return isDateInThisWeek(day, offset);\n },\n isThisMonth: function(a) {\n let args = [...arguments].slice(0, -1);\n\n let offset = 0;\n if (args.length == 2) offset = args[1];\n\n let day = new Date(a);\n let today = new Date();\n return day.getFullYear() == today.getFullYear() && day.getMonth() == today.getMonth() + offset;\n },\n toString: a => a?.toString(),\n entries: a => {\n if (!a) return null;\n return Object.entries(a).map(e => ({ key: e[0], value: e[1] }));\n },\n isArray: a => {\n return Array.isArray(a);\n },\n isObject: a => {\n return typeof a === 'object';\n },\n multiply: (a, b) => a * b,\n divide: (a, b) => a / b,\n floor: a => Math.floor(a),\n round: a => Math.round(a),\n mod: (a, b) => a % b,\n object: options => options.hash,\n apply: (helper, args_array) => helpers[helper](...args_array, null),\n trim: a => a.trim()\n};\n\n/**\n * \n * @param {string} url \n * @param {boolean} [fetchDependencies=true]\n * @returns {Promise}\n */\nfunction loadTemplate(url, fetchDependencies = true) {\n if (loadedTemplates.indexOf(url) > -1) {\n return Promise.resolve();\n }\n \n let dependencies = [];\n let nameMatch = url.match(/\\/template\\/([a-zA-Z0-9_-]+)\\/?(wrap)?/);\n let name = nameMatch ? nameMatch[1] : null;\n\n return fetch(url, { headers: { \"tuajax\": \"true\" } }).then(response => {\n dependencies = response.headers.get('template-dependencies')?.split(',').map(e => e.trim());\n return response.text();\n }).then(template => {\n if (document.querySelector(`#template-${name}`)) return Promise.resolve();\n appendHtml(\"body\", template);\n loadedTemplates.push(url);\n return Promise.resolve();\n }).then(() => {\n if (fetchDependencies && dependencies?.length) {\n templateDependencies[name] = dependencies;\n\n return Promise.all(dependencies.map(e => { \n return loadTemplate(`/template/${e}/wrap?v=${cacheDate}`, false);\n })).then(() => Promise.resolve());\n }\n return Promise.resolve();\n });\n}\n\n/**\n * \n * @param {string} name \n * @param {boolean} [fetchDependencies=true] \n * @param {boolean} [partial=false] \n * @returns {Promise}\n */\nfunction loadPrecompiledTemplate(name, fetchDependencies = true, partial = false) {\n let originalName = name;\n let alias = aliases.find(e => e.at(0) == name)?.at(1);\n name = alias || name;\n\n let cacheKey = `${name}${partial ? \"_partial\" : \"\"}`;\n if (loadedTemplates.includes(cacheKey)) {\n return Promise.resolve();\n }\n\n if (loadingTemplates.includes(cacheKey)) {\n return new Promise(resolve => {\n document.addEventListener('tu.template.loaded', e => {\n if (e.detail.template == cacheKey) {\n resolve()\n }\n });\n });\n }\n \n loadingTemplates.push(cacheKey);\n\n let dependencies = [];\n let url = `/template/${name}/precompiled?v=${cacheDate}${partial ? \"&partial=true\" : \"\"}`;\n\n return fetch(url, { headers: { \"tuajax\": \"true\" } }).then(response => {\n dependencies = response.headers.get('template-dependencies')?.split(',').map(e => e.trim()).filter(e => e);\n return response.text();\n }).then(template => {\n if (document.getElementById(`precompiled-${name}`)) return Promise.resolve();\n let script = document.createElement('script');\n script.id = `precompiled-${name}`;\n script.innerHTML = template;\n document.body.appendChild(script);\n\n //partial alias\n Handlebars.partials[name] = Handlebars.templates[name]; \n Handlebars.partials[`template-${name}`] = Handlebars.templates[name];\n\n if (alias) {\n Handlebars.templates[originalName] = Handlebars.templates[name];\n Handlebars.partials[originalName] = Handlebars.templates[name]; \n Handlebars.partials[`template-${originalName}`] = Handlebars.templates[name];\n }\n\n return Promise.resolve();\n }).then(() => {\n if (fetchDependencies && dependencies?.length) {\n templateDependencies[name] = dependencies;\n\n return Promise.all(dependencies.map(e => { \n return loadPrecompiledTemplate(e, true);\n }))\n .then(() => {\n loadingTemplates = loadingTemplates.filter(e => e != cacheKey);\n loadedTemplates.push(cacheKey);\n document.dispatchEvent(new CustomEvent('tu.template.loaded', { detail: { template: cacheKey } }));\n return Promise.resolve();\n });\n }\n\n loadingTemplates = loadingTemplates.filter(e => e != cacheKey);\n loadedTemplates.push(cacheKey);\n document.dispatchEvent(new CustomEvent('tu.template.loaded', { detail: { template: cacheKey } }));\n return Promise.resolve();\n });\n}\n\n/**\n * \n * @param {string[]} urls \n * @returns \n */\nfunction loadTemplates(urls) {\n return Promise.all(urls.map(e => loadTemplate(e + \"?v=\" + cacheDate)));\n}\n\n/**\n * \n * @param {string[]} names \n * @returns \n */\nfunction loadPrecompiledTemplates(names) {\n return Promise.all(names.map(e => loadPrecompiledTemplate(e)));\n}\n\nfunction initHelpers() {\n for (let helper in helpers) {\n Handlebars.registerHelper(helper, helpers[helper]);\n }\n}\n\nfunction initUaParserHelper(){\n return import('ua-parser-js').then(modules => {\n Handlebars.registerHelper('uaparser', (a, b) => {\n let data = modules.default(a);\n if (b == 'os') return data.os.name;\n if (b == 'browser') return data.browser.name;\n if (b == 'device') return data.device.model;\n if (b == 'type') return data.device.type;\n return '';\n });\n });\n}\n\n/**\n * \n * @param {string} template \n * @returns \n */\nfunction getPrecompiledTemplate(template){\n return Handlebars.templates[template];\n}\n\ninitHelpers();\n\nexport { loadPrecompiledTemplates, getPrecompiledTemplate, loadTemplates, helpers, initUaParserHelper };","function newUuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\nexport { newUuid };","/*\n * Date Format 1.2.3\n * (c) 2007-2009 Steven Levithan \n * MIT license\n *\n * Includes enhancements by Scott Trenda \n * and Kris Kowal \n *\n * Accepts a date, a mask, or a date and a mask.\n * Returns a formatted version of the given date.\n * The date defaults to the current date/time.\n * The mask defaults to dateFormat.masks.default.\n */\n\n/* forked from https://stevenlevithan.com/assets/misc/date.format.js */\n\nvar dateFormat = function () {\n\tvar\ttoken = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\\1?|[LloSZ]|\"[^\"]*\"|'[^']*'/g,\n\t\ttimezone = /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g,\n\t\ttimezoneClip = /[^-+\\dA-Z]/g,\n\t\tpad = function (val, len) {\n\t\t\tval = String(val);\n\t\t\tlen = len || 2;\n\t\t\twhile (val.length < len) val = \"0\" + val;\n\t\t\treturn val;\n\t\t};\n\n\t// Regexes and supporting functions are cached through closure\n\treturn function (date, mask, utc) {\n\t\t// You can't provide utc if you skip other args (use the \"UTC:\" mask prefix)\n\t\tif (arguments.length == 1 && Object.prototype.toString.call(date) == \"[object String]\" && !/\\d/.test(date)) {\n\t\t\tmask = date;\n\t\t\tdate = undefined;\n\t\t}\n\n\t\t// Passing date through Date applies Date.parse, if necessary\n\t\tdate = date ? new Date(date) : new Date;\n\t\tif (isNaN(date)) throw SyntaxError(\"invalid date\");\n\n\t\tmask = String(mask);\n\n\t\t// Allow setting the utc argument via the mask\n\t\tif (mask.slice(0, 4) == \"UTC:\") {\n\t\t\tmask = mask.slice(4);\n\t\t\tutc = true;\n\t\t}\n\n\t\tvar\t_ = utc ? \"getUTC\" : \"get\",\n\t\t\td = date[_ + \"Date\"](),\n\t\t\tm = date[_ + \"Minutes\"](),\n\t\t\ty = date[_ + \"FullYear\"](),\n\t\t\tH = date[_ + \"Hours\"](),\n\t\t\tM = date[_ + \"Month\"](),\n\t\t\ts = date[_ + \"Seconds\"](),\n\t\t\tL = date[_ + \"Milliseconds\"](),\n\t\t\to = utc ? 0 : date.getTimezoneOffset(),\n\t\t\tflags = {\n\t\t\t\td: d,\n\t\t\t\tdd: pad(d),\n\t\t\t\tm: m,\n\t\t\t\tmm: pad(m),\n\t\t\t\tyy: String(y).slice(2),\n\t\t\t\tyyyy: y,\n\t\t\t\th: H % 12 || 12,\n\t\t\t\thh: pad(H % 12 || 12),\n\t\t\t\tH: H,\n\t\t\t\tHH: pad(H),\n\t\t\t\tM: M + 1,\n\t\t\t\tMM: pad(M + 1),\n\t\t\t\ts: s,\n\t\t\t\tss: pad(s),\n\t\t\t\tl: pad(L, 3),\n\t\t\t\tL: pad(L > 99 ? Math.round(L / 10) : L),\n\t\t\t\tt: H < 12 ? \"a\" : \"p\",\n\t\t\t\ttt: H < 12 ? \"am\" : \"pm\",\n\t\t\t\tT: H < 12 ? \"A\" : \"P\",\n\t\t\t\tTT: H < 12 ? \"AM\" : \"PM\",\n\t\t\t\tZ: utc ? \"UTC\" : (String(date).match(timezone) || [\"\"]).pop().replace(timezoneClip, \"\"),\n\t\t\t\to: (o > 0 ? \"-\" : \"+\") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),\n\t\t\t\tS: [\"th\", \"st\", \"nd\", \"rd\"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]\n\t\t\t};\n\n\t\treturn mask.replace(token, function ($0) {\n\t\t\treturn $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);\n\t\t});\n\t};\n}();\n\nexport default dateFormat;"],"names":["_setTimeout","ms","Promise","resolve","setTimeout","searchIconBlinked","tumCommon","options","hideFloatingHeader","init","Object","assign","this","initCallbacks","checkAuthorization","updateCartInfo","checkCookies","initHeader","initFloatingHeader","initCtuCloud","initFloatingWindows","initCacheControls","initOperatorControls","element","event","stopPropagation","document","content","dataset","copyToClipboard","type","querySelector","addEventListener","remove","closest","dropdown","tumarket","isAdmin","el","querySelectorAll","showAdminOnlyStuff","url","data","prefix","firmId","then","result","preventDefault","self","isMob","window","updateFloatingHeader","dispatchEvent","Event","showFloatingHeader","showFloatingHeader_desktop","showFloatingHeader_mob","toggleTopBar","toggleFloatingHeader","header","scrollY","clientHeight","innerHeight","containers","cloud","scrollWidth","offsetWidth","$back","$forward","classList","add","addClass","maxScrollLeft","updateButtons","showBack","scrollLeft","showForward","on","animate","Math","max","min","updateCacheToggle","location","reload","updateOperatorAddonToggle","loadLivetex","callback","LiveTex","liveTex","liveTexID","liveTex_object","onLiveTexReady","hideLabel","jsLink","conditionObject","_LiveTex","name","value","duration","target","undefined","bubbles","setToggle","scrollUp","collapseLinkClick","collapseLinkClick2","collapseLinkInfoClick","checkPageHeight","attr","getShortUrl","e","docHeight","height","pos","offset","show","c_top","top","c_left","left","width","mouseup","container","is","has","length","hide","shown","hasClass","setSeoFooterCookie","showSearchTypes","code","startSearch","text","elem","showHintDeliv","defineSearchType","defineSearchOpen","showWelcomeWindow","showFirmOnMap","lat","long","firmID","editFailureNotificationContacts","msg","html","tum_searchMenu","toggleMenu","focusSearch","toggleSearchTypes","setSearchType","getSearchQuery","search","main","focus","getQuery","getSearchType","cookieEnabled","navigator","removeClass","cartCnt","general","cartCount","pathname","startsWith","reg","saveCartItems","prop","elm","toggleClass","selector","id","scrollHeight","searchType","first","click","txt","close","hintBlock","find","innerHTML","href","title","onShown","tu_maps","currentMap","create","containerId","center","zoom","onLoad","ymap","modules","map","placemark","Placemark","showBalloon","getBalloonContent","showCustomBalloon","events","tumStats","logEvent","objectType","eventType","geoObjects","onClosed","dropSettingsModal","_getSearchBarTop","getBoundingClientRect","updateSearchMenuButton","searchBarTop","searchMenuButton","blinkSearchIcon","active","matches","setInterval","exists","getCartCount","reject","count","getCartSum","sum","getFavoritesCount","getNotificationsCount","_updateCartCount","$count","_updateCartSum","$cart","cartSum","toFixed","_updateFavoritesCount","favoritesCount","_updateNotificationsCount","notificationsCount","updateCartCount","updateCartSum","updateFavoritesCount","updateNotificationsCount","isHeaderFloating","getFirmSettings","all","getUserRole","results","form","formJson","formFields","JSON","parse","formData","updateFailureNotificationContacts","buttonText","tu_form","fields","userRoles","f","onSubmit","validate","getData","alert","tech","priority","phone","email","org","updateFirmSettings","stringify","catch","addHighlight","field","settings","checkPermissions","getFloatingWindow","$wrapper","$window","css","bottom","right","append","onClickOutside","button","contenttarget","pinToBottom","classes","$windowWrapper","modal","getFirmSchedule","depID","Array","prototype","diff","a","filter","i","indexOf","_version","_domain","initCookies","version","domain","setCookie","days","expires","date","Date","setTime","getTime","toUTCString","domainName","substring","hostname","includes","toLowerCase","cookie","encodeURIComponent","getCookie","c_name","c_start","c_end","decodeURIComponent","loadLib","cssLink","showProgressbar","useVersion","cacheDate","script","createElement","body","appendChild","onload","onerror","async","src","openProgressbar","closeProgressbar","fadeOut","Handlebars","aliases","chunk","array","size","push","slice","loadedTemplates","loadingTemplates","templateDependencies","helpers","equals","b","or","arguments","some","and","every","coalesce","not","isNull","len","gt","lt","c","skip","truncate","val","truncateMiddle","lowercase","toJson","toFormattedJson","getDate","parseDate","formatDate","formatNumber","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","formatNumber2","formatNumber3","replace","formatKop","minimumIntegerDigits","formatPrice","price","arr","split","Number","contains","toString","urlEncode","urlEscape","urlDecode","res","parseJson","printif","cond","iif","in","item","string","separator","join","index","get","getValue","object","key","getObject","pattern","replacement","replaceRegex","RegExp","testRegex","test","whereEquals","whereNotEquals","mapField","mapper","args","helper","flatMap","getRandom","floor","random","concat","nconcat","reverseFilter","capitalize","htmlAttributes","attributes","entries","hash","htmlStyle","styles","case","defaultValue","rest","condition","switch","defaultResult","option","groupBy","sort","desc","sortBy","copy","reverse","sort2","items","compare","localeCompare","sort_items","compare_total","last","dateToTimestamp","timestampToDate","isToday","today","setDate","day","setHours","isThisWeek","isThisMonth","getFullYear","getMonth","isArray","isObject","multiply","divide","round","mod","apply","args_array","trim","loadTemplate","fetchDependencies","dependencies","nameMatch","match","fetch","headers","response","template","loadPrecompiledTemplate","partial","originalName","alias","at","cacheKey","detail","getElementById","CustomEvent","loadTemplates","urls","loadPrecompiledTemplates","names","initUaParserHelper","default","os","browser","device","model","getPrecompiledTemplate","initHelpers","newUuid","r","token","timezone","timezoneClip","pad","String","mask","utc","call","isNaN","SyntaxError","_","d","m","y","H","M","s","L","o","getTimezoneOffset","flags","dd","mm","yy","yyyy","h","hh","HH","MM","ss","l","t","tt","T","TT","Z","pop","abs","S","$0"],"sourceRoot":""}