@wix/himalaya-cli 0.1496.0 → 0.1498.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 (138) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/attendance-classifier.d.ts +37 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/catalog-pricing-contract.d.ts +1 -1
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/index.d.ts +2 -1
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/wix-payments-contract.d.ts +11 -3
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/apple-iap-contract.d.ts +27 -3
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/commerce-contract.d.ts +1 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/iap-verticals/attendance.d.ts +10 -0
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/iap-verticals/index.d.ts +1 -0
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/index.d.ts +1 -1
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/events/src/index.d.ts +33 -2
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap-checkout.mjs +346 -26
  12. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap.mjs +132 -3
  13. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +366 -48
  14. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-events.mjs +5 -0
  15. package/dist/cli.mjs +817 -666
  16. package/guides/iap-products.md +7 -1
  17. package/package.json +2 -2
  18. package/templates/beauty-salon/dev/index.ts +394 -0
  19. package/templates/beauty-salon/tier5-src/_shared/iap-attendance-form.ts +106 -0
  20. package/templates/beauty-salon/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  21. package/templates/beauty-salon/tier5-src/_shared/iap-attendance.ts +38 -0
  22. package/templates/beauty-salon/tier5-src/himi-booking-time/index.ts +52 -7
  23. package/templates/beauty-salon-owner/dev/index.ts +571 -0
  24. package/templates/beauty-salon-owner/himalaya.content.json +6 -0
  25. package/templates/beauty-salon-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  26. package/templates/beauty-salon-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  27. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  28. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  29. package/templates/branded-lite/dev/index.ts +1429 -278
  30. package/templates/branded-lite/tier5-src/_shared/business-chat-presenter.ts +46 -8
  31. package/templates/branded-lite/tier5-src/_shared/iap-attendance-form.ts +106 -0
  32. package/templates/branded-lite/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  33. package/templates/branded-lite/tier5-src/_shared/iap-attendance.ts +38 -0
  34. package/templates/branded-lite/tier5-src/business-chat/index.ts +3 -2
  35. package/templates/branded-lite/tier5-src/himi-booking-time/index.ts +52 -7
  36. package/templates/branded-lite/tier5-src/himi-events-detail/index.ts +112 -21
  37. package/templates/community-club/dev/index.ts +397 -2
  38. package/templates/community-club/tier5-src/_shared/iap-attendance-form.ts +106 -0
  39. package/templates/community-club/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  40. package/templates/community-club/tier5-src/_shared/iap-attendance.ts +38 -0
  41. package/templates/community-club/tier5-src/himi-events-detail/index.ts +112 -21
  42. package/templates/community-club-owner/dev/index.ts +571 -0
  43. package/templates/community-club-owner/himalaya.content.json +6 -0
  44. package/templates/community-club-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  45. package/templates/community-club-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  46. package/templates/community-club-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  47. package/templates/community-club-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  48. package/templates/events-meetups/dev/index.ts +397 -2
  49. package/templates/events-meetups/tier5-src/_shared/iap-attendance-form.ts +106 -0
  50. package/templates/events-meetups/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  51. package/templates/events-meetups/tier5-src/_shared/iap-attendance.ts +38 -0
  52. package/templates/events-meetups/tier5-src/himi-events-detail/index.ts +112 -21
  53. package/templates/events-meetups-owner/dev/index.ts +571 -0
  54. package/templates/events-meetups-owner/himalaya.content.json +6 -0
  55. package/templates/events-meetups-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  56. package/templates/events-meetups-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  57. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  58. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  59. package/templates/gym-fitness/dev/index.ts +828 -39
  60. package/templates/gym-fitness/tier5-src/_shared/iap-attendance-form.ts +106 -0
  61. package/templates/gym-fitness/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  62. package/templates/gym-fitness/tier5-src/_shared/iap-attendance.ts +38 -0
  63. package/templates/gym-fitness/tier5-src/himi-booking-time/index.ts +52 -7
  64. package/templates/gym-fitness/tier5-src/himi-events-detail/index.ts +112 -21
  65. package/templates/gym-fitness-owner/dev/index.ts +571 -0
  66. package/templates/gym-fitness-owner/himalaya.content.json +6 -0
  67. package/templates/gym-fitness-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  68. package/templates/gym-fitness-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  69. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  70. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  71. package/templates/nonprofit-cause/dev/index.ts +397 -2
  72. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance-form.ts +106 -0
  73. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  74. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance.ts +38 -0
  75. package/templates/nonprofit-cause/tier5-src/himi-events-detail/index.ts +112 -21
  76. package/templates/nonprofit-cause-owner/dev/index.ts +571 -0
  77. package/templates/nonprofit-cause-owner/himalaya.content.json +6 -0
  78. package/templates/nonprofit-cause-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  79. package/templates/nonprofit-cause-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  80. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  81. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  82. package/templates/owner-lite/dev/index.ts +571 -0
  83. package/templates/owner-lite/himalaya.content.json +6 -0
  84. package/templates/owner-lite/tier5-src/_shared/owner-today-rollup.ts +307 -0
  85. package/templates/owner-lite/tier5-src/_shared/owner-widget-reads.ts +23 -0
  86. package/templates/owner-lite/tier5-src/himi-owner-lite-today/index.ts +8 -20
  87. package/templates/owner-lite/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  88. package/templates/podcast-creator/dev/index.ts +397 -2
  89. package/templates/podcast-creator/tier5-src/_shared/iap-attendance-form.ts +106 -0
  90. package/templates/podcast-creator/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  91. package/templates/podcast-creator/tier5-src/_shared/iap-attendance.ts +38 -0
  92. package/templates/podcast-creator/tier5-src/himi-events-detail/index.ts +112 -21
  93. package/templates/podcast-creator-owner/dev/index.ts +571 -0
  94. package/templates/podcast-creator-owner/himalaya.content.json +6 -0
  95. package/templates/podcast-creator-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  96. package/templates/podcast-creator-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  97. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  98. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  99. package/templates/portfolio-creative/dev/index.ts +397 -2
  100. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance-form.ts +106 -0
  101. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  102. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance.ts +38 -0
  103. package/templates/portfolio-creative/tier5-src/himi-events-detail/index.ts +112 -21
  104. package/templates/portfolio-creative-owner/dev/index.ts +571 -0
  105. package/templates/portfolio-creative-owner/himalaya.content.json +6 -0
  106. package/templates/portfolio-creative-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  107. package/templates/portfolio-creative-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  108. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  109. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  110. package/templates/restaurant/dev/index.ts +397 -2
  111. package/templates/restaurant/tier5-src/_shared/iap-attendance-form.ts +106 -0
  112. package/templates/restaurant/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  113. package/templates/restaurant/tier5-src/_shared/iap-attendance.ts +38 -0
  114. package/templates/restaurant/tier5-src/himi-events-detail/index.ts +112 -21
  115. package/templates/restaurant-owner/dev/index.ts +571 -0
  116. package/templates/restaurant-owner/himalaya.content.json +6 -0
  117. package/templates/restaurant-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  118. package/templates/restaurant-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  119. package/templates/restaurant-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  120. package/templates/restaurant-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  121. package/templates/retail-store-owner/dev/index.ts +571 -0
  122. package/templates/retail-store-owner/himalaya.content.json +6 -0
  123. package/templates/retail-store-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  124. package/templates/retail-store-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  125. package/templates/retail-store-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  126. package/templates/retail-store-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
  127. package/templates/yoga-studio/dev/index.ts +828 -39
  128. package/templates/yoga-studio/tier5-src/_shared/iap-attendance-form.ts +106 -0
  129. package/templates/yoga-studio/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  130. package/templates/yoga-studio/tier5-src/_shared/iap-attendance.ts +38 -0
  131. package/templates/yoga-studio/tier5-src/himi-booking-time/index.ts +52 -7
  132. package/templates/yoga-studio/tier5-src/himi-events-detail/index.ts +112 -21
  133. package/templates/yoga-studio-owner/dev/index.ts +571 -0
  134. package/templates/yoga-studio-owner/himalaya.content.json +6 -0
  135. package/templates/yoga-studio-owner/tier5-src/_shared/owner-today-rollup.ts +307 -0
  136. package/templates/yoga-studio-owner/tier5-src/_shared/owner-widget-reads.ts +23 -0
  137. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-today/index.ts +8 -20
  138. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-today-rollup/index.ts +121 -0
package/dist/cli.mjs CHANGED
@@ -659,8 +659,8 @@ function mobileUxDocumentBody(mobile) {
659
659
  }
660
660
  return out2 + mobile.slice(last);
661
661
  }
662
- function mobileUxSection(text10, heading) {
663
- const match = new RegExp(`(?:^|\\n)##[ \\t]+${heading}\\b[^\\n]*([\\s\\S]*?)(?=\\n##[ \\t]|$)`, "i").exec(text10);
662
+ function mobileUxSection(text11, heading) {
663
+ const match = new RegExp(`(?:^|\\n)##[ \\t]+${heading}\\b[^\\n]*([\\s\\S]*?)(?=\\n##[ \\t]|$)`, "i").exec(text11);
664
664
  return match ? match[1] : null;
665
665
  }
666
666
  function sectionTables(markdown) {
@@ -689,8 +689,8 @@ function namesOneCta(cell2) {
689
689
  if (!cell2) return false;
690
690
  return !/[,;]|\s\/\s/.test(cell2);
691
691
  }
692
- function declaredStates(text10) {
693
- const contract = section(text10, "Screen contract");
692
+ function declaredStates(text11) {
693
+ const contract = section(text11, "Screen contract");
694
694
  if (!contract) return [];
695
695
  const states = [];
696
696
  for (const bullet of contract.matchAll(/^[ \t]*[-*][ \t]*[^:\n]*\bstates?[ \t]*:[ \t]*(\S.*)$/gim)) {
@@ -700,8 +700,8 @@ function declaredStates(text10) {
700
700
  }
701
701
  return [...new Set(states.map((state) => state.toLowerCase()))];
702
702
  }
703
- function primaryCtaStructureGap(text10) {
704
- const acceptance = section(text10, "Implementation acceptance");
703
+ function primaryCtaStructureGap(text11) {
704
+ const acceptance = section(text11, "Implementation acceptance");
705
705
  if (acceptance === null) return "There is no `## Implementation acceptance` section to read it from.";
706
706
  const tables = sectionTables(acceptance).filter((table) => table.data.length > 0);
707
707
  if (!tables.length) return "Its acceptance table has no rows.";
@@ -714,7 +714,7 @@ function primaryCtaStructureGap(text10) {
714
714
  const data = ctaTables.flatMap(({ table }) => table.data);
715
715
  const flat = (value) => value.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
716
716
  const rowText = data.map((row) => flat(row.join(" ")));
717
- const missing2 = declaredStates(text10).filter((state) => !rowText.some((row) => row.includes(flat(state))));
717
+ const missing2 = declaredStates(text11).filter((state) => !rowText.some((row) => row.includes(flat(state))));
718
718
  if (missing2.length) return `The acceptance table has no row for the declared state(s): ${missing2.join(", ")}.`;
719
719
  return null;
720
720
  }
@@ -729,16 +729,16 @@ function hasUnterminatedComment(mobile) {
729
729
  }
730
730
  }
731
731
  function mobileUxMarkerFindings(mobile, renderedWidths = []) {
732
- const text10 = mobileUxDocumentBody(mobile);
732
+ const text11 = mobileUxDocumentBody(mobile);
733
733
  const findings = [];
734
- if (!/^## Implementation acceptance\b/im.test(text10)) {
734
+ if (!/^## Implementation acceptance\b/im.test(text11)) {
735
735
  findings.push({ code: "missing-acceptance-matrix", message: "MOBILE-UX.md must contain the heading `## Implementation acceptance` at the start of a line. Case is not checked, but use this spelling: other tooling addresses the document by it." });
736
736
  }
737
- if (!/^## Evidence\b/im.test(text10)) {
737
+ if (!/^## Evidence\b/im.test(text11)) {
738
738
  findings.push({ code: "missing-evidence-section", message: "MOBILE-UX.md must contain the heading `## Evidence` at the start of a line. Case is not checked, but use this spelling: other tooling addresses the document by it." });
739
739
  }
740
- if (!/one primary CTA per state/i.test(text10)) {
741
- const gap = primaryCtaStructureGap(text10);
740
+ if (!/one primary CTA per state/i.test(text11)) {
741
+ const gap = primaryCtaStructureGap(text11);
742
742
  if (gap) {
743
743
  findings.push({
744
744
  code: "missing-primary-cta-rule",
@@ -746,8 +746,8 @@ function mobileUxMarkerFindings(mobile, renderedWidths = []) {
746
746
  });
747
747
  }
748
748
  }
749
- if (!hasWidthEvidence(text10, renderedWidths)) {
750
- findings.push({ code: "missing-width-evidence", message: widthEvidenceMessage(text10, renderedWidths) });
749
+ if (!hasWidthEvidence(text11, renderedWidths)) {
750
+ findings.push({ code: "missing-width-evidence", message: widthEvidenceMessage(text11, renderedWidths) });
751
751
  }
752
752
  if (findings.length && hasUnterminatedComment(mobile)) {
753
753
  return [{
@@ -757,15 +757,15 @@ function mobileUxMarkerFindings(mobile, renderedWidths = []) {
757
757
  }
758
758
  return findings;
759
759
  }
760
- function widthMentions(text10) {
760
+ function widthMentions(text11) {
761
761
  const mentions = [];
762
- for (const match of text10.matchAll(/\d+/g)) {
762
+ for (const match of text11.matchAll(/\d+/g)) {
763
763
  const value = Number(match[0]);
764
764
  const start = match.index ?? 0;
765
765
  if (!inRange(value)) continue;
766
766
  const end = start + match[0].length;
767
- const after = text10.slice(end, end + EDGE_WINDOW);
768
- const before = text10.slice(Math.max(0, start - EDGE_WINDOW), start);
767
+ const after = text11.slice(end, end + EDGE_WINDOW);
768
+ const before = text11.slice(Math.max(0, start - EDGE_WINDOW), start);
769
769
  if (looksLikeYear(value) && !(UNIT_ATTACHED.test(after) || UNIT_WORD_ATTACHED.test(after))) continue;
770
770
  const spelledAsWidth = UNIT_ATTACHED.test(after) || UNIT_WORD_ATTACHED.test(after) || FILENAME_AFTER.test(after);
771
771
  const vetoed = spelledAsWidth && (ANTI_CUE_BEFORE.test(before) || PAIR_HEIGHT_BEFORE.test(before) || ANTI_CUE_AFTER.test(after));
@@ -3463,8 +3463,8 @@ var init_catalog_cache = __esm({
3463
3463
  let prior;
3464
3464
  if (existsSync4(channelPath)) {
3465
3465
  try {
3466
- const text10 = readFileSync5(channelPath, "utf8");
3467
- if (Buffer.byteLength(text10) <= MAX_METADATA) prior = JSON.parse(text10);
3466
+ const text11 = readFileSync5(channelPath, "utf8");
3467
+ if (Buffer.byteLength(text11) <= MAX_METADATA) prior = JSON.parse(text11);
3468
3468
  } catch {
3469
3469
  }
3470
3470
  }
@@ -4090,8 +4090,8 @@ var init_catalog_v2 = __esm({
4090
4090
  "../html-to-t5/catalog.v2.json"() {
4091
4091
  catalog_v2_default = {
4092
4092
  encoding: "gzip-base64",
4093
- sha256: "6a5579023a608d429ce3498e16211c378ac5914dda5e53dbf26f1a816fdcd58a",
4094
- data: "H4sIAAAAAAAC/+y963bbOpoo+Cp7qetf27XXdNecPrPPnyPbSqLaduy2lKR2d2e8IBKSUAYBNgDKVmplrXmIecJ5klm4kARIgJJsSZQT/ElMACJx+fDdL/8YrCDjiJLBb4PlMv/1X36b/Rv8y1/+7d/+9f/6P+Ff5v/zX/51cDbgyRJmYPDbPwZ/Qungt0FCs5wSSMSfdc+f/84pGZwNBBIYDn4bfEAZwGANfplcfRr/Uo0enA0eEppl8s/fBu9HH0f3w+no6pc5o9kvCWXwV8F/5Sz51bxV8F9m618WkJzL95+b1uzv/Jf/7//5f39J6S+Eil+WgKTnMEXiz79cQ4IgEb9Q8ktBHgl9Ir/kjOb8f/3CBUOJ6mDwvwvEYPrLP/8CSZHxPw/OBn9icD74bfBPv/4phXP+qz1f1SIXXjf+9o+BWOdymXT2d5jIUfIrkAkE1VC5RdUY+WWyGHw/G8xoulZb6H5NNX8/G2Q0RXMEGW9/4PvZIFkinDJIrE7AGFgPzgZIwIx7XlzP+Pv379b3m5Mvd2Tw23/qvq/NBeUgeQQLqLeBcHl4S3PCcm76hZ4Vq833LOf72QBgfDsf/Paf/xigufqE88HyjeXXPk8ESB7VD9uzlTNY6p1pTNv/+ebqXrm1ci1oQTIDGhKo5NwwBKnchrNBAomATN4OBhCWbXLKPAeJ/Lv+KCmyGWStRVbT+6qOcbsN+xA3bLcN+48fbcP2sSnX4Nv6GnFxoG2p1v6iPVlShr5RIgC2XjGjFENABp3wcjbgAiwWkN1wby8ldwXGU3oP5wzy5eC3f0hcBhaIAKEI5T/UK1DyuP4AQQpZ91zPBow+TZ5QDoeJ/D3XL1CrvANi6UWdgKAMCDhubJG1PgYl4YbXYE0L4R+SUCIgEWPCoZjS3LtYe8wFFYJmm2+YPqBdIOk9Q+lJQlFCcZERHtga1XcDU1RkXSNGzzkgKUz9sNYBh90w0AWl3hOpl7PL2VwClp4q4stBmgYvccfGJpQRyO5Bigr/2c5A8rhgtCB+Xq0nhDvJMRKfEXw60HnkDGWArTfhqxQKgPCmUeZlN+D5C0odEA4Aafn16gO7bM0VWqHU89K9bMz3nc4IJIeax2AFcOHnpROKMcg5/LKEZJTlYu1D+busQ71kIoCAB1qLEQZ9iK2YhTtRQon/TiY19dV/X4MZxN6x6vUTsd4wgfAI/YGqv0QBNQhzmFCS6r9zDBBRG2Z+hr45v+LZ4GyQpW0koXdhl2swhc+HYseEfLV3M2GWYwknausFyuC9xAryIUMEZUU2SQCG70AiKPNi24wSKtE1TK/QAokARyNYQZKSxfKRw9BhJRQ7H657MvB8jQj004AMsMeUPpHAbOCzGEoysC0JOBv8veACzdf6KOCzuEIMlkBbvQIUgg7OBljIHzOB1egUJpSB5tCCpJBhRKCEN8HQIxRLRovFUv1Gdkw6aeAWGKPiND83ME97xD1cQT+zvQvaGWdSk3AYCC6YHxsAzqEftBFBAgHMvZ1PAbJ2NlhCtFiKLn76CvKEoTwIzGbYDU0dTDFHclVzhLE+cigSfdg5BglcUmykDc8Sc5iIewlCfmZpCXLnS8wofyQLBFMJ0IglWB9CEAXLiTWJvX1lEPFvM4MSkhFZNNdboZazAWVISliGK9genuRcDwNOBGRwu+W0QacJIHXXCjAEZrh14eqzgvO5nI4XBxrK0vpNcOu3gsfG9qmF70KVLgohDnYMjAbQfpiHsFmFMNlIEZcHkfqBuewNimeGFoxDl6UkDMEBmIKGcGOrLwI8xNkAa33YvOi8i/IO3xK8DmkGNshHGSIfQkjOy8RUm74rN/MOQXwo+XMT1gyz26onePSUXC4BWRiO6BGuZ1QK0RreYFKwACXNCiwkTMCbbr7k+RqSRYD2SP7hEuRIAIy+tVgGQhW38ERZyhWXKm9/ApVuYAkYSIS0MHxVa5gUswwJM+tisYC8VE9Vr1NWHTqfaw2sGl8x3eWYVH9yIbkaInlI9dlU/QeYoV9zmhT8cFcpwRAwg4W8O7+EOIdsGmJxIWMOB2n9Mmdwjp4DYsQ81DWjTPJukAd43RXAKLXUiWoCwf1RvcHJrxBHM4SRWE/pYoHha1k085bDXEkclNlWYQ50l9soGEgeb4NwlDzezuf+zmWRzfbFCDb2Tq9tJ1WQgHl+ND1DvaLurc4QCaGsgCrdPpqcQYmQWkirlJ9fvWnDFRDgUHuGpOTyKSBidAoSAa5tlzt5AdKDiU1BwT/MOgn6CEm4JwA/zdnL7+7ELoDF0XUfvSz0jtEFg5xfHAyYc/MF760tO4NoIChtKAR7GVTHhNEOIikUkGXSxtathkjDsmd4vtW0tjuwand2ObR3lGWHQj1pQByHOH257UvzczXX1KXst7nFpu0pHVRTabx01+07pCwQ2MMwPyJZxiDPVc9va+7uBnJuvGi6oQ+lu22c3LSRYmCPTR+kCRppxWJJyzUnfTZ4AoyUrhvyBcG7qbjXANP6WjSKkseDsVA0r6SlwO1TdwximAiYjtMtWNdN4qr5ZHAr1SXsZrUySAp5OksIlYpxCaFoc17l2nYy0AEBD7rhinh8Iug5pLAI94HncF9DI5lqbaS0ckhDJRBQ/fm1dVhdjPJO9kRpgpsXeGJMBYfZPC4MXa0sGbS0ZEBlGzirbm4KBNAGhlo/1UUaoLEtWGL0d/OWDb80H3jPQAIDvjhmyDtM6VaOEHqdOwlajxDDw2kvX2hE2KCeS2hBxCtFincMLKSLwwTTQ5kUE8DDsqTs3IQ+UzgHBRaXgG9BN6uvle92f78LUHyh7BGySTETDB5M7GIQ/pVTEtygnGKUmJs1BxhLn5WNTJ0zT/sL1fusl+10T5Qy7zS1tS5mdjWbKZzRggQQzE73BWEB2eUS5fxw7lL59gxFJ+PfvilK9zxRv/YzrY1N7OQ12s5OOd9RlJ8daheFfPUeuTLedAIRNJesk/To1HzBBrZMGkZWcAfxU63AmeVuF1WhdZheUiIYxW+H/90J5srvv3ifLgGjBYf4NP1SC8aUW24Kt9GsSqNQjsF6LJ1SVgAHuKluf1OMVvALIil9OoQL8B1YHEw0yMECHm2v+ZI+jUmKEiBCNqNddlLPfVfTQD2BQ8kLMN+RwGzcxhYiTamQ93cGpNihx0GPl5yeS+MDO9107QmFyML46/dhIJCdw6Aj0gudJaHxPP/QJUtoN7DOMa/302YAY/Ac9AF8teOjNu1MBEP5gY4PqC90kHHdv4nghTx06AoyDPKwi1YGnj+3dGG2Bxd9ul1BNscOVrEZONN7GRAOpVgU9kijZApyjeGYFspTBL1q/t3sVoQc7ML59I+IzKlSQyeJVODXikipkiCSBH3tvG5ZUEvruhWliGeIB1WXm1yUmyiuXMnZC67GhIDkcXYwU9HWO1JoD9YA7/Hyw9ppJ8vZ7oRbMGTiCgFMF0f3he/a3YSSOWLZ0NrkBJAEYrslhVywQokYwSgw+Zaws7x+Z7g/o2nA79fvCOZOe5eDuEfJ8oAe7qzYIK80vqrG76Q2grMDRu8UQd8D6VL2QWQhO1aQ7m/0Gk4YxXhEOtwk1WEvSuDMgXJEQpDftw1kW/CQM4bShcMjame2R4MKEOFCQmtAnNSSdth7pRAd/pwMSmXz73DdYV/BOOReJvd4D9YAGW4rgz4P5X0Ft1Lpv5AbVSyODFfo8uHbbGmu+BCgyAJla4+HY7KEK6bcE5MlTB5lLEdN2V8T+aO6LzsiSrqCRsrXh39f7lFoxE6mI3y4kLgOX41dncCk/LaFXM3Mn55tLaQr3OcX+qwFnVU6NcPd7uE7nZJSTyFKDquPe5Fj5SPSAbDl5VJ3aUafZWQISBFV05JxsvlWCrzug+j2t9/oAbTLnkveY4XE+tBqkpf6UW7h7rR7qAcLBBPsJK+pFAAT5RZwICOHDkjZIgYZErGNCspSMWwUyqQQ/Z6B2QyykBHkSr/DcaMIwWzVHfbcbrAzM51i4cyKJHSynAR5beMd0oxJ11oFtS2KC9QCUyGoWUbIrB4SpnYAlRvpSnIgVQxJlnRjWo1NGvbvXp0jo7mi3yY0SsUraAnzofSG2aQo7zokBldSAtiUjmkHZ3yKxeF0XlttdNg7NqyYbMC9tpl1Qb8GW70khmTiC+f3QP4eU7J4yJnWFVTDnTu7y97e0Vzen173dkt0+Kr9fDUWa2DFsEJgF6X88mBQHWaFmvwO4FzmN5LYMy9U5FIVB6XjcIURPDdFKJl+raUO2QAYzOgKBImTJflQci/HlhYnY+AM0DTTG6ZBGK46HKeDHu7d/Fqn//uOcMDHavsPyKPtaMvSvwl75mxy1CTDNPWd5P5kikM6Cy6rrFZtFQilItD1aiMSIq517EU7c4V4gikvGHwvxZbTym0C24mirBtV9oY95mpa8aINpqQKENxNKSXxqfYn8bqZHVl+9W7IfrgtrQQ/sht9MN3C7hlPvu/mgnWwKM92WrUtkC6jT5vYeTlkDzTnPSgOFk13rNDK7ZkcqckB0ttfCoigNIB2KBE2ncKLI7F2OSNplSCL4ys3A9uNpGcV6DCzuZqwcEqi4G3vBg8ezim1E7MF2GH5rHCcz7ZsmKXPKSF5h4xPHdYuDhna4HG+E6dBSSEOuaEco2Sjh7wetBFs2lrEJUoeSSgCVGe3mgYZGd0/6eJ19kGiruFCZpLox0Hz+0Y9EGXIjrF6xUKvgAD90uPXE+CzwRKl8ENTdnBERqFD5Ku/w9QQPN+7s6mB8xucMfBqCUolxDrMbnegrY1xPeUAZOI+tMnZ/GU5ZSn2kNHHnZl56WNxWE4+pUkh9dSdwS32oIAMfY3I407RLy/bhVGKDmcgCuYQK9f/8g3apIQQlOJN19llWopcekBMIFuhBAY9IIYrgHBYi9WVOeoQJynTM4NDhiV182Wb9yzMqDeDdNvbbXZr2hVAvYTNNGIB17h6Ic1pv8RHq4dY/Y6TkC7IQkAmy5j83//1X3/iemW//fmf/+u//vznf/7ThoPYqM8LxZe9LnT/M0UJ/EgPloL3CazgXKal2InrLn8VRk3dnp51d0doI0cdb6i7u5KjCxjuCc8dyuAMtu7s7DCE3ElrqwGDO1DwGiYgfKxUvkBAF2LuoWDr0s9F7CoHMXet9UaxrqUGZfwZYJd7CCC+Aey/C3j0rESb/IwPqzRDGVR29sMsGhKxUUY9K0ftQckig7IO65aUhIMRdgm72mVRX2Ryi7eW+2ND7ONu0U6UHT4TxzaRs09AJMtdbW8bDAF72KFbkR/S4IjDyTv3k3BUuhJmOYYCbko5ulN8O5gdip0LWs2DR+1k8G2oPhlcFFjFDPIMqEzZGLAF7NJr70bWDueXIJAoUhjIdEIW4d5vlGbBJPZwY1SaGdUhQwQlto2Kb0YLhzvxq40KAVvJv5EKF9Fl/QRKdJLZJX36xCG7pq1SANY35xTjrcYhMaWXLbOpLa6CvFXlQcYYpDKh79mAAwExRion0HItwxOMy9ENyC1vjRu1v477xgI13JvlFnQkQ8kgA2FuV2qrNtIbNagDhyidVzVJuf0TWrBkZwL7GaWQHjnIJac85HhQBr+Hi2AxVxNiR2pTpy6Wk6s5aOF6cUTNTqxZOu8hlqjLfLKkTxa/GNhQLgATd25Em4vGwqojIC/1ZAleT8uUUkiKageMPeWyamqAt9vONRWwzmh5uZFGEJ6oajOhbJ3+VG/GIVjiFoXKpH4NqJXIqi0Dpa5Poa5bY1+SylW5QFiMiRmfKQtyUnDtcKiicL42Ll8VoiNDPWXicJJAnWyOlJHN9k8+13mrl7LQHsX+CmodN7G8vo3gIP2v5A3KTPk8YRAafiJHiSgYHJM7/YdurSuCSbgxOkrllSPVSgC7rbl5ut9dmJ9T9gRYOnlEedexyrdvM05ey38vYNHh8X65BLlwmYTGiCkDRBeI2DPG26bSydcKvYccJ0GeQ8Bk4J/hCDEVvCa1IK1VMiH1zIhUDnmjOksdJXd1Ilz1/K4CFpfjlkF5TsYViasuIcaKFQ351UolayDcpcOyuJOJlAqBDqWO4CV74CteESKc3eSY5zBQKDGcS30n7fSqh80ATJQVIAL6yBuQLEORkd0btpdtuaFELC8BhpKvPdD+rCEIVv8KiMOlhuQqqMu1BnSodMviWZvTCVYjO4J8GRdfIHxMnROx1VI6ou+qKolGid7fRpKgYfp3kCjUR8QygHzlpnXEmRCx7HIYC+5bBp47+6jgHQcilasNdC2T5yhpTUdpfrXOZiIZlY0nWI0Kyzhm5IhshgczpkvWUSPv6xNJEZeXrLkwDZyyYhPUAcTWuLBHvfLU7fLkv6rf4tIRwwipib1MvSlV0Aesp9tOiCtv0b/q/6pd0sEtwXOqu8N7uNoQ3/e9GtRlBGLiAy38eAeSNNi38ZbLC/yRPl27SNs5Yw1io1XlkCENP86xmgVM6wKK3XWioaYxG51wynEdYYdIhMGTE5DfIFIIGCqArRbVUDkyWCE8GdAw3FCCk0Gpt+setVNIr3QFA4eyu+wDGFWyjCkNIy9rQAdI13XFAzRDJVwOZqb3wOVOQJhCnkCSdsUSf/2uS2ebX6lpfp4I49aRg+RRyf+DpZQawRrIsDSw0A3ofMXVSLt8gR06otWBryhqwOZAXaH/HCCq4gRJyqgqUpCBRLU8wZmkZKTuFCs5x5XulUYLygdfS//TenrNytD1XAFZ384Hv/1nDa9lSJ6E77LNFA21m6p4ve9fDzR7bXNwC2a3NtlCfIebQrBE9p6/qi79pLnEQ9UodyBiX3AQrOvaUWb8bPBh60u4jJcwXsJ4CQ9xCf9j60v4LV7CPi5hvAHbHUInlF+Db2uZrGwbOMfg2/oc60D7GtSrZZ0ynJ8NZqhihk19HUt3K/M3JktAEM8Gv0kX1KWa0pIy9I0SobMktNbnJAz7kWmNktBlKo8b3uckKLkrpOB1D+fSzuSdSiiJh5JfA1Y+mfU480qXIE2V3Q7gO49Qa3s7AbbY6Q2tm00KjOUNbs6uvcke+OuSdzdszffQHOcAc6jRR9M02UZLecGXDgLSOXjsFgaVe7bTZhI9OW3KOGc3SLvfgzH82e1Apnt1P1pl0G1hvQoAvnav9zAgbNygFKwtZLIws5Hbgm9SMB5KREiuKUhvqGNsj7cg3oLX3QJZzmASqHfbKOBRA2Avd8uiUbXKzb1cXXqyQ0yJq1JcKspyIsvLaO0p3+XG41Y0UMglYec8HKUbZwW/EnhqYA5evXDL1+9fbV/PiIUiFtoPFtqQFL3xXg3yFSBueHsjl3G8ZfGWxVu2/1v2vVeewHHPatFeO93XASdh8uyMg4qSYykSmHTo5PAarGkhep2J8SYcy1RxU+2B1pdWwZ6KTpt8Mkp9U52tT33m68rfuQo0nxdhSDXfUDl5fBtauqBIDyM93Jfsa+loomYmQudPoJlpKE86/dvaao2ozIgXN17cqMyItyzesp9ZmdGdaLKpCPAE4TcldH8gdEN0DgXrNWTaLUuBnw1UWMIWDiELpiTQn8IXxEq92Z+mQk1BBkUX2QlMZGSlwe/NMaV/35iT0DGegIOOF5/UF+cNq7HaaXeduuzupQyNGLWLRljH0qEI66YpXWqyTSciB1yaeNdNuN5kH3iTLq65JNo9O9D1j6eaWYv7mkedoaFXo0x0ez4lt2friu6EHDem4nahrc2SH9fdepJjJD6byoKbUC6Xg89VHUIb8eYMZUBnPu3fxSmFAiB8GnMxG3MDnr+gNMCO9cEJlQdW7VavV9UCnw2FW83Bdo3ybHk3D9LeCzniCq2QUTxvuhSpGWrdCPcTfW7ud33HQbLdWrgeaV/uKrNkL3TRKxqXXbZYLPVJiJgaWwnFGOQcfllCMpJBzT26FpwOLHTWO/NsmCdE+2ygeidljuxN8KQiys91Sm0bqKrqLr1Jp1aFmb7mUOqwPbzenrTZh+VXk12DBqLSPCrNTyLmBbjJQ/pCAAoDVUli+0aFvU9En4pnGh5IN0ybA3cql2GzNccAkcGxsGHpBtE1d545E8zSYwvomvD1yom8sMxttPpGAvZGCBjYkMXKRbnBaxAe0cCWe8KRLhrbEnn58YtsLpNJbZITVE0WR0AwPzwdodNMMShzCisN1rYMsf2bA+CT5rmUX9uJ+5Jb6OVdMngP5yFitwGPiu4KO224k59jDUQgqx6sGphALs/Rg6LMbaDzuSwG77naYuO+/JjLOjhrpLJ8F9kkARi+A4mgbGdFaDkHRrwfoIQqzVV6hRZI7DekxQf7rCBJOGS+C0V1L4T3zYJXlaz6mkAGnmVmzF7NgbKmSUqfSK/xSJLcDKUpaO/WQKvx7wUXaL4+gngkl3OFGPTojNpLknmrnXli0UCSAh9hznVS500TLkgKma7eZjNbgqFHKJaMFovlEeYrJzA5Bav+6SjfKw/Hz0ErxpEncg9XsNfsTUe1RwCMzVXZljUMVGdssbLPQibnfQGD/aZY8eDPtlh6zaD/iFxrS+bUq1X6nI2ZyL0Mqa+8QIut9NSed5hBjzfcrlVDXSaoNasf/Fxd9suz3TZfdEBuqMWwvIZNcTmJV/APDRLv8+zcbMdtE8XgiJpatY3B6nDHmanItUnDg9RAW8VjKoWdjoZHTqhDwQO4hOk+7cUECQQw73MOT/36MdlVa3pOz3AFdV2rl2gB9j+bsvpIl5QiK2M5GnFZI6uBcKBIjiGqKB2+rMsGe9U2NEqM9eaKLctnbjo9SYpc6iJdSGHqkjrEEgyPcIBv3HdFgn7YJfNoOh5EeiUoDEq+A5HFNtijkj0cRo8hmZkCH9mE3avtOlThtOIP2mZri3C3Op8CbqqdtRH9NMgjYjjE4bUkoYG1PTvQXbGxwnN7wG6HcgVwMINH/PCXAffcpRfcIKUmGJuFbWSo5TibnyYgg28YJXcgo63tKj6GNcwvvuh9K8CQLIAVVihutmN5Xgvnc3kD9kgMfHxGyzvpuHxO3/TulDj3hmJEXd5eyVqJPvaNNFr3uk0Bm3Su7mrdtnYtvuritE/Pn5OoA4lvRVa9JydbLwohtsPdMz3Sxt6M9mv57dcb3u9xo6bUpZGJHujRge9teqD37umRIi4Ra9qfAOy98+W0uhKfOGN63EJjaxi/bVVIaQp548vAFAQzKhytLNLLvP9tC9IxKgVKRNq/8kvKr7cEr3vO+nwaGSgyRD70bNjwOnHbecj6E01K3tjvRN/hHR8ZwsgQ7o8hDHpy2LxUG4E12ZXWzxt8xL7JbpPA7/v9FuX1YO9dIkk8hNChVe3X20TEl5hwQyoWB+12p4lo4sMyuuWdZly3C3E512yukzvlNCyhp5rloUsOqAf0uHGUXC4BWcCohYhE521pIc4GcGXSTD3CtXUXIUmovow2TD3C9Yya1HxdAk4K56DA7lbATCbWcUIOl7Th7WZBVOUWx9wfpTCRqPUYxdRhUrB+/cWzAgtJt+HNSYTEPF9DsujX9Uv6W16CHAmA0bet4jJIE8ieKEt5IyJWqvzllB1L8xIwkAjI+BGAjZJJMcuQiCQkkpAfmoTwYrGA3FN5tL3/lDQdyo+B9dU19KSF8VC5JmZZuK7gRAaoNPBM2mgA7Ci+lnOaFDzqyqOuvNZ6YghYba3ujcVZQpxDNu0z1YP0IGAsEPPcnxlMzSkk+6oU28LaobMBoepZ/eyXDHIOFvB//aKy7/2SQUD4LyuAUTowxG+OnvvNODXveQYzymTEDeT9lr9UhwJ2dWKo2QB/wY4FfPaHlSFSM/FtXZjN4vs0ZWEfnAw8hzt1g4+GbiMVNkVAj5SIiIAL3aZQpwF//xYEnTNxM8qNkocZLlizTfMI5mP9lpKtkUTf2LNvFL5CHM0QRmI9pYsFhjHdq0e17HGuC6WDdTSrnjKStcozSqlRSt2LlGqrF3tUKlZ6vzbS8CrkdiSjfhXWARVXtm4p3tV4V/ekUXL0OLtobxwFy6HVKo7m40czuzeE+Da+cqXr1vIrsbf9y1pC9LBx81CXK1O13+oKO1HE+UFEHEcK8UNZEAZ9fLu36kDdvdHNQo+0XSxw33m+V/0mn4reFZGRiYzMCZrG7BrAgoHk8bbXVCJ6CvN5r3NYFtksJrg5HT9w3dqrHitcBX4VTmAVVViRmhyZmlgovB2pYOHWdmeJ9PaRHMR/f1UZOAHzfMs6cGbodoXgjoGX3jATmyHSs+9en5+PLHxEuj8uC4/KasGNPa8hvVFk5Sfj3VZBpVk3g2Zwpk8P522PDF3ELXvHLc3FNq5ymNMaroAAWzFaQI+0+SyVKfcTwxtK63TZB47OiFVz7sjW4k9fe+LrKufcsa5+s2qdeDp/G5h3yYvYuFvVa7bI7t6ZbbFjPs1Plq/ZKqV8INeUyZJ9AdLtsmTP1MC3XQit99Q2gj5CcmJ7JqfUJajWA04lI50usdFrkdCQ2TAciV8dvb8nwG76i4tIsyNYbGVzBIu3XrwwXpkf+8rs+WLcMbpgkPOL7bjc3Aw/nzV43bLjtNSK5ay6oM8Z02veRnJquAYR0XlvpSr8stdCg/55V/PaqFHuU5+KSAoFZBkioWKzR65olvaeQ7/3O+hCzqmQowq59huFYKH41k1pYlFPhq9Aql4Xi2y0DNefbN2fYPGjNJwCPjzfFih0k9T6jGTPO8qybejpXI5zdEZpn/Bfz6M1g6YWcvAnJmuXDf7p1z+lcM5/TWiWUwKNFv0Qs0yWCKcMkjrA2xf5Gp7WYWbFMRUx90PUYL/hJMZNfZmV16xx03qlP8h/Tyxp/WWYysUkXfgjxuDEm73nm73D3Sv5iq0TFUrmwpOosF8Wo3cffhlN03eYsx0VE3MWxICet5qz4KZebV9XST/7DdHdf9XVvBqhiCbySFsL6/pp2pHSbc1R8thq1GWVv35v6ar2uBGmsPEuNzdmEYhcUcwiELMIRAkm3tWYRSBmEYhZBKLQ8QazCGzkHA7Kc4ezksWYx0jEY8zjQWIee73yvA625DFWJiKCGCtzajfUKOF2uKA0r6SVkNHwRbbIMLHnasK7RjLouliHEBe6Kp35bFJ6ZZuNWRximAiYBlBNxFgRY+0fY21QbJvbHiS789Kg2g2RWqANe6rp/i9BpudVRewkzKeN6nzWq5dwxSgpdQvt+1LvUGj+33elC22QyiApXC3lEkLsA7LWYZcIuV9CkoYccbv4vE8EPYeOM9wHnsN9QYldG5ZsSxXKGtcTCKgbv0ZsG7HtIbBtlwjTp3KmzbUcLYZ2z7yi7aHS6uxWhUal6o+rVL0JTsgD+l4xIQAIpQtFwyGiGYMW3Qoi8YpuBdGtILoVxLsa3QqiW0F0K4gc8M/iVtBAYopjPivTKJztzGAbB2PbnyB6EUSaHb0I+vMiCNxwfT9fcMereAHHgyD6DcSrH/0GXncny+v0gktZhuvYPgPRUyB6CkQcFT0FoqfAj+Qp4CcdBuu/gHIY03vlIhAdAyJyjch1X44B/tuqoPqrYkNk6guJe0elOnFj7gs5+lxrH08/o2tXnkIOV5AhsQ4FuVdKQLVWB6kCRo6Qb91YivvO3ae0fLjPRIpvKO+yBVM7Q5J92H5da1DFGshBW8liG9PP6pH2hbYEtM0566Ko9jJR7bgY0ebCg0jRFh5jUdvIUMWcf6+qiGVdKKcslgVYDeG5t0vnyui9pkrd5eL/5EqBgx5GuGjb63QPx2QXLcVGfxxjVHdHdXdkIKK6O6q7T03dLTuugIDbC8tSfeaTmB3l9CGKX/grJx/7i7Ui/VhfNOr5LuZjV0X9PucXpdVIbE5CWvVB6Q6VmguCns85TChJ+bkFSgcvEX/Akp0vqsYcDYwRw0QDozlo+dqJAALOCzyBSbkhm5gkbn4iEYrBQFYRHNFKCODxd6cqwKMRNJaLtdvSsqmkQIAjmObK6Z1EkRy9LzvwHwKJQIFQXszCnYdSDoBku8CSiNQiUtsSqemR10H9mALySbBObnkNwiP0B6p+z2YylAG2bsS3Sfaq2WpceeubMDHFstsv5Znzyyz1bJK+v1/7L2NwBIzEoGDriDgi4tgb4lAQFcIbJ3jTFL9zElyIYYneM5DAG95nCVgzk3eYUtbnTBrgovneXg1RFet9CIbb4om7YLDiViOPGklN5FEjj7ohPD0yj/FG/7zMY8nfdVHUNufV4nLaLFF3cLfhVZT67xFiKLbU+5VjbX1fFWreFz9YR7T3NYOmLb6/eRREnApD3Csn/IL8B1u4VFT727xdKtSGgUUGiZhIgWmbYBsz/lxJWPaNSgCHfXtqyjkcMj4goTJFmtiE+0CSQF4mohkSQguSwAwSsVVCx/ozfbrrSzSvc+RdAt5j2c/G/lRQVh62O819X195Eoxi5SQoWAF3vND2nWgDUwmsPzaINqCo+92bjleO/0LZI2STYiYYhNvgrCf1g3NufuHECDII/8op6Rtx5RSjZCdzGcCYPsF0us63AiKbtde/HBoOcsdfZ+B5JB00YHqxFuGUlR9pGu68gnk4odqHLVP9OBvgWVV7qtbErGnYH+1XbToHGCtp4QRUp03BwL4nFbhaUz4xxNu8120Zubpw8Zqd3jWzb0IY/neGUSU5qnSe70p3543CoxquY8wdynEiIVJVHrEYGBm1VzEw8lWBkR4HVAum7MTXEdAjoP+wgJ7CmZIGT8dK3atS7uVFL6JndMQTe8cTsf5CBKq9A5WL8r12AoQFZJdLlPPtcnLJ4eeJGu9YCco3HD2Dz4GrMwStLCeZjMeJUt/tPCwEcND5qeo4EzXJHhN9RQE3ot4fMPMP93H/5/o4v59K5p2mbUiRjl5lgYp6RZq1OfnJrhpvF9+3sXwUpyL63b841ZkXxY+BZPMUzLZihIUc51iczQ+Pzv/OQLplRdGTY1CjfSPin8j+HSPxIy/98rvC4AXN3Y14Qjk8Qnz7iaSDlNu7giqH1Enxx4bUWKfcb0ZqQ+jeMnmLifwiQTg2QQhHRnXg3U3p/Tw4a0MkSBuZaO8Z5f0N00vtn7WdC435zblx6jqZpO5viyWOCdQj2oxo823w0aeoPy0x7emwiMdPQR25xIjufjq1pf/iy1GXgNGCw63YuKQca3Nv1T3dzLt1+nEfAgsmS4RTBomfcVLz6mKbkoIxSMSYpPC5z/DYyDhFTPI2GSe514WgOQbrMRGQrQDuNwdTfed7FIQwWsEviKT0afut2MTaafjvlZdrcmy74f8mso117CPuO0KyIy92asGegzbawoZznzd4Uuh7qiohgsWWhRDVQCf0DCzgyTNdkYOKWCRyUK/noPiSPo1JihIgAtlrj+UIewjGRaOyfuN7SmwaGZeIct4KymkihTYq2IUtMbdQ11WAufPmzVUVYH6Oql+4NRVgfpqxBafCmWzlbpNS0YQ+N9utnixMj13GUp9vYzd7TiUM8x3djjci8A6D/E4ns9XmKaUsxRjkHJHFBwjS7YSEpPrN+VL/yNHSWtU1e1F7+DWw5axcBazE4ojImnllXdAh51D0qbKp0rX2NQE7ZWxfc4DPOSApTD+cQOJKBewnMZVS3D19aVxykBiD53cgCUkSfSSgr1LO9qi67Cw+7GAgfz7s3dM8ty+TJ21nC8o9NU9r8HsR0LWBoptTNKclm4crIACbCIbybSgUUMNVEb/cIU66o3+vXj2NvfihdcITQQIBzHcvP3t8Cm0fTci5zKRc7023t4IMg/xeyn19ziMDz58RRzPc625IufB2BdkcB5Q0RwuaNpO47De3s8wimpcagdPhfMtJdTC+lExBHhXWUXv05hTWTGf9TxEk4lR8H3tlLxsMTts3v+Y8To7fMNS9rdVukF1fhlGLHrZxfoNQeaK9mxSkzfzWqN3jdGnQZ0SaEWnup4xKA635ihJfAEK209fN9EhHWw5XkKFmzdz2niIyp+7yCpXL3Wl7Aow0C6el0gzFjhCn2buqKoOcgwXsO0g0wHZGXBRx0SkzcGbFQVn2WDJkoxTdScTQVEj67BQUlzbJOBChCKswLSQbKPIXcV7EeftLUelipTYu6q5cufEeK+eHcqLb+D2UY20eLjIe8RJGxuPFjEfB1Db2GyTy48hhp8hAlRiyV74psi4Rax6TdXHwWhubHZ6L34k3qq6osvLLLblCANPFVlZ+Ofw81eOdtIdRJyRPZo5YNowcWsQ1b5NDSwBJII4AHAH4rYoYkAtWqGRoveo2DSnomTcvL3Tv08hoCnCPB+L1cmwS7H6zab5ID9viOCKajmh6L2i6yQlEwIqAtadSVA6FbpOBJulsIz2XprURZklsmu/ejgrIYfcoWU7hs9hGJGYoWZ4LOdiWh1mxn5yniUzp6o9MMPNrU/IyoK29M4A9dvqhtSFvRnHqAAESAKPEaSpIChlGxAU+WTHaacCIPBrQkX9G3BJxy15xS/N6y/vRa4mLxoQUSuiVySyRUkRFERVFVHRiqMiLLWTrFzj7jODTNrzIE5ydr+RYmxUp9hgYXiMjX/o9Im/eB5Ed6XvL/YYHd34L8BwmYr9haJ0f5AmjGI8ImGGY7k910vlNxQkvdlH8ymt2UQgRvNE09126JziTYPqwRFxQtn4QS0gecln+QFmzMKZPML1laIHIjuke4LOAjAB8jcgjD1ncHsz33Wu/5gJmDzNGn3hpV0tAsoQ3knr480PAOShwE0FhClw6RedzeTEeIObwQfd+VeArEzm8kmIUHLLhwu+zfjbIC4yn9B7OGeTLAOgs6dMdowsGOb8AoWQzVNUpnIboPGSMsmlQhYWIXNdf+RVNClkqYiIAE1uNHJFQBvA1LUTofHmDaMB0AR8EfZD/G7+MNUkmAohCrnmY5xAwKVUGPM8kPHIJUXcMrgwqbg9bQC4KBrfgpFLE5bUeYux/k+m/QyRZ/gelWecoeSi6rKLLw7RHypoe8FncQFJ0jvvEIbtiYNH9WZB/QIslbsSutwdOFCK7UPWntxhYJSfinYOvgABXUMAkNPL7JkVEBlO0jWlLHv5YUbY7DNaKr/BDiUk22QFD7wqMDTYMD7pDiQSjMTF/dAwdIhb64sbl54xmubiAc8rgyEKa/s/NMQUCkcWFg++7dw7WtKv9QrmPC0YLkl6GxQpERLjXegPnn0HHK0LdG/cIybyhCcyFSiBqUxX/8d8r3H9LLhkIoVtDC7bw/V7K2DhC5L1eIbEO4maFe29VvF4A9hhMZLTdumPQFuAC51Aky23qgrEFFC8haxvJuzp1kSwn/rDFjYvANAFY5fq4KEgaIFYpzSaCMrCAoy4AFkvE0jvAxPqS0kcEeedovgRMFlXaPPIJzq7grFgsEFl0DpwxlC7gBCZF6Vy0wSkOPA/ZYqLWeQ3JwolWdQI7h2xxBfNw/422SF2sBfR7PDEg4DXKkLgBz5cA4w2jdBq7gPdUzugchRJ0uZJcnj/IClQq98nXzdBgxr5DWEB2X2Avi3UmXyuJV3pFM7A7O5ovYQYZwJJeSbCCXYf5EWSQ55qR3ynHGSWcYviOsifAymQEvpSBc5isEwxHst5NAI8pnKfl3CnEMIOCrUMjJZxdQY4WZEofIQlhRrygDIllhpIrwB4hCU5wiVL4gXIB0wkSsM6O5vl2lkHGgzYEhTwx5bBFq6xBjxDmQxx8R46InkvnPGzCMOQTRdx5CA0rGfKDEPmllCtC5o8VZBegiy7KbfqCnocp32Yb31EqQtPnkHNEyYWCvsDLqhcNU5CbN224iU/ouaGM4fAvfzFSjzO5MC9KlfQ35hR3KIwayiKgUvFZTTlkD4hwoXh79fk5Axm8oxgl6y1eaaETqcxUVGECHYwcIt8E5HxJRbiCywb90b68aLoFfpCDGcJIvvy+Uj4dOqFn55RmFSx2Oee74EbZo8fh3quh0rCwS6m8YIXY3TJa+bxiCgHTV79FKxx+h+tXv2mO8C5OOkGN3Csn8orUHg5k7WQaKYLpNWydZhsVh3O3NTSGbT1hU8EXMIUvohYuauGiFi5q4aIWLmrhohYuauGiFi5q4aIWLmrhohYuauGiFq5PLVxIfbY9zqi1XTvouFwtljfDQa2dante2lqnVm9Lm9QaUWqJPEDqaH98CRSvERdjAbNtfNkw4uJcbp3jzIYhKFFrrV4Kp8A/jH8vx1T0nwjRm3q6DGoIJp7uvdSId9rVrLpSZq+Ma+9JzbyaVcfMBQMInwzUxtTj0e35jVYbV5lRKNuYu4nQZgTAEq4YJc225FHGIRwrZe6kXQ2unzJTvU9EzaJirXuLSgfsMaVPpNdMAeWZ9L4bJSHreSInlNjf4jW7aPULS0TZ7ExbY2pxDF3fjnnwIwXfLwV3aOx+KKtLc4K3JDzCRZDeWMISj/uw92zD71uYzye6TjDaslYn1yNtqVXjtv3HDb1MZFFdXUW/MkR6rrXVb9FemPda8syqKB5FtIjgexPRdpHOzgZwZfxfHuHawj+QJFQjoEFKC5ndW009CODH4ruLPIfs817x8gtmUaPiXqUx0mv55RTOlF9Kv3mhjUtLejJpynqVfSqOpW16RiRkkg7UV4e5v8aYRecidYvUbT9lvBoQZV1cF+O3wNFBxV4XJr+jioO8Wm+1sUrL3UfJFaXToPQLZBRvJWGUvzlPzI8cE1nf2R7D0s5R0OjLZB79im61spJrZ9Q1q8uacfQIKmTpZZfvErgQJZOIu6PxaHvxxHbDPAm+/AQ4UulskkIBWYYIEDDyxg6BbYFDk2u2/dwMfdmdqliI31MHN/LQEQ/vGQ93c8JdHK0HXXiZ3qFxp6/CTLaqPWJ+dI6qXx1Ox34cpvMkyMypYPi6HHlfKqC+FWGs5SMW1U+7iekb0U9HzfugiM8CrvK6JjgVgmYThey3KQyuhp9r4mCjr9LJ+SRcBOUmmtiErVMBWPE/h+aKT6J8sYxueM/AbAZZr/Og5MrwEFEqj9zgW3PpNFvZp5DrZd2qeXWxb+6gHhkHuEXKFE153DTYxsHNbqs8zw6v0ey7KtDZQN3ArEV225tHTdCuk36c6ETjh6/zWghqcHy/JlJ8SqVme+VPLW6ti0ez+KjtuaeNldAbnIcnas9mCSIjEBmBvTACDqn2ROo2iWE7P00w1PFFtClY56eB13fH5i2E20KzIRWwEgnLcNpNsmAmx9kyICDJsul735cIWCGo11YwQqHcQSElOkoal0keU32IQTwQbvmqTnVj5aluzWYsHB4x6iGLhKhbq29Fn1WLvNKQOuMuSYi3I8o8idoYzZWffiu4/9ndXL2DD+ZgD85f16v7iUukqqtXplXrm/ycEKdf0+SurWjSwkgjI42MNLJnGlnSpL1SIodYbF971EGvYUyi5IcppVigfBsRQpihpypFlJUBew00P3XNrJApd89eIQ3bAFuIYzijCoYWi6bhy7My4K4MU7J4kOiL9zHpaCmLpOqtWsreHEccrAkbzogQ1g8eBkNaSGwPqCsq3SNO2Tv7K394R3OpsN6GHczN0FNlB0/KyekHZc2iR0XkFSNe/7m9qvpWJr85bnVLf45jc6ivNrlHpjQir/0jr6CWU/Grl8vtdJfJsqG47D1wfZsYcMA54qLhOpIXjV0uFrIOEWrkRZurIgdH4AENqhkbK5FnPXuyFx1jFcMVEIB9Yr2CBoMZXYG+Yw5i6uaI1N8mR0rJvbxBMXVEBN63B7w6387JaVTKaXU6Ztlj+rSDYrgCoudcFkLWRzqxeh1ySl0HeBJJQOpZxuCPrvwf4SQf+xIbGpz9vvl5H8vtqRFk8cK+6JOYkzxS931Sd5t5jEAVgWo/LKPF1Plq8rl8U9tZwWJoPHVJS05jx/Q5DqH1xRZJ5RofK8qxpYqNn2tC08qVs1t0j3UH+siiwzem0endg1+B/ZLiFPZbx4UM0zSK2RFn/ngZGi2YivqkCOg/BaDHtPStvGA71uV2uYP2xXfJtseEbuhpRC4RuURxNgLVaQLVFoUGquDMzfUFSlJVi4xLCHoWbOaUin5nkCwRTlnAhNCiRB1RfoeZZzU9XSMeisgzuJDbrmVfgVSryz7rF51wdQLe23iFeIIpLxh8L9N7b3Mr0+on5yoluHM9ew907L2uvNTJPeeApCdnpy2n1aXCcsb0ieJ8ERonieEomdLFAkcNQOSnYjDni4njC4tX25i2jV+byKxNXGss8yLcYt/9eOPjjd9XqOW19OyA6WUNnpuYMqx/cV5C9On4s3tZET0llweRJ4wIxLWy7LTmXHYF53xCUaVvskqRFy9vyFFzXb59qwviiio954RBbzsqwpNq79giAqYsOgJakHy09GzV2XturjkUn9PItHTW25hOSg10y5LgIiMn6CoiwYA+7SVDbQIx3smm1GAx9O9PLmmn3J4ulUPVH6+yA+fbQ3cJgKcNdvY5+7DDe1AstsIOCzUw1lzbR7ZXRPos5GBqtf+cdSReJhhtExssi3YC7Ab9IwLBMUJ+e61d5w9tQUR00h9EFnuh36v91nT/3iMhl98mKOs/Uqo8u8gbvBy+DJJv/cpg362LSnTFFW1AOZ01DfkbunL2rfC4zVvg6mNx7oEwyGkTj8P0yLfO5PRM4BERkIEqjXiP+RLq8tjRRhgtBj+WlzAy1rCeFXJvXqN6EhJhu/Z1++pwN6FYlh5crngTXFiIn2pQIV+kck0eIlGIRGEvRCGkiT+cVaCb5S4Ry5boxESZArZlgKkc2A4t7RubviDA9Sj1y18Y4NpWPv1UJr+zwRKixVL0KdJwyBDci7pqg2F+x2qxG6KbwtiohKn2QQpGH+GpKcZOLggtuOUvOcXgYYTPr74S7YtQwWqE0IaPl3S9p6QQW1O4VI720DmOUXIUfOA94aC5/9SM0HqbOjOU1SNOSvw6LnkRS5Q8Esh7re+eyGTSbNprGIcXiuyJdTkCqmGTviNROpZQza3TnTH6V8EGjn0TmNVBZEE5rPVF5+q35+PeyTb5bMH8br5h13ABNZnd6MmpR9pEcG9FwsMnFWYPwm6sGWCP8E2Qx42FlU+iNjFlyFbf/PR46ZXVfk8G2LtrmTZO3Yc8roAAWzuXpkCAPXmYBjZWWUp2KjkHMFr487Q9hcSrnt1D9uX0Gig5/RKnxOj2urM6C6XwQzihwvHS+gqAd6pwdSSo6SENs9yJLrCxRvTpNwqe70MI4EhC4jc4YyBmltjNafy0Cdbr/NiPR0k6PNmbONWXWrVEdieC4lyM4uHrqqveuuDVHfRn+lmCfCuOjKuBNjPWv6GJEcjuQYqKfjVh1TzQLuRR0PzaVHnzSvo0n5YF33z9umhc1xv0iI6X9EhYZT4dhPFu++VPk9wwvuthX3tf2nvpbRvKjhJC8UHX3dJP96ztzatj/Wj+CqwczkANAkRi5x1XkzRmlHaGCK/tpvEZvcZ+D7Y2JvHtyb4jpR8FuJ9Q6hCKGiekgC93scj1iSJOiHnrMLm6NMijInaIw5snCSXWPiY4N9FpRKIHR6JNo/lPid10OAhKljvkeGEoWXoTvKQ0KTJIxF85JX1rBuy5nJbls7VLAQ0LJdeIPMZQjeiV++YKBM4BxmqFMQWRfR18+LFdEKeBuDwJ2Eu8ELFBxAZ7wQb2fd2Q6MriFUYpEpo12oVjOIf6ZzbjQEAGT4FZiEzLSZVuEpTi7Yy732PkbETAPwg7tu9I2RQxsQ7W0ylyTEE6gWyFkl5xsNSADFcA4dJ/pjc3gAyRD73H17wZFvqwLHPJGQTZ5Jfz0ZsKHVXUp4PmxIjZSAz2TgxaKLldp6OJK9sY0kFiLdS1A8N/A1ME3mnd1WZOP5Ojz7WqqxUGe0j22oNCj0Lajp3OzcetNy7HkT5bwtAUPosjn+yytv8c5YuNq2ynG3KB7Ovrvrp72GWQ/G1GImG36yZAtfGP5+g9AZlNI13AJtKxnaXGQX5oaxyktA0yF7EHD6G09zD8vpUM/WabPKXC0FGkj1zcG7WwUDIpZhkSEXgj8L7pak+SIvcbvJaGA8yCvE0H77SxfHLUGMTruvcKyjU1iEAVgWof9b/aWFq2faYogR+p2CqeYiUHnxM52pbBnsAKzinL3kg6snK6Xb5azpg+DcgFU8B5w08rQXM9r65dbIzqU0SlHJ3iPtbz6trHxqg+0wgJIE4s8YyaUmcCpmpAnxcZYrSCbH1irqtmVp2X2B7Tq3rnDoN1lI8jb/QGlTt3oOBRMRlh900qJiGMUQsRdN8i6N4DAaNRKALw2wVgKFjkeSPsvj3YZUCcYoECM7PT0gKxDRoMdgIKjF7rb8o0AIBd0oL06MN9QoGHtsZ9+1vVVGq3XawdbXM7VL2lzm1TGEfP2npDW5HpyX1vrqe/Jzx3S8EW7AznAq2US5G8RvK6JxtupfSJMBVhal9+AUYZE0EqgtSeQMpVkkTAioC1L8AqlRcRpiJM7QWmKqXC9kIPc8WJWhZhXdJEsK68LYa2UnPJ6DrA/ruAW3lTZWao7Uolo1x+cn8jJemtMfyJ60GekKahBMhddQXVEe5WrWeKMihTHm5zf0Q51r5AkIh91bEMJynnXdWI5LSOWh43pcQbM3xylSvM2XRpOu0h8fo54ByB2A/EDZDxYZU7sIAyxxWjeBvEkoMFVNmt5Hi3lE+vCuizQVIwBokYkxQ+9zmPGGoZ2fwfIlqt5/IqfkGifc9bA2LUWbx2+w4Qkj/8soQQ36HEVNzbRCmf5PDzXI+3KSXN5WcOWcgtHLHJ1X30cy8ZWMBPDB+XtUFcpvVJA+xNIyqrXNnXU+PezZF2RlpADBMB03F6YiEi9bw66hJHpiZi17fJ1LRSRDoA788TaV/nKGk7FCvSqf3SKYcqxAQKEdkewfjoYjefUuhS6qG3Z3WV2trH6laVq0+H37ETsAVKkURWJ96+H4LVKa+Bn8vRNHZHe5D9+x86cd8JpC88IQ6wQuSRRYlI8ghI0kJN2yOksDjRleBMMTy3Ih+TvNiqJBwV+TlSg21WB0OyCCCLIxme3iKzdRJJYiPHF5HZT8HxUXJJsxxDEUE9gvoPLtzApGB9ltY5Iea9Zk1aDEmYr+/OCRu5/og9DhAVYZOnCFYRrPZDlCpS0LLcyJe+A7NtpL45mLnFNZJmAZp925zecpkeQ7Qjlxkv9Alxmb5cLBx9g4F7bG3MosCAuSvJAMZOCwZsAQd7v7qHTC5yQK5159IEB7Lch5WCNY6KmClipv1gJoNM9oBCAlGWJpAy3y6IMndV1EAgUaQHS/Dk4zsoWRz7m98ozY74uQywR8j24s5rH1Brzs5WtnuDaC7gexWM4j0MIm5cqWql9roO6Na7lbXCnGSXvcIecswSkIes0Oz5ICICMon2VodTofmyz9EioJqOF+ktXSR1jp1J++SAG5pu5LwFwi7V14MFSvbPaPMlffrEIbumSbi87IEgf04x7vHrSEypDAKFAVHjQN/NQD5ppzNoQwEXgKSApS4kAAExRsKFj+V6xlC6f+Cg5AbkU813RZVGFBxOWaUhYVWyKRFcI7i+CXC9hwsUnXAixL4ViK352+PJgAnIIANH/ihfghweMlJZf9AHeyp7kQ0GOcXrBXWBJUEswUZhllNEBI8y48FkRgZSVPCbQEorRh/9jiRzhAMxfuo3X1Dq9U353rMMq0G/M6K7HnG8G0nJRH42snaRUL4BQinVNxNasGQntq5geAqzHIeS3QMhGJoVDetd3Z+B5/8wNoDdkMqPYUl9BSH75t82x8gRqetBqGvDstCae20DaG1QQ1vf1tlVevV4dofhjGx19guU2B7Fc/sQ/Spiz7iGMrc9wla77k3ZaitIIzMSmZE9eQQ7mswIVxGu9pZ/31U5RtCKoLWfNPy2brCd4NvR4rU1BZW+LWrZopbtNLRsjpbLEwhm66MiFo1YdC9Y1FUcnai6SPnifkYppNt4467UQNsft2D7C8npVBrnlAvIjvMtUAiam3qR+/Ej6jaL6VT0/Eifw5TmR/pUVgiYHulbe3Yw7QYQnsNE3Es8dowPvkIP+3IVbBFIT1lfxDaWsu5N+5xtMG/3llDpUfWUQNTu6lAoNo7IV8vpLp1/RvBpq5IR6fx8Jcf2gvuOCdpSkWfV0zgWUuICMHEHFvA4q5RGApkM9UirA1LtOVkCdpwPnhS+6LijPljzbIkNGl5zT3mS7d+6G++Nnb6BKQKyOvR2eUIzOfw81+NtbMAh55VocCRLeiWwHt21BRQpog7PrHlDVw5PE8AbzDtQv5NieJDAMCrfxTo7AxJYhjI4VY1+MRKCrOz2rUk0FsDogsljXTVsBtiVNFIghRYd8RaquASYQNwvygM8K7LQj54oewxlii5rtE1gQknqL9SGgxa1ZAly8SqDaFBnEaxJJa9y12w7F7xZ0JfV7KYMJI/HzPONAVkULnra5gaV9blcUEqAyVPuNJYn1XlvEL+Cc1Bg8ZI6W327KqnD6fRUkqBz0MJYQa6EctS4ZUf6fFNd0hVfgkhLD5o0LaAJzXKQuAg5QwS5yA2lqVSQ7Dv6xC/lthcyKxAWY9KaZAbcOOOk4IJmThORReb2PnG/NqA9cQJX0A2OpqShpnpaQvIZcTTDB5yn+gDCSKynSwb5kuL0mKHE+xX5twnPbqozPEdDG1ej+ayC2Pd9IFLfaNSN9vy+t/Dhyz8qkQRKRMHgmNzpPw75LalSXTBakFQyzErBesCvwWcBmSRHR/hWbr5xX1ag3pqjthSt+42mZE+ApZNHlB+f8Mid6O/rUiz89wIWR43blh+9tDjiY353ygDhCUP5USNXjx6Rfwit6XZ8ByRim0jtOXJ5I2WQ3DtZ0ArUT+youczyHAIGSLJjbFoCibgsC3rvYF12icVL3zCnDL7uDVwhL8DWL31BqQJ48SYU8zlk8MULMFzzJJiUx8fT+xL1WGl5EsoIZB3uky12qZ3lR6rBisz3BVt/Yu7PEV3WzwYcU8F3gfLaoPEnBueD3wb/9OufUjjnv8qtpUS6oCo2E5Qya9cwyBjd+C5bFOoaR1eQGcGja5jSxV1Ut23T8Jotvd3u/TDLxYZBRz1h6fkG0nUMHopuG6cfF34X8iOIkBoh9bQgFRQ8pi6IoPoGQHVE0gioEVDfAKCW4kAE1QiqJ07+jaYjQmuE1tOH1neVEiOm3IpQ+1agdixgFuE1wuvbgFflPHsJMVbGhCNaJnMGpbr9mJ+s/c9+/DIljqdy242w4d8QPYmjJ3H0JI6exHv0JHZceT0R4n6n29bAzZT9IE6xtvX2QO6rtsvpfhxNNziHtpOlhYPuSofL17hZOq6RfifGkLuh3zHQ58K3veOe39mutSkBtzhvXFPlwObhWxquZv4RrlPYHmMfWy5RuzhCOc5LbSrjuBlF56LoXHQKzkWlQ1B0A+rdDchy3Yk6j6jz2FMitDs350AEqQhSrwap0hkmwlSEqT3BlPFaiRAVIWpfEFWymRGmIkzti/JZfiARrCJY7QmsfA4bEbwieO0JvFzPighYEbD2AlgtF4i2Ht5yVmh3Om4FTUCR07qmQiC4TeIxrEc6KcfCZYn2noPwiFlDj5x+lecQpsdJO3i8RI69pADkzWzHlmk7mN6zO2lodTitbQrav9S9ujfOCptuFZPj+rpTgIkZlfboo3yNCyDgDUiW0iT+I+ZR/nlvlw1IPlcZ59x3TNvbfc9uKBHLS4ChNIRulT9T/uA8KX9hX701DLgZ7iExyNlArHQvEMmS8u2y0skZdSWlU4s5rSmrKXUm0oMYJgKmVybX/CGcHV82dXtm267gkC6bG1chHedgQrXr3F7ysKahAgApFZe0IH5/D9WJKZvSR+ivD5AiLpPkBrjUGUi9TmcHTAr5MgixdrsLQJrDeoSPOWJcfIHwMQ2QwWMgCl3jRN2a4K2PsnKUlXuKPeiAXzt4RrMaMXomQvDbhGDp1DlM/w4S5XpJxPJweQa3oQgVb9sjdayZ1T4ngUivvLAu33QKUwglTjsSj6L5eiQx/eZcjRyRRaMkMVOk4XX5GrefJ0wnMlDhdMWoanrbyFLu4B7hsJzQiJywhGomt83G2kN73NaS/7+P7FNkn94k+5QiLpWU29AGrZZz4qEgfDw0ZfBrLOpZd2osGsN6xBTwOQck3W9xrBchrKt6T6LUF9HWm9VbmDhMRXkjIEdAfpOAvL9sFb6P7WQHLc2E7Zjl0hrXFlsbNq82RfWYlNpGFNfW83NYeDy2FE/hdtfI0Zp+0/oQUV5EeXty/GxYBSJkRcjaDzH1auvbmNVWo7eTCNn6bU+KIRIkSJZG2NvnhrQ3KZ2lQ91Zc+pTbgbpZUttGBxp6fM2jQm+q6XEirc93va93PaGcmk3lZJHedMCN1er0kYjAXVHBPAI4HtilPxqiAhgEcD2AGDKF3iKMvie6ax3m9yABcrg+YIpdUHtAZxtodyXMqY9+39tNhxD1y+PnyRLyk7PRlnPq8vg0BjVp71hBYnYi/Ps7kkkTeLEcIZJPy0naSD7Jr4KedEn3doblDRQhAToHbJ5+fJ7fTW+/wUPMNNTkEcSEEnA3ngM+CwYeB0wMKijXLzwdnLu6Bp1daFZa0SfPjUSlX2gBevTuwuStO8pnIozvtQtfaRP16FAvOPZ2LU+ZSShNBolI1F4g9b1aFaPEPyWIVhxCFOY5bglSXYlYz3EpGSi3IHFhJ2gUNYpRp0cf1htZBeL6A7qUxBPkejd7Y8TkN8gUgjI+w2XVDxRpCuRrrxZzuiSwRjsG4H3LQJvRldwqJ6uy2I5fVFFBjn6dhqTOSEfzCxoKN/BPONaUNrq9JaJoq2Jr2wH0WIQLQaRikSLwa4Soaug91/pUm3dEkEslXarb6NPdEMJ7HMJamhn47WL125PzkDRCyhC1kEQelOb2aXDdPSMP4B2saXJa/OBlorNo1hzdV+eKJqGUipe23ht90QQamVRBKoIVHsBKo8SpwUxXu2KL0/6cCHzxW7jWQr0SNutNLoYRoVBxClRYRBdDA9nt00YxXhKTzBnlzWzzoRdzXG9Omyi5HH9AYLUlAjvzR6viv5O4bM4heRl0U8xUpbo5bUnL68U8gRW2LInBHNCJs1oS4yiQUTgUTQ4nC2xwSJ3DuiwSDZYw/Ztd3i2YBKNaFaMN7BH44/LfjTPRSv9MpqiOTJwnsuPB5iVAOxiCBofqI0pggGEg51Osbq6fUaFoJmvFtamvWnIqXtkc1R2t+RxwWhB0l12R4QNXfb562Ffe11gQhmB7B6kqNjkFn7QeTyhdGO9r4NOYKsSdwedwRxhfAOevwR3wiJEB51I1jWJY8FD78eBwZoW4goxnfVrU/IMLJhLWgR2njGVlfm0e+ZB503ncw7F3/rcOj2FP3qdQikFRYVW5Mb2zI25Oqj9Q+4VLWYYRviN8PsW4RckCeQczRBGYr1NXMdh2TqUppD0yk7pKWxh+DowQbymZHHHIOcRrUS08gbJ4jDPQ2WsI/BG4D1l4BVLmO0UL6zMSq8ETp6DxFXDbfsSS/fGKs3Qy98h1jldMJAv1y94T2CDpHOjV6qsFQetLuwGBFkRRSBDeO3FEhgKAdmktZX2FlkAp6ZVTcJ88utG+0YGBGQI+D05V4AhQESgcAbhSKwDKdLLm9s2nYLZhUKlPatX+RKk9OkHVa3WuuP38hbt6GDzphfaN7Nbz0jVdjmd6YwzsID9iwI3EPCC7USRtH48aDxV+vtAb784xp14X3vu7E9fkzCGvinNT2QmF8rq1/dkFi9Az3pCXkMAIlJMcYuApJK4G88dmr/CF0oEXY2A2MyebEUtXuAj1eSC1Br7JUoZ4I/xQH+gA51RlsKdxP/Kptxi+JV4dVwerPEbPbdyJv3uLJXSjVj3aa4DPFfVhwSivU5jZxXTG2LTbSHzB1yeJSb3xUhY0nhfU6iF/t5YO2lieAdhqlR6fZp+QC5Qsr8ZNL6p82wheasuKRGQiInRSfVmaRIMSAAMAUDIPZ8IyAKltVBA7WR7xWxWPB0FuaSIC0ASeHI+hAyuIMC3ZKKckHsFEGnzwBg890pj9Z3pVood/8aM017RNuTLk9iQhJI5FAL1Ogntid/vFNRlvWN0EbSYH2sqK5gIyoYEZX1CqKISV1DWUezVUVixFzd0VyL3hhhZ/oRyeGVspDtbu6NVPFrF91i8NczneV/a89VhUOsRYFokMO3AEscjIyCQ9v9I6JLRGlT7msO3MUlhrzznDG8sj3VgF0AxhXyrGhAH1qE+T3Y2uTeVpVaOqaZzSL2dz97W9WaNtv5a9e5+8Ynjy3pP8eYSqjChDAi0cnG7kCGjdsPSxM/ZbUjahl30XwhBXUSPEXEpgqCLZs35ZAmTxxl9bpksqPtLMGs+Y8TdeYL074WBW4e4QMCSZWuJOjGMMxWazWhzKq2vyAZJpZ3GDJKi1dAaJe0wdLGBFuaGjZ81zDi8yDLA3CTqJrLebpKm+7zRgtJWQwIxblD5hUpS8fWoYPoB9asEbUymf/drfdWu4SrgiX4svYe9L5/VJ07llKYMoG2z+LVxHldB7zBtcrMSa7iNRZ4CAfnDXCJ8SAR2r16OwZo/cBVt27iSTPCHDKYIGHb2sIGYNCn4bdDaeKxwUDmL9wr19Hl9EEECAfxOzqbXiQBCaGH0u9uyLjnFSEBiNDgeUU31u9SDc/n7lQnVFKFkD4KhxUJDSPu9lDwkOpew/WpKHoyB0SHyVLiUlFACDZj3GRiOUT5ZgrxXLCUncVlFqKPdFD75dVeSAppPu/IU6HwEXW/QIzpe0u/5gWwmlcm7a8pKR5i2WQeR9yC/8fP7GXgOdb5iH9QlQFlOmSZP/7tMTPvrcqnQYgJyoGgY0uOlzcqM/s+BNMtJLS6U8kT9oNOzSGvtHBHoDCKUZQCjb7A9WtOuC0mcNPGWm/y/n9Dzr6c2p2o+kpWFG2c0zPMJZCuUwBFjSvRqtFzKikRng49gdQGSx1tWqiZVk4mPX5kRUzrRyinzNAUSXu8oxvZA+TwRNLfbzBev5AYgE4RRzsJMtmr4AEiK1Y8EgyBzXqNayg36DDBKlf7jHUBYerx62u4L9S6Q59UBmO8MpNo7oSmcFDPBoHxGvL1fiKt3fjbwS8AKLeTOS58E9S37zyHG9ZOM8ZC+oWKp5+0BqniIb/MQqwOUWbPFxgPkyjUHfYPvKBuqX7RB4VVvqt6SUAZ/XVX7t/F995BTvIJpveU3GpZ2OZcUzkGBxQ3kXCo5zgZwPtfH/U7qDMwoKM/CjHmnTyXLMYLp73A9o4Cl9TkNlKmCw49FBhlKBjrFGF5Ba6hpMdPlS1rg9F4Z48tD3+Zo2+cQd/AFO1jtnkDZFvhsBRDW3esJpuIaPcpPXAIsU9BXBFDmczNdV2B9ZZRvCu1cgbUWntSfv0MpxKqG21yOkFdWBafXjzeUiOUlVLOX3xymIBeQ1QPKmlOKn7kCa9mWlu9OgQl2V3/yCyieNApNCz2nsldpky7WV+pFy2WWqSOZgAzqpkxO4wYIhp7lnmMq+JTWS+N140jn1TTevbdz/Xu5v+W35N+qIJH8W6fHO1NlAm/n5o9y2j44jyd1widVndITShdwM1mYaK56CpgcfTb4jOCTQ6e/qPdcVpnkyhbPoHc6XrJ6ZCCD1dM9nDPIl3cUo6QeM9GBkZoyy29XD7rfA34/0sKqRSnjcHtJ2mjsLuwKYrSCDKYfqUBzlJT3xX4sr9ddwZd3kEmWznBdyRKmBYbXMu1UfTES6SGHhxir9qqhesIQsAuQKjBUD9Uk5H2AouxT2yfZJ536VjXU359oHfqZUuzbb6A5JBPpXkQWXJEXkPpWo9SDXDgL4vaC5HM9mRVkalAbhOJuH3i3q51OEc+l9mHjdb0yA+tdqn7aPr+9vbXmoQux+W3DQiwN92XkJtlym8OKZunn8lvy6R7yAgvzMBEagV+N3g0/XU8fhp+mHx7u7kfvxn+TNKl+vXmquTpg/RqlkAgk1orX0ie4QFxAdgOVZkXxZ1DcAc6fqOLXOFqQMan+0DKVebwtyr9gOiajDCDskzHi/jT3p+b7pV2VFptJ0oio9OOZvl/v74cfp5OH4eXlaDKR2AOsbwuRUEVa7sD6Xt8/uTjFz99hQMYpV3Kr/R7EzXs1676+BHyJINOGCtWi//QILG9o4tWkEcjPt574UJmz7iFIteoDwzHIL8tft5uuYA5JCkkiX9buvlsCDj3t91SVEGx3lCB5wSTRr3dJP9/DecEVHjVLV+8ZnA3kG2iWQZY0nuq7Mwb5CKOFsdTpBrVdhum1WsbSOK4e7wqWyCVc0nzttrzTpbuctvcgdxvuldobcjPuHnJBGaxusP68EDIbdvnoogPVdAeYUOyVZrtV2z2cW39WI6y2idAXvX6mzMCbBCd90PVz5aEr9UqKeil1qN53yQ1KZXMCsP7wF/Rc9SQYcI7m60sZGXk2SFSZPg/o6A73pHTbF8oeDRhbE0WezZbWUzPhEdF2URmGLyNL1QJApt7ClTIeyVQj8i5VbWr7uZrbBGDI63fonjtG0yIRZnz7/serFK9SvEovvUq1Kl5pxflW7JEBF8XsqJ+53JBRPteN5S6Z31WXofHbqr35+ysoAMIw1eULhmUaK7e5Hi735J4+KdFFfmFEVhDTvOKwSv1/4syjPtt6CVVbY2pKDLY/3mALPJaOuL173t5qawvkk4IL1JCBh9JzztpJ+VihqolxKK/7y5apdFg4M353Z7XneZdkfhIzqmYzY/SJQ3YekH4Gpv9B9bszvNBdrsBjNVaztdoqiV2nZejap5OaWT0rwOFf/uKdj+5p39g7RldIw6nzoQv1g9KcoJ/01dF/f+LqN0qCWFc2w79ydf/kf7elG8M14haoXNMFItUS1facmdmVH1P3RXMt84Ik5S8Rd+ckqPvccVhxW5qQ8rieSejN0Ua0/rscOcxRLVXWLTynRHGRrOoMn8JxPlmTrRxCr4ZqYHrC9pLB2eAdwrUl/B4mdEHQN4vwVE011ssheLRQnvpI46260TWjT2Woa8JQXiPQumkCF0ZYB+6bWDUloogOl1/X3FKu/pOf+Cid5MqHicEc5ZMaJ8yXZlAuuPP44n6+ej9twc+3kbK5sYt3d9ejh8nwevRw/+l6JLU9WjyoENIwzy90CdiJquRVSm6SizbGZ/Ws9qBKo3oJhPTPv4dzyKBe8SWmyaNyfspyDGU9Ls3MW14qja5qf027rfNWqRee6yFG/72WXi4ytVHdYn+gbJNiXqWLNG2lwFo+l/2jhGae5bgqs3eIIL609qCa2HupiGyttG6tBn4Y3wyvh38MHyaj+8+jh/Hw7uH+9tN0JLsoF5cA49GzjHIrda2ydWxUodXZyEYjxVkkxmo1pir5+svhdHh9+/7h9/HHq4mWU4d5LsdWDxgawcjI1nofxiQvGi2V3GwafkfqEOqGOy2UOW2TRPPGjlYhQcYWMQa5fG05YZDfgDy34VCK22YTa2VA011JNjGU2HK8fKyFeClXypbyvG+Gf5N66dub4XR8+TCcTkc3d9OJ6bgfTe//eLgaXQ//eLhRjUrlbKCxem4dy939+HL88f3D3fXw40N96SYPo4/Di+vRlZbGnwDGl5TMkdwms2GOT6Bpa6heTGt5KuWjPhLzZPau1WABiekoD6V8NNtiHj8Rg9iwVHFotuOOURVUQBbD5JHQJwzTRXkxavAxf03X+u2VeqXcubqFshQR6ULib22uvtK4mItUNlS4omzgNS6TuH16ez+aBA7DdI6no5uHu+EfN6OP03bv3f3t1afLaY0+aw2Kta2mZUJAzpdUUR6J2ceWPsNCDM0+owf7ROTGEs+Amp7JjtAbW4OLWYak5ofOXSqmsZf9e6u5Ns5YjaXS5hOZKyQIU6uTV2//DFllgWwd2Rf0LHEARqWdvn5snLbuqifiPBuko9tss5RuMZvQfK7gRLeWuOQLelYLkbRSexhieAMIWMC0XDKwCaEy/FLCi6wW3i2866jBmihR9/huvOnx3g2jQnP3zlIGKE6+SZiMFbmBbGSTvp9cP/lPU/rDUC48PMGyXuk7RrP3mM6UthY18W3mIEjl5eJo8Qzays2KrT/fUWYDkbFsl29SOktt+jOnw5eAwfSDf75hPjTyTpF3irxT5J0i7xR5p8g7Rd4p8k6dvFMdBYcydA7y3GfIG8jOB9Xp8lCKDpM5ldbqHJIhUx6L8k8TeyD/rEA9AUQ+y78KxvSZLes3UN0XZu1Oc4q1D16enyM5zjM7kOcPqq8V/zUiK8QoMbdzmOfmU8M8v8NAzCnLjFskBuvP5sMKTjv3qu/JVBNhEEPA4Xmir7ZvPmbIQzmk6dgi2Zl7PUapgtVf0j5SP1XAXT6bFCGSBsk0B5aiWD3XppSSWapou/HILd0Qp/RaJj9Qqlz1085t/+FXW61UFUY+T2e+Jaq+hxQIIE1UTY/tmbZ+KatWAvC/F1BN/Q4qNPWFIUWDVPMlJWnpHqMabvPqL+OG2FDUJ7TQEbkMIPLvBSx0IOF/m780pC6g0NFOecGUJ8x/mzmoYVcwV+Y1BjOqNqvIOdxg7/3pd6PaiTnC0IugdYe7esfsIx8kQ2KDJEiltfJ//MU8TDW/XM2F6+GrChM9qf1qn8/JzKq2l0kS7TWXqY6OGU3kgPqKN45c/7zTUnfML1dflaTzvGBelCj7HmSf+22LSNd0uQyo1O0beYbjfbZ228Yo15GYnm/Wne5Hl4BXYFRBVAOCVKvHTfzw36tjC8uKiM3v6I4WQ4HXFwyQtCJA9wWRIXOq0UgR6/JBx9WYh/CJ9jMFN4p4Joecq5x35xnYJvTi8lLK0ZNP9++Gl6OH6/H7D9OHLyP5n2SvdO909Lfpw83448Pl7cfp/XAyNSpJIoYsU94l98OPVw+Xt9e39w/T299HHydV4/vr2y8Pkw/Dq9svyjUImBpqZeiRevfF8PL3q/vbu/rH8ognZeIOJcQJBrip6CGhnqEV1HOoguzsRvPbRqsBJ900gQmVIaVr3SfxqPRSkvKQCsBkEKvMe9dFhggw5nXBUK4WISWqcYqo5DuFNdnbeSjCO57NqZxNHc+3pIJ6ya/p6aA5noC5O5RYnh8ymBOsoGdcjpTWXf5XenzK+YMVnNJrNGOaZe4IQ3wz066nzKAOhTovckyBlyRUYx7MGHcZUtc7/ng9/jh6uBhORv/jLw8Xf0xHpRb409317fCqavqk3nADxZKm1WO9SP1coV6tpM0LsdGb6A2vw+E5z+Up6nRjPs7zwXRv4D9dyClb7uHfYanXqtvKKXqBSD0qCwFl63eU6ewunSfxZldRUwWT08DLHpV9jXRPprmKtWjmRfgIn5pNnpustZR1kihp4CufwrHAVdYBX4Svzh1VviR8bD/Loi3aTwRIhBddV33tpF4gCSzDP1UDkN7Ya51ct/NQTnOONWsN+KN3crrDnZnny1NZvFH/x2tr9Kz6S4NGJxzYcrR/BaI0lW8QE972WqzI7hTRc+l/6hfwVP+D6W86qqeI6gS6Z/rhXg3ThpdN7Eo11si81XPtJGs1lWuqm4zxtGr4IsP6yzusMypUf9S/9++mZJaqIXJrzRx49ag6FfSDgoc2nEFjouKVcy5g1psrb16aW43FTLvsljtpSclyScbrV/1dOv2aB5p7Q/Xjgb71A7XJLOYBGot5t8+7/XgPDQujfF2ktsI4GKhns8fyb2PnlX+WXjvy79JyK/9uZmkYX460Y8298nRJVIY9pS2+LcRM2g4naEGUydJzUpPpp48Ptx+v/3i4Ht+Mp8Pp+PajxIsFI/eyrJBKacqfvNrncjJSUNQS7BwtZG40+UNut6RVUwr14dibEIYhs1SZtFdloloCXs4KA+05dDuXnktp1Yx0s3wDlV3aux9KabjcBgZNEA5Ts5LTNyE6ASCU2daqjeUatd8UGq1zKO4RWaiaMOpJRS6o73L1wTJsQD1UYQPmycCvaSwht+KWOhnACJkRMk8DMq3kYM/nyRL40hkMntDzg+prpmEEWCps1ZutiNyyvTqLsqEmVPWzIYCmQU82r31CWkOr9ZQ9Ugoh7VZf+rMfcIV2lJeEkPMUAYa+hfJoDsywB3tYJ8a5qgeGeyq1gGuU0t+yQrcIwOtvZYRV4+Z3BrD9QEurlqXKL5xLf42ysG9zRWrEQzWiQ4tzI0de0SfiaMNU6535+aX98kZf5WbabCyqocpGbfygVINh23TyCt3yiPKxrGq4AtgE7TtvT8386gTC+hWO6rUxTQthE43zSq4zR4koGByTO/2HbNLo2lSUe1dgzMs8ADmDK0QLrccoXTi0DHhVT4tD+Gj+m9IWSi7N9BI76ynxR2RwbRnkrXFveVerLbTub9UWBvgIGREy/H49IdxX9bmQ8B7SuQkNKP8sGcPy+YYSpD03Gy313pcd07oadt2oZE3FmVybOQyTpGAgWVtNX9xUgk6z+q35pmS5FlYmxUZz7U3tseHQamrWO0wC8bLNvE/KzEVe+tCmaeMzpbm50VyrUNt7V9bKvoFCM3MSXis/RT8vmrVfz4Kz1ADZnqhXeyVZP6kZk/l2ifSVTR61IkJCobejIWiX/5cLrWphtLbE73AVwTSC6emBaU1faQhATU8zZ45AokjhBEiVsIxc0lVsqmddE6bBQ+rGxpgJJJyy6rEBcFajDn7xiNYC5h+Q9CZfO23Vdxqsp3Ih1NPXT2bu3RIyzC+Nf6JKeWt9EwolM/vOs3k4Hr4m7vux9r12zZfiojf7h+lpOOWPhtfTDw/TP+6U9d08fvo4VtFmH9RPGhuuGy+K5FE5rerHMomN9WRCd3SLuwN1e+llq5/sk8diacK09INywDUtX27vf7/9NH0YXk7Hn8fTsZq7TIGn0+SZv5QHt55z+7Q8R2I2qPyjLmziLrF0yvXiOLCC9Tw6AijiKZ3mKVUntMifN9eiwgV3yia8z5+vaFKU6X/z5zuKyj/lAswYReEkHgL5HVLBi4iYd+nyPrr+jJUHXXfeoTIzt6LqdeEFVYfkfa6qKJS/No+qfMlcVUugN3VgmWBGHOuWTH/aXaiVUenjuazHtkVaxc/D8fXwYnw9nv7xcD36PLqeNDT4Uvk+vCuHyGtx+/FhrMKerfb70fvxZHr/R1MHpfzfVSiI4jldZx2ro2RGR/c348lEfmIyHU4/TdT185G6tNYIrO16aa2xHlVd3B13dxztc15GagU00FV/I+8gqqYpg+0ZcqJmb+dzGalYyiL2o8G7pskSS5wIljtEFvcq0XsVmqr0GamSR/6uStGWYyf6IxOT1F3fODtW9aLgKjuvCU+TcaAmFtJ9KkkCenbfZbcLWIZ9l2n1kDL2wFwV7VZ7ZHZDRZVioCII0f/xP4kiADrsXerL1aPZBrWUC5n3Aaat9lZkc1YJOdr2I0cqFZMWVGrTtd6fMOaM5//Tnb9z9hhnG3Hie0hkeLgK7ygTJ9ht1Qle42yc6VzUOsLQoYvSM0q7Lz2XjJN+x19L02j9SqWTNG/YCL9vcA11uBE5T1XJl3PgzZRLyYPufwCo22y09QpviS4y0/h92TwiCw1M2yy/xQq//kTjjrTs3zoDftBAbLobHoo6YUOdIqWR1aKZ0AHxoRXiW7EPtZOoTFwC0ymtM0N038o3MWtnxhKd//qkMtRv5hN1JZvbv/1R17MZJip8tk4HJSva0BToV1Rrks2S2mgtrpvQnEpguAMMZLyE2IvJ+OH+djqcjh7GH6ej+8/Da51O53J4N738MHwYTS6H18qZ5eHy9koxiJcgF8kSjHgCMKjSTKm2KVJyiwF4mWK9zIZhNZVTrZtKebVusdJJlU1TyWtqvxOrUQYtcaeJVobws8GY3MBMqZIUzRpflQlDqo4GUadMY+eb0XQ4GU9HDx9Gw6vRvdKXzZBMtaMkaeNd9FGFI9kr+EinKIOsfLxVJyn/ub0f/8foYfTx6u52/HGqgI3zR7i+xJRU5WNlSbBhnjO6ApV30v3oang5VdlubIbFTkZbt9Y5iM1fVZ25yUgz+he3nz5emWo8D5PL2zuVK2f8/uPo6mH8cTIdfrwcPYz+dlcvvNo77Wppt9Rp5Fsb7G6sKV7KWh2G9ZnQBAHcSGX9Zfy3h8no42Q8HX8ePfw++mNSNaq1/OvD5Pbd9GH8cTx9mNyNLjULVd6TikuRbc5d0W3W2ZUY+At6vpUNVzQDShgHXAaXyxkrFeUwXck5p4Y5u2P0eV3xfk6rzqbP7aY7DouUlus2PeamUnYFBFDf0P5h7mW1Wz4xeQFmHE10HVVqwGRWIJyGLr/q9ENPoi9umaq6yg5TVuOogNvoyNICYL0/Q2tKulyT3MYJhjDXuLNcubVmxN8hxoWsM7L+gp5NhjPEpaoaqTK0DCry9VHXTLR6dNESxF34GT3niBmeVvfo4KiqkKNKd3AF1mOSwmcbi+v3KXWJxh3/zsrn1idkh7pIuhougylIxAVN19XDJaWPCE6EYZp1Yw0F+tmQaV0B16BPaDBngM5FqhGpRqQakWpEqhGpRpBquBSDr0ly/nc64yHhSBa1cClHfQFqFZYuT1Rq2GQDoWSd0YJ/Rlyqh8ZWRLLszvN2Cy6rxBpUJVvl/P5KZ+7TOxVNa3+t7DDJ7zxdxv2u0TJM0+Do1leU37s95zICrvxVjRq9nVV9D9WrLiK3nsq/dT0m7ysbXc4LVV96sW48mgnfEnhraqhdFoxTdgcWGo6qFvP9KxhcUrPL/r6+sNZuWQ0SjK0J6KxRZobWL3S7/ki7/ZMKpLXb30PhnabTbs9Rq1bLTIQSH4bax6k1X5nAzAYM7nzN02t/s8ws6wCOKS5r+ctLuvBEILP+dOagj+sGCiCTcX3+F92qA1zKr5fV9JzphYbYczQlAuvrrPfau7nNLvs9skKQvdJFfRDS90LfoBDvGjFRxEQRE0VMdGxM5GAhaaQ6V/HvuyAhz3WU4gESkDcuYt3s3JjAPXC3Wvcox6L2q+1m+9UTJKy/pgzw5bC06zeG8XcIi/LcVUPpxJRU8y7dhMoH7c0qn2Q4n3p9nczXfLsb78cdP/COu5aQjiweu2x2mdijfhimqank22rT6W+8XdBtHWUA4XaLO6i0iVotFbowDddgBt33GGGvbrhbUuJpcT9Vh8dYbQzJhLWtb3IHmpw2F57KvvKsraaJ9hGvqKZp95DeqsehfIpgebvey3wdnna1U/4eGdJr5tUG/G167LepLvWxRofG4r6FNnqqHyX2BlRpeurnRbVUFa9cr6+MUy7vgLlZzWc9SxV41Ph1Yc/IumfqL7XCO5m0L2CEjFcvXr149Y5w9ZxrN5NaM7LYUaq0PCdGRJSwckHp4wRT4dxI2QjTkeXBpVukPtqkOjdtFYiah2GqU2IDrFSibp8QMlkZSSxe2HSZTXCutul6R1nWGi9jOZ2GMmrLaTReCRcAGz1qq8v3QbkbrYbWBz+jFFJpk1FlmJrboGSKte/tpU9d3eLcdLfNvelln3XTyybrprewq4JvM9Bz9auetrxr7BSeH1U9bXzh7XoPhXVyob5We6uAvNPcRjDldrREyLrD/onUp6ME5YCIj/T/b+/dlhtHkkTBX4HppZRTonKq+jJzVDtrRkmUkjO6sEkqa3r3tCmDQJCMEQigcJGSNdZj5yPON+yHnS9Zc/e4I0BSWZnZVdN4kQj3QEQgLh4efq3tdB6KxLiRV1oUKNieh2m9pDZRCCe/LMSVa4x7twTlBC/n+Y9M1ECOWnfPeM2TJg1Ps7ufZxiNLtgFH+Vw/WhWzROVJqgwY2gUXebBOdkVzBrmizwDdYvQIptAGWdBSDx84HBZ85KyDCkFnlsAdn4AI5VRLhGRyAsMoEUa2yvOA6/bJfagfxRZgunHLXSLhihEU9X5JtwnRDlJhCTmkol0q1XFFrwp29Uo4JRlK3eSrsRHPaEO4l3elMEGLDZKQm7ERtQjVqbb7pHHMjeGCoWKhAYA4wu0IUYMqaB5xt3q7jHDj3N0ScyEraSa0IZpClEF+hYaIWcbuEuUarjkdiwYg4UYAhanaYic3MGB9mcS5QJrtlySYKwL7hxMGl1yXod2p1RUGsB7Vorw8lBUKNBX6+BTdMQ6yByQOc0UmOiPfVC6GKsm4vOC5I5QoVPNw9gvqU9ybikKaDFShgA7RvULyV/pUHxm6TnPw0pPGca6KjdWQfug1s+GuCY8dhd1wimchilgncxWuA1nYlb6HHYeJOez0scuKo2d/fpe5NqiJeXgVifHQrLI6jCUjwqrWWQL/5NzQmpBUfsI8FCmKKxy6a3unowkUnKPQx2D1aqm0p8+VN5DFkjzsJqBN8Pyqrtzz8T3THzPxPdMfM/E90x8z8T3THzPxPdMfM/E/7qZeIeBx2iMr+Dex//+eDmaD8c3j+Pb4fVIGmXfjGdzAxAfkQTPyGdRVA9ZJX7mCRq1ELF8kT+ByIUvFr+Sfjl9Atv0/PA+Xbwb3t2NbpS9/dV4dEMRICRcA1CrtGZZxtPKCuEmqprypiKDb2Hejy9H948Xw+mlqYNg+hE+nkDX0+Hk3Z9uHh+mNx1sOVZv/bxgZWI/Us8siGV8Z56vpAu7AlqnMD1n7YqssxOfJ+4rJp+3hpgs1jGjqFeq9zHVfpE/85LOTghHwGjwLJ5jxWv1ivpJIezoJVGBXTpPVBlRTZiwnmTHcshmQ32TsClnCRmpq87+yBdTvmwq9FpJrZlUOjfqcQimHm/ct56t6aHf5muf7e+c8ZhWszNfL9YwV9azOrK2eVM3C07TlXRszH4T9Jvg720TOBugFPEabUaA4zx4H0zHF+8wzSPkfcTUAjMdo8SEYhdxXlnxpvBZeevhwx054hDXNBUxONTVMqN8vUnH1bwUz0JGDZmkTGT4mnJuwQfpiVIAFtxt5rkqU5oK7595iVciCc+reT5Rb3SQhn5k6pDlKtj/vUJAik5017yelHnSOEYeiNFCDevpYp1LTzwD03GiFFjW5z3OVPIuG+iIVQ7jrIZJIl9GeubJ8MKSQP2FLaFe+9u1UC+ICg6Xx+/BYwaW4Xm5NbdzB2RdDDUcbphM3S0pIriWypohNQ8WObchpkUJBbrOjX256r6zcF241Ts1eXWOYecMpF2mciW3CmpfYBXMurriTz0GAfGgWSm+eDC0hsRHXF7VFZ5GIKErjTAOMRaAbsAdjRMytHI8jH6JuSsTT81SCUUmbCujpMf2wjO5ufXWks/2tkrsBUlnLcZ6r1mar97r0KYrvThVrFRnN4Kbo6xT+YN03E42avXRYafJFMUwgequWZrSHEqAYkDko9mEhbUK1YVVD7kCqKk0N1qLRphUMHKLjBNzh/UKVuoLKTrOVt9Y7SYbewL9O+ye62JPZHsi2xPZnsj2RPbzEVmHwPI437xOyZ8kc7im1fuoFDP64lJqwc3zjci42dU2xC2Jq2HKSX2lmlrzWMVnNk9ejWQ3LXEhzTPlhN5VgqTlUl0RKnBfJhDL0UaM4nzTdnUCqEtJEGI0R/BoVBJgv94a4GteX9Iu2tGva74HG+gyiGKcl3ztKxTA9zCLBcOlGCgCCeqVxoZyowfdIR31jwMCNYBxXXBQpDmSDpJlon0l4ed5s+WlMd9A2FWTLkWaGuWRD3VXC2J3gCx92o2JKrKjhPkMp1QHeGLRIoVzVF8EAWpjSIACgxQmSyyAyk3hDYk9eRb4R1GvrXHxpgyLVJrNIZsTnGCzdnWYPtMP+i0Rvk+qi/JMDZqUlSHDmSk64akB849HWHkgOTKf3F6MtpUBfVbA/EAh2oemavpPDbNsllxcpZDuAXqRN0WezXOZ1UQSRoZ01AWV8Vo8c7XAY5bGDUYTcUqRTk8XcghdCwAui97rbdqmoW6lgZ1Eh7b/stT9hYbcJHORza/CZIwwAZDqkqhGm6LeWpWZqPo0a1d5uRBJwnUMgbRN2BR0GyBWEhfaLBtWPiF8iAJTCWnXId2lkNuwCRvYqd1SivDSWf/avZTWSHu2SnfdtwtU1rolNWLH8DbhpaoxfvndTsQ929CzDT3b0LMNPdvQsw0929CzDWG2wdUi8gTPzl8cbkoD3LOxHYeqrlm8HqbpnG8KVFE7WzeEtjcw4VGdHHhPwp0XVOxEp/g5qyjzRdDS3rNuqzq5ojSF5LQ6dKSJCKWCbU3l8OpMt+3gUbuLjkkLagWL2vNWm7PxigSk1uESHU3v/6RXfcnuD0B7Z1rNYFJX/c1CWwUWy6cGr3LsmoOBp+442INAeFtLMA+xIaTwEM9QZ9iCQAwLaq1ND62sL+H/AcXUKbSjqBpm52O8MshU768Kitm8kwqyu+MNmKFDenmTr0S2G7+7AlqPlaR5OwrC+TJJWXZIryaluhiF8UqnQDJupx4vVhjEVB1nD9MblycyUIfd0gsMfnmGthLqeos8TG8cbu49SwUGpZDU0G84iPcNrcGTi0x14xBV2Hvz7Y+x/hjrj7H+GOuPsf4Y++0cY65zd5qvXnV6naf56oLVfJVrr+A0XzlOxfrZOx/SfGU7E6f5aq8j8WXJlvUkr0K2LRaubd3ShVRg79Ey9xhtFjyxjE9AahquDIxl/K5pmCvbfOJtqNUGWbYYQ3LTQ/hlW8LkVa29BrHjonbtXCgWGU2QCHr96q8J2JzYuLapSvidQPGW9Q2dCeHZbOFMxDOUUym3Q3vuYncFaAmSDVlZEyetR3LpJEbTAdYbzSIV1dou95M7gApiRkYbdciHkj/z0mmqCvS4yaxmG/eT9zKa/S7td2m/S39lu9TZoU0F0tPXbNHbreF6IWL2pMyXAp2rE1EVKdtKVQ8ItVVRkYlasLTqIBN/i044Hcj4y6DkKWcVf+WdOMvyJov5xsocYCDaM9aHVxUPFLeXOcjjHVzH0P1meu6eCzKUxGDJefKqbl9xnkDnnkW9vclXZhUAwnE+B4BRasKTtPW0vNEBanV9xWv1Vtd4/2Z67pqgYxqrV/b5cnQ1fLiZP05HlCS+s3N670l1uO6Jr+OUaiWjySVCa1WZ2q8j9WNxPc+tEk2GMA3psLn/b/7BbhaUjKXbWsSvIACXkMNXbDjIZ8pn9DxDVZ2OLU8/LvKMAlVpCNxYxUdMRIyh5oeqbcNeaW5NxfGhhHkyPs8GlG/xbZ7wFLaAOasxq93wbnjz5/n4YvY4HYHTHWSGuxxigjX1KvZTpWezq/OfVWgtB2imQoHfs7ShVG9lrblM/VnQx0kuDI2U8FvOqqZ0qKfEeJJIAwZ+xU0PIysB10BWpoJXtc4GfEnZ0/hyCXbTz/z/oejXGF/C/eaVNxEGBBMs3xNynq8go9uWMg+3egRr0am9MnnKahJl6ScVDAcBtyLJxGpdP9SxCTjhTXRXBp9+7fZr97exdp11K7JF/vEXR+WHXN6WXNiGSBnxpOTPgr9YVmw6nrwu6l8Rw2UCseI1tgrZxWH77SBxBuFeNxGqHhyPI9vTyESKGic69rs9DGgLo+pahT/GBIY3X7BXFtHP2K98xtxzQVCSn3jNXpfkR2a/DE7f7sxhv3QMwzmuKHaFU9ABmVCg5kbgFDAf5ICtLqZW/0A+4BR7bdTUfuC/zsA7g74q86Z45f0d0zHzf81Fdg1vy175R3hViVU2zVN+kEOuXVMA3haEBhAIsn4O45jMsetSWFIFxGF4FEsyiUD4pECVdqw+C1BJTs0mqNipPLXfnvG6lsHTFMiSyppnFbdDAQPV+0MehlKQEP25sJT3zFU3DcY+2N8cEJ9Sb/0LKPRhT7NkX9xd+0PGOhYRiVbbQ+HAjTlwx4KldNayAX1FVqsoMcuMThf18z9UPSqann4IjbRi7WiU1JP8Xrx2B0dKm6Haw4N3cqfLjflg98ladbuZk54A9ASgJwB/PwQgECBkEOepdJJ/bbCQoELOxmz9Z7XlVKwRBfez/KapvYbNs6U0NEBrPxlg5SdT0wg3/5oG22nW5D1C4YJ51QwylFotjMXsamGUzImmuxNKmGYh2yEubpmwh0cCPRWsypUW/LI20tJZ0jxhilLrWVUde4NipVuzQCv7862YFNZq+cn7UicChKO/bLze7k/e2i/3frn/t13urosxmicevrxH7yHQ4Gw+nD/MRiA4RvvGqYqFryWscxE/cc/8tgIhad1lDlw9B9k3qt/14/XsX1EUrbW+CLJmFp9d61aq07fRQKg0tjDewQisWd1UFsA2l8EBRD9XGxD2XSac5SR7zWvqnwgY1wQ+/RoW5RWLuUqqgAB0AnZyayho4G0YaOvRnig7VYaawhAjJz/DbtGa3XH2nOtISaY1qs4KokQAy9eNzF0IbNWHkVn1aNpQXDhqNcR6GemHUFUUUl29lJg1huEvEy2Lx41hPO7w0Y34j6BRltyKNBW6jFp59FBNGBIR7i1CfL5lBdkycbnIytqt68c1l9RA9VD91BNswfS6yiCEVSp+1t/lAobaysefagWn6lBeBOEB1JDUok75BcXOJSJDDXQEL+gpS09ZesrSU5ZfSlm8zAZ0wX2dWxjZNCGPpvaHB1RClDaZkG4+mMrbxV/laZq/YAWVF+KjHfljG0Kgzoxcxgl9nuZxK7/XjlLtEB7274s8y+zrgoYaSy4CWURNfq5tQCSFCu69wRZtScjWtNdK0OVJirQYx+flw/Idywk+wJi3RlbKcfSALGC89JMdJ8F71Anblzi1ugwYr7mTrQMiKBNO/SQqKooKHwkDSdBFvtk0GdEjlAY5gK4pbsuBmgw/xymNYK/PduQA87idpc2qM2tIv7f6vdXvrc+wt5x9FWP8kNftK4o5omQx8HsWa99FCSh47OU6JERAIaBkM4DegQgJbNoYFNa0wXuUA7JvodUX6JeLMOIWq7uWKEU+rlTHjLyERt4IRRAbJn/9NP0ap8lVQvJMvNbwYzgdDx/vp+PrMZhL49N0NLyZj29Hj8PJ5PFydPU4vlSo2fhy9Di6uhpdzB9llp0QanbzcK3gD3fjq/Ho8nE4m41n8+HdXFa3yEvwRhBVzTJlhHHNM176N9VhKdhMJHyE5ogAUG/p/IwUR0DaQ0riRivqljJ3BMy8PKixzbSh4Joiy1s92mnrRcgrkfKHAmz+zW3Nx1gvXTUZxY8maxP7UduwXo/uxqPHh8nN/fDycXbxbnQ7QlPYTPCLNdMxpa5d+66A+Y1XwkPNmtUKPdnJhcS6bQaQ1qtoAI/7xR54GbCJTmp80LGypXm8C5yUOeTZKWV6pnFW1RARO1Fwu0U9MSbEogKRVk8+aSkCxUT37Pz/1Ij4acqLFJUOD9fXo9kclit6EMxkVqcZzxJZmxkPC2jrMdwhOjo5shaRRV3Y7g2AMdUEa691ptd6hZfD2JrKcdICWY1blMcx7Iu9dWkyK9q7bmmtSWp55S89BKi1vWzbGlqWVR5GGQ57ywt5mtYKFzCDZBHMqtYQSpamvXIwtFlGu9WsmA29JUMYyieqvVBv4tNPevFgrLIsaW9ShTE9qfzNhNf5UqxWEJCt1fEGx27OIAo9SSgaM31ycvfYofRHQH8E9EdAfwT0R8DfyRHgkP+CEjoOCohfc/gJgHbaWwh6Q9E4HQ3DkEK7AtY3QQS1gX4rGGYa05AH0OAzYXDS5aIdPyFct8S0BVrmC8K4EBhc/OMA0goT3O6puh02Fe/oI4DNL0vzpB8t1ZWGqQCp2zjlHsrJ1QnQCS+fKuvRx095jLXFVk1VKPIGrNxN13fMaKzfi0pQhCFb2GVWhtYi2V8b+2tA+peEhnNF7Zhf6oXUW5sSFATo32ZSMQejPU2U9cb+YIo9635lB3vV769+f/X767PtL8+/D9XX1WtTOuhYc94SlupwL5+crSOXD1Ir4cRHUygMZegkmzNgO3S/RLiB+CXQiYcvYfO8Zl5bwbUzoQg0wW9RKd7w5bY+w2Dc9ZYlwdre5yKAYHp8aeWY8SucnlkZyGgSiQ0y2GdTfad/Zz//f0fz70ZlYcmK/+Jotn7QWrTwP4eq3aizNtweAgRZP6kgTyyQ0mM2WW1BlYeFKhpwPG6yug1xlRgECRzyodivgfitbgzWsMdmaI0RxrZjtp07SYPiNKhAjqLl60d3veY1jr7So/tO2R7SIw9+aY9OfGKYWJ23ocLWx0nIIdbDhzPadL4YyHBjLxCyPvNeDanrVQd2hLRtqb+cltoKuoAlQzvQqR3qQm2c9ib1MG11GyLI9MrpVQsb0Mg52HbVgfoCldhU0nQVZS+NZRhHdJP+OivSSfPhPVlz85Pcl03mtkK6QP3D+qTXeoz3xLcnvj3x7YlvT3y/PPF1CO8yLzfVL4toA/m4za+AzcweexZ8K3CtmDWLjcAo3v79QSP8Z/xVaytHqwavV2jSht1Geb9V30+6S9p/y9SyV/fZD+cvGU5/KJtX5Na8guLny6Ub+TmQesNF01O3ndemfa/HluxhtwDu3CCi5WuCUBNX2o2k3O5JOyzz/gDKfsBjqVuDhuUnmczzMjixqMAZAJ5kCfo8ngXBODkEVV+2Mi6xXizjqvYmh7wgwSUeykA+VP1eIbLdUY5NTGMMcikLk4M9DRVTGs8mM7Xt3bb9WuvX2pdYa+46Yz99tXRJ5L7kOr8Ns3gNERD1W5nY2OiiwNjyVgELMiwK+Gdxu8OiSCUnbEV1tOM7N4nITW3nLH5KyrwwTxCzJkv85+uSJYKbG5aCW4b65yzL1LnUlZMJDMV/avKaX/p5mmyAUdvQ74s81XcfgvwoEp1B6LxJn4bSn99prEmf6ObyJ9hOMCJZTTvGzh7VXcq5hzbpE/GYdjGX+e4o02ouWOaAxrTBDxXBOxncJKyha+ravhrR86zeprw78VXhXqcg7Wz7yV8ZAHfrVTsVKdB5I1I9iR7O/owwPQ7mHlJIdRkNIomtKnjsgtVF1X2Hpyl+gpV2e5F/dEf0Is0zLhOQ2jTXPis6irgxKBKOi//SiSHBikosUu41Cas98NiaAmtXyPNKx79oH2Xh0BiI616tQfxnlmnIq5Asv87tu7sn9Yjz0iKN5tmjgdK6PzQYPirkFJDVOnF1mzCEqtsxPpcc7ofyt9jwrDI771KgEZGZaQtgb63LPG426JGq1+prJDuJqPMy5VXlis4M3JeUeecNZin+zAnYsroEtbV31imwtixTLtpWZ9pnyuhjzbOEJ+R2LnkskVonDDzNrKxX5tlbOFd5Vl+xjUitNBQAm4mfrequx1f6hwUFm7Jy2wK4juAO7IZt88ZIu4ILtjOqzTX4anetyzbSDbtmn+Xv5rc3ptfqyRuZd5wlziH9jkN05V8kmLNYB/xpvageLzRnokH2zkCgAzBKVkhh734DgLysfzXfWLvqhi14qn5uuY5jitMEp4XpIcFCzz6VDmGsL78R2ZP5ZVUonxxBZvYkLTfcchbQHgz00tTnUUsg2XGa+ShfsAljdpcn3O5CVXu8U6uxXRxYEO83q0KiY9LFvPAoB4BsqnHLCtO/W+ZFCYTE5TxxNkgguVLmLuagMBaWE4Q1R3c1llokLoSR6T6sKXWXIyS3qQoWg01rtlLk+I7speUvb00AyFrB9wlHsu6SegX1Cf09CDbV78KMJv22jy6C2PQKpZo++zm5vHJHOhzCFzIerkpWrK03eWlJoAAgYlZVufshEuh/xyRlW8hG6Ky6SdqswMc1q5nI7FM2gMDbxG6sN+4Yf5+X9pqb5GlqflntySd79BBmja959slHCGN+OT1KU6cJMkwz/WiJDVoRwXaJFIgTs1l3BO/a96EC7VZ37nwP2b5ahAp4nfQ3uQMaZtULL61hdLDBe4hTIngZcUp4NxIHF7yWTHnaoaaZisXCvc21hEvTJpP27UgdJc4Z9a4irjkQ3qclQ6pg5TOYLYHtO2xUtfsknMKNapjLf+DJ6q6OcBE3zWlHEc9Q0qI3szUrrJNJP9pjBlRZTqwByHk0gHdw7/WBt6x84smwUvms2xj5aBDSUsuuZdKUK54A21pmLE23BjPlGdvYRecly6olL0sb+JAlfscesqLdzkOZOgfJ7InXsUVzIR2s92SRpNmGlTVeWV3Ox8AtmK0/nBW5SPWioQc7FLvi6GY1SKJcAk+w+UsX2Kf8hGhDrdnG37ZIaQ4STfeb5jK9iXrkH2v3yTtmAWQ/rpvNIjNWgvM8ttLYkXO2I+dwYSHf8CDLTzj3vhPQi7oFArX7BdptBMjmPsHWXqEW+BvRNRXZrEuSOCdB5CizcO9FwnPrpxlbnrrrhKfOUlh0ifYkLvytsSMv0QC/WOJIEjTAL9YSi/sFUoffloB2fzvE4e2CVZBomigBpjNNYDFosN/NV5kO9TL1Xqbey9R7mXovU+9l6r1MvZep9zL1Xqbey9R7mXovU+9l6r1MvZep9zL1Xqbey9R7mXovU+9l6r1Mfb9HWMKq9SJnZTKoeN0Ur/GKiJtKzi3+ntW8sH9fuCgdEA+9h9S7YSH/r6FTbijqNasHL3xxeE8gdhwxYRCEcc2sgGvWk4mWYwEhLIcqZwVyXLNahhiEnz/yhVIY2I8XMvTkmtVlnm+sn6rWa+60A8w9emvhRdIuqzFWPvf5FtkeCOlhddiKTpjD7clqXQYUsiCx23m5Lw0eduCa1fP8ibup4iv3adLKHn8pSh7XVlWi8kYqtb/Rf5YVblj5pGBTjoEJbdBDVhKwcsegK4Z5v3D6hXPAwgnl/RgsOU8GMM28PHz93C6fxzGKBm6Xz1Jcdbt8vstrO+j942PJK17fLp+neYP+W3OZvBb6PITgkvoL5E88wOxqqt1pS34j3Xe6nln4QVGqkJ3Vq7ZvluGVEBOh2A1OTH1u9Fu70DwvROwEnG1qE0z27n4+vhpfDCFM7ONkOroaTUd3F6PZ4/lwBoF5O5rzMNjGJV+KTMjxNGXl9dUAoG3ox5THogAxtNrKAJdH7UNR8fKgr014Kp5BEnW+xV6ojCLdHV+Fxke6AZqCVyDskB3EDXypGrrDhHUC1PhPyGZu9IBe4d4200zPsE3dLgBEt9vs/taOPdEvrH5hfY6F5Syqklc1a0r2qrSOIaMCVw+DifusQHM134TCEmSN+bUvbIEVLRN/BnyR/cAGfshskzQpa0LwUJRQEuaFUxHbuaLkQzvMgRwY5B7we5FroG9xYjP/pLumHnQoy5/sTuz1Te/n9Dc/p+4FoNwMalY9vXI2W3Ya+B1zqMj7Zu3tD0jzS9ltEJsscStey18/6eq0CAExHbeY3+BHeLsK+NBXdH+KL0A+ATJZsfPCyiWFNfrRj0woYfptqY5llUZnSQD1jTHFA6N+qk+eWsF09e+frPZ1gAKVTKCCgvRTZkHzv6GL7vQj5IyQG4U7L+tlnor8VRsAb8YmQ3wgVHWZ/weP6wBZtLB+FGsYHmvQJqprToJ5GyHrCUMlNUzdrqqoy1b/XBBGYTYtP0NkrWVXCPN+8A4ePGfgcgyrPSjKfIUSldcMH0RUp/fcEfjXXGSdCJ5YIhut/O8EyDi9E54lJk65QSsGH7Xb2KLz4KZYNvCrRivmCWCZIEpJtm4iGKFGDpeFWunBkPkpzVPBtqC7kHkufvLr1zA1B+El3s/Ur3SmnFlK8y1L6+0rsijQCxBeSMbfBnknAS+VjiIAsj5Iou6fQe2uTj4JdMZawqb8heo0oLlQcfZNf+zWDcJUCNTGqbFygVDn/stIP2C7B8wZrBpWJ9zfVAr6V5MBK329u1ve8TSxkE7ceBnvU+GUt0pov1nFWmyZxrQArv+LhdB8GaaJcKsgJazXb8Wl2YC0o/uGi7PGExM98BJ4ObuORgXoVLCdnG4/T7/KeXIVwHn2CVPzS3y9gn5YXW5ROzyYpEZJ9v+CbQomVlnVcjzqKNdyPuos5zsg+UU87yNpPeGXmrNVdb69EmntxdU97JUOX6ndr4Rdp0LvvKJHr+jJa3pw2Cge2tFDe3lwF3XBfSsg4EdGha5zltrOQ+1KWv5FgXZcFyMQWG9veV2SYPsr+x0R5zHctGKwv8ILx//EMDRob+oXCpqc+oU8q1MfTXRSWgfurgkW7W2eiKXYVzJozdpaYG0b3nARe7F9CRekAx2J8pilaOytHWv87sp16fvfdBbznHh27o8g/jPEmW+7wpBPRHiZhl0fmrQWam+iNkDd3HgCCjue0I7Zb0O+m6h1FTk8SLyz2JUseAXsk36ozC+11m2rxvCwhHEBo8gdU7joPpEdI8XQrtxbQJ2QOwtWmmkLfOWqvf7CUEOcfwrOl2bWAtXtvjL2nFvPufWcW8+59Zxbz7n1nFvPufWc26+Uc3O4tpVY1oMYpd5fN7iS8/BO7/7halXylR1XyQCs0EoG+G/C8a61MLQLqi44/dv56ixmKXN2k73hrFhNnUxnJTJeVbN4zZNGx6/pyB8idIge3EdOfBMH1HZPv4C1ntWTPBXx1soydy2WNQQAqtop6TSqnZvOQrVj0ChkIFmdQgX4D4P66kFpZhw8CtqQgyLZgIhcVDXqilpL08HaqySAMKFxSs4qPR7nLAXZvMvzhMt48Ww6yuyLk0POfMGZauE+Ne3fJwSy+RrMx1WTLkWa6gXcyhkXLuAyE/lFnpeJyFitdus1r4PD6cCdSiTUfQoypgrp8ZoKTAs5AMeYOUCLrWlRyCAPqbf8sChcp/NNYbkw62JtFtNF2bvhusyb4nyLgUGczfCpnFUWp03CbyEMRbbCal36Ns72b7KOMs4MdpbxTY70t59v3QTfrfApO0ruqHS0YSLdVZcs4FQBbDX/kiFRgDtNRbZq1G20IywKr2qetIhnC2zMloMo75xvlXFWVhe2deZTQQJbkWta4J0vOo1i8VbLKgiMWdaGdXplLBigSublV4VfKfOCl7XmM8wzTdj+e0SYafBRzr0BKm5Nvg+1G0LceRM/cRvQKuEMve2oEQzIYRcmrq7VpzazR+TV0eUTKDwMLZxroZ4lCoW71Yux4WG9iltYv+pPiv0B8TVSq8zXjbehF59FeVyE5/r3KwzU4YbTQGr5Lm/KCS9FrmNc5CUMayLq3WfrFwyz0RRwd+PJDQNqrTb6XGy43VMcmtQa7XkpVitedvEGV2n+Ys3dp4eN+H1r5flENAyVW8iiyruIr0XHW4DqoDAVsXM50pd6i59LXBaaLvLWU7qLBWjjcbOrC7/dcOWSGulb7NCI14ZX7gUBvSCgFwT0goBeENALAnpBQC8I6AUBvSCgFwT0goBeENALAnpBwH9fQYAjBKhEzQcbdMM/WAhwzTNwoucPBfAFD6VFsgIoy9+TcLcYM2yyzutcF7PQNmy3/elvqO9u/AURrwcxBXce0FF/+Adcjq6GDzfzx9vhvz8+TG7uh5eP53+ej2YQXUnEeUVdULFBbZC0mLVAyhe4tEB0WnRFjvit9NwLMVqzV4m48N6heVJ4sgUVGLVaRzEZZxDKSb0RsLKSmGonqh3nt10jWAiZjgmnXW0jpKrUoTCsEo1T8X7z7n7YDhg2Z8gWUuo3qPM8/ZpiVeWjCXHVnBFr4ewhGyYJAOe5KuK/6mO9l3cJc4MJ9SjQ506g2wUf5xhcd9v9E0cRrDKE9s24DR8KASVbr/vosBV4Z+s+2n2dFpBiD1ry5EmZL50MSgox5Svh5pf7agLozSbPgvMdkk13z8yuWXmNDPIrGzMzkfLE7buNcWd7pywxOCoO3DNz1kFtKcNd1/udxbzq3CuYKzP7NHndDQZVkO7jrcxDll+8J9/q8Ji3BVvuiKonSTDIOtkVeqkiQWmrQnrSVgWe8dobvPDrQQGr/pi25NRF2TeUTrkdML3hgQtgnXhILaGdfTqH9C6HCY12EMtdhNLg3GUXHEIf3dGKQraiLFg/w8vRRbV5jl0hHO6XS4wzZkmpWl9L0pfOUzqEbr8O8Ksy3wT3eVeR3Sb9rXXdBfezv+ykJQeJlw6QAkHQoQ5J0D5Jkb+eXiO1KTmvHe7mU6UoDxnbwdwEsG1+1mMIAjlFvBIBV4lWie5mJHuxoxlZYkczukR3M8Ss7GiFCuxoRBXobkMxPjsqMUXa1Ti8SygPjItvV+DuqB08YSc/yFzenSAuS26i51uQRYvF1QIrC7Di9qZP7VNXXYtsgIxoX7YolQb6tIfiL7bpSxNalC24XEUtOE18C2yxuU17fjTU6sarbGX6i11/sesvdv3Frr/Y9Re7/mLXX+z6i11/sesvdv3Frr/Y/bYudi0F5yC2grl/vWvdBatZmq8opbmzXXykf3PzkN7F7WJTddSpEK36DMKrC5g+E+o+XG2ojN9CuIzfWMmWFD+/oyEP32qkhfcasLmkcBPtEn4joRJeM9JELdyCg/Qr95BevfJMm/ByA8bPPi/TUcKr5KFMxc88CXfOQfqVe8hucUGa5i8cp9zqiIuDmWoji8LtUDDU27As2fYyj5uN2UwAmomf+dRwrgSrS80RDME2bq9w4ZosBaz0DpDu8Xw7y1hRrfO6HRjs0DfmPGNZDclH2oZrB9bjyyLarxzQO88Hh6Vxk7Jaja55nrAaDCptYUBAvgB0KCRz2OI12sVsfD8k1acLm+B6OCe9HIkdktDjfQHWV/ozfLD6X7luU1RInnQ+6H4ZKmzZibsw/GO/gYfysCiswVeTGZCNdBVs+2C5ExoY6K5SoRBxoVL7mtxbz/4qdo1EZ8l2peMs4R8DVUh4+4VbsQIjveSwnuws7YiwnC6HYComnCXlcvF4pepEj55FXLfwLRIKrme12HD3SbJp/gJV6FuGP0MYkfkYlVe9gzsJ4gNeacEzvIVrv7hv7XeWCjS0d+2HigUOzu5iexs99EP3VrS/ivA631MyUOkuJi1cJNTgTlaNyuzhxboLtavqZrqC+HYF3YxREO9WUHDwXXIPqEtelNy+Q17yqhaZDXBYnNeExNw5Q2HkhInSJnM7qmvTnCAzd1nmRZs6W1B7jJTJ+hdyBs2aDfkJqudnUeYZDK7HTYQwhpWw1BA/NSx1JzSoUSh4KULNaIRbh1Q3eOcIQJtSjhRSKetnm3UisNsgwmj6WoA2N0qUEI6r9ywVCQviaZgtQCUZRhNg0yEqzipsYVvBOXcQN8yH3HUJaiN3v0rYvWscknZ1t9jZ3qe6uJqMdbhZrJ9BBQdiguFrEWOtGXy+ERuhnXAB8Kcmr1kLGhTWUzIyb3nd8BWLtxd5qhbyjXji7tIGxc/wmYkUc3pB9bytGWoX8L1ivYOqpXXadR0K4v0GZMutiru6HOwpOjldszTV2omwxoe4SwqDPM1Tr/oQuqXzmaqE0W09kPMNdw04rVj34/sFpCa0lgbcNm9E9uQ+BY6QvZolB/b+ewWt43WITQ4g2gxbdyFH7dQuta8WrwJ/31sAm+DZpJR++5fbLtpKcKcuFGJ6HrwWzPAAPtTRfvjI6iAsnlp296hcU6/zUvysqVOgLo8EEPD+JVPaTwKgj47/BS3H5E55mbe6SQ22RwzWXcjTlmGUBPcJhcSWNk06aroLViradqyzjhIBbZ1Hj0DCHmTTDym+Uxk4FfH6gpy2DGCuzUBmApxRvTn1gJbgI4Txb5czka1SjsnI2xOL8QW0I9AsbZTaTn6NP+ZW2YCWr7Vt2/C9J3z7lVmDJNL+JIjFjCI8ewOTkPGGZ6t6bRFY+brz4JjezJ1fhtUKwaxOzPX1HmRULum1Ieq/9apxj9p1he4sFYrAvY8kh4rtraeriq4t31GiXcnuCva83LXYurCBFvZRJfIapR9wn7zP0q3DVndL79+LhMu9/oiyb/n7PM9TzuTrj5d61eLPDsEQ4tpSIQK3REKPxFvIh3u16llY60OY4FjGAelfB1jxLbGR9ukU4a0Kki5pTwdOdzRRt1XjQuhUvPKuEzKhrQNIA3ytBHvUXEJNmSLIMhUdrJBW1QbHtgwdII5j416waqXxN4uGBVt+lY1tr47t1bG9OrZXx/bq2F4d26tje3Vsr47t1bG9OrZXx/bq2F4d26tje3Vsr47t1bG9OrZXx/bq2F4d26tje3Vsr47t1bG9OrZXx/bq2M+hjnVUsRyEAIMNBPBHCv+1NLHk8RzM+t7COUovQkomZljXLF5bOqmmzjfk1iwd+fPSOYA7lFABJYudql49gTbLMEYKGrwdKmTwgqiRoqpLsWg6C1A2JUtTouAwazCoz5bsJVjDfSk006xgE9ZUXeV14oUwWufgcBJmGCyQoa53lX93F7pmtahqEVddcPQzF5rZVQXmsPKzwBCkIn7SAY6KvOJGTyX91enhmZe1tXLy2//YpF7CtI4yjqojL7aQAUGlx5jnlJvCqSdcxK2myWr1aYG8bRaqrWgxPQQuNbi7dhdsV7mjkl2vQbXqMwOvuujw6/ZIdVThFmlXE9DQ7al1R40deewsJZDhEi95DFRWPZgDv3I1NoGx9VGOWNsQDA8AEY68DfSagFsBetKNwRpQV+vVYPfGGfrPJlSuarHB5UuEGM0P7MELF3Ck3rLElUhrXnZWYKOd19uHxzWvVXO+jNLAPYHojoOqXceOol61atXcsqIQ2cqvqoXueN0XGwfXqQP3K5L0tvWChnsvyC2C+AxEJS3ZdLuAV8UNW/C09Z6CeoUnKYv5OocwXv/Gt23Zso/2Xm/HXcP0TKGEcG2k9+pDBVeLnd0JFrGrgXxN53mjWZN39Sb9ZcJwQm+p69LSyM2bFy7hCOKzmq90nDSYCPUzS0S2AmmnT7NAuqtPuJY8OHwsehhfuKxZlnZ9BtWq0Eb5NZpOt16zUa2wd+YeeJPnT02xa7d2lHBE0azYJefOMy6vo/cFz/ZJkY3EuKm45NT8PrVwrhgYmEolb9Vr1eG+23DQEnbh/AvyJGUiM/KbScmfBX8J0qYWzg1bh0hXckxsb5AAeji3IR/nNOQmF5OPIluZbTjlcZ7FAsV6rdBfbaQrbSRm235ytviUV6H4WTbYk17yLJnnd2i/lfGy8qTCPtqvtYX2Rb/pMx/GdcNSYN1CNKW70G4xK2+qMC/lYZwAd+o2Yuf1kwMdSvlnUH5avjmvarD6a6XzM4jQK63cgAAM1hHKBOglLLRAwevgLF/W9gExaxZVXIoFRfsy9Nhtv7OQ3R9z/ZLPec1Sn67rQHnBaQpgHQGdQidu9DbiJQJi1CD74aPassag/LHzYA/i2xXMRR0MYCfh7guVe8vcyRoeULpduRXfMFCZg+1+WbcwTnZU4pSyK5MCdg5MCmg73WENYEMvAyr4HiGcV3gplqHsuYSgGWwn5Axg7Ze1vJekoVqqaUmOVlxmpbLkRivDNcsnI5pYeawiJLEKcVlSZin/GU5FApy9V7hnNkDo+INfdCCZX1bPSn1K0INH3AkYJNaIaiqu/luVVpKgWRH+9Mc37e10dHL07K8GCyb15s9mel/rh9ILP3vhZy/87IWfvfCzF372ws9e+NkLP3vhZy/87IWfvfCzF372ws9e+NkLP3vhZy/87IWf/x2En47gk8k77QBFlvBJX0v0KRu+oHaDQC+Bm4cNUnivTCBNW7CEnfDrYOGo3fNXSRk+v4tt+DrufWnrSt3Cfw7nySwu0eVoZ+s7SrmefAGWfp8DnJ8kbmdHOkoclBeunX9tZ1OznSO+amOB8HWNk8rqFIBXwZoURQjrP3oy0JOBngz8vZEBhwR8deXnoRtMRhpR3Zuz1R50KE6Jgw4EO7Hw77/fU//77/e0AAV+fQmPr1jMF3n+NBEflQiSxPuSEuT5KuVDlQpZPmYs3Zr7qweUafnAI9PGz9nqlmVs5dZsoK3XgK0dbRYqv7Lc7r84WbE9JW2pp4NtSTA9rCtwNKg2ZMJKtrFdzoPEq0U15mwVVKDP2SqoO5+zVfDgm4unuTPFdBvt3B4htP2xf2bgD3fLwfWW6dudNwRJYAfIW5gzjni/8dt7ralGT6d6OtXTqZ5O/crolHud0uLIV16kxj4teh3Vsn9f5NlSrJqyFcA1dAXLM6jSWg0EnJT5s0jgBpbXzO4FIIPAGa9hvCob9gDratZsNkwx5AQ38RVa3fNQ+KfVO1PI6kVCMTFYasGKAsOY8sQZpXB4WwO1bcaGVcVrE8jWnhH16GxrkEdLGz2dtNgxzPOfndnaibQ7a0qE9qRBB7emQdOX+itAo/37t0Z4k63h4Su5RofnvQvdmnuztwK3eg95wIUeVFO0LtpwvDhZdf4o6jWGMnHJ9O6iraDAu4r6MYZp5qzCrdoCJcKV2GNxMR92ijMSE1nG3i+AmGWiKHjthd91S0ng6GMBYnCRZ9dl3hTG8s9adm67NqplL2ij9hn8KcO1cbLX5M8uuqvanRUFw+3CfL6iW3vK720gFIHYLbG/0VAzk5KLrKohmFqys7VwwUCjXQXbbSfn22FRjJP2+dFlhBiSAxHGkgZZAF1+ndvU27Vo5Cnb2kvc33ABJrvru6RRox2GyArIurPKnXMlw6jun6tdBUOBWQ+YKyo5q1l6eL07S7uWnhue2WFNXxuHVZ/TFCbVNUUhomuVaejwt4lEXlIgwNaH7CvrmEuiAXvKq8oNNGfgflA2RzpcCtu63zxXX/wuNvpYgyoyoRCj7csY/UYTpRl3w6YiBqLu+OyXqqapG4yIw1FMSWsVxatKMp1BBEuu2NOiqaX9l00cPRvNQ17x5N+HveJaK9I7B+y33UWDPTlkW0ipPXI5kgkPSfVdvF/BalXyFSwBpK/I/XkGr4EirWZCRTqtfOUdIV7zDes28HVLdVbWXcHOl55FFYiH2y6xq3pVwmvmvtx/8u4q9jn0LjXfuFv4lpcrbp9fCLh/5mUpEme1AR86bTKIPP+el60xeNV7e9U30EkMQ0hBqywyFMJM2DbNmf2hMjzre57m9HFdPPLugnY/79iGVwWLuUwWIKG5MleFX3LF3CccSbdLzhXUJ+Y2WaO7lumDOX3um7po6qEbm1XGw5yImFVV7oUpJWArnmfKdFTQyo4RGiQsMMqmD3YZ+/6rBAFdN1F5sO5a+F1FWjo2a36cXeojAwq8rpn1sR33uO5iO9vqur9hOeIl7bsXgr1hCDTQLtGqOzyj1VVe+rl89hdvd2BP8UN7c3DFfpW50eQ6gqYpGj1tRO09DttBYm2tbPksYo7rGCiUMXhFOEWt1bD6PSsF8C6VXSkQJcllGYBkrwwAnBBaQBQkJsNKMRRtjHw0CI9XJVAJOUw+QkBKlqZbg5nyjG3somh+uORlaQMfssTv2ENWtNt5KFOHBHpBX1N3rGc1pHZySRPB5i9dYJ9mEcKHaibPokTzUqy0xF4+dFEliXbFVBLYvlRKRFA6Fcb5oiliqX0hnw8NWMF20UMZWdWlBDtQobCsu+itDLy6n4/dVTAUyvUAHvahWJUs4VoSBS6HdJvD+O2XooINmASRo8zCKZNX09D5duzG1A0XCRrO+kVCVrcdg9RG72khWHtLrspTdxPx1Nkni50SRVmgJSQEi11HrKZNeHeCXLmUiQ7bWqHxfqmWLhVeLVpfEwC120t2yCvQrOaQa55VcEdNrauVhLZvQsrs2Xu9dZEgeMe1wNgltxE/eZxIAOQshZ92HL970HTsawtlpxtNB5lqdhADy4J5DxD24WuNBHoFXK+A6xVwvQKuV8D1CrheAdcr4HoFXK+A6xVwvQKuV8D1CrheAdcr4HoFXK+A6xVwvQKuV8D1CrheAdcr4HoFXK+A6xVwn66Ac5RvL3n5tEzzl1eq3ihuEoSItFQwXmTzQITyMjG/DLsBT9WNcCWfP8qOBYSiBtUWrQVf81HeTTT4jgP3w2kqTNsDVGNa3p8Wxg1CuYJQdO386nbIjDXTYPhpXUHg0Ro7P5BGuDs+yo3VVzdFcEQ8jPOSzfPQqRaswkfZdSio+yQ/NXYmXpMwC7Ay8yXdRPUH6s1lFXiVhrrfJP0m6TfJjlNkIVII1Teo2cevFowqbJGArJ6Su32yKpuqGX3km6JWlbW12MFSLZVzRylf7Uy79pZlDUvn7KNkuAKq83C5tt68q5zfsNszxwagSZ/8Cny8lB3s7093Qb9DO0o6TSvGft80dZRr9bCznKNsbdHr4DgHCHJgJA9I1fCFlLR8T5e7inxqBJKvEj+NJs4JM0wgNKoYJy5ZCGnrrnm9c1iC+C+iiKB4Ibs2VUcJN6qIiw5Dg+ZQfqGgUZRfyLN98tFBS6fWJ7TtlMJFbHIQVJrskijvHtquIjtDervHu6Ql7pKjAXAXXkBy5BYI8AZ+gbaUKjzzYVyggR2LfNF1pCnpSvjckdgOGquZl0C/kyApImYmAE1D20Jd10OIJjCkGhxo4FU3h54x6hmjnjHqGaOeMeoZo54x6hmjv1fGyGGKstzs+FeKVCGBxeU2YxsRox2lL1Rt49rn0pplGU8rJ82TAhrC1K7Jhtwvg8kELYobp00CKhxKo1Hp/Fftem/zhUyYZKy6TCasO2uwLMgWzb2dFerAHVMtRDiDQKDA6+6b9jo0yY5CCZCs93B6t3vD2Per4O9wFTgroOL5q+a9NYn/xrcvuVKXQJonMEo0w2+0Bk4ngaeY8bwVwLWNDn2igw6kC9tRs4uCiqCv1vJxy4Vad1EHVBHqISTbiTGV4Y6++oWCvWkXcrUkOdkl60cZsJX0JJbVxixtrAxzFMC1bI23AbYBfk9ee1Hv12K/Fv9Ga9FZh3G+IWeVgxfj+c399ePF/e3t6G4+exxOJo/jy6OTo+vp/cNkFkD8QulSklxQF6ecxS2zrRDanoawTjyL13lpxnyYCcfvtyj0D4zobZW0IOA5464/X9duntEuznGTTURuVdvU67w8Z8mKV22IGbZzFj8lZV6Yp1WZN1niP1+XDBiA2oePNzok+TlwHuVuuVyax08/NXltkZXzNF+pAVda4fM8f3Iydp7npb4y0u+LPNVCD4L8KJJ6XflesLLqluTIwXY42WqsL8aipMr2GmmLpgJlWs0Ey/iNvRNJ51dYuFblDs6vFKLMl8qIS7JsrdpDhVrNhAu123tWnTnfkq9YoLlWmUBrgTJ+Yyo/bMeguehWEz7aqx1lJSCgsVZnU9e2RIieZ/U25VWnjUzhSpHAOKb95G9IgDv18jTFZ8X98/hpkX90uwee3LjzbFCasqISi5T7ZVObjunHVkes7SdHynkgahMAkbSstiWIEg/d1NvAw9g3HAfm2K0HUa7gSBUJycUkzjHmd2HB8u9EkvAsAAqWJvv/AChcWm4u7wXju2BDgjV4bgU+NPiOJ+vzSJTrme2RL8vaS++fvCljruem2T0zIGpzAA/Zpj1kChisIiiLlLiACNLBOEETKPmwI3SWa8td3haI/jqLGz5YNtHO5KYwXgAEB9P2lA9RNgcT0FEE6dnXVE1cNFWdb3R2kEse53b4E/Ps8UC098ypwd23CDkGaWsAExqPHYf7Ja8oaSr9rp0LT8s5XaCPnCVqMQCbSF/mcYNL2xDqV+lXHH7xS6hbsrpkWcw9plWBR8slj23NjNWZQDodob4Rfl068BlSAv/Zm+6rPKuv2EakW+vlPKtn4meruuvxlf5hQcHovNy2AK73rwO7Ydu8MSqg0HqxwZ5JqYTP1yVnie9j7CA7alRIp16H1343v70xH6SevEF7x1niMMzvuFitVQ0dTGIng/ipmi5zF8Cf1ovq8UJfNTTI3ikIdAAZ+b6pLRSG0pLuoBDhwh2FlA4GMjlnq1Yh5axwweI1DwKveX2+9bR/5pc3a3gZN0Thhm25Ipa0LIG9M6NIsNCzz52FMNbsyBzO8pdVoXxyEkZlTxPKXe2Ws4D2hAE3qU6u860+/FvHTLhcy8y6XaSlJw0V8e24UUk8yavwQRwsYTMCUADm6i5P+KWjxrWk3zd5XngUFEA29QSpufHTZ4UrtQE2MLRNHbjrZ58I7fSf2Q7/mbtvJSDAene66lvxBPbdFPfeEvffEO90zjM1xFYfAWTtknsOB6L8XZivpt/2AU4Qm8Dfg5zAv71NLq/ciZjojQK/NLBkq5IVa1sgWnLNp0kQLzeisniEScq2CxY/OSM2SZuVyJC9FJnNQAQQKNXYjfXGa5ILoGb2wpvkaWp+We3JJ3uMEGaNonn2qUwIY345PUpTp4lSxM5pteNGvus2TlYAoS3tYNr6/zBv3WFUMFU548hpfJfssKOEKzUuUkGuHG3E1tx+dtybOowUpmKxcKUOUxGvnbvzjCL2SD41KDpes8KicfrRrnb2xOvY2gezNK+9J2v9zDasrFH84J5mBm7BXMfzXKS6l/RgFa0VJ+F0DX/b0sI5eA67LSPIeuQfa/fJozgAsh/XzWaRmSvhPI/N6w/Tsf6hDD/wrhpa2x6mberh0BYHFDDs2FGPzwNVFve/q4RmgKzNLEO+8KT76mWKyNrGSQciyIy9FwnPrZ9mdPERtSWNVTyvLcd+1hLfg3mKL2Ne+DJeCQsIZCXGYpYlJHSsaVRLSikxLjkD2xhW81VeCjKUsQRYH2sLQj/lyUlOxASyBAXa0MaSqGuY/+zzO9oYxzyveB16oBvL0cnR2hkRsM2xGq4kqM2dSUSL4To6ObJ2AzyFx7fwR/Anm6KDDospelaGyDHY/2RuS4232V5EsuL1qxWwveKrV3z1iq9e8dUrvnrFV6/46hVfveKrV3z1iq9e8dUrvnrFV6/46hVfveKrV3z1iq9e8dUrvnrFV6/46hVfveKrV3z95hRffz3xdFv/ecQ083f2n0cbFIWAdusv0I+VqGrgPGZNuWQxl3AQLpD7rSi51pmJHP9VxWZS5kkTk47snVSxXeSldVEHDRzLkjIXCbwDocVTfskLfOUszks+KClFyYA5LxWleGbxFl4iRp6yfJz9v+YzzqKbvK4Fj1iWRFPxzKMS4geUUZ5FCYf0AYiJ8xQyIEVZXq9FtvohYtEHmukP0cP0JhJVtITzgidRKp7gnW2U12teRvfzYcQgw+QpDWjGeVLd4ZiggO7orC4bDl9YFI8CzjlnYGFNHnWNLo6iGZuToxe+OOoc8h2jURQDaPosglVfRXmWbqN6LaqIFcU3VZS/ZNECOht9i9+zkbxzdPxMtO5EorNms+AlPGVJyiORnEQlTzmEN01OooqXzzzKMeD/m2hZ5ptIZIOizGNeVRENZxX9n//1v6MsV4Mv5G2cl9UJgJuKlxG0faLmQs0NT6K8jECaU21EXfPkNLqD8mzFo6ouoeTbqKQxSQYlZ1WeRcPJGIrVPBJ1lPBULHA3ptsoyXkV3d3PI1DhVjwaX14N3w7vLqf348vH8eVb2Ljp2/vZQA7BWcQSkE7g1Lc6H615yaOXvEmTiGhTxKKlyFa8LEqRwV4esCwZ1CWLQSkYycmKlnleYwmajzJ/oZ5leR3F+TMMdpVH9ZrV0YKnebaqIpFFLKp4weBLIr2Bt9GLqNeRqGk+Ex6njA6kzpW5ZGmFSxPUro8lyC4Tb3nGIDxLkcTDjxmlhSRaau4J4GPaVAQ1RYBCzvjKpqQSCY8Fa/B8L4kJMJWR62qzAWRVM+Ql8b+puSK+Cf5ZwGZRxaVY8Bv+jF1+YXW8vqNsffh7JmuTD3nxmXaeJHa4Fme4FKGO/zx64tujs6O72a2Iy7xY5xnH8PKXHPqpbn1Vs1rxCrQjZ0dTnIII54Omc5s3ZbTR758e/fUvJzupKryKxHHD4q/cLbyYp2ZY4nxzyooi5acVj5tS1NtT2jinWNNAQCh/SR/dI6CwbqBIzRFzasCn09HF/fTycfhwOb7fdxZYq/ssGr7HIaJP4mX0NkIJhHo+jYbUWITbJbLbiY4TuLqUeVOdRPJEenMa0aswuhEDIlACdcoikdWwcTnQ2KhiWbLIP0bHS5HyCFZqDbv3zQ+ayqWcPfMKX5DUpckguaCpgmdJFYn954z1uY8Lc9v9LOf5V1hL0csaxojhUTDAjc+TqKJtDgcxcEDPcsnBqTYBwgKdexibizvwtWb2cYX0u8bdNSehElf30xGYLN1dPs5G0/fji9Gh5R5vxxfT+8m7+7uOVyb3s/nj3f18fDW+GM7H93czoKjLvOQ0ZTKdE8Swwf6bgYJyFWFpLiBh0tHZkchPldHWKbCJp9bWvvLrPepo6+jMbumvh9MSa3OdEUsVWrFVtGHbCK49ImvU4jZv8uSHSNzP4FW51XG5mAIRMCLIoyrChEWZvWPMd0VymGi9sagA5qWCS0dkBzjaR0MWrIzzhD9WMZlDfVnaccE2vGR7dtNDxZOoziPoUvSnaQT9q3BcZGerU5q8V22Ii+HtaDrEdcgZ5DR11pd6Yc3K5IWV/DTGnkqmBfhMxUPtG86K//73HmfFmnp9k69E9l4wDNQ0YVUlY7bYuPu6sCGQE0Zl9DNwkkrCwy2XP6ZyjvRjxWuvCc22wYOMKKdef89LiM+EjSOJErwy8UotYAtAIgkLoGUHCnCNCRXVk8yEoB6pH7Bbm0yZYzznT/zz8mo7DoNzmq1X3EoX5g2LdOh7C4h+FFX7z6OaaM7dbEJFL/xikC8LLURTkYHJCK6ikyN1dZBLDmQIJdxcsD/dtU2o1LAoruR4MrgsQGcP6AsuTGks+uV79JeTI7j6zdiS11scLClYAjox4WUFRSNBwuJEVke0oYzGl3iroMqPzo6kLW20YRlb4fwfwScfViN+N9z45IfvrhZXpnNO0Io4i0CCDNydyCT/BiQejolvqohjG8dAwgq5L+GGm2d8AKsKKdybyDCR31QRLU08HXiWnMBpEq+jktdNmVWSZYpEchqRlQRcJw0DCYwpr6JVTnXCjZLqieo8x2s53RlJurFsSpRvoBwA1kll9QMumGq/Rus8TaJjIJknUbHO67w6iVJpWPx//tf/92bvYSPyDa9LEVc+hXxmIgUxN8kNl6LcfKUL2xWL+fjywBOpyUD+b4YZTl6oIBpf7r2unZtvf/XZ9TAbPZ6P729H8+n4Ar51J4lyG+rmcEzBM/UVUVWzbWVJzKQIRxO4AS4SntXlFq9NPNk757AyefkIJ40363Tl/+wisV87Nf7itC9ApGgSBjAJZxGLZFVwxzIytzqPAA+7HTp0Gg2TJCLyKM+F6G0EweUisZQMbL2OCsmhGNoEZEbdZEHlh+Rks1c0FbOUZwkrfbEUMh1KAURCf/UUlkzBJRFLVB0yJxlfFiv5OlTmQn5b9SNQ5vss3Q5jEJXuoTswARy/BCYH75RqlE7xiGvVf9Wk6UFVz9b5C04VLRy3ctloRxufp+bd1FI1duBN/Yt9/2G39kJuWhS9l6SOOFWVVZ98gx9ePl4Mb0Z3l8Np+J7943Q8H5kyew6G2B7T7mNBFTuLcIf8m6ijY7i3fvdP3xJjMcAb8Nto2aRpxHCw30RvIzUH6srSlq9Z3xN9G7mdD0ncBnLz8uTNKXWmwgPKOp88yZnSGewhOfJoilmatjiRrHqhmxSxJChv3ykEr+kOA7YOTaHUiFjzyVG+XGJlJY+5eOYzscpYis//QcYuIfJU8fq2IRv6itdTka2Ae6OnWcHZE1ZZYV1S5k0PSuitnqTkXAKVzFySxl+ZPHzO0icgcgXPi5SHxYVJg7ofBvs0PYSEpNXnlvR9Yjf/dvLyFklQYrQB0oZYD9JOgpBWZ9F3Z9+BUjGlKwsJr0BtFf3IF9P5xWk0X3N7GKq65GwDLEbBeTmo8wH8R5orSB9HwjXS9jVFmjP4vdjibraUXcCDihpe4hnclBKsowJJVyJKHteg4qS7EylqC1bWIhYFy+ro+HJ+MxvMpvPJm9OjE/UttENglo5nl5OIf4zRVOkNNAL1DCeTb6qoJNMUQf1ANaXXt29Iyel1GK5JoNcDfTIo9eInXsM38iwpwNjtNPpxzWoOY6cIF+SAhxsW9AYHVVTRC1zcgJYpDWIiqjjNq6bk0aappNbwB3wnZvS+USp8U+HVLMXBQiOEOBpP1EUXZGh6NGbzhzsi6iKLZjUch9+dRrh/QJyZgbq8Yhs+yHgNGUmxyjyL1KJ75tHdcI7Qq+H4BlDVdkN3i7fUsxJKgK59/jC9A00y2+pPXIqPHNQdamlUDSQS4tDrkqP6usyb1Rq/7YOIOUh0eVl9iGI7oXxUpXm9n+KjVM9XfBYgDwS2WsRPlul2UYLqlStLZJBH/mn61TjGV0hKa/bE5YU8ElklEq4WlsvCTaDIjViUrNweWDUMiaoa9fxI7VKqQ8phD+HPPtfXvIqYqun+JDr6+QTGu4krvHamBTI4RdVbtByrImbfz/DqfX9382e4f8lFm0Qb0GnCttEUFO5xZKFR/oB7KMqzgeSX5Guq1kopJfdunFQUi5y1jAbWrJoTCwL2JvIncon4+0ubu+hunUVggYZE7MT6XBJfeMYlbx3LEmBtyVamLsVqJWlyta1qvgFpXQ06HFCNRMff/fHbNz9ortYysCFVzzKPG1jCx9/947dvDjVZ2XsrJqe+qm1LFGBHYbN2MpWsjNdfi3jJTu/Z8Fcio7OcJYniqAyNUV++n9FTQ3QgLfr8nfvUK6I8jBd5/vSLLon3d/PhxXy29wJoD9SOTSWLnSHxP35DLJxqEu9bx3lTD/Kltvi6n2FZXr75IaKVdvxGXvvUcMubYvhWKD+gw+ziEt2b4prG3w9bL6s//lF8jKaj2XyvFBoMMx6pu96ukvsH2QDkLPNye5WXIwz98Zn2jl6gBywa6Gl1SrpmTsTrFMjOACmsWTLdcwk1DOhbz0hpjecFHieS0ZETEx0/jBXvM8EXorfRbHj1BolowcsBGrSsSpbV0n7PIW7Woozw/STC7qOlTJwXwNCFDGX2UkCsxZuolBSJ1plDtrN039Vn0Gcld+4406DxZFiIypfhaqHwUBWajC8kGvxI52LDq5ptCvqESm7v353/4fvT70hAHJjG6gyGbVDFeWHPHohYaSJcyf2xEdsDd/zWn7I3dGFz+hM6oWD3S+YkiRY8Bls+aKx+C5Mgpb5gugDWkcmwBhMFOfMu80Y0U+BJKqunL6azUpEFs45w4cnPVcJktuJ7F8wqT/LaXzA5SyZMno5oxopnYpZ8NV3zNfbqFarmlX6he3tjmTMc4RUI5nm2EhkH0llFo7v5eDq6+XPY/llzfkrF45vnsoyl21rE9KRufnyFeoB8qaxPcRWVXF6cSw4GKgGNEShf4AocWmB1rhYYXYz1ghF1xdNlVHKMvBSxRd7U+J0FXB+PKxiuE1BAYKdEnr0BAeAzTyvnzigVmWC4x8ptVHMguqDAkvdNvbrxA+iaD7/ghowDjJbSBYufqjMaZunaQC+n4hmWDvDqDAULPHk7m44HhcgynkSnP4tCW5SzWh1rJHsG1Q1PSIw0KXMQCir/plNYso+l9EJ4hOaP5Z61RA3T0dXDbDSDMcTKwBCIxU9YI4wWizZgAQvzXK3Z93/4YzSbjqNEAJsDCwOEENuIlRuU8b6Vm/DtC1+8kebIooLPhDFhWdRkz2AsArRcjUFMqctOI9heVZTioGY48BfDi3cjKaPJyy1s+0GSv2TwZaDsPQHBC+Ypo5Mdddog62yKNzQN2r3HzMW30bAoohkolqLvT/9w+v2ZmR5tgMVEFl1fzpC1U7pz+BDwGipKiDOAOncYThA4rEWBpBM5f5jgbxbbqAChLWyKb9B0G0V6JGDh0t86mgteDv4Q/essgs3BSzUY0fHvTn93+vHNCS6KDAzPUxELEFTBuVFA+wXRCVh9gk5NNF5HUVK+KcDEi24tGRiQiqw+i5CEwFJeLkUsWKpppryORysGav/z+/m7aDCAAA0DXAwwJYNBwep1tOBr4GsTUcEEPALsMVdZ1uSM82iR5zV0ENYjiZpgiGx6vqC9BDXD6IOlFt6EhpeXsBZFfRqNl4j6B6jsH3Ch4fGx4VHG4ViE90UtLeklXQChKYbdUJQMnRHM5MtmK/EzP4tATQtDhFNCxVmSVNF//dP30e05XoMzvN4BLZF+DMf/9Yffn/4ToGVV30b/9d0fT/8ZILMXsaxxjE+XJdtwmNM3+In/9f339BK4x0ZqCUdvo//64z+f/h4QIqtqiNOAcjE1Lces3Pzx94Pnf2Y4OD9Ew+uJUomeVmBOADON4rgEhl69B6O52TAggG/kEhVVlBf1QKDQDT8IlqeoQD6mDuV8ibYeIGXL8myQF7RmkfrJrwUxQUayzr2K+zWEfIp9Djll2890ZL7qnvN+fD4dzkf7usxZ2rIyOEiR85MMExO8OrNn/mNePoHl3de5P7/D75itWbnf8pgldCOtal5UJ9Gas7KOwOL8JOIZL1e0SV+o/1KGB5naeUStoKUlKEOxFrS4hquHIzekkmSut0+vyp6JQugWt3mDFA0U99CY3fi+63PCydG/PKWpfRK1nuwdvBZV/no7G2qELtXDi/n4Peon76fj0ezx/GF6N7oM62Ht9y7Hs/nwrsuY2i45+vfR9GI8O6Dku9FwOn/EDbC37Gw+msx2FiPF6yd8H7140AdSUf2Ffzk5kitLdNt1y1dp8qzIBFNG1jN8KBfnkYrGaYx0BDIjZH5KDSh3WDPTH1UL8On3d4+zd/c/Pk5G09vxbAY26jDA4/u74Q2QGTSa3NfJ94K/mI7izrD6WLNyxWsN+Hwfa4bbEkRbczCbw3J5Px7Zn/f4MBtew6QdMlSnVOiUMKfhqv7ieAO3X1Y34tN3o+HN/J091DjAfyGyK5TUaXO6yvNVyk9VPawoKjlQGN9jj3hrbXb9Z7AGkzTEWINJ66+/iXHulagz1y73S/Vmp3GaPDHgQFnqHlkWahIvTdcsIzXQcDoNefa5+yqW339QzW3pCS2MM3nmKIMWsFmR7V5IJeex5MDenMpT6roRcMHLePSH0+9Of4cdvMZFiqzgN5VfQ5GnIt5Gi7xegyBkgU4cwIZRH0iHAxISljzzshaIy8uo4imqo0V9Qp4OUIFhipUGWFaPJr1AnOg+YtcNIjHgl61eqnrgfup113IdhV5t1M0NX7vIsypHvUap7omd9P4fbLmNNtv5AThwtMuBDtM1q17zilulK31XJR0/mcZw/Ahg3sFtn8TEUcIzwUBhbSYyw3uFkhC8rDkaAMAgKLHmC4M6l6CZwfvNhwAD+CEis58q+pBBNJAa8BlPPuC3k6IHVQHYBU66n6gSmyLdarvHLIe7Y5GSah3u6aabFodjZqN2iliXenkThbU9vsQuWPKbOa/qqxSipdHlqNrLx4uNeARS2vb3vS8wEGjclCVpvNd5pWJU54D70vo76NsA+nYWQXswymTCobg5XD3PoOC03MtfRB2vo2NYpLx8A9sH6jl7+zZasyzJl0sl01JKF9oa+iT4wfFfR/EGGWOwJ54RhwxkFuxI2KbaK28UrPCvHEVxLvD+Tvbs0sXZ4XNBsJ2Jaj0HZaQO9QCLk21fWJpeoHGDBCk+F58eMnqTJ9a70io4XpNoU/28ykt07zEZ3EuKw/PV5J7j4eQ1Uk8YzN3r+YlvQ5roRFSwp7/4klXNn0WyRbmT82xQxSXnWaRK4CpEwYhSR7+ILMlf3qKiGBa8pLwgHADnYkZWQ098W9Vl/sRJ9Kp13PgEau6zCOlFBhKyfEFrGS1pgNYBL5GckDQGvOaxc+PbUbTgJAVEoe3dnogLPwQ0PJ+ivgbh6CPTLLAzYxwDcyn7RDLK/rzL0vEZvpvNmgLPiRvxrNhrZD73XyitN7avv1YG3GG73WYn0/vb+/nosu0/u2vbwDgP1BDu3D5oFPYIBBE8l3bLStC1gIgO/R1ibJmiKdEgSglNfmp4A/1CdpkeQGKpHkYZ/rOVdE1R8c+lUd29/lTaA/c7jdOtspm1IWg3CxGE9LkYFhpB3/NsmCT690XKWamfbpSWEh7ulJ5yhTHW5EDQo1yYHfKnX01wC5VD4sc1z8bZQ8X3G3RJczH5opY1ZZyVC2CdIGzdfgsPnbziMAsPVfzzde/kaw3Cp1qSmHX+SWYkw4uL0Wz2eDW+Gz3e3BPNCdMoWfLifjidWWUPtZJLc4sR8ezk9lA4ew10H8+q2FlkLxy4GWQDkQ1ATv42UuBb9P0o8aAGZ8xqnStz1GOz/0kHYMIgKBf/vKmkkTMaEuNufOPbt4RGFnRYwWHcF3aE7lGkkGnKZzC8NXQLr49wx5uNJkOQFdq3u7PogxoZK5jBh9MDDgvvnS8cIeALbq/AJh6mL2xbDbPk0OZkpA9sscybWoV50CrrSl2hzYgdGr/EWeGHUMOTINgKe9qTy18pudxV9nx48W8y3sru8r8ggMvuijvCt/xy+t4dAcas/f3xX1TZU7W2XhMARjf0qefNp8qTJ6SvtTbv31SUa/XDkrPKTkbWNL5S1ho4Mc6UQLCKhjc/Dv88Q8fhvBQ/0wZHbx4lG0SFvT6rPrTC43wLN2p1xAai4Rx3LooTvBr/i6r6RAXOAV25vMpDfqEoz1Y5nKV2FB3t5XM/G2xYlpABpXbHQdciGJ4pDkZUxWVTg4yGV/YHaJK25uxZpNszGSPCumXj2Q5rXhqCZDFYq5Dl5pJBFOpI7kPiBaQUAG2zzGiQM88xP12dRt+U1pG1hoiWdGKR0pgkFgJtSr6RRjcsWoHmWMTRN2ID7t2yMP9YgLYmi/k3p9HoYwECZCbltSjGAMndi6jQcMpb7o6dVdurQZkwMOMThtuBTI/KDUvBD8iIJ95W2ywG6/3xErornjnJmZ84h2VUojEQDCk6h1lGkXj7HSSLiDwFSO6nPCfenESQW04Ovb/N35rNJAMggGQWZwFP/gxN4ojrGZBrUqRNa/YxWmiV+1jI6Ou+aEsanMhbqR3H1XFBzeiOqMItFiKGhTLOJvQDQGC+gY5N4D4HztK0Agj2LHJ5r1UWknRhvzTtV5w/yX/zvOWr+id5zwe3VepS9SSkEypdmVU4R+WMqu/STebDvpwk6NOjx1EKg1cLgH5JqLXR5Xj4OLkZ/hn4gtec17sOt43+ju6blLskzyxC9haioChppypAwcpkzEUZqlOFXFSPqN8zVErRbIfSVnKm0SgY+zBIMa4Z0D4kFk7QigWEaF2yJt3r+7fJA4KgtnHQMK1F3WB+hxWvZaKa3Q7gvLiQgjJQYsDzOwFC9u2M103xa5fq3OYHMP/4gZahEUX5QBLNU/5MU6ccn7MOM6LPdxeQPjgbiKYEpylefoPN7xYs0bfPeIZpv/7y+nvAfPx+PP/zI/hcX9+NXyUKqbDVUxhOlLPKQAEu03yy9/0FKyGMzye+Lcfw9eIYuZs+E3P8G7Fv+GVmCDRkJJiihRcdX9xOeELzF30bXdwC9cGnN04gSFqhSlx1PP/zZISGXo8X9w9389E0ehshbDIdzWYP05F6vh1e343m44vHq/Ho5vLNqaxIqrRfF0vj5Ci03FFlrzwWwDfINYH97h+/xQ8hy2R0XkUj65qDPwiueuSt9SqWPgq0s4GdQ94W9jWI8KSNAGnhUZ2vVfLYOPHPCYeVy3VLVVQDx1syVC3Xa0YSmpc1WDfQMaatDSQtcSz7F1tHmEhcspnFM2XlQJYeH5CAH/9nRFvsLPpGVvpN9Nc3H6iHw5vZvXb5tW47GCIOo6whX2lIDWm5qR6lrgbH+mduDITxc0UGZh+bHMMDbDY5uOYQA57VMCz4e9Gs4IPvcmvc0ahdW8HDWMzEpklZDYHqSqpRzSqXiOo0ouCR1iGgaF+EhiAsjRTJwXn+YB+4x29OmVrvHzDwPuxxGfVcNS5nWT/T3aYG/wW8mxhHFvIPweUrz/AI7Ntx5cqOJ0ygWpQXUZ3XLCU5rz7BKfQCQ7dfqax9A8MoPT9Bl0tG2FjDbH4/Hak7BBZwHVfO2kud7icQHQObh+mKpbk93kYhWj7sFDIC0sYzXIb7Iz8MaVBErgUCrNobIReMjDNDxii01SmUEY5ilkf/kS9gNlkKLh9gZ47O9hBiNsnQpqSkNUaOJmgpAM2SNdE3lSWKHk7GJxhpg+zOuRqa0DEBV/cGrO+NmTzEJNSfDa+X6JGylMv1zalvqiR3pI7qTzdVWT91FBZYqTZwrbbEBzJR+mBZ2JwgPUJfM+kYIHcRBOVHHwIyHlEGTQu+zYEaB+if8i6BlpzBIfk/LD4XfNwxRm/ObMsyJc+o5IW48taS8o2CZUKLqoElHX33j1ECfoD3d9H83Si6HMEl4kQvLtkCo6BxP+gFKx3gIXgIWrXR6kSKy5SQQBnoJCq8pAodEEluN0JVfhVJD66lKFFPsdDsXXRs4Eiu32iPEwImFBUE47cwcCmCQDLGQCw4PmS5FX2oDNt9Fv1PvE8WZDb7P48+0JHO0hRvMSpaDNB3Gk7lC0nHO5z4g4pu+rgiFjkWhKgjkahfEcndnKH7o7nn2SNV8sjEvltKhrvgM4ZY2G/Hc59dYu+G4z33Rvs7zoBV4iXIjDqdEo/J1PIKroR0hMCdPIVggzJsIRq6IXEZjt/orCJwFWxNgFpQRLbUPBkPQ0f2RLOe5HkpiXglUp6BxGiJsW/stRKneePZM1peXbyKWYosTp17DuppulGNV9IOUib0ABGdyuHRShJiKRKN/ZCceNxKtzcRmA1e82w4jt5G13wjMhHdsSxHe7nhGCbtDZFNiC7EEzQbIq0k0kXL4nqTPon6bMUzJgb/8CEixj9KeAEZdLIYneEGC/bEtW8fuRUZkqpSMpLRU5JAWw2m31FXD3OboBQqSCaAycGQSPs2R8Gzx6ZMO20Yv4q5IjQyaMr0DM8H4v6l5JYCiRgxNtrGgI/doIrXfAPEpqph8G5msN6ltONPZP8+wyJVdAy2l6cFFH0DSmK5AFj0f0lD+f8bwhWKJRyVCwxFC6MtB0GafHFcZtAx5KRZ9g3kk4HFyiAGPfrkHYvsmZUCGObv/vDmNDoHa2O8DYAB5YDE8zs8xJR1TZEsvQkR1dAK5ftVJqVIlmiLB4IoUH9rz3ji2SAIF8qSijKvSWaknGrJ3JglPtHwphYYJosZsNyVj06odZlMKHo3vLuc0cF7f/FwO7qbR/P7aHh3P383mkJQMctbGlyujU0rfBGlqiKBcrkhY2UYweM3H/TRmkXSeQVcMiJytNARVyF9FdkcJmgPqCOMAQIPXApXpqkmpYVCOTZyMfiC4dFkp+KUiQ2WVMv2bZEsgfHBT6nR63YBbsno44zXS3T0J/k8Emc1J3i6C4p+rdQFxIyd0JejBYMV6OwlL+t1tGFwBTzRX/phkizB+eZDdHF/O7m/g5E+ViGygerAHR0Mi3VEtwWva3TQzSEw1N6FjVGY2jF3wLutO+4OOArOVXytryS9s0N6DZPk0NQK4KUnQ2ypyLImptcvixi2u+7DTBK+xFf9AnMBqnMg6zok7gq9QRF0TMYPL2rO5J0MtHLsXDfQzhcrUC1G0uIWk1+8keZKQOztBSeP9r2DZwUhOI12z7A6z/Jca+jw7IfQED/DpTdlkAop28KnWPWAw4Xk+o7H89vZ4H/84x//+XcU5wOixtrfhRzF83eG3aEvp5g10bdSgYD3O5xf+ErvepZn0Xe/+/bt9//j231sBCi+MELDI+n8fO/mhjI2gncc//UEJqeYcHlJQeF+JS5pqOeRqU7/pkJbGh08Gp7VANkmDUTKX+WOht9GQWzcyt7D6YH+WqjQL3U+sNdLg/2leCbV0FW02NaSXjzMRlM4sioeHTOKsCX3x4mtKn/OpRaNkkiwCEJhUVxAcOjRUq2SD6hJ4onmJkFFXGKkC4gp4ctZIFArq2s625UZBDAUKuSousJgTFW0TMC4PTJ2iLkBy4AhSmAmZHb302heio2rc6eYMZTSIifXBvJOLwrQ7TRoDiCH68y5k0keGPJvqFuyiZUEkT4w2oTW8uNYvqVYtqDTh++xxcQwcgOb22tN2gdJLT5YMhS6G5kITSoHHLJ0oo6moz89jKejWfQBl9gH+MgFt+LQyCQdyo2el8giAZ0T97OTaMNi+KevB8Du8YX0cquiD+ZWdup3+FR3FxeKjIqhBCyyP6fRWDJipSFmJyoGDHi9CWVkS31Gsbff1AfFcmYg75RCQgoMJXW80TFKkt6SlQHGk3pDPB6M6ofo2OwEOQwshVGWEXZVhDmc83bz4fmajS4epuP5n/UAQ8g4jNRMC+h2fDefYagbfAFX+jFwAtXb59+/rZqFUgm+Jd00FYNL4Rt5nYjXcPsBpQED5ThIs7M8227AXBhSIaNMW4l3fUxU5+CDBpLZBURTRn2KEj7TupKxfONUYKZq2MesJikGRgnBhITq6o7mL0vairb8k3hlHbYFdoyiOzndmWg4sFo16qKqGsxipu2OoIMozpZ3TYDhmQ4jiyd3pJRWIEyBvc5ZbUKVEpFiEJWkLpsKrwFNxuq6FIumNlGG9jPsTbUO5jMdpinobUxeU/0ErhqXSsdDqvxzlqyk4p+EXXOYjZ2JJuwaUPtv0tMHY4kAGW1SrnpRqUY/623B53NZUQ149izKPMPQxmdHMrCGzJV0gHkM7NGaD2xTjX3GMhOYE4ffPyTQx56+fgbfqz2a7UJ1+zNwbrSKnKQyfxMeifqhb90yi4zF2IQLvJalaSrMLgP/JSE7lhWPL9+4djvk1Yx7Z4tiAnyJ7hsgv7wSJQcHtRP9K2JplcsTy3AdcqBAcEZaDv6xLlnIV3GvDZ40e3sEmlPmvqiRcpGaxBCpygyPuxi+6otLumQHB7KDZyhTrOz03jLZvBTzyfIy6A/6iap39TlyQlrUDGjjYFlyHq2lNkdFqyf7XJ3Ih/jRTFUeCbJrTcGF9a7T5bqV0Pv2YTYnkSNKf86iD7JCuhJ/QC1wUShDyuMibVAyxBfNihzf3+gA8pTXu8LgCaQsXouioNMDXK9LFf5KnlApB498TK9ZVlFBEu1NxdNndf6BBIzrT8SEaTnyPxgHzQlqwGsp1ofLMEZMJ3IIF1OKZcbL/T7kKH/gjzLE5W71DxywtjPlZwx1uruPEI9qd9eoyFfoCqVBeUwEU2bkrTwuKKPAi7yXzOVLb9NA586iSmZHt1g+WY7SvOMVRDFaOgOCTIbBigK5Lp0vnmdlnqYnKmgnxDwvyWycIlWfRmOIRAEtYvsVmZ1QnAzgsBQNIx1vlltKJhlKj+xB9i/cgvN4vW/BxvkqEz/z+wx9M/DD7dzu4EOnMtngg85kI5+wHNIPtBD+jOKZz5bARgkhVYR9vLDSzRzPOhHXMiGvLV+d4fBNaYAOc8KiHAkQdJfMMbEGGVqZf6z32jxSk587Mc6v6/N/LfnpP5VvDAnX/hbZCClb+pcSgdHcnUX6az0vkapBz1pKZTHA2KOz+Ry5xdIsGTQca1L08xgoKwA6HCmMjq7dCoeNDhz7GEKiPr/I4TVr0nQn+cQ8E4+kyKtafh8ZeVGUfFnyaj1b52UdN18teddMlOLADVk2mZLO4XGDHCe8D0HkVbdP9+Vcp9EYyNE4i8JdQDEHSC0oAanORlkUEY1YJRWjyMxBDfsmumbVUxUIEUERSmKV9rpbCmCzYx0p3S5kCMzkK03eFAxCQBP6y1Iilqoal3Dr2j9jnb8owaSuU8m2wNgHby2JlaVN52Tce0rqD9xj7YRL5wyNP/7FJEzUvYmOD5oJKdqFHIsn0Y7RRRn+d/9kGQf9S8RUni+THMCYQ7YUix2Ga3t3CBiotKNcpdv7Z16SUxkK1Myj8uP54uw2du0MT4Q0b0pbBA8h4LKaRBHIZm/4JteOexy1IzBcoubtYE0P41aIpq8VNalpGQCmnPjhjMVPC0jh2TWonziIjTizIlhhc29VY5F0FzQjoZYWpH1x1dburd/NtHRhoubDWlVWRsi2SbMNDMLfitz/Qhf0/WYbL3wBX/ULQ1R0j5Ks/0wdOXyz4AkcQT/yBZijgGShkmIFsl2MWLkQNeq6VcB8iIcMFjOoyGbROZSDpaKsaI3xyw+kcmnqXOmg9ptkvYiPj6wQX5RpgTZiVq1FK4GOa/6Fdg48mecTtt189mTLB8Sc+xy6d+q6DIr4t+TFrwQI6UQwNbjs5Sc6Jqm3ZbDLdPCSlyl64Ww4mMkdQ4IqYDDekhjwbVEKcEUfFCnLKpTDVbyuUxJYgPJZ1ujm4aDZjOTK+QEUyEmUgKlYSlmCkE6Ln6kasgqeMMg0rAy/GQUzJwUymCqmjoxk3yGG63bN6rZd15STI4pm6rQzssK4Lsoa+qUPN9XlM+PaUcq2caAvUP5JqZExrKw/36TmRzMAssqr6B0MaaQk60b9X/0AVRhFOdEijjY+G0jasMK7H50IMSd6X6/5VllgGvO/g0hVkbIatKuH0avXjOpuIgaZ9Soce9lvCA3CtqAEx+wbGcV9W6b844ASmFC07aoGm3ADOTlaQfTPo6rA4AzQuVSssoGo+aYCv0t4UulEWYK+xGf6F4xBAgkL6P/bpUjTW/bxRwRCOgNwyTk6Uz9AYPNxoF7ZmILYzVWZv0BNqiywQ+XRGf2nveXEuTs6sx4C+IGqIFBqmaNmrt4W+apkxXqrMZiGEb8a8PxjPcTfJ0cLsFUpByVLRFNht8qMl1N6VGhojX4A5OOgWrMEv4p+6FZyGG6Mqa5+nRyxCiJSDJBhg5HHRwynrmSHtNAgKXfF67dgss/flnmtIp38PACm++PR2dHPY/yBucdq6lXaQJ9ASy/FmmdHa5EkFDohr4ReHyJ+Qh+NUiSDmm9ggYPWJW02GX02/nor/4OOvNmop5E00j7661//fyB8NLixhAgA"
4093
+ sha256: "c54c4867c4ceeb2712fe45fd349ca9fd8ab3254879549c7d437790ab15deb67a",
4094
+ data: "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"
4095
4095
  };
4096
4096
  }
4097
4097
  });
@@ -4393,15 +4393,15 @@ function analyzeController(source, file2, profile, diagnostics) {
4393
4393
  error(declaration ?? sf2, "Default-export defineController({ initialState, handlers }).");
4394
4394
  return;
4395
4395
  }
4396
- const object8 = declaration.expression.arguments[0];
4397
- if (!object8 || !ts2.isObjectLiteralExpression(object8)) {
4396
+ const object9 = declaration.expression.arguments[0];
4397
+ if (!object9 || !ts2.isObjectLiteralExpression(object9)) {
4398
4398
  error(declaration, "Controller definition must be an object literal.");
4399
4399
  return;
4400
4400
  }
4401
- const props = new Map(object8.properties.map((p2) => [p2.name?.getText(sf2).replace(/^["']|["']$/g, ""), p2]));
4401
+ const props = new Map(object9.properties.map((p2) => [p2.name?.getText(sf2).replace(/^["']|["']$/g, ""), p2]));
4402
4402
  const state = props.get("initialState"), handlers = props.get("handlers");
4403
4403
  if (!state || !ts2.isPropertyAssignment(state) || !handlers || !ts2.isPropertyAssignment(handlers) || !ts2.isObjectLiteralExpression(handlers.initializer)) {
4404
- error(object8, "initialState and handlers must be object literals.");
4404
+ error(object9, "initialState and handlers must be object literals.");
4405
4405
  return;
4406
4406
  }
4407
4407
  function literal(n2) {
@@ -4568,8 +4568,8 @@ function parseStyles(source, file2, diagnostics, origin = { line: 1, column: 1 }
4568
4568
  declarations[decl.prop] = decl.value;
4569
4569
  locations[decl.prop] = declLoc;
4570
4570
  }
4571
- for (const text10 of node.selector.split(",")) {
4572
- const s2 = text10.trim();
4571
+ for (const text11 of node.selector.split(",")) {
4572
+ const s2 = text11.trim();
4573
4573
  if (!s2 || !selector.test(s2)) {
4574
4574
  diagnostics.push({ ...loc, code: "HHP-CSS-SELECTOR", severity: "error", message: `Unsupported selector ${s2}.`, hint: "Use static tag, id, class, or compound selectors." });
4575
4575
  continue;
@@ -4591,7 +4591,7 @@ function translateStyle(style, profile, type, props, mods, error) {
4591
4591
  if (!/^(?:0|\d+(?:\.\d+)?px)$/.test(v2)) throw new Error(`Expected a nonnegative px length, received ${v2}.`);
4592
4592
  return parseFloat(v2);
4593
4593
  };
4594
- const numeric = (v2) => {
4594
+ const numeric2 = (v2) => {
4595
4595
  if (!/^-?\d+(?:\.\d+)?$/.test(v2)) throw new Error(`Expected a number, received ${v2}.`);
4596
4596
  return Number(v2);
4597
4597
  };
@@ -4644,7 +4644,7 @@ function translateStyle(style, profile, type, props, mods, error) {
4644
4644
  mods.maxWidth = length(v2);
4645
4645
  break;
4646
4646
  case "flex-grow":
4647
- mods.weight = numeric(v2);
4647
+ mods.weight = numeric2(v2);
4648
4648
  break;
4649
4649
  case "color":
4650
4650
  props.color = token(v2, "colors");
@@ -4673,17 +4673,17 @@ function translateStyle(style, profile, type, props, mods, error) {
4673
4673
  mods.shadow = { token: token(v2, "shadows") };
4674
4674
  break;
4675
4675
  case "opacity":
4676
- mods.opacity = numeric(v2);
4676
+ mods.opacity = numeric2(v2);
4677
4677
  if (Number(mods.opacity) < 0 || Number(mods.opacity) > 1) throw new Error("Opacity must be between zero and one.");
4678
4678
  break;
4679
4679
  case "aspect-ratio": {
4680
- const p2 = v2.split("/").map((x2) => numeric(x2.trim()));
4680
+ const p2 = v2.split("/").map((x2) => numeric2(x2.trim()));
4681
4681
  mods.aspectRatio = p2[0] / (p2[1] ?? 1);
4682
4682
  if (!Number.isFinite(mods.aspectRatio) || Number(mods.aspectRatio) <= 0) throw new Error("Aspect ratio must be positive.");
4683
4683
  break;
4684
4684
  }
4685
4685
  case "z-index":
4686
- mods.zIndex = numeric(v2);
4686
+ mods.zIndex = numeric2(v2);
4687
4687
  break;
4688
4688
  case "visibility":
4689
4689
  if (!["hidden", "visible"].includes(v2)) throw new Error("Unsupported visibility.");
@@ -4703,7 +4703,7 @@ function translateStyle(style, profile, type, props, mods, error) {
4703
4703
  const parts = [...v2.matchAll(/(translateX|translateY|scale|rotate)\(([^)]+)\)/g)];
4704
4704
  if (!parts.length || parts.map((p2) => p2[0]).join("") !== v2.replace(/\s+/g, "")) throw new Error("Supported transforms: translateX, translateY, scale, rotate.");
4705
4705
  for (const [, fn2, arg] of parts) {
4706
- if (fn2 === "scale") mods.scale = numeric(arg);
4706
+ if (fn2 === "scale") mods.scale = numeric2(arg);
4707
4707
  else if (fn2 === "rotate") {
4708
4708
  if (!/^-?\d+(?:\.\d+)?deg$/.test(arg)) throw new Error("Rotation uses degrees.");
4709
4709
  mods.rotation = parseFloat(arg);
@@ -5342,31 +5342,31 @@ function compileV2(html, profile, options) {
5342
5342
  return component;
5343
5343
  }
5344
5344
  const textNodes = element.contents().toArray().filter((n2) => n2.type === "text");
5345
- const text10 = textNodes.map((n2) => n2.data).join(" ").replace(/\s+/g, " ").trim();
5345
+ const text11 = textNodes.map((n2) => n2.data).join(" ").replace(/\s+/g, " ").trim();
5346
5346
  if (["Text", "RichText"].includes(type)) {
5347
- const matches = [...text10.matchAll(/{{\s*([\w.$]+)\s*}}/g)];
5348
- if (/{{|}}/.test(text10.replace(/{{\s*[\w.$]+\s*}}/g, ""))) error(el2, "HHP-TEXT-EXPRESSION", "Text interpolation accepts state/item paths; compute expressions in the controller.");
5347
+ const matches = [...text11.matchAll(/{{\s*([\w.$]+)\s*}}/g)];
5348
+ if (/{{|}}/.test(text11.replace(/{{\s*[\w.$]+\s*}}/g, ""))) error(el2, "HHP-TEXT-EXPRESSION", "Text interpolation accepts state/item paths; compute expressions in the controller.");
5349
5349
  if (matches.length) {
5350
- if (matches.length === 1 && matches[0][0] === text10 && type === "Text") {
5350
+ if (matches.length === 1 && matches[0][0] === text11 && type === "Text") {
5351
5351
  props.text = path2(el2, matches[0][1], row);
5352
5352
  } else if (controller && type === "Text") {
5353
5353
  for (const match of matches) path2(el2, match[1], row);
5354
5354
  const key3 = `t${textProjections.length}`;
5355
- const normalized = text10.replace(/{{\s*([\w.$]+)\s*}}/g, (_match, raw) => `{{${raw.startsWith("$item.") ? raw : statePath(raw)}}}`);
5355
+ const normalized = text11.replace(/{{\s*([\w.$]+)\s*}}/g, (_match, raw) => `{{${raw.startsWith("$item.") ? raw : statePath(raw)}}}`);
5356
5356
  textProjections.push({ key: key3, text: normalized, ...row ? { collection: row } : {} });
5357
5357
  props.text = row ? `$item.__hhpText_${key3}` : `$service:${serviceName}.__hhpText.${key3}`;
5358
5358
  } else {
5359
5359
  if (profile.surfaces.some((surface) => surface === "ios" || surface === "android" || surface === "macos"))
5360
5360
  error(el2, "HHP-TEXT-TEMPLATE-SURFACE", "Text templates are not implemented by the enabled native renderers.", "Compute the complete string in controller state and bind it on a Text component with {{path}} or bind:content.");
5361
5361
  const params = {};
5362
- let template = text10;
5362
+ let template = text11;
5363
5363
  matches.forEach((m2, i2) => {
5364
5364
  params[`v${i2}`] = path2(el2, m2[1], row);
5365
5365
  template = template.replace(m2[0], `{v${i2}}`);
5366
5366
  });
5367
5367
  props.template = { template, params };
5368
5368
  }
5369
- } else if (text10) props.text = text10;
5369
+ } else if (text11) props.text = text11;
5370
5370
  if (/^h[1-6]$/.test(tag) && props.style === void 0) {
5371
5371
  const candidates = tag === "h1" ? ["largeTitle", "title1", "body"] : tag === "h2" ? ["title1", "headline", "body"] : ["headline", "body"];
5372
5372
  const available = profile.tokens.typography ?? [];
@@ -5374,8 +5374,8 @@ function compileV2(html, profile, options) {
5374
5374
  if (heading) props.style = heading;
5375
5375
  else error(el2, "HHP-TOKEN", "Headings require a body, title1, headline, or largeTitle typography token.");
5376
5376
  }
5377
- } else if (type === "Button" && (text10 || attrs.title)) props.title = text10 || attrs.title;
5378
- else if (text10) error(el2, "HHP-TEXT", "Wrap container text in a paragraph or span.");
5377
+ } else if (type === "Button" && (text11 || attrs.title)) props.title = text11 || attrs.title;
5378
+ else if (text11) error(el2, "HHP-TEXT", "Wrap container text in a paragraph or span.");
5379
5379
  if (type === "Image" && attrs.src) {
5380
5380
  if (/^https:\/\//.test(attrs.src)) props.url = attrs.src;
5381
5381
  else {
@@ -7391,17 +7391,17 @@ ${BLOCK_END}`;
7391
7391
  ${block}
7392
7392
  `;
7393
7393
  }
7394
- function markersIntact(text10) {
7395
- const begins = text10.split(BLOCK_BEGIN).length - 1;
7396
- const ends = text10.split(BLOCK_END).length - 1;
7394
+ function markersIntact(text11) {
7395
+ const begins = text11.split(BLOCK_BEGIN).length - 1;
7396
+ const ends = text11.split(BLOCK_END).length - 1;
7397
7397
  if (begins === 0 && ends === 0) return true;
7398
- return begins === 1 && ends === 1 && text10.indexOf(BLOCK_BEGIN) < text10.indexOf(BLOCK_END) && BLOCK_RE.test(text10);
7398
+ return begins === 1 && ends === 1 && text11.indexOf(BLOCK_BEGIN) < text11.indexOf(BLOCK_END) && BLOCK_RE.test(text11);
7399
7399
  }
7400
- function withoutBlock(text10) {
7401
- const m2 = BLOCK_RE.exec(text10);
7402
- if (!m2) return text10;
7403
- const before = text10.slice(0, m2.index).replace(/\n+$/, "");
7404
- const after = text10.slice(m2.index + m2[0].length).replace(/^\n+/, "");
7400
+ function withoutBlock(text11) {
7401
+ const m2 = BLOCK_RE.exec(text11);
7402
+ if (!m2) return text11;
7403
+ const before = text11.slice(0, m2.index).replace(/\n+$/, "");
7404
+ const after = text11.slice(m2.index + m2[0].length).replace(/^\n+/, "");
7405
7405
  if (!before) return after;
7406
7406
  if (!after) return `${before}
7407
7407
  `;
@@ -7409,8 +7409,8 @@ function withoutBlock(text10) {
7409
7409
 
7410
7410
  ${after}`;
7411
7411
  }
7412
- function blockVersion(text10) {
7413
- return STAMP_RE.exec(text10)?.[1] ?? null;
7412
+ function blockVersion(text11) {
7413
+ return STAMP_RE.exec(text11)?.[1] ?? null;
7414
7414
  }
7415
7415
  function agentsMdBody(appName2) {
7416
7416
  const gates = APPROVAL_GATES.map((g2) => `- \`${g2.id}\` \u2014 ${g2.label}`).join("\n");
@@ -7873,13 +7873,13 @@ function assertConfinedTsconfig(entry, contentRoot2, allows) {
7873
7873
  `refused to read ${p2}: ${why}. A tsconfig may extend a file from its own package or an installed dependency \u2014 nothing else.`
7874
7874
  );
7875
7875
  };
7876
- const stripJsonc = (text10) => {
7877
- if (text10.charCodeAt(0) === 65279) text10 = text10.slice(1);
7876
+ const stripJsonc = (text11) => {
7877
+ if (text11.charCodeAt(0) === 65279) text11 = text11.slice(1);
7878
7878
  let out2 = "";
7879
7879
  let inStr = false;
7880
7880
  let esc = false;
7881
- for (let i2 = 0; i2 < text10.length; i2++) {
7882
- const c2 = text10[i2];
7881
+ for (let i2 = 0; i2 < text11.length; i2++) {
7882
+ const c2 = text11[i2];
7883
7883
  if (inStr) {
7884
7884
  out2 += c2;
7885
7885
  if (esc) esc = false;
@@ -7892,13 +7892,13 @@ function assertConfinedTsconfig(entry, contentRoot2, allows) {
7892
7892
  out2 += c2;
7893
7893
  continue;
7894
7894
  }
7895
- if (c2 === "/" && text10[i2 + 1] === "/") {
7896
- while (i2 < text10.length && text10[i2] !== "\n") i2++;
7895
+ if (c2 === "/" && text11[i2 + 1] === "/") {
7896
+ while (i2 < text11.length && text11[i2] !== "\n") i2++;
7897
7897
  continue;
7898
7898
  }
7899
- if (c2 === "/" && text10[i2 + 1] === "*") {
7899
+ if (c2 === "/" && text11[i2 + 1] === "*") {
7900
7900
  i2 += 2;
7901
- while (i2 < text10.length && !(text10[i2] === "*" && text10[i2 + 1] === "/")) i2++;
7901
+ while (i2 < text11.length && !(text11[i2] === "*" && text11[i2 + 1] === "/")) i2++;
7902
7902
  i2++;
7903
7903
  continue;
7904
7904
  }
@@ -12468,8 +12468,8 @@ function pushSpan(out2, s2) {
12468
12468
  else out2.push(s2);
12469
12469
  }
12470
12470
  function spanOf(textNode) {
12471
- const text10 = str(at(textNode, "textData", "text"));
12472
- if (text10 === "") return null;
12471
+ const text11 = str(at(textNode, "textData", "text"));
12472
+ if (text11 === "") return null;
12473
12473
  let bold = false, italic = false, underline = false;
12474
12474
  let link;
12475
12475
  const decorations = at(textNode, "textData", "decorations");
@@ -12496,7 +12496,7 @@ function spanOf(textNode) {
12496
12496
  }
12497
12497
  }
12498
12498
  }
12499
- const span = { text: text10 };
12499
+ const span = { text: text11 };
12500
12500
  if (bold) span.bold = true;
12501
12501
  if (italic) span.italic = true;
12502
12502
  if (underline) span.underline = true;
@@ -12718,8 +12718,8 @@ function blockOf(ids, n2, path2) {
12718
12718
  const { title, url } = cardFields(n2, type);
12719
12719
  return [card(ids.claim(n2, path2), type, title, url)];
12720
12720
  }
12721
- const text10 = plainText(n2);
12722
- return text10.trim() !== "" ? [{ kind: "paragraph", id: ids.claim(n2, path2), spans: [{ text: text10 }] }] : [];
12721
+ const text11 = plainText(n2);
12722
+ return text11.trim() !== "" ? [{ kind: "paragraph", id: ids.claim(n2, path2), spans: [{ text: text11 }] }] : [];
12723
12723
  }
12724
12724
  }
12725
12725
  }
@@ -14241,26 +14241,26 @@ function serviceOnlyBindingValues(props, key3) {
14241
14241
  });
14242
14242
  return out2;
14243
14243
  }
14244
- function matchBraceSafe(text10, open) {
14244
+ function matchBraceSafe(text11, open) {
14245
14245
  let depth = 0;
14246
- for (let i2 = open; i2 < text10.length; i2++) {
14247
- const c2 = text10[i2];
14246
+ for (let i2 = open; i2 < text11.length; i2++) {
14247
+ const c2 = text11[i2];
14248
14248
  if (c2 === '"' || c2 === "'" || c2 === "`") {
14249
14249
  const q2 = c2;
14250
14250
  i2++;
14251
- while (i2 < text10.length && text10[i2] !== q2) {
14252
- if (text10[i2] === "\\") i2++;
14251
+ while (i2 < text11.length && text11[i2] !== q2) {
14252
+ if (text11[i2] === "\\") i2++;
14253
14253
  i2++;
14254
14254
  }
14255
14255
  continue;
14256
14256
  }
14257
- if (c2 === "/" && text10[i2 + 1] === "/") {
14258
- while (i2 < text10.length && text10[i2] !== "\n") i2++;
14257
+ if (c2 === "/" && text11[i2 + 1] === "/") {
14258
+ while (i2 < text11.length && text11[i2] !== "\n") i2++;
14259
14259
  continue;
14260
14260
  }
14261
- if (c2 === "/" && text10[i2 + 1] === "*") {
14261
+ if (c2 === "/" && text11[i2 + 1] === "*") {
14262
14262
  i2 += 2;
14263
- while (i2 < text10.length && !(text10[i2] === "*" && text10[i2 + 1] === "/")) i2++;
14263
+ while (i2 < text11.length && !(text11[i2] === "*" && text11[i2 + 1] === "/")) i2++;
14264
14264
  i2++;
14265
14265
  continue;
14266
14266
  }
@@ -17352,11 +17352,11 @@ function strip(line) {
17352
17352
  function scalar(v2) {
17353
17353
  return v2.trim().replace(/^["']|["']$/g, "");
17354
17354
  }
17355
- function parseRolloutYaml(text10) {
17355
+ function parseRolloutYaml(text11) {
17356
17356
  const cfg = { app: "", rings: [] };
17357
17357
  let cur = null;
17358
17358
  let inRings = false;
17359
- for (const raw of text10.split("\n")) {
17359
+ for (const raw of text11.split("\n")) {
17360
17360
  const line = strip(raw);
17361
17361
  if (!line.trim()) continue;
17362
17362
  const top = /^([a-zA-Z_]+):\s*(.*)$/.exec(line);
@@ -17387,10 +17387,10 @@ function assignRing(r3, key3, val) {
17387
17387
  else if (key3 === "percent") r3.percent = Number(v2);
17388
17388
  else if (key3 === "minBinaryVersion") r3.minBinaryVersion = v2;
17389
17389
  }
17390
- function parseRevocationsYaml(text10) {
17390
+ function parseRevocationsYaml(text11) {
17391
17391
  const out2 = { app: "", revoked: [] };
17392
17392
  let inList = false;
17393
- for (const raw of text10.split("\n")) {
17393
+ for (const raw of text11.split("\n")) {
17394
17394
  const line = strip(raw);
17395
17395
  if (!line.trim()) continue;
17396
17396
  const top = /^([a-zA-Z_]+):\s*(.*)$/.exec(line);
@@ -17767,14 +17767,14 @@ function discoverNativeActions(appDir3) {
17767
17767
  }
17768
17768
  const sources = roots2.flatMap(({ directory, extension, buildDirMaxDepth }) => nativeSourceFiles(resolve16(appDir3, directory), extension, buildDirMaxDepth));
17769
17769
  const registered = sources.flatMap((source) => {
17770
- let text10;
17770
+ let text11;
17771
17771
  try {
17772
- text10 = readFileSync16(source, "utf8");
17772
+ text11 = readFileSync16(source, "utf8");
17773
17773
  } catch (err) {
17774
17774
  if (!vanished(err)) throw err;
17775
17775
  return [];
17776
17776
  }
17777
- return registeredActions(text10);
17777
+ return registeredActions(text11);
17778
17778
  });
17779
17779
  return {
17780
17780
  registered: new Set(registered),
@@ -21178,9 +21178,9 @@ var init_wix_cache_policy = __esm({
21178
21178
  });
21179
21179
 
21180
21180
  // ../../core/dev-server/src/l10n-catalog.ts
21181
- function parseCatalog(text10) {
21181
+ function parseCatalog(text11) {
21182
21182
  try {
21183
- const c2 = JSON.parse(text10);
21183
+ const c2 = JSON.parse(text11);
21184
21184
  return c2 && typeof c2 === "object" && c2.messages && typeof c2.messages === "object" ? c2 : void 0;
21185
21185
  } catch {
21186
21186
  return void 0;
@@ -22149,6 +22149,7 @@ function resolveIdiom(tokens2, ctx = {}) {
22149
22149
  var IDIOM_CONTEXTS, UNSAFE_KEYS;
22150
22150
  var init_idiom = __esm({
22151
22151
  "../../core/ts/src/idiom.ts"() {
22152
+ "use strict";
22152
22153
  IDIOM_CONTEXTS = {
22153
22154
  ios: { native: ["ios"] },
22154
22155
  android: { native: ["material"] },
@@ -26719,10 +26720,10 @@ async function mintAnonymousVisitor(clientId, fetchImpl = fetch) {
26719
26720
  headers: { "Content-Type": "application/json" },
26720
26721
  body: JSON.stringify({ clientId, grantType: "anonymous" })
26721
26722
  });
26722
- const text10 = await res.text();
26723
+ const text11 = await res.text();
26723
26724
  let j2 = {};
26724
26725
  try {
26725
- j2 = text10 ? JSON.parse(text10) : {};
26726
+ j2 = text11 ? JSON.parse(text11) : {};
26726
26727
  } catch {
26727
26728
  }
26728
26729
  if (res.status !== 200 || !j2.access_token) throw new Error(`visitor mint failed (${res.status})`);
@@ -27068,10 +27069,10 @@ ${session}`);
27068
27069
  }),
27069
27070
  timedOut
27070
27071
  ]);
27071
- const text10 = await Promise.race([res.text(), timedOut]);
27072
+ const text11 = await Promise.race([res.text(), timedOut]);
27072
27073
  let j2 = {};
27073
27074
  try {
27074
- j2 = text10 ? JSON.parse(text10) : {};
27075
+ j2 = text11 ? JSON.parse(text11) : {};
27075
27076
  } catch {
27076
27077
  }
27077
27078
  if (res.status < 200 || res.status >= 300 || !j2.signedInstance)
@@ -27257,7 +27258,7 @@ ${session}`);
27257
27258
  });
27258
27259
  const xsrf = /(?:^|;\s*)XSRF-TOKEN=([^;]+)/.exec(sessionCookie)?.[1];
27259
27260
  let status;
27260
- let text10;
27261
+ let text11;
27261
27262
  try {
27262
27263
  const res = await Promise.race([
27263
27264
  this.fetchImpl(`${ONE_APP_SESSION}/${msid}/signed-instance?signed_instance_type=Member`, {
@@ -27269,7 +27270,7 @@ ${session}`);
27269
27270
  timedOut
27270
27271
  ]);
27271
27272
  status = res.status;
27272
- text10 = await Promise.race([res.text(), timedOut]);
27273
+ text11 = await Promise.race([res.text(), timedOut]);
27273
27274
  } catch (e2) {
27274
27275
  return refuse7(new SiteInstanceUnavailable(msid, `mint failed: ${e2?.message ?? e2}`), MEMBER_TRANSIENT_TTL_MS);
27275
27276
  } finally {
@@ -27279,7 +27280,7 @@ ${session}`);
27279
27280
  if (status === 401) return refuse7(new AccountSessionExpired(msid, `mint refused (${status})`), MEMBER_TRANSIENT_TTL_MS);
27280
27281
  let instance;
27281
27282
  try {
27282
- instance = JSON.parse(text10).signedInstance;
27283
+ instance = JSON.parse(text11).signedInstance;
27283
27284
  } catch {
27284
27285
  }
27285
27286
  if (status < 200 || status >= 300 || typeof instance !== "string" || !instance) {
@@ -27357,8 +27358,8 @@ async function postJson(path2, body, auth) {
27357
27358
  headers: { "Content-Type": "application/json", ...auth ? { Authorization: auth } : {} },
27358
27359
  body: JSON.stringify(body)
27359
27360
  });
27360
- const text10 = await res.text();
27361
- return { status: res.status, json: text10 ? JSON.parse(text10) : {} };
27361
+ const text11 = await res.text();
27362
+ return { status: res.status, json: text11 ? JSON.parse(text11) : {} };
27362
27363
  }
27363
27364
  async function mintVisitor(clientId) {
27364
27365
  const r3 = await postJson("/oauth2/token", { clientId, grantType: "anonymous" });
@@ -27628,13 +27629,13 @@ function recordWixTraffic(gw, app, adminUrl, ev) {
27628
27629
  full.respBody = truncate(redactBodyString(full.respBody));
27629
27630
  gw.traffic.push(full);
27630
27631
  if (gw.traffic.length > TRAFFIC_CAP) gw.traffic.splice(0, gw.traffic.length - TRAFFIC_CAP);
27631
- const text10 = `event: wix.traffic
27632
+ const text11 = `event: wix.traffic
27632
27633
  data: ${JSON.stringify(full)}
27633
27634
 
27634
27635
  `;
27635
27636
  for (const res of [...gw.clients]) {
27636
27637
  try {
27637
- res.write(text10);
27638
+ res.write(text11);
27638
27639
  } catch {
27639
27640
  gw.clients.delete(res);
27640
27641
  }
@@ -28137,13 +28138,13 @@ async function resolveWixAccounts(cookieHeader, fetchImpl = fetch, authorization
28137
28138
  if (res.status === 428 || res.status === 401 || res.status === 403) {
28138
28139
  return { ok: false, reason: "no_session" };
28139
28140
  }
28140
- const text10 = await res.text();
28141
+ const text11 = await res.text();
28141
28142
  if (!res.ok) {
28142
- return { ok: false, reason: "upstream_failed", status: res.status, detail: text10.slice(0, 200) };
28143
+ return { ok: false, reason: "upstream_failed", status: res.status, detail: text11.slice(0, 200) };
28143
28144
  }
28144
28145
  let parsed;
28145
28146
  try {
28146
- parsed = JSON.parse(text10);
28147
+ parsed = JSON.parse(text11);
28147
28148
  } catch {
28148
28149
  return { ok: false, reason: "upstream_failed", status: res.status, detail: "unparseable_body" };
28149
28150
  }
@@ -28184,13 +28185,13 @@ async function resolveAccountCredential(auth, fetchImpl) {
28184
28185
  if (res.status === 428 || res.status === 401 || res.status === 403 || res.status === 404) {
28185
28186
  return { ok: false, reason: "no_session" };
28186
28187
  }
28187
- const text10 = await res.text();
28188
+ const text11 = await res.text();
28188
28189
  if (!res.ok) {
28189
- return { ok: false, reason: "upstream_failed", status: res.status, detail: text10.slice(0, 200) };
28190
+ return { ok: false, reason: "upstream_failed", status: res.status, detail: text11.slice(0, 200) };
28190
28191
  }
28191
28192
  let parsed;
28192
28193
  try {
28193
- parsed = JSON.parse(text10);
28194
+ parsed = JSON.parse(text11);
28194
28195
  } catch {
28195
28196
  return { ok: false, reason: "upstream_failed", status: res.status, detail: "unparseable_body" };
28196
28197
  }
@@ -28842,9 +28843,9 @@ async function getAndroidPixelDims(serial) {
28842
28843
  try {
28843
28844
  const args = serial ? ["-s", serial, "shell", "wm", "size"] : ["shell", "wm", "size"];
28844
28845
  const out2 = await runner.capture(ADB_BIN, args);
28845
- const text10 = out2.toString("utf8");
28846
- const override = /Override size:\s*(\d+)x(\d+)/.exec(text10);
28847
- const physical = /Physical size:\s*(\d+)x(\d+)/.exec(text10);
28846
+ const text11 = out2.toString("utf8");
28847
+ const override = /Override size:\s*(\d+)x(\d+)/.exec(text11);
28848
+ const physical = /Physical size:\s*(\d+)x(\d+)/.exec(text11);
28848
28849
  const m2 = override ?? physical;
28849
28850
  if (!m2) throw new Error("could not parse wm size");
28850
28851
  const dims = { width: parseInt(m2[1], 10), height: parseInt(m2[2], 10) };
@@ -30750,9 +30751,9 @@ function mdScan(src, linkStyle = "") {
30750
30751
  }
30751
30752
  return out2 + mdEsc(src.slice(last));
30752
30753
  }
30753
- function mdInline(text10, linkColor) {
30754
+ function mdInline(text11, linkColor) {
30754
30755
  const safe = typeof linkColor === "string" && /^[#a-zA-Z0-9(),.%\s-]+$/.test(linkColor) ? linkColor : "";
30755
- return { __html: mdScan(text10, safe ? ` style="color:${safe}"` : "") };
30756
+ return { __html: mdScan(text11, safe ? ` style="color:${safe}"` : "") };
30756
30757
  }
30757
30758
  function sevColor(ctx, sev) {
30758
30759
  switch (sev) {
@@ -31441,7 +31442,7 @@ function PickerLeadingVisual({ option, ctx, size = 20 }) {
31441
31442
  return null;
31442
31443
  }
31443
31444
  }
31444
- function PickerFieldBox({ look, ctx, option, text: text10, isPlaceholder, font, style }) {
31445
+ function PickerFieldBox({ look, ctx, option, text: text11, isPlaceholder, font, style }) {
31445
31446
  const C2 = ctx.color;
31446
31447
  return /* @__PURE__ */ jsxs2(
31447
31448
  "div",
@@ -31465,7 +31466,7 @@ function PickerFieldBox({ look, ctx, option, text: text10, isPlaceholder, font,
31465
31466
  },
31466
31467
  children: [
31467
31468
  !isPlaceholder && /* @__PURE__ */ jsx5(PickerLeadingVisual, { option, ctx }),
31468
- /* @__PURE__ */ jsx5("span", { style: { flex: 1, minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: isPlaceholder ? C2(look.placeholderColor, "#888") : C2("textPrimary", "#111") }, children: text10 }),
31469
+ /* @__PURE__ */ jsx5("span", { style: { flex: 1, minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: isPlaceholder ? C2(look.placeholderColor, "#888") : C2("textPrimary", "#111") }, children: text11 }),
31469
31470
  look.chevronIcon && /* @__PURE__ */ jsx5("span", { "data-picker-chevron": "", style: { flex: "none", display: "inline-grid", placeItems: "center" }, children: iconSvg(look.chevronIcon, { size: 16, color: C2("textSecondary", "#636b78") }) })
31470
31471
  ]
31471
31472
  }
@@ -31883,9 +31884,9 @@ function createRicosHostSession(o2) {
31883
31884
  if (!state.ready || state.unavailable) return;
31884
31885
  o2.send({ v: 1, type: "command", name, ...arg?.level ? { level: arg.level } : {}, ...arg?.value ? { value: arg.value } : {} });
31885
31886
  },
31886
- insertLink(url, text10) {
31887
+ insertLink(url, text11) {
31887
31888
  if (!state.ready || state.unavailable || !isSafeEditorLink(url)) return false;
31888
- o2.send({ v: 1, type: "insertLink", url: url.trim(), ...text10 ? { text: text10 } : {} });
31889
+ o2.send({ v: 1, type: "insertLink", url: url.trim(), ...text11 ? { text: text11 } : {} });
31889
31890
  return true;
31890
31891
  },
31891
31892
  removeLink() {
@@ -34357,8 +34358,8 @@ var init_esm = __esm({
34357
34358
 
34358
34359
  // ../../core/ts/src/rich-text-field.ts
34359
34360
  function richTextHtmlToPlainText(html) {
34360
- const text10 = decodeHTML(html.replace(/<(script|style)\b[^>]*>[\s\S]*?<\/\1\s*>/gi, "").replace(/<li\b[^>]*>/gi, "\u2022 ").replace(/<br\s*\/?>|<\/(?:p|div|li|h[1-6]|blockquote|pre|tr)\s*>/gi, "\n").replace(/<[^>]*>/g, ""));
34361
- return text10.replace(/\r\n?/g, "\n").replace(/\n{3,}/g, "\n\n").trim();
34361
+ const text11 = decodeHTML(html.replace(/<(script|style)\b[^>]*>[\s\S]*?<\/\1\s*>/gi, "").replace(/<li\b[^>]*>/gi, "\u2022 ").replace(/<br\s*\/?>|<\/(?:p|div|li|h[1-6]|blockquote|pre|tr)\s*>/gi, "\n").replace(/<[^>]*>/g, ""));
34362
+ return text11.replace(/\r\n?/g, "\n").replace(/\n{3,}/g, "\n\n").trim();
34362
34363
  }
34363
34364
  function richTextPlainTextToHtml(value) {
34364
34365
  if (value === "") return "";
@@ -34381,9 +34382,9 @@ function richTextEditedHtml(originalHtml, originalText, nextText) {
34381
34382
  if (/<(script|style)\b/i.test(source)) return richTextPlainTextToHtml(nextText);
34382
34383
  const spans = [];
34383
34384
  let visible = "";
34384
- const append = (text10, start, end, structural = false) => {
34385
- visible += text10;
34386
- for (let i2 = 0; i2 < text10.length; i2++) spans.push({ start, end, structural });
34385
+ const append = (text11, start, end, structural = false) => {
34386
+ visible += text11;
34387
+ for (let i2 = 0; i2 < text11.length; i2++) spans.push({ start, end, structural });
34387
34388
  };
34388
34389
  const token = /<[^>]*>|&(?:#\d+|#x[\da-f]+|[a-z][\da-z]+);?|[^<&]+/gi;
34389
34390
  for (const match of source.matchAll(token)) {
@@ -34437,7 +34438,7 @@ function richTextEditedHtml(originalHtml, originalText, nextText) {
34437
34438
  let edited = source;
34438
34439
  for (const span of removed.slice().reverse()) edited = edited.slice(0, span.start) + edited.slice(span.end);
34439
34440
  const insertionAfterDelete = insertionAt - removed.filter((span) => span.end <= insertionAt).reduce((n2, span) => n2 + span.end - span.start, 0);
34440
- const escape3 = (text10) => text10.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;").replace(/'/g, "&#39;").replace(/\n/g, "<br>");
34441
+ const escape3 = (text11) => text11.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;").replace(/'/g, "&#39;").replace(/\n/g, "<br>");
34441
34442
  const replacement = escape3(nextText.slice(prefix, newEnd));
34442
34443
  return edited.slice(0, insertionAfterDelete) + replacement + edited.slice(insertionAfterDelete);
34443
34444
  }
@@ -34542,13 +34543,13 @@ function NamedImage({ node, alt, env }) {
34542
34543
  }
34543
34544
  function Block({ b: b2, env, depth }) {
34544
34545
  const { ctx } = env;
34545
- const text10 = ctx.color("textPrimary", "#13171e");
34546
+ const text11 = ctx.color("textPrimary", "#13171e");
34546
34547
  const secondary = ctx.color("textSecondary", "#5c6370");
34547
34548
  const border = ctx.color("border", "#e5e5e5");
34548
34549
  switch (b2.kind) {
34549
34550
  case "paragraph":
34550
34551
  return /* @__PURE__ */ jsx9("p", { ...tid(env, b2.id, b2.kind), style: {
34551
- ...textStyle(ctx, "body", text10),
34552
+ ...textStyle(ctx, "body", text11),
34552
34553
  textAlign: b2.align,
34553
34554
  paddingInlineStart: b2.indent ? Math.min(b2.indent, 8) * 16 : void 0,
34554
34555
  minHeight: b2.spans.length ? void 0 : "1.5em"
@@ -34556,7 +34557,7 @@ function Block({ b: b2, env, depth }) {
34556
34557
  case "heading":
34557
34558
  return React9.createElement(
34558
34559
  `h${b2.level}`,
34559
- { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text10) },
34560
+ { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text11) },
34560
34561
  /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env })
34561
34562
  );
34562
34563
  case "list": {
@@ -34566,7 +34567,7 @@ function Block({ b: b2, env, depth }) {
34566
34567
  {
34567
34568
  ...tid(env, b2.id, b2.kind),
34568
34569
  start: b2.ordered ? b2.start : void 0,
34569
- style: { ...textStyle(ctx, "body", text10), paddingInlineStart: 24, listStyleType: b2.ordered ? "decimal" : depth % 2 ? "circle" : "disc" },
34570
+ style: { ...textStyle(ctx, "body", text11), paddingInlineStart: 24, listStyleType: b2.ordered ? "decimal" : depth % 2 ? "circle" : "disc" },
34570
34571
  children: b2.items.map((item, i2) => /* @__PURE__ */ jsx9("li", { "data-component-id": `${env.componentId}/${item.id}`, id: `${env.componentId}/${item.id}`, style: { marginBottom: 6 }, children: /* @__PURE__ */ jsx9("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: item.blocks.map((child, j2) => /* @__PURE__ */ jsx9(Block, { b: child, env, depth: depth + 1 }, `${j2}:${child.id}`)) }) }, `${i2}:${item.id}`))
34571
34572
  }
34572
34573
  );
@@ -34580,7 +34581,7 @@ function Block({ b: b2, env, depth }) {
34580
34581
  overflowWrap: "anywhere",
34581
34582
  fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
34582
34583
  fontSize: "0.9em",
34583
- color: text10,
34584
+ color: text11,
34584
34585
  background: ctx.color("surfaceSecondary", "#f5f5f7"),
34585
34586
  padding: 10,
34586
34587
  borderRadius: 6
@@ -34599,11 +34600,11 @@ function Block({ b: b2, env, depth }) {
34599
34600
  case "button":
34600
34601
  return /* @__PURE__ */ jsx9(LinkButton, { label: b2.label, url: b2.url, env, testId: `${env.componentId}/${b2.id}` });
34601
34602
  case "table":
34602
- return /* @__PURE__ */ jsx9("table", { ...tid(env, b2.id, b2.kind), style: { width: "100%", borderCollapse: "collapse", ...textStyle(ctx, "body", text10) }, children: /* @__PURE__ */ jsx9("tbody", { children: b2.rows.map((row, r3) => /* @__PURE__ */ jsx9("tr", { children: row.map((cell2, c2) => /* @__PURE__ */ jsx9("td", { style: { border: `1px solid ${border}`, padding: 6, whiteSpace: "pre-wrap", verticalAlign: "top" }, children: cell2 }, c2)) }, r3)) }) });
34603
+ return /* @__PURE__ */ jsx9("table", { ...tid(env, b2.id, b2.kind), style: { width: "100%", borderCollapse: "collapse", ...textStyle(ctx, "body", text11) }, children: /* @__PURE__ */ jsx9("tbody", { children: b2.rows.map((row, r3) => /* @__PURE__ */ jsx9("tr", { children: row.map((cell2, c2) => /* @__PURE__ */ jsx9("td", { style: { border: `1px solid ${border}`, padding: 6, whiteSpace: "pre-wrap", verticalAlign: "top" }, children: cell2 }, c2)) }, r3)) }) });
34603
34604
  case "card": {
34604
34605
  const title = richContentCardTitle(b2);
34605
34606
  return /* @__PURE__ */ jsxs6("div", { ...tid(env, b2.id, b2.kind), role: "group", "aria-label": title, style: { border: `1px solid ${border}`, borderRadius: 8, padding: 12, display: "flex", flexDirection: "column", gap: 6 }, children: [
34606
- /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "bodyEmphasis", text10), children: title }),
34607
+ /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "bodyEmphasis", text11), children: title }),
34607
34608
  b2.url ? /* @__PURE__ */ jsxs6(Fragment3, { children: [
34608
34609
  /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "caption", secondary), children: richContentHost(b2.url) }),
34609
34610
  /* @__PURE__ */ jsx9(LinkButton, { label: RICH_CONTENT_OPEN_LABEL, url: b2.url, env, testId: `${env.componentId}/${b2.id}/open` })
@@ -34632,10 +34633,10 @@ var init_richContent = __esm({
34632
34633
 
34633
34634
  // ../../core/web-renderer/src/pdfPageCount.ts
34634
34635
  function pdfPageCount(bytes2) {
34635
- const text10 = pdfObjectSyntax(new TextDecoder("latin1").decode(bytes2));
34636
- const rooted = pdfRootPageCount(text10);
34636
+ const text11 = pdfObjectSyntax(new TextDecoder("latin1").decode(bytes2));
34637
+ const rooted = pdfRootPageCount(text11);
34637
34638
  let scanned = null;
34638
- for (const m2 of text10.matchAll(/<<((?:(?!<<|>>)[\s\S])*)>>/g)) {
34639
+ for (const m2 of text11.matchAll(/<<((?:(?!<<|>>)[\s\S])*)>>/g)) {
34639
34640
  const dict = m2[1];
34640
34641
  if (!/\/Type\s*\/Pages(?![A-Za-z])/.test(dict)) continue;
34641
34642
  const c2 = /\/Count\s+(\d+)/.exec(dict);
@@ -34647,24 +34648,24 @@ function pdfPageCount(bytes2) {
34647
34648
  if (rooted !== null && scanned !== null && rooted !== scanned) return null;
34648
34649
  return count2 <= PDF_MAX_PLAUSIBLE_PAGES ? count2 : null;
34649
34650
  }
34650
- function pdfObjectSyntax(text10) {
34651
- const out2 = text10.split("");
34651
+ function pdfObjectSyntax(text11) {
34652
+ const out2 = text11.split("");
34652
34653
  const blank = (from, to2) => {
34653
34654
  for (let k2 = from; k2 < to2; k2++) out2[k2] = " ";
34654
34655
  };
34655
34656
  let i2 = 0;
34656
- while (i2 < text10.length) {
34657
- const c2 = text10[i2];
34657
+ while (i2 < text11.length) {
34658
+ const c2 = text11[i2];
34658
34659
  if (c2 === "%") {
34659
- const eol = text10.slice(i2).search(/[\r\n]/);
34660
- const end = eol < 0 ? text10.length : i2 + eol;
34660
+ const eol = text11.slice(i2).search(/[\r\n]/);
34661
+ const end = eol < 0 ? text11.length : i2 + eol;
34661
34662
  blank(i2, end);
34662
34663
  i2 = end;
34663
34664
  } else if (c2 === "(") {
34664
34665
  let depth = 0;
34665
34666
  let j2 = i2;
34666
- for (; j2 < text10.length; j2++) {
34667
- const d2 = text10[j2];
34667
+ for (; j2 < text11.length; j2++) {
34668
+ const d2 = text11[j2];
34668
34669
  if (d2 === "\\") {
34669
34670
  j2++;
34670
34671
  continue;
@@ -34674,21 +34675,21 @@ function pdfObjectSyntax(text10) {
34674
34675
  }
34675
34676
  blank(i2, j2 + 1);
34676
34677
  i2 = j2 + 1;
34677
- } else if (c2 === "<" && text10[i2 + 1] !== "<") {
34678
- const end = text10.indexOf(">", i2);
34679
- const stop = end < 0 ? text10.length : end + 1;
34678
+ } else if (c2 === "<" && text11[i2 + 1] !== "<") {
34679
+ const end = text11.indexOf(">", i2);
34680
+ const stop = end < 0 ? text11.length : end + 1;
34680
34681
  blank(i2, stop);
34681
34682
  i2 = stop;
34682
- } else if (c2 === "<" && text10[i2 + 1] === "<") {
34683
+ } else if (c2 === "<" && text11[i2 + 1] === "<") {
34683
34684
  i2 += 2;
34684
34685
  } else if (
34685
34686
  // The `stream` KEYWORD, not the tail of a name (`/my-stream`) or of `endstream`: preceded by
34686
34687
  // whitespace or the `>>` that closes its dictionary, and followed by CRLF or LF (PDF 32000
34687
34688
  // §7.3.8.1 — a CR alone is not allowed there).
34688
- text10.startsWith("stream", i2) && /[\s>]/.test(text10[i2 - 1] ?? "") && (text10[i2 + 6] === "\n" || text10.startsWith("\r\n", i2 + 6))
34689
+ text11.startsWith("stream", i2) && /[\s>]/.test(text11[i2 - 1] ?? "") && (text11[i2 + 6] === "\n" || text11.startsWith("\r\n", i2 + 6))
34689
34690
  ) {
34690
- const end = text10.indexOf("endstream", i2 + 6);
34691
- const stop = end < 0 ? text10.length : end;
34691
+ const end = text11.indexOf("endstream", i2 + 6);
34692
+ const stop = end < 0 ? text11.length : end;
34692
34693
  blank(i2 + 6, stop);
34693
34694
  i2 = stop + "endstream".length;
34694
34695
  } else {
@@ -36126,19 +36127,19 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
36126
36127
  if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) {
36127
36128
  return value;
36128
36129
  }
36129
- return value.replaceAll(/=\?([\w-]*)\?([QB])\?((?:[^?]|\?(?!=))*)\?=/gi, function(matches, charset, encoding, text10) {
36130
+ return value.replaceAll(/=\?([\w-]*)\?([QB])\?((?:[^?]|\?(?!=))*)\?=/gi, function(matches, charset, encoding, text11) {
36130
36131
  if (encoding === "q" || encoding === "Q") {
36131
- text10 = text10.replaceAll("_", " ");
36132
- text10 = text10.replaceAll(/=([0-9a-f]{2})/gi, function(match, hex2) {
36132
+ text11 = text11.replaceAll("_", " ");
36133
+ text11 = text11.replaceAll(/=([0-9a-f]{2})/gi, function(match, hex2) {
36133
36134
  return String.fromCharCode(parseInt(hex2, 16));
36134
36135
  });
36135
- return textdecode(charset, text10);
36136
+ return textdecode(charset, text11);
36136
36137
  }
36137
36138
  try {
36138
- text10 = atob(text10);
36139
+ text11 = atob(text11);
36139
36140
  } catch {
36140
36141
  }
36141
- return textdecode(charset, text10);
36142
+ return textdecode(charset, text11);
36142
36143
  });
36143
36144
  }
36144
36145
  return "";
@@ -37008,11 +37009,11 @@ var init_pdf = __esm({
37008
37009
  var DESCRIPTORS = __webpack_require__3(3724);
37009
37010
  var definePropertyModule = __webpack_require__3(4913);
37010
37011
  var createPropertyDescriptor = __webpack_require__3(6980);
37011
- module.exports = DESCRIPTORS ? function(object8, key3, value) {
37012
- return definePropertyModule.f(object8, key3, createPropertyDescriptor(1, value));
37013
- } : function(object8, key3, value) {
37014
- object8[key3] = value;
37015
- return object8;
37012
+ module.exports = DESCRIPTORS ? function(object9, key3, value) {
37013
+ return definePropertyModule.f(object9, key3, createPropertyDescriptor(1, value));
37014
+ } : function(object9, key3, value) {
37015
+ object9[key3] = value;
37016
+ return object9;
37016
37017
  };
37017
37018
  },
37018
37019
  /***/
@@ -37031,9 +37032,9 @@ var init_pdf = __esm({
37031
37032
  var DESCRIPTORS = __webpack_require__3(3724);
37032
37033
  var definePropertyModule = __webpack_require__3(4913);
37033
37034
  var createPropertyDescriptor = __webpack_require__3(6980);
37034
- module.exports = function(object8, key3, value) {
37035
- if (DESCRIPTORS) definePropertyModule.f(object8, key3, createPropertyDescriptor(0, value));
37036
- else object8[key3] = value;
37035
+ module.exports = function(object9, key3, value) {
37036
+ if (DESCRIPTORS) definePropertyModule.f(object9, key3, createPropertyDescriptor(0, value));
37037
+ else object9[key3] = value;
37037
37038
  };
37038
37039
  },
37039
37040
  /***/
@@ -37323,9 +37324,9 @@ var init_pdf = __esm({
37323
37324
  6706(module, __unused_webpack_exports, __webpack_require__3) {
37324
37325
  var uncurryThis = __webpack_require__3(9504);
37325
37326
  var aCallable = __webpack_require__3(9306);
37326
- module.exports = function(object8, key3, method) {
37327
+ module.exports = function(object9, key3, method) {
37327
37328
  try {
37328
- return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object8, key3)[method]));
37329
+ return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object9, key3)[method]));
37329
37330
  } catch (error) {
37330
37331
  }
37331
37332
  };
@@ -38293,13 +38294,13 @@ var init_pdf = __esm({
38293
38294
  var $Object = Object;
38294
38295
  var ObjectPrototype = $Object.prototype;
38295
38296
  module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O2) {
38296
- var object8 = toObject(O2);
38297
- if (hasOwn(object8, IE_PROTO)) return object8[IE_PROTO];
38298
- var constructor = object8.constructor;
38299
- if (isCallable(constructor) && object8 instanceof constructor) {
38297
+ var object9 = toObject(O2);
38298
+ if (hasOwn(object9, IE_PROTO)) return object9[IE_PROTO];
38299
+ var constructor = object9.constructor;
38300
+ if (isCallable(constructor) && object9 instanceof constructor) {
38300
38301
  return constructor.prototype;
38301
38302
  }
38302
- return object8 instanceof $Object ? ObjectPrototype : null;
38303
+ return object9 instanceof $Object ? ObjectPrototype : null;
38303
38304
  };
38304
38305
  },
38305
38306
  /***/
@@ -38315,8 +38316,8 @@ var init_pdf = __esm({
38315
38316
  var indexOf = __webpack_require__3(9617).indexOf;
38316
38317
  var hiddenKeys = __webpack_require__3(421);
38317
38318
  var push = uncurryThis([].push);
38318
- module.exports = function(object8, names2) {
38319
- var O2 = toIndexedObject(object8);
38319
+ module.exports = function(object9, names2) {
38320
+ var O2 = toIndexedObject(object9);
38320
38321
  var i2 = 0;
38321
38322
  var result = [];
38322
38323
  var key3;
@@ -39759,13 +39760,13 @@ var init_pdf = __esm({
39759
39760
  }
39760
39761
  return call(reviver, holder, name, val, context);
39761
39762
  };
39762
- var internalizeProperty = function(object8, key3, value) {
39763
+ var internalizeProperty = function(object9, key3, value) {
39763
39764
  if (DESCRIPTORS) {
39764
- var descriptor = getOwnPropertyDescriptor(object8, key3);
39765
+ var descriptor = getOwnPropertyDescriptor(object9, key3);
39765
39766
  if (descriptor && !descriptor.configurable) return;
39766
39767
  }
39767
- if (value === void 0) delete object8[key3];
39768
- else createProperty(object8, key3, value);
39768
+ if (value === void 0) delete object9[key3];
39769
+ else createProperty(object9, key3, value);
39769
39770
  };
39770
39771
  var Node2 = function(value, end, source, nodes) {
39771
39772
  this.value = value;
@@ -39810,7 +39811,7 @@ var init_pdf = __esm({
39810
39811
  var source = this.source;
39811
39812
  var i2 = this.index + 1;
39812
39813
  var expectKeypair = false;
39813
- var object8 = {};
39814
+ var object9 = {};
39814
39815
  var nodes = {};
39815
39816
  var closed = false;
39816
39817
  while (i2 < source.length) {
@@ -39827,7 +39828,7 @@ var init_pdf = __esm({
39827
39828
  i2 = this.skip(IS_WHITESPACE, i2);
39828
39829
  result = this.fork(i2).parse();
39829
39830
  createProperty(nodes, key3, result);
39830
- createProperty(object8, key3, result.value);
39831
+ createProperty(object9, key3, result.value);
39831
39832
  i2 = this.until([",", "}"], result.end);
39832
39833
  var chr = at2(source, i2);
39833
39834
  if (chr === ",") {
@@ -39840,7 +39841,7 @@ var init_pdf = __esm({
39840
39841
  }
39841
39842
  }
39842
39843
  if (!closed) throw new SyntaxError2("Unterminated object at: " + i2);
39843
- return this.node(OBJECT, object8, this.index, i2, nodes);
39844
+ return this.node(OBJECT, object9, this.index, i2, nodes);
39844
39845
  },
39845
39846
  array: function() {
39846
39847
  var source = this.source;
@@ -39930,8 +39931,8 @@ var init_pdf = __esm({
39930
39931
  return 1 / nativeParse("-0 ") !== -Infinity;
39931
39932
  });
39932
39933
  $2({ target: "JSON", stat: true, forced: NO_SOURCE_SUPPORT }, {
39933
- parse: function parse4(text10, reviver) {
39934
- return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text10) : $parse(text10, reviver);
39934
+ parse: function parse4(text11, reviver) {
39935
+ return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text11) : $parse(text11, reviver);
39935
39936
  }
39936
39937
  });
39937
39938
  },
@@ -40069,7 +40070,7 @@ var init_pdf = __esm({
40069
40070
  return ordered;
40070
40071
  };
40071
40072
  if ($stringify) $2({ target: "JSON", stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE || !NATIVE_RAW_JSON }, {
40072
- stringify: function stringify(text10, replacer, space) {
40073
+ stringify: function stringify(text11, replacer, space) {
40073
40074
  var replacerFunction = isCallable(replacer) ? replacer : void 0;
40074
40075
  var propertyList = replacerFunction ? void 0 : getPropertyList(replacer);
40075
40076
  var keyPrefix = propertyList && getKeyPrefix(propertyList);
@@ -40079,7 +40080,7 @@ var init_pdf = __esm({
40079
40080
  var currentOrdered;
40080
40081
  var marked = false;
40081
40082
  var root = true;
40082
- var json8 = stringifyWithProperSymbolsConversion(text10, function(key3, value) {
40083
+ var json8 = stringifyWithProperSymbolsConversion(text11, function(key3, value) {
40083
40084
  key3 = $String(key3);
40084
40085
  if (propertyList) {
40085
40086
  if (key3 === END_MARK) {
@@ -43151,7 +43152,7 @@ var init_pdf = __esm({
43151
43152
  focusNode,
43152
43153
  focusOffset
43153
43154
  } = selection;
43154
- const text10 = selection.toString();
43155
+ const text11 = selection.toString();
43155
43156
  const anchorElement = this.#getAnchorElementForSelection(selection);
43156
43157
  const textLayer = anchorElement.closest(".textLayer");
43157
43158
  const boxes = this.getSelectionBoxes(textLayer);
@@ -43172,7 +43173,7 @@ var init_pdf = __esm({
43172
43173
  anchorOffset,
43173
43174
  focusNode,
43174
43175
  focusOffset,
43175
- text: text10
43176
+ text: text11
43176
43177
  });
43177
43178
  if (isNoneMode) {
43178
43179
  this.showAllEditors("highlight", true, true);
@@ -44878,32 +44879,32 @@ var init_pdf = __esm({
44878
44879
  deleted: this.isDeleted()
44879
44880
  };
44880
44881
  }
44881
- set data(text10) {
44882
- if (text10 !== this.#text) {
44882
+ set data(text11) {
44883
+ if (text11 !== this.#text) {
44883
44884
  this.#richText = null;
44884
44885
  }
44885
- if (text10 === null) {
44886
+ if (text11 === null) {
44886
44887
  this.#text = "";
44887
44888
  this.#deleted = true;
44888
44889
  return;
44889
44890
  }
44890
- this.#text = text10;
44891
+ this.#text = text11;
44891
44892
  this.#date = /* @__PURE__ */ new Date();
44892
44893
  this.#deleted = false;
44893
44894
  }
44894
44895
  restoreData({
44895
- text: text10,
44896
+ text: text11,
44896
44897
  richText,
44897
44898
  date
44898
44899
  }) {
44899
- this.#text = text10;
44900
+ this.#text = text11;
44900
44901
  this.#richText = richText;
44901
44902
  this.#date = date;
44902
44903
  this.#deleted = false;
44903
44904
  }
44904
- setInitialText(text10, richText = null) {
44905
- this.#initialText = text10;
44906
- this.data = text10;
44905
+ setInitialText(text11, richText = null) {
44906
+ this.#initialText = text11;
44907
+ this.data = text11;
44907
44908
  this.#date = null;
44908
44909
  this.#richText = richText;
44909
44910
  }
@@ -45954,8 +45955,8 @@ var init_pdf = __esm({
45954
45955
  get guessedAltText() {
45955
45956
  return this.#altText?.guessedText;
45956
45957
  }
45957
- async setGuessedAltText(text10) {
45958
- await this.#altText?.setGuessedText(text10);
45958
+ async setGuessedAltText(text11) {
45959
+ await this.#altText?.setGuessedText(text11);
45959
45960
  }
45960
45961
  serializeAltText(isForCopying) {
45961
45962
  return this.#altText?.serialize(isForCopying);
@@ -46002,13 +46003,13 @@ var init_pdf = __esm({
46002
46003
  const {
46003
46004
  data: {
46004
46005
  richText,
46005
- text: text10,
46006
+ text: text11,
46006
46007
  date,
46007
46008
  deleted
46008
46009
  }
46009
46010
  } = this.#comment;
46010
46011
  return {
46011
- text: text10,
46012
+ text: text11,
46012
46013
  richText,
46013
46014
  date,
46014
46015
  deleted,
@@ -56802,13 +56803,13 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
56802
56803
  } = this;
56803
56804
  return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || "";
56804
56805
  }
56805
- set commentText(text10) {
56806
+ set commentText(text11) {
56806
56807
  const {
56807
56808
  data
56808
56809
  } = this;
56809
56810
  const popup = {
56810
- deleted: !text10,
56811
- contents: text10 || ""
56811
+ deleted: !text11,
56812
+ contents: text11 || ""
56812
56813
  };
56813
56814
  if (!this.annotationStorage.updateEditor(data.id, {
56814
56815
  popup
@@ -56822,7 +56823,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
56822
56823
  modificationDate: /* @__PURE__ */ new Date()
56823
56824
  });
56824
56825
  }
56825
- if (!text10) {
56826
+ if (!text11) {
56826
56827
  this.removePopup();
56827
56828
  }
56828
56829
  }
@@ -57374,9 +57375,9 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
57374
57375
  get commentText() {
57375
57376
  return this.editor.comment.text;
57376
57377
  }
57377
- set commentText(text10) {
57378
- this.editor.comment = text10;
57379
- if (!text10) {
57378
+ set commentText(text11) {
57379
+ this.editor.comment = text11;
57380
+ if (!text11) {
57380
57381
  this.removePopup();
57381
57382
  }
57382
57383
  }
@@ -58834,11 +58835,11 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58834
58835
  this.#commentText ||= this.#firstElement.commentText;
58835
58836
  return this.#commentText;
58836
58837
  }
58837
- set comment(text10) {
58838
- if (text10 === this.comment) {
58838
+ set comment(text11) {
58839
+ if (text11 === this.comment) {
58839
58840
  return;
58840
58841
  }
58841
- this.#firstElement.commentText = this.#commentText = text10;
58842
+ this.#firstElement.commentText = this.#commentText = text11;
58842
58843
  }
58843
58844
  focus() {
58844
58845
  this.#firstElement.container?.focus();
@@ -58955,10 +58956,10 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58955
58956
  get #fontColor() {
58956
58957
  return this.#html?.attributes?.style?.color || null;
58957
58958
  }
58958
- #makePopupContent(text10) {
58959
+ #makePopupContent(text11) {
58959
58960
  const popupLines = [];
58960
58961
  const popupContent = {
58961
- str: text10,
58962
+ str: text11,
58962
58963
  html: {
58963
58964
  name: "div",
58964
58965
  attributes: {
@@ -58976,7 +58977,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58976
58977
  fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : ""
58977
58978
  }
58978
58979
  };
58979
- for (const line of text10.split("\n")) {
58980
+ for (const line of text11.split("\n")) {
58980
58981
  popupLines.push({
58981
58982
  name: "span",
58982
58983
  value: line,
@@ -60485,9 +60486,9 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
60485
60486
  if (savedText === newText) {
60486
60487
  return;
60487
60488
  }
60488
- const setText = (text10) => {
60489
- this.#content = text10;
60490
- if (!text10) {
60489
+ const setText = (text11) => {
60490
+ this.#content = text11;
60491
+ if (!text11) {
60491
60492
  this.remove();
60492
60493
  return;
60493
60494
  }
@@ -64302,7 +64303,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64302
64303
  const uint8Buf = this.#toUint8(grayImage);
64303
64304
  return [uint8Buf, newWidth, newHeight];
64304
64305
  }
64305
- static extractContoursFromText(text10, {
64306
+ static extractContoursFromText(text11, {
64306
64307
  fontFamily,
64307
64308
  fontStyle,
64308
64309
  fontWeight
@@ -64321,7 +64322,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64321
64322
  fontBoundingBoxAscent,
64322
64323
  fontBoundingBoxDescent,
64323
64324
  width
64324
- } = ctx.measureText(text10);
64325
+ } = ctx.measureText(text11);
64325
64326
  const SCALE = 1.5;
64326
64327
  const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);
64327
64328
  const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);
@@ -64335,7 +64336,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64335
64336
  ctx.fillStyle = "white";
64336
64337
  ctx.fillRect(0, 0, canvasWidth, canvasHeight);
64337
64338
  ctx.fillStyle = "black";
64338
- ctx.fillText(text10, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);
64339
+ ctx.fillText(text11, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);
64339
64340
  const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);
64340
64341
  const histogram = this.#getHistogram(uint8Buf);
64341
64342
  const threshold = this.#guessThreshold(histogram);
@@ -64837,7 +64838,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64837
64838
  } = this.parent.viewport;
64838
64839
  return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64839
64840
  }
64840
- getFromText(text10, fontInfo) {
64841
+ getFromText(text11, fontInfo) {
64841
64842
  const {
64842
64843
  rawDims: {
64843
64844
  pageWidth,
@@ -64845,7 +64846,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64845
64846
  },
64846
64847
  rotation
64847
64848
  } = this.parent.viewport;
64848
- return SignatureExtractor.extractContoursFromText(text10, fontInfo, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64849
+ return SignatureExtractor.extractContoursFromText(text11, fontInfo, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64849
64850
  }
64850
64851
  getDrawnSignature(curves) {
64851
64852
  const {
@@ -116188,11 +116189,11 @@ function pluralArgNames(pattern) {
116188
116189
  return out2;
116189
116190
  }
116190
116191
  function formatInterpolated(pattern, params, resolvedByKey, ctx) {
116191
- const numeric = pluralArgNames(pattern);
116192
+ const numeric2 = pluralArgNames(pattern);
116192
116193
  const args = {};
116193
116194
  for (const [k2, raw] of Object.entries(params)) {
116194
116195
  const v2 = k2 in resolvedByKey ? resolvedByKey[k2] : raw;
116195
- if (!numeric.has(k2)) {
116196
+ if (!numeric2.has(k2)) {
116196
116197
  args[k2] = v2;
116197
116198
  continue;
116198
116199
  }
@@ -116728,9 +116729,9 @@ function withExtras(name, render) {
116728
116729
  Wrapped.displayName = name;
116729
116730
  return Wrapped;
116730
116731
  }
116731
- function rememberReveal(text10, n2) {
116732
+ function rememberReveal(text11, n2) {
116732
116733
  if (revealProgress.size > 500) revealProgress.clear();
116733
- revealProgress.set(text10, n2);
116734
+ revealProgress.set(text11, n2);
116734
116735
  }
116735
116736
  function revealHtml(html, shown2, fade) {
116736
116737
  let w2 = 0;
@@ -117574,8 +117575,8 @@ function applyA11ySemantics(node, ctx, extra) {
117574
117575
  extra["aria-live"] = str11(announce.politeness) === "assertive" ? "assertive" : "polite";
117575
117576
  extra["aria-atomic"] = "true";
117576
117577
  extra["aria-relevant"] = trigger === "on_appear" ? "additions" : trigger === "both" ? "additions text" : "text";
117577
- const text10 = str11(announce.text);
117578
- if (text10 && extra["aria-label"] == null) extra["aria-label"] = text10;
117578
+ const text11 = str11(announce.text);
117579
+ if (text11 && extra["aria-label"] == null) extra["aria-label"] = text11;
117579
117580
  }
117580
117581
  }
117581
117582
  return hint;
@@ -119901,13 +119902,13 @@ var init_renderNode = __esm({
119901
119902
  const C2 = ctx.color;
119902
119903
  const isBoundText = typeof props.textPath === "string" && isBinding(props.textPath);
119903
119904
  const bound = useResolvedScalar(isBoundText ? props.textPath : void 0, ctx);
119904
- const text10 = isBoundText ? typeof bound === "string" || typeof bound === "number" ? String(bound) : "" : literalErrorText;
119905
+ const text11 = isBoundText ? typeof bound === "string" || typeof bound === "number" ? String(bound) : "" : literalErrorText;
119905
119906
  if (props.visible === false) return null;
119906
- if (isBoundText && !text10) return null;
119907
+ if (isBoundText && !text11) return null;
119907
119908
  const c2 = (props.severity ?? "error") === "warning" ? C2("warning", "#E89F00") : C2("danger", "#E62214");
119908
119909
  return /* @__PURE__ */ jsxs8("div", { role: "alert", style: { display: "flex", gap: 6, alignItems: "center", color: c2, fontSize: pxToRem(13), fontFamily: bodyFont(ctx), ...wrap }, children: [
119909
119910
  /* @__PURE__ */ jsx11("span", { "aria-hidden": "true", children: "\u26A0" }),
119910
- text10
119911
+ text11
119911
119912
  ] });
119912
119913
  });
119913
119914
  FormView = withExtras("FormView", ({ props, ctx, wrap }) => {
@@ -120533,7 +120534,7 @@ var init_renderNode = __esm({
120533
120534
  const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
120534
120535
  const label3 = typeof props.title === "string" && props.title ? props.title : "PDF document";
120535
120536
  const documentStyle = showPageControls || zoomable || allowShare ? { display: "block", width: "100%", flex: "1 1 auto", minHeight: ph ? 0 : 280, border: "none" } : frame;
120536
- const object8 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React11.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
120537
+ const object9 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React11.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
120537
120538
  PdfDocumentCanvas,
120538
120539
  {
120539
120540
  src: loadSrc ?? src,
@@ -120547,7 +120548,7 @@ var init_renderNode = __esm({
120547
120548
  style: documentStyle
120548
120549
  }
120549
120550
  ) });
120550
- if (!showPageControls && !zoomable && !allowShare) return object8;
120551
+ if (!showPageControls && !zoomable && !allowShare) return object9;
120551
120552
  const C2 = ctx.color;
120552
120553
  const go2 = (p2) => setNav({ from: rawUrl, page: Math.max(1, pageCount != null ? Math.min(p2, pageCount) : p2), zoom: view.zoom });
120553
120554
  const zoomBy = (d2) => setNav({ from: rawUrl, page: view.page, zoom: pdfZoomStep(view.zoom ?? sourceZoomPercent(sourceHash) ?? null, d2) });
@@ -120565,7 +120566,7 @@ var init_renderNode = __esm({
120565
120566
  const downloadHref = plan?.mode === "retype" ? base : directDoc?.blobUrl ?? null;
120566
120567
  const openHref = base + pdfOpenFragment(sourceHash, { page: shownPage, zoom: zoomable ? view.zoom : null, viewerChrome: true });
120567
120568
  return /* @__PURE__ */ jsxs8("div", { "data-himalaya-pdf": "reader", style: { ...frame, display: "flex", flexDirection: "column", background: C2("surfaceTertiary", "#f4f4f4") }, children: [
120568
- object8,
120569
+ object9,
120569
120570
  /* @__PURE__ */ jsxs8(
120570
120571
  "div",
120571
120572
  {
@@ -120674,8 +120675,8 @@ var init_renderNode = __esm({
120674
120675
  const look = pickerFieldLook(props.field, ctx);
120675
120676
  const shownSel = ctx.onAction ? sel : ctx.empty ? null : selectedId;
120676
120677
  const picked = opts.find((o2) => o2 != null && String(o2.id) === String(shownSel ?? ""));
120677
- const text10 = picked ? labelOf(picked) : String(placeholderText || "Select");
120678
- const box = /* @__PURE__ */ jsx11(PickerFieldBox, { look, ctx, option: picked, text: text10, isPlaceholder: !picked, font: bodyFont(ctx) });
120678
+ const text11 = picked ? labelOf(picked) : String(placeholderText || "Select");
120679
+ const box = /* @__PURE__ */ jsx11(PickerFieldBox, { look, ctx, option: picked, text: text11, isPlaceholder: !picked, font: bodyFont(ctx) });
120679
120680
  if (!ctx.onAction) return /* @__PURE__ */ jsx11("div", { style: { width: "100%", ...wrap }, children: box });
120680
120681
  return /* @__PURE__ */ jsxs8("div", { ...{ [A11Y_PART]: "root" }, "data-hm-picker-focus": "", style: { position: "relative", width: "100%", ...wrap }, children: [
120681
120682
  box,
@@ -120694,7 +120695,7 @@ var init_renderNode = __esm({
120694
120695
  ...pickerA11yProps,
120695
120696
  style: { position: "absolute", inset: 0, width: "100%", height: "100%", opacity: 0, cursor: "pointer", margin: 0, border: 0, fontSize: pxToRem(15) },
120696
120697
  children: [
120697
- !picked && /* @__PURE__ */ jsx11("option", { value: "", disabled: true, children: text10 }),
120698
+ !picked && /* @__PURE__ */ jsx11("option", { value: "", disabled: true, children: text11 }),
120698
120699
  opts.map((o2, i2) => /* @__PURE__ */ jsx11("option", { value: o2?.id, disabled: !pickerOptionPickable(o2), children: labelOf(o2) }, o2?.id ?? i2))
120699
120700
  ]
120700
120701
  }
@@ -121144,37 +121145,37 @@ var init_renderNode = __esm({
121144
121145
  REVEAL_BUFFER = 12;
121145
121146
  revealProgress = /* @__PURE__ */ new Map();
121146
121147
  countWords = (s2) => s2.split(/\s+/).filter((t2) => t2 !== "").length;
121147
- RevealText = ({ text: text10, reduce, markdownHtml }) => {
121148
- const tokens2 = React11.useMemo(() => text10.split(/(\s+)/).filter((t2) => t2 !== ""), [text10]);
121148
+ RevealText = ({ text: text11, reduce, markdownHtml }) => {
121149
+ const tokens2 = React11.useMemo(() => text11.split(/(\s+)/).filter((t2) => t2 !== ""), [text11]);
121149
121150
  const total = React11.useMemo(
121150
- () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text10),
121151
- [text10, markdownHtml]
121151
+ () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text11),
121152
+ [text11, markdownHtml]
121152
121153
  );
121153
121154
  const [shown2, setShown] = React11.useState(total);
121154
121155
  const prevRef = React11.useRef(null);
121155
121156
  useIsomorphicLayoutEffect(() => {
121156
121157
  const prev = prevRef.current;
121157
- prevRef.current = text10;
121158
+ prevRef.current = text11;
121158
121159
  if (reduce) {
121159
- rememberReveal(text10, total);
121160
+ rememberReveal(text11, total);
121160
121161
  setShown(total);
121161
121162
  return;
121162
121163
  }
121163
- let start = revealProgress.get(text10);
121164
- if (start == null) start = prev != null && text10.startsWith(prev) ? revealProgress.get(prev) ?? countWords(prev) : 0;
121164
+ let start = revealProgress.get(text11);
121165
+ if (start == null) start = prev != null && text11.startsWith(prev) ? revealProgress.get(prev) ?? countWords(prev) : 0;
121165
121166
  start = Math.max(start, total - REVEAL_BUFFER);
121166
- rememberReveal(text10, start);
121167
+ rememberReveal(text11, start);
121167
121168
  setShown(start);
121168
121169
  if (start >= total) return;
121169
121170
  let n2 = start;
121170
121171
  const id = setInterval(() => {
121171
121172
  n2 += 1;
121172
- rememberReveal(text10, n2);
121173
+ rememberReveal(text11, n2);
121173
121174
  setShown(n2);
121174
121175
  if (n2 >= total) clearInterval(id);
121175
121176
  }, REVEAL_RELEASE_MS);
121176
121177
  return () => clearInterval(id);
121177
- }, [text10, reduce, total]);
121178
+ }, [text11, reduce, total]);
121178
121179
  const fade = reduce ? void 0 : `opacity ${REVEAL_FADE_MS}ms ease-out`;
121179
121180
  if (markdownHtml != null) {
121180
121181
  return /* @__PURE__ */ jsx11(
@@ -122177,7 +122178,7 @@ var init_renderNode = __esm({
122177
122178
  TooltipNode = withExtras("TooltipNode", ({ props, ctx, wrap }) => {
122178
122179
  const C2 = ctx.color;
122179
122180
  const title = useBoundString(props.title, ctx);
122180
- const text10 = useBoundString(props.text, ctx);
122181
+ const text11 = useBoundString(props.text, ctx);
122181
122182
  const rich = title !== "";
122182
122183
  const trigger = resolveTooltipTrigger(props.trigger, "pointer");
122183
122184
  const edge = resolveOverlayEdge("Tooltip", props.edge);
@@ -122267,7 +122268,7 @@ var init_renderNode = __esm({
122267
122268
  // A held press would otherwise open the browser's own context menu over the bubble.
122268
122269
  onContextMenu: (e2) => e2.preventDefault()
122269
122270
  };
122270
- const hint = [title, text10].filter((s2) => s2 !== "").join(". ");
122271
+ const hint = [title, text11].filter((s2) => s2 !== "").join(". ");
122271
122272
  const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
122272
122273
  const wrapperHintId = `hm-tip-hint${React11.useId()}`;
122273
122274
  useIsomorphicLayoutEffect(() => {
@@ -122300,7 +122301,7 @@ var init_renderNode = __esm({
122300
122301
  ] }) }),
122301
122302
  open && /* @__PURE__ */ jsxs8("div", { ref: bubbleRef, role: "tooltip", "data-hm-tooltip-edge": placed, style: { position: "absolute", zIndex: 45, maxWidth: Math.min(240, placement.maxWidth), overflowWrap: placement.maxWidth < 240 ? "anywhere" : void 0, width: "max-content", background: C2("textPrimary", "#13171e"), color: C2("textOnAccent", "#fff"), borderRadius: 8, padding: rich ? "10px 12px" : "6px 10px", fontFamily: bodyFont(ctx), fontSize: pxToRem(13), lineHeight: 1.35, boxShadow: "0 4px 14px rgba(0,0,0,.18)", ...overlayEdgeStyle(placed, TOOLTIP_GAP), translate: `${placement.x}px ${placement.y}px` }, children: [
122302
122303
  rich && /* @__PURE__ */ jsx11("div", { style: { fontWeight: 700, marginBottom: 3 }, children: title }),
122303
- text10
122304
+ text11
122304
122305
  ] })
122305
122306
  ] });
122306
122307
  });
@@ -124894,8 +124895,8 @@ function buildRenderTree(node, path2 = "$", provider = null, itemScope = void 0,
124894
124895
  const asText3 = VALUE_PATH_TEXT.get(type);
124895
124896
  if (typeof valuePath === "string" && asText3 && (valuePath.startsWith("$service:") || /^\$item\.[^.]/.test(valuePath))) {
124896
124897
  const r3 = resolveTreeScalar(valuePath, provider, itemScope);
124897
- const text10 = asText3(r3, props);
124898
- if (text10 !== void 0) values.value = text10;
124898
+ const text11 = asText3(r3, props);
124899
+ if (text11 !== void 0) values.value = text11;
124899
124900
  else if (r3 !== void 0 && r3 !== null) {
124900
124901
  delete values.value;
124901
124902
  }
@@ -126844,11 +126845,11 @@ async function handleOwnerChatRequest(req, res) {
126844
126845
  return sendJson(res, 400, { error: "invalid_json" }, cors);
126845
126846
  }
126846
126847
  const chatroomId = (parsed.chatroomId ?? "").trim();
126847
- const text10 = (parsed.text ?? "").trim();
126848
- if (!chatroomId || !text10) return sendJson(res, 400, { error: "chatroomId_and_text_required" }, cors);
126848
+ const text11 = (parsed.text ?? "").trim();
126849
+ if (!chatroomId || !text11) return sendJson(res, 400, { error: "chatroomId_and_text_required" }, cors);
126849
126850
  const metaSiteId = (parsed.metaSiteId ?? "").trim() || await resolveMetaSiteId();
126850
126851
  if (!metaSiteId) return sendJson(res, 400, { error: "no_meta_site" }, cors);
126851
- const result = await sendChatMessageLive(metaSiteId, chatroomId, text10);
126852
+ const result = await sendChatMessageLive(metaSiteId, chatroomId, text11);
126852
126853
  if (result.ok) return sendJson(res, 200, { ok: true, message: result.message }, cors);
126853
126854
  return sendJson(res, result.status >= 400 && result.status < 600 ? result.status : 502, { ok: false, status: result.status, error: result.error }, cors);
126854
126855
  }
@@ -127142,13 +127143,13 @@ function invalidate(state, ...screenIds) {
127142
127143
  publishSSE(state, "screen.invalidated", { screenIds });
127143
127144
  }
127144
127145
  function publishSSE(state, type, payload) {
127145
- const text10 = `event: ${type}
127146
+ const text11 = `event: ${type}
127146
127147
  data: ${JSON.stringify(payload)}
127147
127148
 
127148
127149
  `;
127149
127150
  for (const res of [...state.sseClients]) {
127150
127151
  try {
127151
- res.write(text10);
127152
+ res.write(text11);
127152
127153
  } catch {
127153
127154
  state.sseClients.delete(res);
127154
127155
  }
@@ -127164,13 +127165,13 @@ function publishAdminSSE(state, type, payload) {
127164
127165
  state.lastDeviceScreen.set(key3, screenId);
127165
127166
  }
127166
127167
  }
127167
- const text10 = `event: ${type}
127168
+ const text11 = `event: ${type}
127168
127169
  data: ${JSON.stringify(payload)}
127169
127170
 
127170
127171
  `;
127171
127172
  for (const res of [...state.adminClients]) {
127172
127173
  try {
127173
- res.write(text10);
127174
+ res.write(text11);
127174
127175
  } catch {
127175
127176
  state.adminClients.delete(res);
127176
127177
  }
@@ -127191,12 +127192,12 @@ function publishDevReady(state, res, extra = {}) {
127191
127192
  hotReloadEnabled: state.hotReloadEnabled,
127192
127193
  ...extra
127193
127194
  };
127194
- const text10 = `event: dev.ready
127195
+ const text11 = `event: dev.ready
127195
127196
  data: ${JSON.stringify(payload)}
127196
127197
 
127197
127198
  `;
127198
127199
  if (res) {
127199
- res.write(text10);
127200
+ res.write(text11);
127200
127201
  } else {
127201
127202
  publishSSE(state, "dev.ready", payload);
127202
127203
  }
@@ -129245,9 +129246,9 @@ async function handleLiveSubscription(req, res, state) {
129245
129246
  },
129246
129247
  body: JSON.stringify({ ...body, app })
129247
129248
  });
129248
- const text10 = await upstream.text();
129249
+ const text11 = await upstream.text();
129249
129250
  res.writeHead(upstream.status, { "Content-Type": "application/json", ...cors });
129250
- res.end(text10 || JSON.stringify({ ok: upstream.ok }));
129251
+ res.end(text11 || JSON.stringify({ ok: upstream.ok }));
129251
129252
  } catch (error) {
129252
129253
  sendJson(res, 502, { error: "admin_server_unreachable", detail: String(error) }, cors);
129253
129254
  }
@@ -130202,8 +130203,8 @@ function sha256hex(b2) {
130202
130203
  function stableStringify(value) {
130203
130204
  if (value === null || typeof value !== "object") return JSON.stringify(value);
130204
130205
  if (Array.isArray(value)) return "[" + value.map(stableStringify).join(",") + "]";
130205
- const object8 = value;
130206
- return "{" + Object.keys(object8).sort().map((key3) => JSON.stringify(key3) + ":" + stableStringify(object8[key3])).join(",") + "}";
130206
+ const object9 = value;
130207
+ return "{" + Object.keys(object9).sort().map((key3) => JSON.stringify(key3) + ":" + stableStringify(object9[key3])).join(",") + "}";
130207
130208
  }
130208
130209
  function manifestContent(m2) {
130209
130210
  const {
@@ -131536,10 +131537,10 @@ function componentModuleIds() {
131536
131537
  function usageStringCopyFor(permissionCopy) {
131537
131538
  const out2 = {};
131538
131539
  for (const [rawId, copy] of Object.entries(permissionCopy ?? {})) {
131539
- const text10 = typeof copy === "string" ? copy.trim() : "";
131540
- if (!text10) continue;
131540
+ const text11 = typeof copy === "string" ? copy.trim() : "";
131541
+ if (!text11) continue;
131541
131542
  const req = CAPABILITY_NATIVE[catalogKey(rawId)];
131542
- for (const u2 of [...req?.ios?.usageStrings ?? [], ...req?.macos?.usageStrings ?? []]) out2[u2.key] = text10;
131543
+ for (const u2 of [...req?.ios?.usageStrings ?? [], ...req?.macos?.usageStrings ?? []]) out2[u2.key] = text11;
131543
131544
  }
131544
131545
  return out2;
131545
131546
  }
@@ -132464,10 +132465,10 @@ function netTransport(rules) {
132464
132465
  if (res.needsUpstream) {
132465
132466
  throw new Error(`net fixture rule ${res.ruleId} is a \`transform\` rule, which needs a real upstream \u2014 not usable in a hermetic crawl`);
132466
132467
  }
132467
- const { status, body: text10 } = res.resolved;
132468
+ const { status, body: text11 } = res.resolved;
132468
132469
  if (status < 200 || status >= 300) throw new Error(`Wix ${status} for ${method} ${bare}`);
132469
132470
  try {
132470
- return text10 ? JSON.parse(text10) : {};
132471
+ return text11 ? JSON.parse(text11) : {};
132471
132472
  } catch {
132472
132473
  return {};
132473
132474
  }
@@ -132511,10 +132512,10 @@ function layeredTransport(layers3) {
132511
132512
  });
132512
132513
  if (res.matched) {
132513
132514
  if (res.needsUpstream) throw new Error(`net fixture rule ${res.ruleId} is a \`transform\` rule, which needs a real upstream \u2014 not usable in a hermetic crawl`);
132514
- const { status, body: text10 } = res.resolved;
132515
+ const { status, body: text11 } = res.resolved;
132515
132516
  if (status < 200 || status >= 300) throw new Error(`Wix ${status} for ${m2} ${bare}`);
132516
132517
  try {
132517
- return text10 ? JSON.parse(text10) : {};
132518
+ return text11 ? JSON.parse(text11) : {};
132518
132519
  } catch {
132519
132520
  return {};
132520
132521
  }
@@ -134688,13 +134689,13 @@ var init_build2 = __esm({
134688
134689
  });
134689
134690
 
134690
134691
  // ../mobile-dist/release-pin.ts
134691
- function withPinnedRelease(text10, releaseId) {
134692
- if (!releaseId) return text10;
134692
+ function withPinnedRelease(text11, releaseId) {
134693
+ if (!releaseId) return text11;
134693
134694
  let cfg;
134694
134695
  try {
134695
- cfg = JSON.parse(text10);
134696
+ cfg = JSON.parse(text11);
134696
134697
  } catch {
134697
- return text10;
134698
+ return text11;
134698
134699
  }
134699
134700
  cfg.releaseId = releaseId;
134700
134701
  cfg.releasePinned = true;
@@ -135067,18 +135068,18 @@ async function bakeCatalogs(app, locale, fetchCatalog, putDoc) {
135067
135068
  const source = locale?.default ?? "en";
135068
135069
  const tags = [.../* @__PURE__ */ new Set([source, ...declared])];
135069
135070
  for (const tag of tags) {
135070
- const text10 = await fetchCatalog(tag);
135071
- if (!text10) continue;
135072
- if (!declared.length && !servesMessages(text10)) continue;
135073
- const hash2 = sha2563(text10);
135074
- await putDoc(app, hash2, text10);
135071
+ const text11 = await fetchCatalog(tag);
135072
+ if (!text11) continue;
135073
+ if (!declared.length && !servesMessages(text11)) continue;
135074
+ const hash2 = sha2563(text11);
135075
+ await putDoc(app, hash2, text11);
135075
135076
  out2[tag] = hash2;
135076
135077
  }
135077
135078
  return out2;
135078
135079
  }
135079
- function servesMessages(text10) {
135080
+ function servesMessages(text11) {
135080
135081
  try {
135081
- const m2 = JSON.parse(text10).messages;
135082
+ const m2 = JSON.parse(text11).messages;
135082
135083
  return !!m2 && typeof m2 === "object" && Object.keys(m2).length > 0;
135083
135084
  } catch {
135084
135085
  return false;
@@ -135173,9 +135174,9 @@ async function snapshotTokens(app, base, fetchTokens, put) {
135173
135174
  }
135174
135175
  };
135175
135176
  }
135176
- const text10 = await res.text();
135177
- await put(text10);
135178
- return { hash: sha2563(text10) };
135177
+ const text11 = await res.text();
135178
+ await put(text11);
135179
+ return { hash: sha2563(text11) };
135179
135180
  }
135180
135181
  function tokensSnapshotMessage(app, base, status) {
135181
135182
  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`;
@@ -135276,23 +135277,23 @@ function maximumBinaryVersion(current, candidate) {
135276
135277
  }
135277
135278
  return current;
135278
135279
  }
135279
- async function withStoreNavBundle(text10, address) {
135280
+ async function withStoreNavBundle(text11, address) {
135280
135281
  let cfg;
135281
135282
  try {
135282
- cfg = JSON.parse(text10);
135283
+ cfg = JSON.parse(text11);
135283
135284
  } catch {
135284
- return text10;
135285
+ return text11;
135285
135286
  }
135286
135287
  const refs = [cfg?.app?.logicBundle, cfg?.navigation?.navLogicBundle, cfg?.navLogicBundle].filter(
135287
135288
  (r3) => !!r3 && typeof r3 === "object" && typeof r3.url === "string"
135288
135289
  );
135289
- if (refs.length === 0) return text10;
135290
+ if (refs.length === 0) return text11;
135290
135291
  const resolved2 = [];
135291
135292
  for (const ref of refs) {
135292
135293
  const name = bundleNameFromUrl(ref.url);
135293
- if (!name) return text10;
135294
+ if (!name) return text11;
135294
135295
  const addressed = await address(name);
135295
- if (!addressed) return text10;
135296
+ if (!addressed) return text11;
135296
135297
  resolved2.push({ ref, url: addressed.url, sri: addressed.sri });
135297
135298
  }
135298
135299
  for (const { ref, url, sri: integrity2 } of resolved2) {
@@ -135301,10 +135302,10 @@ async function withStoreNavBundle(text10, address) {
135301
135302
  }
135302
135303
  return JSON.stringify(cfg);
135303
135304
  }
135304
- function linkableScreenIdsFrom(text10) {
135305
+ function linkableScreenIdsFrom(text11) {
135305
135306
  let cfg;
135306
135307
  try {
135307
- cfg = JSON.parse(text10);
135308
+ cfg = JSON.parse(text11);
135308
135309
  } catch {
135309
135310
  return [];
135310
135311
  }
@@ -135316,24 +135317,24 @@ function linkableScreenIdsFrom(text10) {
135316
135317
  }
135317
135318
  return [...ids];
135318
135319
  }
135319
- function withoutDevOnlyAppConfig(text10) {
135320
+ function withoutDevOnlyAppConfig(text11) {
135320
135321
  let cfg;
135321
135322
  try {
135322
- cfg = JSON.parse(text10);
135323
+ cfg = JSON.parse(text11);
135323
135324
  } catch {
135324
- return text10;
135325
+ return text11;
135325
135326
  }
135326
- if (!cfg || typeof cfg !== "object" || !("devGatewayConfig" in cfg)) return text10;
135327
+ if (!cfg || typeof cfg !== "object" || !("devGatewayConfig" in cfg)) return text11;
135327
135328
  delete cfg.devGatewayConfig;
135328
135329
  return JSON.stringify(cfg);
135329
135330
  }
135330
- function withProdServeAppConfig(text10, prod) {
135331
- if (!prod?.serve) return text10;
135331
+ function withProdServeAppConfig(text11, prod) {
135332
+ if (!prod?.serve) return text11;
135332
135333
  let cfg;
135333
135334
  try {
135334
- cfg = JSON.parse(text10);
135335
+ cfg = JSON.parse(text11);
135335
135336
  } catch {
135336
- return text10;
135337
+ return text11;
135337
135338
  }
135338
135339
  cfg.useProdServe = true;
135339
135340
  cfg.prodServeBaseUrl = prod.serve;
@@ -135716,10 +135717,10 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135716
135717
  if (bytes2.length === 0 || bytes2.length > MAX_AUTHORING_DOC_BYTES) {
135717
135718
  throw new Error(`${file2} must be non-empty and at most ${MAX_AUTHORING_DOC_BYTES} bytes to ship with a release.`);
135718
135719
  }
135719
- const text10 = bytes2.toString("utf8");
135720
- if (!Buffer.from(text10, "utf8").equals(bytes2)) throw new Error(`${file2} must be canonical UTF-8 Markdown.`);
135720
+ const text11 = bytes2.toString("utf8");
135721
+ if (!Buffer.from(text11, "utf8").equals(bytes2)) throw new Error(`${file2} must be canonical UTF-8 Markdown.`);
135721
135722
  const hash2 = sha2563(bytes2);
135722
- await store.putDoc(app, hash2, text10);
135723
+ await store.putDoc(app, hash2, text11);
135723
135724
  authoringDocs[name] = { sha256: hash2, sri: sri2(bytes2), bytes: bytes2.length, contentType: "text/markdown; charset=utf-8" };
135724
135725
  }
135725
135726
  }
@@ -135872,10 +135873,10 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135872
135873
  base = BAKE_OFFLINE_BASE;
135873
135874
  }
135874
135875
  const devFetch = (url, init) => dev.inject(new Request(url, init));
135875
- const depthRefusalFromText = (status, text10) => {
135876
+ const depthRefusalFromText = (status, text11) => {
135876
135877
  if (status !== 422) return null;
135877
135878
  try {
135878
- const body = JSON.parse(text10);
135879
+ const body = JSON.parse(text11);
135879
135880
  return body?.error === "depth_budget_exceeded" && body.finding ? body.finding : null;
135880
135881
  } catch {
135881
135882
  return null;
@@ -135883,8 +135884,8 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135883
135884
  };
135884
135885
  const depthRefusalOf = async (res) => depthRefusalFromText(res.status, await res.text());
135885
135886
  const recordUnbuilt = async (screenId, res) => {
135886
- const text10 = await res.text();
135887
- const finding = depthRefusalFromText(res.status, text10);
135887
+ const text11 = await res.text();
135888
+ const finding = depthRefusalFromText(res.status, text11);
135888
135889
  if (finding) {
135889
135890
  failedToBuild.push({ screenId, status: res.status, error: finding.message });
135890
135891
  if (!depthRefusals.some((r3) => r3.screenId === screenId)) depthRefusals.push({ screenId, finding });
@@ -135893,7 +135894,7 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135893
135894
  }
135894
135895
  return;
135895
135896
  }
135896
- failedToBuild.push({ screenId, status: res.status, error: text10.slice(0, 2e3) });
135897
+ failedToBuild.push({ screenId, status: res.status, error: text11.slice(0, 2e3) });
135897
135898
  };
135898
135899
  try {
135899
135900
  for (const screenId of screenIds) {
@@ -136138,11 +136139,11 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136138
136139
  ok: res.ok,
136139
136140
  status: res.status,
136140
136141
  text: async () => {
136141
- const text10 = await res.text();
136142
+ const text11 = await res.text();
136142
136143
  try {
136143
- const doc = JSON.parse(text10);
136144
+ const doc = JSON.parse(text11);
136144
136145
  if (!publishedFontPlan) {
136145
- if (!("fontFaces" in doc)) return text10;
136146
+ if (!("fontFaces" in doc)) return text11;
136146
136147
  const kept = publishableFontFaces(doc.fontFaces);
136147
136148
  if (kept) doc.fontFaces = kept;
136148
136149
  else delete doc.fontFaces;
@@ -136151,12 +136152,12 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136151
136152
  doc.fontFaces = servedProjection(publishedFontPlan);
136152
136153
  return JSON.stringify(doc);
136153
136154
  } catch {
136154
- return text10;
136155
+ return text11;
136155
136156
  }
136156
136157
  }
136157
136158
  };
136158
136159
  },
136159
- (text10) => store.putTokens(app, text10)
136160
+ (text11) => store.putTokens(app, text11)
136160
136161
  );
136161
136162
  if (snapshot2.hash) tokensHash = snapshot2.hash;
136162
136163
  if (snapshot2.failure) {
@@ -136186,14 +136187,14 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136186
136187
  if (streamPolicyErrors.length) {
136187
136188
  throw new Error(`invalid streamPolicy for release ${app}: ${streamPolicyErrors.join("; ")}`);
136188
136189
  }
136189
- const text10 = await withStoreNavBundle(prodText, async (name) => {
136190
+ const text11 = await withStoreNavBundle(prodText, async (name) => {
136190
136191
  const hash2 = await addressBundle(name) ?? null;
136191
136192
  const entry = hash2 ? bundles[name] : void 0;
136192
136193
  return entry ? { url: store.bundleUrl(app, entry.sha256), sri: entry.sri } : null;
136193
136194
  });
136194
- await store.putAppConfig(app, text10);
136195
- appConfigHash = sha2563(text10);
136196
- if (collect2?.descriptors) for (const id of linkableScreenIdsFrom(text10)) linkable.add(id);
136195
+ await store.putAppConfig(app, text11);
136196
+ appConfigHash = sha2563(text11);
136197
+ if (collect2?.descriptors) for (const id of linkableScreenIdsFrom(text11)) linkable.add(id);
136197
136198
  }
136198
136199
  const ahRes = await devFetch(`${base}/v1/action-handlers/${encodeURIComponent(app)}`, { headers: { "X-Himalaya-App": app } });
136199
136200
  if (ahRes.ok) {
@@ -137122,8 +137123,8 @@ function penalty(m2, size) {
137122
137123
  score += Math.floor(Math.abs(dark * 20 - total * 10) / total) * 10;
137123
137124
  return score;
137124
137125
  }
137125
- function encodeQr(text10) {
137126
- const bytes2 = [...new TextEncoder().encode(text10)];
137126
+ function encodeQr(text11) {
137127
+ const bytes2 = [...new TextEncoder().encode(text11)];
137127
137128
  const version5 = fitVersion(bytes2.length);
137128
137129
  if (!version5) {
137129
137130
  throw new RangeError(`QR payload too long: ${bytes2.length} bytes exceeds version ${QR_MAX_VERSION} at EC level L`);
@@ -137363,14 +137364,14 @@ function headline(changes) {
137363
137364
  function boardLines(changes) {
137364
137365
  const lines = [];
137365
137366
  for (const c2 of changes.items) {
137366
- const text10 = lineOf(c2);
137367
- const same3 = lines.find((l2) => l2.text === text10);
137367
+ const text11 = lineOf(c2);
137368
+ const same3 = lines.find((l2) => l2.text === text11);
137368
137369
  if (same3) {
137369
137370
  same3.n++;
137370
137371
  continue;
137371
137372
  }
137372
137373
  lines.push({
137373
- text: text10,
137374
+ text: text11,
137374
137375
  n: 1,
137375
137376
  ...c2.kind === "token" && c2.from && HEX.test(c2.from) ? { from: c2.from } : {},
137376
137377
  ...c2.kind === "token" && c2.to && HEX.test(c2.to) ? { to: c2.to } : {}
@@ -138157,10 +138158,10 @@ function ownerTransport(msid, fetchImpl = fetch, timeoutMs = DEFAULT_TIMEOUT_MS,
138157
138158
  }
138158
138159
  throw new Error(`${method} ${path2} failed: ${err?.message ?? String(e2)}`);
138159
138160
  }
138160
- const text10 = await res.text();
138161
- let parsed = text10;
138161
+ const text11 = await res.text();
138162
+ let parsed = text11;
138162
138163
  try {
138163
- parsed = text10 ? JSON.parse(text10) : null;
138164
+ parsed = text11 ? JSON.parse(text11) : null;
138164
138165
  } catch {
138165
138166
  }
138166
138167
  if (!res.ok) throw new WixApiError(res.status, method, path2, parsed);
@@ -138342,10 +138343,10 @@ function scalar3(v2) {
138342
138343
  }
138343
138344
  return t2;
138344
138345
  }
138345
- function parseStoreConfig(text10) {
138346
+ function parseStoreConfig(text11) {
138346
138347
  const cfg = {};
138347
138348
  let section3 = null;
138348
- for (const raw of text10.split("\n")) {
138349
+ for (const raw of text11.split("\n")) {
138349
138350
  const line = strip2(raw);
138350
138351
  if (!line.trim()) continue;
138351
138352
  const indented = /^\s+/.test(raw);
@@ -143503,7 +143504,7 @@ function prettify(node, options, matcher, readonlyMatcher) {
143503
143504
  return compress(node, options, matcher, readonlyMatcher);
143504
143505
  }
143505
143506
  function compress(arr2, options, matcher, readonlyMatcher) {
143506
- let text10;
143507
+ let text11;
143507
143508
  const compressedObj = {};
143508
143509
  for (let i2 = 0; i2 < arr2.length; i2++) {
143509
143510
  const tagObj = arr2[i2];
@@ -143516,8 +143517,8 @@ function compress(arr2, options, matcher, readonlyMatcher) {
143516
143517
  matcher.push(property2, rawAttrs);
143517
143518
  }
143518
143519
  if (property2 === options.textNodeName) {
143519
- if (text10 === void 0) text10 = tagObj[property2];
143520
- else text10 += "" + tagObj[property2];
143520
+ if (text11 === void 0) text11 = tagObj[property2];
143521
+ else text11 += "" + tagObj[property2];
143521
143522
  } else if (property2 === void 0) {
143522
143523
  continue;
143523
143524
  } else if (tagObj[property2]) {
@@ -143555,9 +143556,9 @@ function compress(arr2, options, matcher, readonlyMatcher) {
143555
143556
  }
143556
143557
  }
143557
143558
  }
143558
- if (typeof text10 === "string") {
143559
- if (text10.length > 0) compressedObj[options.textNodeName] = text10;
143560
- } else if (text10 !== void 0) compressedObj[options.textNodeName] = text10;
143559
+ if (typeof text11 === "string") {
143560
+ if (text11.length > 0) compressedObj[options.textNodeName] = text11;
143561
+ } else if (text11 !== void 0) compressedObj[options.textNodeName] = text11;
143561
143562
  return compressedObj;
143562
143563
  }
143563
143564
  function propName2(obj5) {
@@ -143735,9 +143736,9 @@ function arrToStr(arr2, options, indentation, matcher, stopNodeExpressions, xmlV
143735
143736
  }
143736
143737
  if (!Array.isArray(arr2)) {
143737
143738
  if (arr2 !== void 0 && arr2 !== null) {
143738
- let text10 = arr2.toString();
143739
- text10 = replaceEntitiesValue2(text10, options);
143740
- return text10;
143739
+ let text11 = arr2.toString();
143740
+ text11 = replaceEntitiesValue2(text11, options);
143741
+ return text11;
143741
143742
  }
143742
143743
  return "";
143743
143744
  }
@@ -144023,22 +144024,22 @@ function resolveTagName2(name, isAttribute2, options, matcher, xmlVersion) {
144023
144024
  if (qName(name, { xmlVersion })) return name;
144024
144025
  return options.sanitizeName(name, { isAttribute: isAttribute2, matcher: matcher.readOnly() });
144025
144026
  }
144026
- function processTextOrObjNode(object8, key3, level, matcher, xmlVersion) {
144027
- const attrValues = this.extractAttributes(object8);
144027
+ function processTextOrObjNode(object9, key3, level, matcher, xmlVersion) {
144028
+ const attrValues = this.extractAttributes(object9);
144028
144029
  matcher.push(key3, attrValues);
144029
144030
  const isStopNode = this.checkStopNode(matcher);
144030
144031
  if (isStopNode) {
144031
- const rawContent = this.buildRawContent(object8);
144032
- const attrStr = this.buildAttributesForStopNode(object8);
144032
+ const rawContent = this.buildRawContent(object9);
144033
+ const attrStr = this.buildAttributesForStopNode(object9);
144033
144034
  matcher.pop();
144034
144035
  return this.buildObjectNode(rawContent, key3, attrStr, level);
144035
144036
  }
144036
- const result = this.j2x(object8, level + 1, matcher, xmlVersion);
144037
+ const result = this.j2x(object9, level + 1, matcher, xmlVersion);
144037
144038
  matcher.pop();
144038
144039
  if (key3[0] === "?") {
144039
144040
  return this.buildTextValNode("", key3, result.attrStr, level, matcher);
144040
- } else if (object8[this.options.textNodeName] !== void 0 && Object.keys(object8).length === 1) {
144041
- return this.buildTextValNode(object8[this.options.textNodeName], key3, result.attrStr, level, matcher);
144041
+ } else if (object9[this.options.textNodeName] !== void 0 && Object.keys(object9).length === 1) {
144042
+ return this.buildTextValNode(object9[this.options.textNodeName], key3, result.attrStr, level, matcher);
144042
144043
  } else {
144043
144044
  return this.buildObjectNode(result.val, key3, result.attrStr, level);
144044
144045
  }
@@ -146017,9 +146018,9 @@ function bundlesOf(block) {
146017
146018
  walk2(block);
146018
146019
  return [...out2];
146019
146020
  }
146020
- function parseJson2(text10, what) {
146021
+ function parseJson2(text11, what) {
146021
146022
  try {
146022
- const value = JSON.parse(text10);
146023
+ const value = JSON.parse(text11);
146023
146024
  if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error("not an object");
146024
146025
  return value;
146025
146026
  } catch (e2) {
@@ -146604,9 +146605,9 @@ function planTrim(src, keepIds, links) {
146604
146605
  for (const r3 of keptRoutes) for (const b2 of r3.bundles) keptWorkers.add(b2);
146605
146606
  const importsOf2 = (dir) => {
146606
146607
  const out2 = [];
146607
- for (const [rel, text10] of Object.entries(src.workerFiles)) {
146608
+ for (const [rel, text11] of Object.entries(src.workerFiles)) {
146608
146609
  if (!rel.startsWith(`tier5-src/${dir}/`)) continue;
146609
- for (const m2 of text10.matchAll(/(?:\bfrom\s*|\bimport\s*\(?\s*|\brequire\s*\(\s*)["']\.\.\/([A-Za-z0-9_.-]+)(?:\/|["'])/g)) out2.push(m2[1]);
146610
+ for (const m2 of text11.matchAll(/(?:\bfrom\s*|\bimport\s*\(?\s*|\brequire\s*\(\s*)["']\.\.\/([A-Za-z0-9_.-]+)(?:\/|["'])/g)) out2.push(m2[1]);
146610
146611
  }
146611
146612
  return out2;
146612
146613
  };
@@ -146652,9 +146653,9 @@ function planTrim(src, keepIds, links) {
146652
146653
  continue;
146653
146654
  }
146654
146655
  const block = edited.get(r3);
146655
- let text10 = block ? serializeAt(block, app.dev, r3.open) : void 0;
146656
- if (r3 === app.home && homeModules?.text !== void 0) text10 = homeModules.text;
146657
- if (text10 !== void 0) cut2(r3.open, r3.close, text10);
146656
+ let text11 = block ? serializeAt(block, app.dev, r3.open) : void 0;
146657
+ if (r3 === app.home && homeModules?.text !== void 0) text11 = homeModules.text;
146658
+ if (text11 !== void 0) cut2(r3.open, r3.close, text11);
146658
146659
  }
146659
146660
  if (templatedEmptied) cut2(templatedEmptied[0], templatedEmptied[1], "\n");
146660
146661
  dev += app.dev.slice(cursor);
@@ -146707,9 +146708,9 @@ function homeModulesPass(app, kept, edited) {
146707
146708
  const removedVertical = verticals.some(([, card2]) => !kept.has(app.exact.get(card2.screenId)));
146708
146709
  if (!removedVertical) return { dropped: [] };
146709
146710
  const block = edited.get(app.home);
146710
- const text10 = block ? serializeAt(block, app.dev, app.home.open) : app.dev.slice(app.home.open, app.home.close);
146711
+ const text11 = block ? serializeAt(block, app.dev, app.home.open) : app.dev.slice(app.home.open, app.home.close);
146711
146712
  const installed = verticals.filter(([, card2]) => kept.has(app.exact.get(card2.screenId))).map(([v2]) => v2);
146712
- const patched = patchHomeModules(text10, installed);
146713
+ const patched = patchHomeModules(text11, installed);
146713
146714
  if (!patched.droppedModules.length) return { dropped: [] };
146714
146715
  return { text: patched.src, dropped: patched.droppedModules };
146715
146716
  }
@@ -147091,8 +147092,8 @@ function workerReach(src) {
147091
147092
  const f2 = queue.shift();
147092
147093
  if (seen.has(f2)) continue;
147093
147094
  seen.add(f2);
147094
- const text10 = all.get(f2) ?? "";
147095
- for (const m2 of text10.matchAll(RELATIVE_IMPORT)) {
147095
+ const text11 = all.get(f2) ?? "";
147096
+ for (const m2 of text11.matchAll(RELATIVE_IMPORT)) {
147096
147097
  const r3 = resolveImport(f2, m2[1], all);
147097
147098
  if (r3 && !seen.has(r3)) queue.push(r3);
147098
147099
  }
@@ -147102,11 +147103,11 @@ function workerReach(src) {
147102
147103
  let fetchCall = false;
147103
147104
  const hits = [];
147104
147105
  for (const f2 of [...seen].sort()) {
147105
- const text10 = all.get(f2) ?? "";
147106
+ const text11 = all.get(f2) ?? "";
147106
147107
  const before = wix.size;
147107
- for (const m2 of text10.matchAll(WIX_MODULE)) wix.add(m2[1].replace(/^@wix\/himalaya\//, "@himalaya/"));
147108
- const r3 = /\bwixApi\b/.test(text10);
147109
- const fe2 = /(?<![.\w])fetch\s*\(/.test(text10);
147108
+ for (const m2 of text11.matchAll(WIX_MODULE)) wix.add(m2[1].replace(/^@wix\/himalaya\//, "@himalaya/"));
147109
+ const r3 = /\bwixApi\b/.test(text11);
147110
+ const fe2 = /(?<![.\w])fetch\s*\(/.test(text11);
147110
147111
  if (wix.size > before || r3 || fe2) hits.push(f2);
147111
147112
  raw ||= r3;
147112
147113
  fetchCall ||= fe2;
@@ -147518,10 +147519,10 @@ async function pushSetupRequest(options) {
147518
147519
  signal: AbortSignal.timeout(options.timeoutMs ?? (setup ? 12e4 : 3e4)),
147519
147520
  ...setup ? { body: JSON.stringify(options.body) } : {}
147520
147521
  });
147521
- const text10 = await response.text();
147522
+ const text11 = await response.text();
147522
147523
  let parsed = null;
147523
147524
  try {
147524
- const value = text10 ? JSON.parse(text10) : null;
147525
+ const value = text11 ? JSON.parse(text11) : null;
147525
147526
  parsed = value && typeof value === "object" && !Array.isArray(value) ? value : null;
147526
147527
  } catch {
147527
147528
  parsed = null;
@@ -147665,8 +147666,8 @@ function appendProperties(literal, file2, lines) {
147665
147666
  const at2 = trailing ? literal.properties.end : last.end;
147666
147667
  const lead = trailing ? "" : ",";
147667
147668
  if (onOneLine(literal, file2)) {
147668
- const text10 = inline();
147669
- return { at: at2, end: at2, text: `${lead} ${trailing ? text10 : text10.replace(/,$/, "")}` };
147669
+ const text11 = inline();
147670
+ return { at: at2, end: at2, text: `${lead} ${trailing ? text11 : text11.replace(/,$/, "")}` };
147670
147671
  }
147671
147672
  const indent = lineIndent2(file2.text, last.getStart(file2));
147672
147673
  return { at: at2, end: at2, text: lead + lines.map((line) => `
@@ -147676,9 +147677,9 @@ function onOneLine(node, file2) {
147676
147677
  const line = (position) => file2.getLineAndCharacterOfPosition(position).line;
147677
147678
  return line(node.getStart(file2)) === line(node.getEnd());
147678
147679
  }
147679
- function lineIndent2(text10, position) {
147680
- const lineStart = text10.lastIndexOf("\n", position - 1) + 1;
147681
- return /^[ \t]*/.exec(text10.slice(lineStart))[0];
147680
+ function lineIndent2(text11, position) {
147681
+ const lineStart = text11.lastIndexOf("\n", position - 1) + 1;
147682
+ return /^[ \t]*/.exec(text11.slice(lineStart))[0];
147682
147683
  }
147683
147684
  function applySplices(source, splices) {
147684
147685
  return [...splices].sort((a2, b2) => b2.at - a2.at).reduce((out2, s2) => out2.slice(0, s2.at) + s2.text + out2.slice(s2.end), source);
@@ -149186,9 +149187,9 @@ __export(screen_state_exports, {
149186
149187
  import { createHash as createHash26 } from "node:crypto";
149187
149188
  import { lstatSync as lstatSync15, readFileSync as readFileSync51 } from "node:fs";
149188
149189
  import { join as join40 } from "node:path";
149189
- function quotableLine(text10) {
149190
- if (!text10) return void 0;
149191
- const first = text10.split(/\r?\n/).map((l2) => l2.trim()).find(Boolean);
149190
+ function quotableLine(text11) {
149191
+ if (!text11) return void 0;
149192
+ const first = text11.split(/\r?\n/).map((l2) => l2.trim()).find(Boolean);
149192
149193
  if (!first) return void 0;
149193
149194
  let line = first.replace(/\s+/g, " ");
149194
149195
  if (line.length > LINE_MAX) {
@@ -149201,9 +149202,9 @@ function quotableLine(text10) {
149201
149202
  function visibleText(html) {
149202
149203
  return html.replace(/<(script|style)\b[\s\S]*?<\/\1>/gi, " ").replace(/<[^>]*>/g, " ").replace(/&#x([0-9a-f]+);/gi, (_2, h2) => String.fromCodePoint(parseInt(h2, 16))).replace(/&#(\d+);/g, (_2, d2) => String.fromCodePoint(Number(d2))).replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/\s+/g, " ");
149203
149204
  }
149204
- function painted(text10, page) {
149205
+ function painted(text11, page) {
149205
149206
  if (page === void 0) return true;
149206
- const probe = text10.replace(/\s+/g, " ").trim().slice(0, 60);
149207
+ const probe = text11.replace(/\s+/g, " ").trim().slice(0, 60);
149207
149208
  return !!probe && page.includes(probe);
149208
149209
  }
149209
149210
  function errorMessageOf(s2) {
@@ -150413,8 +150414,8 @@ var init_cms_schema = __esm({
150413
150414
 
150414
150415
  // ../native-config/car.ts
150415
150416
  function parseCarConfig(configTs) {
150416
- const { text: text10, inString } = scanConfig(configTs);
150417
- for (const m2 of text10.matchAll(/\bcar\s*[:=]\s*\{([^}]*)\}/g)) {
150417
+ const { text: text11, inString } = scanConfig(configTs);
150418
+ for (const m2 of text11.matchAll(/\bcar\s*[:=]\s*\{([^}]*)\}/g)) {
150418
150419
  if (inString[m2.index]) continue;
150419
150420
  return { category: /category\s*:\s*["']([^"']+)["']/.exec(m2[1])?.[1] };
150420
150421
  }
@@ -150939,10 +150940,10 @@ function tokenColorIssues(dir, tokensPathOverride) {
150939
150940
  if (controlButton === void 0 || controlButton === null || typeof controlButton !== "object" || Array.isArray(controlButton)) return;
150940
150941
  const btn = controlButton;
150941
150942
  for (const size of ["sm", "md", "lg"]) {
150942
- const text10 = btn[size]?.text;
150943
- if (text10 === void 0 || typeof text10 === "string" && typo.has(text10)) continue;
150943
+ const text11 = btn[size]?.text;
150944
+ if (text11 === void 0 || typeof text11 === "string" && typo.has(text11)) continue;
150944
150945
  error(
150945
- `${tokensPath}: ${where}controls.button.${size}.text is ${JSON.stringify(text10)}, which names no \`typography\` token \u2014 every renderer would keep the built-in Button label. Name one that exists.`
150946
+ `${tokensPath}: ${where}controls.button.${size}.text is ${JSON.stringify(text11)}, which names no \`typography\` token \u2014 every renderer would keep the built-in Button label. Name one that exists.`
150946
150947
  );
150947
150948
  }
150948
150949
  const variants = btn.variants;
@@ -151372,16 +151373,16 @@ function encode(value, quote) {
151372
151373
  if (quote === "'") return `'${value.replace(/[\\']/g, "\\$&").replace(/\n/g, "\\n")}'`;
151373
151374
  return `\`${value.replace(/[\\`]|\$(?=\{)/g, "\\$&")}\``;
151374
151375
  }
151375
- function syntaxErrors(file2, text10) {
151376
+ function syntaxErrors(file2, text11) {
151376
151377
  if (file2.endsWith(".json")) {
151377
151378
  try {
151378
- JSON.parse(text10);
151379
+ JSON.parse(text11);
151379
151380
  return [];
151380
151381
  } catch (e2) {
151381
151382
  return [e2.message];
151382
151383
  }
151383
151384
  }
151384
- const out2 = ts7.transpileModule(text10, { fileName: file2, reportDiagnostics: true, compilerOptions: { target: ts7.ScriptTarget.ES2022 } });
151385
+ const out2 = ts7.transpileModule(text11, { fileName: file2, reportDiagnostics: true, compilerOptions: { target: ts7.ScriptTarget.ES2022 } });
151385
151386
  return (out2.diagnostics ?? []).map((d2) => ts7.flattenDiagnosticMessageText(d2.messageText, "\n"));
151386
151387
  }
151387
151388
  function sweepCopy(dir, pairs, dryRun) {
@@ -151393,10 +151394,10 @@ function sweepCopy(dir, pairs, dryRun) {
151393
151394
  const next = /* @__PURE__ */ new Map();
151394
151395
  const replaced = pairs.map(([from, to2]) => ({ from, to: to2, files: {} }));
151395
151396
  for (const f2 of files) {
151396
- const text10 = readFileSync59(join49(dir, f2), "utf8");
151397
- if (!pairs.some(([from]) => text10.includes(from) || text10.includes(JSON.stringify(from).slice(1, -1)))) continue;
151397
+ const text11 = readFileSync59(join49(dir, f2), "utf8");
151398
+ if (!pairs.some(([from]) => text11.includes(from) || text11.includes(JSON.stringify(from).slice(1, -1)))) continue;
151398
151399
  const kind = f2.endsWith(".json") ? ts7.ScriptKind.JSON : f2.endsWith("x") ? ts7.ScriptKind.TSX : ts7.ScriptKind.TS;
151399
- const sf2 = ts7.createSourceFile(f2, text10, ts7.ScriptTarget.Latest, true, kind);
151400
+ const sf2 = ts7.createSourceFile(f2, text11, ts7.ScriptTarget.Latest, true, kind);
151400
151401
  const edits = [];
151401
151402
  const visit = (node) => {
151402
151403
  if ((ts7.isStringLiteral(node) || ts7.isNoSubstitutionTemplateLiteral(node)) && isCopy(node, f2)) {
@@ -151409,14 +151410,14 @@ function sweepCopy(dir, pairs, dryRun) {
151409
151410
  });
151410
151411
  if (value !== node.text) {
151411
151412
  const start = node.getStart(sf2);
151412
- edits.push({ start, end: node.end, text: encode(value, text10[start]) });
151413
+ edits.push({ start, end: node.end, text: encode(value, text11[start]) });
151413
151414
  }
151414
151415
  }
151415
151416
  ts7.forEachChild(node, visit);
151416
151417
  };
151417
151418
  visit(sf2);
151418
151419
  if (!edits.length) continue;
151419
- let out2 = text10;
151420
+ let out2 = text11;
151420
151421
  for (const e2 of edits.sort((a2, b2) => b2.start - a2.start)) out2 = out2.slice(0, e2.start) + e2.text + out2.slice(e2.end);
151421
151422
  const errors = syntaxErrors(f2, out2);
151422
151423
  if (errors.length) throw new TrimRefusal(`the sweep would break ${f2} \u2014 nothing written: ${errors[0]}`);
@@ -151710,9 +151711,9 @@ function verticalsFromBook(path2) {
151710
151711
  throw new Error(`no book.json / provisioning.overlay.json under ${path2} \u2014 run \`himi site analyze\` first, or pass --verticals`);
151711
151712
  }
151712
151713
  function recommendTemplates(input) {
151713
- const text10 = input.text ?? "";
151714
- const owner = OWNER_WORDS.test(text10);
151715
- const want = new Set(tokens(text10));
151714
+ const text11 = input.text ?? "";
151715
+ const owner = OWNER_WORDS.test(text11);
151716
+ const want = new Set(tokens(text11));
151716
151717
  const byName3 = /* @__PURE__ */ new Map();
151717
151718
  for (const row of input.catalog) {
151718
151719
  const reasons = [];
@@ -151726,7 +151727,7 @@ function recommendTemplates(input) {
151726
151727
  reasons.push(`matches ${hit.map((h2) => `"${h2}"`).join(", ")}`);
151727
151728
  }
151728
151729
  }
151729
- if (text10) {
151730
+ if (text11) {
151730
151731
  if (owner === isOwner) {
151731
151732
  score += 0.3;
151732
151733
  reasons.push(owner ? "owner/operations app, and this is an owner template" : "customer-facing app, and this is a customer template");
@@ -153334,9 +153335,9 @@ function xmlAttr(value) {
153334
153335
  return value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
153335
153336
  }
153336
153337
  function renderHealthPermissionCopyXml(copy, indent) {
153337
- const text10 = copy?.trim();
153338
- if (!text10) return [];
153339
- return [`${indent}<meta-data android:name="${HEALTH_PERMISSION_COPY_META}" android:value="${xmlAttr(text10)}" />`];
153338
+ const text11 = copy?.trim();
153339
+ if (!text11) return [];
153340
+ return [`${indent}<meta-data android:name="${HEALTH_PERMISSION_COPY_META}" android:value="${xmlAttr(text11)}" />`];
153340
153341
  }
153341
153342
  function renderModulesIosPackage(products, indent) {
153342
153343
  return products.flatMap((p2) => {
@@ -153503,8 +153504,8 @@ function swiftFilesWithModuleMarkers(app) {
153503
153504
  if (entry.isDirectory()) {
153504
153505
  if (!entry.name.endsWith(".xcodeproj")) stack.push(path2);
153505
153506
  } else if (entry.isFile() && entry.name.endsWith(".swift")) {
153506
- const text10 = readFileSync64(path2, "utf8");
153507
- if (hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_IMPORT) || hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_INSTALL)) out2.push(path2);
153507
+ const text11 = readFileSync64(path2, "utf8");
153508
+ if (hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_IMPORT) || hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_INSTALL)) out2.push(path2);
153508
153509
  }
153509
153510
  }
153510
153511
  }
@@ -153539,8 +153540,8 @@ function kotlinBootSourcesUnder(root) {
153539
153540
  }
153540
153541
  return out2.sort();
153541
153542
  }
153542
- function stripComments2(text10) {
153543
- return text10.replace(/\/\*[\s\S]*?\*\//g, (c2) => c2.replace(/[^\n]/g, " ")).replace(/\/\/[^\n]*/g, "");
153543
+ function stripComments2(text11) {
153544
+ return text11.replace(/\/\*[\s\S]*?\*\//g, (c2) => c2.replace(/[^\n]/g, " ")).replace(/\/\/[^\n]*/g, "");
153544
153545
  }
153545
153546
  function duplicateModuleInstalls(...texts) {
153546
153547
  const calls = ["installLinkedModules", ...NATIVE_MODULES.flatMap((m2) => m2.ios ? [`${m2.ios.product}.install`] : [])];
@@ -153602,19 +153603,19 @@ function hostAppliesDeferredWidgetActions(app) {
153602
153603
  }
153603
153604
  return false;
153604
153605
  }
153605
- function countBeginMarkers(text10, kind, label3) {
153606
- return text10.split("\n").filter((l2) => isBegin(l2, kind, label3)).length;
153606
+ function countBeginMarkers(text11, kind, label3) {
153607
+ return text11.split("\n").filter((l2) => isBegin(l2, kind, label3)).length;
153607
153608
  }
153608
- function countEndMarkers(text10, kind, label3) {
153609
- return text10.split("\n").filter((l2) => isEnd(l2, kind, label3)).length;
153609
+ function countEndMarkers(text11, kind, label3) {
153610
+ return text11.split("\n").filter((l2) => isEnd(l2, kind, label3)).length;
153610
153611
  }
153611
- function hasMarkers(text10, kind, label3) {
153612
- const lines = text10.split("\n");
153612
+ function hasMarkers(text11, kind, label3) {
153613
+ const lines = text11.split("\n");
153613
153614
  return lines.some((l2) => isBegin(l2, kind, label3)) && lines.some((l2) => isEnd(l2, kind, label3));
153614
153615
  }
153615
- function assertSingleMarkerPair(text10, kind, label3, where = "the file") {
153616
- const opens = countBeginMarkers(text10, kind, label3);
153617
- const closes = countEndMarkers(text10, kind, label3);
153616
+ function assertSingleMarkerPair(text11, kind, label3, where = "the file") {
153617
+ const opens = countBeginMarkers(text11, kind, label3);
153618
+ const closes = countEndMarkers(text11, kind, label3);
153618
153619
  if (opens > 1 || closes > 1) {
153619
153620
  const which = opens > 1 ? `">>> ${label3}" opens ${opens} times` : `"<<< ${label3}" closes ${closes} times`;
153620
153621
  throw new Error(
@@ -153622,9 +153623,9 @@ function assertSingleMarkerPair(text10, kind, label3, where = "the file") {
153622
153623
  );
153623
153624
  }
153624
153625
  }
153625
- function injectBlock(text10, kind, label3, render, where = "the file") {
153626
- assertSingleMarkerPair(text10, kind, label3, where);
153627
- const lines = text10.split("\n");
153626
+ function injectBlock(text11, kind, label3, render, where = "the file") {
153627
+ assertSingleMarkerPair(text11, kind, label3, where);
153628
+ const lines = text11.split("\n");
153628
153629
  const beginIdx = lines.findIndex((l2) => isBegin(l2, kind, label3));
153629
153630
  const endIdx = lines.findIndex((l2) => isEnd(l2, kind, label3));
153630
153631
  if (beginIdx === -1 || endIdx === -1 || endIdx < beginIdx) {
@@ -153664,8 +153665,8 @@ function applyToFile(path2, kind, label3, render, check) {
153664
153665
  function assertModuleFlagsMarkers(paths) {
153665
153666
  for (const path2 of paths) {
153666
153667
  if (!existsSync54(path2)) continue;
153667
- const text10 = readFileSync64(path2, "utf8");
153668
- if (hasMarkers(text10, "yaml", LABEL_MODULES_IOS_LINK) && !hasMarkers(text10, "yaml", LABEL_MODULES_IOS_FLAGS)) {
153668
+ const text11 = readFileSync64(path2, "utf8");
153669
+ if (hasMarkers(text11, "yaml", LABEL_MODULES_IOS_LINK) && !hasMarkers(text11, "yaml", LABEL_MODULES_IOS_FLAGS)) {
153669
153670
  throw new Error(`${path2} links modules (${LABEL_MODULES_IOS_LINK}) but has no ${LABEL_MODULES_IOS_FLAGS} block under its project-level settings:, so no module would install. Add the markers (see apps/_template).`);
153670
153671
  }
153671
153672
  }
@@ -153901,8 +153902,8 @@ function genNativeConfig(app, opts = {}) {
153901
153902
  }
153902
153903
  }
153903
153904
  for (const swift of swiftFilesWithModuleMarkers(app)) {
153904
- const text10 = readFileSync64(swift, "utf8");
153905
- if (!hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_IMPORT) || !hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_INSTALL)) {
153905
+ const text11 = readFileSync64(swift, "utf8");
153906
+ if (!hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_IMPORT) || !hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_INSTALL)) {
153906
153907
  throw new Error(`${app}: ${swift} must carry both ${LABEL_MODULES_SWIFT_IMPORT} and ${LABEL_MODULES_SWIFT_INSTALL} markers`);
153907
153908
  }
153908
153909
  files.push(applyToFile(swift, "slash", LABEL_MODULES_SWIFT_IMPORT, renderModulesSwiftImport, check));
@@ -153911,8 +153912,8 @@ function genNativeConfig(app, opts = {}) {
153911
153912
  files.push(...genCapabilityRegistrations(appDir(app), ids, check));
153912
153913
  const rce = declaresRichContentEditor(configTs);
153913
153914
  for (const yml of [iosYml, macosProjectYml(app)]) {
153914
- const text10 = existsSync54(yml) ? readFileSync64(yml, "utf8") : "";
153915
- const r3 = applyToFile(yml, "yaml", LABEL_LOCALWEB, renderLocalWebYaml(resourcesDirOf(text10), rce), check);
153915
+ const text11 = existsSync54(yml) ? readFileSync64(yml, "utf8") : "";
153916
+ const r3 = applyToFile(yml, "yaml", LABEL_LOCALWEB, renderLocalWebYaml(resourcesDirOf(text11), rce), check);
153916
153917
  if (existsSync54(yml)) assertLocalWebBlockLanded(app, rce, yml, r3.outcome);
153917
153918
  files.push(r3);
153918
153919
  }
@@ -154893,8 +154894,8 @@ function renderBase44Types(entities, app) {
154893
154894
  for (const f2 of fields) body.push(` ${key2(f2.key)}${required3.has(f2.key) ? "" : "?"}: ${fieldType(f2)};`);
154894
154895
  body.push("};", `export const ${name} = entities<${name}Row>(${JSON.stringify(physicalEntityName(e2, app))});`);
154895
154896
  }
154896
- const text10 = body.join("\n");
154897
- const types = ["Json", "JsonObject"].filter((t2) => new RegExp(`\\b${t2}\\b`).test(text10)).map((t2) => `type ${t2}`);
154897
+ const text11 = body.join("\n");
154898
+ const types = ["Json", "JsonObject"].filter((t2) => new RegExp(`\\b${t2}\\b`).test(text11)).map((t2) => `type ${t2}`);
154898
154899
  if (usable.length) L2.push(`import { ${["entities", ...types].join(", ")} } from "@himalaya/base44";`);
154899
154900
  return [...L2, ...body].join("\n") + "\n";
154900
154901
  }
@@ -154906,14 +154907,14 @@ async function declaredEntities(dir) {
154906
154907
  async function writeBase44Types(dir, app) {
154907
154908
  const list = await declaredEntities(dir);
154908
154909
  if (!list?.length) throw new Base44TypesError("no_base44_entities", "config.ts declares no base44.entities \u2014 nothing to type. Declare them (or run `himi base44 adopt`) first.");
154909
- const text10 = renderBase44Types(list, app);
154910
+ const text11 = renderBase44Types(list, app);
154910
154911
  const path2 = join56(dir, BASE44_TYPES_PATH);
154911
- const changed = !existsSync56(path2) || readFileSync66(path2, "utf8") !== text10;
154912
+ const changed = !existsSync56(path2) || readFileSync66(path2, "utf8") !== text11;
154912
154913
  if (changed) {
154913
154914
  mkdirSync26(dirname32(path2), { recursive: true });
154914
- writeFileSync22(path2, text10);
154915
+ writeFileSync22(path2, text11);
154915
154916
  }
154916
- return { path: path2, changed, entities: text10.split("\nexport const ").length - 1 };
154917
+ return { path: path2, changed, entities: text11.split("\nexport const ").length - 1 };
154917
154918
  }
154918
154919
  async function base44TypesIssues(dir, app, strict) {
154919
154920
  const path2 = join56(dir, BASE44_TYPES_PATH);
@@ -155871,8 +155872,8 @@ function isNoneEntry(entry) {
155871
155872
  const head = entryHead(entry);
155872
155873
  return NONE.test(entry) || head !== "" && NONE.test(head);
155873
155874
  }
155874
- function parseDataAccess(text10, from) {
155875
- const body = text10.replace(/<!--[\s\S]*?(?:-->|$)/g, "");
155875
+ function parseDataAccess(text11, from) {
155876
+ const body = text11.replace(/<!--[\s\S]*?(?:-->|$)/g, "");
155876
155877
  const heading = new RegExp(`(?:^|\\n)##[ \\t]+${DATA_ACCESS_HEADING}\\b[^\\n]*([\\s\\S]*?)(?=\\n##[ \\t]|$)`, "i").exec(body);
155877
155878
  if (!heading) return null;
155878
155879
  const lines = heading[1].split("\n").map((l2) => l2.trim()).filter((l2) => l2.startsWith("|"));
@@ -155899,13 +155900,13 @@ function readDataAccess(dir) {
155899
155900
  for (const name of ["SPEC.md", "MOBILE-UX.md"]) {
155900
155901
  const p2 = join62(dir, name);
155901
155902
  if (!existsSync61(p2)) continue;
155902
- let text10;
155903
+ let text11;
155903
155904
  try {
155904
- text10 = readFileSync71(p2, "utf8");
155905
+ text11 = readFileSync71(p2, "utf8");
155905
155906
  } catch {
155906
155907
  continue;
155907
155908
  }
155908
- const plan = parseDataAccess(text10, name);
155909
+ const plan = parseDataAccess(text11, name);
155909
155910
  if (plan) return plan;
155910
155911
  }
155911
155912
  return null;
@@ -156061,7 +156062,7 @@ function readTestConfig(dir) {
156061
156062
  if (input !== void 0 && (!input || typeof input !== "object" || Array.isArray(input) || Object.values(input).some((v2) => typeof v2 !== "string"))) {
156062
156063
  throw new Error(`${TEST_CONFIG_FILE}: journeys[${i2}].input must be an object of string values \u2014 the screen input a nav edge would send, e.g. { "id": "svc-0001" }`);
156063
156064
  }
156064
- if (!Array.isArray(journey.expectText) || !journey.expectText.length || journey.expectText.some((text10) => typeof text10 !== "string" || !text10.trim())) {
156065
+ if (!Array.isArray(journey.expectText) || !journey.expectText.length || journey.expectText.some((text11) => typeof text11 !== "string" || !text11.trim())) {
156065
156066
  throw new Error(`${TEST_CONFIG_FILE}: journeys[${i2}] needs non-empty expectText values that prove a visible result`);
156066
156067
  }
156067
156068
  });
@@ -157751,14 +157752,14 @@ import { join as join68 } from "node:path";
157751
157752
  function mobileUxIssues(dir, strict) {
157752
157753
  const file2 = join68(dir, "MOBILE-UX.md");
157753
157754
  if (!existsSync65(file2)) return [];
157754
- let text10;
157755
+ let text11;
157755
157756
  try {
157756
- text10 = readFileSync76(file2, "utf8");
157757
+ text11 = readFileSync76(file2, "utf8");
157757
157758
  } catch {
157758
157759
  return [];
157759
157760
  }
157760
- if (!text10) return [];
157761
- return mobileUxMarkerFindings(text10, recordedRenderWidths(dir)).map((finding) => {
157761
+ if (!text11) return [];
157762
+ return mobileUxMarkerFindings(text11, recordedRenderWidths(dir)).map((finding) => {
157762
157763
  const scaffoldAdvisory = finding.code === "missing-width-evidence";
157763
157764
  return {
157764
157765
  screen: null,
@@ -159582,12 +159583,12 @@ async function runRemoteFunctionOperation(input) {
159582
159583
  if (input.boCookie) headers2.cookie = input.boCookie;
159583
159584
  if (input.previewToken) headers2["x-himalaya-preview-token"] = input.previewToken;
159584
159585
  const response = await (input.fetchImpl ?? fetch)(url, { method, headers: headers2 });
159585
- const text10 = await response.text();
159586
+ const text11 = await response.text();
159586
159587
  let body;
159587
159588
  try {
159588
- body = JSON.parse(text10);
159589
+ body = JSON.parse(text11);
159589
159590
  } catch {
159590
- body = text10;
159591
+ body = text11;
159591
159592
  }
159592
159593
  return { ok: response.ok, status: response.status, body };
159593
159594
  }
@@ -163266,10 +163267,10 @@ async function hostedAuthUrl(req, visitorToken, fetchImpl = fetch) {
163266
163267
  }
163267
163268
  })
163268
163269
  });
163269
- const text10 = await res.text();
163270
+ const text11 = await res.text();
163270
163271
  let parsed = {};
163271
163272
  try {
163272
- parsed = text10 ? JSON.parse(text10) : {};
163273
+ parsed = text11 ? JSON.parse(text11) : {};
163273
163274
  } catch {
163274
163275
  }
163275
163276
  const fullUrl = parsed.redirectSession?.fullUrl;
@@ -163289,10 +163290,10 @@ async function exchangeAuthCode(cfg, code, verifier, fetchImpl = fetch) {
163289
163290
  redirectUri: cfg.redirectUri
163290
163291
  })
163291
163292
  });
163292
- const text10 = await res.text();
163293
+ const text11 = await res.text();
163293
163294
  let parsed = {};
163294
163295
  try {
163295
- parsed = text10 ? JSON.parse(text10) : {};
163296
+ parsed = text11 ? JSON.parse(text11) : {};
163296
163297
  } catch {
163297
163298
  }
163298
163299
  if (res.status !== 200 || !parsed.access_token) throw new Error(`token exchange failed (${res.status})`);
@@ -164828,11 +164829,11 @@ async function localizeConfigResponse(res, kind, header) {
164828
164829
  header
164829
164830
  )
164830
164831
  };
164831
- const text10 = JSON.stringify(next);
164832
+ const text11 = JSON.stringify(next);
164832
164833
  const headers2 = new Headers(res.headers);
164833
164834
  headers2.delete("etag");
164834
- headers2.set("content-length", String(new TextEncoder().encode(text10).length));
164835
- return new Response(text10, { status: 200, headers: headers2 });
164835
+ headers2.set("content-length", String(new TextEncoder().encode(text11).length));
164836
+ return new Response(text11, { status: 200, headers: headers2 });
164836
164837
  }
164837
164838
  function makeRunHandler(opts) {
164838
164839
  const mount = opts.chrome === "app" ? "/app" : "/preview";
@@ -165041,8 +165042,8 @@ var init_node_adapter = __esm({
165041
165042
  function authConfigOf(appConfig) {
165042
165043
  if (!appConfig) return void 0;
165043
165044
  try {
165044
- const text10 = typeof appConfig === "string" ? appConfig : new TextDecoder().decode(appConfig);
165045
- return JSON.parse(text10)?.authConfig ?? void 0;
165045
+ const text11 = typeof appConfig === "string" ? appConfig : new TextDecoder().decode(appConfig);
165046
+ return JSON.parse(text11)?.authConfig ?? void 0;
165046
165047
  } catch {
165047
165048
  return void 0;
165048
165049
  }
@@ -165406,16 +165407,16 @@ async function releasePayloadFromDir(root, app, header) {
165406
165407
  const manifest = await store.getManifest(app);
165407
165408
  if (!manifest) throw new Error(`no release manifest for ${app} under ${root}`);
165408
165409
  const b64 = (b2) => b2 ? Buffer.from(b2).toString("base64") : void 0;
165409
- const text10 = (b2) => b2 ? new TextDecoder().decode(b2) : void 0;
165410
+ const text11 = (b2) => b2 ? new TextDecoder().decode(b2) : void 0;
165410
165411
  const screens = {};
165411
165412
  const docs = {};
165412
165413
  const addDoc = async (hash2) => {
165413
165414
  if (!hash2 || docs[hash2] !== void 0) return;
165414
- const d2 = text10(await store.getDoc?.(app, hash2) ?? null);
165415
+ const d2 = text11(await store.getDoc?.(app, hash2) ?? null);
165415
165416
  if (d2 !== void 0) docs[hash2] = d2;
165416
165417
  };
165417
165418
  for (const [id, meta] of Object.entries(manifest.screens ?? {})) {
165418
- const s2 = text10(await store.getScreen(app, id));
165419
+ const s2 = text11(await store.getScreen(app, id));
165419
165420
  if (s2 !== void 0) screens[id] = s2;
165420
165421
  await addDoc(meta.descriptorHash);
165421
165422
  }
@@ -165436,10 +165437,10 @@ async function releasePayloadFromDir(root, app, header) {
165436
165437
  }
165437
165438
  const widgets = {};
165438
165439
  for (const id of Object.keys(manifest.widgets ?? {})) {
165439
- const w2 = text10(await store.getWidget?.(app, id) ?? null);
165440
+ const w2 = text11(await store.getWidget?.(app, id) ?? null);
165440
165441
  if (w2 !== void 0) widgets[id] = w2;
165441
165442
  }
165442
- const appConfig = text10(await store.getAppConfig(app));
165443
+ const appConfig = text11(await store.getAppConfig(app));
165443
165444
  const wixClientId = appConfigWixClientId(appConfig);
165444
165445
  return {
165445
165446
  app,
@@ -165449,7 +165450,7 @@ async function releasePayloadFromDir(root, app, header) {
165449
165450
  docs,
165450
165451
  assets,
165451
165452
  widgets,
165452
- tokens: text10(await store.getTokens(app)),
165453
+ tokens: text11(await store.getTokens(app)),
165453
165454
  appConfig,
165454
165455
  icon: b64(await store.getIcon?.(app) ?? null),
165455
165456
  header,
@@ -165845,13 +165846,18 @@ function appleSaleRules(options = {}) {
165845
165846
  return {
165846
165847
  onlineProgram: ONLINE_PROGRAM_SALE_RULE,
165847
165848
  ...(options.storesAppleSalesEnabled ?? STORES_APPLE_SALES_ENABLED) || (options.storesItemPaymentEnabled ?? STORES_ITEM_PAYMENT_ENABLED) ? { storesProduct: STORES_PRODUCT_SALE_RULE } : {},
165848
- ...options.pricingPlanAppleSalesEnabled ?? PRICING_PLAN_APPLE_SALES_ENABLED ? { pricingPlan: PRICING_PLAN_SALE_RULE } : {}
165849
+ ...options.pricingPlanAppleSalesEnabled ?? PRICING_PLAN_APPLE_SALES_ENABLED ? { pricingPlan: PRICING_PLAN_SALE_RULE } : {},
165850
+ ...options.bookingsAppleSalesEnabled ?? BOOKINGS_APPLE_SALES_ENABLED ? { bookingsService: ATTENDANCE_SALE_RULE } : {},
165851
+ ...options.eventsAppleSalesEnabled ?? EVENTS_APPLE_SALES_ENABLED ? { eventsTicket: ATTENDANCE_SALE_RULE } : {}
165849
165852
  };
165850
165853
  }
165851
- var HIMALAYA_SERVE_IAP_ROUTE, STORES_ITEM_PAYMENT_ENABLED, STORES_APPLE_SALES_ENABLED, STORES_PRODUCT_SALE_RULE, ONLINE_PROGRAM_SALE_RULE, PRICING_PLAN_APPLE_SALES_ENABLED, PRICING_PLAN_SALE_RULE, APPLE_SALE_RULES;
165854
+ var HIMALAYA_SERVE_IAP_ROUTE, BOOKINGS_APPLE_SALES_ENABLED, EVENTS_APPLE_SALES_ENABLED, ATTENDANCE_SALE_RULE, STORES_ITEM_PAYMENT_ENABLED, STORES_APPLE_SALES_ENABLED, STORES_PRODUCT_SALE_RULE, ONLINE_PROGRAM_SALE_RULE, PRICING_PLAN_APPLE_SALES_ENABLED, PRICING_PLAN_SALE_RULE, APPLE_SALE_RULES, APPLE_PROVISIONING_RULES;
165852
165855
  var init_wix_payments_contract = __esm({
165853
165856
  "../../core/sdk/iap/src/wix-payments-contract.ts"() {
165854
165857
  HIMALAYA_SERVE_IAP_ROUTE = { prefix: "/himalaya-serve/v1/iap" };
165858
+ BOOKINGS_APPLE_SALES_ENABLED = false;
165859
+ EVENTS_APPLE_SALES_ENABLED = false;
165860
+ ATTENDANCE_SALE_RULE = { appProductId: (id) => id, productType: "CONSUMABLE" };
165855
165861
  STORES_ITEM_PAYMENT_ENABLED = false;
165856
165862
  STORES_APPLE_SALES_ENABLED = true;
165857
165863
  STORES_PRODUCT_SALE_RULE = { appProductId: (id) => id, productType: "NON_CONSUMABLE" };
@@ -165859,6 +165865,11 @@ var init_wix_payments_contract = __esm({
165859
165865
  PRICING_PLAN_APPLE_SALES_ENABLED = true;
165860
165866
  PRICING_PLAN_SALE_RULE = { appProductId: (id) => id, productType: "NON_CONSUMABLE" };
165861
165867
  APPLE_SALE_RULES = appleSaleRules();
165868
+ APPLE_PROVISIONING_RULES = {
165869
+ ...APPLE_SALE_RULES,
165870
+ bookingsService: ATTENDANCE_SALE_RULE,
165871
+ eventsTicket: ATTENDANCE_SALE_RULE
165872
+ };
165862
165873
  }
165863
165874
  });
165864
165875
 
@@ -165977,11 +165988,11 @@ async function registerBundleId(opts) {
165977
165988
  const j2 = await res.json();
165978
165989
  return { status: "created", id: j2.data?.id };
165979
165990
  }
165980
- const text10 = await res.text();
165981
- if (res.status === 409 || /already (exists|in use)|duplicate|ENTITY_ERROR.*identifier/i.test(text10)) {
165991
+ const text11 = await res.text();
165992
+ if (res.status === 409 || /already (exists|in use)|duplicate|ENTITY_ERROR.*identifier/i.test(text11)) {
165982
165993
  return { status: "exists" };
165983
165994
  }
165984
- throw new Error(`POST /v1/bundleIds \u2192 ${res.status}: ${text10.slice(0, 300)}`);
165995
+ throw new Error(`POST /v1/bundleIds \u2192 ${res.status}: ${text11.slice(0, 300)}`);
165985
165996
  }
165986
165997
  async function main() {
165987
165998
  const [app, ...rest] = process.argv.slice(2);
@@ -166234,9 +166245,9 @@ var init_iap_client = __esm({
166234
166245
  retryAfterMs(response.headers.get("retry-after"), this.now())
166235
166246
  );
166236
166247
  }
166237
- scrub(text10) {
166248
+ scrub(text11) {
166238
166249
  const { keyId, issuerId, privateKeyPem } = this.options.key;
166239
- let out2 = text10;
166250
+ let out2 = text11;
166240
166251
  for (const literal of [this.token?.value, privateKeyPem, issuerId, keyId]) {
166241
166252
  if (literal) out2 = out2.split(literal).join("[redacted]");
166242
166253
  }
@@ -166406,19 +166417,19 @@ var init_iap_api = __esm({
166406
166417
  });
166407
166418
  return toVersion(requireSingle(doc, "in-app purchase version"));
166408
166419
  }
166409
- async createLocalization(versionId, text10) {
166420
+ async createLocalization(versionId, text11) {
166410
166421
  const doc = await this.client.post("/v2/inAppPurchaseLocalizations", {
166411
166422
  data: {
166412
166423
  type: "inAppPurchaseLocalizations",
166413
- attributes: { locale: text10.locale, name: text10.name, description: text10.description },
166424
+ attributes: { locale: text11.locale, name: text11.name, description: text11.description },
166414
166425
  relationships: { version: related("inAppPurchaseVersions", versionId) }
166415
166426
  }
166416
166427
  });
166417
166428
  return toLocalization(requireSingle(doc, "localization"));
166418
166429
  }
166419
- async updateLocalization(localizationId, text10) {
166430
+ async updateLocalization(localizationId, text11) {
166420
166431
  const doc = await this.client.patch(`/v2/inAppPurchaseLocalizations/${enc(localizationId)}`, {
166421
- data: { type: "inAppPurchaseLocalizations", id: localizationId, attributes: { name: text10.name, description: text10.description } }
166432
+ data: { type: "inAppPurchaseLocalizations", id: localizationId, attributes: { name: text11.name, description: text11.description } }
166422
166433
  });
166423
166434
  return toLocalization(requireSingle(doc, "localization"));
166424
166435
  }
@@ -166522,7 +166533,7 @@ function createCatalogIapApi(client2, appId2, uploadMedia) {
166522
166533
  const points = async (id, territory) => (await client2.listResources(appId2, "PRICE_POINT", { inAppPurchaseId: id, territory })).resources.map((point) => ({ id: point.id, customerPrice: text8(point, "customerPrice") }));
166523
166534
  const desired = (item) => ({ localizations: item.localizations, price: selection(item.price), territories: item.territories });
166524
166535
  const mapping = async (item) => {
166525
- const rule = item.wix && !item.unlocks?.length ? APPLE_SALE_RULES[item.wix.entityType] : void 0;
166536
+ const rule = item.wix && !item.unlocks?.length ? APPLE_PROVISIONING_RULES[item.wix.entityType] : void 0;
166526
166537
  if (!rule || !item.wix || rule.productType !== appleProductType(item.type)) throw new IapCatalogError("mapping_unsupported", `No supported Wix mapping identity for ${item.productId}`);
166527
166538
  const expected = rule.appProductId(item.wix.entityId);
166528
166539
  const catalog3 = await client2.listProducts(appId2);
@@ -166786,8 +166797,8 @@ function reportDuplicateMappings(reader, items) {
166786
166797
  reader.duplicates(items.flatMap((i2) => [i2.entitlement, ...(i2.unlocks ?? []).map((u2) => u2.entitlement)]), "items", "entitlement");
166787
166798
  reader.duplicates(items.map((i2) => i2.referenceName), "items", "referenceName");
166788
166799
  }
166789
- function looksLikeCredential(text10) {
166790
- return CREDENTIAL_SHAPES.some((shape) => shape.test(text10));
166800
+ function looksLikeCredential(text11) {
166801
+ return CREDENTIAL_SHAPES.some((shape) => shape.test(text11));
166791
166802
  }
166792
166803
  function reportCredentialMaterial(reader, value, path2) {
166793
166804
  if (typeof value === "string") {
@@ -166800,15 +166811,15 @@ function reportCredentialMaterial(reader, value, path2) {
166800
166811
  for (const [key3, v2] of Object.entries(value)) reportCredentialMaterial(reader, v2, childPath(path2, key3));
166801
166812
  }
166802
166813
  }
166803
- function parseJson3(text10, label3) {
166814
+ function parseJson3(text11, label3) {
166804
166815
  try {
166805
- return JSON.parse(text10);
166816
+ return JSON.parse(text11);
166806
166817
  } catch (e2) {
166807
166818
  throw new Error(`${label3} is not valid JSON: ${e2.message}`);
166808
166819
  }
166809
166820
  }
166810
- function parseIapManifest(text10, label3) {
166811
- const doc = parseJson3(text10, label3);
166821
+ function parseIapManifest(text11, label3) {
166822
+ const doc = parseJson3(text11, label3);
166812
166823
  const reader = new ManifestReader();
166813
166824
  const obj5 = reader.object(doc, "", MANIFEST_KEYS);
166814
166825
  if (obj5.manifestVersion !== 1) reader.problems.push("manifestVersion must be 1");
@@ -167758,9 +167769,9 @@ async function ensure(spec, sleep) {
167758
167769
  }
167759
167770
  }
167760
167771
  function textFor(item, locale) {
167761
- const text10 = item.localizations.find((l2) => l2.locale === locale);
167762
- if (!text10) throw new Error(`no ${locale} localization in the manifest for ${item.productId}`);
167763
- return text10;
167772
+ const text11 = item.localizations.find((l2) => l2.locale === locale);
167773
+ if (!text11) throw new Error(`no ${locale} localization in the manifest for ${item.productId}`);
167774
+ return text11;
167764
167775
  }
167765
167776
  async function findProduct(api2, appId2, productId) {
167766
167777
  return (await api2.listProducts(appId2)).find((p2) => p2.productId === productId);
@@ -167819,14 +167830,14 @@ async function deleteLeftoverScreenshot(context, resourceId) {
167819
167830
  }
167820
167831
  async function upsertManagedLocalization(run2, locale, context) {
167821
167832
  const resourceId = required(run2.resourceId, "the product id");
167822
- const text10 = textFor(run2.item, locale);
167833
+ const text11 = textFor(run2.item, locale);
167823
167834
  const { api: api2, sleep } = context;
167824
167835
  const find2 = async () => {
167825
167836
  const version5 = await findDraft(api2, resourceId);
167826
- const localization2 = version5 && await findLocalization(api2, version5.id, locale, text10);
167837
+ const localization2 = version5 && await findLocalization(api2, version5.id, locale, text11);
167827
167838
  return version5 && localization2 ? { version: version5, localization: localization2, outcome: "ALREADY_APPLIED" } : void 0;
167828
167839
  };
167829
- const { value, state } = await ensure({ write: () => api2.managed.upsertLocalization(resourceId, text10), find: find2 }, sleep);
167840
+ const { value, state } = await ensure({ write: () => api2.managed.upsertLocalization(resourceId, text11), find: find2 }, sleep);
167830
167841
  run2.versionId = value.version.id;
167831
167842
  return { state: value.outcome === "ALREADY_APPLIED" ? "reconciled" : state, resourceId: value.localization.id };
167832
167843
  }
@@ -167851,16 +167862,16 @@ function operationRunners(context, manifest) {
167851
167862
  createLocalization: async (run2, op) => {
167852
167863
  if (api2.managed) return upsertManagedLocalization(run2, op.locale, context);
167853
167864
  const versionId = required(run2.versionId, "the draft version");
167854
- const text10 = textFor(run2.item, op.locale);
167855
- const { value, state } = await ensure({ write: () => api2.createLocalization(versionId, text10), find: () => findLocalization(api2, versionId, text10.locale) }, sleep);
167865
+ const text11 = textFor(run2.item, op.locale);
167866
+ const { value, state } = await ensure({ write: () => api2.createLocalization(versionId, text11), find: () => findLocalization(api2, versionId, text11.locale) }, sleep);
167856
167867
  return { state, resourceId: value.id };
167857
167868
  },
167858
167869
  updateLocalization: async (run2, op) => {
167859
167870
  if (api2.managed) return upsertManagedLocalization(run2, op.locale, context);
167860
167871
  const versionId = required(run2.versionId, "the draft version");
167861
- const text10 = textFor(run2.item, op.locale);
167862
- const localizationId = required(run2.localizations.find((l2) => l2.locale === text10.locale)?.id, `the ${text10.locale} localization`);
167863
- const { value, state } = await ensure({ write: () => api2.updateLocalization(localizationId, text10), find: () => findLocalization(api2, versionId, text10.locale, text10) }, sleep);
167872
+ const text11 = textFor(run2.item, op.locale);
167873
+ const localizationId = required(run2.localizations.find((l2) => l2.locale === text11.locale)?.id, `the ${text11.locale} localization`);
167874
+ const { value, state } = await ensure({ write: () => api2.updateLocalization(localizationId, text11), find: () => findLocalization(api2, versionId, text11.locale, text11) }, sleep);
167864
167875
  return { state, resourceId: value.id };
167865
167876
  },
167866
167877
  setPrice: async (run2) => {
@@ -168125,10 +168136,10 @@ function profilePath(name, home = homedir11()) {
168125
168136
  }
168126
168137
  return join93(credentialsDir(home), `${name}.json`);
168127
168138
  }
168128
- function parseProfile(text10, label3) {
168139
+ function parseProfile(text11, label3) {
168129
168140
  let doc;
168130
168141
  try {
168131
- doc = JSON.parse(text10);
168142
+ doc = JSON.parse(text11);
168132
168143
  } catch (e2) {
168133
168144
  throw new Error(`${label3} is not valid JSON: ${e2.message}`);
168134
168145
  }
@@ -168290,9 +168301,9 @@ var init_iap_credentials = __esm({
168290
168301
 
168291
168302
  // ../store-release/iap-draft.ts
168292
168303
  import { createHash as createHash46 } from "node:crypto";
168293
- function fit(text10, max) {
168294
- const chars = [...text10];
168295
- return chars.length <= max ? text10 : `${chars.slice(0, max - 1).join("").trimEnd()}${ELLIPSIS}`;
168304
+ function fit(text11, max) {
168305
+ const chars = [...text11];
168306
+ return chars.length <= max ? text11 : `${chars.slice(0, max - 1).join("").trimEnd()}${ELLIPSIS}`;
168296
168307
  }
168297
168308
  function plainText2(html) {
168298
168309
  return html.replace(/<[^>]*>/g, " ").replace(/&(amp|nbsp|lt|gt|quot|#39);/g, (entity) => ENTITIES[entity]).replace(/\s+/g, " ").trim();
@@ -168342,7 +168353,7 @@ function perItemProduct(item, options, names2) {
168342
168353
  classification: "digital",
168343
168354
  entitlement: entityKey(item.source, item.id),
168344
168355
  productId: productIdFor(options.target.bundleId, SOURCE_SLUGS[item.source], item.id),
168345
- type: "nonConsumable",
168356
+ type: repeatable(item) ? "consumable" : "nonConsumable",
168346
168357
  referenceName: names2.claim(name, item.id),
168347
168358
  localizations: [{ locale: options.locale, name: displayName(name), description: fit(plainDescription || `Unlock ${name}`, APPLE_LIMITS.description) }],
168348
168359
  price: priceFor(item.price.amount, options),
@@ -168418,19 +168429,22 @@ function draftManifest(catalog3, options) {
168418
168429
  else toDraft.push(item);
168419
168430
  }
168420
168431
  }
168421
- const drafted = options.mode === "tiers" ? draftTiers(toDraft, options, names2, existingItems) : toDraft.map((item) => perItemProduct(item, options, names2));
168432
+ const perItem = toDraft.filter((item) => options.mode !== "tiers" || repeatable(item));
168433
+ const tiered = toDraft.filter((item) => options.mode === "tiers" && !repeatable(item));
168434
+ const drafted = [...perItem.map((item) => perItemProduct(item, options, names2)), ...draftTiers(tiered, options, names2, existingItems)];
168422
168435
  const items = [...existingItems, ...drafted];
168423
168436
  const newlyMapped = toDraft.length;
168424
168437
  if (!items.length) return { skipped, kept, newlyMapped };
168425
168438
  const manifest = { manifestVersion: 1, target: options.target, items };
168426
168439
  return { manifest: parseIapManifest(JSON.stringify(manifest), "the drafted manifest"), skipped, kept, newlyMapped };
168427
168440
  }
168428
- var SOURCE_SLUGS, SKIP_REASONS, TIER_DESCRIPTION, ELLIPSIS, entityKey, sha2, ENTITIES, MAX_SUFFIX, ReferenceNames, nameOf, tierProductId;
168441
+ var SOURCE_SLUGS, repeatable, SKIP_REASONS, TIER_DESCRIPTION, ELLIPSIS, entityKey, sha2, ENTITIES, MAX_SUFFIX, ReferenceNames, nameOf, tierProductId;
168429
168442
  var init_iap_draft = __esm({
168430
168443
  "../store-release/iap-draft.ts"() {
168431
168444
  init_iap_manifest();
168432
168445
  init_iap_pricing();
168433
- SOURCE_SLUGS = { storesProduct: "product", onlineProgram: "program", pricingPlan: "plan" };
168446
+ SOURCE_SLUGS = { storesProduct: "product", onlineProgram: "program", pricingPlan: "plan", bookingsService: "booking", eventsTicket: "ticket" };
168447
+ repeatable = (item) => item.source === "bookingsService" || item.source === "eventsTicket";
168434
168448
  SKIP_REASONS = {
168435
168449
  physical: "physical goods are never sold through in-app purchase",
168436
168450
  subscription: "a recurring plan needs an App Store subscription, which this version does not register",
@@ -168439,7 +168453,7 @@ var init_iap_draft = __esm({
168439
168453
  TIER_DESCRIPTION = "Unlocks one item in the app";
168440
168454
  ELLIPSIS = "\u2026";
168441
168455
  entityKey = (entityType, entityId) => `${entityType}:${entityId}`;
168442
- sha2 = (text10) => createHash46("sha256").update(text10).digest("hex");
168456
+ sha2 = (text11) => createHash46("sha256").update(text11).digest("hex");
168443
168457
  ENTITIES = { "&amp;": "&", "&nbsp;": " ", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" };
168444
168458
  MAX_SUFFIX = 24;
168445
168459
  ReferenceNames = class {
@@ -168889,14 +168903,104 @@ var init_iap_config_edit = __esm({
168889
168903
  }
168890
168904
  });
168891
168905
 
168906
+ // ../../core/sdk/iap/src/attendance-classifier.ts
168907
+ function classifyForApple(item, currency) {
168908
+ if (item.hidden !== false || item.attendance === "hybrid") return "decide";
168909
+ if (item.kind === "bookingsService") return bookingRoute(item, currency);
168910
+ return ticketRoute(item, currency);
168911
+ }
168912
+ function bookingRoute(item, currency) {
168913
+ if (item.onlineBooking !== true) return "decide";
168914
+ if (item.conferencing === false && item.locations?.length && item.locations.every((type) => type === "BUSINESS" || type === "CUSTOMER" || type === "CUSTOM")) {
168915
+ return item.attendance === "online" ? "decide" : "wixPayments";
168916
+ }
168917
+ if (item.conferencing !== true || item.attendance === "physical") return "decide";
168918
+ if (item.attendance !== "online" && (!item.locations || item.locations.length > 0)) return "decide";
168919
+ if (item.type === "APPOINTMENT") {
168920
+ return item.capacity === 1 && item.maxParticipantsPerBooking === 1 ? "wixPayments" : "decide";
168921
+ }
168922
+ if (item.type !== "CLASS" && item.type !== "COURSE" || !item.capacity || item.capacity <= 1) return "decide";
168923
+ if (item.priceType === "NO_FEE" || zeroPrice(item.amount)) return "wixPayments";
168924
+ if (item.onlinePayment !== true || item.deposit !== false || item.priceType !== "FIXED") return "decide";
168925
+ return fixedPriceRoute(item, currency);
168926
+ }
168927
+ function ticketRoute(item, currency) {
168928
+ if (item.location === "VENUE") return item.attendance === "online" ? "decide" : "wixPayments";
168929
+ if (item.location !== "ONLINE" || item.attendance === "physical" || item.registration !== "TICKETING") return "decide";
168930
+ if (item.eventStatus !== "UPCOMING" && item.eventStatus !== "STARTED") return "decide";
168931
+ if (item.saleStatus !== "SALE_STARTED") return "decide";
168932
+ if (zeroPrice(item.amount)) return "wixPayments";
168933
+ return item.priceType === "STANDARD" ? fixedPriceRoute(item, currency) : "decide";
168934
+ }
168935
+ function fixedPriceRoute(item, currency) {
168936
+ const amount = item.amount;
168937
+ return typeof amount === "string" && /^\d+(?:\.\d+)?$/.test(amount) && Number.isFinite(Number(amount)) && Number(amount) > 0 && /^[A-Z]{3}$/.test(currency) && item.currency === currency ? "appleIap" : "decide";
168938
+ }
168939
+ function bookingAttendanceOf(raw) {
168940
+ const s2 = object7(raw);
168941
+ const payment = object7(s2.payment);
168942
+ const fixed = object7(payment.fixed);
168943
+ const price = object7(fixed.price);
168944
+ const options = object7(payment.options);
168945
+ const policy = object7(object7(s2.bookingPolicy).participantsPolicy);
168946
+ return {
168947
+ kind: "bookingsService",
168948
+ type: text9(s2.type),
168949
+ capacity: numeric(s2.defaultCapacity),
168950
+ maxParticipantsPerBooking: policy.enabled === true ? numeric(policy.maxParticipantsPerBooking) : void 0,
168951
+ hidden: boolean2(s2.hidden),
168952
+ conferencing: boolean2(object7(s2.conferencing).enabled),
168953
+ locations: Array.isArray(s2.locations) ? s2.locations.map((l2) => text9(object7(l2).type) ?? "UNKNOWN") : void 0,
168954
+ onlineBooking: boolean2(object7(s2.onlineBooking).enabled),
168955
+ onlinePayment: boolean2(options.online),
168956
+ deposit: options.deposit === true || fixed.deposit !== void 0,
168957
+ priceType: text9(payment.rateType),
168958
+ amount: text9(price.value),
168959
+ currency: text9(price.currency)
168960
+ };
168961
+ }
168962
+ function ticketAttendanceOf(event, definition) {
168963
+ const e2 = object7(event);
168964
+ const t2 = object7(definition);
168965
+ const pricing = object7(t2.pricingMethod);
168966
+ const price = object7(pricing.fixedPrice);
168967
+ const registration = object7(e2.registration);
168968
+ const type = text9(registration.type) ?? text9(registration.initialType) ?? text9(e2.eventType);
168969
+ const status = text9(e2.status) ?? text9(e2.eventStatus);
168970
+ return {
168971
+ kind: "eventsTicket",
168972
+ location: text9(object7(e2.location).type),
168973
+ registration: type === "TICKETS" || type === "RSVP_AND_TICKETS" ? "TICKETING" : type,
168974
+ eventStatus: status === "SCHEDULED" ? "UPCOMING" : status,
168975
+ saleStatus: text9(t2.saleStatus),
168976
+ hidden: boolean2(t2.hidden),
168977
+ priceType: text9(pricing.pricingType),
168978
+ amount: text9(price.value),
168979
+ currency: text9(price.currency)
168980
+ };
168981
+ }
168982
+ function object7(value) {
168983
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
168984
+ }
168985
+ var text9, numeric, boolean2, zeroPrice;
168986
+ var init_attendance_classifier = __esm({
168987
+ "../../core/sdk/iap/src/attendance-classifier.ts"() {
168988
+ init_wix_payments_contract();
168989
+ text9 = (value) => typeof value === "string" ? value : void 0;
168990
+ numeric = (value) => typeof value === "number" ? value : void 0;
168991
+ boolean2 = (value) => typeof value === "boolean" ? value : void 0;
168992
+ zeroPrice = (value) => typeof value === "string" && /^0+(?:\.0+)?$/.test(value);
168993
+ }
168994
+ });
168995
+
168892
168996
  // src/store-iap-catalog.ts
168893
168997
  function amountText(value) {
168894
168998
  if (typeof value === "number" && Number.isFinite(value)) return String(value);
168895
168999
  return typeof value === "string" && value.trim() ? value.trim() : void 0;
168896
169000
  }
168897
169001
  function priceOf(amount, currency) {
168898
- const text10 = amountText(amount);
168899
- return text10 && typeof currency === "string" && currency ? { amount: text10, currency } : void 0;
169002
+ const text11 = amountText(amount);
169003
+ return text11 && typeof currency === "string" && currency ? { amount: text11, currency } : void 0;
168900
169004
  }
168901
169005
  function catalogItem(fields) {
168902
169006
  return Object.fromEntries(Object.entries(fields).filter(([, v2]) => v2 !== void 0 && v2 !== "" && v2 !== false));
@@ -169034,18 +169138,65 @@ async function readOneTimeUnlimitedPlanIds(wix) {
169034
169138
  }
169035
169139
  async function readWixCatalog(wix) {
169036
169140
  const notes = [];
169037
- const items = [...await readStores(wix, notes), ...await readPrograms(wix, notes), ...await readPlans(wix, notes)];
169038
- notes.push(NEVER_DRAFTED_NOTE);
169141
+ const items = [...await readStores(wix, notes), ...await readPrograms(wix, notes), ...await readPlans(wix, notes), ...await readAttendance(wix, notes)];
169039
169142
  return { items, notes };
169040
169143
  }
169041
- var PAGE4, MAX_PAGES3, PROGRAM_READ_CONCURRENCY, NEVER_DRAFTED_NOTE, isNotInstalled2, isWrongCatalogVersion;
169144
+ async function attendanceRows(wix, path2, key3, extra = {}) {
169145
+ return allByOffset(async (offset) => {
169146
+ const { query = {}, ...fields } = extra;
169147
+ const res = await wix("POST", path2, { ...fields, query: { ...query, paging: { limit: PAGE4, offset } } });
169148
+ return { rows: res[key3] ?? [], total: res.pagingMetadata?.total ?? res.metadata?.total };
169149
+ }, path2);
169150
+ }
169151
+ function attendanceKind(item) {
169152
+ const route = classifyForApple(item, item.currency ?? "");
169153
+ return route === "appleIap" ? "digital" : route === "wixPayments" ? "physical" : "unknown";
169154
+ }
169155
+ async function readAttendance(wix, notes) {
169156
+ let services = [];
169157
+ let events = [];
169158
+ try {
169159
+ services = await attendanceRows(wix, "/bookings/v2/services/query", "services");
169160
+ } catch (e2) {
169161
+ if (isNotInstalled2(e2)) notInstalled(notes, "Wix Bookings");
169162
+ else throw e2;
169163
+ }
169164
+ try {
169165
+ events = await attendanceRows(wix, "/events/v3/events/query", "events", { fields: ["REGISTRATION", "DETAILS"] });
169166
+ } catch (e2) {
169167
+ if (isNotInstalled2(e2)) notInstalled(notes, "Wix Events");
169168
+ else throw e2;
169169
+ }
169170
+ const tickets = await mapLimit(events.filter((e2) => ticketAttendanceOf(e2, {}).registration === "TICKETING"), PROGRAM_READ_CONCURRENCY, async (event) => {
169171
+ const definitions2 = await attendanceRows(wix, "/events/v3/ticket-definitions/query", "ticketDefinitions", { query: { filter: { eventId: { $eq: event.id } } } });
169172
+ return definitions2.map((t2) => catalogItem({
169173
+ source: "eventsTicket",
169174
+ id: t2.id,
169175
+ name: t2.name || t2.id,
169176
+ description: t2.description,
169177
+ kind: attendanceKind(ticketAttendanceOf(event, t2)),
169178
+ hidden: t2.hidden === true,
169179
+ price: priceOf(t2.pricingMethod?.fixedPrice?.value, t2.pricingMethod?.fixedPrice?.currency)
169180
+ }));
169181
+ });
169182
+ return [...services.map((s2) => catalogItem({
169183
+ source: "bookingsService",
169184
+ id: s2.id,
169185
+ name: s2.name || s2.id,
169186
+ description: s2.description,
169187
+ kind: attendanceKind(bookingAttendanceOf(s2)),
169188
+ hidden: s2.hidden === true,
169189
+ price: priceOf(s2.payment?.fixed?.price?.value, s2.payment?.fixed?.price?.currency)
169190
+ })), ...tickets.flat()];
169191
+ }
169192
+ var PAGE4, MAX_PAGES3, PROGRAM_READ_CONCURRENCY, isNotInstalled2, isWrongCatalogVersion;
169042
169193
  var init_store_iap_catalog = __esm({
169043
169194
  "src/store-iap-catalog.ts"() {
169195
+ init_attendance_classifier();
169044
169196
  init_wix_owner();
169045
169197
  PAGE4 = 100;
169046
169198
  MAX_PAGES3 = 500;
169047
169199
  PROGRAM_READ_CONCURRENCY = 4;
169048
- NEVER_DRAFTED_NOTE = "Bookings services and events are real-world services, which Apple does not allow as in-app purchases \u2014 they are never drafted.";
169049
169200
  isNotInstalled2 = (e2) => e2 instanceof WixApiError && e2.isAppNotInstalled;
169050
169201
  isWrongCatalogVersion = (e2) => e2 instanceof WixApiError && e2.status === 428 && /CATALOG_V1/.test(e2.message);
169051
169202
  }
@@ -169053,7 +169204,7 @@ var init_store_iap_catalog = __esm({
169053
169204
 
169054
169205
  // src/store-iap-connect.ts
169055
169206
  async function planCheck(items, deps) {
169056
- const rules = deps.saleRules ?? APPLE_SALE_RULES;
169207
+ const rules = deps.saleRules ?? APPLE_PROVISIONING_RULES;
169057
169208
  if (!rules.pricingPlan || !items.some((item) => item.wix?.entityType === "pricingPlan")) return { ok: true, ids: /* @__PURE__ */ new Set() };
169058
169209
  if (!deps.oneTimePlans) return { ok: false, why: "the site's plans were not read" };
169059
169210
  try {
@@ -169155,7 +169306,7 @@ function providerPlan(provider) {
169155
169306
  detail: "the appleIAP provider is connected through Serve's IAP routes (wix-iap ConnectProviderAccount), and this Serve target has none."
169156
169307
  };
169157
169308
  }
169158
- async function mapItems(api2, appId2, items, apply, plans, rules = APPLE_SALE_RULES) {
169309
+ async function mapItems(api2, appId2, items, apply, plans, rules = APPLE_PROVISIONING_RULES) {
169159
169310
  let catalog3;
169160
169311
  try {
169161
169312
  catalog3 = await api2.listProducts(appId2);
@@ -169187,7 +169338,7 @@ async function mapItems(api2, appId2, items, apply, plans, rules = APPLE_SALE_RU
169187
169338
  }
169188
169339
  return steps;
169189
169340
  }
169190
- function mappingTarget(item, plans, rules = APPLE_SALE_RULES) {
169341
+ function mappingTarget(item, plans, rules = APPLE_PROVISIONING_RULES) {
169191
169342
  const skip = (entity2, detail) => ({ skip: { entity: entity2, appProductId: null, storeProductId: item.productId, state: "skipped", code: "mapping_unsupported", detail } });
169192
169343
  if (!item.wix || item.unlocks?.length) {
169193
169344
  return skip(item.productId, "a consumable tier unlocks several Wix items, but a purchase pays one order item, so it cannot be mapped");
@@ -169226,7 +169377,7 @@ function decide(catalog3, target) {
169226
169377
  }
169227
169378
  return void 0;
169228
169379
  }
169229
- function mappingWithoutApp(item, planning, plans, rules = APPLE_SALE_RULES) {
169380
+ function mappingWithoutApp(item, planning, plans, rules = APPLE_PROVISIONING_RULES) {
169230
169381
  const target = mappingTarget(item, plans, rules);
169231
169382
  if ("skip" in target) return target.skip;
169232
169383
  return planning ? { ...target, state: "planned", detail: `map ${target.appProductId} \u2192 ${target.storeProductId}` } : { ...target, ...noApp("the app is not registered") };
@@ -169383,8 +169534,8 @@ async function shoot(selected, run2, outDir) {
169383
169534
  function visibleText2(html) {
169384
169535
  return html.replace(/&nbsp;|&#160;|&#xa0;/gi, "\xA0").replace(/&amp;/g, "&");
169385
169536
  }
169386
- function manifestWithScreenshots(text10, shot) {
169387
- const doc = JSON.parse(text10);
169537
+ function manifestWithScreenshots(text11, shot) {
169538
+ const doc = JSON.parse(text11);
169388
169539
  for (const [index, path2] of shot) doc.items[index].reviewScreenshot = path2;
169389
169540
  return `${JSON.stringify(doc, null, 2)}
169390
169541
  `;
@@ -169600,10 +169751,10 @@ function makeTransport(fetchImpl, auth, timeoutMs = DEFAULT_TIMEOUT_MS3) {
169600
169751
  body: body === void 0 ? void 0 : JSON.stringify(body),
169601
169752
  signal: AbortSignal.timeout(timeoutMs)
169602
169753
  });
169603
- const text10 = await res.text();
169604
- let parsed = text10;
169754
+ const text11 = await res.text();
169755
+ let parsed = text11;
169605
169756
  try {
169606
- parsed = text10 ? JSON.parse(text10) : null;
169757
+ parsed = text11 ? JSON.parse(text11) : null;
169607
169758
  } catch {
169608
169759
  }
169609
169760
  if (!res.ok) throw new WixApiError2(res.status, method, path2, parsed);
@@ -169741,9 +169892,9 @@ function manifestDirOf(manifestPath) {
169741
169892
  return dirname46(resolve70(manifestPath));
169742
169893
  }
169743
169894
  function readPlan(deps, path2) {
169744
- const text10 = readInput(deps, path2, "plan");
169895
+ const text11 = readInput(deps, path2, "plan");
169745
169896
  try {
169746
- return verifyPlan2(JSON.parse(text10));
169897
+ return verifyPlan2(JSON.parse(text11));
169747
169898
  } catch (e2) {
169748
169899
  if (e2 instanceof SyntaxError) throw new Error(`${path2} is not valid JSON: ${e2.message}`);
169749
169900
  throw e2;
@@ -169754,10 +169905,10 @@ function writeJson(deps, out2, path2, value) {
169754
169905
  `);
169755
169906
  }
169756
169907
  function writePlan(deps, out2, path2, plan) {
169757
- const text10 = `${JSON.stringify(plan, null, 2)}
169908
+ const text11 = `${JSON.stringify(plan, null, 2)}
169758
169909
  `;
169759
- if (out2.carriesSecret(text10)) throw new Error("refusing to write a plan that contains this run's App Store Connect credentials");
169760
- deps.writeFileAtomic(path2, text10);
169910
+ if (out2.carriesSecret(text11)) throw new Error("refusing to write a plan that contains this run's App Store Connect credentials");
169911
+ deps.writeFileAtomic(path2, text11);
169761
169912
  }
169762
169913
  function catalogRoutePrefix(flags, deps) {
169763
169914
  if (flags["catalog-route"] !== void 0 && !textFlag(flags, "catalog-route")) throw new IapCatalogError("catalog_route_unavailable", "--catalog-route needs an explicit gateway path");
@@ -170242,7 +170393,7 @@ async function screenshotsCommand(flags, deps, out2) {
170242
170393
  appleLocked: (item) => facts.get(item.productId)?.locked,
170243
170394
  appleRead: textFlag(flags, "profile") !== void 0,
170244
170395
  writeBytes: deps.writeBytes ?? writeBinaryFile,
170245
- writeText: (path2, text10) => deps.writeFileAtomic(path2, text10),
170396
+ writeText: (path2, text11) => deps.writeFileAtomic(path2, text11),
170246
170397
  ...only ? { only: new Set(only.split(",").map((id) => id.trim()).filter(Boolean)) } : {},
170247
170398
  ...outDir ? { outDir: resolve70(outDir) } : {},
170248
170399
  force: flags.force === true,
@@ -170396,8 +170547,8 @@ var init_store_iap = __esm({
170396
170547
  protectKey(key3) {
170397
170548
  this.secrets.push(key3.privateKey, key3.keyId);
170398
170549
  }
170399
- line(text10 = "") {
170400
- this.io.log(this.scrub(text10));
170550
+ line(text11 = "") {
170551
+ this.io.log(this.scrub(text11));
170401
170552
  }
170402
170553
  print(value) {
170403
170554
  this.io.log(this.serialize(value));
@@ -170410,11 +170561,11 @@ var init_store_iap = __esm({
170410
170561
  return JSON.stringify(scrubDeep(value, (t2) => this.scrub(t2)), null, 2);
170411
170562
  }
170412
170563
  /** This run's own key material, raw or JSON-escaped, anywhere in `text`. */
170413
- carriesSecret(text10) {
170414
- return this.secrets.some((secret) => secret && (text10.includes(secret) || text10.includes(JSON.stringify(secret).slice(1, -1))));
170564
+ carriesSecret(text11) {
170565
+ return this.secrets.some((secret) => secret && (text11.includes(secret) || text11.includes(JSON.stringify(secret).slice(1, -1))));
170415
170566
  }
170416
- scrub(text10) {
170417
- let out2 = text10;
170567
+ scrub(text11) {
170568
+ let out2 = text11;
170418
170569
  for (const secret of this.secrets) if (secret) out2 = out2.split(secret).join("[redacted]");
170419
170570
  return scrubString(out2);
170420
170571
  }
@@ -171768,12 +171919,12 @@ async function runRemoteSecretsCommand(operation, flags, io2, options) {
171768
171919
  body = JSON.stringify({ value });
171769
171920
  }
171770
171921
  const response = await (options.fetchImpl ?? fetch)(url, { method: operation === "list" ? "GET" : operation === "set" ? "PUT" : "POST", headers: headers2, body });
171771
- const text10 = await response.text();
171922
+ const text11 = await response.text();
171772
171923
  let output;
171773
171924
  try {
171774
- output = JSON.parse(text10);
171925
+ output = JSON.parse(text11);
171775
171926
  } catch {
171776
- output = text10;
171927
+ output = text11;
171777
171928
  }
171778
171929
  if (!response.ok) throw new Error(typeof output === "string" ? output : JSON.stringify(output));
171779
171930
  io2.log(JSON.stringify(output));
@@ -171831,9 +171982,9 @@ function headersFor(options) {
171831
171982
  ...options.previewTag ? { "x-wix-route-serve": options.previewTag } : {}
171832
171983
  };
171833
171984
  }
171834
- function objectFrom(text10) {
171985
+ function objectFrom(text11) {
171835
171986
  try {
171836
- const value = text10 ? JSON.parse(text10) : null;
171987
+ const value = text11 ? JSON.parse(text11) : null;
171837
171988
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
171838
171989
  } catch {
171839
171990
  return null;
@@ -172071,12 +172222,12 @@ async function runNotifyPing(flags, io2, deps = {}) {
172071
172222
  const flagError = flagRefusal(flags);
172072
172223
  if (flagError) return refuse6(io2, flagError);
172073
172224
  const allMembers = flags["all-members"] === true;
172074
- if (allMembers && text9(flags["member-email"])) return refuse6(io2, "recipient_conflict", "Choose --all-members or --member-email.");
172225
+ if (allMembers && text10(flags["member-email"])) return refuse6(io2, "recipient_conflict", "Choose --all-members or --member-email.");
172075
172226
  if (allMembers && flags["dry-run"] !== true && flags.yes !== true) return refuse6(io2, "confirmation_required", "Preview with --dry-run, then add --yes to send to every approved member.");
172076
- const input = mergePushInputs(pushInputsFromContent(resolve72(text9(flags.content) ?? process.cwd())), flags);
172077
- const missing2 = [...input.app ? [] : ["app"], ...input.site ? [] : ["site"], ...REQUIRED_FLAGS.filter((f2) => !(allMembers && f2 === "member-email") && !text9(flags[f2]))];
172227
+ const input = mergePushInputs(pushInputsFromContent(resolve72(text10(flags.content) ?? process.cwd())), flags);
172228
+ const missing2 = [...input.app ? [] : ["app"], ...input.site ? [] : ["site"], ...REQUIRED_FLAGS.filter((f2) => !(allMembers && f2 === "member-email") && !text10(flags[f2]))];
172078
172229
  if (missing2.length) return refuse6(io2, "needs_input", "Name the app and site (or --content), the member's login email, a title and a link.", 2, { missing: missing2 });
172079
- const requestId2 = text9(flags["request-id"]) ?? (deps.newRequestId ?? randomUUID10)();
172230
+ const requestId2 = text10(flags["request-id"]) ?? (deps.newRequestId ?? randomUUID10)();
172080
172231
  if (!UUID_RE.test(requestId2)) return refuse6(io2, "invalid_request_id", "Reuse the requestId a previous send printed.");
172081
172232
  const owner = await hostedOwnerSession(flags, deps);
172082
172233
  if (!owner.ok) return refuse6(io2, owner.error, owner.hint, owner.exit);
@@ -172093,10 +172244,10 @@ async function runNotifyPing(flags, io2, deps = {}) {
172093
172244
  const body = {
172094
172245
  app: ownership.slug,
172095
172246
  site: input.site,
172096
- memberEmail: text9(flags["member-email"]),
172097
- title: text9(flags.title),
172098
- ...text9(flags.body) ? { body: text9(flags.body) } : {},
172099
- link: text9(flags.link),
172247
+ memberEmail: text10(flags["member-email"]),
172248
+ title: text10(flags.title),
172249
+ ...text10(flags.body) ? { body: text10(flags.body) } : {},
172250
+ link: text10(flags.link),
172100
172251
  requestId: requestId2,
172101
172252
  ...flags["dry-run"] === true ? { dryRun: true } : {}
172102
172253
  };
@@ -172136,7 +172287,7 @@ async function runAllMembers(args) {
172136
172287
  const code = error instanceof PushSendError ? error.code : error instanceof Error && ROSTER_CODES.has(error.message) ? error.message : "member_lookup_unavailable";
172137
172288
  return refuse6(io2, code, void 0, 1);
172138
172289
  }
172139
- const base = { app: input.app, site: input.site, title: text9(flags.title), ...text9(flags.body) ? { body: text9(flags.body) } : {}, link: text9(flags.link) };
172290
+ const base = { app: input.app, site: input.site, title: text10(flags.title), ...text10(flags.body) ? { body: text10(flags.body) } : {}, link: text10(flags.link) };
172140
172291
  const send2 = (recipient, memberRequestId, dryRun = false) => pushSendRequest({
172141
172292
  target: session.target,
172142
172293
  wixToken: session.wixToken,
@@ -172219,7 +172370,7 @@ function summary(result, sent) {
172219
172370
  }
172220
172371
  return `Ping accepted request ${sent.requestId} for ${sent.memberEmail}. Ping does not confirm delivery: it reaches the member's signed-in devices with notifications allowed.`;
172221
172372
  }
172222
- var LOCAL_SENDER_FLAGS, SWITCHES, REQUIRED_FLAGS, UUID_RE, KNOWN_CODES, ROSTER_CODES, HINTS, text9;
172373
+ var LOCAL_SENDER_FLAGS, SWITCHES, REQUIRED_FLAGS, UUID_RE, KNOWN_CODES, ROSTER_CODES, HINTS, text10;
172223
172374
  var init_notify_ping = __esm({
172224
172375
  "src/notify-ping.ts"() {
172225
172376
  init_push_send();
@@ -172247,7 +172398,7 @@ var init_notify_ping = __esm({
172247
172398
  site_token_invalid: "Run wix login as the site owner; the site token must belong to the app owner's account.",
172248
172399
  ping_permission_denied: "Himi Serve is not permitted to send through Ping; this is a platform issue, not your setup."
172249
172400
  };
172250
- text9 = (v2) => typeof v2 === "string" && v2.length > 0 ? v2 : void 0;
172401
+ text10 = (v2) => typeof v2 === "string" && v2.length > 0 ? v2 : void 0;
172251
172402
  }
172252
172403
  });
172253
172404
 
@@ -173372,14 +173523,14 @@ async function callJson(t2, appId2, method, path2, what, body) {
173372
173523
  ...body !== void 0 ? { body: JSON.stringify(body) } : {}
173373
173524
  });
173374
173525
  if (!res.ok) {
173375
- const text11 = await res.text().catch(() => "");
173376
- throw new Base44RequestError(res.status, text11.slice(0, 500), what);
173526
+ const text12 = await res.text().catch(() => "");
173527
+ throw new Base44RequestError(res.status, text12.slice(0, 500), what);
173377
173528
  }
173378
- const text10 = await res.text();
173529
+ const text11 = await res.text();
173379
173530
  try {
173380
- return JSON.parse(text10);
173531
+ return JSON.parse(text11);
173381
173532
  } catch {
173382
- throw new Base44RequestError(res.status, `unreadable response: ${text10.slice(0, 200)}`, what);
173533
+ throw new Base44RequestError(res.status, `unreadable response: ${text11.slice(0, 200)}`, what);
173383
173534
  }
173384
173535
  }
173385
173536
  function requestFailure(e2) {
@@ -173647,16 +173798,16 @@ var init_seed = __esm({
173647
173798
  });
173648
173799
 
173649
173800
  // src/base44-analyze/project.ts
173650
- function parseJsonc(text10) {
173801
+ function parseJsonc(text11) {
173651
173802
  let out2 = "";
173652
173803
  let i2 = 0;
173653
173804
  let inStr = false;
173654
- while (i2 < text10.length) {
173655
- const c2 = text10[i2];
173805
+ while (i2 < text11.length) {
173806
+ const c2 = text11[i2];
173656
173807
  if (inStr) {
173657
173808
  out2 += c2;
173658
173809
  if (c2 === "\\") {
173659
- out2 += text10[i2 + 1] ?? "";
173810
+ out2 += text11[i2 + 1] ?? "";
173660
173811
  i2 += 2;
173661
173812
  continue;
173662
173813
  }
@@ -173668,11 +173819,11 @@ function parseJsonc(text10) {
173668
173819
  inStr = true;
173669
173820
  out2 += c2;
173670
173821
  i2++;
173671
- } else if (c2 === "/" && text10[i2 + 1] === "/") {
173672
- while (i2 < text10.length && text10[i2] !== "\n") i2++;
173673
- } else if (c2 === "/" && text10[i2 + 1] === "*") {
173822
+ } else if (c2 === "/" && text11[i2 + 1] === "/") {
173823
+ while (i2 < text11.length && text11[i2] !== "\n") i2++;
173824
+ } else if (c2 === "/" && text11[i2 + 1] === "*") {
173674
173825
  i2 += 2;
173675
- while (i2 < text10.length && !(text10[i2] === "*" && text10[i2 + 1] === "/")) i2++;
173826
+ while (i2 < text11.length && !(text11[i2] === "*" && text11[i2 + 1] === "/")) i2++;
173676
173827
  i2 += 2;
173677
173828
  } else {
173678
173829
  out2 += c2;
@@ -173681,32 +173832,32 @@ function parseJsonc(text10) {
173681
173832
  }
173682
173833
  return JSON.parse(dropTrailingCommas(out2));
173683
173834
  }
173684
- function dropTrailingCommas(text10) {
173835
+ function dropTrailingCommas(text11) {
173685
173836
  let out2 = "";
173686
173837
  let inStr = false;
173687
- for (let i2 = 0; i2 < text10.length; i2++) {
173688
- const c2 = text10[i2];
173838
+ for (let i2 = 0; i2 < text11.length; i2++) {
173839
+ const c2 = text11[i2];
173689
173840
  if (inStr) {
173690
173841
  out2 += c2;
173691
- if (c2 === "\\") out2 += text10[++i2] ?? "";
173842
+ if (c2 === "\\") out2 += text11[++i2] ?? "";
173692
173843
  else if (c2 === '"') inStr = false;
173693
173844
  continue;
173694
173845
  }
173695
173846
  if (c2 === '"') inStr = true;
173696
173847
  if (c2 === ",") {
173697
173848
  let j2 = i2 + 1;
173698
- while (j2 < text10.length && /\s/.test(text10[j2])) j2++;
173699
- if (text10[j2] === "}" || text10[j2] === "]") continue;
173849
+ while (j2 < text11.length && /\s/.test(text11[j2])) j2++;
173850
+ if (text11[j2] === "}" || text11[j2] === "]") continue;
173700
173851
  }
173701
173852
  out2 += c2;
173702
173853
  }
173703
173854
  return out2;
173704
173855
  }
173705
173856
  function readJson9(files, path2) {
173706
- const text10 = files.get(path2);
173707
- if (text10 === void 0) return void 0;
173857
+ const text11 = files.get(path2);
173858
+ if (text11 === void 0) return void 0;
173708
173859
  try {
173709
- const v2 = parseJsonc(text10);
173860
+ const v2 = parseJsonc(text11);
173710
173861
  return v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : void 0;
173711
173862
  } catch {
173712
173863
  return void 0;
@@ -174236,11 +174387,11 @@ async function readEntitySnapshot(appId2, deps) {
174236
174387
  const { entries, skipped } = collectAppSource(dl2.dir);
174237
174388
  const files = new Map(entries.map((e2) => [e2.path, e2.bytes.toString("utf8")]));
174238
174389
  for (const cfgPath of ["base44/config.jsonc", "base44/config.json"]) {
174239
- const text10 = files.get(cfgPath);
174240
- if (text10 === void 0) continue;
174390
+ const text11 = files.get(cfgPath);
174391
+ if (text11 === void 0) continue;
174241
174392
  let cfg;
174242
174393
  try {
174243
- cfg = parseJsonc(text10);
174394
+ cfg = parseJsonc(text11);
174244
174395
  } catch (e2) {
174245
174396
  throw new Error(`${cfgPath} does not parse (${e2.message}) \u2014 the entity directory it names cannot be trusted, so the snapshot may be incomplete`);
174246
174397
  }
@@ -174253,11 +174404,11 @@ async function readEntitySnapshot(appId2, deps) {
174253
174404
  const isEntityFile = (p2) => entityDirs.some((d2) => p2.startsWith(d2) && !p2.slice(d2.length).includes("/") && JSON_FILE2.test(p2));
174254
174405
  const dropped = skipped.map((p2) => p2.split(/[\\/]/).join("/")).filter((p2) => entityDirs.some((d2) => p2.startsWith(d2) || d2.startsWith(`${p2}/`)));
174255
174406
  if (dropped.length) throw new Error(`the download's entity files include ones himi will not read (${dropped.join(", ")}) \u2014 a sync without them would delete those entities`);
174256
- for (const [path2, text10] of files) {
174407
+ for (const [path2, text11] of files) {
174257
174408
  if (!isEntityFile(path2)) continue;
174258
174409
  let v2;
174259
174410
  try {
174260
- v2 = parseJsonc(text10);
174411
+ v2 = parseJsonc(text11);
174261
174412
  } catch (e2) {
174262
174413
  throw new Error(`entity file ${path2} does not parse (${e2.message}) \u2014 a sync without it would delete that entity`);
174263
174414
  }
@@ -174450,16 +174601,16 @@ function isPrivateV4([a2, b2, c2]) {
174450
174601
  return a2 >= 224;
174451
174602
  }
174452
174603
  function v6Groups(host) {
174453
- let text10 = host;
174454
- const dotted = /:((?:\d{1,3}\.){3}\d{1,3})$/.exec(text10);
174604
+ let text11 = host;
174605
+ const dotted = /:((?:\d{1,3}\.){3}\d{1,3})$/.exec(text11);
174455
174606
  if (dotted) {
174456
174607
  const octets = ipv4Octets(dotted[1]);
174457
174608
  if (!octets) return null;
174458
174609
  const hi2 = (octets[0] << 8 | octets[1]).toString(16);
174459
174610
  const lo2 = (octets[2] << 8 | octets[3]).toString(16);
174460
- text10 = `${text10.slice(0, dotted.index)}:${hi2}:${lo2}`;
174611
+ text11 = `${text11.slice(0, dotted.index)}:${hi2}:${lo2}`;
174461
174612
  }
174462
- const halves = text10.split("::");
174613
+ const halves = text11.split("::");
174463
174614
  if (halves.length > 2) return null;
174464
174615
  const parts = (part3) => part3 ? part3.split(":") : [];
174465
174616
  const head = parts(halves[0]);
@@ -174739,28 +174890,28 @@ var init_net_guard = __esm({
174739
174890
  });
174740
174891
 
174741
174892
  // src/site-analyze/copy-clean.ts
174742
- function isTemplatePlaceholder(text10) {
174743
- return PLACEHOLDER_RE.test(text10);
174893
+ function isTemplatePlaceholder(text11) {
174894
+ return PLACEHOLDER_RE.test(text11);
174744
174895
  }
174745
174896
  function cleanText(raw, cap) {
174746
174897
  const s2 = String(raw ?? "").replace(/[\u0000-\u001F\u007F]/g, " ").replace(/\s+/g, " ").trim();
174747
174898
  return s2.length > cap ? `${s2.slice(0, cap - 1).trimEnd()}\u2026` : s2;
174748
174899
  }
174749
- function stripPii(text10) {
174750
- return text10.replace(EMAIL_RE2, "").replace(PHONE_SHAPE_RE, (m2) => {
174900
+ function stripPii(text11) {
174901
+ return text11.replace(EMAIL_RE2, "").replace(PHONE_SHAPE_RE, (m2) => {
174751
174902
  const digits2 = (m2.match(ANY_DIGIT_RE) ?? []).length;
174752
174903
  return digits2 >= PHONE_MIN_DIGITS && PHONE_DIGIT_RUN_RE.test(m2) ? "" : m2;
174753
174904
  }).replace(/\s+/g, " ").trim();
174754
174905
  }
174755
- function isBoilerplate(text10) {
174756
- return BOILERPLATE_RE.test(text10) || PLACEHOLDER_RE.test(text10);
174906
+ function isBoilerplate(text11) {
174907
+ return BOILERPLATE_RE.test(text11) || PLACEHOLDER_RE.test(text11);
174757
174908
  }
174758
174909
  function copyOrDrop(raw, cap) {
174759
- const text10 = stripPii(cleanText(raw, cap));
174760
- if (text10.length < 2) return "";
174761
- if (isBoilerplate(text10)) return "";
174762
- if (!/[A-Za-zͰ-῿぀-힯]/.test(text10)) return "";
174763
- return text10;
174910
+ const text11 = stripPii(cleanText(raw, cap));
174911
+ if (text11.length < 2) return "";
174912
+ if (isBoilerplate(text11)) return "";
174913
+ if (!/[A-Za-zͰ-῿぀-힯]/.test(text11)) return "";
174914
+ return text11;
174764
174915
  }
174765
174916
  function dedupe2(values, cap) {
174766
174917
  const out2 = [];
@@ -174856,8 +175007,8 @@ function parsePublishedHtml(html) {
174856
175007
  const rawHeadings = [];
174857
175008
  HEADING_RE.lastIndex = 0;
174858
175009
  while (m2 = HEADING_RE.exec(html)) {
174859
- const text10 = copyOrDrop(textFromHtml(m2[1] ?? ""), 120);
174860
- if (text10) rawHeadings.push(text10);
175010
+ const text11 = copyOrDrop(textFromHtml(m2[1] ?? ""), 120);
175011
+ if (text11) rawHeadings.push(text11);
174861
175012
  if (rawHeadings.length >= 40) break;
174862
175013
  }
174863
175014
  const headings = dedupe2(rawHeadings, 20);
@@ -174949,14 +175100,14 @@ async function readPublishedHtml(fetchImpl, siteUrl, opts) {
174949
175100
  const chunk = await reader.read();
174950
175101
  if (chunk.done) break;
174951
175102
  bytes2 += chunk.value.byteLength;
174952
- const text10 = decoder.decode(chunk.value, { stream: true });
174953
- html += text10;
174954
- if (CODE_APP_ID_DONE_RE.test(overlap + text10) || bytes2 >= maxBytes) {
175103
+ const text11 = decoder.decode(chunk.value, { stream: true });
175104
+ html += text11;
175105
+ if (CODE_APP_ID_DONE_RE.test(overlap + text11) || bytes2 >= maxBytes) {
174955
175106
  await reader.cancel().catch(() => {
174956
175107
  });
174957
175108
  break;
174958
175109
  }
174959
- overlap = (overlap + text10).slice(-80);
175110
+ overlap = (overlap + text11).slice(-80);
174960
175111
  }
174961
175112
  } catch (e2) {
174962
175113
  if (!opts.signal?.aborted) throw e2;
@@ -175181,9 +175332,9 @@ var init_permissions = __esm({
175181
175332
  function genericDescription(it2) {
175182
175333
  for (const field of DESCRIPTION_FIELDS) {
175183
175334
  const raw = it2[field];
175184
- const text10 = typeof raw === "string" ? raw : str8(raw?.text);
175185
- if (!text10) continue;
175186
- const plain2 = text10.replace(/<[^>]*>/g, " ").replace(/&nbsp;/g, " ");
175335
+ const text11 = typeof raw === "string" ? raw : str8(raw?.text);
175336
+ if (!text11) continue;
175337
+ const plain2 = text11.replace(/<[^>]*>/g, " ").replace(/&nbsp;/g, " ");
175187
175338
  if (plain2.trim()) return plain2;
175188
175339
  }
175189
175340
  return void 0;
@@ -175664,8 +175815,8 @@ function cmsStatusNote(taxonomy) {
175664
175815
  function yn2(v2) {
175665
175816
  return v2 == null || v2 === "" ? "\u2014" : String(v2);
175666
175817
  }
175667
- function isAuthPhrase(text10) {
175668
- const t2 = text10.trim();
175818
+ function isAuthPhrase(text11) {
175819
+ const t2 = text11.trim();
175669
175820
  return AUTH_ONLY_ASCII.test(t2) || LOGIN_HE.includes(t2);
175670
175821
  }
175671
175822
  function looksGated(page) {
@@ -176464,12 +176615,12 @@ function mergeWst(pages2) {
176464
176615
  return acc;
176465
176616
  }
176466
176617
  function fontSlug(value) {
176467
- let text10 = value;
176618
+ let text11 = value;
176468
176619
  try {
176469
- text10 = decodeURIComponent(value);
176620
+ text11 = decodeURIComponent(value);
176470
176621
  } catch {
176471
176622
  }
176472
- return text10.toLowerCase().replace(/[^a-z0-9]+/g, "");
176623
+ return text11.toLowerCase().replace(/[^a-z0-9]+/g, "");
176473
176624
  }
176474
176625
  function fontUrlSlug(url) {
176475
176626
  const last = url.split("?")[0].split("#")[0].split("/").pop() ?? "";
@@ -176557,9 +176708,9 @@ function attachVeloSources(book, sources, put) {
176557
176708
  if (isSecretVeloPath(f2.path)) continue;
176558
176709
  const rel = veloArtifactRelPath(f2.path);
176559
176710
  if (!rel) continue;
176560
- const text10 = byPath.get(f2.path) ?? f2.excerpt;
176561
- if (!text10) continue;
176562
- put(rel, text10);
176711
+ const text11 = byPath.get(f2.path) ?? f2.excerpt;
176712
+ if (!text11) continue;
176713
+ put(rel, text11);
176563
176714
  f2.localPath = rel;
176564
176715
  }
176565
176716
  }
@@ -176950,7 +177101,7 @@ function appIdFromUrl(raw) {
176950
177101
  return void 0;
176951
177102
  }
176952
177103
  }
176953
- function appIdFromText(text10) {
177104
+ function appIdFromText(text11) {
176954
177105
  const shapes = [
176955
177106
  // The published shell's own badge tag: `<script data-app-id="<id>" src="/static/js/badge.js">`.
176956
177107
  /\bdata-app-id\s*=\s*["']([a-f0-9]{24})["']/,
@@ -176961,7 +177112,7 @@ function appIdFromText(text10) {
176961
177112
  /\/apps\/([a-f0-9]{24})\b/
176962
177113
  ];
176963
177114
  for (const re2 of shapes) {
176964
- const m2 = re2.exec(text10);
177115
+ const m2 = re2.exec(text11);
176965
177116
  if (m2) return m2[1];
176966
177117
  }
176967
177118
  return void 0;
@@ -180409,8 +180560,8 @@ function copyFromEval(evaled) {
180409
180560
  evaled.meta?.ogTitle,
180410
180561
  evaled.meta?.ogDescription
180411
180562
  ].map((raw) => {
180412
- const text10 = cleanText(raw, 400);
180413
- return text10 && isTemplatePlaceholder(text10) ? stripPii(cleanText(text10, 90)) : "";
180563
+ const text11 = cleanText(raw, 400);
180564
+ return text11 && isTemplatePlaceholder(text11) ? stripPii(cleanText(text11, 90)) : "";
180414
180565
  }),
180415
180566
  8
180416
180567
  );
@@ -181512,27 +181663,27 @@ var init_collect = __esm({
181512
181663
 
181513
181664
  // src/one-app/navigation.ts
181514
181665
  function sourceNavigationKind(raw) {
181515
- const navigation = object7(raw.navigation);
181516
- if (object7(navigation.settings).drawerMode === true) return "side-menu";
181666
+ const navigation = object8(raw.navigation);
181667
+ if (object8(navigation.settings).drawerMode === true) return "side-menu";
181517
181668
  const entries = array4(navigation.bottomTabs);
181518
181669
  if (entries.length > 1) return "bottom-tabs";
181519
- const screens = object7(raw.screens);
181520
- const screenId = string5(object7(entries[0]).screenId);
181521
- const screen = screenId && Object.hasOwn(screens, screenId) ? object7(screens[screenId]) : {};
181522
- return object7(screen.layout).type === "TOP_TABS" ? "top-tabs" : "single";
181670
+ const screens = object8(raw.screens);
181671
+ const screenId = string5(object8(entries[0]).screenId);
181672
+ const screen = screenId && Object.hasOwn(screens, screenId) ? object8(screens[screenId]) : {};
181673
+ return object8(screen.layout).type === "TOP_TABS" ? "top-tabs" : "single";
181523
181674
  }
181524
181675
  function planNavigation(raw, policy = "bottom-tabs") {
181525
- const navigation = object7(raw.navigation);
181676
+ const navigation = object8(raw.navigation);
181526
181677
  const entries = array4(navigation.bottomTabs);
181527
- const screens = object7(raw.screens);
181528
- const layouts = object7(raw.layoutItems);
181678
+ const screens = object8(raw.screens);
181679
+ const layouts = object8(raw.layoutItems);
181529
181680
  const kind = sourceNavigationKind(raw);
181530
181681
  const warnings = [];
181531
- const firstEntry = object7(entries[0]);
181682
+ const firstEntry = object8(entries[0]);
181532
181683
  const rootScreenId = string5(firstEntry.screenId) ?? null;
181533
- const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object7(screens[rootScreenId]) : {};
181534
- const rootLayout = object7(rootScreen.layout);
181535
- const settings = object7(navigation.settings);
181684
+ const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object8(screens[rootScreenId]) : {};
181685
+ const rootLayout = object8(rootScreen.layout);
181686
+ const settings = object8(navigation.settings);
181536
181687
  const appInstance = string5(raw.appInstance) ?? null;
181537
181688
  const source = {
181538
181689
  kind,
@@ -181544,8 +181695,8 @@ function planNavigation(raw, policy = "bottom-tabs") {
181544
181695
  const next = "Build navigation from this plan with himi docs one-app-to-himi-app. Report every warning; the plan does not replace the source graph.";
181545
181696
  if (kind === "bottom-tabs") {
181546
181697
  entries.forEach((value, index) => {
181547
- const id = string5(object7(value).screenId);
181548
- if (id && Object.hasOwn(screens, id) && object7(object7(screens[id]).layout).type === "TOP_TABS") {
181698
+ const id = string5(object8(value).screenId);
181699
+ if (id && Object.hasOwn(screens, id) && object8(object8(screens[id]).layout).type === "TOP_TABS") {
181549
181700
  warnings.push({ code: "nested_top_tabs", pointer: `/screens/${part2(id)}/layout/type`, reference: `/navigation/bottomTabs/${index}` });
181550
181701
  }
181551
181702
  });
@@ -181556,14 +181707,14 @@ function planNavigation(raw, policy = "bottom-tabs") {
181556
181707
  const tabs = [];
181557
181708
  const hiddenPages = [];
181558
181709
  array4(rootLayout.items).forEach((value, index) => {
181559
- const layoutItemId = string5(object7(value).layoutItemId);
181710
+ const layoutItemId = string5(object8(value).layoutItemId);
181560
181711
  const itemPointer = `${pointer}/${index}`;
181561
181712
  if (!layoutItemId || !Object.hasOwn(layouts, layoutItemId)) {
181562
181713
  warnings.push({ code: "missing_reference", pointer: itemPointer, ...layoutItemId ? { reference: layoutItemId } : {} });
181563
181714
  return;
181564
181715
  }
181565
- const layout = object7(layouts[layoutItemId]);
181566
- if (object7(layout.settings).hideFromNavigation === true) {
181716
+ const layout = object8(layouts[layoutItemId]);
181717
+ if (object8(layout.settings).hideFromNavigation === true) {
181567
181718
  hiddenPages.push({ layoutItemId, pointer: itemPointer });
181568
181719
  return;
181569
181720
  }
@@ -181608,10 +181759,10 @@ function planNavigation(raw, policy = "bottom-tabs") {
181608
181759
  next
181609
181760
  };
181610
181761
  }
181611
- var object7, array4, string5, part2, TOP_TABS_POLICIES, MAX_BAR_TABS;
181762
+ var object8, array4, string5, part2, TOP_TABS_POLICIES, MAX_BAR_TABS;
181612
181763
  var init_navigation = __esm({
181613
181764
  "src/one-app/navigation.ts"() {
181614
- object7 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
181765
+ object8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
181615
181766
  array4 = (value) => Array.isArray(value) ? value : [];
181616
181767
  string5 = (value) => typeof value === "string" && value ? value : void 0;
181617
181768
  part2 = (value) => value.replaceAll("~", "~0").replaceAll("/", "~1");
@@ -182414,10 +182565,10 @@ async function mintVisitorToken(fetchImpl, clientId) {
182414
182565
  body: JSON.stringify({ clientId, grantType: "anonymous" }),
182415
182566
  signal: AbortSignal.timeout(8e3)
182416
182567
  });
182417
- const text10 = await res.text();
182418
- let parsed = text10;
182568
+ const text11 = await res.text();
182569
+ let parsed = text11;
182419
182570
  try {
182420
- parsed = text10 ? JSON.parse(text10) : null;
182571
+ parsed = text11 ? JSON.parse(text11) : null;
182421
182572
  } catch {
182422
182573
  }
182423
182574
  if (!res.ok) throw new WixApiError2(res.status, "POST", "/oauth2/token", parsed);
@@ -183055,8 +183206,8 @@ var init_copy = __esm({
183055
183206
  function textFields(look) {
183056
183207
  if (look.unavailable) return [];
183057
183208
  const out2 = [];
183058
- const add = (text10, where, narrative = false) => {
183059
- if (text10 && text10.trim()) out2.push({ text: text10, where, narrative });
183209
+ const add = (text11, where, narrative = false) => {
183210
+ if (text11 && text11.trim()) out2.push({ text: text11, where, narrative });
183060
183211
  };
183061
183212
  for (const label3 of look.navLabels) add(label3, "nav");
183062
183213
  for (const p2 of look.pages) {
@@ -183745,8 +183896,8 @@ async function analyzeSite(input, ports) {
183745
183896
  if (locale) plan.provisioning.locale = locale;
183746
183897
  const velo = buildVeloChapter({ look, owner: ownerVelo });
183747
183898
  const veloFiles = ownerVelo.files.flatMap((f2) => {
183748
- const text10 = f2.content ?? f2.excerpt;
183749
- return text10 ? [{ path: f2.path, text: text10 }] : [];
183899
+ const text11 = f2.content ?? f2.excerpt;
183900
+ return text11 ? [{ path: f2.path, text: text11 }] : [];
183750
183901
  }).slice(0, 80);
183751
183902
  const permissions = buildPermissionsChapter({
183752
183903
  cms,
@@ -185052,13 +185203,13 @@ async function veloCall(fetchImpl, method, url, opts = {}) {
185052
185203
  body: opts.body === void 0 ? void 0 : JSON.stringify(opts.body),
185053
185204
  signal: AbortSignal.timeout(opts.timeoutMs ?? 3e4)
185054
185205
  });
185055
- const text10 = await res.text();
185056
- let json8 = text10;
185206
+ const text11 = await res.text();
185207
+ let json8 = text11;
185057
185208
  try {
185058
- json8 = text10 ? JSON.parse(text10) : null;
185209
+ json8 = text11 ? JSON.parse(text11) : null;
185059
185210
  } catch {
185060
185211
  }
185061
- return { status: res.status, json: json8, text: text10 };
185212
+ return { status: res.status, json: json8, text: text11 };
185062
185213
  }
185063
185214
  function snippet2(x2, cap = 180) {
185064
185215
  const s2 = typeof x2 === "string" ? x2 : JSON.stringify(x2) ?? "";
@@ -185615,10 +185766,10 @@ function accountTransport(fetchImpl = fetch, timeoutMs = DEFAULT_TIMEOUT_MS5, sp
185615
185766
  }
185616
185767
  throw new Error(`${method} ${path2} failed: ${err?.message ?? String(e2)}`);
185617
185768
  }
185618
- const text10 = await res.text();
185619
- let parsed = text10;
185769
+ const text11 = await res.text();
185770
+ let parsed = text11;
185620
185771
  try {
185621
- parsed = text10 ? JSON.parse(text10) : null;
185772
+ parsed = text11 ? JSON.parse(text11) : null;
185622
185773
  } catch {
185623
185774
  }
185624
185775
  if (!res.ok) throw new WixApiError(res.status, method, path2, parsed);
@@ -185679,16 +185830,16 @@ async function installVerticals(msid, wanted, token, fetchImpl = fetch, timeoutM
185679
185830
  body: JSON.stringify({ apps: wanted.map((w2) => ({ id: w2.appDefId })) }),
185680
185831
  signal: AbortSignal.timeout(timeoutMs)
185681
185832
  });
185682
- const text10 = await res.text();
185833
+ const text11 = await res.text();
185683
185834
  if (!res.ok) {
185684
185835
  return {
185685
185836
  ...empty2,
185686
- errors: wanted.map((w2) => ({ ...w2, message: `bulk-install -> ${res.status}: ${text10.slice(0, 200)}` }))
185837
+ errors: wanted.map((w2) => ({ ...w2, message: `bulk-install -> ${res.status}: ${text11.slice(0, 200)}` }))
185687
185838
  };
185688
185839
  }
185689
185840
  let body = {};
185690
185841
  try {
185691
- body = text10 ? JSON.parse(text10) : {};
185842
+ body = text11 ? JSON.parse(text11) : {};
185692
185843
  } catch {
185693
185844
  }
185694
185845
  const nameOf2 = (appDefId) => wanted.find((w2) => w2.appDefId === appDefId)?.vertical ?? appDefId;
@@ -186294,9 +186445,9 @@ function redactVeloSource(source, knownSecrets = []) {
186294
186445
  const visitLiterals = (node) => {
186295
186446
  if (ts10.isStringLiteral(node) || ts10.isNoSubstitutionTemplateLiteral(node) || ts10.isTemplateExpression(node)) {
186296
186447
  const start = node.getStart(clean2);
186297
- const text10 = source.slice(start, node.end);
186298
- const redacted = redactLiteral(text10, start);
186299
- if (redacted !== text10) {
186448
+ const text11 = source.slice(start, node.end);
186449
+ const redacted = redactLiteral(text11, start);
186450
+ if (redacted !== text11) {
186300
186451
  edits.push({ start, end: node.end, text: redacted });
186301
186452
  return;
186302
186453
  }
@@ -186720,10 +186871,10 @@ var ServeCliClient = class {
186720
186871
  ...carriesCredential ? { redirect: "error" } : {},
186721
186872
  body: opts.rawBody !== void 0 ? new Uint8Array(opts.rawBody) : opts.body !== void 0 ? JSON.stringify(opts.body) : void 0
186722
186873
  });
186723
- const text10 = await res.text();
186874
+ const text11 = await res.text();
186724
186875
  let json8 = null;
186725
186876
  try {
186726
- json8 = text10 ? JSON.parse(text10) : null;
186877
+ json8 = text11 ? JSON.parse(text11) : null;
186727
186878
  } catch {
186728
186879
  json8 = null;
186729
186880
  }
@@ -186731,7 +186882,7 @@ var ServeCliClient = class {
186731
186882
  res.headers.forEach((v2, k2) => {
186732
186883
  h2[k2] = v2;
186733
186884
  });
186734
- return { status: res.status, ok: res.ok, json: json8, text: text10, headers: h2 };
186885
+ return { status: res.status, ok: res.ok, json: json8, text: text11, headers: h2 };
186735
186886
  }
186736
186887
  // ---- serve (device-facing reads) ----
186737
186888
  health(plane) {
@@ -187518,15 +187669,15 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
187518
187669
  }
187519
187670
  };
187520
187671
  const record2 = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : {};
187521
- const text10 = (value) => typeof value === "string" && value ? value : void 0;
187672
+ const text11 = (value) => typeof value === "string" && value ? value : void 0;
187522
187673
  const message = (value) => {
187523
187674
  const item = record2(value);
187524
- if (text10(item.message)) return text10(item.message);
187525
- if (text10(item.error)) return text10(item.error);
187675
+ if (text11(item.message)) return text11(item.message);
187676
+ if (text11(item.error)) return text11(item.error);
187526
187677
  if (Array.isArray(item.errors)) {
187527
187678
  const diagnostics = item.errors.map((entry) => {
187528
187679
  const diagnostic = record2(entry);
187529
- return text10(diagnostic.text) ?? text10(diagnostic.message);
187680
+ return text11(diagnostic.text) ?? text11(diagnostic.message);
187530
187681
  }).filter((entry) => !!entry);
187531
187682
  if (diagnostics.length) return diagnostics.join("; ");
187532
187683
  }
@@ -187539,29 +187690,29 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
187539
187690
  ...issues,
187540
187691
  ...bres.compileErrors.map((value) => ({
187541
187692
  pass: "compile",
187542
- path: text10(record2(value).bundle),
187693
+ path: text11(record2(value).bundle),
187543
187694
  ruleCode: "compile-error",
187544
187695
  severity: "error",
187545
187696
  message: message(value)
187546
187697
  })),
187547
187698
  ...outcome.failedToBuild.map((value) => ({
187548
187699
  pass: "build",
187549
- screen: text10(record2(value).screenId),
187700
+ screen: text11(record2(value).screenId),
187550
187701
  ruleCode: "failed-to-build",
187551
187702
  severity: "error",
187552
187703
  message: message(value)
187553
187704
  })),
187554
187705
  ...outcome.missingBundles.map((value) => ({
187555
187706
  pass: "build",
187556
- screen: text10(record2(value).screen),
187557
- path: text10(record2(value).bundle),
187707
+ screen: text11(record2(value).screen),
187708
+ path: text11(record2(value).bundle),
187558
187709
  ruleCode: "missing-bundle",
187559
187710
  severity: "error",
187560
187711
  message: message(value)
187561
187712
  })),
187562
187713
  ...workerThrows.map((value) => ({
187563
187714
  pass: "worker",
187564
- path: text10(record2(value).bundle),
187715
+ path: text11(record2(value).bundle),
187565
187716
  ruleCode: "worker-threw",
187566
187717
  severity: "error",
187567
187718
  message: message(value.threw)
@@ -187776,14 +187927,14 @@ function contentDir(flags) {
187776
187927
  return resolve32(str3(flags.content) ?? process.cwd());
187777
187928
  }
187778
187929
  function renameRestoredSource(restored, declaredApp, renamed) {
187779
- const text10 = {};
187930
+ const text11 = {};
187780
187931
  for (const entry of restored) {
187781
187932
  const decoded = entry.bytes.toString("utf8");
187782
- if (Buffer.from(decoded, "utf8").equals(entry.bytes)) text10[entry.path] = decoded;
187933
+ if (Buffer.from(decoded, "utf8").equals(entry.bytes)) text11[entry.path] = decoded;
187783
187934
  }
187784
- const sentineled = sentinelizeArchive(text10, declaredApp);
187935
+ const sentineled = sentinelizeArchive(text11, declaredApp);
187785
187936
  for (const entry of restored) {
187786
- if (!(entry.path in text10)) continue;
187937
+ if (!(entry.path in text11)) continue;
187787
187938
  const body = sentineled[entry.path];
187788
187939
  if (body !== void 0) entry.bytes = Buffer.from(substituteIdentity(body, renamed), "utf8");
187789
187940
  }
@@ -190077,8 +190228,8 @@ async function templateCommand(ctx) {
190077
190228
  io2.error(JSON.stringify({ ok: false, error: e2.message }));
190078
190229
  return 2;
190079
190230
  }
190080
- const text10 = str3(flags.text) ?? (pos.slice(2).join(" ") || void 0);
190081
- if (!text10 && !verticals?.length) {
190231
+ const text11 = str3(flags.text) ?? (pos.slice(2).join(" ") || void 0);
190232
+ if (!text11 && !verticals?.length) {
190082
190233
  io2.error(JSON.stringify({
190083
190234
  ok: false,
190084
190235
  error: 'nothing to match \u2014 pass a business description (--text "\u2026"), --verticals stores,bookings, or --book <site analyze dir>',
@@ -190099,7 +190250,7 @@ async function templateCommand(ctx) {
190099
190250
  note = `remote catalog unreachable (${e2.message}); ranked the embedded templates only`;
190100
190251
  }
190101
190252
  }
190102
- const res = recommendTemplates2({ catalog: catalog3, verticals, text: text10 });
190253
+ const res = recommendTemplates2({ catalog: catalog3, verticals, text: text11 });
190103
190254
  print({
190104
190255
  ok: true,
190105
190256
  ...verticals?.length ? { verticals } : {},
@@ -190720,9 +190871,9 @@ function dpxSessionPresent(path2 = dpxSessionTokenPath()) {
190720
190871
  return false;
190721
190872
  }
190722
190873
  }
190723
- function isPortInUseError(text10) {
190724
- if (!text10) return false;
190725
- return /EADDRINUSE/i.test(text10) || new RegExp(`(:::|:)${DPX_SESSION_PORT}\\b`).test(text10);
190874
+ function isPortInUseError(text11) {
190875
+ if (!text11) return false;
190876
+ return /EADDRINUSE/i.test(text11) || new RegExp(`(:::|:)${DPX_SESSION_PORT}\\b`).test(text11);
190726
190877
  }
190727
190878
  function parseDpxAuthStatusIdentity(stdout) {
190728
190879
  if (!stdout) return void 0;
@@ -190874,23 +191025,23 @@ async function functionsCommand(ctx) {
190874
191025
  const app = str3(flags.app) ?? loaded.app;
190875
191026
  const invoked2 = await invokeRemoteFunction2({ baseUrl: target.baseUrl, app, definition, body: input, params, releaseId: remoteRelease, previewToken: str3(flags["preview-token"]), boCookie: boCookie() });
190876
191027
  const response = invoked2.response;
190877
- const text11 = await response.text();
191028
+ const text12 = await response.text();
190878
191029
  let body2;
190879
191030
  try {
190880
- body2 = JSON.parse(text11);
191031
+ body2 = JSON.parse(text12);
190881
191032
  } catch {
190882
- body2 = text11;
191033
+ body2 = text12;
190883
191034
  }
190884
191035
  print({ ok: response.ok, app, releaseId: remoteRelease ?? null, url: invoked2.url, status: response.status, body: body2 });
190885
191036
  return response.ok ? 0 : 1;
190886
191037
  }
190887
191038
  const invoked = await invokeLocalFunction2(loaded, name, input, params);
190888
- const text10 = await invoked.response.text();
191039
+ const text11 = await invoked.response.text();
190889
191040
  let body;
190890
191041
  try {
190891
- body = JSON.parse(text10);
191042
+ body = JSON.parse(text11);
190892
191043
  } catch {
190893
- body = text10;
191044
+ body = text11;
190894
191045
  }
190895
191046
  print({ ok: invoked.response.ok, app: loaded.app, releaseId: invoked.releaseId, status: invoked.response.status, body });
190896
191047
  return invoked.response.ok ? 0 : 1;
@@ -191172,18 +191323,18 @@ function walkSource(dir, root = dir) {
191172
191323
  const ext = entry.name.slice(entry.name.lastIndexOf("."));
191173
191324
  if (!SOURCE_EXTENSIONS.has(ext)) continue;
191174
191325
  const absolute = join76(dir, entry.name);
191175
- const text10 = readText2(absolute);
191176
- if (text10 !== null) found.push({ path: relative14(root, absolute), text: text10 });
191326
+ const text11 = readText2(absolute);
191327
+ if (text11 !== null) found.push({ path: relative14(root, absolute), text: text11 });
191177
191328
  }
191178
191329
  return found;
191179
191330
  }
191180
- function blankMatrixRows(text10) {
191181
- const acceptance = mobileUxSection(mobileUxDocumentBody(text10), "Implementation acceptance") ?? "";
191331
+ function blankMatrixRows(text11) {
191332
+ const acceptance = mobileUxSection(mobileUxDocumentBody(text11), "Implementation acceptance") ?? "";
191182
191333
  return /\|\s*(?:Ready|Empty|Add\s*\/\s*edit|Saved\s*\/\s*completed|Error\s*\/\s*recovery)\s*\|\s*\|\s*\|\s*\|\s*\|/i.test(acceptance);
191183
191334
  }
191184
191335
  function usesAppNetwork(source) {
191185
- const code = (text10) => text10.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/[^\n]*/g, "");
191186
- return source.some(({ text: text10 }) => /\bwixApi\b|(?:from|import)\s*["']@(?:himalaya|wix\/himalaya)\/wix-[^"']+["']/.test(code(text10)));
191336
+ const code = (text11) => text11.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/[^\n]*/g, "");
191337
+ return source.some(({ text: text11 }) => /\bwixApi\b|(?:from|import)\s*["']@(?:himalaya|wix\/himalaya)\/wix-[^"']+["']/.test(code(text11)));
191187
191338
  }
191188
191339
  function auditUx(content, strict = false) {
191189
191340
  const dir = resolve60(content);
@@ -193412,8 +193563,8 @@ import { resolve as resolve67 } from "node:path";
193412
193563
 
193413
193564
  // ../../core/admin-web/src/utils/qr-terminal.ts
193414
193565
  init_qr();
193415
- function qrTerminal(text10, opts = {}) {
193416
- const { modules, size } = encodeQr(text10);
193566
+ function qrTerminal(text11, opts = {}) {
193567
+ const { modules, size } = encodeQr(text11);
193417
193568
  const quietZone = opts.quietZone ?? 4;
193418
193569
  const dim = size + quietZone * 2;
193419
193570
  const dark = (x2, y2) => x2 >= quietZone && x2 < quietZone + size && y2 >= quietZone && y2 < quietZone + size ? modules[y2 - quietZone][x2 - quietZone] : false;
@@ -198066,14 +198217,14 @@ function createTrimValidator(deps = {}, spawnFn = spawn7) {
198066
198217
  const parsed = JSON.parse(report3);
198067
198218
  counts = parsed.counts;
198068
198219
  if (Array.isArray(parsed.findings)) {
198069
- const text10 = (v2) => typeof v2 === "string" && v2 ? v2 : void 0;
198220
+ const text11 = (v2) => typeof v2 === "string" && v2 ? v2 : void 0;
198070
198221
  errors = parsed.findings.filter((f2) => f2 && f2.severity === "error" && typeof f2.id === "string").map((f2) => ({
198071
198222
  id: f2.id,
198072
- message: text10(f2.message) ?? "",
198073
- ...text10(f2.pass) ? { pass: text10(f2.pass) } : {},
198074
- ...text10(f2.screen) ? { screen: text10(f2.screen) } : {},
198075
- ...text10(f2.path) ? { path: text10(f2.path) } : {},
198076
- ...text10(f2.ruleCode) ? { ruleCode: text10(f2.ruleCode) } : {}
198223
+ message: text11(f2.message) ?? "",
198224
+ ...text11(f2.pass) ? { pass: text11(f2.pass) } : {},
198225
+ ...text11(f2.screen) ? { screen: text11(f2.screen) } : {},
198226
+ ...text11(f2.path) ? { path: text11(f2.path) } : {},
198227
+ ...text11(f2.ruleCode) ? { ruleCode: text11(f2.ruleCode) } : {}
198077
198228
  }));
198078
198229
  }
198079
198230
  } catch {