@tapflowio/relay 0.28.0 → 0.29.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 (209) hide show
  1. package/dist/RelayServer.d.ts +75 -0
  2. package/dist/RelayServer.d.ts.map +1 -1
  3. package/dist/RelayServer.js +496 -49
  4. package/dist/RelayServer.js.map +1 -1
  5. package/dist/SessionManager.d.ts +41 -2
  6. package/dist/SessionManager.d.ts.map +1 -1
  7. package/dist/SessionManager.js +31 -1
  8. package/dist/SessionManager.js.map +1 -1
  9. package/dist/admission/HostBootGate.d.ts +181 -0
  10. package/dist/admission/HostBootGate.d.ts.map +1 -0
  11. package/dist/admission/HostBootGate.js +388 -0
  12. package/dist/admission/HostBootGate.js.map +1 -0
  13. package/dist/admission/capacity.d.ts +51 -0
  14. package/dist/admission/capacity.d.ts.map +1 -0
  15. package/dist/admission/capacity.js +49 -0
  16. package/dist/admission/capacity.js.map +1 -0
  17. package/dist/admission/classifyBoot.d.ts +17 -0
  18. package/dist/admission/classifyBoot.d.ts.map +1 -0
  19. package/dist/admission/classifyBoot.js +23 -0
  20. package/dist/admission/classifyBoot.js.map +1 -0
  21. package/dist/admission/hostKey.d.ts +10 -0
  22. package/dist/admission/hostKey.d.ts.map +1 -0
  23. package/dist/admission/hostKey.js +13 -0
  24. package/dist/admission/hostKey.js.map +1 -0
  25. package/dist/admission/leaseChoice.d.ts +38 -0
  26. package/dist/admission/leaseChoice.d.ts.map +1 -0
  27. package/dist/admission/leaseChoice.js +40 -0
  28. package/dist/admission/leaseChoice.js.map +1 -0
  29. package/dist/admission/settle.d.ts +35 -0
  30. package/dist/admission/settle.d.ts.map +1 -0
  31. package/dist/admission/settle.js +41 -0
  32. package/dist/admission/settle.js.map +1 -0
  33. package/dist/api/builds.d.ts.map +1 -1
  34. package/dist/api/builds.js +3 -2
  35. package/dist/api/builds.js.map +1 -1
  36. package/dist/api/profile.d.ts.map +1 -1
  37. package/dist/api/profile.js +3 -1
  38. package/dist/api/profile.js.map +1 -1
  39. package/dist/api/runs.d.ts +21 -2
  40. package/dist/api/runs.d.ts.map +1 -1
  41. package/dist/api/runs.js +181 -26
  42. package/dist/api/runs.js.map +1 -1
  43. package/dist/api/settings.d.ts.map +1 -1
  44. package/dist/api/settings.js +4 -2
  45. package/dist/api/settings.js.map +1 -1
  46. package/dist/migrations/017_flow_run_skipped.sql +34 -0
  47. package/dist/migrations/018_flow_run_service_tier.sql +6 -0
  48. package/dist/migrations/019_flow_run_device_reset.sql +7 -0
  49. package/package.json +4 -4
  50. package/public/assets/{AISessionWatch-Bxew762e.js → AISessionWatch-BSBkpTom.js} +13 -18
  51. package/public/assets/AISessionWatch-BSBkpTom.js.br +0 -0
  52. package/public/assets/AISessionWatch-BSBkpTom.js.gz +0 -0
  53. package/public/assets/{AppCenter-93hnrrdy.js → AppCenter-DD_6LQx-.js} +6 -6
  54. package/public/assets/AppCenter-DD_6LQx-.js.br +0 -0
  55. package/public/assets/AppCenter-DD_6LQx-.js.gz +0 -0
  56. package/public/assets/Default-CQ3Ae2mK.js +6 -0
  57. package/public/assets/Default-CQ3Ae2mK.js.br +0 -0
  58. package/public/assets/Default-CQ3Ae2mK.js.gz +0 -0
  59. package/public/assets/{Invite-DQBwLaOl.js → Invite-D1uNMm0-.js} +1 -1
  60. package/public/assets/Invite-D1uNMm0-.js.br +0 -0
  61. package/public/assets/Invite-D1uNMm0-.js.gz +0 -0
  62. package/public/assets/{MacResources-D4LMGxgV.js → MacResources-D2UeRbKL.js} +1 -1
  63. package/public/assets/MacResources-D2UeRbKL.js.br +0 -0
  64. package/public/assets/MacResources-D2UeRbKL.js.gz +0 -0
  65. package/public/assets/QASession-d0eOjXXo.js +81 -0
  66. package/public/assets/QASession-d0eOjXXo.js.br +0 -0
  67. package/public/assets/QASession-d0eOjXXo.js.gz +0 -0
  68. package/public/assets/{ResetPassword-inTbbral.js → ResetPassword-B-4Uyfwr.js} +1 -1
  69. package/public/assets/ResetPassword-B-4Uyfwr.js.br +0 -0
  70. package/public/assets/ResetPassword-B-4Uyfwr.js.gz +0 -0
  71. package/public/assets/RunDetail-C50RjsuM.js +16 -0
  72. package/public/assets/RunDetail-C50RjsuM.js.br +0 -0
  73. package/public/assets/RunDetail-C50RjsuM.js.gz +0 -0
  74. package/public/assets/Runs-A7RcDLgO.js +6 -0
  75. package/public/assets/Runs-A7RcDLgO.js.br +0 -0
  76. package/public/assets/Runs-A7RcDLgO.js.gz +0 -0
  77. package/public/assets/{Setup-CPa_UWpa.js → Setup-DK6TZbwh.js} +1 -1
  78. package/public/assets/Setup-DK6TZbwh.js.br +0 -0
  79. package/public/assets/Setup-DK6TZbwh.js.gz +0 -0
  80. package/public/assets/{Team-DZie8W7R.js → Team-VoGput2p.js} +3 -3
  81. package/public/assets/Team-VoGput2p.js.br +0 -0
  82. package/public/assets/Team-VoGput2p.js.gz +0 -0
  83. package/public/assets/{Tokens-u3-uRAwd.js → Tokens-qkcJgunR.js} +1 -1
  84. package/public/assets/Tokens-qkcJgunR.js.br +0 -0
  85. package/public/assets/Tokens-qkcJgunR.js.gz +0 -0
  86. package/public/assets/{aiSession-BsmDnyV1.js → aiSession-U7UqgdSb.js} +11 -16
  87. package/public/assets/aiSession-U7UqgdSb.js.br +0 -0
  88. package/public/assets/aiSession-U7UqgdSb.js.gz +0 -0
  89. package/public/assets/{alert-dialog-Bq_Ln5bp.js → alert-dialog-C0mRms8g.js} +1 -1
  90. package/public/assets/alert-dialog-C0mRms8g.js.br +0 -0
  91. package/public/assets/alert-dialog-C0mRms8g.js.gz +0 -0
  92. package/public/assets/{badge-D-bt97WR.js → badge-BjEnOmb0.js} +1 -1
  93. package/public/assets/badge-BjEnOmb0.js.br +0 -0
  94. package/public/assets/badge-BjEnOmb0.js.gz +0 -0
  95. package/public/assets/{dialog-CtzPkg0O.js → dialog-Cugbp1C4.js} +1 -1
  96. package/public/assets/dialog-Cugbp1C4.js.br +0 -0
  97. package/public/assets/dialog-Cugbp1C4.js.gz +0 -0
  98. package/public/assets/{field-hint-B774BIWK.js → field-hint-qmBa0qqN.js} +1 -1
  99. package/public/assets/field-hint-qmBa0qqN.js.br +0 -0
  100. package/public/assets/field-hint-qmBa0qqN.js.gz +0 -0
  101. package/public/assets/index-C_3Q51YJ.js +248 -0
  102. package/public/assets/index-C_3Q51YJ.js.br +0 -0
  103. package/public/assets/index-C_3Q51YJ.js.gz +0 -0
  104. package/public/assets/{index-EPyP3g9A.css → index-h2hiZ2OM.css} +1 -1
  105. package/public/assets/index-h2hiZ2OM.css.br +0 -0
  106. package/public/assets/index-h2hiZ2OM.css.gz +0 -0
  107. package/public/assets/list-view-CyM0QUaH.js +1 -0
  108. package/public/assets/list-view-CyM0QUaH.js.br +0 -0
  109. package/public/assets/list-view-CyM0QUaH.js.gz +0 -0
  110. package/public/assets/{pencil-1XSs32nb.js → pencil-DUZRZB3S.js} +2 -2
  111. package/public/assets/pencil-DUZRZB3S.js.br +0 -0
  112. package/public/assets/pencil-DUZRZB3S.js.gz +0 -0
  113. package/public/assets/{play-DCvrorIC.js → play-Z1L2Eb91.js} +2 -2
  114. package/public/assets/play-Z1L2Eb91.js.br +0 -0
  115. package/public/assets/play-Z1L2Eb91.js.gz +0 -0
  116. package/public/assets/{runs-CInQb6v1.js → runs-CFQ6M4rx.js} +1 -1
  117. package/public/assets/runs-CFQ6M4rx.js.br +0 -0
  118. package/public/assets/runs-CFQ6M4rx.js.gz +0 -0
  119. package/public/assets/{search-input-CFWgLcKA.js → search-input-B0s9mzRt.js} +2 -2
  120. package/public/assets/search-input-B0s9mzRt.js.br +0 -0
  121. package/public/assets/search-input-B0s9mzRt.js.gz +0 -0
  122. package/public/assets/{select-5ZtzWRYG.js → select-CHbE6M4S.js} +3 -3
  123. package/public/assets/select-CHbE6M4S.js.br +0 -0
  124. package/public/assets/select-CHbE6M4S.js.gz +0 -0
  125. package/public/assets/{slider-DHuMDXcP.js → slider-tyb3JvL2.js} +1 -1
  126. package/public/assets/slider-tyb3JvL2.js.br +0 -0
  127. package/public/assets/slider-tyb3JvL2.js.gz +0 -0
  128. package/public/assets/{tabs-CmgV_sSI.js → tabs-Bf7ou-eS.js} +1 -1
  129. package/public/assets/tabs-Bf7ou-eS.js.br +0 -0
  130. package/public/assets/tabs-Bf7ou-eS.js.gz +0 -0
  131. package/public/assets/{tech-label-qLodPeUI.js → tech-label-KAwM5qZ_.js} +1 -1
  132. package/public/assets/tech-label-KAwM5qZ_.js.br +0 -0
  133. package/public/assets/tech-label-KAwM5qZ_.js.gz +0 -0
  134. package/public/assets/{trash-CXjB9oU1.js → trash-HEJmY7DQ.js} +3 -3
  135. package/public/assets/trash-HEJmY7DQ.js.br +0 -0
  136. package/public/assets/trash-HEJmY7DQ.js.gz +0 -0
  137. package/public/assets/{video-CK2q3-0B.js → video-DdHH0Q0l.js} +2 -2
  138. package/public/assets/video-DdHH0Q0l.js.br +0 -0
  139. package/public/assets/video-DdHH0Q0l.js.gz +0 -0
  140. package/public/index.html +14 -2
  141. package/public/index.html.br +0 -0
  142. package/public/index.html.gz +0 -0
  143. package/public/og-image.jpg +0 -0
  144. package/public/assets/AISessionWatch-Bxew762e.js.br +0 -0
  145. package/public/assets/AISessionWatch-Bxew762e.js.gz +0 -0
  146. package/public/assets/AppCenter-93hnrrdy.js.br +0 -0
  147. package/public/assets/AppCenter-93hnrrdy.js.gz +0 -0
  148. package/public/assets/Default-BhgcUKBm.js +0 -6
  149. package/public/assets/Default-BhgcUKBm.js.br +0 -0
  150. package/public/assets/Default-BhgcUKBm.js.gz +0 -0
  151. package/public/assets/Invite-DQBwLaOl.js.br +0 -0
  152. package/public/assets/Invite-DQBwLaOl.js.gz +0 -0
  153. package/public/assets/MacResources-D4LMGxgV.js.br +0 -0
  154. package/public/assets/MacResources-D4LMGxgV.js.gz +0 -0
  155. package/public/assets/QASession-Dnuq0yrN.js +0 -81
  156. package/public/assets/QASession-Dnuq0yrN.js.br +0 -0
  157. package/public/assets/QASession-Dnuq0yrN.js.gz +0 -0
  158. package/public/assets/ResetPassword-inTbbral.js.br +0 -0
  159. package/public/assets/ResetPassword-inTbbral.js.gz +0 -0
  160. package/public/assets/RunDetail-B3dw8_U0.js +0 -16
  161. package/public/assets/RunDetail-B3dw8_U0.js.br +0 -0
  162. package/public/assets/RunDetail-B3dw8_U0.js.gz +0 -0
  163. package/public/assets/Runs-DqZl9Y6M.js +0 -6
  164. package/public/assets/Runs-DqZl9Y6M.js.br +0 -0
  165. package/public/assets/Runs-DqZl9Y6M.js.gz +0 -0
  166. package/public/assets/Setup-CPa_UWpa.js.br +0 -0
  167. package/public/assets/Setup-CPa_UWpa.js.gz +0 -0
  168. package/public/assets/Team-DZie8W7R.js.br +0 -0
  169. package/public/assets/Team-DZie8W7R.js.gz +0 -0
  170. package/public/assets/Tokens-u3-uRAwd.js.br +0 -0
  171. package/public/assets/Tokens-u3-uRAwd.js.gz +0 -0
  172. package/public/assets/aiSession-BsmDnyV1.js.br +0 -0
  173. package/public/assets/aiSession-BsmDnyV1.js.gz +0 -0
  174. package/public/assets/alert-dialog-Bq_Ln5bp.js.br +0 -0
  175. package/public/assets/alert-dialog-Bq_Ln5bp.js.gz +0 -0
  176. package/public/assets/badge-D-bt97WR.js.br +0 -0
  177. package/public/assets/badge-D-bt97WR.js.gz +0 -0
  178. package/public/assets/dialog-CtzPkg0O.js.br +0 -0
  179. package/public/assets/dialog-CtzPkg0O.js.gz +0 -0
  180. package/public/assets/field-hint-B774BIWK.js.br +0 -1
  181. package/public/assets/field-hint-B774BIWK.js.gz +0 -0
  182. package/public/assets/index-EPyP3g9A.css.br +0 -0
  183. package/public/assets/index-EPyP3g9A.css.gz +0 -0
  184. package/public/assets/index-cgl1yEKu.js +0 -223
  185. package/public/assets/index-cgl1yEKu.js.br +0 -0
  186. package/public/assets/index-cgl1yEKu.js.gz +0 -0
  187. package/public/assets/list-view-BcjDCJy5.js +0 -1
  188. package/public/assets/list-view-BcjDCJy5.js.br +0 -0
  189. package/public/assets/list-view-BcjDCJy5.js.gz +0 -0
  190. package/public/assets/pencil-1XSs32nb.js.br +0 -0
  191. package/public/assets/pencil-1XSs32nb.js.gz +0 -0
  192. package/public/assets/play-DCvrorIC.js.br +0 -0
  193. package/public/assets/play-DCvrorIC.js.gz +0 -0
  194. package/public/assets/runs-CInQb6v1.js.br +0 -0
  195. package/public/assets/runs-CInQb6v1.js.gz +0 -0
  196. package/public/assets/search-input-CFWgLcKA.js.br +0 -0
  197. package/public/assets/search-input-CFWgLcKA.js.gz +0 -0
  198. package/public/assets/select-5ZtzWRYG.js.br +0 -0
  199. package/public/assets/select-5ZtzWRYG.js.gz +0 -0
  200. package/public/assets/slider-DHuMDXcP.js.br +0 -0
  201. package/public/assets/slider-DHuMDXcP.js.gz +0 -0
  202. package/public/assets/tabs-CmgV_sSI.js.br +0 -0
  203. package/public/assets/tabs-CmgV_sSI.js.gz +0 -0
  204. package/public/assets/tech-label-qLodPeUI.js.br +0 -0
  205. package/public/assets/tech-label-qLodPeUI.js.gz +0 -0
  206. package/public/assets/trash-CXjB9oU1.js.br +0 -0
  207. package/public/assets/trash-CXjB9oU1.js.gz +0 -0
  208. package/public/assets/video-CK2q3-0B.js.br +0 -0
  209. package/public/assets/video-CK2q3-0B.js.gz +0 -0
