arky-sdk 0.7.124 → 0.7.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/storefront-store.cjs +602 -20
- package/dist/storefront-store.cjs.map +1 -1
- package/dist/storefront-store.d.cts +1 -1
- package/dist/storefront-store.d.ts +1 -1
- package/dist/storefront-store.js +602 -20
- package/dist/storefront-store.js.map +1 -1
- package/dist/storefront.cjs +602 -20
- package/dist/storefront.cjs.map +1 -1
- package/dist/storefront.d.cts +104 -3
- package/dist/storefront.d.ts +104 -3
- package/dist/storefront.js +602 -20
- package/dist/storefront.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/blocks.ts","../src/utils/orderItems.ts","../src/api/storefront.ts","../src/cartController.ts","../src/utils/errors.ts","../src/utils/queryParams.ts","../src/services/createHttpClient.ts","../src/utils/price.ts","../src/utils/validation.ts","../src/utils/timezone.ts","../src/utils/text.ts","../src/utils/svg.ts","../src/utils/keyValidation.ts","../src/utils/inventory.ts","../src/index.ts","../src/storefrontStore.ts"],"names":["atom","computed","map"],"mappings":";;;;;;;AAqBO,SAAS,cAAc,KAAA,EAAoB;AAChD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,OAAO,KAAA,CAAM,GAAA,EAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAA,KAAc,CAAA,CAAE,WAAA,EAAa,CAAA,IAAK,EAAA;AAC3F;AAEO,SAAS,iBAAiB,KAAA,EAAoB;AACnD,EAAA,IAAI,CAAC,SAAS,KAAA,CAAM,KAAA,KAAU,QAAQ,KAAA,CAAM,KAAA,KAAU,QAAW,OAAO,EAAA;AAExE,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAEpB,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,KAAA,GAAQ,IAAA;AAAA,IACzB,KAAK,QAAA;AACH,MAAA,IAAI,MAAM,UAAA,EAAY,OAAA,KAAY,UAAU,KAAA,CAAM,UAAA,EAAY,YAAY,WAAA,EAAa;AACrF,QAAA,OAAO,IAAI,IAAA,CAAK,KAAK,CAAA,CAAE,kBAAA,EAAmB;AAAA,MAC5C;AACA,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACrB,KAAK,oBAAA;AAAA,IACL,KAAK,oBAAA;AACH,MAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,QAAA,OAAO,KAAA,CAAM,SAAA,GAAa,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,KAAO,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,EAAA;AAAA,MAC1F;AACA,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACrB;AACE,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA;AAEzB;AAEO,SAAS,0BAAA,CAA2B,UAAe,UAAA,EAA4C;AACpG,EAAA,OAAO,OAAO,IAAA,CAAK,QAAQ,EACxB,MAAA,CAAO,CAAC,QAAQ,QAAA,CAAS,GAAG,CAAA,KAAM,IAAA,IAAQ,SAAS,GAAG,CAAA,KAAM,MAAS,CAAA,CACrE,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,IACb,GAAA;AAAA,IACA,OAAQ,UAAA,GAAa,GAAG,MAAM,MAAA,IAAW,CAAC,MAAM,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAC,IACjE,CAAC,QAAA,CAAS,GAAG,CAAC,CAAA,GACd,SAAS,GAAG;AAAA,GAClB,CAAE,CAAA;AACN;AAEO,SAAS,mBAAmB,MAAA,EAAoC;AACrE,EAAA,MAAM,SAA8B,EAAC;AACrC,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAU;AACxB,IAAA,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA,CAAM,KAAA,IAAS,IAAA;AAAA,EACrC,CAAC,CAAA;AACD,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAY,QAAA,KAAqB;AAC7D,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAChE,EAAA,OAAO,OAAO,KAAA,IAAS,IAAA;AACzB,CAAA;AAEO,IAAM,iBAAA,GAAoB,CAAC,KAAA,EAAY,MAAA,GAAiB,IAAA,KAAiB;AAC9E,EAAA,IAAI,CAAC,SAAS,KAAA,CAAM,KAAA,KAAU,QAAQ,KAAA,CAAM,KAAA,KAAU,QAAW,OAAO,EAAA;AAGxE,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,gBAAA,IAAoB,KAAA,CAAM,SAAS,UAAA,EAAY;AAChE,IAAA,IAAI,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,UAAU,IAAA,EAAM;AAC3D,MAAA,OAAO,MAAM,KAAA,CAAM,MAAM,KAAK,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA,IAAK,EAAA;AAAA,IACrD;AAAA,EACF;AAGA,EAAA,IAAI,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,SAAiB,KAAA,CAAM,KAAA;AAElD,EAAA,OAAO,MAAA,CAAO,KAAA,CAAM,KAAA,IAAS,EAAE,CAAA;AACjC,CAAA;AAEO,IAAM,cAAA,GAAiB,CAAC,KAAA,EAAY,QAAA,KAAqB;AAC9D,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAChE,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAC;AAGpB,EAAA,IAAI,MAAM,IAAA,KAAS,MAAA,IAAU,MAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,EAAG;AACvD,IAAA,OAAO,KAAA,CAAM,KAAA;AAAA,EACf;AAEA,EAAA,OAAO,EAAC;AACV,CAAA;AAEA,SAAS,WAAA,CAAY,OAAY,MAAA,EAAgB;AAC/C,EAAA,IAAI,CAAC,KAAA,EAAO,IAAA,IAAQ,KAAA,CAAM,KAAA,KAAU,QAAW,OAAO,KAAA;AAEtD,EAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AACzB,IAAA,OAAO,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,GAAA,KAA6B;AACnD,MAAA,MAAM,SAA8B,EAAC;AACrC,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AACxC,QAAA,MAAA,CAAO,CAAC,CAAA,GAAI,WAAA,CAAY,CAAA,EAAG,MAAM,CAAA;AAAA,MACnC;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,KAAA,CAAM,SAAS,KAAA,EAAO;AACxB,IAAA,MAAM,SAA8B,EAAC;AACrC,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,MAAA,CAAO,QAAQ,KAAA,CAAM,KAAA,IAAS,EAAE,CAAA,EAAG;AACtD,MAAA,MAAA,CAAO,CAAC,CAAA,GAAI,WAAA,CAAY,CAAA,EAAU,MAAM,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,gBAAA,IAAoB,KAAA,CAAM,SAAS,UAAA,EAAY;AAChE,IAAA,OAAO,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,KAAA,CAAM,KAAA;AACf;AAEO,IAAM,oBAAA,GAAuB,CAAC,KAAA,EAAY,QAAA,EAAkB,SAAS,IAAA,KAAS;AACnF,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAChE,EAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,IAAA,KAAS,MAAA,IAAU,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,EAAG,OAAO,EAAC;AAE5E,EAAA,OAAO,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,GAAA,KAA6B;AACnD,IAAA,IAAI,CAAC,GAAA,EAAK,KAAA,IAAS,CAAC,KAAA,CAAM,QAAQ,GAAA,CAAI,KAAK,CAAA,EAAG,OAAO,EAAC;AACtD,IAAA,OAAO,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,CAAC,KAAU,OAAA,KAAiB;AAClD,MAAA,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA,GAAI,WAAA,CAAY,SAAS,MAAM,CAAA;AAC9C,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP,CAAC,CAAA;AACH,CAAA;AAEO,IAAM,iBAAA,GAAoB,CAAC,KAAA,EAAY,QAAA,EAAkB,SAAS,IAAA,KAAS;AAChF,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAChE,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAC;AAEpB,EAAA,IAAI,MAAM,IAAA,KAAS,MAAA,IAAU,MAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,EAAG;AACvD,IAAA,OAAO,KAAA,CAAM,KAAA,CAAM,MAAA,CAAO,CAAC,KAAU,OAAA,KAAiB;AACpD,MAAA,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA,GAAI,WAAA,CAAY,SAAS,MAAM,CAAA;AAC9C,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP;AAEA,EAAA,IAAI,KAAA,CAAM,SAAS,KAAA,IAAS,KAAA,CAAM,SAAS,OAAO,KAAA,CAAM,UAAU,QAAA,EAAU;AAC1E,IAAA,MAAM,SAA8B,EAAC;AACrC,IAAA,KAAA,MAAW,CAAC,GAAG,CAAC,CAAA,IAAK,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,EAAG;AAChD,MAAA,MAAA,CAAO,CAAC,CAAA,GAAI,WAAA,CAAY,CAAA,EAAU,MAAM,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,EAAE,CAAC,KAAA,CAAM,GAAG,GAAG,WAAA,CAAY,KAAA,EAAO,MAAM,CAAA,EAAE;AACnD,CAAA;AAEO,IAAM,WAAA,GAAc,CAAC,UAAA,EAAiB,OAAA,GAAU,IAAA,KAAS;AAC9D,EAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AAExB,EAAA,IAAI,UAAA,CAAW,SAAS,oBAAA,EAAsB;AAC5C,IAAA,MAAM,aAAa,UAAA,CAAW,KAAA;AAC9B,IAAA,OAAO,UAAA,EAAY,WAAA,EAAa,QAAA,EAAU,GAAA,IAAO,YAAY,GAAA,IAAO,IAAA;AAAA,EACtE;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI,OAAO,UAAA,KAAe,QAAA,EAAU,OAAO,UAAA;AAC3C,IAAA,IAAI,UAAA,CAAW,GAAA,EAAK,OAAO,UAAA,CAAW,GAAA;AAAA,EACxC;AAEA,EAAA,OAAO,UAAA,CAAW,WAAA,EAAa,QAAA,EAAU,GAAA,IAAO,IAAA;AAClD,CAAA;;;AC3JO,SAAS,4BACd,KAAA,EAC0B;AAC1B,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACzB,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,MAAM,OAAQ,IAAA,CAA2B,IAAA;AACzC,MAAA,OAAO,SAAS,SAAA,GAAa,EAAE,GAAG,IAAA,EAAM,IAAA,EAAM,WAAU,GAA+B,IAAA;AAAA,IACzF;AAEA,IAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,MAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,GAAG,IAAA,EAAK;AAAA,IACpC;AAEA,IAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,GAAG,IAAA,EAAK;AAAA,EACpC,CAAC,CAAA;AACH;;;AC+DO,IAAM,qBAAA,GAAwB;AAAA,EACnC,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA;AAIO,IAAM,iBAAA,GAAoB,CAAC,SAAA,MAA0B;AAAA,EAC1D,qBAAA;AAAA,EACA,MAAM,MAAM,MAAA,EAAoC;AAC9C,IAAA,IAAI;AACF,MAAA,MAAM,UAAU,UAAA,CAAW,IAAA;AAAA,QACzB,CAAA,eAAA,EAAkB,UAAU,OAAO,CAAA,iBAAA,CAAA;AAAA,QACnC,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA;AAAQ,OAC/C;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EACX;AACF,CAAA,CAAA;AAEO,IAAM,mBAAA,GAAsB,CAAC,SAAA,EAAsB,qBAAA,KAAkD;AAC1G,EAAA,MAAM,OAAO,CAAC,OAAA,GAAU,SAAA,CAAU,OAAA,KAChC,kBAAkB,OAAO,CAAA,CAAA;AAE3B,EAAA,OAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,SAAS,OAAA,EAA0C;AACjD,QAAA,OAAO,SAAA,CAAU,UAAA,CAAW,GAAA,CAAW,IAAA,IAAQ,OAAO,CAAA;AAAA,MACxD,CAAA;AAAA,MAEA,QAAA,EAAU;AAAA,QACR,aAAa,OAAA,EAAsD;AACjE,UAAA,OAAO,SAAA,CAAU,UAAA,CAAW,GAAA,CAAuB,CAAA,sBAAA,CAAA,EAA0B,OAAO,CAAA;AAAA,QACtF,CAAA;AAAA,QAEA,UAAA,CAAW,aAAqB,OAAA,EAA4C;AAC1E,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,0BAA0B,WAAW,CAAA,CAAA;AAAA,YACrC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,KAAK,OAAA,EAA+C;AAClD,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAgB,GAAG,IAAA,EAAM,cAAc,OAAO,CAAA;AAAA,QAC5E,CAAA;AAAA,QAEA,GAAA,CAAI,IAAY,OAAA,EAA6C;AAC3D,UAAA,OAAO,SAAA,CAAU,WAAW,GAAA,CAAc,CAAA,EAAG,MAAM,CAAA,WAAA,EAAc,EAAE,CAAA,CAAA,EAAI,OAAO,CAAA;AAAA,QAChF;AAAA,OACF;AAAA,MAEA,MAAA,EAAQ;AAAA,QACN,KAAK,OAAA,EAA6C;AAChD,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAc,GAAG,IAAA,EAAM,YAAY,OAAO,CAAA;AAAA,QACxE,CAAA;AAAA,QAEA,GAAA,CAAI,IAAY,OAAA,EAA2C;AACzD,UAAA,OAAO,SAAA,CAAU,WAAW,GAAA,CAAY,CAAA,EAAG,MAAM,CAAA,SAAA,EAAY,EAAE,CAAA,CAAA,EAAI,OAAO,CAAA;AAAA,QAC5E;AAAA;AACF,KACF;AAAA,IAEA,GAAA,EAAK;AAAA,MACH,IAAA,EAAM;AAAA,QACJ,MAAM,GAAA,CAAI,MAAA,EAAuB,OAAA,EAA0B;AACzD,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,UAAA,GAAa,MAAA,CAAO,EAAA;AAAA,UACtB,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,YAAA,UAAA,GAAa,GAAG,QAAQ,CAAA,CAAA,EAAI,UAAU,MAAM,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA;AAAA,UAC7D,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,YAAA,UAAA,GAAa,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA,UACxC,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,UAC3D;AAEA,UAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,UAAA,CAAW,GAAA;AAAA,YAC1C,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,UAAU,UAAU,CAAA,CAAA;AAAA,YACrC;AAAA,WACF;AAEA,UAAA,OAAO;AAAA,YACL,GAAG,QAAA;AAAA,YACH,SAAS,GAAA,EAAa;AACpB,cAAA,OAAO,iBAAA,CAAkB,QAAA,EAAU,GAAA,EAAK,SAAA,CAAU,MAAM,CAAA;AAAA,YAC1D,CAAA;AAAA,YACA,eAAe,GAAA,EAAa;AAC1B,cAAA,OAAO,oBAAA,CAAqB,QAAA,EAAU,GAAA,EAAK,SAAA,CAAU,MAAM,CAAA;AAAA,YAC7D,CAAA;AAAA,YACA,SAAS,GAAA,EAAa;AACpB,cAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,QAAA,EAAU,GAAA,EAAK,UAAU,MAAM,CAAA;AAC/D,cAAA,OAAO,WAAA,CAAY,OAAO,IAAI,CAAA;AAAA,YAChC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,IAAA,CAAK,QAAwB,OAAA,EAA4D;AACvF,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,MAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAA6B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,MAAA,CAAA,EAAU;AAAA,YAClF,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH,CAAA;AAAA,QAEA,WAAA,CAAY,QAA+B,OAAA,EAA4D;AACrG,UAAA,MAAM,EAAE,EAAA,EAAI,QAAA,EAAU,GAAG,aAAY,GAAI,MAAA;AACzC,UAAA,OAAO,SAAA,CAAU,WAAW,GAAA,CAA6B,CAAA,EAAG,KAAK,QAAQ,CAAC,CAAA,OAAA,EAAU,EAAE,CAAA,SAAA,CAAA,EAAa;AAAA,YACjG,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH;AAAA,OACF;AAAA,MAEA,IAAA,EAAM;AAAA,QACJ,GAAA,CAAI,QAAuB,OAAA,EAAyC;AAClE,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,UAAA,GAAa,MAAA,CAAO,EAAA;AAAA,UACtB,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,YAAA,UAAA,GAAa,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA,UACxC,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,UACpD;AAEA,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,UAAU,UAAU,CAAA,CAAA;AAAA,YACrC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,MAAA,CAAO,QAA0B,OAAA,EAAmD;AAClF,UAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,GAAG,SAAQ,GAAI,MAAA;AAC1C,UAAA,MAAM,eAAA,GAAkB,YAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,IAAI,CAAC,OAAA,EAAS;AACZ,YAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,UACrD;AAEA,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,eAAe,CAAC,UAAU,OAAO,CAAA,YAAA,CAAA;AAAA,YACzC,EAAE,GAAG,OAAA,EAAS,OAAA,EAAS,UAAU,eAAA,EAAgB;AAAA,YACjD;AAAA,WACF;AAAA,QACF;AAAA,OACF;AAAA,MAEA,QAAA,EAAU;AAAA,QACR,GAAA,CAAI,QAA2B,OAAA,EAA6C;AAC1E,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,UAAA,GAAa,MAAA,CAAO,EAAA;AAAA,UACtB,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,YAAA,UAAA,GAAa,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA,UACxC,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,UACxD;AAEA,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,eAAe,UAAU,CAAA,CAAA;AAAA,YAC1C;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,WAAA,CAAY,QAAmC,OAAA,EAAgE;AAC7G,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,YAAA,EAAe,OAAO,EAAE,CAAA,SAAA,CAAA;AAAA,YACzC;AAAA,WACF;AAAA,QACF;AAAA;AACF,KACF;AAAA,IAEA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS;AAAA,QACP,GAAA,CAAI,QAA0B,OAAA,EAA4C;AACxE,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,UAAA,GAAa,MAAA,CAAO,EAAA;AAAA,UACtB,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,YAAA,UAAA,GAAa,GAAG,QAAQ,CAAA,CAAA,EAAI,UAAU,MAAM,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA;AAAA,UAC7D,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,UACxD;AAEA,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,aAAa,UAAU,CAAA,CAAA;AAAA,YACxC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,IAAA,CAAK,QAA2B,OAAA,EAA+D;AAC7F,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,MAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAgC,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,SAAA,CAAA,EAAa;AAAA,YACxF,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH;AAAA,OACF;AAAA,MAEA,IAAA,EAAM;AAAA,QACJ,OAAA,CAAQ,MAAA,GAA+B,EAAC,EAAG,OAAA,EAAyC;AAClF,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,SAAQ,GAAI,MAAA;AAC5C,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,cAAA,CAAA;AAAA,YACjB,EAAE,GAAG,OAAA,EAAS,QAAA,EAAU,QAAQ,OAAA,CAAQ,MAAA,IAAU,UAAU,MAAA,EAAO;AAAA,YACnE;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,GAAA,CAAI,QAAuB,OAAA,EAAyC;AAClE,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,SAAA,CAAU,UAAA,CAAW,GAAA,CAAU,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,OAAA,EAAU,MAAA,CAAO,EAAE,CAAA,CAAA,EAAI;AAAA,YAC5E,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ,OAAO,KAAA,GAAQ,EAAE,OAAO,MAAA,CAAO,KAAA,KAAU,OAAA,EAAS;AAAA,WAC3D,CAAA;AAAA,QACH,CAAA;AAAA,QAEA,MAAA,CAAO,QAA0B,OAAA,EAAyC;AACxE,UAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,GAAG,SAAQ,GAAI,MAAA;AACxC,UAAA,MAAM,MAAA,GAAS,YAAY,SAAA,CAAU,OAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,MAAM,CAAC,CAAA,OAAA,EAAU,OAAO,EAAE,CAAA,CAAA;AAAA,YAClC;AAAA,cACE,GAAG,OAAA;AAAA,cACH,QAAA,EAAU,MAAA;AAAA,cACV,GAAI,QAAQ,EAAE,KAAA,EAAO,4BAA4B,KAAK,CAAA,KAAM;AAAC,aAC/D;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,OAAA,CAAQ,QAA2B,OAAA,EAAyC;AAC1E,UAAA,MAAM,EAAE,QAAA,EAAU,IAAA,EAAM,GAAG,SAAQ,GAAI,MAAA;AACvC,UAAA,MAAM,MAAA,GAAS,YAAY,SAAA,CAAU,OAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,MAAM,CAAC,CAAA,OAAA,EAAU,OAAO,EAAE,CAAA,MAAA,CAAA;AAAA,YAClC;AAAA,cACE,GAAG,OAAA;AAAA,cACH,QAAA,EAAU,MAAA;AAAA,cACV,MAAM,2BAAA,CAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,aAC7C;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,UAAA,CAAW,QAA8B,OAAA,EAAyC;AAChF,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,OAAA,EAAQ,GAAI,MAAA;AACjC,UAAA,MAAM,MAAA,GAAS,YAAY,SAAA,CAAU,OAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,MAAM,CAAC,CAAA,OAAA,EAAU,OAAO,EAAE,CAAA,aAAA,CAAA;AAAA,YAClC,EAAE,GAAG,OAAA,EAAS,QAAA,EAAU,MAAA,EAAO;AAAA,YAC/B;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,KAAA,CAAM,QAAyB,OAAA,EAAyC;AACtE,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,OAAA,EAAU,OAAO,EAAE,CAAA,MAAA,CAAA;AAAA,YACpC,EAAE,EAAA,EAAI,MAAA,CAAO,EAAA,EAAI,QAAA,EAAS;AAAA,YAC1B;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,KAAA,CAAM,QAAyB,OAAA,EAA+C;AAC5E,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,OAAA,EAAU,OAAO,EAAE,CAAA,MAAA,CAAA;AAAA,YACpC,EAAE,EAAA,EAAI,MAAA,CAAO,EAAA,EAAI,QAAA,EAAS;AAAA,YAC1B;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,QAAA,CAAS,QAA4B,OAAA,EAAwD;AAC3F,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,OAAA,EAAU,OAAO,EAAE,CAAA,SAAA,CAAA;AAAA,YACpC;AAAA,cACE,IAAI,MAAA,CAAO,EAAA;AAAA,cACX,QAAA;AAAA,cACA,mBAAmB,MAAA,CAAO;AAAA,aAC5B;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,OACF;AAAA,MAEA,KAAA,EAAO;AAAA,QACL,GAAA,CAAI,QAAwB,OAAA,EAA0C;AACpE,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,QAAA,EAAW,OAAO,EAAE,CAAA,CAAA;AAAA,YACrC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,IAAA,CAAK,QAAyB,OAAA,EAA6D;AACzF,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,MAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAA8B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,OAAA,CAAA,EAAW;AAAA,YACpF,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH;AAAA,OAEF;AAAA,MAEA,OAAA,EAAS;AAAA,QACP,GAAA,CAAI,QAA0B,OAAA,EAA4C;AACxE,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,UAAA,GAAa,MAAA,CAAO,EAAA;AAAA,UACtB,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,YAAA,UAAA,GAAa,GAAG,QAAQ,CAAA,CAAA,EAAI,UAAU,MAAM,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA;AAAA,UAC7D,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,UACxD;AAEA,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,aAAa,UAAU,CAAA,CAAA;AAAA,YACxC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,IAAA,CAAK,QAA2B,OAAA,EAA+D;AAC7F,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,MAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAgC,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,SAAA,CAAA,EAAa;AAAA,YACxF,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH,CAAA;AAAA,QAEA,aAAA,CAAc,QAAoC,OAAA,EAA+C;AAC/F,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,MAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAgB,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,kBAAA,CAAA,EAAsB;AAAA,YACjF,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH,CAAA;AAAA,QAEA,eAAA,CAAgB,QAA+B,OAAA,EAAyD;AACtG,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,MAAA;AACrC,UAAA,MAAM,eAAA,GAAkB,YAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,eAAe,CAAC,CAAA,sBAAA,CAAA;AAAA,YACxB,EAAE,GAAG,OAAA,EAAS,MAAA,EAAQ,WAAA;AAAY,WACpC;AAAA,QACF;AAAA,OACF;AAAA,MAEA,QAAA,EAAU;AAAA,QACR,GAAA,CAAI,QAA2B,OAAA,EAA6C;AAC1E,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,UAAA,GAAa,MAAA,CAAO,EAAA;AAAA,UACtB,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,YAAA,UAAA,GAAa,GAAG,QAAQ,CAAA,CAAA,EAAI,UAAU,MAAM,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA;AAAA,UAC7D,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,UACzD;AAEA,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,cAAc,UAAU,CAAA,CAAA;AAAA,YACzC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,IAAA,CAAK,QAA4B,OAAA,EAAgE;AAC/F,UAAA,MAAM,EAAE,QAAA,EAAU,GAAG,WAAA,EAAY,GAAI,MAAA;AACrC,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAiC,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,UAAA,CAAA,EAAc;AAAA,YAC1F,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH;AAAA;AACF,KACF;AAAA,IAEA,GAAA,EAAK;AAAA,MACH,QAAA,EAAU;AAAA,QACR,MAAM,QAAA,CACJ,MAAA,EACA,OAAA,EAC2B;AAC3B,UAAA,MAAM,WAAW,SAAA,CAAU,OAAA;AAC3B,UAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,UAAA,CAAW,IAAA;AAAA,YACxC,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,mBAAA,CAAA;AAAA,YACjB;AAAA,cACE,QAAA;AAAA,cACA,MAAA,EAAQ,MAAA,EAAQ,MAAA,IAAU,SAAA,CAAU,MAAA,IAAU,IAAA;AAAA,cAC9C,OAAO,MAAA,EAAQ,KAAA;AAAA,cACf,MAAA,EAAQ,QAAQ,MAAA,IAAU;AAAA,aAC5B;AAAA,YACA;AAAA,WACF;AACA,UAAA,IAAI,MAAA,EAAQ,OAAO,KAAA,EAAO;AACxB,YAAA,qBAAA,CAAsB,OAAO;AAAA,cAC3B,YAAA,EAAc,OAAO,KAAA,CAAM,KAAA;AAAA,cAC3B,UAAU,MAAA,CAAO,QAAA;AAAA,cACjB,OAAO,MAAA,CAAO,KAAA;AAAA,cACd,QAAQ,MAAA,CAAO;AAAA,aACjB,CAAE,CAAA;AAAA,UACJ;AACA,UAAA,OAAO,MAAA;AAAA,QACT,CAAA;AAAA,QAEA,MAAM,MAAA,CACJ,MAAA,EACA,OAAA,EACyB;AACzB,UAAA,MAAM,WAAW,SAAA,CAAU,OAAA;AAC3B,UAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,UAAA,CAAW,IAAA;AAAA,YACxC,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,iBAAA,CAAA;AAAA,YACjB,EAAE,QAAA,EAAU,IAAA,EAAM,MAAA,CAAO,IAAA,EAAK;AAAA,YAC9B;AAAA,WACF;AACA,UAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,YAAA,qBAAA;AAAA,cAAsB,CAAC,SACrB,IAAA,GAAO,EAAE,GAAG,IAAA,EAAM,YAAA,EAAc,MAAA,CAAO,KAAA,EAAM,GAAI;AAAA,aACnD;AAAA,UACF;AACA,UAAA,OAAO,MAAA;AAAA,QACT,CAAA;AAAA,QAEA,MAAM,OAAO,OAAA,EAAmD;AAC9D,UAAA,MAAM,WAAW,SAAA,CAAU,OAAA;AAC3B,UAAA,IAAI;AACF,YAAA,MAAM,UAAU,UAAA,CAAW,IAAA;AAAA,cACzB,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,iBAAA,CAAA;AAAA,cACjB,EAAC;AAAA,cACD;AAAA,aACF;AAAA,UACF,CAAA,SAAE;AACA,YAAA,qBAAA,CAAsB,MAAM,IAAI,CAAA;AAAA,UAClC;AAAA,QACF,CAAA;AAAA,QAEA,MAAM,OAAA,EAAmD;AACvD,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAoB,GAAG,IAAA,EAAM,iBAAiB,OAAO,CAAA;AAAA,QACnF;AAAA,OACF;AAAA,MAEA,QAAA,EAAU;AAAA,QACR,GAAA,CAAI,QAA2B,OAAA,EAA6C;AAC1E,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,UAAA,GAAa,MAAA,CAAO,EAAA;AAAA,UACtB,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,YAAA,UAAA,GAAa,CAAA,EAAG,SAAA,CAAU,OAAO,CAAA,CAAA,EAAI,OAAO,GAAG,CAAA,CAAA;AAAA,UACjD,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,UACxD;AAEA,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,cAAc,UAAU,CAAA,CAAA;AAAA,YAClD;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,IAAA,CAAK,QAA4B,OAAA,EAAgE;AAC/F,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAAiC,CAAA,EAAG,IAAA,EAAM,CAAA,UAAA,CAAA,EAAc;AAAA,YAClF,GAAG,OAAA;AAAA,YACH;AAAA,WACD,CAAA;AAAA,QACH,CAAA;AAAA,QAEA,SAAA,CAAU,QAAiC,OAAA,EAA8D;AACvG,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,EAAM,CAAA,WAAA,EAAc,OAAO,EAAE,CAAA,UAAA,CAAA;AAAA,YAChC;AAAA,cACE,aAAa,MAAA,CAAO,WAAA;AAAA,cACpB,UAAU,MAAA,CAAO,QAAA;AAAA,cACjB,aAAa,MAAA,CAAO,WAAA;AAAA,cACpB,YAAY,MAAA,CAAO,UAAA;AAAA,cACnB,aAAa,MAAA,CAAO;AAAA,aACtB;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,WAAA,CAAY,QAAwB,OAAA,EAA2D;AAC7F,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,IAAA,EAAM,CAAA,WAAA,EAAc,OAAO,EAAE,CAAA,OAAA,CAAA;AAAA,YAChC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,WAAA,CAAY,OAAe,OAAA,EAA8D;AACvF,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAA+B,CAAA,EAAG,IAAA,EAAM,CAAA,sBAAA,CAAA,EAA0B;AAAA,YAC5F,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ,EAAE,KAAA;AAAM,WACjB,CAAA;AAAA,QACH,CAAA;AAAA,QAEA,OAAA,CAAQ,OAAe,OAAA,EAA2D;AAChF,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAA4B,CAAA,EAAG,IAAA,EAAM,CAAA,kBAAA,CAAA,EAAsB;AAAA,YACrF,GAAG,OAAA;AAAA,YACH,MAAA,EAAQ,EAAE,KAAA;AAAM,WACjB,CAAA;AAAA,QACH;AAAA;AACF,KACF;AAAA,IAEA,QAAA,EAAU,kBAAkB,SAAS,CAAA;AAAA,IAErC,UAAA,EAAY;AAAA,MACV,KAAA,EAAO;AAAA,QACL,SAAA,CAAU,QAA0B,OAAA,EAA6D;AAC/F,UAAA,MAAM,QAAA,GAAW,MAAA,EAAQ,QAAA,IAAY,SAAA,CAAU,OAAA;AAC/C,UAAA,MAAM,WAAA,GAAuC,EAAE,GAAI,MAAA,IAAU,EAAC,EAAG;AACjE,UAAA,OAAO,WAAA,CAAY,QAAA;AACnB,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA,CAA8B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,OAAA,CAAA,EAAW;AAAA,YACpF,GAAG,OAAA;AAAA,YACH,QAAQ,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,MAAA,GAAS,IAAI,WAAA,GAAc;AAAA,WAC7D,CAAA;AAAA,QACH,CAAA;AAAA,QAEA,QAAA,CAAS,QAA2C,OAAA,EAA0C;AAC5F,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,QAAA,EAAW,OAAO,EAAE,CAAA,CAAA;AAAA,YACrC;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,WAAA,CACE,QACA,OAAA,EAC2B;AAC3B,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,MAAM,IAAA,GAAgC,EAAE,OAAA,EAAS,MAAA,CAAO,OAAA,EAAQ;AAChE,UAAA,IAAI,MAAA,CAAO,OAAA,EAAS,IAAA,CAAK,OAAA,GAAU,MAAA,CAAO,OAAA;AAC1C,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA,QAAA,EAAW,OAAO,EAAE,CAAA,eAAA,CAAA;AAAA,YACrC,IAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,OAAA,CACE,QACA,OAAA,EACoB;AACpB,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,KAAK,QAAQ,CAAC,WAAW,MAAA,CAAO,EAAE,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAA,CAAA;AAAA,YAC7D;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,eAAA,CACE,QACA,OAAA,EAC8C;AAC9C,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,MAAM,cAAsC,EAAC;AAC7C,UAAA,IAAI,OAAO,KAAA,EAAO,WAAA,CAAY,KAAA,GAAQ,MAAA,CAAO,OAAO,KAAK,CAAA;AACzD,UAAA,OAAO,UAAU,UAAA,CAAW,GAAA;AAAA,YAC1B,CAAA,EAAG,KAAK,QAAQ,CAAC,WAAW,MAAA,CAAO,EAAE,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAA,SAAA,CAAA;AAAA,YAC7D;AAAA,cACE,GAAG,OAAA;AAAA,cACH,QAAQ,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,MAAA,GAAS,IAAI,WAAA,GAAc;AAAA;AAC9D,WACF;AAAA,QACF,CAAA;AAAA,QAEA,QAAA,CACE,QACA,OAAA,EACoB;AACpB,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AAC9C,UAAA,MAAM,IAAA,GAAgC,EAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAO;AAC9D,UAAA,IAAI,MAAA,CAAO,OAAA,EAAS,IAAA,CAAK,OAAA,GAAU,MAAA,CAAO,OAAA;AAC1C,UAAA,OAAO,UAAU,UAAA,CAAW,IAAA;AAAA,YAC1B,CAAA,EAAG,KAAK,QAAQ,CAAC,WAAW,MAAA,CAAO,EAAE,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAA,KAAA,CAAA;AAAA,YAC7D,IAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA;AACF;AACF,GACF;AACF,CAAA;;;ACpoBA,SAAS,UAAU,MAAA,EAA2D;AAC5E,EAAA,OAAO,IAAA,IAAQ,UAAU,OAAO,MAAA,CAAO,OAAO,QAAA,IAAY,MAAA,CAAO,GAAG,MAAA,GAAS,CAAA;AAC/E;AAEO,SAAS,qBAAqB,OAAA,EAAkC;AACrE,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAA4B;AAClD,EAAA,IAAI,KAAA,GAA6B;AAAA,IAC/B,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,IAAA;AAAA,IACP,cAAA,EAAgB,IAAA;AAAA,IAChB,OAAA,EAAS,KAAA;AAAA,IACT,WAAA,EAAa,KAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,SAAS,IAAA,GAAa;AACpB,IAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,MAAA,OAAA,CAAQ,OAAA,GACL,IAAA,CAAK,MAAM,SAAS,KAAK,CAAC,CAAA,CAC1B,KAAA,CAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,SAAS,SAAS,KAAA,EAA0D;AAC1E,IAAA,KAAA,GAAQ,EAAE,GAAG,KAAA,EAAO,GAAG,KAAA,EAAM;AAC7B,IAAA,IAAA,EAAK;AACL,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,SAAS,cAAc,EAAA,EAAqB;AAC1C,IAAA,MAAM,MAAA,GAAS,EAAA,IAAM,KAAA,CAAM,IAAA,EAAM,EAAA;AACjC,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,IAC7E;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,eAAe,gBAAgB,SAAA,EAA+C;AAC5E,IAAA,QAAA,CAAS,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AACvC,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,GAAO,MAAM,SAAA,EAAU;AAC7B,MAAA,QAAA,CAAS;AAAA,QACP,IAAA;AAAA,QACA,KAAA,EAAO,IAAA;AAAA,QACP,cAAA,EAAgB,IAAA;AAAA,QAChB,OAAA,EAAS,KAAA;AAAA,QACT,WAAA,EAAa,IAAA;AAAA,QACb,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,OAAO,IAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,QAAA,CAAS,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,CAAA;AAClC,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,UAAU,QAAA,EAAU;AAClB,MAAA,SAAA,CAAU,IAAI,QAAQ,CAAA;AACtB,MAAA,OAAA,CAAQ,OAAA,GACL,IAAA,CAAK,MAAM,SAAS,KAAK,CAAC,CAAA,CAC1B,KAAA,CAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AACjB,MAAA,OAAO,MAAM;AACX,QAAA,SAAA,CAAU,OAAO,QAAQ,CAAA;AAAA,MAC3B,CAAA;AAAA,IACF,CAAA;AAAA,IAEA,QAAA,GAAW;AACT,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IAEA,IAAA,CAAK,MAAA,GAAS,EAAC,EAAG,OAAA,EAAS;AACzB,MAAA,IAAI,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,IAAA,EAAM;AACnC,QAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAAA,MACnC;AACA,MAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,OAAO,CAAA;AAAA,IACrC,CAAA;AAAA,IAEA,OAAA,CAAQ,MAAA,GAAS,EAAC,EAAG,OAAA,EAAS;AAC5B,MAAA,OAAO,eAAA;AAAA,QAAgB,MACrB,SAAA,CAAU,MAAM,CAAA,GACZ,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA,GAC3B,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,OAAO;AAAA,OACrC;AAAA,IACF,CAAA;AAAA,IAEA,OAAA,CAAQ,QAAQ,OAAA,EAAS;AACvB,MAAA,OAAO,eAAA;AAAA,QAAgB,MACrB,OAAA,CAAQ,OAAA,CAAQ,EAAE,GAAG,MAAA,EAAQ,EAAA,EAAI,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,EAAE,EAAG,OAAO;AAAA,OACtE;AAAA,IACF,CAAA;AAAA,IAEA,MAAA,CAAO,QAAQ,OAAA,EAAS;AACtB,MAAA,OAAO,eAAA;AAAA,QAAgB,MACrB,OAAA,CAAQ,MAAA,CAAO,EAAE,GAAG,MAAA,EAAQ,EAAA,EAAI,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,EAAE,EAAG,OAAO;AAAA,OACrE;AAAA,IACF,CAAA;AAAA,IAEA,UAAA,CAAW,QAAQ,OAAA,EAAS;AAC1B,MAAA,OAAO,eAAA;AAAA,QAAgB,MACrB,OAAA,CAAQ,UAAA,CAAW,EAAE,GAAG,MAAA,EAAQ,EAAA,EAAI,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,EAAE,EAAG,OAAO;AAAA,OACzE;AAAA,IACF,CAAA;AAAA,IAEA,KAAA,CAAM,MAAA,GAAS,EAAC,EAAG,OAAA,EAAS;AAC1B,MAAA,OAAO,eAAA;AAAA,QAAgB,MACrB,OAAA,CAAQ,KAAA,CAAM,EAAE,GAAG,MAAA,EAAQ,EAAA,EAAI,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,EAAE,EAAG,OAAO;AAAA,OACpE;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,KAAA,CAAM,MAAA,GAAS,IAAI,OAAA,EAAS;AAChC,MAAA,QAAA,CAAS,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AACvC,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,KAAA;AAAA,UAC1B,EAAE,GAAG,MAAA,EAAQ,IAAI,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,EAAE;AAAA,UAC1C;AAAA,SACF;AACA,QAAA,QAAA,CAAS,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA;AAC/C,QAAA,OAAO,KAAA;AAAA,MACT,SAAS,KAAA,EAAO;AACd,QAAA,QAAA,CAAS,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,CAAA;AAClC,QAAA,MAAM,KAAA;AAAA,MACR;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,QAAA,CAAS,MAAA,GAAS,IAAI,OAAA,EAAS;AACnC,MAAA,QAAA,CAAS,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AACvC,MAAA,IAAI;AACF,QAAA,MAAM,cAAA,GAAiB,MAAM,OAAA,CAAQ,QAAA;AAAA,UACnC,EAAE,GAAG,MAAA,EAAQ,IAAI,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,EAAE;AAAA,UAC1C;AAAA,SACF;AACA,QAAA,QAAA,CAAS,EAAE,cAAA,EAAgB,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA;AACxD,QAAA,OAAO,cAAA;AAAA,MACT,SAAS,KAAA,EAAO;AACd,QAAA,QAAA,CAAS,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,CAAA;AAClC,QAAA,MAAM,KAAA;AAAA,MACR;AAAA,IACF;AAAA,GACF;AACF;;;ACzEO,IAAM,gCAAA,GAAmC,CAC9C,WAAA,EACA,WAAA,KACiB;AACjB,EAAA,MAAM,gBAAA,GAAmB,WAAA,EAAa,gBAAA,IAAoB,EAAC;AAE3D,EAAA,OAAO;AAAA,IACL,GAAG,WAAA;AAAA,IACH,gBAAA,EAAkB,gBAAA,CAAiB,GAAA,CAAI,CAAC,eAAA,KAAoB;AAC1D,MAAA,MAAM,KAAA,GAGA,eAAA,CAAgB,KAAA;AAEtB,MAAA,OAAO;AAAA,QACL,KAAA;AAAA,QACA,KAAA,EAAO,gBAAgB,KAAA,IAAS;AAAA,OAClC;AAAA,IACF,CAAC;AAAA,GACH;AACF,CAAA;;;AC3IO,SAAS,iBAAiB,MAAA,EAA6B;AAC1D,EAAA,MAAM,aAAuB,EAAC;AAE9B,EAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAE7C,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACvC,MAAA;AAAA,IACJ;AAEA,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AACvC,MAAA,UAAA,CAAW,KAAK,CAAA,EAAG,GAAG,IAAI,kBAAA,CAAmB,UAAU,CAAC,CAAA,CAAE,CAAA;AAAA,IAC9D,CAAA,MAAA,IAES,OAAO,KAAA,KAAU,QAAA,EAAU;AAChC,MAAA,UAAA,CAAW,KAAK,CAAA,EAAG,GAAG,IAAI,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,IACzD,WAES,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,SAAA,EAAW;AAC9D,MAAA,UAAA,CAAW,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AAAA,IACrC,CAAA,MAAA,IAES,OAAO,KAAA,KAAU,QAAA,EAAU;AAChC,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AACvC,MAAA,UAAA,CAAW,KAAK,CAAA,EAAG,GAAG,IAAI,kBAAA,CAAmB,UAAU,CAAC,CAAA,CAAE,CAAA;AAAA,IAC9D;AAAA,EACJ,CAAC,CAAA;AAED,EAAA,OAAO,UAAA,CAAW,SAAS,CAAA,GAAI,CAAA,CAAA,EAAI,WAAW,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GAAK,EAAA;AAChE;;;AC+BO,SAAS,iBAAiB,GAAA,EAAmC;AACnE,EAAA,MAAM,EAAE,aAAY,GAAI,GAAA;AACxB,EAAA,IAAI,cAAA,GAAuC,IAAA;AAE3C,EAAA,SAAS,kBAAA,GAAqB;AAC7B,IAAA,MAAM,WAAA,GAAc,OAAO,GAAA,CAAI,WAAA,KAAgB,aAC5C,GAAA,CAAI,WAAA,EAAY,GAChB,GAAA,CAAI,WAAA,IAAe,kBAAA;AACtB,IAAA,OAAO,CAAA,EAAG,GAAA,CAAI,OAAO,CAAA,EAAG,WAAW,CAAA,CAAA;AAAA,EACpC;AAEA,EAAA,eAAe,gBAAA,GAAmB;AACjC,IAAA,IAAI,cAAA,EAAgB;AACnB,MAAA,OAAO,cAAA;AAAA,IACR;AAEA,IAAA,cAAA,GAAA,CAAkB,YAAY;AAC7B,MAAA,MAAM,MAAA,GAAS,YAAY,SAAA,EAAU;AACrC,MAAA,MAAM,gBAAgB,MAAA,EAAQ,aAAA;AAC9B,MAAA,IAAI,CAAC,aAAA,EAAe;AACnB,QAAA,WAAA,CAAY,cAAA,EAAe;AAC3B,QAAA,MAAM,GAAA,GAAW,IAAI,KAAA,CAAM,4BAA4B,CAAA;AACvD,QAAA,GAAA,CAAI,IAAA,GAAO,UAAA;AACX,QAAA,GAAA,CAAI,UAAA,GAAa,GAAA;AACjB,QAAA,MAAM,GAAA;AAAA,MACP;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,kBAAA,EAAmB,EAAG;AAAA,QAChD,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS,EAAE,MAAA,EAAQ,kBAAA,EAAoB,gBAAgB,kBAAA,EAAmB;AAAA,QAC1E,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,EAAE,eAAe;AAAA,OACtC,CAAA;AAED,MAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACf,QAAA,WAAA,CAAY,cAAA,EAAe;AAC3B,QAAA,MAAM,GAAA,GAAW,IAAI,KAAA,CAAM,sBAAsB,CAAA;AACjD,QAAA,GAAA,CAAI,IAAA,GAAO,UAAA;AACX,QAAA,GAAA,CAAI,UAAA,GAAa,GAAA;AACjB,QAAA,MAAM,GAAA;AAAA,MACP;AAEA,MAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,IAAA,EAAK;AAC/B,MAAA,WAAA,CAAY,kBAAkB,IAAI,CAAA;AAAA,IACnC,CAAA,GAAG,CAAE,OAAA,CAAQ,MAAM;AAClB,MAAA,cAAA,GAAiB,IAAA;AAAA,IAClB,CAAC,CAAA;AAED,IAAA,OAAO,cAAA;AAAA,EACR;AAEA,EAAA,eAAe,OAAA,CACd,MAAA,EACA,IAAA,EACA,IAAA,EACA,OAAA,EACa;AACb,IAAA,IAAI,SAAS,gBAAA,EAAkB;AAC9B,MAAA,IAAA,GAAO,OAAA,CAAQ,iBAAiB,IAAI,CAAA;AAAA,IACrC;AAEA,IAAA,MAAM,OAAA,GAAkC;AAAA,MACvC,MAAA,EAAQ,kBAAA;AAAA,MACR,cAAA,EAAgB,kBAAA;AAAA,MAChB,GAAI,OAAA,EAAS,OAAA,IAAW;AAAC,KAC1B;AAEA,IAAA,IAAI,MAAA,GAAS,YAAY,SAAA,EAAU;AACnC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,EAAI,GAAI,GAAA;AAC5B,IAAA,IAAI,MAAA,EAAQ,iBAAA,IAAqB,MAAA,GAAS,MAAA,CAAO,iBAAA,EAAmB;AACnE,MAAA,MAAM,gBAAA,EAAiB;AACvB,MAAA,MAAA,GAAS,YAAY,SAAA,EAAU;AAAA,IAChC;AAEA,IAAA,IAAI,QAAQ,YAAA,EAAc;AACzB,MAAA,OAAA,CAAQ,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,MAAA,CAAO,YAAY,CAAA,CAAA;AAAA,IACzD;AAEA,IAAA,MAAM,YAAY,OAAA,EAAS,MAAA,GAAS,OAAO,gBAAA,CAAiB,OAAA,CAAQ,MAAqB,CAAA,GAAI,IAAA;AAE7F,IAAA,MAAM,SAAA,GAAiB,EAAE,MAAA,EAAQ,OAAA,EAAQ;AACzC,IAAA,IAAI,CAAC,CAAC,KAAA,EAAO,QAAQ,EAAE,QAAA,CAAS,MAAM,CAAA,IAAK,IAAA,KAAS,MAAA,EAAW;AAC9D,MAAA,SAAA,CAAU,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAAA,IACrC;AAEA,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,GAAA,CAAI,OAAO,GAAG,SAAS,CAAA,CAAA;AAC1C,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,IAAA;AACJ,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAE3B,IAAA,IAAI;AACH,MAAA,GAAA,GAAM,MAAM,KAAA,CAAM,OAAA,EAAS,SAAS,CAAA;AAAA,IACrC,SAAS,KAAA,EAAO;AACf,MAAA,MAAM,MAAW,IAAI,KAAA,CAAM,iBAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,wBAAwB,CAAA;AAC5F,MAAA,GAAA,CAAI,IAAA,GAAO,cAAA;AACX,MAAA,GAAA,CAAI,MAAA,GAAS,MAAA;AACb,MAAA,GAAA,CAAI,GAAA,GAAM,OAAA;AACV,MAAA,IAAI,OAAA,EAAS,OAAA,IAAW,MAAA,KAAW,KAAA,EAAO;AACzC,QAAA,OAAA,CAAQ,OAAA;AAAA,UACP,OAAA,CAAQ,OAAA,CAAQ,EAAE,KAAA,EAAO,GAAA,EAAK,QAAQ,GAAA,EAAK,OAAA,EAAS,OAAA,EAAS,KAAA,EAAO;AAAA,SACrE,CAAE,MAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MACjB;AACA,MAAA,MAAM,GAAA;AAAA,IACP;AAEA,IAAA,IAAI,IAAI,MAAA,KAAW,GAAA,IAAO,CAAC,OAAA,GAAU,UAAU,CAAA,EAAG;AACjD,MAAA,IAAI;AACH,QAAA,MAAM,gBAAA,EAAiB;AACvB,QAAA,MAAM,SAAA,GAAY,YAAY,SAAA,EAAU;AACxC,QAAA,IAAI,WAAW,YAAA,EAAc;AAC5B,UAAA,OAAA,CAAQ,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,SAAA,CAAU,YAAY,CAAA,CAAA;AAC3D,UAAA,SAAA,CAAU,OAAA,GAAU,OAAA;AAAA,QACrB;AACA,QAAA,OAAO,OAAA,CAAW,QAAQ,IAAA,EAAM,IAAA,EAAM,EAAE,GAAG,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,CAAA;AAAA,MACrE,SAAS,YAAA,EAAc;AACtB,QAAA,MAAM,YAAA;AAAA,MACP;AAAA,IACD;AAEA,IAAA,IAAI;AACH,MAAA,MAAM,aAAA,GAAgB,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA;AACtD,MAAA,MAAM,WAAA,GAAc,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AAClD,MAAA,IAAI,GAAA,CAAI,WAAW,GAAA,IAAO,aAAA,KAAkB,OAAO,CAAC,WAAA,EAAa,QAAA,CAAS,kBAAkB,CAAA,EAAG;AAC9F,QAAA,IAAA,GAAO,EAAC;AAAA,MACT,CAAA,MAAO;AACN,QAAA,IAAA,GAAO,MAAM,IAAI,IAAA,EAAK;AAAA,MACvB;AAAA,IACD,SAAS,KAAA,EAAO;AACf,MAAA,MAAM,GAAA,GAAW,IAAI,KAAA,CAAM,0BAA0B,CAAA;AACrD,MAAA,GAAA,CAAI,IAAA,GAAO,YAAA;AACX,MAAA,GAAA,CAAI,MAAA,GAAS,MAAA;AACb,MAAA,GAAA,CAAI,GAAA,GAAM,OAAA;AACV,MAAA,GAAA,CAAI,SAAS,GAAA,CAAI,MAAA;AACjB,MAAA,IAAI,OAAA,EAAS,OAAA,IAAW,MAAA,KAAW,KAAA,EAAO;AACzC,QAAA,OAAA,CAAQ,OAAA;AAAA,UACP,OAAA,CAAQ,OAAA,CAAQ,EAAE,KAAA,EAAO,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,GAAA,CAAI,MAAA,EAAQ;AAAA,SACzE,CAAE,MAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MACjB;AACA,MAAA,MAAM,GAAA;AAAA,IACP;AAEA,IAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACZ,MAAA,MAAM,SAAA,GAAyB,IAAA;AAC/B,MAAA,MAAM,MAAA,GAAS,iCAAiC,SAAS,CAAA;AACzD,MAAA,MAAM,GAAA,GAAW,IAAI,KAAA,CAAM,SAAA,CAAU,WAAW,gBAAgB,CAAA;AAChE,MAAA,GAAA,CAAI,IAAA,GAAO,UAAA;AACX,MAAA,GAAA,CAAI,UAAA,GAAa,SAAA,CAAU,UAAA,IAAc,GAAA,CAAI,MAAA;AAC7C,MAAA,GAAA,CAAI,mBAAmB,MAAA,CAAO,gBAAA;AAC9B,MAAA,GAAA,CAAI,MAAA,GAAS,MAAA;AACb,MAAA,GAAA,CAAI,GAAA,GAAM,OAAA;AACV,MAAA,MAAM,SAAA,GAAY,IAAI,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA;AACjF,MAAA,IAAI,SAAA,MAAe,SAAA,GAAY,SAAA;AAC/B,MAAA,IAAI,OAAA,EAAS,OAAA,IAAW,MAAA,KAAW,KAAA,EAAO;AACzC,QAAA,OAAA,CAAQ,OAAA;AAAA,UACP,QAAQ,OAAA,CAAQ;AAAA,YACf,KAAA,EAAO,GAAA;AAAA,YACP,MAAA;AAAA,YACA,GAAA,EAAK,OAAA;AAAA,YACL,QAAQ,GAAA,CAAI,MAAA;AAAA,YACZ,QAAA,EAAU,SAAA;AAAA,YACV,YAAY,SAAA,IAAa,IAAA;AAAA,YACzB,WAAA,EAAa,IAAA,CAAK,GAAA,EAAI,GAAI;AAAA,WAC1B;AAAA,SACF,CAAE,MAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MACjB;AACA,MAAA,MAAM,GAAA;AAAA,IACP;AAEA,IAAA,IAAI,OAAA,EAAS,SAAA,IAAa,MAAA,KAAW,KAAA,EAAO;AAC3C,MAAA,MAAM,SAAA,GAAY,IAAI,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA;AACjF,MAAA,OAAA,CAAQ,OAAA;AAAA,QACP,QAAQ,SAAA,CAAU;AAAA,UACjB,IAAA;AAAA,UACA,MAAA;AAAA,UACA,GAAA,EAAK,OAAA;AAAA,UACL,QAAQ,GAAA,CAAI,MAAA;AAAA,UACZ,YAAY,SAAA,IAAa,IAAA;AAAA,UACzB,WAAA,EAAa,IAAA,CAAK,GAAA,EAAI,GAAI;AAAA,SAC1B;AAAA,OACF,CAAE,MAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,OAAO;AAAA,IACN,GAAA,EAAK,CAAI,IAAA,EAAc,IAAA,KAA6B,QAAW,KAAA,EAAO,IAAA,EAAM,QAAW,IAAI,CAAA;AAAA,IAC3F,IAAA,EAAM,CAAI,IAAA,EAAc,IAAA,EAAe,SAA6B,OAAA,CAAW,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,IACvG,GAAA,EAAK,CAAI,IAAA,EAAc,IAAA,EAAe,SAA6B,OAAA,CAAW,KAAA,EAAO,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,IACrG,KAAA,EAAO,CAAI,IAAA,EAAc,IAAA,EAAe,SAA6B,OAAA,CAAW,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,IACzG,MAAA,EAAQ,CAAI,IAAA,EAAc,IAAA,KAA6B,QAAW,QAAA,EAAU,IAAA,EAAM,QAAW,IAAI;AAAA,GAClG;AACD;;;AC3PA,SAAS,cAAA,CAAe,MAAA,EAAgB,YAAA,EAAsB,MAAA,GAAiB,IAAA,EAAc;AACzF,EAAA,IAAI,CAAC,cAAc,OAAO,EAAA;AAC1B,EAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AAAA,IACjC,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,aAAa,WAAA;AAAY,GACtC,CAAA,CAAE,MAAA,CAAO,MAAM,CAAA;AACpB;AAEA,SAAS,cAAc,QAAA,EAA0B;AAC7C,EAAA,IAAI;AACA,IAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM;AAAA,MAC1C,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU,SAAS,WAAA;AAAY,KAClC,CAAA;AACD,IAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,aAAA,CAAc,IAAI,CAAA;AAC1C,IAAA,MAAM,eAAe,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,UAAU,CAAA;AAC1D,IAAA,OAAO,YAAA,EAAc,MAAM,MAAA,IAAU,CAAA;AAAA,EACzC,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,CAAA;AAAA,EACX;AACJ;AAEO,SAAS,cAAA,CAAe,aAAqB,QAAA,EAA0B;AAC1E,EAAA,MAAM,KAAA,GAAQ,cAAc,QAAQ,CAAA;AACpC,EAAA,OAAO,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,KAAK,CAAA;AAC3C;AAOO,SAAS,kBAAkB,QAAA,EAA0B;AACxD,EAAA,IAAI;AACA,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM;AAAA,MAC/B,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU,SAAS,WAAA,EAAY;AAAA,MAC/B,eAAA,EAAiB;AAAA,KACpB,CAAA,CAAE,aAAA,CAAc,CAAC,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,KAAS,UAAU,CAAA,EAAG,KAAA,IAAS,SAAS,WAAA,EAAY;AAAA,EACxF,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,SAAS,WAAA,EAAY;AAAA,EAChC;AACJ;AAEO,SAAS,gBAAgB,QAAA,EAA0B;AACtD,EAAA,IAAI;AACA,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,CAAC,IAAI,GAAG,EAAE,IAAA,EAAM,UAAA,EAAY,EAAE,EAAA,CAAG,QAAA,CAAS,aAAa,CAAA,IAAK,SAAS,WAAA,EAAY;AAAA,EAClH,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,SAAS,WAAA,EAAY;AAAA,EAChC;AACJ;AAEO,SAAS,WAAA,CAAY,aAAqB,QAAA,EAA0B;AACvE,EAAA,IAAI,CAAC,UAAU,OAAO,EAAA;AACtB,EAAA,OAAO,cAAA,CAAe,cAAA,CAAe,WAAA,EAAa,QAAQ,GAAG,QAAQ,CAAA;AACzE;AAEO,SAAS,cAAc,OAAA,EAA6B;AACvD,EAAA,OAAO,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,OAAA,CAAQ,QAAQ,CAAA;AACtD;AAEO,SAAS,WAAA,CAAY,QAAiB,QAAA,EAA2B;AACpE,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,GAAG,OAAO,EAAA;AAE3C,EAAA,MAAM,KAAA,GAAQ,QAAA,GACR,MAAA,CAAO,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,MAAA,KAAW,QAAQ,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA,GACnD,OAAO,CAAC,CAAA;AAEd,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,OAAO,WAAA,CAAY,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,QAAQ,CAAA;AACnD;AAEO,SAAS,cAAA,CAAe,QAAiB,QAAA,EAA0B;AACtE,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,GAAG,OAAO,CAAA;AAC3C,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,MAAA,KAAW,QAAQ,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AACjE,EAAA,OAAO,OAAO,MAAA,IAAU,CAAA;AAC5B;;;AC3EO,SAAS,oBAAoB,KAAA,EAAiC;AACjE,EAAA,IAAI,CAAC,KAAA,EAAO;AACR,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,0BAAA,EAA2B;AAAA,EAC/D;AAEA,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAEvC,EAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpB,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,2BAAA,EAA4B;AAAA,EAChE;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAS,EAAA,EAAI;AACrB,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,0BAAA,EAA2B;AAAA,EAC/D;AAEA,EAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAC3B;;;ACrBO,IAAM,QAAA,GAAW;AAAA,EACpB;AAAA,IACI,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACH,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,kBAAA,EAAmB;AAAA,MACnD,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,iBAAA,EAAkB;AAAA,MAClD,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,gBAAA,EAAiB;AAAA,MAClD,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,qBAAA;AAAsB;AAC1D,GACJ;AAAA,EACA;AAAA,IACI,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACH,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,eAAA,EAAgB;AAAA,MAC1C,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,cAAA,EAAe;AAAA,MACxC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,eAAA,EAAgB;AAAA,MAC1C,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,aAAA;AAAc;AAC1C,GACJ;AAAA,EACA;AAAA,IACI,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACH,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,YAAA,EAAa;AAAA,MACtC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,eAAA,EAAgB;AAAA,MAC5C,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,cAAA,EAAe;AAAA,MACzC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,YAAA;AAAa;AAC1C;AAER,CAAA;AAEO,SAAS,aAAa,MAAA,EAAiC;AAC1D,EAAA,IAAI;AACA,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,cAAA,EAAe,CAAE,iBAAgB,CAAE,QAAA;AAEzD,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AACxB,MAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC5B,QAAA,IAAI,IAAA,CAAK,UAAU,QAAA,EAAU;AACzB,UAAA,OAAO,QAAA;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAEA,IAAA,OAAO,KAAA;AAAA,EACX,SAAS,CAAA,EAAG;AAER,IAAA,OAAO,KAAA;AAAA,EACX;AACJ;;;AC/CA,IAAM,OAAA,GAAU,CAAC,IAAA,EAAM,SAAS,CAAA;AAChC,IAAM,SAAA,GAAoD;AAAA,EACzD,IAAA,EAAM,OAAA;AAAA,EACN,SAAA,EAAW;AACZ,CAAA;AAEO,SAAS,QAAQ,IAAA,EAAsB;AAC7C,EAAA,OAAO,IAAA,CACL,UAAS,CACT,WAAA,GACA,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CACnB,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA,CACtB,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CACnB,OAAA,CAAQ,OAAO,EAAE,CAAA,CACjB,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACpB;AAEO,SAAS,SAAS,IAAA,EAAsB;AAC9C,EAAA,MAAM,aAAA,GAAgB,QAAQ,IAAI,CAAA;AAClC,EAAA,OACC,aAAA,CACE,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CAEjB,OAAA;AAAA,IAEA,QAAA;AAAA,IACA,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,WAAA;AAAY,GAC3D;AAEH;AAEO,SAAS,WAAW,IAAA,EAAsB;AAChD,EAAA,MAAM,aAAA,GAAgB,QAAQ,IAAI,CAAA;AAClC,EAAA,OAAO,aAAA,CACL,OAAA,CAAQ,IAAA,EAAM,GAAG,EACjB,WAAA,EAAY;AACf;AAEO,SAAS,UAAA,CAAW,MAA8B,MAAA,EAA0C;AAClG,EAAA,IAAI,YAAA,GAAe,OAAA;AAEnB,EAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG;AAC7B,IAAA,YAAA,GAAe,UAAU,MAAM,CAAA;AAAA,EAChC;AAEA,EAAA,OAAO,IAAI,IAAA,CAAK,IAAI,CAAA,CAAE,mBAAmB,YAAA,EAAc;AAAA,IACtD,QAAA,EAAU,KAAA;AAAA,IACV,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,OAAA;AAAA,IACP,GAAA,EAAK;AAAA,GACL,CAAA;AACF;;;AClDA,eAAsB,gBAAgB,WAAA,EAA0C;AAC/E,EAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,WAAA,EAAa,KAAK,CAAA;AAE7C,EAAA,IAAI;AACH,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAM,CAAA;AAEnC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AACjB,MAAA,OAAA,CAAQ,MAAM,CAAA,qBAAA,EAAwB,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAC9E,MAAA,OAAO,IAAA;AAAA,IACR;AAEA,IAAA,MAAM,UAAA,GAAa,MAAM,QAAA,CAAS,IAAA,EAAK;AACvC,IAAA,OAAO,UAAA;AAAA,EACR,SAAS,KAAA,EAAO;AACf,IAAA,OAAA,CAAQ,KAAA,CAAM,uBAAuB,KAAK,CAAA;AAC1C,IAAA,OAAO,IAAA;AAAA,EACR;AACD;AAEA,eAAsB,sBAAsB,WAAA,EAAmC;AAC9E,EAAA,IAAI;AACH,IAAA,MAAM,UAAA,GAAa,MAAM,eAAA,CAAgB,WAAW,CAAA;AACpD,IAAA,OAAO,UAAA,IAAc,EAAA;AAAA,EACtB,SAAS,KAAA,EAAO;AACf,IAAA,OAAA,CAAQ,KAAA,CAAM,wCAAwC,KAAK,CAAA;AAC3D,IAAA,OAAO,EAAA;AAAA,EACR;AACD;AAEA,eAAsB,oBAAA,CACrB,WAAA,EACA,aAAA,EACA,SAAA,EACgB;AAChB,EAAA,IAAI,CAAC,aAAA,EAAe;AAEpB,EAAA,IAAI;AACH,IAAA,MAAM,UAAA,GAAa,MAAM,eAAA,CAAgB,WAAW,CAAA;AAEpD,IAAA,IAAI,UAAA,EAAY;AACf,MAAA,aAAA,CAAc,SAAA,GAAY,UAAA;AAE1B,MAAA,IAAI,SAAA,EAAW;AACd,QAAA,MAAM,UAAA,GAAa,aAAA,CAAc,aAAA,CAAc,KAAK,CAAA;AACpD,QAAA,IAAI,UAAA,EAAY;AACf,UAAA,UAAA,CAAW,UAAU,GAAA,CAAI,GAAG,SAAA,CAAU,KAAA,CAAM,GAAG,CAAC,CAAA;AAAA,QACjD;AAAA,MACD;AAAA,IACD;AAAA,EACD,SAAS,KAAA,EAAO;AACf,IAAA,OAAA,CAAQ,KAAA,CAAM,wBAAwB,KAAK,CAAA;AAAA,EAC5C;AACD;;;ACvDA,IAAM,WAAA,GAAc,kBAAA;AAEb,SAAS,WAAW,GAAA,EAAsB;AAC/C,EAAA,IAAI,CAAC,GAAA,IAAO,GAAA,CAAI,MAAA,KAAW,GAAG,OAAO,KAAA;AACrC,EAAA,OAAO,WAAA,CAAY,KAAK,GAAG,CAAA;AAC7B;AAEO,SAAS,YAAY,GAAA,EAAiD;AAC3E,EAAA,IAAI,CAAC,GAAA,IAAO,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG;AAC5B,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,iBAAA,EAAkB;AAAA,EAClD;AAEA,EAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AACpB,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,oCAAA,EAAqC;AAAA,EACrE;AAEA,EAAA,IAAI,CAAC,WAAA,CAAY,IAAA,CAAK,GAAG,CAAA,EAAG;AAC1B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,KAAA,EACE;AAAA,KACJ;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AACvB;AAEO,SAAS,MAAM,KAAA,EAAuB;AAC3C,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,OAAO,MACJ,WAAA,EAAY,CACZ,MAAK,CACL,OAAA,CAAQ,QAAQ,GAAG,CAAA,CACnB,QAAQ,cAAA,EAAgB,EAAE,EAC1B,OAAA,CAAQ,gBAAA,EAAkB,EAAE,CAAA,CAC5B,OAAA,CAAQ,aAAa,GAAG,CAAA;AAC7B;AAEO,SAAS,UAAU,IAAA,EAAsB;AAC9C,EAAA,OAAO,MAAM,IAAI,CAAA;AACnB;;;ACnCO,SAAS,kBAAkB,OAAA,EAAuC;AACvE,EAAA,IAAI,CAAC,OAAA,EAAS,SAAA,EAAW,OAAO,CAAA;AAChC,EAAA,OAAO,OAAA,CAAQ,UAAU,MAAA,CAAO,CAAC,KAAK,GAAA,KAAQ,GAAA,GAAM,GAAA,CAAI,SAAA,EAAW,CAAC,CAAA;AACtE;AAGO,SAAS,iBAAiB,OAAA,EAAuC;AACtE,EAAA,IAAI,CAAC,OAAA,EAAS,SAAA,EAAW,OAAO,CAAA;AAChC,EAAA,OAAO,OAAA,CAAQ,UAAU,MAAA,CAAO,CAAC,KAAK,GAAA,KAAQ,GAAA,GAAM,GAAA,CAAI,QAAA,EAAU,CAAC,CAAA;AACrE;AAGO,SAAS,QAAA,CAAS,OAAA,EAA+B,QAAA,GAAmB,CAAA,EAAY;AACrF,EAAA,OAAO,iBAAA,CAAkB,OAAO,CAAA,IAAK,QAAA;AACvC;AAGO,SAAS,cAAA,CACd,SACA,UAAA,EAC4B;AAC5B,EAAA,OAAO,SAAS,SAAA,EAAW,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,gBAAgB,UAAU,CAAA;AACvE;AAGO,SAAS,qBAAA,CACd,OAAA,EACA,QAAA,GAAmB,CAAA,EACC;AACpB,EAAA,MAAM,MAAM,OAAA,EAAS,SAAA,EAAW,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,aAAa,QAAQ,CAAA;AACjE,EAAA,OAAO,GAAA,EAAK,WAAA;AACd;;;AC8VA,SAAS,qBAAqB,SAAA,EAAsB;AAClD,EAAA,OAAO;AAAA,IACL,aAAa,CAAC,UAAA,EAAiB,UAAU,IAAA,KACvC,WAAA,CAAY,YAAY,OAAO,CAAA;AAAA,IACjC,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,oBAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,0BAAA;AAAA,IACA,kBAAA;AAAA,IAEA,aAAa,CAAC,MAAA,KAAkB,WAAA,CAAY,MAAA,EAAQ,UAAU,MAAM,CAAA;AAAA,IACpE,gBAAgB,CAAC,MAAA,KAAkB,cAAA,CAAe,MAAA,EAAQ,UAAU,MAAM,CAAA;AAAA,IAC1E,aAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,eAAA;AAAA,IACA,mBAAA;AAAA,IAEA,QAAA;AAAA,IACA,YAAA;AAAA,IAEA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IAEA,qBAAA;AAAA,IACA,eAAA;AAAA,IACA,oBAAA;AAAA,IAEA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IAEA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;AAuUA,IAAM,oBAAA,GAAuB,uBAAA;AAE7B,SAAS,mBAAA,GAAsD;AAC7D,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,IAAA;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,OAAA,CAAQ,oBAAoB,CAAA;AACrD,IAAA,OAAO,GAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,GAAgC,IAAA;AAAA,EAC9D,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEA,SAAS,qBAAqB,CAAA,EAAyC;AACrE,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,EAAA,IAAI,CAAA,EAAG;AACL,IAAA,YAAA,CAAa,OAAA,CAAQ,oBAAA,EAAsB,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA;AAAA,EAC9D,CAAA,MAAO;AACL,IAAA,YAAA,CAAa,WAAW,oBAAoB,CAAA;AAAA,EAC9C;AACF;AASO,SAAS,iBAAiB,MAAA,EAAgC;AAC/D,EAAA,MAAM,MAAA,GAAS,OAAO,MAAA,IAAU,IAAA;AAChC,EAAA,MAAM,aAAA,GAAgB,OAAO,MAAA,IAAU,EAAA;AACvC,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAwC;AAC9D,EAAA,IAAI,mBAAA,GAAuD,IAAA;AAE3D,EAAA,SAAS,SAAS,CAAA,EAA2D;AAC3E,IAAA,OAAO,CAAA,GAAI,EAAE,QAAA,EAAU,CAAA,CAAE,QAAA,EAAU,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,GAAI,IAAA;AAAA,EAC1E;AAEA,EAAA,SAAS,IAAA,GAAa;AACpB,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,mBAAA,EAAqB,CAAA;AAC1C,IAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,MAAA,OAAA,CAAQ,OAAA,GACL,IAAA,CAAK,MAAM,EAAE,GAAG,CAAC,CAAA,CACjB,KAAA,CAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,MAAM,aAAA,GAAwC,CAAC,OAAA,KAAY;AACzD,IAAA,IAAI,OAAO,QAAA,EAAU;AACrB,IAAA,MAAM,OAAO,mBAAA,EAAoB;AACjC,IAAA,MAAM,IAAA,GAAO,QAAQ,IAAI,CAAA;AACzB,IAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,IAAA,IAAA,EAAK;AAAA,EACP,CAAA;AAEA,EAAA,MAAM,WAAA,GAA2B,OAAO,QAAA,GACpC;AAAA,IACE,SAAA,EAAW,OAAO,EAAE,YAAA,EAAc,OAAO,QAAA,EAAU,CAAA;AAAA,IACnD,mBAAmB,MAAM;AAAA,IAAC,CAAA;AAAA,IAC1B,gBAAgB,MAAM;AAAA,IAAC;AAAA,GACzB,GACA;AAAA,IACE,SAAA,GAAY;AACV,MAAA,MAAM,IAAI,mBAAA,EAAoB;AAC9B,MAAA,OAAO,CAAA,GAAI,EAAE,YAAA,EAAc,CAAA,CAAE,cAAa,GAAI,IAAA;AAAA,IAChD,CAAA;AAAA,IACA,iBAAA,GAAoB;AAAA,IAEpB,CAAA;AAAA,IACA,cAAA,GAAiB;AACf,MAAA,mBAAA,GAAsB,IAAA;AACtB,MAAA,aAAA,CAAc,MAAM,IAAI,CAAA;AAAA,IAC1B;AAAA,GACF;AAEJ,EAAA,MAAM,aAAa,gBAAA,CAAiB;AAAA,IAClC,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,mBAAmB,MAAA,CAAO,iBAAA;AAAA,IAC1B;AAAA,GACD,CAAA;AAED,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,UAAA;AAAA,IACA,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAA,EAAQ,aAAA;AAAA,IACR,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,aAAA,GAAgB,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAClE,EAAA,MAAM,WAAA,GAAc,cAAc,GAAA,CAAI,QAAA;AAEtC,EAAA,SAAS,SACP,MAAA,EAC0B;AAC1B,IAAA,IAAI,MAAA,EAAQ,MAAA,KAAW,MAAA,EAAW,SAAA,CAAU,SAAS,MAAA,CAAO,MAAA;AAE5D,IAAA,MAAM,UAAA,GAAa,CAAC,MAAA,EAAQ,KAAA,IAAS,CAAC,MAAA,EAAQ,MAAA;AAC9C,IAAA,IAAI,UAAA,IAAc,qBAAqB,OAAO,mBAAA;AAE9C,IAAA,MAAM,WAAW,YAAsC;AACrD,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,QAAA,CAAS;AAAA,UACxC,QAAQ,SAAA,CAAU,MAAA;AAAA,UAClB,OAAO,MAAA,EAAQ,KAAA;AAAA,UACf,QAAQ,MAAA,EAAQ;AAAA,SACjB,CAAA;AACD,QAAA,OAAO;AAAA,UACL,UAAU,MAAA,CAAO,QAAA;AAAA,UACjB,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,QAAQ,MAAA,CAAO;AAAA,SACjB;AAAA,MACF,SAAS,GAAA,EAAc;AACrB,QAAA,MAAM,CAAA,GAAI,GAAA;AACV,QAAA,MAAM,SAAS,CAAA,EAAG,UAAA,IAAc,CAAA,EAAG,MAAA,IAAU,GAAG,QAAA,EAAU,MAAA;AAC1D,QAAA,IAAI,UAAA,IAAc,WAAW,GAAA,EAAK;AAChC,UAAA,aAAA,CAAc,MAAM,IAAI,CAAA;AACxB,UAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,QAAA,CAAS,EAAE,MAAA,EAAQ,SAAA,CAAU,QAAQ,CAAA;AACtE,UAAA,OAAO;AAAA,YACL,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,QAAQ,MAAA,CAAO;AAAA,WACjB;AAAA,QACF;AACA,QAAA,MAAM,GAAA;AAAA,MACR;AAAA,IACF,CAAA,GAAG,CAAE,KAAA,CAAM,CAAC,GAAA,KAAQ;AAClB,MAAA,IAAI,YAAY,mBAAA,GAAsB,IAAA;AACtC,MAAA,MAAM,GAAA;AAAA,IACR,CAAC,CAAA;AAED,IAAA,IAAI,YAAY,mBAAA,GAAsB,OAAA;AAEtC,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,eAAe,OAAO,MAAA,EAA0B;AAC9C,IAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,MAAA,CAAO,MAAM,CAAA;AAC9C,IAAA,mBAAA,GAAsB,IAAA;AACtB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,eAAe,MAAA,GAAwB;AACrC,IAAA,IAAI,OAAO,QAAA,EAAU;AACrB,IAAA,mBAAA,GAAsB,IAAA;AACtB,IAAA,IAAI;AACF,MAAA,MAAM,YAAY,MAAA,EAAO;AAAA,IAC3B,CAAA,CAAA,MAAQ;AACN,MAAA,aAAA,CAAc,MAAM,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAA,EAAI,MAAM,WAAA,CAAY,KAAA,EAAM;AAAA,IAE5B,IAAI,OAAA,GAAkC;AACpC,MAAA,IAAI,MAAA,CAAO,UAAU,OAAO,IAAA;AAC5B,MAAA,OAAO,QAAA,CAAS,qBAAqB,CAAA;AAAA,IACvC,CAAA;AAAA,IAEA,IAAI,eAAA,GAA2B;AAC7B,MAAA,IAAI,MAAA,CAAO,UAAU,OAAO,IAAA;AAC5B,MAAA,MAAM,IAAI,mBAAA,EAAoB;AAC9B,MAAA,OAAO,CAAA,KAAM,IAAA,IAAQ,CAAC,CAAC,CAAA,CAAE,YAAA;AAAA,IAC3B,CAAA;AAAA,IAEA,mBAAmB,QAAA,EAA0D;AAC3E,MAAA,SAAA,CAAU,IAAI,QAAQ,CAAA;AACtB,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,mBAAA,EAAqB,CAAA;AAC9C,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,OAAA,CAAQ,OAAA,GACL,IAAA,CAAK,MAAM,SAAS,OAAO,CAAC,CAAA,CAC5B,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MACnB;AACA,MAAA,OAAO,MAAM;AACX,QAAA,SAAA,CAAU,OAAO,QAAQ,CAAA;AAAA,MAC3B,CAAA;AAAA,IACF,CAAA;AAAA,IAEA,OAAO,aAAA,CAAc,KAAA;AAAA,IACrB,IAAA,EAAM,oBAAA,CAAqB,aAAA,CAAc,KAAA,CAAM,IAAI,CAAA;AAAA,IACnD,KAAK,aAAA,CAAc,GAAA;AAAA,IACnB,OAAO,aAAA,CAAc,KAAA;AAAA,IACrB,KAAK,aAAA,CAAc,GAAA;AAAA,IACnB,UAAU,aAAA,CAAc,QAAA;AAAA,IACxB,YAAY,aAAA,CAAc,UAAA;AAAA,IAC1B,UAAA,EAAY,CAAC,OAAA,KAAoB;AAC/B,MAAA,SAAA,CAAU,OAAA,GAAU,OAAA;AACpB,MAAA,mBAAA,GAAsB,IAAA;AAAA,IACxB,CAAA;AAAA,IACA,UAAA,EAAY,MAAM,SAAA,CAAU,OAAA;AAAA,IAC5B,SAAA,EAAW,CAAC,GAAA,KAAgB;AAC1B,MAAA,SAAA,CAAU,MAAA,GAAS,GAAA;AACnB,MAAA,mBAAA,GAAsB,IAAA;AAAA,IACxB,CAAA;AAAA,IACA,SAAA,EAAW,MAAM,SAAA,CAAU,MAAA;AAAA,IAC3B,SAAA,EAAW,CAAC,CAAA,KAAc;AACxB,MAAA,SAAA,CAAU,MAAA,GAAS,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,SAAA,EAAW,MAAM,SAAA,CAAU,MAAA;AAAA,IAC3B,kBAAA;AAAA,IACA,KAAA,EAAO,qBAAqB,SAAS;AAAA,GACvC;AACF;;;ACz0BA,SAAS,gBAAA,CAAiB,OAAgB,QAAA,EAA0B;AAClE,EAAA,IAAI,KAAA,YAAiB,KAAA,IAAS,KAAA,CAAM,OAAA,SAAgB,KAAA,CAAM,OAAA;AAC1D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,GAAG,OAAO,KAAA;AAC1D,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,SAAS,MAAA,EAAwB;AACxC,EAAA,MAAM,cAAc,UAAA,CAAW,MAAA;AAC/B,EAAA,IAAI,WAAA,IAAe,YAAA,IAAgB,WAAA,EAAa,OAAO,YAAY,UAAA,EAAW;AAC9E,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,GAAS,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACvE;AAEA,SAAS,cAAA,CAAe,OAAgB,MAAA,EAAwB;AAC9D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI,CAAC,SAAS,OAAO,KAAA,KAAU,YAAY,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,EAAA;AACxE,EAAA,MAAM,MAAA,GAAS,KAAA;AACf,EAAA,MAAM,WAAA,GAAc,OAAO,MAAM,CAAA;AACjC,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,EAAU,OAAO,WAAA;AAC5C,EAAA,MAAM,eAAe,MAAA,CAAO,EAAA;AAC5B,EAAA,IAAI,OAAO,YAAA,KAAiB,QAAA,EAAU,OAAO,YAAA;AAC7C,EAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,EAAG;AACzC,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AAAA,EACxC;AACA,EAAA,OAAO,EAAA;AACT;AAEA,SAAS,SAAA,CAAU,QAA6B,IAAA,EAA8B;AAC5E,EAAA,OAAA,CAAQ,MAAA,IAAU,EAAC,EAAG,IAAA,CAAK,CAAC,KAAA,KAAU,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,GAAG,CAAC,CAAA,IAAK,IAAA;AACrE;AAEA,SAAS,SAAA,CAAU,MAAA,EAA6B,IAAA,EAAgB,MAAA,EAAwB;AACtF,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,MAAA,EAAQ,IAAI,CAAA;AACpC,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,OAAO,cAAA,CAAe,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA;AAC3C;AAEA,SAAS,WAAA,CAAY,SAAkB,MAAA,EAAwB;AAC7D,EAAA,OAAO,SAAA,CAAU,OAAA,CAAQ,MAAA,EAAQ,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAG,MAAM,CAAA,IAAK,OAAA,CAAQ,GAAA,IAAO,OAAA,CAAQ,EAAA;AACxF;AAEA,SAAS,WAAA,CAAY,SAAkB,MAAA,EAAwB;AAC7D,EAAA,OAAO,SAAA,CAAU,OAAA,CAAQ,MAAA,EAAQ,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAG,MAAM,CAAA,IAAK,OAAA,CAAQ,GAAA,IAAO,OAAA,CAAQ,EAAA;AACxF;AAEA,SAAS,YAAA,CAAa,UAAoB,MAAA,EAAwB;AAChE,EAAA,OAAO,SAAA,CAAU,QAAA,CAAS,MAAA,EAAQ,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAG,MAAM,CAAA,IAAK,QAAA,CAAS,GAAA,IAAO,QAAA,CAAS,EAAA;AAC3F;AAEA,SAAS,UAAA,CAAW,QAAuD,MAAA,EAAwB;AACjG,EAAA,OAAO,OAAO,IAAA,GAAO,MAAM,CAAA,IAAK,MAAA,CAAO,MAAM,EAAA,IAAM,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,QAAQ,EAAE,CAAA,CAAE,CAAC,KAAK,MAAA,CAAO,EAAA;AACnG;AAEA,SAAS,cAAA,CAAe,MAAA,EAAiB,MAAA,EAAgB,gBAAA,EAAyC;AAChG,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,KAAc,UAAU,MAAA,KAAW,MAAM,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AACjF,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,OAAO,MAAA,IAAU,CAAA;AAAA,IACzB,MAAA,EAAQ,OAAO,MAAA,IAAU,MAAA;AAAA,IACzB,QAAA,EAAU,KAAA,EAAO,QAAA,IAAY,gBAAA,IAAoB,EAAA;AAAA,IACjD,YAAY,KAAA,EAAO,UAAA;AAAA,IACnB,aAAa,KAAA,EAAO;AAAA,GACtB;AACF;AAEA,SAAS,cAAA,CAAe,QAAyB,OAAA,EAA6C;AAC5F,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,CAAM,iBAAA,CAAkB,OAAO,CAAA;AAC1D,EAAA,IAAI,MAAA,CAAO,QAAA,CAAS,WAAW,CAAA,EAAG,OAAO,WAAA;AACzC,EAAA,MAAM,KAAA,GAAA,CAAS,OAAA,CAAQ,SAAA,IAAa,EAAC,EAAG,MAAA,CAAO,CAAC,KAAA,EAAO,GAAA,KAAQ,KAAA,IAAS,GAAA,CAAI,SAAA,IAAa,IAAI,CAAC,CAAA;AAC9F,EAAA,OAAO,KAAA,GAAQ,IAAI,KAAA,GAAQ,MAAA;AAC7B;AAEA,SAAS,kBAAkB,QAAA,EAAiC;AAC1D,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,SAAS,OAAA,IAAW,EAAA;AAAA,IAC7B,KAAA,EAAO,SAAS,KAAA,IAAS,EAAA;AAAA,IACzB,IAAA,EAAM,SAAS,IAAA,IAAQ,EAAA;AAAA,IACvB,WAAA,EAAa,SAAS,WAAA,IAAe,EAAA;AAAA,IACrC,IAAA,EAAM,EAAA;AAAA,IACN,OAAA,EAAS,EAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACX;AACF;AAEA,SAAS,eAAe,KAAA,EAAmE;AACzF,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,uBAAuB,KAAA,EAAoD;AAClF,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IAC1B,IAAA,EAAM,SAAA;AAAA,IACN,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,UAAU,IAAA,CAAK;AAAA,GACjB,CAAE,CAAA;AACJ;AAEA,SAAS,uBAAuB,KAAA,EAA0D;AACxF,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAsC;AACzD,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,MAAM,CAAA,EAAG,IAAA,CAAK,UAAU,CAAA,CAAA,EAAI,KAAK,WAAW,CAAA,CAAA;AAClD,IAAA,MAAM,OAAkB,EAAE,IAAA,EAAM,KAAK,IAAA,EAAM,EAAA,EAAI,KAAK,EAAA,EAAG;AACvD,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,CAAS,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,IAAI,GAAA,EAAK;AAAA,MACd,IAAA,EAAM,SAAA;AAAA,MACN,IAAI,IAAA,CAAK,EAAA;AAAA,MACT,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,KAAA,EAAO,CAAC,IAAI,CAAA;AAAA,MACZ,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAC;AAAA,MACtB,OAAO,IAAA,CAAK;AAAA,KACb,CAAA;AAAA,EACH;AACA,EAAA,OAAO,CAAC,GAAG,MAAA,CAAO,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IACzC,GAAG,IAAA;AAAA,IACH,KAAA,EAAO,CAAC,GAAG,IAAA,CAAK,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,IAAA,GAAO,EAAE,IAAI;AAAA,GACvD,CAAE,CAAA;AACJ;AAEA,SAAS,gBAAgB,GAAA,EAA+C;AACtE,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,MAAA,KAAW,aAAa,OAAO,IAAA;AAClD,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAG,CAAA;AAC3C,IAAA,OAAO,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,GAAqB,IAAA;AAAA,EAClD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEA,SAAS,gBAAA,CAAiB,KAAyB,KAAA,EAAmC;AACpF,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,MAAA,KAAW,WAAA,EAAa;AAC3C,EAAA,IAAI;AACF,IAAA,IAAI,KAAA,SAAc,YAAA,CAAa,OAAA,CAAQ,KAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,SAC5D,MAAA,CAAO,YAAA,CAAa,UAAA,CAAW,GAAG,CAAA;AAAA,EACzC,CAAA,CAAA,MAAQ;AAAA,EAAC;AACX;AAEA,SAAS,qBAAqB,MAAA,EAA8B;AAC1D,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,IAC5B,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,KAAK,KAAA,CAAM,GAAA;AAAA,IACX,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,OAAO,KAAA,CAAM;AAAA,GACf,CAAE,CAAA;AACJ;AAEO,SAAS,gBAAgB,MAAA,EAAyB;AACvD,EAAA,MAAM,MAAA,GAAS,iBAAiB,MAAM,CAAA;AACtC,EAAA,MAAM,OAAA,GAAUA,eAAA,CAA6B,MAAA,CAAO,OAAO,CAAA;AAC3D,EAAA,MAAM,SAASA,eAAA,CAAK,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,WAAW,CAAA;AACvD,EAAA,MAAM,aAAaA,eAAA,CAAK,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,WAAW,CAAA;AAC3D,EAAA,MAAM,SAASC,mBAAA,CAAS,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,EAAO,UAAU,IAAI,CAAA;AACjE,EAAA,MAAM,WAAWA,mBAAA,CAAS,MAAA,EAAQ,CAAC,KAAA,KAAU,KAAA,EAAO,YAAY,IAAI,CAAA;AACpE,EAAA,MAAM,uBAAA,GAA0BA,oBAAS,MAAA,EAAQ,CAAC,UAAU,KAAA,EAAO,eAAA,IAAmB,EAAE,CAAA;AACxF,EAAA,MAAM,cAAA,GAAiBA,mBAAA,CAAS,OAAA,EAAS,CAAC,KAAA,KAAU;AAClD,IAAA,MAAM,QAAQ,KAAA,EAAO,KAAA;AACrB,IAAA,MAAM,OAAA,GAAU,KAAA,EAAO,MAAA,EAAQ,eAAA,IAAmB,EAAC;AACnD,IAAA,MAAM,gBAAgB,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAA0B,MAAA,CAAO,OAAO,aAAa,CAAA;AACzF,IAAA,OAAO,EAAE,QAAA,EAAU,KAAA,EAAO,OAAA,IAAW,IAAA,EAAM,SAAS,aAAA,IAAiB,CAAC,CAAC,KAAA,EAAO,OAAA,EAAQ;AAAA,EACxF,CAAC,CAAA;AAED,EAAA,MAAM,IAAA,GAAOD,gBAAkB,IAAI,CAAA;AACnC,EAAA,MAAM,aAAA,GAAgBA,eAAA,CAAsB,EAAE,CAAA;AAC9C,EAAA,MAAM,aAAA,GAAgBA,eAAA,CAA4B,EAAE,CAAA;AACpD,EAAA,MAAM,KAAA,GAAQA,gBAAwB,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAA,GAAaA,gBAAoB,IAAI,CAAA;AAC3C,EAAA,MAAM,UAAA,GAAaA,eAAA,CAA2B,eAAA,CAAgB,MAAA,CAAO,mBAAmB,CAAC,CAAA;AACzF,EAAA,MAAM,cAAcE,cAAA,CAAoB;AAAA,IACtC,OAAA,EAAS,KAAA;AAAA,IACT,OAAA,EAAS,KAAA;AAAA,IACT,cAAA,EAAgB,KAAA;AAAA,IAChB,mBAAA,EAAqB,KAAA;AAAA,IACrB,KAAA,EAAO,IAAA;AAAA,IACP,WAAA,EAAa,IAAA;AAAA,IACb,2BAAA,EAA6B,IAAA;AAAA,IAC7B,UAAA,EAAY;AAAA,GACb,CAAA;AAED,EAAA,MAAM,kBAAA,GAAqBD,mBAAA;AAAA,IAAS,aAAA;AAAA,IAAe,CAAC,KAAA,KAClD,KAAA,CAAM,MAAA,CAAO,CAAC,KAAA,EAAO,IAAA,KAAS,KAAA,IAAS,IAAA,CAAK,QAAA,IAAY,CAAA,CAAA,EAAI,CAAC;AAAA,GAC/D;AACA,EAAA,MAAM,qBAAqBA,mBAAA,CAAS,aAAA,EAAe,CAAC,KAAA,KAAU,MAAM,MAAM,CAAA;AAC1E,EAAA,MAAM,UAAA,GAAaA,mBAAA,CAAS,CAAC,kBAAA,EAAoB,kBAAkB,GAAG,CAAC,QAAA,EAAU,QAAA,KAAa,QAAA,GAAW,QAAQ,CAAA;AACjH,EAAA,MAAM,QAAA,GAAWA,mBAAA,CAAS,CAAC,IAAA,EAAM,aAAA,EAAe,aAAA,EAAe,UAAU,CAAA,EAAG,CAAC,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,KAAA,MAAW;AAAA,IACrH,IAAA,EAAM,SAAA;AAAA,IACN,aAAA,EAAe,QAAA;AAAA,IACf,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd,CAAE,CAAA;AAEF,EAAA,MAAM,YAAYC,cAAA,CAAkB;AAAA,IAClC,YAAA,EAAc,IAAA;AAAA,IACd,OAAO,EAAC;AAAA,IACR,OAAO,EAAC;AAAA,IACR,OAAA,EAAS,KAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACR,CAAA;AACD,EAAA,MAAM,cAAcA,cAAA,CAAoB;AAAA,IACtC,UAAU,EAAC;AAAA,IACX,UAAU,EAAC;AAAA,IACX,WAAW,EAAC;AAAA,IACZ,cAAA,EAAgB,IAAA;AAAA,IAChB,cAAA,EAAgB,IAAA;AAAA,IAChB,eAAA,EAAiB,IAAA;AAAA,IACjB,YAAA,EAAc,IAAA;AAAA,IACd,gBAAA,EAAkB,KAAA;AAAA,IAClB,gBAAA,EAAkB,KAAA;AAAA,IAClB,iBAAA,EAAmB,KAAA;AAAA,IACnB,oBAAA,EAAsB,KAAA;AAAA,IACtB,KAAA,EAAO;AAAA,GACR,CAAA;AAED,EAAA,MAAA,CAAO,mBAAmB,CAAC,KAAA,KAAU,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAC,CAAA;AACvD,EAAA,QAAA,CAAS,UAAU,CAAC,KAAA,KAAU,MAAA,CAAO,YAAA,GAAe,KAAK,CAAC,CAAA;AAC1D,EAAA,UAAA,CAAW,UAAU,CAAC,KAAA,KAAU,iBAAiB,MAAA,CAAO,mBAAA,EAAqB,KAAK,CAAC,CAAA;AAEnF,EAAA,SAAS,gBAAA,GAA2B;AAClC,IAAA,OAAO,UAAA,CAAW,KAAI,IAAK,MAAA,CAAO,WAAU,IAAK,MAAA,CAAO,GAAA,EAAI,EAAG,GAAA,IAAO,EAAA;AAAA,EACxE;AAEA,EAAA,SAAS,aAAA,GAAwB;AAC/B,IAAA,OAAO,MAAA,CAAO,GAAA,EAAI,IAAK,MAAA,CAAO,WAAU,IAAK,IAAA;AAAA,EAC/C;AAEA,EAAA,SAAS,eAAA,GAAiC;AACxC,IAAA,OAAO,SAAS,GAAA,EAAI,IAAK,MAAA,CAAO,GAAA,IAAO,QAAA,IAAY,IAAA;AAAA,EACrD;AAEA,EAAA,eAAe,QAAA,CAAS,MAAA,GAAgE,EAAC,EAAG;AAC1F,IAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA;AAC1C,IAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,QAAA,CAAS,EAAE,GAAG,MAAA,EAAQ,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,gBAAA,EAAiB,EAAG,CAAA;AAC/F,IAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAClB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,SAAS,UAAU,GAAA,EAAmB;AACpC,IAAA,UAAA,CAAW,IAAI,GAAG,CAAA;AAClB,IAAA,MAAA,CAAO,UAAU,GAAG,CAAA;AAAA,EACtB;AAEA,EAAA,SAAS,UAAU,KAAA,EAAqB;AACtC,IAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAChB,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,EACxB;AAEA,EAAA,eAAe,UAAA,GAA4B;AACzC,IAAA,WAAA,CAAY,MAAA,CAAO,WAAW,IAAI,CAAA;AAClC,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,CAAS,EAAE,MAAA,EAAQ,gBAAA,IAAoB,CAAA;AAC7C,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,QAAQ,EAAE,MAAA,EAAQ,gBAAA,EAAiB,EAAG,CAAA;AACzE,MAAA,MAAM,YAAY,QAAQ,CAAA;AAC1B,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,sBAAsB,CAAC,CAAA;AAC3E,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,IACrC;AAAA,EACF;AAEA,EAAA,eAAe,kBAAA,CAAmB,MAAgC,MAAA,EAA6C;AAC7G,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,IAAI,EAAE,EAAA,EAAI,IAAA,CAAK,UAAA,EAAY,CAAA;AACtE,MAAA,MAAM,OAAA,GAAU,QAAQ,QAAA,CAAS,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,IAAA,CAAK,UAAU,CAAA;AACrF,MAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,IAAA,CAAK,EAAA,IAAM,QAAA,CAAS,SAAS,CAAA;AAAA,QACjC,YAAY,OAAA,CAAQ,EAAA;AAAA,QACpB,YAAY,OAAA,CAAQ,EAAA;AAAA,QACpB,YAAA,EAAc,WAAA,CAAY,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,QAClD,YAAA,EAAc,UAAA,CAAW,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,QACjD,oBAAoB,OAAA,CAAQ,UAAA;AAAA,QAC5B,OAAO,cAAA,CAAe,OAAA,CAAQ,QAAQ,gBAAA,EAAiB,EAAG,iBAAiB,CAAA;AAAA,QAC3E,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,UAAU,MAAA,CAAO,UAAA,GAAa,OAAO,UAAA,GAAa,GAAA,GAAO,KAAK,GAAA,EAAI;AAAA,QAClE,SAAA,EAAW,cAAA,CAAe,MAAA,EAAQ,OAAO;AAAA,OAC3C;AAAA,IACF,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,eAAe,oBAAoB,KAAA,EAAmE;AACpG,IAAA,MAAM,OAA8B,EAAC;AACrC,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,IAAI,OAAA,GAA0B,IAAA;AAC9B,MAAA,IAAI,QAAA,GAA4B,IAAA;AAChC,MAAA,IAAI;AACF,QAAA,OAAA,GAAU,MAAM,OAAO,KAAA,CAAM,OAAA,CAAQ,IAAI,EAAE,EAAA,EAAI,IAAA,CAAK,UAAA,EAAY,CAAA;AAAA,MAClE,CAAA,CAAA,MAAQ;AAAA,MAAC;AACT,MAAA,IAAI;AACF,QAAA,QAAA,GAAW,MAAM,OAAO,KAAA,CAAM,QAAA,CAAS,IAAI,EAAE,EAAA,EAAI,IAAA,CAAK,WAAA,EAAa,CAAA;AAAA,MACrE,CAAA,CAAA,MAAQ;AAAA,MAAC;AACT,MAAA,KAAA,MAAW,CAAC,KAAA,EAAO,IAAI,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AAChD,QAAA,IAAA,CAAK,IAAA,CAAK;AAAA,UACR,IAAI,IAAA,CAAK,EAAA,IAAM,QAAA,CAAS,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE,CAAA;AAAA,UAC1C,YAAY,IAAA,CAAK,UAAA;AAAA,UACjB,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,IAAI,IAAA,CAAK,EAAA;AAAA,UACT,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAC;AAAA,UACtB,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,cAAc,OAAA,GAAU,WAAA,CAAY,SAAS,aAAA,EAAe,IAAI,IAAA,CAAK,UAAA;AAAA,UACrE,eAAe,QAAA,GAAW,YAAA,CAAa,UAAU,aAAA,EAAe,IAAI,IAAA,CAAK;AAAA,SAC1E,CAAA;AAAA,MACH;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,eAAe,YAAY,QAAA,EAA+B;AACxD,IAAA,IAAA,CAAK,IAAI,QAAQ,CAAA;AACjB,IAAA,WAAA,CAAY,MAAA,CAAO,YAAA,EAAc,QAAA,CAAS,KAAA,IAAS,IAAI,CAAA;AACvD,IAAA,WAAA,CAAY,MAAA,CAAO,6BAAA,EAA+B,QAAA,CAAS,kBAAA,IAAsB,IAAI,CAAA;AACrF,IAAA,UAAA,CAAW,GAAA,CAAI,QAAA,CAAS,UAAA,IAAc,IAAI,CAAA;AAC1C,IAAA,KAAA,CAAM,GAAA,CAAI,QAAA,CAAS,cAAA,IAAkB,IAAI,CAAA;AAEzC,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,IAAS,EAAC;AACjC,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,GAAA;AAAA,MAC7B,KAAA,CACG,MAAA,CAAO,CAAC,IAAA,KAA2C,KAAK,IAAA,KAAS,SAAS,CAAA,CAC1E,GAAA,CAAI,CAAC,IAAA,KAAS,kBAAA,CAAmB,IAAA,EAAM,QAAQ,CAAC;AAAA,KACrD;AACA,IAAA,MAAM,WAAW,MAAM,mBAAA;AAAA,MACrB,MAAM,MAAA,CAAO,CAAC,IAAA,KAA2C,IAAA,CAAK,SAAS,SAAS;AAAA,KAClF;AACA,IAAA,aAAA,CAAc,IAAI,QAAA,CAAS,MAAA,CAAO,CAAC,IAAA,KAAgC,IAAA,KAAS,IAAI,CAAC,CAAA;AACjF,IAAA,aAAA,CAAc,IAAI,QAAQ,CAAA;AAC1B,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,SAAS,aAAA,CAAc,KAAA,GAAuB,EAAC,EAAwB;AACrE,IAAA,OAAO;AAAA,MACL,GAAG,sBAAA,CAAuB,KAAA,CAAM,aAAA,IAAiB,aAAA,CAAc,KAAK,CAAA;AAAA,MACpE,GAAG,sBAAA,CAAuB,KAAA,CAAM,aAAA,IAAiB,aAAA,CAAc,KAAK;AAAA,KACtE;AAAA,EACF;AAEA,EAAA,eAAe,QAAA,CAAS,KAAA,GAAuB,EAAC,EAAkB;AAChE,IAAA,WAAA,CAAY,MAAA,CAAO,WAAW,IAAI,CAAA;AAClC,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAI,IAAK,MAAM,UAAA,EAAW;AAC/C,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO;AAAA,QACxC,IAAI,OAAA,CAAQ,EAAA;AAAA,QACZ,QAAQ,gBAAA,EAAiB;AAAA,QACzB,KAAA,EAAO,cAAc,KAAK,CAAA;AAAA,QAC1B,gBAAA,EAAkB,MAAM,gBAAA,IAAoB,KAAA,CAAA;AAAA,QAC5C,eAAA,EAAiB,MAAM,eAAA,IAAmB,KAAA,CAAA;AAAA,QAC1C,KAAA,EAAO,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAAA,QACjC,UAAA,EAAY,MAAM,UAAA,KAAe,KAAA,CAAA,GAAY,WAAW,GAAA,EAAI,IAAK,KAAA,CAAA,GAAY,KAAA,CAAM,UAAA,IAAc,KAAA,CAAA;AAAA,QACjG,iBAAA,EAAmB,MAAM,iBAAA,IAAqB,KAAA,CAAA;AAAA,QAC9C,oBACE,KAAA,CAAM,kBAAA,IACN,WAAA,CAAY,GAAA,GAAM,2BAAA,IAClB,KAAA;AAAA,OACH,CAAA;AACD,MAAA,IAAI,MAAM,UAAA,KAAe,KAAA,CAAA,EAAW,UAAA,CAAW,GAAA,CAAI,MAAM,UAAU,CAAA;AACnE,MAAA,IAAI,KAAA,CAAM,uBAAuB,KAAA,CAAA,EAAW;AAC1C,QAAA,WAAA,CAAY,MAAA,CAAO,6BAAA,EAA+B,KAAA,CAAM,kBAAkB,CAAA;AAAA,MAC5E;AACA,MAAA,MAAM,YAAY,QAAQ,CAAA;AAC1B,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,sBAAsB,CAAC,CAAA;AAC3E,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,IACrC;AAAA,EACF;AAEA,EAAA,eAAe,UAAA,CAAW,OAAA,EAAkB,OAAA,EAAyB,QAAA,GAAW,CAAA,EAAkB;AAChG,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAI,IAAK,MAAM,UAAA,EAAW;AAC/C,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ;AAAA,QACzC,IAAI,OAAA,CAAQ,EAAA;AAAA,QACZ,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,SAAA;AAAA,UACN,YAAY,OAAA,CAAQ,EAAA;AAAA,UACpB,YAAY,OAAA,CAAQ,EAAA;AAAA,UACpB;AAAA;AACF,OACD,CAAA;AACD,MAAA,MAAM,YAAY,QAAQ,CAAA;AAC1B,MAAA,MAAM,OAAO,QAAA,CAAS,KAAA,CAAM,EAAE,IAAA,EAAM,cAAc,OAAA,EAAS,EAAE,UAAA,EAAY,OAAA,CAAQ,IAAI,UAAA,EAAY,OAAA,CAAQ,EAAA,EAAI,QAAA,IAAY,CAAA;AACzH,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,gCAAgC,CAAC,CAAA;AACrF,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AAEA,EAAA,eAAe,kBAAA,CAAmB,QAAgB,QAAA,EAAiC;AACjF,IAAA,MAAM,OAAO,aAAA,CAAc,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AAC7C,MAAA,IAAI,IAAA,CAAK,EAAA,KAAO,MAAA,EAAQ,OAAO,IAAA;AAC/B,MAAA,MAAM,UAAU,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,KAAK,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA,EAAG,KAAK,SAAS,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,QAAQ,CAAA;AACvG,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,QAAA,EAAU,OAAA,EAAQ;AAAA,IACtC,CAAC,CAAA;AACD,IAAA,aAAA,CAAc,IAAI,IAAI,CAAA;AACtB,IAAA,OAAO,QAAA,CAAS,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AAAA,EACzC;AAEA,EAAA,eAAe,cAAc,MAAA,EAAsC;AACjE,IAAA,MAAM,IAAA,GAAO,cAAc,GAAA,EAAI,CAAE,KAAK,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,MAAM,CAAA;AAC5E,IAAA,aAAA,CAAc,GAAA,CAAI,aAAA,CAAc,GAAA,EAAI,CAAE,MAAA,CAAO,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,MAAM,CAAC,CAAA;AACpF,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AACzB,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,IAAA,EAAM,OAAO,IAAA;AAC9B,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,UAAA,CAAW;AAAA,MAC5C,IAAI,OAAA,CAAQ,EAAA;AAAA,MACZ,SAAS,IAAA,CAAK,EAAA;AAAA,MACd,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,YAAY,IAAA,CAAK;AAAA,KAClB,CAAA;AACD,IAAA,MAAM,YAAY,QAAQ,CAAA;AAC1B,IAAA,MAAM,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,EAAE,MAAM,cAAA,EAAgB,OAAA,EAAS,EAAE,UAAA,EAAY,KAAK,UAAA,EAAY,UAAA,EAAY,IAAA,CAAK,UAAA,IAAc,CAAA;AAC3H,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,eAAe,eAAe,IAAA,EAA0C;AACtE,IAAA,MAAM,OAAO,CAAC,GAAG,aAAA,CAAc,GAAA,IAAO,IAAI,CAAA;AAC1C,IAAA,aAAA,CAAc,IAAI,IAAI,CAAA;AACtB,IAAA,OAAO,QAAA,CAAS,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AAAA,EACzC;AAEA,EAAA,eAAe,kBAAkB,MAAA,EAA+B;AAC9D,IAAA,MAAM,IAAA,GAAO,cAAc,GAAA,EAAI,CAAE,OAAO,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAA;AACpE,IAAA,aAAA,CAAc,IAAI,IAAI,CAAA;AACtB,IAAA,OAAO,QAAA,CAAS,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AAAA,EACzC;AAEA,EAAA,eAAe,SAAA,GAAkC;AAC/C,IAAA,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACpB,IAAA,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACpB,IAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,IAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,IAAA,WAAA,CAAY,MAAA,CAAO,+BAA+B,IAAI,CAAA;AACtD,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AACzB,IAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,MAAM,EAAE,EAAA,EAAI,OAAA,CAAQ,EAAA,EAAI,CAAA;AAC3D,IAAA,MAAM,YAAY,QAAQ,CAAA;AAC1B,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,eAAe,UAAA,CAAW,KAAA,GAAuB,EAAC,EAA+B;AAC/E,IAAA,IAAI,aAAA,CAAc,KAAK,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AACrC,MAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,WAAA,CAAY,MAAA,CAAO,kBAAkB,IAAI,CAAA;AACzC,IAAA,WAAA,CAAY,MAAA,CAAO,eAAe,IAAI,CAAA;AACtC,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,KAAK,CAAA;AACpC,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,MAAM,EAAE,EAAA,EAAI,OAAA,CAAQ,EAAA,EAAI,CAAA;AAC3D,MAAA,KAAA,CAAM,IAAI,QAAQ,CAAA;AAClB,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,aAAA,EAAe,gBAAA,CAAiB,KAAA,EAAO,wBAAwB,CAAC,CAAA;AACnF,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,kBAAkB,KAAK,CAAA;AAAA,IAC5C;AAAA,EACF;AAEA,EAAA,eAAe,QAAA,CAAS,KAAA,GAAuB,EAAC,EAAiC;AAC/E,IAAA,IAAI,aAAA,CAAc,KAAK,CAAA,CAAE,MAAA,KAAW,GAAG,MAAM,IAAI,MAAM,eAAe,CAAA;AACtE,IAAA,WAAA,CAAY,MAAA,CAAO,uBAAuB,IAAI,CAAA;AAC9C,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,KAAK,CAAA;AACpC,MAAA,MAAM,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAA,EAAS,EAAE,OAAA,EAAS,OAAA,CAAQ,EAAA,EAAG,EAAG,CAAA;AAC1F,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS;AAAA,QAC1C,IAAI,OAAA,CAAQ,EAAA;AAAA,QACZ,iBAAA,EAAmB,MAAM,iBAAA,IAAqB,KAAA;AAAA,OAC/C,CAAA;AACD,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,UAAU,QAAA,CAAS,QAAA;AAAA,QACnB,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,eAAe,QAAA,CAAS,aAAA;AAAA,QACxB,SAAS,QAAA,CAAS,OAAA;AAAA,QAClB,UAAA,EAAY,KAAK,GAAA;AAAI,OACvB;AACA,MAAA,UAAA,CAAW,IAAI,MAAM,CAAA;AACrB,MAAA,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACpB,MAAA,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACpB,MAAA,IAAA,CAAK,IAAI,IAAI,CAAA;AACb,MAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,MAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,MAAA,WAAA,CAAY,MAAA,CAAO,+BAA+B,IAAI,CAAA;AACtD,MAAA,MAAM,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,EAAE,MAAM,UAAA,EAAY,OAAA,EAAS,EAAE,QAAA,EAAU,SAAS,QAAA,EAAU,MAAA,EAAQ,QAAA,CAAS,MAAA,IAAU,CAAA;AACnH,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,kBAAkB,CAAC,CAAA;AACvE,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,uBAAuB,KAAK,CAAA;AAAA,IACjD;AAAA,EACF;AAEA,EAAA,eAAe,QAAA,CAAS,QAAuB,OAAA,EAAyC;AACtF,IAAA,SAAA,CAAU,MAAA,CAAO,WAAW,IAAI,CAAA;AAChC,IAAA,SAAA,CAAU,MAAA,CAAO,SAAS,IAAI,CAAA;AAC9B,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,MAAM,MAAA,CAAO,IAAI,IAAA,CAAK,GAAA,CAAI,QAAQ,OAAO,CAAA;AACtD,MAAA,MAAM,MAAM,MAAA,CAAO,GAAA,IAAO,OAAO,EAAA,IAAM,MAAA,CAAO,QAAQ,IAAA,CAAK,EAAA;AAC3D,MAAA,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,EAAE,GAAG,SAAA,CAAU,GAAA,EAAI,CAAE,KAAA,EAAO,CAAC,GAAG,GAAG,IAAA,EAAM,CAAA;AACnE,MAAA,OAAO,IAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,SAAA,CAAU,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,IACnC;AAAA,EACF;AAEA,EAAA,eAAe,gBAAgB,OAAA,EAAyC;AACtE,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,EAAE,KAAK,MAAA,CAAO,cAAA,IAAkB,SAAA,EAAU,EAAG,OAAO,CAAA;AAChF,IAAA,SAAA,CAAU,MAAA,CAAO,gBAAgB,IAAI,CAAA;AACrC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,eAAe,QAAA,CAAS,QAAuC,OAAA,EAAyC;AACtG,IAAA,SAAA,CAAU,MAAA,CAAO,WAAW,IAAI,CAAA;AAChC,IAAA,SAAA,CAAU,MAAA,CAAO,SAAS,IAAI,CAAA;AAC9B,IAAA,IAAI;AACF,MAAA,MAAM,OAAO,MAAM,MAAA,CAAO,IAAI,IAAA,CAAK,GAAA,CAAI,QAAQ,OAAO,CAAA;AACtD,MAAA,MAAM,MAAM,MAAA,CAAO,GAAA,IAAO,OAAO,EAAA,IAAM,IAAA,CAAK,OAAO,IAAA,CAAK,EAAA;AACxD,MAAA,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,EAAE,GAAG,SAAA,CAAU,GAAA,EAAI,CAAE,KAAA,EAAO,CAAC,GAAG,GAAG,IAAA,EAAM,CAAA;AACnE,MAAA,OAAO,IAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,SAAA,CAAU,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,IACnC;AAAA,EACF;AAEA,EAAA,eAAe,eAAA,CACb,GAAA,EACA,cAAA,EACA,OAAA,EACyB;AACzB,IAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,GAAA,EAAI,CAAE,KAAA;AAC9B,IAAA,MAAM,IAAA,GAAO,MAAM,GAAG,CAAA,IAAK,MAAM,QAAA,CAAS,EAAE,KAAK,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,YAAA,IAAgB,eAAe,CAAC,CAAA,GACxE,oBAAA,CAAqB,cAAyB,CAAA,GAC9C,cAAA;AACJ,IAAA,MAAM,OAAA,GAA4B,EAAE,OAAA,EAAS,IAAA,CAAK,IAAI,MAAA,EAAO;AAC7D,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,SAAS,OAAO,CAAA;AAAA,EAChD;AAEA,EAAA,eAAe,YAAA,CAAa,MAAA,GAA4B,EAAC,EAAG,OAAA,EAA+D;AACzH,IAAA,WAAA,CAAY,MAAA,CAAO,oBAAoB,IAAI,CAAA;AAC3C,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,MAAM,OAAA,CAAQ,IAAA,CAAK,QAAQ,OAAO,CAAA;AAChE,MAAA,WAAA,CAAY,MAAA,CAAO,UAAA,EAAY,QAAA,CAAS,KAAA,IAAS,EAAE,CAAA;AACnD,MAAA,WAAA,CAAY,MAAA,CAAO,gBAAA,EAAkB,QAAA,CAAS,MAAA,IAAU,IAAI,CAAA;AAC5D,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,0BAA0B,CAAC,CAAA;AAC/E,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,oBAAoB,KAAK,CAAA;AAAA,IAC9C;AAAA,EACF;AAEA,EAAA,eAAe,YAAA,CAAa,MAAA,GAA4B,EAAC,EAAG,OAAA,EAA+D;AACzH,IAAA,WAAA,CAAY,MAAA,CAAO,oBAAoB,IAAI,CAAA;AAC3C,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,MAAM,OAAA,CAAQ,IAAA,CAAK,QAAQ,OAAO,CAAA;AAChE,MAAA,WAAA,CAAY,MAAA,CAAO,UAAA,EAAY,QAAA,CAAS,KAAA,IAAS,EAAE,CAAA;AACnD,MAAA,WAAA,CAAY,MAAA,CAAO,gBAAA,EAAkB,QAAA,CAAS,MAAA,IAAU,IAAI,CAAA;AAC5D,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,0BAA0B,CAAC,CAAA;AAC/E,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,oBAAoB,KAAK,CAAA;AAAA,IAC9C;AAAA,EACF;AAEA,EAAA,eAAe,aAAA,CAAc,MAAA,GAA6B,EAAC,EAAG,OAAA,EAAgE;AAC5H,IAAA,WAAA,CAAY,MAAA,CAAO,qBAAqB,IAAI,CAAA;AAC5C,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,MAAM,QAAA,CAAS,IAAA,CAAK,QAAQ,OAAO,CAAA;AACjE,MAAA,WAAA,CAAY,MAAA,CAAO,WAAA,EAAa,QAAA,CAAS,KAAA,IAAS,EAAE,CAAA;AACpD,MAAA,WAAA,CAAY,MAAA,CAAO,iBAAA,EAAmB,QAAA,CAAS,MAAA,IAAU,IAAI,CAAA;AAC7D,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,2BAA2B,CAAC,CAAA;AAChF,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,qBAAqB,KAAK,CAAA;AAAA,IAC/C;AAAA,EACF;AAEA,EAAA,eAAe,gBAAA,CAAiB,QAA+B,OAAA,EAA0B;AACvF,IAAA,WAAA,CAAY,MAAA,CAAO,wBAAwB,IAAI,CAAA;AAC/C,IAAA,WAAA,CAAY,MAAA,CAAO,SAAS,IAAI,CAAA;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,MAAM,OAAA,CAAQ,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAC3E,MAAA,WAAA,CAAY,MAAA,CAAO,gBAAgB,QAAQ,CAAA;AAC3C,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,gBAAA,CAAiB,KAAA,EAAO,8BAA8B,CAAC,CAAA;AACnF,MAAA,MAAM,KAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,MAAA,CAAO,wBAAwB,KAAK,CAAA;AAAA,IAClD;AAAA,EACF;AAEA,EAAA,eAAe,UAAA,CAAW,OAAA,GAAgG,EAAC,EAAG;AAC5H,IAAA,IAAI,OAAA,CAAQ,MAAA,EAAQ,SAAA,CAAU,OAAA,CAAQ,MAAM,CAAA;AAC5C,IAAA,IAAI,OAAA,CAAQ,MAAA,EAAQ,SAAA,CAAU,OAAA,CAAQ,MAAM,CAAA;AAC5C,IAAA,MAAM,QAAA,CAAS,EAAE,MAAA,EAAQ,gBAAA,IAAoB,CAAA;AAC7C,IAAA,MAAM,OAAA,GAAiF;AAAA,MACrF,OAAA,EAAS,QAAQ,GAAA;AAAI,KACvB;AACA,IAAA,IAAI,OAAA,CAAQ,YAAA,EAAc,OAAA,CAAQ,IAAA,GAAO,MAAM,UAAA,EAAW;AAC1D,IAAA,IAAI,OAAA,CAAQ,YAAA,EAAc,OAAA,CAAQ,YAAA,GAAe,MAAM,eAAA,EAAgB;AACvE,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,uBAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,EAAW,gBAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,GAAA,EAAK;AAAA,MACH,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,CAAC,MAAA,EAAwB,OAAA,KAA6B,OAAO,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAAA,QAChG,WAAA,EAAa,CAAC,MAAA,EAA+B,OAAA,KAA6B,OAAO,GAAA,CAAI,IAAA,CAAK,WAAA,CAAY,MAAA,EAAQ,OAAO,CAAA;AAAA,QACrH,WAAA,EAAa;AAAA,OACf;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK,QAAA;AAAA,QACL,MAAA,EAAQ,CAAC,MAAA,EAA0B,OAAA,KAA6B,OAAO,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,MAAA,EAAQ,OAAO,CAAA;AAAA,QACtG,WAAA,EAAa;AAAA,OACf;AAAA,MACA,QAAA,EAAU,OAAO,GAAA,CAAI;AAAA,KACvB;AAAA,IACA,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,EAAS;AAAA,QACP,GAAA,EAAK,CAAC,MAAA,EAA0B,OAAA,KAA6B,OAAO,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA;AAAA,QACrG,IAAA,EAAM;AAAA,OACR;AAAA,MACA,OAAA,EAAS;AAAA,QACP,GAAA,EAAK,CAAC,MAAA,EAA0B,OAAA,KAA6B,OAAO,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA;AAAA,QACrG,IAAA,EAAM,YAAA;AAAA,QACN,aAAA,EAAe,CAAC,MAAA,EAAoC,OAAA,KAA6B,OAAO,KAAA,CAAM,OAAA,CAAQ,aAAA,CAAc,MAAA,EAAQ,OAAO,CAAA;AAAA,QACnI,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,QAAA,EAAU;AAAA,QACR,GAAA,EAAK,CAAC,MAAA,EAA2B,OAAA,KAA6B,OAAO,KAAA,CAAM,QAAA,CAAS,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA;AAAA,QACvG,IAAA,EAAM;AAAA,OACR;AAAA,MACA,KAAA,EAAO,OAAO,KAAA,CAAM;AAAA,KACtB;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA,EAAQ,WAAA;AAAA,MACR,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,IAAA,EAAM,QAAA;AAAA,QACN,UAAA;AAAA,QACA,kBAAA;AAAA,QACA,aAAA;AAAA,QACA,cAAA;AAAA,QACA,iBAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO,UAAA;AAAA,QACP,QAAA;AAAA,QACA,cAAA,CAAe,IAAA,EAAc,KAAA,GAA2C,EAAC,EAAG;AAC1E,UAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,UAAA,OAAO,WAAW,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,MAAM,CAAA;AAAA,QAClD,CAAA;AAAA,QACA,eAAA,CAAgB,KAAA,GAA2C,EAAC,EAAG;AAC7D,UAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AACnB,UAAA,OAAO,WAAW,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,MAAM,CAAA;AAAA,QAClD,CAAA;AAAA,QACA,qBAAqB,EAAA,EAAmB;AACtC,UAAA,WAAA,CAAY,MAAA,CAAO,+BAA+B,EAAE,CAAA;AAAA,QACtD,CAAA;AAAA,QACA,iBAAA;AAAA,QACA,UAAA,EAAY,aAAA;AAAA,QACZ,iBAAA,EAAmB,sBAAA;AAAA,QACnB,iBAAA,EAAmB;AAAA;AACrB,KACF;AAAA,IACA,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,QAAA,EAAU;AAAA,MACR,MAAM,MAAA,EAAqB;AACzB,QAAA,OAAO,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA;AAAA,MACrC,CAAA;AAAA,MACA,KAAA,EAAOF,gBAAsB,IAAI;AAAA,KACnC;AAAA,IACA,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,OAAO,MAAA,CAAO;AAAA,GAChB;AACF","file":"storefront-store.cjs","sourcesContent":["\nexport interface Block {\n id: string;\n key: string;\n type: string;\n properties: any;\n value: any;\n}\n\nexport interface Collection {\n id: string;\n blocks: Block[];\n entity: string;\n}\n\nexport interface CollectionEntry {\n id: string;\n collection_id: string;\n blocks: Block[];\n}\n\nexport function getBlockLabel(block: any): string {\n if (!block) return \"\";\n return block.key?.replace(/_/g, \" \").replace(/\\b\\w/g, (l: string) => l.toUpperCase()) ?? \"\";\n}\n\nexport function formatBlockValue(block: any): string {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n const value = block.value;\n\n switch (block.type) {\n case \"boolean\":\n return value ? \"Yes\" : \"No\";\n case \"number\":\n if (block.properties?.variant === \"DATE\" || block.properties?.variant === \"DATE_TIME\") {\n return new Date(value).toLocaleDateString();\n }\n return String(value);\n case \"relationship_entry\":\n case \"relationship_media\":\n if (value && typeof value === 'object') {\n return value.mime_type ? (value.name || value.id) : (value.title || value.name || value.id);\n }\n return String(value);\n default:\n return String(value);\n }\n}\n\nexport function prepareBlocksForSubmission(formData: any, blockTypes?: Record<string, string>): any[] {\n return Object.keys(formData)\n .filter((key) => formData[key] !== null && formData[key] !== undefined)\n .map((key) => ({\n key,\n value: (blockTypes?.[key] === 'list') && !Array.isArray(formData[key])\n ? [formData[key]]\n : formData[key],\n }));\n}\n\nexport function extractBlockValues(blocks: any[]): Record<string, any> {\n const values: Record<string, any> = {};\n blocks.forEach((block) => {\n values[block.key] = block.value ?? null;\n });\n return values;\n}\n\nexport const getBlockValue = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n return block?.value ?? null;\n};\n\nexport const getBlockTextValue = (block: any, locale: string = \"en\"): string => {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n \n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n if (typeof block.value === \"object\" && block.value !== null) {\n return block.value[locale] ?? block.value[\"en\"] ?? \"\";\n }\n }\n\n \n if (typeof block.value === \"string\") return block.value;\n\n return String(block.value ?? \"\");\n};\n\nexport const getBlockValues = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return [];\n\n \n if (block.type === \"list\" && Array.isArray(block.value)) {\n return block.value;\n }\n\n return [];\n};\n\nfunction unwrapBlock(block: any, locale: string) {\n if (!block?.type || block.value === undefined) return block;\n\n if (block.type === \"list\") {\n return block.value.map((obj: Record<string, any>) => {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(obj)) {\n parsed[k] = unwrapBlock(v, locale);\n }\n return parsed;\n });\n }\n\n if (block.type === \"map\") {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value || {})) {\n parsed[k] = unwrapBlock(v as any, locale);\n }\n return parsed;\n }\n\n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n return block.value?.[locale];\n }\n\n return block.value;\n}\n\nexport const getBlockObjectValues = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block || block.type !== \"list\" || !Array.isArray(block.value)) return [];\n\n return block.value.map((obj: Record<string, any>) => {\n if (!obj?.value || !Array.isArray(obj.value)) return {};\n return obj.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n });\n};\n\nexport const getBlockFromArray = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return {};\n\n if (block.type === \"list\" && Array.isArray(block.value)) {\n return block.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n }\n\n if (block.type === \"map\" && block.value && typeof block.value === \"object\") {\n const result: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value)) {\n result[k] = unwrapBlock(v as any, locale);\n }\n return result;\n }\n\n return { [block.key]: unwrapBlock(block, locale) };\n};\n\nexport const getImageUrl = (imageBlock: any, isBlock = true) => {\n if (!imageBlock) return null;\n\n if (imageBlock.type === \"relationship_media\") {\n const mediaValue = imageBlock.value;\n return mediaValue?.resolutions?.original?.url || mediaValue?.url || null;\n }\n\n if (isBlock) {\n if (typeof imageBlock === \"string\") return imageBlock;\n if (imageBlock.url) return imageBlock.url;\n }\n\n return imageBlock.resolutions?.original?.url || null;\n};\n\nexport const translateMap = (labels: any, lang: string) => {\n return labels?.[lang];\n};\n","import type {\n OrderCheckoutCompatibleItemInput,\n OrderCheckoutItemInput,\n OrderQuoteCompatibleItemInput,\n OrderQuoteItemInput,\n} from \"../types/api\";\n\nexport function normalizeOrderQuoteItems(\n items: OrderQuoteCompatibleItemInput[],\n): OrderQuoteItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n const type = (item as { type?: string }).type;\n return type === \"booking\" ? ({ ...item, type: \"service\" } as OrderQuoteItemInput) : item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n\nexport function normalizeOrderCheckoutItems(\n items: OrderCheckoutCompatibleItemInput[],\n): OrderCheckoutItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n const type = (item as { type?: string }).type;\n return type === \"booking\" ? ({ ...item, type: \"service\" } as OrderCheckoutItemInput) : item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n","import type { ApiConfig, CustomerSessionUpdater } from \"../index\";\nimport type {\n RequestOptions,\n GetNodeParams,\n GetNodesParams,\n GetNodeChildrenParams,\n GetFormParams,\n SubmitFormParams,\n GetTaxonomyParams,\n GetTaxonomyChildrenParams,\n GetProductParams,\n GetProductsParams,\n GetOrderParams,\n GetOrdersParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n GetServiceParams,\n GetServicesParams,\n FindServiceProvidersParams,\n GetProviderParams,\n GetProvidersParams,\n GetAudienceParams,\n GetAudiencesParams,\n SubscribeAudienceParams,\n GetAgentsParams,\n GetCurrentCartParams,\n GetCartParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n} from \"../types/api\";\nimport type {\n Node,\n Form,\n FormSubmission,\n Taxonomy,\n Audience,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n Service,\n Provider,\n Store,\n Location,\n Market,\n OrderQuote,\n Order,\n OrderCheckoutResult,\n Product,\n Agent,\n AgentChat,\n AgentChatMessage,\n Customer,\n CustomerDetail,\n Cart,\n PaginatedResponse,\n} from \"../types\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\nimport { normalizeOrderCheckoutItems } from \"../utils/orderItems\";\n\nexport type CustomerToken = {\n id: string;\n token: string;\n created_at: number;\n};\n\nexport type IdentifyResponse = {\n customer: Customer;\n token: CustomerToken;\n store: Store;\n market: Market | null;\n code_sent: boolean;\n};\n\nexport type VerifyResponse = CustomerToken;\ntype LogoutResponse = void;\ntype Country = {\n code: string;\n name: string;\n states: { code: string; name: string }[];\n};\ntype CountriesResponse = { items: Country[]; cursor: string | null };\n\nexport interface Activity {\n store_id: string;\n customer_id: string;\n type: string;\n payload: Record<string, unknown>;\n created_at: number;\n}\n\nexport interface TrackParams {\n type: string;\n payload?: Record<string, unknown>;\n}\n\nexport const COMMON_ACTIVITY_TYPES = [\n \"page_view\",\n \"product_view\",\n \"service_view\",\n \"provider_view\",\n \"cart_added\",\n \"cart_removed\",\n \"checkout_started\",\n \"purchase\",\n \"order_created\",\n \"signin\",\n \"signup\",\n \"verified_email\",\n \"search\",\n \"share\",\n \"wishlist_added\",\n] as const;\n\nexport type CommonActivityType = (typeof COMMON_ACTIVITY_TYPES)[number];\n\nexport const createActivityApi = (apiConfig: ApiConfig) => ({\n COMMON_ACTIVITY_TYPES,\n async track(params: TrackParams): Promise<void> {\n try {\n await apiConfig.httpClient.post<void>(\n `/v1/storefront/${apiConfig.storeId}/activities/track`,\n { type: params.type, payload: params.payload },\n );\n } catch {}\n },\n});\n\nexport const createStorefrontApi = (apiConfig: ApiConfig, updateCustomerSession: CustomerSessionUpdater) => {\n const base = (storeId = apiConfig.storeId) =>\n `/v1/storefront/${storeId}`;\n\n return {\n store: {\n getStore(options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.get<Store>(base(), options);\n },\n\n location: {\n getCountries(options?: RequestOptions): Promise<CountriesResponse> {\n return apiConfig.httpClient.get<CountriesResponse>(`/v1/platform/countries`, options);\n },\n\n getCountry(countryCode: string, options?: RequestOptions): Promise<Country> {\n return apiConfig.httpClient.get<Country>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n list(options?: RequestOptions): Promise<Location[]> {\n return apiConfig.httpClient.get<Location[]>(`${base()}/locations`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get<Location>(`${base()}/locations/${id}`, options);\n },\n },\n\n market: {\n list(options?: RequestOptions): Promise<Market[]> {\n return apiConfig.httpClient.get<Market[]>(`${base()}/markets`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get<Market>(`${base()}/markets/${id}`, options);\n },\n },\n },\n\n cms: {\n node: {\n async get(params: GetNodeParams, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetNodeParams requires id, slug, or key\");\n }\n\n const response = await apiConfig.httpClient.get<Node>(\n `${base(store_id)}/nodes/${identifier}`,\n options,\n );\n\n return {\n ...response,\n getBlock(key: string) {\n return getBlockFromArray(response, key, apiConfig.locale);\n },\n getBlockValues(key: string) {\n return getBlockObjectValues(response, key, apiConfig.locale);\n },\n getImage(key: string) {\n const block = getBlockFromArray(response, key, apiConfig.locale);\n return getImageUrl(block, true);\n },\n };\n },\n\n find(params: GetNodesParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(`${base(store_id)}/nodes`, {\n ...options,\n params: queryParams,\n });\n },\n\n getChildren(params: GetNodeChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { id, store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(`${base(store_id)}/nodes/${id}/children`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n form: {\n get(params: GetFormParams, options?: RequestOptions): Promise<Form> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Form>(\n `${base(store_id)}/forms/${identifier}`,\n options,\n );\n },\n\n submit(params: SubmitFormParams, options?: RequestOptions): Promise<FormSubmission> {\n const { store_id, form_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n if (!form_id) {\n throw new Error(\"SubmitFormParams requires form_id\");\n }\n\n return apiConfig.httpClient.post<FormSubmission>(\n `${base(target_store_id)}/forms/${form_id}/submissions`,\n { ...payload, form_id, store_id: target_store_id },\n options,\n );\n },\n },\n\n taxonomy: {\n get(params: GetTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Taxonomy>(\n `${base(store_id)}/taxonomies/${identifier}`,\n options,\n );\n },\n\n getChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `${base(store_id)}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n\n eshop: {\n product: {\n get(params: GetProductParams, options?: RequestOptions): Promise<Product> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Product>(\n `${base(store_id)}/products/${identifier}`,\n options,\n );\n },\n\n find(params: GetProductsParams, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Product>>(`${base(store_id)}/products`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n cart: {\n current(params: GetCurrentCartParams = {}, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _store_id, ...payload } = params;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/current`,\n { ...payload, store_id, market: payload.market || apiConfig.market },\n options,\n );\n },\n\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Cart>(`${base(store_id)}/carts/${params.id}`, {\n ...options,\n params: params.token ? { token: params.token } : options?.params,\n });\n },\n\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, items, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Cart>(\n `${base(target)}/carts/${params.id}`,\n {\n ...payload,\n store_id: target,\n ...(items ? { items: normalizeOrderCheckoutItems(items) } : {}),\n },\n options,\n );\n },\n\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, item, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items`,\n {\n ...payload,\n store_id: target,\n item: normalizeOrderCheckoutItems([item])[0],\n },\n options,\n );\n },\n\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items/remove`,\n { ...payload, store_id: target },\n options,\n );\n },\n\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/${params.id}/clear`,\n { id: params.id, store_id },\n options,\n );\n },\n\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderQuote>(\n `${base(store_id)}/carts/${params.id}/quote`,\n { id: params.id, store_id },\n options,\n );\n },\n\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderCheckoutResult>(\n `${base(store_id)}/carts/${params.id}/checkout`,\n {\n id: params.id,\n store_id,\n payment_method_id: params.payment_method_id,\n },\n options,\n );\n },\n },\n\n order: {\n get(params: GetOrderParams, options?: RequestOptions): Promise<Order> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Order>(\n `${base(store_id)}/orders/${params.id}`,\n options,\n );\n },\n\n find(params: GetOrdersParams, options?: RequestOptions): Promise<PaginatedResponse<Order>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Order>>(`${base(store_id)}/orders`, {\n ...options,\n params: queryParams,\n });\n },\n\n },\n\n service: {\n get(params: GetServiceParams, options?: RequestOptions): Promise<Service> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Service>(\n `${base(store_id)}/services/${identifier}`,\n options,\n );\n },\n\n find(params: GetServicesParams, options?: RequestOptions): Promise<PaginatedResponse<Service>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Service>>(`${base(store_id)}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n findProviders(params: FindServiceProvidersParams, options?: RequestOptions): Promise<Provider[]> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<Provider[]>(`${base(store_id)}/service-providers`, {\n ...options,\n params: queryParams,\n });\n },\n\n getAvailability(params: GetAvailabilityParams, options?: RequestOptions): Promise<AvailabilityResponse> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `${base(target_store_id)}/services/availability`,\n { ...options, params: queryParams },\n );\n },\n },\n\n provider: {\n get(params: GetProviderParams, options?: RequestOptions): Promise<Provider> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Provider>(\n `${base(store_id)}/providers/${identifier}`,\n options,\n );\n },\n\n find(params: GetProvidersParams, options?: RequestOptions): Promise<PaginatedResponse<Provider>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Provider>>(`${base(store_id)}/providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n crm: {\n customer: {\n async identify(\n params?: { email?: string; verify?: boolean; market?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<IdentifyResponse>(\n `${base(store_id)}/customers/identify`,\n {\n store_id,\n market: params?.market || apiConfig.market || null,\n email: params?.email,\n verify: params?.verify ?? false,\n },\n options,\n );\n if (result?.token?.token) {\n updateCustomerSession(() => ({\n access_token: result.token.token,\n customer: result.customer,\n store: result.store,\n market: result.market,\n }));\n }\n return result;\n },\n\n async verify(\n params: { code: string },\n options?: RequestOptions,\n ): Promise<VerifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<VerifyResponse>(\n `${base(store_id)}/customers/verify`,\n { store_id, code: params.code },\n options,\n );\n if (result?.token) {\n updateCustomerSession((prev) =>\n prev ? { ...prev, access_token: result.token } : null,\n );\n }\n return result;\n },\n\n async logout(options?: RequestOptions): Promise<LogoutResponse> {\n const store_id = apiConfig.storeId;\n try {\n await apiConfig.httpClient.post<void>(\n `${base(store_id)}/customers/logout`,\n {},\n options,\n );\n } finally {\n updateCustomerSession(() => null);\n }\n },\n\n getMe(options?: RequestOptions): Promise<CustomerDetail> {\n return apiConfig.httpClient.get<CustomerDetail>(`${base()}/customers/me`, options);\n },\n },\n\n audience: {\n get(params: GetAudienceParams, options?: RequestOptions): Promise<Audience> {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${apiConfig.storeId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Audience>(\n `${base(apiConfig.storeId)}/audiences/${identifier}`,\n options,\n );\n },\n\n find(params: GetAudiencesParams, options?: RequestOptions): Promise<PaginatedResponse<Audience>> {\n return apiConfig.httpClient.get<PaginatedResponse<Audience>>(`${base()}/audiences`, {\n ...options,\n params,\n });\n },\n\n subscribe(params: SubscribeAudienceParams, options?: RequestOptions): Promise<AudienceSubscribeResponse> {\n return apiConfig.httpClient.post<AudienceSubscribeResponse>(\n `${base()}/audiences/${params.id}/subscribe`,\n {\n customer_id: params.customer_id,\n price_id: params.price_id,\n success_url: params.success_url,\n cancel_url: params.cancel_url,\n confirm_url: params.confirm_url,\n },\n options,\n );\n },\n\n checkAccess(params: { id: string }, options?: RequestOptions): Promise<AudienceAccessResponse> {\n return apiConfig.httpClient.get<AudienceAccessResponse>(\n `${base()}/audiences/${params.id}/access`,\n options,\n );\n },\n\n unsubscribe(token: string, options?: RequestOptions): Promise<{ unsubscribed: boolean }> {\n return apiConfig.httpClient.get<{ unsubscribed: boolean }>(`${base()}/audiences/unsubscribe`, {\n ...options,\n params: { token },\n });\n },\n\n confirm(token: string, options?: RequestOptions): Promise<{ confirmed: boolean }> {\n return apiConfig.httpClient.get<{ confirmed: boolean }>(`${base()}/audiences/confirm`, {\n ...options,\n params: { token },\n });\n },\n },\n },\n\n activity: createActivityApi(apiConfig),\n\n automation: {\n agent: {\n getAgents(params?: GetAgentsParams, options?: RequestOptions): Promise<PaginatedResponse<Agent>> {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = { ...(params || {}) };\n delete queryParams.store_id;\n return apiConfig.httpClient.get<PaginatedResponse<Agent>>(`${base(store_id)}/agents`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n getAgent(params: { id: string; store_id?: string }, options?: RequestOptions): Promise<Agent> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Agent>(\n `${base(store_id)}/agents/${params.id}`,\n options,\n );\n },\n\n sendMessage(\n params: { id: string; message: string; chat_id?: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChatMessage> {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, unknown> = { message: params.message };\n if (params.chat_id) body.chat_id = params.chat_id;\n return apiConfig.httpClient.post<AgentChatMessage>(\n `${base(store_id)}/agents/${params.id}/chats/messages`,\n body,\n options,\n );\n },\n\n getChat(\n params: { id: string; chat_id: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChat> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AgentChat>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}`,\n options,\n );\n },\n\n getChatMessages(\n params: { id: string; chat_id: string; limit?: number; store_id?: string },\n options?: RequestOptions,\n ): Promise<PaginatedResponse<AgentChatMessage>> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, string> = {};\n if (params.limit) queryParams.limit = String(params.limit);\n return apiConfig.httpClient.get<PaginatedResponse<AgentChatMessage>>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/messages`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n rateChat(\n params: { id: string; chat_id: string; rating: number; comment?: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChat> {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, unknown> = { rating: params.rating };\n if (params.comment) body.comment = params.comment;\n return apiConfig.httpClient.post<AgentChat>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/rate`,\n body,\n options,\n );\n },\n },\n },\n };\n};\n","import type {\n AddCartItemParams,\n CheckoutCartParams,\n ClearCartParams,\n GetCartParams,\n GetCurrentCartParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"./types/api\";\nimport type { Cart, OrderCheckoutResult, OrderQuote } from \"./types\";\n\nexport interface CartApi {\n current(params?: GetCurrentCartParams, options?: RequestOptions): Promise<Cart>;\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart>;\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart>;\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nexport interface CartControllerState {\n cart: Cart | null;\n quote: OrderQuote | null;\n checkoutResult: OrderCheckoutResult | null;\n loading: boolean;\n initialized: boolean;\n error: unknown;\n}\n\nexport type CartControllerListener = (state: CartControllerState) => void;\n\nexport type CartControllerInitParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerRefreshParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerUpdateParams = Omit<UpdateCartParams, \"id\"> & { id?: string };\nexport type CartControllerAddItemParams = Omit<AddCartItemParams, \"id\"> & { id?: string };\nexport type CartControllerRemoveItemParams = Omit<RemoveCartItemParams, \"id\"> & { id?: string };\nexport type CartControllerClearParams = Omit<ClearCartParams, \"id\"> & { id?: string };\nexport type CartControllerQuoteParams = Omit<QuoteCartParams, \"id\"> & { id?: string };\nexport type CartControllerCheckoutParams = Omit<CheckoutCartParams, \"id\"> & { id?: string };\n\nexport interface CartController {\n subscribe(listener: CartControllerListener): () => void;\n getState(): CartControllerState;\n init(params?: CartControllerInitParams, options?: RequestOptions): Promise<Cart>;\n refresh(params?: CartControllerRefreshParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: CartControllerAddItemParams, options?: RequestOptions): Promise<Cart>;\n update(params: CartControllerUpdateParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: CartControllerRemoveItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params?: CartControllerClearParams, options?: RequestOptions): Promise<Cart>;\n quote(params?: CartControllerQuoteParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params?: CartControllerCheckoutParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nfunction hasCartId(params: CartControllerInitParams): params is GetCartParams {\n return \"id\" in params && typeof params.id === \"string\" && params.id.length > 0;\n}\n\nexport function createCartController(cartApi: CartApi): CartController {\n const listeners = new Set<CartControllerListener>();\n let state: CartControllerState = {\n cart: null,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: false,\n error: null,\n };\n\n function emit(): void {\n for (const listener of listeners) {\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n }\n }\n\n function setState(patch: Partial<CartControllerState>): CartControllerState {\n state = { ...state, ...patch };\n emit();\n return state;\n }\n\n function currentCartId(id?: string): string {\n const cartId = id || state.cart?.id;\n if (!cartId) {\n throw new Error(\"Cart has not been initialized and no cart id was provided\");\n }\n return cartId;\n }\n\n async function runCartMutation(operation: () => Promise<Cart>): Promise<Cart> {\n setState({ loading: true, error: null });\n try {\n const cart = await operation();\n setState({\n cart,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: true,\n error: null,\n });\n return cart;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n }\n\n return {\n subscribe(listener) {\n listeners.add(listener);\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n return () => {\n listeners.delete(listener);\n };\n },\n\n getState() {\n return state;\n },\n\n init(params = {}, options) {\n if (state.initialized && state.cart) {\n return Promise.resolve(state.cart);\n }\n return this.refresh(params, options);\n },\n\n refresh(params = {}, options) {\n return runCartMutation(() =>\n hasCartId(params)\n ? cartApi.get(params, options)\n : cartApi.current(params, options),\n );\n },\n\n addItem(params, options) {\n return runCartMutation(() =>\n cartApi.addItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n update(params, options) {\n return runCartMutation(() =>\n cartApi.update({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n removeItem(params, options) {\n return runCartMutation(() =>\n cartApi.removeItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n clear(params = {}, options) {\n return runCartMutation(() =>\n cartApi.clear({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n async quote(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const quote = await cartApi.quote(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ quote, loading: false, error: null });\n return quote;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n\n async checkout(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const checkoutResult = await cartApi.checkout(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ checkoutResult, loading: false, error: null });\n return checkoutResult;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n };\n}\n","\nexport const ERROR_CODES = {\n \n \"GENERAL.001\": \"GENERAL.BAD_REQUEST\",\n \"GENERAL.002\": \"GENERAL.VALIDATION_ERROR\",\n \"GENERAL.003\": \"GENERAL.FORBIDDEN_ERROR\",\n \"GENERAL.004\": \"GENERAL.INTERNAL_SERVER_ERROR\",\n \"GENERAL.005\": \"GENERAL.UNAUTHORIZED\",\n \"GENERAL.006\": \"GENERAL.UNAUTHENTICATED\",\n\n \"GOOGLE.001\": \"GOOGLE.INVALID_ORIGIN_URI\",\n \"GOOGLE.002\": \"GOOGLE.INVALID_REDIRECT_URI\",\n \"GOOGLE.003\": \"GOOGLE.FAILED_TO_CALL_API\",\n \"GOOGLE.004\": \"GOOGLE.FAILED_LOGIN\",\n \"GOOGLE.005\": \"GOOGLE.FAILED_LOGOUT\",\n \"GOOGLE.006\": \"GOOGLE.FAILED_REFRESH_TOKEN\",\n \"GOOGLE.007\": \"GOOGLE.INVALID_PROVIDER_PASSED\",\n\n \"USER.001\": \"USER.NOT_FOUND\",\n \"USER.002\": \"USER.FAILED_TO_CREATE\",\n \"USER.003\": \"USER.FAILED_TO_UPDATE\",\n \"USER.004\": \"USER.FAILED_TO_DELETE\",\n \"USER.005\": \"USER.EMAIL_EXISTS\",\n \"USER.006\": \"USER.FAILED_TO_GET_UPLOAD_URL\",\n\n \"STORE.001\": \"STORE.NOT_FOUND\",\n \"STORE.002\": \"STORE.FAILED_TO_CREATE\",\n \"STORE.003\": \"STORE.FAILED_TO_UPDATE\",\n \"STORE.004\": \"STORE.FAILED_TO_DELETE\",\n \"STORE.005\": \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n \"STORE.006\": \"STORE.NAME_REQUIRED\",\n \"STORE.007\": \"STORE.STORE_ID_REQUIRED\",\n \"STORE.010\": \"STORE.DESCRIPTION_REQUIRED\",\n \"STORE.011\": \"STORE.SLUG_INVALID\",\n\n \"PROVIDER.001\": \"PROVIDER.NOT_FOUND\",\n \"PROVIDER.002\": \"PROVIDER.FAILED_TO_CREATE\",\n \"PROVIDER.003\": \"PROVIDER.FAILED_TO_UPDATE\",\n \"PROVIDER.004\": \"PROVIDER.FAILED_TO_DELETE\",\n \"PROVIDER.005\": \"PROVIDER.FAILED_TO_GET_UPLOAD_URL\",\n \"PROVIDER.006\": \"PROVIDER.NAME_REQUIRED\",\n \"PROVIDER.007\": \"PROVIDER.STORE_ID_REQUIRED\",\n \"PROVIDER.008\": \"PROVIDER.DESCRIPTION_REQUIRED\",\n};\n\nexport const ERROR_CONSTANTS = {\n GENERAL: {\n BAD_REQUEST: \"GENERAL.BAD_REQUEST\",\n VALIDATION_ERROR: \"GENERAL.VALIDATION_ERROR\",\n FORBIDDEN_ERROR: \"GENERAL.FORBIDDEN_ERROR\",\n INTERNAL_SERVER_ERROR: \"GENERAL.INTERNAL_SERVER_ERROR\",\n UNAUTHORIZED: \"GENERAL.UNAUTHORIZED\",\n UNAUTHENTICATED: \"GENERAL.UNAUTHENTICATED\",\n },\n USER: {\n NOT_FOUND: \"USER.NOT_FOUND\",\n FAILED_TO_CREATE: \"USER.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"USER.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"USER.FAILED_TO_DELETE\",\n EMAIL_EXISTS: \"USER.EMAIL_EXISTS\",\n FAILED_TO_GET_UPLOAD_URL: \"USER.FAILED_TO_GET_UPLOAD_URL\",\n },\n STORE: {\n NOT_FOUND: \"STORE.NOT_FOUND\",\n FAILED_TO_CREATE: \"STORE.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"STORE.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"STORE.FAILED_TO_DELETE\",\n FAILED_TO_GET_UPLOAD_URL: \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n NAME_REQUIRED: \"STORE.NAME_REQUIRED\",\n STORE_ID_REQUIRED: \"STORE.STORE_ID_REQUIRED\",\n DESCRIPTION_REQUIRED: \"STORE.DESCRIPTION_REQUIRED\",\n SLUG_INVALID: \"STORE.SLUG_INVALID\",\n },\n};\n\nexport type ServerError = {\n message: string;\n error: string;\n statusCode: number;\n validationErrors: {\n field: string;\n error: string;\n }[];\n};\n\nexport type ValidationError = {\n field: string;\n error: string;\n};\n\nexport type RequestError = {\n validationErrors: ValidationError[];\n};\n\nexport function getErrorMessage(code: string): string {\n return ERROR_CODES[code as keyof typeof ERROR_CODES] || code;\n}\n\nexport function isErrorCode(code: string): boolean {\n return code in ERROR_CODES;\n}\n\nexport const transformErrors = (zodError: any): ValidationError[] => {\n const customErrors: ValidationError[] = [];\n\n if (!zodError.issues) return customErrors;\n\n zodError.issues.forEach((issue: any) => {\n const field = issue.path.join(\".\");\n const error = issue.message;\n\n if (\n !customErrors.some(\n (customError) =>\n customError.field === field && customError.error === error\n )\n ) {\n customErrors.push({ field, error });\n }\n });\n\n return customErrors;\n};\n\nexport const convertServerErrorToRequestError = (\n serverError: ServerError,\n renameRules?: { [key: string]: string }\n): RequestError => {\n const validationErrors = serverError?.validationErrors ?? [];\n\n return {\n ...serverError,\n validationErrors: validationErrors.map((validationError) => {\n const field =\n renameRules && renameRules[validationError.field]\n ? renameRules[validationError.field]\n : validationError.field;\n\n return {\n field: field,\n error: validationError.error || \"GENERAL.VALIDATION_ERROR\",\n };\n }),\n };\n};\n\nexport const errors = ERROR_CONSTANTS;\nexport default ERROR_CODES;\n","\nexport interface QueryParams {\n [key: string]: string | number | boolean | string[] | number[] | null | undefined;\n}\n\nexport function buildQueryString(params: QueryParams): string {\n const queryParts: string[] = [];\n \n Object.entries(params).forEach(([key, value]) => {\n \n if (value === null || value === undefined) {\n return;\n }\n \n if (Array.isArray(value)) {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\n }\n \n else if (typeof value === 'string') {\n queryParts.push(`${key}=${encodeURIComponent(value)}`);\n }\n \n else if (typeof value === 'number' || typeof value === 'boolean') {\n queryParts.push(`${key}=${value}`);\n }\n \n else if (typeof value === 'object') {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\n }\n });\n \n return queryParts.length > 0 ? `?${queryParts.join('&')}` : '';\n}\n\nexport function appendQueryString(url: string, params: QueryParams): string {\n const queryString = buildQueryString(params);\n return queryString ? `${url}${queryString}` : url;\n}\n","import {\n\tconvertServerErrorToRequestError,\n\ttype ServerError\n} from '../utils/errors';\nimport { buildQueryString, type QueryParams } from '../utils/queryParams';\n\nexport interface TokenSet {\n\taccess_token: string;\n\trefresh_token?: string;\n\taccess_expires_at?: number;\n}\n\nexport interface AuthStorage {\n\tgetTokens(): TokenSet | null;\n\tonTokensRefreshed(tokens: TokenSet): void;\n\tonForcedLogout(): void;\n}\n\nexport interface RequestSuccessContext<T = unknown> {\n\tdata: T;\n\tmethod: string;\n\turl: string;\n\tstatus: number;\n\trequest?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n}\n\nexport interface RequestErrorContext {\n\terror: unknown;\n\tmethod: string;\n\turl: string;\n\tstatus?: number;\n\trequest?: unknown;\n\tresponse?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n\taborted?: boolean;\n}\n\nexport interface RequestOptions<T = unknown> {\n\theaders?: Record<string, string>;\n\tparams?: QueryParams | Record<string, any>;\n\ttransformRequest?: (data: unknown) => unknown;\n\tonSuccess?: (ctx: RequestSuccessContext<T>) => void | Promise<void>;\n\tonError?: (ctx: RequestErrorContext) => void | Promise<void>;\n}\n\nexport interface HttpClient {\n\tget<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n\tpost<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tput<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tpatch<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tdelete<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\tstoreId: string;\n\tauthStorage: AuthStorage;\n\trefreshPath?: string | (() => string);\n\tnavigate?: (path: string) => void;\n\tloginFallbackPath?: string;\n}\n\nexport function createHttpClient(cfg: HttpClientConfig): HttpClient {\n\tconst { authStorage } = cfg;\n\tlet refreshPromise: Promise<void> | null = null;\n\n\tfunction getRefreshEndpoint() {\n\t\tconst refreshPath = typeof cfg.refreshPath === \"function\"\n\t\t\t? cfg.refreshPath()\n\t\t\t: cfg.refreshPath || '/v1/auth/refresh';\n\t\treturn `${cfg.baseUrl}${refreshPath}`;\n\t}\n\n\tasync function ensureFreshToken() {\n\t\tif (refreshPromise) {\n\t\t\treturn refreshPromise;\n\t\t}\n\n\t\trefreshPromise = (async () => {\n\t\t\tconst tokens = authStorage.getTokens();\n\t\t\tconst refresh_token = tokens?.refresh_token;\n\t\t\tif (!refresh_token) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('No refresh token available');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst refRes = await fetch(getRefreshEndpoint(), {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Accept: 'application/json', 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ refresh_token })\n\t\t\t});\n\n\t\t\tif (!refRes.ok) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('Token refresh failed');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst data = await refRes.json();\n\t\t\tauthStorage.onTokensRefreshed(data);\n\t\t})().finally(() => {\n\t\t\trefreshPromise = null;\n\t\t});\n\n\t\treturn refreshPromise;\n\t}\n\n\tasync function request<T>(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\toptions?: RequestOptions<T> & { _retried?: boolean }\n\t): Promise<T> {\n\t\tif (options?.transformRequest) {\n\t\t\tbody = options.transformRequest(body);\n\t\t}\n\n\t\tconst headers: Record<string, string> = {\n\t\t\tAccept: 'application/json',\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...(options?.headers || {})\n\t\t};\n\n\t\tlet tokens = authStorage.getTokens();\n\t\tconst nowSec = Date.now() / 1000;\n\t\tif (tokens?.access_expires_at && nowSec > tokens.access_expires_at) {\n\t\t\tawait ensureFreshToken();\n\t\t\ttokens = authStorage.getTokens();\n\t\t}\n\n\t\tif (tokens?.access_token) {\n\t\t\theaders['Authorization'] = `Bearer ${tokens.access_token}`;\n\t\t}\n\n\t\tconst finalPath = options?.params ? path + buildQueryString(options.params as QueryParams) : path;\n\n\t\tconst fetchOpts: any = { method, headers };\n\t\tif (!['GET', 'DELETE'].includes(method) && body !== undefined) {\n\t\t\tfetchOpts.body = JSON.stringify(body);\n\t\t}\n\n\t\tconst fullUrl = `${cfg.baseUrl}${finalPath}`;\n\t\tlet res: Response;\n\t\tlet data: any;\n\t\tconst startedAt = Date.now();\n\n\t\ttry {\n\t\t\tres = await fetch(fullUrl, fetchOpts);\n\t\t} catch (error) {\n\t\t\tconst err: any = new Error(error instanceof Error ? error.message : 'Network request failed');\n\t\t\terr.name = 'NetworkError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, aborted: false })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (res.status === 401 && !options?.['_retried']) {\n\t\t\ttry {\n\t\t\t\tawait ensureFreshToken();\n\t\t\t\tconst refreshed = authStorage.getTokens();\n\t\t\t\tif (refreshed?.access_token) {\n\t\t\t\t\theaders['Authorization'] = `Bearer ${refreshed.access_token}`;\n\t\t\t\t\tfetchOpts.headers = headers;\n\t\t\t\t}\n\t\t\t\treturn request<T>(method, path, body, { ...options, _retried: true });\n\t\t\t} catch (refreshError) {\n\t\t\t\tthrow refreshError;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst contentLength = res.headers.get('content-length');\n\t\t\tconst contentType = res.headers.get('content-type');\n\t\t\tif (res.status === 204 || contentLength === '0' || !contentType?.includes('application/json')) {\n\t\t\t\tdata = {};\n\t\t\t} else {\n\t\t\t\tdata = await res.json();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst err: any = new Error('Failed to parse response');\n\t\t\terr.name = 'ParseError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\terr.status = res.status;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, status: res.status })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (!res.ok) {\n\t\t\tconst serverErr: ServerError = data;\n\t\t\tconst reqErr = convertServerErrorToRequestError(serverErr);\n\t\t\tconst err: any = new Error(serverErr.message || 'Request failed');\n\t\t\terr.name = 'ApiError';\n\t\t\terr.statusCode = serverErr.statusCode || res.status;\n\t\t\terr.validationErrors = reqErr.validationErrors;\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tif (requestId) err.requestId = requestId;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({\n\t\t\t\t\t\terror: err,\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\turl: fullUrl,\n\t\t\t\t\t\tstatus: res.status,\n\t\t\t\t\t\tresponse: serverErr,\n\t\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t\t})\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (options?.onSuccess && method !== 'GET') {\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tPromise.resolve(\n\t\t\t\toptions.onSuccess({\n\t\t\t\t\tdata: data as T,\n\t\t\t\t\tmethod,\n\t\t\t\t\turl: fullUrl,\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t})\n\t\t\t).catch(() => {});\n\t\t}\n\t\treturn data as T;\n\t}\n\n\treturn {\n\t\tget: <T>(path: string, opts?: RequestOptions<T>) => request<T>('GET', path, undefined, opts),\n\t\tpost: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('POST', path, body, opts),\n\t\tput: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PUT', path, body, opts),\n\t\tpatch: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PATCH', path, body, opts),\n\t\tdelete: <T>(path: string, opts?: RequestOptions<T>) => request<T>('DELETE', path, undefined, opts)\n\t};\n}\n","import type { OrderPayment, Price } from '../types';\n\ntype AnyPayment = Pick<OrderPayment, 'total' | 'currency'>;\n\nfunction formatCurrency(amount: number, currencyCode: string, locale: string = 'en'): string {\n if (!currencyCode) return '';\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode.toUpperCase(),\n }).format(amount);\n}\n\nfunction getMinorUnits(currency: string): number {\n try {\n const formatter = new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n });\n const parts = formatter.formatToParts(1.11);\n const fractionPart = parts.find(p => p.type === 'fraction');\n return fractionPart?.value.length ?? 2;\n } catch {\n return 2;\n }\n}\n\nexport function convertToMajor(minorAmount: number, currency: string): number {\n const units = getMinorUnits(currency);\n return minorAmount / Math.pow(10, units);\n}\n\nexport function convertToMinor(majorAmount: number, currency: string): number {\n const units = getMinorUnits(currency);\n return Math.round(majorAmount * Math.pow(10, units));\n}\n\nexport function getCurrencySymbol(currency: string): string {\n try {\n return new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n currencyDisplay: 'narrowSymbol'\n }).formatToParts(0).find(p => p.type === 'currency')?.value || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function getCurrencyName(currency: string): string {\n try {\n return new Intl.DisplayNames(['en'], { type: 'currency' }).of(currency.toUpperCase()) || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function formatMinor(amountMinor: number, currency: string): string {\n if (!currency) return '';\n return formatCurrency(convertToMajor(amountMinor, currency), currency);\n}\n\nexport function formatPayment(payment: AnyPayment): string {\n return formatMinor(payment.total, payment.currency);\n}\n\nexport function formatPrice(prices: Price[], marketId?: string): string {\n if (!prices || prices.length === 0) return '';\n\n const price = marketId\n ? prices.find(p => p.market === marketId) || prices[0]\n : prices[0];\n\n if (!price) return '';\n\n return formatMinor(price.amount, price.currency);\n}\n\nexport function getPriceAmount(prices: Price[], marketId: string): number {\n if (!prices || prices.length === 0) return 0;\n const price = prices.find(p => p.market === marketId) || prices[0];\n return price?.amount || 0;\n}\n","\nexport interface ValidationResult {\n isValid: boolean;\n error?: string;\n}\n\nexport function validatePhoneNumber(phone: string): ValidationResult {\n if (!phone) {\n return { isValid: false, error: 'Phone number is required' };\n }\n \n const cleaned = phone.replace(/\\D/g, '');\n \n if (cleaned.length < 8) {\n return { isValid: false, error: 'Phone number is too short' };\n }\n \n if (cleaned.length > 15) {\n return { isValid: false, error: 'Phone number is too long' };\n }\n \n return { isValid: true };\n}\n\nexport function validateEmail(email: string): ValidationResult {\n if (!email) {\n return { isValid: false, error: 'Email is required' };\n }\n \n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n \n if (!emailRegex.test(email)) {\n return { isValid: false, error: 'Please enter a valid email address' };\n }\n \n return { isValid: true };\n}\n\nexport function validateVerificationCode(code: string): ValidationResult {\n if (!code) {\n return { isValid: false, error: 'Verification code is required' };\n }\n \n const cleaned = code.replace(/\\D/g, '');\n \n if (cleaned.length !== 4) {\n return { isValid: false, error: 'Please enter a 4-digit verification code' };\n }\n \n return { isValid: true };\n}\n\nexport function validateRequired(value: any, fieldName: string = 'This field'): ValidationResult {\n if (value === null || value === undefined || value === '') {\n return { isValid: false, error: `${fieldName} is required` };\n }\n \n return { isValid: true };\n}\n","\nexport const tzGroups = [\n {\n label: \"US\",\n zones: [\n { label: \"Eastern Time\", value: \"America/New_York\" },\n { label: \"Central Time\", value: \"America/Chicago\" },\n { label: \"Mountain Time\", value: \"America/Denver\" },\n { label: \"Pacific Time\", value: \"America/Los_Angeles\" },\n ],\n },\n {\n label: \"Europe\",\n zones: [\n { label: \"London\", value: \"Europe/London\" },\n { label: \"Paris\", value: \"Europe/Paris\" },\n { label: \"Berlin\", value: \"Europe/Berlin\" },\n { label: \"Rome\", value: \"Europe/Rome\" },\n ],\n },\n {\n label: \"Asia\",\n zones: [\n { label: \"Tokyo\", value: \"Asia/Tokyo\" },\n { label: \"Shanghai\", value: \"Asia/Shanghai\" },\n { label: \"Mumbai\", value: \"Asia/Kolkata\" },\n { label: \"Dubai\", value: \"Asia/Dubai\" },\n ],\n },\n];\n\nexport function findTimeZone(groups: typeof tzGroups): string {\n try {\n const detected = Intl.DateTimeFormat().resolvedOptions().timeZone;\n \n for (const group of groups) {\n for (const zone of group.zones) {\n if (zone.value === detected) {\n return detected;\n }\n }\n }\n \n return \"UTC\";\n } catch (e) {\n \n return \"UTC\";\n }\n}\n","\nconst locales = ['en', 'sr-latn'] as const;\nconst localeMap: Record<typeof locales[number], string> = {\n\t'en': 'en-US',\n\t'sr-latn': 'sr-RS'\n};\n\nexport function slugify(text: string): string {\n\treturn text\n\t\t.toString()\n\t\t.toLowerCase()\n\t\t.replace(/\\s+/g, \"-\")\n\t\t.replace(/[^\\w-]+/g, \"\")\n\t\t.replace(/--+/g, \"-\")\n\t\t.replace(/^-+/, \"\")\n\t\t.replace(/-+$/, \"\");\n}\n\nexport function humanize(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn (\n\t\tslugifiedText\n\t\t\t.replace(/-/g, \" \")\n\t\t\t\n\t\t\t.replace(\n\t\t\t\t\n\t\t\t\t/\\w\\S*/g,\n\t\t\t\t(w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase(),\n\t\t\t)\n\t);\n}\n\nexport function categorify(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn slugifiedText\n\t\t.replace(/-/g, \" \")\n\t\t.toUpperCase();\n}\n\nexport function formatDate(date: string | number | Date, locale: (typeof locales)[number]): string {\n\tlet localeString = \"en-US\";\n\n\tif (locales.includes(locale)) {\n\t\tlocaleString = localeMap[locale];\n\t}\n\n\treturn new Date(date).toLocaleDateString(localeString, {\n\t\ttimeZone: \"UTC\",\n\t\tyear: \"numeric\",\n\t\tmonth: \"short\",\n\t\tday: \"numeric\",\n\t});\n}\n","import { getImageUrl } from \"./blocks\";\n\nexport async function fetchSvgContent(mediaObject: any): Promise<string | null> {\n\tif (!mediaObject) return null;\n\n\tconst svgUrl = getImageUrl(mediaObject, false);\n\n\ttry {\n\t\tconst response = await fetch(svgUrl);\n\n\t\tif (!response.ok) {\n\t\t\tconsole.error(`Failed to fetch SVG: ${response.status} ${response.statusText}`);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst svgContent = await response.text();\n\t\treturn svgContent;\n\t} catch (error) {\n\t\tconsole.error(\"Error fetching SVG:\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function getSvgContentForAstro(mediaObject: any): Promise<string> {\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\t\treturn svgContent || \"\";\n\t} catch (error) {\n\t\tconsole.error(\"Error getting SVG content for Astro:\", error);\n\t\treturn \"\";\n\t}\n}\n\nexport async function injectSvgIntoElement(\n\tmediaObject: any,\n\ttargetElement: HTMLElement,\n\tclassName?: string,\n): Promise<void> {\n\tif (!targetElement) return;\n\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\n\t\tif (svgContent) {\n\t\t\ttargetElement.innerHTML = svgContent;\n\n\t\t\tif (className) {\n\t\t\t\tconst svgElement = targetElement.querySelector(\"svg\");\n\t\t\t\tif (svgElement) {\n\t\t\t\t\tsvgElement.classList.add(...className.split(\" \"));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"Error injecting SVG:\", error);\n\t}\n}\n","\nconst KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport function isValidKey(key: string): boolean {\n if (!key || key.length === 0) return false;\n return KEY_PATTERN.test(key);\n}\n\nexport function validateKey(key: string): { valid: boolean; error?: string } {\n if (!key || key.length === 0) {\n return { valid: false, error: \"Key is required\" };\n }\n\n if (key.length > 255) {\n return { valid: false, error: \"Key must be 255 characters or less\" };\n }\n\n if (!KEY_PATTERN.test(key)) {\n return {\n valid: false,\n error:\n \"Key can only contain letters, numbers, underscores (_) and hyphens (-)\",\n };\n }\n\n return { valid: true };\n}\n\nexport function toKey(input: string): string {\n if (!input) return \"\";\n\n return input\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"_\")\n .replace(/[^a-z0-9_-]/g, \"\")\n .replace(/^[-_]+|[-_]+$/g, \"\")\n .replace(/[-_]{2,}/g, \"_\");\n}\n\nexport function nameToKey(name: string): string {\n return toKey(name);\n}\n","import type { InventoryLevel, Location } from '../types';\n\nexport interface VariantWithInventory {\n inventory: InventoryLevel[];\n}\n\n\nexport function getAvailableStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.available, 0);\n}\n\n\nexport function getReservedStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.reserved, 0);\n}\n\n\nexport function hasStock(variant: VariantWithInventory, quantity: number = 1): boolean {\n return getAvailableStock(variant) >= quantity;\n}\n\n\nexport function getInventoryAt(\n variant: VariantWithInventory,\n locationId: string\n): InventoryLevel | undefined {\n return variant?.inventory?.find(inv => inv.location_id === locationId);\n}\n\n\nexport function getFirstAvailableFCId(\n variant: VariantWithInventory,\n quantity: number = 1\n): string | undefined {\n const inv = variant?.inventory?.find(i => i.available >= quantity);\n return inv?.location_id;\n}\n","\nexport type {\n ApiResponse,\n EshopCartItem,\n Cart,\n CartOrigin,\n CartStatus,\n EshopStoreState,\n Store,\n Webhook,\n WebhookEventSubscription,\n Integration,\n IntegrationProvider,\n Block,\n Price,\n OrderPayment,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderPaymentProvider,\n OrderPaymentRefund,\n OrderQuote,\n StoreSubscription,\n StoreSubscriptionPayment,\n StoreSubscriptionProvider,\n StoreSubscriptionStatus,\n StoreSubscriptionSource,\n SubscriptionPlan,\n AudienceSubscription,\n AudienceSubscriptionPayment,\n AudienceSubscriptionProvider,\n AudienceSubscriptionStatus,\n AudienceSubscriptionSource,\n PaymentMethod,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n\n Address,\n GeoLocation,\n ZoneLocation,\n Location,\n PromoCodeValidation,\n PaginatedResponse,\n Language,\n Access,\n Media,\n MediaResolution,\n ProviderWithTimeline,\n Node,\n Workflow,\n WorkflowNode,\n WorkflowEdge,\n WorkflowTriggerNode,\n WorkflowHttpNode,\n WorkflowSwitchNode,\n WorkflowSwitchRule,\n WorkflowTransformNode,\n WorkflowLoopNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n Audience,\n AudienceType,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n AudienceSubscriber,\n Event,\n EventAction,\n\n ShippingStatus,\n OrderShipping,\n ShippingRate,\n ShippingAddress,\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShipmentLine,\n Shipment,\n CustomsItem,\n CustomsDeclaration,\n\n GeoLocationBlock,\n\n Service,\n Provider,\n ServiceProvider,\n ServiceDuration,\n ProviderTimelinePoint,\n TimelinePoint,\n WorkingHour,\n WorkingDay,\n SpecificDate,\n\n Order,\n OrderItem,\n OrderItemSnapshot,\n ProductOrderItem,\n ServiceOrderItem,\n ProductOrderItemSnapshot,\n ServiceOrderItemSnapshot,\n QuoteLine,\n ProductQuoteLine,\n ServiceQuoteLine,\n ProductQuoteLineAvailability,\n ServiceQuoteLineAvailability,\n OrderItemStatus,\n OrderPaymentStatus,\n OrderCancellationReason,\n HistoryEntry,\n\n Product,\n ProductVariant,\n ProductInventory,\n InventoryLevel,\n GalleryItem,\n\n EmailTemplate,\n Form,\n FormSubmission,\n FormSchema,\n FormSchemaType,\n FormField,\n FormFieldType,\n FormEntry,\n Taxonomy,\n TaxonomyEntry,\n TaxonomyQuery,\n TaxonomySchema,\n TaxonomySchemaType,\n TaxonomyField,\n TaxonomyFieldQuery,\n\n Agent,\n AgentChat,\n AgentChatMessage,\n PromoCode,\n\n Customer,\n Account,\n AccountToken,\n AccountUpdateResponse,\n StoreMembership,\n Discount,\n Condition,\n\n ServiceStatus,\n ProviderStatus,\n ProductStatus,\n CustomerStatus,\n AudienceStatus,\n AgentChatStatus,\n WorkflowStatus,\n PromoCodeStatus,\n NodeStatus,\n EmailTemplateStatus,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\n\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SlotRange,\n EshopItem,\n EshopQuoteItem,\n ServiceCheckoutPart,\n ServiceQuoteItem,\n ConditionValue,\n ProductQuoteItemInput,\n ServiceQuoteItemInput,\n OrderQuoteItemInput,\n QuoteItemInput,\n OrderQuoteCompatibleItemInput,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n OrderCheckoutItemInput,\n CheckoutItemInput,\n OrderCheckoutCompatibleItemInput,\n GetCurrentCartParams,\n GetCartParams,\n FindCartsParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n SystemTemplateKey,\n \n GetShippingRatesParams,\n ShipParams,\n \n CreateAgentParams,\n UpdateAgentParams,\n GetAgentParams,\n GetAgentsParams,\n AgentStatus,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport type {\n AnalyticsQuery,\n AnalyticsQueryResponse,\n AnalyticsRow,\n Measure,\n Dimension,\n Filter,\n FilterField,\n FilterOp,\n Granularity,\n EntityKind,\n TimeRange,\n TimeUnit,\n OrderBy,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n} from \"./types/api\";\n\nexport type {\n Activity,\n TrackParams,\n CommonActivityType,\n} from \"./api/storefront\";\nexport { COMMON_ACTIVITY_TYPES } from \"./api/storefront\";\nexport {\n createCartController,\n type CartApi,\n type CartController,\n type CartControllerAddItemParams,\n type CartControllerCheckoutParams,\n type CartControllerClearParams,\n type CartControllerInitParams,\n type CartControllerListener,\n type CartControllerQuoteParams,\n type CartControllerRefreshParams,\n type CartControllerRemoveItemParams,\n type CartControllerState,\n type CartControllerUpdateParams,\n} from \"./cartController\";\n\nexport type { TimelineParams } from \"./api/crm\";\nexport type {\n IntegrationOperation,\n IntegrationResource,\n IntegrationService,\n} from \"./api/platform\";\n\nexport const SDK_VERSION = \"0.7.124\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nimport type { Customer as CustomerType, Store as StoreType, Market as MarketType } from \"./types\";\n\nexport interface ApiConfig {\n httpClient: HttpClient;\n storeId: string;\n baseUrl: string;\n market: string;\n locale: string;\n authStorage: AuthStorage;\n}\n\nexport interface AdminSessionInternal {\n access_token: string;\n refresh_token: string;\n access_expires_at?: number;\n email?: string;\n}\n\nexport interface CustomerSessionInternal {\n access_token: string;\n customer: CustomerType;\n store: StoreType;\n market: MarketType | null;\n}\n\nexport interface AdminSession {\n email?: string;\n}\n\nexport interface CustomerSession {\n customer: CustomerType;\n store: StoreType;\n market: MarketType | null;\n}\n\nexport type AdminSessionUpdater = (\n updater: (prev: AdminSessionInternal | null) => AdminSessionInternal | null,\n) => void;\n\nexport type CustomerSessionUpdater = (\n updater: (prev: CustomerSessionInternal | null) => CustomerSessionInternal | null,\n) => void;\n\nexport type AuthStateListener<T> = (session: T | null) => void;\n\nimport {\n createHttpClient,\n type HttpClientConfig,\n type HttpClient,\n type AuthStorage,\n} from \"./services/createHttpClient\";\nimport { createAccountApi } from \"./api/account\";\nimport { createAuthApi } from \"./api/auth\";\nimport { createStoreApi } from \"./api/store\";\nimport { createMediaApi } from \"./api/media\";\nimport { createNotificationApi } from \"./api/notification\";\nimport { createPromoCodeApi } from \"./api/promoCode\";\nimport { createCmsApi } from \"./api/cms\";\nimport { createEshopApi } from \"./api/eshop\";\nimport { createLocationApi } from \"./api/location\";\nimport { createMarketApi } from \"./api/market\";\nimport { createCustomerApi } from \"./api/crm\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createAgentApi } from \"./api/agent\";\nimport { createEmailTemplateApi } from \"./api/emailTemplate\";\nimport { createFormApi } from \"./api/form\";\nimport { createTaxonomyApi } from \"./api/taxonomy\";\nimport { createAnalyticsApi } from \"./api/analytics\";\nimport { createStorefrontApi } from \"./api/storefront\";\nimport { createCartController } from \"./cartController\";\nimport {\n getImageUrl,\n getBlockValue,\n getBlockTextValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n} from \"./utils/blocks\";\nimport {\n formatPrice,\n getPriceAmount,\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n} from \"./utils/price\";\nimport { validatePhoneNumber } from \"./utils/validation\";\nimport { tzGroups, findTimeZone } from \"./utils/timezone\";\nimport { slugify, humanize, categorify, formatDate } from \"./utils/text\";\nimport {\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n} from \"./utils/svg\";\nimport {\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n} from \"./utils/keyValidation\";\nimport {\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n} from \"./utils/inventory\";\n\nfunction createUtilitySurface(apiConfig: ApiConfig) {\n return {\n getImageUrl: (imageBlock: any, isBlock = true) =>\n getImageUrl(imageBlock, isBlock),\n getBlockValue,\n getBlockTextValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n\n formatPrice: (prices: any[]) => formatPrice(prices, apiConfig.market),\n getPriceAmount: (prices: any[]) => getPriceAmount(prices, apiConfig.market),\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n validatePhoneNumber,\n\n tzGroups,\n findTimeZone,\n\n slugify,\n humanize,\n categorify,\n formatDate,\n\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n };\n}\n\nconst ADMIN_STORAGE_KEY = \"arky_admin_session\";\n\nfunction readAdminSession(): AdminSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(ADMIN_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as AdminSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeAdminSession(s: AdminSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(ADMIN_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(ADMIN_STORAGE_KEY);\n }\n}\n\nexport type CreateAdminConfig = Omit<HttpClientConfig, \"authStorage\" | \"storeId\"> & {\n storeId: string;\n market: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createAdmin(config: CreateAdminConfig) {\n const locale = config.locale || \"en\";\n const listeners = new Set<AuthStateListener<AdminSession>>();\n\n function toPublic(s: AdminSessionInternal | null): AdminSession | null {\n return s ? { email: s.email } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readAdminSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: AdminSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readAdminSession();\n const next = updater(prev);\n writeAdminSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = config.apiToken\n ? {\n getTokens: () => ({ access_token: config.apiToken! }),\n onTokensRefreshed: () => {},\n onForcedLogout: () => {},\n }\n : {\n getTokens() {\n const s = readAdminSession();\n if (!s) return null;\n return {\n access_token: s.access_token,\n refresh_token: s.refresh_token,\n access_expires_at: s.access_expires_at,\n };\n },\n onTokensRefreshed(tokens) {\n updateSession((prev) =>\n prev\n ? {\n ...prev,\n access_token: tokens.access_token,\n refresh_token: tokens.refresh_token ?? prev.refresh_token,\n access_expires_at: tokens.access_expires_at ?? prev.access_expires_at,\n }\n : null,\n );\n },\n onForcedLogout() {\n updateSession(() => null);\n },\n };\n\n const httpClient = createHttpClient({\n baseUrl: config.baseUrl,\n storeId: config.storeId,\n refreshPath: config.refreshPath,\n navigate: config.navigate,\n loginFallbackPath: config.loginFallbackPath,\n authStorage,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n authStorage,\n };\n\n const accountApi = createAccountApi(apiConfig);\n const authApi = createAuthApi(apiConfig, updateSession);\n const storeApi = createStoreApi(apiConfig, updateSession);\n const platformApi = createPlatformApi(apiConfig);\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const promoCodeApi = createPromoCodeApi(apiConfig);\n const crmApi = createCustomerApi(apiConfig);\n const locationApi = createLocationApi(apiConfig);\n const marketApi = createMarketApi(apiConfig);\n const agentApi = createAgentApi(apiConfig);\n const workflowApi = createWorkflowApi(apiConfig);\n const formApi = createFormApi(apiConfig);\n const taxonomyApi = createTaxonomyApi(apiConfig);\n const emailTemplateApi = createEmailTemplateApi(apiConfig);\n const analyticsApi = createAnalyticsApi(apiConfig);\n\n const sdk = {\n auth: authApi,\n account: accountApi,\n store: {\n ...storeApi,\n location: locationApi,\n market: marketApi,\n },\n media: createMediaApi(apiConfig),\n notification: createNotificationApi(apiConfig),\n promoCode: promoCodeApi,\n platform: platformApi,\n shipping: createShippingApi(apiConfig),\n cms: {\n node: {\n create: cmsApi.createNode,\n update: cmsApi.updateNode,\n delete: cmsApi.deleteNode,\n get: cmsApi.getNode,\n find: cmsApi.getNodes,\n getChildren: cmsApi.getNodeChildren,\n },\n form: {\n create: formApi.createForm,\n update: formApi.updateForm,\n delete: formApi.deleteForm,\n get: formApi.getForm,\n find: formApi.getForms,\n submit: formApi.submit,\n getSubmissions: formApi.getSubmissions,\n getSubmission: formApi.getSubmission,\n updateSubmission: formApi.updateSubmission,\n },\n taxonomy: {\n create: taxonomyApi.createTaxonomy,\n update: taxonomyApi.updateTaxonomy,\n delete: taxonomyApi.deleteTaxonomy,\n get: taxonomyApi.getTaxonomy,\n find: taxonomyApi.getTaxonomies,\n getChildren: taxonomyApi.getTaxonomyChildren,\n },\n emailTemplate: {\n create: emailTemplateApi.createEmailTemplate,\n update: emailTemplateApi.updateEmailTemplate,\n delete: emailTemplateApi.deleteEmailTemplate,\n get: emailTemplateApi.getEmailTemplate,\n find: emailTemplateApi.getEmailTemplates,\n },\n },\n eshop: {\n product: {\n create: eshopApi.createProduct,\n update: eshopApi.updateProduct,\n delete: eshopApi.deleteProduct,\n get: eshopApi.getProduct,\n find: eshopApi.getProducts,\n },\n order: {\n update: eshopApi.updateOrder,\n get: eshopApi.getOrder,\n find: eshopApi.getOrders,\n getQuote: eshopApi.getQuote,\n processRefund: eshopApi.processRefund,\n },\n cart: {\n create: eshopApi.createCart,\n update: eshopApi.updateCart,\n get: eshopApi.getCart,\n find: eshopApi.getCarts,\n addItem: eshopApi.addCartItem,\n removeItem: eshopApi.removeCartItem,\n clear: eshopApi.clearCart,\n quote: eshopApi.quoteCart,\n checkout: eshopApi.checkoutCart,\n },\n service: {\n create: eshopApi.createService,\n update: eshopApi.updateService,\n delete: eshopApi.deleteService,\n get: eshopApi.getService,\n find: eshopApi.getServices,\n getAvailability: eshopApi.getServiceAvailability,\n findProviders: eshopApi.findServiceProviders,\n createProvider: eshopApi.createServiceProvider,\n updateProvider: eshopApi.updateServiceProvider,\n deleteProvider: eshopApi.deleteServiceProvider,\n },\n provider: {\n create: eshopApi.createProvider,\n update: eshopApi.updateProvider,\n delete: eshopApi.deleteProvider,\n get: eshopApi.getProvider,\n find: eshopApi.getProviders,\n },\n promoCode: promoCodeApi,\n },\n crm: {\n customer: {\n create: crmApi.create,\n get: crmApi.get,\n find: crmApi.find,\n update: crmApi.update,\n merge: crmApi.merge,\n revokeToken: crmApi.revokeToken,\n revokeAllTokens: crmApi.revokeAllTokens,\n },\n audience: {\n create: crmApi.audiences.create,\n update: crmApi.audiences.update,\n get: crmApi.audiences.get,\n find: crmApi.audiences.find,\n getSubscribers: crmApi.audiences.getSubscribers,\n addSubscriber: crmApi.audiences.addSubscriber,\n removeSubscriber: crmApi.audiences.removeSubscriber,\n },\n activity: crmApi.activity,\n },\n automation: {\n agent: {\n create: agentApi.createAgent,\n update: agentApi.updateAgent,\n delete: agentApi.deleteAgent,\n get: agentApi.getAgent,\n find: agentApi.getAgents,\n sendMessage: agentApi.sendMessage,\n getChats: agentApi.getChats,\n getChat: agentApi.getChat,\n updateChat: agentApi.updateChat,\n rateChat: agentApi.rateChat,\n getStoreChats: agentApi.getStoreChats,\n getChatMessages: agentApi.getChatMessages,\n },\n workflow: {\n create: workflowApi.createWorkflow,\n update: workflowApi.updateWorkflow,\n delete: workflowApi.deleteWorkflow,\n get: workflowApi.getWorkflow,\n find: workflowApi.getWorkflows,\n trigger: workflowApi.triggerWorkflow,\n getExecutions: workflowApi.getWorkflowExecutions,\n getExecution: workflowApi.getWorkflowExecution,\n },\n },\n\n analytics: {\n query: analyticsApi.query,\n },\n\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n },\n\n getStoreId: () => apiConfig.storeId,\n\n setMarket: (market: string) => {\n apiConfig.market = market;\n },\n\n getMarket: () => apiConfig.market,\n\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n\n getLocale: () => apiConfig.locale,\n\n get session(): AdminSession | null {\n if (config.apiToken) return null;\n return toPublic(readAdminSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n return readAdminSession() !== null;\n },\n\n onAuthStateChanged(listener: AuthStateListener<AdminSession>): () => void {\n listeners.add(listener);\n const current = toPublic(readAdminSession());\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n async logout(): Promise<void> {\n if (config.apiToken) return;\n updateSession(() => null);\n },\n\n extractBlockValues,\n\n utils: createUtilitySurface(apiConfig),\n\n };\n\n return sdk;\n}\n\nconst CUSTOMER_STORAGE_KEY = \"arky_customer_session\";\n\nfunction readCustomerSession(): CustomerSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(CUSTOMER_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as CustomerSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeCustomerSession(s: CustomerSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(CUSTOMER_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(CUSTOMER_STORAGE_KEY);\n }\n}\n\nexport type CreateStorefrontConfig = Omit<HttpClientConfig, \"authStorage\" | \"storeId\"> & {\n storeId: string;\n market?: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createStorefront(config: CreateStorefrontConfig) {\n const locale = config.locale || \"en\";\n const initialMarket = config.market || \"\";\n const listeners = new Set<AuthStateListener<CustomerSession>>();\n let bareIdentifyPromise: Promise<CustomerSession> | null = null;\n\n function toPublic(s: CustomerSessionInternal | null): CustomerSession | null {\n return s ? { customer: s.customer, store: s.store, market: s.market } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readCustomerSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: CustomerSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readCustomerSession();\n const next = updater(prev);\n writeCustomerSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = config.apiToken\n ? {\n getTokens: () => ({ access_token: config.apiToken! }),\n onTokensRefreshed: () => {},\n onForcedLogout: () => {},\n }\n : {\n getTokens() {\n const s = readCustomerSession();\n return s ? { access_token: s.access_token } : null;\n },\n onTokensRefreshed() {\n // Customer tokens are one-shot; no refresh on this flow.\n },\n onForcedLogout() {\n bareIdentifyPromise = null;\n updateSession(() => null);\n },\n };\n\n const httpClient = createHttpClient({\n baseUrl: config.baseUrl,\n storeId: config.storeId,\n refreshPath: config.refreshPath,\n navigate: config.navigate,\n loginFallbackPath: config.loginFallbackPath,\n authStorage,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: initialMarket,\n locale,\n authStorage,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig, updateSession);\n const customerApi = storefrontApi.crm.customer;\n\n function identify(\n params?: { email?: string; verify?: boolean; market?: string },\n ): Promise<CustomerSession> {\n if (params?.market !== undefined) apiConfig.market = params.market;\n\n const isBareCall = !params?.email && !params?.verify;\n if (isBareCall && bareIdentifyPromise) return bareIdentifyPromise;\n\n const promise = (async (): Promise<CustomerSession> => {\n try {\n const result = await customerApi.identify({\n market: apiConfig.market,\n email: params?.email,\n verify: params?.verify,\n });\n return {\n customer: result.customer,\n store: result.store,\n market: result.market,\n };\n } catch (err: unknown) {\n const e = err as { statusCode?: number; status?: number; response?: { status?: number } };\n const status = e?.statusCode || e?.status || e?.response?.status;\n if (isBareCall && status === 401) {\n updateSession(() => null);\n const result = await customerApi.identify({ market: apiConfig.market });\n return {\n customer: result.customer,\n store: result.store,\n market: result.market,\n };\n }\n throw err;\n }\n })().catch((err) => {\n if (isBareCall) bareIdentifyPromise = null;\n throw err;\n });\n\n if (isBareCall) bareIdentifyPromise = promise;\n\n return promise;\n }\n\n async function verify(params: { code: string }) {\n const result = await customerApi.verify(params);\n bareIdentifyPromise = null;\n return result;\n }\n\n async function logout(): Promise<void> {\n if (config.apiToken) return;\n bareIdentifyPromise = null;\n try {\n await customerApi.logout();\n } catch {\n updateSession(() => null);\n }\n }\n\n return {\n identify,\n verify,\n logout,\n me: () => customerApi.getMe(),\n\n get session(): CustomerSession | null {\n if (config.apiToken) return null;\n return toPublic(readCustomerSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n const s = readCustomerSession();\n return s !== null && !!s.access_token;\n },\n\n onAuthStateChanged(listener: AuthStateListener<CustomerSession>): () => void {\n listeners.add(listener);\n const current = toPublic(readCustomerSession());\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n store: storefrontApi.store,\n cart: createCartController(storefrontApi.eshop.cart),\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n crm: storefrontApi.crm,\n activity: storefrontApi.activity,\n automation: storefrontApi.automation,\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n bareIdentifyPromise = null;\n },\n getStoreId: () => apiConfig.storeId,\n setMarket: (key: string) => {\n apiConfig.market = key;\n bareIdentifyPromise = null;\n },\n getMarket: () => apiConfig.market,\n setLocale: (l: string) => {\n apiConfig.locale = l;\n },\n getLocale: () => apiConfig.locale,\n extractBlockValues,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n","import { atom, computed, map } from \"nanostores\";\nimport { createStorefront, type CreateStorefrontConfig, type CustomerSession } from \"./index\";\nimport type {\n Address,\n Block,\n Cart,\n EshopCartItem,\n Form,\n FormEntry,\n FormField,\n FormSubmission,\n Market,\n Node,\n OrderCheckoutResult,\n OrderQuote,\n PaginatedResponse,\n PaymentMethod,\n Price,\n Product,\n ProductVariant,\n Provider,\n Service,\n Store,\n ZoneLocation,\n} from \"./types\";\nimport type {\n CheckoutItemInput,\n FindServiceProvidersParams,\n GetAvailabilityParams,\n GetNodeChildrenParams,\n GetNodeParams,\n GetNodesParams,\n GetProductParams,\n GetProductsParams,\n GetProviderParams,\n GetProvidersParams,\n GetServiceParams,\n GetServicesParams,\n ProductCheckoutItemInput,\n RequestOptions,\n ServiceCheckoutItemInput,\n SlotRange,\n SubmitFormParams,\n} from \"./types/api\";\nimport type { Activity, TrackParams } from \"./api/storefront\";\n\ntype ArkyStoreClient = ReturnType<typeof createStorefront>;\n\nexport interface ArkyStoreConfig extends CreateStorefrontConfig {\n websiteNodeKey?: string;\n lastOrderStorageKey?: string;\n onCartChange?: (snapshot: ArkyCartSnapshot) => void;\n}\n\nexport interface ArkyServiceCartItem {\n id: string;\n service_id: string;\n provider_id: string;\n from: number;\n to: number;\n forms?: FormEntry[];\n price?: Price;\n service_name?: string;\n provider_name?: string;\n date_text?: string;\n time_text?: string;\n is_multi_day?: boolean;\n}\n\nexport interface ArkyCartSnapshot {\n cart: Cart | null;\n product_items: EshopCartItem[];\n service_items: ArkyServiceCartItem[];\n item_count: number;\n}\n\nexport interface ArkyCartStatus {\n loading: boolean;\n syncing: boolean;\n fetching_quote: boolean;\n processing_checkout: boolean;\n error: string | null;\n quote_error: string | null;\n selected_shipping_method_id: string | null;\n user_token: string | null;\n}\n\nexport interface ArkyLastOrder {\n order_id: string;\n number: string;\n client_secret: string | null;\n payment: OrderCheckoutResult[\"payment\"];\n created_at: number;\n}\n\nexport interface ArkyCartInput {\n product_items?: EshopCartItem[];\n service_items?: ArkyServiceCartItem[];\n shipping_address?: Address | null;\n billing_address?: Address | null;\n forms?: FormEntry[] | Block[];\n promo_code?: string | null;\n payment_method_id?: string | null;\n shipping_method_id?: string | null;\n}\n\nexport interface ArkyCmsState {\n website_node: Node | null;\n nodes: Record<string, Node>;\n forms: Record<string, Form>;\n loading: boolean;\n error: string | null;\n}\n\nexport interface ArkyEshopState {\n products: Product[];\n services: Service[];\n providers: Provider[];\n product_cursor: string | null;\n service_cursor: string | null;\n provider_cursor: string | null;\n availability: unknown | null;\n loading_products: boolean;\n loading_services: boolean;\n loading_providers: boolean;\n loading_availability: boolean;\n error: string | null;\n}\n\nfunction readErrorMessage(error: unknown, fallback: string): string {\n if (error instanceof Error && error.message) return error.message;\n if (typeof error === \"string\" && error.length > 0) return error;\n return fallback;\n}\n\nfunction createId(prefix: string): string {\n const cryptoValue = globalThis.crypto;\n if (cryptoValue && \"randomUUID\" in cryptoValue) return cryptoValue.randomUUID();\n return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}`;\n}\n\nfunction firstLocalized(value: unknown, locale: string): string {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return \"\";\n const record = value as Record<string, unknown>;\n const localeValue = record[locale];\n if (typeof localeValue === \"string\") return localeValue;\n const englishValue = record.en;\n if (typeof englishValue === \"string\") return englishValue;\n for (const entry of Object.values(record)) {\n if (typeof entry === \"string\") return entry;\n }\n return \"\";\n}\n\nfunction findBlock(blocks: Block[] | undefined, keys: string[]): Block | null {\n return (blocks || []).find((block) => keys.includes(block.key)) || null;\n}\n\nfunction blockText(blocks: Block[] | undefined, keys: string[], locale: string): string {\n const block = findBlock(blocks, keys);\n if (!block) return \"\";\n return firstLocalized(block.value, locale);\n}\n\nfunction productName(product: Product, locale: string): string {\n return blockText(product.blocks, [\"name\", \"title\"], locale) || product.key || product.id;\n}\n\nfunction serviceName(service: Service, locale: string): string {\n return blockText(service.blocks, [\"name\", \"title\"], locale) || service.key || service.id;\n}\n\nfunction providerName(provider: Provider, locale: string): string {\n return blockText(provider.blocks, [\"name\", \"title\"], locale) || provider.key || provider.id;\n}\n\nfunction entitySlug(entity: { id: string; slug?: Record<string, string> }, locale: string): string {\n return entity.slug?.[locale] || entity.slug?.en || Object.values(entity.slug || {})[0] || entity.id;\n}\n\nfunction priceForMarket(prices: Price[], market: string, fallbackCurrency?: string | null): Price {\n const price = prices.find((candidate) => candidate.market === market) || prices[0];\n return {\n amount: price?.amount || 0,\n market: price?.market || market,\n currency: price?.currency || fallbackCurrency || \"\",\n compare_at: price?.compare_at,\n audience_id: price?.audience_id,\n };\n}\n\nfunction availableStock(client: ArkyStoreClient, variant: ProductVariant): number | undefined {\n const fromUtility = client.utils.getAvailableStock(variant);\n if (Number.isFinite(fromUtility)) return fromUtility;\n const stock = (variant.inventory || []).reduce((total, row) => total + (row.available || 0), 0);\n return stock > 0 ? stock : undefined;\n}\n\nfunction locationToAddress(location: ZoneLocation): Address {\n return {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postal_code: location.postal_code || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n };\n}\n\nfunction normalizeForms(forms: FormEntry[] | Block[] | undefined): FormEntry[] | undefined {\n return forms as FormEntry[] | undefined;\n}\n\nfunction toProductCheckoutItems(items: EshopCartItem[]): ProductCheckoutItemInput[] {\n return items.map((item) => ({\n type: \"product\",\n id: item.id,\n product_id: item.product_id,\n variant_id: item.variant_id,\n quantity: item.quantity,\n }));\n}\n\nfunction toServiceCheckoutItems(items: ArkyServiceCartItem[]): ServiceCheckoutItemInput[] {\n const groups = new Map<string, ServiceCheckoutItemInput>();\n for (const item of items) {\n const key = `${item.service_id}:${item.provider_id}`;\n const slot: SlotRange = { from: item.from, to: item.to };\n const existing = groups.get(key);\n if (existing) {\n existing.slots.push(slot);\n continue;\n }\n groups.set(key, {\n type: \"service\",\n id: item.id,\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: [slot],\n forms: item.forms || [],\n price: item.price,\n });\n }\n return [...groups.values()].map((item) => ({\n ...item,\n slots: [...item.slots].sort((a, b) => a.from - b.from),\n }));\n}\n\nfunction readStoredOrder(key: string | undefined): ArkyLastOrder | null {\n if (!key || typeof window === \"undefined\") return null;\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? JSON.parse(raw) as ArkyLastOrder : null;\n } catch {\n return null;\n }\n}\n\nfunction writeStoredOrder(key: string | undefined, value: ArkyLastOrder | null): void {\n if (!key || typeof window === \"undefined\") return;\n try {\n if (value) window.localStorage.setItem(key, JSON.stringify(value));\n else window.localStorage.removeItem(key);\n } catch {}\n}\n\nfunction formFieldsFromBlocks(blocks: Block[]): FormField[] {\n return blocks.map((block) => ({\n id: block.id,\n key: block.key,\n type: block.type as FormField[\"type\"],\n value: block.value,\n }));\n}\n\nexport function createArkyStore(config: ArkyStoreConfig) {\n const client = createStorefront(config);\n const session = atom<CustomerSession | null>(client.session);\n const locale = atom(config.locale || client.getLocale());\n const market_key = atom(config.market || client.getMarket());\n const market = computed(session, (value) => value?.market || null);\n const currency = computed(market, (value) => value?.currency || null);\n const allowed_payment_methods = computed(market, (value) => value?.payment_methods || []);\n const payment_config = computed(session, (value) => {\n const store = value?.store as Store & { payment?: unknown };\n const methods = value?.market?.payment_methods || [];\n const hasCreditCard = methods.some((method: PaymentMethod) => method.id === \"credit_card\");\n return { provider: store?.payment || null, enabled: hasCreditCard && !!store?.payment };\n });\n\n const cart = atom<Cart | null>(null);\n const product_items = atom<EshopCartItem[]>([]);\n const service_items = atom<ArkyServiceCartItem[]>([]);\n const quote = atom<OrderQuote | null>(null);\n const promo_code = atom<string | null>(null);\n const last_order = atom<ArkyLastOrder | null>(readStoredOrder(config.lastOrderStorageKey));\n const cart_status = map<ArkyCartStatus>({\n loading: false,\n syncing: false,\n fetching_quote: false,\n processing_checkout: false,\n error: null,\n quote_error: null,\n selected_shipping_method_id: null,\n user_token: null,\n });\n\n const product_item_count = computed(product_items, (items) =>\n items.reduce((total, item) => total + (item.quantity || 0), 0),\n );\n const service_item_count = computed(service_items, (items) => items.length);\n const item_count = computed([product_item_count, service_item_count], (products, services) => products + services);\n const snapshot = computed([cart, product_items, service_items, item_count], (cartValue, products, services, count) => ({\n cart: cartValue,\n product_items: products,\n service_items: services,\n item_count: count,\n }));\n\n const cms_state = map<ArkyCmsState>({\n website_node: null,\n nodes: {},\n forms: {},\n loading: false,\n error: null,\n });\n const eshop_state = map<ArkyEshopState>({\n products: [],\n services: [],\n providers: [],\n product_cursor: null,\n service_cursor: null,\n provider_cursor: null,\n availability: null,\n loading_products: false,\n loading_services: false,\n loading_providers: false,\n loading_availability: false,\n error: null,\n });\n\n client.onAuthStateChanged((value) => session.set(value));\n snapshot.subscribe((value) => config.onCartChange?.(value));\n last_order.subscribe((value) => writeStoredOrder(config.lastOrderStorageKey, value));\n\n function currentMarketKey(): string {\n return market_key.get() || client.getMarket() || market.get()?.key || \"\";\n }\n\n function currentLocale(): string {\n return locale.get() || client.getLocale() || \"en\";\n }\n\n function currentCurrency(): string | null {\n return currency.get() || market.get()?.currency || null;\n }\n\n async function identify(params: { email?: string; verify?: boolean; market?: string } = {}) {\n if (params.market) setMarket(params.market);\n const result = await client.identify({ ...params, market: params.market || currentMarketKey() });\n session.set(result);\n return result;\n }\n\n function setMarket(key: string): void {\n market_key.set(key);\n client.setMarket(key);\n }\n\n function setLocale(value: string): void {\n locale.set(value);\n client.setLocale(value);\n }\n\n async function ensureCart(): Promise<Cart> {\n cart_status.setKey(\"loading\", true);\n cart_status.setKey(\"error\", null);\n try {\n await identify({ market: currentMarketKey() });\n const response = await client.cart.refresh({ market: currentMarketKey() });\n await hydrateCart(response);\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to load cart.\"));\n throw error;\n } finally {\n cart_status.setKey(\"loading\", false);\n }\n }\n\n async function hydrateProductItem(item: ProductCheckoutItemInput, source: Cart): Promise<EshopCartItem | null> {\n try {\n const product = await client.eshop.product.get({ id: item.product_id });\n const variant = product.variants.find((candidate) => candidate.id === item.variant_id);\n if (!variant) return null;\n return {\n id: item.id || createId(\"product\"),\n product_id: product.id,\n variant_id: variant.id,\n product_name: productName(product, currentLocale()),\n product_slug: entitySlug(product, currentLocale()),\n variant_attributes: variant.attributes as EshopCartItem[\"variant_attributes\"],\n price: priceForMarket(variant.prices, currentMarketKey(), currentCurrency()),\n quantity: item.quantity,\n added_at: source.created_at ? source.created_at * 1000 : Date.now(),\n max_stock: availableStock(client, variant),\n };\n } catch {\n return null;\n }\n }\n\n async function hydrateServiceItems(items: ServiceCheckoutItemInput[]): Promise<ArkyServiceCartItem[]> {\n const rows: ArkyServiceCartItem[] = [];\n for (const item of items) {\n let service: Service | null = null;\n let provider: Provider | null = null;\n try {\n service = await client.eshop.service.get({ id: item.service_id });\n } catch {}\n try {\n provider = await client.eshop.provider.get({ id: item.provider_id });\n } catch {}\n for (const [index, slot] of item.slots.entries()) {\n rows.push({\n id: item.id || createId(`service_${index}`),\n service_id: item.service_id,\n provider_id: item.provider_id,\n from: slot.from,\n to: slot.to,\n forms: item.forms || [],\n price: item.price,\n service_name: service ? serviceName(service, currentLocale()) : item.service_id,\n provider_name: provider ? providerName(provider, currentLocale()) : item.provider_id,\n });\n }\n }\n return rows;\n }\n\n async function hydrateCart(response: Cart): Promise<Cart> {\n cart.set(response);\n cart_status.setKey(\"user_token\", response.token || null);\n cart_status.setKey(\"selected_shipping_method_id\", response.shipping_method_id || null);\n promo_code.set(response.promo_code || null);\n quote.set(response.quote_snapshot || null);\n\n const items = response.items || [];\n const products = await Promise.all(\n items\n .filter((item): item is ProductCheckoutItemInput => item.type === \"product\")\n .map((item) => hydrateProductItem(item, response)),\n );\n const services = await hydrateServiceItems(\n items.filter((item): item is ServiceCheckoutItemInput => item.type === \"service\"),\n );\n product_items.set(products.filter((item): item is EshopCartItem => item !== null));\n service_items.set(services);\n return response;\n }\n\n function checkoutItems(input: ArkyCartInput = {}): CheckoutItemInput[] {\n return [\n ...toProductCheckoutItems(input.product_items || product_items.get()),\n ...toServiceCheckoutItems(input.service_items || service_items.get()),\n ];\n }\n\n async function syncCart(input: ArkyCartInput = {}): Promise<Cart> {\n cart_status.setKey(\"syncing\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = cart.get() || await ensureCart();\n const response = await client.cart.update({\n id: current.id,\n market: currentMarketKey(),\n items: checkoutItems(input),\n shipping_address: input.shipping_address || undefined,\n billing_address: input.billing_address || undefined,\n forms: normalizeForms(input.forms),\n promo_code: input.promo_code === undefined ? promo_code.get() || undefined : input.promo_code || undefined,\n payment_method_id: input.payment_method_id || undefined,\n shipping_method_id:\n input.shipping_method_id ||\n cart_status.get().selected_shipping_method_id ||\n undefined,\n });\n if (input.promo_code !== undefined) promo_code.set(input.promo_code);\n if (input.shipping_method_id !== undefined) {\n cart_status.setKey(\"selected_shipping_method_id\", input.shipping_method_id);\n }\n await hydrateCart(response);\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to sync cart.\"));\n throw error;\n } finally {\n cart_status.setKey(\"syncing\", false);\n }\n }\n\n async function addProduct(product: Product, variant: ProductVariant, quantity = 1): Promise<Cart> {\n cart_status.setKey(\"error\", null);\n try {\n const current = cart.get() || await ensureCart();\n const response = await client.cart.addItem({\n id: current.id,\n item: {\n type: \"product\",\n product_id: product.id,\n variant_id: variant.id,\n quantity,\n },\n });\n await hydrateCart(response);\n await client.activity.track({ type: \"cart_added\", payload: { product_id: product.id, variant_id: variant.id, quantity } });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to add product to cart.\"));\n throw error;\n }\n }\n\n async function setProductQuantity(itemId: string, quantity: number): Promise<Cart> {\n const next = product_items.get().map((item) => {\n if (item.id !== itemId) return item;\n const bounded = item.max_stock ? Math.min(Math.max(1, quantity), item.max_stock) : Math.max(1, quantity);\n return { ...item, quantity: bounded };\n });\n product_items.set(next);\n return syncCart({ product_items: next });\n }\n\n async function removeProduct(itemId: string): Promise<Cart | null> {\n const item = product_items.get().find((candidate) => candidate.id === itemId);\n product_items.set(product_items.get().filter((candidate) => candidate.id !== itemId));\n const current = cart.get();\n if (!current || !item) return null;\n const response = await client.cart.removeItem({\n id: current.id,\n item_id: item.id,\n product_id: item.product_id,\n variant_id: item.variant_id,\n });\n await hydrateCart(response);\n await client.activity.track({ type: \"cart_removed\", payload: { product_id: item.product_id, variant_id: item.variant_id } });\n return response;\n }\n\n async function addServiceItem(item: ArkyServiceCartItem): Promise<Cart> {\n const next = [...service_items.get(), item];\n service_items.set(next);\n return syncCart({ service_items: next });\n }\n\n async function removeServiceItem(itemId: string): Promise<Cart> {\n const next = service_items.get().filter((item) => item.id !== itemId);\n service_items.set(next);\n return syncCart({ service_items: next });\n }\n\n async function clearCart(): Promise<Cart | null> {\n product_items.set([]);\n service_items.set([]);\n quote.set(null);\n promo_code.set(null);\n cart_status.setKey(\"selected_shipping_method_id\", null);\n const current = cart.get();\n if (!current) return null;\n const response = await client.cart.clear({ id: current.id });\n await hydrateCart(response);\n return response;\n }\n\n async function fetchQuote(input: ArkyCartInput = {}): Promise<OrderQuote | null> {\n if (checkoutItems(input).length === 0) {\n quote.set(null);\n return null;\n }\n cart_status.setKey(\"fetching_quote\", true);\n cart_status.setKey(\"quote_error\", null);\n try {\n const current = await syncCart(input);\n const response = await client.cart.quote({ id: current.id });\n quote.set(response);\n return response;\n } catch (error) {\n quote.set(null);\n cart_status.setKey(\"quote_error\", readErrorMessage(error, \"Failed to fetch quote.\"));\n throw error;\n } finally {\n cart_status.setKey(\"fetching_quote\", false);\n }\n }\n\n async function checkout(input: ArkyCartInput = {}): Promise<OrderCheckoutResult> {\n if (checkoutItems(input).length === 0) throw new Error(\"Cart is empty\");\n cart_status.setKey(\"processing_checkout\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = await syncCart(input);\n await client.activity.track({ type: \"checkout_started\", payload: { cart_id: current.id } });\n const response = await client.cart.checkout({\n id: current.id,\n payment_method_id: input.payment_method_id || undefined,\n });\n const stored: ArkyLastOrder = {\n order_id: response.order_id,\n number: response.number,\n client_secret: response.client_secret,\n payment: response.payment,\n created_at: Date.now(),\n };\n last_order.set(stored);\n product_items.set([]);\n service_items.set([]);\n cart.set(null);\n quote.set(null);\n promo_code.set(null);\n cart_status.setKey(\"selected_shipping_method_id\", null);\n await client.activity.track({ type: \"purchase\", payload: { order_id: response.order_id, number: response.number } });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Checkout failed.\"));\n throw error;\n } finally {\n cart_status.setKey(\"processing_checkout\", false);\n }\n }\n\n async function loadNode(params: GetNodeParams, options?: RequestOptions): Promise<Node> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const node = await client.cms.node.get(params, options);\n const key = params.key || params.id || params.slug || node.id;\n cms_state.setKey(\"nodes\", { ...cms_state.get().nodes, [key]: node });\n return node;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS node.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n async function loadWebsiteNode(options?: RequestOptions): Promise<Node> {\n const node = await loadNode({ key: config.websiteNodeKey || \"website\" }, options);\n cms_state.setKey(\"website_node\", node);\n return node;\n }\n\n async function loadForm(params: { id?: string; key?: string }, options?: RequestOptions): Promise<Form> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const form = await client.cms.form.get(params, options);\n const key = params.key || params.id || form.key || form.id;\n cms_state.setKey(\"forms\", { ...cms_state.get().forms, [key]: form });\n return form;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS form.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n async function submitFormByKey(\n key: string,\n fieldsOrBlocks: FormField[] | Block[],\n options?: RequestOptions,\n ): Promise<FormSubmission> {\n const forms = cms_state.get().forms;\n const form = forms[key] || await loadForm({ key });\n const fields = fieldsOrBlocks.length > 0 && \"properties\" in fieldsOrBlocks[0]\n ? formFieldsFromBlocks(fieldsOrBlocks as Block[])\n : fieldsOrBlocks as FormField[];\n const payload: SubmitFormParams = { form_id: form.id, fields };\n return client.cms.form.submit(payload, options);\n }\n\n async function loadProducts(params: GetProductsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n eshop_state.setKey(\"loading_products\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.product.find(params, options);\n eshop_state.setKey(\"products\", response.items || []);\n eshop_state.setKey(\"product_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load products.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_products\", false);\n }\n }\n\n async function loadServices(params: GetServicesParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Service>> {\n eshop_state.setKey(\"loading_services\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.find(params, options);\n eshop_state.setKey(\"services\", response.items || []);\n eshop_state.setKey(\"service_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load services.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_services\", false);\n }\n }\n\n async function loadProviders(params: GetProvidersParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Provider>> {\n eshop_state.setKey(\"loading_providers\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.provider.find(params, options);\n eshop_state.setKey(\"providers\", response.items || []);\n eshop_state.setKey(\"provider_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load providers.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_providers\", false);\n }\n }\n\n async function loadAvailability(params: GetAvailabilityParams, options?: RequestOptions) {\n eshop_state.setKey(\"loading_availability\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.getAvailability(params, options);\n eshop_state.setKey(\"availability\", response);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load availability.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_availability\", false);\n }\n }\n\n async function initialize(options: { hydrate_cart?: boolean; load_website?: boolean; market?: string; locale?: string } = {}) {\n if (options.locale) setLocale(options.locale);\n if (options.market) setMarket(options.market);\n await identify({ market: currentMarketKey() });\n const results: { session: CustomerSession | null; cart?: Cart; website_node?: Node } = {\n session: session.get(),\n };\n if (options.hydrate_cart) results.cart = await ensureCart();\n if (options.load_website) results.website_node = await loadWebsiteNode();\n return results;\n }\n\n return {\n client,\n session,\n market,\n market_key,\n locale,\n currency,\n allowed_payment_methods,\n payment_config,\n initialize,\n identify,\n verify: client.verify,\n logout: client.logout,\n setMarket,\n setLocale,\n getMarket: currentMarketKey,\n getLocale: currentLocale,\n cms: {\n state: cms_state,\n node: {\n get: loadNode,\n find: (params: GetNodesParams, options?: RequestOptions) => client.cms.node.find(params, options),\n getChildren: (params: GetNodeChildrenParams, options?: RequestOptions) => client.cms.node.getChildren(params, options),\n loadWebsite: loadWebsiteNode,\n },\n form: {\n get: loadForm,\n submit: (params: SubmitFormParams, options?: RequestOptions) => client.cms.form.submit(params, options),\n submitByKey: submitFormByKey,\n },\n taxonomy: client.cms.taxonomy,\n },\n eshop: {\n state: eshop_state,\n product: {\n get: (params: GetProductParams, options?: RequestOptions) => client.eshop.product.get(params, options),\n find: loadProducts,\n },\n service: {\n get: (params: GetServiceParams, options?: RequestOptions) => client.eshop.service.get(params, options),\n find: loadServices,\n findProviders: (params: FindServiceProvidersParams, options?: RequestOptions) => client.eshop.service.findProviders(params, options),\n getAvailability: loadAvailability,\n },\n provider: {\n get: (params: GetProviderParams, options?: RequestOptions) => client.eshop.provider.get(params, options),\n find: loadProviders,\n },\n order: client.eshop.order,\n },\n cart: {\n cart,\n product_items,\n service_items,\n quote,\n promo_code,\n last_order,\n status: cart_status,\n product_item_count,\n service_item_count,\n item_count,\n snapshot,\n actions: {\n ensure: ensureCart,\n hydrate: hydrateCart,\n sync: syncCart,\n addProduct,\n setProductQuantity,\n removeProduct,\n addServiceItem,\n removeServiceItem,\n clear: clearCart,\n quote: fetchQuote,\n checkout,\n applyPromoCode(code: string, input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n promo_code.set(code);\n return fetchQuote({ ...input, promo_code: code });\n },\n removePromoCode(input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n promo_code.set(null);\n return fetchQuote({ ...input, promo_code: null });\n },\n selectShippingMethod(id: string | null) {\n cart_status.setKey(\"selected_shipping_method_id\", id);\n },\n locationToAddress,\n buildItems: checkoutItems,\n buildProductItems: toProductCheckoutItems,\n buildServiceItems: toServiceCheckoutItems,\n },\n },\n crm: client.crm,\n activity: {\n track(params: TrackParams) {\n return client.activity.track(params);\n },\n state: atom<Activity | null>(null),\n },\n store: client.store,\n automation: client.automation,\n utils: client.utils,\n };\n}\n\nexport type ArkyStore = ReturnType<typeof createArkyStore>;\nexport type ArkyCartActions = ArkyStore[\"cart\"][\"actions\"];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/blocks.ts","../src/utils/orderItems.ts","../src/api/storefront.ts","../src/cartController.ts","../src/utils/errors.ts","../src/utils/queryParams.ts","../src/services/createHttpClient.ts","../src/utils/price.ts","../src/utils/validation.ts","../src/utils/timezone.ts","../src/utils/text.ts","../src/utils/svg.ts","../src/utils/keyValidation.ts","../src/utils/inventory.ts","../src/index.ts","../src/storefrontStore.ts"],"names":["atom","computed","map"],"mappings":"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","file":"storefront-store.cjs","sourcesContent":["\nexport interface Block {\n id: string;\n key: string;\n type: string;\n properties: any;\n value: any;\n}\n\nexport interface Collection {\n id: string;\n blocks: Block[];\n entity: string;\n}\n\nexport interface CollectionEntry {\n id: string;\n collection_id: string;\n blocks: Block[];\n}\n\nexport function getBlockLabel(block: any): string {\n if (!block) return \"\";\n return block.key?.replace(/_/g, \" \").replace(/\\b\\w/g, (l: string) => l.toUpperCase()) ?? \"\";\n}\n\nexport function formatBlockValue(block: any): string {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n const value = block.value;\n\n switch (block.type) {\n case \"boolean\":\n return value ? \"Yes\" : \"No\";\n case \"number\":\n if (block.properties?.variant === \"DATE\" || block.properties?.variant === \"DATE_TIME\") {\n return new Date(value).toLocaleDateString();\n }\n return String(value);\n case \"relationship_entry\":\n case \"relationship_media\":\n if (value && typeof value === 'object') {\n return value.mime_type ? (value.name || value.id) : (value.title || value.name || value.id);\n }\n return String(value);\n default:\n return String(value);\n }\n}\n\nexport function prepareBlocksForSubmission(formData: any, blockTypes?: Record<string, string>): any[] {\n return Object.keys(formData)\n .filter((key) => formData[key] !== null && formData[key] !== undefined)\n .map((key) => ({\n key,\n value: (blockTypes?.[key] === 'list') && !Array.isArray(formData[key])\n ? [formData[key]]\n : formData[key],\n }));\n}\n\nexport function extractBlockValues(blocks: any[]): Record<string, any> {\n const values: Record<string, any> = {};\n blocks.forEach((block) => {\n values[block.key] = block.value ?? null;\n });\n return values;\n}\n\nexport const getBlockValue = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n return block?.value ?? null;\n};\n\nexport const getBlockTextValue = (block: any, locale: string = \"en\"): string => {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n \n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n if (typeof block.value === \"object\" && block.value !== null) {\n return block.value[locale] ?? block.value[\"en\"] ?? \"\";\n }\n }\n\n \n if (typeof block.value === \"string\") return block.value;\n\n return String(block.value ?? \"\");\n};\n\nexport const getBlockValues = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return [];\n\n \n if (block.type === \"list\" && Array.isArray(block.value)) {\n return block.value;\n }\n\n return [];\n};\n\nfunction unwrapBlock(block: any, locale: string) {\n if (!block?.type || block.value === undefined) return block;\n\n if (block.type === \"list\") {\n return block.value.map((obj: Record<string, any>) => {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(obj)) {\n parsed[k] = unwrapBlock(v, locale);\n }\n return parsed;\n });\n }\n\n if (block.type === \"map\") {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value || {})) {\n parsed[k] = unwrapBlock(v as any, locale);\n }\n return parsed;\n }\n\n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n return block.value?.[locale];\n }\n\n return block.value;\n}\n\nexport const getBlockObjectValues = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block || block.type !== \"list\" || !Array.isArray(block.value)) return [];\n\n return block.value.map((obj: Record<string, any>) => {\n if (!obj?.value || !Array.isArray(obj.value)) return {};\n return obj.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n });\n};\n\nexport const getBlockFromArray = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return {};\n\n if (block.type === \"list\" && Array.isArray(block.value)) {\n return block.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n }\n\n if (block.type === \"map\" && block.value && typeof block.value === \"object\") {\n const result: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value)) {\n result[k] = unwrapBlock(v as any, locale);\n }\n return result;\n }\n\n return { [block.key]: unwrapBlock(block, locale) };\n};\n\nexport const getImageUrl = (imageBlock: any, isBlock = true) => {\n if (!imageBlock) return null;\n\n if (imageBlock.type === \"relationship_media\") {\n const mediaValue = imageBlock.value;\n return mediaValue?.resolutions?.original?.url || mediaValue?.url || null;\n }\n\n if (isBlock) {\n if (typeof imageBlock === \"string\") return imageBlock;\n if (imageBlock.url) return imageBlock.url;\n }\n\n return imageBlock.resolutions?.original?.url || null;\n};\n\nexport const translateMap = (labels: any, lang: string) => {\n return labels?.[lang];\n};\n","import type {\n OrderCheckoutCompatibleItemInput,\n OrderCheckoutItemInput,\n OrderQuoteCompatibleItemInput,\n OrderQuoteItemInput,\n} from \"../types/api\";\n\nexport function normalizeOrderQuoteItems(\n items: OrderQuoteCompatibleItemInput[],\n): OrderQuoteItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n const type = (item as { type?: string }).type;\n return type === \"booking\" ? ({ ...item, type: \"service\" } as OrderQuoteItemInput) : item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n\nexport function normalizeOrderCheckoutItems(\n items: OrderCheckoutCompatibleItemInput[],\n): OrderCheckoutItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n const type = (item as { type?: string }).type;\n return type === \"booking\" ? ({ ...item, type: \"service\" } as OrderCheckoutItemInput) : item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n","import type { ApiConfig, CustomerSessionUpdater } from \"../index\";\nimport type {\n RequestOptions,\n GetNodeParams,\n GetNodesParams,\n GetNodeChildrenParams,\n GetFormParams,\n SubmitFormParams,\n GetTaxonomyParams,\n GetTaxonomyChildrenParams,\n GetProductParams,\n GetProductsParams,\n GetOrderParams,\n GetOrdersParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n GetServiceParams,\n GetServicesParams,\n FindServiceProvidersParams,\n GetProviderParams,\n GetProvidersParams,\n GetAudienceParams,\n GetAudiencesParams,\n SubscribeAudienceParams,\n GetAgentsParams,\n GetCurrentCartParams,\n GetCartParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n} from \"../types/api\";\nimport type {\n Node,\n Form,\n FormSubmission,\n Taxonomy,\n Audience,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n Service,\n Provider,\n Store,\n Location,\n Market,\n OrderQuote,\n Order,\n OrderCheckoutResult,\n Product,\n Agent,\n AgentChat,\n AgentChatMessage,\n Customer,\n CustomerDetail,\n Cart,\n PaginatedResponse,\n} from \"../types\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\nimport { normalizeOrderCheckoutItems } from \"../utils/orderItems\";\n\nexport type CustomerToken = {\n id: string;\n token: string;\n created_at: number;\n};\n\nexport type IdentifyResponse = {\n customer: Customer;\n token: CustomerToken;\n store: Store;\n market: Market | null;\n code_sent: boolean;\n};\n\nexport type VerifyResponse = CustomerToken;\ntype LogoutResponse = void;\ntype Country = {\n code: string;\n name: string;\n states: { code: string; name: string }[];\n};\ntype CountriesResponse = { items: Country[]; cursor: string | null };\n\nexport interface Activity {\n store_id: string;\n customer_id: string;\n type: string;\n payload: Record<string, unknown>;\n created_at: number;\n}\n\nexport interface TrackParams {\n type: string;\n payload?: Record<string, unknown>;\n}\n\nexport const COMMON_ACTIVITY_TYPES = [\n \"page_view\",\n \"product_view\",\n \"service_view\",\n \"provider_view\",\n \"cart_added\",\n \"cart_removed\",\n \"checkout_started\",\n \"purchase\",\n \"order_created\",\n \"signin\",\n \"signup\",\n \"verified_email\",\n \"search\",\n \"share\",\n \"wishlist_added\",\n] as const;\n\nexport type CommonActivityType = (typeof COMMON_ACTIVITY_TYPES)[number];\n\nexport const createActivityApi = (apiConfig: ApiConfig) => ({\n COMMON_ACTIVITY_TYPES,\n async track(params: TrackParams): Promise<void> {\n try {\n await apiConfig.httpClient.post<void>(\n `/v1/storefront/${apiConfig.storeId}/activities/track`,\n { type: params.type, payload: params.payload },\n );\n } catch {}\n },\n});\n\nexport const createStorefrontApi = (apiConfig: ApiConfig, updateCustomerSession: CustomerSessionUpdater) => {\n const base = (storeId = apiConfig.storeId) =>\n `/v1/storefront/${storeId}`;\n\n return {\n store: {\n getStore(options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.get<Store>(base(), options);\n },\n\n location: {\n getCountries(options?: RequestOptions): Promise<CountriesResponse> {\n return apiConfig.httpClient.get<CountriesResponse>(`/v1/platform/countries`, options);\n },\n\n getCountry(countryCode: string, options?: RequestOptions): Promise<Country> {\n return apiConfig.httpClient.get<Country>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n list(options?: RequestOptions): Promise<Location[]> {\n return apiConfig.httpClient.get<Location[]>(`${base()}/locations`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get<Location>(`${base()}/locations/${id}`, options);\n },\n },\n\n market: {\n list(options?: RequestOptions): Promise<Market[]> {\n return apiConfig.httpClient.get<Market[]>(`${base()}/markets`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get<Market>(`${base()}/markets/${id}`, options);\n },\n },\n },\n\n cms: {\n node: {\n async get(params: GetNodeParams, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetNodeParams requires id, slug, or key\");\n }\n\n const response = await apiConfig.httpClient.get<Node>(\n `${base(store_id)}/nodes/${identifier}`,\n options,\n );\n\n return {\n ...response,\n getBlock(key: string) {\n return getBlockFromArray(response, key, apiConfig.locale);\n },\n getBlockValues(key: string) {\n return getBlockObjectValues(response, key, apiConfig.locale);\n },\n getImage(key: string) {\n const block = getBlockFromArray(response, key, apiConfig.locale);\n return getImageUrl(block, true);\n },\n };\n },\n\n find(params: GetNodesParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(`${base(store_id)}/nodes`, {\n ...options,\n params: queryParams,\n });\n },\n\n getChildren(params: GetNodeChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { id, store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(`${base(store_id)}/nodes/${id}/children`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n form: {\n get(params: GetFormParams, options?: RequestOptions): Promise<Form> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Form>(\n `${base(store_id)}/forms/${identifier}`,\n options,\n );\n },\n\n submit(params: SubmitFormParams, options?: RequestOptions): Promise<FormSubmission> {\n const { store_id, form_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n if (!form_id) {\n throw new Error(\"SubmitFormParams requires form_id\");\n }\n\n return apiConfig.httpClient.post<FormSubmission>(\n `${base(target_store_id)}/forms/${form_id}/submissions`,\n { ...payload, form_id, store_id: target_store_id },\n options,\n );\n },\n },\n\n taxonomy: {\n get(params: GetTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Taxonomy>(\n `${base(store_id)}/taxonomies/${identifier}`,\n options,\n );\n },\n\n getChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `${base(store_id)}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n\n eshop: {\n product: {\n get(params: GetProductParams, options?: RequestOptions): Promise<Product> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Product>(\n `${base(store_id)}/products/${identifier}`,\n options,\n );\n },\n\n find(params: GetProductsParams, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Product>>(`${base(store_id)}/products`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n cart: {\n current(params: GetCurrentCartParams = {}, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _store_id, ...payload } = params;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/current`,\n { ...payload, store_id, market: payload.market || apiConfig.market },\n options,\n );\n },\n\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Cart>(`${base(store_id)}/carts/${params.id}`, {\n ...options,\n params: params.token ? { token: params.token } : options?.params,\n });\n },\n\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, items, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Cart>(\n `${base(target)}/carts/${params.id}`,\n {\n ...payload,\n store_id: target,\n ...(items ? { items: normalizeOrderCheckoutItems(items) } : {}),\n },\n options,\n );\n },\n\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, item, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items`,\n {\n ...payload,\n store_id: target,\n item: normalizeOrderCheckoutItems([item])[0],\n },\n options,\n );\n },\n\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items/remove`,\n { ...payload, store_id: target },\n options,\n );\n },\n\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/${params.id}/clear`,\n { id: params.id, store_id },\n options,\n );\n },\n\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderQuote>(\n `${base(store_id)}/carts/${params.id}/quote`,\n { id: params.id, store_id },\n options,\n );\n },\n\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderCheckoutResult>(\n `${base(store_id)}/carts/${params.id}/checkout`,\n {\n id: params.id,\n store_id,\n payment_method_id: params.payment_method_id,\n },\n options,\n );\n },\n },\n\n order: {\n get(params: GetOrderParams, options?: RequestOptions): Promise<Order> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Order>(\n `${base(store_id)}/orders/${params.id}`,\n options,\n );\n },\n\n find(params: GetOrdersParams, options?: RequestOptions): Promise<PaginatedResponse<Order>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Order>>(`${base(store_id)}/orders`, {\n ...options,\n params: queryParams,\n });\n },\n\n },\n\n service: {\n get(params: GetServiceParams, options?: RequestOptions): Promise<Service> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Service>(\n `${base(store_id)}/services/${identifier}`,\n options,\n );\n },\n\n find(params: GetServicesParams, options?: RequestOptions): Promise<PaginatedResponse<Service>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Service>>(`${base(store_id)}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n findProviders(params: FindServiceProvidersParams, options?: RequestOptions): Promise<Provider[]> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<Provider[]>(`${base(store_id)}/service-providers`, {\n ...options,\n params: queryParams,\n });\n },\n\n getAvailability(params: GetAvailabilityParams, options?: RequestOptions): Promise<AvailabilityResponse> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `${base(target_store_id)}/services/availability`,\n { ...options, params: queryParams },\n );\n },\n },\n\n provider: {\n get(params: GetProviderParams, options?: RequestOptions): Promise<Provider> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Provider>(\n `${base(store_id)}/providers/${identifier}`,\n options,\n );\n },\n\n find(params: GetProvidersParams, options?: RequestOptions): Promise<PaginatedResponse<Provider>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Provider>>(`${base(store_id)}/providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n crm: {\n customer: {\n async identify(\n params?: { email?: string; verify?: boolean; market?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<IdentifyResponse>(\n `${base(store_id)}/customers/identify`,\n {\n store_id,\n market: params?.market || apiConfig.market || null,\n email: params?.email,\n verify: params?.verify ?? false,\n },\n options,\n );\n if (result?.token?.token) {\n updateCustomerSession(() => ({\n access_token: result.token.token,\n customer: result.customer,\n store: result.store,\n market: result.market,\n }));\n }\n return result;\n },\n\n async verify(\n params: { code: string },\n options?: RequestOptions,\n ): Promise<VerifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<VerifyResponse>(\n `${base(store_id)}/customers/verify`,\n { store_id, code: params.code },\n options,\n );\n if (result?.token) {\n updateCustomerSession((prev) =>\n prev ? { ...prev, access_token: result.token } : null,\n );\n }\n return result;\n },\n\n async logout(options?: RequestOptions): Promise<LogoutResponse> {\n const store_id = apiConfig.storeId;\n try {\n await apiConfig.httpClient.post<void>(\n `${base(store_id)}/customers/logout`,\n {},\n options,\n );\n } finally {\n updateCustomerSession(() => null);\n }\n },\n\n getMe(options?: RequestOptions): Promise<CustomerDetail> {\n return apiConfig.httpClient.get<CustomerDetail>(`${base()}/customers/me`, options);\n },\n },\n\n audience: {\n get(params: GetAudienceParams, options?: RequestOptions): Promise<Audience> {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${apiConfig.storeId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Audience>(\n `${base(apiConfig.storeId)}/audiences/${identifier}`,\n options,\n );\n },\n\n find(params: GetAudiencesParams, options?: RequestOptions): Promise<PaginatedResponse<Audience>> {\n return apiConfig.httpClient.get<PaginatedResponse<Audience>>(`${base()}/audiences`, {\n ...options,\n params,\n });\n },\n\n subscribe(params: SubscribeAudienceParams, options?: RequestOptions): Promise<AudienceSubscribeResponse> {\n return apiConfig.httpClient.post<AudienceSubscribeResponse>(\n `${base()}/audiences/${params.id}/subscribe`,\n {\n customer_id: params.customer_id,\n price_id: params.price_id,\n success_url: params.success_url,\n cancel_url: params.cancel_url,\n confirm_url: params.confirm_url,\n },\n options,\n );\n },\n\n checkAccess(params: { id: string }, options?: RequestOptions): Promise<AudienceAccessResponse> {\n return apiConfig.httpClient.get<AudienceAccessResponse>(\n `${base()}/audiences/${params.id}/access`,\n options,\n );\n },\n\n unsubscribe(token: string, options?: RequestOptions): Promise<{ unsubscribed: boolean }> {\n return apiConfig.httpClient.get<{ unsubscribed: boolean }>(`${base()}/audiences/unsubscribe`, {\n ...options,\n params: { token },\n });\n },\n\n confirm(token: string, options?: RequestOptions): Promise<{ confirmed: boolean }> {\n return apiConfig.httpClient.get<{ confirmed: boolean }>(`${base()}/audiences/confirm`, {\n ...options,\n params: { token },\n });\n },\n },\n },\n\n activity: createActivityApi(apiConfig),\n\n automation: {\n agent: {\n getAgents(params?: GetAgentsParams, options?: RequestOptions): Promise<PaginatedResponse<Agent>> {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = { ...(params || {}) };\n delete queryParams.store_id;\n return apiConfig.httpClient.get<PaginatedResponse<Agent>>(`${base(store_id)}/agents`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n getAgent(params: { id: string; store_id?: string }, options?: RequestOptions): Promise<Agent> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Agent>(\n `${base(store_id)}/agents/${params.id}`,\n options,\n );\n },\n\n sendMessage(\n params: { id: string; message: string; chat_id?: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChatMessage> {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, unknown> = { message: params.message };\n if (params.chat_id) body.chat_id = params.chat_id;\n return apiConfig.httpClient.post<AgentChatMessage>(\n `${base(store_id)}/agents/${params.id}/chats/messages`,\n body,\n options,\n );\n },\n\n getChat(\n params: { id: string; chat_id: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChat> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AgentChat>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}`,\n options,\n );\n },\n\n getChatMessages(\n params: { id: string; chat_id: string; limit?: number; store_id?: string },\n options?: RequestOptions,\n ): Promise<PaginatedResponse<AgentChatMessage>> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, string> = {};\n if (params.limit) queryParams.limit = String(params.limit);\n return apiConfig.httpClient.get<PaginatedResponse<AgentChatMessage>>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/messages`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n rateChat(\n params: { id: string; chat_id: string; rating: number; comment?: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChat> {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, unknown> = { rating: params.rating };\n if (params.comment) body.comment = params.comment;\n return apiConfig.httpClient.post<AgentChat>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/rate`,\n body,\n options,\n );\n },\n },\n },\n };\n};\n","import type {\n AddCartItemParams,\n CheckoutCartParams,\n ClearCartParams,\n GetCartParams,\n GetCurrentCartParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"./types/api\";\nimport type { Cart, OrderCheckoutResult, OrderQuote } from \"./types\";\n\nexport interface CartApi {\n current(params?: GetCurrentCartParams, options?: RequestOptions): Promise<Cart>;\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart>;\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart>;\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nexport interface CartControllerState {\n cart: Cart | null;\n quote: OrderQuote | null;\n checkoutResult: OrderCheckoutResult | null;\n loading: boolean;\n initialized: boolean;\n error: unknown;\n}\n\nexport type CartControllerListener = (state: CartControllerState) => void;\n\nexport type CartControllerInitParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerRefreshParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerUpdateParams = Omit<UpdateCartParams, \"id\"> & { id?: string };\nexport type CartControllerAddItemParams = Omit<AddCartItemParams, \"id\"> & { id?: string };\nexport type CartControllerRemoveItemParams = Omit<RemoveCartItemParams, \"id\"> & { id?: string };\nexport type CartControllerClearParams = Omit<ClearCartParams, \"id\"> & { id?: string };\nexport type CartControllerQuoteParams = Omit<QuoteCartParams, \"id\"> & { id?: string };\nexport type CartControllerCheckoutParams = Omit<CheckoutCartParams, \"id\"> & { id?: string };\n\nexport interface CartController {\n subscribe(listener: CartControllerListener): () => void;\n getState(): CartControllerState;\n init(params?: CartControllerInitParams, options?: RequestOptions): Promise<Cart>;\n refresh(params?: CartControllerRefreshParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: CartControllerAddItemParams, options?: RequestOptions): Promise<Cart>;\n update(params: CartControllerUpdateParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: CartControllerRemoveItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params?: CartControllerClearParams, options?: RequestOptions): Promise<Cart>;\n quote(params?: CartControllerQuoteParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params?: CartControllerCheckoutParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nfunction hasCartId(params: CartControllerInitParams): params is GetCartParams {\n return \"id\" in params && typeof params.id === \"string\" && params.id.length > 0;\n}\n\nexport function createCartController(cartApi: CartApi): CartController {\n const listeners = new Set<CartControllerListener>();\n let state: CartControllerState = {\n cart: null,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: false,\n error: null,\n };\n\n function emit(): void {\n for (const listener of listeners) {\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n }\n }\n\n function setState(patch: Partial<CartControllerState>): CartControllerState {\n state = { ...state, ...patch };\n emit();\n return state;\n }\n\n function currentCartId(id?: string): string {\n const cartId = id || state.cart?.id;\n if (!cartId) {\n throw new Error(\"Cart has not been initialized and no cart id was provided\");\n }\n return cartId;\n }\n\n async function runCartMutation(operation: () => Promise<Cart>): Promise<Cart> {\n setState({ loading: true, error: null });\n try {\n const cart = await operation();\n setState({\n cart,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: true,\n error: null,\n });\n return cart;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n }\n\n return {\n subscribe(listener) {\n listeners.add(listener);\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n return () => {\n listeners.delete(listener);\n };\n },\n\n getState() {\n return state;\n },\n\n init(params = {}, options) {\n if (state.initialized && state.cart) {\n return Promise.resolve(state.cart);\n }\n return this.refresh(params, options);\n },\n\n refresh(params = {}, options) {\n return runCartMutation(() =>\n hasCartId(params)\n ? cartApi.get(params, options)\n : cartApi.current(params, options),\n );\n },\n\n addItem(params, options) {\n return runCartMutation(() =>\n cartApi.addItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n update(params, options) {\n return runCartMutation(() =>\n cartApi.update({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n removeItem(params, options) {\n return runCartMutation(() =>\n cartApi.removeItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n clear(params = {}, options) {\n return runCartMutation(() =>\n cartApi.clear({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n async quote(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const quote = await cartApi.quote(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ quote, loading: false, error: null });\n return quote;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n\n async checkout(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const checkoutResult = await cartApi.checkout(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ checkoutResult, loading: false, error: null });\n return checkoutResult;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n };\n}\n","\nexport const ERROR_CODES = {\n \n \"GENERAL.001\": \"GENERAL.BAD_REQUEST\",\n \"GENERAL.002\": \"GENERAL.VALIDATION_ERROR\",\n \"GENERAL.003\": \"GENERAL.FORBIDDEN_ERROR\",\n \"GENERAL.004\": \"GENERAL.INTERNAL_SERVER_ERROR\",\n \"GENERAL.005\": \"GENERAL.UNAUTHORIZED\",\n \"GENERAL.006\": \"GENERAL.UNAUTHENTICATED\",\n\n \"GOOGLE.001\": \"GOOGLE.INVALID_ORIGIN_URI\",\n \"GOOGLE.002\": \"GOOGLE.INVALID_REDIRECT_URI\",\n \"GOOGLE.003\": \"GOOGLE.FAILED_TO_CALL_API\",\n \"GOOGLE.004\": \"GOOGLE.FAILED_LOGIN\",\n \"GOOGLE.005\": \"GOOGLE.FAILED_LOGOUT\",\n \"GOOGLE.006\": \"GOOGLE.FAILED_REFRESH_TOKEN\",\n \"GOOGLE.007\": \"GOOGLE.INVALID_PROVIDER_PASSED\",\n\n \"USER.001\": \"USER.NOT_FOUND\",\n \"USER.002\": \"USER.FAILED_TO_CREATE\",\n \"USER.003\": \"USER.FAILED_TO_UPDATE\",\n \"USER.004\": \"USER.FAILED_TO_DELETE\",\n \"USER.005\": \"USER.EMAIL_EXISTS\",\n \"USER.006\": \"USER.FAILED_TO_GET_UPLOAD_URL\",\n\n \"STORE.001\": \"STORE.NOT_FOUND\",\n \"STORE.002\": \"STORE.FAILED_TO_CREATE\",\n \"STORE.003\": \"STORE.FAILED_TO_UPDATE\",\n \"STORE.004\": \"STORE.FAILED_TO_DELETE\",\n \"STORE.005\": \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n \"STORE.006\": \"STORE.NAME_REQUIRED\",\n \"STORE.007\": \"STORE.STORE_ID_REQUIRED\",\n \"STORE.010\": \"STORE.DESCRIPTION_REQUIRED\",\n \"STORE.011\": \"STORE.SLUG_INVALID\",\n\n \"PROVIDER.001\": \"PROVIDER.NOT_FOUND\",\n \"PROVIDER.002\": \"PROVIDER.FAILED_TO_CREATE\",\n \"PROVIDER.003\": \"PROVIDER.FAILED_TO_UPDATE\",\n \"PROVIDER.004\": \"PROVIDER.FAILED_TO_DELETE\",\n \"PROVIDER.005\": \"PROVIDER.FAILED_TO_GET_UPLOAD_URL\",\n \"PROVIDER.006\": \"PROVIDER.NAME_REQUIRED\",\n \"PROVIDER.007\": \"PROVIDER.STORE_ID_REQUIRED\",\n \"PROVIDER.008\": \"PROVIDER.DESCRIPTION_REQUIRED\",\n};\n\nexport const ERROR_CONSTANTS = {\n GENERAL: {\n BAD_REQUEST: \"GENERAL.BAD_REQUEST\",\n VALIDATION_ERROR: \"GENERAL.VALIDATION_ERROR\",\n FORBIDDEN_ERROR: \"GENERAL.FORBIDDEN_ERROR\",\n INTERNAL_SERVER_ERROR: \"GENERAL.INTERNAL_SERVER_ERROR\",\n UNAUTHORIZED: \"GENERAL.UNAUTHORIZED\",\n UNAUTHENTICATED: \"GENERAL.UNAUTHENTICATED\",\n },\n USER: {\n NOT_FOUND: \"USER.NOT_FOUND\",\n FAILED_TO_CREATE: \"USER.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"USER.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"USER.FAILED_TO_DELETE\",\n EMAIL_EXISTS: \"USER.EMAIL_EXISTS\",\n FAILED_TO_GET_UPLOAD_URL: \"USER.FAILED_TO_GET_UPLOAD_URL\",\n },\n STORE: {\n NOT_FOUND: \"STORE.NOT_FOUND\",\n FAILED_TO_CREATE: \"STORE.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"STORE.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"STORE.FAILED_TO_DELETE\",\n FAILED_TO_GET_UPLOAD_URL: \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n NAME_REQUIRED: \"STORE.NAME_REQUIRED\",\n STORE_ID_REQUIRED: \"STORE.STORE_ID_REQUIRED\",\n DESCRIPTION_REQUIRED: \"STORE.DESCRIPTION_REQUIRED\",\n SLUG_INVALID: \"STORE.SLUG_INVALID\",\n },\n};\n\nexport type ServerError = {\n message: string;\n error: string;\n statusCode: number;\n validationErrors: {\n field: string;\n error: string;\n }[];\n};\n\nexport type ValidationError = {\n field: string;\n error: string;\n};\n\nexport type RequestError = {\n validationErrors: ValidationError[];\n};\n\nexport function getErrorMessage(code: string): string {\n return ERROR_CODES[code as keyof typeof ERROR_CODES] || code;\n}\n\nexport function isErrorCode(code: string): boolean {\n return code in ERROR_CODES;\n}\n\nexport const transformErrors = (zodError: any): ValidationError[] => {\n const customErrors: ValidationError[] = [];\n\n if (!zodError.issues) return customErrors;\n\n zodError.issues.forEach((issue: any) => {\n const field = issue.path.join(\".\");\n const error = issue.message;\n\n if (\n !customErrors.some(\n (customError) =>\n customError.field === field && customError.error === error\n )\n ) {\n customErrors.push({ field, error });\n }\n });\n\n return customErrors;\n};\n\nexport const convertServerErrorToRequestError = (\n serverError: ServerError,\n renameRules?: { [key: string]: string }\n): RequestError => {\n const validationErrors = serverError?.validationErrors ?? [];\n\n return {\n ...serverError,\n validationErrors: validationErrors.map((validationError) => {\n const field =\n renameRules && renameRules[validationError.field]\n ? renameRules[validationError.field]\n : validationError.field;\n\n return {\n field: field,\n error: validationError.error || \"GENERAL.VALIDATION_ERROR\",\n };\n }),\n };\n};\n\nexport const errors = ERROR_CONSTANTS;\nexport default ERROR_CODES;\n","\nexport interface QueryParams {\n [key: string]: string | number | boolean | string[] | number[] | null | undefined;\n}\n\nexport function buildQueryString(params: QueryParams): string {\n const queryParts: string[] = [];\n \n Object.entries(params).forEach(([key, value]) => {\n \n if (value === null || value === undefined) {\n return;\n }\n \n if (Array.isArray(value)) {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\n }\n \n else if (typeof value === 'string') {\n queryParts.push(`${key}=${encodeURIComponent(value)}`);\n }\n \n else if (typeof value === 'number' || typeof value === 'boolean') {\n queryParts.push(`${key}=${value}`);\n }\n \n else if (typeof value === 'object') {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\n }\n });\n \n return queryParts.length > 0 ? `?${queryParts.join('&')}` : '';\n}\n\nexport function appendQueryString(url: string, params: QueryParams): string {\n const queryString = buildQueryString(params);\n return queryString ? `${url}${queryString}` : url;\n}\n","import {\n\tconvertServerErrorToRequestError,\n\ttype ServerError\n} from '../utils/errors';\nimport { buildQueryString, type QueryParams } from '../utils/queryParams';\n\nexport interface TokenSet {\n\taccess_token: string;\n\trefresh_token?: string;\n\taccess_expires_at?: number;\n}\n\nexport interface AuthStorage {\n\tgetTokens(): TokenSet | null;\n\tonTokensRefreshed(tokens: TokenSet): void;\n\tonForcedLogout(): void;\n}\n\nexport interface RequestSuccessContext<T = unknown> {\n\tdata: T;\n\tmethod: string;\n\turl: string;\n\tstatus: number;\n\trequest?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n}\n\nexport interface RequestErrorContext {\n\terror: unknown;\n\tmethod: string;\n\turl: string;\n\tstatus?: number;\n\trequest?: unknown;\n\tresponse?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n\taborted?: boolean;\n}\n\nexport interface RequestOptions<T = unknown> {\n\theaders?: Record<string, string>;\n\tparams?: QueryParams | Record<string, any>;\n\ttransformRequest?: (data: unknown) => unknown;\n\tonSuccess?: (ctx: RequestSuccessContext<T>) => void | Promise<void>;\n\tonError?: (ctx: RequestErrorContext) => void | Promise<void>;\n}\n\nexport interface HttpClient {\n\tget<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n\tpost<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tput<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tpatch<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tdelete<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\tstoreId: string;\n\tauthStorage: AuthStorage;\n\trefreshPath?: string | (() => string);\n\tnavigate?: (path: string) => void;\n\tloginFallbackPath?: string;\n}\n\nexport function createHttpClient(cfg: HttpClientConfig): HttpClient {\n\tconst { authStorage } = cfg;\n\tlet refreshPromise: Promise<void> | null = null;\n\n\tfunction getRefreshEndpoint() {\n\t\tconst refreshPath = typeof cfg.refreshPath === \"function\"\n\t\t\t? cfg.refreshPath()\n\t\t\t: cfg.refreshPath || '/v1/auth/refresh';\n\t\treturn `${cfg.baseUrl}${refreshPath}`;\n\t}\n\n\tasync function ensureFreshToken() {\n\t\tif (refreshPromise) {\n\t\t\treturn refreshPromise;\n\t\t}\n\n\t\trefreshPromise = (async () => {\n\t\t\tconst tokens = authStorage.getTokens();\n\t\t\tconst refresh_token = tokens?.refresh_token;\n\t\t\tif (!refresh_token) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('No refresh token available');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst refRes = await fetch(getRefreshEndpoint(), {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Accept: 'application/json', 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ refresh_token })\n\t\t\t});\n\n\t\t\tif (!refRes.ok) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('Token refresh failed');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst data = await refRes.json();\n\t\t\tauthStorage.onTokensRefreshed(data);\n\t\t})().finally(() => {\n\t\t\trefreshPromise = null;\n\t\t});\n\n\t\treturn refreshPromise;\n\t}\n\n\tasync function request<T>(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\toptions?: RequestOptions<T> & { _retried?: boolean }\n\t): Promise<T> {\n\t\tif (options?.transformRequest) {\n\t\t\tbody = options.transformRequest(body);\n\t\t}\n\n\t\tconst headers: Record<string, string> = {\n\t\t\tAccept: 'application/json',\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...(options?.headers || {})\n\t\t};\n\n\t\tlet tokens = authStorage.getTokens();\n\t\tconst nowSec = Date.now() / 1000;\n\t\tif (tokens?.access_expires_at && nowSec > tokens.access_expires_at) {\n\t\t\tawait ensureFreshToken();\n\t\t\ttokens = authStorage.getTokens();\n\t\t}\n\n\t\tif (tokens?.access_token) {\n\t\t\theaders['Authorization'] = `Bearer ${tokens.access_token}`;\n\t\t}\n\n\t\tconst finalPath = options?.params ? path + buildQueryString(options.params as QueryParams) : path;\n\n\t\tconst fetchOpts: any = { method, headers };\n\t\tif (!['GET', 'DELETE'].includes(method) && body !== undefined) {\n\t\t\tfetchOpts.body = JSON.stringify(body);\n\t\t}\n\n\t\tconst fullUrl = `${cfg.baseUrl}${finalPath}`;\n\t\tlet res: Response;\n\t\tlet data: any;\n\t\tconst startedAt = Date.now();\n\n\t\ttry {\n\t\t\tres = await fetch(fullUrl, fetchOpts);\n\t\t} catch (error) {\n\t\t\tconst err: any = new Error(error instanceof Error ? error.message : 'Network request failed');\n\t\t\terr.name = 'NetworkError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, aborted: false })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (res.status === 401 && !options?.['_retried']) {\n\t\t\ttry {\n\t\t\t\tawait ensureFreshToken();\n\t\t\t\tconst refreshed = authStorage.getTokens();\n\t\t\t\tif (refreshed?.access_token) {\n\t\t\t\t\theaders['Authorization'] = `Bearer ${refreshed.access_token}`;\n\t\t\t\t\tfetchOpts.headers = headers;\n\t\t\t\t}\n\t\t\t\treturn request<T>(method, path, body, { ...options, _retried: true });\n\t\t\t} catch (refreshError) {\n\t\t\t\tthrow refreshError;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst contentLength = res.headers.get('content-length');\n\t\t\tconst contentType = res.headers.get('content-type');\n\t\t\tif (res.status === 204 || contentLength === '0' || !contentType?.includes('application/json')) {\n\t\t\t\tdata = {};\n\t\t\t} else {\n\t\t\t\tdata = await res.json();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst err: any = new Error('Failed to parse response');\n\t\t\terr.name = 'ParseError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\terr.status = res.status;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, status: res.status })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (!res.ok) {\n\t\t\tconst serverErr: ServerError = data;\n\t\t\tconst reqErr = convertServerErrorToRequestError(serverErr);\n\t\t\tconst err: any = new Error(serverErr.message || 'Request failed');\n\t\t\terr.name = 'ApiError';\n\t\t\terr.statusCode = serverErr.statusCode || res.status;\n\t\t\terr.validationErrors = reqErr.validationErrors;\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tif (requestId) err.requestId = requestId;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({\n\t\t\t\t\t\terror: err,\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\turl: fullUrl,\n\t\t\t\t\t\tstatus: res.status,\n\t\t\t\t\t\tresponse: serverErr,\n\t\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t\t})\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (options?.onSuccess && method !== 'GET') {\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tPromise.resolve(\n\t\t\t\toptions.onSuccess({\n\t\t\t\t\tdata: data as T,\n\t\t\t\t\tmethod,\n\t\t\t\t\turl: fullUrl,\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t})\n\t\t\t).catch(() => {});\n\t\t}\n\t\treturn data as T;\n\t}\n\n\treturn {\n\t\tget: <T>(path: string, opts?: RequestOptions<T>) => request<T>('GET', path, undefined, opts),\n\t\tpost: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('POST', path, body, opts),\n\t\tput: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PUT', path, body, opts),\n\t\tpatch: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PATCH', path, body, opts),\n\t\tdelete: <T>(path: string, opts?: RequestOptions<T>) => request<T>('DELETE', path, undefined, opts)\n\t};\n}\n","import type { OrderPayment, Price } from '../types';\n\ntype AnyPayment = Pick<OrderPayment, 'total' | 'currency'>;\n\nfunction formatCurrency(amount: number, currencyCode: string, locale: string = 'en'): string {\n if (!currencyCode) return '';\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode.toUpperCase(),\n }).format(amount);\n}\n\nfunction getMinorUnits(currency: string): number {\n try {\n const formatter = new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n });\n const parts = formatter.formatToParts(1.11);\n const fractionPart = parts.find(p => p.type === 'fraction');\n return fractionPart?.value.length ?? 2;\n } catch {\n return 2;\n }\n}\n\nexport function convertToMajor(minorAmount: number, currency: string): number {\n const units = getMinorUnits(currency);\n return minorAmount / Math.pow(10, units);\n}\n\nexport function convertToMinor(majorAmount: number, currency: string): number {\n const units = getMinorUnits(currency);\n return Math.round(majorAmount * Math.pow(10, units));\n}\n\nexport function getCurrencySymbol(currency: string): string {\n try {\n return new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n currencyDisplay: 'narrowSymbol'\n }).formatToParts(0).find(p => p.type === 'currency')?.value || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function getCurrencyName(currency: string): string {\n try {\n return new Intl.DisplayNames(['en'], { type: 'currency' }).of(currency.toUpperCase()) || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function formatMinor(amountMinor: number, currency: string): string {\n if (!currency) return '';\n return formatCurrency(convertToMajor(amountMinor, currency), currency);\n}\n\nexport function formatPayment(payment: AnyPayment): string {\n return formatMinor(payment.total, payment.currency);\n}\n\nexport function formatPrice(prices: Price[], marketId?: string): string {\n if (!prices || prices.length === 0) return '';\n\n const price = marketId\n ? prices.find(p => p.market === marketId) || prices[0]\n : prices[0];\n\n if (!price) return '';\n\n return formatMinor(price.amount, price.currency);\n}\n\nexport function getPriceAmount(prices: Price[], marketId: string): number {\n if (!prices || prices.length === 0) return 0;\n const price = prices.find(p => p.market === marketId) || prices[0];\n return price?.amount || 0;\n}\n","\nexport interface ValidationResult {\n isValid: boolean;\n error?: string;\n}\n\nexport function validatePhoneNumber(phone: string): ValidationResult {\n if (!phone) {\n return { isValid: false, error: 'Phone number is required' };\n }\n \n const cleaned = phone.replace(/\\D/g, '');\n \n if (cleaned.length < 8) {\n return { isValid: false, error: 'Phone number is too short' };\n }\n \n if (cleaned.length > 15) {\n return { isValid: false, error: 'Phone number is too long' };\n }\n \n return { isValid: true };\n}\n\nexport function validateEmail(email: string): ValidationResult {\n if (!email) {\n return { isValid: false, error: 'Email is required' };\n }\n \n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n \n if (!emailRegex.test(email)) {\n return { isValid: false, error: 'Please enter a valid email address' };\n }\n \n return { isValid: true };\n}\n\nexport function validateVerificationCode(code: string): ValidationResult {\n if (!code) {\n return { isValid: false, error: 'Verification code is required' };\n }\n \n const cleaned = code.replace(/\\D/g, '');\n \n if (cleaned.length !== 4) {\n return { isValid: false, error: 'Please enter a 4-digit verification code' };\n }\n \n return { isValid: true };\n}\n\nexport function validateRequired(value: any, fieldName: string = 'This field'): ValidationResult {\n if (value === null || value === undefined || value === '') {\n return { isValid: false, error: `${fieldName} is required` };\n }\n \n return { isValid: true };\n}\n","\nexport const tzGroups = [\n {\n label: \"US\",\n zones: [\n { label: \"Eastern Time\", value: \"America/New_York\" },\n { label: \"Central Time\", value: \"America/Chicago\" },\n { label: \"Mountain Time\", value: \"America/Denver\" },\n { label: \"Pacific Time\", value: \"America/Los_Angeles\" },\n ],\n },\n {\n label: \"Europe\",\n zones: [\n { label: \"London\", value: \"Europe/London\" },\n { label: \"Paris\", value: \"Europe/Paris\" },\n { label: \"Berlin\", value: \"Europe/Berlin\" },\n { label: \"Rome\", value: \"Europe/Rome\" },\n ],\n },\n {\n label: \"Asia\",\n zones: [\n { label: \"Tokyo\", value: \"Asia/Tokyo\" },\n { label: \"Shanghai\", value: \"Asia/Shanghai\" },\n { label: \"Mumbai\", value: \"Asia/Kolkata\" },\n { label: \"Dubai\", value: \"Asia/Dubai\" },\n ],\n },\n];\n\nexport function findTimeZone(groups: typeof tzGroups): string {\n try {\n const detected = Intl.DateTimeFormat().resolvedOptions().timeZone;\n \n for (const group of groups) {\n for (const zone of group.zones) {\n if (zone.value === detected) {\n return detected;\n }\n }\n }\n \n return \"UTC\";\n } catch (e) {\n \n return \"UTC\";\n }\n}\n","\nconst locales = ['en', 'sr-latn'] as const;\nconst localeMap: Record<typeof locales[number], string> = {\n\t'en': 'en-US',\n\t'sr-latn': 'sr-RS'\n};\n\nexport function slugify(text: string): string {\n\treturn text\n\t\t.toString()\n\t\t.toLowerCase()\n\t\t.replace(/\\s+/g, \"-\")\n\t\t.replace(/[^\\w-]+/g, \"\")\n\t\t.replace(/--+/g, \"-\")\n\t\t.replace(/^-+/, \"\")\n\t\t.replace(/-+$/, \"\");\n}\n\nexport function humanize(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn (\n\t\tslugifiedText\n\t\t\t.replace(/-/g, \" \")\n\t\t\t\n\t\t\t.replace(\n\t\t\t\t\n\t\t\t\t/\\w\\S*/g,\n\t\t\t\t(w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase(),\n\t\t\t)\n\t);\n}\n\nexport function categorify(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn slugifiedText\n\t\t.replace(/-/g, \" \")\n\t\t.toUpperCase();\n}\n\nexport function formatDate(date: string | number | Date, locale: (typeof locales)[number]): string {\n\tlet localeString = \"en-US\";\n\n\tif (locales.includes(locale)) {\n\t\tlocaleString = localeMap[locale];\n\t}\n\n\treturn new Date(date).toLocaleDateString(localeString, {\n\t\ttimeZone: \"UTC\",\n\t\tyear: \"numeric\",\n\t\tmonth: \"short\",\n\t\tday: \"numeric\",\n\t});\n}\n","import { getImageUrl } from \"./blocks\";\n\nexport async function fetchSvgContent(mediaObject: any): Promise<string | null> {\n\tif (!mediaObject) return null;\n\n\tconst svgUrl = getImageUrl(mediaObject, false);\n\n\ttry {\n\t\tconst response = await fetch(svgUrl);\n\n\t\tif (!response.ok) {\n\t\t\tconsole.error(`Failed to fetch SVG: ${response.status} ${response.statusText}`);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst svgContent = await response.text();\n\t\treturn svgContent;\n\t} catch (error) {\n\t\tconsole.error(\"Error fetching SVG:\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function getSvgContentForAstro(mediaObject: any): Promise<string> {\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\t\treturn svgContent || \"\";\n\t} catch (error) {\n\t\tconsole.error(\"Error getting SVG content for Astro:\", error);\n\t\treturn \"\";\n\t}\n}\n\nexport async function injectSvgIntoElement(\n\tmediaObject: any,\n\ttargetElement: HTMLElement,\n\tclassName?: string,\n): Promise<void> {\n\tif (!targetElement) return;\n\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\n\t\tif (svgContent) {\n\t\t\ttargetElement.innerHTML = svgContent;\n\n\t\t\tif (className) {\n\t\t\t\tconst svgElement = targetElement.querySelector(\"svg\");\n\t\t\t\tif (svgElement) {\n\t\t\t\t\tsvgElement.classList.add(...className.split(\" \"));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"Error injecting SVG:\", error);\n\t}\n}\n","\nconst KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport function isValidKey(key: string): boolean {\n if (!key || key.length === 0) return false;\n return KEY_PATTERN.test(key);\n}\n\nexport function validateKey(key: string): { valid: boolean; error?: string } {\n if (!key || key.length === 0) {\n return { valid: false, error: \"Key is required\" };\n }\n\n if (key.length > 255) {\n return { valid: false, error: \"Key must be 255 characters or less\" };\n }\n\n if (!KEY_PATTERN.test(key)) {\n return {\n valid: false,\n error:\n \"Key can only contain letters, numbers, underscores (_) and hyphens (-)\",\n };\n }\n\n return { valid: true };\n}\n\nexport function toKey(input: string): string {\n if (!input) return \"\";\n\n return input\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"_\")\n .replace(/[^a-z0-9_-]/g, \"\")\n .replace(/^[-_]+|[-_]+$/g, \"\")\n .replace(/[-_]{2,}/g, \"_\");\n}\n\nexport function nameToKey(name: string): string {\n return toKey(name);\n}\n","import type { InventoryLevel, Location } from '../types';\n\nexport interface VariantWithInventory {\n inventory: InventoryLevel[];\n}\n\n\nexport function getAvailableStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.available, 0);\n}\n\n\nexport function getReservedStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.reserved, 0);\n}\n\n\nexport function hasStock(variant: VariantWithInventory, quantity: number = 1): boolean {\n return getAvailableStock(variant) >= quantity;\n}\n\n\nexport function getInventoryAt(\n variant: VariantWithInventory,\n locationId: string\n): InventoryLevel | undefined {\n return variant?.inventory?.find(inv => inv.location_id === locationId);\n}\n\n\nexport function getFirstAvailableFCId(\n variant: VariantWithInventory,\n quantity: number = 1\n): string | undefined {\n const inv = variant?.inventory?.find(i => i.available >= quantity);\n return inv?.location_id;\n}\n","\nexport type {\n ApiResponse,\n EshopCartItem,\n Cart,\n CartOrigin,\n CartStatus,\n EshopStoreState,\n Store,\n Webhook,\n WebhookEventSubscription,\n Integration,\n IntegrationProvider,\n Block,\n Price,\n OrderPayment,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderPaymentProvider,\n OrderPaymentRefund,\n OrderQuote,\n StoreSubscription,\n StoreSubscriptionPayment,\n StoreSubscriptionProvider,\n StoreSubscriptionStatus,\n StoreSubscriptionSource,\n SubscriptionPlan,\n AudienceSubscription,\n AudienceSubscriptionPayment,\n AudienceSubscriptionProvider,\n AudienceSubscriptionStatus,\n AudienceSubscriptionSource,\n PaymentMethod,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n\n Address,\n GeoLocation,\n ZoneLocation,\n Location,\n PromoCodeValidation,\n PaginatedResponse,\n Language,\n Access,\n Media,\n MediaResolution,\n ProviderWithTimeline,\n Node,\n Workflow,\n WorkflowNode,\n WorkflowEdge,\n WorkflowTriggerNode,\n WorkflowHttpNode,\n WorkflowSwitchNode,\n WorkflowSwitchRule,\n WorkflowTransformNode,\n WorkflowLoopNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n Audience,\n AudienceType,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n AudienceSubscriber,\n Event,\n EventAction,\n\n ShippingStatus,\n OrderShipping,\n ShippingRate,\n ShippingAddress,\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShipmentLine,\n Shipment,\n CustomsItem,\n CustomsDeclaration,\n\n GeoLocationBlock,\n\n Service,\n Provider,\n ServiceProvider,\n ServiceDuration,\n ProviderTimelinePoint,\n TimelinePoint,\n WorkingHour,\n WorkingDay,\n SpecificDate,\n\n Order,\n OrderItem,\n OrderItemSnapshot,\n ProductOrderItem,\n ServiceOrderItem,\n ProductOrderItemSnapshot,\n ServiceOrderItemSnapshot,\n QuoteLine,\n ProductQuoteLine,\n ServiceQuoteLine,\n ProductQuoteLineAvailability,\n ServiceQuoteLineAvailability,\n OrderItemStatus,\n OrderPaymentStatus,\n OrderCancellationReason,\n HistoryEntry,\n\n Product,\n ProductVariant,\n ProductInventory,\n InventoryLevel,\n GalleryItem,\n\n EmailTemplate,\n Form,\n FormSubmission,\n FormSchema,\n FormSchemaType,\n FormField,\n FormFieldType,\n FormEntry,\n Taxonomy,\n TaxonomyEntry,\n TaxonomyQuery,\n TaxonomySchema,\n TaxonomySchemaType,\n TaxonomyField,\n TaxonomyFieldQuery,\n\n Agent,\n AgentChat,\n AgentChatMessage,\n PromoCode,\n\n Customer,\n Account,\n AccountToken,\n AccountUpdateResponse,\n StoreMembership,\n Discount,\n Condition,\n\n ServiceStatus,\n ProviderStatus,\n ProductStatus,\n CustomerStatus,\n AudienceStatus,\n AgentChatStatus,\n WorkflowStatus,\n PromoCodeStatus,\n NodeStatus,\n EmailTemplateStatus,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\n\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SlotRange,\n EshopItem,\n EshopQuoteItem,\n ServiceCheckoutPart,\n ServiceQuoteItem,\n ConditionValue,\n ProductQuoteItemInput,\n ServiceQuoteItemInput,\n OrderQuoteItemInput,\n QuoteItemInput,\n OrderQuoteCompatibleItemInput,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n OrderCheckoutItemInput,\n CheckoutItemInput,\n OrderCheckoutCompatibleItemInput,\n GetCurrentCartParams,\n GetCartParams,\n FindCartsParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n SystemTemplateKey,\n \n GetShippingRatesParams,\n ShipParams,\n \n CreateAgentParams,\n UpdateAgentParams,\n GetAgentParams,\n GetAgentsParams,\n AgentStatus,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport type {\n AnalyticsQuery,\n AnalyticsQueryResponse,\n AnalyticsRow,\n Measure,\n Dimension,\n Filter,\n FilterField,\n FilterOp,\n Granularity,\n EntityKind,\n TimeRange,\n TimeUnit,\n OrderBy,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n} from \"./types/api\";\n\nexport type {\n Activity,\n TrackParams,\n CommonActivityType,\n} from \"./api/storefront\";\nexport { COMMON_ACTIVITY_TYPES } from \"./api/storefront\";\nexport {\n createCartController,\n type CartApi,\n type CartController,\n type CartControllerAddItemParams,\n type CartControllerCheckoutParams,\n type CartControllerClearParams,\n type CartControllerInitParams,\n type CartControllerListener,\n type CartControllerQuoteParams,\n type CartControllerRefreshParams,\n type CartControllerRemoveItemParams,\n type CartControllerState,\n type CartControllerUpdateParams,\n} from \"./cartController\";\n\nexport type { TimelineParams } from \"./api/crm\";\nexport type {\n IntegrationOperation,\n IntegrationResource,\n IntegrationService,\n} from \"./api/platform\";\n\nexport const SDK_VERSION = \"0.7.124\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nimport type { Customer as CustomerType, Store as StoreType, Market as MarketType } from \"./types\";\n\nexport interface ApiConfig {\n httpClient: HttpClient;\n storeId: string;\n baseUrl: string;\n market: string;\n locale: string;\n authStorage: AuthStorage;\n}\n\nexport interface AdminSessionInternal {\n access_token: string;\n refresh_token: string;\n access_expires_at?: number;\n email?: string;\n}\n\nexport interface CustomerSessionInternal {\n access_token: string;\n customer: CustomerType;\n store: StoreType;\n market: MarketType | null;\n}\n\nexport interface AdminSession {\n email?: string;\n}\n\nexport interface CustomerSession {\n customer: CustomerType;\n store: StoreType;\n market: MarketType | null;\n}\n\nexport type AdminSessionUpdater = (\n updater: (prev: AdminSessionInternal | null) => AdminSessionInternal | null,\n) => void;\n\nexport type CustomerSessionUpdater = (\n updater: (prev: CustomerSessionInternal | null) => CustomerSessionInternal | null,\n) => void;\n\nexport type AuthStateListener<T> = (session: T | null) => void;\n\nimport {\n createHttpClient,\n type HttpClientConfig,\n type HttpClient,\n type AuthStorage,\n} from \"./services/createHttpClient\";\nimport { createAccountApi } from \"./api/account\";\nimport { createAuthApi } from \"./api/auth\";\nimport { createStoreApi } from \"./api/store\";\nimport { createMediaApi } from \"./api/media\";\nimport { createNotificationApi } from \"./api/notification\";\nimport { createPromoCodeApi } from \"./api/promoCode\";\nimport { createCmsApi } from \"./api/cms\";\nimport { createEshopApi } from \"./api/eshop\";\nimport { createLocationApi } from \"./api/location\";\nimport { createMarketApi } from \"./api/market\";\nimport { createCustomerApi } from \"./api/crm\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createAgentApi } from \"./api/agent\";\nimport { createEmailTemplateApi } from \"./api/emailTemplate\";\nimport { createFormApi } from \"./api/form\";\nimport { createTaxonomyApi } from \"./api/taxonomy\";\nimport { createAnalyticsApi } from \"./api/analytics\";\nimport { createStorefrontApi } from \"./api/storefront\";\nimport { createCartController } from \"./cartController\";\nimport {\n getImageUrl,\n getBlockValue,\n getBlockTextValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n} from \"./utils/blocks\";\nimport {\n formatPrice,\n getPriceAmount,\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n} from \"./utils/price\";\nimport { validatePhoneNumber } from \"./utils/validation\";\nimport { tzGroups, findTimeZone } from \"./utils/timezone\";\nimport { slugify, humanize, categorify, formatDate } from \"./utils/text\";\nimport {\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n} from \"./utils/svg\";\nimport {\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n} from \"./utils/keyValidation\";\nimport {\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n} from \"./utils/inventory\";\n\nfunction createUtilitySurface(apiConfig: ApiConfig) {\n return {\n getImageUrl: (imageBlock: any, isBlock = true) =>\n getImageUrl(imageBlock, isBlock),\n getBlockValue,\n getBlockTextValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n\n formatPrice: (prices: any[]) => formatPrice(prices, apiConfig.market),\n getPriceAmount: (prices: any[]) => getPriceAmount(prices, apiConfig.market),\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n validatePhoneNumber,\n\n tzGroups,\n findTimeZone,\n\n slugify,\n humanize,\n categorify,\n formatDate,\n\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n };\n}\n\nconst ADMIN_STORAGE_KEY = \"arky_admin_session\";\n\nfunction readAdminSession(): AdminSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(ADMIN_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as AdminSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeAdminSession(s: AdminSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(ADMIN_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(ADMIN_STORAGE_KEY);\n }\n}\n\nexport type CreateAdminConfig = Omit<HttpClientConfig, \"authStorage\" | \"storeId\"> & {\n storeId: string;\n market: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createAdmin(config: CreateAdminConfig) {\n const locale = config.locale || \"en\";\n const listeners = new Set<AuthStateListener<AdminSession>>();\n\n function toPublic(s: AdminSessionInternal | null): AdminSession | null {\n return s ? { email: s.email } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readAdminSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: AdminSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readAdminSession();\n const next = updater(prev);\n writeAdminSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = config.apiToken\n ? {\n getTokens: () => ({ access_token: config.apiToken! }),\n onTokensRefreshed: () => {},\n onForcedLogout: () => {},\n }\n : {\n getTokens() {\n const s = readAdminSession();\n if (!s) return null;\n return {\n access_token: s.access_token,\n refresh_token: s.refresh_token,\n access_expires_at: s.access_expires_at,\n };\n },\n onTokensRefreshed(tokens) {\n updateSession((prev) =>\n prev\n ? {\n ...prev,\n access_token: tokens.access_token,\n refresh_token: tokens.refresh_token ?? prev.refresh_token,\n access_expires_at: tokens.access_expires_at ?? prev.access_expires_at,\n }\n : null,\n );\n },\n onForcedLogout() {\n updateSession(() => null);\n },\n };\n\n const httpClient = createHttpClient({\n baseUrl: config.baseUrl,\n storeId: config.storeId,\n refreshPath: config.refreshPath,\n navigate: config.navigate,\n loginFallbackPath: config.loginFallbackPath,\n authStorage,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n authStorage,\n };\n\n const accountApi = createAccountApi(apiConfig);\n const authApi = createAuthApi(apiConfig, updateSession);\n const storeApi = createStoreApi(apiConfig, updateSession);\n const platformApi = createPlatformApi(apiConfig);\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const promoCodeApi = createPromoCodeApi(apiConfig);\n const crmApi = createCustomerApi(apiConfig);\n const locationApi = createLocationApi(apiConfig);\n const marketApi = createMarketApi(apiConfig);\n const agentApi = createAgentApi(apiConfig);\n const workflowApi = createWorkflowApi(apiConfig);\n const formApi = createFormApi(apiConfig);\n const taxonomyApi = createTaxonomyApi(apiConfig);\n const emailTemplateApi = createEmailTemplateApi(apiConfig);\n const analyticsApi = createAnalyticsApi(apiConfig);\n\n const sdk = {\n auth: authApi,\n account: accountApi,\n store: {\n ...storeApi,\n location: locationApi,\n market: marketApi,\n },\n media: createMediaApi(apiConfig),\n notification: createNotificationApi(apiConfig),\n promoCode: promoCodeApi,\n platform: platformApi,\n shipping: createShippingApi(apiConfig),\n cms: {\n node: {\n create: cmsApi.createNode,\n update: cmsApi.updateNode,\n delete: cmsApi.deleteNode,\n get: cmsApi.getNode,\n find: cmsApi.getNodes,\n getChildren: cmsApi.getNodeChildren,\n },\n form: {\n create: formApi.createForm,\n update: formApi.updateForm,\n delete: formApi.deleteForm,\n get: formApi.getForm,\n find: formApi.getForms,\n submit: formApi.submit,\n getSubmissions: formApi.getSubmissions,\n getSubmission: formApi.getSubmission,\n updateSubmission: formApi.updateSubmission,\n },\n taxonomy: {\n create: taxonomyApi.createTaxonomy,\n update: taxonomyApi.updateTaxonomy,\n delete: taxonomyApi.deleteTaxonomy,\n get: taxonomyApi.getTaxonomy,\n find: taxonomyApi.getTaxonomies,\n getChildren: taxonomyApi.getTaxonomyChildren,\n },\n emailTemplate: {\n create: emailTemplateApi.createEmailTemplate,\n update: emailTemplateApi.updateEmailTemplate,\n delete: emailTemplateApi.deleteEmailTemplate,\n get: emailTemplateApi.getEmailTemplate,\n find: emailTemplateApi.getEmailTemplates,\n },\n },\n eshop: {\n product: {\n create: eshopApi.createProduct,\n update: eshopApi.updateProduct,\n delete: eshopApi.deleteProduct,\n get: eshopApi.getProduct,\n find: eshopApi.getProducts,\n },\n order: {\n update: eshopApi.updateOrder,\n get: eshopApi.getOrder,\n find: eshopApi.getOrders,\n getQuote: eshopApi.getQuote,\n processRefund: eshopApi.processRefund,\n },\n cart: {\n create: eshopApi.createCart,\n update: eshopApi.updateCart,\n get: eshopApi.getCart,\n find: eshopApi.getCarts,\n addItem: eshopApi.addCartItem,\n removeItem: eshopApi.removeCartItem,\n clear: eshopApi.clearCart,\n quote: eshopApi.quoteCart,\n checkout: eshopApi.checkoutCart,\n },\n service: {\n create: eshopApi.createService,\n update: eshopApi.updateService,\n delete: eshopApi.deleteService,\n get: eshopApi.getService,\n find: eshopApi.getServices,\n getAvailability: eshopApi.getServiceAvailability,\n findProviders: eshopApi.findServiceProviders,\n createProvider: eshopApi.createServiceProvider,\n updateProvider: eshopApi.updateServiceProvider,\n deleteProvider: eshopApi.deleteServiceProvider,\n },\n provider: {\n create: eshopApi.createProvider,\n update: eshopApi.updateProvider,\n delete: eshopApi.deleteProvider,\n get: eshopApi.getProvider,\n find: eshopApi.getProviders,\n },\n promoCode: promoCodeApi,\n },\n crm: {\n customer: {\n create: crmApi.create,\n get: crmApi.get,\n find: crmApi.find,\n update: crmApi.update,\n merge: crmApi.merge,\n revokeToken: crmApi.revokeToken,\n revokeAllTokens: crmApi.revokeAllTokens,\n },\n audience: {\n create: crmApi.audiences.create,\n update: crmApi.audiences.update,\n get: crmApi.audiences.get,\n find: crmApi.audiences.find,\n getSubscribers: crmApi.audiences.getSubscribers,\n addSubscriber: crmApi.audiences.addSubscriber,\n removeSubscriber: crmApi.audiences.removeSubscriber,\n },\n activity: crmApi.activity,\n },\n automation: {\n agent: {\n create: agentApi.createAgent,\n update: agentApi.updateAgent,\n delete: agentApi.deleteAgent,\n get: agentApi.getAgent,\n find: agentApi.getAgents,\n sendMessage: agentApi.sendMessage,\n getChats: agentApi.getChats,\n getChat: agentApi.getChat,\n updateChat: agentApi.updateChat,\n rateChat: agentApi.rateChat,\n getStoreChats: agentApi.getStoreChats,\n getChatMessages: agentApi.getChatMessages,\n },\n workflow: {\n create: workflowApi.createWorkflow,\n update: workflowApi.updateWorkflow,\n delete: workflowApi.deleteWorkflow,\n get: workflowApi.getWorkflow,\n find: workflowApi.getWorkflows,\n trigger: workflowApi.triggerWorkflow,\n getExecutions: workflowApi.getWorkflowExecutions,\n getExecution: workflowApi.getWorkflowExecution,\n },\n },\n\n analytics: {\n query: analyticsApi.query,\n },\n\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n },\n\n getStoreId: () => apiConfig.storeId,\n\n setMarket: (market: string) => {\n apiConfig.market = market;\n },\n\n getMarket: () => apiConfig.market,\n\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n\n getLocale: () => apiConfig.locale,\n\n get session(): AdminSession | null {\n if (config.apiToken) return null;\n return toPublic(readAdminSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n return readAdminSession() !== null;\n },\n\n onAuthStateChanged(listener: AuthStateListener<AdminSession>): () => void {\n listeners.add(listener);\n const current = toPublic(readAdminSession());\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n async logout(): Promise<void> {\n if (config.apiToken) return;\n updateSession(() => null);\n },\n\n extractBlockValues,\n\n utils: createUtilitySurface(apiConfig),\n\n };\n\n return sdk;\n}\n\nconst CUSTOMER_STORAGE_KEY = \"arky_customer_session\";\n\nfunction readCustomerSession(): CustomerSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(CUSTOMER_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as CustomerSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeCustomerSession(s: CustomerSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(CUSTOMER_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(CUSTOMER_STORAGE_KEY);\n }\n}\n\nexport type CreateStorefrontConfig = Omit<HttpClientConfig, \"authStorage\" | \"storeId\"> & {\n storeId: string;\n market?: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createStorefront(config: CreateStorefrontConfig) {\n const locale = config.locale || \"en\";\n const initialMarket = config.market || \"\";\n const listeners = new Set<AuthStateListener<CustomerSession>>();\n let bareIdentifyPromise: Promise<CustomerSession> | null = null;\n\n function toPublic(s: CustomerSessionInternal | null): CustomerSession | null {\n return s ? { customer: s.customer, store: s.store, market: s.market } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readCustomerSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: CustomerSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readCustomerSession();\n const next = updater(prev);\n writeCustomerSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = config.apiToken\n ? {\n getTokens: () => ({ access_token: config.apiToken! }),\n onTokensRefreshed: () => {},\n onForcedLogout: () => {},\n }\n : {\n getTokens() {\n const s = readCustomerSession();\n return s ? { access_token: s.access_token } : null;\n },\n onTokensRefreshed() {\n // Customer tokens are one-shot; no refresh on this flow.\n },\n onForcedLogout() {\n bareIdentifyPromise = null;\n updateSession(() => null);\n },\n };\n\n const httpClient = createHttpClient({\n baseUrl: config.baseUrl,\n storeId: config.storeId,\n refreshPath: config.refreshPath,\n navigate: config.navigate,\n loginFallbackPath: config.loginFallbackPath,\n authStorage,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: initialMarket,\n locale,\n authStorage,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig, updateSession);\n const customerApi = storefrontApi.crm.customer;\n\n function identify(\n params?: { email?: string; verify?: boolean; market?: string },\n ): Promise<CustomerSession> {\n if (params?.market !== undefined) apiConfig.market = params.market;\n\n const isBareCall = !params?.email && !params?.verify;\n if (isBareCall && bareIdentifyPromise) return bareIdentifyPromise;\n\n const promise = (async (): Promise<CustomerSession> => {\n try {\n const result = await customerApi.identify({\n market: apiConfig.market,\n email: params?.email,\n verify: params?.verify,\n });\n return {\n customer: result.customer,\n store: result.store,\n market: result.market,\n };\n } catch (err: unknown) {\n const e = err as { statusCode?: number; status?: number; response?: { status?: number } };\n const status = e?.statusCode || e?.status || e?.response?.status;\n if (isBareCall && status === 401) {\n updateSession(() => null);\n const result = await customerApi.identify({ market: apiConfig.market });\n return {\n customer: result.customer,\n store: result.store,\n market: result.market,\n };\n }\n throw err;\n }\n })().catch((err) => {\n if (isBareCall) bareIdentifyPromise = null;\n throw err;\n });\n\n if (isBareCall) bareIdentifyPromise = promise;\n\n return promise;\n }\n\n async function verify(params: { code: string }) {\n const result = await customerApi.verify(params);\n bareIdentifyPromise = null;\n return result;\n }\n\n async function logout(): Promise<void> {\n if (config.apiToken) return;\n bareIdentifyPromise = null;\n try {\n await customerApi.logout();\n } catch {\n updateSession(() => null);\n }\n }\n\n return {\n identify,\n verify,\n logout,\n me: () => customerApi.getMe(),\n\n get session(): CustomerSession | null {\n if (config.apiToken) return null;\n return toPublic(readCustomerSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n const s = readCustomerSession();\n return s !== null && !!s.access_token;\n },\n\n onAuthStateChanged(listener: AuthStateListener<CustomerSession>): () => void {\n listeners.add(listener);\n const current = toPublic(readCustomerSession());\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n store: storefrontApi.store,\n cart: createCartController(storefrontApi.eshop.cart),\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n crm: storefrontApi.crm,\n activity: storefrontApi.activity,\n automation: storefrontApi.automation,\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n bareIdentifyPromise = null;\n },\n getStoreId: () => apiConfig.storeId,\n setMarket: (key: string) => {\n apiConfig.market = key;\n bareIdentifyPromise = null;\n },\n getMarket: () => apiConfig.market,\n setLocale: (l: string) => {\n apiConfig.locale = l;\n },\n getLocale: () => apiConfig.locale,\n extractBlockValues,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n","import { atom, computed, map } from \"nanostores\";\nimport { createStorefront, type CreateStorefrontConfig, type CustomerSession } from \"./index\";\nimport type {\n Address,\n Block,\n Cart,\n EshopCartItem,\n Form,\n FormEntry,\n FormField,\n FormSchema,\n FormSubmission,\n Market,\n Node,\n OrderCheckoutResult,\n OrderQuote,\n PaginatedResponse,\n PaymentMethod,\n Price,\n Product,\n ProductVariant,\n Provider,\n Service,\n ServiceProvider,\n Store,\n ZoneLocation,\n} from \"./types\";\nimport type {\n AvailabilityResponse,\n CheckoutItemInput,\n FindServiceProvidersParams,\n GetAvailabilityParams,\n GetNodeChildrenParams,\n GetNodeParams,\n GetNodesParams,\n GetProductParams,\n GetProductsParams,\n GetProviderParams,\n GetProvidersParams,\n GetServiceParams,\n GetServicesParams,\n ProductCheckoutItemInput,\n RequestOptions,\n ServiceCheckoutItemInput,\n SlotRange,\n SubmitFormParams,\n} from \"./types/api\";\nimport type { Activity, TrackParams } from \"./api/storefront\";\n\ntype ArkyStoreClient = ReturnType<typeof createStorefront>;\n\nexport interface ArkyStoreConfig extends CreateStorefrontConfig {\n serviceOrderFormKey?: string;\n onCartChange?: (snapshot: ArkyCartSnapshot) => void;\n}\n\nexport interface ArkyServiceCartItem {\n id: string;\n service_id: string;\n provider_id: string;\n from: number;\n to: number;\n forms?: FormEntry[];\n price?: Price;\n service_name?: string;\n provider_name?: string;\n date_text?: string;\n time_text?: string;\n is_multi_day?: boolean;\n}\n\nexport interface ArkyCartSnapshot {\n cart: Cart | null;\n product_items: EshopCartItem[];\n service_items: ArkyServiceCartItem[];\n item_count: number;\n}\n\nexport interface ArkyCartStatus {\n loading: boolean;\n syncing: boolean;\n fetching_quote: boolean;\n processing_checkout: boolean;\n error: string | null;\n quote_error: string | null;\n selected_shipping_method_id: string | null;\n user_token: string | null;\n}\n\nexport interface ArkyLastOrder {\n order_id: string;\n number: string;\n client_secret: string | null;\n payment: OrderCheckoutResult[\"payment\"];\n created_at: number;\n}\n\nexport interface ArkyCartInput {\n product_items?: EshopCartItem[];\n service_items?: ArkyServiceCartItem[];\n shipping_address?: Address | null;\n billing_address?: Address | null;\n forms?: FormEntry[] | Block[];\n promo_code?: string | null;\n payment_method_id?: string | null;\n shipping_method_id?: string | null;\n}\n\nexport interface ArkyCmsState {\n website_node: Node | null;\n nodes: Record<string, Node>;\n forms: Record<string, Form>;\n loading: boolean;\n error: string | null;\n}\n\nexport interface ArkyEshopState {\n products: Product[];\n services: Service[];\n providers: Provider[];\n product_cursor: string | null;\n service_cursor: string | null;\n provider_cursor: string | null;\n availability: unknown | null;\n loading_products: boolean;\n loading_services: boolean;\n loading_providers: boolean;\n loading_availability: boolean;\n error: string | null;\n}\n\nexport interface ArkyCalendarDay {\n date: Date;\n iso: string;\n available: boolean;\n isSelected: boolean;\n isInRange: boolean;\n isToday: boolean;\n blank: boolean;\n}\n\nexport interface ArkyBookingSlot {\n id: string;\n serviceId: string;\n providerId: string;\n from: number;\n to: number;\n timeText: string;\n dateText: string;\n isMultiDay?: boolean;\n serviceName?: string;\n date?: string;\n serviceBlocks?: Block[];\n}\n\nexport interface ArkyBookingState {\n service: Service | null;\n availability: AvailabilityResponse | null;\n providers: Provider[];\n selectedProviderId: string | null;\n currentMonth: Date;\n calendar: ArkyCalendarDay[];\n selectedDate: string | null;\n startDate: string | null;\n endDate: string | null;\n slots: ArkyBookingSlot[];\n selectedSlot: ArkyBookingSlot | null;\n cart: ArkyBookingSlot[];\n timezone: string;\n tzGroups: Record<string, { zone: string; name: string }[]>;\n loading: boolean;\n weekdays: string[];\n quote: OrderQuote | null;\n fetchingQuote: boolean;\n quoteError: string | null;\n currency: string | null;\n dateTimeConfirmed: boolean;\n isMultiDay: boolean;\n availablePaymentMethods: PaymentMethod[];\n cartId: string | null;\n promoCode: string | null;\n}\n\nfunction readErrorMessage(error: unknown, fallback: string): string {\n if (error instanceof Error && error.message) return error.message;\n if (typeof error === \"string\" && error.length > 0) return error;\n return fallback;\n}\n\nfunction createId(prefix: string): string {\n const cryptoValue = globalThis.crypto;\n if (cryptoValue && \"randomUUID\" in cryptoValue) return cryptoValue.randomUUID();\n return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}`;\n}\n\nfunction firstLocalized(value: unknown, locale: string): string {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return \"\";\n const record = value as Record<string, unknown>;\n const localeValue = record[locale];\n if (typeof localeValue === \"string\") return localeValue;\n const englishValue = record.en;\n if (typeof englishValue === \"string\") return englishValue;\n for (const entry of Object.values(record)) {\n if (typeof entry === \"string\") return entry;\n }\n return \"\";\n}\n\nfunction findBlock(blocks: Block[] | undefined, keys: string[]): Block | null {\n return (blocks || []).find((block) => keys.includes(block.key)) || null;\n}\n\nfunction blockText(blocks: Block[] | undefined, keys: string[], locale: string): string {\n const block = findBlock(blocks, keys);\n if (!block) return \"\";\n return firstLocalized(block.value, locale);\n}\n\nfunction productName(product: Product, locale: string): string {\n return blockText(product.blocks, [\"name\", \"title\"], locale) || product.key || product.id;\n}\n\nfunction serviceName(service: Service, locale: string): string {\n return blockText(service.blocks, [\"name\", \"title\"], locale) || service.key || service.id;\n}\n\nfunction providerName(provider: Provider, locale: string): string {\n return blockText(provider.blocks, [\"name\", \"title\"], locale) || provider.key || provider.id;\n}\n\nfunction entitySlug(entity: { id: string; slug?: Record<string, string> }, locale: string): string {\n return entity.slug?.[locale] || entity.slug?.en || Object.values(entity.slug || {})[0] || entity.id;\n}\n\nfunction priceForMarket(prices: Price[], market: string, fallbackCurrency?: string | null): Price {\n const price = prices.find((candidate) => candidate.market === market) || prices[0];\n return {\n amount: price?.amount || 0,\n market: price?.market || market,\n currency: price?.currency || fallbackCurrency || \"\",\n compare_at: price?.compare_at,\n audience_id: price?.audience_id,\n };\n}\n\nfunction availableStock(client: ArkyStoreClient, variant: ProductVariant): number | undefined {\n const fromUtility = client.utils.getAvailableStock(variant);\n if (Number.isFinite(fromUtility)) return fromUtility;\n const stock = (variant.inventory || []).reduce((total, row) => total + (row.available || 0), 0);\n return stock > 0 ? stock : undefined;\n}\n\nfunction locationToAddress(location: ZoneLocation): Address {\n return {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postal_code: location.postal_code || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n };\n}\n\nfunction normalizeForms(forms: FormEntry[] | Block[] | undefined): FormEntry[] | undefined {\n return forms as FormEntry[] | undefined;\n}\n\nfunction toProductCheckoutItems(items: EshopCartItem[]): ProductCheckoutItemInput[] {\n return items.map((item) => ({\n type: \"product\",\n id: item.id,\n product_id: item.product_id,\n variant_id: item.variant_id,\n quantity: item.quantity,\n }));\n}\n\nfunction toServiceCheckoutItems(items: ArkyServiceCartItem[]): ServiceCheckoutItemInput[] {\n const groups = new Map<string, ServiceCheckoutItemInput>();\n for (const item of items) {\n const key = `${item.service_id}:${item.provider_id}`;\n const slot: SlotRange = { from: item.from, to: item.to };\n const existing = groups.get(key);\n if (existing) {\n existing.slots.push(slot);\n continue;\n }\n groups.set(key, {\n type: \"service\",\n id: item.id,\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: [slot],\n forms: item.forms || [],\n price: item.price,\n });\n }\n return [...groups.values()].map((item) => ({\n ...item,\n slots: [...item.slots].sort((a, b) => a.from - b.from),\n }));\n}\n\nfunction formFieldsFromBlocks(blocks: Block[]): FormField[] {\n return blocks.map((block) => ({\n id: block.id,\n key: block.key,\n type: block.type as FormField[\"type\"],\n value: block.value,\n }));\n}\n\nfunction getFormBlockType(field: FormSchema): string {\n if (field.key === \"email\") return \"email\";\n if (field.key === \"phone\") return \"phone\";\n if (field.type === \"geo_location\") return \"address\";\n return field.type;\n}\n\nfunction getFormBlockValue(field: FormSchema): unknown {\n if (field.type === \"boolean\") return false;\n if (field.type === \"number\") return field.min ?? 0;\n if (field.type === \"geo_location\") return {};\n return \"\";\n}\n\nfunction formSchemaToBlock(field: FormSchema): Block {\n return {\n id: field.id,\n key: field.key,\n type: getFormBlockType(field),\n properties: {\n isRequired: field.required,\n minValues: field.required ? 1 : 0,\n min: field.min,\n max: field.max,\n options: field.options,\n pattern: field.key === \"email\" ? \"^.+@.+\\\\..+$\" : field.key === \"phone\" ? \"^.{6,20}$\" : undefined,\n },\n value: getFormBlockValue(field),\n };\n}\n\nfunction formatBookingTime(ts: number, tz: string): string {\n return new Date(ts * 1000).toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: tz,\n });\n}\n\nfunction formatBookingSlotTime(from: number, to: number, tz: string): string {\n return `${formatBookingTime(from, tz)} - ${formatBookingTime(to, tz)}`;\n}\n\nfunction getSlotsForDate(\n availability: AvailabilityResponse | null,\n dateStr: string,\n providerId?: string | null,\n): { from: number; to: number; providerId: string }[] {\n if (!availability) return [];\n const slots: { from: number; to: number; providerId: string }[] = [];\n for (const provider of availability.providers) {\n if (providerId && provider.provider_id !== providerId) continue;\n const day = provider.days.find((candidate) => candidate.date === dateStr);\n if (!day) continue;\n for (const slot of day.slots) {\n if (slot.spots > 0) slots.push({ from: slot.from, to: slot.to, providerId: provider.provider_id });\n }\n }\n return slots.sort((a, b) => a.from - b.from);\n}\n\nfunction hasAvailableSlotsForDate(\n availability: AvailabilityResponse | null,\n dateStr: string,\n providerId?: string | null,\n): boolean {\n if (!availability) return false;\n return availability.providers.some((provider) => {\n if (providerId && provider.provider_id !== providerId) return false;\n const day = provider.days.find((candidate) => candidate.date === dateStr);\n return !!day?.slots.some((slot) => slot.spots > 0);\n });\n}\n\nconst BOOKING_WEEKDAYS = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nfunction createBookingInitialState(): ArkyBookingState {\n return {\n service: null,\n availability: null,\n providers: [],\n selectedProviderId: null,\n currentMonth: new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n calendar: [],\n selectedDate: null,\n startDate: null,\n endDate: null,\n slots: [],\n selectedSlot: null,\n cart: [],\n timezone: typeof window !== \"undefined\" ? Intl.DateTimeFormat().resolvedOptions().timeZone : \"UTC\",\n tzGroups: {},\n loading: false,\n weekdays: BOOKING_WEEKDAYS,\n quote: null,\n fetchingQuote: false,\n quoteError: null,\n currency: null,\n dateTimeConfirmed: false,\n isMultiDay: false,\n availablePaymentMethods: [],\n cartId: null,\n promoCode: null,\n };\n}\n\nfunction normalizeTimezoneGroups(\n groups: { label: string; zones: { label: string; value: string }[] }[],\n): Record<string, { zone: string; name: string }[]> {\n const normalized: Record<string, { zone: string; name: string }[]> = {};\n for (const group of groups) {\n normalized[group.label] = group.zones.map((zone) => ({\n zone: zone.value,\n name: zone.label,\n }));\n }\n return normalized;\n}\n\nexport function createArkyStore(config: ArkyStoreConfig) {\n const client = createStorefront(config);\n const session = atom<CustomerSession | null>(client.session);\n const locale = atom(config.locale || client.getLocale());\n const market_key = atom(config.market || client.getMarket());\n const market = computed(session, (value) => value?.market || null);\n const currency = computed(market, (value) => value?.currency || null);\n const allowed_payment_methods = computed(market, (value) => value?.payment_methods || []);\n const payment_config = computed(session, (value) => {\n const store = value?.store as Store & { payment?: unknown };\n const methods = value?.market?.payment_methods || [];\n const hasCreditCard = methods.some((method: PaymentMethod) => method.id === \"credit_card\");\n return { provider: store?.payment || null, enabled: hasCreditCard && !!store?.payment };\n });\n\n const cart = atom<Cart | null>(null);\n const product_items = atom<EshopCartItem[]>([]);\n const service_items = atom<ArkyServiceCartItem[]>([]);\n const quote = atom<OrderQuote | null>(null);\n const promo_code = atom<string | null>(null);\n const last_order = atom<ArkyLastOrder | null>(null);\n const cart_status = map<ArkyCartStatus>({\n loading: false,\n syncing: false,\n fetching_quote: false,\n processing_checkout: false,\n error: null,\n quote_error: null,\n selected_shipping_method_id: null,\n user_token: null,\n });\n\n const product_item_count = computed(product_items, (items) =>\n items.reduce((total, item) => total + (item.quantity || 0), 0),\n );\n const service_item_count = computed(service_items, (items) => items.length);\n const item_count = computed([product_item_count, service_item_count], (products, services) => products + services);\n const snapshot = computed([cart, product_items, service_items, item_count], (cartValue, products, services, count) => ({\n cart: cartValue,\n product_items: products,\n service_items: services,\n item_count: count,\n }));\n\n const cms_state = map<ArkyCmsState>({\n website_node: null,\n nodes: {},\n forms: {},\n loading: false,\n error: null,\n });\n const eshop_state = map<ArkyEshopState>({\n products: [],\n services: [],\n providers: [],\n product_cursor: null,\n service_cursor: null,\n provider_cursor: null,\n availability: null,\n loading_products: false,\n loading_services: false,\n loading_providers: false,\n loading_availability: false,\n error: null,\n });\n const booking_state = map<ArkyBookingState>(createBookingInitialState());\n const booking_form_node = atom<{ blocks: Block[] } | null>(null);\n const booking_form_blocks = computed(booking_form_node, (node) => node?.blocks || []);\n\n client.onAuthStateChanged((value) => session.set(value));\n snapshot.subscribe((value) => config.onCartChange?.(value));\n currency.subscribe((value) => booking_state.setKey(\"currency\", value));\n session.subscribe((value) => {\n const methods = value?.market?.payment_methods || [];\n if (methods.length && booking_state.get().availablePaymentMethods.length === 0) {\n booking_state.setKey(\"availablePaymentMethods\", methods);\n }\n });\n\n function currentMarketKey(): string {\n return market_key.get() || client.getMarket() || market.get()?.key || \"\";\n }\n\n function currentLocale(): string {\n return locale.get() || client.getLocale() || \"en\";\n }\n\n function currentCurrency(): string | null {\n return currency.get() || market.get()?.currency || null;\n }\n\n async function identify(params: { email?: string; verify?: boolean; market?: string } = {}) {\n if (params.market) setMarket(params.market);\n const result = await client.identify({ ...params, market: params.market || currentMarketKey() });\n session.set(result);\n return result;\n }\n\n function setMarket(key: string): void {\n market_key.set(key);\n client.setMarket(key);\n }\n\n function setLocale(value: string): void {\n locale.set(value);\n client.setLocale(value);\n }\n\n async function ensureCart(): Promise<Cart> {\n cart_status.setKey(\"loading\", true);\n cart_status.setKey(\"error\", null);\n try {\n await identify({ market: currentMarketKey() });\n const response = await client.cart.refresh({ market: currentMarketKey() });\n await hydrateCart(response);\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to load cart.\"));\n throw error;\n } finally {\n cart_status.setKey(\"loading\", false);\n }\n }\n\n async function hydrateProductItem(item: ProductCheckoutItemInput, source: Cart): Promise<EshopCartItem | null> {\n try {\n const product = await client.eshop.product.get({ id: item.product_id });\n const variant = product.variants.find((candidate) => candidate.id === item.variant_id);\n if (!variant) return null;\n return {\n id: item.id || createId(\"product\"),\n product_id: product.id,\n variant_id: variant.id,\n product_name: productName(product, currentLocale()),\n product_slug: entitySlug(product, currentLocale()),\n variant_attributes: variant.attributes as EshopCartItem[\"variant_attributes\"],\n price: priceForMarket(variant.prices, currentMarketKey(), currentCurrency()),\n quantity: item.quantity,\n added_at: source.created_at ? source.created_at * 1000 : Date.now(),\n max_stock: availableStock(client, variant),\n };\n } catch {\n return null;\n }\n }\n\n async function hydrateServiceItems(items: ServiceCheckoutItemInput[]): Promise<ArkyServiceCartItem[]> {\n const rows: ArkyServiceCartItem[] = [];\n for (const item of items) {\n let service: Service | null = null;\n let provider: Provider | null = null;\n try {\n service = await client.eshop.service.get({ id: item.service_id });\n } catch {}\n try {\n provider = await client.eshop.provider.get({ id: item.provider_id });\n } catch {}\n for (const [index, slot] of item.slots.entries()) {\n rows.push({\n id: item.id || createId(`service_${index}`),\n service_id: item.service_id,\n provider_id: item.provider_id,\n from: slot.from,\n to: slot.to,\n forms: item.forms || [],\n price: item.price,\n service_name: service ? serviceName(service, currentLocale()) : item.service_id,\n provider_name: provider ? providerName(provider, currentLocale()) : item.provider_id,\n });\n }\n }\n return rows;\n }\n\n async function hydrateCart(response: Cart): Promise<Cart> {\n cart.set(response);\n cart_status.setKey(\"user_token\", response.token || null);\n cart_status.setKey(\"selected_shipping_method_id\", response.shipping_method_id || null);\n promo_code.set(response.promo_code || null);\n quote.set(response.quote_snapshot || null);\n\n const items = response.items || [];\n const products = await Promise.all(\n items\n .filter((item): item is ProductCheckoutItemInput => item.type === \"product\")\n .map((item) => hydrateProductItem(item, response)),\n );\n const services = await hydrateServiceItems(\n items.filter((item): item is ServiceCheckoutItemInput => item.type === \"service\"),\n );\n product_items.set(products.filter((item): item is EshopCartItem => item !== null));\n service_items.set(services);\n return response;\n }\n\n function checkoutItems(input: ArkyCartInput = {}): CheckoutItemInput[] {\n return [\n ...toProductCheckoutItems(input.product_items || product_items.get()),\n ...toServiceCheckoutItems(input.service_items || service_items.get()),\n ];\n }\n\n async function syncCart(input: ArkyCartInput = {}): Promise<Cart> {\n cart_status.setKey(\"syncing\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = cart.get() || await ensureCart();\n const response = await client.cart.update({\n id: current.id,\n market: currentMarketKey(),\n items: checkoutItems(input),\n shipping_address: input.shipping_address || undefined,\n billing_address: input.billing_address || undefined,\n forms: normalizeForms(input.forms),\n promo_code: input.promo_code === undefined ? promo_code.get() || undefined : input.promo_code || undefined,\n payment_method_id: input.payment_method_id || undefined,\n shipping_method_id:\n input.shipping_method_id ||\n cart_status.get().selected_shipping_method_id ||\n undefined,\n });\n if (input.promo_code !== undefined) promo_code.set(input.promo_code);\n if (input.shipping_method_id !== undefined) {\n cart_status.setKey(\"selected_shipping_method_id\", input.shipping_method_id);\n }\n await hydrateCart(response);\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to sync cart.\"));\n throw error;\n } finally {\n cart_status.setKey(\"syncing\", false);\n }\n }\n\n async function addProduct(product: Product, variant: ProductVariant, quantity = 1): Promise<Cart> {\n cart_status.setKey(\"error\", null);\n try {\n const current = cart.get() || await ensureCart();\n const response = await client.cart.addItem({\n id: current.id,\n item: {\n type: \"product\",\n product_id: product.id,\n variant_id: variant.id,\n quantity,\n },\n });\n await hydrateCart(response);\n await client.activity.track({ type: \"cart_added\", payload: { product_id: product.id, variant_id: variant.id, quantity } });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to add product to cart.\"));\n throw error;\n }\n }\n\n async function setProductQuantity(itemId: string, quantity: number): Promise<Cart> {\n const next = product_items.get().map((item) => {\n if (item.id !== itemId) return item;\n const bounded = item.max_stock ? Math.min(Math.max(1, quantity), item.max_stock) : Math.max(1, quantity);\n return { ...item, quantity: bounded };\n });\n product_items.set(next);\n return syncCart({ product_items: next });\n }\n\n async function removeProduct(itemId: string): Promise<Cart | null> {\n const item = product_items.get().find((candidate) => candidate.id === itemId);\n product_items.set(product_items.get().filter((candidate) => candidate.id !== itemId));\n const current = cart.get();\n if (!current || !item) return null;\n const response = await client.cart.removeItem({\n id: current.id,\n item_id: item.id,\n product_id: item.product_id,\n variant_id: item.variant_id,\n });\n await hydrateCart(response);\n await client.activity.track({ type: \"cart_removed\", payload: { product_id: item.product_id, variant_id: item.variant_id } });\n return response;\n }\n\n async function addServiceItem(item: ArkyServiceCartItem): Promise<Cart> {\n const next = [...service_items.get(), item];\n service_items.set(next);\n return syncCart({ service_items: next });\n }\n\n async function removeServiceItem(itemId: string): Promise<Cart> {\n const next = service_items.get().filter((item) => item.id !== itemId);\n service_items.set(next);\n return syncCart({ service_items: next });\n }\n\n async function clearCart(): Promise<Cart | null> {\n product_items.set([]);\n service_items.set([]);\n quote.set(null);\n promo_code.set(null);\n cart_status.setKey(\"selected_shipping_method_id\", null);\n const current = cart.get();\n if (!current) return null;\n const response = await client.cart.clear({ id: current.id });\n await hydrateCart(response);\n return response;\n }\n\n async function fetchQuote(input: ArkyCartInput = {}): Promise<OrderQuote | null> {\n if (checkoutItems(input).length === 0) {\n quote.set(null);\n return null;\n }\n cart_status.setKey(\"fetching_quote\", true);\n cart_status.setKey(\"quote_error\", null);\n try {\n const current = await syncCart(input);\n const response = await client.cart.quote({ id: current.id });\n quote.set(response);\n return response;\n } catch (error) {\n quote.set(null);\n cart_status.setKey(\"quote_error\", readErrorMessage(error, \"Failed to fetch quote.\"));\n throw error;\n } finally {\n cart_status.setKey(\"fetching_quote\", false);\n }\n }\n\n async function checkout(input: ArkyCartInput = {}): Promise<OrderCheckoutResult> {\n if (checkoutItems(input).length === 0) throw new Error(\"Cart is empty\");\n cart_status.setKey(\"processing_checkout\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = await syncCart(input);\n await client.activity.track({ type: \"checkout_started\", payload: { cart_id: current.id } });\n const response = await client.cart.checkout({\n id: current.id,\n payment_method_id: input.payment_method_id || undefined,\n });\n const stored: ArkyLastOrder = {\n order_id: response.order_id,\n number: response.number,\n client_secret: response.client_secret,\n payment: response.payment,\n created_at: Date.now(),\n };\n last_order.set(stored);\n product_items.set([]);\n service_items.set([]);\n cart.set(null);\n quote.set(null);\n promo_code.set(null);\n cart_status.setKey(\"selected_shipping_method_id\", null);\n await client.activity.track({ type: \"purchase\", payload: { order_id: response.order_id, number: response.number } });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Checkout failed.\"));\n throw error;\n } finally {\n cart_status.setKey(\"processing_checkout\", false);\n }\n }\n\n function bookingCalendar(): ArkyCalendarDay[] {\n const state = booking_state.get();\n const { currentMonth, selectedDate, startDate, endDate, availability, selectedProviderId } = state;\n const year = currentMonth.getFullYear();\n const monthIndex = currentMonth.getMonth();\n const first = new Date(year, monthIndex, 1);\n const last = new Date(year, monthIndex + 1, 0);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const cells: ArkyCalendarDay[] = [];\n const pad = (first.getDay() + 6) % 7;\n for (let i = 0; i < pad; i++) {\n cells.push({\n date: new Date(0),\n iso: \"\",\n available: false,\n isSelected: false,\n isInRange: false,\n isToday: false,\n blank: true,\n });\n }\n\n for (let day = 1; day <= last.getDate(); day++) {\n const date = new Date(year, monthIndex, day);\n const iso = `${year}-${String(monthIndex + 1).padStart(2, \"0\")}-${String(day).padStart(2, \"0\")}`;\n const isSelected = iso === selectedDate || iso === startDate || iso === endDate;\n let isInRange = false;\n if (startDate && endDate) {\n const time = date.getTime();\n isInRange = time > new Date(startDate).getTime() && time < new Date(endDate).getTime();\n }\n\n cells.push({\n date,\n iso,\n available: hasAvailableSlotsForDate(availability, iso, selectedProviderId),\n isSelected,\n isInRange,\n isToday: date.getTime() === today.getTime(),\n blank: false,\n });\n }\n\n const suffix = (7 - (cells.length % 7)) % 7;\n for (let i = 0; i < suffix; i++) {\n cells.push({\n date: new Date(0),\n iso: \"\",\n available: false,\n isSelected: false,\n isInRange: false,\n isToday: false,\n blank: true,\n });\n }\n\n return cells;\n }\n\n function computeBookingSlots(dateStr: string): ArkyBookingSlot[] {\n const state = booking_state.get();\n const { availability, selectedProviderId, timezone, service } = state;\n return getSlotsForDate(availability, dateStr, selectedProviderId).map((slot, index) => ({\n id: `${service?.id || \"service\"}-${slot.from}-${index}`,\n serviceId: service?.id || \"\",\n providerId: slot.providerId,\n from: slot.from,\n to: slot.to,\n timeText: formatBookingSlotTime(slot.from, slot.to, timezone),\n dateText: new Date(slot.from * 1000).toLocaleDateString([], {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n timeZone: timezone,\n }),\n }));\n }\n\n function toServiceCartItem(slot: ArkyBookingSlot): ArkyServiceCartItem {\n return {\n id: slot.id,\n service_id: slot.serviceId,\n provider_id: slot.providerId,\n from: slot.from,\n to: slot.to,\n forms: [],\n service_name: slot.serviceName,\n date_text: slot.dateText,\n time_text: slot.timeText,\n is_multi_day: slot.isMultiDay,\n };\n }\n\n function fromServiceCartItem(item: ArkyServiceCartItem): ArkyBookingSlot {\n return {\n id: item.id,\n serviceId: item.service_id,\n providerId: item.provider_id,\n from: item.from,\n to: item.to,\n serviceName: item.service_name || \"\",\n date: item.date_text || \"\",\n dateText: item.date_text || \"\",\n timeText: item.time_text || formatBookingSlotTime(item.from, item.to, booking_state.get().timezone),\n isMultiDay: item.is_multi_day,\n };\n }\n\n function setBookingCartFromServiceItems(items: readonly ArkyServiceCartItem[]): void {\n const next = items.map(fromServiceCartItem);\n const current = booking_state.get().cart;\n if (JSON.stringify(current) !== JSON.stringify(next)) {\n booking_state.setKey(\"cart\", next);\n }\n }\n\n async function syncBookingCart(slots: ArkyBookingSlot[]): Promise<Cart> {\n try {\n return await syncCart({\n product_items: product_items.get(),\n service_items: slots.map(toServiceCartItem),\n });\n } catch (error) {\n booking_state.setKey(\"quoteError\", readErrorMessage(error, \"Failed to sync booking cart.\"));\n throw error;\n }\n }\n\n function bookingCurrentStepName(): string {\n const state = booking_state.get();\n if (!state.service) return \"\";\n if (!state.selectedSlot || !state.dateTimeConfirmed) return \"datetime\";\n return \"review\";\n }\n\n const booking_current_step_name = computed(booking_state, bookingCurrentStepName);\n const booking_can_proceed = computed(booking_state, (state) => {\n const step = bookingCurrentStepName();\n if (step === \"datetime\") {\n return state.isMultiDay\n ? !!(state.startDate && state.endDate && state.selectedSlot)\n : !!(state.selectedDate && state.selectedSlot);\n }\n if (step === \"review\") return true;\n return false;\n });\n const booking_month_year = computed(booking_state, (state) =>\n state.currentMonth.toLocaleString(undefined, { month: \"long\", year: \"numeric\" }),\n );\n const booking_chain_start = computed(booking_state, (state) => {\n if (!state.cart.length) return null;\n return Math.max(...state.cart.map((slot) => slot.to));\n });\n const booking_total_steps = computed(booking_state, (state) => state.service ? 2 : 0);\n const booking_steps = computed(booking_state, () => ({\n 1: { name: \"datetime\" },\n 2: { name: \"review\" },\n }));\n const booking_current_step = computed([booking_current_step_name, booking_steps], (name, steps) => {\n for (const [idx, step] of Object.entries(steps)) {\n if (step.name === name) return Number(idx);\n }\n return 1;\n });\n\n function formatBookingDateDisplay(value: string | null): string {\n if (!value) return \"\";\n return new Date(value).toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" });\n }\n\n function serviceProviderId(provider: Provider | ServiceProvider): string {\n return \"provider_id\" in provider ? provider.provider_id : provider.id;\n }\n\n function getFirstServiceProviderEntry(state: ArkyBookingState): ServiceProvider | null {\n const serviceWithProviders = state.service as (Service & { providers?: ServiceProvider[] }) | null;\n const providers = serviceWithProviders?.providers;\n if (!providers?.length) return null;\n if (state.selectedProviderId) {\n const match = providers.find((provider) => provider.provider_id === state.selectedProviderId);\n if (match) return match;\n }\n return providers[0];\n }\n\n async function loadBookingForm(): Promise<Block[]> {\n try {\n const form = await loadForm({ key: config.serviceOrderFormKey || \"order-form\" });\n const blocks = (form.schema || []).map(formSchemaToBlock);\n booking_form_node.set({ blocks });\n return blocks;\n } catch {\n booking_form_node.set({ blocks: [] });\n return [];\n }\n }\n\n const booking_actions = {\n async initialize(): Promise<void> {\n booking_state.setKey(\"tzGroups\", normalizeTimezoneGroups(client.utils.tzGroups));\n await ensureCart();\n setBookingCartFromServiceItems(service_items.get());\n const methods = session.get()?.market?.payment_methods || [];\n if (methods.length) booking_state.setKey(\"availablePaymentMethods\", methods);\n await loadBookingForm();\n },\n\n setTimezone(tz: string): void {\n booking_state.setKey(\"timezone\", tz);\n booking_state.setKey(\"calendar\", bookingCalendar());\n const state = booking_state.get();\n if (state.selectedDate) {\n booking_state.setKey(\"slots\", computeBookingSlots(state.selectedDate));\n booking_state.setKey(\"selectedSlot\", null);\n }\n },\n\n async setService(service: Service): Promise<void> {\n booking_state.setKey(\"loading\", true);\n try {\n const isMultiDayBlock = service.blocks?.find((block) => block.key === \"isMultiDay\");\n const blockValue = isMultiDayBlock?.value;\n const isMultiDay = Array.isArray(blockValue) ? blockValue[0] === true : blockValue === true;\n const [fullService, serviceProviders] = await Promise.all([\n client.eshop.service.get({ id: service.id }),\n client.eshop.service.findProviders({ service_id: service.id }) as Promise<Array<Provider | ServiceProvider>>,\n ]);\n const providerIds = [...new Set(serviceProviders.map(serviceProviderId))];\n const providerResults = await Promise.all(\n providerIds.map((id) => client.eshop.provider.get({ id }).catch(() => null)),\n );\n\n booking_state.set({\n ...booking_state.get(),\n service: fullService,\n providers: providerResults.filter((provider): provider is Provider => provider !== null),\n selectedProviderId: null,\n availability: null,\n selectedDate: null,\n startDate: null,\n endDate: null,\n slots: [],\n selectedSlot: null,\n currentMonth: new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n loading: false,\n isMultiDay,\n });\n\n await booking_actions.loadMonth();\n } catch (error) {\n booking_state.setKey(\"loading\", false);\n throw error;\n }\n },\n\n async loadMonth(): Promise<void> {\n const state = booking_state.get();\n if (!state.service) return;\n booking_state.setKey(\"loading\", true);\n try {\n const chainedStart = booking_chain_start.get();\n let from: number;\n let to: number;\n if (chainedStart) {\n from = chainedStart;\n to = chainedStart;\n } else {\n const month = state.currentMonth;\n from = Math.floor(Date.UTC(month.getFullYear(), month.getMonth(), 1) / 1000);\n to = Math.floor(Date.UTC(month.getFullYear(), month.getMonth() + 1, 1) / 1000);\n }\n const availability = await loadAvailability({\n service_id: state.service.id,\n from,\n to,\n });\n booking_state.setKey(\"availability\", availability);\n booking_state.setKey(\"calendar\", bookingCalendar());\n } finally {\n booking_state.setKey(\"loading\", false);\n }\n },\n\n prevMonth(): void {\n const { currentMonth } = booking_state.get();\n booking_state.setKey(\"currentMonth\", new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1));\n void booking_actions.loadMonth();\n },\n\n nextMonth(): void {\n const { currentMonth } = booking_state.get();\n booking_state.setKey(\"currentMonth\", new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1));\n void booking_actions.loadMonth();\n },\n\n selectProvider(providerId: string | null): void {\n booking_state.set({\n ...booking_state.get(),\n selectedProviderId: providerId,\n selectedDate: null,\n startDate: null,\n endDate: null,\n slots: [],\n selectedSlot: null,\n });\n void booking_actions.loadMonth();\n },\n\n selectDate(cell: ArkyCalendarDay): void {\n if (cell.blank || !cell.available) return;\n booking_state.setKey(\"dateTimeConfirmed\", false);\n const state = booking_state.get();\n if (state.isMultiDay) {\n if (!state.startDate) {\n booking_state.setKey(\"startDate\", cell.iso);\n booking_state.setKey(\"selectedDate\", cell.iso);\n booking_state.setKey(\"endDate\", null);\n booking_state.setKey(\"selectedSlot\", null);\n } else if (!state.endDate) {\n if (cell.date.getTime() < new Date(state.startDate).getTime()) {\n booking_state.setKey(\"startDate\", cell.iso);\n booking_state.setKey(\"endDate\", state.startDate);\n } else {\n booking_state.setKey(\"endDate\", cell.iso);\n }\n booking_actions.createMultiDaySlots();\n } else {\n booking_state.setKey(\"startDate\", cell.iso);\n booking_state.setKey(\"selectedDate\", cell.iso);\n booking_state.setKey(\"endDate\", null);\n booking_state.setKey(\"selectedSlot\", null);\n }\n booking_actions.updateCalendar();\n } else {\n booking_state.set({\n ...state,\n selectedDate: cell.iso,\n slots: computeBookingSlots(cell.iso),\n selectedSlot: null,\n });\n booking_state.setKey(\"calendar\", bookingCalendar());\n }\n },\n\n createMultiDaySlots(): void {\n const state = booking_state.get();\n if (!state.startDate || !state.endDate || !state.availability) return;\n const slots: ArkyBookingSlot[] = [];\n for (let day = new Date(state.startDate); day <= new Date(state.endDate); day.setDate(day.getDate() + 1)) {\n const iso = day.toISOString().slice(0, 10);\n for (const slot of getSlotsForDate(state.availability, iso, state.selectedProviderId)) {\n slots.push({\n id: `${state.service?.id || \"service\"}-${slot.from}-${slots.length}`,\n serviceId: state.service?.id || \"\",\n providerId: slot.providerId,\n from: slot.from,\n to: slot.to,\n timeText: formatBookingSlotTime(slot.from, slot.to, state.timezone),\n dateText: new Date(slot.from * 1000).toLocaleDateString([], {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n timeZone: state.timezone,\n }),\n isMultiDay: true,\n });\n }\n }\n booking_state.setKey(\"slots\", slots);\n booking_state.setKey(\"selectedSlot\", slots.length === 1 ? slots[0] : null);\n },\n\n selectTimeSlot(slot: ArkyBookingSlot | null): void {\n booking_state.setKey(\"dateTimeConfirmed\", false);\n booking_state.setKey(\"selectedSlot\", slot);\n },\n\n resetDateSelection(): void {\n booking_state.setKey(\"selectedDate\", null);\n booking_state.setKey(\"startDate\", null);\n booking_state.setKey(\"endDate\", null);\n booking_state.setKey(\"slots\", []);\n booking_state.setKey(\"selectedSlot\", null);\n booking_state.setKey(\"dateTimeConfirmed\", false);\n },\n\n updateCalendar(): void {\n booking_state.setKey(\"calendar\", bookingCalendar());\n },\n\n findFirstAvailable(): void {\n for (const day of booking_state.get().calendar) {\n if (!day.blank && day.available) {\n booking_actions.selectDate(day);\n return;\n }\n }\n },\n\n async addToCart(): Promise<void> {\n const state = booking_state.get();\n const serviceBlocks = ((state.service as (Service & { forms?: Block[] }) | null)?.forms || []);\n const enrich = (slot: ArkyBookingSlot): ArkyBookingSlot => ({\n ...slot,\n serviceName: state.service ? serviceName(state.service, currentLocale()) : \"\",\n date: slot.dateText,\n serviceBlocks,\n });\n const selected = state.isMultiDay && state.slots.length > 0\n ? state.slots.map(enrich)\n : state.selectedSlot\n ? [enrich(state.selectedSlot)]\n : [];\n if (!selected.length) return;\n const nextCart = [...state.cart, ...selected];\n booking_state.set({\n ...state,\n cart: nextCart,\n selectedDate: null,\n startDate: null,\n endDate: null,\n slots: [],\n selectedSlot: null,\n });\n await syncBookingCart(nextCart);\n booking_state.setKey(\"calendar\", bookingCalendar());\n },\n\n async removeFromCart(slotId: string): Promise<void> {\n const nextCart = booking_state.get().cart.filter((slot) => slot.id !== slotId);\n booking_state.setKey(\"cart\", nextCart);\n await syncBookingCart(nextCart);\n },\n\n async clearCart(): Promise<void> {\n booking_state.setKey(\"cart\", []);\n await syncBookingCart([]);\n },\n\n async checkout(paymentMethodId?: string, forms: Block[] = []): Promise<{ success: true; data: OrderCheckoutResult } | { success: false; error: string }> {\n const state = booking_state.get();\n if (!state.cart.length) return { success: false, error: \"Cart is empty\" };\n booking_state.setKey(\"loading\", true);\n try {\n const result = await checkout({\n service_items: state.cart.map((slot) => ({\n ...toServiceCartItem(slot),\n forms: [],\n })),\n payment_method_id: paymentMethodId,\n promo_code: state.promoCode || undefined,\n forms,\n });\n booking_state.setKey(\"cartId\", cart.get()?.id || null);\n return { success: true, data: result };\n } catch (error) {\n return { success: false, error: readErrorMessage(error, \"Checkout failed.\") };\n } finally {\n booking_state.setKey(\"loading\", false);\n }\n },\n\n async fetchQuote(paymentMethodId?: string, promoCode?: string | null): Promise<OrderQuote | null> {\n const state = booking_state.get();\n if (!state.cart.length) return null;\n booking_state.setKey(\"fetchingQuote\", true);\n booking_state.setKey(\"quoteError\", null);\n try {\n booking_state.setKey(\"promoCode\", promoCode || null);\n const response = await fetchQuote({\n service_items: state.cart.map(toServiceCartItem),\n payment_method_id: paymentMethodId,\n promo_code: promoCode || undefined,\n });\n booking_state.setKey(\"cartId\", cart.get()?.id || null);\n booking_state.setKey(\"quote\", response);\n const methods = response?.payment_methods || session.get()?.market?.payment_methods || [];\n if (methods.length) booking_state.setKey(\"availablePaymentMethods\", methods);\n return response;\n } catch (error) {\n booking_state.setKey(\"quoteError\", readErrorMessage(error, \"Failed to fetch quote.\"));\n return null;\n } finally {\n booking_state.setKey(\"fetchingQuote\", false);\n }\n },\n\n getProvidersList(): Provider[] {\n return booking_state.get().providers;\n },\n\n prevStep(): void {\n const current = bookingCurrentStepName();\n if (current === \"review\") {\n booking_state.setKey(\"dateTimeConfirmed\", false);\n return;\n }\n if (current === \"datetime\") {\n booking_state.setKey(\"selectedSlot\", null);\n booking_state.setKey(\"dateTimeConfirmed\", false);\n }\n },\n\n nextStep(): void {\n if (bookingCurrentStepName() === \"datetime\" && booking_can_proceed.get()) {\n booking_state.setKey(\"dateTimeConfirmed\", true);\n }\n },\n\n getServicePrice(): string {\n const state = booking_state.get();\n if (state.quote?.total !== undefined) return String(state.quote.total);\n const provider = getFirstServiceProviderEntry(state);\n if (!provider?.prices) return \"\";\n return client.utils.formatPrice(provider.prices) || \"0\";\n },\n\n formatDateDisplay: formatBookingDateDisplay,\n serviceItemsFromSlots(slots: ArkyBookingSlot[]): ArkyServiceCartItem[] {\n return slots.map(toServiceCartItem);\n },\n };\n\n service_items.subscribe((items) => setBookingCartFromServiceItems(items));\n\n async function loadNode(params: GetNodeParams, options?: RequestOptions): Promise<Node> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const node = await client.cms.node.get(params, options);\n const key = params.key || params.id || params.slug || node.id;\n cms_state.setKey(\"nodes\", { ...cms_state.get().nodes, [key]: node });\n return node;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS node.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n async function loadWebsiteNode(options?: RequestOptions): Promise<Node> {\n const node = await loadNode({ key: \"website\" }, options);\n cms_state.setKey(\"website_node\", node);\n return node;\n }\n\n async function loadForm(params: { id?: string; key?: string }, options?: RequestOptions): Promise<Form> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const form = await client.cms.form.get(params, options);\n const key = params.key || params.id || form.key || form.id;\n cms_state.setKey(\"forms\", { ...cms_state.get().forms, [key]: form });\n return form;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS form.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n async function submitFormByKey(\n key: string,\n fieldsOrBlocks: FormField[] | Block[],\n options?: RequestOptions,\n ): Promise<FormSubmission> {\n const forms = cms_state.get().forms;\n const form = forms[key] || await loadForm({ key });\n const fields = fieldsOrBlocks.length > 0 && \"properties\" in fieldsOrBlocks[0]\n ? formFieldsFromBlocks(fieldsOrBlocks as Block[])\n : fieldsOrBlocks as FormField[];\n const payload: SubmitFormParams = { form_id: form.id, fields };\n return client.cms.form.submit(payload, options);\n }\n\n async function loadProducts(params: GetProductsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n eshop_state.setKey(\"loading_products\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.product.find(params, options);\n eshop_state.setKey(\"products\", response.items || []);\n eshop_state.setKey(\"product_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load products.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_products\", false);\n }\n }\n\n async function loadServices(params: GetServicesParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Service>> {\n eshop_state.setKey(\"loading_services\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.find(params, options);\n eshop_state.setKey(\"services\", response.items || []);\n eshop_state.setKey(\"service_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load services.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_services\", false);\n }\n }\n\n async function loadProviders(params: GetProvidersParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Provider>> {\n eshop_state.setKey(\"loading_providers\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.provider.find(params, options);\n eshop_state.setKey(\"providers\", response.items || []);\n eshop_state.setKey(\"provider_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load providers.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_providers\", false);\n }\n }\n\n async function loadAvailability(params: GetAvailabilityParams, options?: RequestOptions) {\n eshop_state.setKey(\"loading_availability\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.getAvailability(params, options);\n eshop_state.setKey(\"availability\", response);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load availability.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_availability\", false);\n }\n }\n\n async function initialize(options: { hydrate_cart?: boolean; load_website?: boolean; market?: string; locale?: string } = {}) {\n if (options.locale) setLocale(options.locale);\n if (options.market) setMarket(options.market);\n await identify({ market: currentMarketKey() });\n const results: { session: CustomerSession | null; cart?: Cart; website_node?: Node } = {\n session: session.get(),\n };\n if (options.hydrate_cart) results.cart = await ensureCart();\n if (options.load_website) results.website_node = await loadWebsiteNode();\n return results;\n }\n\n return {\n client,\n session,\n market,\n market_key,\n locale,\n currency,\n allowed_payment_methods,\n payment_config,\n initialize,\n identify,\n verify: client.verify,\n logout: client.logout,\n setMarket,\n setLocale,\n getMarket: currentMarketKey,\n getLocale: currentLocale,\n cms: {\n state: cms_state,\n node: {\n get: loadNode,\n find: (params: GetNodesParams, options?: RequestOptions) => client.cms.node.find(params, options),\n getChildren: (params: GetNodeChildrenParams, options?: RequestOptions) => client.cms.node.getChildren(params, options),\n loadWebsite: loadWebsiteNode,\n },\n form: {\n get: loadForm,\n submit: (params: SubmitFormParams, options?: RequestOptions) => client.cms.form.submit(params, options),\n submitByKey: submitFormByKey,\n },\n taxonomy: client.cms.taxonomy,\n },\n eshop: {\n state: eshop_state,\n product: {\n get: (params: GetProductParams, options?: RequestOptions) => client.eshop.product.get(params, options),\n find: loadProducts,\n },\n service: {\n get: (params: GetServiceParams, options?: RequestOptions) => client.eshop.service.get(params, options),\n find: loadServices,\n findProviders: (params: FindServiceProvidersParams, options?: RequestOptions) => client.eshop.service.findProviders(params, options),\n getAvailability: loadAvailability,\n },\n provider: {\n get: (params: GetProviderParams, options?: RequestOptions) => client.eshop.provider.get(params, options),\n find: loadProviders,\n },\n order: client.eshop.order,\n },\n cart: {\n cart,\n product_items,\n service_items,\n quote,\n promo_code,\n last_order,\n status: cart_status,\n product_item_count,\n service_item_count,\n item_count,\n snapshot,\n actions: {\n ensure: ensureCart,\n hydrate: hydrateCart,\n sync: syncCart,\n addProduct,\n setProductQuantity,\n removeProduct,\n addServiceItem,\n removeServiceItem,\n clear: clearCart,\n quote: fetchQuote,\n checkout,\n applyPromoCode(code: string, input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n promo_code.set(code);\n return fetchQuote({ ...input, promo_code: code });\n },\n removePromoCode(input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n promo_code.set(null);\n return fetchQuote({ ...input, promo_code: null });\n },\n selectShippingMethod(id: string | null) {\n cart_status.setKey(\"selected_shipping_method_id\", id);\n },\n locationToAddress,\n buildItems: checkoutItems,\n buildProductItems: toProductCheckoutItems,\n buildServiceItems: toServiceCheckoutItems,\n },\n },\n booking: {\n state: booking_state,\n form_blocks: booking_form_blocks,\n current_step_name: booking_current_step_name,\n can_proceed: booking_can_proceed,\n month_year: booking_month_year,\n chain_start: booking_chain_start,\n total_steps: booking_total_steps,\n steps: booking_steps,\n current_step: booking_current_step,\n actions: booking_actions,\n },\n crm: client.crm,\n activity: {\n track(params: TrackParams) {\n return client.activity.track(params);\n },\n state: atom<Activity | null>(null),\n },\n store: client.store,\n automation: client.automation,\n utils: client.utils,\n };\n}\n\nexport type ArkyStore = ReturnType<typeof createArkyStore>;\nexport type ArkyCartActions = ArkyStore[\"cart\"][\"actions\"];\n"]}
|