@kotao/storefront 0.2.6 → 0.2.8
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/README.md +7 -0
- package/dist/{bridge-ZKbKqgFd.d.ts → bridge-CfNBWu0H.d.ts} +24 -3
- package/dist/{chunk-EG34HLSX.js → chunk-DTKLAOKR.js} +26 -7
- package/dist/chunk-DTKLAOKR.js.map +1 -0
- package/dist/{chunk-O6YZEY7X.js → chunk-RFKLO6TD.js} +220 -8
- package/dist/chunk-RFKLO6TD.js.map +1 -0
- package/dist/editor.d.ts +4 -4
- package/dist/editor.js +1 -1
- package/dist/events-react.d.ts +3 -1
- package/dist/events-react.js +5 -3
- package/dist/events-react.js.map +1 -1
- package/dist/{hydrogen-Bu7k0kE4.d.ts → hydrogen-CqDMW3YC.d.ts} +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +3 -3
- package/dist/react-router.d.ts +11 -1
- package/dist/react-router.js +2 -2
- package/dist/react-router.js.map +1 -1
- package/dist/react.d.ts +3 -3
- package/dist/settings.d.ts +2 -2
- package/dist/{store-DO08fzJi.d.ts → store-ZzoBbWir.d.ts} +1 -1
- package/package.json +2 -2
- package/dist/chunk-EG34HLSX.js.map +0 -1
- package/dist/chunk-O6YZEY7X.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/editor/bridge.ts","../src/editor/custom-css.ts"],"names":[],"mappings":";AAGA,IAAM,WAAA,GAAc,yBAAA;AACpB,IAAM,cAAA,GAAiB,0BAAA;AACvB,IAAM,uBAAA,GAA0B,yBAAA;AA8bhC,SAAS,oBAAoB,SAAA,EAA4B;AACvD,EAAA,OAAO,SAAA,CAAU,WAAW,QAAQ,CAAA;AACtC;AAEA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,WAAW,KAAA,EAA2C;AAC7D,EAAA,OAAO,SAAS,KAAK,CAAA;AACvB;AAEA,SAAS,mBAAmB,KAAA,EAAuD;AACjF,EAAA,OAAO,KAAA,KAAU,MAAA,IAAa,UAAA,CAAW,KAAK,CAAA;AAChD;AAEA,SAAS,UAAU,KAAA,EAAiC;AAClD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,CAAA;AACrD;AAEA,SAAS,gBAAgB,KAAA,EAAwC;AAC/D,EAAA,OACE,SAAS,KAAK,CAAA,KACb,KAAA,CAAM,EAAA,KAAO,UAAa,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA,CAAA,IAC7C,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IACtB,UAAA,CAAW,MAAM,QAAQ,CAAA;AAE7B;AAEA,SAAS,kBAAkB,KAAA,EAA0C;AACnE,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,KAAA;AAC7B,EAAA,OACE,OAAO,MAAM,EAAA,KAAO,QAAA,IACpB,OAAO,KAAA,CAAM,IAAA,KAAS,YACtB,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA,IACzB,KAAA,CAAM,QAAQ,KAAA,CAAM,MAAM,KAC1B,KAAA,CAAM,MAAA,CAAO,MAAM,eAAe,CAAA;AAEtC;AAEA,SAAS,iBAAiB,KAAA,EAAyD;AACjF,EAAA,OACE,QAAA,CAAS,KAAK,CAAA,IACd,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,IACxB,KAAA,CAAM,MAAA,CAAO,MAAA,GAAS,CAAA,IACtB,sBAAA,CAAuB,MAAM,QAAQ,CAAA;AAEzC;AAEA,SAAS,gBAAgB,KAAA,EAAwD;AAC/E,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,OAAO,MAAM,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA;AACtF;AAEA,SAAS,iBAAiB,KAAA,EAA6C;AACrE,EAAA,OAAO,KAAA,KAAU,MAAA,IAAa,OAAO,KAAA,KAAU,QAAA;AACjD;AAEA,SAAS,uBAAuB,KAAA,EAA6C;AAC3E,EAAA,OAAO,UAAU,MAAA,IAAc,OAAO,UAAU,QAAA,IAAY,MAAA,CAAO,SAAS,KAAK,CAAA;AACnF;AAEA,SAAS,0BAA0B,KAAA,EAA6C;AAC9E,EAAA,OAAO,KAAA,KAAU,UAAc,OAAO,KAAA,KAAU,YAAY,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA,IAAK,KAAA,GAAQ,CAAA;AACjG;AAEA,SAAS,eAAe,KAAA,EAAuD;AAC7E,EAAA,IACE,CAAC,QAAA,CAAS,KAAK,CAAA,IACf,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IACtB,OAAO,MAAM,IAAA,KAAS,QAAA,IACtB,OAAO,KAAA,CAAM,UAAU,QAAA,EACvB;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OACE,iBAAiB,KAAA,CAAM,WAAW,CAAA,IAClC,gBAAA,CAAiB,MAAM,QAAQ,CAAA,IAC/B,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAA,IAC5B,gBAAA,CAAiB,MAAM,IAAI,CAAA,IAC3B,uBAAuB,KAAA,CAAM,GAAG,CAAA,IAChC,sBAAA,CAAuB,MAAM,GAAG,CAAA,IAChC,uBAAuB,KAAA,CAAM,IAAI,MAChC,KAAA,CAAM,OAAA,KAAY,MAAA,IAChB,KAAA,CAAM,QAAQ,KAAA,CAAM,OAAO,KAAK,KAAA,CAAM,OAAA,CAAQ,MAAM,eAAe,CAAA,CAAA;AAE1E;AAEA,SAAS,cAAc,KAAA,EAAsD;AAC3E,EAAA,OACE,QAAA,CAAS,KAAK,CAAA,IACd,OAAO,MAAM,IAAA,KAAS,QAAA,IACtB,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IACvB,MAAM,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,IAC5B,KAAA,CAAM,QAAA,CAAS,MAAM,cAAc,CAAA,IACnC,yBAAA,CAA0B,KAAA,CAAM,KAAK,CAAA;AAEzC;AAEA,SAAS,qBAAqB,KAAA,EAA6D;AACzF,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,OAAO,MAAM,IAAA,KAAS,QAAA,IAAY,kBAAA,CAAmB,KAAA,CAAM,QAAQ,CAAA;AAC/F;AAEA,SAAS,gBAAgB,KAAA,EAAwD;AAC/E,EAAA,OACE,QAAA,CAAS,KAAK,CAAA,IACd,OAAO,MAAM,IAAA,KAAS,QAAA,IACtB,kBAAA,CAAmB,KAAA,CAAM,QAAQ,CAAA,KAChC,MAAM,MAAA,KAAW,MAAA,IACf,MAAM,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA,IAAK,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,oBAAoB,CAAA,CAAA;AAE7E;AAEA,SAAS,gBAAgB,KAAA,EAAwD;AAC/E,EAAA,OACE,QAAA,CAAS,KAAK,CAAA,IACd,OAAO,MAAM,IAAA,KAAS,QAAA,IACtB,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IACvB,MAAM,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,IAC5B,KAAA,CAAM,SAAS,KAAA,CAAM,cAAc,CAAA,IACnC,yBAAA,CAA0B,KAAA,CAAM,SAAS,MACxC,KAAA,CAAM,MAAA,KAAW,UACf,KAAA,CAAM,OAAA,CAAQ,MAAM,MAAM,CAAA,IAAK,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,aAAa,OACjE,KAAA,CAAM,OAAA,KAAY,MAAA,IAChB,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,OAAO,CAAA,IAAK,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,eAAe,CAAA,CAAA;AAE1E;AAEA,SAAS,uBAAuB,KAAA,EAAqD;AACnF,EAAA,OAAO,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,MAAM,iBAAiB,CAAA;AAC9D;AAEA,SAAS,sBACP,KAAA,EACkE;AAClE,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,MAAA,CAAO,OAAO,KAAK,CAAA,CAAE,MAAM,eAAe,CAAA;AACtE;AAEA,SAAS,oBAAoB,KAAA,EAAkE;AAC7F,EAAA,OAAO,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,MAAM,cAAc,CAAA;AAC3D;AAEA,SAAS,aAAa,KAAA,EAAqD;AACzE,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,OAAO,MAAM,IAAA,KAAS,QAAA,IAAY,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AACvF;AAEA,SAAS,kBAAkB,KAAA,EAAgE;AACzF,EAAA,OAAO,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,MAAM,YAAY,CAAA;AACzD;AAEA,SAAS,qBACP,KAAA,EACsE;AACtE,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,MAAA;AAC7B,EAAA,MAAM,YAA4D,EAAC;AACnE,EAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtD,IAAA,IAAI,gBAAA,CAAiB,QAAQ,CAAA,EAAG,SAAA,CAAU,MAAM,CAAA,GAAI,QAAA;AAAA,EACtD;AACA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,iBAAiB,KAAA,EAAyD;AACjF,EAAA,OACE,SAAS,KAAK,CAAA,KACb,KAAA,CAAM,IAAA,KAAS,cAAc,KAAA,CAAM,IAAA,KAAS,cAAA,CAAA,IAC7C,OAAO,MAAM,MAAA,KAAW,QAAA,IACxB,KAAA,CAAM,MAAA,CAAO,MAAK,KAAM,EAAA;AAE5B;AAEA,SAAS,WAAW,KAAA,EAAiC;AACnD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,KAAK,CAAA;AACzB,IAAA,OAAO,IAAI,QAAA,KAAa,QAAA,IAAY,IAAI,QAAA,KAAa,EAAA,IAAM,IAAI,QAAA,KAAa,EAAA;AAAA,EAC9E,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEA,SAAS,iBAAiB,KAAA,EAAiC;AACzD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,KAAK,CAAA;AACzB,IAAA,OAAA,CACG,IAAI,QAAA,KAAa,QAAA,IAAY,IAAI,QAAA,KAAa,OAAA,KAC/C,IAAI,QAAA,KAAa,EAAA,IACjB,IAAI,QAAA,KAAa,EAAA,IACjB,IAAI,QAAA,KAAa,GAAA,IACjB,IAAI,MAAA,KAAW,EAAA,IACf,IAAI,IAAA,KAAS,EAAA;AAAA,EAEjB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEA,SAAS,sBAAsB,KAAA,EAA8D;AAC3F,EAAA,IACE,CAAC,SAAS,KAAK,CAAA,IACd,MAAM,IAAA,KAAS,WAAA,IAAe,MAAM,IAAA,KAAS,aAAA,IAAiB,MAAM,IAAA,KAAS,WAAA,IAC9E,OAAO,KAAA,CAAM,UAAA,KAAe,YAC5B,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IACvB,OAAO,KAAA,CAAM,YAAY,QAAA,IACzB,OAAO,MAAM,WAAA,KAAgB,QAAA,IAC7B,OAAO,KAAA,CAAM,aAAA,KAAkB,QAAA,IAC/B,OAAO,KAAA,CAAM,OAAA,KAAY,YACzB,CAAC,UAAA,CAAW,MAAM,aAAa,CAAA,IAC/B,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,cAAc,CAAA,IACnC,CAAC,MAAM,cAAA,CAAe,KAAA,CAAM,UAAU,CAAA,IACtC,CAAC,MAAM,OAAA,CAAQ,KAAA,CAAM,YAAY,CAAA,IACjC,CAAC,KAAA,CAAM,aAAa,KAAA,CAAM,CAAC,eAAe,OAAO,UAAA,KAAe,QAAQ,CAAA,IACxE,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,cAAc,KACnC,CAAC,KAAA,CAAM,eAAe,KAAA,CAAM,gBAAgB,KAC5C,CAAC,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA,IAC1B,OAAO,MAAM,QAAA,KAAa,QAAA,IAC1B,CAAC,MAAA,CAAO,SAAA,CAAU,MAAM,QAAQ,CAAA,IAChC,KAAA,CAAM,QAAA,GAAW,CAAA,EACjB;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC9B,IAAA,OACE,MAAM,aAAA,KAAkB,MAAA,IACxB,MAAM,aAAA,KAAkB,YAAA,IACxB,MAAM,aAAA,KAAkB,UAAA;AAAA,EAE5B;AACA,EAAA,IAAI,KAAA,CAAM,SAAS,aAAA,EAAe;AAChC,IAAA,OACE,SAAS,KAAA,CAAM,MAAM,MACpB,KAAA,CAAM,MAAA,CAAO,SAAS,UAAA,IAAc,KAAA,CAAM,OAAO,IAAA,KAAS,eAAA,CAAA,IAC3D,OAAO,KAAA,CAAM,MAAA,CAAO,WAAW,QAAA,IAC/B,KAAA,CAAM,OAAO,MAAA,KAAW,EAAA;AAAA,EAE5B;AACA,EAAA,OAAO,OAAO,KAAA,CAAM,cAAA,KAAmB,QAAA,IAAY,SAAA,CAAU,MAAM,iBAAiB,CAAA;AACtF;AAEA,SAAS,gBAAA,CAAiB,MAAe,MAAA,EAAoC;AAC3E,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,WAAA,IAAe,IAAA,CAAK,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AAErF,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,sBAAA;AACH,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN;AAAA,OACF;AAAA,IACF,KAAK,6BAAA;AACH,MAAA,OAAO,OAAO,KAAK,SAAA,KAAc,QAAA,IAAY,wBAAwB,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,GACpF;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,6BAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK;AAAA,OAClB,GACA,IAAA;AAAA,IACN,KAAK,eAAA;AAAA,IACL,KAAK,kBAAA;AACH,MAAA,IACE,IAAA,CAAK,SAAA,KAAc,IAAA,KAClB,OAAO,IAAA,CAAK,cAAc,QAAA,IAAY,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,CAAA,EACzE;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,IACE,IAAA,CAAK,OAAA,KAAY,MAAA,KAChB,IAAA,CAAK,IAAA,KAAS,sBAAsB,CAAC,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA,CAAA,EAC5D;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,WAAA;AAAA,QACR,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAA;AAAA,QACA,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,EAAQ,GAAI;AAAC,OAChE;AAAA,IACF,KAAK,eAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,OAAA,KAAY,SAAA,GAC3B,EAAE,MAAA,EAAQ,WAAA,EAAa,IAAA,EAAM,eAAA,EAAiB,MAAA,EAAQ,OAAA,EAAS,IAAA,CAAK,SAAQ,GAC5E,IAAA;AAAA,IACN,KAAK,uBAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC/B,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,IACnC,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,GACtB;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,uBAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,UAAU,IAAA,CAAK;AAAA,OACjB,GACA,IAAA;AAAA,IACN,KAAK,sBAAA;AACH,MAAA,OAAO,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,GAC3B,EAAE,MAAA,EAAQ,WAAA,EAAa,IAAA,EAAM,sBAAA,EAAwB,MAAA,EAAQ,QAAA,EAAU,IAAA,CAAK,UAAS,GACrF,IAAA;AAAA,IACN,KAAK,iBAAA;AACH,MAAA,OAAO,iBAAA,CAAkB,KAAK,OAAO,CAAA,IAAK,CAAC,mBAAA,CAAoB,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA,GAC1E;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,iBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,GAAI,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,GAAW,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,OAChE,GACA,IAAA;AAAA,IACN,KAAK,iBAAA;AACH,MAAA,OAAO,OAAO,KAAK,SAAA,KAAc,QAAA,IAAY,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,GAC5E;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,iBAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK;AAAA,OAClB,GACA,IAAA;AAAA,IACN,KAAK,kBAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC/B,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,IACnC,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,GACpB;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,kBAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,OAAO,IAAA,CAAK;AAAA,OACd,GACA,IAAA;AAAA,IACN,KAAK,qBAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC/B,CAAC,oBAAoB,IAAA,CAAK,SAAS,CAAA,IACnC,SAAA,CAAU,KAAK,OAAO,CAAA,IACtB,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,GACtB;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,qBAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,UAAU,IAAA,CAAK;AAAA,OACjB,GACA,IAAA;AAAA,IACN,KAAK,eAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC/B,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,IACnC,eAAA,CAAgB,IAAA,CAAK,KAAK,CAAA,GACxB;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,eAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,GAAI,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,GAAW,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,OAChE,GACA,IAAA;AAAA,IACN,KAAK,eAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC/B,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,IACnC,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA,GACpB;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,eAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,SAAS,IAAA,CAAK;AAAA,OAChB,GACA,IAAA;AAAA,IACN,KAAK,gBAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC/B,CAAC,oBAAoB,IAAA,CAAK,SAAS,CAAA,IACnC,SAAA,CAAU,KAAK,OAAO,CAAA,IACtB,OAAO,IAAA,CAAK,UAAU,QAAA,GACpB;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,gBAAA;AAAA,QACN,MAAA;AAAA,QACA,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,OAAO,IAAA,CAAK;AAAA,OACd,GACA,IAAA;AAAA,IACN,KAAK,kBAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,MAAA,KAAW,YAAY,gBAAA,CAAiB,IAAA,CAAK,QAAQ,CAAA,GACpE;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,kBAAA;AAAA,QACN,MAAA;AAAA,QACA,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,UAAU,IAAA,CAAK;AAAA,OACjB,GACA,IAAA;AAAA,IACN,KAAK,sBAAA;AACH,MAAA,OAAO,OAAO,IAAA,CAAK,MAAA,KAAW,QAAA,IAC5B,IAAA,CAAK,MAAA,CAAO,IAAA,EAAK,KAAM,EAAA,IACvB,gBAAA,CAAiB,IAAA,CAAK,QAAQ,CAAA,GAC5B;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA;AAAA,QACA,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,UAAU,IAAA,CAAK;AAAA,OACjB,GACA,IAAA;AAAA,IACN,KAAK,uBAAA;AACH,MAAA,OAAO,KAAA,CAAM,QAAQ,IAAA,CAAK,UAAU,KAAK,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,qBAAqB,CAAA,GAChF;AAAA,QACE,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,uBAAA;AAAA,QACN,MAAA;AAAA,QACA,YAAY,IAAA,CAAK;AAAA,OACnB,GACA,IAAA;AAAA,IACN;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AAEA,SAAS,qBAAA,CAAsB,MAAe,MAAA,EAAgD;AAC5F,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,cAAA,IAAkB,IAAA,CAAK,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AACxF,EAAA,IAAI,KAAK,IAAA,KAAS,gBAAA,IAAoB,OAAO,IAAA,CAAK,SAAA,KAAc,UAAU,OAAO,IAAA;AACjF,EAAA,IAAI,IAAA,CAAK,YAAY,MAAA,IAAa,CAAC,UAAU,IAAA,CAAK,OAAO,GAAG,OAAO,IAAA;AACnE,EAAA,IAAI,IAAA,CAAK,UAAU,MAAA,IAAa,CAAC,gBAAgB,IAAA,CAAK,KAAK,GAAG,OAAO,IAAA;AACrE,EAAA,IAAI,KAAK,KAAA,KAAU,MAAA,IAAa,IAAA,CAAK,OAAA,KAAY,QAAW,OAAO,IAAA;AACnE,EAAA,IAAI,IAAA,CAAK,YAAY,MAAA,IAAa,CAAC,kBAAkB,IAAA,CAAK,OAAO,GAAG,OAAO,IAAA;AAC3E,EAAA,IAAI,IAAA,CAAK,aAAa,MAAA,IAAa,CAAC,uBAAuB,IAAA,CAAK,QAAQ,GAAG,OAAO,IAAA;AAClF,EAAA,IAAI,IAAA,CAAK,WAAW,MAAA,IAAa,CAAC,gBAAgB,IAAA,CAAK,MAAM,GAAG,OAAO,IAAA;AACvE,EAAA,IAAI,IAAA,CAAK,YAAY,MAAA,IAAa,CAAC,sBAAsB,IAAA,CAAK,OAAO,GAAG,OAAO,IAAA;AAC/E,EAAA,IAAI,IAAA,CAAK,UAAU,MAAA,IAAa,CAAC,iBAAiB,IAAA,CAAK,KAAK,GAAG,OAAO,IAAA;AACtE,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,cAAA;AAAA,IACR,IAAA,EAAM,gBAAA;AAAA,IACN,MAAA;AAAA,IACA,WAAW,IAAA,CAAK,SAAA;AAAA,IAChB,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAC;AAAA,IAC9D,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACxD,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACxD,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAC;AAAA,IAC9D,GAAI,KAAK,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA,EAAS,GAAI,EAAC;AAAA,IACjE,GAAI,KAAK,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAO,GAAI,EAAC;AAAA,IAC3D,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,EAAQ,GAAI;AAAC,GAChE;AACF;AAEA,IAAM,sBAAA,uBAA6B,GAAA,CAA4C;AAAA,EAC7E,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,0BAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAM,oBAAA,uBAA2B,GAAA,CAA4C;AAAA,EAC3E,iBAAA;AAAA,EACA,wBAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,SAAS,wBAAA,CACP,MACA,MAAA,EACmC;AACnC,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,cAAA,IAAkB,IAAA,CAAK,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AACxF,EAAA,IACE,KAAK,IAAA,KAAS,eAAA,IACd,OAAO,IAAA,CAAK,WAAW,QAAA,IACvB,OAAO,IAAA,CAAK,SAAA,KAAc,YAC1B,IAAA,CAAK,SAAA,KAAc,MACnB,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,EAClC;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,IAAA,CAAK,UAAU,MAAA,IAAa,CAAC,iBAAiB,IAAA,CAAK,KAAK,GAAG,OAAO,IAAA;AAEtE,EAAA,IAAI,sBAAA,CAAuB,GAAA,CAAI,IAAA,CAAK,MAAgD,CAAA,EAAG;AACrF,IAAA,IAAI,IAAA,CAAK,OAAA,KAAY,MAAA,EAAW,OAAO,IAAA;AACvC,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAM,eAAA;AAAA,MACN,MAAA;AAAA,MACA,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,WAAW,IAAA,CAAK,SAAA;AAAA,MAChB,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,KAC1D;AAAA,EACF;AACA,EAAA,IACE,oBAAA,CAAqB,IAAI,IAAA,CAAK,MAAgD,KAC9E,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA,EACtB;AACA,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAM,eAAA;AAAA,MACN,MAAA;AAAA,MACA,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,WAAW,IAAA,CAAK,SAAA;AAAA,MAChB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,KAC1D;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,iBAAA,CAAkB,MAAe,MAAA,EAA4C;AACpF,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,cAAA,IAAkB,IAAA,CAAK,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AACxF,EAAA,IAAI,IAAA,CAAK,IAAA,KAAS,eAAA,EAAiB,OAAO,IAAA;AAC1C,EAAA,IACE,IAAA,CAAK,SAAA,KAAc,IAAA,KAClB,OAAO,IAAA,CAAK,cAAc,QAAA,IAAY,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,CAAA,EACzE;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,cAAA;AAAA,IACR,IAAA,EAAM,eAAA;AAAA,IACN,MAAA;AAAA,IACA,WAAW,IAAA,CAAK;AAAA,GAClB;AACF;AAEA,SAAS,iBAAA,CAAkB,MAAe,MAAA,EAA4C;AACpF,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,cAAA,IAAkB,IAAA,CAAK,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AACxF,EAAA,IAAI,IAAA,CAAK,SAAS,cAAA,IAAkB,CAAC,uBAAuB,IAAA,CAAK,QAAQ,GAAG,OAAO,IAAA;AACnF,EAAA,IAAI,KAAK,mBAAA,KAAwB,MAAA,IAAa,IAAA,CAAK,mBAAA,KAAwB,GAAG,OAAO,IAAA;AACrF,EAAA,IAAI,IAAA,CAAK,WAAW,MAAA,IAAa,CAAC,WAAW,IAAA,CAAK,MAAM,GAAG,OAAO,IAAA;AAClE,EAAA,IAAI,IAAA,CAAK,YAAY,MAAA,IAAa,CAAC,sBAAsB,IAAA,CAAK,OAAO,GAAG,OAAO,IAAA;AAC/E,EAAA,IAAI,IAAA,CAAK,iBAAiB,MAAA,IAAa,CAAC,oBAAoB,IAAA,CAAK,YAAY,GAAG,OAAO,IAAA;AACvF,EAAA,IAAI,IAAA,CAAK,gBAAgB,MAAA,IAAa,CAAC,kBAAkB,IAAA,CAAK,WAAW,GAAG,OAAO,IAAA;AACnF,EAAA,MAAM,YAAY,IAAA,CAAK,SAAA,KAAc,SAAY,MAAA,GAAY,oBAAA,CAAqB,KAAK,SAAS,CAAA;AAChG,EAAA,MAAM,gBACJ,IAAA,CAAK,aAAA,KAAkB,SAAY,MAAA,GAAY,oBAAA,CAAqB,KAAK,aAAa,CAAA;AACxF,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,cAAA;AAAA,IACR,IAAA,EAAM,cAAA;AAAA,IACN,MAAA;AAAA,IACA,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,GAAI,KAAK,mBAAA,KAAwB,CAAA,GAAI,EAAE,mBAAA,EAAqB,CAAA,KAAe,EAAC;AAAA,IAC5E,GAAI,KAAK,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAO,GAAI,EAAC;AAAA,IAC3D,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAC;AAAA,IAC9D,GAAI,KAAK,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,EAAc,IAAA,CAAK,YAAA,EAAa,GAAI,EAAC;AAAA,IAC7E,GAAI,KAAK,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,EAAa,IAAA,CAAK,WAAA,EAAY,GAAI,EAAC;AAAA,IAC1E,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,KAAc,EAAC;AAAA,IAC/C,GAAI,aAAA,KAAkB,MAAA,GAAY,EAAE,aAAA,KAAkB;AAAC,GACzD;AACF;AAEA,SAAS,uBAAA,CACP,MACA,MAAA,EACkC;AAClC,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,cAAA,IAAkB,IAAA,CAAK,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AACxF,EAAA,IACE,IAAA,CAAK,IAAA,KAAS,qBAAA,IACd,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC1B,CAAC,uBAAA,CAAwB,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,EAC5C;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,cAAA;AAAA,IACR,IAAA,EAAM,qBAAA;AAAA,IACN,MAAA;AAAA,IACA,WAAW,IAAA,CAAK;AAAA,GAClB;AACF;AAEA,SAAS,sBAAA,CACP,IAAA,EACA,MAAA,EACA,aAAA,EACwC;AACxC,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,cAAA,IAAkB,IAAA,CAAK,MAAA,KAAW,MAAA,EAAQ,OAAO,IAAA;AACxF,EAAA,IAAI,IAAA,CAAK,IAAA,KAAS,kBAAA,IAAsB,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK,KAAM,EAAA,EAAI;AAChG,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAA,IACG,IAAA,CAAK,QAAA,KAAa,QAAA,IAAY,IAAA,CAAK,aAAa,OAAA,IACjD,IAAA,CAAK,QAAA,KAAa,EAAA,IAClB,IAAA,CAAK,QAAA,KAAa,EAAA,IAClB,IAAA,CAAK,WAAW,aAAA,EAChB;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,EAAE,QAAQ,cAAA,EAAgB,IAAA,EAAM,oBAAoB,MAAA,EAAQ,IAAA,EAAM,KAAK,IAAA,EAAK;AACrF;AAEA,SAAS,eAAA,CACP,MAAA,EACA,aAAA,EACA,OAAA,EACM;AACN,EAAA,MAAA,CAAO,WAAA,CAAY,SAAS,aAAa,CAAA;AAC3C;AAEA,IAAM,0BAAA,GAA6B,qCAAA;AACnC,IAAM,gBAAA,GAAmB,gCAAA;AACzB,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,EAqC3B,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,EAgBhB,gBAAgB,CAAA;AAAA,CAAA,EAChB,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,EAQhB,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,EAKhB,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,EAYhB,gBAAgB,CAAA;AAAA,CAAA,EAChB,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,EAIhB,gBAAgB,CAAA;AAAA,CAAA,EAChB,gBAAgB,CAAA;AAAA,CAAA,EAChB,gBAAgB,CAAA;AAAA,CAAA,EAChB,gBAAgB,CAAA;AAAA,CAAA;AASZ,SAAS,qCAAA,CACd,MAAA,EACA,OAAA,EACA,QAAA,EACgC;AAChC,EAAA,MAAM,GAAA,GAAM,CAAA;AACZ,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,GAAA,EAAK,SAAS,KAAA,GAAQ,OAAA,CAAQ,QAAQ,GAAG,CAAA;AAClE,EAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA,EAAG,OAAO,CAAA;AACzD,EAAA,MAAM,YAAY,MAAA,CAAO,GAAA,IAAO,QAAQ,MAAA,GAAS,GAAA,GAAM,IAAI,OAAA,GAAU,OAAA;AACrE,EAAA,MAAM,YAAA,GACJ,cAAc,OAAA,GAAU,MAAA,CAAO,MAAM,OAAA,CAAQ,MAAA,GAAS,GAAA,GAAM,MAAA,CAAO,MAAA,GAAS,GAAA;AAC9E,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,GAAA,EAAK,SAAS,MAAA,GAAS,OAAA,CAAQ,SAAS,GAAG,CAAA;AACnE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,IACrB,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,YAAA,EAAc,GAAG,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,IAC7D;AAAA,GACF;AACF;AAEA,SAAS,qBAAA,GAA8D;AACrE,EAAA,MAAM,YAAa,UAAA,CAAsC,QAAA;AACzD,EAAA,IAAI,CAAC,QAAA,CAAS,SAAS,CAAA,EAAG,OAAO,MAAA;AACjC,EAAA,IACE,OAAO,UAAU,gBAAA,KAAqB,UAAA,IACtC,OAAO,SAAA,CAAU,mBAAA,KAAwB,cACzC,OAAO,SAAA,CAAU,mBAAmB,UAAA,IACpC,OAAO,UAAU,aAAA,KAAkB,UAAA,IACnC,CAAC,QAAA,CAAS,SAAA,CAAU,eAAe,CAAA,EACnC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,0BAA0B,SAAA,EAAwD;AACzF,EAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,SAAA,CAAU,aAAa,CAAA,CAAE,MAAA;AACrD,EAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,YAAA,CAAa,QAAA,CAAS,eAAe,IAClE,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA,GACjC,QAAA;AACJ,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,oBAAA;AAAA,IACA,cAAc,WAAW,CAAA,CAAA;AAAA,IACzB,aAAa,WAAW,CAAA,CAAA;AAAA,IACxB,eAAe,cAAc,CAAA,CAAA;AAAA,IAC7B,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAA,EAAI,SAAA,CAAU,eAAe,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,IAC1E,YAAY,WAAW,CAAA;AAAA,GACzB,CAAE,KAAK,IAAI,CAAA;AACX,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,cAAA,CACtB,GAAA,CAAI,CAAC,GAAA,KAAQ,CAAA,6BAAA,EAAgC,aAAA,CAAc,GAAG,CAAC,CAAA,EAAA,CAAI,CAAA,CACnE,KAAK,EAAE,CAAA;AACV,EAAA,OAAO;AAAA,IACL,mDAAA;AAAA,IACA,CAAA,oDAAA,EAAuD,aAAA,CAAc,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,IACzE,qEAAA;AAAA,IACA,MAAA;AAAA,IACA,8CAAA;AAAA,IACA,CAAA,2BAAA,EAA8B,aAAA,CAAc,SAAA,CAAU,aAAa,CAAC,CAAA,WAAA,CAAA;AAAA,IACpE;AAAA,GACF,CAAE,KAAK,EAAE,CAAA;AACX;AA4BA,SAAS,gCAAA,CACP,gBACA,UAAA,EACM;AACN,EAAA,IAAI,mBAAmB,MAAA,EAAW;AAClC,EAAA,MAAM,QAAA,GAAW,cAAA;AACjB,EAAA,IACE,OAAO,QAAA,CAAS,gBAAA,KAAqB,cACrC,OAAO,QAAA,CAAS,kBAAkB,UAAA,EAClC;AACA,IAAA;AAAA,EACF;AACA,EAAA,KAAA,MAAW,OAAA,IAAW,QAAA,CAAS,gBAAA,CAAiB,mCAAmC,CAAA,EAAG;AACpF,IAAA,OAAA,CAAQ,MAAA,IAAS;AAAA,EACnB;AACA,EAAA,MAAM,eAAA,GAAkB,MACtB,CAAC,GAAG,SAAS,gBAAA,CAAiB,6CAA6C,CAAC,CAAA,CAAE,MAAA;AAAA,IAC5E,CAAC,OAAA,KAAY,CAAC,OAAA,CAAQ,aAAa,iCAAiC;AAAA,GACtE;AACF,EAAA,MAAM,WAAA,GAAc,CAAC,EAAA,KACnB,eAAA,EAAgB,CAAE,IAAA;AAAA,IAChB,CAAC,OAAA,KACC,OAAA,CAAQ,YAAA,CAAa,iBAAiB,MAAM,EAAA,IAAM,OAAA,CAAQ,EAAA,KAAO,CAAA,gBAAA,EAAmB,EAAE,CAAA;AAAA,GAC1F,IAAK,IAAA;AAEP,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,IAAI,SAAA,CAAU,QAAA,CAAS,QAAA,KAAa,IAAA,EAAM;AAC1C,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC7C,IAAA,KAAA,CAAM,OAAA,CAAQ,oBAAoB,SAAA,CAAU,UAAA;AAC5C,IAAA,KAAA,CAAM,OAAA,CAAQ,aAAa,SAAA,CAAU,KAAA;AACrC,IAAA,KAAA,CAAM,QAAQ,CAAA,EAAG,SAAA,CAAU,OAAO,CAAA,QAAA,EAAM,UAAU,aAAa,CAAA,CAAA;AAC/D,IAAA,KAAA,CAAM,YAAA,CAAa,WAAW,eAAe,CAAA;AAC7C,IAAA,KAAA,CAAM,YAAA,CAAa,kBAAkB,aAAa,CAAA;AAClD,IAAA,KAAA,CAAM,OAAA,GAAU,MAAA;AAChB,IAAA,KAAA,CAAM,IAAA,GAAO,KAAK,SAAA,CAAU;AAAA,MAC1B,YAAY,SAAA,CAAU,UAAA;AAAA,MACtB,OAAO,SAAA,CAAU,KAAA;AAAA,MACjB,aAAa,SAAA,CAAU,WAAA;AAAA,MACvB,SAAS,SAAA,CAAU,OAAA;AAAA,MACnB,cAAc,SAAA,CAAU,YAAA;AAAA,MACxB,gBAAgB,SAAA,CAAU,cAAA;AAAA,MAC1B,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,OAAA,EAAS,SAAA,CAAU,YAAA,CAAa,QAAA,CAAS,yBAAyB,CAAA,GAC9D;AAAA,QACE,cAAA,EAAgB,SAAA,CAAU,cAAA,IAAkB,SAAA,CAAU,QAAQ,MAAA,IAAU,IAAA;AAAA,QACxE,iBAAA,EAAmB,UAAU,iBAAA,IAAqB;AAAA,OACpD,GACA;AAAA,KACL,CAAA;AACD,IAAA,KAAA,CAAM,MAAA,GAAS,0BAA0B,SAAS,CAAA;AAElD,IAAA,IAAI,SAAA,CAAU,SAAS,WAAA,EAAa;AAClC,MAAA,KAAA,CAAM,YAAA,CAAa,mCAAmC,MAAM,CAAA;AAC5D,MAAA,KAAA,CAAM,MAAA,GAAS,IAAA;AACf,MAAA,MAAM,SAAS,SAAA,CAAU,aAAA,KAAkB,MAAA,GAAS,QAAA,CAAS,OAAO,QAAA,CAAS,IAAA;AAC7E,MAAA,IAAI,SAAA,CAAU,aAAA,KAAkB,YAAA,EAAc,MAAA,CAAO,QAAQ,KAAK,CAAA;AAAA,WAC7D,MAAA,CAAO,OAAO,KAAK,CAAA;AACxB,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,MAAM,OAAA,GAAU,kDAAA;AACtB,IAAA,IAAI,SAAA,CAAU,SAAS,WAAA,EAAa;AAClC,MAAA,MAAM,OAAA,GAAU,WAAA,CAAY,SAAA,CAAU,iBAAA,IAAqB,EAAE,CAAA;AAC7D,MAAA,IAAI,YAAY,IAAA,EAAM;AACtB,MAAA,KAAA,CAAM,YAAA,CAAa,mCAAmC,MAAM,CAAA;AAC5D,MAAA,KAAA,CAAM,YAAA,CAAa,eAAA,EAAiB,SAAA,CAAU,UAAU,CAAA;AACxD,MAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AACpB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC5C,IAAA,OAAA,CAAQ,EAAA,GAAK,CAAA,gBAAA,EAAmB,SAAA,CAAU,UAAU,CAAA,CAAA;AACpD,IAAA,OAAA,CAAQ,YAAA,CAAa,iBAAA,EAAmB,SAAA,CAAU,UAAU,CAAA;AAC5D,IAAA,OAAA,CAAQ,YAAA,CAAa,mCAAmC,MAAM,CAAA;AAC9D,IAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AACpB,IAAA,IAAI,SAAA,CAAU,MAAA,EAAQ,IAAA,KAAS,eAAA,EAAiB;AAC9C,MAAA,MAAM,QAAQ,CAAC,GAAG,SAAS,gBAAA,CAAiB,sBAAsB,CAAC,CAAA,CAAE,IAAA;AAAA,QACnE,CAAC,OAAA,KAAY,OAAA,CAAQ,aAAa,oBAAoB,CAAA,KAAM,UAAU,MAAA,EAAQ;AAAA,OAChF;AACA,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAAA,WAAA,IACpC,SAAA,CAAU,OAAO,MAAA,CAAO,QAAA,CAAS,QAAQ,CAAA,EAAG,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAAA,WAC7E,QAAA,CAAS,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA;AACjC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,WAAW,eAAA,EAAgB;AACjC,IAAA,MAAM,MAAA,GAAS,SAAS,IAAA,CAAK,GAAA,CAAI,UAAU,QAAA,EAAU,QAAA,CAAS,MAAA,GAAS,CAAC,CAAC,CAAA;AACzE,IAAA,IAAI,MAAA,KAAW,UAAa,SAAA,CAAU,QAAA,GAAW,SAAS,MAAA,EAAQ,MAAA,CAAO,OAAO,OAAO,CAAA;AAAA,SAClF,CAAC,SAAS,aAAA,CAAc,MAAM,KAAK,QAAA,CAAS,IAAA,EAAM,OAAO,OAAO,CAAA;AAAA,EACvE;AACF;AAEA,SAAS,yBAAyB,MAAA,EAAoD;AACpF,EAAA,IAAI,CAAC,SAAS,MAAM,CAAA,IAAK,OAAO,MAAA,CAAO,OAAA,KAAY,YAAY,OAAO,IAAA;AACtE,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,0BAA0B,CAAA;AACzD,EAAA,IAAI,CAAC,SAAS,OAAO,CAAA,IAAK,OAAO,OAAA,CAAQ,EAAA,KAAO,UAAU,OAAO,IAAA;AACjE,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,CAAG,UAAA,CAAW,kBAAkB,GAAG,OAAO,IAAA;AACvD,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,uBAAuB,MAAA,EAAoD;AAClF,EAAA,IAAI,CAAC,SAAS,MAAM,CAAA,IAAK,OAAO,MAAA,CAAO,OAAA,KAAY,YAAY,OAAO,IAAA;AACtE,EAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AAAA,IACrB;AAAA,GACF;AACA,EAAA,IAAI,CAAC,SAAS,OAAO,CAAA,IAAK,OAAO,OAAA,CAAQ,EAAA,KAAO,UAAU,OAAO,IAAA;AACjE,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,kBAAkB,OAAA,EAAoD;AAC7E,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,YAAA,GAAe,eAAe,CAAA;AACrD,EAAA,IAAI,QAAQ,OAAO,MAAA;AACnB,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,YAAA,GAAe,2BAA2B,CAAA;AACrE,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AACnC,MAAA,IAAI,QAAA,CAAS,KAAK,CAAA,IAAK,SAAA,CAAU,MAAM,EAAE,CAAA,SAAU,KAAA,CAAM,EAAA;AAAA,IAC3D,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,OAAA,CAAQ,EAAA,CAAG,UAAA,CAAW,gBAAgB,CAAA,GAAI,QAAQ,EAAA,CAAG,KAAA,CAAM,gBAAA,CAAiB,MAAM,CAAA,GAAI,IAAA;AAC/F;AAEA,SAAS,gBAAA,CACP,UACA,OAAA,EACmC;AACnC,EAAA,MAAM,aAAa,QAAA,CAAS,gBAAA;AAAA,IAC1B;AAAA,GACF;AACA,EAAA,OAAO,UAAA,EAAY,KAAK,CAAC,OAAA,KAAY,kBAAkB,OAAO,CAAA,KAAM,OAAO,CAAA,IAAK,IAAA;AAClF;AASA,SAAS,gBAAgB,KAAA,EAA8C;AACrE,EAAA,OAAO,KAAA,CAAM,OAAA,KAAY,IAAA,IAAQ,KAAA,CAAM,OAAA,KAAY,QAAQ,KAAA,CAAM,QAAA,KAAa,IAAA,IAAQ,KAAA,CAAM,MAAA,KAAW,IAAA;AACzG;AAEA,SAAS,wBAAwB,MAAA,EAAoD;AACnF,EAAA,IAAI,CAAC,SAAS,MAAM,CAAA,IAAK,OAAO,MAAA,CAAO,OAAA,KAAY,YAAY,OAAO,IAAA;AACtE,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA;AACvC,EAAA,IAAI,CAAC,SAAS,MAAM,CAAA,IAAK,OAAO,MAAA,CAAO,YAAA,KAAiB,YAAY,OAAO,IAAA;AAC3E,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAA,CACP,KAAA,EACA,MAAA,EACA,QAAA,EAC+B;AAC/B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,YAAA,GAAe,UAAU,CAAA;AACjD,EAAA,IACE,KAAA,CAAM,qBAAqB,IAAA,IAC1B,KAAA,CAAM,WAAW,MAAA,IAAa,KAAA,CAAM,MAAA,KAAW,CAAA,IAChD,eAAA,CAAgB,KAAK,KACrB,MAAA,CAAO,YAAA,GAAe,QAAQ,CAAA,EAAG,WAAA,OAAkB,QAAA,IAClD,QAAA,KAAa,IAAA,IAAQ,QAAA,KAAa,MAAA,EACnC;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,YAAA,GAAe,MAAM,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,SAAS,WAAA,EAAa,QAAA;AACvC,EAAA,IAAI,OAAO,YAAY,QAAA,IAAY,OAAA,CAAQ,MAAK,KAAM,EAAA,IAAM,QAAA,KAAa,MAAA,EAAW,OAAO,IAAA;AAC3F,EAAA,MAAM,oBAAA,GAAuB,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA;AAEjD,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI;AACF,IAAA,IAAA,GAAO,IAAI,GAAA,CAAI,OAAA,EAAS,QAAA,CAAS,IAAI,CAAA;AACrC,IAAA,OAAA,GAAU,IAAI,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA;AAAA,EACjC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAE,MAAM,QAAA,EAAS;AAAA,EAC1B;AACA,EAAA,IAAI,IAAA,CAAK,aAAa,aAAA,IAAiB,IAAA,CAAK,aAAa,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,QAAA,EAAS;AAC1F,EAAA,IAAI,IAAA,CAAK,aAAa,SAAA,IAAa,IAAA,CAAK,aAAa,MAAA,EAAQ,OAAO,EAAE,IAAA,EAAM,QAAA,EAAS;AACrF,EAAA,IAAI,IAAA,CAAK,aAAa,QAAA,IAAY,IAAA,CAAK,aAAa,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,QAAA,EAAS;AACrF,EAAA,IACE,IAAA,CAAK,MAAA,KAAW,QAAA,CAAS,MAAA,IACzB,KAAK,QAAA,KAAa,OAAA,CAAQ,QAAA,IAC1B,IAAA,CAAK,WAAW,OAAA,CAAQ,MAAA,KACvB,IAAA,CAAK,IAAA,KAAS,MAAM,oBAAA,CAAA,EACrB;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACA,EAAA,OAAO,KAAK,MAAA,KAAW,QAAA,CAAS,MAAA,GAC5B,EAAE,MAAM,UAAA,EAAY,IAAA,EAAM,IAAA,CAAK,IAAA,KAC/B,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,KAAK,IAAA,EAAK;AAC1C;AAEA,SAAS,cAAc,KAAA,EAAuB;AAC5C,EAAA,OAAO,KAAA,CAAM,UAAA,CAAW,GAAA,EAAK,OAAO,CAAA,CAAE,UAAA,CAAW,GAAA,EAAK,QAAQ,CAAA,CAAE,UAAA,CAAW,GAAA,EAAK,MAAM,CAAA;AACxF;AAEA,IAAM,sBAAA,GAKA;AAAA,EACJ,EAAE,MAAA,EAAQ,mBAAA,EAAqB,KAAA,EAAO,mBAAA,EAAqB,OAAO,SAAA,EAAK;AAAA,EACvE,EAAE,MAAA,EAAQ,gBAAA,EAAkB,KAAA,EAAO,iBAAA,EAAmB,OAAO,QAAA,EAAI;AAAA,EACjE,EAAE,MAAA,EAAQ,kBAAA,EAAoB,KAAA,EAAO,mBAAA,EAAqB,OAAO,QAAA,EAAI;AAAA,EACrE,EAAE,MAAA,EAAQ,mBAAA,EAAqB,KAAA,EAAO,mBAAA,EAAqB,OAAO,QAAA,EAAI;AAAA,EACtE,EAAE,MAAA,EAAQ,0BAAA,EAA4B,KAAA,EAAO,sBAAA,EAAwB,OAAO,QAAA,EAAI;AAAA,EAChF,EAAE,QAAQ,gBAAA,EAAkB,KAAA,EAAO,kBAAkB,KAAA,EAAO,QAAA,EAAK,aAAa,IAAA,EAAK;AAAA,EACnF,EAAE,MAAA,EAAQ,kBAAA,EAAoB,KAAA,EAAO,mBAAA,EAAqB,OAAO,SAAA;AACnE,CAAA;AAEA,IAAM,oBAAA,GAKA;AAAA,EACJ,EAAE,MAAA,EAAQ,cAAA,EAAgB,KAAA,EAAO,eAAA,EAAiB,OAAO,QAAA,EAAI;AAAA,EAC7D,EAAE,MAAA,EAAQ,gBAAA,EAAkB,KAAA,EAAO,iBAAA,EAAmB,OAAO,QAAA,EAAI;AAAA,EACjE,EAAE,MAAA,EAAQ,iBAAA,EAAmB,KAAA,EAAO,iBAAA,EAAmB,OAAO,QAAA,EAAI;AAAA,EAClE,EAAE,MAAA,EAAQ,wBAAA,EAA0B,KAAA,EAAO,oBAAA,EAAsB,OAAO,QAAA,EAAI;AAAA,EAC5E,EAAE,QAAQ,cAAA,EAAgB,KAAA,EAAO,gBAAgB,KAAA,EAAO,QAAA,EAAK,aAAa,IAAA;AAC5E,CAAA;AAUA,SAAS,iBAAA,CACP,KAAA,EACA,KAAA,EACA,KAAA,EACQ;AACR,EAAA,MAAM,OAAA,GAAU,QAAQ,oBAAA,GAAuB,sBAAA;AAC/C,EAAA,OAAO,CAAA,qCAAA,EAAwC,aAAA,CAAc,KAAK,CAAC,iDAAiD,OAAA,CACjH,GAAA,CAAI,CAAC,EAAE,MAAA,EAAQ,WAAA,EAAa,KAAA,EAAO,KAAA,EAAO,aAAY,KAAM;AAC3D,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,QAAA,CAAS,kBAAkB,IAClD,CAAA,EAAG,KAAA,CAAM,MAAA,GAAS,MAAA,GAAS,MAAM,CAAA,CAAA,EAAI,KAAA,GAAQ,OAAA,GAAU,SAAS,CAAA,CAAA,GAChE,WAAA;AACJ,IAAA,MAAM,QAAA,GACH,MAAA,CAAO,QAAA,CAAS,QAAQ,CAAA,IAAK,CAAC,KAAA,CAAM,SAAA,IACpC,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,IAAK,CAAC,KAAA,CAAM,WAAA,IACtC,MAAA,CAAO,QAAA,CAAS,WAAW,CAAA,IAAK,CAAC,KAAA,CAAM,YAAA,IACvC,MAAA,CAAO,UAAA,CAAW,aAAa,CAAA,IAAK,CAAC,KAAA,CAAM,aAAA;AAC9C,IAAA,OAAO,mDAAmD,MAAM,CAAA,CAAA,EAAI,cAAc,0BAAA,GAA6B,EAAE,GAAG,QAAA,GAAW,WAAA,GAAc,EAAE,CAAA,aAAA,EAAgB,aAAA,CAAc,WAAW,CAAC,CAAA,SAAA,EAAY,cAAc,WAAW,CAAC,KAAK,KAAK,CAAA,SAAA,CAAA;AAAA,EAC3O,CAAC,CAAA,CACA,IAAA,CAAK,EAAE,CAAC,CAAA,OAAA,CAAA;AACb;AAEA,SAAS,uBAAA,CAAwB;AAAA,EAC/B,QAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAYG;AACD,EAAA,IAAI,cAAA,GAAoD,IAAA;AACxD,EAAA,IAAI,mBAAA,GAAyD,IAAA;AAC7D,EAAA,IAAI,eAAA,GAAqD,IAAA;AACzD,EAAA,IAAI,oBAAA,GAA0D,IAAA;AAC9D,EAAA,IAAI,iBAAA,GAAmC,IAAA;AACvC,EAAA,IAAI,eAAA,GAAiC,IAAA;AACrC,EAAA,IAAI,UAAA,GAAkD,IAAA;AACtD,EAAA,IAAI,YAAA,GAAkD,IAAA;AACtD,EAAA,IAAI,gBAAA,GAAmB,IAAA;AAEvB,EAAA,MAAM,eAAA,GAAkB,CACtB,IAAA,EACA,SAAA,KACsC;AACtC,IAAA,MAAM,QAAA,GAAW,IAAA,KAAS,SAAA,GAAY,cAAA,GAAiB,eAAA;AACvD,IAAA,QAAA,EAAU,eAAA,CAAgB,CAAA,kBAAA,EAAqB,IAAI,CAAA,CAAE,CAAA;AACrD,IAAA,IAAI,SAAA,KAAc,MAAM,OAAO,IAAA;AAC/B,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,cAAA,CAAe,CAAA,gBAAA,EAAmB,SAAS,CAAA,CAAE,CAAA;AACtE,IAAA,IAAI,OAAA,KAAY,IAAA,IAAQ,EAAE,cAAA,IAAkB,UAAU,OAAO,IAAA;AAC7D,IAAA,MAAM,cAAA,GAAiB,OAAA;AACvB,IAAA,cAAA,CAAe,YAAA,CAAa,CAAA,kBAAA,EAAqB,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA;AAC/D,IAAA,cAAA,CAAe,YAAA,CAAa,yBAAA,EAA2B,eAAA,CAAgB,SAAS,CAAC,CAAA;AACjF,IAAA,OAAO,cAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAA6B;AAC/C,IAAA,IAAI,CAAC,gBAAA,IAAoB,SAAA,KAAc,IAAA,EAAM;AAC7C,IAAA,cAAA,GAAiB,eAAA,CAAgB,WAAW,SAAS,CAAA;AAAA,EACvD,CAAA;AACA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,mBAAA,EAAqB,gBAAgB,iCAAiC,CAAA;AACtE,IAAA,mBAAA,GAAsB,IAAA;AACtB,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AACA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,MAAM,SAAS,oBAAA,IAAwB,eAAA;AACvC,IAAA,MAAM,UAAA,GAAa,QAAQ,qBAAA,IAAwB;AACnD,IAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,UAAA,KAAe,MAAA,EAAW;AACvD,IAAA,MAAM,WAAA,GAAc,YAAA,CAAa,qBAAA,IAAwB,IAAK;AAAA,MAK5D,KAAA,EAAO,GAAA;AAAA,MACP,MAAA,EAAQ;AAAA,KACV;AACA,IAAA,MAAM,QAAA,GAAW,qCAAA,CAAsC,UAAA,EAAY,WAAA,EAAa;AAAA,MAC9E,KAAA,EAAO,QAAA,CAAS,WAAA,EAAa,UAAA,IAAc,IAAA;AAAA,MAC3C,MAAA,EAAQ,QAAA,CAAS,WAAA,EAAa,WAAA,IAAe;AAAA,KAC9C,CAAA;AACD,IAAA,YAAA,CAAa,YAAA,CAAa,SAAS,CAAA,KAAA,EAAQ,QAAA,CAAS,IAAI,CAAA,OAAA,EAAU,QAAA,CAAS,GAAG,CAAA,EAAA,CAAI,CAAA;AAClF,IAAA,YAAA,CAAa,YAAA,CAAa,gBAAA,EAAkB,QAAA,CAAS,SAAS,CAAA;AAAA,EAChE,CAAA;AACA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,iBAAiB,IAAA,EAAM;AAC3B,IAAA,IAAI,sBAAsB,IAAA,EAAM;AAC9B,MAAA,YAAA,CAAa,gBAAgB,cAAc,CAAA;AAC3C,MAAA;AAAA,IACF;AACA,IAAA,MAAM,UAAU,eAAA,KAAoB,IAAA;AACpC,IAAA,IAAI,oBAAoB,IAAA,EAAM;AAC5B,MAAA,YAAA,CAAa,SAAA,GAAY,iBAAA;AAAA,QACvB,aAAA,CAAc,mBAAmB,eAAe,CAAA;AAAA,QAChD,IAAA;AAAA,QACA,iBAAA,CAAkB,mBAAmB,eAAe;AAAA,OACtD;AAAA,IACF,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,SAAA,GAAY,iBAAA;AAAA,QACvB,gBAAgB,iBAAiB,CAAA;AAAA,QACjC,KAAA;AAAA,QACA,kBAAkB,iBAAiB;AAAA,OACrC;AAAA,IACF;AACA,IAAA,YAAA,CAAa,YAAA,CAAa,gBAAgB,MAAM,CAAA;AAChD,IAAA,YAAA,CAAa,YAAA,CAAa,YAAA,EAAc,OAAA,GAAU,eAAA,GAAkB,iBAAiB,CAAA;AACrF,IAAA,eAAA,EAAgB;AAAA,EAClB,CAAA;AACA,EAAA,MAAM,WAAA,GAAc,CAAC,SAAA,EAA0B,OAAA,KAAqB;AAClE,IAAA,IAAI,CAAC,gBAAA,IAAoB,SAAA,KAAc,IAAA,EAAM;AAC7C,IAAA,oBAAA,EAAsB,gBAAgB,kCAAkC,CAAA;AACxE,IAAA,oBAAA,GAAuB,IAAA;AACvB,IAAA,eAAA,GAAkB,OAAA,IAAW,IAAA;AAC7B,IAAA,iBAAA,GAAoB,SAAA;AACpB,IAAA,eAAA,GAAkB,eAAA,CAAgB,YAAY,SAAS,CAAA;AACvD,IAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,OAAA,KAAY,MAAA,EAAW;AAC/C,MAAA,oBAAA,GAAuB,gBAAA,CAAiB,UAAU,OAAO,CAAA;AACzD,MAAA,oBAAA,EAAsB,YAAA,CAAa,oCAAoC,MAAM,CAAA;AAC7E,MAAA,oBAAA,EAAsB,YAAA;AAAA,QACpB,yBAAA;AAAA,QACA,aAAA,CAAc,WAAW,OAAO;AAAA,OAClC;AAAA,IACF;AACA,IAAA,aAAA,EAAc;AAAA,EAChB,CAAA;AACA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAwC;AAC7D,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACvB,IAAA,MAAM,OAAA,GAAU,wBAAA,CAAyB,KAAA,CAAM,MAAM,CAAA;AACrD,IAAA,IAAI,YAAY,IAAA,EAAM;AACtB,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,EAAA,CAAG,KAAA,CAAM,mBAAmB,MAAM,CAAA;AAC5D,IAAA,IAAI,SAAA,KAAc,EAAA,IAAM,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACxD,IAAA,MAAM,gBAAA,GAAmB,sBAAA,CAAuB,KAAA,CAAM,MAAM,CAAA;AAC5D,IAAA,IAAI,OAAA,KAAY,cAAA,IAAkB,gBAAA,KAAqB,mBAAA,EAAqB;AAC5E,IAAA,mBAAA,EAAqB,gBAAgB,iCAAiC,CAAA;AACtE,IAAA,mBAAA,GAAsB,gBAAA;AACtB,IAAA,MAAM,OAAA,GAAU,mBAAA,GAAsB,iBAAA,CAAkB,mBAAmB,CAAA,GAAI,IAAA;AAC/E,IAAA,IAAI,mBAAA,KAAwB,IAAA,IAAQ,OAAA,KAAY,IAAA,EAAM;AACpD,MAAA,mBAAA,CAAoB,YAAA,CAAa,mCAAmC,MAAM,CAAA;AAC1E,MAAA,mBAAA,CAAoB,YAAA,CAAa,yBAAA,EAA2B,aAAA,CAAc,SAAA,EAAW,OAAO,CAAC,CAAA;AAAA,IAC/F;AACA,IAAA,IAAI,YAAY,cAAA,EAAgB;AAC9B,MAAA,UAAA,CAAW,SAAS,CAAA;AACpB,MAAA,cAAA,CAAe,SAAS,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AACA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAwC;AAC5D,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACvB,IAAA,IAAI,mBAAmB,IAAA,EAAM;AAC7B,IAAA,MAAM,WAAA,GAAc,wBAAA,CAAyB,KAAA,CAAM,aAAa,CAAA;AAChE,IAAA,IAAI,gBAAgB,cAAA,IAAkB,cAAA,CAAe,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA,EAAG;AACpF,IAAA,YAAA,EAAa;AACb,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA;AACA,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAwC;AACvD,IAAA,IAAI,QAAA,CAAS,MAAM,MAAM,CAAA,IAAK,OAAO,KAAA,CAAM,MAAA,CAAO,YAAY,UAAA,EAAY;AACxE,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAE,CAAA;AAC1D,MAAA,IAAI,WAAW,IAAA,EAAM;AAAA,IACvB;AACA,IAAA,MAAM,MAAA,GAAS,uBAAA,CAAwB,KAAA,CAAM,MAAM,CAAA;AACnD,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA,MAAM,WAAA,GAAc,mBAAA,CAAoB,KAAA,EAAO,MAAA,EAAQ,QAAQ,CAAA;AAC/D,MAAA,IAAI,gBAAgB,IAAA,EAAM;AAC1B,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,KAAA,CAAM,cAAA,IAAiB;AACvB,QAAA,KAAA,CAAM,eAAA,IAAkB;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,QAAQ,YAAY,IAAA;AAAM,UACxB,KAAK,UAAA;AACH,YAAA,KAAA,CAAM,cAAA,IAAiB;AACvB,YAAA,KAAA,CAAM,eAAA,IAAkB;AACxB,YAAA,UAAA,CAAW,YAAY,IAAI,CAAA;AAC3B,YAAA;AAAA,UACF,KAAK,UAAA;AACH,YAAA,KAAA,CAAM,cAAA,IAAiB;AACvB,YAAA,KAAA,CAAM,eAAA,IAAkB;AACxB,YAAA,QAAA,CAAS,WAAA,EAAa,IAAA,GAAO,WAAA,CAAY,IAAA,EAAM,UAAU,qBAAqB,CAAA;AAC9E,YAAA;AAAA,UACF,KAAK,QAAA;AACH,YAAA,KAAA,CAAM,cAAA,IAAiB;AACvB,YAAA,KAAA,CAAM,eAAA,IAAkB;AACxB,YAAA;AAGA;AAEJ,QAAA;AAAA,MACF;AAAA,IACF,CAAA,MAAA,IAAW,CAAC,gBAAA,EAAkB;AAC5B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,wBAAA,CAAyB,KAAA,CAAM,MAAM,CAAA;AACrD,IAAA,IAAI,YAAY,IAAA,EAAM;AACtB,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,EAAA,CAAG,KAAA,CAAM,mBAAmB,MAAM,CAAA;AAC5D,IAAA,IAAI,SAAA,KAAc,EAAA,IAAM,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACxD,IAAA,MAAM,KAAA,GAAQ,sBAAA,CAAuB,KAAA,CAAM,MAAM,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,KAAA,KAAU,IAAA,GAAO,IAAA,GAAO,kBAAkB,KAAK,CAAA;AAC/D,IAAA,WAAA,CAAY,SAAA,EAAW,WAAW,MAAS,CAAA;AAC3C,IAAA,QAAA,CAAS,SAAA,EAAW,WAAW,MAAS,CAAA;AAAA,EAC1C,CAAA;AACA,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAwC;AAC9D,IAAA,IAAI,CAAC,SAAS,KAAA,CAAM,MAAM,KAAK,OAAO,KAAA,CAAM,MAAA,CAAO,OAAA,KAAY,UAAA,EAAY;AAC3E,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ,4BAA4B,CAAA;AAChE,IAAA,IAAI,CAAC,QAAA,CAAS,MAAM,KAAK,OAAO,MAAA,CAAO,iBAAiB,UAAA,EAAY;AACpE,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,YAAA,CAAa,0BAA0B,CAAA;AAC7D,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,iBAAA,KAAsB,IAAA,EAAM;AAC9D,IAAA,KAAA,CAAM,cAAA,IAAiB;AACvB,IAAA,KAAA,CAAM,eAAA,IAAkB;AACxB,IAAA,IAAI,sBAAA,CAAuB,GAAA,CAAI,MAAgD,CAAA,EAAG;AAChF,MAAA,cAAA,CAAe;AAAA,QACb,MAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACZ,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,IACE,eAAA,KAAoB,IAAA,IACpB,oBAAA,CAAqB,GAAA,CAAI,MAAgD,CAAA,EACzE;AACA,MAAA,cAAA,CAAe;AAAA,QACb,MAAA;AAAA,QACA,SAAA,EAAW,iBAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAEA,EAAA,QAAA,CAAS,eAAA,CAAgB,YAAA,CAAa,mBAAA,EAAqB,MAAM,CAAA;AACjE,EAAA,IAAI,SAAS,cAAA,CAAe,0BAA0B,MAAM,IAAA,IAAQ,QAAA,CAAS,SAAS,MAAA,EAAW;AAC/F,IAAA,UAAA,GAAa,QAAA,CAAS,cAAc,OAAO,CAAA;AAC3C,IAAA,UAAA,CAAW,EAAA,GAAK,0BAAA;AAChB,IAAA,UAAA,CAAW,WAAA,GAAc,qBAAA;AACzB,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,UAAU,CAAA;AAAA,EACtC;AACA,EAAA,IAAI,QAAA,CAAS,SAAS,MAAA,EAAW;AAC/B,IAAA,YAAA,GAAe,QAAA,CAAS,cAAc,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,EAAA,GAAK,gBAAA;AAClB,IAAA,YAAA,CAAa,YAAA,CAAa,QAAQ,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,YAAA,CAAa,4BAA4B,MAAM,CAAA;AAC5D,IAAA,YAAA,CAAa,gBAAA,GAAmB,SAAS,cAAc,CAAA;AACvD,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,YAAY,CAAA;AAAA,EACxC;AACA,EAAA,QAAA,CAAS,gBAAA,CAAiB,aAAA,EAAe,aAAA,EAAe,IAAI,CAAA;AAC5D,EAAA,QAAA,CAAS,gBAAA,CAAiB,YAAA,EAAc,YAAA,EAAc,IAAI,CAAA;AAC1D,EAAA,QAAA,CAAS,gBAAA,CAAiB,OAAA,EAAS,OAAA,EAAS,IAAI,CAAA;AAChD,EAAA,QAAA,CAAS,WAAA,EAAa,gBAAA,GAAmB,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACxE,EAAA,QAAA,CAAS,WAAA,EAAa,gBAAA,GAAmB,QAAA,EAAU,eAAe,CAAA;AAElE,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAoB,OAAA,EAAkB;AACpC,MAAA,gBAAA,GAAmB,OAAA;AACnB,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,YAAA,EAAa;AACb,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA,OAAA,GAAU;AACR,MAAA,YAAA,EAAa;AACb,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,QAAA,CAAS,eAAA,CAAgB,gBAAgB,mBAAmB,CAAA;AAC5D,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAA,EAAe,aAAA,EAAe,IAAI,CAAA;AAC/D,MAAA,QAAA,CAAS,mBAAA,CAAoB,YAAA,EAAc,YAAA,EAAc,IAAI,CAAA;AAC7D,MAAA,QAAA,CAAS,mBAAA,CAAoB,OAAA,EAAS,OAAA,EAAS,IAAI,CAAA;AACnD,MAAA,QAAA,CAAS,WAAA,EAAa,mBAAA,GAAsB,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AAC3E,MAAA,QAAA,CAAS,WAAA,EAAa,mBAAA,GAAsB,QAAA,EAAU,eAAe,CAAA;AACrE,MAAA,YAAA,EAAc,mBAAA,GAAsB,SAAS,cAAc,CAAA;AAC3D,MAAA,YAAA,EAAc,MAAA,IAAS;AACvB,MAAA,UAAA,EAAY,MAAA,EAAO;AAAA,IACrB;AAAA,GACF;AACF;AAEO,SAAS,4BAAA,CAA6B;AAAA,EAC3C,WAAA;AAAA,EACA,QAAA,EAAU,cAAA;AAAA,EACV,YAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAA6D;AAC3D,EAAA,MAAM,gBAAA,GAAmB,CAAC,SAAA,KAAmC;AAC3D,IAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,mBAAA,CAAoB,SAAS,CAAA,EAAG;AAC1D,IAAA,MAAM,OAAA,GAA+B;AAAA,MACnC,MAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAM,eAAA;AAAA,MACN,MAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAA,CAAO,WAAA,CAAY,SAAS,WAAW,CAAA;AAAA,EACzC,CAAA;AACA,EAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA8B;AACrD,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,QAAA,CAAS,QAAA;AAAA,MACT,GAAG,MAAA,CAAO,MAAA,CAAO,SAAS,aAAA,IAAiB,EAAE,CAAA,CAAE,OAAA;AAAA,QAAQ,CAAC,aACtD,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,CAAC,SAAS,QAAQ;AAAA,OAClD;AAAA,MACA,GAAG,MAAA,CAAO,MAAA,CAAO,SAAS,SAAA,IAAa,EAAE,CAAA,CAAE,OAAA;AAAA,QAAQ,CAAC,aAClD,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,CAAC,SAAS,QAAQ;AAAA;AAClD,KACF;AACA,IAAA,MAAM,OAAA,GAAU,SAAA,CACb,OAAA,CAAQ,CAAC,QAAA,KAAa,QAAQ,CAAA,CAC9B,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,SAAS,CAAA;AACjD,IAAA,OAAO,OAAA,KAAY,SAAY,SAAA,GAAa,OAAA,GAAU,QAAQ,IAAI,CAAA,EAAG,SAAS,OAAA,CAAQ,IAAA;AAAA,EACxF,CAAA;AACA,EAAA,MAAM,aAAA,GAAgB,CAAC,SAAA,EAAmB,OAAA,KAA4B;AACpE,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,QAAA,CAAS,QAAA;AAAA,MACT,GAAG,MAAA,CAAO,MAAA,CAAO,SAAS,aAAA,IAAiB,EAAE,CAAA,CAAE,OAAA;AAAA,QAAQ,CAAC,aACtD,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,CAAC,SAAS,QAAQ;AAAA,OAClD;AAAA,MACA,GAAG,MAAA,CAAO,MAAA,CAAO,SAAS,SAAA,IAAa,EAAE,CAAA,CAAE,OAAA;AAAA,QAAQ,CAAC,aAClD,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,CAAC,SAAS,QAAQ;AAAA;AAClD,KACF;AACA,IAAA,MAAM,OAAA,GAAU,SAAA,CACb,OAAA,CAAQ,CAAC,QAAA,KAAa,QAAQ,CAAA,CAC9B,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,SAAS,CAAA;AACjD,IAAA,MAAM,KAAA,GAAQ,SAAS,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,OAAO,CAAA;AAC1E,IAAA,MAAM,SAAS,OAAA,KAAY,MAAA,GAAY,MAAA,GAAY,OAAA,GAAU,QAAQ,IAAI,CAAA;AACzE,IAAA,OAAO,KAAA,KAAU,MAAA,GACb,OAAA,GACC,MAAA,EAAQ,QAAQ,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,IAAA,KAAS,KAAA,CAAM,IAAI,CAAA,EAAG,SAAS,KAAA,CAAM,IAAA;AAAA,EAC1F,CAAA;AACA,EAAA,MAAM,iBAAA,GAAoB,CACxB,SAAA,EACA,OAAA,KACyC;AACzC,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,QAAA,CAAS,QAAA;AAAA,MACT,GAAG,MAAA,CAAO,MAAA,CAAO,SAAS,aAAA,IAAiB,EAAE,CAAA,CAAE,OAAA;AAAA,QAAQ,CAAC,aACtD,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,CAAC,SAAS,QAAQ;AAAA,OAClD;AAAA,MACA,GAAG,MAAA,CAAO,MAAA,CAAO,SAAS,SAAA,IAAa,EAAE,CAAA,CAAE,OAAA;AAAA,QAAQ,CAAC,aAClD,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,CAAC,SAAS,QAAQ;AAAA;AAClD,KACF;AACA,IAAA,MAAM,WAAW,SAAA,CAAU,IAAA;AAAA,MAAK,CAAC,aAC/B,QAAA,CAAS,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,SAAS;AAAA,KACzD;AACA,IAAA,MAAM,YAAA,GAAe,UAAU,SAAA,CAAU,CAAC,cAAc,SAAA,CAAU,EAAA,KAAO,SAAS,CAAA,IAAK,EAAA;AACvF,IAAA,MAAM,OAAA,GAAU,YAAA,KAAiB,EAAA,GAAK,MAAA,GAAY,WAAW,YAAY,CAAA;AACzE,IAAA,MAAM,gBAAgB,MAAA,CAAO,MAAA,CAAO,OAAA,IAAW,EAAE,CAAA,CAAE,IAAA;AAAA,MACjD,CAAC,MAAA,KAAA,CAAY,MAAA,CAAO,OAAA,EAAS,UAAU,CAAA,IAAK;AAAA,KAC9C;AACA,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,OAAO;AAAA,QACL,aAAA;AAAA,QACA,cAAc,OAAA,KAAY,MAAA;AAAA,QAC1B,WAAA,EAAa,QAAA,KAAa,MAAA,IAAa,YAAA,GAAe,SAAS,MAAA,GAAS,CAAA;AAAA,QACxE,WAAW,YAAA,GAAe,CAAA;AAAA,QAC1B,MAAA,EAAQ,OAAA,EAAS,QAAA,CAAS,QAAA,KAAa;AAAA,OACzC;AAAA,IACF;AACA,IAAA,MAAM,UAAA,GAAa,SAAS,MAAA,CAAO,SAAA,CAAU,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,OAAO,CAAA,IAAK,EAAA;AACzF,IAAA,MAAM,QAAQ,UAAA,KAAe,EAAA,GAAK,MAAA,GAAY,OAAA,EAAS,OAAO,UAAU,CAAA;AACxE,IAAA,MAAM,gBAAgB,OAAA,KAAY,MAAA,GAAY,MAAA,GAAY,OAAA,GAAU,QAAQ,IAAI,CAAA;AAChF,IAAA,MAAM,WAAA,GAAc,KAAA,GAChB,aAAA,EAAe,MAAA,EAAQ,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,IAAA,KAAS,KAAA,CAAM,IAAI,CAAA,GACxE,MAAA;AACJ,IAAA,MAAM,iBAAA,GACJ,YAAY,MAAA,KACX,aAAA,EAAe,cAAc,MAAA,IAAa,OAAA,CAAQ,MAAA,CAAO,MAAA,GAAS,aAAA,CAAc,SAAA,CAAA;AACnF,IAAA,MAAM,kBACJ,KAAA,KAAU,MAAA,KACT,aAAa,KAAA,KAAU,MAAA,IAAA,CACrB,SAAS,MAAA,CAAO,MAAA,CAAO,CAAC,SAAA,KAAc,UAAU,IAAA,KAAS,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA,IAAU,KAC9E,WAAA,CAAY,KAAA,CAAA;AAClB,IAAA,OAAO;AAAA,MACL,aAAA;AAAA,MACA,YAAA,EACE,aAAA,KAAkB,MAAA,IAClB,WAAA,KAAgB,UAChB,iBAAA,IACA,eAAA;AAAA,MACF,WAAA,EACE,YAAY,MAAA,IAAa,UAAA,KAAe,MAAM,UAAA,GAAa,OAAA,CAAQ,OAAO,MAAA,GAAS,CAAA;AAAA,MACrF,WAAW,UAAA,GAAa,CAAA;AAAA,MACxB,MAAA,EAAQ,KAAA,EAAO,QAAA,CAAS,QAAA,KAAa;AAAA,KACvC;AAAA,EACF,CAAA;AACA,EAAA,MAAM,aAAA,GAAgB,CAAC,SAAA,EAAmB,OAAA,KAA2B;AACnE,IAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,IAAI,WAAW,QAAA,CAAS,QAAA;AACxB,IAAA,IAAI,UAAU,QAAA,CAAS,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,SAAS,CAAA;AACrE,IAAA,IAAI,KAAA;AAEJ,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,QAAQ,CAAA,IAAK,MAAA,CAAO,QAAQ,QAAA,CAAS,aAAA,IAAiB,EAAE,CAAA,EAAG;AAC7E,QAAA,MAAM,SAAA,GAAY,UAAU,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,SAAS,CAAA;AACzE,QAAA,IAAI,cAAc,MAAA,EAAW;AAC7B,QAAA,OAAA,GAAU,SAAA;AACV,QAAA,QAAA,GAAW,QAAA,CAAS,QAAA;AACpB,QAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,cAAA,EAAgB,MAAA,EAAO;AACvC,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,QAAQ,CAAA,IAAK,MAAA,CAAO,QAAQ,QAAA,CAAS,SAAA,IAAa,EAAE,CAAA,EAAG;AACzE,QAAA,MAAM,SAAA,GAAY,UAAU,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,SAAS,CAAA;AACzE,QAAA,IAAI,cAAc,MAAA,EAAW;AAC7B,QAAA,OAAA,GAAU,SAAA;AACV,QAAA,QAAA,GAAW,QAAA,CAAS,QAAA;AACpB,QAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,MAAA,EAAO;AACnC,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GACJ,OAAA,KAAY,MAAA,GAAY,MAAA,GAAY,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,OAAO,CAAA;AACxF,IAAA,IAAI,OAAA,KAAY,MAAA,IAAa,KAAA,KAAU,MAAA,EAAW;AAClD,IAAA,MAAM,SAAS,OAAA,KAAY,MAAA,GAAY,OAAA,GAAU,OAAA,CAAQ,IAAI,CAAA,GAAI,MAAA;AACjE,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,MAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAM,gBAAA;AAAA,MACN,MAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY,EAAC;AAAA,MAC3C,GAAI,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU,EAAC;AAAA,MACvC,GAAI,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU,EAAC;AAAA,MACvC,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY,EAAC;AAAA,MAC3C,QAAA;AAAA,MACA,GAAI,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,KAAW,EAAC;AAAA,MACzC,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY;AAAC,KAC7C;AACA,IAAA,MAAA,CAAO,WAAA,CAAY,SAAS,WAAW,CAAA;AAAA,EACzC,CAAA;AACA,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,KAA+C;AACvE,IAAA,MAAM,OAAA,GAAsC;AAAA,MAC1C,MAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAM,eAAA;AAAA,MACN,MAAA;AAAA,MACA,GAAG;AAAA,KACL;AACA,IAAA,MAAA,CAAO,WAAA,CAAY,SAAS,WAAW,CAAA;AAAA,EACzC,CAAA;AACA,EAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAuB;AAC7C,IAAA,MAAM,OAAA,GAA2C;AAAA,MAC/C,MAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAM,kBAAA;AAAA,MACN,MAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAA,CAAO,WAAA,CAAY,SAAS,WAAW,CAAA;AAAA,EACzC,CAAA;AACA,EAAA,MAAM,gBAAA,GAAmB,kBAAkB,qBAAA,EAAsB;AACjE,EAAA,IAAI,QAAA,GAAW,KAAA;AACf,EAAA,MAAM,sBAAA,uBAA6B,GAAA,EAAY;AAC/C,EAAA,MAAM,WAAA,GACJ,gBAAA,KAAqB,MAAA,GACjB,IAAA,GACA,uBAAA,CAAwB;AAAA,IACtB,QAAA,EAAU,gBAAA;AAAA,IACV,aAAA;AAAA,IACA,eAAA;AAAA,IACA,cAAA,EAAgB,gBAAA;AAAA,IAChB,cAAA,EAAgB,gBAAA;AAAA,IAChB,UAAA,EAAY,cAAA;AAAA,IACZ,QAAA,EAAU,aAAA;AAAA,IACV;AAAA,GACD,CAAA;AAEP,EAAA,MAAM,YAAY,MAAY;AAC5B,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,MAAM,OAAA,GAA+B;AAAA,MACnC,MAAA,EAAQ,cAAA;AAAA,MACR,IAAA,EAAM,cAAA;AAAA,MACN,MAAA;AAAA,MACA,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,mBAAA,EAAqB,CAAA;AAAA,MACrB,QAAQ,QAAA,CAAS,MAAA;AAAA,MACjB,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY,EAAC;AAAA,MAC3C,GAAI,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,KAAiB,EAAC;AAAA,MACrD,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,KAAgB,EAAC;AAAA,MACnD,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,KAAc,EAAC;AAAA,MAC/C,GAAI,aAAA,KAAkB,MAAA,GAAY,EAAE,aAAA,KAAkB;AAAC,KACzD;AACA,IAAA,MAAA,CAAO,WAAA,CAAY,SAAS,WAAW,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,MAAM,yBAAA,GAA4B,CAAC,SAAA,KAA4B;AAC7D,IAAA,MAAM,OAAO,gBAAA,EAAkB,WAAA;AAC/B,IAAA,MAAM,qBAAA,GAAwB,IAAA,EAAM,qBAAA,EAAuB,IAAA,CAAK,IAAI,CAAA;AACpE,IAAA,IAAI,0BAA0B,MAAA,EAAW;AACvC,MAAA,cAAA,CAAe,MAAM;AACnB,QAAA,cAAA,CAAe,MAAM;AACnB,UAAA,IAAI,QAAA,EAAU;AACd,UAAA,MAAA,CAAO,WAAA;AAAA,YACL;AAAA,cACE,MAAA,EAAQ,cAAA;AAAA,cACR,IAAA,EAAM,qBAAA;AAAA,cACN,MAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,sBAAsB,MAAM;AAC7C,MAAA,sBAAA,CAAuB,OAAO,UAAU,CAAA;AACxC,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,MAAM,WAAA,GAAc,sBAAsB,MAAM;AAC9C,QAAA,sBAAA,CAAuB,OAAO,WAAW,CAAA;AACzC,QAAA,IAAI,QAAA,EAAU;AACd,QAAA,MAAA,CAAO,WAAA;AAAA,UACL;AAAA,YACE,MAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAM,qBAAA;AAAA,YACN,MAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,sBAAA,CAAuB,IAAI,WAAW,CAAA;AAAA,IACxC,CAAC,CAAA;AACD,IAAA,sBAAA,CAAuB,IAAI,UAAU,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAA8C;AAC/D,IAAA,IAAI,KAAA,CAAM,WAAW,WAAA,EAAa;AAClC,IAAA,IAAI,KAAA,CAAM,WAAW,MAAA,EAAQ;AAC7B,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA;AACnD,IAAA,IAAI,YAAY,IAAA,EAAM;AAEtB,IAAA,QAAQ,QAAQ,IAAA;AAAM,MACpB,KAAK,sBAAA;AACH,QAAA,SAAA,EAAU;AACV,QAAA;AAAA,MACF,KAAK,6BAAA;AACH,QAAA,yBAAA,CAA0B,QAAQ,SAAS,CAAA;AAC3C,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,WAAA,EAAa,UAAA,CAAW,QAAQ,SAAS,CAAA;AACzC,QAAA;AAAA,MACF,KAAK,kBAAA;AACH,QAAA,WAAA,EAAa,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,OAAO,CAAA;AAC3D,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,WAAA,EAAa,mBAAA,CAAoB,QAAQ,OAAO,CAAA;AAChD,QAAA;AAAA,MACF,KAAK,uBAAA;AACH,QAAA,KAAA,CAAM,YAAA,CAAa,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,QAAQ,CAAA;AACtD,QAAA;AAAA,MACF,KAAK,sBAAA;AACH,QAAA,KAAA,CAAM,WAAA,CAAY,QAAQ,QAAQ,CAAA;AAClC,QAAA;AAAA,MACF,KAAK,iBAAA;AACH,QAAA,KAAA,CAAM,aAAA,CAAc,OAAA,CAAQ,OAAA,EAAS,OAAA,CAAQ,KAAK,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,iBAAA;AACH,QAAA,KAAA,CAAM,aAAA,CAAc,QAAQ,SAAS,CAAA;AACrC,QAAA;AAAA,MACF,KAAK,kBAAA;AACH,QAAA,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,KAAK,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,qBAAA;AACH,QAAA,KAAA,CAAM,WAAW,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,OAAA,EAAS,QAAQ,QAAQ,CAAA;AACrE,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,KAAA,CAAM,YAAY,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,KAAA,EAAO,QAAQ,KAAK,CAAA;AACjE,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,OAAO,CAAA;AACpD,QAAA;AAAA,MACF,KAAK,gBAAA;AACH,QAAA,KAAA,CAAM,UAAU,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,OAAA,EAAS,QAAQ,KAAK,CAAA;AACjE,QAAA;AAAA,MACF,KAAK,kBAAA;AACH,QAAA,KAAA,CAAM,eAAA,CAAgB,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AAC/C,QAAA;AAAA,MACF,KAAK,sBAAA;AACH,QAAA,KAAA,CAAM,mBAAA,CAAoB,OAAA,CAAQ,MAAA,EAAQ,OAAA,CAAQ,QAAQ,CAAA;AAC1D,QAAA;AAAA,MACF,KAAK,uBAAA;AACH,QAAA,gCAAA,CAAiC,gBAAA,EAAkB,QAAQ,UAAU,CAAA;AACrE,QAAA;AAAA;AACJ,EACF,CAAA;AAEA,EAAA,SAAA,CAAU,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAE/C,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,YAAA,EAAc,CAAC,SAAA,KAAc;AAC3B,MAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,mBAAA,CAAoB,SAAS,CAAA,EAAG;AAC1D,MAAA,WAAA,EAAa,WAAW,SAAS,CAAA;AACjC,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,IAC5B,CAAA;AAAA,IACA,aAAA,EAAe,CAAC,SAAA,KAAc;AAC5B,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,WAAA,EAAa,YAAY,SAAS,CAAA;AAClC,MAAA,aAAA,CAAc,SAAS,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,WAAA,EAAa,CAAC,SAAA,EAAW,OAAA,KAAY;AACnC,MAAA,IAAI,oBAAoB,SAAS,CAAA,IAAK,CAAC,SAAA,CAAU,OAAO,CAAA,EAAG;AAC3D,MAAA,WAAA,EAAa,WAAA,CAAY,WAAW,OAAO,CAAA;AAC3C,MAAA,aAAA,CAAc,WAAW,OAAO,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,SAAS,MAAM;AACb,MAAA,QAAA,GAAW,IAAA;AACX,MAAA,KAAA,MAAW,aAAa,sBAAA,EAAwB;AAC9C,QAAA,gBAAA,EAAkB,WAAA,EAAa,uBAAuB,SAAS,CAAA;AAAA,MACjE;AACA,MAAA,sBAAA,CAAuB,KAAA,EAAM;AAC7B,MAAA,gCAAA,CAAiC,gBAAA,EAAkB,EAAE,CAAA;AACrD,MAAA,WAAA,EAAa,OAAA,EAAQ;AACrB,MAAA,SAAA,CAAU,mBAAA,CAAoB,WAAW,SAAS,CAAA;AAAA,IACpD;AAAA,GACF;AACF;AAEO,SAAS,gCAAA,CAAiC;AAAA,EAC/C,cAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAqE;AACnE,EAAA,MAAM,aAAA,GAAgB,MAAqC,aAAA,IAAgB,IAAK,MAAA;AAEhF,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAA8C;AAC/D,IAAA,IAAI,KAAA,CAAM,WAAW,aAAA,EAAe;AACpC,IAAA,MAAM,iBAAiB,aAAA,EAAc;AACrC,IAAA,IAAI,KAAA,CAAM,WAAW,cAAA,EAAgB;AACrC,IAAA,MAAM,WAAA,GAAc,uBAAA,CAAwB,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA;AAC9D,IAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,MAAA,aAAA,GAAgB,YAAY,SAAS,CAAA;AACrC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,UAAA,GAAa,sBAAA,CAAuB,KAAA,CAAM,IAAA,EAAM,QAAQ,aAAa,CAAA;AAC3E,IAAA,IAAI,eAAe,IAAA,EAAM;AACvB,MAAA,UAAA,GAAa,EAAE,IAAA,EAAM,UAAA,CAAW,IAAA,EAAM,CAAA;AACtC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA;AAClD,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,OAAA,GAAU;AAAA,QACR,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,GAAI,MAAM,mBAAA,KAAwB,CAAA,GAAI,EAAE,mBAAA,EAAqB,CAAA,KAAe,EAAC;AAAA,QAC7E,GAAI,MAAM,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAO,GAAI,EAAC;AAAA,QAC7D,GAAI,MAAM,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ,GAAI,EAAC;AAAA,QAChE,GAAI,MAAM,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,EAAc,KAAA,CAAM,YAAA,EAAa,GAAI,EAAC;AAAA,QAC/E,GAAI,MAAM,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,EAAa,KAAA,CAAM,WAAA,EAAY,GAAI,EAAC;AAAA,QAC5E,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA,EAAU,GAAI,EAAC;AAAA,QACtE,GAAI,MAAM,aAAA,KAAkB,MAAA,GAAY,EAAE,aAAA,EAAe,KAAA,CAAM,aAAA,EAAc,GAAI;AAAC,OACnF,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA;AAClD,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,cAAA,GAAiB,MAAM,SAAS,CAAA;AAChC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,YAAA,GAAe,wBAAA,CAAyB,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA;AAChE,IAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,MAAA,cAAA;AAAA,QACE,YAAA,CAAa,YAAY,MAAA,GACrB;AAAA,UACE,QAAQ,YAAA,CAAa,MAAA;AAAA,UACrB,WAAW,YAAA,CAAa,SAAA;AAAA,UACxB,GAAI,aAAa,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,YAAA,CAAa,KAAA,EAAM,GAAI;AAAC,SAC1E,GACA;AAAA,UACE,QAAQ,YAAA,CAAa,MAAA;AAAA,UACrB,WAAW,YAAA,CAAa,SAAA;AAAA,UACxB,SAAS,YAAA,CAAa,OAAA;AAAA,UACtB,GAAI,aAAa,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,YAAA,CAAa,KAAA,EAAM,GAAI;AAAC;AAC1E,OACN;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA;AACxD,IAAA,IAAI,OAAA,KAAY,IAAA,IAAQ,mBAAA,CAAoB,OAAA,CAAQ,SAAS,CAAA,EAAG;AAChE,IAAA,eAAA,CAAgB;AAAA,MACd,WAAW,OAAA,CAAQ,SAAA;AAAA,MACnB,GAAI,QAAQ,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAQ,GAAI,EAAC;AAAA,MACpE,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,GAAI,EAAC;AAAA,MAC9D,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,GAAI,EAAC;AAAA,MAC9D,GAAI,QAAQ,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAQ,GAAI,EAAC;AAAA,MACpE,GAAI,QAAQ,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,OAAA,CAAQ,QAAA,EAAS,GAAI,EAAC;AAAA,MACvE,GAAI,QAAQ,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,EAAQ,OAAA,CAAQ,MAAA,EAAO,GAAI,EAAC;AAAA,MACjE,GAAI,QAAQ,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAQ,GAAI;AAAC,KACrE,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,SAAA,CAAU,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAE/C,EAAA,OAAO;AAAA,IACL,cAAc,MAAM;AAClB,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,kBAAA,EAAoB,CAAC,SAAA,KAAc;AACjC,MAAA,IAAI,CAAC,uBAAA,CAAwB,IAAA,CAAK,SAAS,CAAA,EAAG;AAC9C,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,6BAAA;AAAA,QACN,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,YAAA,EAAc,CAAC,SAAA,KAAc;AAC3B,MAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,mBAAA,CAAoB,SAAS,CAAA,EAAG;AAC1D,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,eAAA;AAAA,QACN,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,eAAA,EAAiB,CAAC,SAAA,EAAW,OAAA,KAAY;AACvC,MAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,mBAAA,CAAoB,SAAS,CAAA,EAAG;AAC1D,MAAA,IAAI,OAAA,KAAY,MAAA,IAAa,CAAC,SAAA,CAAU,OAAO,CAAA,EAAG;AAClD,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,kBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA;AAAA,QACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY;AAAC,OAC5C,CAAA;AAAA,IACH,CAAA;AAAA,IACA,YAAA,EAAc,CAAC,SAAA,EAAW,QAAA,KAAa;AACrC,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,uBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,WAAA,EAAa,CAAC,QAAA,KAAa;AACzB,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,aAAA,EAAe,CAAC,OAAA,EAAS,KAAA,KAAU;AACjC,MAAA,IAAI,mBAAA,CAAoB,OAAA,CAAQ,EAAE,CAAA,EAAG;AACrC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,iBAAA;AAAA,QACN,MAAA;AAAA,QACA,OAAA;AAAA,QACA,GAAI,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU;AAAC,OACxC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,aAAA,EAAe,CAAC,SAAA,KAAc;AAC5B,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,iBAAA;AAAA,QACN,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,cAAA,EAAgB,CAAC,SAAA,EAAW,KAAA,KAAU;AACpC,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,kBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,UAAA,EAAY,CAAC,SAAA,EAAW,OAAA,EAAS,QAAA,KAAa;AAC5C,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,qBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,WAAA,EAAa,CAAC,SAAA,EAAW,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,eAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA;AAAA,QACA,GAAI,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU;AAAC,OACxC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,WAAA,EAAa,CAAC,SAAA,EAAW,OAAA,KAAY;AACnC,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,eAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,YAAA,EAAc,CAAC,SAAA,EAAW,OAAA,EAAS,KAAA,KAAU;AAC3C,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,gBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,eAAA,EAAiB,CAAC,MAAA,EAAQ,QAAA,KAAa;AACrC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,kBAAA;AAAA,QACN,MAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,mBAAA,EAAqB,CAAC,MAAA,EAAQ,QAAA,KAAa;AACzC,MAAA,IAAI,MAAA,CAAO,IAAA,EAAK,KAAM,EAAA,EAAI;AAC1B,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,oBAAA,EAAsB,CAAC,UAAA,KAAe;AACpC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,uBAAA;AAAA,QACN,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,mBAAA,EAAqB,CAAC,OAAA,KAAY;AAChC,MAAA,eAAA,CAAgB,aAAA,IAAiB,aAAA,EAAe;AAAA,QAC9C,MAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAM,eAAA;AAAA,QACN,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,SAAS,MAAM;AACb,MAAA,SAAA,CAAU,mBAAA,CAAoB,WAAW,SAAS,CAAA;AAAA,IACpD;AAAA,GACF;AACF;;;ACpzEO,IAAM,qCAAA,GAAwC;AAErD,IAAM,iBAAA,GAAoB,gDAAA;AAE1B,SAAS,OAAO,KAAA,EAAwB;AACtC,EAAA,MAAM,MAAM,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAC3B,KAAA,CAAM,OAAO,CAAC,KAAA,KAA2B,OAAO,KAAA,KAAU,QAAQ,EAAE,IAAA,CAAK,IAAI,IAC7E,OAAO,KAAA,KAAU,WACf,KAAA,GACA,EAAA;AACN,EAAA,OAAO,GAAA,CACJ,QAAQ,oBAAA,EAAsB,EAAE,EAChC,OAAA,CAAQ,aAAA,EAAe,EAAE,CAAA,CACzB,IAAA,EAAK;AACV;AAEA,SAAS,uBAAuB,YAAA,EAAgC;AAC9D,EAAA,MAAM,YAAsB,EAAC;AAC7B,EAAA,IAAI,WAAA,GAAc,CAAA;AAClB,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,KAAA,GAAuB,IAAA;AAC3B,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,YAAA,CAAa,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC3D,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,KAAK,CAAA,IAAK,EAAA;AACzC,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,OAAA,IAAW,SAAA;AACX,MAAA,IAAI,cAAc,IAAA,EAAM;AACtB,QAAA,OAAA,IAAW,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,IAAK,EAAA;AACtC,QAAA,KAAA,IAAS,CAAA;AAAA,MACX,CAAA,MAAA,IAAW,SAAA,KAAc,KAAA,EAAO,KAAA,GAAQ,IAAA;AACxC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,GAAA,EAAK,KAAA,GAAQ,SAAA;AAAA,SAAA,IAC3C,SAAA,KAAc,KAAK,WAAA,IAAe,CAAA;AAAA,SAAA,IAClC,cAAc,GAAA,EAAK,WAAA,GAAc,KAAK,GAAA,CAAI,CAAA,EAAG,cAAc,CAAC,CAAA;AAAA,SAAA,IAC5D,SAAA,KAAc,KAAK,QAAA,IAAY,CAAA;AAAA,SAAA,IAC/B,cAAc,GAAA,EAAK,QAAA,GAAW,KAAK,GAAA,CAAI,CAAA,EAAG,WAAW,CAAC,CAAA;AAC/D,IAAA,IAAI,SAAA,KAAc,GAAA,IAAO,WAAA,KAAgB,CAAA,IAAK,aAAa,CAAA,EAAG;AAC5D,MAAA,SAAA,CAAU,KAAK,OAAO,CAAA;AACtB,MAAA,OAAA,GAAU,EAAA;AAAA,IACZ,OAAO,OAAA,IAAW,SAAA;AAAA,EACpB;AACA,EAAA,SAAA,CAAU,KAAK,OAAO,CAAA;AACtB,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,mBAAmB,GAAA,EAA8D;AACxF,EAAA,MAAM,QAAyD,EAAC;AAChE,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,IAAI,KAAA,GAAuB,IAAA;AAC3B,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,GAAA,CAAI,MAAA,EAAQ,SAAS,CAAA,EAAG;AAClD,IAAA,MAAM,SAAA,GAAY,GAAA,CAAI,KAAK,CAAA,IAAK,EAAA;AAChC,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,OAAA,IAAW,SAAA;AACX,MAAA,IAAI,cAAc,IAAA,EAAM;AACtB,QAAA,OAAA,IAAW,GAAA,CAAI,KAAA,GAAQ,CAAC,CAAA,IAAK,EAAA;AAC7B,QAAA,KAAA,IAAS,CAAA;AAAA,MACX,CAAA,MAAA,IAAW,SAAA,KAAc,KAAA,EAAO,KAAA,GAAQ,IAAA;AACxC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,GAAA,EAAK;AAC1C,MAAA,KAAA,GAAQ,SAAA;AACR,MAAA,OAAA,IAAW,SAAA;AACX,MAAA;AAAA,IACF;AACA,IAAA,IAAI,cAAc,GAAA,EAAK;AACrB,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,IAAI,IAAA,GAAO,EAAA;AACX,MAAA,IAAI,SAAA,GAA2B,IAAA;AAC/B,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,OAAO,KAAA,GAAQ,GAAA,CAAI,MAAA,EAAQ,KAAA,IAAS,CAAA,EAAG;AACrC,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,KAAK,CAAA,IAAK,EAAA;AAC7B,QAAA,IAAI,cAAc,IAAA,EAAM;AACtB,UAAA,IAAA,IAAQ,MAAA;AACR,UAAA,IAAI,WAAW,IAAA,EAAM;AACnB,YAAA,IAAA,IAAQ,GAAA,CAAI,KAAA,GAAQ,CAAC,CAAA,IAAK,EAAA;AAC1B,YAAA,KAAA,IAAS,CAAA;AAAA,UACX,CAAA,MAAA,IAAW,MAAA,KAAW,SAAA,EAAW,SAAA,GAAY,IAAA;AAC7C,UAAA;AAAA,QACF;AACA,QAAA,IAAI,MAAA,KAAW,GAAA,IAAO,MAAA,KAAW,GAAA,EAAK;AACpC,UAAA,SAAA,GAAY,MAAA;AACZ,UAAA,IAAA,IAAQ,MAAA;AAAA,QACV,CAAA,MAAA,IAAW,WAAW,GAAA,EAAK;AACzB,UAAA,KAAA,IAAS,CAAA;AACT,UAAA,IAAA,IAAQ,MAAA;AAAA,QACV,CAAA,MAAA,IAAW,WAAW,GAAA,EAAK;AACzB,UAAA,KAAA,IAAS,CAAA;AACT,UAAA,IAAI,UAAU,CAAA,EAAG;AACjB,UAAA,IAAA,IAAQ,MAAA;AAAA,QACV,OAAO,IAAA,IAAQ,MAAA;AAAA,MACjB;AACA,MAAA,KAAA,CAAM,KAAK,EAAE,OAAA,EAAS,QAAQ,IAAA,EAAK,EAAG,MAAM,CAAA;AAC5C,MAAA,OAAA,GAAU,EAAA;AAAA,IACZ,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,MAAA,IAAI,OAAA,CAAQ,IAAA,EAAK,KAAM,EAAA,EAAI,KAAA,CAAM,IAAA,CAAK,EAAE,OAAA,EAAS,OAAA,CAAQ,IAAA,EAAK,EAAG,IAAA,EAAM,MAAM,CAAA;AAC7E,MAAA,OAAA,GAAU,EAAA;AAAA,IACZ,OAAO,OAAA,IAAW,SAAA;AAAA,EACpB;AACA,EAAA,IAAI,OAAA,CAAQ,IAAA,EAAK,KAAM,EAAA,EAAI,KAAA,CAAM,IAAA,CAAK,EAAE,OAAA,EAAS,OAAA,CAAQ,IAAA,EAAK,EAAG,IAAA,EAAM,MAAM,CAAA;AAC7E,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,UAAA,CAAW,KAAa,KAAA,EAAuB;AACtD,EAAA,OAAO,kBAAA,CAAmB,GAAG,CAAA,CAC1B,GAAA,CAAI,CAAC,EAAE,OAAA,EAAS,MAAK,KAAM;AAC1B,IAAA,IAAI,IAAA,KAAS,IAAA,EAAM,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA;AACpC,IAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AAC3B,MAAA,OAAO,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA,GACjC,GAAG,OAAO,CAAA;AAAA,EAAO,UAAA,CAAW,IAAA,EAAM,KAAK,CAAC;AAAA,CAAA,CAAA,GACxC,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAAA,IACzB;AACA,IAAA,MAAM,SAAA,GAAY,sBAAA,CAAuB,OAAO,CAAA,CAC7C,GAAA,CAAI,CAAC,QAAA,KAAa,QAAA,CAAS,IAAA,EAAM,CAAA,CACjC,MAAA,CAAO,OAAO,CAAA,CACd,GAAA;AAAA,MAAI,CAAC,QAAA,KACJ,QAAA,CAAS,QAAA,CAAS,GAAG,CAAA,GAAI,QAAA,CAAS,UAAA,CAAW,GAAA,EAAK,KAAK,CAAA,GAAI,CAAA,EAAG,KAAK,IAAI,QAAQ,CAAA;AAAA,KACjF,CACC,KAAK,IAAI,CAAA;AACZ,IAAA,OAAO,cAAc,EAAA,GAAK,EAAA,GAAK,CAAA,EAAG,SAAS,KAAK,IAAI,CAAA,CAAA,CAAA;AAAA,EACtD,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,IAAI,CAAA;AACd;AAGO,SAAS,yBAAA,CAA0B,OAAgB,SAAA,EAA2B;AACnF,EAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,EAAA,OAAO,GAAA,KAAQ,KAAK,EAAA,GAAK,UAAA,CAAW,KAAK,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAE,CAAA,CAAE,IAAA,EAAK;AACjF","file":"chunk-RFKLO6TD.js","sourcesContent":["import type { ThemeSettingsStore } from '../settings/store'\nimport type { ResolvedBlock, ResolvedSection, ResolvedSettings } from '../settings/types'\n\nconst HOST_SOURCE = 'kotao:workspaces-editor'\nconst PREVIEW_SOURCE = 'kotao:storefront-preview'\nconst VISUAL_READY_REQUEST_ID = /^[A-Za-z0-9_-]{1,128}$/u\n\nexport interface StorefrontEditorMessageTarget {\n postMessage(message: unknown, targetOrigin: string): void\n}\n\nexport interface StorefrontEditorMessageEvent {\n readonly origin: string\n readonly data: unknown\n readonly source?: StorefrontEditorMessageTarget | null\n}\n\nexport interface StorefrontEditorMessageSource {\n addEventListener(type: 'message', listener: (event: StorefrontEditorMessageEvent) => void): void\n removeEventListener(\n type: 'message',\n listener: (event: StorefrontEditorMessageEvent) => void,\n ): void\n}\n\ninterface StorefrontEditorPointerEvent {\n readonly target?: unknown\n readonly relatedTarget?: unknown\n readonly button?: number\n readonly defaultPrevented?: boolean\n readonly metaKey?: boolean\n readonly ctrlKey?: boolean\n readonly shiftKey?: boolean\n readonly altKey?: boolean\n preventDefault?(): void\n stopPropagation?(): void\n}\n\nexport interface StorefrontEditorRect {\n readonly top: number\n readonly right: number\n readonly bottom: number\n readonly left: number\n readonly width: number\n readonly height: number\n}\n\ninterface StorefrontEditorDomElement {\n id: string\n innerHTML?: string\n textContent?: string | null\n closest(selector: string): StorefrontEditorDomElement | null\n contains(candidate: unknown): boolean\n getAttribute?(name: string): string | null\n getBoundingClientRect?(): StorefrontEditorRect\n addEventListener?(type: 'click', listener: (event: StorefrontEditorPointerEvent) => void): void\n removeEventListener?(type: 'click', listener: (event: StorefrontEditorPointerEvent) => void): void\n setAttribute(name: string, value: string): void\n removeAttribute(name: string): void\n remove?(): void\n}\n\ninterface StorefrontEditorStyleElement {\n id: string\n textContent: string | null\n remove(): void\n}\n\nexport interface StorefrontEditorDocument {\n readonly documentElement: Pick<StorefrontEditorDomElement, 'setAttribute' | 'removeAttribute'>\n readonly head?: { appendChild(element: StorefrontEditorStyleElement): void }\n readonly body?: { appendChild(element: StorefrontEditorDomElement): void }\n readonly defaultView?: {\n readonly innerWidth: number\n readonly innerHeight: number\n readonly location?: { readonly href: string; readonly origin: string }\n requestAnimationFrame?(callback: (now: number) => void): number\n cancelAnimationFrame?(requestId: number): void\n open?(url: string, target: '_blank', features: 'noopener,noreferrer'): void\n addEventListener?(type: 'scroll' | 'resize', listener: () => void, capture?: boolean): void\n removeEventListener?(type: 'scroll' | 'resize', listener: () => void, capture?: boolean): void\n }\n createElement(tagName: 'style'): StorefrontEditorStyleElement\n createElement(tagName: 'div'): StorefrontEditorDomElement\n getElementById(id: string): StorefrontEditorDomElement | StorefrontEditorStyleElement | null\n querySelectorAll?(selector: string): readonly StorefrontEditorDomElement[]\n addEventListener(\n type: 'pointerover' | 'pointerout' | 'click',\n listener: (event: StorefrontEditorPointerEvent) => void,\n capture?: boolean,\n ): void\n removeEventListener(\n type: 'pointerover' | 'pointerout' | 'click',\n listener: (event: StorefrontEditorPointerEvent) => void,\n capture?: boolean,\n ): void\n}\n\nexport interface StorefrontEditorBridge {\n ready(): void\n hoverSection(sectionId: string | null): void\n selectSection(sectionId: string): void\n selectBlock(sectionId: string, blockId: string): void\n dispose(): void\n}\n\nexport interface StorefrontEditorSettingOption {\n readonly value: string\n readonly label: string\n}\n\nexport interface StorefrontEditorThemeStyle {\n readonly name: string\n readonly settings: ResolvedSettings\n}\n\nexport interface StorefrontEditorSettingInput {\n readonly type: string\n readonly name: string\n readonly label: string\n readonly group?: string\n readonly defaultValue?: unknown\n readonly placeholder?: string\n readonly helpText?: string\n readonly options?: readonly StorefrontEditorSettingOption[]\n readonly min?: number\n readonly max?: number\n readonly step?: number\n readonly unit?: string\n}\n\nexport interface StorefrontEditorBlockSchema {\n readonly type: string\n readonly label: string\n readonly settings: readonly StorefrontEditorSettingInput[]\n readonly limit?: number\n}\n\nexport interface StorefrontEditorSectionPresetBlock {\n readonly type: string\n readonly settings?: ResolvedSettings\n}\n\nexport interface StorefrontEditorSectionPreset {\n readonly name: string\n readonly settings?: ResolvedSettings\n readonly blocks?: readonly StorefrontEditorSectionPresetBlock[]\n}\n\nexport interface StorefrontEditorSectionSchema {\n readonly type: string\n readonly label: string\n readonly settings: readonly StorefrontEditorSettingInput[]\n readonly blocks?: readonly StorefrontEditorBlockSchema[]\n readonly maxBlocks?: number\n readonly presets?: readonly StorefrontEditorSectionPreset[]\n}\n\nexport type StorefrontEditorSelectionScope =\n | { readonly kind: 'template'; readonly handle: string }\n | { readonly kind: 'sectionGroup'; readonly handle: string }\n\nexport interface StorefrontEditorSelection {\n readonly sectionId: string\n readonly blockId?: string\n readonly block?: ResolvedBlock\n readonly scope?: StorefrontEditorSelectionScope\n readonly section?: ResolvedSection\n readonly sections?: readonly ResolvedSection[]\n readonly schema?: StorefrontEditorSectionSchema\n readonly schemas?: Readonly<Record<string, StorefrontEditorSectionSchema>>\n}\n\nexport type StorefrontEditorCanvasSectionAction =\n | 'section.addBefore'\n | 'section.addAfter'\n | 'section.duplicate'\n | 'section.toggleVisibility'\n | 'section.moveUp'\n | 'section.moveDown'\n | 'section.remove'\n\nexport type StorefrontEditorCanvasBlockAction =\n | 'block.duplicate'\n | 'block.toggleVisibility'\n | 'block.moveUp'\n | 'block.moveDown'\n | 'block.remove'\n\nexport type StorefrontEditorCanvasAction =\n | {\n readonly action: StorefrontEditorCanvasSectionAction\n readonly sectionId: string\n readonly scope?: StorefrontEditorSelectionScope\n }\n | {\n readonly action: StorefrontEditorCanvasBlockAction\n readonly sectionId: string\n readonly blockId: string\n readonly scope?: StorefrontEditorSelectionScope\n }\n\nexport interface StorefrontEditorValuesDocument {\n readonly shopId: string\n readonly sections: readonly ResolvedSection[]\n}\n\nexport interface StorefrontEditorReady {\n readonly sections: readonly ResolvedSection[]\n readonly visualReadyProtocol?: 1\n readonly global?: ResolvedSettings\n readonly schemas?: Readonly<Record<string, StorefrontEditorSectionSchema>>\n readonly globalInputs?: readonly StorefrontEditorSettingInput[]\n readonly themeStyles?: readonly StorefrontEditorThemeStyle[]\n readonly templates?: Readonly<Record<string, StorefrontEditorValuesDocument>>\n readonly sectionGroups?: Readonly<Record<string, StorefrontEditorValuesDocument>>\n}\n\nexport interface StorefrontEditorHostBridge {\n requestReady(): void\n requestVisualReady(requestId: string): void\n hoverSection(sectionId: string | null): void\n activateSection(sectionId: string | null, blockId?: string): void\n patchSection(sectionId: string, settings: ResolvedSettings): void\n patchGlobal(settings: ResolvedSettings): void\n insertSection(section: ResolvedSection, index?: number): void\n removeSection(sectionId: string): void\n reorderSection(sectionId: string, index: number): void\n patchBlock(sectionId: string, blockId: string, settings: ResolvedSettings): void\n insertBlock(sectionId: string, block: ResolvedBlock, index?: number): void\n removeBlock(sectionId: string, blockId: string): void\n reorderBlock(sectionId: string, blockId: string, index: number): void\n replaceTemplate(handle: string, document: StorefrontEditorValuesDocument): void\n replaceSectionGroup(handle: string, document: StorefrontEditorValuesDocument): void\n replaceAppExtensions(extensions: readonly StorefrontEditorAppExtensionPreview[]): void\n setInspectorEnabled(enabled: boolean): void\n dispose(): void\n}\n\nexport interface StorefrontEditorNavigationRequest {\n readonly href: string\n}\n\nexport interface StorefrontEditorAppExtensionPreview {\n readonly instanceId: string\n readonly kind: 'app_embed' | 'app_section' | 'app_block'\n readonly appId: string\n readonly appName: string\n readonly extensionId: string\n readonly extensionName: string\n readonly version: string\n readonly entrypointUrl: string\n readonly stylesheetUrls: readonly string[]\n readonly capabilities: readonly string[]\n readonly allowedOrigins: readonly string[]\n readonly settings: ResolvedSettings\n readonly embedLocation?: 'head' | 'body_start' | 'body_end'\n readonly target?: { readonly kind: 'template' | 'section_group'; readonly handle: string }\n readonly templateHandle?: string\n readonly sectionInstanceId?: string\n readonly position: number\n}\n\nexport interface CreateStorefrontEditorBridgeArgs {\n readonly adminOrigin: string\n readonly shopId: string\n readonly store: ThemeSettingsStore\n readonly schemas?: Readonly<Record<string, StorefrontEditorSectionSchema>>\n readonly globalInputs?: readonly StorefrontEditorSettingInput[]\n readonly themeStyles?: readonly StorefrontEditorThemeStyle[]\n readonly templates?: Readonly<Record<string, StorefrontEditorValuesDocument>>\n readonly sectionGroups?: Readonly<Record<string, StorefrontEditorValuesDocument>>\n readonly transport: StorefrontEditorMessageSource\n readonly target: StorefrontEditorMessageTarget\n readonly document?: StorefrontEditorDocument\n}\n\nexport interface CreateStorefrontEditorHostBridgeArgs {\n readonly onSelectSection: (selection: StorefrontEditorSelection) => void\n readonly onCanvasAction?: (action: StorefrontEditorCanvasAction) => void\n readonly onHoverSection?: (sectionId: string | null) => void\n readonly onNavigate?: (request: StorefrontEditorNavigationRequest) => void\n readonly onReady?: (ready: StorefrontEditorReady) => void\n readonly onVisualReady?: (requestId: string) => void\n readonly previewOrigin: string\n readonly resolveTarget?: () => StorefrontEditorMessageTarget | null\n readonly shopId: string\n readonly transport: StorefrontEditorMessageSource\n readonly target: StorefrontEditorMessageTarget\n}\n\ntype HostMessage =\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'editor.ready.request'\n readonly shopId: string\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'editor.visual-ready.request'\n readonly shopId: string\n readonly requestId: string\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'section.hover' | 'section.activate'\n readonly shopId: string\n readonly sectionId: string | null\n readonly blockId?: string\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'inspector.set'\n readonly shopId: string\n readonly enabled: boolean\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'settings.patchSection'\n readonly shopId: string\n readonly sectionId: string\n readonly settings: ResolvedSettings\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'settings.patchGlobal'\n readonly shopId: string\n readonly settings: ResolvedSettings\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'sections.insert'\n readonly shopId: string\n readonly section: ResolvedSection\n readonly index?: number\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'sections.remove'\n readonly shopId: string\n readonly sectionId: string\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'sections.reorder'\n readonly shopId: string\n readonly sectionId: string\n readonly index: number\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'settings.patchBlock'\n readonly shopId: string\n readonly sectionId: string\n readonly blockId: string\n readonly settings: ResolvedSettings\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'blocks.insert'\n readonly shopId: string\n readonly sectionId: string\n readonly block: ResolvedBlock\n readonly index?: number\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'blocks.remove'\n readonly shopId: string\n readonly sectionId: string\n readonly blockId: string\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'blocks.reorder'\n readonly shopId: string\n readonly sectionId: string\n readonly blockId: string\n readonly index: number\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'template.replace'\n readonly shopId: string\n readonly handle: string\n readonly document: StorefrontEditorValuesDocument\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'sectionGroup.replace'\n readonly shopId: string\n readonly handle: string\n readonly document: StorefrontEditorValuesDocument\n }\n | {\n readonly source: typeof HOST_SOURCE\n readonly type: 'appExtensions.replace'\n readonly shopId: string\n readonly extensions: readonly StorefrontEditorAppExtensionPreview[]\n }\n\ninterface PreviewSelectionMessage {\n readonly source: typeof PREVIEW_SOURCE\n readonly type: 'section.select'\n readonly shopId: string\n readonly sectionId: string\n readonly blockId?: string\n readonly block?: ResolvedBlock\n readonly scope?: StorefrontEditorSelectionScope\n readonly section?: ResolvedSection\n readonly sections?: readonly ResolvedSection[]\n readonly schema?: StorefrontEditorSectionSchema\n readonly schemas?: Readonly<Record<string, StorefrontEditorSectionSchema>>\n}\n\ninterface PreviewCanvasActionMessage {\n readonly source: typeof PREVIEW_SOURCE\n readonly type: 'editor.action'\n readonly shopId: string\n readonly action: StorefrontEditorCanvasAction['action']\n readonly sectionId: string\n readonly blockId?: string\n readonly scope?: StorefrontEditorSelectionScope\n}\n\ninterface PreviewHoverMessage {\n readonly source: typeof PREVIEW_SOURCE\n readonly type: 'section.hover'\n readonly shopId: string\n readonly sectionId: string | null\n}\n\ninterface PreviewReadyMessage extends StorefrontEditorReady {\n readonly source: typeof PREVIEW_SOURCE\n readonly type: 'editor.ready'\n readonly shopId: string\n}\n\ninterface PreviewVisualReadyMessage {\n readonly source: typeof PREVIEW_SOURCE\n readonly type: 'editor.visual-ready'\n readonly shopId: string\n readonly requestId: string\n}\n\ninterface PreviewNavigationRequestMessage extends StorefrontEditorNavigationRequest {\n readonly source: typeof PREVIEW_SOURCE\n readonly type: 'preview.navigate'\n readonly shopId: string\n}\n\nfunction isReservedSectionId(sectionId: string): boolean {\n return sectionId.startsWith('theme:')\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction isSettings(value: unknown): value is ResolvedSettings {\n return isRecord(value)\n}\n\nfunction isOptionalSettings(value: unknown): value is ResolvedSettings | undefined {\n return value === undefined || isSettings(value)\n}\n\nfunction isBlockId(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0\n}\n\nfunction isResolvedBlock(value: unknown): value is ResolvedBlock {\n return (\n isRecord(value) &&\n (value.id === undefined || isBlockId(value.id)) &&\n typeof value.type === 'string' &&\n isSettings(value.settings)\n )\n}\n\nfunction isResolvedSection(value: unknown): value is ResolvedSection {\n if (!isRecord(value)) return false\n return (\n typeof value.id === 'string' &&\n typeof value.type === 'string' &&\n isSettings(value.settings) &&\n Array.isArray(value.blocks) &&\n value.blocks.every(isResolvedBlock)\n )\n}\n\nfunction isValuesDocument(value: unknown): value is StorefrontEditorValuesDocument {\n return (\n isRecord(value) &&\n typeof value.shopId === 'string' &&\n value.shopId.length > 0 &&\n isResolvedSectionArray(value.sections)\n )\n}\n\nfunction isSettingOption(value: unknown): value is StorefrontEditorSettingOption {\n return isRecord(value) && typeof value.value === 'string' && typeof value.label === 'string'\n}\n\nfunction isOptionalString(value: unknown): value is string | undefined {\n return value === undefined || typeof value === 'string'\n}\n\nfunction isOptionalFiniteNumber(value: unknown): value is number | undefined {\n return value === undefined || (typeof value === 'number' && Number.isFinite(value))\n}\n\nfunction isOptionalPositiveInteger(value: unknown): value is number | undefined {\n return value === undefined || (typeof value === 'number' && Number.isInteger(value) && value > 0)\n}\n\nfunction isSettingInput(value: unknown): value is StorefrontEditorSettingInput {\n if (\n !isRecord(value) ||\n typeof value.type !== 'string' ||\n typeof value.name !== 'string' ||\n typeof value.label !== 'string'\n ) {\n return false\n }\n\n return (\n isOptionalString(value.placeholder) &&\n isOptionalString(value.helpText) &&\n isOptionalString(value.group) &&\n isOptionalString(value.unit) &&\n isOptionalFiniteNumber(value.min) &&\n isOptionalFiniteNumber(value.max) &&\n isOptionalFiniteNumber(value.step) &&\n (value.options === undefined ||\n (Array.isArray(value.options) && value.options.every(isSettingOption)))\n )\n}\n\nfunction isBlockSchema(value: unknown): value is StorefrontEditorBlockSchema {\n return (\n isRecord(value) &&\n typeof value.type === 'string' &&\n typeof value.label === 'string' &&\n Array.isArray(value.settings) &&\n value.settings.every(isSettingInput) &&\n isOptionalPositiveInteger(value.limit)\n )\n}\n\nfunction isSectionPresetBlock(value: unknown): value is StorefrontEditorSectionPresetBlock {\n return isRecord(value) && typeof value.type === 'string' && isOptionalSettings(value.settings)\n}\n\nfunction isSectionPreset(value: unknown): value is StorefrontEditorSectionPreset {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n isOptionalSettings(value.settings) &&\n (value.blocks === undefined ||\n (Array.isArray(value.blocks) && value.blocks.every(isSectionPresetBlock)))\n )\n}\n\nfunction isSectionSchema(value: unknown): value is StorefrontEditorSectionSchema {\n return (\n isRecord(value) &&\n typeof value.type === 'string' &&\n typeof value.label === 'string' &&\n Array.isArray(value.settings) &&\n value.settings.every(isSettingInput) &&\n isOptionalPositiveInteger(value.maxBlocks) &&\n (value.blocks === undefined ||\n (Array.isArray(value.blocks) && value.blocks.every(isBlockSchema))) &&\n (value.presets === undefined ||\n (Array.isArray(value.presets) && value.presets.every(isSectionPreset)))\n )\n}\n\nfunction isResolvedSectionArray(value: unknown): value is readonly ResolvedSection[] {\n return Array.isArray(value) && value.every(isResolvedSection)\n}\n\nfunction isSectionSchemaRecord(\n value: unknown,\n): value is Readonly<Record<string, StorefrontEditorSectionSchema>> {\n return isRecord(value) && Object.values(value).every(isSectionSchema)\n}\n\nfunction isSettingInputArray(value: unknown): value is readonly StorefrontEditorSettingInput[] {\n return Array.isArray(value) && value.every(isSettingInput)\n}\n\nfunction isThemeStyle(value: unknown): value is StorefrontEditorThemeStyle {\n return isRecord(value) && typeof value.name === 'string' && isSettings(value.settings)\n}\n\nfunction isThemeStyleArray(value: unknown): value is readonly StorefrontEditorThemeStyle[] {\n return Array.isArray(value) && value.every(isThemeStyle)\n}\n\nfunction validValuesDocuments(\n value: unknown,\n): Readonly<Record<string, StorefrontEditorValuesDocument>> | undefined {\n if (!isRecord(value)) return undefined\n const documents: Record<string, StorefrontEditorValuesDocument> = {}\n for (const [handle, document] of Object.entries(value)) {\n if (isValuesDocument(document)) documents[handle] = document\n }\n return documents\n}\n\nfunction isSelectionScope(value: unknown): value is StorefrontEditorSelectionScope {\n return (\n isRecord(value) &&\n (value.kind === 'template' || value.kind === 'sectionGroup') &&\n typeof value.handle === 'string' &&\n value.handle.trim() !== ''\n )\n}\n\nfunction isHttpsUrl(value: unknown): value is string {\n if (typeof value !== 'string') return false\n try {\n const url = new URL(value)\n return url.protocol === 'https:' && url.username === '' && url.password === ''\n } catch {\n return false\n }\n}\n\nfunction isBareHttpOrigin(value: unknown): value is string {\n if (typeof value !== 'string') return false\n try {\n const url = new URL(value)\n return (\n (url.protocol === 'https:' || url.protocol === 'http:') &&\n url.username === '' &&\n url.password === '' &&\n url.pathname === '/' &&\n url.search === '' &&\n url.hash === ''\n )\n } catch {\n return false\n }\n}\n\nfunction isAppExtensionPreview(value: unknown): value is StorefrontEditorAppExtensionPreview {\n if (\n !isRecord(value) ||\n (value.kind !== 'app_embed' && value.kind !== 'app_section' && value.kind !== 'app_block') ||\n typeof value.instanceId !== 'string' ||\n typeof value.appId !== 'string' ||\n typeof value.appName !== 'string' ||\n typeof value.extensionId !== 'string' ||\n typeof value.extensionName !== 'string' ||\n typeof value.version !== 'string' ||\n !isHttpsUrl(value.entrypointUrl) ||\n !Array.isArray(value.stylesheetUrls) ||\n !value.stylesheetUrls.every(isHttpsUrl) ||\n !Array.isArray(value.capabilities) ||\n !value.capabilities.every((capability) => typeof capability === 'string') ||\n !Array.isArray(value.allowedOrigins) ||\n !value.allowedOrigins.every(isBareHttpOrigin) ||\n !isSettings(value.settings) ||\n typeof value.position !== 'number' ||\n !Number.isInteger(value.position) ||\n value.position < 0\n ) {\n return false\n }\n if (value.kind === 'app_embed') {\n return (\n value.embedLocation === 'head' ||\n value.embedLocation === 'body_start' ||\n value.embedLocation === 'body_end'\n )\n }\n if (value.kind === 'app_section') {\n return (\n isRecord(value.target) &&\n (value.target.kind === 'template' || value.target.kind === 'section_group') &&\n typeof value.target.handle === 'string' &&\n value.target.handle !== ''\n )\n }\n return typeof value.templateHandle === 'string' && isBlockId(value.sectionInstanceId)\n}\n\nfunction parseHostMessage(data: unknown, shopId: string): HostMessage | null {\n if (!isRecord(data) || data.source !== HOST_SOURCE || data.shopId !== shopId) return null\n\n switch (data.type) {\n case 'editor.ready.request':\n return {\n source: HOST_SOURCE,\n type: 'editor.ready.request',\n shopId,\n }\n case 'editor.visual-ready.request':\n return typeof data.requestId === 'string' && VISUAL_READY_REQUEST_ID.test(data.requestId)\n ? {\n source: HOST_SOURCE,\n type: 'editor.visual-ready.request',\n shopId,\n requestId: data.requestId,\n }\n : null\n case 'section.hover':\n case 'section.activate':\n if (\n data.sectionId !== null &&\n (typeof data.sectionId !== 'string' || isReservedSectionId(data.sectionId))\n ) {\n return null\n }\n if (\n data.blockId !== undefined &&\n (data.type !== 'section.activate' || !isBlockId(data.blockId))\n ) {\n return null\n }\n return {\n source: HOST_SOURCE,\n type: data.type,\n shopId,\n sectionId: data.sectionId,\n ...(data.blockId !== undefined ? { blockId: data.blockId } : {}),\n }\n case 'inspector.set':\n return typeof data.enabled === 'boolean'\n ? { source: HOST_SOURCE, type: 'inspector.set', shopId, enabled: data.enabled }\n : null\n case 'settings.patchSection':\n return typeof data.sectionId === 'string' &&\n !isReservedSectionId(data.sectionId) &&\n isSettings(data.settings)\n ? {\n source: HOST_SOURCE,\n type: 'settings.patchSection',\n shopId,\n sectionId: data.sectionId,\n settings: data.settings,\n }\n : null\n case 'settings.patchGlobal':\n return isSettings(data.settings)\n ? { source: HOST_SOURCE, type: 'settings.patchGlobal', shopId, settings: data.settings }\n : null\n case 'sections.insert':\n return isResolvedSection(data.section) && !isReservedSectionId(data.section.id)\n ? {\n source: HOST_SOURCE,\n type: 'sections.insert',\n shopId,\n section: data.section,\n ...(typeof data.index === 'number' ? { index: data.index } : {}),\n }\n : null\n case 'sections.remove':\n return typeof data.sectionId === 'string' && !isReservedSectionId(data.sectionId)\n ? {\n source: HOST_SOURCE,\n type: 'sections.remove',\n shopId,\n sectionId: data.sectionId,\n }\n : null\n case 'sections.reorder':\n return typeof data.sectionId === 'string' &&\n !isReservedSectionId(data.sectionId) &&\n typeof data.index === 'number'\n ? {\n source: HOST_SOURCE,\n type: 'sections.reorder',\n shopId,\n sectionId: data.sectionId,\n index: data.index,\n }\n : null\n case 'settings.patchBlock':\n return typeof data.sectionId === 'string' &&\n !isReservedSectionId(data.sectionId) &&\n isBlockId(data.blockId) &&\n isSettings(data.settings)\n ? {\n source: HOST_SOURCE,\n type: 'settings.patchBlock',\n shopId,\n sectionId: data.sectionId,\n blockId: data.blockId,\n settings: data.settings,\n }\n : null\n case 'blocks.insert':\n return typeof data.sectionId === 'string' &&\n !isReservedSectionId(data.sectionId) &&\n isResolvedBlock(data.block)\n ? {\n source: HOST_SOURCE,\n type: 'blocks.insert',\n shopId,\n sectionId: data.sectionId,\n block: data.block,\n ...(typeof data.index === 'number' ? { index: data.index } : {}),\n }\n : null\n case 'blocks.remove':\n return typeof data.sectionId === 'string' &&\n !isReservedSectionId(data.sectionId) &&\n isBlockId(data.blockId)\n ? {\n source: HOST_SOURCE,\n type: 'blocks.remove',\n shopId,\n sectionId: data.sectionId,\n blockId: data.blockId,\n }\n : null\n case 'blocks.reorder':\n return typeof data.sectionId === 'string' &&\n !isReservedSectionId(data.sectionId) &&\n isBlockId(data.blockId) &&\n typeof data.index === 'number'\n ? {\n source: HOST_SOURCE,\n type: 'blocks.reorder',\n shopId,\n sectionId: data.sectionId,\n blockId: data.blockId,\n index: data.index,\n }\n : null\n case 'template.replace':\n return typeof data.handle === 'string' && isValuesDocument(data.document)\n ? {\n source: HOST_SOURCE,\n type: 'template.replace',\n shopId,\n handle: data.handle,\n document: data.document,\n }\n : null\n case 'sectionGroup.replace':\n return typeof data.handle === 'string' &&\n data.handle.trim() !== '' &&\n isValuesDocument(data.document)\n ? {\n source: HOST_SOURCE,\n type: 'sectionGroup.replace',\n shopId,\n handle: data.handle,\n document: data.document,\n }\n : null\n case 'appExtensions.replace':\n return Array.isArray(data.extensions) && data.extensions.every(isAppExtensionPreview)\n ? {\n source: HOST_SOURCE,\n type: 'appExtensions.replace',\n shopId,\n extensions: data.extensions,\n }\n : null\n default:\n return null\n }\n}\n\nfunction parsePreviewSelection(data: unknown, shopId: string): PreviewSelectionMessage | null {\n if (!isRecord(data) || data.source !== PREVIEW_SOURCE || data.shopId !== shopId) return null\n if (data.type !== 'section.select' || typeof data.sectionId !== 'string') return null\n if (data.blockId !== undefined && !isBlockId(data.blockId)) return null\n if (data.block !== undefined && !isResolvedBlock(data.block)) return null\n if (data.block !== undefined && data.blockId === undefined) return null\n if (data.section !== undefined && !isResolvedSection(data.section)) return null\n if (data.sections !== undefined && !isResolvedSectionArray(data.sections)) return null\n if (data.schema !== undefined && !isSectionSchema(data.schema)) return null\n if (data.schemas !== undefined && !isSectionSchemaRecord(data.schemas)) return null\n if (data.scope !== undefined && !isSelectionScope(data.scope)) return null\n return {\n source: PREVIEW_SOURCE,\n type: 'section.select',\n shopId,\n sectionId: data.sectionId,\n ...(data.blockId !== undefined ? { blockId: data.blockId } : {}),\n ...(data.block !== undefined ? { block: data.block } : {}),\n ...(data.scope !== undefined ? { scope: data.scope } : {}),\n ...(data.section !== undefined ? { section: data.section } : {}),\n ...(data.sections !== undefined ? { sections: data.sections } : {}),\n ...(data.schema !== undefined ? { schema: data.schema } : {}),\n ...(data.schemas !== undefined ? { schemas: data.schemas } : {}),\n }\n}\n\nconst SECTION_CANVAS_ACTIONS = new Set<StorefrontEditorCanvasAction['action']>([\n 'section.addBefore',\n 'section.addAfter',\n 'section.duplicate',\n 'section.toggleVisibility',\n 'section.moveUp',\n 'section.moveDown',\n 'section.remove',\n])\n\nconst BLOCK_CANVAS_ACTIONS = new Set<StorefrontEditorCanvasAction['action']>([\n 'block.duplicate',\n 'block.toggleVisibility',\n 'block.moveUp',\n 'block.moveDown',\n 'block.remove',\n])\n\nfunction parsePreviewCanvasAction(\n data: unknown,\n shopId: string,\n): PreviewCanvasActionMessage | null {\n if (!isRecord(data) || data.source !== PREVIEW_SOURCE || data.shopId !== shopId) return null\n if (\n data.type !== 'editor.action' ||\n typeof data.action !== 'string' ||\n typeof data.sectionId !== 'string' ||\n data.sectionId === '' ||\n isReservedSectionId(data.sectionId)\n ) {\n return null\n }\n if (data.scope !== undefined && !isSelectionScope(data.scope)) return null\n\n if (SECTION_CANVAS_ACTIONS.has(data.action as StorefrontEditorCanvasAction['action'])) {\n if (data.blockId !== undefined) return null\n return {\n source: PREVIEW_SOURCE,\n type: 'editor.action',\n shopId,\n action: data.action as StorefrontEditorCanvasSectionAction,\n sectionId: data.sectionId,\n ...(data.scope !== undefined ? { scope: data.scope } : {}),\n }\n }\n if (\n BLOCK_CANVAS_ACTIONS.has(data.action as StorefrontEditorCanvasAction['action']) &&\n isBlockId(data.blockId)\n ) {\n return {\n source: PREVIEW_SOURCE,\n type: 'editor.action',\n shopId,\n action: data.action as StorefrontEditorCanvasBlockAction,\n sectionId: data.sectionId,\n blockId: data.blockId,\n ...(data.scope !== undefined ? { scope: data.scope } : {}),\n }\n }\n return null\n}\n\nfunction parsePreviewHover(data: unknown, shopId: string): PreviewHoverMessage | null {\n if (!isRecord(data) || data.source !== PREVIEW_SOURCE || data.shopId !== shopId) return null\n if (data.type !== 'section.hover') return null\n if (\n data.sectionId !== null &&\n (typeof data.sectionId !== 'string' || isReservedSectionId(data.sectionId))\n ) {\n return null\n }\n return {\n source: PREVIEW_SOURCE,\n type: 'section.hover',\n shopId,\n sectionId: data.sectionId,\n }\n}\n\nfunction parsePreviewReady(data: unknown, shopId: string): PreviewReadyMessage | null {\n if (!isRecord(data) || data.source !== PREVIEW_SOURCE || data.shopId !== shopId) return null\n if (data.type !== 'editor.ready' || !isResolvedSectionArray(data.sections)) return null\n if (data.visualReadyProtocol !== undefined && data.visualReadyProtocol !== 1) return null\n if (data.global !== undefined && !isSettings(data.global)) return null\n if (data.schemas !== undefined && !isSectionSchemaRecord(data.schemas)) return null\n if (data.globalInputs !== undefined && !isSettingInputArray(data.globalInputs)) return null\n if (data.themeStyles !== undefined && !isThemeStyleArray(data.themeStyles)) return null\n const templates = data.templates === undefined ? undefined : validValuesDocuments(data.templates)\n const sectionGroups =\n data.sectionGroups === undefined ? undefined : validValuesDocuments(data.sectionGroups)\n return {\n source: PREVIEW_SOURCE,\n type: 'editor.ready',\n shopId,\n sections: data.sections,\n ...(data.visualReadyProtocol === 1 ? { visualReadyProtocol: 1 as const } : {}),\n ...(data.global !== undefined ? { global: data.global } : {}),\n ...(data.schemas !== undefined ? { schemas: data.schemas } : {}),\n ...(data.globalInputs !== undefined ? { globalInputs: data.globalInputs } : {}),\n ...(data.themeStyles !== undefined ? { themeStyles: data.themeStyles } : {}),\n ...(templates !== undefined ? { templates } : {}),\n ...(sectionGroups !== undefined ? { sectionGroups } : {}),\n }\n}\n\nfunction parsePreviewVisualReady(\n data: unknown,\n shopId: string,\n): PreviewVisualReadyMessage | null {\n if (!isRecord(data) || data.source !== PREVIEW_SOURCE || data.shopId !== shopId) return null\n if (\n data.type !== 'editor.visual-ready' ||\n typeof data.requestId !== 'string' ||\n !VISUAL_READY_REQUEST_ID.test(data.requestId)\n ) {\n return null\n }\n return {\n source: PREVIEW_SOURCE,\n type: 'editor.visual-ready',\n shopId,\n requestId: data.requestId,\n }\n}\n\nfunction parsePreviewNavigation(\n data: unknown,\n shopId: string,\n previewOrigin: string,\n): PreviewNavigationRequestMessage | null {\n if (!isRecord(data) || data.source !== PREVIEW_SOURCE || data.shopId !== shopId) return null\n if (data.type !== 'preview.navigate' || typeof data.href !== 'string' || data.href.trim() === '') {\n return null\n }\n try {\n const href = new URL(data.href)\n if (\n (href.protocol !== 'https:' && href.protocol !== 'http:') ||\n href.username !== '' ||\n href.password !== '' ||\n href.origin !== previewOrigin\n ) {\n return null\n }\n } catch {\n return null\n }\n return { source: PREVIEW_SOURCE, type: 'preview.navigate', shopId, href: data.href }\n}\n\nfunction postHostMessage(\n target: StorefrontEditorMessageTarget,\n previewOrigin: string,\n message: HostMessage,\n): void {\n target.postMessage(message, previewOrigin)\n}\n\nconst EDITOR_AFFORDANCE_STYLE_ID = 'kotao-storefront-editor-affordances'\nconst EDITOR_CANVAS_ID = 'kotao-storefront-editor-canvas'\nconst EDITOR_AFFORDANCE_CSS = `\nhtml[data-kotao-editor=\"true\"] [id^=\"shopify-section-\"] {\n cursor: pointer;\n position: relative;\n}\nhtml[data-kotao-editor=\"true\"] [id^=\"shopify-section-\"][data-kotao-editor-hovered=\"true\"] {\n outline: 2px solid #2c6ecb !important;\n outline-offset: -2px;\n}\nhtml[data-kotao-editor=\"true\"] [id^=\"shopify-section-\"][data-kotao-editor-selected=\"true\"] {\n outline: 2px solid #005bd3 !important;\n outline-offset: -2px;\n}\nhtml[data-kotao-editor=\"true\"] [id^=\"shopify-section-\"][data-kotao-editor-hovered=\"true\"]::before {\n content: attr(data-kotao-editor-label);\n position: absolute;\n z-index: 2147483646;\n inset-block-start: 0;\n inset-inline-start: 0;\n max-width: calc(100% - 16px);\n padding: 5px 9px;\n border-radius: 0 0 6px 0;\n background: #005bd3;\n color: #fff;\n font: 600 12px/1.25 ui-sans-serif, system-ui, sans-serif;\n letter-spacing: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n pointer-events: none;\n}\nhtml[data-kotao-editor=\"true\"] [data-kotao-editor-block-hovered=\"true\"],\nhtml[data-kotao-editor=\"true\"] [data-kotao-editor-block-selected=\"true\"] {\n position: relative;\n outline: 2px solid #005bd3 !important;\n outline-offset: -2px;\n}\n#${EDITOR_CANVAS_ID} {\n position: fixed;\n z-index: 2147483647;\n display: none;\n align-items: center;\n max-width: calc(100vw - 16px);\n height: 38px;\n overflow: hidden;\n border: 1px solid rgba(255, 255, 255, .22);\n border-radius: 8px;\n background: #202223;\n color: #fff;\n box-shadow: 0 4px 18px rgba(0, 0, 0, .28);\n font: 600 12px/1 ui-sans-serif, system-ui, sans-serif;\n letter-spacing: 0;\n}\n#${EDITOR_CANVAS_ID}[data-visible=\"true\"] { display: flex; }\n#${EDITOR_CANVAS_ID} [data-kotao-editor-canvas-label] {\n min-width: 0;\n max-width: 180px;\n overflow: hidden;\n padding: 0 10px;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n#${EDITOR_CANVAS_ID} [data-kotao-editor-canvas-actions] {\n display: flex;\n align-self: stretch;\n border-inline-start: 1px solid rgba(255, 255, 255, .18);\n}\n#${EDITOR_CANVAS_ID} button {\n display: inline-flex;\n width: 36px;\n align-items: center;\n justify-content: center;\n border: 0;\n border-inline-end: 1px solid rgba(255, 255, 255, .12);\n background: transparent;\n color: inherit;\n cursor: pointer;\n font: 600 14px/1 ui-sans-serif, system-ui, sans-serif;\n}\n#${EDITOR_CANVAS_ID} button:hover,\n#${EDITOR_CANVAS_ID} button:focus-visible {\n outline: 0;\n background: #3b82f6;\n}\n#${EDITOR_CANVAS_ID} button:focus-visible { box-shadow: inset 0 0 0 2px #fff; }\n#${EDITOR_CANVAS_ID} button[data-destructive=\"true\"]:hover,\n#${EDITOR_CANVAS_ID} button[data-destructive=\"true\"]:focus-visible { background: #d72c0d; }\n#${EDITOR_CANVAS_ID} button:disabled { cursor: not-allowed; opacity: .38; }\n`\n\nexport interface StorefrontEditorCanvasPosition {\n readonly left: number\n readonly top: number\n readonly placement: 'above' | 'below'\n}\n\nexport function positionStorefrontEditorCanvasToolbar(\n anchor: StorefrontEditorRect,\n toolbar: Pick<StorefrontEditorRect, 'width' | 'height'>,\n viewport: { readonly width: number; readonly height: number },\n): StorefrontEditorCanvasPosition {\n const gap = 8\n const maxLeft = Math.max(gap, viewport.width - toolbar.width - gap)\n const left = Math.min(Math.max(anchor.left, gap), maxLeft)\n const placement = anchor.top >= toolbar.height + gap * 2 ? 'above' : 'below'\n const requestedTop =\n placement === 'above' ? anchor.top - toolbar.height - gap : anchor.bottom + gap\n const maxTop = Math.max(gap, viewport.height - toolbar.height - gap)\n return {\n left: Math.round(left),\n top: Math.round(Math.min(Math.max(requestedTop, gap), maxTop)),\n placement,\n }\n}\n\nfunction defaultEditorDocument(): StorefrontEditorDocument | undefined {\n const candidate = (globalThis as { document?: unknown }).document\n if (!isRecord(candidate)) return undefined\n if (\n typeof candidate.addEventListener !== 'function' ||\n typeof candidate.removeEventListener !== 'function' ||\n typeof candidate.getElementById !== 'function' ||\n typeof candidate.createElement !== 'function' ||\n !isRecord(candidate.documentElement)\n ) {\n return undefined\n }\n return candidate as unknown as StorefrontEditorDocument\n}\n\nfunction appExtensionFrameDocument(extension: StorefrontEditorAppExtensionPreview): string {\n const assetOrigin = new URL(extension.entrypointUrl).origin\n const connectSources = extension.capabilities.includes('network:fetch')\n ? extension.allowedOrigins.join(' ')\n : \"'none'\"\n const csp = [\n \"default-src 'none'\",\n `script-src ${assetOrigin}`,\n `style-src ${assetOrigin}`,\n `connect-src ${connectSources}`,\n `img-src data: ${assetOrigin} ${extension.allowedOrigins.join(' ')}`.trim(),\n `font-src ${assetOrigin}`,\n ].join('; ')\n const styles = extension.stylesheetUrls\n .map((url) => `<link rel=\"stylesheet\" href=\"${htmlAttribute(url)}\">`)\n .join('')\n return [\n '<!doctype html><html><head><meta charset=\"utf-8\">',\n `<meta http-equiv=\"Content-Security-Policy\" content=\"${htmlAttribute(csp)}\">`,\n '<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">',\n styles,\n '</head><body><div id=\"kotao-app-root\"></div>',\n `<script type=\"module\" src=\"${htmlAttribute(extension.entrypointUrl)}\"></script>`,\n '</body></html>',\n ].join('')\n}\n\ninterface AppExtensionPreviewElement {\n id: string\n readonly dataset: Record<string, string>\n title: string\n hidden: boolean\n loading: string\n name: string\n srcdoc: string\n readonly style: { cssText: string }\n append(element: AppExtensionPreviewElement): void\n prepend(element: AppExtensionPreviewElement): void\n before(element: AppExtensionPreviewElement): void\n getAttribute(name: string): string | null\n hasAttribute(name: string): boolean\n setAttribute(name: string, value: string): void\n remove?(): void\n}\n\ninterface AppExtensionPreviewDocument {\n readonly head: AppExtensionPreviewElement\n readonly body: AppExtensionPreviewElement\n createElement(tagName: string): AppExtensionPreviewElement\n querySelector(selector: string): AppExtensionPreviewElement | null\n querySelectorAll(selector: string): readonly AppExtensionPreviewElement[]\n}\n\nfunction replaceAppExtensionPreviewFrames(\n editorDocument: StorefrontEditorDocument | undefined,\n extensions: readonly StorefrontEditorAppExtensionPreview[],\n): void {\n if (editorDocument === undefined) return\n const document = editorDocument as unknown as AppExtensionPreviewDocument\n if (\n typeof document.querySelectorAll !== 'function' ||\n typeof document.createElement !== 'function'\n ) {\n return\n }\n for (const element of document.querySelectorAll('[data-kotao-editor-app-extension]')) {\n element.remove?.()\n }\n const sectionElements = (): AppExtensionPreviewElement[] =>\n [...document.querySelectorAll('[data-section-id], [id^=\"shopify-section-\"]')].filter(\n (element) => !element.hasAttribute('data-kotao-editor-app-extension'),\n )\n const sectionById = (id: string): AppExtensionPreviewElement | null =>\n sectionElements().find(\n (element) =>\n element.getAttribute('data-section-id') === id || element.id === `shopify-section-${id}`,\n ) ?? null\n\n for (const extension of extensions) {\n if (extension.settings.disabled === true) continue\n const frame = document.createElement('iframe')\n frame.dataset.kotaoAppExtension = extension.instanceId\n frame.dataset.kotaoAppId = extension.appId\n frame.title = `${extension.appName} — ${extension.extensionName}`\n frame.setAttribute('sandbox', 'allow-scripts')\n frame.setAttribute('referrerpolicy', 'no-referrer')\n frame.loading = 'lazy'\n frame.name = JSON.stringify({\n instanceId: extension.instanceId,\n appId: extension.appId,\n extensionId: extension.extensionId,\n version: extension.version,\n capabilities: extension.capabilities,\n allowedOrigins: extension.allowedOrigins,\n settings: extension.settings,\n context: extension.capabilities.includes('storefront:context:read')\n ? {\n templateHandle: extension.templateHandle ?? extension.target?.handle ?? null,\n sectionInstanceId: extension.sectionInstanceId ?? null,\n }\n : null,\n })\n frame.srcdoc = appExtensionFrameDocument(extension)\n\n if (extension.kind === 'app_embed') {\n frame.setAttribute('data-kotao-editor-app-extension', 'true')\n frame.hidden = true\n const parent = extension.embedLocation === 'head' ? document.head : document.body\n if (extension.embedLocation === 'body_start') parent.prepend(frame)\n else parent.append(frame)\n continue\n }\n\n frame.style.cssText = 'display:block;width:100%;min-height:1px;border:0'\n if (extension.kind === 'app_block') {\n const section = sectionById(extension.sectionInstanceId ?? '')\n if (section === null) continue\n frame.setAttribute('data-kotao-editor-app-extension', 'true')\n frame.setAttribute('data-block-id', extension.instanceId)\n section.append(frame)\n continue\n }\n\n const wrapper = document.createElement('div')\n wrapper.id = `shopify-section-${extension.instanceId}`\n wrapper.setAttribute('data-section-id', extension.instanceId)\n wrapper.setAttribute('data-kotao-editor-app-extension', 'true')\n wrapper.append(frame)\n if (extension.target?.kind === 'section_group') {\n const group = [...document.querySelectorAll('[data-section-group]')].find(\n (element) => element.getAttribute('data-section-group') === extension.target?.handle,\n )\n if (group !== undefined) group.append(wrapper)\n else if (extension.target.handle.includes('header')) document.body.prepend(wrapper)\n else document.body.append(wrapper)\n continue\n }\n const sections = sectionElements()\n const target = sections[Math.min(extension.position, sections.length - 1)]\n if (target !== undefined && extension.position < sections.length) target.before(wrapper)\n else (document.querySelector('main') ?? document.body).append(wrapper)\n }\n}\n\nfunction sectionElementFromTarget(target: unknown): StorefrontEditorDomElement | null {\n if (!isRecord(target) || typeof target.closest !== 'function') return null\n const element = target.closest('[id^=\"shopify-section-\"]') as unknown\n if (!isRecord(element) || typeof element.id !== 'string') return null\n if (!element.id.startsWith('shopify-section-')) return null\n return element as unknown as StorefrontEditorDomElement\n}\n\nfunction blockElementFromTarget(target: unknown): StorefrontEditorDomElement | null {\n if (!isRecord(target) || typeof target.closest !== 'function') return null\n const element = target.closest(\n '[data-block-id], [data-shopify-editor-block], [id^=\"shopify-block-\"]',\n ) as unknown\n if (!isRecord(element) || typeof element.id !== 'string') return null\n return element as unknown as StorefrontEditorDomElement\n}\n\nfunction blockIdForElement(element: StorefrontEditorDomElement): string | null {\n const direct = element.getAttribute?.('data-block-id')\n if (direct) return direct\n const serialized = element.getAttribute?.('data-shopify-editor-block')\n if (serialized) {\n try {\n const value = JSON.parse(serialized) as unknown\n if (isRecord(value) && isBlockId(value.id)) return value.id\n } catch {\n // Malformed third-party editor metadata must not break the storefront.\n }\n }\n return element.id.startsWith('shopify-block-') ? element.id.slice('shopify-block-'.length) : null\n}\n\nfunction findBlockElement(\n document: StorefrontEditorDocument,\n blockId: string,\n): StorefrontEditorDomElement | null {\n const candidates = document.querySelectorAll?.(\n '[data-block-id], [data-shopify-editor-block], [id^=\"shopify-block-\"]',\n )\n return candidates?.find((element) => blockIdForElement(element) === blockId) ?? null\n}\n\ntype AnchorClickDisposition =\n | { readonly kind: 'internal'; readonly href: string }\n | { readonly kind: 'external'; readonly href: string }\n | { readonly kind: 'unsafe' }\n | { readonly kind: 'hash' }\n | { readonly kind: 'scheme' }\n\nfunction isModifiedClick(event: StorefrontEditorPointerEvent): boolean {\n return event.metaKey === true || event.ctrlKey === true || event.shiftKey === true || event.altKey === true\n}\n\nfunction anchorElementFromTarget(target: unknown): StorefrontEditorDomElement | null {\n if (!isRecord(target) || typeof target.closest !== 'function') return null\n const anchor = target.closest('a[href]') as unknown\n if (!isRecord(anchor) || typeof anchor.getAttribute !== 'function') return null\n return anchor as unknown as StorefrontEditorDomElement\n}\n\nfunction classifyAnchorClick(\n event: StorefrontEditorPointerEvent,\n anchor: StorefrontEditorDomElement,\n document: StorefrontEditorDocument,\n): AnchorClickDisposition | null {\n const download = anchor.getAttribute?.('download')\n if (\n event.defaultPrevented === true ||\n (event.button !== undefined && event.button !== 0) ||\n isModifiedClick(event) ||\n anchor.getAttribute?.('target')?.toLowerCase() === '_blank' ||\n (download !== null && download !== undefined)\n ) {\n return null\n }\n const rawHref = anchor.getAttribute?.('href')\n const location = document.defaultView?.location\n if (typeof rawHref !== 'string' || rawHref.trim() === '' || location === undefined) return null\n const hasFragmentDelimiter = rawHref.includes('#')\n\n let href: URL\n let current: URL\n try {\n href = new URL(rawHref, location.href)\n current = new URL(location.href)\n } catch {\n return { kind: 'unsafe' }\n }\n if (href.protocol === 'javascript:' || href.protocol === 'data:') return { kind: 'unsafe' }\n if (href.protocol === 'mailto:' || href.protocol === 'tel:') return { kind: 'scheme' }\n if (href.protocol !== 'https:' && href.protocol !== 'http:') return { kind: 'unsafe' }\n if (\n href.origin === location.origin &&\n href.pathname === current.pathname &&\n href.search === current.search &&\n (href.hash !== '' || hasFragmentDelimiter)\n ) {\n return { kind: 'hash' }\n }\n return href.origin === location.origin\n ? { kind: 'internal', href: href.href }\n : { kind: 'external', href: href.href }\n}\n\nfunction htmlAttribute(value: string): string {\n return value.replaceAll('&', '&').replaceAll('\"', '"').replaceAll('<', '<')\n}\n\nconst SECTION_CANVAS_BUTTONS: readonly {\n readonly action: StorefrontEditorCanvasSectionAction\n readonly label: string\n readonly glyph: string\n readonly destructive?: boolean\n}[] = [\n { action: 'section.addBefore', label: 'Add section above', glyph: '+↑' },\n { action: 'section.moveUp', label: 'Move section up', glyph: '↑' },\n { action: 'section.moveDown', label: 'Move section down', glyph: '↓' },\n { action: 'section.duplicate', label: 'Duplicate section', glyph: '⧉' },\n { action: 'section.toggleVisibility', label: 'Hide or show section', glyph: '◉' },\n { action: 'section.remove', label: 'Delete section', glyph: '⌫', destructive: true },\n { action: 'section.addAfter', label: 'Add section below', glyph: '+↓' },\n]\n\nconst BLOCK_CANVAS_BUTTONS: readonly {\n readonly action: StorefrontEditorCanvasBlockAction\n readonly label: string\n readonly glyph: string\n readonly destructive?: boolean\n}[] = [\n { action: 'block.moveUp', label: 'Move block up', glyph: '↑' },\n { action: 'block.moveDown', label: 'Move block down', glyph: '↓' },\n { action: 'block.duplicate', label: 'Duplicate block', glyph: '⧉' },\n { action: 'block.toggleVisibility', label: 'Hide or show block', glyph: '◉' },\n { action: 'block.remove', label: 'Delete block', glyph: '⌫', destructive: true },\n]\n\ninterface StorefrontEditorCanvasSelectionState {\n readonly canAddSection: boolean\n readonly canDuplicate: boolean\n readonly canMoveDown: boolean\n readonly canMoveUp: boolean\n readonly hidden: boolean\n}\n\nfunction canvasToolbarHtml(\n label: string,\n block: boolean,\n state: StorefrontEditorCanvasSelectionState,\n): string {\n const buttons = block ? BLOCK_CANVAS_BUTTONS : SECTION_CANVAS_BUTTONS\n return `<span data-kotao-editor-canvas-label>${htmlAttribute(label)}</span><span data-kotao-editor-canvas-actions>${buttons\n .map(({ action, destructive, glyph, label: staticLabel }) => {\n const actionLabel = action.endsWith('toggleVisibility')\n ? `${state.hidden ? 'Show' : 'Hide'} ${block ? 'block' : 'section'}`\n : staticLabel\n const disabled =\n (action.endsWith('moveUp') && !state.canMoveUp) ||\n (action.endsWith('moveDown') && !state.canMoveDown) ||\n (action.endsWith('duplicate') && !state.canDuplicate) ||\n (action.startsWith('section.add') && !state.canAddSection)\n return `<button type=\"button\" data-kotao-editor-action=\"${action}\"${destructive ? ' data-destructive=\"true\"' : ''}${disabled ? ' disabled' : ''} aria-label=\"${htmlAttribute(actionLabel)}\" title=\"${htmlAttribute(actionLabel)}\">${glyph}</button>`\n })\n .join('')}</span>`\n}\n\nfunction createEditorAffordances({\n document,\n labelForBlock,\n labelForSection,\n onCanvasAction,\n onHoverSection,\n onNavigate,\n onSelect,\n stateForSelection,\n}: {\n readonly document: StorefrontEditorDocument\n readonly labelForBlock: (sectionId: string, blockId: string) => string\n readonly labelForSection: (sectionId: string) => string\n readonly onCanvasAction: (action: StorefrontEditorCanvasAction) => void\n readonly onHoverSection: (sectionId: string | null) => void\n readonly onNavigate: (href: string) => void\n readonly onSelect: (sectionId: string, blockId?: string) => void\n readonly stateForSelection: (\n sectionId: string,\n blockId?: string,\n ) => StorefrontEditorCanvasSelectionState\n}) {\n let hoveredElement: StorefrontEditorDomElement | null = null\n let hoveredBlockElement: StorefrontEditorDomElement | null = null\n let selectedElement: StorefrontEditorDomElement | null = null\n let selectedBlockElement: StorefrontEditorDomElement | null = null\n let selectedSectionId: string | null = null\n let selectedBlockId: string | null = null\n let ownedStyle: StorefrontEditorStyleElement | null = null\n let ownedToolbar: StorefrontEditorDomElement | null = null\n let inspectorEnabled = true\n\n const setElementState = (\n kind: 'hovered' | 'selected',\n sectionId: string | null,\n ): StorefrontEditorDomElement | null => {\n const previous = kind === 'hovered' ? hoveredElement : selectedElement\n previous?.removeAttribute(`data-kotao-editor-${kind}`)\n if (sectionId === null) return null\n const element = document.getElementById(`shopify-section-${sectionId}`)\n if (element === null || !('setAttribute' in element)) return null\n const sectionElement = element as StorefrontEditorDomElement\n sectionElement.setAttribute(`data-kotao-editor-${kind}`, 'true')\n sectionElement.setAttribute('data-kotao-editor-label', labelForSection(sectionId))\n return sectionElement\n }\n const setHovered = (sectionId: string | null) => {\n if (!inspectorEnabled && sectionId !== null) return\n hoveredElement = setElementState('hovered', sectionId)\n }\n const clearHovered = () => {\n hoveredBlockElement?.removeAttribute('data-kotao-editor-block-hovered')\n hoveredBlockElement = null\n setHovered(null)\n }\n const positionToolbar = () => {\n const anchor = selectedBlockElement ?? selectedElement\n const anchorRect = anchor?.getBoundingClientRect?.()\n if (ownedToolbar === null || anchorRect === undefined) return\n const toolbarRect = ownedToolbar.getBoundingClientRect?.() ?? {\n top: 0,\n right: 420,\n bottom: 38,\n left: 0,\n width: 420,\n height: 38,\n }\n const position = positionStorefrontEditorCanvasToolbar(anchorRect, toolbarRect, {\n width: document.defaultView?.innerWidth ?? 1024,\n height: document.defaultView?.innerHeight ?? 768,\n })\n ownedToolbar.setAttribute('style', `left:${position.left}px;top:${position.top}px`)\n ownedToolbar.setAttribute('data-placement', position.placement)\n }\n const renderToolbar = () => {\n if (ownedToolbar === null) return\n if (selectedSectionId === null) {\n ownedToolbar.removeAttribute('data-visible')\n return\n }\n const isBlock = selectedBlockId !== null\n if (selectedBlockId !== null) {\n ownedToolbar.innerHTML = canvasToolbarHtml(\n labelForBlock(selectedSectionId, selectedBlockId),\n true,\n stateForSelection(selectedSectionId, selectedBlockId),\n )\n } else {\n ownedToolbar.innerHTML = canvasToolbarHtml(\n labelForSection(selectedSectionId),\n false,\n stateForSelection(selectedSectionId),\n )\n }\n ownedToolbar.setAttribute('data-visible', 'true')\n ownedToolbar.setAttribute('aria-label', isBlock ? 'Block actions' : 'Section actions')\n positionToolbar()\n }\n const setSelected = (sectionId: string | null, blockId?: string) => {\n if (!inspectorEnabled && sectionId !== null) return\n selectedBlockElement?.removeAttribute('data-kotao-editor-block-selected')\n selectedBlockElement = null\n selectedBlockId = blockId ?? null\n selectedSectionId = sectionId\n selectedElement = setElementState('selected', sectionId)\n if (sectionId !== null && blockId !== undefined) {\n selectedBlockElement = findBlockElement(document, blockId)\n selectedBlockElement?.setAttribute('data-kotao-editor-block-selected', 'true')\n selectedBlockElement?.setAttribute(\n 'data-kotao-editor-label',\n labelForBlock(sectionId, blockId),\n )\n }\n renderToolbar()\n }\n const onPointerOver = (event: StorefrontEditorPointerEvent) => {\n if (!inspectorEnabled) return\n const element = sectionElementFromTarget(event.target)\n if (element === null) return\n const sectionId = element.id.slice('shopify-section-'.length)\n if (sectionId === '' || isReservedSectionId(sectionId)) return\n const nextBlockElement = blockElementFromTarget(event.target)\n if (element === hoveredElement && nextBlockElement === hoveredBlockElement) return\n hoveredBlockElement?.removeAttribute('data-kotao-editor-block-hovered')\n hoveredBlockElement = nextBlockElement\n const blockId = hoveredBlockElement ? blockIdForElement(hoveredBlockElement) : null\n if (hoveredBlockElement !== null && blockId !== null) {\n hoveredBlockElement.setAttribute('data-kotao-editor-block-hovered', 'true')\n hoveredBlockElement.setAttribute('data-kotao-editor-label', labelForBlock(sectionId, blockId))\n }\n if (element !== hoveredElement) {\n setHovered(sectionId)\n onHoverSection(sectionId)\n }\n }\n const onPointerOut = (event: StorefrontEditorPointerEvent) => {\n if (!inspectorEnabled) return\n if (hoveredElement === null) return\n const nextElement = sectionElementFromTarget(event.relatedTarget)\n if (nextElement === hoveredElement || hoveredElement.contains(event.relatedTarget)) return\n clearHovered()\n onHoverSection(null)\n }\n const onClick = (event: StorefrontEditorPointerEvent) => {\n if (isRecord(event.target) && typeof event.target.closest === 'function') {\n const canvas = event.target.closest(`#${EDITOR_CANVAS_ID}`) as unknown\n if (canvas !== null) return\n }\n const anchor = anchorElementFromTarget(event.target)\n if (anchor !== null) {\n const disposition = classifyAnchorClick(event, anchor, document)\n if (disposition === null) return\n if (inspectorEnabled) {\n event.preventDefault?.()\n event.stopPropagation?.()\n } else {\n switch (disposition.kind) {\n case 'internal':\n event.preventDefault?.()\n event.stopPropagation?.()\n onNavigate(disposition.href)\n break\n case 'external':\n event.preventDefault?.()\n event.stopPropagation?.()\n document.defaultView?.open?.(disposition.href, '_blank', 'noopener,noreferrer')\n break\n case 'unsafe':\n event.preventDefault?.()\n event.stopPropagation?.()\n break\n case 'hash':\n case 'scheme':\n break\n }\n return\n }\n } else if (!inspectorEnabled) {\n return\n }\n const section = sectionElementFromTarget(event.target)\n if (section === null) return\n const sectionId = section.id.slice('shopify-section-'.length)\n if (sectionId === '' || isReservedSectionId(sectionId)) return\n const block = blockElementFromTarget(event.target)\n const blockId = block === null ? null : blockIdForElement(block)\n setSelected(sectionId, blockId ?? undefined)\n onSelect(sectionId, blockId ?? undefined)\n }\n const onToolbarClick = (event: StorefrontEditorPointerEvent) => {\n if (!isRecord(event.target) || typeof event.target.closest !== 'function') return\n const button = event.target.closest('[data-kotao-editor-action]') as unknown\n if (!isRecord(button) || typeof button.getAttribute !== 'function') return\n const action = button.getAttribute('data-kotao-editor-action') as unknown\n if (typeof action !== 'string' || selectedSectionId === null) return\n event.preventDefault?.()\n event.stopPropagation?.()\n if (SECTION_CANVAS_ACTIONS.has(action as StorefrontEditorCanvasAction['action'])) {\n onCanvasAction({\n action: action as StorefrontEditorCanvasSectionAction,\n sectionId: selectedSectionId,\n })\n return\n }\n if (\n selectedBlockId !== null &&\n BLOCK_CANVAS_ACTIONS.has(action as StorefrontEditorCanvasAction['action'])\n ) {\n onCanvasAction({\n action: action as StorefrontEditorCanvasBlockAction,\n sectionId: selectedSectionId,\n blockId: selectedBlockId,\n })\n }\n }\n\n document.documentElement.setAttribute('data-kotao-editor', 'true')\n if (document.getElementById(EDITOR_AFFORDANCE_STYLE_ID) === null && document.head !== undefined) {\n ownedStyle = document.createElement('style')\n ownedStyle.id = EDITOR_AFFORDANCE_STYLE_ID\n ownedStyle.textContent = EDITOR_AFFORDANCE_CSS\n document.head.appendChild(ownedStyle)\n }\n if (document.body !== undefined) {\n ownedToolbar = document.createElement('div')\n ownedToolbar.id = EDITOR_CANVAS_ID\n ownedToolbar.setAttribute('role', 'toolbar')\n ownedToolbar.setAttribute('data-kotao-editor-canvas', 'true')\n ownedToolbar.addEventListener?.('click', onToolbarClick)\n document.body.appendChild(ownedToolbar)\n }\n document.addEventListener('pointerover', onPointerOver, true)\n document.addEventListener('pointerout', onPointerOut, true)\n document.addEventListener('click', onClick, true)\n document.defaultView?.addEventListener?.('scroll', positionToolbar, true)\n document.defaultView?.addEventListener?.('resize', positionToolbar)\n\n return {\n setHovered,\n setSelected,\n setInspectorEnabled(enabled: boolean) {\n inspectorEnabled = enabled\n if (!enabled) {\n clearHovered()\n setSelected(null)\n }\n },\n dispose() {\n clearHovered()\n setSelected(null)\n document.documentElement.removeAttribute('data-kotao-editor')\n document.removeEventListener('pointerover', onPointerOver, true)\n document.removeEventListener('pointerout', onPointerOut, true)\n document.removeEventListener('click', onClick, true)\n document.defaultView?.removeEventListener?.('scroll', positionToolbar, true)\n document.defaultView?.removeEventListener?.('resize', positionToolbar)\n ownedToolbar?.removeEventListener?.('click', onToolbarClick)\n ownedToolbar?.remove?.()\n ownedStyle?.remove()\n },\n }\n}\n\nexport function createStorefrontEditorBridge({\n adminOrigin,\n document: editorDocument,\n globalInputs,\n themeStyles,\n schemas,\n sectionGroups,\n shopId,\n store,\n target,\n templates,\n transport,\n}: CreateStorefrontEditorBridgeArgs): StorefrontEditorBridge {\n const postHoverSection = (sectionId: string | null): void => {\n if (sectionId !== null && isReservedSectionId(sectionId)) return\n const message: PreviewHoverMessage = {\n source: PREVIEW_SOURCE,\n type: 'section.hover',\n shopId,\n sectionId,\n }\n target.postMessage(message, adminOrigin)\n }\n const labelForSection = (sectionId: string): string => {\n const snapshot = store.getSnapshot()\n const documents = [\n snapshot.sections,\n ...Object.values(snapshot.sectionGroups ?? {}).flatMap((document) =>\n document === undefined ? [] : [document.sections],\n ),\n ...Object.values(snapshot.templates ?? {}).flatMap((document) =>\n document === undefined ? [] : [document.sections],\n ),\n ]\n const section = documents\n .flatMap((document) => document)\n .find((candidate) => candidate.id === sectionId)\n return section === undefined ? sectionId : (schemas?.[section.type]?.label ?? section.type)\n }\n const labelForBlock = (sectionId: string, blockId: string): string => {\n const snapshot = store.getSnapshot()\n const documents = [\n snapshot.sections,\n ...Object.values(snapshot.sectionGroups ?? {}).flatMap((document) =>\n document === undefined ? [] : [document.sections],\n ),\n ...Object.values(snapshot.templates ?? {}).flatMap((document) =>\n document === undefined ? [] : [document.sections],\n ),\n ]\n const section = documents\n .flatMap((document) => document)\n .find((candidate) => candidate.id === sectionId)\n const block = section?.blocks.find((candidate) => candidate.id === blockId)\n const schema = section === undefined ? undefined : schemas?.[section.type]\n return block === undefined\n ? blockId\n : (schema?.blocks?.find((candidate) => candidate.type === block.type)?.label ?? block.type)\n }\n const stateForSelection = (\n sectionId: string,\n blockId?: string,\n ): StorefrontEditorCanvasSelectionState => {\n const snapshot = store.getSnapshot()\n const documents = [\n snapshot.sections,\n ...Object.values(snapshot.sectionGroups ?? {}).flatMap((document) =>\n document === undefined ? [] : [document.sections],\n ),\n ...Object.values(snapshot.templates ?? {}).flatMap((document) =>\n document === undefined ? [] : [document.sections],\n ),\n ]\n const sections = documents.find((document) =>\n document.some((candidate) => candidate.id === sectionId),\n )\n const sectionIndex = sections?.findIndex((candidate) => candidate.id === sectionId) ?? -1\n const section = sectionIndex === -1 ? undefined : sections?.[sectionIndex]\n const canAddSection = Object.values(schemas ?? {}).some(\n (schema) => (schema.presets?.length ?? 0) > 0,\n )\n if (blockId === undefined) {\n return {\n canAddSection,\n canDuplicate: section !== undefined,\n canMoveDown: sections !== undefined && sectionIndex < sections.length - 1,\n canMoveUp: sectionIndex > 0,\n hidden: section?.settings.disabled === true,\n }\n }\n const blockIndex = section?.blocks.findIndex((candidate) => candidate.id === blockId) ?? -1\n const block = blockIndex === -1 ? undefined : section?.blocks[blockIndex]\n const sectionSchema = section === undefined ? undefined : schemas?.[section.type]\n const blockSchema = block\n ? sectionSchema?.blocks?.find((candidate) => candidate.type === block.type)\n : undefined\n const underSectionLimit =\n section !== undefined &&\n (sectionSchema?.maxBlocks === undefined || section.blocks.length < sectionSchema.maxBlocks)\n const underBlockLimit =\n block !== undefined &&\n (blockSchema?.limit === undefined ||\n (section?.blocks.filter((candidate) => candidate.type === block.type).length ?? 0) <\n blockSchema.limit)\n return {\n canAddSection,\n canDuplicate:\n sectionSchema !== undefined &&\n blockSchema !== undefined &&\n underSectionLimit &&\n underBlockLimit,\n canMoveDown:\n section !== undefined && blockIndex !== -1 && blockIndex < section.blocks.length - 1,\n canMoveUp: blockIndex > 0,\n hidden: block?.settings.disabled === true,\n }\n }\n const postSelection = (sectionId: string, blockId?: string): void => {\n if (isReservedSectionId(sectionId)) return\n const snapshot = store.getSnapshot()\n let sections = snapshot.sections\n let section = sections.find((candidate) => candidate.id === sectionId)\n let scope: StorefrontEditorSelectionScope | undefined\n\n if (section === undefined) {\n for (const [handle, document] of Object.entries(snapshot.sectionGroups ?? {})) {\n const candidate = document?.sections.find((item) => item.id === sectionId)\n if (candidate === undefined) continue\n section = candidate\n sections = document.sections\n scope = { kind: 'sectionGroup', handle }\n break\n }\n }\n if (section === undefined) {\n for (const [handle, document] of Object.entries(snapshot.templates ?? {})) {\n const candidate = document?.sections.find((item) => item.id === sectionId)\n if (candidate === undefined) continue\n section = candidate\n sections = document.sections\n scope = { kind: 'template', handle }\n break\n }\n }\n const block =\n blockId === undefined ? undefined : section?.blocks.find((item) => item.id === blockId)\n if (blockId !== undefined && block === undefined) return\n const schema = section !== undefined ? schemas?.[section.type] : undefined\n const message: PreviewSelectionMessage = {\n source: PREVIEW_SOURCE,\n type: 'section.select',\n shopId,\n sectionId,\n ...(blockId !== undefined ? { blockId } : {}),\n ...(block !== undefined ? { block } : {}),\n ...(scope !== undefined ? { scope } : {}),\n ...(section !== undefined ? { section } : {}),\n sections,\n ...(schema !== undefined ? { schema } : {}),\n ...(schemas !== undefined ? { schemas } : {}),\n }\n target.postMessage(message, adminOrigin)\n }\n const postCanvasAction = (action: StorefrontEditorCanvasAction): void => {\n const message: PreviewCanvasActionMessage = {\n source: PREVIEW_SOURCE,\n type: 'editor.action',\n shopId,\n ...action,\n }\n target.postMessage(message, adminOrigin)\n }\n const postNavigation = (href: string): void => {\n const message: PreviewNavigationRequestMessage = {\n source: PREVIEW_SOURCE,\n type: 'preview.navigate',\n shopId,\n href,\n }\n target.postMessage(message, adminOrigin)\n }\n const resolvedDocument = editorDocument ?? defaultEditorDocument()\n let disposed = false\n const pendingAnimationFrames = new Set<number>()\n const affordances =\n resolvedDocument === undefined\n ? null\n : createEditorAffordances({\n document: resolvedDocument,\n labelForBlock,\n labelForSection,\n onCanvasAction: postCanvasAction,\n onHoverSection: postHoverSection,\n onNavigate: postNavigation,\n onSelect: postSelection,\n stateForSelection,\n })\n\n const postReady = (): void => {\n const snapshot = store.getSnapshot()\n const message: PreviewReadyMessage = {\n source: PREVIEW_SOURCE,\n type: 'editor.ready',\n shopId,\n sections: snapshot.sections,\n visualReadyProtocol: 1,\n global: snapshot.global,\n ...(schemas !== undefined ? { schemas } : {}),\n ...(globalInputs !== undefined ? { globalInputs } : {}),\n ...(themeStyles !== undefined ? { themeStyles } : {}),\n ...(templates !== undefined ? { templates } : {}),\n ...(sectionGroups !== undefined ? { sectionGroups } : {}),\n }\n target.postMessage(message, adminOrigin)\n }\n\n const postVisualReadyAfterPaint = (requestId: string): void => {\n const view = resolvedDocument?.defaultView\n const requestAnimationFrame = view?.requestAnimationFrame?.bind(view)\n if (requestAnimationFrame === undefined) {\n queueMicrotask(() => {\n queueMicrotask(() => {\n if (disposed) return\n target.postMessage(\n {\n source: PREVIEW_SOURCE,\n type: 'editor.visual-ready',\n shopId,\n requestId,\n } satisfies PreviewVisualReadyMessage,\n adminOrigin,\n )\n })\n })\n return\n }\n\n const firstFrame = requestAnimationFrame(() => {\n pendingAnimationFrames.delete(firstFrame)\n if (disposed) return\n const secondFrame = requestAnimationFrame(() => {\n pendingAnimationFrames.delete(secondFrame)\n if (disposed) return\n target.postMessage(\n {\n source: PREVIEW_SOURCE,\n type: 'editor.visual-ready',\n shopId,\n requestId,\n } satisfies PreviewVisualReadyMessage,\n adminOrigin,\n )\n })\n pendingAnimationFrames.add(secondFrame)\n })\n pendingAnimationFrames.add(firstFrame)\n }\n\n const onMessage = (event: StorefrontEditorMessageEvent): void => {\n if (event.origin !== adminOrigin) return\n if (event.source !== target) return\n const message = parseHostMessage(event.data, shopId)\n if (message === null) return\n\n switch (message.type) {\n case 'editor.ready.request':\n postReady()\n break\n case 'editor.visual-ready.request':\n postVisualReadyAfterPaint(message.requestId)\n break\n case 'section.hover':\n affordances?.setHovered(message.sectionId)\n break\n case 'section.activate':\n affordances?.setSelected(message.sectionId, message.blockId)\n break\n case 'inspector.set':\n affordances?.setInspectorEnabled(message.enabled)\n break\n case 'settings.patchSection':\n store.patchSection(message.sectionId, message.settings)\n break\n case 'settings.patchGlobal':\n store.patchGlobal(message.settings)\n break\n case 'sections.insert':\n store.insertSection(message.section, message.index)\n break\n case 'sections.remove':\n store.removeSection(message.sectionId)\n break\n case 'sections.reorder':\n store.moveSection(message.sectionId, message.index)\n break\n case 'settings.patchBlock':\n store.patchBlock(message.sectionId, message.blockId, message.settings)\n break\n case 'blocks.insert':\n store.insertBlock(message.sectionId, message.block, message.index)\n break\n case 'blocks.remove':\n store.removeBlock(message.sectionId, message.blockId)\n break\n case 'blocks.reorder':\n store.moveBlock(message.sectionId, message.blockId, message.index)\n break\n case 'template.replace':\n store.replaceSections(message.document.sections)\n break\n case 'sectionGroup.replace':\n store.replaceSectionGroup(message.handle, message.document)\n break\n case 'appExtensions.replace':\n replaceAppExtensionPreviewFrames(resolvedDocument, message.extensions)\n break\n }\n }\n\n transport.addEventListener('message', onMessage)\n\n return {\n ready: postReady,\n hoverSection: (sectionId) => {\n if (sectionId !== null && isReservedSectionId(sectionId)) return\n affordances?.setHovered(sectionId)\n postHoverSection(sectionId)\n },\n selectSection: (sectionId) => {\n if (isReservedSectionId(sectionId)) return\n affordances?.setSelected(sectionId)\n postSelection(sectionId)\n },\n selectBlock: (sectionId, blockId) => {\n if (isReservedSectionId(sectionId) || !isBlockId(blockId)) return\n affordances?.setSelected(sectionId, blockId)\n postSelection(sectionId, blockId)\n },\n dispose: () => {\n disposed = true\n for (const requestId of pendingAnimationFrames) {\n resolvedDocument?.defaultView?.cancelAnimationFrame?.(requestId)\n }\n pendingAnimationFrames.clear()\n replaceAppExtensionPreviewFrames(resolvedDocument, [])\n affordances?.dispose()\n transport.removeEventListener('message', onMessage)\n },\n }\n}\n\nexport function createStorefrontEditorHostBridge({\n onCanvasAction,\n onHoverSection,\n onNavigate,\n onReady,\n onSelectSection,\n onVisualReady,\n previewOrigin,\n resolveTarget,\n shopId,\n target,\n transport,\n}: CreateStorefrontEditorHostBridgeArgs): StorefrontEditorHostBridge {\n const currentTarget = (): StorefrontEditorMessageTarget => resolveTarget?.() ?? target\n\n const onMessage = (event: StorefrontEditorMessageEvent): void => {\n if (event.origin !== previewOrigin) return\n const expectedTarget = currentTarget()\n if (event.source !== expectedTarget) return\n const visualReady = parsePreviewVisualReady(event.data, shopId)\n if (visualReady !== null) {\n onVisualReady?.(visualReady.requestId)\n return\n }\n const navigation = parsePreviewNavigation(event.data, shopId, previewOrigin)\n if (navigation !== null) {\n onNavigate?.({ href: navigation.href })\n return\n }\n const ready = parsePreviewReady(event.data, shopId)\n if (ready !== null) {\n onReady?.({\n sections: ready.sections,\n ...(ready.visualReadyProtocol === 1 ? { visualReadyProtocol: 1 as const } : {}),\n ...(ready.global !== undefined ? { global: ready.global } : {}),\n ...(ready.schemas !== undefined ? { schemas: ready.schemas } : {}),\n ...(ready.globalInputs !== undefined ? { globalInputs: ready.globalInputs } : {}),\n ...(ready.themeStyles !== undefined ? { themeStyles: ready.themeStyles } : {}),\n ...(ready.templates !== undefined ? { templates: ready.templates } : {}),\n ...(ready.sectionGroups !== undefined ? { sectionGroups: ready.sectionGroups } : {}),\n })\n return\n }\n const hover = parsePreviewHover(event.data, shopId)\n if (hover !== null) {\n onHoverSection?.(hover.sectionId)\n return\n }\n const canvasAction = parsePreviewCanvasAction(event.data, shopId)\n if (canvasAction !== null) {\n onCanvasAction?.(\n canvasAction.blockId === undefined\n ? {\n action: canvasAction.action as StorefrontEditorCanvasSectionAction,\n sectionId: canvasAction.sectionId,\n ...(canvasAction.scope !== undefined ? { scope: canvasAction.scope } : {}),\n }\n : {\n action: canvasAction.action as StorefrontEditorCanvasBlockAction,\n sectionId: canvasAction.sectionId,\n blockId: canvasAction.blockId,\n ...(canvasAction.scope !== undefined ? { scope: canvasAction.scope } : {}),\n },\n )\n return\n }\n const message = parsePreviewSelection(event.data, shopId)\n if (message === null || isReservedSectionId(message.sectionId)) return\n onSelectSection({\n sectionId: message.sectionId,\n ...(message.blockId !== undefined ? { blockId: message.blockId } : {}),\n ...(message.block !== undefined ? { block: message.block } : {}),\n ...(message.scope !== undefined ? { scope: message.scope } : {}),\n ...(message.section !== undefined ? { section: message.section } : {}),\n ...(message.sections !== undefined ? { sections: message.sections } : {}),\n ...(message.schema !== undefined ? { schema: message.schema } : {}),\n ...(message.schemas !== undefined ? { schemas: message.schemas } : {}),\n })\n }\n\n transport.addEventListener('message', onMessage)\n\n return {\n requestReady: () => {\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'editor.ready.request',\n shopId,\n })\n },\n requestVisualReady: (requestId) => {\n if (!VISUAL_READY_REQUEST_ID.test(requestId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'editor.visual-ready.request',\n shopId,\n requestId,\n })\n },\n hoverSection: (sectionId) => {\n if (sectionId !== null && isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'section.hover',\n shopId,\n sectionId,\n })\n },\n activateSection: (sectionId, blockId) => {\n if (sectionId !== null && isReservedSectionId(sectionId)) return\n if (blockId !== undefined && !isBlockId(blockId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'section.activate',\n shopId,\n sectionId,\n ...(blockId !== undefined ? { blockId } : {}),\n })\n },\n patchSection: (sectionId, settings) => {\n if (isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'settings.patchSection',\n shopId,\n sectionId,\n settings,\n })\n },\n patchGlobal: (settings) => {\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'settings.patchGlobal',\n shopId,\n settings,\n })\n },\n insertSection: (section, index) => {\n if (isReservedSectionId(section.id)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'sections.insert',\n shopId,\n section,\n ...(index !== undefined ? { index } : {}),\n })\n },\n removeSection: (sectionId) => {\n if (isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'sections.remove',\n shopId,\n sectionId,\n })\n },\n reorderSection: (sectionId, index) => {\n if (isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'sections.reorder',\n shopId,\n sectionId,\n index,\n })\n },\n patchBlock: (sectionId, blockId, settings) => {\n if (isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'settings.patchBlock',\n shopId,\n sectionId,\n blockId,\n settings,\n })\n },\n insertBlock: (sectionId, block, index) => {\n if (isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'blocks.insert',\n shopId,\n sectionId,\n block,\n ...(index !== undefined ? { index } : {}),\n })\n },\n removeBlock: (sectionId, blockId) => {\n if (isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'blocks.remove',\n shopId,\n sectionId,\n blockId,\n })\n },\n reorderBlock: (sectionId, blockId, index) => {\n if (isReservedSectionId(sectionId)) return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'blocks.reorder',\n shopId,\n sectionId,\n blockId,\n index,\n })\n },\n replaceTemplate: (handle, document) => {\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'template.replace',\n shopId,\n handle,\n document,\n })\n },\n replaceSectionGroup: (handle, document) => {\n if (handle.trim() === '') return\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'sectionGroup.replace',\n shopId,\n handle,\n document,\n })\n },\n replaceAppExtensions: (extensions) => {\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'appExtensions.replace',\n shopId,\n extensions,\n })\n },\n setInspectorEnabled: (enabled) => {\n postHostMessage(currentTarget(), previewOrigin, {\n source: HOST_SOURCE,\n type: 'inspector.set',\n shopId,\n enabled,\n })\n },\n dispose: () => {\n transport.removeEventListener('message', onMessage)\n },\n }\n}\n","/** Reserved section setting used to persist Shopify's per-instance custom CSS. */\nexport const STOREFRONT_SECTION_CUSTOM_CSS_SETTING = '__kotaoCustomCss'\n\nconst CSS_GROUP_AT_RULE = /^@(?:media|supports|container|layer|scope)\\b/iu\n\nfunction rawCss(value: unknown): string {\n const css = Array.isArray(value)\n ? value.filter((entry): entry is string => typeof entry === 'string').join('\\n')\n : typeof value === 'string'\n ? value\n : ''\n return css\n .replace(/\\/\\*[\\s\\S]*?\\*\\//gu, '')\n .replace(/<\\/style/giu, '')\n .trim()\n}\n\nfunction splitTopLevelSelectors(selectorList: string): string[] {\n const selectors: string[] = []\n let parentheses = 0\n let brackets = 0\n let quote: string | null = null\n let current = ''\n for (let index = 0; index < selectorList.length; index += 1) {\n const character = selectorList[index] ?? ''\n if (quote !== null) {\n current += character\n if (character === '\\\\') {\n current += selectorList[index + 1] ?? ''\n index += 1\n } else if (character === quote) quote = null\n continue\n }\n if (character === '\"' || character === \"'\") quote = character\n else if (character === '(') parentheses += 1\n else if (character === ')') parentheses = Math.max(0, parentheses - 1)\n else if (character === '[') brackets += 1\n else if (character === ']') brackets = Math.max(0, brackets - 1)\n if (character === ',' && parentheses === 0 && brackets === 0) {\n selectors.push(current)\n current = ''\n } else current += character\n }\n selectors.push(current)\n return selectors\n}\n\nfunction splitTopLevelRules(css: string): Array<{ prelude: string; body: string | null }> {\n const rules: Array<{ prelude: string; body: string | null }> = []\n let prelude = ''\n let quote: string | null = null\n for (let index = 0; index < css.length; index += 1) {\n const character = css[index] ?? ''\n if (quote !== null) {\n prelude += character\n if (character === '\\\\') {\n prelude += css[index + 1] ?? ''\n index += 1\n } else if (character === quote) quote = null\n continue\n }\n if (character === '\"' || character === \"'\") {\n quote = character\n prelude += character\n continue\n }\n if (character === '{') {\n let depth = 1\n let body = ''\n let bodyQuote: string | null = null\n index += 1\n for (; index < css.length; index += 1) {\n const nested = css[index] ?? ''\n if (bodyQuote !== null) {\n body += nested\n if (nested === '\\\\') {\n body += css[index + 1] ?? ''\n index += 1\n } else if (nested === bodyQuote) bodyQuote = null\n continue\n }\n if (nested === '\"' || nested === \"'\") {\n bodyQuote = nested\n body += nested\n } else if (nested === '{') {\n depth += 1\n body += nested\n } else if (nested === '}') {\n depth -= 1\n if (depth === 0) break\n body += nested\n } else body += nested\n }\n rules.push({ prelude: prelude.trim(), body })\n prelude = ''\n } else if (character === ';') {\n if (prelude.trim() !== '') rules.push({ prelude: prelude.trim(), body: null })\n prelude = ''\n } else prelude += character\n }\n if (prelude.trim() !== '') rules.push({ prelude: prelude.trim(), body: null })\n return rules\n}\n\nfunction scopeRules(css: string, scope: string): string {\n return splitTopLevelRules(css)\n .map(({ prelude, body }) => {\n if (body === null) return `${prelude};`\n if (prelude.startsWith('@')) {\n return CSS_GROUP_AT_RULE.test(prelude)\n ? `${prelude} {\\n${scopeRules(body, scope)}\\n}`\n : `${prelude} {${body}}`\n }\n const selectors = splitTopLevelSelectors(prelude)\n .map((selector) => selector.trim())\n .filter(Boolean)\n .map((selector) =>\n selector.includes('&') ? selector.replaceAll('&', scope) : `${scope} ${selector}`,\n )\n .join(', ')\n return selectors === '' ? '' : `${selectors} {${body}}`\n })\n .filter(Boolean)\n .join('\\n')\n}\n\n/** Scope merchant-authored CSS to one rendered section and prevent style-element breakout. */\nexport function scopeStorefrontSectionCss(value: unknown, sectionId: string): string {\n const css = rawCss(value)\n return css === '' ? '' : scopeRules(css, `#shopify-section-${sectionId}`).trim()\n}\n"]}
|
package/dist/editor.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { C as CreateStorefrontEditorBridgeArgs, b as CreateStorefrontEditorHostBridgeArgs, c as StorefrontEditorAppExtensionPreview, d as StorefrontEditorBlockSchema, e as StorefrontEditorBridge, f as StorefrontEditorCanvasAction, g as StorefrontEditorCanvasBlockAction, h as StorefrontEditorCanvasPosition, i as StorefrontEditorCanvasSectionAction, j as StorefrontEditorDocument, k as StorefrontEditorHostBridge, l as StorefrontEditorMessageEvent, S as StorefrontEditorMessageSource, a as StorefrontEditorMessageTarget, m as
|
|
1
|
+
export { C as CreateStorefrontEditorBridgeArgs, b as CreateStorefrontEditorHostBridgeArgs, c as StorefrontEditorAppExtensionPreview, d as StorefrontEditorBlockSchema, e as StorefrontEditorBridge, f as StorefrontEditorCanvasAction, g as StorefrontEditorCanvasBlockAction, h as StorefrontEditorCanvasPosition, i as StorefrontEditorCanvasSectionAction, j as StorefrontEditorDocument, k as StorefrontEditorHostBridge, l as StorefrontEditorMessageEvent, S as StorefrontEditorMessageSource, a as StorefrontEditorMessageTarget, m as StorefrontEditorNavigationRequest, n as StorefrontEditorReady, o as StorefrontEditorRect, p as StorefrontEditorSectionPreset, q as StorefrontEditorSectionPresetBlock, r as StorefrontEditorSectionSchema, s as StorefrontEditorSelection, t as StorefrontEditorSelectionScope, u as StorefrontEditorSettingInput, v as StorefrontEditorSettingOption, w as StorefrontEditorThemeStyle, x as StorefrontEditorValuesDocument, y as createStorefrontEditorBridge, z as createStorefrontEditorHostBridge, A as positionStorefrontEditorCanvasToolbar } from './bridge-CfNBWu0H.js';
|
|
2
2
|
export { S as STOREFRONT_SECTION_CUSTOM_CSS_SETTING, s as scopeStorefrontSectionCss } from './custom-css-Bl7Ur3-H.js';
|
|
3
3
|
export { HOSTED_SURFACE_DESIGN_INPUTS, HydrogenEditorManifest, HydrogenEditorManifestSchema } from '@kotao/storefront-contracts';
|
|
4
|
-
import { H as HydrogenEditorSecurityContext, C as CreateHydrogenEditorPreviewRuntimeArgs, a as HydrogenEditorPreviewRuntime } from './hydrogen-
|
|
5
|
-
export { b as CreateHydrogenEditorHostBridgeArgs, c as CreateHydrogenEditorSourceProjectionArgs, d as HYDROGEN_EDITOR_BRIDGE_LIMITS, e as HYDROGEN_EDITOR_PROTOCOL_VERSION, f as HydrogenEditorApplyResult, g as HydrogenEditorCanvasDispatchResult, h as HydrogenEditorCanvasIntent, i as HydrogenEditorCapabilityReason, j as HydrogenEditorConfigurationError, k as HydrogenEditorHostBridge, l as HydrogenEditorInstanceSnapshot, m as HydrogenEditorOperationBase, n as HydrogenEditorOperationFailure, o as HydrogenEditorOperationFailureCode, p as HydrogenEditorPreviewOperation, q as HydrogenEditorPreviewSnapshot, r as HydrogenEditorPreviewStore, s as HydrogenEditorProtocolFailure, t as HydrogenEditorProtocolFailureCode, u as HydrogenEditorReadyDocument, v as HydrogenEditorReadyInstance, w as HydrogenEditorReconciliation, x as HydrogenEditorReconciliationReason, y as createHydrogenEditorHostBridge, z as createHydrogenEditorPreviewRuntime, A as createHydrogenEditorSourceProjection, B as parseHydrogenEditorCanvasIntent, D as resolveHydrogenEditorStyles } from './hydrogen-
|
|
6
|
-
import './store-
|
|
4
|
+
import { H as HydrogenEditorSecurityContext, C as CreateHydrogenEditorPreviewRuntimeArgs, a as HydrogenEditorPreviewRuntime } from './hydrogen-CqDMW3YC.js';
|
|
5
|
+
export { b as CreateHydrogenEditorHostBridgeArgs, c as CreateHydrogenEditorSourceProjectionArgs, d as HYDROGEN_EDITOR_BRIDGE_LIMITS, e as HYDROGEN_EDITOR_PROTOCOL_VERSION, f as HydrogenEditorApplyResult, g as HydrogenEditorCanvasDispatchResult, h as HydrogenEditorCanvasIntent, i as HydrogenEditorCapabilityReason, j as HydrogenEditorConfigurationError, k as HydrogenEditorHostBridge, l as HydrogenEditorInstanceSnapshot, m as HydrogenEditorOperationBase, n as HydrogenEditorOperationFailure, o as HydrogenEditorOperationFailureCode, p as HydrogenEditorPreviewOperation, q as HydrogenEditorPreviewSnapshot, r as HydrogenEditorPreviewStore, s as HydrogenEditorProtocolFailure, t as HydrogenEditorProtocolFailureCode, u as HydrogenEditorReadyDocument, v as HydrogenEditorReadyInstance, w as HydrogenEditorReconciliation, x as HydrogenEditorReconciliationReason, y as createHydrogenEditorHostBridge, z as createHydrogenEditorPreviewRuntime, A as createHydrogenEditorSourceProjection, B as parseHydrogenEditorCanvasIntent, D as resolveHydrogenEditorStyles } from './hydrogen-CqDMW3YC.js';
|
|
6
|
+
import './store-ZzoBbWir.js';
|
|
7
7
|
|
|
8
8
|
declare const GRANT_VERSION: 1;
|
|
9
9
|
type HydrogenEditorPreviewGrantErrorCode = 'INVALID_BASE_SHA' | 'INVALID_CHANNEL_NONCE' | 'INVALID_ENVIRONMENT' | 'INVALID_MANIFEST_HASH' | 'INVALID_PREVIEW_ORIGIN' | 'INVALID_SESSION_ID' | 'INVALID_SITE_ID' | 'INVALID_TIME' | 'INVALID_TTL' | 'INVALID_WORKSPACES_ORIGIN' | 'WEAK_SECRET';
|
package/dist/editor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HydrogenEditorConfigurationError, createHydrogenEditorPreviewRuntime } from './chunk-XXNCFWXT.js';
|
|
2
2
|
export { HYDROGEN_EDITOR_BRIDGE_LIMITS, HYDROGEN_EDITOR_PROTOCOL_VERSION, HydrogenEditorConfigurationError, createHydrogenEditorHostBridge, createHydrogenEditorPreviewRuntime, createHydrogenEditorSourceProjection, parseHydrogenEditorCanvasIntent, resolveHydrogenEditorStyles } from './chunk-XXNCFWXT.js';
|
|
3
|
-
export { STOREFRONT_SECTION_CUSTOM_CSS_SETTING, createStorefrontEditorBridge, createStorefrontEditorHostBridge, positionStorefrontEditorCanvasToolbar, scopeStorefrontSectionCss } from './chunk-
|
|
3
|
+
export { STOREFRONT_SECTION_CUSTOM_CSS_SETTING, createStorefrontEditorBridge, createStorefrontEditorHostBridge, positionStorefrontEditorCanvasToolbar, scopeStorefrontSectionCss } from './chunk-RFKLO6TD.js';
|
|
4
4
|
import { toBase64Url, fromBase64Url } from './chunk-CKGI3Y7L.js';
|
|
5
5
|
export { HOSTED_SURFACE_DESIGN_INPUTS, HydrogenEditorManifestSchema } from '@kotao/storefront-contracts';
|
|
6
6
|
|
package/dist/events-react.d.ts
CHANGED
|
@@ -58,11 +58,13 @@ interface EventApprovalOfferProps {
|
|
|
58
58
|
readonly location?: OfferTokenLocation;
|
|
59
59
|
readonly history?: OfferTokenHistory;
|
|
60
60
|
readonly labels?: Partial<EventApprovalOfferLabels>;
|
|
61
|
+
/** Formats visible dates without changing the timestamps used to resolve or claim the offer. */
|
|
62
|
+
readonly formatDateTime?: (value: string) => ReactNode;
|
|
61
63
|
readonly onCheckoutSession?: (session: EventCheckoutSession) => void;
|
|
62
64
|
readonly initialResolution?: EventApprovalOfferResolution;
|
|
63
65
|
readonly initialState?: Exclude<EventOfferState, 'resolving' | 'active' | 'claiming'>;
|
|
64
66
|
readonly className?: string;
|
|
65
67
|
}
|
|
66
|
-
declare function EventApprovalOffer({ client, offerId, cartToken, locale, idempotencyKey, location, history, labels, onCheckoutSession, initialResolution, initialState, className, }: EventApprovalOfferProps): react.JSX.Element;
|
|
68
|
+
declare function EventApprovalOffer({ client, offerId, cartToken, locale, idempotencyKey, location, history, labels, formatDateTime, onCheckoutSession, initialResolution, initialState, className, }: EventApprovalOfferProps): react.JSX.Element;
|
|
67
69
|
|
|
68
70
|
export { EventApprovalOffer, type EventApprovalOfferLabels, type EventApprovalOfferProps, type EventOfferState, EventRegistrationForm, type EventRegistrationFormProps, type EventRegistrationLabels, type EventRegistrationState, useEventRegistration };
|
package/dist/events-react.js
CHANGED
|
@@ -395,6 +395,7 @@ function EventApprovalOffer({
|
|
|
395
395
|
location,
|
|
396
396
|
history,
|
|
397
397
|
labels,
|
|
398
|
+
formatDateTime,
|
|
398
399
|
onCheckoutSession,
|
|
399
400
|
initialResolution,
|
|
400
401
|
initialState,
|
|
@@ -537,13 +538,14 @@ function EventApprovalOffer({
|
|
|
537
538
|
" \xB7 ",
|
|
538
539
|
resolution.quantity
|
|
539
540
|
] }),
|
|
540
|
-
/* @__PURE__ */ jsx("time", { dateTime: resolution.occurrenceStartsAt, children: resolution.occurrenceStartsAt })
|
|
541
|
+
/* @__PURE__ */ jsx("time", { dateTime: resolution.occurrenceStartsAt, children: formatDateTime ? formatDateTime(resolution.occurrenceStartsAt) : resolution.occurrenceStartsAt })
|
|
541
542
|
] }) : null,
|
|
542
543
|
(state === "active" || state === "claimed" && canClaim || state === "request_error" && canClaim) && resolution ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
543
544
|
/* @__PURE__ */ jsxs("p", { children: [
|
|
544
545
|
copy.expires,
|
|
545
|
-
":
|
|
546
|
-
|
|
546
|
+
":",
|
|
547
|
+
" ",
|
|
548
|
+
/* @__PURE__ */ jsx("time", { dateTime: resolution.expiresAt, children: formatDateTime ? formatDateTime(resolution.expiresAt) : resolution.expiresAt })
|
|
547
549
|
] }),
|
|
548
550
|
/* @__PURE__ */ jsx("button", { type: "button", onClick: claim, children: state === "claimed" ? copy.resume : copy.claim })
|
|
549
551
|
] }) : null,
|