package/dist/api/runs.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { readRunResetReport, readServiceTier } from '@tapflowio/protocol/validate';
1
2
  import fs from 'fs';
2
3
  import path from 'path';
3
4
  import { randomUUID } from 'crypto';
@@ -29,6 +30,30 @@ const BUILDLESS_TTL_DAYS = 7;
29
30
  * close handler is the normal path (`abandonRunsOf`); this only catches what it could not.
30
31
  */
31
32
  const ORPHAN_GRACE_SECONDS = 60;
33
+ /**
34
+ * The flows each running run has started and not yet reported, by run id. **Memory, not the database**: which flow is
35
+ * on a device right now means something only while the runner's socket is open, and a relay restart drops that socket,
36
+ * so the run is closed as `holder-lost` within `ORPHAN_GRACE_SECONDS` anyway. A run is present from its first start
37
+ * report, even with nothing in flight, so the page can tell a runner that reports starts from one that predates them.
38
+ */
39
+ const startedFlows = new Map();
40
+ /**
41
+ * Drop the started flows of every run that is no longer running. The paths in this file forget a run as it ends, but a
42
+ * run's row can also be deleted under it — its build or app deleted, its expiry passed — by code that never calls in
43
+ * here; the daily purge sweeps those, whichever path took them.
44
+ */
45
+ export function forgetStartedFlowsOfStoppedRuns() {
46
+ if (startedFlows.size === 0)
47
+ return;
48
+ const running = getDb().prepare(`SELECT 1 FROM flow_runs WHERE id = ? AND status = 'running'`);
49
+ for (const id of startedFlows.keys())
50
+ if (!running.get(id))
51
+ startedFlows.delete(id);
52
+ }
53
+ /** How many runs have started flows held in memory, for tests of when they are let go. */
54
+ export function startedFlowRunCount() {
55
+ return startedFlows.size;
56
+ }
32
57
  /**
33
58
  * The owner keys the runner's socket can have (`ownerKeyFor` in `RelayServer`). **Two, because the socket
34
59
  * and REST disagree on loopback**: the handshake does not read a PAT from a local connection, so a runner on
@@ -130,15 +155,17 @@ export function abandonRunsOf(socketKey, holders) {
130
155
  const client = socketKey.slice(colon + 1);
131
156
  const db = getDb();
132
157
  const runs = (user === 'anon'
133
- ? db.prepare(`SELECT seq, created_by, holder_client FROM flow_runs WHERE status = 'running' AND holder_client = ?`).all(client)
134
- : db.prepare(`SELECT seq, created_by, holder_client FROM flow_runs WHERE status = 'running' AND holder_client = ? AND created_by = ?`).all(client, Number(user)));
158
+ ? db.prepare(`SELECT seq, id, created_by, holder_client FROM flow_runs WHERE status = 'running' AND holder_client = ?`).all(client)
159
+ : db.prepare(`SELECT seq, id, created_by, holder_client FROM flow_runs WHERE status = 'running' AND holder_client = ? AND created_by = ?`).all(client, Number(user)));
135
160
  if (runs.length === 0)
136
161
  return;
137
162
  const open = holders.connectedKeys();
138
163
  const stmt = db.prepare(`${ABANDON} AND seq = ?`);
139
164
  for (const r of runs) {
140
- if (!holderKeys(r.created_by, r.holder_client).some((k) => open.has(k)))
141
- stmt.run(r.seq);
165
+ if (holderKeys(r.created_by, r.holder_client).some((k) => open.has(k)))
166
+ continue;
167
+ stmt.run(r.seq);
168
+ startedFlows.delete(r.id);
142
169
  }
143
170
  }
144
171
  /**
@@ -147,7 +174,7 @@ export function abandonRunsOf(socketKey, holders) {
147
174
  */
