@prenta/admin 2.7.0 → 2.8.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 (163) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/design-system/tokens.css +17 -0
  3. package/design-system/tokens.json +35 -1
  4. package/design-system/tokens.scss +15 -0
  5. package/design-system/tokens.tailwind.cjs +14 -0
  6. package/dist/AdminRoot.d.ts.map +1 -1
  7. package/dist/AdminRoot.js +2 -2
  8. package/dist/AdminRoot.js.map +1 -1
  9. package/dist/__tests__/lib/batch-wizard.test.d.ts +2 -0
  10. package/dist/__tests__/lib/batch-wizard.test.d.ts.map +1 -0
  11. package/dist/__tests__/lib/batch-wizard.test.js +144 -0
  12. package/dist/__tests__/lib/batch-wizard.test.js.map +1 -0
  13. package/dist/__tests__/lib/job-drawer.test.js +2 -0
  14. package/dist/__tests__/lib/job-drawer.test.js.map +1 -1
  15. package/dist/__tests__/lib/job-view.test.js +100 -3
  16. package/dist/__tests__/lib/job-view.test.js.map +1 -1
  17. package/dist/__tests__/lib/jobs-service.test.js +56 -2
  18. package/dist/__tests__/lib/jobs-service.test.js.map +1 -1
  19. package/dist/__tests__/views/appearance-chrome.render.test.d.ts +2 -0
  20. package/dist/__tests__/views/appearance-chrome.render.test.d.ts.map +1 -0
  21. package/dist/__tests__/views/appearance-chrome.render.test.js +688 -0
  22. package/dist/__tests__/views/appearance-chrome.render.test.js.map +1 -0
  23. package/dist/__tests__/views/header-footer-form.test.d.ts +2 -0
  24. package/dist/__tests__/views/header-footer-form.test.d.ts.map +1 -0
  25. package/dist/__tests__/views/header-footer-form.test.js +266 -0
  26. package/dist/__tests__/views/header-footer-form.test.js.map +1 -0
  27. package/dist/__tests__/views/jobs-drawer.render.test.js +442 -2
  28. package/dist/__tests__/views/jobs-drawer.render.test.js.map +1 -1
  29. package/dist/__tests__/views/jobs-list.render.test.js +7 -5
  30. package/dist/__tests__/views/jobs-list.render.test.js.map +1 -1
  31. package/dist/__tests__/views/jobs-wizard.render.test.d.ts +2 -0
  32. package/dist/__tests__/views/jobs-wizard.render.test.d.ts.map +1 -0
  33. package/dist/__tests__/views/jobs-wizard.render.test.js +588 -0
  34. package/dist/__tests__/views/jobs-wizard.render.test.js.map +1 -0
  35. package/dist/lib/api.d.ts +2 -0
  36. package/dist/lib/api.d.ts.map +1 -1
  37. package/dist/lib/api.js +8 -1
  38. package/dist/lib/api.js.map +1 -1
  39. package/dist/lib/batch-wizard.d.ts +84 -0
  40. package/dist/lib/batch-wizard.d.ts.map +1 -0
  41. package/dist/lib/batch-wizard.js +122 -0
  42. package/dist/lib/batch-wizard.js.map +1 -0
  43. package/dist/lib/chrome-service.d.ts +69 -0
  44. package/dist/lib/chrome-service.d.ts.map +1 -0
  45. package/dist/lib/chrome-service.js +108 -0
  46. package/dist/lib/chrome-service.js.map +1 -0
  47. package/dist/lib/job-view.d.ts +43 -0
  48. package/dist/lib/job-view.d.ts.map +1 -1
  49. package/dist/lib/job-view.js +57 -1
  50. package/dist/lib/job-view.js.map +1 -1
  51. package/dist/lib/jobs-service.d.ts +19 -1
  52. package/dist/lib/jobs-service.d.ts.map +1 -1
  53. package/dist/lib/jobs-service.js +41 -0
  54. package/dist/lib/jobs-service.js.map +1 -1
  55. package/dist/prenta-admin.css +1 -1
  56. package/dist/views/AppearanceChrome.d.ts +22 -4
  57. package/dist/views/AppearanceChrome.d.ts.map +1 -1
  58. package/dist/views/AppearanceChrome.js +451 -15
  59. package/dist/views/AppearanceChrome.js.map +1 -1
  60. package/dist/views/Jobs/CancelJobDialog.d.ts +7 -1
  61. package/dist/views/Jobs/CancelJobDialog.d.ts.map +1 -1
  62. package/dist/views/Jobs/CancelJobDialog.js +13 -3
  63. package/dist/views/Jobs/CancelJobDialog.js.map +1 -1
  64. package/dist/views/Jobs/DrawerReview.d.ts +7 -0
  65. package/dist/views/Jobs/DrawerReview.d.ts.map +1 -1
  66. package/dist/views/Jobs/DrawerReview.js +1 -1
  67. package/dist/views/Jobs/DrawerReview.js.map +1 -1
  68. package/dist/views/Jobs/JobDrawer.d.ts +23 -3
  69. package/dist/views/Jobs/JobDrawer.d.ts.map +1 -1
  70. package/dist/views/Jobs/JobDrawer.js +30 -5
  71. package/dist/views/Jobs/JobDrawer.js.map +1 -1
  72. package/dist/views/Jobs/JobsTable.d.ts +4 -2
  73. package/dist/views/Jobs/JobsTable.d.ts.map +1 -1
  74. package/dist/views/Jobs/JobsTable.js +6 -5
  75. package/dist/views/Jobs/JobsTable.js.map +1 -1
  76. package/dist/views/Jobs/NewBatchJob.d.ts +34 -0
  77. package/dist/views/Jobs/NewBatchJob.d.ts.map +1 -0
  78. package/dist/views/Jobs/NewBatchJob.js +282 -0
  79. package/dist/views/Jobs/NewBatchJob.js.map +1 -0
  80. package/dist/views/Jobs/WorkerStrip.d.ts +3 -1
  81. package/dist/views/Jobs/WorkerStrip.d.ts.map +1 -1
  82. package/dist/views/Jobs/WorkerStrip.js +2 -2
  83. package/dist/views/Jobs/WorkerStrip.js.map +1 -1
  84. package/dist/views/Jobs/focus.d.ts +6 -0
  85. package/dist/views/Jobs/focus.d.ts.map +1 -1
  86. package/dist/views/Jobs/focus.js +10 -0
  87. package/dist/views/Jobs/focus.js.map +1 -1
  88. package/dist/views/Jobs.d.ts +12 -3
  89. package/dist/views/Jobs.d.ts.map +1 -1
  90. package/dist/views/Jobs.js +109 -31
  91. package/dist/views/Jobs.js.map +1 -1
  92. package/dist/views/header-footer/AnnouncementTab.d.ts +15 -0
  93. package/dist/views/header-footer/AnnouncementTab.d.ts.map +1 -0
  94. package/dist/views/header-footer/AnnouncementTab.js +43 -0
  95. package/dist/views/header-footer/AnnouncementTab.js.map +1 -0
  96. package/dist/views/header-footer/ChromeField.d.ts +25 -0
  97. package/dist/views/header-footer/ChromeField.d.ts.map +1 -0
  98. package/dist/views/header-footer/ChromeField.js +99 -0
  99. package/dist/views/header-footer/ChromeField.js.map +1 -0
  100. package/dist/views/header-footer/ChromePreview.d.ts +31 -0
  101. package/dist/views/header-footer/ChromePreview.d.ts.map +1 -0
  102. package/dist/views/header-footer/ChromePreview.js +195 -0
  103. package/dist/views/header-footer/ChromePreview.js.map +1 -0
  104. package/dist/views/header-footer/DeveloperTab.d.ts +17 -0
  105. package/dist/views/header-footer/DeveloperTab.d.ts.map +1 -0
  106. package/dist/views/header-footer/DeveloperTab.js +98 -0
  107. package/dist/views/header-footer/DeveloperTab.js.map +1 -0
  108. package/dist/views/header-footer/RegionTab.d.ts +27 -0
  109. package/dist/views/header-footer/RegionTab.d.ts.map +1 -0
  110. package/dist/views/header-footer/RegionTab.js +80 -0
  111. package/dist/views/header-footer/RegionTab.js.map +1 -0
  112. package/dist/views/header-footer/chrome-form.d.ts +137 -0
  113. package/dist/views/header-footer/chrome-form.d.ts.map +1 -0
  114. package/dist/views/header-footer/chrome-form.js +518 -0
  115. package/dist/views/header-footer/chrome-form.js.map +1 -0
  116. package/dist/views/header-footer/code-samples.d.ts +30 -0
  117. package/dist/views/header-footer/code-samples.d.ts.map +1 -0
  118. package/dist/views/header-footer/code-samples.js +127 -0
  119. package/dist/views/header-footer/code-samples.js.map +1 -0
  120. package/dist/views/header-footer/controls.d.ts +57 -0
  121. package/dist/views/header-footer/controls.d.ts.map +1 -0
  122. package/dist/views/header-footer/controls.js +43 -0
  123. package/dist/views/header-footer/controls.js.map +1 -0
  124. package/package.json +3 -3
  125. package/src/AdminRoot.tsx +16 -2
  126. package/src/__tests__/lib/batch-wizard.test.ts +199 -0
  127. package/src/__tests__/lib/job-drawer.test.ts +2 -0
  128. package/src/__tests__/lib/job-view.test.ts +123 -2
  129. package/src/__tests__/lib/jobs-service.test.ts +72 -3
  130. package/src/__tests__/views/appearance-chrome.render.test.tsx +818 -0
  131. package/src/__tests__/views/header-footer-form.test.ts +333 -0
  132. package/src/__tests__/views/jobs-drawer.render.test.tsx +508 -2
  133. package/src/__tests__/views/jobs-list.render.test.tsx +8 -5
  134. package/src/__tests__/views/jobs-wizard.render.test.tsx +707 -0
  135. package/src/lib/api.ts +12 -1
  136. package/src/lib/batch-wizard.ts +188 -0
  137. package/src/lib/chrome-service.ts +200 -0
  138. package/src/lib/job-view.ts +95 -1
  139. package/src/lib/jobs-service.ts +56 -1
  140. package/src/styles/prenta-tokens.css +17 -0
  141. package/src/styles/theme.css +15 -0
  142. package/src/views/AppearanceChrome.tsx +704 -46
  143. package/src/views/Jobs/CancelJobDialog.tsx +20 -2
  144. package/src/views/Jobs/DrawerReview.tsx +1 -1
  145. package/src/views/Jobs/JobDrawer.tsx +83 -3
  146. package/src/views/Jobs/JobsTable.tsx +11 -4
  147. package/src/views/Jobs/NewBatchJob.tsx +857 -0
  148. package/src/views/Jobs/WorkerStrip.tsx +16 -11
  149. package/src/views/Jobs/focus.ts +11 -0
  150. package/src/views/Jobs.tsx +163 -49
  151. package/src/views/header-footer/AnnouncementTab.tsx +231 -0
  152. package/src/views/header-footer/ChromeField.tsx +358 -0
  153. package/src/views/header-footer/ChromePreview.tsx +497 -0
  154. package/src/views/header-footer/DeveloperTab.tsx +331 -0
  155. package/src/views/header-footer/RegionTab.tsx +398 -0
  156. package/src/views/header-footer/chrome-form.ts +603 -0
  157. package/src/views/header-footer/code-samples.ts +146 -0
  158. package/src/views/header-footer/controls.tsx +166 -0
  159. package/dist/views/Jobs/placeholders.d.ts +0 -6
  160. package/dist/views/Jobs/placeholders.d.ts.map +0 -1
  161. package/dist/views/Jobs/placeholders.js +0 -20
  162. package/dist/views/Jobs/placeholders.js.map +0 -1
  163. package/src/views/Jobs/placeholders.tsx +0 -66
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-wizard.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/jobs-wizard.render.test.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAiCxF,MAAM,MAAM,GAAW;IACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACvD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACrD,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;CACV,CAAA;AAED,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU;IAC5B,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAoB,EAAE,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACnD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QACzC,IAAI,GAAG,CAAC,QAAQ,KAAK,yBAAyB;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACxF,IAAI,GAAG,CAAC,QAAQ,KAAK,wBAAwB;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1E,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtF,OAAO,EAAE,KAAK,EAAE,cAAc,MAAM,IAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACnE,CAAC,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1E,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAEpC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAA;AACvE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAEpD,MAAM,MAAM,GAAG;IACb,WAAW,EAAE;QACX,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QACnE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QACnE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QACrD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;KAC1F;CACF,CAAA;AAED,MAAM,MAAM,GAAG;IACb,EAAE,KAAK,EAAE,6BAA6B,EAAE,GAAG,EAAE,uBAAuB,EAAE;IACtE,EAAE,KAAK,EAAE,qCAAqC,EAAE,GAAG,EAAE,gCAAgC,EAAE;IACvF,EAAE,KAAK,EAAE,2BAA2B,EAAE,GAAG,EAAE,iCAAiC,EAAE;CAC/E,CAAA;AAED,kFAAkF;AAClF,SAAS,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE,MAAqB,CAAC;IAClD,OAAO;QACL,IAAI,EAAE;YACJ,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,EAAE,KAAK,GAAG,GAAG;YACnB,OAAO,EAAE,KAAK;YACd,iBAAiB,EAAE,GAAG;SACvB;QACD,MAAM,EAAE,GAAG;KACZ,CAAA;AACH,CAAC;AAED,MAAM,MAAM,GAAG;IACb,+EAA+E;IAC/E,uEAAuE;IACvE,uEAAuE;CACxE,CAAA;AAED,SAAS,QAAQ;IACf,IAAI,OAA4B,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;IACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC7B,CAAC;AAED,SAAS,GAAG,CAAC,QAAQ,GAAG,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;AACtD,CAAC;AAED,SAAS,GAAG,CAAC,YAA0B,EAAE;IACvC,OAAO;QACL,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,2BAA2B;QAClC,KAAK,EAAE,2CAA2C;QAClD,KAAK,EAAE,GAAG,EAAE;QACZ,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE;QAC/E,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7D,SAAS,EAAE,GAAG,EAAE;QAChB,SAAS,EAAE,GAAG,EAAE;QAChB,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QACpC,OAAO,EAAE;YACP,SAAS,EAAE,MAAM;YACjB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,OAAO;SACnB;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;QAChD,GAAG,SAAS;KACb,CAAA;AACH,CAAC;AAED,SAAS,YAAY;IACnB,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACxB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;KACd,CAAA;AACH,CAAC;AAED,mEAAmE;AACnE,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAC/C,MAAM,IAAI,GACR,QAAQ,KAAK,gBAAgB;QAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;QACjC,CAAC,CAAC,QAAQ,KAAK,cAAc;YAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YAC1B,CAAC,CAAC,IAAI,CAAA;IACZ,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,EAAE,EAAE,IAAI,KAAK,IAAI;QACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACxB,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QACvF,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;KACjD,CAAC,CAAA;AACJ,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACxC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,MAAM,CAAC,IAAI,GAAG,EAAE,CAAA;IAChB,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;IAClC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;QACtB,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACzF;QACD,MAAM,EAAE,GAAG;KACZ,CAAC,CAAA;IACF,gFAAgF;IAChF,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC;YAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE;YAC9E,OAAO,EAAE;gBACP,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,WAAW;gBACzB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7D,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,OAAO;aACnB;SACF,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACvC,CAAC,CAAA;IACD,KAAK,CAAC,SAAS,EAAE,CAAA;AACnB,CAAC,CAAC,CAAA;AACF,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,gBAAgB,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAEF,SAAS,YAAY,CAAC,QAAmC,EAAE;IACzD,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IACvB,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IACxB,MAAM,CACJ,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,KAAM,KAAK,GAAI,CAC9F,CAAA;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AAClE,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,MAAM,CAAC,KAAK;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;SAC/D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,YAAY,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,OAAO,CAAC,MAAmB;IAClC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,uBAAuB,CAAE;SAC/F,WAAY,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAmB;IACxC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IACzE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AAChD,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAmB;IACxC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACrB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IACzE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;AAC5D,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACtF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAChD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAE,CAAC,aAAa,CAAC,GAAG,CAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;YACpF,2BAA2B;YAC3B,yBAAyB;YACzB,qBAAqB;YACrB,gBAAgB;YAChB,oBAAoB;YACpB,oBAAoB;SACrB,CAAC,CAAA;QACF,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sDAAsD,CAAC,CACjF,CAAC,UAAU,EAAE,CAAA;QACd,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAA;QACrF,MAAM,CAAE,IAAyB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC/E,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0DAA0D,CAAC,CACrF,CAAC,UAAU,EAAE,CAAA;QACd,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC3E,mCAAmC;QACnC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;QAClF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,aAAa,CAAwB,CAAA;QACvF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAClC,qEAAqE,CACtE,CAAA;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QACrE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvD,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QAC/D,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAA;QAC5F,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACnE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAChD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC9C,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAEvC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QAC1F,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,uCAAuC,EAAE,EAAE,CAAC,CAAA;QAC7F,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC7E,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrD,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,CAAC,CAAE,CAAA;QACjC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;QAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAA;QAC1C,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACxC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACvE,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAG,QAAQ,EAAS,CAAA;QAC9B,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAA;QACpC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC/F,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACrE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAsB,CAAA;QAC7E,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5C,gCAAgC;QAChC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAE/C,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC/C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,CAAC,CAAE,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YACxC,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAA;QACF,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QAClF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAClE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC/E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACzE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC/E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE,CAC1B,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QACvF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAC9C,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAC1F,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACnD,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACxF,iBAAiB;YACjB,WAAW;YACX,WAAW;SACZ,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QACxE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACtD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;QACpF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAE/C,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;QAClC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QAC1E,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAC9C,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CACjE,iCAAiC,CAClC,CAAA;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QACrE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAE/C,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACtC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QACvF,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CACrE,4DAA4D,CAC7D,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAA;QACvF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;QACtD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAsB,CAAA;QAC7E,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACrE,MAAM,CAAE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAuB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1F,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC5D,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAChF,MAAM,CAAE,MAA2B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC5D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC1E,MAAM,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAsB,CAAC,OAAO,CAC3F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAE,CAAA;QACzC,MAAM,CACJ,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5C,CAAC,CAAC,aAAa,CAAC,IAAI,CAAE,CAAC,WAAW;YAClC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAE,CAAC,WAAW;SACnC,CAAC,CACH,CAAC,OAAO,CAAC;YACR,CAAC,WAAW,EAAE,IAAI,CAAC;YACnB,CAAC,gBAAgB,EAAE,SAAS,CAAC;YAC7B,CAAC,UAAU,EAAE,aAAa,CAAC;SAC5B,CAAC,CAAA;QACF,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CACtB,iFAAiF,CAClF,CACF,CAAC,UAAU,EAAE,CAAA;QACd,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACvF,kCAAkC;QAClC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAC9F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,IAAI,GAAG,QAAQ,EAAS,CAAA;QAC9B,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAA;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CACtB,qFAAqF,CACtF,CACF,CAAC,UAAU,EAAE,CAAA;QACd,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;QACrE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACvB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrD,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAE3F,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CACnB,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACzF;YACD,MAAM,EAAE,GAAG;SACZ,CAAC,CACH,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC1E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,wBAAwB,CAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACtF,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;YACtB,KAAK,EAAE,mCAAmC;YAC1C,MAAM,EAAE,GAAG;SACZ,CAAC,CAAA;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;QAClF,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACvE,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CACjE,6DAA6D,CAC9D,CAAA;QAED,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;YACtB,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL;wBACE,UAAU,EAAE,IAAI;wBAChB,KAAK,EAAE,WAAW;wBAClB,KAAK,EAAE,gEAAgE;qBACxE;iBACF;aACF;YACD,MAAM,EAAE,GAAG;SACZ,CAAC,CAAA;QACF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QAC1E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;QAChE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACvE,MAAM,CACJ,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,uDAAuD,CAAC,CACzF,CAAC,UAAU,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAA;QAC3C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;QAClF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACtE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAA;QACjF,MAAM,CAAE,OAA4B,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzD,MAAM,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAsB,CAAC,OAAO,CAC3F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAA;QAC5F,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE9D,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;QACnF,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,gBAAgB,CAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;YACpF,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,OAAO;SACnB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;QACnD,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAA;QAC/E,MAAM,CAAE,IAAyB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACjE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9E,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1D,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrB,MAAM,CAAE,IAAyB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAClD,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAA;QAC/E,MAAM,CAAE,IAAyB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,IAAI,GAAG,QAAQ,EAAS,CAAA;QAC9B,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAA;QAClC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAA;QACpD,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAChF,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpD,kDAAkD;QAClD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC5C,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAE9C,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QAC9F,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CACxD,yDAAyD,CAC1D,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QAClD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,gBAAgB,CAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC9E,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;QAEF,kBAAkB;QAClB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;QACjC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACvE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAA;QAC3C,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QACvF,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;QAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAC7E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QAClF,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;YAC9B,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;SAChE,CAAC,CAAA;QACF,4DAA4D;QAC5D,MAAM,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAsB;aACzF,QAAQ,CACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAsB,CAAA;QAC7E,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7D,MAAM,CAAE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAuB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACtD,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,UAAU;SACxB,CAAC,CAAA;QACF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QACzE,SAAS,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAA;QACzF,MAAM,OAAO,CAAC,GAAG,EAAE,CACjB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,gBAAgB,CAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;YACpF,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;SAC5C,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QACxF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,OAAO,CAAuB,CAAA;QACzE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,CAAC,IAAI,GAAG;YACZ,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC;SACxF,CAAA;QACD,MAAM,CAAC,KAAC,IAAI,IAAC,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAC,OAAO,EAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAA;QACnE,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;QACvE,MAAM,CAAC,KAAK,EAAE,CAAA;QACd,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACvB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACrB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;QAEnF,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpE,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,mDAAmD,CAAC,CAAA;QACvF,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAc,iBAAiB,CAAC,CAAC,CAAA;QAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC/D,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9E,MAAM,CAAC,KAAC,IAAI,IAAC,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAA;QACpE,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;QACvE,MAAM,CAAC,KAAK,EAAE,CAAA;QACd,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACvB,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QAChE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAC,IAAI,IAAC,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAA;QACxF,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC7E,OAAO,EAAE,CAAA;QACT,MAAM,CAAC,KAAC,IAAI,IAAC,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAA;QACpE,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAC/E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/dist/lib/api.d.ts CHANGED
@@ -28,6 +28,8 @@ export interface CmsApiResult<T> {
28
28
  * narrow it themselves.
29
29
  */
30
30
  body?: unknown;
31
+ /** The response's `ETag`, for endpoints that take `If-Match` on the next write. */
32
+ etag?: string;
31
33
  status: number;
32
34
  }
