@wix/himalaya-cli 0.1397.0 → 0.1398.0

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.
Files changed (44) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/serve-runtime/src/wix-bridge.d.ts +30 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/icon-catalog.generated.d.ts +1 -1
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts +2 -0
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/validation.d.ts +1 -0
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/auth/src/copy.generated.d.ts +109 -0
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/auth/src/feedback.d.ts +15 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/auth/src/index.d.ts +3 -0
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/index.d.ts +44 -0
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/auth.mjs +304 -18
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core/validation.mjs +1 -1
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +31 -1
  12. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +377 -20
  13. package/dist/cli.mjs +941 -342
  14. package/dist/preview-assets.generated.bin +0 -0
  15. package/guides/component-reference.json +1 -1
  16. package/guides/component-reference.md +2 -0
  17. package/guides/headless-loop.md +1 -1
  18. package/guides/importable-sdks.md +2 -1
  19. package/guides/one-app-to-himi-app.md +30 -0
  20. package/guides/one-app-viewer.md +8 -1
  21. package/guides/sdk-reference.json +92 -1
  22. package/package.json +2 -2
  23. package/templates/beauty-salon/dev/index.ts +41 -1
  24. package/templates/beauty-salon/tier5-src/himi-store-account/index.ts +90 -76
  25. package/templates/branded-lite/dev/index.ts +41 -1
  26. package/templates/branded-lite/tier5-src/himi-store-account/index.ts +90 -76
  27. package/templates/community-club/dev/index.ts +41 -1
  28. package/templates/community-club/tier5-src/himi-store-account/index.ts +90 -76
  29. package/templates/events-meetups/dev/index.ts +41 -1
  30. package/templates/events-meetups/tier5-src/himi-store-account/index.ts +90 -76
  31. package/templates/gym-fitness/dev/index.ts +41 -1
  32. package/templates/gym-fitness/tier5-src/himi-store-account/index.ts +90 -76
  33. package/templates/nonprofit-cause/dev/index.ts +41 -1
  34. package/templates/nonprofit-cause/tier5-src/himi-store-account/index.ts +90 -76
  35. package/templates/podcast-creator/dev/index.ts +41 -1
  36. package/templates/podcast-creator/tier5-src/himi-store-account/index.ts +90 -76
  37. package/templates/portfolio-creative/dev/index.ts +41 -1
  38. package/templates/portfolio-creative/tier5-src/himi-store-account/index.ts +90 -76
  39. package/templates/restaurant/dev/index.ts +41 -1
  40. package/templates/restaurant/tier5-src/himi-store-account/index.ts +90 -76
  41. package/templates/retail-store/dev/index.ts +41 -1
  42. package/templates/retail-store/tier5-src/himi-store-account/index.ts +90 -76
  43. package/templates/yoga-studio/dev/index.ts +41 -1
  44. package/templates/yoga-studio/tier5-src/himi-store-account/index.ts +90 -76
package/dist/cli.mjs CHANGED
@@ -660,37 +660,37 @@ var init_file_store = __esm({
660
660
  mkdirSync2(this.appDir(app), { recursive: true });
661
661
  writeFileSync2(join2(this.appDir(app), "release-manifest.json"), JSON.stringify(manifest, null, 2));
662
662
  }
663
- async putScreen(app, screenId, json6) {
663
+ async putScreen(app, screenId, json7) {
664
664
  const dir = join2(this.appDir(app), "screens");
665
665
  mkdirSync2(dir, { recursive: true });
666
- writeFileSync2(join2(dir, `${this.safe(screenId)}.json`), json6);
666
+ writeFileSync2(join2(dir, `${this.safe(screenId)}.json`), json7);
667
667
  }
668
668
  async putBundle(app, sha2566, bytes2) {
669
669
  const dir = join2(this.appDir(app), "bundles");
670
670
  mkdirSync2(dir, { recursive: true });
671
671
  writeFileSync2(join2(dir, `${this.safe(sha2566)}.bundle.js`), bytes2);
672
672
  }
673
- async putTokens(app, json6) {
673
+ async putTokens(app, json7) {
674
674
  mkdirSync2(this.appDir(app), { recursive: true });
675
- writeFileSync2(join2(this.appDir(app), "tokens.json"), json6);
675
+ writeFileSync2(join2(this.appDir(app), "tokens.json"), json7);
676
676
  }
677
- async putDoc(app, sha2566, json6) {
677
+ async putDoc(app, sha2566, json7) {
678
678
  const dir = join2(this.appDir(app), "docs");
679
679
  mkdirSync2(dir, { recursive: true });
680
- writeFileSync2(join2(dir, `${this.safe(sha2566)}.json`), json6);
680
+ writeFileSync2(join2(dir, `${this.safe(sha2566)}.json`), json7);
681
681
  }
682
- async putAppConfig(app, json6) {
682
+ async putAppConfig(app, json7) {
683
683
  mkdirSync2(this.appDir(app), { recursive: true });
684
- writeFileSync2(join2(this.appDir(app), "app-config.json"), json6);
684
+ writeFileSync2(join2(this.appDir(app), "app-config.json"), json7);
685
685
  }
686
686
  async putIcon(app, bytes2) {
687
687
  mkdirSync2(this.appDir(app), { recursive: true });
688
688
  writeFileSync2(join2(this.appDir(app), "icon.png"), bytes2);
689
689
  }
690
- async putWidget(app, widgetId, json6) {
690
+ async putWidget(app, widgetId, json7) {
691
691
  const dir = join2(this.appDir(app), "widgets");
692
692
  mkdirSync2(dir, { recursive: true });
693
- writeFileSync2(join2(dir, `${this.safe(widgetId)}.json`), json6);
693
+ writeFileSync2(join2(dir, `${this.safe(widgetId)}.json`), json7);
694
694
  }
695
695
  // Per-app settings (registry visibility) — release-independent, so it lives beside the
696
696
  // manifest, not inside it. NOTE: listApps() keys on release-manifest.json/ledger presence,
@@ -701,8 +701,8 @@ var init_file_store = __esm({
701
701
  }
702
702
  // Template scaffold source archive — a content-addressed JSON doc, so it rides the same
703
703
  // docs/ slot as putDoc (retention via retainedReleaseRefs.docs, which includes sourceHash).
704
- async putSource(app, sha2566, json6) {
705
- return this.putDoc(app, sha2566, json6);
704
+ async putSource(app, sha2566, json7) {
705
+ return this.putDoc(app, sha2566, json7);
706
706
  }
707
707
  // App-owned resources. Stored EXTENSIONLESS under assets/<sha> — the content-type lives
708
708
  // on the manifest record, so the bytes on disk carry no format assumption (unlike
@@ -2953,10 +2953,10 @@ function writeAttestation(input, opts = {}) {
2953
2953
  };
2954
2954
  const attestation = { ...unsigned, selfHash: "" };
2955
2955
  attestation.selfHash = selfHashFor(attestation);
2956
- const json6 = JSON.stringify(attestation, null, 2) + "\n";
2956
+ const json7 = JSON.stringify(attestation, null, 2) + "\n";
2957
2957
  const runFile = `${runId.replace(/:/g, "-")}.json`;
2958
- writeFileSync5(join6(dir, runFile), json6);
2959
- writeFileSync5(join6(dir, "latest.json"), json6);
2958
+ writeFileSync5(join6(dir, runFile), json7);
2959
+ writeFileSync5(join6(dir, "latest.json"), json7);
2960
2960
  const keep = Math.max(1, opts.maxRuns ?? DEFAULT_MAX_RUNS);
2961
2961
  const allPriorRuns = readdirSync3(dir).filter((name) => name.endsWith(".json") && name !== "latest.json").filter((name) => name !== runFile).sort().reverse();
2962
2962
  const priorRuns = allPriorRuns.filter((name) => {
@@ -5695,8 +5695,8 @@ var init_catalog_v2 = __esm({
5695
5695
  "../html-to-t5/catalog.v2.json"() {
5696
5696
  catalog_v2_default = {
5697
5697
  encoding: "gzip-base64",
5698
- sha256: "6b06cf4145ceabbc8763ac423a4871ea26889c838a755a48c70d85598453297c",
5699
- data: "H4sIAAAAAAAC/+y923LbOrYo+iuzsvttxT3XpWvvXX1etnxL3G3HbktJevZaOS6IhCRMUwQbJGUrq2bV+YjzhedLDgYuJEACpGRLopyJPMQiAJIgMO4Yl/9+t8IsJzR99+d3i0X287//+X/9+7+hf8XRv87+Ff2vf/sP9B/v3r/LowVeond//u93fyAxHxjRZUZTnBZ/lD1//DXnD3j/riBFgnn/R7JECVqjn8bnn69+qkbzEQ/8Ygk///zuw8Wni/vR5OL8pxmjSz6K4Z+L/OecRT+rpxb5T9P1T3OcnsDzT1Tr8tf8p//v//l/f4rpTyktflqgND7BMSn++NM1Tgl/9k80/alMH1P6lP6UMZrl/9dPecFIJDoY/mdJGI5/+pefcFou8z/ySf2B4Rmf0P/4+Q8xnuU/m/MVLfDhdSO/KNYZfCad/oojGAVvwawgWAyFJarGwJvT+bvf3r+b0ngtltB+m2jm3Usakxnhe9F+Ae+NFiSJGU6NTsQYWvOXkwIvc8eD6xn/xv/V729OXq/Iuz//p+z71vygDEWPaI7lMqQ5bN5C7TDMTT7Q8cVi8R2fw7tQktzyyf4nX62ZeIX1Qv1E/bYv44JPQdzYni3MYCFXpjFt9+ubX/fKpYVvIfN0qUADgArmlmAUwzLwreM9mAF2MEQSaIMp53xR4Xf9Un7jlI9rfmQ1vW9iGzdbsI9hwbZbsH/8aAu2i0W5Rt/X1yQv9rQs1be/aE0WlJHvNC1QYjxiSilflvRdJ7zwvgLN55jd5M5emt6VSTKh93jGcL7gY4CWoTlJUSEY5X+LR5Docf2R7wG/qXOufOno0/iJZHgUwf25fID4yjtULJykE6WcwBb4qrFExvcxDIwbX6M1LQv3EL6PBZ/CVZrjYkIz58eaY05pUdBlP4bJDdoGkj4wzhSPEYoimpTLNPcsjei74cJFuewacfGccSEEx25Y64DDbhjoglLnjtSfs83enCEWHyvhy1Ace5G4Y2G5MJlids8JZOne2ymn9nNGy9Qtqw1EcMdZQoovBD/taT8yxqkKW/fRqxgX/LP6RqmH3aDnryS2QNgDpPrt1Qu2WZpzsiKx46E7WZjfttojFO1rHu9WKCndsjTH7ARlOf7KH3+xzIq1i+Rv8x3iIVzqKfCevkUpgy7CVk79nSSiqRsno5r7yt/XaIoT51jx+HGx7pmAf4R8QdWvSUANwjnm84zl7yxBJBULpm4j36278iUftIzbREKuwjZoMMHP+xLHCni0czHxkn9hgeXSF2SJ74EqwMWScDmlXI4jlOBL/vGUOantkqYUyDWOz8mcFB6JpmBlGmkRy8UOfZvFccN6cd2zRM/XJMVuHsB38jGmT6lnNnw5RsAGNmUB79/9WnKpcLaWW8FvP+cbpIG2egQqC8rHJgXczIpEjI45NDHUHMq5E2b82RjgjX/TIy4WnGfNF+Ie6Bh38sANKEYlaX5pUJ72iHsucLqF7W3IztUSLAn7geCSuakByrlw6yY2KSkISnJn55OHrXHdA5P5ouiSp89xHjGSeYFZDbuhsUUpZgS+akaSRG45LiK52RwBI7ygidI2HJ+Y8RW5BxByC0sLlFlvYsr4AyIQ3wM+I8KiRG6ClwTDxJrM3kQZkrqXmctBfOL8ovm9FWnhWhcjoGEpqWBzeIK57gecUrTEm31OG3SaAFJ3rRAjaJq0EK7eKzybwXScNFBxltY93qXfCB4byyc+fBuudFpyxXFf28Coh+z7ZQhTVPCzjZjksBGxG5h1r1c9U7zgyocsmjF4ByQUNZQb03zhkSH4bdIeNis7cRFw+DZN1j7LQI9+xBn7Rx+Rcwox1aJvK81cEpzsS//so5p+cVv0eLeepmcLlM6VRPSI11MKSrSENxyVzMNJl2VSAEzgm2655Pkap3MP7wH54QxlpOA66veWyJBSIS08URbnQkoF7I+wsA0sEON7BCcM38Q3jMvpkhRq1uV8jnNtnqoeJ0516GwmLbBifCV06zGxfOUcpJoUZEjx2lj8QUzxrxmNynx/qMQ5F2KKCjlXfoETDhcTn4iLGbMkSOPOjKvA5NmjRsx8XVO+AVx2w7lH1uXwRWLDnCgm4F0f0euZ/DbMckLn82Rf0lfi1cZWftlyGzzjUBA93nohhPfNZu7OBceeXYl4jbWT37aVkafAWXYwC0L9Rd1LzQm+jxh5jOT11rx6SUYrVKB9rQgBjeOzRzXoVAA80tY2GHeK4r2pO16F3S/yFPQRp/4eD3Q0Zw/v3YrNo/nBbRaDfOgdo3PGaf7p3oA5U29w4qTu9CK5V0sQ5PPMa0bxExXCNSEuUizhbKzbfBD7dUb/fKtpbbZh1epss2mXlC33RXpijxrNRd6Xn1lJOayWdrqM9KaU1zwzit9VU2k8dNvl26cM71lDv7QBop5X0Kvnt7FUdsMBSnm/dEMfibdbOFi0CyF4Hpo/wNExkQZBLcVLCZhLRIil2uUCHuDFzRXJyTRx4vyrySiJHvcmINGs0nI82CdwDCf8ZhxfxRsIpn1qpnqldykFEqpHcfLFUbel1y35D9idBcbCNMj/Fu3zBP1tWx2scdq81wUXzONzSp59hgZ/H3r29zUsibG0IsLpBBww8ivx81trs7rE4K3OAeHobFYmY2Xi38/i5YXiq9UJBNUnEFjY9N9XmMu/GcmDgdqu1MUasDoTMNTf39RT+jiQ+Z1yhlspQI8cufZnL3yh2b7HIBbRMi1eqQxcMjQHp4JxQvd1iBeh3K/jQWcf4eO7jcqkOOND+zle9Tb9bPv+bYDiK2WcBHFhpWB4bwoTf/Rfcpp6FyijCYkUTsxQkoCXyFbIYL2hep7xsK3wRJjPjtM+atNU25YY4ylHlgi7HZe2kpASrlucLQj/lr05KGWbiwKdInsbU4S1dyzudoubjUXslBLa7kVZvqUSPt3XKhbw6B3KU3nT7aKgGQg94EMpOXqPQAVHESu8heIovsCa5XaIKsg6js9oWjCavB3JdSuY0+9/8TqdIUZLfu9xeoKWjAlH2Bj3WzzlMQwnn+srcAPhdNLjS9zl4flqr9o7rpbuzdDEn32wxcwX9ImPJREq3McwTTuPmNy2Rvf6DfuS1XG2JYvoXacWKYxpARg4RSDyy3HY4Vkm59J4wVa4Kr2H+ESVj/sQxnnoHHmdd17oYIiVt/bHLm1Auk51jnm9bzPjUiF69vrNvdpZUB6rjPmXZ3vaPiTe0MGIZX8fy/J5tdAVZnwj/G5NS/T8pWWHMr2e6NMtf8YsoU8eEUz1nnnUO1Bs/F5cNJ2gTJIwaPrAuP6I09ee0p6iNN0bwrlsfySdUWECjiIwntdGQDAHpMBjvnWi29JrIbVdcWKSL0nuNRv2ufU2SZz+kvcvQI1xyrWx6d6OaTZekVJ6fXqkh5dv1lYrqWe7FW1JeN85QQmdH9x/vGt1+fxmhC1HxiJHiCujidkSY35DKZQEb+QUPMXvYC6f6e9f0tjjK+t2nrKnvc1G3JNosUevcFb2aByNt4rxWxl+8HSPES+l99wf3LA+FkvfGZKX7/d62kZcA0wu0g7XQrHZcw2cGZqShMCE79uHU70y5DaMBWI5IaJwXw5AeCO78wvFNiELgC98l4NY/3FoxbCRoJ+UrR3uc9ECr5jwfeO/okcIFKhZ4GvCSkS3/5xdP8A/Qq+Cb8RWJxjJ/iKqOlwGtvU0AlVmAx2SqZ8OfCvB3+rLCx2jvD4TnWbObu/irXZJ2Fo4V9ivcelF3nuPRMZPavQR2DKlzxBYwGkBFdOCMMtsI2tU90Z0u2v3OqJss+bAhldc7tq3xeClznobeN1sHynAPL7oW6kuIoJ8LE6n92Sxl/EMG4Sw8l+bWGMMbbtXPwF9kit50ylmPov+uXyGdZrvg9mq2+/4G88t689URui/NwLRrCQZXrFTOSk0Q5qlgi2WRQhEUncoC6o+w0PbfMRiG1C5AY+GPVkl0mhBe7My9JmLf3Oa3/iLRMygiqwR7u5S2XrQThl9cf1+3WArV26aFPuz62y0gn7vS7/xrQHQ8mSnC6wlPMpPYgQSIlj3I7g/oen8IWNSH66GW8i4zdre0QwQY9C13ZDOvWo9X02eGuRuJ4ANx70Hl3GaggziXCAvBFnMShHRUsXHyPjMQtlZ+iJXVL+0xPrs3Awv6Qp5uY6htND0HsbqYxN1DOdhVqrXz1wSvOpwzPV6UHcLYp3+1VvCQX4lln+PwteW5zXyHr//SJ8jYDqKY9dO7k5Z2Kcz2qLKdtR2YaS08HS9+qCEpPYJ0ItWhhOqKKF5yfAH0EeOK+cFbicQMjBK9/r9umpe8aIF5gRGBoZtySeF+VN6PTidoQ6smDoXpDMp4nZfemg3bW8Y/vaZMH7bzlFobzGC7XRbGxBdRp/65HQYsgOe8wGVe4vWOlRg3uZCDphoEHiTg+aH9CFfh3WgbxdeHOmzzR6B5T2dH95q6VluAv4/qOMoyTZx+VPVeLG9Gzxyf66hrYQtxPYrZ/njSDYVwwxDjYbkLTIBdZzo5JiRHr/orSQNmpbFPhc0T0jU68ctB/WCTds8uCDRY+qLMJRZjyZeQUb2j7tknV2wqGs8hwwDw7gR/tZr4KGMmDE8r/jQc642DsuPX8+AOe6RGH9s6g6WyljIEOzqt58boud7ezY1cH7HU4ZeqyfAcfp+BdqYRiXYYTsjEcxBHlXymqSPW4UqvGwVLmKyvwMQb4ol/f0vX6A+Xbzg0NEH1TbvLjOIrBpjtuKk1Zsfa7RCJPEbc7oS6+xjJyF7LdpnDEm3eNK/ZslmPkr1a5oPfYmzzAAByx3rBL6gBeebUIPh//6v//pDLr/sz3/8l//6rz/+8V/+0C3W9xudfKE6r4tf/kL5HD/RveUPfUIrPIPY/K1EQ32Xn3B0u9zV3R1RYjnpeELd3ZXZucD+Hv/cccL1DLbu7Oyw1t/BWZ8CgztU5jVMYPxY2SX5DGyIuccFW2svi2JbYZ3Z31ovFOv6VK8iOkXsbAexmDeI/bPEB0/N0ufwuV/LDlliccq7n4/mvKlXkXqvR+3AEgDhL/t1ion8XuHbBLhs81FfIcL/rSVA6Akj2y7shLL9pyPYJAjxCRXRYtsDoh5r9Q5W6LbI9nkqlvgzD+4mWyI4si2zBBe4L1/iVqHCaLovcc57tOvdaiv9aMM+x/C8TETwVr5EIs0vv5rjLuPrdmxtf4fnBSnK2M3KwQHD3/ud0qU3AzfuDQ9So/zmBb8+1WudZbS0pBO3bYOPaWUuJsJvX9YkK0gkM2Qu6NNnLr1f01Yec+OdM5okG40jxYSetc72TGUSZa0U9VyChLz0Iv8mF7CShIjEKIv1lAkBHzCQQ4nhUnAj1tfyMZiThnMtLEFHXoklX2W/tAu5p3v5jRjUQUPGMKCaJCz/mJYs2prBfiExpgeONuAqge90XMcR+yv4MNtOYfQm1CrqYyWa9R7DvDi0YSvRLJ4NENTRZePnmGnIi54F5bjDijs7tMgmY37DDgKk5kD6el4mTDagqu0xCDCHko8e2W4zx0i+Ul1hy7CQShEei1IZvpSF7nxXyh0VaIsgZWD9QuJLoOTEO2FTjrEsumEiSeUoW5KEz0+NX4pjzqjMpVeciPL41kC+KgQEYu4g63EaYZlxK9UhpuYtog3idtaTBVQJo4m7/FMHJmr0bQSfyP9BNtBpvvOIYazkiYxEBZeXrtI7+UO21uWMAG6UBVG4joBZCSV2a6au7rdX5meUPfEdGT+SrGtb4embjAO0/FuJyw5/a86GssIWEhojJgylMrv9jineJmUavlXk3efdh7IMIwbxgkoiTGiR16wWxbVJxmeeuUgrr7GLOlUXH1RnAxXXlxWw2BI3BH1ZySuAVp1x2UCIoj7nTzCyeoIturJabHOORwvetS8ip8UDV+Z9H+PsZsccWjxV3vzporeyTq8GWAxOqXX6eo898gZFC1/kXfeC7WRZbjgSLs4Q10zjvQVsrzHyli7yqMPaQnLuteUaAzpMurryT39mtmpkRyZJlhdfMX6MrR0xzVIynuy8qufE5X+xvo10LKP4VxQJ0sc7PcQXFq0jyoHf2OXV5F23JXru7KNF3rEhYFxtkGvIYiK0NRkj+M3YmzEIKr07WI3y6zhqJKfUvU9TY7p0HTHy/iX2Q7Dx7rHaZjvtJoDpf8g/T3CKIIQkEeLgXYi62++bvuoJ3/qtGtR1ysKKj5zwuavspLG3rxeNAEM+0adrmypaXl9yDy9WUnlXJyt8Q01EEx8wqcurdVeRxZKI97pi6HEdUWWk8CsyeYqyG5KWBfaVxxUf1bDpMVxRFHBrH/UU6OOTJN97Rm0VsQkOQWhfBxu7AEaRFmBC/dTBGNAB0nXVYQ9RFmldvfmvHXC5FRDGOOdcIe4KFf32myysq+4S01QF3M1a8nUJeb47aC4byMkqFyPNJOlmAIG0t70idTqbIYFCXMWkIlosjRkVqdCXKBItT3gKrCKtO4sVzHEle+FUgP/6pr0Q6+k168bWc0XpWlW71/CqA7MAvnWbKiloNlVRW79929PspVHfLqfbWmSD8O1vCt4Cujt+q0D6cfMTD1K6fVdw4K362FGE+P27jxsj4SIgYUDCgIT7QMJ/bIyE3wMSDoGEAQM224ROKL9G39eQbWoTOE/42JNEhlvXoF591jHD+ft3U1IJw6qKh2EchUx1EVeTSM51ZfDxXIgpcd2XfKdpIWPlW99nqmI/NK8RGjokdLjJh5wETe9KULzu8QwOcpxT8aVyEPqr5xgN8rsundolimNxMIaSO4dSa7oTITbf6gktzE75pwEGN2fXXmQH/HXpuz1L85tvjjOU5FiSj+bZX5ssZSXfD5MAyRQrZgvDwv/ZalN5fKw2cfplNsDB2oM6WTPbESS2tF9a5QptUb0KAL51f+9+QFj5GQlYg9rZeiE3Bd+oZLkvz1x6TVF8Q63T7IAFAQtehwWQuH3sqarZKDZQA+AguGXwqNrkZiNXl51sH1PKRdkgEWs3hlIY0nqab4PxRorOnjP/rbMxaD/JCn4BeGpg9qKev+Xbb99MZ8pAhQIV2g0V6kn/3HiuBPm6vn330xvJaAOWBSwLWLZ7LPttUJnA8n9q8V4z6dMeJ6GyrVx5DSWHMiQw8JjM8TVa07IYdCbKXe8KEoZNpIvXUFYFcyoyK+7RGPVVoakh7ZmvK9VlG9Bcbno+03zD5OTwbWjZggI/DPxwV7qvYaMJlpkAnb8Dy0zDeNLp39Y2awRjRkDcgLjBmBGwLGDZ79mY0Z1usGkIcES5NzV0d6RxQ3X2RcM1dNpuaaGqavz+nQhL2MAhZM6EBvq78AUxEjAOZ6kQU4Co43J5BBO5MJKhD+aYMrxvzFHYGI/AQcdJT2rEecNmrHbyVasCtY2UvhEX7dIBxrZ0GMK6eUqXmaxvR2DAmQoo7aP1Krz/Tbq4ZsC0B3agG55ORZSlmN1zVbwclI3VKRAGPZQJbs/H5PZsoOhWxLEJ1M4EFzW0tUXyw7pbj7OEFCLhzgYkN4fBJysYbRLejPHRMrXo8C5OMS74px/HXNTC3KDnr/yWxdFIQnrDqtUaFFUN8Ompy6k2tmuUY8m7ZZD2WsCIc7IiyvDchxSxGmpghP2KIRf3N4nj/N1sMwQXI03krlI3DsIXnaqx7jLVYrAnkVRVWuLyZIKyHH9d4PQCgpoHdC04HljorHrlWDBHiPb7d6J3rJNQ98GTiCg/kTmrTaCqanwMpp0adUaGmoO2YTtkvR1Zs/crr0bbBg0Eo3kwmh9FzAuyk4cMRQAEBaqysA5NCgefiNwVxzQckK6ENgvuRLLAZisHd5K+OxQ11G4QXXPn4oo5wWV8aAVdMr5BJZEXFjsNp76Bgb0RBoZ6sljZJNeLBv4RDWq5Ixppk7ENiZebvkCzTibVpyeIoieWgqBuPB6lU03Rq3MWRhqsTQVi85490JPmvui3bSV9wRI6ZZclvsczH7ProaNFdwmbNtzB61iDEEBZgVWDEsDnWXZQfp/VQGczKAnuQO2id11+zM/au2gk0miXy3HESe0lJzCUbW0I1XNgqfMFNKXCchWfkzkpdhvS4oJ9VqaRP2S+i0R1f0g+tAhelYoaagJL9AyZMQc9DoSiITF9SgeNRwJ2M4KjoJ2fBhqNv5Z5QWbrA6hH8DnnnCY5bEbtT4LE0NY8k6JBJIvkAHOusyb3TbhMY8xkeTRT2OIo84iLBaPlfHGA+cIExsdwqn88xvfKw/GL9xTjwBO5xys8aPamg55HoCRRqLKpaOgpf9gSZfmob/0SmUPAflOiuPe2DT69FtB/RKm1pXPKrxX2nN5M5E6B1JW/vyVWOiqQW8Kgwxtu27KcthDUmtUPvq+2+OVYblMu2qM01BJYXiOm2JLEK+SHBot3eXb2n+O2maJ3RM2t2ofBYnOvlqrkVZ+Fh4iBpolHleI6HgsPTKjDwINygOkhz4tTjjUoyYecw9OwfkxmWZiB0zOcY1k46iVWgN3PRtct6dJSoPSUZRGHIlQNgoP5iw6gqjQKzw924mjX8BrMFRvqU/btHrAim7uACylnqxarIyzi3H3/G/jGfVcA9P0umQez8ZB0UIbCMMgd/E2bUI9K97AEPUYgM0Vy4CPsQc+ufSVEK/mgfWxtMO5W55PHTbWz+KCbBzlUDIs5vJYlNKi2YwW6SyJWdG4H1G1frgAWZXCoH+462w5cegEGCTPBlfqwXoEaxpnydIqW+A2T5A5itPG5iktg9cuLL3reCjECBbD8BsX+cyzHY/FsBhiwQ2bgkjNa3kmHlXOG5nfHJLk3DCMCeQdla5p87JpotPC6zQGbfK7uamFbuxZfhTjt3XPnJOog4huxVefOQetpWRSb0e6pHGlSb0aHPfkd1hve7XEjptRlkQke6MGB7216oA/u6cGXHAhrPJwC7MR5Pa2uxCfWmAGXUJ01XL1tU4g+CnnjnwEV532ODwcri/Qy73/zBOkQlQKBkA5v/AL99TZN1gNnfT6ODBRLkn4c+GDD6cRt5iEbTjXRsrHbib7DOz4IhEEg3J1A6PXkMGWpNgFriiut2xtyxK7ZbpPB7/r5Bud1UO9tIkkcjNDiVe3Hm0zElZiwJxWLRXa700Q06aGObrmUgutmIS4nUsy1cqccx0nosWZ56NID6gEDLhxNz/jM5jhYIQLTeVtWiPfv8EqlmXrEawMXcRpRiYwmTPExU6pS83UpODGeoTKxl4IPJva5YragDW83A6Iqtzhm3xTjCEjrIYqp46hkw/qLL/kiAt/GN0cREvN8jdP5sK5f4G95hjJSoIR83yguI20C2RNlcd6IiAWTP0zZOmlecCocFZjlBwA2mo7L6ZIUgYUEFvJDs5C8nM9x7qg82l5/mjYdyg9B9QUaOtLCOLhck7LMbVfwFAJUGnQmbjQgdhBfyxmNyjzYyoOtvLZ68t1g9Wn1YCLOAiecWk2GTPUAHgSMeWKehzsGE3Pq0n05B5uR52HTRs0GnsGUC3OYJTgftoYl/0FitK0nQs3L3VU35vjZHRtG0loSbxu0TDndZe7yO9LwW/2dssHFCDdR7Zp6nEPVI1wKn8s2Qf+WfFdVZFF7CbwelkkzVI2mD9OkZM02yejVy4atB1tj+tAkcFg6fEQO3n1uzv40qpZF0lF+sTYVBu0uaHc70e5Ms9yAxrjKXtbmZU5D1pacy2362aPBx7TJBFwNuLojS4xl/9jG6mEZJvZtjrAsBj/acXVD+W3TK1srbX1+pS6276yVMofkNPN12WpM+6m2fhG0ih9Eq7AEfzeUeWBQhIlN6HyebJR5oZAjTaeDZOjM16th0zEFf4MgogQR5QgPi8yquFwQiB5vB02uIacwmw06hwUH/ZDy5Xg8o2XroBYqf130lT+lUzBOBW5yYG5ikPC2775BW9udmujtIl2GG39FYbQCZ9mGldHU0M1Kox2CLr1hIZarjAN7sw35+iDCB6L744rwRNTPPT6ZaeU1Q3ULRopWuSxbzvYgSAWc3jFO+wWY0QoVaCP5BcmRpvgiUrJ+ZklPDZcug/rB5Ztqzh1pQdx5Uo/8u/ScO75r2PRNR5433gTmbRLwNXCreswGacQ70/p1zKf5Sv2YjXKXe5IaqXTMpyjeLB3zVAx82xW3Bs+hUtBHnB7ZmsGUuvS/esCxpD6TtRwGrUbpO+v1h3xXW+/u8UiT7ioWcJqH5hsd5fGfb7xKXkCZHxtldowYXBiec0E/P91Mys3U8JNpQ9bVHcdlrdOz6vb0N8YMmiAwPTZaw2fUibdgYT4btKKde97VvHoNtUOaKfklLjBbktRX1fTApbPiwZO1D46DNuQcCzuqiOuwbvsGiW9hSpOKOlJJeXLC2lSk98C1fmULf7xVdmJ/rnH/fFug0M1S6z2CnkvKlpvw0xmMs2xG8ZDwX8+jNYOmkfHdHxgUyXr3P37+Q4xn+c8RXWY0xcI4vZ9ZRguSxAyndSSxK8TSP639zCpPaBGSDAQD9RvOltu0lxkJtBqYNij/IW48MbT1l1Eqm5J00Y8QtBIwe79HT124p+WKjTPigXDhyIg3rIgxuGs8hJ8MnRLBDCMJcfUhAuatxtXf1F87FCrJa/dBdPevumxUI3ZPBfTI08K6UJf0T7RbMxI9thpl/d5vv7VsVTtcCFVBdxvMDWH3QSoKYfch7D5oMAFXQ9h9CLsPYfdB6TiqsPtemWCv0nQV75+HIMHAnkOQ4EGCBAdF+byOTsxDkEsgBL/HIJdBEVBZz7bAP5pVaobvtO9Fh4h+Xp6LCW8bgiArJ+1Dzu+qheU6TJJf1g8bOU74euHYQ0kCQQoEaeeSSZ9FWmG7l6vO9EloN0RKTdTvYib7v3plmleVOQOYjxv124xHL/CK8cWKqFs+M1bIN/9etakfpJY4LW3zIgepxAVkrc3WBHlYRhL7PGi7xLjPKXn2bae/Dz37+7yqtjwRMo+YyLKBnnyEbPwWqG2gtvugtl0aypC2l7bUcrDg1x3LiqZrSauz24YZrKE/rjX0xjshB+g71QQPIGjfh4YnQzN4LPgDBOYV/AGCP0DwBwi4GvwBgj9A8AcIEvDb9wdokCchC7/XmQ3eby06K59f0xEgHP8HbhyO/4c7/vdguMTPF+B45cJvHf2HA/+A+uHAvxPlNLa8AOd0gIx52B+O+MMRfyBB4Yg/HPH/SEf8btahqP4LOIc6M6/O9sOJfiCugbju6kTfja0Cqr8JMQSSTQDtvdB2wN5sEzD6RJoNjz+HaldmwByvMCPF2hdWXlnvxLdaRBWx9AAZztUR79DZ8lYkJ9NkyNSFbyjTsQFTW0OSudlta2O9Cz3KgpH1tdLFehO+ypEmQhsKWn+WuKCqvUxVOyxFNKVwL1E0lcdQnTUIVCHL3qtKOxkIZdV3MgCroTwPhnS2jj5octJtEP93bhTY62Y0yUKXnLyN7eGQ4qJh2BhOYgzm7mDuDgJEMHcHc/exmbuh4xwVeHNlGcxnLo3ZMk7vo9yEuwTwod9YG9IP9UZlnu8SPrY11O9yfkFbDczmKLRVF5RuUXK45Gh9kmM++Tg/MUBp77XO91gk80XljcMBY6Aw4YBRbTQ8dswXAvNJjXGkF6RPSMrVLUBQFAUyys4UrUh+h6M6FZEZjWivrFjbLa0zFY4w6ABHc3p6R1GWRq7LFvJHQQpPSc68nPo792UcQNFmESGBqAWitiFRkyOvvfYxAeRjb2VajQb+EfIFVb9jMRmnjGzdCEwD8arZyleUpO8MTBir8tTth+ZL685l7Fgkib/fhi8ccACKxHDB1oFwBMKxM8IhIMpHN44Q04S8cwRSSGNppIw36KFLJWbuQ7g05L+u9a4ksyCPBbIa5LEgj/XEUAdBKWD071dQ0rJMZy1Ph5QhjFSPOMHFhtYpPda0SlXxzkOViq/DqoeaQfPEeLh5lOmAC7G784dXy7AvCMLf4OC/Wt9m/L4ICGFovuTINgaxfpOQEDX+ROgBJkZFKMdD+xPCHPbpxc5JaqFO1rr0ABTxD8zJlCSkWI/SlG9AhJc4LTbKF1i/ZkinciDQMgXbGV/U4Ta1sT4VlOnNtqe5a/SFnWA0Ea5sBSvxlght4kQbmDSw/tgg2oCi7mf3bS+M/0rZI2ZjLv9y4WcTmvUkbjjJ1R1WJBtv+EtO06EJV0YTEm11qIOShD7heMIHbQJEplAu7xwp2W/Lu5fo+QLcCHB8ui78GRE/8RHeznOc+fN1fdww34y1AI6vak/VmJgxDfOlwxr3+EsSIecfn4HPwpMKXI0pHxnhbeJ1W7utEC6g2fGhmYkJG6uH/TAqNEeRLfJSO+X2Ko9iuIyEtjjHkQTyVMmsQvhesDuF8L1Xhe853CQNmDLzKgdAD4D+wwJ6jKdCG7zJg1HuVTUVgv9uoBM7pxMhvX8Aqp0DlU3ynecEJCkwO1uQLN8scxQMP4nEeOuUQD/h4Hlm9pz833vKcpQpY6xY6u32wyAAe52fKL4yFpMcMB1VUHAD6f0B89PkLun/RG7nb8eSH6Z5NiRYx6C6QMW9As/qT9GxrcXbpvdtKh/UqUB+d69OdWbvcFMgaJ6g6UaCcAHjrBNndePB5d8pijcsWHl0Amo43wj0J4h/h0hPmGuP+q5g7YJm9kI8kQwfIAr7SJIWwvKusMh0dFTysWI1xi4PmzdZMbq3zN5CurnAEA7NEPwxTR10ty8JnYNm9cRwtImJ9J4R3t84PpP+WZu50Kh7TpRT19GkHn9bInFI8x3IZiCbb0OOPkb7qaa0xyMiHj5RcpASA7n73Zkt3YgPo84Qo2WONxLjIj3WlN4qPO2X3Tr9uPdBBaMFSWKGU7fgJObVJTZFJeM3F1dpjJ+HDI8NglOgJG9TcIK1LrnSymnJFdf/GAfpm0EjzWucPxaZTALuoEJYU9TajnA3qWSogh6I1gHyCznJSgv2LHzvkfglIopKelwK2qyQnhhoBYXxlqMXh4JsE8hEkG1eL9vkC/rEMYhEqPBkPx2kYqqkQcOGzGgyGESKQCveCq1oYnNP3TKFZjJjPs6sW/vz5ePshFR32NnycXac/vjHIjNs5KIS06IJXnZuVzlZHB+6QKHc38ZqDpw4F2dbuur2UuiOQ+ytdmajxROGTJokKMv5BD9iFG8mvkfVPScLeZNl2TTqJh5PnftqVrbREsg0SaEamq74OMpzXAx53lslJx1qAmaC1KHmgJ8zfgOOPx5BskcB7EcxFa2IHr+eDCIiX7fnSy5HeGT8AcLh6wSrA1oNO8vKWhTInf15+6TGbWRypLpsQbmjmmUNfi8CujZQdIfPqN2C5tEKFYiN+Sdlm3AoJIaL8myZxZxkx/CesHIaO/Hd6oSnlAvuXE7fvrDo4Tm0uTU+hyyVYHwwq9sKM44m96DYDTmPJXr+QnIyTQZdDVD8bvmKzBL6NGygsZrE2bD5kCHzZtauAT+05Ksn1SH40nSCsmBKDuahN2dKhl39wFBMcFocy9n0oOJlQ8Bp+7PXksfRyRuKu7fN1g2268rKafDDNs1vMCpHhHSTg7SF35q0OxwVFfkMRDMQzd0UDWmQNVe52VOUppvZ66ZypGUtxxziSbMaantNSTqj9ueVIv+51faEWNosExbDORM7QGzj4KaqJV8ONMdDB1Z6xM5AiwItOmYBTn2xV5c9lA7ZKLx2FD6OFZF+fwyGS5Nl7IlR+E2YBpH1lLQLNC/QvN2ldbSpUpsWdddp7MVj4fygJ7qJ34Mea8pwQfAISBgEjxcLHiUTyzhsYMWPo4cdowClKeSgclMQXQLVPKToYtG1NjXbvxS/lWxUoag45YclOScoofONTvlh+Eksx1upAoNNCHZmRthyFCS0QGvepoQWoTTCSQDgAMBvVcXAfGdLkUBsUNumYgUDy+YaoQefxpLGKDmesDMprDQZ9rAZKF9kh21JHIFMBzK9EzLdlAQCYAXA2lH5JotDt9lAk3U6atFbPK1NMDWz6YmK9HABGHZPosUEPxebqMSMjz0pYLCpD7NyN3lCI0iD6o5MUPNrc3Id0NZeGcQeO/3Q2pA3pUlsAQEpUEIiq6lMY8wSktrAB1WWrQY+4lGBDvwMtCXQlp3SliZ6A34MWhaiMSFBEgYVMjVRCqQokKJAio6MFDmpBbR+xdMvBD9tIotwsnGygrGmKFLuMDC8JkaulHUpYN7HYnmg9y12Gx7c+S6UZxzsdxuG1vlCDqo0SS5SNE1wvDvTSec7hSQ838bwC2h2WhaFF6Np5kI6PhcA04cFyQvK1g/FAqcPGZQMEKdZSUKfcHzLyJykW6Z74JiGGUewa07Wc9+J24N6v43265w/9mHK6FOuz9UixNfhBriHOz8EnqEyaRKohCKbT9HZDBDjAXM8f5C93wT4QiKHV3KMks91NHf7rPPN4kRvQu/xjJPehQd0FvSJv2TOR+SniLkHwaT5Iyc+Po8Zo2ziNWGRFL7rL/k5jUoorzAuECs2GnmR+rJmr2lZ+PY3bzANHM/xQ0Ef4K/yy1inEZ9FUcI3j7IMc+bNtUqP5xnAYw4QdcfwSpHi9rA512xLhjeQpDjDArQeJYn7Sar/jqTR4h+ULjtHwabIUoS2DNMeCXUw+OAbnJad4z5zmDpnaN79WpR95OQ3acSutweOBSE7FTWbNxhYJSfKOwefowKd4wJHvpG/9RkiljgmmxxtweZfCc52x6FOyBVuKFF5Hjtg6JKjo6KG/kF3JAIwukrVj46hI8J8b+z9fP6Vy6w4xTPK8IVBNN2vm3EKUHDcO7XofffK4Zp3tR8I6zhnHCjiM79aQdLC32s8Ic+/oI5H+Lp714hAys4IZ4XI3WlyFff23wvaf5ueMeQjt4oXbOD7vYDYuDQFvF6RYu2lzYL23op4PQ/sMRxBtN26Y9AG4IJnmGudm9TSYnNcvISt9bJ3set8EmN32GLvRyQ0QonI9XHKwcbDrGK6HHOiwsXsiy4ALhaExXecj63PKH3kr+kcnS8Qg0JE/SO5aHKOp+Wciz7zzoFTRjg7G+Oo1M5FPU5x6HnE5mPxndc4nVvRqlZgJx92zoHe238jT6RO1wV2ezwxVOBrro8UN+j5jFOqnlFfuRhKn5zeU71bCmWauJxwSRKOofdl4pST+EOyDDhQfE6XaHuZMuPCMGYoAaYDsIG7duQTWuI8k9L4VonKuLDCH3VJ2RNiOqOAQxQjMxytowRfQKEXDzEShEsqqxMuGixxwda+kQAs5zgn83RCH3HqI2/JnHI4WyxJdI4YH+ed4ILE+CPlsnQ85l9bpzhzvHvJVzX3HgQICpjQHLcYjjHoEeNslHifkZFUzqVzHiZ1H+VjwaFzHy0ViuDHosjOQDnwnWFwUnuKupgbLNNX8jyK802W8ZLSwjf9nKMj3+hTAX2eh1UPGsUoU09qS862jkaeGxaVHP/pT0p1sSbnEyh/250vSLfaijI0JQmBh99XJpR9p6XsmNIrkhNYT93KuFt6EwSYVpk2HPqzTzVsHm1LR9NE4TnMmwc7QrAjBDtCsCMEO0KwIwQ7QrAjBDtCsCMEO0KwIwQ7QrAj7MKO4DMAbMwP4BXXXIe84iM28bNI+NgTeJzlaMFnq/GtNj340zPvx/csT2gxfJIuZ1pU7XDrTYo6eBp857SrWXWlc10pt7Ojmnk1q46ZFwxxzDkWqA1pcYNL3hutHiui9inrzSuS0qZ36gKvGE2bbdEj+MgeKp3juF2paJgSKINPRMyikreGXo7BJ6J5yMATOaJ8z4aY18UmX1g5xJQk2mYog1l3vTukRw7Mc8dVjE32thumZpN7L5b4R9gE0vsA/4gWbXMlfR4nZMMibbkcaaqEknrt3mH8ZfqA6Oqq9rIk6cBFVoat1oizUGE6kPDfvf6zjerz/h1eKbeBR7w26A9OIyoJ0LuYlpDWVUzdC+CHSs1SZnxlvuyULr9gFjUpHlTVSQetuxnjqTjOHzYhqPIEiI8mP82g2k0lsbRP7EjqO8nzFNbFWaiJHrjbgeq3NCDKQFyb4rfA0SLFTs8P9/m+RbxaTzWpSutAS+gV2tcK3KkYTTbSMPQ9J5G6yTp/GjrNl1/bOQgZfZnOIx/RbbMVmuuU2geZUCyIHsA+C85J2VU8qBEwaCaBdr/Jk5lN1BPT0eAo5PIjkEjBmyXGBWZc6kMFDrKxxWBb4NCUmk3PIsVftucqBuF3FEAMMnSgwzumw92ScJdE6yAXTqF3pLyQK+/8jZLOq5tOSHXX/mzshxE6j4LNHAuFH77K/NCGMNZywArmp+3U9F7y01Hs2KviM49zsiwGS4uCLseC2G9SEVYMP5HMwSRfyvP8OPzvYBGVN/jG0bOGj/2+peKjqFsJ/uQfGJpOMRt0HjQ9VzJE0MqDNPjW/CXVUg6p5DpFt2peXeKbPWhAwQHHTaOcK28qcB47/6lyYTPbKt+y/Vs0hy4HwTcQMHDZYrvtxaMq1tHKO5vKDLP7L/BXFlTR+GGPSJNjqjE4qHxqSGtdMpohR20uPfWWwG1IHo6oYFMkCIJAEAR2IghYrNoRG9lkhu20HopL7Yg3eQs8NOj69tS8RXBbZNZnAhYqoQ5g7NMFlzDO1AFRyokROw4VsCJQry1dQXwpV3xGdBI1kAm2qd5ELx3wt3wTu9pbcqTbshkqxgaKus/s8AJrJVYMWa7CqQ2JPe7ShPJ2uJYjvxX/kpg+NaIBZBYhe7nFCj6ojd27fF1/XaiNdwzCdc0Gu5hfk/0EthTYUmBLA7MlzQZ2Svwt+rxFnTeY0YRfFSTbRBwv1NBjlch1eaVBI6KP3cpZQNbP96/QLE1I5GrgIQLvGZnPm4dIji9D9pclNJ0/AF3Kh5h0OHUKPOitnjq9OVHXW1jPnz/Ab2vbD4U0iNgOSFcwYAeasnO5Fm68oxkYfzcRBzM19FjFwaNyGPpBRbPgnRBkxUDXf98eSsEwu6W0uqFvxKEl1FcfXwehNBCv3ROvbvPl2WIz22W0aBguBw8C3ySeGuU5yYuGG0ZWNla5nEMpFNLIIjYTKdoPIAMqUnOljn8c37Ojg6BDfMVohQrEPrNBQYPhJV2hof33Q47hQNTfpkRK03vAoJCGIQDv2wNembvm6CwqelqdTk7mmCHPQRPM2fjAeSEKqO5yZIUlYEpdG3gUCTXqWYZAiq5cGv6EGbtSGxqS/a7leZfI3Y4tNmVhVyRHyOAduPsuubspPAagCkC1G5HREOpcFcVsuantrGAINI7SiFrS2DIVjcVoXXE6YFzLrwTn2NDElp9IRtPKO5Pvv9D47jLS5L0paQb3hhdgv6BJjIetepKO4jio2YFm7lnNBgB9Uc5CAzKCVSiA64+bnNOAqZCovZUpa8vawDaPbyO+zXwdB+GKKwbiEohLUEoDUB0nUG2Qer+KnezPuK9ZVa34Laoa4EOpJ7OqjPdQM+BKcRIzz0FAixP53cH2NM9qeiI1ZI6LIDPYkNuCllmzMnzdZe71i3a42gEnNp6TPEooXxT8ARJeb4KVcXXLiUiSbaHn4OGKg5cxB8vac8ZvOLrTVj2tLkOUNWZIEueKszhKCkfTCZ3Pk2ABCPJUCMl8MXN8YcFmk9K26WuTmLWZa01lXkRbTNwPGB8wflcBk9fgn4Hjsxo8+4SyRN5xoiH6eLzSnaKInJItg8AOk5Q3/9ZZzWywOesu75yPKDb0TdbtcdLlDvpbYcrGCGKrKgNndiFvO7bBkXzu0CpCQllw5zMg+WDZ06q9d2Cu2hSX68dEu9z1JoUSA+1CHUm5TI/Q4QPAgD7tJGdrhJNkqzOlhogh7z+6NJawPF0mh6o/oLIF55tDtwbA4wY7c59d1OEDKucbUYe5GBiqkO0i/ylJhyxtoKqX/z4rK7xMMdokwhfKWKLEDt3nD0CHCNwdtJqbO0CFz6iT//DxO+Hfq91WOf9tQEYO70458R083knvXZANXg5fisi37lLUd+MyC13RQT0kp7PKX/6GUM7ECofzuwGuLhHnHhWKOPXJOEyOfOtCzsAMnm8HZqjK8j1g1oO6YHQ4IwwnBj+WlzBRp2EDG+TevEX1KDTCdjXoNurkdlqwZbx3veJNSGE+earBhVzxxjV7CEwhMIWdMAWfJX5/pwLdIrcmLBuSExUritiGYaIwsB0gOjQ1fUGY6kEqer8wTLVtfPpdHfm9f7fAZL4ohlRpcswI3om5qudgfsv6qT3RTX5qpGGqvZEFo4/42AxjRxeE5l3yl+yidzP8+1ejRBsRKlgNENrw8QLXe5qWxcYcLobRDj6XJyQ6CD1w7rD3uP/YDqHlMnXmGatHHJX6dVj2UixI9JjifNCK5xGkhGaTQcM4nFBkTqzLEVAMGw8didLxCdXcOt0Zg38VbtDYN0FZLULm1cNab7RQvz0fGyfb7LMF89v5hl3jOZZstteTU440meDOymb7d8ovHvjdWJeIPeI3wR57Sw0fRbVeysVJw3zzu6dLryzGezTA3l1qtLHrLuJxjgq0sXNpzAfvyMPUs7DipGSrwnEoIXN3trUnn3o1sHvIrpxePRWhX+KUGNxetzZnkRh/9CdUOFxy3gIlW9WpOhDUDJBMGVaiC2yMEUP6jaLnex8BOJCS+B1PGQqZJbZzGj9uhvU6P/bDcZIOT/YmTXUlSNXE7khInE1RHHJdheotBK9w0Jlb5J5Eiy1CWBkf7oxfjWlULnnjX3KaDk34zLkcl2GntUoeBkLTa5I+Bk+04HTw5qqY8Lck4gtDhLWJDi762M7a3SBcjvySmi4EahCowU6ogYmvPXH8hqxwwR9J2bYSwwmWt5mCQ4qW+BiEhSC0HFV++YIj+2a2q99CYEAgwD+IOLbrQICYsGLtTRdeZglF8RizFYkGpcEzkiSjFSLJ4KVPlyT9OLj74JsRofcrMmvJwCsmv1yO7svjXnGfDp4TAgICM9g5M2iR5HYa4iatbFNIi4i1SNcWAv8Nl9fRpbRd9Uv6Sxh9Ik1dLS//fYrXDhJ6ENZ26GwVPccbVqSvvQDfXvfW7T2evaS5H8B9Hg+bf6zWVSf4udgYeoWeCkm6HBBM4sHjU4ZWT4dNw3JMdc+CMhj4/xu1zdN0XE6XpAjAG4D3TadBB448rFdn7Pe89Mo+fl/O/rpiQdcM6Lrz0mI1NwhAFYBqF4nx21Qa2r5Qrpd9osVGrt8rGHySwmhTB3tCKzyjbPlG4vT1dLu8fKwxQx49lkwA501+XJnL6nl1rWJj1JAqKs3JMa5jPa+udWyMGjK+ltPKI4vIFFPqjEyuBgyJyDghK8zWR+b0qGbVicTmmEHNO3ecIwX9OMhGb9C4c4fKPBgmA+y+ScMkxsHfPYDuWwTdey75hUOhAMBvF4BxwYLMG2D37cEu46T3CDN3qpkdlxWI9Vgw2BEYMAYtTMMfzqH9jJbpgN6/RxSyZlrcN8eqplG77ZxrWZtba9s257Y5jGVnbT2hbch0JIVU6Onu8c/dMLB5O/1JcirjUmCvgb3u6Ay3MvoEmAowtSu/AGWMCSAVQGpHIGUbSQJgBcDaFWBp40WAqQBTO4GpyqiwudLDbHWi1kVYlzbhLbhoqqHNl4m4LMT+WeKNvKmWaqjpSqVL0f+O/Y2EprdO8O+4UMoRWRo0QG5rK6i2cLs01hOyxFD4dBP8KfRYE4E4KdxVgRd/9r68K003TOugdaNimjqjTY8upavamy5LpzkkoJ8FzgGI3UDcABkXVbnjZASyIzGabEJYMt4p8iLBeDvH9aAGaE47S8b4916lMR60MHAItQxi/g8RrTZw3mG3ItHG89aAEHUW0G7XAUJw41c++eSORKoURR+nfILhJ5kcb3JKmsFr9lnhwB+xmQt8dEsvS/41n1lyWNGG5JAQJvaIN42oLP1l345Neldb2hlpgRO+gzi+io8sRKSeV0fBriDUBOr6NoWaVnJBC+DdGQZNdA6atsWxAp/aLZ+yuEJIoBCI7QEOH23q5jIKnYEdenNRV5itXaJuVdLteOQdMwGbp4hFEHUC9v0Qoo5GA7eUI3nsludB5v0/dOK+I0hfeEQSoL82ZxBRApHcPZE0SNPmBKmnFnaXwHNbZFdpVm5UTIwW2QkRg01RJ8Hp3EMsDnTwtK2wpV94GLHqKNLBBtkukK0D18TYtxTHQZouswQXAagDUP8oQJ3jqGT4WCvwbrEKWwnZtQjREhz88nd37tYgnQeKsIfoBZPlBLAKYLUbRlMRfWfJ50s03UQ7m6GpXQQjahYm3PXZ0NstxPJes+cgOQaEPiJTtytnSk6+Yw8eGwszLxPE7C/hRCKxWvgITj92jrr7TAKyR9Pw1iUE9nTC7jfe1TQqUKZAmXZDmRQx2QEJ8URDqoDHbLNgx8w2JfNNKMp4b4mYXHIHTeeHfud3SpcHfN0SsUfMduJ2a25Qa87WUrZ7vWTO4yPljbbdDyFuoFT1peZ37dH9dqOzBrWTXacN5pDDSdOLvdbgdbyQwwZmQPZW+zOWubLE0dJjbg6I9JYQSexjZ3I9GHBD417JuyCJzfXl4IJEuxe08wV9+pxjdk0j5NVe9wT5M5okA76dFBMKwZrYo2rs6b1cQBm30w60oSAv+GMQi21IQAVOEk4QrNbFesr4XHYOHDTlQtdEyl3BpBEUh2M2aQCsgpgSwDWA65sA13s8J8GFJkDsW4HYWr49nA4YoSVXyQ780nyBMrzPiGL5QhfsiSxDJhhkNFnPqQ0sEWFRogxmGeWKWB50xr3pjAzFpMxvPKmnGH10O5LMSOKJxRP3fOWwt3CnkRtUh5Wg3xl5XY84HEbSdAyvDaJdYJRvgFGC+WZMSxZtJdaVLJngJV8uT1J6VPCf07Jxelf3L9HzP9QZwHZE5cc4SX0FI/vuXjbrkCNw171w18bJQmvu9RlAa4Ea1vq2za6yq4e9249kZJqzX2DEdhie25voNhE7xjWMue0Rptl1Z8ZW00AahJEgjOzII9iyZAa4CnC1szz5tskxgFYArd2kyzdtg+1E3JYVr20pqOxtwcoWrGzHYWWzrFyOQDDTHhWoaKCiO6GituHoSM1Fwhf3C4kx3cQbdyUGmv64JdtdSE6n0TijeYHZYd6FyoJmqq7jbvyIuo/FZMr4/ECvSyjNDvSqJZcj4gO9a8cOpt0Akmcci++Bjh3iha+ww77cBFt60kjWiNimUgbetPfZBPN2r4ZKh6lHA1G7q8Og2NgiV82lu3j2heCnjUo7xDNO/PjYQWjfIUEbDHlG3YtDEaW8QKy4Q3N8mK+EQwJIWnqgr0Ng9uRCJjvMC4+KXnTgqAvWHEtigobzuEfvZPtee+GdsdM3OCYIqjhvls9zCcNPMjnepAY5zvNKNTjQSXqlsB7ctQWVMSespswsZUNbD48jlDeEdyTuAzXcy2AYhWexzk6PBrYkSzwRjW41EqOl7nZ9U9H4AEbnDLZ11TgzSGxNI0agtMiIN19lJA7DJHer8iiZlkvfTU+UPfoyOutaamPMZxK7C6ol3hO1iCu9xasORL02C2/tKEDlrtl2fnC/og9V5yaMY/Ah83EnKJ2XNnnaBIN0HS0blCKk8olbjXqnOvGG5Od4hsqkeEk9rKFdlcTmdHoqAejstYCVVyqhOWlg2YFe3zSXdMWXkLRlB42aJ6ARXXL2ZhPkJUmJTdxIHIOBZNfRJ24tt/0h05IkfKNbk+TM2P6YMi/o0mpKoRjczifutga0J57iFbaDo2naMFM9LXD6heRkmuxxnuIFJCHFerLgALSgSXzIUOLdqvybhGc3zRmOraEN1GheiyD2XW8I2BuVudGc328tevjylwKRIFFRMnyV3skf+3wXmFTnjJZpDAKzMLDu8W2cmWMG7OgA78rUO+51peiNJWrD0LrbaEr2xOn3+JFkh2c8sBLDvR3Uwr+VuDxo3Da89MyQiA/5Xi6yppxQkOygkasHj8jfh9V0M7mDC1GbRGrPiC0biQPJnbMFaUD9zA6ayyzLMOJQFm0ZmxbxlTvThbe3OF22mcVLn8BpIH7dE3JBvBBbv/QB2gTw4kUoZzPM8Is/QEnNY29SHpdM70rUY6TliShLMetwn2yJS+0sP2AGK5euN5j2E4U/B3RZ589KaJFvA+X1gcYfGOYL8e5//PyHGM/yn2Fp+UqkhRQzkdZZu4Zhxmjvs0xVqGsc5QqFUjy6hglb3GmFbX3Da7H0drPn42VW9Aw66A6D5xuK1yF4KLhtHH9c+J3PjyBAaoDU44JUVOYhdUEA1TcAqhdpHAA1AOobAFStDgRQDaB65OxfWToCtAZoPX5ovayMGCHlVoDatwK1V3wnArwGeH0b8CqcZ89wkojDhAOeTPItA3P7IV9Z+5/9+GVKLE/lththw78heBIHT+LgSRw8iXfoSWy58joixN1Ot62B/Zx9L06x5untntxXTZfT3Tia9jiHtpOl+YPutMPla9wsLddItxOjz93Q7RjocuHb3HHP7WzXWhSPW5wzrqlyYHPILQ1XM/cI2ylsh7GPLZeobRyhLOelNpex3IyCc1FwLjoG5yLtEBTcgAZ3AzJcd4LNI9g8dpQI7c7OORBAKoDUq0FKO8MEmAowtSOYUl4rAaICRO0KorSYGWAqwNSuOJ/hBxLAKoDVjsDK5bARwCuA147Ay/asCIAVAGsngNVygWjb4Q1nhXan5VbQBBSY1jUt+Bs3STyWyJFWyjF/WaKd5yA8YNbQA6dfzTOM48OkHTxcIsdBUgDmzWzHxtG2N71nd9LQanNay+Q9/xJ4da+cFfqwisG4oXAKsWJK4Tz6IG/LOc3GNyhawJH4j5hH+feLXSYguVxlrH3fMm1vN57d0LRYnHHuCwehG+XPhBtOIn2HiXpr7HEz3EFiED6HlexFRbTgvzbKSgcz6kpKJz7muKYsptSZSA8nHLpwfK5yze/D2fFlUzdntukX7NNls/crwHEOR1S6zu0kD2vsKwAQ0+KMlqnb30N0JpRN6CN21wfgsjUkyfVIqVMUO53O9pgU8mUQYqx2F4A0hw0IHzPC8uIrxo+xhw0eglDIGicCa7xYH3TloCsPFHvQAb9m8IwUNUL0TIDgtwnB4NQ5in9FkXC95LC8vzyDm3CESrYdkDvWwuqQkyDpoLKwLN90DFPwJU47kIwi5XoClL4/V2POF6VRkpgJ1vC6fI2bzxPHYwhUOF41qpreJrqUPXhAONQTukiPWENVk9tkYc2hAy6rlv/vg/gUxKc3KD7tLlrW9bKt7LDaTNmOmdLWwDbbbNjc2rjvMGm1jTi2ren3YWFy2HIchWNtI0tr+k3rRyB5geTtyPGkYZUIkBUgazfM1GktaFNWU41vJzEw9WtHioPUy5AMjdTZZ4fUNTmdocNtrbm5lCsvv2ypLd6Rhj7RN6arULgtRAdsD9i+A2wXJ+kTssQfmMwZ0XeIXvCxJ3MmhN36/Hy5gdkEJCRz9v/RbHjiYtQBbCgo5T3s+DT8el5dyn1j1IB6PV5xHNlnCdCOFCwq7Yg/P4uzB6exJ3dNcu4vHd2pe5CoQSIAoLeIhXdFx39TnjNl7mEFE5QFFhBYwM4EPvxcMPQ6YODLJXzEnPB2dM4cknR1kVljxJAWaSBlH/nCDnk2wqnm0FM4FlcW0Iw+0adrnxvroQ5QtTZwAVAaTOqBKbxBnxqhyQafmgDBbxSChYQwwUu+Fk1NsiuV0T4mBWmm3hlC2BEqZZ1q1NHJh9VCdomI9qAhFXG+dHAANqhIwjE2uyFp6athfDBnYyETBb4S+MqblYzOGA6u8gF43yLwLukKj8TVtU41PRRX5JtKvh/HZI7Ig2jpPRvd4njGPkFpm9NbRxRtS3x1dhBODMKJQeAi4cRgW43QNtC7UVqbrVsqiGHSbvX1evQ1jMBtAtCyzga0C2i3I5+/htU0QFaArN0Q9KY1s8uGadkZfwDrYsuS15YDDRObw7Bm274cPuANo1RA24C2O2IItbEoAFUAqp0AlcOI04IYp3XFlWVwNIdsS5t4liI50nQrDS6GwWAQaEowGAQXw/2d20aMJsmEHmHEuzGzznD35rhBHTZJ9Lj+iFGsCuwNdh4vSmZNONodQ+h/8FMMnCV4ee3IyyvGeYQrajkQgTmiI81wlhhUg0DAg2qwv7PEhojcOaDjRLIhGrax3ZLZvCHg4VgxYOCAhz+2+NHcF2n0W9KYcDVOwnkGL/cIKx7Y5c9qvKA+TOHEgiTeTqvUg1E+nRZQ8t5Zgb17bRp66g7FHKuU+DarU/gPusz9l8O+DfqBsiT3Pd/Nss8tfK/zeOJdiyEnsFGBiL3OYEaS5AY9f/WuhMGI9jqRZdckDgUPg29Hgta0LM45skaax3Qlz0gKu+w9K+y69QmFuhbSPXOv86azWY6Lvw+5dHIKvww6Ba0FBYNWkMZ2LI3ZNqjdQ+45LacJDvAb4Pctwi+K+KNyMuU6QLHeJK5jv2IdiWOcDipOySlscPC1Z4Z4TdP5na7eHMhKICtvjC2OssxXBC4AbwDeYwbegsPrVvHC4ljplcCZZyiyzXCbPsSwvbHKMvTyZ/AWOmcoW6xf8BxfwUvyHTu1yidfSUqu0dsBQUZEEVqSZO2uTYuLArNxaynNJTIATkyrmoR65bfe840l4i8hyO3JuUK8Ky08ad/TnItZngS/GnPbR6doeipI6cDm1XyBYvr0g5pWa9vxB8CiLR1s3vSHDi3s1jMSlQmOZzpXSzTHw6sCNxjxR27FkaR93Ht4Kuz3vmL2g0KnPfGh1txan6EmoQ76JjQ7kpmcilO/oSczfwF5lhNyHgRwlo8aZwH8+Zy5K88dmr3CF6rwuhqhol882YhbvMBHqikFiW8cliktUf4YNvQH2tApZTHeSv2vzpRbAr9Qrw4rgzXukXPTMxl2ZSloN8V6yOM6lGeidgZfgUGnsbWJ6Q2J6aaS+QN+nqEmDyVIGNr4UFOolf7BRDs4YrjEOBYmvSGPflBWkGh3M2i8U+bZIoBVZzQtuPw4VjapwU6aCoYAAH0A4HPP55NnbtngmXjMTqZXTL/h6SDEJSZcyEkjfHQ+hAyvMEpu07FwQh4UQODMI0nQ86A8VuJMt1Hs8BhzFQ9KtnG+OIoF4RrODBcFGXQS0hN/2CkIZOW0Yu49MT/UVFacdlI24mgzJIQKLnGOE7S+GdRRWIgXN3RbJveGBNn8iWT4XJ2Rbn3aHU7Fw6n4zk7Fu+Q850MHRh2+N8KOgOMywnEHlTgcG0GetP8HIpeM1qA61By+X6UxHlTmnCa95bH27AJYTHC+UQ2IPdtQn8dbH7k3jaVGjqmmc0i9nM/O1nW/RVu+rXr2sPTE8mW9p0l/CVVVkX5l0/YCQkbNhoWKnzPbCJwN2+S/LApqE/qEpDZHKOi8WTGZz4+TfvrcOrKg9p1o2rxOuA5t85X411LBrcVcMGLRovWJMjGMNRW6nNLmVFpvgQbg0lbjEqdlq6E1Cs5h6LyHF2ZKjJ82jnHycrlEzE6iriLrzSY4us8aLSRuNUQ4SRpcfi6SVHw7KJh+JMMaQRuTGd79WqLaNV55PNEPZfcw1+WLeMWx7NKEIbJpFj9HzXZVIb0pzQLVsBvLLEYFzh9mQPC5EJ3YqMdl4nX+kIto2wZKsiJ/WGKO7Eqc3W8gJo3K/NZ72niocFCYxQdBeoZEH5Jy5ouSS5jNoBNBacohI9rKaSmjHLxxqiw4DlVN9NvcI8/h/pUK1Sx8yR74j/lcQkj7uTR9iGQuYfPRvFUdMFpMnhY2J01pihWYDyn6LKdgjNze0qIdKdrHAiT9gLIbt7y4RM++zlesg1hEsswok+Tt/+jEpj8vFgKtIpQhQQOJHA9nHmr0f76DYx2wAmKQR+sLmd4DTvtmJMXWoJQy/nzyHbdHS9p3CsRNEn9Y5P/zRJ5/PrY5VfMBUQj3zugTWp2i6PGWaZPVe2hScdMrLC8ndCyNFupqggAO7/hszIFjzFYkwufwEUQ54qu2jxxcEzGmYBgtrbtEi/4m/iEkFirvJSIJODk62u5L8Sy5WuoN78DGGdEYj8spfyJck1zc+UUBVopWZA5LAofN4onmzxGX/qorcN4Hp79iIWfn2O2wujte3WplIU9x0buyuXCG4HhxSdlI3NHeo1c9qXoKVwnxz6tqlXqfd49zmqxwXC/sDRSF2nr1UZkUN5z3gVrJXzCbyU29BC1NjcKMUabGXAq9m1PLhOD4r3g9pYjF9T69E8bhHH8ql/x7o3cyqROfpzFUtajp5gta8jeJ488LeNGGW9veh7CCL1jBavUKsuwnNKMV/3jZvR4ntLgmj/CKM65NpzGqWAZk0FJd52h9rswdgpbwaymuip/8m/gP0XCbwQhAWREOXF/ecI60OMNi9vDOUYyyArN6gK7yIyQA/lBoi/Wz+Q8ZXix+5qe4eJI0MC7lnHSv0N9P1+fiQYvFcim2ZIyWWDYtYRo3iAsqz7DmfCL5hNaflteNFzKTofKnvJ3J+2F99bvgtygBA79lQrL3ojAblxDlDz1tF5yHnTrinap26YnEc9zPFsZSDp0gBqM5nSH4yWK+X8VzzqrcXbrFMehSRqhVl4wvSXV1j7lCnS84vydRPWYsQ9EkF4Z3Vxey3wF+P9KHVR8ljuPanySP6ewPO8cJp+4Mx5+41jMjkcYX81Kj1x2//Q4zkMmUKMX1o5jzhGtI9FMjRgQ+SQmn0KK9aqiuuO7MTlEswFBcVJMAfMCF7hPLB5KUTDYqGur3j6XV8r0wpZpP4NpSOgaHjnSeC/aCYtfXCINMXlgflJsfBNf1ZPjTxaA2CIXV3vNqVysdkzwDfb0XXc/VwHqVqlvb+7ezp9YydFn0P23EB9VPgisuwnHhS12MC0mezy8uR5+vJw+jz5OPD3f3F5dXfweOY4wAm3vOOdMNFsYDIVDxrUN5/kSFgJWTeXqVVj+kqqMub0v9C8dX6cWS81mXUvADfFAtWcNZES37if5FKlIqLyUEf7gffZqMH0ZnZxfjMeAnWvN3RVQQb35xLyEcvkVIzHcJSq/iXGiB5nNIrp4rheP1GcoXhMsVwvgqWuRPh0rwhiZeTZqg7GTjiY+Eif6e0xAAmixL8BXKzvTd7aZzzKlPzLVseFi7+26Bcuxov6eiLFq7Q0PgKQO2Wq+SvOa8ucwFpVKfLp7DL+EJdMk1nKhxVaMDb7xIyFydPsgGsVxKrDRaruDAT1zelSyCTzij2dpuuZTliKy2DyizG+7FMRDO1TiOjVxTwhVSytcXBWT41ZdKHTyTuphouuPCpBBgpGAr2vhKGD+rEUYbX8k5tq4pU/AG4CQ3ur6uvA7BPiP4gzDRyXUHeQsMoJxLyBd/Jc9VT5RwukBmHBoZfEUkSo85QEd22Dsl275S9qjA2JgocSw2nAipCV+k8qwHQoshWk58AFqKp+TCQEwgfQLgUtUmlj8XcxtzzSWvnyF7+DPiMirU+Db+B1QKqBRQ6aWoVFuhheE430ieUeAi5Bdxmy3gKEtv3ahXSd1XIUPj3qq9eT985D19EtI+3HKRrnDCRWwtIWmbd2Q9uN6sek5VW+NdDbbuMNKH5WksT7U0JXHpeby1sTLgjWOsBFxWpGKsnFTrft0ygUPQ98qX533tzdqlex7FjKrZTBl9yjE78agL71T/g+i3Z3gqu2wdwmisZmu0VTqpDPXuWqejmlk9K04R//Qn53xkTxvjOGFbESlwWy86FTdog7m8kpgif3/OxT1Cgl9XZ19/yQWngT+3+mj7mutehlGUzklafaJYnvdqdvplAl+k1DAr00jfSXJ7TgW1rzs2KyxLE1Ie11OA3oz0kuW/wshRRmqtrm7JMz4HXFtjOnfhMK+s2U6GsdMG8071+E8E+DMvSVKf6N7jiM5T8t1gHFVTTfUyjB4Nkide0niqbLSPgycQPhcxktUEtG4a47lSlpH9JFZNKRU8Joe3S2klE3/gFZ/A8UZfjBXl0FdiXKHeNMXwwZ3bF9bz1etpKl6uhYTmxire3V1fPIxH/L/7z9cXYG2R4nlFkLjIeirLSo5FdSCtOYEUq45XxbVYgyo14xkqwOeXy9SYYfnFZwmNHoVDzJIPhxo/UpgGMqJ0jkZXtb6q3bTqinDu53qIsvCuwRED0qXULeYLdBuoWZV5T7VphVFf6/4Lrgc6Psc2WV2SlOQLYw2qiX0AQ2DrS+vWauDHq5vR9eiX0cP44v7LxcPV6O7h/vbz5AK6aF6coSS5eIbIGW2Dh9arWFDtdbU30Ki0KIPFGK3qMAYefzaajK5vPzz89erT+VjqiXwrYWx1kWClmCjdVq7DVZqVjZZKb1UNfyViE+qGO6kUWW3jSIrCllYfEWVt563wWD1hlN2gLDPhENRdtYi1Mt70qIEm/mpTj4bLWokGvQ5a9H7fjP4Opt7bm9Hk6uxhNJlc3NxNxqrj/mJy/8vD+QXfqIcb0ShMvgoaq+vWttzdX51dffrwcHc9+vRQI9344eLT6PT64lxqw098j/mjZgSWSS2Y5Sem2hqmD9Wqd0Vfyi1RV2rtWg0GkKgOvSn6Ui2LuvycKsKWgIlBih38GcJROZ2PoseUPnG9dq4RowYf9Wuylk+vzBt65eoWyji5AScJd2vz6yuLh0Ik3VDRCt2Q17QMaPvk9p5vgHszVOcV3/yHu9EvNxefJu3eu/vb889nk5p81hYMY1lVC1dRsnxBBecByn5l2BMMwtDsU3aozyksbOoYUPMz6PA9sTW4nC4JWF7ozOZiknqZ9xvNtT+O0aiNJp/TmSCCODY68+rpXzCrzthaW/aVPAMNSIg+ia4vG7stu+qJWNeK6Mi22wxXzhSyRS1C87qCE9mqaQm/Eh8CvPKdSDuU4BuUojmO9ScjkxGKo03+xeWy1tUNumuZoZokUfa4MF71OHFDmbDstTOMAUKSbzImdU7aIDbQJPEzl1fu3QSPD/5JDplgUX/pJaPLDwmdCmspadLbpUUghR+HZUVTZCtTX2z8vKTMBCJ1dqufJGyG8uhN7U6+QAzHH93z9cuhQXYKslOQnYLsFGSnIDsF2SnITkF26pSd6sgosiQnfFddB3HvoPNBdNoylODD6YzCaTGH1RETPnnwU3nXw88K1COUwjX8KhmTe7aon0Bln1+0O84p1k5rWXZCYJxjdrzvQfQ1ZNAsu0hXhNFUYSdvUK/iv+4SVMwoWyrHP/6SL+rFAk4712royVQTYTjhzBKfRBK1XfNRQx70kKZjCYgz93KMMAWLX3A+Ul9VwK2vVdoB4EEQOm0YisV1fZSihaWKtyufU+0GOKHXEFAtTLni1s5l/+G/tvpSUWz1JJ66PlH0PcSc1MMRVdMneSpPv8SpFh/3txKLqd/JgtpfGRE8SDRzIh1r9xTRcJtVv5QbYMNQH3FaKKI0GSIpH1jKE/Z/ql8SUvn/Mp6H01fhifJPNQcxjLNdcbzG8JKKxSqzHPec9/7uV6NaiRlJsJNAyw77661jH7gAgcQESRTDaeX//JO6mEh5uZpLLoevKkr0JNarvT9HM6v6vAxYtPO4THR0zGgMA2oUb2y5vL3zpO6Qb67eCqzzpGROkgh9D9Bnv9tg0jVf1iGDsr1XZjjca2u36YRkMtbQ8c66034pl/IqMKogqgFBotXhpr3/99XRc7rKWvM9sqMlUCTrUy5DxxUDuuf0iCyxaFRaxFpfyMgRdeHf0WGmYMfJTmHIicijdbJEm8QqnJ2BHj3+fH85Ort4uL768HHy8PUC/oB4JXsnF3+fPNxcfXo4u/00uR+NJ8okmRYjthTeJfejT+e89/r2/mFy+9eLT+Oq8cP17deH8cfR+e1X4RqEVF0mHVwjnn06Ovvr+f3tXX0zbPFYJ3MQSlzBUK6qBADUMy4vyDlUYWRmo7q30arASTaNMX9qzMUT2Qd0FLyUQB8SIYZcHhLZvK7LJVfv1PF6wUgmPgI0qquYUJA7C2OyXHvyxDCHvTmWvakj1ha0oE72q3o6eI4jJOyORIbnB4QrohV2jMuIsLrDn3NccF4lHXb5YC7mEg4nQsrpCLR7M9Oup8yleBGKdFJmCUVOllCNeVBj7M8AW+/Vp+urTxccJscX//NPD6e/TC60Ffjz3fXt6Lxq+iyecIOLBY2ry/oj5XVFeqWRlv/f6030hr/DkjlPYBdlCiOX5PmgunvkTxtydMs9/hVru1bdpqfoBCJxKU4IKFtfUnbxrEx8/p14s19RcwUVte8Uj3RfIwWQaq5iHZqR/5/wU7PJgcnSSlknDoIDPn3lj3at4updMawyn5B+iH/bfi8fbfD+tEBR4STXVV870ROKPJ/hnqoCSGd0sUzY2bkpxznHWrRG+aNzcrLDnpnjzRMoCCf/5PVp9LT6JUGjEw5MPdr9BYU+Ku9RE972txih0FzCOgH/U7eCJ/ofVH/TUZ13yaSc7+XFvRgmD176xJVqrNJ5q+vaSdZo0t9UN6nD06rhKwSuaxyWOQOqH/X97tUEYakaAkur5pBXl6JTQD8qc9+Cc4FBHlHllXMu/1s/ufLmpZnRWE6ly65eSUNLhk9SXr/it3b6VRf8aa7Y9rChb31DTTab5B4em+TdPu/m5T1WIozwdQFrhXIwENdqjeG3OueFn9prB37rk1v43Ux8cMWVWuFYcy88XSKRL05Yi2/LYgpnh2MuRosjS8dOjSefPz3cfrr+hSvGN1eT0eTq9hPQxZKl91CqRKS5zJ+c1mc9GVAUpQY7I3PI/gU35mZLXDXFWG6OuQh+GFKfColARa4lviR6VgmSnkO3M/BciqtmIpvhCRS6pHc/Bm1YLwPDKgiHiVnB9FWIjgcIIZ9YtbC5JO03pSTr/Oc9xxZRZ0JcicgF8d5cvFCHDYiLKmxAXSn4VY0acitpqVMADJAZIPM4INOMEoI3nMQEMfLdl2nwnRr2YA7rhNjzeqC/p1Ir7UMN+S4j9Id/3vq7jtBpQE5nANQP9GnVZ4mU4Cdw3q+LTTa/SIx4qEZ0WAFuYOQ5fUota4povVO3n5kPb/RVborNxrIaKs44lR+NaFBsXyYfkC2PJLuCSlsrlKgYb+vpsZpfnU5VPsIy3TWmaSB8KnFGSy1cGSs4FblK7+QPaJLorqocXZYc43XYOG9bEVpKPVi7AEgd4ryeVo7xo/ozoS2U1se8gN1ySjn/YnUsqYKEJe5qnK2WsEzbbX6AD5ARIMPtF+KjfVWfDQkfMJ0p13L9UwsW+vqGpkR6/jVa6rXXHZO6QmvdKHQVwdmu1RxGUVQyFK2Npq92sjWrWdyr3gkse27kmms01964jjMAWk3NeIZKsazb1PNA5yoz7YMZx43X6OPKRnNtgmuvna7feoMLKQwAvFZ+bm5ZZtl+PPPOUgJke6JO6weIDmBZgYykKfhaRo9SkQUodHY0FDX9V39olV+/tSRuh50ApgFMjw9Ma/5KfQCqepo5VwpSlJwpITApQuSLrMpTXcs6Ew0ZUjY2xoxxmlNWXTYAzmiUwRMO1azA2UcC3shrq616T0P0FC5ocvrySs29W8PC2ZnybxNJQY134kLoXK79bG6OQ64J636oda9duzFK3JlyVE/DqftidD35+DD55U6c3qrLz5+uRLTSR3FLY8Fl42kZPQqnR3mpk6AYVyr0Q7bYK1C3ay9NeWXuPL9UYT7yQjhwqpavt/d/vf08eRidTa6+XE2uxNwhhZlMc6Z+CQ9gOef2bjm2RC2Q/qE/ieT2J2qnTieNQytcz6PDAT/s0nHuUrVD8+y5v75NUuZWYvkP2fM5jUqdvjV7vqNE/4QPUGMEhwM6hLI7IoLfSKqeJcucyAodRqZo2cmH5QZXr1PTi0oN/MFCJVF3q0tR4GEm8snTmzowqWBKHevWTH+3q1Abo+LHE6jxtEFavS+jq+vR6dX11eSXh+uLLxfX44YFGIy3ozs9BNDi9tPDlQibNdrvLz5cjSf3vzRtUMJ/WoQSCJnTdvYwOrQwenF/czUewyvGk9Hk81ign4vVxbVFYG3WYGqNdZjqwurYq2OUJ3gGi46M9HHQed7/UPU38taRapoQrM2IFXXJwX9+L/JsV5GJY5UzWyKEGYp4WuYi+amKPoIwPxXqZl9pik2e7WeZ7QXWUb06axoRtnyciTqv4hPUZEXQYIJEgBj5t/+dCvoso5rvsTC/LytlQhhwpBpQHyzKWA0/XQqru+PVtVY2SZa9+PwBpxAaK1zbddC42Vat6HWyvFrKPLgyusqi6eAVIl03njXTl8/4iz4Wqh8p7GnqCb3Q8Qa/oQ61SE9iUdDhBDmzhNL0QfY/INJ95LHxF96msoRE437dfJHOSbrp57fEuNfvaFiRJo5GMvu2j/jp7oZ3lgxWr9NDNCL6m8HsJB8Z4Y0V66sd5CBpA44ntI6K78bKNzFra8ZAjX9+Etmx+2UcWRjj9u+/1OUxRpEIHaxT4fDn3dAYyUdU3wTNwCykBdJOxkwBGO4QQ8tcQ+zp+Orh/pYLLhcPV58mF/dfRtcylQiXlCZnH0cPF+Oz0bU4yH84uz0Xwg0XY4pogS7yCCWoSrEj2iZEyNwK4CE9tM4EYDTpqdZNWteqW4xUOrppAnKSPHM3GiFgI7eaaHWI+/7dVcrZmTCDCJ7FhUAVjl91NHgyZZI631xMRuMrvipcRT6/uBe2Hr5dWCU4VZ4Vn0QohvkFn+iEs1amL2/FTsJ/t/dX/7h4uPh0fnfLF1oAW54/4vVZQlOsh0PBn1HGwWqFKs+M+4tzLsKKTB+mPGEm4qxb6/yr6ldVRYrLpUJIPb39/OlcVQJ5GJ/d3ok8IVcfPl2ccwjgIuynMz7Nv9/VH16tnXQzM1vqjNmtBbYXVpUmZK0OJbmMacTVrEYa369Xf38YX3zi23D15eLhrxe/jKtG8S3/8TC+vZzwWV9NHsZ3F2dSAtJ4Ukkp0Gbhimwz9k5TYN56Cw3ndImEIinLIsOMhXltFK9gzrGSrfhUn9eV6Ga1gtFOGsqrprsclzHV3616FKZSdo4KJN4hfWNsZDVbPjNAgGlOxrJKIlVgMi1JEvuQX3S6oSeSiKvT9FaZMXQlgAq4lX0nLlEi12dkTEmWioFlHCdc0pS0U3+58c0kvySMQyVixZqvtsruRHIwsxJRZJJhwb4+yYpoRo8smMAbLPjhkjeRVah0jwwMqcq0iVDvc8QnEeNnk4rL5wlVX9KOvzF93XoFdAhEkrUu+QtRVJzSeF1dnFH6SDj9UKKybKyhQF4rNi3rWyryiRXl9PC5wDUC1whcI3CNwDUC1/ByDZtj5Os0OvmVTnOfcgQJ/W3OUSNAbYEaRWbxRmhIabpe0jL/QnIwCl0Z0ZjQnWXtlkTXgFSkClphfn+hU/vqUkQSmm/THSrxl6NLuY41WkZx7B3deovw+TXnrKN/9F01aXR2VrUNRK9AxNy40r9l6RnnIxtd1gNFX3y6blyqCd+m+FbVbzorWU7ZHZpLOKpa1PvPsfeTml3m+yXCGqtlNAAYGxOQGXPUDI07ZLt8Sbv9swgiNNs/4MI5TavdnKO0jOosbEAPfe0cOOv5QvImEzBy622OXvOdOqumBTiqGLpRjgj4wlOKmfHTmoPcrhtcIEhE9OXfZat07tdv15W8rOn5hphzVOXJanSWa+1c3GaX+RyojmJ+6bzeCPAbkBjkk10DJQqUKFCiQIkOTYksKgSHVCci9ncbIuRAR1AP+LPyBiLWzRbGePDAXmrZI5xi2o82m81Hj0lh/JowxLU/fSbdGMbl5qTQ+y4atANOVM1bu7joC+mJCVcQyiQeXycyVe/upvthxfe84vZJSEcGg20WWyc1qC84/1JVRFttMvWHswvbrbL8dqvFHqTPRI2Wilyohms0xfZzlLJXN9wtaOposV9Vh3YYbYxAss7WO3MLmqw2G550n95ro2ks/ZsrrqnaHay36rE4n2BYzq4PkKvA0S5Wyt0D4YxqXm3A36THfJroEi9rdEgq7vrQRk91U2QuQJWipL6eV58qYjXr79MxmhoHFGY1r+UsRdBM4+7SnJGBZ+KX+MI7SFjmOYQMqBdQL6DeAVDPQrspWM3S+ZZapeE5wWV+DSun/FnjhBYWRkIjVwYMByzZAvZoleZZtVUgqi44IoooHZQIk6jdVxSQqCmNDFlYdalFsFBbdV1StmyNhzhEq0FHHFmNyivhlK9c2pi06nK9EFaj1dB64RcSYwpnMqIETXMZhE6xdj1dZ0+uWyxMt9tsTNd9BqbrJgPTW9RVwLca6ED9qqet76pzCsdNVU+bXji7OL0wds7X12p3Pgsoif7ulq5Yd5i3iJLyEclQWnyihVmzQNMSO71Ei9Q439foad2kscXVp77MJX5XPQ0lMlrguEzc+2Uj5lik1HK+otllie/CtxfHutZJVq9RfWJVX5hLxhEBzkhIZWdxjLGgUvVfkufqfVbHDWeea6vFNQpChg3mrFrHaqWsRgPv9NcbeGQ11cikm+WqmXhq9xhPkmzGuUmyy4VUjZ7qpqkizlUOo5rkWtcj5bSqk4SwpTHQxPLqut7QGEdQ76MewBtEHHk9wEBrI87cWtZ5hcTWhSKbc2zUlie5psHibOgLodVxeGJgsOafzesKqyotsg1qja56aIFmM6la2thU5aEz7sirrxhpD3ijqeJlFSOvv3ArGTow88DMAzMPzDww88DMAzN/W8zcYuQis9AWXPzq7w/nF5PR1fXD1c3ow4Vy0rq+Gk/qBvIszFNjGcNA8s9pzn/G4pAL3iYmJX6Cg5NbwDiSeVlzAl81uvmczj6OPn26uNb+d5dXF9cymlG1Vw3CyrRAaYqT3EhHwltlDSnB6I2eL1fnF7cPZ6P78/oZsq26hI+XTR/uR3cf/3b98Pn+2sOexeONn2eIxealnJnRYhzG19eXKiJNNxoWSnmdth+kl11f39m31LUNq5a6oh+nPiKDg559JJ9+RleYSb85CP5DcvHOyyqcjxMCfYv+KdOxyJtIDn5qONZjCJeDiHGlJqaLldZt9xjF0mlNT/Yrnt7jWZkLL9bE2Eltg5MzdrXpy2v7rpWxPfJ3/bUr8zvHOJLQbO3Xk7HMuXGtecealkU5xXK7Yg9iBiQISPB7QwILAfh+LMQZEoiCG+PB/dXZR1HyBmrgiDSrY+G4/auoKqiSoN6TiOZG7gRxrb33xcUn6ZgrBSDesjhTE3n/blEsk6t8wsiKyKqp+V3CxWFxm3Z2FRfKMzWDXnC/nVA9htUPvOVrek2WpFDtNJ/QO32HhzSElSlcnizgD7CFoUQ41X+oaukasrjoqXQi4+psQZVnft1W5TzQzXUVbfNyrAsZmI2WVraZZDWKY3WzoGcNXd5tEai+sKXct7+9Uu6dXc7lash7cJmCpxhl69rzz2oyNLSq/QtiBGmlT2a3rKwz9ZLWFwY5N1vqN6pWUdG49jfT07cA1243Zqc3r6AihUrd0h6T2xYc3WpqkrrN0CHFz2oNHNaDGlKa1gMXDHFtVWDBpeBGoOCzWpcXPUaDVEU9L5edLshp9FQ3IRsyBddk2tjIVXqV8TMyAa+uU1ihlro20So2AVLyWpG3VBTmtor61mNE3i8LGyHsQT1T+4d6tJOlhj7J7CoyJWOa4XEfEJT8XtcNWgBRlzUSZgYUat20WnLdYJTzVsqrQSPqtNgKRa7iWodtDMz1F9YFdkt7l6uWemEsHbZHXQxENhDZQGQDkQ1EdndE1iKwOKLL7Q774ngCalrRR6VQfW7E1GlYfX1NUlxjtdlijxTQwBVNcRSmX7XAkc41WF81nij9qFSf6wRK1sfrGiEN38qZzzVA1BS3Oy74crZdn6HVpiSipT6IgMv6bAD82VoLzBvPVYll/7z4oO5ex5TBFGPd1Dy8gQHiPpGRGQlQdAyBYp36wEXWiXSGR1i+lFYTWPRrV0arC4wYWK2OruSuf56Wa8zqY1zRxh81I0lSn+o0W21oEb0dTeeisImA7us6yrhjRP0Z1ihP851Bi3SfdSYlW4Da1CRAN4MVJo2NBp1nubEk5uYZzV9JsTDWpbFlYkheiTny7FlscA27Vdqeeh7yt+poxqjYXfZR47xMEHMdoN8Lp3y9YE32CJAHlqP6k9vAaB5Sys9ynF7qjjbT1K/+W4kM3wW7L9edNgPl5FLm5lYkEV5EVljDsTxuq64swtVqgJAE+2lRm1ZVrfZDHZghmXDzZnUs51rCOtG4ev3cTZZkj6NJT4nkF8usWBsPqzO+yl3g4s6UxDGuYgSTNqHSrWsH8VF9LuDnKPQo2kfCAKpa2s9Q7tBCejAJFfif3Mjyh8yC5yp8pAKJ9oblBqTJgz/PApZu4Kp6muO7w4ACow+MPjD6wOgDow+MPjD6H4fR2yd1XNEHbvfqFA9Vg83N2rkfigJFi1GSTPAyE8fAFrK5uk2Uk/3iyNZxn2q3btD5iqzhpyiXlYacXq0NZ7DcK8ckCRQzq9I11VkYdIKLe7W8VWW0dsKG7qFX8qTRSNDQc1dbFmkMcViG3SM8r+7/pK2+pPsDyrwA+QigGdzW8sHSSTiA5aUJIyzvcGeyh08YfC4gpZxh/IZ4TGWgE1zPWjZno0jFZcBmo1s7M8LfDYZpPtMxVC+z9TGNMUIM7n8UDDOlHZ3YruMOUSZ1g0dfUy5+d/d3P0DCY65oXsdA4CBcgks3mdUd06qMu1/b7aUd2XpOIz8H5DG7Sj/fX9tSTN1qCUgVgMGvht+qarUduvkjLPnrC0qICARV1LD5Yme/OYWviDOcdA6KQiWQtMG7W1cNbCywscDGAhsLbCywsbfDxuxAyoTOt+Jep/yGM/6SOa0i8HiLFcBXXTf4A283A/f4ZW/Q3jlDs+KO5i7/EaOv7UHi69TNjUvDpeKCw2dsOHiAndP9MHBIaU6tarOtkY+43Wq8Q3qP1M7a9Qzhl+ltwi+lY4C6AHOZ5Usi83/IDSLOwLvqaxx+HWZf2x3EfY9jeMvDRfIE9262+uosI8ISpYPZzL2LbAiobERmy9zYOOWhIX8lajvAQ6KcJiRfmOP+aS+gbqlXpnKcUBcMrzCzXpU7ZlymxmtL+5N7Bc2ApQFLA5YeGZZaGFrmYD3dBkVv1rXUC1kquXQyIyJkNyY5197W6nAGzNZ6KEn5c1GSe8jEEJOwJpDiJ64UJxjleEudOE25OBjhpZGtt26pok+b7XmOHcNNMAeLu9XnWbo3M3ObL6iCACczjOOtpn3Jb9Clb7nMXkMBdFi55aChPoaEK+VPaaTQgFZj6hxa9F2+9X4zM7fdvEXpiC3nfH5xOfp8PXm4v5BFRb2Tq3BPHWBXM2meSqqDo/rsVRJa45GJebugfvyeCTVGlKloq1o8fu0/+AfbmcdTlKwLEm1BAM6hbh5ZYrDPsJWI7hKHcVU+V/mDg6VMClO1gMZKnkXxP5HedaTfXYtXlbSmU2nIIjUqRcYSDt+iG8o5KqBAzatFJZnRp9H1L5OrszHfBAhsg2os5yNR1ETfKuapS6KYj2te6zQ2VmO9FbqZq6qlLK/CikrKrD4L5qjrMJvtN5zilsyinqqnYYmsm0FesVOyq4dA+B1iCd+woqrAdy4rluDZDHyTV/gfMuOkSMdgf/O8sRF1E2ywuo+ofb6EKiprWe2vNSOARevpeV0bpJCmrOrqHqVCnBQNNyROyXxRfC6iOn9DY6N9WfMD7AbYfRuwa8EtSaf0+dWZcKF+pmEXNluUjZjD7IrgJ8PvrMrhWg1tqojuMY78rFVv7vJkE+9v52mqO2x1U7TqCyuqx4zmqdM5XcVVvlVzGYS3i37W3P0xdTLW+gt6bRFhx458x6zdmjNaZltqNKIoHP4Lp3gf4G61Dk2iludknt7TBG8UBmg+ydHeNg05OkST8XMURdKltGDE0LNEn0jKYNhqRCN8kuORVeYouyFXvMsEMTEpmph3j3FRqOxMusmwU9XXOluAbnQ8vrnk7laZmqD6XIDMnr3yQ6WYg/nNDoOSnG1TJIc59LxW+kj6n/45RR4gksam9lJY7bVLowdgZVE99YJKadBQFNdgJvFN//xVPweQDaNVNSZxrbRmdnKV9JX6XqGIOFeqcswzl0doKdaUy/qD7SsD6rrJdSAAgQAEAvD7IQCOtAQnEU1UaO62KQqcRxRmz7p5rVFOZzjQ7c1aY0liwnB9bRyj1I0GPtWNebOkQ9VhV4Goms1iD0qy0n3O6g51p6vAg7tX1Hhwd6nKDNV0XGUbjM52YP0NIubyqMbGoZSu2OD8snancYoj90kUSjKu9aOjxqIYRR+Mprn5+UYkvAEt/2x8qRV3bp3olI3Z9peQCuAewP2HBXc7TFI4bG0O3hdfIL3ZeDKafB6LwurC4+ueKv26sjlNSPSIGw6JOZiNCp+DZL5yim/y+XYsYsMjUNZ/xmaTsbPi2vb3k89snlqLVnX8XEc4ikZdv143mA4EYgFFrJ7Z4I6/lH1GoB+Hezk/4nA3cHz6BwDKSxRhnR1aNIhARlNUrlodd8NCG5fmRpn5u/UWugQ59RnmG43d/f/be9PluJEkQfhVYPWnqCklNVV9zCzrm88seUm5w6uZSdW22Y5RyASYRBMJpHCQyhrrsX2IfYbvwfZJPj/ijgAyKVHq6m2YycSEeyAiEOHh4Vd4TIrHUuVn0a1xdUbqFgYYp384AIDBRn2UD1KNpgklwpHUsFBkpB5CVXFOZvlSommMku4lyjpJC0OfQaJH4zCkBJ0UyXmWg0AnAZLy+AF4KjGR1CFCej6P1xzdkQoiqxq7rl/uU8ENZA/lTzXBBkzRlbouXL5lA8Yq7sGdagnn6jC0AfukhgSmKQdWU2t5khvoOIA9cJaBswycZeAsX8pZnHzqrOA+76AMR3mIi6n1mRgDKI0oJkWegghVPpkXWKs0BKEEAOZvWP6FKagrqI4qEbcnrwybP52wMIMZhDpvS+ymUUlANro9774Ox0ajDCiuFO1bVoQ5RH3dPC8XD+rJPGJN+cxwsNQjBsDYw6eOTZPDkJEUNSpgjrmjLawau7LrD9TwD0sNzmWo7fpZejrf5bzWmjT+ni7UiRkBWKcL55IbRgSMrlL/RXQPIqQU+xhSiH3wFgOs6Fv4Vk6vXzbCu5NTDE5i9FGqquL3R6NNQ/EkbNedtcM0/famyXb0pEWWjhb38TNyn4+vJ+Pby+vJ2wkG6dHT9cn4bDY5P7kdX13dHp+c3k6OJWo6OT65PTk9PTma3Yr7E0Ko6dnNWwm/uZicTk6Ob8fT6QRUBFAUuLo59AAdSCBOFNLr/TYt0srVBsZVFk8zEM8oCAYB8i28eSzD2eHTqyIK56hcrdpCUNQ552QPBBc4UB0RZEIxIFqUN3rUG2HAyFNg/TdrjDTVErGLMV46bQvODMoHFM1HFTn19uRicnJ7c3V2OT6+nR69Ozk/oQAsmPMjmHIZvvPWjioIRCw4JRzUtF0u6fwkBy4bEn0AabxKYZe0XsyBF2lCeIejB5UFVQRl2kDYNfEGhUpcvDEpYKLznAJFCW62qCZGp+KSIPaciCelqXG2Wye69E8tyLnX6Tonw+7N27cn0xmSK8WtTsV9HVPQAkRtejwMoGkrtocIIAYRGdwl7l8AlJQni31ajxWt1ySAL4ypnCQeyGjcvLTZDCdZOHSpr78yV92dQZPc8tIlPQJI2r7zI1wkLfoYGa7mkBdJGB6FZziDHIcGipQ7hMJJ51MOpcwpeLVqilnxWyLVlXji2tfyTXr6qIiHMuQUib9IJUb3pHYXE6lMVQbQKtDxlsZuFmN+YdYCWz19YnK3+PqHLWDYAoYtYNgChi3gH2QLsNj/mq/qGq0xa8LuOwCFtm4w1QLngLOsuGPODYhYN8wLTbPqrWA60gKv1QygMVJX40Sgr39qN1y3wPhxu/oLwrgQGA+WLgJII52k31OpHcLcdPQRwfqXYd1Xj4Z7QMFkWr7NIk8dlHULG0Kv0uqhNh5d/HW6oNoWRk3BK5WRcldd3zHlsX6f1Zl3MXCsKUNZ6s2vXbg0IKKaQ8O55Hb0L/lC7tCmAAUB6reeVLpdy5wmvs/A/GDOeGh/ZYd4NayvYX0N6+vF1pdzqoRchPVzU3+rDEcOCQuXo3NTkOmHFA/Cmm9l5ZEoSqBlXSOkwWaKZ4GwEzYLoJU3WcBmZRM7bQVp54rzHgS/RV7eU4bvUNcYm96KJFjb+zILIOLEuJl8qQZVZ2TQgI9mo0IM0thHXX3nqaJh/v+B5t/OBRAny/SLcyi6qRIpivoQq7ZzHZpwcwgIZPzkgmligKT/ry0aAyqj2GXRwHE3eMGH2E4MhgQ2+VDGwUDWQDvzn5vw34Q4caSEMWNFCVCbHhSrQQmyHC3fPqcgrHEafen5dY8COkiHPbilHT7xmckJVT7wmlqfJKEzhA4+fPNB54uBmxBMAuEIH+fVkJtbdqAnkaLn/rJa8h10Ad+7n17PPGAtF46/SB2M724jBIe3WL3ysAGPnIX1qw7UF6jE5JK6q2R7aY3gI+ab/L9FkVb6eOfJmJuPYl22hd0K+wLVD+OT3DvVOPlT3Nx3JWIZmO/AfAfmOzDfgfl+deZrMd67slrVX5ZHAW9a1b8CMTNb4lnorYBaMW3nq4xyx7r6g0K4z/SrUXF5Rg1OryikjLpN9n6jvo+qS+qMjK5lq+9zGM4vGU53KNtn3MF2isUP7+7sfKOBhO82mp+647xWvl5PLZnDbgDsuSGEF89PUJ3N1M7f6ffETwa6PW2nm2ZT+NawYfFJ+k5hkRIzqzHgGp9ECf68tAiCaXIYKr9sqY8dOhk068aZHD5phseOsQzem6feW2dFf25NnUmTUquJwnyImYcqlh7PttC1bV22A60NtPY1aM2ms/jjN7ukg4+I2AeMxsXiHvNuqbcK6J2BXq8po7FRwIDAb/xjSLsAyYUkbOQSM7OKtklW6toO48VDUpVr/YR5QYrEfX5bxUmWag1Lwo0A98O4KOS+1HUTCIaYf2zLJj12bwcxAdptw7+PylzpPgz5JUvUvRWHbf4wFmemrcYAzprLn3A54YgUDa8Y886S7lKWHgrFWMY0i9nCd0cZr7lgmR0aUwE/XIR0MtQkjKFrm8ZUjfh52mzytPu6lbWtTuH1hP6TSxkIt+uVK5U40GGb5WoSHZz5GWF+HLzxQiKlMhpEsli1Thc2WCqq9jtpntMnGNezzstP9oge5WWRimvvTJ5r7hUdRexz/klKxH9sndOP13UG/NVpEqk98OhNgbEqxH6lcgz4W1k4/QDhuqk1iH9hm4ZQhUT5+9LU3R2rx6KsDNaonx0eKKL7Q4PhokKHAmBH+2QV7x6fIN6uE/VD8TuDDbTWK+84oyAiPdMGwFxax+WiXdGpP0Wrz7HsJBko+1BZbZvONNy1lDn7Dd1++cLX/sBAodva2eskWEWWyWOwRmf8PeXkE0ggSZrw0V4hY2W5scPg09S4a0U/O4RzCnN/Gq+y3Eh+jrBp9qtR3dvJqfphQDGmrNp4APuwrQU7izfqcmgrQ4htBQtT61s8D9tFlz7STm1l7uXvZudnutfyyRmZdym8Ym7S71LM6flFhjlDdKCfxovy8UhJJgpkrgwCWgDtZMWrju1vQJBz1xRAjFV1Fs/TXP7cpJLv8DThbqF7yLDQs8ulQxjjy8+y4kH/MioUT5Yhs3gQkRt2OQNoDgZltFT7kWeQ7NjNXJRr2KTboWE3M7tQN47s5DXWJ4EF8W6zMhEvXfVVrh3OgSCTa5zHa90/eLAzseGFuGliLZDAlR6FTcxBYyySEybTpeNqcW6wuBBGJJk3ptQmR7xSoV7HC4xpLZaSHV9wvLT45dAEggwKvgQ+iGzdZvUS6jL6SzRsyt9rPZr829y6GGLyK7JquuLn1fGpPdK2GPD+J5XxNF5W8freeDOtDAsUAoBr1HVpf4gAut9xBcoc3oFlUd1V3kLbFMSRFeYuG0CQNtGPdcadsj6nlUlzV2We619Ge+LJHD2CGeOrn132EcLoX1aP8txqggPTdD88s4GXdanPpMCSmCm6E7hv3YcK+K32rnwH6asWoQJOJ91FboHGRf2UVsYwWtigHmKVCCojVglHI7FwQbXkOs073DTX2Xxua3Oecem6LUR8O3FHgbPvte8oYocDkT4tBFIJqx4xbAlj33GhpokF55SOCmbLH7Sz2tQRLuLcdB8u4gRKGvxmeh+vjZ1JPZpjhlxZTKwGiHnUgHeo97rA87iCjWNcy1tUfYx41AgRqWXWctVWwNxRbK0KmIWNxlynBWwBRlG6Df4urSoTeFMkbsduirXfzk2VWxvJ9CFtFgbPxUsInSeDJU1XcdWQympLPhpuwEz/4XRdgnxdWQ9G0UZKdNMGLVE2g2fY7KkL7HJ+RvhQY7bpt2lSmqFF0/6mmUiqLx9B/7OfnG0WQebjfbuaFzpKcFYujMuT+HC2ZeewYaGz4UGRn3G2vhPwi9oFArW7Bfw2Amxzm2Frq1ELzxuxmkpi1jFbnJMg8qQwcO+BB5XGTz22aW7TSZpbpDDvMu0JXPhbF5a9RAHcYollSVAAt5hnFncL5Ja8LQB+fzvM4X7BOsg0dZYA3Zk2QAwK7HbzWaFDg019sKkPNvXBpj7Y1Aeb+mBTH2zqg019sKkPNvXBpj7Y1Aeb+mBTH2zqg019sKkPNvXBpj7Y1Aeb+mBT334iLInr+3kJ3HMEPWnXzzkVsWhrMbf0e9qka/P3kY1SCfHo9JB8N2zk/y10yk5FfR83o6d0vntPMHeckfRRP+kEOQisynJFd4Cj1mEARCIeAyIIWAOQVOFpVj6k9k2+tX2V73FWgXhgvEgkLB7ptARshvL5poB3EpFLw/yGjhTdw7h03ToxukvTZISfBDvZzsNzfvc4WZBiB7+EsQF+XZSNmbL89rZKYWUA4hoUCDx9MxPXO2Kfx5gakDqLT+InsR+zmrr/moS/k+5bXS8M/GhdyYSL9bOosyhIoMf7GqwGr3R9du5Ss9CsXGcLK10ofJ9iMheXs8np5GiMST5vr65PTk+uTy6OTqa3h+MpplXtaM7BUBvH6V1WZGI8dVmhfGgAto39uE4X2RqNiLPNmq8OjJVT72YNu/lOXwtrDRYfSLeHG+qFWF6b7o4vQ+MjDnHpgqeoqooOUvrNY9nQBV3plKET9oGEhJUa0FPylupp5mdcpnYXEKLabfu/tWNNDIQ1ENZLEJZFVMADm7gFjbH5wiPkthWdrrYy0oQBKHSovGj1r22Hzo1ch/QzcJLUPZbuJjzWV8UUbQgeyvHIppjwZZ3mDTniwT+kLgaGJAD6Xtr9E31njMys+1F1TT6oRIQfzU5sPVk8zOnf/Zza8m21GjVx/fDM2fS87PQdM6zI+WZ1VhuR+pf0urNwK3DwpeLXR1WdUgAJ0yGk/x1+hLOqUA59Rvev6QXMBs8BB+bNiYKkqEY3d41OBMu/DcefqFJ7nBggv3HB2Zy4n/KTr41UqOr3R6N9dbxcpoKvsSD/5BHxvqGL7wwjZI2QnUMZvvquzLPyWQuAPKtdt0VTouGq/AsgA2zRwLo5iJ2rpK9k19zbuhVC1BOGCm6Y212VOXON/tkgyqGrW37EvEh3XQmoh8HbefCsgSspKTKoC+Wyip+ZJgjzYfN79gj89zIrOhFpchVXTQbiblyoPbwbILKsXqVForNMa7QU8Mk3SS1aD/YlpBp+2iq3KgOMADJhh1RNBPOLiOEyUEs1GPDwFz0ClAh6g5ZncUvBR7d+BZNzECbxYaZ+ozNlzVJebuK82TwjBz6/gMlhRPZkvOCFgcfSwhwAGR8kUJeP6DSVO58AWmMtYNfpE9epQbNMZknX/TFb1whdIXIbq8baBmKd25WRYcD6B8warAapE/U3eUnzs9lA583i79I8MZBW1m+RrVHi5FmD0HozinlimXm1tA2wTy8YCCWXUZL/0JXWTr+llGYC8o7uaynOGE9K0w+PqV1HK9MrSlivpDvM029ynmz3XVl8xtR8yUmd4CmarkMtPedPhGdI9P8oXq3jbFnU3rGRjnLe0ZHOcu7xEbeIc3ZE+L7dUrN4WR9uTrO8cbKi7vZKx0mX/lfCB19C7zyjR8/oyXN6sNso7trRXXu5cxdVwW0UEDgFxIXelnFuHv3wK/FOhwTasQ+IoMF6A0ujYsP2Nz41wpLHeOVl0H7GGQr3E8PQYLSgWygYMOgWcmIGXTTzSRHb1V8TEu15mWR32baSwVhEj8D8CMxwEZPYvsYBkh2PgcC2lFOorjoW4XZX0KV7eqKzmHMEo3d9BPEvkCXcP8jAEe1hMg0HrsPsZHJtkjdAam5pgg67NOEVsz0CuJ+pdRXZPcW3RezSFrxE8Uk91PqXpHUzJi08LGFcIKStZwrn3TuyFWIWWpVbC8gdsrdgrYS2wFcuffoLQzVz/hicLyWsBarrVxkHyW2Q3AbJbZDcBsltkNwGyW2Q3AbJ7TcquVlS2zK7a0YLsnp/29Q41sM7tfrHy2WVLs2sOBpgJMbRwH/PrLORBkbfcR6E85/eV6fAmWJrNZkLzsi00yl01rBKa6jnPk1alX2k4/aHTCVYoXVkZaewQP7h4iOk9aK5KkEg3hh3hL2F2cX0LbV/oZhC+TeLGSg/g4hEBq4ak6iA/KFR3zylyDTFwH8fslMeEjSRAxcjX5FHmhbWpJIAQic2gfGo1XgcAoEVC/saqY4yTjaSjjLbspzwUazgTHm4z7207TPSkHwL4eO0ze+yPFcE7N34FS5gCxPlUVlWSQYcVq5WECCCw2nBrUoE1H4KCqYS6ciaEsyEHIBTxhPkxca0SGRQhlRLHpRq+8jwam0cQFXFfBHTRpmr4W1VtuvDDaV1sBbD50pWxSJvk/QckwgUS6rW5m9QYOsi6yhjzWBnGTfkSH374ca+ntlLftFTsqfSE1hqeV9dooBVBYrV6ddMaIHSaQ4z0EpttCOpBXQaJFWXeXpgHbYcRDn7vFfGoqwurLfnc0EGG3lHPHDvi1ajVNxrWabw0GStRadnZvJArqRfflbyjAomv2qUnKGfecK26xFhocFFWXoDVuxNvgs1GyLcYbt4SE2AV8IaevOgRjCdglmYpTqvT76wx+zV8uUzKDwMHs69yVyiaLU6GRIcrFOxh3Wr/qzMDZgdITfKfNtsCYr4DM5jI5yjf7/BNAt2MgTilu9g771Kq6xUGQqAEmFYYTH3761fMUlCu0bdLU3OYuTWcqHPslVq9pSGJjdGe1Zly2VadckGp3n5ZMzd5x/6/71HeS4TDUPFEjK4ch/zNfi4B6h3SjKwsJQjpdQb8lxii9CsyBtPeZ8I4ONpsUuF32y4tlmNOFts8YjnJscdDAGDIWAwBAyGgMEQMBgCBkPAYAgYDAGDIWAwBAyGgMEQMBgCBkPA/72GAMsIUMP4j1Z0DH9nI8DbtMBD9OnNGuUCWBmaZQVQxnlPB7c1wPS31Dk7g0K2uB8tOLnuiDfr3Xt4fHI6vjmb3Z6P/8ftzdXZ5fj49vDPs5Mp5kfKFmXNXZC5GU2QiHk1QPI0b2WAmN935X74e+m5k+KxiZ9lpCLNQUmV+GSaGihrsMpDAowNNh35RiBOSmDqXpSfZ9WvEWN8dMcyq10V5SOrVMksjBKtVfH2AO1h2HYYNmvI5sJuN2rKMv+WhlF5yhIzo1kj5uHMIQMkAmelLOK+6mKdl/vMscELzTijZi/Q7oKLs0KmuyP3WSYIVhlCu4HYWpLElJDe6y46HMfd2bqLtl9nApIbvGcRhrbvrBtsJOI6XWb2/V7fzIS8WpVFcL5D1uXumembledYEb9xODKITGli993E2LPdaw0MjooFdwKVVXpZvmGs6/3OYk51thJlW70+z+J2RmkRxAFw7+YX42S7Y6HqOPNumqbsEZVPgmFwfLFttpJFgvZSiXTspRI8hT3EHrzw60ETqfoY3/Zpo0wdo9PyhlJteOACWCujkWd2M3fnkOdkN7NPD7PsY5QaZ5NdcAhddEcrEunlSTB+hsnRRvkyR18Shsu7O8oUZtiZvK9l+0nnLh1C+68j/LQqV8F13lWkPyjfo+suuHv7Ri8v2clAtIMdB9MGddhyttl6XHp6jt2lStPGkm4+1w5yU8Q9wk0A68uzjkAQuNPBKRE47OCV6G5GiBc9zYgSPc2oEt3NsLDS0woX6GlEFuhuQwo+PZXoIn41luwSuofDxvsV2CuqRybslAdjW3ZniC2S6zT1BmTuibjK5GQAlqm56HNz15VqkQkQOekrj1MpoMt7OIOiz1/aEFF6cEFFHpwn3gMbYm7rz4+CGt14VrTLoNgNit2g2A2K3aDYDYrdoNgNit2g2A2K3aDYDYrdoNj9fSl2noNztDDSsX87tQ6k8zgvl3yltLVcXKSruTlIR3E7WtUddUqEV59GOHWh0KeT1YerDZVxWwiXcRur4jvOgN/RkIP3GvHwTgOmlBRuwi/hNhIq4TQjgszCLVhIt3IH6dQr9jTjMnT3/VAJp5KbKs9+TZNw5yykW7mD7DYX5Hn5lNKUe/e2SxzOlI9cr+0OBZO1jasq3hyXi3alFxOCptC5ay25MqyplEQwxui2rcaFtxwpYFzQAMJzeriZFvG6vi8bP7XXrm/M0iKGFssk9UPPdqzHtUX4r+zQO+cUTZwvWhBr5OjqZ2CYGBJpGgMC9gXkQyGbw4bUaBuzck8SyT4dmQzXwVkXxLHZIQk9Xq4x+kp9hguWf2v74BMXEjudC7q8CxU2Ir1tGP1nvkGbMhCxMfhyMgO2ka6C/ikqe0IDA91VKpTkLVRqW5Nb69leRd9IdJb0K50USfopUIWA+y+cZ0sM0kt260lvacuEZXU5BJNZ3Qwrl40nlaoTffKYLRoP77FQPDzWgOZiPwkxzSVQiT6P6WcIkxUuRt5r3SGdBPGBc2XBPdzD+S9uo/3OUoGGttJ+qFhg4+wutrXRXT90a0XbqwjT+ZaSgUr7hLRwkVCDvaIal9kii3UX8qvqFrqCeL+CbsEoiLcrWKd4+sjeoABapaYOeYwXqhcmwBJxnpPUsneGwsirOKtMNtdTnc9zgsLccVWufe5sQM0xkkHnX+k4Z9Gu+KSffH7MqrLAwXWkiRBGixKGG+IjkJs9oUGPApTIQs0ohF2HcDc4+whC20qMFHEp46cvOjHYbpBgPH0ewJdGmRPidgWjliVxEM/DbABqITDqFJkWU7Go0MN66TV7mBvdaNylBPnI/lcZu5XG8dqt7hY72/vcQ6r6zjlaLMbPoIODMMEEtIQxaIaez7JVpo7RIuBPbdnEHjRorOfrxBzyOkuX8WID8yUJ+Sx7SG3SRsfP+BEomW7lwupT3zPkF3DPtTobled16lOHgni3AdGyV3FXl4M9pWNKb0FbUt6JsMeHpUtOZHxd5k71IbTn87mWVz77fiDrGy7a1TytDP34co6XCxqkgdrmWVY82E+BLWSrZ8mCvf9JQpvFfUhMDiB8ga27kOV28kttq8WpwF33BsBkeCYr5d+uctvFWxlu1UVGTOcMrgHTMoALtbwfLrLeCUu7ltk9Ltc292WV/aq4U6AuhwUw8PKpkN5PBtAZHfcLvKPFnfYyh7rZDbbFDNZdyPGWUZ4D+4mMxIY3TRy1tAlWONp66KyjRMBb5/AjtLAHxfRdivc6A6+zxf0RH9rSgJkKA5lmeJzUmVMHaBg+QhhXu5wCEwBOjteJ+xNLGQLUQaApFBC/xNe4Y26UDXj5vGXrw7fu8P4r05ZYpPlJmE2ZTHjmAmYj41laLJt7g8GK160HK/RmZv3SolYIZnRiptR7tFHZrNeEyL/Gq/p4VJ8K3VkqlEN7G0sOFdtaT1cVXUu+o4RfSX8FW17uIrYubKCFbVyJT43yD9QnL4t8Y4nV3db791mSirV+S7Zv8fuwBMkhFq/fHiuqpZ8dhiHC+VYhBnsmoVuWLcTDpaT6OOz1YUxwLBcB618HWMotC23tU5d8exUkXdaeDpzqaCK1VX2E0Kp46agT4kpaC5AH5FoBdri5gOoy66DItO4QhZSrNji2VWgDsQ42bgXLVlp3sShYsOVnxdgO7tjBHTu4Ywd37OCOHdyxgzt2cMcO7tjBHTu4Ywd37OCOHdyxgzt2cMcO7tjBHTu4Ywd37OCOHdyxgzt2cMcO7tjBHTu4Ywd37OCOfQl3rOWKTdEIMFphCn7i8N/KE8snnoP3tns4y+nFSCHEjJsmXtwbPqkWpHY+1iwO8peVtQF3OKECThbzsnn5hN4sLRhJaFA7lMiggqiQQHlVNm87C/B9SIanRMJx1nBQHw3bS7CGyypTQrOEXcVt3VVeXZ0QRqtbNKwrLzQW2VDXu/J8dxcapFYYD77IPginc+aZEnZlgRlSfhEYAhB7H1SCo3VZp9pPJc6r88NjWjUG5ZTnf1nlzpVnHWUsV0e53uAdBvKCi1nJt0tY9YSL2NXACpKfFrh5zUD5jhbdQ5RSg6urv6BfZU8lfa9htfIzA6/a6PDr5kh1VGEX8asJeOi21NpTY8dNdIYTSEuJx7BOVjJJj7nh17bHJjC2Lsoya2uG4QAww5GzgJ6TcCvAT7oxVAP5ap0azN5YQ/9iRmX4vBWRLzNiCj8wBy9cwLJ6ixKnWQ4SXmcFJtp63d883qaNbM61UWq4YxDt2aj8OnqKOtVKqjmP12sgU7cqD93xums2DtKpBXcrEvzWe0HBnRfEEiF8gaYSzzbtF3CqOIvnae69J6FO4as8XqT3Jabx+vd049uWXbTzup93jS5YCl3p5iOdV4HjJFu6EyxiVoM3Lh3C7iBFk3fNKv8yYzijN9x1EWlk33wXLmEZ4oFIlypPGk6E/FkkQH5o7XR5Flp31Q7n2YPD26KDcY3LSmTx69Mor0IT5daoO+29ZqK8tHdaDzwry4d23bdaO0pYpuh43WfnhmUi1NHLdVpssyJrizHIhkJSc/vk4WwzMAqV0t6qaNWSvn04egm7cK6CDCWyQttvrqr0MUufgrzJw9lp6whpW45Z7A0yQAdnN+TirIbs68HEI4ycXoZAZmWxyMis56X+8pG2tZGFbfPJWuJQPJQ/ywQ71ktYyrPyguK3QMquHauwi3Zr9dCu6Td/TEGSaOMcRbcQT+ku1G9mTYH0gtPjYKwEd1IbMW/mEwMdurRPo9yL9WZQEqP+vAv5NCL0ine7HwKDdYTu8nOuHDRAQXVwWt415gYxbef1AkQ1zval+bHdfmchsz9a/RLPZRPnLl9XifKC0xTAWgY6iU7s7G0sSwTMqEHxw0X5tsag/bFzYw/i/QpmWRNMYCfg9gu1rWX2ioY7lPYrN/IbBiqzsN0vqxYmSU8lVimzMmFgT1FIQW+nPawBbOhlRAXfY4T1SlqBnBK4FZMRPIP+lZoBrPmysveyNVRZNQ3L0TIVt1IZdqOllprFkzZNLB1RES+xCklZwmYp/mhJRQCstbe292yE8PaHv3hD0r+MnlVql+AHh7kzMMisCdXWqfxrVFoLhmZk+FMf3/rLCaCPLjUYMOE3f9TT+9xzKIPxczB+DsbPwfg5GD8H4+dg/ByMn4PxczB+DsbPwfg5GD8H4+dg/ByMn4PxczB+DsbPwfj5f4Px0zJ8xkKnHZHJEj/pW5k+RcNH3G4Q6Fzg5mCDHN4pE7imLVjCvPBrZ+Oo2fNnWRle/ohtWB13vtRTqT38SxyeLIAToCm6t/WeUvZJvoBIv+0AnHtJXG9HOkrsdC+cf/9ab1PT3hFf+lhkfF3jJG91CsDrYE2SI4T9HwMbGNjAwAb+0diAxQK+ufNz1wUmMo3I7s3i5RZ0KE+JhQ4kOzHw73/aUv/7n7a0gAV+excen8aLdF6WD1fZJ2mCZPO+4ARluczTsbwKWTwWcb7R+qsDFNfy4YlMEw8jcB4X8dKuWUO911CsPVnN5f3KYrl/8WXF5pT4Vk8L61kwHaxtcNQoH3IVV/HKPHIeZF4e14A3gw50gAd95wAPbnyz7GFmTTFro53LI4Q2P/bPMZ6HA0KqYKSVducMQRJYAUILs8aR9Bu3veeGagx8auBTA58a+NRvjE/Z6pQyRz5TkZq4vOh5XMv8DdR7ly3bykvgGlLBygKrNKiBgVdV+ZglqIGVQLdGLxAZBIJ0i+NVm7AbpKtpuwLOvTHhOr+C1z0HRf95vdOFjF4knBMjzg3Yek1pTNPEGqVwelsNNWPGxnWdNjqRrTkj8tFa1miPFjF66tJiKzDPfbZmqxdpdlaXCK1JjQ4uTY3mL3UpQKFd/VshnMlW8LBKrtDhee9Ce3Ov11ZAq3eQOyj06JpiuvDhpDgZdf6SNfeUysRm0/1FvaTAfUXdHMM8c0Zhr7ZAiXAl5lgczcad5oxEZ5Yx1wsipkW2XqeNk37XLiWAJ5/WaAaHX2+rsl3ryD+D7Ox2TZQXL2iitgX8ycC1SbI15M8s2ldtb0XBdLs4n8/o1pbyWxsIZSC2S2xvNNTMVZVmRd1gMrWkt7VwwUCjXQX9tpPDDbDjSeLvH11BiCE7EGMMa5ABUOXvS5N72xGNKWzrJom7Cy4gZHd9lwhqNNMQGQlZe6vsnSuRRnX7XPUVDCVm3WGuuOQUCu1eb29pO9JzlRZmWtPn5mFV+zSnSbVDUZjpGmVa3vxNJlFWnAjQ+5BtZa1wSQpgz4Ef2onmNNxNymZZh0GmNaL79XP91XWxk08NuiITTjHqK2P8m0KUpqmdNpUwmHXHFb9kNW3TUkaclMyUTKtkXpWW6QIzWKZSPF23jYj/MpmjE6O5yyuO/Xu3V+xoRX5nh/XWXzTYk12WhbDak5QjhPCQVd/GuxUsl1W6RBIg/krSnxPwGijiNRMq0hnlK3SExX26irsDfO1SnZV1V9D70mNWB/Lh+iX6qpclnGYuq+07b1+xl/C7NOnKXsLnabVMzf2LAJePaVWBamdSG8qh1yCaAs99n1beGDzrva3uG+wkpSHkpFUGGwphruJNXsbmh4r0rO+hSv64Lhm5v6DZz4t4Bc/xIhWXBQhoKcNV8ZegmEvgici6bXYuoS4zN9ka61q6D3r3uWwb4D5jOzeryId5BfNd16WTppSBXj7PPFZZQWszR2iQseAo6z6YZUz9VxoCujRRsbH2EX5XEc/HZsyPtUpdZMCB1zWzLrZDj+su1ttWl/5G5ViWNHUvAjvDEGjAL+HVHZ7RGuQQ9y6f7cX9Dmwpvmtvdq7YrbLUnlzL0HRNQU+rrHEex36SWNMrWz1mi5ToGDmUDnglOGetVbDmfVxlKLvUZqXIlISUpQFCvNIAPITgAcmQmIxrKVD4GPGoEY6syqAK7zD5hAkpYfQ2GnOdFsC8jKIUfngHvNoE3hSJ27GbYu23c1PlFgt0kr7m9lhPG7zayWZNDJs9dYFdnsUIF6qEPIMTzeC3stiLhy6uJNC2mUoAfaVSIILWqTDONU2xSO0a+VxoIAq2ix+KzKo2J+hBhdKy9vFbkXh1uxzbVzCUynUHGfZmDftykipLFB45ZG2O8rcfZzUuwCSIPCkMnAx51Q0dbiZ2Tt1wkWDgrFskFHXbMUg+eksLwdo9u2qa24soza11Mu+1KIoCnpEQI3Yts5oK4e0F2XYpnR3Wo9DFdquWKhWmFuWvCYD89pIeewWF1eyi5hkFe2ryVCsB9TUhGfbsvO4pEgzvUAt0XLKP+OhIIgGQRQofe7bfLWje9lWEstWNtoNNtT3MwIhg3gLEdfjcIIHBATc44AYH3OCAGxxwgwNucMANDrjBATc44AYH3OCAGxxwgwNucMANDrjBATc44AYH3OCAGxxwgwNucMANDrjBATc44AYH3Oc74Czn21NZPdzl5dMzXW+cNwlTRBouGCezeSBDeZXoX1rcwKf6LLMtn7+IjgWMohrlm9aCr7koRxMNvmPB3XSaEuOfAFUY7/SngbGTUC4xFZ1/v7qZMuM+VmD8aagg+GiMnZtII9wdF2Xn6mvadXBEHIz1kinz8K4WrMJFmXVIqP0kPnVhTbxiYQZgqedLHBNVH6gWl1HgWR7qYZEMi2RYJD27CKwHTNU3auJP3ywZVTgigUQ9aXf7bFc2V3PyCUSdRlbme7GDpTyXc0cp1+3Mq/Y8Lto4n8WfhMAVcJ2Hy/l+865ybsN2z6wYAMC6Fbh4YTvY3p/ugm6HekpaTUvBfts0dZTzethZznK2evw6OM4BhhwYyR2uavhKTtp0S5e7inxuBpJvkj+NJ85KM8wgCqoALddiCyFvHexnvcMSxH8VRwTnC+lbVB0l7KwiNjoMDYZDuYWCQVFuISf2yUUHI528T/DjlMJFTHYQdJr0WZT7h7arSG9Kb3t7F7zEJjkeAJvwApYju0BANnAL+Faq8MyHcYEGeoh83rWlSetKeN8R2A4eq4SXQL+TICtiYSYAzUPLQqrrIUQbGFIFDjTwLM1hEIwGwWgQjAbBaBCMBsFoEIwGwegfVTCyhKKi1Cv+mSZVvMDieFPEq2xBcZSuUdXH+fvSfVwUaV5b1zxJoGZMfk0m5PIueJmgwXEXeZugC4ev0ajV/Vd+veflXFyYpKO69E1YF8ZgGZANhXtbFGrBrVAtQliDwKDA6/abJh3qy45CFyAZ79H0bramsR+o4B+QCiwKqNPyWfPuTeK/p5unUrpL8JonDErUw6+9BlYnUaaYpqWXwNVHhz7RQgeuC+up2UZhRdhXg3zscqHWbdQOVYR6iJftLOgqw56+uoWCvfEL2V6SkuOS1aNI2Mp+EiNqY5q3xg1znMC18sZbA32A25PnKuoDLQ60+DeiRYsOF+WKD6vsTIyHZ5dvb48uz89PLmbT2/HV1e3kGNp5e315czUNIL7QupQkR9zF6zReeGFbIbQ5DWGfeLG4Lys95uMis879rtfqB2X0NkoaEDw5Y9Of62vXzxQXZx2TTbLSqLZtoEOHcbJMax+ih+0wXjwkVbnWT0tQqIvEfX5bxSgANC58slIpyQ9R8qj67XJ5uXj42JaNwVYAtpQDLr3Ch2X5YN3YeQh8SdVNv4/KXBk9GPJLljT3tXsKVlTtWY4sbMchW4V1zVh8qbJJI75pKlDGayZYxm3sXZZ0foWB8yq3cG6lmGW+kkFcQmTzag8V8poJF/Lbe5SdOdzwWbFAc16ZQGuBMm5j8n7YjkGz0V4TLtqpnWwlaKAxqLNtGtMixM/TZpOndWeMzNq2ImFwjP/kLkiEW/WmeU7PUvpPFw/z8pPdPTzJTSvPBOV5vK6zeZ66ZXOTj6lHryPG8hMjZT0wtwmA2FrWmBZEgcduqmXgYEwNx4JZcetBlG04kkVCdjGBs4L5bViwPKyzJC0CoGBpjv8PgMKlxeJyXtBnF0xIsAbnWIELDb7j2PocFmWfzHbYlxHtpdZP2VaLVM1N2z8zaGqzADfFyh8yCQxWEbRFClzABGlhrKQJfPmwZXQWtGWTtwHi/y3ixg8WTfg3uUmMkwDBwvgn5UOczcIEfBRBfvYtXRNHbd2UK3U7yHG6KM30J/rZkYF47eldI7XfYuQEra0BTGg8ejb347TmS1P5d2MpPN7h9IzOyBmmFg0wmfRxuWiJtDWjfpZ/xZIXv4a7pWiquFikjtAqwSd3d+nC9MwYnQlcp5PJb8RfxxZ8SpzAfXam+xSW02m8yvKN8TLAptmvRnVvJ6fqhwHFoPNq4wHs078W7CzelK12AYXoxQQ7IaUCPruHSUjcM8YWsqNGibTqtWTtd7PzM/1B8skZtHdQiSUwv0uz5b2soUNI7BQQP9fTpXUB+mm8KB+PlKqhQOZKIaAFKPjsm1xCYSiTdAeHCBfuKCR9MHiTc7H0CsnDCkeghKVBIMzs4cbx/ulfzqyRMq6ZApBiKpklkyWKd3oUGRZ6dqWzEMaYHXGHs/hlVCierAujiocrvrvaLmcAzQlDaVLuXIcbtfl720y4nBdm7Rfx/KShIm4cNzmJr8o6vBEHS5iCABbAuboAaezYcuMa1u+zslw7HBRBJvdEq7k+px+vbasNioGhZWrB7XP2SaYO/Rfmgf/CXrcCEBC9O4/qG/kEtmmKW7XE7RrihbrzTA6x0UcEGavkMsUNUfxe66/m3+YGzhCTwV+incDV3q6OT+2JuFILBX8pYBUvq3h9bxpEq1TJaQKUVqusNmSEqzzezGENWiN2lbewEki8zApTgAggyKrRj3XG66rMkJuZhHdV5rn+ZbQnnswxIpgxivrZ5TIhjP5l9SjPrSaqbGHtVj0aeZ82zlEAoSVtYXz/f1i27ggquJZ3xvGh8T7bYUcJ22q8zjM+yuEjNlr76dGbOoIUrrP53LY6XGeLe0t3nnLGHiGnBk3H9/Ha4HHq0ax2+pA2C2MdTPOycZ4M+pmCptaQ+cHezTTcgNkHz0uQESvrwSjaSEnC6hr9Nq2FMzw5bLdMIOMx/dTYTw7HQZD5eN+u5oVWCWflQr9+cz1RP2TgB+mqIdp2MH6oh8VbLFAgsKOnHlcGqg3pv6+EEoCMxSxSvqRJt+qli4jaJkkHIiiMvQfiLI2fenTpkbwlrVG8bIyD/bFnvsfwFNfGPHdtvAIWMMgKjCEsC0hoW1Moz0opMDY7w9gYqGFZVhkHyhgGrE+NAeGfYufkQ8QMMgwFKtDGsKgrmPvsyjsqGEc/L9Mm9MAaC4DurRHB2Byj4VqAfOlMIDyBC+DGasCn8Piu3RH8aHJ09GHFkp9VIXaM8T+F3VLrLLanLIHvfbYDdnB8DY6vwfE1OL4Gx9fg+BocX4Pja3B8DY6vwfE1OL4Gx9fg+BocX4Pja3B8DY6vwfE1OL4Gx9fg+BocX4Pja3B8DY6vvzvH119fO76t//wuVsIfPKzIFILerf/Afizhi1HymLbVXbxIBRyNC3z8NoOuSp9ZVtKfer26qsqkXbCP7J1wsR0Bz9diJnrg4iKpyizBdzC1OLC2dE2vHCyg7KjiK0pGsfXSusoe48UGX2JBnm/5gLdUuYPorIStIY2ggegaOhpVmD+gisoiSlK8PoAwC9jcYVuJirK5h3H/OYqjDzzTH6Kb67Moq6M73C/SJMqzB3xnE0FRqOdyNo5ivGFynwe0SNOkvqAxIQPddwdN1ab4hev1bYb7nDWwSJPfdY0ujaIeG5i/dP5d55D3jMZ6PcKmDyKk+hq+Pd9E8KF1BJjv4fmpiObY2egH+p6VkJ2jvUfmda8FuoBNI63wqYApirLkNdSYp5jeFH7WaQXjW1LC/1fRXVWuoqwYrasSvqaOeDjr6P/8r/8NwywHPxPaOLTzGsEtVBJh26/lXMi5gaEvqwitOfUqa+BxP7rA8iDdRnVTYck30Bsak2QEH1rDFI+vJlisgYYaaDLP5rQa4fOTEvpycTmL0IVbp9Hk+HT8ZnxxfH05Ob6dHL/BhZu/uZyOxBAcRMCUsRGceq/zEZBCGj2VLQwS8yagoDsonlYwLQWuZaDdZATdX6BTMBKTFd2VZUMleD6q8ol7Bh8PH/6Ig12XgIubaA7aDbAEGFOou07XMX5JpBbwJnrKmnv4Tp7PJF3kMW9InZR5F+c1kSa6XW8rtF0mDnku0HiWE4vHH1O+FpJ5qdYT8IxpWzNUF0EOOU2XJicVSHxcxy3t7xULAboyProKOyv8qJuYZEn6q2uuWW7CPwawndeLCmb4LH2kLj/FsGIv+LY++j0VtYkHqONlVp5gdkSLUyJFrOM/v3tIYTV+dzE9zxZVub4HmYHSy4NgCf2UWl/dLkE/Q+/IwXfXNAURzQdPJ+gbVbRS7+9/91foRR9XxVeJOa7ixTfuFinmuR4W2Pb3gcHk6X6dLtoKSHSfF84+1QQsaQ3KFPNHewtYGxoocXPC7Gvw/vXJ0eX18e345nhyuW0vMKj7IBq/pyHiT4KF+yYiC4R83o/G3FhEyyUy24n2ElRdYM8HXiV2pFf7Eb+KoxvFyAQq5E4FLNMGF26KPDaq4RPm5ado7w4UgAgptcHV++pnxeWAiz7CuscXBHdpC7xcUFcB+xYs/u37jPG5t3Ot7b7Ifv4NaCl6uscximkrGNHCB9Zf8zLHjRgloEdBcrirXSFjwc7dTLTijnKtnn2ikGHV2KvmdajE6eX1CYYsXRzfTk+u30+OTnYtd3s+Obq+vHp3edHxytXldHYLO+7kdHI0nk0uL6bIUe9g+HnKxHVOmMOG+q8HCsvVjOW5wAuTYISzcl8Gbe2jmLhvLO1Tt97vOtqCeoyW/ro7LzEW1wGLVCGKraNVvIlQ7cmKVhK3fjNNfo6yyym+KpY6kYsuEKEgQjKqZExUNDZXjP6uSAwT01scrVF4qVHpiMwER9t4yDyuFtDsbb3gcKivyzuOYDareMtquqlhTIGjYpeiP11H2L+axkV0tt7nyXvWgjgan59cj4kOQWhrK5u+5Av3cZU8AW/fX1BPhdCCcqaUobYNZ53+/veOZBW3zf1ZCaLy+yymRE1XoEaInC0m7rJZmxC8E0be6KfhbJXEh/NU/LgWc6QeQUdxmlBiGz6IjHLy9fdphfmZqHFiUaAg6nylBtADsEnCACjbgQS8pQsV5ZO4CUE+cj9wtbaFDMd4LB/Sl5XVejaDQ56tZ2ilc/2GwTqU3oKmH8nV/vO7hnnOxfSKix65xfC+LIoQzbMCQ0aIil5/J1UHQXJoQ6hQc6H+dNd2xaXG6/WpGM8YlQXs7A59IcIUwaJfv0cwaaj6TWPQtTc0WMKwhHwCFIQai0YZG4sTUR3zhgoUONIquHIAilhaYL8FMBYyiuAn71YjfTdqfOLD+6slyrT2CaaIgwgtyCjdgc7G8huyeNwmQOtOqY09ZGFrsS5RwwWGPkKqIg73KtJCJLzCpEm7A9T2GneTxT0ovcC5ilqITKCV7kccJYHqpBYgUTAFlrksuU7UKLkeeC5JLWedka0bd21F9g2yAyCd1EY/UMGU6zW6L0Hp3UOW+TqC/agpQTrORWDx//lf/9+rrZtNVgJbrLJF7XLIRxggNHOz3fAuq1bfSGE7hVonxzvuSCCnl4sHPcy482IFQJFb1bVD/e3P3rtupie3h5PL85PZ9eQIv7WXRdkNdUs4uuCB/IoIRJpNbVjMhAlHMbgREQkMbrUhtSlNts45UmZa3eJO48w6q/wvbhL7rXPjr877AkyKJ2GEk3AA3ENUhTqWtrkBgSMeVzt2CPTjJImYPYp9AVRoTC4XZXdCgAX6XwsJRfMmZDNSk0WXH7GT1VbT1CLOgUPFlWuWIqFDOoDY6C+fwpYpVBKpRN1hcxL5ZamSb8NljsS31b8gZ74EDQLmDQZ0C9/BCUjpS3BySKeUo7RPW5xX/2mb5ztVPb0vn2iqmHDsykWjHW28TM393FI2tqOm/tW+fzetfS0WLZneK3ZH7MvK6s/W4MfHt0fjs5OL4/F1WM/+5XoyO9FltmwMC3NMu7cFWewgohXy71kT7aHe+uO//MCCxYg04DcgN+QgONFgv4JHOQdSZfHta8b3RD9EdudDFreRWLxp8mqfO1PTBmXsT47lTPoMtrAcsTXBl+aeJFLUT6xJsUhC9vZeI3jDOgzGOrRr6Uakml9/V97dUWVVukih+SnIiHFOz3/hYJcQewLt7bzlGHr4eQ3EjtIbP03XafxAVdZUl7B584M0essnYTkXQGkzF6zxN2YPn8X5AzK5dVrC0gqbC5OWfD8xrtN8FxaS1y9t6fvMbv7t7OUeS5BmtBHxhoUapF6GkIOI+OPBj+hUzFllYeMVuq2iX9L59exoP5rBIjSGoW6g9ApFjHUKokdTjvAv8dyM/XFsXGNvX7vOyxh/zze0mg1nF8qgwITgpbRATSmhOmq0dCVAi4sGXZysO7Gjdg0Uny2ydQwl9o5nZ9PR9Hp2BdrJa/ktvEJwlvamx1dR+mlBoUqvsBGsZ3x1BbpPxaEpGfeD3JRO375nJ6fTYVST0K+H/mR06oHq1eA3AntcY7DbfvQL6GQpjp1kXHgHPGpY2BsaVOjIEypuyMukBzHJ6kVe1i3obau2Fl7Dn+mdRczva6cCdA1Vs5wGi4IQFtHkSiq6aENTozGd3VwwUwflFZgIbIc/7ke0ftCcWaC7vAa5b1SkDd5ISlUCD5ZE95hGF+MZQU/HkzNE1ZsV6xZvuGcVlkBf++zm+gI9ycDF5SfeZZ9SdHdI0qhbvEgoxV5XKbmvYVdY3tO3fYAvQ4subLgfooV5oXxU52WzneOTVc91fK7RHohidbZ4MEK31xW6XlMZiYz2yD9dfzOJ8RmW0gb2BKGQwxTWsPtKwrJFuCsscpbNq7ja7Fg1Domsmvz8xO1yrkPYYXeRz17qa57FTOV0fxYffTmDcT9zxdcOlEGGpqh+Q5FjoEuZ+hmp3pcXZ39G/UsQLciv6NPEZaM4KOpxHKEBzAHXECzIkZCXxGuy1lo6JbcunDxbz8vYCxq4j+sZiyAYbyJ+kpRIv792uIvq1kGEEWjExF4bn8vmCye45I0VWYKiLcfKAN0CMTJPrjfQ5xVa6xr04aBrJNr78Y8/vPpZSbVGgA27eu6AcyAJ7/34zz+82jVkZatWzIf6aj+WKCCO4mLtFCrjanH/rZiX6PSWBX+aFbyXw6YkJSrNY+SXbxf05BDtyItevnOfqyKKzXhelg9fpCReXszGR7PpVgXQHKieRSWKHRDz33vFIpxskvStvbKFxXanIr5gDWHZtIL1wZQGr7HaJ4dbaIphrVB8QEfYxTEdbwIhhMbfTVsvqt/7JfsEtU1nW63QGJhxy911VpVYPyQGkGRZVpvTsjqh1B8vtHYUge5ANNjTep99zSkzr31kOyPisJpkuucSaxjxtx6w05r2C9pOhKAjJibau5lI2eeKXgCONR2fviImCvM/ooAWoK+iEfF7FnMziDKi95OIuk+RMotyjQJdKFBmKwekWpyJytmRaOw5HDvL+q7ag16U3dnjzIOWJuN1Vrs2XGUUHstCV5MjgcZzpDMga+jmas2fUIvl/bvDP/y0/yMbiAPTCOsRoztrGEtz9tDEyhNhW+73tNkepeM37pS9YoXN6k9oh8LVL4QTUM7SBcbyYWPNG5wEYfXF0AWMjkzGDYYoiJm3hTfmmRntpKJ6/mLeKyVb0HREhCc+VxqTof9bCWZZJmXjEgyIRlex2B0pjJX2xCL5Zr7mt9SrZ7ial+qF7uVNZQ5ohJdomE+LJQwwss46OrmYTa5PQFoMxj8ryU+6eNzw3Bg2qw2o0fwkNb90SX6A8k5GnxIVwQpnxblKMUAl4DFC5wuqwCECa0pJYKwYK4KBJtL8Dt6hzEtRPIddh75zjerjXo3D9RodENQpoJhXaAB8TPPa0hmFIxMD90BnAUERmS46sIS+qaibPoDVfPyFGjINMEVKr4F6YAnSMIujDfxyDuSAb8folkXDAkiY0+sJcF2QGpNo/9dsrSLK4ePE9LLtGV03ACYzEhAOGgXl+aZ9JNnbSpxCuMXm98SaNUwN1yenN9OTKY4hVYaBQFCSasTRiqMVRsDiPNf38U9/+GMEXYuSDMUcJAw0QsBAVCuy8b4Ri/AN0PorEY4M35hxkHJcRG3xiMEiyMvlGCz46jJg+jhAUU6DWtDAH42P3p0IGw2wPlz2owRoBr8Mnb2v0fBC95Txzk4+bbR1tutXPA3qeI+eix+iMZDGFB1L0U/7f9j/6UBPjwrAAjYTvT2ekmgnfef4IXhqCLT6hvqfpDicaHC4z9bEOknyxwn+fr4BukoXKS6K7yl0m0x6bGBJxXnraAarZfSH6L9PI1wc0HkxGNHe7/Z/t/8JPgKJosDA8zxbZGiown1jje2vmU8g9WW8a1LwOpmSytUaQ7xYaykwgBR6fhARC0FSvruD2uJc8UyhjgNxotv/8HL2LhqNMEHDiIgBp2QEP4HI5uk9yrVJVuME3CLstpS3rIkZB4UHvhc7iPTIpiYcIpOfz3ktYc04+hipRZrQ+PgYaTFr9qPJHaH+CSv7JyI02j5gdIsUt0V8P2tEJL3gC2g0pbQbkpPRYQQ9+aLZOvs1PYjQTYtDRFPCxUGgrqP/+pefovNDUoMLUu+Ql4hzDHv/9Yff7/8LokVVP0T/9eMf9/8VIdOn7K6hMd6/q6CfOKev6BP/66ef+CU8HhtJEoY99b/++K/7v0cEDE2DeRrILianZQ/W1R9/P3r815gGB1THt1fSJbpfYzgBzjSZ4xIcevkejuZqFSMDfCVIFP6V6waUB9wf6YOQPLMa7WNyUy7vKNYDrWwFqMBQnmiWuJ/4WjQTFGzr3Oq4v8eUTwtXQoYBeKEt81l6zvvJ4fV4drKty2mce1EGOzlyPoo0MUHVGbaUX4AWMPLu2+jP7+g7pvewK22NPAY6JI0UAGtYwTAEFWwywAiAu4KsteRF+sT9FzY8vKk9jbgVirREZyjVQhHXqHpYdkMuyeF62/yqMFi0IlWLUC9xNHTcY2Nm49vU5yTlg/7VPk/tQ9aoye6Rtbjy58fZcCOsVIM+OnlP/snL68nJ9Pbw5vri5DjshzXfO55MZ+OLrmBqs+TJ/zi5PppMdyj57mR8PbulBbC17HR2cjXtLcaO18/4Pn5xpw/kouoLYZIFZWXdcd3iVZ48IzPBdczRM+lYEOd3MhunDtLJSBjh8FNuQB6H1TP9SbaAn355cTt9d/nL7dXJ9flkOsUYdRxg+Ds+QzZDQZPbOvkeZHHdUVoZRh+buAJmowAv97F6uA1DtDEHMD9ALu8nJ+bn3d5Mx29x0nYZqn0utM+Y/XBV/2GdBvZflhrxPpDv2eydOdQ0wP/BbDeTVqfV/rIsl7DqZT3AA2oxUJTfY4t5616v+heIBhM8REeDieivv0lw7mnWFHZc7tfqTW9wmtgxcEO5Uz0yItQEXoSuGUFq6OG0GnLic7dVLL5/p5p96wkTxoHYc2RAC8asiHaPhJNzT0hgIHXxLvW2zVDBA8nyD/s/7v+OOviWiJREQRCsnBrWJQj6IJKBbo2GkDkd4kAxjPvAPhy0kMQJCMRNRjh4BEGO3NEZqCt00gEr0EKx9ACL6imkF5kT6yNm3WgSQ3nZ6KWsB/VTp7vG0VHs1UpqbvQaFKpL8mtUUk/s5Pf/ZNptVNjOzyiBU1wOdpjVLKgeZFVjL1a6Kvv4OTQmpY9A4R2P7bOZGHpbgNZTmxNZkF4hLQRP9ykFAOAgSLPmU4x13qFnhvSbDwEB8EPEYT919KHAbCAN4kF5/0Dfzo4ecgVQF1L2/YAWAkLNRsU9FiXqjuucXeuop+tuGhKOno3GKmIo9UITRdqeHFMXDPvNDEb2NMdsaawc1Vvl+GyV3SIr9c/7Xq4pEeiirSr2eN+XtcxRXSLua/vvsG8j7NtBhO3hKHMIh5TmiHoe0cFpHC8HggF9fg+JNK1e4fLBeg7evIlAs0lAO5Y2Lel04aWhdoKfrfPrZN7gYIz4IS1YQkY2i3Ek8aream/M4rWrcqzXhxnp7xzPLo44W3IuGraLrL6foTNSpXpA4ow3T6BKHlFwgwBJOZeebgp+M02Md0VUMOh2ZNqUP0/Lio736BvcK87D883snpPx1XOsnjiY/fQMSknIE51kNa7pr06ysvmDSLQoVjJo3KATpUBAsgRRIRlGpDv6CYiifHpDjmIkeMF50TiAh4tjjhqC9+umKh9SNr0qHzc9oZv7ICJ+UaCFrJwzLVMkDfI6lCWS12yNwVPz1LnJ+Uk0T9kKSEbbiy0ZF34OeHg+x32NxtHbWInA1oyllJhLxidyUPbLkqV1ZvhiOm3XtE+cwRtjQx3ZrlAab2yer1YGjsN2H5u9ur48v5ydHPvnZ/uWDY7zSA5h7/KhoLBbZIh4cqnfVkJHC5jp8P9jyi0DzIUCoqTRBP622C8Sl/kBLZby4aSgP6aTrl0D1b6QNaWf/uS1B/Z36kO3MmbWhFDcLGYQUvti2GiEfS+LcZKo30d5Glfq6Ux6KfHhQvopl5RjTQwEPwrC7LA//WaSW8g7JH65T4sJqLvp9oAuES4mXlS2pgKGaY6iE6at2x7hoS6v2C3CQxZ/ue69/laD8LmRJJrOPyuMZHx0dDKd3p5OLk5uzy6Z54R5lCh5dDm+nhpld42Sy0tDEHHi5LZwOJMGurdnWewgMgkHNYMCBmyEdvI3kQSf09mPijZqPIwJ0yLDUff0+mcfgE6DII/4l20tgpwpkJhW4ys3viU0sujDCg7jtrQjrEexQ6atHjHwVvMtUh9Rx5ueXI3RVmhqdwfRBzkyRjKDD/s7bBbOO185Q8BXXF6BRTzOn+JNDTO2a3Mi0we1CMPRyDQPymVdSxVaj9iu+UssCt+FG74Ogo20pwO7/I2yy76yh+Ojfxf5VvrLf0ECl/6KO9K3fDl/784Ao2l/e/4XWXZf0tZzEsCohj53v/lce/IV+2uNxfs3NeUa/TDsrKKTkTGNz7S1BnaMA2kQhN3w7Jfxn6d0cLissl95gdNpHmkbJIe92qs+eOlxfkCNWm6xgWw4e51E8ZpU43+TVb+WiXPQVy5UebxfCASBZYl7qZlFR53yuZyOVtBfDqBUx3HoaBEOzzUNRgTMrW3QRgOChPEBiqXdp/Fjlm8ORI4IQ8umvR1pXgSCFAuMVuHITdhbsYhYhywLCCsAxWbp0eDDPHvp/nI/+r4ytqx7zGjJOxY7jdlikVFMyfci6CaOlug5zhbR99kKj3eLwumnNXprikX6/X50Ag8LLMv2WjJjoOXuCT4aR8MhdyvOyj/VIEMYYn0mjJYDhx4B187xHJA2T7ypN9CNhIJMoLsgZ7Cd+SFNkYwqCgbCIaXDYUZQJGm/o2Qe8UkBtvvJkxPw/Xi3nBh6d5m/0YtJJEBAyyzNAu38BYXEsdQz4qNJkQqt2SZoUVTu7VpkX3dNWyLgRGilZh5X6whqwTqiTLe4hq9vMeP2Ff9AEIZv0MEmPD6Hh6WZAhj2mJVCr5URkqywH+v26zR9EH9mpXdW9U9Cz8djq9yl+iETh1BZZZbpHOVhVKVLt4UL+3qWoM/PHsdXGDzbAPQlqdZOjifj26uz8Z9RLnjOft23ua3Ud3RrUjZJHhiM7A1mQZHWTlmAk5WJnIsiVadMuSgfyb+nuZTk2RanrcVMU1Aw9WGUU14z5H3ELKykFXNM0XoXg0i4dYmVAUOQHxw0zkGkbOl+B3gSF9X0HwBP10fCUIZODHx+l6GRfTNNm3b9W7fqnJc7CP/0gUagEWf5IBYNzOKRp04efC46woheThcQZ3BWmE0Jd1NSfoPN9xuW+NunaUHXfv3H8/WA2eT9ZPbnWzxz/fZi8ixTSE2t7uNwkp1VJAqwhebXW9+fxxWm8fnMt8UYPt8cI1bTCwnHfyfxDV8WhsBDxoYpJrxo7+j8Kk14/kC0PTpH7kNPr6xEkEyh0ly1N/vz1QkFeoFieXMxO7kGRkuwq2vQIG+uT+Tz+fjtxclscgSq6snZ8at9UZFwaT8vlwZIuAFyJ5e9PLGAZ4PsENgf//kH+hCOTKbDqxRkDUQfCaon2VpRsTijwCsbxTmSbXFdowlPxAiwF57c+colT42z/JykSLmpagm+ACXeKibXMkhsbKF5usfoBt7GVLSB4CVWZP98YxkTWUrWs3ggoxw40uMDMfC9/4x4iR1E34tKv4/++uoD93B8Nr1UR34NbYdSxFGWNZIrNathLzfXI93VeLD+MdUBwvS5gIePWpWUHmC1KvFoDgvgMNZL4XCct0v84IvSGHcKaldR8DgW02zV5nGDieoqrlHOaioQsElz8khjE5C8L6JAkDiPJMuhef5gbrh7r/ZjSe8fKPE+rnGR9Vw2LmZZPbNu0+D5BdJN9EEWPh9C5Cv28Ajj24lyRccTaHzD1NeUDbRGdl61g3PqhZiO/Qpn7SscRnHyE325HIRNNUxnIK5JHYIK2AdXDnxSZ/0Es2NQ8zhdCxFuT9ooZsvHlcJBQCp4JhXp/vgchggo4qMFGUa1t5kgGJFnhoNReKlzKiMaRQD+pZzjbMIGWK0ozpwO22OK2aSgmJKKaYwPmlCkADbL0UTf14Ypenw1eU2ZNjjuPJVDE9omUHVvMfpeh8ljTkL12fh6RSdS7gS5AqtyQpXEilRZ/VlTFfVzR5HAKrmAG7kkPnCI0gcjwuY18SM6ayYOBohVhEn56QwBB4/IgKZ5uimRGwf4nzxdgi1Zg8P2fyQ+G7zXMUavDszIMmnPqIVCXDu0JM9GIZkwUbVI0sBvgYA2yGmj2buT6PgElYjXirhECzEnjftZEaw4AI/JQyiqjamTOG4sjQQyQCeR6SVl6oBISLsRufLrSJzgussq8lPMlXgX7Wk4setX6sQJAxPOCkL5W2I8UoSJZHSAWHB8OHIr+lBrsfsg+p+kT645bPZ/fveBt3SgPNJiZLYY5O88nPIsJG/vuOOPatb0iSLmJRXErCMw8M/I5K730O3Z3Mviliu5jbNtWkpBq+AFUyxsj+O5LI6pd+PJFr3R/I4DFJWgY8jlug4l7nGo5SmqhLyFoE6eY7JBkbaQAt2IuYwnr9StIqgKehMgCYrZlpwnfcLQsj3xrCclMERm4jWICQVajO4o941JK4u8bJ14RuNUF6gwMFC4KKC4fUA9z1ey8VrEQYoLPdBEJ+/w8C4JMRyJOn5ITDwtpfOzCMMG36bFeAJD9TZdZUUWXcQwNBgvN57gpL1itonZhdKEwobYK0l80Yi4XuUPWXMA1cfZ6J8+RCz4w4trvEGnWNBhuNE8fkjV2T4+VqRZqrySkYOekgTbaun6Hal6aG2Cr1AhNoFCDqVE2rY4oCe3bZV3xjB+k3BFbGQEvTig/YGlf2G55UQi2oxNsTF4xm5UL0B8RmYDDA4G72yK9C6sHX/i+PcpFQFhBGMv99dY9BU6iQUBxNH/IwLl/19MV5jd4VY5p1S0ONpiEETIV0pkhh0jSTouvsf7ZJBYY8xBT2fyYA96jKsMBeYf/wCUdojRxqQNYADliM3zPSfEZHTNOrlzJiSrx0Yq328yKdAJisVDQxS6v9XJeJbZMAkX2ZJAWmzYZiQP1XK4cZy4TMOZWhSYDGHAOK783WtuXVwmFL2DH1PeeC+Pbs6B2UWzS8BeAugak4oZp6XxyLWOacUv4quq2KBcrThYGUdwD7QGubUWkTi8gkcyIj5ooTKu4vVVHHOYUDygyjCGCNpwOV2Z4pp8LRTZsUmKoRe0jCY6Bd+araikJNs38NUo+NCnNHTqdo7HkumMM6mXdNCf7fPEnOWc0O6ecfZr6S5gYew1fzlFMBiJzkD7A9pcxagCvlZf+uEqucPDNx+io8vzq8sLHOk9mSIbuQ7q6BhYrDK6zdOmoQO6JSaG2krYlIXJz7mDp9u68+7gQcGZzK/1jax3ZkqvcZLserUCntITKbZkZlmd0+vLMob1171bSMLX+KovCBfgOkeirl3yrvAbnEFH3/jhZM25eicSrexZ6gbF+VIFssVIRNzS5RevRLgSMnuT4MTWvnXwjCQE+1H/DMv9rCyVh472fkwN8SsqvXmMVyEVG/wUox48cCGkvr3J7Hw6+m///Md//R3n+cCsseZ3kUTx+KMWd/jLOWcNbILsQCD9juYXv9JRz+Dfj7/74c1P/+2HbWIEOr4oQ8Mt+/zc080t39iIp+PS305ics4JV1acFO43ciSN/DziqtO/qdGWR4e2hkc5QGZIA7PyZx1Ho2/jJDZ2Ze9x96DzWuTQr9R9YM+3BrukeCDc0KB2bBrBL26mIDYsSJjbiznDllgfr01X+WMpvGh8iUQcYSoszguIB3qUVQtkeG6SZaKZvqACNHxK/4J55x07CyZqjZuG93YZBoEChUw5KlUYyqlKkQmUt0fkDtEasEgYIg1mmbjdHfpRZSvb5845Y/hKi5KPNvDpdBjYeNG0FA4ghuvA0smEDIz3b0gtWedKwkwflG1CeflpLN9wLlv06eP3mGZiHLmRKe15k/ZBcIsPhg2FdSOdoUneAUciHchL1yd/ugEteBp9IBL7gB85T408NOKSDnmMHnqDIhLyOVAyXoM0tMA/Sj1AcS+di1NuNSh2Sivbdzu8r7pLhCKyYkgDi+gPiG1CEKs0M3stc8DgqbdMBtlyn8ns7Tb1QYqcBdo7hZGQE0MJHy+IbGhJesNRBpRP6hXLeDiqH6I9vRLEMMQ5jrLIsCszzNGc+82H52t6cnRzPZn9WQ0wpoyjTM1MQOeTi9mUUt3QC0TpeygJ1G8ef/8GplK6BN+wb5qLoVL4SqgTi3vUftBpEKNzHK3ZMAKbFYYL41XIZNOW5l0XA9OCZ9DQMjvHbMrkT5HGZ6Yrkct3kWd0UzWuY+g3WTEoSwhdSChVdwp/ueOlaNo/WVZWaVtwxUi+U7LOxMNB1cpRhy9v6RYzFXeEHSRzttA1EUZ7Oo4s7dyRdFqhMQXXegq1qlSlzKRizEoCO3RNakALXARW4rxtdJah7QJ7W98H7zMd5zn6bfS9puoJj2ocSx8Pu/IP42QpHP9s7JrhbPReNGHWQN5/fT19MJcIstE2T2Uvatnoi2oLrpwbr+tRWjxmVVlQauOD70RiDXFX0g7hMbhGm3RkhmpsC5a5wjmx5P1dEn1s6esLnL3a4tley26/gOTGVGRdKvM3kZG4H0rrFrfIGIJNuMBzRRoYObxdBv8KRrYnKp4cv7LjdvhUM62dDZkJ6CXWN9B+eQpkjQfUXqtfwIZg++QdS0sdYqDQcMZejvQTDG3orOLWGDwR9naLPKcqXVMj30WqL4bI5c3wtIrxq766pUt0cCQ6eEA2xdq83ltcNi/MfKK8SPpD50Tlu2ofec1e1AJ54+iuStPoXnhzZLZ6js9VF/mwPFrIyqOM41pzPMJ60Xnk2rvQ+/wGtl0yOZL1BwQpUSGrxB/IC7xey0DKvXXekmUonbdLPvj+SiWQ53u9a0qewM5iIKM17x549LqS6a/EDpWneCKfrtesYBzYor2CSXyU+x9awFL1iXRhWknyD+VBs5IapI0w66MyTBnTmR2iYsq5zKCRrfsX2R/SW5Hist/9gxuseZjyBVOd9vcR81H1d42LfIOu8DUotyA9yDBy7x4XslGQIu9c5vK1l2mgcwdAJ3w7uiHyiXJ8zTupIFLQUjcgiMswgNpI6lL3xacFrOH8tUzaiTnPKw4b50zVwFExEwW2SO3XHHbCeTJQwpI8jH28RWk4mUQqPY4H2U646zRd3G8j2EW5LLJf08uCzmbQh5t3u+MZOnmTDT2om2zEE5Uj/kERwi9onnmxC2ykEVJm2CeFlTVz2uuyRSMu5DXtq1MavmseoN0OYfEdCZh0l8MxqQaRWhnGcGvMIzf50hfj/LY+/7dyP/3nyo0h49rf4jZCvi39a5nAeO4OIvW1zikR2LspZQVdZTGi3KPT2YykxUqTDAWOtTmd8xjJKADeHDmNjqrdSIdNBzi2CYTMfb7owGsBHetln3TPxC078mrv3EfBpyiqFCSz+n56D9x70X6zy7umWZXtuCBBeZLWOdpuSOLE9zGJvOz2/rY713k0RmI0DqJwF8jMgVYLvoBU3UYJzfOI1cIxSsIc1rBtopu4fqgDKSI4Q8lCXnvdbQUwxbGOK92ORArM5BtN3jUGhKAn9MuuRKxkNTbjVrW/YJ1fdMGkqlPatjDYh7SWxLilTd3JuHWXVB+4JdqJSOeAgj/+TV+YqHoT7e00E8K0i3csvo56Rpds+D/+ixEc9G+grYh7vvTlADoc0nMsdgSubV0hGKDiZ7nKN5fAmvlQGRnU9KM8x/PVxW3q2gHtCDnMsWmCxxRwoMCSKYLE7BUsUnVwLyXvCA4X6E9+sqabiZei6VtlTWq9AMA8ZXm4AK40xys8uwb1MwexzQ6MDFbU3BvZWCSOC+qRkKSF177Ybmtb67dvWjrSWfORVmWUEYltImyDkvB7mfufWEHfHrYBH49f9YUpKrpHSdR/ILecdDVPE9yCfknnGI6CloVamBU4dhHY0DxryNctE+ZjPmSMmCFHdhwdYjkkFRlFq4NffmaXS9uU0ge1PSTrKft0G6+zryq0YBuLuL7PvAt07PAvinNIk1l5FW9WL37Z8g45517C985dF0kR/5ay+GmGRroseDW46OVnHkySb4tkl/noqaxyOoWzSjFMbg8vqEIB4w2bAd/AuOJR9NE6h+VNdjgQcJqcDRbofBY12vdw8GxGgnJ+RgdyAttPAwTDtwQRn85+5Wo4KhgqwuBWEfgdczJzdiBjqGJu2Ui2bWJIt9DlBt15uy2Q5xBm/6rBq9xqolsRqoi5KOINel3puoeCE43d5emnEd+Ywemd6waDkDUEpFBMNwnUT9kAsHN5tixGsIWtajzoh0/y/so4ocOrB+oXjkGCGfL575u7LM/P40+/EBDz5+MZEMCKH2gh+DSSr6x0QermEjgX1iTL4v4LDIH/8mRaidUAZSRD8PEjWUGg1F1JriBYruWyitf3G4Whe//oqxEPD2P6DRVjcEQ1quIka2vqVlWk1TU/SjS2xj8Q8mlU38cJfRX/UK2UONyUxFv+goGvMQXCiCQEHHl6pPzd0ljFhIa3QMP6eIMx4umbqmxkao1fRyjlfYISv07oB1121XCv8hb7hG5hYUeDWclgs6Gz+mWdKfrIFg90KKDKkhEQARI4mvnzdlXwZ9OvN+IvOmXblXw6EVHB3/31r/8//YEpf7lCCAA="
5698
+ sha256: "162ed13c5698a6cabad890dfb32b13d7a5ca00f67e7b92e19c8484a8b7337b33",
5699
+ data: "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"
5700
5700
  };
5701
5701
  }
5702
5702
  });
@@ -5708,10 +5708,10 @@ function decodeCatalogEnvelope(value) {
5708
5708
  const envelope = value;
5709
5709
  if (!envelope || envelope.encoding !== "gzip-base64" || typeof envelope.data !== "string" || typeof envelope.sha256 !== "string")
5710
5710
  throw new Error("Unsupported HHP catalog encoding; regenerate the catalog.");
5711
- const json6 = gunzipSync(Buffer.from(envelope.data, "base64"), { maxOutputLength: 2 * 1024 * 1024 }).toString("utf8");
5712
- if (createHash5("sha256").update(json6).digest("hex") !== envelope.sha256)
5711
+ const json7 = gunzipSync(Buffer.from(envelope.data, "base64"), { maxOutputLength: 2 * 1024 * 1024 }).toString("utf8");
5712
+ if (createHash5("sha256").update(json7).digest("hex") !== envelope.sha256)
5713
5713
  throw new Error("HHP catalog integrity check failed; regenerate the catalog.");
5714
- return JSON.parse(json6);
5714
+ return JSON.parse(json7);
5715
5715
  }
5716
5716
  var init_catalog_envelope = __esm({
5717
5717
  "../html-to-t5/src/v2/catalog-envelope.ts"() {
@@ -7655,7 +7655,6 @@ function buttonVariant(style) {
7655
7655
  var SYSTEM_FONT_FAMILY, TONAL_ELEVATION_ALPHA, BUTTON_MIN_HIT_TARGET, nonNegative, nonEmpty, own, COLOR_TOKEN_PROPS, TYPOGRAPHY_TOKEN_PROPS, BUTTON_VARIANTS;
7656
7656
  var init_tokens = __esm({
7657
7657
  "../../core/ts/src/tokens.ts"() {
7658
- "use strict";
7659
7658
  SYSTEM_FONT_FAMILY = "$system";
7660
7659
  TONAL_ELEVATION_ALPHA = [0, 0.05, 0.08, 0.11, 0.12, 0.14];
7661
7660
  BUTTON_MIN_HIT_TARGET = 44;
@@ -7711,7 +7710,6 @@ function resolveTranslation(value, catalog3, sourceCatalog) {
7711
7710
  var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
7712
7711
  var init_bindings = __esm({
7713
7712
  "../../core/ts/src/bindings.ts"() {
7714
- "use strict";
7715
7713
  BINDING_SIGILS = ["service", "flag", "item", "t"];
7716
7714
  BINDING_SIGIL_RE = new RegExp(
7717
7715
  `^\\$(?:${BINDING_SIGILS.filter((s2) => s2 !== "t").join("|")})\\b|^\\$t:`
@@ -9782,16 +9780,16 @@ function utf8Length(s2, cap) {
9782
9780
  }
9783
9781
  return n2;
9784
9782
  }
9785
- function repairLoneSurrogateEscapes(json6) {
9786
- if (!json6.includes("\\u")) return json6;
9783
+ function repairLoneSurrogateEscapes(json7) {
9784
+ if (!json7.includes("\\u")) return json7;
9787
9785
  const hexAt = (i2) => {
9788
- const h2 = json6.slice(i2, i2 + 4);
9786
+ const h2 = json7.slice(i2, i2 + 4);
9789
9787
  return /^[0-9A-Fa-f]{4}$/.test(h2) ? parseInt(h2, 16) : -1;
9790
9788
  };
9791
9789
  let out2 = "";
9792
9790
  let inString = false;
9793
- for (let i2 = 0; i2 < json6.length; i2++) {
9794
- const c2 = json6[i2];
9791
+ for (let i2 = 0; i2 < json7.length; i2++) {
9792
+ const c2 = json7[i2];
9795
9793
  if (!inString) {
9796
9794
  if (c2 === '"') inString = true;
9797
9795
  out2 += c2;
@@ -9802,11 +9800,11 @@ function repairLoneSurrogateEscapes(json6) {
9802
9800
  out2 += c2;
9803
9801
  continue;
9804
9802
  }
9805
- if (c2 !== "\\" || i2 + 1 >= json6.length) {
9803
+ if (c2 !== "\\" || i2 + 1 >= json7.length) {
9806
9804
  out2 += c2;
9807
9805
  continue;
9808
9806
  }
9809
- const e2 = json6[i2 + 1];
9807
+ const e2 = json7[i2 + 1];
9810
9808
  const v2 = e2 === "u" ? hexAt(i2 + 2) : -1;
9811
9809
  if (v2 < 0) {
9812
9810
  out2 += c2 + e2;
@@ -9814,9 +9812,9 @@ function repairLoneSurrogateEscapes(json6) {
9814
9812
  continue;
9815
9813
  }
9816
9814
  if (v2 >= 55296 && v2 <= 56319) {
9817
- const low = json6[i2 + 6] === "\\" && json6[i2 + 7] === "u" ? hexAt(i2 + 8) : -1;
9815
+ const low = json7[i2 + 6] === "\\" && json7[i2 + 7] === "u" ? hexAt(i2 + 8) : -1;
9818
9816
  if (low >= 56320 && low <= 57343) {
9819
- out2 += json6.slice(i2, i2 + 12);
9817
+ out2 += json7.slice(i2, i2 + 12);
9820
9818
  i2 += 11;
9821
9819
  continue;
9822
9820
  }
@@ -9829,7 +9827,7 @@ function repairLoneSurrogateEscapes(json6) {
9829
9827
  i2 += 5;
9830
9828
  continue;
9831
9829
  }
9832
- out2 += json6.slice(i2, i2 + 6);
9830
+ out2 += json7.slice(i2, i2 + 6);
9833
9831
  i2 += 5;
9834
9832
  }
9835
9833
  return out2;
@@ -9848,12 +9846,12 @@ function measure(nodes, limits) {
9848
9846
  }
9849
9847
  return count2 > limits.maxNodes ? "too_many_nodes" : null;
9850
9848
  }
9851
- function layoutRichContent(json6, limits = RICH_CONTENT_LIMITS2) {
9852
- if (json6 === "") return { blocks: [] };
9853
- if (utf8Length(json6, limits.maxBytes) > limits.maxBytes) return { rejected: "too_large" };
9849
+ function layoutRichContent(json7, limits = RICH_CONTENT_LIMITS2) {
9850
+ if (json7 === "") return { blocks: [] };
9851
+ if (utf8Length(json7, limits.maxBytes) > limits.maxBytes) return { rejected: "too_large" };
9854
9852
  let parsed;
9855
9853
  try {
9856
- parsed = JSON.parse(repairLoneSurrogateEscapes(json6));
9854
+ parsed = JSON.parse(repairLoneSurrogateEscapes(json7));
9857
9855
  } catch {
9858
9856
  return { rejected: "invalid_json" };
9859
9857
  }
@@ -10206,14 +10204,14 @@ function resolveActionEvaluator(explicit) {
10206
10204
  }
10207
10205
  function responseBytes(value) {
10208
10206
  try {
10209
- const json6 = JSON.stringify(value);
10210
- if (typeof json6 !== "string") return 0;
10207
+ const json7 = JSON.stringify(value);
10208
+ if (typeof json7 !== "string") return 0;
10211
10209
  const envelope = JSON.stringify({
10212
10210
  protocol: "himi.t5.frame/1",
10213
10211
  type: "bridge",
10214
- payload: { op: "wix_result", id: "k000000", ok: true, payload: json6 }
10212
+ payload: { op: "wix_result", id: "k000000", ok: true, payload: json7 }
10215
10213
  });
10216
- return typeof envelope === "string" ? utf8Budget(envelope) : utf8Budget(json6);
10214
+ return typeof envelope === "string" ? utf8Budget(envelope) : utf8Budget(json7);
10217
10215
  } catch {
10218
10216
  return 0;
10219
10217
  }
@@ -12758,7 +12756,8 @@ var init_validate_descriptor_core = __esm({
12758
12756
  trailingIcon: "string",
12759
12757
  validation: "any",
12760
12758
  value: "string",
12761
- valuePath: "string"
12759
+ valuePath: "string",
12760
+ visibilityToggle: "boolean"
12762
12761
  },
12763
12762
  TimeGrid: {
12764
12763
  anchorDate: "string",
@@ -15445,8 +15444,8 @@ __export(quickjs_evaluator_exports, {
15445
15444
  uninstallQuickJsBootEvaluator: () => uninstallQuickJsBootEvaluator
15446
15445
  });
15447
15446
  function inputJson(input) {
15448
- const json6 = JSON.stringify(input ?? {});
15449
- return json6 === void 0 ? "{}" : json6;
15447
+ const json7 = JSON.stringify(input ?? {});
15448
+ return json7 === void 0 ? "{}" : json7;
15450
15449
  }
15451
15450
  function timerGlobals(hide, live3) {
15452
15451
  const hidden = new Set(hide ?? []);
@@ -25108,11 +25107,11 @@ function himiPluginManifest() {
25108
25107
  };
25109
25108
  }
25110
25109
  function himiPluginFiles(skillMd) {
25111
- const json6 = (o2) => `${JSON.stringify(o2, null, 2)}
25110
+ const json7 = (o2) => `${JSON.stringify(o2, null, 2)}
25112
25111
  `;
25113
25112
  return [
25114
- { path: ".claude-plugin/plugin.json", text: json6(himiPluginManifest()) },
25115
- { path: ".mcp.json", text: json6({ mcpServers: { [HIMI_PLUGIN_NAME]: { command: HIMI_MCP_SERVER.command, args: [...HIMI_MCP_SERVER.args] } } }) },
25113
+ { path: ".claude-plugin/plugin.json", text: json7(himiPluginManifest()) },
25114
+ { path: ".mcp.json", text: json7({ mcpServers: { [HIMI_PLUGIN_NAME]: { command: HIMI_MCP_SERVER.command, args: [...HIMI_MCP_SERVER.args] } } }) },
25116
25115
  { path: "skills/himalaya/SKILL.md", text: skillMd }
25117
25116
  ];
25118
25117
  }
@@ -25140,11 +25139,11 @@ function connectorPluginManifest() {
25140
25139
  };
25141
25140
  }
25142
25141
  function connectorPluginFiles(mcpUrl, skillMd) {
25143
- const json6 = (o2) => `${JSON.stringify(o2, null, 2)}
25142
+ const json7 = (o2) => `${JSON.stringify(o2, null, 2)}
25144
25143
  `;
25145
25144
  return [
25146
- { path: ".claude-plugin/plugin.json", text: json6(connectorPluginManifest()) },
25147
- { path: ".mcp.json", text: json6({ mcpServers: { [CONNECTOR_PLUGIN_NAME]: { type: "http", url: mcpUrl } } }) },
25145
+ { path: ".claude-plugin/plugin.json", text: json7(connectorPluginManifest()) },
25146
+ { path: ".mcp.json", text: json7({ mcpServers: { [CONNECTOR_PLUGIN_NAME]: { type: "http", url: mcpUrl } } }) },
25148
25147
  { path: `skills/${CONNECTOR_PLUGIN_NAME}/SKILL.md`, text: skillMd }
25149
25148
  ];
25150
25149
  }
@@ -28250,8 +28249,8 @@ function lastDistFromJob(job, now = /* @__PURE__ */ new Date()) {
28250
28249
  const capabilities = [...new Set(job.buildCapabilities.filter((x2) => typeof x2 === "string").map(catalogKey))].sort();
28251
28250
  return { app: job.app, jobId: job.jobId, shell: job.shell, capabilities, finishedAt: now.toISOString() };
28252
28251
  }
28253
- function needsBinaryNotice(json6) {
28254
- const nb = json6?.needsBinary;
28252
+ function needsBinaryNotice(json7) {
28253
+ const nb = json7?.needsBinary;
28255
28254
  if (!nb || !Array.isArray(nb.missing)) return null;
28256
28255
  const missing = nb.missing.filter((x2) => typeof x2 === "string");
28257
28256
  if (!missing.length) return null;
@@ -30366,7 +30365,7 @@ function errorMessageFor(args) {
30366
30365
  return defaultMessage(failure, args.catalog);
30367
30366
  }
30368
30367
  function shouldRevealError(args) {
30369
- if (args.hasWorkerError) return true;
30368
+ if (args.hasWorkerError || args.feedbackShown) return true;
30370
30369
  if (args.submitAttempted) return true;
30371
30370
  switch (resolveMode(args.rule)) {
30372
30371
  case "live":
@@ -31265,6 +31264,27 @@ var init_icon_catalog_generated = __esm({
31265
31264
  "license": "Apache-2.0",
31266
31265
  "libVersion": "0.45.9"
31267
31266
  },
31267
+ "concealed": {
31268
+ "category": "status",
31269
+ "path": [
31270
+ "M15.725 13.525L14.625 12.425C15.058 11.242 14.833 10.258 13.95 9.475C13.067 8.692 12.108 8.492 11.075 8.875L9.975 7.775C10.258 7.592 10.575 7.458 10.925 7.375C11.275 7.292 11.633 7.25 12 7.25C13.183 7.25 14.188 7.663 15.013 8.488C15.838 9.313 16.25 10.317 16.25 11.5C16.25 11.867 16.204 12.229 16.113 12.588C16.021 12.946 15.892 13.258 15.725 13.525ZM18.95 16.75L17.95 15.75C18.767 15.15 19.479 14.479 20.088 13.738C20.696 12.996 21.142 12.25 21.425 11.5C20.592 9.65 19.342 8.188 17.675 7.113C16.008 6.038 14.2 5.5 12.25 5.5C11.55 5.5 10.833 5.567 10.1 5.7C9.367 5.833 8.792 5.992 8.375 6.175L7.225 5C7.808 4.733 8.554 4.5 9.463 4.3C10.371 4.1 11.258 4 12.125 4C14.508 4 16.688 4.679 18.663 6.038C20.638 7.396 22.083 9.217 23 11.5C22.567 12.567 22.008 13.542 21.325 14.425C20.642 15.308 19.85 16.083 18.95 16.75ZM20.4 22.4L16.2 18.275C15.617 18.508 14.958 18.688 14.225 18.813C13.492 18.938 12.75 19 12 19C9.567 19 7.358 18.321 5.375 16.963C3.392 15.604 1.933 13.783 1 11.5C1.333 10.633 1.796 9.788 2.388 8.963C2.979 8.138 3.7 7.35 4.55 6.6L1.4 3.45L2.45 2.375L21.375 21.3L20.4 22.4ZM5.575 7.65C4.958 8.1 4.362 8.692 3.788 9.425C3.213 10.158 2.8 10.85 2.55 11.5C3.4 13.35 4.679 14.813 6.388 15.888C8.096 16.963 10.033 17.5 12.2 17.5C12.75 17.5 13.292 17.467 13.825 17.4C14.358 17.333 14.758 17.233 15.025 17.1L13.425 15.5C13.242 15.583 13.017 15.646 12.75 15.688C12.483 15.729 12.233 15.75 12 15.75C10.833 15.75 9.833 15.342 9 14.525C8.167 13.708 7.75 12.7 7.75 11.5C7.75 11.25 7.771 11 7.813 10.75C7.854 10.5 7.917 10.275 8 10.075L5.575 7.65ZM13.2 11.2ZM10.3 12.65Z"
31271
+ ],
31272
+ "style": "filled",
31273
+ "ios": {
31274
+ "sf": "eye.slash",
31275
+ "match": "exact"
31276
+ },
31277
+ "android": {
31278
+ "material": "VisibilityOff",
31279
+ "match": "exact"
31280
+ },
31281
+ "aliases": [
31282
+ "eye_slash"
31283
+ ],
31284
+ "source": "material-symbols/visibility_off",
31285
+ "license": "Apache-2.0",
31286
+ "libVersion": "0.45.9"
31287
+ },
31268
31288
  "cookie": {
31269
31289
  "category": "commerce",
31270
31290
  "path": [
@@ -32730,6 +32750,9 @@ var init_icon_catalog_generated = __esm({
32730
32750
  "material": "Visibility",
32731
32751
  "match": "exact"
32732
32752
  },
32753
+ "aliases": [
32754
+ "eye"
32755
+ ],
32733
32756
  "source": "material-symbols/visibility",
32734
32757
  "license": "Apache-2.0",
32735
32758
  "libVersion": "0.45.9"
@@ -32841,6 +32864,8 @@ var init_icon_catalog_generated = __esm({
32841
32864
  "clock": "clock",
32842
32865
  "close": "close",
32843
32866
  "xmark": "close",
32867
+ "concealed": "concealed",
32868
+ "eyeslash": "concealed",
32844
32869
  "cookie": "cookie",
32845
32870
  "copy": "copy",
32846
32871
  "dashboard": "dashboard",
@@ -32931,6 +32956,7 @@ var init_icon_catalog_generated = __esm({
32931
32956
  "trash": "trash",
32932
32957
  "undo": "undo",
32933
32958
  "visible": "visible",
32959
+ "eye": "visible",
32934
32960
  "volume": "volume",
32935
32961
  "warning": "warning",
32936
32962
  "wifi": "wifi",
@@ -33371,7 +33397,107 @@ function memberInstanceRefusal(e2) {
33371
33397
  if (e2 instanceof SiteInstanceUnavailable) return { status: 502, body: { error: "SiteInstanceUnavailable", metaSiteId: e2.metaSiteId, reason: e2.reason } };
33372
33398
  return { status: 502, body: { error: "SiteInstanceUnavailable" } };
33373
33399
  }
33374
- var WIX_API, ONE_APP_SESSION, OWNER_SCOPED_WIX_HOST, WIX_FORWARDABLE_HEADERS, OWNER_REFRESH_MARGIN_MS, OWNER_RENEW_MIN_AGE_MS, OWNER_MINT_TIMEOUT_MS, OwnerInstanceCache, OWNER_SITES_QUERY_PATH, OWNER_SITES_COUNT_PATH, OwnerSitesCache, ACCOUNT_FORWARD_ALLOWLIST, ACCOUNT_JOIN_PATHS, NotSiteMember, AccountSessionExpired, SiteInstanceUnavailable, MEMBER_REFRESH_MARGIN_MS, MEMBER_NEGATIVE_TTL_MS, MEMBER_TRANSIENT_TTL_MS, MemberInstanceCache;
33400
+ async function mintMemberSessionToken(sessionCookie, metaSiteId, fetchImpl = fetch, timeoutMs = OWNER_MINT_TIMEOUT_MS) {
33401
+ if (!isSafeMsid(metaSiteId)) throw new MemberSessionRefused(metaSiteId, "bad metaSiteId");
33402
+ const xsrf = /(?:^|;\s*)XSRF-TOKEN=([^;]+)/.exec(sessionCookie)?.[1];
33403
+ const ws2 = /(?:^|;\s*)wixSession2=([^;]+)/.exec(sessionCookie)?.[1];
33404
+ const base = { Cookie: sessionCookie, Accept: "application/json", ...xsrf ? { "x-xsrf-token": xsrf } : {} };
33405
+ const step = async (url, init) => {
33406
+ const abort = new AbortController();
33407
+ const timer = setTimeout(() => abort.abort(), timeoutMs);
33408
+ try {
33409
+ const res = await fetchImpl(url, { ...init, signal: abort.signal, redirect: "manual" });
33410
+ return { status: res.status, text: await res.text() };
33411
+ } catch (e2) {
33412
+ throw new SiteInstanceUnavailable(metaSiteId, `member session failed: ${e2?.message ?? e2}`);
33413
+ } finally {
33414
+ clearTimeout(timer);
33415
+ }
33416
+ };
33417
+ const verdict = (what, status) => {
33418
+ if (status === 401) throw new AccountSessionExpired(metaSiteId, `${what} refused (401)`);
33419
+ if (status === 403 || status === 404) throw new MemberSessionRefused(metaSiteId, `${what} refused (${status})`);
33420
+ throw new SiteInstanceUnavailable(metaSiteId, `${what} failed (${status})`);
33421
+ };
33422
+ const mint = await step(`${ONE_APP_SESSION}/${metaSiteId}/signed-instance?signed_instance_type=User`, {
33423
+ method: "GET",
33424
+ headers: { ...base, ...ws2 ? { Authorization: ws2 } : {} }
33425
+ });
33426
+ if (mint.status < 200 || mint.status >= 300) verdict("user instance", mint.status);
33427
+ let user;
33428
+ try {
33429
+ user = JSON.parse(mint.text).signedInstance;
33430
+ } catch {
33431
+ }
33432
+ if (typeof user !== "string" || !user) throw new SiteInstanceUnavailable(metaSiteId, "no user instance");
33433
+ const session = await step(MEMBER_SESSION_URL, {
33434
+ method: "POST",
33435
+ headers: { ...base, Authorization: user, "Content-Type": "application/json" },
33436
+ body: JSON.stringify({ metaSiteId })
33437
+ });
33438
+ if (session.status < 200 || session.status >= 300) verdict("member-session", session.status);
33439
+ let token;
33440
+ try {
33441
+ token = JSON.parse(session.text).sessionToken;
33442
+ } catch {
33443
+ }
33444
+ if (typeof token !== "string" || !token) throw new SiteInstanceUnavailable(metaSiteId, "no session token");
33445
+ return token;
33446
+ }
33447
+ function memberSessionRefusal(e2) {
33448
+ if (e2 instanceof AccountSessionExpired) return { status: 401, body: { error: "AccountSessionExpired" } };
33449
+ if (e2 instanceof MemberSessionRefused) return { status: 403, body: { error: "MemberSessionRefused" } };
33450
+ return { status: 502, body: { error: "SiteInstanceUnavailable" } };
33451
+ }
33452
+ function inviteShortLinkUrl(shortId) {
33453
+ return /^[A-Za-z0-9-]{1,64}$/.test(shortId) ? `https://wix.app/mobile.apps/${shortId}` : null;
33454
+ }
33455
+ function isInviteLanding(url) {
33456
+ if (url.protocol !== "https:") return false;
33457
+ const host = url.hostname.toLowerCase();
33458
+ if (host === "wix.app") return url.pathname.startsWith("/invite/");
33459
+ return (host === "wix.com" || host.endsWith(".wix.com")) && url.pathname.includes("/place-invites/invite-lp/");
33460
+ }
33461
+ function inviteHopAllowed(url) {
33462
+ if (url.protocol !== "https:" || url.port !== "" && url.port !== "443" || url.username || url.password) return false;
33463
+ const host = url.hostname.toLowerCase();
33464
+ return host === "wix.app" || host === "wix.com" || host.endsWith(".wix.com");
33465
+ }
33466
+ async function resolveInviteShortLink(shortId, fetchImpl = fetch, timeoutMs = 15e3) {
33467
+ const start = inviteShortLinkUrl(shortId);
33468
+ if (!start) return null;
33469
+ let url = new URL(start);
33470
+ for (let hop = 0; hop < INVITE_MAX_HOPS; hop++) {
33471
+ const abort = new AbortController();
33472
+ const timer = setTimeout(() => abort.abort(), timeoutMs);
33473
+ let res;
33474
+ try {
33475
+ res = await fetchImpl(url.toString(), { method: "GET", headers: { Accept: "text/html" }, redirect: "manual", credentials: "omit", signal: abort.signal });
33476
+ } catch {
33477
+ return null;
33478
+ } finally {
33479
+ clearTimeout(timer);
33480
+ }
33481
+ try {
33482
+ await res.body?.cancel();
33483
+ } catch {
33484
+ }
33485
+ if (res.status < 300 || res.status >= 400) return null;
33486
+ const location = res.headers.get("location");
33487
+ if (!location) return null;
33488
+ let next;
33489
+ try {
33490
+ next = new URL(location, url);
33491
+ } catch {
33492
+ return null;
33493
+ }
33494
+ if (isInviteLanding(next)) return next.toString();
33495
+ if (!inviteHopAllowed(next)) return null;
33496
+ url = next;
33497
+ }
33498
+ return null;
33499
+ }
33500
+ var WIX_API, ONE_APP_SESSION, OWNER_SCOPED_WIX_HOST, WIX_FORWARDABLE_HEADERS, OWNER_REFRESH_MARGIN_MS, OWNER_RENEW_MIN_AGE_MS, OWNER_MINT_TIMEOUT_MS, OwnerInstanceCache, OWNER_SITES_QUERY_PATH, OWNER_SITES_COUNT_PATH, OwnerSitesCache, ACCOUNT_FORWARD_ALLOWLIST, ACCOUNT_JOIN_PATHS, NotSiteMember, AccountSessionExpired, SiteInstanceUnavailable, MEMBER_REFRESH_MARGIN_MS, MEMBER_NEGATIVE_TTL_MS, MEMBER_TRANSIENT_TTL_MS, MemberInstanceCache, MEMBER_SESSION_URL, MemberSessionRefused, INVITE_MAX_HOPS;
33375
33501
  var init_wix_bridge = __esm({
33376
33502
  "../../core/serve-runtime/src/wix-bridge.ts"() {
33377
33503
  init_sha256();
@@ -33680,6 +33806,17 @@ ${session}`);
33680
33806
  return entry;
33681
33807
  }
33682
33808
  };
33809
+ MEMBER_SESSION_URL = "https://manage.wix.com/_api/users-members/v1/user-member-connections/member-session";
33810
+ MemberSessionRefused = class extends Error {
33811
+ constructor(metaSiteId, reason) {
33812
+ super(`MemberSessionRefused(metaSiteId: ${metaSiteId}): ${reason}`);
33813
+ this.metaSiteId = metaSiteId;
33814
+ this.reason = reason;
33815
+ this.name = "MemberSessionRefused";
33816
+ }
33817
+ code = "MemberSessionRefused";
33818
+ };
33819
+ INVITE_MAX_HOPS = 8;
33683
33820
  }
33684
33821
  });
33685
33822
 
@@ -37910,10 +38047,10 @@ function createRicosHostSession(o2) {
37910
38047
  });
37911
38048
  };
37912
38049
  const writes = () => committed || state.dirty;
37913
- const moved = (json6) => {
37914
- if (json6 === lastContent) return false;
37915
- lastContent = json6;
37916
- if (json6 !== baseline) {
38050
+ const moved = (json7) => {
38051
+ if (json7 === lastContent) return false;
38052
+ lastContent = json7;
38053
+ if (json7 !== baseline) {
37917
38054
  state.dirty = true;
37918
38055
  if (dirtyTimer !== null) t2.clearTimeout(dirtyTimer);
37919
38056
  dirtyTimer = t2.setTimeout(() => {
@@ -38137,13 +38274,13 @@ async function runRicosImageUpload(o2) {
38137
38274
  return fail5("put");
38138
38275
  }
38139
38276
  if (!res.ok) return fail5("put");
38140
- let json6;
38277
+ let json7;
38141
38278
  try {
38142
- json6 = await res.json();
38279
+ json7 = await res.json();
38143
38280
  } catch {
38144
38281
  return fail5("bad_descriptor");
38145
38282
  }
38146
- const root = json6 && typeof json6 === "object" ? json6 : {};
38283
+ const root = json7 && typeof json7 === "object" ? json7 : {};
38147
38284
  const d2 = root.file && typeof root.file === "object" ? root.file : root;
38148
38285
  const id = typeof d2.id === "string" ? d2.id : "";
38149
38286
  if (!id) return fail5("bad_descriptor");
@@ -38344,9 +38481,9 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
38344
38481
  locale: ctx.localeTag ?? "en",
38345
38482
  rtl: ctx.isRTL ?? document.documentElement.dir === "rtl",
38346
38483
  palette: { text: C2("textPrimary", "#13171E"), background: C2("surfacePrimary", "#FFFFFF"), accent: C2("accentPrimary", "#116DFF") },
38347
- onContent: (json6) => {
38484
+ onContent: (json7) => {
38348
38485
  const b2 = bagRef.current, n2 = nameRef.current;
38349
- if (b2 && n2) b2.set(n2, json6);
38486
+ if (b2 && n2) b2.set(n2, json7);
38350
38487
  },
38351
38488
  onToolbar: setToolbar,
38352
38489
  onFocusChange: setFocused,
@@ -38713,13 +38850,13 @@ async function runMediaFieldUpload(o2) {
38713
38850
  return { ok: false, reason: e2 instanceof Deadline || expired ? "timeout" : "put" };
38714
38851
  }
38715
38852
  if (!res.ok) return { ok: false, reason: "put" };
38716
- let json6;
38853
+ let json7;
38717
38854
  try {
38718
- json6 = await bounded2(res.json());
38855
+ json7 = await bounded2(res.json());
38719
38856
  } catch (e2) {
38720
38857
  return { ok: false, reason: e2 instanceof Deadline || expired ? "timeout" : "bad_descriptor" };
38721
38858
  }
38722
- const root = json6 && typeof json6 === "object" ? json6 : {};
38859
+ const root = json7 && typeof json7 === "object" ? json7 : {};
38723
38860
  const d2 = root.file && typeof root.file === "object" ? root.file : root;
38724
38861
  const mediaId = typeof d2.id === "string" ? d2.id : "";
38725
38862
  if (!mediaId) return { ok: false, reason: "bad_descriptor" };
@@ -45834,7 +45971,7 @@ var init_pdf = __esm({
45834
45971
  var currentOrdered;
45835
45972
  var marked = false;
45836
45973
  var root = true;
45837
- var json6 = stringifyWithProperSymbolsConversion(text9, function(key2, value) {
45974
+ var json7 = stringifyWithProperSymbolsConversion(text9, function(key2, value) {
45838
45975
  key2 = $String(key2);
45839
45976
  if (propertyList) {
45840
45977
  if (key2 === END_MARK) {
@@ -45861,16 +45998,16 @@ var init_pdf = __esm({
45861
45998
  }
45862
45999
  return value;
45863
46000
  }, space);
45864
- if (typeof json6 != "string") return json6;
45865
- if (ILL_FORMED_UNICODE) json6 = replace(json6, surrogates, fixIllFormedJSON);
45866
- if (!marked) return json6;
46001
+ if (typeof json7 != "string") return json7;
46002
+ if (ILL_FORMED_UNICODE) json7 = replace(json7, surrogates, fixIllFormedJSON);
46003
+ if (!marked) return json7;
45867
46004
  var result = "";
45868
- var length = json6.length;
46005
+ var length = json7.length;
45869
46006
  for (var i2 = 0; i2 < length; i2++) {
45870
- var chr = charAt(json6, i2);
46007
+ var chr = charAt(json7, i2);
45871
46008
  if (chr === '"') {
45872
- var end = parseJSONString(json6, ++i2).end - 1;
45873
- var string5 = slice(json6, i2, end);
46009
+ var end = parseJSONString(json7, ++i2).end - 1;
46010
+ var string5 = slice(json7, i2, end);
45874
46011
  if (slice(string5, 0, RAW_MARK_LENGTH) === RAW_MARK) result += rawStrings[slice(string5, RAW_MARK_LENGTH)];
45875
46012
  else if (slice(string5, 0, KEY_MARK_LENGTH) === KEY_MARK) result += '"' + slice(string5, KEY_MARK_LENGTH) + '"';
45876
46013
  else result += '"' + string5 + '"';
@@ -124567,6 +124704,9 @@ var init_renderNode = __esm({
124567
124704
  const onChangeAction = resolveRowAction2(props.onChange ?? cfg.onChange, ctx);
124568
124705
  const borderless = props.borderless === true || cfg.borderless === true;
124569
124706
  const secure = props.secure === true || cfg.secure === true;
124707
+ const [valueVisible, setValueVisible] = React9.useState(false);
124708
+ const visibilityToggle = secure && (props.visibilityToggle === true || cfg.visibilityToggle === true);
124709
+ const visibilityLabel = ctx.catalog?.get(valueVisible ? "auth.gate.password.hide" : "auth.gate.password.show") ?? (valueVisible ? "Hide password" : "Show password");
124570
124710
  const erroredProp = props.error === true || cfg.error === true;
124571
124711
  const muted = C2("textSecondary", "#888");
124572
124712
  const pathProp = typeof props.valuePath === "string" ? props.valuePath : typeof cfg.valuePath === "string" ? cfg.valuePath : void 0;
@@ -124672,13 +124812,18 @@ var init_renderNode = __esm({
124672
124812
  const hasWorkerError = Boolean(workerError && workerError.trim());
124673
124813
  const painted2 = rawMessage === null ? "" : translateOnly(rawMessage);
124674
124814
  const message = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
124815
+ const [feedbackShown, setFeedbackShown] = React9.useState(false);
124675
124816
  const revealed = message !== null && shouldRevealError({
124676
124817
  rule,
124818
+ feedbackShown,
124677
124819
  hasWorkerError,
124678
124820
  touched,
124679
124821
  focused: isFocused,
124680
124822
  submitAttempted: formBag?.submitAttempted ?? false
124681
124823
  });
124824
+ React9.useEffect(() => {
124825
+ if (revealed) setFeedbackShown(true);
124826
+ }, [revealed]);
124682
124827
  const errored = erroredProp || revealed;
124683
124828
  const generatedId = React9.useId();
124684
124829
  const errorId = revealed ? `${componentId ?? generatedId}__error` : void 0;
@@ -124692,6 +124837,16 @@ var init_renderNode = __esm({
124692
124837
  });
124693
124838
  }
124694
124839
  };
124840
+ const ownsPrivateDraft = React9.useRef(false);
124841
+ React9.useEffect(() => {
124842
+ if (visibilityToggle && !isBound) ownsPrivateDraft.current = true;
124843
+ }, [visibilityToggle, isBound]);
124844
+ const clearSensitiveDraft = React9.useRef(() => {
124845
+ });
124846
+ clearSensitiveDraft.current = () => {
124847
+ if (ownsPrivateDraft.current && !isBound) emit("");
124848
+ };
124849
+ React9.useEffect(() => () => clearSensitiveDraft.current(), []);
124695
124850
  const onInput = (e2) => {
124696
124851
  const v2 = e2.currentTarget.value;
124697
124852
  setLocal(v2);
@@ -124779,13 +124934,33 @@ var init_renderNode = __esm({
124779
124934
  /* @__PURE__ */ jsxs7("div", { style: composedBox, children: [
124780
124935
  props.leadingIcon && accIcon(props.leadingIcon),
124781
124936
  prefixText && /* @__PURE__ */ jsx10("span", { style: { color: muted, flex: "none" }, children: prefixText }),
124782
- multilineBox ? /* @__PURE__ */ jsx10("textarea", { "data-component-id": componentId, id: fieldDomId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, rows: 2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, style: inputBase }) : /* @__PURE__ */ jsx10("input", { "data-component-id": componentId, id: htmlId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, type: secure ? "password" : "text", value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, enterKeyHint, style: inputBase }),
124937
+ multilineBox ? /* @__PURE__ */ jsx10("textarea", { "data-component-id": componentId, id: fieldDomId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, rows: 2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, style: inputBase }) : /* @__PURE__ */ jsx10("input", { "data-component-id": componentId, id: htmlId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, type: secure && !(visibilityToggle && valueVisible) ? "password" : "text", value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, enterKeyHint, style: inputBase }),
124783
124938
  suffixText && /* @__PURE__ */ jsx10("span", { style: { color: muted, flex: "none" }, children: suffixText }),
124784
124939
  props.clearButton && local && /* @__PURE__ */ jsx10("span", { onClick: () => {
124785
124940
  setLocal("");
124786
124941
  setEdited(true);
124787
124942
  emit("");
124788
124943
  }, style: { display: "inline-grid", placeItems: "center", width: 18, height: 18, borderRadius: "50%", background: C2("surfaceTertiary", "#e3e6ea"), color: muted, fontSize: 12, flex: "none", cursor: "pointer" }, children: "\xD7" }),
124944
+ visibilityToggle && /* @__PURE__ */ jsx10(
124945
+ "button",
124946
+ {
124947
+ type: "button",
124948
+ "aria-label": visibilityLabel,
124949
+ "aria-pressed": valueVisible,
124950
+ "data-component-id": `${componentId}_toggle`,
124951
+ onMouseDown: (event) => event.preventDefault(),
124952
+ onClick: () => {
124953
+ const input = inputRef.current;
124954
+ const start = input?.selectionStart, end = input?.selectionEnd;
124955
+ setValueVisible(!valueVisible);
124956
+ queueMicrotask(() => {
124957
+ if (input && start != null && end != null) input.setSelectionRange(start, end);
124958
+ });
124959
+ },
124960
+ style: { background: "transparent", border: 0, padding: 8, minWidth: 44, minHeight: 44, display: "grid", placeItems: "center", cursor: "pointer", color: muted },
124961
+ children: iconSvg(valueVisible ? "eye.slash" : "eye", { size: 20, color: muted })
124962
+ }
124963
+ ),
124789
124964
  props.trailingIcon && accIcon(props.trailingIcon)
124790
124965
  ] }),
124791
124966
  revealed ? /* @__PURE__ */ jsx10("span", { id: errorId, role: "alert", style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: C2("danger", "#E62214"), paddingLeft: 2 }, children: message }) : (props.helperText ?? cfg.helperText) != null ? /* @__PURE__ */ jsx10("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: errored ? C2("danger", "#E62214") : muted, paddingLeft: 2 }, children: txt(props.helperText ?? cfg.helperText, ctx) }) : null
@@ -132081,6 +132256,47 @@ function webWixSession(req, res, state) {
132081
132256
  }
132082
132257
  return session;
132083
132258
  }
132259
+ async function pipeWebWixStream(upstream, res, signal, recordStream) {
132260
+ res.statusCode = upstream.status;
132261
+ for (const name of ["content-type", "cache-control", "retry-after"]) {
132262
+ const value = upstream.headers.get(name);
132263
+ if (value) res.setHeader(name, value);
132264
+ }
132265
+ res.setHeader("access-control-allow-origin", "*");
132266
+ res.setHeader("cache-control", res.getHeader("cache-control") ?? "no-cache");
132267
+ recordStream("proxy", upstream.status);
132268
+ if (!upstream.body) {
132269
+ res.end();
132270
+ return;
132271
+ }
132272
+ const reader = upstream.body.getReader();
132273
+ for (; ; ) {
132274
+ if (signal.aborted) {
132275
+ await reader.cancel();
132276
+ break;
132277
+ }
132278
+ const chunk = await reader.read();
132279
+ if (chunk.done) break;
132280
+ if (chunk.value && !res.write(chunk.value)) {
132281
+ await new Promise((resolve65) => {
132282
+ let settled = false;
132283
+ const finish2 = () => {
132284
+ if (settled) return;
132285
+ settled = true;
132286
+ res.off("drain", finish2);
132287
+ res.off("close", finish2);
132288
+ resolve65();
132289
+ };
132290
+ if (res.destroyed || !res.writable) finish2();
132291
+ else {
132292
+ res.once("drain", finish2);
132293
+ res.once("close", finish2);
132294
+ }
132295
+ });
132296
+ }
132297
+ }
132298
+ if (!res.destroyed) res.end();
132299
+ }
132084
132300
  async function handleWebWix(req, res, state) {
132085
132301
  const session = webWixSession(req, res, state);
132086
132302
  const auth = resolveWebWixAuth(state.app);
@@ -132142,7 +132358,13 @@ async function handleWebWix(req, res, state) {
132142
132358
  res.end(JSON.stringify({ error: "webwix_stream_bad_request" }));
132143
132359
  return;
132144
132360
  }
132145
- if (state.wix.mode === "mock") {
132361
+ const sitePinned = Object.keys(forwardedHeaders).some((name) => name.toLowerCase() === "wix-site-id");
132362
+ if (isWixAccountModeApp(state.app) && sitePinned && !session.account) {
132363
+ recordStream("proxy", 401);
132364
+ return reply(401, { error: "webwix_account_signed_out" });
132365
+ }
132366
+ const accountSiteStream = isWixAccountModeApp(state.app) && !!session.account && sitePinned;
132367
+ if (state.wix.mode === "mock" && (!accountSiteStream || failsClosed(state.wix))) {
132146
132368
  const matchCtx = { host: target.host, query: Object.fromEntries(target.searchParams.entries()), headers: forwardedHeaders, body };
132147
132369
  let match = matchRuleEx(state.wix.rules, method, target.pathname, matchCtx);
132148
132370
  if (match && (match.rule.kind ?? "mock") !== "mock") {
@@ -132175,6 +132397,38 @@ async function handleWebWix(req, res, state) {
132175
132397
  };
132176
132398
  res.once("close", onResponseClose);
132177
132399
  try {
132400
+ const account = isWixAccountModeApp(state.app) ? session.account : void 0;
132401
+ const streamSite = Object.entries(forwardedHeaders).find(([name]) => name.toLowerCase() === "wix-site-id")?.[1]?.trim() ?? "";
132402
+ if (account && streamSite) {
132403
+ if (!isSafeMsid(streamSite)) {
132404
+ recordStream("proxy", 400);
132405
+ return reply(400, { error: "webwix_account_bad_site_id" });
132406
+ }
132407
+ let upstream2;
132408
+ try {
132409
+ upstream2 = await webWixStream(method, target.toString(), body, await webAccountMemberInstances.instance(streamSite, account.cookie), void 0, forwardedHeaders, abort.signal);
132410
+ if (upstream2.status === 401 && !abort.signal.aborted) {
132411
+ try {
132412
+ await upstream2.body?.cancel();
132413
+ } catch {
132414
+ }
132415
+ upstream2 = await webWixStream(method, target.toString(), body, await webAccountMemberInstances.instance(streamSite, account.cookie, { force: true }), void 0, forwardedHeaders, abort.signal);
132416
+ }
132417
+ } catch (e2) {
132418
+ if (e2 instanceof AccountSessionExpired) {
132419
+ webAccountMemberInstances.forgetSession(account.cookie);
132420
+ if (session.account === account) session.account = void 0;
132421
+ }
132422
+ if (e2 instanceof NotSiteMember || e2 instanceof SiteInstanceUnavailable || e2 instanceof AccountSessionExpired) {
132423
+ const refusal = memberInstanceRefusal(e2);
132424
+ recordStream("proxy", refusal.status);
132425
+ return reply(refusal.status, refusal.body);
132426
+ }
132427
+ throw e2;
132428
+ }
132429
+ await pipeWebWixStream(upstream2, res, abort.signal, recordStream);
132430
+ return;
132431
+ }
132178
132432
  if (!session.visitorToken && !session.memberToken) {
132179
132433
  try {
132180
132434
  session.visitorToken = await mintVisitor(resolveWixClientId(state.app) ?? WEBWIX_CLIENT_ID);
@@ -132195,45 +132449,7 @@ async function handleWebWix(req, res, state) {
132195
132449
  } catch {
132196
132450
  }
132197
132451
  }
132198
- res.statusCode = upstream.status;
132199
- for (const name of ["content-type", "cache-control", "retry-after"]) {
132200
- const value = upstream.headers.get(name);
132201
- if (value) res.setHeader(name, value);
132202
- }
132203
- res.setHeader("access-control-allow-origin", "*");
132204
- res.setHeader("cache-control", res.getHeader("cache-control") ?? "no-cache");
132205
- recordStream("proxy", upstream.status);
132206
- if (!upstream.body) {
132207
- res.end();
132208
- return;
132209
- }
132210
- const reader = upstream.body.getReader();
132211
- for (; ; ) {
132212
- if (abort.signal.aborted) {
132213
- await reader.cancel();
132214
- break;
132215
- }
132216
- const chunk = await reader.read();
132217
- if (chunk.done) break;
132218
- if (chunk.value && !res.write(chunk.value)) {
132219
- await new Promise((resolve65) => {
132220
- let settled = false;
132221
- const finish2 = () => {
132222
- if (settled) return;
132223
- settled = true;
132224
- res.off("drain", finish2);
132225
- res.off("close", finish2);
132226
- resolve65();
132227
- };
132228
- if (res.destroyed || !res.writable) finish2();
132229
- else {
132230
- res.once("drain", finish2);
132231
- res.once("close", finish2);
132232
- }
132233
- });
132234
- }
132235
- }
132236
- if (!res.destroyed) res.end();
132452
+ await pipeWebWixStream(upstream, res, abort.signal, recordStream);
132237
132453
  } catch {
132238
132454
  if (!abort.signal.aborted) {
132239
132455
  recordStream("proxy", 502);
@@ -132314,6 +132530,65 @@ async function handleWebWix(req, res, state) {
132314
132530
  }
132315
132531
  return reply(405, { error: "method_not_allowed" });
132316
132532
  }
132533
+ const accountRouteStarted = Date.now();
132534
+ const sealedAccountRoute = state.wix.mode === "mock" && failsClosed(state.wix);
132535
+ const logAccountRoute = (url, method, status) => {
132536
+ const t2 = new URL(url);
132537
+ recordWixTraffic(state.wix, state.appName, state.adminUrl, {
132538
+ ts: accountRouteStarted,
132539
+ source: sealedAccountRoute ? "mock" : "proxy",
132540
+ capability: "wix_api.web.account",
132541
+ host: t2.host,
132542
+ method,
132543
+ url: `${t2.origin}${t2.pathname}`,
132544
+ path: t2.pathname,
132545
+ status,
132546
+ durationMs: Date.now() - accountRouteStarted,
132547
+ ...sealedAccountRoute ? { mockRuleId: UNMATCHED_FAIL_CLOSED_ID } : {}
132548
+ });
132549
+ };
132550
+ const sealedRefusal = (url, method) => {
132551
+ const refusal = hermeticRefusal(method, new URL(url).pathname);
132552
+ logAccountRoute(url, method, refusal.status);
132553
+ res.statusCode = refusal.status;
132554
+ res.setHeader("content-type", refusal.headers["content-type"]);
132555
+ res.end(refusal.body);
132556
+ };
132557
+ if (path2 === "/v1/__webwix/account/member-session") {
132558
+ if (!accountApp) return reply(404, { error: "webwix_account_unsupported" });
132559
+ if (req.method !== "POST") return reply(405, { error: "method_not_allowed" });
132560
+ res.setHeader("cache-control", "no-store");
132561
+ const account = session.account;
132562
+ if (!account) return reply(401, { error: "webwix_account_signed_out" });
132563
+ const metaSiteId = String((await readJson9()).metaSiteId ?? "").trim();
132564
+ if (!isSafeMsid(metaSiteId)) return reply(400, { error: "webwix_account_bad_site_id" });
132565
+ if (sealedAccountRoute) return sealedRefusal(MEMBER_SESSION_URL, "POST");
132566
+ try {
132567
+ const sessionToken = await mintMemberSessionToken(account.cookie, metaSiteId, fetch);
132568
+ logAccountRoute(MEMBER_SESSION_URL, "POST", 200);
132569
+ return reply(200, { sessionToken });
132570
+ } catch (e2) {
132571
+ if (e2 instanceof AccountSessionExpired) {
132572
+ webAccountMemberInstances.forgetSession(account.cookie);
132573
+ if (session.account === account) session.account = void 0;
132574
+ }
132575
+ const refusal = memberSessionRefusal(e2);
132576
+ logAccountRoute(MEMBER_SESSION_URL, "POST", refusal.status);
132577
+ return reply(refusal.status, refusal.body);
132578
+ }
132579
+ }
132580
+ if (path2 === "/v1/__webwix/account/short-link") {
132581
+ if (!accountApp) return reply(404, { error: "webwix_account_unsupported" });
132582
+ if (req.method !== "POST") return reply(405, { error: "method_not_allowed" });
132583
+ res.setHeader("cache-control", "no-store");
132584
+ const shortId = String((await readJson9()).shortId ?? "").trim();
132585
+ const start = inviteShortLinkUrl(shortId);
132586
+ if (!start) return reply(400, { error: "webwix_short_link_bad_id" });
132587
+ if (sealedAccountRoute) return sealedRefusal(start, "GET");
132588
+ const url = await resolveInviteShortLink(shortId, fetch);
132589
+ logAccountRoute(start, "GET", url ? 200 : 404);
132590
+ return url ? reply(200, { url }) : reply(404, { error: "webwix_short_link_unresolved" });
132591
+ }
132317
132592
  if (path2 === "/v1/__webwix/call" && req.method === "POST") {
132318
132593
  const b2 = await readJson9();
132319
132594
  const ownerRung = b2.ownerMsid !== void 0 || b2.checkOwnerSession === true;
@@ -137465,10 +137740,10 @@ async function bakeWidgets(fetchPath, putWidget, ownBundles) {
137465
137740
  }
137466
137741
  continue;
137467
137742
  }
137468
- const json6 = JSON.stringify(snap);
137469
- await putWidget(widgetId, json6);
137743
+ const json7 = JSON.stringify(snap);
137744
+ await putWidget(widgetId, json7);
137470
137745
  widgets[widgetId] = {
137471
- contentEtag: snap.contentEtag ?? sha2564(json6),
137746
+ contentEtag: snap.contentEtag ?? sha2564(json7),
137472
137747
  ttlSeconds: snap.refresh?.ttlSeconds ?? 0
137473
137748
  };
137474
137749
  }
@@ -137492,10 +137767,10 @@ function tokensSnapshotMessage(app, base, status) {
137492
137767
  const why = status === 400 ? `the dev-server rejected the app id as malformed (400 bad_app). It must be lowercase letters, digits and hyphens, starting with a letter or digit, at most 63 characters, with at most one interior dot \u2014 so a leading underscore or an uppercase letter fails, on every build of that app. A single dot is FINE (an owner-namespaced slug), so do not remove one to get past this` : `${status} from the tokens route`;
137493
137768
  return `[release-build] tokens snapshot FAILED for "${app}" (${why}; ${base}/v1/tokens) \u2014 this release carries no tokensHash and the app will render with NO design tokens. On iOS an undefined colour token is invisible, not merely unstyled.` + (status === 400 ? ` Fix the app id (himalaya.content.json "name", or the package directory basename) to match that grammar \u2014 but do NOT drop an owner prefix's dot: \`himi push\` requires the manifest name to equal the composed <ownerPrefix>.<name>, so removing it trades this warning for a 400 "manifest.app must match app" and the app cannot publish at all.` : "");
137494
137769
  }
137495
- function pinBakedServerBaseUrl(json6, base) {
137770
+ function pinBakedServerBaseUrl(json7, base) {
137496
137771
  const escaped = base.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
137497
137772
  const boundary = /:\d+$/.test(base) ? "(?!\\d)" : "(?![\\w.-])(?!:\\d)";
137498
- return json6.replace(new RegExp(`${escaped}${boundary}`, "g"), BAKED_SERVER_BASE_URL);
137773
+ return json7.replace(new RegExp(`${escaped}${boundary}`, "g"), BAKED_SERVER_BASE_URL);
137499
137774
  }
137500
137775
  function stableStringify2(v2) {
137501
137776
  if (v2 === null || typeof v2 !== "object") return JSON.stringify(v2);
@@ -138212,15 +138487,15 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
138212
138487
  }
138213
138488
  tierScreens.push(summarize3({ ...descriptor, ...lb ? { logicBundle: lb } : {} }));
138214
138489
  delete descriptor.etag;
138215
- const json6 = pinBakedServerBaseUrl(JSON.stringify(descriptor), base);
138216
- await store.putScreen(app, screenId, json6);
138217
- screens[screenId] = { descriptorHash: sha2564(json6), bundle: bundleName, ...screenMetadataFor(screenMetadata, screenId) };
138218
- rememberInput(bundleName, JSON.parse(json6));
138490
+ const json7 = pinBakedServerBaseUrl(JSON.stringify(descriptor), base);
138491
+ await store.putScreen(app, screenId, json7);
138492
+ screens[screenId] = { descriptorHash: sha2564(json7), bundle: bundleName, ...screenMetadataFor(screenMetadata, screenId) };
138493
+ rememberInput(bundleName, JSON.parse(json7));
138219
138494
  if (collect2?.descriptors) {
138220
138495
  baked.push({
138221
138496
  screenId,
138222
- descriptor: JSON.parse(json6),
138223
- descriptorJson: json6,
138497
+ descriptor: JSON.parse(json7),
138498
+ descriptorJson: json7,
138224
138499
  bundleName,
138225
138500
  bundleJs: bundleName ? readBundle(bundleName) ?? null : null,
138226
138501
  ...bundleMapFor(tier5Dir, bundleName ?? void 0)
@@ -138357,14 +138632,14 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
138357
138632
  }
138358
138633
  delete descriptor.etag;
138359
138634
  if (typeof descriptor.screenId === "string" && descriptor.screenId !== screenId) descriptor.screenId = screenId;
138360
- const json6 = pinBakedServerBaseUrl(JSON.stringify(descriptor), base);
138361
- await store.putScreen(app, screenId, json6);
138362
- screens[screenId] = { descriptorHash: sha2564(json6), bundle: bundleName, ...screenMetadataFor(screenMetadata, screenId, canonical4) };
138363
- rememberInput(bundleName, JSON.parse(json6));
138635
+ const json7 = pinBakedServerBaseUrl(JSON.stringify(descriptor), base);
138636
+ await store.putScreen(app, screenId, json7);
138637
+ screens[screenId] = { descriptorHash: sha2564(json7), bundle: bundleName, ...screenMetadataFor(screenMetadata, screenId, canonical4) };
138638
+ rememberInput(bundleName, JSON.parse(json7));
138364
138639
  if (collect2?.descriptors) {
138365
138640
  baked.push({
138366
138641
  screenId,
138367
- descriptor: JSON.parse(json6),
138642
+ descriptor: JSON.parse(json7),
138368
138643
  // The EXACT baked bytes, exactly as the exact-screen path hands
138369
138644
  // them over. Omitting them did not degrade the crawl quietly — it
138370
138645
  // took out the native-decode oracle for the whole app, which
@@ -138373,7 +138648,7 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
138373
138648
  // bytes") and throws rather than skipping. So one templated route
138374
138649
  // anywhere in an app meant `himi test --native` reported nothing
138375
138650
  // for ANY of its screens.
138376
- descriptorJson: json6,
138651
+ descriptorJson: json7,
138377
138652
  bundleName,
138378
138653
  bundleJs: bundleName ? readBundle(bundleName) ?? null : null,
138379
138654
  ...bundleMapFor(tier5Dir, bundleName ?? void 0)
@@ -138466,7 +138741,7 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
138466
138741
  if (store.putWidget) {
138467
138742
  const bakedWidgets = await bakeWidgets(
138468
138743
  (path2) => devFetch(`${base}${path2}`, { headers: { "X-Himalaya-App": app } }),
138469
- (widgetId, json6) => store.putWidget(app, widgetId, json6),
138744
+ (widgetId, json7) => store.putWidget(app, widgetId, json7),
138470
138745
  // `opts.tier5Dir`, NOT the `tier5Dir` local — that one falls back to the
138471
138746
  // repo-global dir, where this package's widgets cannot be told from anyone
138472
138747
  // else's and the filter would claim every app's rows as ours.
@@ -138485,9 +138760,9 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
138485
138760
  if (!js2) continue;
138486
138761
  try {
138487
138762
  const input = bundleInputs.get(name);
138488
- const json6 = JSON.stringify(extractBundleServices(js2, input ? { input } : {}));
138489
- const hash2 = sha2564(json6);
138490
- await store.putDoc(app, hash2, json6);
138763
+ const json7 = JSON.stringify(extractBundleServices(js2, input ? { input } : {}));
138764
+ const hash2 = sha2564(json7);
138765
+ await store.putDoc(app, hash2, json7);
138491
138766
  meta.servicesHash = hash2;
138492
138767
  } catch {
138493
138768
  }
@@ -156517,12 +156792,204 @@ var init_wix_member_auth = __esm({
156517
156792
  }
156518
156793
  });
156519
156794
 
156520
- // ../../core/serve/src/server.ts
156795
+ // ../../core/serve/src/account-rung.ts
156521
156796
  function json4(status, body, headers2 = {}) {
156522
- return new Response(JSON.stringify(body), { status, headers: { "content-type": JSON_CT2, ...headers2 } });
156797
+ return new Response(JSON.stringify(body), { status, headers: { "content-type": JSON_CT2, ...NO_STORE, ...headers2 } });
156798
+ }
156799
+ function isWixAccountHost(host) {
156800
+ const hostname3 = host.replace(/:\d+$/, "").toLowerCase();
156801
+ return hostname3 === "wix.com" || hostname3.endsWith(".wix.com");
156802
+ }
156803
+ function accountReturnPath(raw, fallback) {
156804
+ const candidate = safeReturnPath(raw, fallback);
156805
+ const base = "http://placeholder.invalid";
156806
+ try {
156807
+ const u2 = new URL(candidate, base);
156808
+ if (u2.origin !== base || u2.pathname.startsWith("//")) return fallback;
156809
+ return `${u2.pathname}${u2.search}${u2.hash}`;
156810
+ } catch {
156811
+ return fallback;
156812
+ }
156813
+ }
156814
+ function withOutcome(target, outcome) {
156815
+ const url = new URL(target, "http://placeholder.invalid");
156816
+ url.searchParams.set("webwix_account", outcome);
156817
+ return `${url.pathname}${url.search}${url.hash}`;
156818
+ }
156819
+ function accountCookie(request) {
156820
+ return forwardableWixSessionCookies(request.headers.get("cookie"));
156821
+ }
156822
+ async function principal(cookie, opts, fetchImpl) {
156823
+ if (!cookie) return { ok: false, error: "webwix_account_no_session" };
156824
+ const who = await opts.resolveAccounts(cookie, fetchImpl).catch(() => ({ ok: false, reason: "upstream_failed" }));
156825
+ if (!who.ok) return { ok: false, error: who.reason === "no_session" ? "webwix_account_no_session" : "webwix_account_upstream_failed" };
156826
+ const ids = who.accounts.map((a2) => a2.accountId).sort().join("\n");
156827
+ return { ok: true, principal: `acct_${sha256Hex(ids).slice(0, 32)}` };
156828
+ }
156829
+ function crossSiteAccountWrite(request, url) {
156830
+ if (!/^application\/json\b/i.test(request.headers.get("content-type") ?? "")) return true;
156831
+ const origin = request.headers.get("origin");
156832
+ if (origin) {
156833
+ let host = null;
156834
+ try {
156835
+ host = new URL(origin).host;
156836
+ } catch {
156837
+ }
156838
+ if (host !== url.host) return true;
156839
+ }
156840
+ const site = request.headers.get("sec-fetch-site");
156841
+ return !!site && site !== "same-origin";
156842
+ }
156843
+ async function handleAccountRung(opts, ctx) {
156844
+ const { request, url, path: path2 } = ctx;
156845
+ const accountPath = ACCOUNT_RUNG_PATHS.has(path2);
156846
+ const bridgePath = path2 === "/v1/__webwix/identity" || path2 === "/v1/__webwix/call" || path2 === "/v1/__webwix/stream";
156847
+ if (!accountPath && !bridgePath) return null;
156848
+ const hostApp = opts.appForHost(url.host);
156849
+ if (!hostApp) return null;
156850
+ if (!await ctx.isAccountApp(hostApp).catch(() => false)) {
156851
+ return accountPath ? json4(404, { error: "webwix_account_unsupported" }) : null;
156852
+ }
156853
+ if (path2 === "/v1/__webwix/account/login" || path2 === "/v1/__webwix/account/callback") {
156854
+ const back = accountReturnPath(url.searchParams.get("return"), `/?app=${encodeURIComponent(hostApp)}`);
156855
+ const signInUrl = isWixAccountHost(url.host) ? wixAccountSignInUrl(`${ctx.publicBase}/v1/__webwix/account/callback?return=${encodeURIComponent(back)}`) : void 0;
156856
+ if (path2 === "/v1/__webwix/account/login" && request.method === "GET" && signInUrl) {
156857
+ return new Response(null, { status: 302, headers: { location: signInUrl, ...NO_STORE } });
156858
+ }
156859
+ if (path2 === "/v1/__webwix/account/login" && request.method === "POST" && crossSiteAccountWrite(request, url)) return CROSS_SITE();
156860
+ if (request.method !== "GET" && !(request.method === "POST" && path2 === "/v1/__webwix/account/login")) return json4(405, { error: "method_not_allowed" });
156861
+ const who = await principal(accountCookie(request), opts, ctx.fetchImpl);
156862
+ if (path2 === "/v1/__webwix/account/login" && request.method === "POST") {
156863
+ return who.ok ? json4(200, { ok: true, authenticated: true, userId: who.principal }) : json4(who.error === "webwix_account_no_session" ? 401 : 502, { ok: false, error: who.error, ...signInUrl ? { signInUrl } : {} });
156864
+ }
156865
+ return new Response(null, { status: 302, headers: { location: withOutcome(back, who.ok ? "signed_in" : who.error), ...NO_STORE } });
156866
+ }
156867
+ if (path2 === "/v1/__webwix/identity") {
156868
+ if (request.method !== "GET" && request.method !== "HEAD") return null;
156869
+ const who = await principal(accountCookie(request), opts, ctx.fetchImpl);
156870
+ const webwixDirect = await ctx.webwixDirect();
156871
+ if (request.method === "HEAD") return new Response(null, { status: 200, headers: { "content-type": JSON_CT2, ...NO_STORE } });
156872
+ return json4(200, who.ok ? { authenticated: true, userId: who.principal, email: null, mode: "account", webwixDirect } : { authenticated: false, userId: null, email: null, mode: "account", webwixDirect });
156873
+ }
156874
+ if (request.method !== "POST") return accountPath ? json4(405, { error: "method_not_allowed" }) : null;
156875
+ if (accountPath && crossSiteAccountWrite(request, url)) return CROSS_SITE();
156876
+ if (path2 === "/v1/__webwix/account/short-link") {
156877
+ const b2 = await request.json().catch(() => ({}));
156878
+ const shortId = String(b2.shortId ?? "").trim();
156879
+ if (!inviteShortLinkUrl(shortId)) return json4(400, { error: "webwix_short_link_bad_id" });
156880
+ const landed = await resolveInviteShortLink(shortId, ctx.fetchImpl);
156881
+ return landed ? json4(200, { url: landed }) : json4(404, { error: "webwix_short_link_unresolved" });
156882
+ }
156883
+ const cookie = accountCookie(request);
156884
+ const expired = (e2) => {
156885
+ if (e2 instanceof AccountSessionExpired) ctx.instances.forgetSession(cookie);
156886
+ };
156887
+ if (path2 === "/v1/__webwix/account/member-session") {
156888
+ if (!cookie) return json4(401, { error: "webwix_account_signed_out" });
156889
+ const b2 = await request.json().catch(() => ({}));
156890
+ const metaSiteId = String(b2.metaSiteId ?? "").trim();
156891
+ if (!isSafeMsid(metaSiteId)) return json4(400, { error: "webwix_account_bad_site_id" });
156892
+ try {
156893
+ return json4(200, { sessionToken: await mintMemberSessionToken(cookie, metaSiteId, ctx.fetchImpl) });
156894
+ } catch (e2) {
156895
+ expired(e2);
156896
+ const refusal = memberSessionRefusal(e2);
156897
+ return json4(refusal.status, refusal.body);
156898
+ }
156899
+ }
156900
+ if (ctx.namedApp !== hostApp) return null;
156901
+ const envelope = await request.clone().json().catch(() => null);
156902
+ if (!envelope || envelope.ownerMsid !== void 0 || envelope.checkOwnerSession !== void 0) return null;
156903
+ const method = String(envelope.method ?? "GET").toUpperCase();
156904
+ const target = String((path2 === "/v1/__webwix/stream" ? envelope.url : envelope.path) ?? "");
156905
+ const forwarded = normalizeWixForwardedHeaders(envelope.headers, target);
156906
+ const siteId = Object.entries(forwarded).find(([name]) => name.toLowerCase() === "wix-site-id")?.[1]?.trim() ?? "";
156907
+ const body = envelope.body === void 0 ? void 0 : typeof envelope.body === "string" ? envelope.body : JSON.stringify(envelope.body);
156908
+ const refuse7 = (e2) => {
156909
+ expired(e2);
156910
+ if (e2 instanceof NotSiteMember || e2 instanceof SiteInstanceUnavailable || e2 instanceof AccountSessionExpired) {
156911
+ const refusal = memberInstanceRefusal(e2);
156912
+ return json4(refusal.status, refusal.body);
156913
+ }
156914
+ return json4(502, { error: "webwix_bridge_upstream_failed" });
156915
+ };
156916
+ if (path2 === "/v1/__webwix/stream") {
156917
+ if (!siteId) return null;
156918
+ if (crossSiteAccountWrite(request, url)) return CROSS_SITE();
156919
+ if (!cookie) return json4(401, { error: "webwix_account_signed_out" });
156920
+ if (!isSafeMsid(siteId)) return json4(400, { error: "webwix_account_bad_site_id" });
156921
+ if (method !== "GET" && method !== "POST") return json4(400, { error: "invalid_stream_method" });
156922
+ const url2 = /^https:\/\//i.test(target) ? target : `https://www.wixapis.com${target.startsWith("/") ? target : `/${target}`}`;
156923
+ if (!isAllowedConsumerStreamTarget(url2)) return json4(400, { error: "invalid_stream_target" });
156924
+ const send3 = async (force) => fetchStream(ctx, url2, method, body, forwarded, await ctx.instances.instance(siteId, cookie, { force }));
156925
+ let upstream;
156926
+ try {
156927
+ upstream = await send3(false);
156928
+ if (upstream.status === 401) {
156929
+ try {
156930
+ await upstream.body?.cancel();
156931
+ } catch {
156932
+ }
156933
+ upstream = await send3(true);
156934
+ }
156935
+ } catch (e2) {
156936
+ return refuse7(e2);
156937
+ }
156938
+ const headers2 = new Headers({ "cache-control": "no-store, no-transform" });
156939
+ for (const name of ["content-type", "retry-after"]) {
156940
+ const value = upstream.headers.get(name);
156941
+ if (value) headers2.set(name, value);
156942
+ }
156943
+ return new Response(upstream.body, { status: upstream.status, headers: headers2 });
156944
+ }
156945
+ const absolute = /^[a-z][a-z0-9+.-]*:\/\//i.test(target);
156946
+ const allowed2 = absolute && !!allowedAccountTarget(method, target);
156947
+ if (!allowed2 && (absolute || !siteId)) return null;
156948
+ if (crossSiteAccountWrite(request, url)) return CROSS_SITE();
156949
+ if (!cookie) return json4(401, { error: "webwix_account_signed_out" });
156950
+ if (siteId && !isSafeMsid(siteId)) return json4(400, { error: "webwix_account_bad_site_id" });
156951
+ const send2 = async (force) => {
156952
+ const instance = siteId ? await ctx.instances.instance(siteId, cookie, { force }) : void 0;
156953
+ return allowed2 ? wixAccountCall(method, target, body, cookie, ctx.fetchImpl, forwarded, instance) : wixVisitorCall(method, target, body, instance ?? "", ctx.fetchImpl, forwarded);
156954
+ };
156955
+ try {
156956
+ let result = await send2(false);
156957
+ if (result.status === 401 && siteId) result = await send2(true);
156958
+ if (result.status >= 200 && result.status < 300 && isAccountJoinCall(method, target)) ctx.instances.forgetRefusals(cookie);
156959
+ return json4(200, result);
156960
+ } catch (e2) {
156961
+ return refuse7(e2);
156962
+ }
156963
+ }
156964
+ function fetchStream(ctx, url, method, body, forwarded, instance) {
156965
+ const headers2 = { ...forwarded, Accept: "text/event-stream", Authorization: instance };
156966
+ if (body !== void 0) headers2["Content-Type"] ??= "application/json";
156967
+ return ctx.fetchImpl(url, { method, headers: headers2, body: method === "GET" ? void 0 : body, redirect: "manual", signal: ctx.request.signal });
156968
+ }
156969
+ var ACCOUNT_RUNG_PATHS, JSON_CT2, NO_STORE, CROSS_SITE;
156970
+ var init_account_rung = __esm({
156971
+ "../../core/serve/src/account-rung.ts"() {
156972
+ init_sha256();
156973
+ init_wix_bridge();
156974
+ init_wix_member_auth();
156975
+ ACCOUNT_RUNG_PATHS = /* @__PURE__ */ new Set([
156976
+ "/v1/__webwix/account/login",
156977
+ "/v1/__webwix/account/callback",
156978
+ "/v1/__webwix/account/member-session",
156979
+ "/v1/__webwix/account/short-link"
156980
+ ]);
156981
+ JSON_CT2 = "application/json; charset=utf-8";
156982
+ NO_STORE = { "cache-control": "no-store" };
156983
+ CROSS_SITE = () => json4(403, { error: "webwix_account_cross_site" });
156984
+ }
156985
+ });
156986
+
156987
+ // ../../core/serve/src/server.ts
156988
+ function json5(status, body, headers2 = {}) {
156989
+ return new Response(JSON.stringify(body), { status, headers: { "content-type": JSON_CT3, ...headers2 } });
156523
156990
  }
156524
156991
  function isCookieAuthorizedPath(path2) {
156525
- return path2 === "/v1/__webwix/call" || path2 === "/v1/__webwix/stream" || path2 === "/v1/owner" || path2.startsWith("/v1/owner/") || path2 === "/v1/__webwix/identity" || path2 === "/v1/__webwix/login" || path2 === "/v1/__webwix/register" || path2 === "/v1/__webwix/logout" || path2 === MEMBER_CALLBACK_PATH;
156992
+ return path2 === "/v1/__webwix/call" || path2 === "/v1/__webwix/stream" || path2 === "/v1/owner" || path2.startsWith("/v1/owner/") || path2 === "/v1/__webwix/identity" || path2 === "/v1/__webwix/login" || path2 === "/v1/__webwix/register" || path2 === "/v1/__webwix/logout" || path2 === MEMBER_CALLBACK_PATH || ACCOUNT_RUNG_PATHS.has(path2);
156526
156993
  }
156527
156994
  function webwixCallLog(served, status) {
156528
156995
  const directRung = served.rung === "visitor" || served.rung === "owner";
@@ -156545,6 +157012,7 @@ function makeServeHandler(opts) {
156545
157012
  const webwixFetch = opts.webwixFetch ?? fetch;
156546
157013
  const webwixOwnerInstances = new OwnerInstanceCache(webwixFetch);
156547
157014
  const webwixOwnerSites = new OwnerSitesCache(webwixFetch);
157015
+ const webwixAccountInstances = new MemberInstanceCache(webwixFetch);
156548
157016
  const webwixOwnerRungOn = () => opts.webwixOwnerRung !== false;
156549
157017
  const memberAuthOn = () => opts.webwixMemberAuth === true && !!opts.webwixMemberSessions && !!opts.webwixMemberAppForHost;
156550
157018
  const memberSessions = () => opts.webwixMemberSessions ?? null;
@@ -156661,12 +157129,12 @@ ${releaseId}`;
156661
157129
  const denied2 = await authorizePinnedRead(request, url, app, pin);
156662
157130
  if (denied2) return { ok: false, response: denied2 };
156663
157131
  const m2 = await pinnedManifest(app, pin);
156664
- if (!m2) return { ok: false, response: json4(404, { error: "release_not_found", app, releaseId: pin }) };
157132
+ if (!m2) return { ok: false, response: json5(404, { error: "release_not_found", app, releaseId: pin }) };
156665
157133
  bytes2 = m2.appConfigHash ? await pinnedBody(app, m2.appConfigHash, () => store.getAppConfig(app)) : null;
156666
157134
  } else {
156667
157135
  bytes2 = await store.getAppConfig(app);
156668
157136
  }
156669
- if (!bytes2) return { ok: false, response: json4(404, { error: "app_config_not_found", app }) };
157137
+ if (!bytes2) return { ok: false, response: json5(404, { error: "app_config_not_found", app }) };
156670
157138
  return { ok: true, bytes: bytes2 };
156671
157139
  }
156672
157140
  function resolveApp(request, url) {
@@ -156679,7 +157147,7 @@ ${releaseId}`;
156679
157147
  if (request.headers.get("if-none-match") === etag) {
156680
157148
  return new Response(null, { status: 304, headers: { etag, "cache-control": cache, ...vary } });
156681
157149
  }
156682
- return new Response(body, { status: 200, headers: { "content-type": JSON_CT2, etag, "cache-control": cache, ...vary } });
157150
+ return new Response(body, { status: 200, headers: { "content-type": JSON_CT3, etag, "cache-control": cache, ...vary } });
156683
157151
  }
156684
157152
  async function authorizePinnedRead(request, url, app, releaseId, screenId) {
156685
157153
  const denied2 = await checkPinnedRead({
@@ -156692,7 +157160,7 @@ ${releaseId}`;
156692
157160
  authorizePreview: opts.authorizePreview,
156693
157161
  authorizeFollow: opts.authorizeFollow
156694
157162
  });
156695
- return denied2 && json4(denied2.status, denied2.body);
157163
+ return denied2 && json5(denied2.status, denied2.body);
156696
157164
  }
156697
157165
  async function honourRingPin(request) {
156698
157166
  const kept = { request, dropped: false };
@@ -156774,30 +157242,59 @@ ${releaseId}`;
156774
157242
  const control = b2.control ?? b2;
156775
157243
  if (control && Object.keys(control).length) devControlOverlay.set(dcApp, control);
156776
157244
  else devControlOverlay.delete(dcApp);
156777
- return json4(200, { ok: true, app: dcApp });
157245
+ return json5(200, { ok: true, app: dcApp });
157246
+ }
157247
+ }
157248
+ if (opts.webwixAccountRung && opts.webwixBridge !== false) {
157249
+ const accountRung = opts.webwixAccountRung;
157250
+ const answered = await handleAccountRung(accountRung, {
157251
+ request,
157252
+ url,
157253
+ path: path2,
157254
+ fetchImpl: webwixFetch,
157255
+ instances: webwixAccountInstances,
157256
+ namedApp: resolveApp(request, url),
157257
+ publicBase: callbackUrlFor(url).slice(0, -MEMBER_CALLBACK_PATH.length),
157258
+ webwixDirect: async () => opts.webwixDirect ? await opts.webwixDirect() === true : opts.webwixBridge !== false,
157259
+ isAccountApp: async (app2) => {
157260
+ const cfg = await appConfigFor(request, url, app2);
157261
+ if (!cfg.ok) return false;
157262
+ const auth = JSON.parse(utf8Decode(cfg.bytes))?.authConfig;
157263
+ return !!auth && auth.required === true && auth.providerId === "wix-native" && auth.config?.mode === "account";
157264
+ }
157265
+ });
157266
+ if (answered) {
157267
+ if (path2 === "/v1/__webwix/call") {
157268
+ const app2 = resolveApp(request, url);
157269
+ try {
157270
+ opts.onWebwixCall?.(webwixCallLog({ rung: "account", ...app2 ? { app: app2 } : {} }, answered.status));
157271
+ } catch {
157272
+ }
157273
+ }
157274
+ return answered;
156778
157275
  }
156779
157276
  }
156780
157277
  const memberRungApp = memberAuthOn() ? memberApp(request) : null;
156781
157278
  if (memberRungApp && (path2 === "/v1/__webwix/login" || path2 === "/v1/__webwix/register" || path2 === MEMBER_CALLBACK_PATH || path2 === "/v1/__webwix/logout")) {
156782
157279
  const store2 = memberSessions();
156783
- if (!store2) return json4(503, { error: "member_auth_unconfigured" });
157280
+ if (!store2) return json5(503, { error: "member_auth_unconfigured" });
156784
157281
  const sessionId = readSessionCookie(request.headers.get("cookie"));
156785
157282
  if (path2 === "/v1/__webwix/logout") {
156786
- if (request.method !== "POST") return json4(405, { error: "method_not_allowed" });
157283
+ if (request.method !== "POST") return json5(405, { error: "method_not_allowed" });
156787
157284
  if (sessionId) await store2.delete(sessionId);
156788
- return json4(200, { ok: true }, { "set-cookie": clearSessionCookie(), "cache-control": "no-store" });
157285
+ return json5(200, { ok: true }, { "set-cookie": clearSessionCookie(), "cache-control": "no-store" });
156789
157286
  }
156790
157287
  if (path2 === MEMBER_CALLBACK_PATH) {
156791
- if (request.method !== "GET") return json4(405, { error: "method_not_allowed" });
157288
+ if (request.method !== "GET") return json5(405, { error: "method_not_allowed" });
156792
157289
  const code = url.searchParams.get("code");
156793
157290
  const state2 = url.searchParams.get("state");
156794
157291
  if (!code) {
156795
- if (url.searchParams.has("nohash")) return json4(400, { error: "member_auth_no_code" });
157292
+ if (url.searchParams.has("nohash")) return json5(400, { error: "member_auth_no_code" });
156796
157293
  return fragmentBounceResponse();
156797
157294
  }
156798
157295
  const pending = sessionId ? await store2.get(sessionId) : null;
156799
157296
  if (!pending || pending.kind !== "pending" || pending.state !== state2) {
156800
- return json4(400, { error: "member_auth_state_mismatch" });
157297
+ return json5(400, { error: "member_auth_state_mismatch" });
156801
157298
  }
156802
157299
  const app3 = pending.app;
156803
157300
  await store2.delete(sessionId);
@@ -156806,10 +157303,10 @@ ${releaseId}`;
156806
157303
  try {
156807
157304
  ({ memberToken, expiresInSec } = await exchangeAuthCode(pending.auth, code, pending.verifier, webwixFetch));
156808
157305
  } catch (e2) {
156809
- return json4(502, { error: "member_auth_exchange_failed", app: app3, detail: String(e2?.message ?? e2).slice(0, 120) });
157306
+ return json5(502, { error: "member_auth_exchange_failed", app: app3, detail: String(e2?.message ?? e2).slice(0, 120) });
156810
157307
  }
156811
157308
  const ttlMs = Math.min(MEMBER_SESSION_TTL_MS, (expiresInSec - 60) * 1e3);
156812
- if (ttlMs <= 0) return json4(502, { error: "member_auth_session_too_short", app: app3 });
157309
+ if (ttlMs <= 0) return json5(502, { error: "member_auth_session_too_short", app: app3 });
156813
157310
  const freshId = randomToken(32);
156814
157311
  await store2.put(freshId, {
156815
157312
  kind: "member",
@@ -156829,17 +157326,17 @@ ${releaseId}`;
156829
157326
  }
156830
157327
  const app2 = memberRungApp;
156831
157328
  if (request.method === "POST") {
156832
- return json4(501, {
157329
+ return json5(501, {
156833
157330
  error: "member_password_login_unsupported",
156834
157331
  app: app2,
156835
157332
  detail: "Sign in through GET /v1/__webwix/login \u2014 the serve plane never accepts a password."
156836
157333
  });
156837
157334
  }
156838
- if (request.method !== "GET") return json4(405, { error: "method_not_allowed" });
157335
+ if (request.method !== "GET") return json5(405, { error: "method_not_allowed" });
156839
157336
  const cfg = await appConfigFor(request, url, app2);
156840
157337
  if (!cfg.ok) return cfg.response;
156841
157338
  const resolved2 = wixMemberAuthOf(utf8Decode(cfg.bytes), callbackUrlFor(url));
156842
- if (!resolved2.ok) return json4(501, { error: `member_auth_${resolved2.error}`, app: app2 });
157339
+ if (!resolved2.ok) return json5(501, { error: `member_auth_${resolved2.error}`, app: app2 });
156843
157340
  const returnTo = safeReturnPath(url.searchParams.get("return"), `/preview/a/${encodeURIComponent(app2)}`);
156844
157341
  const state = randomToken(16);
156845
157342
  const pkce = await generatePkce();
@@ -156852,7 +157349,7 @@ ${releaseId}`;
156852
157349
  webwixFetch
156853
157350
  );
156854
157351
  } catch (e2) {
156855
- return json4(502, { error: "member_auth_unavailable", app: app2, detail: String(e2?.message ?? e2).slice(0, 120) });
157352
+ return json5(502, { error: "member_auth_unavailable", app: app2, detail: String(e2?.message ?? e2).slice(0, 120) });
156856
157353
  }
156857
157354
  if (sessionId) await store2.delete(sessionId);
156858
157355
  const pendingId = randomToken(32);
@@ -156875,7 +157372,7 @@ ${releaseId}`;
156875
157372
  });
156876
157373
  }
156877
157374
  if ((request.method === "GET" || request.method === "HEAD") && path2 === "/v1/__webwix/identity") {
156878
- const headers2 = { "content-type": JSON_CT2, "cache-control": "no-store" };
157375
+ const headers2 = { "content-type": JSON_CT3, "cache-control": "no-store" };
156879
157376
  if (request.method === "HEAD") return new Response(null, { status: 200, headers: headers2 });
156880
157377
  const webwixDirect = opts.webwixDirect ? await opts.webwixDirect() === true : opts.webwixBridge !== false;
156881
157378
  if (memberAuthOn()) {
@@ -156883,35 +157380,35 @@ ${releaseId}`;
156883
157380
  const store2 = memberSessions();
156884
157381
  if (app2 && store2) {
156885
157382
  const token = await memberTokenFor(store2, readSessionCookie(request.headers.get("cookie")), app2, null);
156886
- if (token) return json4(200, { authenticated: true, userId: null, email: null, webwixDirect }, { "cache-control": "no-store" });
157383
+ if (token) return json5(200, { authenticated: true, userId: null, email: null, webwixDirect }, { "cache-control": "no-store" });
156887
157384
  }
156888
157385
  }
156889
- return json4(200, { authenticated: false, userId: null, email: null, webwixDirect }, { "cache-control": "no-store" });
157386
+ return json5(200, { authenticated: false, userId: null, email: null, webwixDirect }, { "cache-control": "no-store" });
156890
157387
  }
156891
157388
  if (request.method === "POST" && path2 === "/v1/__webwix/stream") {
156892
- if (opts.webwixBridge === false) return json4(503, { error: "webwix_bridge_disabled" }, { "cache-control": "no-store" });
157389
+ if (opts.webwixBridge === false) return json5(503, { error: "webwix_bridge_disabled" }, { "cache-control": "no-store" });
156893
157390
  const app2 = resolveApp(request, url);
156894
157391
  const hostApp = memberApp(request);
156895
- if (!app2) return json4(400, { error: "app_required" }, { "cache-control": "no-store" });
156896
- if (!hostApp || app2 !== hostApp) return json4(403, { error: "webwix_stream_host_mismatch" }, { "cache-control": "no-store" });
157392
+ if (!app2) return json5(400, { error: "app_required" }, { "cache-control": "no-store" });
157393
+ if (!hostApp || app2 !== hostApp) return json5(403, { error: "webwix_stream_host_mismatch" }, { "cache-control": "no-store" });
156897
157394
  const resolvedCfg = await appConfigFor(request, url, app2);
156898
157395
  if (!resolvedCfg.ok) return resolvedCfg.response;
156899
157396
  let call;
156900
157397
  try {
156901
157398
  call = await request.json();
156902
157399
  } catch {
156903
- return json4(400, { error: "invalid_json" }, { "cache-control": "no-store" });
157400
+ return json5(400, { error: "invalid_json" }, { "cache-control": "no-store" });
156904
157401
  }
156905
157402
  const method = String(call.method ?? "GET").toUpperCase();
156906
- if (method !== "GET" && method !== "POST") return json4(400, { error: "invalid_stream_method" }, { "cache-control": "no-store" });
157403
+ if (method !== "GET" && method !== "POST") return json5(400, { error: "invalid_stream_method" }, { "cache-control": "no-store" });
156907
157404
  const rawTarget = String(call.url ?? "");
156908
157405
  const target = /^https:\/\//i.test(rawTarget) ? rawTarget : `https://www.wixapis.com${rawTarget.startsWith("/") ? rawTarget : `/${rawTarget}`}`;
156909
- if (!isAllowedConsumerStreamTarget(target)) return json4(400, { error: "invalid_stream_target" }, { "cache-control": "no-store" });
157406
+ if (!isAllowedConsumerStreamTarget(target)) return json5(400, { error: "invalid_stream_target" }, { "cache-control": "no-store" });
156910
157407
  const cfg = wixMemberAuthOf(utf8Decode(resolvedCfg.bytes), callbackUrlFor(url));
156911
- if (!cfg.ok) return json4(501, { error: "webwix_visitor_direct_only", app: app2 }, { "cache-control": "no-store" });
157408
+ if (!cfg.ok) return json5(501, { error: "webwix_visitor_direct_only", app: app2 }, { "cache-control": "no-store" });
156912
157409
  const store2 = memberSessions();
156913
157410
  const token = memberAuthOn() && store2 ? await memberTokenFor(store2, readSessionCookie(request.headers.get("cookie")), hostApp, cfg.config.clientId) : null;
156914
- if (!token) return json4(501, { error: "webwix_visitor_direct_only", app: app2 }, { "cache-control": "no-store" });
157411
+ if (!token) return json5(501, { error: "webwix_visitor_direct_only", app: app2 }, { "cache-control": "no-store" });
156915
157412
  const headers2 = normalizeWixForwardedHeaders(call.headers);
156916
157413
  headers2.Accept = "text/event-stream";
156917
157414
  headers2.Authorization = token;
@@ -156921,7 +157418,7 @@ ${releaseId}`;
156921
157418
  try {
156922
157419
  upstream = await webwixFetch(target, { method, headers: headers2, body: method === "GET" ? void 0 : body, redirect: "manual", signal: request.signal });
156923
157420
  } catch {
156924
- return json4(502, { error: "webwix_stream_upstream_failed" }, { "cache-control": "no-store" });
157421
+ return json5(502, { error: "webwix_stream_upstream_failed" }, { "cache-control": "no-store" });
156925
157422
  }
156926
157423
  const responseHeaders = new Headers({ "cache-control": "no-store, no-transform" });
156927
157424
  for (const name of ["content-type", "retry-after"]) {
@@ -156936,10 +157433,10 @@ ${releaseId}`;
156936
157433
  try {
156937
157434
  const res = await (async () => {
156938
157435
  if (opts.webwixBridge === false) {
156939
- return json4(503, { error: "webwix_bridge_disabled" });
157436
+ return json5(503, { error: "webwix_bridge_disabled" });
156940
157437
  }
156941
157438
  const app2 = resolveApp(request, url);
156942
- if (!app2) return json4(400, { error: "app_required" });
157439
+ if (!app2) return json5(400, { error: "app_required" });
156943
157440
  const resolvedCfg = await appConfigFor(request, url, app2);
156944
157441
  if (!resolvedCfg.ok) return resolvedCfg.response;
156945
157442
  served.app = app2;
@@ -156948,35 +157445,35 @@ ${releaseId}`;
156948
157445
  try {
156949
157446
  call = await request.json();
156950
157447
  } catch {
156951
- return json4(400, { error: "invalid_json" });
157448
+ return json5(400, { error: "invalid_json" });
156952
157449
  }
156953
157450
  served.fallback = call.fallback === true;
156954
157451
  if (call.checkOwnerSession !== void 0 && (typeof call.checkOwnerSession !== "boolean" || call.checkOwnerSession && call.ownerMsid === void 0)) {
156955
- return json4(400, { error: "invalid_owner_session_check" });
157452
+ return json5(400, { error: "invalid_owner_session_check" });
156956
157453
  }
156957
157454
  const method = String(call.method ?? "GET").toUpperCase();
156958
157455
  const reqPath = String(call.path ?? "/");
156959
157456
  const body = call.body === void 0 ? void 0 : typeof call.body === "string" ? call.body : JSON.stringify(call.body);
156960
157457
  const forwardedHeaders = normalizeWixForwardedHeaders(call.headers);
156961
157458
  if (/^[a-z][a-z0-9+.-]*:\/\//i.test(reqPath)) {
156962
- return absoluteUrlRejection(reqPath) === "owner-only" ? json4(501, { error: "webwix_owner_only", app: app2 }) : json4(400, { error: "absolute_urls_not_allowed" });
157459
+ return absoluteUrlRejection(reqPath) === "owner-only" ? json5(501, { error: "webwix_owner_only", app: app2 }) : json5(400, { error: "absolute_urls_not_allowed" });
156963
157460
  }
156964
157461
  const callerCookie = request.headers.get("cookie") ?? "";
156965
157462
  if (!call.checkOwnerSession && webwixOwnerRungOn() && method === "POST" && isOwnerSitesPath(reqPath) && !/wixSession2=/.test(callerCookie)) {
156966
157463
  served.rung = "sites";
156967
- return json4(501, { error: "webwix_owner_no_session", app: app2 });
157464
+ return json5(501, { error: "webwix_owner_no_session", app: app2 });
156968
157465
  }
156969
157466
  if (!call.checkOwnerSession && webwixOwnerRungOn() && method === "POST" && isOwnerSitesPath(reqPath) && /wixSession2=/.test(callerCookie)) {
156970
157467
  served.rung = "sites";
156971
157468
  try {
156972
157469
  const envelope = await wixOwnerSitesCall(reqPath, callerCookie, body, webwixFetch);
156973
- if (envelope.status >= 200 && envelope.status < 300) return json4(200, envelope);
156974
- return json4(200, {
157470
+ if (envelope.status >= 200 && envelope.status < 300) return json5(200, envelope);
157471
+ return json5(200, {
156975
157472
  status: 501,
156976
157473
  body: JSON.stringify({ error: "webwix_owner_sites_failed", upstream: envelope.status })
156977
157474
  });
156978
157475
  } catch (e2) {
156979
- return json4(200, {
157476
+ return json5(200, {
156980
157477
  status: 501,
156981
157478
  body: JSON.stringify({ error: "webwix_owner_sites_failed", detail: String(e2?.message ?? e2).slice(0, 200) })
156982
157479
  });
@@ -156984,12 +157481,12 @@ ${releaseId}`;
156984
157481
  }
156985
157482
  if (call.ownerMsid !== void 0) {
156986
157483
  served.rung = call.checkOwnerSession === true ? "gate" : "owner";
156987
- if (!webwixOwnerRungOn()) return json4(503, { error: "webwix_owner_disabled" });
156988
- return json4(501, { error: "webwix_owner_direct_only", app: app2 });
157484
+ if (!webwixOwnerRungOn()) return json5(503, { error: "webwix_owner_disabled" });
157485
+ return json5(501, { error: "webwix_owner_direct_only", app: app2 });
156989
157486
  }
156990
157487
  const resolved2 = wixClientIdOf(utf8Decode(cfgBytes));
156991
157488
  if ("error" in resolved2) {
156992
- return json4(501, { error: `webwix_bridge_${resolved2.error}`, app: app2 });
157489
+ return json5(501, { error: `webwix_bridge_${resolved2.error}`, app: app2 });
156993
157490
  }
156994
157491
  served.rung = "visitor";
156995
157492
  const memberStore = memberSessions();
@@ -157000,13 +157497,13 @@ ${releaseId}`;
157000
157497
  if (memberToken) {
157001
157498
  served.rung = "member";
157002
157499
  try {
157003
- return json4(200, await wixVisitorCall(method, reqPath, body, memberToken, webwixFetch, forwardedHeaders), { "cache-control": "no-store" });
157500
+ return json5(200, await wixVisitorCall(method, reqPath, body, memberToken, webwixFetch, forwardedHeaders), { "cache-control": "no-store" });
157004
157501
  } catch (e2) {
157005
- return json4(502, { error: "webwix_bridge_upstream_failed", detail: String(e2?.message ?? e2).slice(0, 200) });
157502
+ return json5(502, { error: "webwix_bridge_upstream_failed", detail: String(e2?.message ?? e2).slice(0, 200) });
157006
157503
  }
157007
157504
  }
157008
157505
  }
157009
- return json4(501, { error: "webwix_visitor_direct_only", app: app2 });
157506
+ return json5(501, { error: "webwix_visitor_direct_only", app: app2 });
157010
157507
  })();
157011
157508
  status = res.status;
157012
157509
  return res;
@@ -157017,8 +157514,8 @@ ${releaseId}`;
157017
157514
  }
157018
157515
  }
157019
157516
  }
157020
- if (request.method !== "GET") return json4(405, { error: "method_not_allowed" });
157021
- if (path2 === "/__health") return json4(200, { ok: true });
157517
+ if (request.method !== "GET") return json5(405, { error: "method_not_allowed" });
157518
+ if (path2 === "/__health") return json5(200, { ok: true });
157022
157519
  const packageShare = /^\/p\/([a-f0-9]{64})$/.exec(path2);
157023
157520
  if (packageShare) {
157024
157521
  const shareId = packageShare[1];
@@ -157027,8 +157524,8 @@ ${releaseId}`;
157027
157524
  const wantsHtml = (request.headers.get("accept") ?? "").includes("text/html");
157028
157525
  if (wantsMetadata || wantsHtml && !wantsDownload) {
157029
157526
  const share = await resolvePackageShareMetadata(await getStore(), shareId);
157030
- if (!share) return json4(404, { error: "package_share_not_found" });
157031
- if (wantsMetadata) return json4(200, share, { "cache-control": "no-store" });
157527
+ if (!share) return json5(404, { error: "package_share_not_found" });
157528
+ if (wantsMetadata) return json5(200, share, { "cache-control": "no-store" });
157032
157529
  const title = share.app.replace(/[<>&"]/g, "");
157033
157530
  return new Response(`<!doctype html><meta charset="utf-8"><meta name="referrer" content="no-referrer"><title>${title} \xB7 Himi</title><main><h1>${title}</h1><p>Open this package in Himi Player, or download it for Files and Android sharing.</p><p><a href="?download=1">Download .himi</a></p></main>`, {
157034
157531
  status: 200,
@@ -157036,7 +157533,7 @@ ${releaseId}`;
157036
157533
  });
157037
157534
  }
157038
157535
  const found = await resolvePackageShare(await getStore(), shareId);
157039
- if (!found) return json4(404, { error: "package_share_not_found" });
157536
+ if (!found) return json5(404, { error: "package_share_not_found" });
157040
157537
  return new Response(found.archive, {
157041
157538
  status: 200,
157042
157539
  headers: {
@@ -157049,46 +157546,46 @@ ${releaseId}`;
157049
157546
  });
157050
157547
  }
157051
157548
  if (path2 === "/v1/owner/instance") {
157052
- if (opts.webwixBridge === false) return json4(503, { error: "webwix_bridge_disabled" });
157549
+ if (opts.webwixBridge === false) return json5(503, { error: "webwix_bridge_disabled" });
157053
157550
  const gateApp = url.searchParams.get("app");
157054
157551
  if (gateApp) {
157055
157552
  const cfg = await appConfigFor(request, url, gateApp);
157056
157553
  if (!cfg.ok) return cfg.response;
157057
157554
  }
157058
- if (!webwixOwnerRungOn()) return json4(503, { error: "webwix_owner_disabled" });
157555
+ if (!webwixOwnerRungOn()) return json5(503, { error: "webwix_owner_disabled" });
157059
157556
  const msid = url.searchParams.get("msid") ?? "";
157060
- if (!isSafeMsid(msid)) return json4(400, { error: "webwix_owner_bad_msid" });
157557
+ if (!isSafeMsid(msid)) return json5(400, { error: "webwix_owner_bad_msid" });
157061
157558
  const cookie = request.headers.get("cookie") ?? "";
157062
- if (!/wixSession2=/.test(cookie)) return json4(401, { error: "webwix_owner_no_session" });
157559
+ if (!/wixSession2=/.test(cookie)) return json5(401, { error: "webwix_owner_no_session" });
157063
157560
  const renew = url.searchParams.get("renew") === "1";
157064
157561
  try {
157065
157562
  const entry = await webwixOwnerInstances.entry(msid, cookie, Date.now(), { renew });
157066
- return json4(200, { ...entry, expiresInMs: Math.max(0, entry.expiresAt - Date.now()) }, { "cache-control": "no-store" });
157563
+ return json5(200, { ...entry, expiresInMs: Math.max(0, entry.expiresAt - Date.now()) }, { "cache-control": "no-store" });
157067
157564
  } catch (e2) {
157068
157565
  const msg = String(e2?.message ?? e2);
157069
- if (/owner mint failed \(5\d\d\)/.test(msg) || !msg.includes("owner mint failed")) return json4(502, { error: "webwix_bridge_upstream_failed" });
157070
- return json4(403, { error: "webwix_owner_mint_failed" });
157566
+ if (/owner mint failed \(5\d\d\)/.test(msg) || !msg.includes("owner mint failed")) return json5(502, { error: "webwix_bridge_upstream_failed" });
157567
+ return json5(403, { error: "webwix_owner_mint_failed" });
157071
157568
  }
157072
157569
  }
157073
157570
  if (path2 === "/v1/owner/sites") {
157074
- if (!webwixOwnerRungOn()) return json4(503, { error: "webwix_owner_disabled" });
157571
+ if (!webwixOwnerRungOn()) return json5(503, { error: "webwix_owner_disabled" });
157075
157572
  const cookie = request.headers.get("cookie") ?? "";
157076
- if (!/wixSession2=/.test(cookie)) return json4(200, { sites: [] });
157573
+ if (!/wixSession2=/.test(cookie)) return json5(200, { sites: [] });
157077
157574
  const limitParam = url.searchParams.get("limit");
157078
157575
  const limitRaw = limitParam === null ? NaN : Number(limitParam);
157079
157576
  const limit = Number.isFinite(limitRaw) ? Math.min(100, Math.max(1, Math.trunc(limitRaw))) : 50;
157080
157577
  try {
157081
- return json4(200, { sites: await webwixOwnerSites.sites(cookie, limit) });
157578
+ return json5(200, { sites: await webwixOwnerSites.sites(cookie, limit) });
157082
157579
  } catch (e2) {
157083
- return json4(501, { error: "webwix_owner_sites_failed", detail: String(e2?.message ?? e2).slice(0, 120) });
157580
+ return json5(501, { error: "webwix_owner_sites_failed", detail: String(e2?.message ?? e2).slice(0, 120) });
157084
157581
  }
157085
157582
  }
157086
157583
  const store = await getStore();
157087
157584
  if (path2 === "/v1/apps") {
157088
157585
  if (opts.authorizeList && !await opts.authorizeList(request)) {
157089
- return json4(401, { error: "unauthorized" });
157586
+ return json5(401, { error: "unauthorized" });
157090
157587
  }
157091
- if (!store.listApps) return json4(501, { error: "listing_unsupported" });
157588
+ if (!store.listApps) return json5(501, { error: "listing_unsupported" });
157092
157589
  const ids = await store.listApps();
157093
157590
  const apps = [];
157094
157591
  for (const id of ids) {
@@ -157148,14 +157645,14 @@ ${releaseId}`;
157148
157645
  }
157149
157646
  return new Response(listBody, {
157150
157647
  status: 200,
157151
- headers: { "content-type": JSON_CT2, ...listHeaders }
157648
+ headers: { "content-type": JSON_CT3, ...listHeaders }
157152
157649
  });
157153
157650
  }
157154
157651
  if (path2 === "/v1/templates") {
157155
157652
  if (opts.authorizeList && !await opts.authorizeList(request)) {
157156
- return json4(401, { error: "unauthorized" });
157653
+ return json5(401, { error: "unauthorized" });
157157
157654
  }
157158
- if (!store.listApps) return json4(501, { error: "listing_unsupported" });
157655
+ if (!store.listApps) return json5(501, { error: "listing_unsupported" });
157159
157656
  const ids = await store.listApps();
157160
157657
  const templates = [];
157161
157658
  for (const id of ids) {
@@ -157182,7 +157679,7 @@ ${releaseId}`;
157182
157679
  });
157183
157680
  }
157184
157681
  templates.sort((a2, b2) => String(a2.name).localeCompare(String(b2.name)));
157185
- return json4(200, { templates });
157682
+ return json5(200, { templates });
157186
157683
  }
157187
157684
  const cfgMatch = /^\/v1\/app-config\/([^/]+)$/.exec(path2);
157188
157685
  const app = cfgMatch?.[1] ?? resolveApp(request, url);
@@ -157192,12 +157689,12 @@ ${releaseId}`;
157192
157689
  if (denied2) return denied2;
157193
157690
  }
157194
157691
  if (path2 === "/v1/template-source") {
157195
- if (!app) return json4(400, { error: "missing_app" });
157196
- if (!store.getSource) return json4(501, { error: "templates_unsupported" });
157692
+ if (!app) return json5(400, { error: "missing_app" });
157693
+ if (!store.getSource) return json5(501, { error: "templates_unsupported" });
157197
157694
  const m2 = pin ? await pinnedManifest(app, pin) : await manifest(app);
157198
- if (!m2?.sourceHash) return json4(404, { error: "template_source_not_found", app });
157695
+ if (!m2?.sourceHash) return json5(404, { error: "template_source_not_found", app });
157199
157696
  const bytes2 = await store.getSource(app, m2.sourceHash);
157200
- if (!bytes2) return json4(404, { error: "template_source_not_found", app });
157697
+ if (!bytes2) return json5(404, { error: "template_source_not_found", app });
157201
157698
  const etag = `"${m2.sourceHash}"`;
157202
157699
  const cache = { "cache-control": pin ? PINNED_CACHE_CONTROL : DOC_CACHE_CONTROL, ...pin ? { vary: "x-himalaya-release" } : {} };
157203
157700
  if (request.headers.get("if-none-match") === etag) {
@@ -157205,17 +157702,17 @@ ${releaseId}`;
157205
157702
  }
157206
157703
  return new Response(bytes2, {
157207
157704
  status: 200,
157208
- headers: { "content-type": JSON_CT2, etag, ...cache, "x-himalaya-app": app }
157705
+ headers: { "content-type": JSON_CT3, etag, ...cache, "x-himalaya-app": app }
157209
157706
  });
157210
157707
  }
157211
157708
  if (path2 === "/v1/authoring-docs" || /^\/v1\/authoring-docs\/(spec|mobile-ux)$/.test(path2)) {
157212
- if (!app) return json4(400, { error: "missing_app" });
157709
+ if (!app) return json5(400, { error: "missing_app" });
157213
157710
  const m2 = pin ? await pinnedManifest(app, pin) : await manifest(app);
157214
- if (!m2) return json4(404, { error: pin ? "release_not_found" : "no_release", app });
157711
+ if (!m2) return json5(404, { error: pin ? "release_not_found" : "no_release", app });
157215
157712
  const docs = m2.authoringDocs ?? {};
157216
157713
  const match = /^\/v1\/authoring-docs\/(spec|mobile-ux)$/.exec(path2);
157217
157714
  if (!match) {
157218
- return json4(200, {
157715
+ return json5(200, {
157219
157716
  app,
157220
157717
  releaseId: m2.releaseId,
157221
157718
  docs: Object.entries(docs).map(([name2, doc]) => ({ name: name2, ...doc }))
@@ -157223,9 +157720,9 @@ ${releaseId}`;
157223
157720
  }
157224
157721
  const name = match[1];
157225
157722
  const meta = docs[name];
157226
- if (!meta) return json4(404, { error: "authoring_doc_not_found", app, name });
157723
+ if (!meta) return json5(404, { error: "authoring_doc_not_found", app, name });
157227
157724
  const bytes2 = pin ? await pinnedBody(app, meta.sha256, () => Promise.resolve(null)) : store.getDoc ? await store.getDoc(app, meta.sha256) : null;
157228
- if (!bytes2) return json4(404, { error: "authoring_doc_not_found", app, name });
157725
+ if (!bytes2) return json5(404, { error: "authoring_doc_not_found", app, name });
157229
157726
  const etag = `"${meta.sha256}"`;
157230
157727
  if (request.headers.get("if-none-match") === etag) {
157231
157728
  return new Response(null, { status: 304, headers: { etag, "cache-control": pin ? PINNED_CACHE_CONTROL : DOC_CACHE_CONTROL, ...pin ? { vary: "x-himalaya-release" } : {} } });
@@ -157244,20 +157741,20 @@ ${releaseId}`;
157244
157741
  if (path2 === "/v1/release/current") {
157245
157742
  if (pin) {
157246
157743
  const m3 = app ? await pinnedManifest(app, pin) : null;
157247
- if (!m3) return json4(404, { error: "release_not_found", app, releaseId: pin });
157248
- return json4(200, { releaseId: m3.releaseId, app: m3.app, pinned: true, ...m3.minBinaryVersion ? { minBinaryVersion: m3.minBinaryVersion } : {}, ...m3.playerRequirements ? { playerRequirements: m3.playerRequirements } : {}, ...m3.hostProvidedIdentity === true ? { hostProvidedIdentity: true } : {}, ...m3.platforms ? { platforms: m3.platforms } : {} });
157744
+ if (!m3) return json5(404, { error: "release_not_found", app, releaseId: pin });
157745
+ return json5(200, { releaseId: m3.releaseId, app: m3.app, pinned: true, ...m3.minBinaryVersion ? { minBinaryVersion: m3.minBinaryVersion } : {}, ...m3.playerRequirements ? { playerRequirements: m3.playerRequirements } : {}, ...m3.hostProvidedIdentity === true ? { hostProvidedIdentity: true } : {}, ...m3.platforms ? { platforms: m3.platforms } : {} });
157249
157746
  }
157250
157747
  const m2 = app ? await manifest(app) : null;
157251
- if (!m2) return json4(404, { error: "no_release", app });
157252
- return json4(200, { releaseId: m2.releaseId, app: m2.app, ...m2.minBinaryVersion ? { minBinaryVersion: m2.minBinaryVersion } : {}, ...m2.playerRequirements ? { playerRequirements: m2.playerRequirements } : {}, ...m2.hostProvidedIdentity === true ? { hostProvidedIdentity: true } : {}, ...m2.platforms ? { platforms: m2.platforms } : {} });
157748
+ if (!m2) return json5(404, { error: "no_release", app });
157749
+ return json5(200, { releaseId: m2.releaseId, app: m2.app, ...m2.minBinaryVersion ? { minBinaryVersion: m2.minBinaryVersion } : {}, ...m2.playerRequirements ? { playerRequirements: m2.playerRequirements } : {}, ...m2.hostProvidedIdentity === true ? { hostProvidedIdentity: true } : {}, ...m2.platforms ? { platforms: m2.platforms } : {} });
157253
157750
  }
157254
157751
  const bundleMatch = /^\/v1\/bundles\/([a-f0-9]{64})\.bundle\.js$/.exec(path2);
157255
157752
  if (bundleMatch) {
157256
157753
  const hash2 = bundleMatch[1];
157257
157754
  const m2 = app ? pin ? await pinnedManifest(app, pin) : await manifest(app) : null;
157258
- if (!m2 || !app) return json4(404, { error: "no_release", app });
157755
+ if (!m2 || !app) return json5(404, { error: "no_release", app });
157259
157756
  const bytes2 = await store.getBundle(app, hash2);
157260
- if (!bytes2) return json4(404, { error: "bundle_not_found", hash: hash2 });
157757
+ if (!bytes2) return json5(404, { error: "bundle_not_found", hash: hash2 });
157261
157758
  const entry = Object.values(m2.bundles).find((b2) => b2.sha256 === hash2);
157262
157759
  return new Response(bytes2, {
157263
157760
  status: 200,
@@ -157269,27 +157766,27 @@ ${releaseId}`;
157269
157766
  });
157270
157767
  }
157271
157768
  if (path2 === "/v1/boot") {
157272
- if (!app) return json4(400, { error: "missing_app" });
157769
+ if (!app) return json5(400, { error: "missing_app" });
157273
157770
  let m2;
157274
157771
  if (pin) {
157275
157772
  const denied2 = await authorizePinnedRead(request, url, app, pin);
157276
157773
  if (denied2) return denied2;
157277
157774
  m2 = await pinnedManifest(app, pin);
157278
- if (!m2) return json4(404, { error: "release_not_found", app, releaseId: pin });
157775
+ if (!m2) return json5(404, { error: "release_not_found", app, releaseId: pin });
157279
157776
  } else {
157280
157777
  m2 = await manifest(app);
157281
- if (!m2) return json4(404, { error: "app_not_found", app });
157778
+ if (!m2) return json5(404, { error: "app_not_found", app });
157282
157779
  }
157283
157780
  const mm = m2;
157284
157781
  const readDoc = (hash2, live3) => pin ? hash2 ? pinnedBody(app, hash2, live3) : Promise.resolve(null) : live3();
157285
157782
  const ringPinned = pin !== null && request.headers.get(RELEASE_SOURCE_HEADER) === "ring";
157286
157783
  const cfgBytes = ringPinned ? await store.getAppConfig(app) : await readDoc(mm.appConfigHash, () => store.getAppConfig(app));
157287
- if (!cfgBytes) return json4(404, { error: "app_config_not_found", app });
157784
+ if (!cfgBytes) return json5(404, { error: "app_config_not_found", app });
157288
157785
  let appConfig;
157289
157786
  try {
157290
157787
  appConfig = JSON.parse(utf8Decode(cfgBytes));
157291
157788
  } catch {
157292
- return json4(500, { error: "app_config_invalid", app });
157789
+ return json5(500, { error: "app_config_invalid", app });
157293
157790
  }
157294
157791
  const bootOverlay = (!pin || ringPinned) && opts.devControl ? devControlOverlay.get(app) : void 0;
157295
157792
  if (bootOverlay) appConfig.control = { ...appConfig.control ?? {}, ...bootOverlay };
@@ -157346,41 +157843,41 @@ ${releaseId}`;
157346
157843
  if (request.headers.get("if-none-match") === etag) {
157347
157844
  return new Response(null, { status: 304, headers: { etag, "cache-control": cache, ...vary } });
157348
157845
  }
157349
- return json4(200, { releaseId: mm.releaseId, app, appConfig, tokens: tokens2, homeScreenId, screen, homeBundle }, { etag, "cache-control": cache, ...vary });
157846
+ return json5(200, { releaseId: mm.releaseId, app, appConfig, tokens: tokens2, homeScreenId, screen, homeBundle }, { etag, "cache-control": cache, ...vary });
157350
157847
  }
157351
157848
  if (path2 === "/v1/tokens") {
157352
- if (!app) return json4(400, { error: "missing_app" });
157849
+ if (!app) return json5(400, { error: "missing_app" });
157353
157850
  if (pin) {
157354
157851
  const m2 = await pinnedManifest(app, pin);
157355
- if (!m2) return json4(404, { error: "release_not_found", app, releaseId: pin });
157852
+ if (!m2) return json5(404, { error: "release_not_found", app, releaseId: pin });
157356
157853
  const bytes3 = m2.tokensHash ? await pinnedBody(app, m2.tokensHash, () => store.getTokens(app)) : null;
157357
- if (!bytes3) return json4(404, { error: "tokens_not_found", app });
157854
+ if (!bytes3) return json5(404, { error: "tokens_not_found", app });
157358
157855
  return sendDoc(request, bytes3, true);
157359
157856
  }
157360
157857
  const bytes2 = await store.getTokens(app);
157361
- if (!bytes2) return json4(404, { error: "tokens_not_found", app });
157858
+ if (!bytes2) return json5(404, { error: "tokens_not_found", app });
157362
157859
  return sendDoc(request, bytes2);
157363
157860
  }
157364
157861
  if (path2 === "/v1/l10n") {
157365
- if (!app) return json4(400, { error: "missing_app" });
157862
+ if (!app) return json5(400, { error: "missing_app" });
157366
157863
  const tag = (url.searchParams.get("tag") ?? "").trim();
157367
157864
  if (!/^[a-z]{2}(-[A-Za-z0-9]+)?$/.test(tag)) {
157368
- return json4(400, { error: "bad_tag", hint: "pass a BCP-47 primary subtag, e.g. tag=he" });
157865
+ return json5(400, { error: "bad_tag", hint: "pass a BCP-47 primary subtag, e.g. tag=he" });
157369
157866
  }
157370
157867
  const m2 = pin ? await pinnedManifest(app, pin) : await manifest(app);
157371
- if (!m2) return json4(404, pin ? { error: "release_not_found", app, releaseId: pin } : { error: "no_release", app });
157868
+ if (!m2) return json5(404, pin ? { error: "release_not_found", app, releaseId: pin } : { error: "no_release", app });
157372
157869
  const hash2 = m2.catalogs?.[tag];
157373
157870
  if (!hash2) return new Response(null, { status: 204 });
157374
- if (!store.getDoc) return json4(501, { error: "docs_unsupported" });
157871
+ if (!store.getDoc) return json5(501, { error: "docs_unsupported" });
157375
157872
  const bytes2 = await store.getDoc(app, hash2);
157376
157873
  if (!bytes2) return new Response(null, { status: 204 });
157377
157874
  return sendDoc(request, bytes2, Boolean(pin));
157378
157875
  }
157379
157876
  if (path2 === "/v1/app-icon") {
157380
- if (!app) return json4(400, { error: "missing_app" });
157381
- if (!store.getIcon) return json4(501, { error: "icons_unsupported" });
157877
+ if (!app) return json5(400, { error: "missing_app" });
157878
+ if (!store.getIcon) return json5(501, { error: "icons_unsupported" });
157382
157879
  const m2 = pin ? await pinnedManifest(app, pin) : await manifest(app);
157383
- if (!m2) return json4(404, pin ? { error: "release_not_found", app, releaseId: pin } : { error: "no_release", app });
157880
+ if (!m2) return json5(404, pin ? { error: "release_not_found", app, releaseId: pin } : { error: "no_release", app });
157384
157881
  if (!m2.iconHash) return new Response(null, { status: 204 });
157385
157882
  const bytes2 = await store.getIcon(app);
157386
157883
  if (!bytes2) return new Response(null, { status: 204 });
@@ -157395,19 +157892,19 @@ ${releaseId}`;
157395
157892
  }
157396
157893
  const assetMatch = /^\/v1\/asset\/([^/?]+)$/.exec(path2);
157397
157894
  if (assetMatch) {
157398
- if (!app) return json4(400, { error: "missing_app" });
157399
- if (!store.getAsset) return json4(501, { error: "assets_unsupported" });
157895
+ if (!app) return json5(400, { error: "missing_app" });
157896
+ if (!store.getAsset) return json5(501, { error: "assets_unsupported" });
157400
157897
  const sha2 = assetMatch[1];
157401
- if (!isSafeSegment(sha2)) return json4(400, { error: "bad_asset" });
157898
+ if (!isSafeSegment(sha2)) return json5(400, { error: "bad_asset" });
157402
157899
  const m2 = pin ? await pinnedManifest(app, pin) : await manifest(app);
157403
157900
  const record2 = Object.values(m2?.assets ?? {}).find((a2) => a2.sha256 === sha2);
157404
- if (!record2) return json4(404, { error: "asset_not_found", app });
157901
+ if (!record2) return json5(404, { error: "asset_not_found", app });
157405
157902
  const etag = strongEtagForSha256(sha2);
157406
157903
  if (request.headers.get("if-none-match") === etag) {
157407
157904
  return new Response(null, { status: 304, headers: { etag, "cache-control": BUNDLE_CACHE_CONTROL } });
157408
157905
  }
157409
157906
  const bytes2 = await store.getAsset(app, sha2);
157410
- if (!bytes2) return json4(404, { error: "asset_not_found", app });
157907
+ if (!bytes2) return json5(404, { error: "asset_not_found", app });
157411
157908
  return new Response(bytes2, {
157412
157909
  status: 200,
157413
157910
  headers: {
@@ -157433,19 +157930,19 @@ ${releaseId}`;
157433
157930
  bundleUrl: `/v1/bundles/${h2.bundleHash}.bundle.js?app=${encodeURIComponent(ahApp)}`,
157434
157931
  integrity: h2.sri
157435
157932
  }));
157436
- return json4(200, { handlers });
157933
+ return json5(200, { handlers });
157437
157934
  }
157438
157935
  if (cfgMatch) {
157439
157936
  const cfgApp = cfgMatch[1];
157440
157937
  if (pin) {
157441
157938
  const m2 = await pinnedManifest(cfgApp, pin);
157442
- if (!m2) return json4(404, { error: "release_not_found", app: cfgApp, releaseId: pin });
157939
+ if (!m2) return json5(404, { error: "release_not_found", app: cfgApp, releaseId: pin });
157443
157940
  const bytes3 = m2.appConfigHash ? await pinnedBody(cfgApp, m2.appConfigHash, () => store.getAppConfig(cfgApp)) : null;
157444
- if (!bytes3) return json4(404, { error: "app_config_not_found", app: cfgApp });
157941
+ if (!bytes3) return json5(404, { error: "app_config_not_found", app: cfgApp });
157445
157942
  return sendDoc(request, bytes3, true);
157446
157943
  }
157447
157944
  const bytes2 = await store.getAppConfig(cfgApp);
157448
- if (!bytes2) return json4(404, { error: "app_config_not_found", app: cfgApp });
157945
+ if (!bytes2) return json5(404, { error: "app_config_not_found", app: cfgApp });
157449
157946
  const overlay = opts.devControl ? devControlOverlay.get(cfgApp) : void 0;
157450
157947
  if (overlay) {
157451
157948
  const cfg = JSON.parse(utf8Decode(bytes2));
@@ -157457,50 +157954,50 @@ ${releaseId}`;
157457
157954
  const screenMatch = /^\/v1\/screen\/([^/]+)$/.exec(path2);
157458
157955
  if (screenMatch) {
157459
157956
  const screenId = screenMatch[1];
157460
- if (!app || !isSafeSegment(screenId)) return json4(404, { error: "screen_not_found", screenId });
157957
+ if (!app || !isSafeSegment(screenId)) return json5(404, { error: "screen_not_found", screenId });
157461
157958
  if (pin) {
157462
157959
  const denied2 = await authorizePinnedRead(request, url, app, pin, screenId);
157463
157960
  if (denied2) return denied2;
157464
157961
  const m3 = await pinnedManifest(app, pin);
157465
- if (!m3) return json4(404, { error: "release_not_found", app, releaseId: pin });
157962
+ if (!m3) return json5(404, { error: "release_not_found", app, releaseId: pin });
157466
157963
  const meta2 = m3.screens[screenId];
157467
- if (!meta2) return json4(404, { error: "screen_not_found", screenId });
157964
+ if (!meta2) return json5(404, { error: "screen_not_found", screenId });
157468
157965
  const etag2 = `"${meta2.descriptorHash}"`;
157469
157966
  const headers2 = { etag: etag2, "cache-control": PINNED_CACHE_CONTROL, vary: "x-himalaya-release" };
157470
157967
  if (request.headers.get("if-none-match") === etag2) return new Response(null, { status: 304, headers: headers2 });
157471
157968
  const body2 = await pinnedBody(app, meta2.descriptorHash, () => store.getScreen(app, screenId));
157472
- if (!body2) return json4(404, { error: "screen_not_found", screenId });
157473
- return new Response(body2, { status: 200, headers: { "content-type": JSON_CT2, ...headers2, "x-himalaya-app": app } });
157969
+ if (!body2) return json5(404, { error: "screen_not_found", screenId });
157970
+ return new Response(body2, { status: 200, headers: { "content-type": JSON_CT3, ...headers2, "x-himalaya-app": app } });
157474
157971
  }
157475
157972
  const m2 = await manifest(app);
157476
157973
  const meta = m2?.screens[screenId];
157477
- if (!m2 || !meta) return json4(404, { error: "screen_not_found", screenId });
157974
+ if (!m2 || !meta) return json5(404, { error: "screen_not_found", screenId });
157478
157975
  const etag = `"${meta.descriptorHash}"`;
157479
157976
  if (request.headers.get("if-none-match") === etag) {
157480
157977
  return new Response(null, { status: 304, headers: { etag, "cache-control": DOC_CACHE_CONTROL } });
157481
157978
  }
157482
157979
  const body = await store.getScreen(app, screenId);
157483
- if (!body) return json4(404, { error: "screen_not_found", screenId });
157980
+ if (!body) return json5(404, { error: "screen_not_found", screenId });
157484
157981
  return new Response(body, {
157485
157982
  status: 200,
157486
- headers: { "content-type": JSON_CT2, etag, "cache-control": DOC_CACHE_CONTROL, "x-himalaya-app": app }
157983
+ headers: { "content-type": JSON_CT3, etag, "cache-control": DOC_CACHE_CONTROL, "x-himalaya-app": app }
157487
157984
  });
157488
157985
  }
157489
157986
  if (path2 === "/v1/widgets") {
157490
- if (!app) return json4(400, { error: "missing_app" });
157987
+ if (!app) return json5(400, { error: "missing_app" });
157491
157988
  const m2 = pin ? await pinnedManifest(app, pin) : await manifest(app);
157492
- if (!m2) return json4(404, { error: pin ? "release_not_found" : "no_release", app });
157989
+ if (!m2) return json5(404, { error: pin ? "release_not_found" : "no_release", app });
157493
157990
  const widgets = Object.entries(m2.widgets ?? {}).map(([widgetId, meta]) => ({ widgetId, contentEtag: meta.contentEtag }));
157494
- return json4(200, { widgets });
157991
+ return json5(200, { widgets });
157495
157992
  }
157496
157993
  const widgetMatch = /^\/v1\/widget\/([^/]+)$/.exec(path2);
157497
157994
  if (widgetMatch) {
157498
157995
  const widgetId = widgetMatch[1];
157499
- if (!app || !isSafeSegment(widgetId)) return json4(404, { error: "widget_not_found", widgetId });
157500
- if (!store.getWidget) return json4(501, { error: "widgets_unsupported" });
157996
+ if (!app || !isSafeSegment(widgetId)) return json5(404, { error: "widget_not_found", widgetId });
157997
+ if (!store.getWidget) return json5(501, { error: "widgets_unsupported" });
157501
157998
  const m2 = pin ? await pinnedManifest(app, pin) : await manifest(app);
157502
157999
  const meta = m2?.widgets?.[widgetId];
157503
- if (!m2 || !meta) return json4(404, { error: "widget_not_found", widgetId });
158000
+ if (!m2 || !meta) return json5(404, { error: "widget_not_found", widgetId });
157504
158001
  const etag = `"${meta.contentEtag}"`;
157505
158002
  const cache = pin ? PINNED_CACHE_CONTROL : `max-age=${meta.ttlSeconds}`;
157506
158003
  const vary = pin ? { vary: "x-himalaya-release" } : {};
@@ -157508,15 +158005,15 @@ ${releaseId}`;
157508
158005
  return new Response(null, { status: 304, headers: { etag, "cache-control": cache, ...vary } });
157509
158006
  }
157510
158007
  const body = await store.getWidget(app, widgetId);
157511
- if (!body) return json4(404, { error: "widget_not_found", widgetId });
158008
+ if (!body) return json5(404, { error: "widget_not_found", widgetId });
157512
158009
  return new Response(body, {
157513
158010
  status: 200,
157514
- headers: { "content-type": JSON_CT2, etag, "cache-control": cache, ...vary, "x-himalaya-app": app }
158011
+ headers: { "content-type": JSON_CT3, etag, "cache-control": cache, ...vary, "x-himalaya-app": app }
157515
158012
  });
157516
158013
  }
157517
- return json4(404, { error: "not_found" });
158014
+ return json5(404, { error: "not_found" });
157518
158015
  } catch (err) {
157519
- return json4(500, { error: "internal", message: err.message });
158016
+ return json5(500, { error: "internal", message: err.message });
157520
158017
  }
157521
158018
  };
157522
158019
  return async (request) => {
@@ -157538,7 +158035,7 @@ ${releaseId}`;
157538
158035
  return withCors(request, response);
157539
158036
  };
157540
158037
  }
157541
- var JSON_CT2;
158038
+ var JSON_CT3;
157542
158039
  var init_server2 = __esm({
157543
158040
  "../../core/serve/src/server.ts"() {
157544
158041
  init_sha256();
@@ -157548,8 +158045,9 @@ var init_server2 = __esm({
157548
158045
  init_pinned_read();
157549
158046
  init_package_share();
157550
158047
  init_wix_bridge();
158048
+ init_account_rung();
157551
158049
  init_wix_member_auth();
157552
- JSON_CT2 = "application/json; charset=utf-8";
158050
+ JSON_CT3 = "application/json; charset=utf-8";
157553
158051
  }
157554
158052
  });
157555
158053
 
@@ -157758,14 +158256,14 @@ function makeRunHandler(opts) {
157758
158256
  const url = new URL(request.url);
157759
158257
  const path2 = url.pathname;
157760
158258
  if (path2 === "/v1/release/resolve") {
157761
- return json5(
158259
+ return json6(
157762
158260
  200,
157763
158261
  { app: opts.app, releaseId: opts.header?.releaseId ?? null, source: "local" },
157764
158262
  { "cache-control": "no-store" }
157765
158263
  );
157766
158264
  }
157767
158265
  if (path2 === "/v1/revocations") {
157768
- return json5(
158266
+ return json6(
157769
158267
  200,
157770
158268
  { app: opts.app, revokedIntegrities: [], version: 0, ttlSeconds: 30 },
157771
158269
  { "cache-control": "max-age=30" }
@@ -157774,14 +158272,14 @@ function makeRunHandler(opts) {
157774
158272
  const flagAssign = FLAG_ASSIGNMENTS_PATH.exec(path2);
157775
158273
  if (flagAssign) return flagAssignmentsResponse(request, flagAssign[1], []);
157776
158274
  if (path2.startsWith("/v1/flags/")) {
157777
- return json5(200, { app: opts.app, definitions: {} }, { "cache-control": "no-store" });
158275
+ return json6(200, { app: opts.app, definitions: {} }, { "cache-control": "no-store" });
157778
158276
  }
157779
158277
  if (path2 === "/v1/owner/sites" && !ownerRungOn && (request.method === "GET" || request.method === "HEAD")) {
157780
158278
  const headers2 = { "cache-control": "no-store" };
157781
- return request.method === "HEAD" ? new Response(null, { status: 200, headers: { "content-type": "application/json; charset=utf-8", ...headers2 } }) : json5(200, { sites: [] }, headers2);
158279
+ return request.method === "HEAD" ? new Response(null, { status: 200, headers: { "content-type": "application/json; charset=utf-8", ...headers2 } }) : json6(200, { sites: [] }, headers2);
157782
158280
  }
157783
158281
  if (path2 === "/v1/telemetry/ingest") {
157784
- if (request.method !== "POST") return json5(405, { error: "method_not_allowed" });
158282
+ if (request.method !== "POST") return json6(405, { error: "method_not_allowed" });
157785
158283
  try {
157786
158284
  const body = await request.json();
157787
158285
  const events = Array.isArray(body) ? body : Array.isArray(body?.events) ? body.events : [body];
@@ -157819,7 +158317,7 @@ data: ${JSON.stringify(data ?? {})}
157819
158317
  });
157820
158318
  }
157821
158319
  if (path2.startsWith("/v1/__webwix/") && path2 !== "/v1/__webwix/call" && path2 !== "/v1/__webwix/identity" && !(opts.serve?.webwixMemberAuth === true && opts.serve?.webwixMemberSessions)) {
157822
- return json5(501, { error: "webwix_member_auth_unavailable" });
158320
+ return json6(501, { error: "webwix_member_auth_unavailable" });
157823
158321
  }
157824
158322
  if (path2 === "/v1/app-config" || path2.startsWith("/v1/app-config/")) {
157825
158323
  return localizeConfigResponse(await serve(request), "app-config", opts.header ?? null);
@@ -157837,17 +158335,17 @@ data: ${JSON.stringify(data ?? {})}
157837
158335
  if (path2 === mount || path2.startsWith(`${mount}/`)) {
157838
158336
  return previewResponse(path2, opts.assets, mount);
157839
158337
  }
157840
- return json5(404, { error: "not_found", path: path2 });
158338
+ return json6(404, { error: "not_found", path: path2 });
157841
158339
  };
157842
158340
  }
157843
- var json5;
158341
+ var json6;
157844
158342
  var init_run_handler = __esm({
157845
158343
  "../../core/serve/src/run-handler.ts"() {
157846
158344
  init_server2();
157847
158345
  init_flag_assignments();
157848
158346
  init_preview3();
157849
158347
  init_himi_package();
157850
- json5 = (status, body, headers2 = {}) => new Response(JSON.stringify(body), {
158348
+ json6 = (status, body, headers2 = {}) => new Response(JSON.stringify(body), {
157851
158349
  status,
157852
158350
  headers: { "content-type": "application/json; charset=utf-8", ...headers2 }
157853
158351
  });
@@ -158004,30 +158502,30 @@ var init_preview_assets_generated = __esm({
158004
158502
  "../../packages/serve/src/preview-assets.generated.ts"() {
158005
158503
  init_preview_assets_format();
158006
158504
  PREVIEW_ASSET_MANIFEST = [
158007
- { key: "assets/DashboardHost-DuO9-FCH.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "7c5c6577ac90cc0a2468bea1fb83a442990c821347f2406ebd4bc86a74775a2f" },
158008
- { key: "assets/DevDrawer-VG-iNzys.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "e9fcf9023bdc63f7fca869f343ba5c636491c85514ea4850d83e27f000ab15b4" },
158009
- { key: "assets/IdiomCompare-C_vRuukH.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "220eee6d715e4b9192032bab7ee6e7799d2818b6ca6e1fdd0eff64ffec7369cb" },
158010
- { key: "assets/SchemeCompare-79I5ovdF.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 1824, sha256: "51845da3a4b3dccbca94bac775012aa609391a5e0fc0c43daca5bc10e7a1a019" },
158011
- { key: "assets/index-BA8kT-mS.js", contentType: "application/javascript; charset=utf-8", offset: 23384, length: 1307205, sha256: "b680682503e11ec3bd3ec4101a8b962a8a92452a03247eabe1cdf8e6ec03a8d8" },
158012
- { key: "assets/pdf-B-Qi9uEs.js", contentType: "application/javascript; charset=utf-8", offset: 1330589, length: 488199, sha256: "1bb9f92160364515c78ad13ecd2624516055f1ae4b67729d59dba559e32b7333" },
158013
- { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1818788, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
158014
- { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1818861, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
158015
- { key: "assets/pdfDocument-Be5vj0bI.js", contentType: "application/javascript; charset=utf-8", offset: 3135895, length: 2868, sha256: "b33e953d35db651888481cf7d2e6d5743b77c12295c2d4e9a6375f54c1eebabb" },
158016
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3138763, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
158017
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3143373, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
158018
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3631957, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
158019
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3722881, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
158020
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3813865, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
158021
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3904845, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
158022
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 3995717, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
158023
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4086697, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
158024
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4195333, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
158025
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4304417, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
158026
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4413465, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
158027
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4521165, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
158028
- { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4609273, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
158029
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4616021, length: 4947, sha256: "5070707f698e16f887cecbedb4556bd3d8aea87520630e38cda57b1f4315b860" },
158030
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4620968, length: 17768, sha256: "a47dec8623a0f58def7d8785ee74d08483626e75d07c9328bfc9ecb2172c2e0d" }
158505
+ { key: "assets/DashboardHost-CMzLSKF-.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "c9f6138bd99f7f2688ce09257f0f6a11e605a401ed94b99039af6882a1b2cac6" },
158506
+ { key: "assets/DevDrawer-DRsYVC-c.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "b19cad52b8b093da1380c3d93bac25090785e99170a78af8b00a3d3391a1f71f" },
158507
+ { key: "assets/IdiomCompare-CIS_tR5g.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "89e8e33a11f734d6d40591cca7d82dad1777934ef69fb94d2ff36df8beed7aae" },
158508
+ { key: "assets/SchemeCompare-B8ACwERk.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 1819, sha256: "d3318143e09268f7523ca6b79bbb5ef845d3a33364ed022b60f25e79c64839fa" },
158509
+ { key: "assets/index-DsicOVa7.js", contentType: "application/javascript; charset=utf-8", offset: 23379, length: 1333388, sha256: "3dfdd09d8d605e2b0ebbe61deff4e360a77d89d5f75bfc4cb0c1c742590d0724" },
158510
+ { key: "assets/pdf-CRldTUgE.js", contentType: "application/javascript; charset=utf-8", offset: 1356767, length: 488199, sha256: "4fdd427b67ac902de39167965e657b474b0195cc46d3ca1c7c2697e944c7cb4f" },
158511
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1844966, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
158512
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1845039, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
158513
+ { key: "assets/pdfDocument-B6MDOJiD.js", contentType: "application/javascript; charset=utf-8", offset: 3162073, length: 2868, sha256: "7c0ea35a311ba32e8fca842f54a7c22bfd3d1f108af6aad470c2b4fb956250d8" },
158514
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3164941, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
158515
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3169551, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
158516
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3658135, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
158517
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3749059, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
158518
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3840043, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
158519
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3931023, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
158520
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4021895, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
158521
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4112875, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
158522
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4221511, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
158523
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4330595, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
158524
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4439643, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
158525
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4547343, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
158526
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4635451, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
158527
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4642199, length: 4947, sha256: "519d65dd1d4dafc3e32f0ddb70ddfccfdd72b68110694d9c2ec61fb3b8640c48" },
158528
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4647146, length: 17768, sha256: "a47dec8623a0f58def7d8785ee74d08483626e75d07c9328bfc9ecb2172c2e0d" }
158031
158529
  ];
158032
158530
  }
158033
158531
  });
@@ -162672,9 +163170,9 @@ var init_store_iap = __esm({
162672
163170
  UsageError = class extends Error {
162673
163171
  };
162674
163172
  CommandOutput = class {
162675
- constructor(io2, json6) {
163173
+ constructor(io2, json7) {
162676
163174
  this.io = io2;
162677
- this.json = json6;
163175
+ this.json = json7;
162678
163176
  }
162679
163177
  secrets = [];
162680
163178
  get interactive() {
@@ -162845,7 +163343,7 @@ async function runStore(pos, flags, io2, deps) {
162845
163343
  const invokedAs = pos[0];
162846
163344
  const sub = invokedAs === "testflight" ? "upload" : pos[1];
162847
163345
  const app = invokedAs === "testflight" ? pos[1] : pos[2];
162848
- const json6 = on3(flags.json);
163346
+ const json7 = on3(flags.json);
162849
163347
  const print = (o2) => io2.log(JSON.stringify(o2, null, 2));
162850
163348
  const fail5 = (error, extra = {}) => {
162851
163349
  io2.error(JSON.stringify({ error, ...extra }));
@@ -162883,7 +163381,7 @@ async function runStore(pos, flags, io2, deps) {
162883
163381
  }
162884
163382
  try {
162885
163383
  const s2 = await deps.ascStatus(app, credsToEnv(creds2));
162886
- if (json6) print({ ok: true, app, team: creds2.team, ...s2 });
163384
+ if (json7) print({ ok: true, app, team: creds2.team, ...s2 });
162887
163385
  else {
162888
163386
  io2.log(` ${pad2("app")}${app} team ${creds2.team} appStoreId ${s2.appStoreId}`);
162889
163387
  for (const b2 of s2.builds.slice(0, 5)) io2.log(` ${pad2("build")}${b2.version} ${b2.processingState}`);
@@ -162903,7 +163401,7 @@ async function runStore(pos, flags, io2, deps) {
162903
163401
  }
162904
163402
  const { errors, warnings } = partitionFindings(findings);
162905
163403
  if (sub === "preflight") {
162906
- if (json6) print({ ok: errors.length === 0, app, findings });
163404
+ if (json7) print({ ok: errors.length === 0, app, findings });
162907
163405
  else {
162908
163406
  for (const f2 of findings) io2.log(` ${f2.level === "error" ? "\u2717" : "!"} ${f2.message}`);
162909
163407
  io2.log(errors.length === 0 ? `
@@ -162941,7 +163439,7 @@ async function runStore(pos, flags, io2, deps) {
162941
163439
  const reuseExisting = on3(flags["skip-build"]);
162942
163440
  const nextBuild = reuseExisting ? version4.build : version4.build + 1;
162943
163441
  const plannedSteps = UPLOAD_STEPS.filter((s2) => !(reuseExisting && BUILD_STEPS.has(s2)));
162944
- if (!json6) {
163442
+ if (!json7) {
162945
163443
  io2.log("");
162946
163444
  for (const line of accountHeader({ app, bundleId, version: version4, nextBuild, creds, track })) io2.log(line);
162947
163445
  io2.log("");
@@ -162969,7 +163467,7 @@ async function runStore(pos, flags, io2, deps) {
162969
163467
  steps: [...plannedSteps],
162970
163468
  warnings: warnings.map((w2) => w2.message)
162971
163469
  };
162972
- if (json6) print(plan);
163470
+ if (json7) print(plan);
162973
163471
  else {
162974
163472
  io2.log(`
162975
163473
  dry run \u2014 nothing was built, uploaded or bumped.`);
@@ -163022,11 +163520,11 @@ async function runStore(pos, flags, io2, deps) {
163022
163520
  stderr: r2.stderr.split("\n").slice(-20).join("\n")
163023
163521
  });
163024
163522
  }
163025
- if (!json6) io2.log(` \u2713 ${pad2(step)}ok`);
163523
+ if (!json7) io2.log(` \u2713 ${pad2(step)}ok`);
163026
163524
  }
163027
163525
  if (on3(flags["no-wait"])) {
163028
163526
  const out2 = { ok: true, app, build: uploaded.build, uploaded: true, processed: null, note: "upload accepted; processing not awaited. `himi store status " + app + "` tells you whether it landed." };
163029
- if (json6) print(out2);
163527
+ if (json7) print(out2);
163030
163528
  else io2.log(`
163031
163529
  \u2713 uploaded build ${uploaded.build} \u2014 processing not awaited.`);
163032
163530
  return 0;
@@ -163047,7 +163545,7 @@ async function runStore(pos, flags, io2, deps) {
163047
163545
  const mine = findBuild(s2.builds, uploaded.build);
163048
163546
  if (mine && mine.processingState === "VALID") {
163049
163547
  const url = `https://appstoreconnect.apple.com/apps/${s2.appStoreId}/testflight/ios`;
163050
- if (json6) print({ ok: true, app, build: uploaded.build, processingState: mine.processingState, url });
163548
+ if (json7) print({ ok: true, app, build: uploaded.build, processingState: mine.processingState, url });
163051
163549
  else io2.log(`
163052
163550
  \u2713 TestFlight ${uploaded.marketing} (${uploaded.build}) \u2014 Processing complete
163053
163551
  ${url}`);
@@ -163067,7 +163565,7 @@ async function runStore(pos, flags, io2, deps) {
163067
163565
  { app, build: uploaded.build, uploaded: true, processed: false }
163068
163566
  );
163069
163567
  }
163070
- if (!json6) io2.log(` \u2026 processing (${Math.round(waited / 1e3)}s)`);
163568
+ if (!json7) io2.log(` \u2026 processing (${Math.round(waited / 1e3)}s)`);
163071
163569
  await deps.sleep(PROCESSING_POLL_MS);
163072
163570
  waited += PROCESSING_POLL_MS;
163073
163571
  }
@@ -164397,7 +164895,7 @@ function parseDataFlag(raw) {
164397
164895
  async function runNotify(pos, flags, io2, deps = {}) {
164398
164896
  const doFetch = deps.fetchImpl ?? fetch;
164399
164897
  const str10 = (v2) => typeof v2 === "string" ? v2 : void 0;
164400
- const json6 = flags.json === true;
164898
+ const json7 = flags.json === true;
164401
164899
  const print = (v2) => io2.log(JSON.stringify(v2, null, 2));
164402
164900
  const sub = pos[1];
164403
164901
  const USAGE2 = "himi notify send --app <app> (--token <t> | --device <id> | --all) --title <s> [--body <s>] [--link <url>]\n [--platform ios|android] [--category <c>] [--badge <n>] [--channel <id>] [--silent] [--dry-run] [--json]\n [--data k=v ...]\nhimi notify tokens --app <app> [--platform ios|android] [--include-disabled] [--json]\nhimi notify doctor [--json]";
@@ -164442,7 +164940,7 @@ async function runNotify(pos, flags, io2, deps = {}) {
164442
164940
  ...session ? {} : { hint: "no admin session \u2014 pass --admin-session or set HIMALAYA_ADMIN_SESSION" },
164443
164941
  ...reachable && authed && !senders ? { hint: "this admin-server predates /v1/admin/push-doctor \u2014 upgrade it to see sender readiness" } : {}
164444
164942
  };
164445
- if (json6) {
164943
+ if (json7) {
164446
164944
  print(report3);
164447
164945
  return report3.ok ? 0 : 1;
164448
164946
  }
@@ -164490,7 +164988,7 @@ async function runNotify(pos, flags, io2, deps = {}) {
164490
164988
  return 1;
164491
164989
  }
164492
164990
  const body = await res2.json();
164493
- if (json6) {
164991
+ if (json7) {
164494
164992
  print({ ok: true, app, count: body.tokens.length, tokens: body.tokens });
164495
164993
  return 0;
164496
164994
  }
@@ -164580,7 +165078,7 @@ async function runNotify(pos, flags, io2, deps = {}) {
164580
165078
  io2.error(JSON.stringify({ error: out2.error ?? `send failed: ${res.status}` }));
164581
165079
  return 1;
164582
165080
  }
164583
- if (json6) {
165081
+ if (json7) {
164584
165082
  print(out2);
164585
165083
  return out2.ok ? 0 : 1;
164586
165084
  }
@@ -168240,10 +168738,10 @@ function writeBase44Book(result, outDir, opts = {}) {
168240
168738
  const shot = shots.find((s2) => page.screenshotLocal?.endsWith(s2.filename));
168241
168739
  if (shot) page.screenshotLocal = `screenshots/${shot.filename}`;
168242
168740
  }
168243
- const json6 = `${JSON.stringify(book, null, 2)}
168741
+ const json7 = `${JSON.stringify(book, null, 2)}
168244
168742
  `;
168245
168743
  const md = renderBookMd(book);
168246
- assertNoSecrets(json6);
168744
+ assertNoSecrets(json7);
168247
168745
  assertNoSecrets(md);
168248
168746
  const owned = ["book.json", "BOOK.md", "source", "screenshots"].filter((n2) => existsSync78(join83(out2, n2)));
168249
168747
  if (owned.length) {
@@ -168251,7 +168749,7 @@ function writeBase44Book(result, outDir, opts = {}) {
168251
168749
  for (const d2 of ["source", "screenshots"]) rmSync21(join83(out2, d2), { recursive: true, force: true });
168252
168750
  }
168253
168751
  mkdirSync38(out2, { recursive: true });
168254
- writeFileSync34(join83(out2, "book.json"), json6);
168752
+ writeFileSync34(join83(out2, "book.json"), json7);
168255
168753
  writeFileSync34(join83(out2, "BOOK.md"), md);
168256
168754
  files.push("book.json", "BOOK.md");
168257
168755
  for (const s2 of shots) {
@@ -172181,12 +172679,54 @@ var init_collect = __esm({
172181
172679
  });
172182
172680
 
172183
172681
  // src/one-app/graph.ts
172184
- function buildSourceGraph(raw) {
172185
- const screens = object4(raw.screens);
172682
+ function buildSourceGraph(raw, enriched = {}) {
172683
+ const enrichedStructures = Object.values(enriched).filter((value) => value !== void 0);
172684
+ function sourceMap2(key2) {
172685
+ const result = {};
172686
+ for (const structure of enrichedStructures) {
172687
+ for (const [id, value] of Object.entries(object4(structure[key2]))) {
172688
+ if (!own4(result, id)) result[id] = value;
172689
+ }
172690
+ }
172691
+ for (const [id, value] of Object.entries(object4(raw[key2]))) {
172692
+ result[id] = own4(result, id) ? { ...object4(result[id]), ...object4(value) } : value;
172693
+ }
172694
+ return result;
172695
+ }
172696
+ function definitionMap(key2) {
172697
+ const result = {};
172698
+ for (const structure of enrichedStructures) {
172699
+ for (const [id, value] of Object.entries(object4(object4(structure.definitions)[key2]))) {
172700
+ if (!own4(result, id)) result[id] = value;
172701
+ }
172702
+ }
172703
+ for (const [id, value] of Object.entries(object4(object4(raw.definitions)[key2]))) {
172704
+ result[id] = own4(result, id) ? { ...object4(result[id]), ...object4(value) } : value;
172705
+ }
172706
+ return result;
172707
+ }
172708
+ function platformMap(platformStructure, key2) {
172709
+ const result = { ...object4(platformStructure[key2]) };
172710
+ for (const [id, value] of Object.entries(object4(raw[key2]))) {
172711
+ result[id] = own4(result, id) ? { ...object4(result[id]), ...object4(value) } : value;
172712
+ }
172713
+ return result;
172714
+ }
172715
+ function platformDefinitionMap(platformStructure, key2) {
172716
+ const result = { ...object4(object4(platformStructure.definitions)[key2]) };
172717
+ for (const [id, value] of Object.entries(object4(object4(raw.definitions)[key2]))) {
172718
+ result[id] = own4(result, id) ? { ...object4(result[id]), ...object4(value) } : value;
172719
+ }
172720
+ return result;
172721
+ }
172722
+ const screens = sourceMap2("screens");
172186
172723
  const layouts = object4(raw.layoutItems);
172187
172724
  const allSections = object4(raw.sections);
172188
172725
  const sections = Object.fromEntries(Object.entries(allSections).filter(([, v2]) => !string3(object4(v2).sectionDefinitionId)?.startsWith("ntt.")));
172189
172726
  const headers2 = object4(raw.headers);
172727
+ const topBars = sourceMap2("topBars");
172728
+ const topBarButtonDefinitions = definitionMap("topBarButtons");
172729
+ const actionDefinitions = definitionMap("actions");
172190
172730
  const warnings = [];
172191
172731
  const usedSections = /* @__PURE__ */ new Set();
172192
172732
  const usedLayouts = /* @__PURE__ */ new Set();
@@ -172276,6 +172816,30 @@ function buildSourceGraph(raw) {
172276
172816
  return [{ pointer: refPointer, context: placementContext, arrayIndex: index, ...own4(ref, "orderIndex") ? { orderIndex: ref.orderIndex } : {}, sectionId: id, sectionDefinitionId: string3(object4(sections[id]).sectionDefinitionId), reference: ref }];
172277
172817
  });
172278
172818
  }
172819
+ function topBarButtons(value, side2, pointer, context, buttonDefinitions = topBarButtonDefinitions, availableActions = actionDefinitions, trackInteractions = true) {
172820
+ const bar = object4(value);
172821
+ const idsKey = `${side2}ButtonIds`;
172822
+ const definitionsKey = `${side2}ButtonDefinitions`;
172823
+ const refs = own4(bar, idsKey) ? array3(bar[idsKey]) : array3(bar[definitionsKey]);
172824
+ return refs.map((ref, index) => {
172825
+ const refObject = object4(ref);
172826
+ const id = typeof ref === "string" ? ref : string3(refObject.topBarButtonDefinitionId) ?? string3(refObject.id);
172827
+ const definition = id && own4(buttonDefinitions, id) ? buttonDefinitions[id] : typeof ref === "object" && ref !== null ? ref : void 0;
172828
+ const actionDefinitionId = string3(object4(definition).actionDefinitionId) ?? string3(refObject.actionDefinitionId);
172829
+ const actionDefinition = actionDefinitionId && own4(availableActions, actionDefinitionId) ? availableActions[actionDefinitionId] : void 0;
172830
+ const buttonPointer = `${pointer}/${side2}/${index}`;
172831
+ if (trackInteractions) {
172832
+ if (actionDefinition !== void 0) actions(actionDefinition, `/definitions/actions/${part(actionDefinitionId)}`, context);
172833
+ else if (definition !== void 0) actions(definition, buttonPointer, context);
172834
+ }
172835
+ return {
172836
+ ...id ? { id } : {},
172837
+ ...definition !== void 0 ? { definition } : {},
172838
+ ...actionDefinitionId ? { actionDefinitionId } : {},
172839
+ ...actionDefinition !== void 0 ? { actionDefinition } : {}
172840
+ };
172841
+ });
172842
+ }
172279
172843
  const screenGraph = Object.entries(screens).map(([screenId, source]) => {
172280
172844
  const screen = object4(source);
172281
172845
  const layout = object4(screen.layout);
@@ -172289,6 +172853,36 @@ function buildSourceGraph(raw) {
172289
172853
  if (!own4(headers2, headerId)) warnings.push({ code: "missing_reference", pointer: `${pointer}/headerId`, reference: headerId });
172290
172854
  else actions(headers2[headerId], `/headers/${part(headerId)}`, pointer);
172291
172855
  }
172856
+ const topBarId = string3(screen.topBarId);
172857
+ const topBar = topBarId && own4(topBars, topBarId) ? topBars[topBarId] : void 0;
172858
+ if (topBarId && topBar === void 0 && own4(raw, "topBars")) {
172859
+ warnings.push({ code: "missing_reference", pointer: `${pointer}/topBarId`, reference: topBarId });
172860
+ }
172861
+ if (topBar !== void 0 && enrichedStructures.length === 0) actions(topBar, `/topBars/${part(topBarId)}`, pointer);
172862
+ const topBarButtonEvidence = topBar === void 0 ? void 0 : {
172863
+ left: topBarButtons(topBar, "left", `/topBars/${part(topBarId)}`, pointer, topBarButtonDefinitions, actionDefinitions, enrichedStructures.length === 0),
172864
+ right: topBarButtons(topBar, "right", `/topBars/${part(topBarId)}`, pointer, topBarButtonDefinitions, actionDefinitions, enrichedStructures.length === 0)
172865
+ };
172866
+ const topBarByPlatform = Object.fromEntries(Object.entries(enriched).flatMap(([platform, platformStructure]) => {
172867
+ if (!platformStructure) return [];
172868
+ const platformScreen = { ...object4(object4(platformStructure.screens)[screenId]), ...object4(object4(raw.screens)[screenId]) };
172869
+ const platformTopBarId = string3(platformScreen.topBarId);
172870
+ if (!platformTopBarId) return [];
172871
+ const platformTopBar = platformMap(platformStructure, "topBars")[platformTopBarId];
172872
+ if (platformTopBar === void 0) return [];
172873
+ const platformButtons = platformDefinitionMap(platformStructure, "topBarButtons");
172874
+ const platformActions = platformDefinitionMap(platformStructure, "actions");
172875
+ const platformPointer = `${pointer}/topBar/${platform}`;
172876
+ actions(platformTopBar, `/topBars/${part(platformTopBarId)}`, platformPointer);
172877
+ return [[platform, {
172878
+ topBarId: platformTopBarId,
172879
+ topBar: platformTopBar,
172880
+ topBarButtons: {
172881
+ left: topBarButtons(platformTopBar, "left", `/topBars/${part(platformTopBarId)}`, platformPointer, platformButtons, platformActions),
172882
+ right: topBarButtons(platformTopBar, "right", `/topBars/${part(platformTopBarId)}`, platformPointer, platformButtons, platformActions)
172883
+ }
172884
+ }]];
172885
+ }));
172292
172886
  const pages2 = refs.flatMap((value, index) => {
172293
172887
  const ref = object4(value), id = string3(ref.layoutItemId);
172294
172888
  if (!id || !own4(layouts, id)) {
@@ -172312,7 +172906,12 @@ function buildSourceGraph(raw) {
172312
172906
  return {
172313
172907
  screenId,
172314
172908
  pointer,
172909
+ ...typeof screen.title === "string" ? { sourceTitle: screen.title } : {},
172315
172910
  headerId,
172911
+ ...headerId && own4(headers2, headerId) ? { header: headers2[headerId] } : {},
172912
+ topBarId,
172913
+ ...topBar !== void 0 ? { topBar, topBarButtons: topBarButtonEvidence } : {},
172914
+ ...Object.keys(topBarByPlatform).length ? { topBarByPlatform } : {},
172316
172915
  settings: screen.settings,
172317
172916
  permissions: screen.permissions,
172318
172917
  layoutType: type,
@@ -172705,7 +173304,7 @@ Collect the source mobile app and hand it to the current coding agent. The agent
172705
173304
  if (value !== void 0 && !artifacts[name]) put(name, sourceJson(value));
172706
173305
  }
172707
173306
  progress("normalizing");
172708
- put("source-graph.json", sourceJson(buildSourceGraph(collected.rawStructure)));
173307
+ put("source-graph.json", sourceJson(buildSourceGraph(collected.rawStructure, collected.enriched)));
172709
173308
  put("navigation-plan.json", sourceJson(planNavigation(collected.rawStructure, options.topTabs)));
172710
173309
  progress("collected");
172711
173310
  put("manifest.json", sourceJson({
@@ -175230,13 +175829,13 @@ function parseMethod(raw) {
175230
175829
  return m2;
175231
175830
  }
175232
175831
  function jsonFunctionSource(method, name, body) {
175233
- const json6 = JSON.stringify(body, null, 2).replace(/\n/g, "\n ");
175832
+ const json7 = JSON.stringify(body, null, 2).replace(/\n/g, "\n ");
175234
175833
  return `import { ok } from 'wix-http-functions';
175235
175834
 
175236
175835
  export function ${methodPrefix(method)}_${name}(request) {
175237
175836
  return ok({
175238
175837
  headers: { 'Content-Type': 'application/json' },
175239
- body: ${json6},
175838
+ body: ${json7},
175240
175839
  });
175241
175840
  }
175242
175841
  `;
@@ -175562,12 +176161,12 @@ async function veloCall(fetchImpl, method, url, opts = {}) {
175562
176161
  signal: AbortSignal.timeout(opts.timeoutMs ?? 3e4)
175563
176162
  });
175564
176163
  const text9 = await res.text();
175565
- let json6 = text9;
176164
+ let json7 = text9;
175566
176165
  try {
175567
- json6 = text9 ? JSON.parse(text9) : null;
176166
+ json7 = text9 ? JSON.parse(text9) : null;
175568
176167
  } catch {
175569
176168
  }
175570
- return { status: res.status, json: json6, text: text9 };
176169
+ return { status: res.status, json: json7, text: text9 };
175571
176170
  }
175572
176171
  function snippet2(x2, cap = 180) {
175573
176172
  const s2 = typeof x2 === "string" ? x2 : JSON.stringify(x2) ?? "";
@@ -175618,15 +176217,15 @@ async function patchHttpFunctionsFile(fetchImpl, token, msid, gridAppId, layout,
175618
176217
  else body.filesToUpdate = [{ path: filePath, content }];
175619
176218
  return veloCall(fetchImpl, "PATCH", veloUpdateFilesPath(gridAppId), { token, msid, body });
175620
176219
  }
175621
- function revisionFrom(json6) {
175622
- if (!json6 || typeof json6 !== "object") return void 0;
175623
- const r2 = json6;
176220
+ function revisionFrom(json7) {
176221
+ if (!json7 || typeof json7 !== "object") return void 0;
176222
+ const r2 = json7;
175624
176223
  const v2 = r2.siteRevision?.revision ?? r2.revision;
175625
176224
  return v2 == null ? void 0 : String(v2);
175626
176225
  }
175627
- function codeAppIdFromRevision(json6) {
175628
- if (!json6 || typeof json6 !== "object") return void 0;
175629
- const actions = json6.actions;
176226
+ function codeAppIdFromRevision(json7) {
176227
+ if (!json7 || typeof json7 !== "object") return void 0;
176228
+ const actions = json7.actions;
175630
176229
  if (!Array.isArray(actions)) return void 0;
175631
176230
  for (const a2 of actions) {
175632
176231
  if (!a2 || typeof a2 !== "object") continue;
@@ -177151,17 +177750,17 @@ var ServeCliClient = class {
177151
177750
  body: opts.rawBody !== void 0 ? new Uint8Array(opts.rawBody) : opts.body !== void 0 ? JSON.stringify(opts.body) : void 0
177152
177751
  });
177153
177752
  const text9 = await res.text();
177154
- let json6 = null;
177753
+ let json7 = null;
177155
177754
  try {
177156
- json6 = text9 ? JSON.parse(text9) : null;
177755
+ json7 = text9 ? JSON.parse(text9) : null;
177157
177756
  } catch {
177158
- json6 = null;
177757
+ json7 = null;
177159
177758
  }
177160
177759
  const h2 = {};
177161
177760
  res.headers.forEach((v2, k2) => {
177162
177761
  h2[k2] = v2;
177163
177762
  });
177164
- return { status: res.status, ok: res.ok, json: json6, text: text9, headers: h2 };
177763
+ return { status: res.status, ok: res.ok, json: json7, text: text9, headers: h2 };
177165
177764
  }
177166
177765
  // ---- serve (device-facing reads) ----
177167
177766
  health(plane) {
@@ -177397,14 +177996,14 @@ var ServeCliClient = class {
177397
177996
  const refusal = res.json;
177398
177997
  const decodedOverPlainCap = res.status === 413 && refusal?.error === "payload_too_large" && refusal.limit === MAX_PUBLISH_BODY_BYTES && bytes2.byteLength <= MAX_PUBLISH_BODY_BYTES;
177399
177998
  if (gzip && (res.status === 400 && refusal?.error === "bad_json" || decodedOverPlainCap)) {
177400
- const json6 = {
177999
+ const json7 = {
177401
178000
  code: "compressed_publish_unsupported",
177402
178001
  error: "compressed_publish_unsupported",
177403
178002
  hint: "this body is over the plain publish cap, and the plane did not accept it compressed: either the plane predates compressed publish bodies (it needs a serve deploy), or this is a self-serve credential, which keeps the plain 8 MB cap",
177404
178003
  sentBytes: bytes2.byteLength,
177405
178004
  ...typeof refusal?.bytes === "number" ? { planeCountedBytes: refusal.bytes } : {}
177406
178005
  };
177407
- return { ...res, json: json6, text: JSON.stringify(json6) };
178006
+ return { ...res, json: json7, text: JSON.stringify(json7) };
177408
178007
  }
177409
178008
  return res;
177410
178009
  }
@@ -177783,8 +178382,8 @@ var BO_WEWIX_COOKIE = "WixBoAuthentication-wewix";
177783
178382
  function dpxCookieHeader(raw) {
177784
178383
  const trimmed = raw.trim();
177785
178384
  try {
177786
- const json6 = Buffer.from(trimmed, "base64url").toString("utf8");
177787
- const obj3 = JSON.parse(json6);
178385
+ const json7 = Buffer.from(trimmed, "base64url").toString("utf8");
178386
+ const obj3 = JSON.parse(json7);
177788
178387
  if (obj3 && typeof obj3 === "object") {
177789
178388
  const pairs = [
177790
178389
  typeof obj3.wewix === "string" ? `${BO_WEWIX_COOKIE}=${obj3.wewix}` : void 0,
@@ -180168,10 +180767,10 @@ async function fetchPackumentFrom(registry2, fetchImpl, timeoutMs) {
180168
180767
  signal: controller.signal
180169
180768
  });
180170
180769
  if (!response.ok) return void 0;
180171
- const json6 = await response.json();
180172
- const latest = typeof json6?.["dist-tags"]?.latest === "string" ? json6["dist-tags"].latest : void 0;
180770
+ const json7 = await response.json();
180771
+ const latest = typeof json7?.["dist-tags"]?.latest === "string" ? json7["dist-tags"].latest : void 0;
180173
180772
  const time = {};
180174
- for (const [version4, when] of Object.entries(json6?.time ?? {})) if (typeof when === "string") time[version4] = when;
180773
+ for (const [version4, when] of Object.entries(json7?.time ?? {})) if (typeof when === "string") time[version4] = when;
180175
180774
  return latest ? { latest, time, registry: normalizeRegistry(registry2) ?? registry2 } : void 0;
180176
180775
  } catch {
180177
180776
  return void 0;