148
175
  export function settleOrphanedRuns(holders) {
149
176
  const running = getDb().prepare(`
150
- SELECT seq, created_by, holder_client FROM flow_runs
177
+ SELECT seq, id, created_by, holder_client FROM flow_runs
151
178
  WHERE status = 'running' AND last_activity_at < datetime('now', ?)
152
179
  `).all(`-${ORPHAN_GRACE_SECONDS} seconds`);
153
180
  if (running.length === 0)
@@ -155,8 +182,10 @@ export function settleOrphanedRuns(holders) {
155
182
  const open = holders.connectedKeys();
156
183
  const stmt = getDb().prepare(`${ABANDON} AND seq = ?`);
157
184
  for (const r of running) {
158
- if (!holderKeys(r.created_by, r.holder_client).some((k) => open.has(k)))
159
- stmt.run(r.seq);
185
+ if (holderKeys(r.created_by, r.holder_client).some((k) => open.has(k)))
186
+ continue;
187
+ stmt.run(r.seq);
188
+ startedFlows.delete(r.id);
160
189
  }
161
190
  }
162
191
  // ── writes (the run's creator only) ─────────────────────────────────────────
@@ -228,15 +257,20 @@ export async function handleCreateRun(req, res) {
228
257
  }
229
258
  }
230
259
  const ci = isObj(body.ci) ? body.ci : null;