33
35
  export declare function cmsApi<T = unknown>(endpoint: string, options?: RequestInit): Promise<CmsApiResult<T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,QAEtC;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAmBD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAcrD;AAcD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CA2C1B"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,QAEtC;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAmBD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAcrD;AAcD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAoD1B"}
package/dist/lib/api.js CHANGED
@@ -86,6 +86,8 @@ export async function cmsApi(endpoint, options = {}) {
86
86
  try {
87
87
  const res = await fetch(url, { ...options, headers, credentials: 'include' });
88
88
  const json = await res.json().catch(() => ({}));
89
+ // Test doubles often stub `fetch` with a bare `{ ok, json }`.
90
+ const etag = typeof res.headers?.get === 'function' ? (res.headers.get('ETag') ?? undefined) : undefined;
89
91
  if (!res.ok) {
90
92
  return {
91
93
  error: json.error || `Request failed (${res.status})`,
@@ -94,7 +96,12 @@ export async function cmsApi(endpoint, options = {}) {
94
96
  status: res.status,
95
97
  };
96
98
  }
97
- return { data: json.data ?? json, body: json, status: res.status };
99
+ return {
100
+ data: json.data ?? json,
101
+ body: json,
102
+ status: res.status,
103
+ ...(etag ? { etag } : {}),
104
+ };
98
105
  }
99
106
  catch (err) {
100
107
  return { error: err instanceof Error ? err.message : 'Network error', status: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * The New batch AI job wizard (jobs-new.jsx, TRACKING P-20): its sources,
3
+ * validation and request, kept apart from the component so they can be
4
+ * tested on their own. The server's rules are in cms-core `jobs/batch-ai.ts`
5
+ * and CONFLICTS.md §4 (P-16).
6
+ */
7
+ import type { BatchAiEstimate, BatchAiPayload, BatchAiRequest, BatchAiTextField } from '@prenta/core';
8
+ import { JOB_OPS } from './job-view.js';
9
+ export type BatchOperation = BatchAiPayload['operation'];
10
+ export type BatchOp = (typeof JOB_OPS)[number];
11
+ /** Where a batch runs: a page or post collection, or the media library. */
12
+ export interface BatchSource {
13
+ /** The collection's key in the config, or `media`. */
14
+ id: string;
15
+ /** The kit's Content select label ("Posts", "Media library"). */
16
+ label: string;
17
+ }
18
+ export declare const MEDIA_SOURCE: BatchSource;
19
+ /**
20
+ * Documents picked in a list (P-21's "Run with AI…"). They run as they are,
21
+ * without the operation's "Only where" preset.
22
+ */
23
+ export interface BatchSelection {
24
+ /** A collection key, or `media` for images picked in the media library. */
25
+ source: string;
26
+ documentIds: string[];
27
+ }
28
+ export declare const INSTRUCTION_MAX = 2000;
29
+ /**
30
+ * The fields a custom instruction can rewrite. `field` isn't in the kit's
31
+ * contract; it's the kit's "Field you choose" (CONFLICTS.md §4, P-16).
32
+ */
33
+ export declare const CUSTOM_FIELDS: ReadonlyArray<{
34
+ id: BatchAiTextField;
35
+ label: string;
36
+ }>;
37
+ export declare function batchOp(id: BatchOperation): BatchOp;
38
+ /**
39
+ * The Content select's options: the config's page and post collections, in
40
+ * config order, without hidden ones (as Settings → AI's brand voice lists
41
+ * them). The media library is added for alt text only.
42
+ */
43
+ export declare function batchSources(config: unknown): BatchSource[];
44
+ /** cms-core's `ADMIN_ROLES`: who may queue a batch that applies changes automatically. */
45
+ export declare function isAdminRole(role: string | null | undefined): boolean;
46
+ /** Alt text runs on images; every other operation on a collection. */
47
+ export declare function runsOnMedia(operation: BatchOperation): boolean;
48
+ /** Whether an operation can run on a picked selection's source. */
49
+ export declare function operationFits(operation: BatchOperation, selection: BatchSelection | null): boolean;
50
+ /** Everything the wizard asks, before it becomes a request. */
51
+ export interface BatchDraft {
52
+ operation: BatchOperation;
53
+ instruction: string;
54
+ field: BatchAiTextField;
55
+ /** The collection picked in the Content select (ignored for alt text). */
56
+ collection: string;
57
+ statusFilter: 'published' | 'all';
58
+ review: 'review' | 'auto';
59
+ onApprove: 'draft' | 'publish';
60
+ selection: BatchSelection | null;
61
+ }
62
+ /** Step 1's check: a custom instruction needs more than 8 characters (the server's message). */
63
+ export declare function instructionError(operation: BatchOperation, instruction: string): string | null;
64
+ /**
65
+ * The request for estimate, preview and create. "Apply automatically" never
66
+ * publishes (the server refuses it), so it always sends `draft`.
67
+ */
68
+ export declare function batchRequest(draft: BatchDraft): BatchAiRequest;
69
+ /**
70
+ * The fields that change which documents match, or what the AI writes. An
71
+ * estimate or preview is stale once its key differs from the draft's.
72
+ */
73
+ export declare function estimateKey(request: BatchAiRequest): string;
74
+ export declare function previewKey(request: BatchAiRequest): string;
75
+ /** Why step 2 can't continue: nothing matches, or more than a batch holds. Null when it can. */
76
+ export declare function matchProblem(estimate: BatchAiEstimate): string | null;
77
+ /** The estimate tiles: "~42 min" and "~38k tokens", as the kit rounds them. */
78
+ export declare function estimateTiles(estimate: BatchAiEstimate): {
79
+ minutes: string;
80
+ tokens: string;
81
+ };
82
+ /** The line under the tiles. The limit sentence is left out when Settings → AI sets none. */
83
+ export declare function estimateNote(estimate: BatchAiEstimate): string;
84
+ //# sourceMappingURL=batch-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-wizard.d.ts","sourceRoot":"","sources":["../../src/lib/batch-wizard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9C,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAA;IACV,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,YAAY,EAAE,WAAqD,CAAA;AAEhF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAID,eAAO,MAAM,eAAe,OAAO,CAAA;AAInC;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAIhF,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAEnD;AASD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,CAY3D;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEpE;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAE9D;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,cAAc,GAAG,IAAI,GAC/B,OAAO,CAGT;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,cAAc,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,gBAAgB,CAAA;IACvB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,WAAW,GAAG,KAAK,CAAA;IACjC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;IACzB,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;CACjC;AAOD,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAY9D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAO3D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAE1D;AAED,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAMrE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAK5F;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAM9D"}
@@ -0,0 +1,122 @@
1
+ import { JOB_OPS } from './job-view.js';
2
+ export const MEDIA_SOURCE = { id: 'media', label: 'Media library' };
3
+ /** A custom instruction needs more than 8 characters, and at most 2,000. */
4
+ const INSTRUCTION_MIN = 9;
5
+ export const INSTRUCTION_MAX = 2000;
6
+ /** The most documents one batch freezes. */
7
+ const BATCH_MAX = 1000;
8
+ /**
9
+ * The fields a custom instruction can rewrite. `field` isn't in the kit's
10
+ * contract; it's the kit's "Field you choose" (CONFLICTS.md §4, P-16).
11
+ */
12
+ export const CUSTOM_FIELDS = [
13
+ { id: 'metaDescription', label: 'Meta description' },
14
+ { id: 'seoTitle', label: 'SEO title' },
15
+ { id: 'excerpt', label: 'Excerpt' },
16
+ ];
17
+ export function batchOp(id) {
18
+ return JOB_OPS.find((op) => op.id === id) ?? JOB_OPS[0];
19
+ }
20
+ /**
21
+ * The Content select's options: the config's page and post collections, in
22
+ * config order, without hidden ones (as Settings → AI's brand voice lists
23
+ * them). The media library is added for alt text only.
24
+ */
25
+ export function batchSources(config) {
26
+ const raw = config?.collections;
27
+ if (!raw || typeof raw !== 'object')
28
+ return [];
29
+ const entries = Array.isArray(raw)
30
+ ? raw.map((c) => [c.slug ?? '', c])
31
+ : Object.entries(raw);
32
+ return entries
33
+ .filter(([key, c]) => key && (c.type === 'page' || c.type === 'post') && !c.admin?.hidden)
34
+ .map(([key, c]) => ({
35
+ id: key,
36
+ label: c.labels?.plural ?? key.charAt(0).toUpperCase() + key.slice(1),
37
+ }));
38
+ }
39
+ /** cms-core's `ADMIN_ROLES`: who may queue a batch that applies changes automatically. */
40
+ export function isAdminRole(role) {
41
+ return role === 'OWNER' || role === 'ADMIN';
42
+ }
43
+ /** Alt text runs on images; every other operation on a collection. */
44
+ export function runsOnMedia(operation) {
45
+ return operation === 'alt';
46
+ }
47
+ /** Whether an operation can run on a picked selection's source. */
48
+ export function operationFits(operation, selection) {
49
+ if (!selection)
50
+ return true;
51
+ return runsOnMedia(operation) === (selection.source === MEDIA_SOURCE.id);
52
+ }
53
+ /** The source a draft runs on: the media library for alt text, else its collection. */
54
+ function draftSource(draft) {
55
+ return runsOnMedia(draft.operation) ? MEDIA_SOURCE.id : draft.collection;
56
+ }
57
+ /** Step 1's check: a custom instruction needs more than 8 characters (the server's message). */
58
+ export function instructionError(operation, instruction) {
59
+ if (operation !== 'custom')
60
+ return null;
61
+ return instruction.trim().length < INSTRUCTION_MIN
62
+ ? 'A custom instruction needs more than 8 characters.'
63
+ : null;
64
+ }
65
+ /**
66
+ * The request for estimate, preview and create. "Apply automatically" never
67
+ * publishes (the server refuses it), so it always sends `draft`.
68
+ */
69
+ export function batchRequest(draft) {
70
+ const instruction = draft.instruction.trim();
71
+ return {
72
+ operation: draft.operation,
73
+ source: draft.selection?.source ?? draftSource(draft),
74
+ statusFilter: draft.statusFilter,
75
+ review: draft.review,
76
+ onApprove: draft.review === 'auto' ? 'draft' : draft.onApprove,
77
+ instruction: instruction || null,
78
+ ...(draft.operation === 'custom' ? { field: draft.field } : {}),
79
+ ...(draft.selection ? { filter: { documentIds: draft.selection.documentIds } } : {}),
80
+ };
81
+ }
82
+ /**
83
+ * The fields that change which documents match, or what the AI writes. An
84
+ * estimate or preview is stale once its key differs from the draft's.
85
+ */
86
+ export function estimateKey(request) {
87
+ return JSON.stringify([
88
+ request.operation,
89
+ request.source,
90
+ request.statusFilter,
91
+ request.filter?.documentIds ?? null,
92
+ ]);
93
+ }
94
+ export function previewKey(request) {
95
+ return JSON.stringify([estimateKey(request), request.instruction, request.field ?? null]);
96
+ }
97
+ /** Why step 2 can't continue: nothing matches, or more than a batch holds. Null when it can. */
98
+ export function matchProblem(estimate) {
99
+ if (estimate.count === 0)
100
+ return 'No documents match this filter.';
101
+ if (estimate.count > BATCH_MAX) {
102
+ return `This matches ${estimate.count.toLocaleString('en-US')} documents. Narrow it to ${BATCH_MAX.toLocaleString('en-US')} or fewer.`;
103
+ }
104
+ return null;
105
+ }
106
+ /** The estimate tiles: "~42 min" and "~38k tokens", as the kit rounds them. */
107
+ export function estimateTiles(estimate) {
108
+ return {
109
+ minutes: `~${estimate.minutes.toLocaleString('en-US')} min`,
110
+ tokens: `~${Math.round(estimate.tokens / 1000).toLocaleString('en-US')}k tokens`,
111
+ };
112
+ }
113
+ /** The line under the tiles. The limit sentence is left out when Settings → AI sets none. */
114
+ export function estimateNote(estimate) {
115
+ const pace = 'One document per slice, about one a minute.';
116
+ const pct = estimate.pctOfMonthlyLimit;
117
+ if (pct === null)
118
+ return pace;
119
+ const share = pct === 0 && estimate.tokens > 0 ? 'under 1' : String(pct);
120
+ return `${pace} That’s ${share}% of this month’s AI limit.`;
121
+ }
122
+ //# sourceMappingURL=batch-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-wizard.js","sourceRoot":"","sources":["../../src/lib/batch-wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Site chrome API (DATA_CONTRACTS §2) for Appearance → Header & Footer.
3
+ * Region values and the announcement come with an `ETag`; a save sends it as
4
+ * `If-Match`, so a stale form gets 412 instead of overwriting a newer save.
5
+ */
6
+ import type { Announcement, ChromeOverridesList, ChromeRegionName, ChromeSettings, ChromeSyncStatus, RegionSchema, RegionValues } from '@prenta/core';
7
+ export interface ChromeSchemaView {
8
+ regions: RegionSchema[];
9
+ sync: ChromeSyncStatus;
10
+ }
11
+ /** A result the screen can show: the value, or why there isn't one. */
12
+ export type ChromeResult<T> = {
13
+ ok: true;
14
+ value: T;
15
+ etag: string | null;
16
+ } | {
17
+ ok: false;
18
+ status: number;
19
+ error: string;
20
+ };
21
+ export declare function fetchChromeSchema(): Promise<ChromeResult<ChromeSchemaView>>;
22
+ /** 404 until the site has pushed the region's schema. */
23
+ export declare function fetchRegion(region: ChromeRegionName): Promise<ChromeResult<RegionValues>>;
24
+ /** What `PUT /chrome/:region` takes. `fields` replaces every saved value. */
25
+ export interface RegionSaveBody {
26
+ variant: string;
27
+ fields: Record<string, unknown>;
28
+ }
29
+ export declare function saveRegion(region: ChromeRegionName, body: RegionSaveBody, etag: string | null): Promise<ChromeResult<RegionValues>>;
30
+ /** "Remove now" on the orphan row. */
31
+ export declare function removeOrphan(region: ChromeRegionName, key: string): Promise<ChromeResult<RegionValues>>;
32
+ export declare function fetchAnnouncement(): Promise<ChromeResult<Announcement>>;
33
+ /** What `PUT /chrome/announcement` takes. The server mints `id`. */
34
+ export type AnnouncementSaveBody = Omit<Announcement, 'id'>;
35
+ export declare function saveAnnouncement(body: AnnouncementSaveBody, etag: string | null): Promise<ChromeResult<Announcement>>;
36
+ export declare function fetchChromeSettings(): Promise<ChromeResult<ChromeSettings>>;
37
+ /**
38
+ * Saves the keys sent; one left out stays as it is. `secret` comes back once,
39
+ * when the save creates the revalidate webhook.
40
+ */
41
+ export declare function saveChromeSettings(body: Partial<ChromeSettings>): Promise<ChromeResult<ChromeSettings & {
42
+ secret?: string;
43
+ }>>;
44
+ /** The pages whose `_layout` overrides a region. A core before 8.11 answers 404. */
45
+ export declare function fetchChromeOverrides(): Promise<ChromeResult<ChromeOverridesList>>;
46
+ /** A menu item as the form and the preview mock read it. */
47
+ export interface ChromeMenuItem {
48
+ id: string;
49
+ label: string;
50
+ url: string;
51
+ target?: '_blank' | '_self';
52
+ /** Shown as a button (the kit's "Show as button"). */
53
+ button: boolean;
54
+ children: ChromeMenuItem[];
55
+ }
56
+ /** A menu a menu field can pick, by its slug. */
57
+ export interface ChromeMenuOption {
58
+ slug: string;
59
+ name: string;
60
+ items: ChromeMenuItem[];
61
+ }
62
+ /**
63
+ * Menus from the navigation plugin's `navigations` collection. Without the
64
+ * plugin there are none, and menu fields offer only what's saved.
65
+ */
66
+ export declare function fetchChromeMenus(): Promise<ChromeMenuOption[]>;
67
+ /** The site title, for brand fields and the preview's logo. */
68
+ export declare function fetchSiteTitle(): Promise<string | null>;
69
+ //# sourceMappingURL=chrome-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-service.d.ts","sourceRoot":"","sources":["../../src/lib/chrome-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { cmsApi } from './api.js';
2
+ function result(res) {
3
+ if (res.error !== undefined || res.data === undefined) {
4
+ return { ok: false, status: res.status, error: res.error ?? 'Request failed' };
5
+ }
6
+ return { ok: true, value: res.data, etag: res.etag ?? null };
7
+ }
8
+ function ifMatch(etag) {
9
+ return etag ? { 'If-Match': etag } : {};
10
+ }
11
+ export async function fetchChromeSchema() {
12
+ return result(await cmsApi('/chrome/schema'));
13
+ }
14
+ /** 404 until the site has pushed the region's schema. */
15
+ export async function fetchRegion(region) {
16
+ return result(await cmsApi(`/chrome/${region}`));
17
+ }
18
+ export async function saveRegion(region, body, etag) {
19
+ return result(await cmsApi(`/chrome/${region}`, {
20
+ method: 'PUT',
21
+ headers: ifMatch(etag),
22
+ body: JSON.stringify(body),
23
+ }));
24
+ }
25
+ /** "Remove now" on the orphan row. */
26
+ export async function removeOrphan(region, key) {
27
+ return result(await cmsApi(`/chrome/${region}/orphans/${encodeURIComponent(key)}`, {
28
+ method: 'DELETE',
29
+ }));
30
+ }
31
+ export async function fetchAnnouncement() {
32
+ return result(await cmsApi('/chrome/announcement'));
33
+ }
34
+ export async function saveAnnouncement(body, etag) {
35
+ return result(await cmsApi('/chrome/announcement', {
36
+ method: 'PUT',
37
+ headers: ifMatch(etag),
38
+ body: JSON.stringify(body),
39
+ }));
40
+ }
41
+ export async function fetchChromeSettings() {
42
+ return result(await cmsApi('/chrome/settings'));
43
+ }
44
+ /**
45
+ * Saves the keys sent; one left out stays as it is. `secret` comes back once,
46
+ * when the save creates the revalidate webhook.
47
+ */
48
+ export async function saveChromeSettings(body) {
49
+ return result(await cmsApi('/chrome/settings', {
50
+ method: 'PUT',
51
+ body: JSON.stringify(body),
52
+ }));
53
+ }
54
+ /** The pages whose `_layout` overrides a region. A core before 8.11 answers 404. */
55
+ export async function fetchChromeOverrides() {
56
+ return result(await cmsApi('/chrome/overrides'));
57
+ }
58
+ function asText(value) {
59
+ return typeof value === 'string' ? value : '';
60
+ }
61
+ function menuItems(value, depth = 0) {
62
+ if (!Array.isArray(value) || depth > 6)
63
+ return [];
64
+ const out = [];
65
+ value.forEach((raw, index) => {
66
+ if (!raw || typeof raw !== 'object')
67
+ return;
68
+ const item = raw;
69
+ const label = asText(item.label).trim();
70
+ if (!label)
71
+ return;
72
+ out.push({
73
+ id: asText(item.id) || `${depth}-${index}`,
74
+ label,
75
+ url: asText(item.url),
76
+ ...(item.target === '_blank' || item.target === '_self' ? { target: item.target } : {}),
77
+ button: item.button === true,
78
+ children: menuItems(item.children, depth + 1),
79
+ });
80
+ });
81
+ return out;
82
+ }
83
+ /**
84
+ * Menus from the navigation plugin's `navigations` collection. Without the
85
+ * plugin there are none, and menu fields offer only what's saved.
86
+ */
87
+ export async function fetchChromeMenus() {
88
+ const res = await cmsApi('/collections/navigations?pageSize=100&sort=title&order=asc&pick=name,slug,items');
89
+ const menus = [];
90
+ for (const doc of res.data?.docs ?? []) {
91
+ const data = (doc.data && typeof doc.data === 'object' ? doc.data : {});
92
+ const slug = asText(data.slug) || asText(doc.slug);
93
+ if (!slug || menus.some((menu) => menu.slug === slug))
94
+ continue;
95
+ menus.push({
96
+ slug,
97
+ name: asText(data.name) || asText(doc.title) || slug,
98
+ items: menuItems(data.items),
99
+ });
100
+ }
101
+ return menus;
102
+ }
103
+ /** The site title, for brand fields and the preview's logo. */
104
+ export async function fetchSiteTitle() {
105
+ const res = await cmsApi('/appearance');
106
+ return typeof res.data?.siteTitle === 'string' && res.data.siteTitle ? res.data.siteTitle : null;
107
+ }
108
+ //# sourceMappingURL=chrome-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-service.js","sourceRoot":"","sources":["../../src/lib/chrome-service.ts"],"names":[],"mappings":"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"}
@@ -111,10 +111,18 @@ export interface JobRow {
111
111
  items: boolean;
112
112
  /** Batch AI approval mode, for the cancel copy. Null for scans. */
113
113
  review: 'review' | 'auto' | null;
114
+ /**
115
+ * Batch AI: only an admin may retry it, because "Apply automatically" was
116
+ * chosen when it was queued. A job from `/ai/batch` (a list's bulk actions)
117
+ * also applies directly, but stores no review mode, so it isn't admin-only.
118
+ */
119
+ adminRetry: boolean;
114
120
  /** Run time of a finished job, e.g. "17 min". */
115
121
  took: string | null;
116
122
  /** Who queued it: a person, or the cron. */
117
123
  by: string;
124
+ /** The id of the person who queued it; null for a cron run. */
125
+ byId: string | null;
118
126
  /** When it was queued, e.g. "34 min ago" or "Yesterday 16:04". */
119
127
  created: string;
120
128
  }
@@ -162,6 +170,36 @@ export declare function matchJob(j: JobRow, f: JobFilter): boolean;
162
170
  export declare function countJobs(rows: JobRow[]): Record<JobFilter, number>;
163
171
  /** Whether the row shows a Review button (jobs-view.jsx row actions). */
164
172
  export declare function hasReviewAction(j: JobRow): boolean;
173
+ /** "document 8" or "page 101": where a retry picks up (jobs-drawer.jsx footer, jobs-view.jsx toast). */
174
+ export declare function retryPoint(j: Pick<JobRow, 'type' | 'done'>): string;
175
+ /** Who is looking at the Jobs screen, from the admin session. */
176
+ export interface JobViewer {
177
+ role: string | null;
178
+ userId: string | null;
179
+ }
180
+ /** Run now and Cancel. An unknown role fails closed; the server checks every request anyway. */
181
+ export declare function canActOnJobs(viewer: JobViewer): boolean;
182
+ /**
183
+ * Retry, as cms-core's retry route allows it: a write role, and for a batch
184
+ * (`batchRetryDenial`) an admin, or the person who queued it when it doesn't
185
+ * apply changes directly. The server also wants their role unchanged since
186
+ * they queued it, which the list doesn't carry; it refuses that with a 403.
187
+ */
188
+ export declare function canRetryJob(j: Pick<JobRow, 'type' | 'adminRetry' | 'byId'>, viewer: JobViewer): boolean;
189
+ /** The job actions a row or the drawer footer (jobs-drawer.jsx `.jd-f`) offers this viewer. */
190
+ export interface JobActions {
191
+ /** Cancel job: while it's queued or running, until a cancel is asked for. */
192
+ cancel: boolean;
193
+ /** "Retry from document {n+1}": a failed job. */
194
+ retry: boolean;
195
+ /**
196
+ * "Retry now": a job waiting out a failed slice's backoff. Not on a stale
197
+ * lock, which the server still holds as running (the next worker run picks
198
+ * it up), and not while cancelling: a retry clears the cancel.
199
+ */
200
+ retryNow: boolean;
201
+ }
202
+ export declare function jobActions(j: JobRow, viewer: JobViewer): JobActions;
165
203
  /** "now", "34 min ago", "Today 02:30", "Yesterday 16:04", "Mon 04:00", then "12 Oct". */
166
204
  export declare function formatCreated(iso: string, now: number): string;
167
205
  /** "today 14:00", "tomorrow 00:00", then "Sun 1 Nov 00:00": a time still to come, in local time. */
@@ -178,6 +216,11 @@ export declare function scheduleLabel(cron: string): string;
178
216
  * weekday never disagrees with the label.
179
217
  */
180
218
  export declare function formatNextRun(iso: string, now: number): string;
219
+ /**
220
+ * How many units a job covers. A batch's worker sets `progress.total` on its
221
+ * first slice, so until then it's the documents frozen in its payload.
222
+ */
223
+ export declare function jobTotal(job: Job): number;
181
224
  /**
182
225
  * API jobs in the kit's row shape. `now` is when the list was fetched, so the
183
226
  * retry countdown and "34 min ago" move with each poll. `worker` aligns the