260
+ // Dropped rather than refused when it is not a tier, as `ci`'s fields are: recording never fails a run.
261
+ const serviceTier = readServiceTier(body.serviceTier);
262
+ const deviceReset = typeof body.resetRequested === 'boolean' ? { requested: body.resetRequested } : null;
231
263
  const id = randomUUID();
232
264
  getDb().prepare(`
233
265
  INSERT INTO flow_runs (id, build_id, holder_client, created_by, pat_id, is_ci, ci_provider, ci_branch, ci_commit,
234
- ci_job_url, flows_json, flows_total, delete_after)
235
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CASE WHEN ? IS NULL THEN datetime('now', ?) END)
236
- `).run(id, buildId, client, auth.userId, auth.patId ?? null, ci ? 1 : 0, ci ? str(ci.provider, 50) : null, ci ? str(ci.branch, MAX_NAME) : null, ci ? str(ci.commit, 100) : null, ci ? httpUrl(ci.jobUrl) : null, JSON.stringify(flows), flows.length, buildId, `+${BUILDLESS_TTL_DAYS} days`);
266
+ ci_job_url, service_tier_json, device_reset_json, flows_json, flows_total, delete_after)
267
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CASE WHEN ? IS NULL THEN datetime('now', ?) END)
268
+ `).run(id, buildId, client, auth.userId, auth.patId ?? null, ci ? 1 : 0, ci ? str(ci.provider, 50) : null, ci ? str(ci.branch, MAX_NAME) : null, ci ? str(ci.commit, 100) : null, ci ? httpUrl(ci.jobUrl) : null, serviceTier ? JSON.stringify(serviceTier) : null, deviceReset ? JSON.stringify(deviceReset) : null, JSON.stringify(flows), flows.length, buildId, `+${BUILDLESS_TTL_DAYS} days`);
237
269
  json(res, 201, { id });
238
270
  }
239
- const FLOW_STATUSES = new Set(['passed', 'failed']);
271
+ const FLOW_STATUSES = new Set(['passed', 'failed', 'skipped']);
272
+ /** Why the runner did not replay a flow — flow-runner's `SkipReason`. */
273
+ const SKIP_REASONS = new Set(['app-mismatch', 'tag-filter']);
240
274
  const STEP_STATUSES = new Set(['passed', 'failed', 'skipped']);
241
275
  export async function handleReportFlow(req, res, params) {
242
276
  const run = ownRun(req, res, params.id);
@@ -249,7 +283,15 @@ export async function handleReportFlow(req, res, params) {
249
283
  if (!body)
250
284
  return;
251
285
  if (typeof body.status !== 'string' || !FLOW_STATUSES.has(body.status)) {
252
- return json(res, 400, { error: 'status must be passed or failed' });
286
+ return json(res, 400, { error: 'status must be passed, failed or skipped' });
287
+ }
288
+ // The reason comes with a skip and with nothing else, so a row cannot say "passed" and give a reason it was not run.
289
+ const skipReason = body.status === 'skipped' ? body.skipReason : undefined;
290
+ if (body.status === 'skipped' && (typeof skipReason !== 'string' || !SKIP_REASONS.has(skipReason))) {
291
+ return json(res, 400, { error: 'a skipped flow needs a skipReason of app-mismatch or tag-filter' });
292
+ }
293
+ if (body.status !== 'skipped' && body.skipReason != null) {
294
+ return json(res, 400, { error: 'skipReason is only for a skipped flow' });
253
295
  }
254
296
  const durationMs = nonNegInt(body.durationMs);
255
297
  if (durationMs === null)
@@ -285,16 +327,23 @@ export async function handleReportFlow(req, res, params) {
285
327
  return 'gone';
286
328
  if (now.finished_by === 'client')
287
329
  return 'finished';
330
+ // A flow that ran cannot become one that was skipped: its screenshot would stay behind a row that says nothing
331
+ // was on screen. The runner decides skips before any flow runs, so only a confused client gets here.
332
+ if (body.status === 'skipped') {
333
+ const was = db.prepare('SELECT status FROM flow_run_flows WHERE run_seq = ? AND idx = ?').get(run.seq, idx);
334
+ if (was && was.status !== 'skipped')
335
+ return 'ran';
336
+ }
288
337
  // An upsert that keeps the screenshot: the CLI may retry a report, and the screenshot arrives separately.
289
338
  db.prepare(`
290
- INSERT INTO flow_run_flows (run_seq, idx, name, file, device_id, device_name, platform, status, failure_kind,
291
- failure_message, duration_ms, steps_json)
292
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
339
+ INSERT INTO flow_run_flows (run_seq, idx, name, file, device_id, device_name, platform, status, skip_reason,
340
+ failure_kind, failure_message, duration_ms, steps_json)
341
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
293
342
  ON CONFLICT (run_seq, idx) DO UPDATE SET
294
343
  device_id = excluded.device_id, device_name = excluded.device_name, platform = excluded.platform,
295
- status = excluded.status, failure_kind = excluded.failure_kind, failure_message = excluded.failure_message,
296
- duration_ms = excluded.duration_ms, steps_json = excluded.steps_json
297
- `).run(run.seq, idx, planned.name, planned.file, str(body.deviceId, MAX_NAME), str(body.deviceName, MAX_NAME), str(body.platform, 50), body.status, str(body.failureKind, 50), str(body.failureMessage, MAX_MESSAGE), durationMs, JSON.stringify(steps));
344
+ status = excluded.status, skip_reason = excluded.skip_reason, failure_kind = excluded.failure_kind,
345
+ failure_message = excluded.failure_message, duration_ms = excluded.duration_ms, steps_json = excluded.steps_json
346
+ `).run(run.seq, idx, planned.name, planned.file, str(body.deviceId, MAX_NAME), str(body.deviceName, MAX_NAME), str(body.platform, 50), body.status, skipReason ?? null, body.status === 'skipped' ? null : str(body.failureKind, 50), str(body.failureMessage, MAX_MESSAGE), durationMs, JSON.stringify(steps));
298
347
  db.prepare(`UPDATE flow_runs SET last_activity_at = datetime('now') WHERE seq = ?`).run(run.seq);
299
348
  return null;
300
349
  })();
@@ -302,6 +351,45 @@ export async function handleReportFlow(req, res, params) {
302
351
  return json(res, 404, { error: 'Run not found' });
303
352
  if (refusal === 'finished')
304
353
  return json(res, 409, { error: 'Run already finished' });
354
+ if (refusal === 'ran')
355
+ return json(res, 409, { error: 'This flow already ran; it cannot be reported as skipped' });
356
+ json(res, 200, { ok: true });
357
+ }
358
+ /**
359
+ * The runner started flow `idx` on a device. Without it the page could only guess the first unreported flow, which a
360
+ * run on several devices makes wrong: several flows run at once, and not in order. A start for a flow already
361
+ * reported changes nothing on the page, which reads a reported flow's row before this, so nothing here checks for one
362
+ * or forgets an entry when its flow reports; entries go with the run, and there are at most `flows_total`.
363
+ */
364
+ export async function handleStartFlow(req, res, params) {
365
+ const run = ownRun(req, res, params.id);
366
+ if (!run)
367
+ return;
368
+ const idx = Number(params.idx);
369
+ if (!Number.isInteger(idx) || idx < 0 || idx >= run.flows_total)
370
+ return json(res, 404, { error: 'No such flow in this run' });
371
+ const body = await readJsonBody(req, res);
372
+ if (!body)
373
+ return;
374
+ const sessionId = str(body.sessionId, MAX_NAME);
375
+ if (sessionId === null)
376
+ return json(res, 400, { error: 'sessionId is required' });
377
+ const db = getDb();
378
+ // Judged after the body, as the flow report is: the run may have finished or gone while it arrived.
379
+ const now = db.prepare('SELECT status FROM flow_runs WHERE seq = ?').get(run.seq);
380
+ if (!now)
381
+ return json(res, 404, { error: 'Run not found' });
382
+ // A run the relay closed (`holder-lost`) still takes the runner's reports, as `ownRun` allows, but has nothing
383
+ // running to show; `ownRun` already refused one the runner finished itself.
384
+ if (now.status === 'running') {
385
+ let started = startedFlows.get(run.id);
386
+ if (!started) {
387
+ started = new Map();
388
+ startedFlows.set(run.id, started);
389
+ }
390
+ started.set(idx, { sessionId, deviceId: str(body.deviceId, MAX_NAME), deviceName: str(body.deviceName, MAX_NAME) });
391
+ }
392
+ db.prepare(`UPDATE flow_runs SET last_activity_at = datetime('now') WHERE seq = ?`).run(run.seq);
305
393
  json(res, 200, { ok: true });
306
394
  }
307
395
  const PNG_MAGIC = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
@@ -318,9 +406,13 @@ export async function handleUploadFlowScreenshot(req, res, params, screenshotsDi
318
406
  const run = ownRun(req, res, params.id);
319
407
  if (!run)
320
408
  return;
321
- const current = getDb().prepare('SELECT screenshot_file FROM flow_run_flows WHERE run_seq = ? AND idx = ?');
322
- if (!current.get(run.seq, Number(params.idx)))
409
+ const current = getDb().prepare('SELECT screenshot_file, status FROM flow_run_flows WHERE run_seq = ? AND idx = ?');
410
+ const row = current.get(run.seq, Number(params.idx));
411
+ if (!row)
323
412
  return json(res, 404, { error: 'Report the flow before its screenshot' });
413
+ // Nothing was on a screen for a flow that never ran.
414
+ if (row.status === 'skipped')
415
+ return json(res, 409, { error: 'A skipped flow has no screenshot' });
324
416
  const buf = await readBodyLimited(req, MAX_SCREENSHOT_BYTES);
325
417
  if (buf === null)
326
418
  return json(res, 413, { error: `Screenshot larger than ${MAX_SCREENSHOT_BYTES} bytes` });
@@ -345,6 +437,49 @@ export async function handleUploadFlowScreenshot(req, res, params, screenshotsDi
345
437
  unlinkSafe(path.join(screenshotsDir, before.screenshot_file), 'run screenshot');
346
438
  json(res, 200, { ok: true });
347
439
  }
440
+ export async function handleReportDevice(req, res, params) {
441
+ const run = ownRun(req, res, params.id);
442
+ if (!run)
443
+ return;
444
+ const body = await readJsonBody(req, res);
445
+ if (!body)
446
+ return;
447
+ // A field that cannot be read is dropped rather than refused, as the create's are: recording never fails a run.
448
+ const report = readRunResetReport(body.runReset);
449
+ const cold = typeof body.cold === 'boolean' ? { cold: body.cold } : {};
450
+ const sessionId = str(body.sessionId, MAX_NAME);
451
+ const deviceId = str(body.deviceId, MAX_NAME);
452
+ const deviceName = str(body.deviceName, MAX_NAME);
453
+ const db = getDb();
454
+ // **Read inside the write, not from `run`**: that row was read before the body arrived, and the devices of a parallel
455
+ // run report at once, so merging into it would keep whichever report wrote last and lose the others.
456
+ const gone = db.transaction(() => {
457
+ const row = db.prepare('SELECT device_reset_json FROM flow_runs WHERE seq = ?').get(run.seq);
458
+ if (!row)
459
+ return true;
460
+ const before = row.device_reset_json ? JSON.parse(row.device_reset_json) : null;
461
+ const devices = [...(before?.devices ?? [])];
462
+ if (sessionId !== null) {
463
+ const device = {
464
+ sessionId, ...(deviceId !== null ? { deviceId } : {}), ...(deviceName !== null ? { deviceName } : {}), ...cold, ...(report ? { report } : {}),
465
+ };
466
+ const at = devices.findIndex((d) => d.sessionId === sessionId);
467
+ if (at >= 0)
468
+ devices[at] = device;
469
+ else
470
+ devices.push(device);
471
+ }
472
+ const first = sessionId === null || devices[0]?.sessionId === sessionId;
473
+ const next = first
474
+ ? { requested: before?.requested ?? false, booted: true, ...cold, ...(report ? { report } : {}), ...(devices.length > 0 ? { devices } : {}) }
475
+ : { ...before, devices };
476
+ db.prepare(`UPDATE flow_runs SET device_reset_json = ?, last_activity_at = datetime('now') WHERE seq = ?`).run(JSON.stringify(next), run.seq);
477
+ return false;
478
+ })();
479
+ if (gone)
480
+ return json(res, 404, { error: 'Run not found' });
481
+ json(res, 200, { ok: true });
482
+ }
348
483
  const FINAL_STATUSES = new Set(['passed', 'failed', 'aborted']);
349
484
  export async function handleFinishRun(req, res, params) {
350
485
  const run = ownRun(req, res, params.id);
@@ -375,6 +510,7 @@ export async function handleFinishRun(req, res, params) {
375
510
  ? json(res, 409, { error: 'Run already finished' })
376
511
  : json(res, 404, { error: 'Run not found' });
377
512
  }
513
+ startedFlows.delete(run.id);
378
514
  json(res, 200, { ok: true });
379
515
  }
380
516
  function buildSummary(buildId) {
@@ -408,6 +544,8 @@ function runSummary(run) {
408
544
  ci: run.is_ci === 1
409
545
  ? { provider: run.ci_provider, branch: run.ci_branch, commit: run.ci_commit, jobUrl: run.ci_job_url }
410
546
  : null,
547
+ serviceTier: run.service_tier_json ? JSON.parse(run.service_tier_json) : null,
548
+ deviceReset: run.device_reset_json ? JSON.parse(run.device_reset_json) : null,
411
549
  build: buildSummary(run.build_id),
412
550
  createdBy: creatorName(run.created_by),
413
551
  flowsTotal: run.flows_total,
@@ -467,7 +605,8 @@ export function handleListRuns(req, res, holders) {
467
605
  const sql = (conds, order) => `
468
606
  SELECT r.*,
469
607
  (SELECT COUNT(*) FROM flow_run_flows f WHERE f.run_seq = r.seq AND f.status = 'passed') AS flows_passed,
470
- (SELECT COUNT(*) FROM flow_run_flows f WHERE f.run_seq = r.seq AND f.status = 'failed') AS flows_failed
608
+ (SELECT COUNT(*) FROM flow_run_flows f WHERE f.run_seq = r.seq AND f.status = 'failed') AS flows_failed,
609
+ (SELECT COUNT(*) FROM flow_run_flows f WHERE f.run_seq = r.seq AND f.status = 'skipped') AS flows_skipped
471
610
  FROM flow_runs r
472
611
  ${conds.length ? `WHERE ${conds.join(' AND ')}` : ''}
473
612
  ORDER BY r.seq ${order}
@@ -484,7 +623,7 @@ export function handleListRuns(req, res, holders) {
484
623
  const first = page[0];
485
624
  const last = page[page.length - 1];
486
625
  json(res, 200, {
487
- items: page.map((r) => ({ ...runSummary(r), flowsPassed: r.flows_passed, flowsFailed: r.flows_failed })),
626
+ items: page.map((r) => ({ ...runSummary(r), flowsPassed: r.flows_passed, flowsFailed: r.flows_failed, flowsSkipped: r.flows_skipped })),
488
627
  nextCursor: last && exists('r.seq < ?', last.seq) ? String(last.seq) : null,
489
628
  prevCursor: first && exists('r.seq > ?', first.seq) ? String(first.seq) : null,
490
629
  });
@@ -501,13 +640,28 @@ export function handleGetRun(req, res, params, holders, videosOf = () => new Map
501
640
  .map((f) => [f.idx, f]));
502
641
  const planned = JSON.parse(run.flows_json);
503
642
  const firstUnreported = planned.findIndex((_, i) => !reported.has(i));
643
+ if (run.status !== 'running')
644
+ startedFlows.delete(run.id);
645
+ const started = startedFlows.get(run.id);
504
646
  const flows = planned.map((p, idx) => {
505
647
  const f = reported.get(idx);
506
648
  if (!f) {
507
- // Not reported yet: the first is the one running now, the rest are waiting — unless the run is over.
508
- const status = run.status !== 'running' ? 'not-run' : idx === firstUnreported ? 'running' : 'pending';
649
+ if (run.status !== 'running')
650
+ return { idx, name: p.name, file: p.file, status: 'not-run', video: videos.get(idx) ?? null };
651
+ // A runner that reports starts says which flows are on a device. One that predates them leaves a guess: the
652
+ // first unreported flow is the one running, which holds while a run replays its flows one at a time.
653
+ const on = started?.get(idx);
654
+ if (on) {
655
+ const device = { id: on.deviceId, name: on.deviceName, sessionId: on.sessionId };
656
+ return { idx, name: p.name, file: p.file, status: 'running', device, video: videos.get(idx) ?? null };
657
+ }
658
+ const status = !started && idx === firstUnreported ? 'running' : 'pending';
509
659
  return { idx, name: p.name, file: p.file, status, video: videos.get(idx) ?? null };
510
660
  }
661
+ // A skipped flow never ran, so it has no device, steps, duration or screen to report.
662
+ if (f.status === 'skipped') {
663
+ return { idx, name: f.name, file: f.file, status: f.status, skipReason: f.skip_reason, failureMessage: f.failure_message, video: videos.get(idx) ?? null };
664
+ }
511
665
  return {
512
666
  idx, name: f.name, file: f.file, status: f.status,
513
667
  device: f.device_id ? { id: f.device_id, name: f.device_name, platform: f.platform } : null,
@@ -519,8 +673,8 @@ export function handleGetRun(req, res, params, holders, videosOf = () => new Map
519
673
  });
520
674
  // The session to watch is the one the holder holds **now**, never a stored one: session ids outlive runs,
521
675
  // so a stored id would open whoever took the device next.
522
- const watchSessionId = run.status === 'running' ? holders.heldSession(holderKeys(run.created_by, run.holder_client)) : null;
523
- json(res, 200, { ...runSummary(run), flows, watchSessionId });
676
+ const watchSessionIds = run.status === 'running' ? holders.heldSessions(holderKeys(run.created_by, run.holder_client)) : [];
677
+ json(res, 200, { ...runSummary(run), flows, watchSessionId: watchSessionIds[0] ?? null, watchSessionIds });
524
678
  }
525
679
  export function handleGetFlowScreenshot(req, res, params, screenshotsDir) {
526
680
  if (!requireViewAuth(req, res))
@@ -551,6 +705,7 @@ export function handleGetFlowScreenshot(req, res, params, screenshotsDir) {
551
705
  export function purgeExpiredRuns(screenshotsDir, videosDir, holders) {
552
706
  settleOrphanedRuns(holders);
553
707
  const db = getDb();
708
+ forgetStartedFlowsOfStoppedRuns();
554
709
  const expired = db.prepare(`
555
710
  SELECT seq FROM flow_runs WHERE build_id IS NULL AND delete_after IS NOT NULL AND delete_after < datetime('now')
556
711
  `).all();
@@ -1 +1 @@
1
- {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/api/runs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,2GAA2G;AAC3G,yGAAyG;AACzG,4EAA4E;AAE5E,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;AAClC,MAAM,oBAAoB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAC5C,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,QAAQ,GAAG,GAAG,CAAA;AACpB,MAAM,WAAW,GAAG,IAAI,CAAA;AACxB,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAC7B,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,eAAe,GAAG,CAAC,CAAA;AACzB,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAC/B,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAChC,MAAM,YAAY,GAAG,EAAE,CAAA;AACvB,MAAM,QAAQ,GAAG,GAAG,CAAA;AACpB,2DAA2D;AAC3D,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAa/B;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,SAAwB,EAAE,MAAc;IACjE,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAA;AAC/F,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAA;AACpD,CAAC;AAMD,SAAS,KAAK,CAAC,CAAU;IACvB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,kFAAkF;AAClF,SAAS,GAAG,CAAC,CAAU,EAAE,GAAW;IAClC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxD,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,CAAU;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IAChC,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAChG,MAAM,GAAG,GAAsF,EAAE,CAAA;IACjG,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe;YAAE,MAAK;QACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,SAAQ;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAA;QACrH,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;YAAE,SAAQ;QAC5G,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1E,CAAC;AAED,uGAAuG;AACvG,SAAS,OAAO,CAAC,CAAU;IACzB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACtB,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC3B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;QACpB,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAyB,EAAE,GAAwB;IAC7E,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACtD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;QACzD,IAAI,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAA;IACvD,OAAO,IAAI,CAAA;AACb,CAAC;AA4CD,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAuB,CAAA;AAC9F,CAAC;AAED,+EAA+E;AAE/E,MAAM,OAAO,GAAG;;;;;4BAKY,CAAA;AAE5B;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,OAAmB;IAClE,IAAI,CAAC,QAAQ,EAAE;QAAE,OAAM;IACvB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACzC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAC3B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,qGAAqG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/H,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,wHAAwH,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAC1F,CAAA;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;IACpC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,cAAc,CAAC,CAAA;IACjD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC1F,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmB;IACpD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC;;;GAG/B,CAAC,CAAC,GAAG,CAAC,IAAI,oBAAoB,UAAU,CAAwE,CAAA;IACjH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;IACpC,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,cAAc,CAAC,CAAA;IACtD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC1F,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,MAAM,CACpB,GAAyB,EACzB,GAAwB,EACxB,EAAU;AACV;+GAC+G;AAC/G,uBAAuB,GAAG,CAAC;IAE3B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;IACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;IACrE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAA;IAChE,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC,CAAA;QAClF,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAClF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,GAAgC,EAAE,OAAe;IAC9E,IAAI,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC1D,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,OAAO,UAAU,CAAuB,CAAA;IACxI,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAyB,EAAE,GAAwB;IACvF,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI;QAAE,OAAM;IACjB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;QAAE,OAAM;IAC7C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACzC,IAAI,CAAC,IAAI;QAAE,OAAM;IAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,qCAAqC,SAAS,EAAE,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,KAAK,GAA4C,EAAE,CAAA;IACzD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAkB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACpD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAA;QAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAE,CAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,OAAO,GAAkB,IAAI,CAAA;IACjC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACxD,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3F,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1C,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;IACvB,KAAK,EAAE,CAAC,OAAO,CAAC;;;;GAIf,CAAC,CAAC,GAAG,CACJ,EAAE,EAAE,OAAO,EAAE,MAAM,EACnB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAC/B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAChC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EACpC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAC/B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,EACnC,OAAO,EAAE,IAAI,kBAAkB,OAAO,CACvC,CAAA;IACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AACnD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAE9D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAyB,EACzB,GAAwB,EACxB,MAA8B;IAE9B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAA;IAC7H,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACzC,IAAI,CAAC,IAAI;QAAE,OAAM;IAEjB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAA;IACtG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,qCAAqC,SAAS,EAAE,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,2EAA2E;IAC3E,MAAM,KAAK,GAA0I,EAAE,CAAA;IACvJ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9E,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC,CAAA;QAC5F,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACzE,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM;YACzC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;YACjC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YACxC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAA6C,CAAC,GAAG,CAAC,CAAA;IAE5F,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,wGAAwG;IACxG,iGAAiG;IACjG,0GAA0G;IAC1G,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAA+B,EAAE;QAC9D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAA+C,CAAA;QACpI,IAAI,CAAC,GAAG;YAAE,OAAO,MAAM,CAAA;QACvB,IAAI,GAAG,CAAC,WAAW,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAA;QACnD,0GAA0G;QAC1G,EAAE,CAAC,OAAO,CAAC;;;;;;;;KAQV,CAAC,CAAC,GAAG,CACJ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EACxC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EACpF,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,EAC7E,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAClC,CAAA;QACD,EAAE,CAAC,OAAO,CAAC,uEAAuE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChG,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,EAAE,CAAA;IACJ,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;IACzE,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAA;IACpF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC/E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAElD,mGAAmG;AACnG,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;IAClG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;IACrG,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAyB,EACzB,GAAwB,EACxB,MAA8B,EAC9B,cAAsB;IAEtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAA;IAC3G,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAA;IAExH,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAC5D,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0BAA0B,oBAAoB,QAAQ,EAAE,CAAC,CAAA;IAC1G,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAA;IAE7E,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC7C,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;IACrE,0GAA0G;IAC1G,2GAA2G;IAC3G,mGAAmG;IACnG,yEAAyE;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAmD,CAAA;IACzG,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,kGAAkG,CAAC;SAChI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACxD,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAA;QACjE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,MAAM,EAAE,eAAe;QAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC,CAAA;IAC5G,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAyB,EACzB,GAAwB,EACxB,MAA8B;IAE9B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACzC,IAAI,CAAC,IAAI;QAAE,OAAM;IACjB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC9E,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAA;IAClG,0GAA0G;IAC1G,uEAAuE;IACvE,8GAA8G;IAC9G,4FAA4F;IAC5F,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAK1B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;IACtG,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9B,CAAC;AAMD,SAAS,YAAY,CAAC,OAAsB;IAC1C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACjC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC;;;GAGzB,CAAC,CAAC,GAAG,CAAC,OAAO,CAA2I,CAAA;IACzJ,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC1H,CAAC;AAED,SAAS,WAAW,CAAC,MAAqB;IACxC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,MAAM,CAC9B,CAAA;IAC5D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,OAAO,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC;QACrB,EAAE,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC;YACjB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE;YACrG,CAAC,CAAC,IAAI;QACR,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAyB,EAAE,GAAwB,EAAE,OAAmB;IACrG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IACtC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAE3B,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,CAAC,CAAC,YAAY,CAAA;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAwB,EAAE,CAAA;IACpC,kHAAkH;IAClH,iHAAiH;IACjH,kHAAkH;IAClH,2FAA2F;IAC3F,MAAM,GAAG,GAA0D,EAAE,CAAA;IACrE,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,CAAC;YAAE,SAAQ;QAChB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,iCAAiC,EAAE,CAAC,CAAA;QAC5H,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAAC,CAAC;IACnF,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACtB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAAC,CAAC;IAClF,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,8GAA8G;QAC9G,qGAAqG;QACrG,sCAAsC;QACtC,KAAK,CAAC,IAAI,CAAC,oHAAoH,CAAC,CAAA;QAChI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;IAE5G,kHAAkH;IAClH,gHAAgH;IAChH,yFAAyF;IACzF,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChF,MAAM,GAAG,GAAG,CAAC,KAAe,EAAE,KAAqB,EAAE,EAAE,CAAC;;;;;OAKnD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;sBACnC,KAAK;aACd,CAAA;IAEX,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS;QAC9B,CAAC,CAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAW,CAAC,OAAO,EAAE;QAC/F,CAAC,CAAC,MAAM,KAAK,SAAS;YACpB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,CAAU;YACrF,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,CAAU,CAAA;IAE1E,sHAAsH;IACtH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE,CAAC,OAAO,CACnD,EAAE,CAAC,OAAO,CAAC,mCAAmC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CACxG,CAAA;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;QACb,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QACxG,UAAU,EAAE,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3E,UAAU,EAAE,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;KAC/E,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAAyB,EACzB,GAAwB,EACxB,MAA8B,EAC9B,OAAmB,EACnB,WAAkD,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE;IAEjE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IACtC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC9B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAE5B,MAAM,QAAQ,GAAG,IAAI,GAAG,CACrB,KAAK,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAe;SACvG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAC1B,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAA4C,CAAA;IACrF,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,qGAAqG;YACrG,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;YACrG,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QACpF,CAAC;QACD,OAAO;YACL,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;YACjD,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;YAC3F,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,WAAW;YACzF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAc;YAC5C,aAAa,EAAE,CAAC,CAAC,eAAe,KAAK,IAAI;YACzC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;SAC/B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,0GAA0G;IAC1G,0DAA0D;IAC1D,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3H,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAAyB,EACzB,GAAwB,EACxB,MAA8B,EAC9B,cAAsB;IAEtB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAM;IACtC,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC;;;GAG3B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAmF,CAAA;IACvH,IAAI,CAAC,GAAG,EAAE,eAAe;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;IAC5E,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,WAAW;QAClD,gBAAgB,EAAE,IAAI,CAAC,MAAM;QAC7B,wBAAwB,EAAE,SAAS;QACnC,eAAe,EAAE,uBAAuB;KACzC,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,+EAA+E;AAE/E,kHAAkH;AAClH,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,SAAiB,EAAE,OAAmB;IAC7F,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;GAE1B,CAAC,CAAC,GAAG,EAAuB,CAAA;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAChC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,8FAA8F,CAAC,CAAA;QACxH,oFAAoF;QACpF,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAA;QACpG,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAA;QAC7D,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAkC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;YAC9F,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAuB;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACxE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IACJ,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;IACjF,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;AAC1E,CAAC"}
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/api/runs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/api/settings.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAgBvB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAsB/G;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB,IAAI,CA6EN"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/api/settings.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAgBvB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAsB/G;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB,IAAI,CA+EN"}
@@ -100,9 +100,11 @@ export function handleUpdateSettings(req, res, uploadsDir) {
100
100
  const db = getDb();
101
101
  const updates = ['updated_at = datetime(\'now\')'];
102
102
  const params = [];
103
- if (fields.team_name) {
103
+ // Trimmed, and a blank one is skipped like an empty one: a name of only spaces showed blank in the sidebar.
104
+ const teamName = fields.team_name?.trim();
105
+ if (teamName) {
104
106
  updates.push('team_name = ?');
105
- params.push(fields.team_name);
107
+ params.push(teamName);
106
108
  }
107
109
  for (const [field, n] of videoFields) {
108
110
  updates.push(`${field} = ?`);
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/api/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/api/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ -- 017_flow_run_skipped.sql
2
+ -- A flow the runner chose not to replay is recorded as `skipped`, with why: `app-mismatch` (its appId is not the
3
+ -- build's) or `tag-filter`. The human-readable reason goes in failure_message; failure_kind stays NULL.
4
+ --
5
+ -- SQLite cannot change a CHECK constraint in place, so the table is rebuilt. Nothing references flow_run_flows
6
+ -- (videos reference flow_runs), and this runs inside the migration's transaction.
7
+
8
+ CREATE TABLE flow_run_flows_new (
9
+ run_seq INTEGER NOT NULL REFERENCES flow_runs(seq) ON DELETE CASCADE,
10
+ idx INTEGER NOT NULL,
11
+ name TEXT NOT NULL,
12
+ file TEXT,
13
+ device_id TEXT,
14
+ device_name TEXT,
15
+ platform TEXT,
16
+ status TEXT NOT NULL CHECK (status IN ('passed', 'failed', 'skipped')),
17
+ skip_reason TEXT CHECK ((status = 'skipped') = (skip_reason IS NOT NULL)),
18
+ failure_kind TEXT,
19
+ failure_message TEXT,
20
+ duration_ms INTEGER NOT NULL,
21
+ steps_json TEXT NOT NULL,
22
+ screenshot_file TEXT,
23
+ screenshot_mime TEXT,
24
+ PRIMARY KEY (run_seq, idx)
25
+ );
26
+
27
+ INSERT INTO flow_run_flows_new (run_seq, idx, name, file, device_id, device_name, platform, status, failure_kind,
28
+ failure_message, duration_ms, steps_json, screenshot_file, screenshot_mime)
29
+ SELECT run_seq, idx, name, file, device_id, device_name, platform, status, failure_kind,
30
+ failure_message, duration_ms, steps_json, screenshot_file, screenshot_mime
31
+ FROM flow_run_flows;
32
+
33
+ DROP TABLE flow_run_flows;
34
+ ALTER TABLE flow_run_flows_new RENAME TO flow_run_flows;
@@ -0,0 +1,6 @@
1
+ -- 018_flow_run_service_tier.sql
2
+ -- The service tier a run asked its device to boot with (`tapflow flow run --service-tier`), as JSON:
3
+ -- { "name": "stock" | "lean" | "slim", "keep": [...] }. NULL when the run asked for none and the device booted on its
4
+ -- agent's own setting, which is every run before this column and every run without the option. Kept because a flow
5
+ -- that fails under slim for want of a service is not the app's regression, and the record is where that is read.
6
+ ALTER TABLE flow_runs ADD COLUMN service_tier_json TEXT;
@@ -0,0 +1,7 @@
1
+ -- 019_flow_run_device_reset.sql
2
+ -- What a run's device was reset of before it ran (`tapflow flow run`, on by default, off with `--no-reset`), as JSON:
3
+ -- { "requested": bool, "cold": bool | absent, "report": { "done": [...], "failed": [...] } | absent }.
4
+ -- `requested` is written when the run is created; `cold` and `report` when its boot answers. A request with no report
5
+ -- is a reset nobody confirmed: an agent or relay that predates it drops the request without a word. NULL for every run
6
+ -- before this column and every run from a runner that predates it.
7
+ ALTER TABLE flow_runs ADD COLUMN device_reset_json TEXT;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapflowio/relay",
3
- "version": "0.28.0",
3
+ "version": "0.29.0",
4
4
  "description": "WebSocket relay server for tapflow — NAT traversal, session routing, JWT auth, bundled dashboard",
5
5
  "keywords": [
6
6
  "tapflow",
@@ -49,11 +49,11 @@
49
49
  "better-sqlite3": "^12.11.1",
50
50
  "busboy": "^1.6.0",
51
51
  "jsonwebtoken": "^9.0.3",
52
- "nodemailer": "^10.1.2",
52
+ "nodemailer": "^10.1.7",
53
53
  "ws": "^8.22.0",
54
54
  "zod": "^4.6.7",
55
- "@tapflowio/agent-core": "0.28.0",
56
- "@tapflowio/protocol": "0.28.0"
55
+ "@tapflowio/agent-core": "0.29.0",
56
+ "@tapflowio/protocol": "0.29.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/better-sqlite3": "^7.6.13",