@quickchatai/quickreview 1.2.0 → 1.3.2

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 (350) hide show
  1. package/README.md +116 -53
  2. package/bin/qcr.js +1 -1
  3. package/config.example.toml +25 -7
  4. package/deploy/ansible/README.md +20 -12
  5. package/deploy/ansible/inventory.example.ini +1 -1
  6. package/deploy/collect-secrets.sh +1 -1
  7. package/deploy/qcr-update.sh +1 -1
  8. package/dist/extensions/cli/home.js +14 -0
  9. package/dist/extensions/cli/home.js.map +1 -0
  10. package/dist/extensions/cli/selfimprove.js +18 -0
  11. package/dist/extensions/cli/selfimprove.js.map +1 -0
  12. package/dist/extensions/home.js +350 -0
  13. package/dist/extensions/home.js.map +1 -0
  14. package/dist/extensions/login-route.js +1 -1
  15. package/dist/extensions/login-route.js.map +1 -1
  16. package/dist/extensions/onboarding.js +8 -7
  17. package/dist/extensions/onboarding.js.map +1 -1
  18. package/dist/extensions/selfimprove.js +49 -0
  19. package/dist/extensions/selfimprove.js.map +1 -0
  20. package/dist/extensions/setup-scan.js +23 -592
  21. package/dist/extensions/setup-scan.js.map +1 -1
  22. package/dist/extensions/setup.js +2 -47
  23. package/dist/extensions/setup.js.map +1 -1
  24. package/dist/extensions/vendor/openviking-pi/index.js +4 -0
  25. package/dist/extensions/vendor/openviking-pi/index.js.map +1 -1
  26. package/dist/extensions/vendor/openviking-pi/qcr-hooks.js +3 -1
  27. package/dist/extensions/vendor/openviking-pi/qcr-hooks.js.map +1 -1
  28. package/dist/extensions/vendor/openviking-pi/sync.js +81 -0
  29. package/dist/extensions/vendor/openviking-pi/sync.js.map +1 -1
  30. package/dist/src/archive/restore.js +18 -15
  31. package/dist/src/archive/restore.js.map +1 -1
  32. package/dist/src/botworker.js +13 -2
  33. package/dist/src/botworker.js.map +1 -1
  34. package/dist/src/channelfs.js +3 -26
  35. package/dist/src/channelfs.js.map +1 -1
  36. package/dist/src/cli.js +14 -50
  37. package/dist/src/cli.js.map +1 -1
  38. package/dist/src/config.js +16 -0
  39. package/dist/src/config.js.map +1 -1
  40. package/dist/src/daemon.js +33 -4
  41. package/dist/src/daemon.js.map +1 -1
  42. package/dist/src/debuground.js +1 -0
  43. package/dist/src/debuground.js.map +1 -1
  44. package/dist/src/debugroundpi.js +1 -0
  45. package/dist/src/debugroundpi.js.map +1 -1
  46. package/dist/src/engine/caserunner-sdk.js +15 -251
  47. package/dist/src/engine/caserunner-sdk.js.map +1 -1
  48. package/dist/src/home/adapters.js +349 -0
  49. package/dist/src/home/adapters.js.map +1 -0
  50. package/dist/src/home/advanced.js +318 -0
  51. package/dist/src/home/advanced.js.map +1 -0
  52. package/dist/src/home/advancedtools.js +57 -0
  53. package/dist/src/home/advancedtools.js.map +1 -0
  54. package/dist/src/home/autoreview.js +325 -0
  55. package/dist/src/home/autoreview.js.map +1 -0
  56. package/dist/src/home/daemonstatus.js +32 -0
  57. package/dist/src/home/daemonstatus.js.map +1 -0
  58. package/dist/src/home/devicelogin.js +61 -0
  59. package/dist/src/home/devicelogin.js.map +1 -0
  60. package/dist/src/home/launch.js +202 -0
  61. package/dist/src/home/launch.js.map +1 -0
  62. package/dist/src/home/loginowner.js +205 -0
  63. package/dist/src/home/loginowner.js.map +1 -0
  64. package/dist/src/home/memory.js +122 -0
  65. package/dist/src/home/memory.js.map +1 -0
  66. package/dist/src/home/model.js +811 -0
  67. package/dist/src/home/model.js.map +1 -0
  68. package/dist/src/home/panel.js +520 -0
  69. package/dist/src/home/panel.js.map +1 -0
  70. package/dist/src/home/ports.js +19 -0
  71. package/dist/src/home/ports.js.map +1 -0
  72. package/dist/src/home/review.js +163 -0
  73. package/dist/src/home/review.js.map +1 -0
  74. package/dist/src/home/reviews.js +478 -0
  75. package/dist/src/home/reviews.js.map +1 -0
  76. package/dist/src/home/setup.js +507 -0
  77. package/dist/src/home/setup.js.map +1 -0
  78. package/dist/src/home/setupadapters.js +214 -0
  79. package/dist/src/home/setupadapters.js.map +1 -0
  80. package/dist/src/home/setupcard.js +199 -0
  81. package/dist/src/home/setupcard.js.map +1 -0
  82. package/dist/src/home/setuptools.js +45 -0
  83. package/dist/src/home/setuptools.js.map +1 -0
  84. package/dist/src/home/spend.js +160 -0
  85. package/dist/src/home/spend.js.map +1 -0
  86. package/dist/src/home/switches.js +209 -0
  87. package/dist/src/home/switches.js.map +1 -0
  88. package/dist/src/home/switchon.js +439 -0
  89. package/dist/src/home/switchon.js.map +1 -0
  90. package/dist/src/home/toolnames.js +41 -0
  91. package/dist/src/home/toolnames.js.map +1 -0
  92. package/dist/src/home/tune.js +341 -0
  93. package/dist/src/home/tune.js.map +1 -0
  94. package/dist/src/home/words.js +7 -0
  95. package/dist/src/home/words.js.map +1 -0
  96. package/dist/src/homes.js +14 -0
  97. package/dist/src/homes.js.map +1 -1
  98. package/dist/src/install.js +1 -1
  99. package/dist/src/install.js.map +1 -1
  100. package/dist/src/ipc/workerspec.js +8 -0
  101. package/dist/src/ipc/workerspec.js.map +1 -1
  102. package/dist/src/ledgercheck.js +39 -10
  103. package/dist/src/ledgercheck.js.map +1 -1
  104. package/dist/src/live/publish.js +1 -1
  105. package/dist/src/live/publish.js.map +1 -1
  106. package/dist/src/livecli.js +1 -1
  107. package/dist/src/livecli.js.map +1 -1
  108. package/dist/src/loginrefresh/handover.js +121 -0
  109. package/dist/src/loginrefresh/handover.js.map +1 -0
  110. package/dist/src/loginrefresh/lock.js +54 -3
  111. package/dist/src/loginrefresh/lock.js.map +1 -1
  112. package/dist/src/loginrefresh/refresher.js +33 -5
  113. package/dist/src/loginrefresh/refresher.js.map +1 -1
  114. package/dist/src/loginrefresh/supervisor.js +18 -1
  115. package/dist/src/loginrefresh/supervisor.js.map +1 -1
  116. package/dist/src/npmverbs.js +42 -12
  117. package/dist/src/npmverbs.js.map +1 -1
  118. package/dist/src/onboard/choices.js +6 -3
  119. package/dist/src/onboard/choices.js.map +1 -1
  120. package/dist/src/onboard/engine.js +33 -292
  121. package/dist/src/onboard/engine.js.map +1 -1
  122. package/dist/src/onboard/steps/bringup.js +3 -2
  123. package/dist/src/onboard/steps/bringup.js.map +1 -1
  124. package/dist/src/onboard/steps/configfill.js +18 -7
  125. package/dist/src/onboard/steps/configfill.js.map +1 -1
  126. package/dist/src/onboard/steps/loginshare.js +213 -0
  127. package/dist/src/onboard/steps/loginshare.js.map +1 -0
  128. package/dist/src/onboard/steps/memory.js +14 -2
  129. package/dist/src/onboard/steps/memory.js.map +1 -1
  130. package/dist/src/onboard/steps/repoconfig.js +72 -0
  131. package/dist/src/onboard/steps/repoconfig.js.map +1 -0
  132. package/dist/src/onboard/toolnames.js +2 -2
  133. package/dist/src/onboard/toolnames.js.map +1 -1
  134. package/dist/src/piagentdir.js +13 -0
  135. package/dist/src/piagentdir.js.map +1 -0
  136. package/dist/src/pilogin.js +31 -16
  137. package/dist/src/pilogin.js.map +1 -1
  138. package/dist/src/qcrbin.js +16 -11
  139. package/dist/src/qcrbin.js.map +1 -1
  140. package/dist/src/reviewargs.js +122 -0
  141. package/dist/src/reviewargs.js.map +1 -0
  142. package/dist/src/reviewcli.js +7 -161
  143. package/dist/src/reviewcli.js.map +1 -1
  144. package/dist/src/reviewdetach.js +76 -11
  145. package/dist/src/reviewdetach.js.map +1 -1
  146. package/dist/src/scancli.js +39 -691
  147. package/dist/src/scancli.js.map +1 -1
  148. package/dist/src/selfimprove.js +66 -0
  149. package/dist/src/selfimprove.js.map +1 -0
  150. package/dist/src/session-command-supervisor.js +38 -9
  151. package/dist/src/session-command-supervisor.js.map +1 -1
  152. package/dist/src/setup/adapters.js +5 -223
  153. package/dist/src/setup/adapters.js.map +1 -1
  154. package/dist/src/setup/caserunner.js +15 -249
  155. package/dist/src/setup/caserunner.js.map +1 -1
  156. package/dist/src/setup/engine.js +32 -341
  157. package/dist/src/setup/engine.js.map +1 -1
  158. package/dist/src/setup/facts.js +3 -592
  159. package/dist/src/setup/facts.js.map +1 -1
  160. package/dist/src/setup/findings.js +3 -947
  161. package/dist/src/setup/findings.js.map +1 -1
  162. package/dist/src/setup/presentation.js +3 -8
  163. package/dist/src/setup/presentation.js.map +1 -1
  164. package/dist/src/setup/scan.js +3 -724
  165. package/dist/src/setup/scan.js.map +1 -1
  166. package/dist/src/setup/scanbuild.js +9 -92
  167. package/dist/src/setup/scanbuild.js.map +1 -1
  168. package/dist/src/setup/scanlease.js +3 -250
  169. package/dist/src/setup/scanlease.js.map +1 -1
  170. package/dist/src/setup/scanreport.js +3 -288
  171. package/dist/src/setup/scanreport.js.map +1 -1
  172. package/dist/src/setup/scanrun.js +3 -1732
  173. package/dist/src/setup/scanrun.js.map +1 -1
  174. package/dist/src/setup/scantree.js +3 -256
  175. package/dist/src/setup/scantree.js.map +1 -1
  176. package/dist/src/setup/stage2request.js +3 -258
  177. package/dist/src/setup/stage2request.js.map +1 -1
  178. package/dist/src/setup/unitcut.js +3 -436
  179. package/dist/src/setup/unitcut.js.map +1 -1
  180. package/dist/src/state.js +75 -9
  181. package/dist/src/state.js.map +1 -1
  182. package/dist/src/takeover.js +1 -0
  183. package/dist/src/takeover.js.map +1 -1
  184. package/dist/src/takeoverpi.js +2 -1
  185. package/dist/src/takeoverpi.js.map +1 -1
  186. package/dist/src/tui/alerts.js +4 -1
  187. package/dist/src/tui/alerts.js.map +1 -1
  188. package/dist/src/tui/board.js +2 -2
  189. package/dist/src/tui/board.js.map +1 -1
  190. package/dist/src/tui/companion.js +2 -1
  191. package/dist/src/tui/companion.js.map +1 -1
  192. package/dist/src/tui/deploytab.js +2 -2
  193. package/dist/src/tui/deploytab.js.map +1 -1
  194. package/dist/src/tui/index.js +9 -6
  195. package/dist/src/tui/index.js.map +1 -1
  196. package/dist/src/tui/memory.js +3 -16
  197. package/dist/src/tui/memory.js.map +1 -1
  198. package/dist/src/tui/memoryurl.js +22 -0
  199. package/dist/src/tui/memoryurl.js.map +1 -0
  200. package/dist/src/tui/remote.js +1 -1
  201. package/dist/src/tui/remote.js.map +1 -1
  202. package/dist/src/tui/route.js +2 -2
  203. package/dist/src/tui/route.js.map +1 -1
  204. package/dist/src/tui/setupstate.js +8 -5
  205. package/dist/src/tui/setupstate.js.map +1 -1
  206. package/dist/src/tui/sshtriage.js +1 -1
  207. package/dist/src/tui/sshtriage.js.map +1 -1
  208. package/dist/src/verdicts.js +12 -0
  209. package/dist/src/verdicts.js.map +1 -1
  210. package/dist/src/wire.js +9 -4
  211. package/dist/src/wire.js.map +1 -1
  212. package/dist/src/workerbreaker.js +32 -5
  213. package/dist/src/workerbreaker.js.map +1 -1
  214. package/dist/src/workerworld.js +4 -0
  215. package/dist/src/workerworld.js.map +1 -1
  216. package/docker/README.md +1 -1
  217. package/docker/entrypoint.sh +40 -6
  218. package/docker-compose.yml +16 -1
  219. package/extensions/cli/home.ts +14 -0
  220. package/extensions/cli/selfimprove.ts +18 -0
  221. package/extensions/home.ts +484 -0
  222. package/extensions/login-route.ts +1 -1
  223. package/extensions/onboarding.ts +8 -7
  224. package/extensions/selfimprove.ts +65 -0
  225. package/extensions/setup-scan.ts +79 -766
  226. package/extensions/setup.ts +14 -70
  227. package/extensions/vendor/openviking-pi/NOTICE +5 -0
  228. package/extensions/vendor/openviking-pi/README.md +39 -5
  229. package/extensions/vendor/openviking-pi/index.ts +4 -0
  230. package/extensions/vendor/openviking-pi/patches/0014-one-turn-sync-in-flight.patch +239 -0
  231. package/extensions/vendor/openviking-pi/qcr-hooks.ts +3 -1
  232. package/extensions/vendor/openviking-pi/sync.ts +80 -0
  233. package/extensions/vendor/openviking-pi/upstream.json +2 -1
  234. package/package.json +6 -4
  235. package/prompts/onboarding.md +8 -7
  236. package/schemas/review-result.v1.json +60 -0
  237. package/scripts/deploy.sh +8 -6
  238. package/scripts/qcr-host.sh +28 -5
  239. package/scripts/vm-ghcr-login.sh +7 -4
  240. package/src/archive/restore.ts +18 -21
  241. package/src/botworker.ts +13 -2
  242. package/src/channelfs.ts +3 -26
  243. package/src/cli.ts +13 -54
  244. package/src/config.ts +38 -0
  245. package/src/daemon.ts +34 -4
  246. package/src/debuground.ts +3 -0
  247. package/src/debugroundpi.ts +1 -0
  248. package/src/engine/caserunner-sdk.ts +29 -314
  249. package/src/home/adapters.ts +418 -0
  250. package/src/home/advanced.ts +421 -0
  251. package/src/home/advancedtools.ts +96 -0
  252. package/src/home/autoreview.ts +385 -0
  253. package/src/home/daemonstatus.ts +55 -0
  254. package/src/home/devicelogin.ts +107 -0
  255. package/src/home/launch.ts +257 -0
  256. package/src/home/loginowner.ts +248 -0
  257. package/src/home/memory.ts +176 -0
  258. package/src/home/model.ts +965 -0
  259. package/src/home/panel.ts +666 -0
  260. package/src/home/ports.ts +338 -0
  261. package/src/home/review.ts +206 -0
  262. package/src/home/reviews.ts +565 -0
  263. package/src/home/setup.ts +689 -0
  264. package/src/home/setupadapters.ts +217 -0
  265. package/src/home/setupcard.ts +288 -0
  266. package/src/home/setuptools.ts +57 -0
  267. package/src/home/spend.ts +194 -0
  268. package/src/home/switches.ts +293 -0
  269. package/src/home/switchon.ts +554 -0
  270. package/src/home/toolnames.ts +46 -0
  271. package/src/home/tune.ts +405 -0
  272. package/src/home/words.ts +8 -0
  273. package/src/homes.ts +17 -0
  274. package/src/install.ts +1 -1
  275. package/src/ipc/workerspec.ts +15 -0
  276. package/src/ledgercheck.ts +45 -9
  277. package/src/live/publish.ts +4 -1
  278. package/src/livecli.ts +6 -1
  279. package/src/loginrefresh/handover.ts +138 -0
  280. package/src/loginrefresh/lock.ts +72 -3
  281. package/src/loginrefresh/refresher.ts +34 -5
  282. package/src/loginrefresh/supervisor.ts +25 -2
  283. package/src/npmverbs.ts +51 -11
  284. package/src/onboard/choices.ts +6 -3
  285. package/src/onboard/engine.ts +64 -434
  286. package/src/onboard/steps/bringup.ts +3 -2
  287. package/src/onboard/steps/configfill.ts +23 -7
  288. package/src/onboard/steps/loginshare.ts +258 -0
  289. package/src/onboard/steps/memory.ts +18 -2
  290. package/src/onboard/steps/repoconfig.ts +85 -0
  291. package/src/onboard/toolnames.ts +2 -2
  292. package/src/piagentdir.ts +12 -0
  293. package/src/pilogin.ts +32 -16
  294. package/src/qcrbin.ts +16 -11
  295. package/src/reviewargs.ts +119 -0
  296. package/src/reviewcli.ts +6 -167
  297. package/src/reviewdetach.ts +107 -13
  298. package/src/scancli.ts +75 -826
  299. package/src/selfimprove.ts +90 -0
  300. package/src/session-command-supervisor.ts +41 -8
  301. package/src/setup/adapters.ts +13 -221
  302. package/src/setup/caserunner.ts +34 -273
  303. package/src/setup/engine.ts +62 -496
  304. package/src/setup/facts.ts +3 -627
  305. package/src/setup/findings.ts +3 -1264
  306. package/src/setup/presentation.ts +3 -18
  307. package/src/setup/scan.ts +3 -1033
  308. package/src/setup/scanbuild.ts +20 -114
  309. package/src/setup/scanlease.ts +3 -297
  310. package/src/setup/scanreport.ts +3 -373
  311. package/src/setup/scanrun.ts +3 -2268
  312. package/src/setup/scantree.ts +3 -259
  313. package/src/setup/stage2request.ts +3 -347
  314. package/src/setup/unitcut.ts +3 -523
  315. package/src/state.ts +126 -11
  316. package/src/takeover.ts +5 -0
  317. package/src/takeoverpi.ts +3 -2
  318. package/src/tui/alerts.ts +9 -2
  319. package/src/tui/board.ts +2 -2
  320. package/src/tui/companion.ts +2 -1
  321. package/src/tui/deploytab.ts +2 -2
  322. package/src/tui/index.ts +9 -6
  323. package/src/tui/memory.ts +3 -15
  324. package/src/tui/memoryurl.ts +22 -0
  325. package/src/tui/remote.ts +1 -1
  326. package/src/tui/route.ts +2 -2
  327. package/src/tui/setupstate.ts +20 -16
  328. package/src/tui/sshtriage.ts +1 -1
  329. package/src/verdicts.ts +13 -0
  330. package/src/wire.ts +9 -4
  331. package/src/workerbreaker.ts +41 -5
  332. package/src/workerworld.ts +9 -1
  333. package/dist/src/live/projection.js +0 -450
  334. package/dist/src/live/projection.js.map +0 -1
  335. package/dist/src/live/read.js +0 -60
  336. package/dist/src/live/read.js.map +0 -1
  337. package/dist/src/onboard/launch.js +0 -75
  338. package/dist/src/onboard/launch.js.map +0 -1
  339. package/dist/src/setup/ledger.js +0 -207
  340. package/dist/src/setup/ledger.js.map +0 -1
  341. package/dist/src/setup/stage2.js +0 -617
  342. package/dist/src/setup/stage2.js.map +0 -1
  343. package/dist/src/setup/textsniff.js +0 -89
  344. package/dist/src/setup/textsniff.js.map +0 -1
  345. package/src/live/projection.ts +0 -491
  346. package/src/live/read.ts +0 -86
  347. package/src/onboard/launch.ts +0 -103
  348. package/src/setup/ledger.ts +0 -324
  349. package/src/setup/stage2.ts +0 -926
  350. package/src/setup/textsniff.ts +0 -95
@@ -1,5 +1,6 @@
1
1
  // The real ports behind SetupEngine (the case runner is its own file,
2
- // caserunner.ts). Assembled by the companion's setup extension
2
+ // caserunner.ts; the checkout and the homes are scanfs.ts's, shared with the
3
+ // scan). Assembled by the companion's setup extension
3
4
  // (extensions/setup.ts) inside the companion container, where the reviewed
4
5
  // checkout is mounted read-only, the state home read-write and the config
5
6
  // home in part (`profiles/`, `portrait/`) (the companion boundary). Tests use
@@ -10,232 +11,13 @@
10
11
  // checkout lists null, a missing token file answers a refusal, and nothing
11
12
  // here throws into a tool call except the state port's "exists but cannot be
12
13
  // read", which the engine turns into a reported, write-refusing problem.
13
- import { execFileSync } from "node:child_process";
14
- import { randomBytes } from "node:crypto";
15
- import { lstatSync, mkdirSync, readdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
16
- import { dirname, isAbsolute, join, normalize, relative, sep } from "node:path";
14
+ import { readFileSync } from "node:fs";
17
15
  import { OV_REVIEWER_USER } from "../memory/ovsession.js";
18
16
  import { OpenVikingClient } from "../openviking/client.js";
19
17
  import { openVikingStore } from "../openviking/store.js";
20
18
  import { EXPIRES_VAR, TOKEN_VAR } from "../tui/ghread.js";
21
- import { isBinaryContent, textLineCount } from "./textsniff.js";
22
- /** Files over this are not read for facts or counted line by line — a
23
- * generated dump says nothing about a repo's conventions. */
24
- export const MAX_READ_BYTES = 1024 * 1024;
25
- /** Directories a walk never descends (the git-less fallback only). */
26
- const WALK_SKIP = new Set([
27
- ".git",
28
- "node_modules",
29
- ".venv",
30
- "venv",
31
- "__pycache__",
32
- "dist",
33
- "build",
34
- ]);
35
- /** Does `back` (a `relative(root, …)`) stay under the root? A parent
36
- * traversal is the `..` COMPONENT, never a name that merely begins with two
37
- * dots — a tracked `..fixtures/a.ts` is an ordinary in-root file. The scan's
38
- * tree reader holds the same rule. */
39
- export function inRoot(back) {
40
- return back !== "" && back !== ".." && !back.startsWith(`..${sep}`) && !isAbsolute(back);
41
- }
42
- function inside(root, rel) {
43
- if (isAbsolute(rel))
44
- return null;
45
- const full = normalize(join(root, rel));
46
- return inRoot(relative(root, full)) ? full : null;
47
- }
48
- /**
49
- * The reviewed checkout. Listing is `git ls-files` — what the repo tracks,
50
- * so ignored build output never counts as the repo — with a plain walk as
51
- * the fallback for a tree git cannot read (no `.git`, or a mount git calls
52
- * "dubious ownership" despite the `safe.directory` override).
53
- */
54
- export function checkoutReader(root) {
55
- const git = (args) => {
56
- try {
57
- return execFileSync("git", ["-c", `safe.directory=${root}`, "-C", root, ...args], {
58
- encoding: "utf8",
59
- maxBuffer: 256 * 1024 * 1024,
60
- stdio: ["ignore", "pipe", "ignore"],
61
- });
62
- }
63
- catch {
64
- return null;
65
- }
66
- };
67
- // A directory it cannot list makes the whole listing unknown (null), never
68
- // a shorter one that reads as complete. A directory symlink is not
69
- // descended (a link back up would list the tree forever, one out of the
70
- // root lists another tree); a file symlink is listed like git lists it, and
71
- // `read` decides whether its target is inside.
72
- const walk = () => {
73
- const out = [];
74
- const visit = (dir) => {
75
- let names;
76
- try {
77
- names = readdirSync(dir);
78
- }
79
- catch {
80
- return false;
81
- }
82
- for (const name of names) {
83
- if (WALK_SKIP.has(name))
84
- continue;
85
- const full = join(dir, name);
86
- let st;
87
- try {
88
- const l = lstatSync(full);
89
- if (l.isDirectory()) {
90
- if (!visit(full))
91
- return false;
92
- continue;
93
- }
94
- st = l.isSymbolicLink() ? statSync(full) : l;
95
- }
96
- catch (err) {
97
- if (err.code !== "ENOENT")
98
- return false;
99
- continue; // a dangling link names no file
100
- }
101
- if (st.isFile())
102
- out.push(relative(root, full).split(sep).join("/"));
103
- }
104
- return true;
105
- };
106
- try {
107
- if (!statSync(root).isDirectory())
108
- return null;
109
- }
110
- catch {
111
- return null;
112
- }
113
- return visit(root) ? out : null;
114
- };
115
- // The checkout's own resolved path, for the symlink check below; a root
116
- // that cannot be resolved reads nothing.
117
- let realRoot;
118
- const resolvedRoot = () => {
119
- if (realRoot === undefined) {
120
- try {
121
- realRoot = realpathSync(root);
122
- }
123
- catch {
124
- realRoot = null;
125
- }
126
- }
127
- return realRoot;
128
- };
129
- const readText = (rel) => {
130
- const full = inside(root, rel);
131
- if (full === null)
132
- return null;
133
- try {
134
- // The lexical check above cannot see a symlink: a tracked link to a
135
- // file outside the checkout is not the checkout's content.
136
- const top = resolvedRoot();
137
- if (top === null || !inRoot(relative(top, realpathSync(full))))
138
- return null;
139
- const st = statSync(full);
140
- if (!st.isFile() || st.size > MAX_READ_BYTES)
141
- return null;
142
- const buf = readFileSync(full);
143
- if (isBinaryContent(buf, rel))
144
- return null; // binary — one stray NUL is not
145
- return buf.toString("utf8");
146
- }
147
- catch {
148
- return null;
149
- }
150
- };
151
- return {
152
- location: root,
153
- listFiles: () => {
154
- const listed = git(["ls-files", "-z"]);
155
- if (listed !== null)
156
- return listed.split("\0").filter((p) => p !== "");
157
- return walk();
158
- },
159
- read: readText,
160
- lines: (rel) => {
161
- const text = readText(rel);
162
- if (text === null)
163
- return null;
164
- return textLineCount(text);
165
- },
166
- head: () => git(["rev-parse", "HEAD"])?.trim() || null,
167
- changeCounts: () => {
168
- // Six months, bounded twice over: a busy repo's whole history is not
169
- // what "most-changed" means, and the listing must stay cheap.
170
- const log = git([
171
- "log",
172
- "--since=6.months",
173
- "--no-merges",
174
- "-n",
175
- String(CHANGE_LOG_COMMITS),
176
- "--name-only",
177
- "-z",
178
- "--format=",
179
- ]);
180
- if (log === null)
181
- return null;
182
- const counts = {};
183
- for (const p of log.split("\0")) {
184
- if (p !== "")
185
- counts[p] = (counts[p] ?? 0) + 1;
186
- }
187
- return counts;
188
- },
189
- };
190
- }
191
- /** The most commits the "most-changed" count walks. */
192
- export const CHANGE_LOG_COMMITS = 2000;
193
- /** The state home as a rooted filesystem: relative paths only, never out of
194
- * the root, every write tmp+rename atomic. */
195
- export function stateHomeFs(root) {
196
- return homeFs(root, "state home");
197
- }
198
- /** The config home, the same way (the portrait narrative). In the
199
- * companion only parts of it are mounted, so its callers write only under a
200
- * mounted directory. */
201
- export function configHomeFs(root) {
202
- return homeFs(root, "config home");
203
- }
204
- function homeFs(root, what) {
205
- const resolve = (rel) => {
206
- const full = inside(root, rel);
207
- if (full === null)
208
- throw new Error(`path ${JSON.stringify(rel)} leaves the ${what}`);
209
- return full;
210
- };
211
- return {
212
- location: root,
213
- read: (rel) => {
214
- const full = resolve(rel);
215
- try {
216
- return readFileSync(full, "utf8");
217
- }
218
- catch (err) {
219
- if (err.code === "ENOENT")
220
- return null;
221
- throw err;
222
- }
223
- },
224
- write: (rel, text) => {
225
- const full = resolve(rel);
226
- mkdirSync(dirname(full), { recursive: true });
227
- const tmp = join(dirname(full), `.${full.split("/").at(-1)}.${process.pid}.${randomBytes(6).toString("hex")}.tmp`);
228
- try {
229
- writeFileSync(tmp, text);
230
- renameSync(tmp, full);
231
- }
232
- catch (err) {
233
- rmSync(tmp, { force: true });
234
- throw err;
235
- }
236
- },
237
- };
238
- }
19
+ // The checkout and home filesystems are the scan's own (scanfs.ts).
20
+ export { CHANGE_LOG_COMMITS, MAX_READ_BYTES, checkoutReader, configHomeFs, inRoot, stateHomeFs, } from "@quickchatai/pi-quickreview/src/scan/scanfs.js";
239
21
  /**
240
22
  * GitHub through the companion's read-only token file (`src/tui/ghread.ts`
241
23
  * writes it host-side). GET only — the method is not a
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../src/setup/adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../src/setup/adapters.ts"],"names":[],"mappings":"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"}
@@ -10,35 +10,13 @@
10
10
  // (root rule 9: no new session kind, nothing on the VM).
11
11
  import { CASE_STOP_GRACE_MS } from "@quickchatai/pi-quickreview/src/casebudget.js";
12
12
  import { spawn as nodeSpawn } from "node:child_process";
13
- import { appendFileSync, existsSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync, } from "node:fs";
13
+ import { appendFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync, } from "node:fs";
14
14
  import { homedir, tmpdir } from "node:os";
15
- import { dirname, join, posix, resolve } from "node:path";
16
- import { fileURLToPath } from "node:url";
17
- import { GITHUB_TOKEN_ENVS } from "@quickchatai/pi-quickreview/src/envstrip.js";
15
+ import { dirname, join, resolve } from "node:path";
18
16
  import { PI_PACKAGE, piCliPath } from "../picli.js";
19
- export function parseAgentFile(text) {
20
- const m = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(text.replace(/\r\n/g, "\n"));
21
- if (!m)
22
- return null;
23
- const fields = {};
24
- for (const line of m[1].split("\n")) {
25
- const kv = /^([A-Za-z_][\w-]*):\s*(.*)$/.exec(line);
26
- if (kv)
27
- fields[kv[1]] = kv[2].trim();
28
- }
29
- if (!fields.name)
30
- return null;
31
- return {
32
- name: fields.name,
33
- tools: (fields.tools ?? "")
34
- .replace(/^\[|\]$/g, "")
35
- .split(",")
36
- .map((t) => t.trim())
37
- .filter(Boolean),
38
- model: fields.model || null,
39
- systemPrompt: m[2].trim(),
40
- };
41
- }
17
+ import { STDERR_TAIL_CHARS, TRANSCRIPT_RUNS_KEPT, caseReadout as readoutIn, leafEnv as leafEnvOf, parseAgentFile, pruneTranscripts, resolvedReadPath as readPathIn, stderrExcerpt, transcriptFile, } from "@quickchatai/pi-quickreview/src/scan/caseread.js";
18
+ export { parseAgentFile } from "@quickchatai/pi-quickreview/src/scan/caseread.js";
19
+ export { FILE_READ_TOOLS, TRANSCRIPT_RUNS_KEPT, pruneTranscripts, readPathOf, readSucceeded, stderrExcerpt, transcriptFile, } from "@quickchatai/pi-quickreview/src/scan/caseread.js";
42
20
  /** The package names pi's CLI ships under. VERIFY-ON-PIN (0.87.1, re-read at 0.99.1): the
43
21
  * pinned package is `@earendil-works/pi-coding-agent` (package.json `pi`
44
22
  * block); the legacy `@mariozechner` scope is what older installs carry. */
@@ -103,233 +81,21 @@ export function piInvocation(host = {
103
81
  }
104
82
  return { command: host.execPath, prefix: [(host.piCli ?? piCliPath)()] };
105
83
  }
106
- /** The tools whose `path` argument names content the model read. `find` and
107
- * `ls` list names and read no content, so they are not reads. */
108
- export const FILE_READ_TOOLS = ["read", "grep"];
109
- /** The path a `tool_execution_start` event says the model asked to read, or
110
- * null. An attempt, not a read: `piCaseRunner` credits it only once the
111
- * call's `tool_execution_end` reports success (`readSucceeded`).
112
- * VERIFY-ON-PIN (read from 0.99.1's dist: the JSON mode passes agent events
113
- * through verbatim — `tool_execution_start` carries `toolName` and `args`;
114
- * `read` and `grep` both take `path`): the event and argument spelling. */
115
- export function readPathOf(event) {
116
- if (event.type !== "tool_execution_start" || typeof event.toolName !== "string")
117
- return null;
118
- if (!FILE_READ_TOOLS.includes(event.toolName))
119
- return null;
120
- const path = event.args?.path;
121
- return typeof path === "string" && path.trim() !== "" ? path : null;
122
- }
123
- /** The id of a `tool_execution_end` that finished WITHOUT an error, or null.
124
- * A failed read (a missing file, an offset past its end) or a grep that
125
- * could not run read nothing, so its start credits no file.
126
- * VERIFY-ON-PIN (0.99.1's agent-core `tool_execution_end` carries
127
- * `toolCallId` and `isError`; the same pair is in the JSON-mode transcripts
128
- * kept by a scan at 1.0.0): the event spelling. */
129
- export function readSucceeded(event) {
130
- if (event.type !== "tool_execution_end" || typeof event.toolCallId !== "string")
131
- return null;
132
- return event.isError === false ? event.toolCallId : null;
133
- }
134
- /** The file a read of `raw` opened, for a child running in `cwd` — pi's own
135
- * resolution (`resolveToCwd`): one leading `@` stripped, `~` expanded, a
136
- * relative path taken against the child's cwd, `.`/`..` collapsed. The scan
137
- * judges what the lens opened, not how it spelled it: the child runs in the
138
- * app root, not the scanned tree, so a relative `api/x.py` opened the app
139
- * root's copy — another repository, or this checkout at HEAD — and must not
140
- * pass for a read of the tree.
141
- * VERIFY-ON-PIN (read from 0.99.1's dist/core/tools/path-utils.js
142
- * `resolveToCwd` → utils/paths `resolvePath` with `stripAtPrefix` and
143
- * `normalizeUnicodeSpaces`, `file://` URLs included): the macOS
144
- * filename variants its `resolveReadPath` also tries are not modelled — they
145
- * only differ for a path that does not exist as spelled. */
84
+ /** The file a read of `raw` opened, for a child running in `cwd`
85
+ * (caseread.ts `resolvedReadPath`), `~` taken as this process's home unless
86
+ * told otherwise. */
146
87
  export function resolvedReadPath(raw, cwd, home = homedir()) {
147
- // pi's `normalizePath` order: unicode spaces → ASCII space, one `@`
148
- // stripped, `~` expanded, a `file://` URL taken as its path.
149
- let p = raw.replace(/[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g, " ");
150
- if (p.startsWith("@"))
151
- p = p.slice(1);
152
- if (p === "~")
153
- p = home;
154
- else if (p.startsWith("~/"))
155
- p = `${home}${p.slice(1)}`;
156
- else if (/^file:\/\//.test(p)) {
157
- try {
158
- p = fileURLToPath(p);
159
- }
160
- catch {
161
- // pi would throw on it and open nothing; left as spelled, it resolves
162
- // to no focus file and is never credited.
163
- }
164
- }
165
- return posix.resolve(cwd, p);
88
+ return readPathIn(raw, cwd, home);
166
89
  }
167
- /** What one case's event stream says, fed event by event: the last assistant
168
- * text, pi's own per-message cost summed, how the model stopped, and the files
169
- * its `read`/`grep` calls opened. One reader for both hosts of a leaf — the
170
- * child process (`piCaseRunner`) and the in-process session
171
- * (src/engine/caserunner-sdk.ts) emit the same events. */
90
+ /** What one case's event stream says (caseread.ts `caseReadout`), a read's
91
+ * `~` taken as this process's home. */
172
92
  export function caseReadout(cwd, onCost) {
173
- let final = "";
174
- let cost = 0;
175
- let priced = false;
176
- let failure = null;
177
- const reads = [];
178
- // Started reads by call id, credited only when the call succeeds.
179
- const attempted = new Map();
180
- return {
181
- feed(raw) {
182
- if (typeof raw !== "object" || raw === null)
183
- return;
184
- const event = raw;
185
- const read = readPathOf(event);
186
- if (read !== null && typeof event.toolCallId === "string")
187
- attempted.set(event.toolCallId, resolvedReadPath(read, cwd));
188
- const done = readSucceeded(event);
189
- if (done !== null && attempted.has(done)) {
190
- reads.push(attempted.get(done));
191
- attempted.delete(done);
192
- }
193
- const msg = event.message;
194
- if (event.type !== "message_end" || !msg || msg.role !== "assistant")
195
- return;
196
- const usage = msg.usage;
197
- if (typeof usage?.cost?.total === "number") {
198
- cost += usage.cost.total;
199
- priced = true;
200
- try {
201
- onCost?.(cost);
202
- }
203
- catch {
204
- // A listener's fault never ends the case.
205
- }
206
- }
207
- const parts = Array.isArray(msg.content)
208
- ? msg.content
209
- : [];
210
- const text = parts
211
- .filter((p) => p.type === "text" && typeof p.text === "string")
212
- .map((p) => p.text)
213
- .join("\n");
214
- if (text.trim() !== "")
215
- final = text;
216
- if (msg.stopReason === "error" || msg.stopReason === "aborted") {
217
- failure =
218
- typeof msg.errorMessage === "string"
219
- ? msg.errorMessage
220
- : `the model stopped: ${String(msg.stopReason)}`;
221
- }
222
- else {
223
- failure = null;
224
- }
225
- },
226
- get final() {
227
- return final;
228
- },
229
- get failure() {
230
- return failure;
231
- },
232
- get reads() {
233
- return reads;
234
- },
235
- spent() {
236
- return priced ? cost : null;
237
- },
238
- };
93
+ return readoutIn(cwd, homedir(), onCost);
239
94
  }
240
- /** What a leaf's pi process may inherit, by exact name. The leaf's model runs
241
- * bash, so the process env is allowlisted rather than copied: no GitHub
242
- * credential (packages/pi-plugin/src/envstrip.ts) and nothing else of the driver's reaches it. */
243
- const LEAF_ENV_NAMES = new Set([
244
- "PATH",
245
- "HOME",
246
- "USER",
247
- "LOGNAME",
248
- "SHELL",
249
- "TERM",
250
- "TZ",
251
- "LANG",
252
- "TMPDIR",
253
- "TMP",
254
- "TEMP",
255
- "SSL_CERT_FILE",
256
- "SSL_CERT_DIR",
257
- "NODE_EXTRA_CA_CERTS",
258
- "HTTP_PROXY",
259
- "HTTPS_PROXY",
260
- "NO_PROXY",
261
- "ALL_PROXY",
262
- "http_proxy",
263
- "https_proxy",
264
- "no_proxy",
265
- "all_proxy",
266
- ]);
267
- /** …and by prefix or shape: locale (`LC_*`), XDG dirs, pi's own settings
268
- * (`PI_*`, among them `PI_CODING_AGENT_DIR`), bash-guard's locators
269
- * (`QCR_*`: install, config home, sandbox root, replay flag) and the model
270
- * providers' key variables. */
271
- const LEAF_ENV_PATTERNS = [
272
- /^LC_[A-Z_]+$/,
273
- /^XDG_[A-Z_]+$/,
274
- /^PI_[A-Z0-9_]+$/,
275
- /^QCR_[A-Z0-9_]+$/,
276
- /^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*_API_KEY$/,
277
- ];
278
- /** The env one leaf's pi starts with: `source` (the driver's) filtered to the
279
- * allowlist, the GitHub token envs always dropped, and `QCR_GITHUB_READ_ENV`
280
- * (the path of the file holding the read token) with them. */
95
+ /** The env one leaf's pi starts with (caseread.ts `leafEnv`): `source`, this
96
+ * process's env unless told otherwise, filtered to the allowlist. */
281
97
  export function leafEnv(source = process.env) {
282
- const env = {};
283
- for (const [name, value] of Object.entries(source)) {
284
- if (value === undefined)
285
- continue;
286
- if (LEAF_ENV_NAMES.has(name) || LEAF_ENV_PATTERNS.some((re) => re.test(name)))
287
- env[name] = value;
288
- }
289
- for (const k of GITHUB_TOKEN_ENVS)
290
- delete env[k];
291
- delete env["QCR_GITHUB_READ_ENV"];
292
- return env;
293
- }
294
- /** The stderr a failed case's reason is taken from: its last characters. */
295
- const STDERR_TAIL_CHARS = 4000;
296
- /** The last three lines of the last `STDERR_TAIL_CHARS` characters of a failed
297
- * leaf's stderr, joined with " / " — the excerpt a failure reason quotes. */
298
- export function stderrExcerpt(stderr) {
299
- return stderr.slice(-STDERR_TAIL_CHARS).trim().split("\n").slice(-3).join(" / ");
300
- }
301
- /** Transcript directories kept: the newest by modification time. */
302
- export const TRANSCRIPT_RUNS_KEPT = 20;
303
- /** Where a case's transcript lands under `dir`, relative to it: the case id's
304
- * first segment (the run) is the directory, the rest of it the file name —
305
- * `r3/row-2#1/validate` → `r3/row-2_1.validate.jsonl`. Every segment is
306
- * reduced to `[A-Za-z0-9._-]` and none may be `.` or `..`, so an id never
307
- * names a path outside `dir`. Pure. */
308
- export function transcriptFile(id) {
309
- const seg = (s) => {
310
- const t = s.replace(/[^A-Za-z0-9._-]/g, "_");
311
- return t === "" || /^\.+$/.test(t) ? t.replace(/\./g, "_") || "_" : t;
312
- };
313
- const parts = id.split("/").map(seg);
314
- if (parts.length === 1)
315
- return `${parts[0]}.jsonl`;
316
- return `${parts[0]}/${parts.slice(1).join(".")}.jsonl`;
317
- }
318
- /** Remove all but the newest `keep` run directories under `dir` (by
319
- * modification time, never `except`). Best effort: a transcript is evidence,
320
- * not state, and a failure here never touches a case. */
321
- export function pruneTranscripts(dir, keep, except) {
322
- try {
323
- const runs = readdirSync(dir, { withFileTypes: true })
324
- .filter((d) => d.isDirectory() && d.name !== except)
325
- .map((d) => ({ name: d.name, at: statSync(join(dir, d.name)).mtimeMs }))
326
- .sort((a, b) => b.at - a.at || b.name.localeCompare(a.name));
327
- for (const r of runs.slice(Math.max(0, keep - 1)))
328
- rmSync(join(dir, r.name), { recursive: true, force: true });
329
- }
330
- catch {
331
- // Evidence only: nothing to undo.
332
- }
98
+ return leafEnvOf(source);
333
99
  }
334
100
  /**
335
101
  * Runs a case as one background pi subagent, the way pi's own subagent
@@ -1 +1 @@
1
- {"version":3,"file":"caserunner.js","sourceRoot":"","sources":["../../../src/setup/caserunner.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6DAA6D;AAC7D,EAAE;AACF,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,yDAAyD;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYpD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,EAAE;YAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;aACxB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QAC3B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE;KAC3B,CAAC;AACJ,CAAC;AAgBD;;4EAE4E;AAC5E,MAAM,CAAC,MAAM,WAAW,GAAsB,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;AAE5F;;uEAEuE;AACvE,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACxC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAsC,CAAC;gBAC3F,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAClF,MAAM,IAAI,GACR,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;oBACzB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;oBACX,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;wBACtC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;wBACxB,CAAC,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACrB,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAAE,OAAO,KAAK,CAAC;oBACxC,IAAI,CAAC;wBACH,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;oBAC9C,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;;;;;;0JAO0J;AAC1J,MAAM,UAAU,YAAY,CAC1B,OAA8E;IAC5E,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC3B;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;iEACiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnE;;;;;2EAK2E;AAC3E,MAAM,UAAU,UAAU,CAAC,KAI1B;IACC,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAI,KAAK,CAAC,IAA8C,EAAE,IAAI,CAAC;IACzE,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;;;mDAKmD;AACnD,MAAM,UAAU,aAAa,CAAC,KAI7B;IACC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7F,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;4DAW4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAE,OAAe,OAAO,EAAE;IACjF,oEAAoE;IACpE,6DAA6D;IAC7D,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,GAAG;QAAE,CAAC,GAAG,IAAI,CAAC;SACnB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,0CAA0C;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;;0DAI0D;AAC1D,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,MAAqC;IASrC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,kEAAkE;IAClE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,OAAO;QACL,IAAI,CAAC,GAAY;YACf,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACpD,MAAM,KAAK,GAAG,GAOb,CAAC;YACF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;gBACvD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;gBACjC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO;YAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAmD,CAAC;YACtE,IAAI,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC3C,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;gBAAC,MAAM,CAAC;oBACP,0CAA0C;gBAC5C,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACtC,CAAC,CAAE,GAAG,CAAC,OAAmD;gBAC1D,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,IAAI,GAAG,KAAK;iBACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;iBAC9D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,KAAK,GAAG,IAAI,CAAC;YACrC,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC/D,OAAO;oBACL,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;wBAClC,CAAC,CAAC,GAAG,CAAC,YAAY;wBAClB,CAAC,CAAC,sBAAsB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK;YACH,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;kGAEkG;AAClG,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IAClD,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,eAAe;IACf,cAAc;IACd,qBAAqB;IACrB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,UAAU;IACV,WAAW;CACZ,CAAC,CAAC;AAEH;;;+BAG+B;AAC/B,MAAM,iBAAiB,GAAsB;IAC3C,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,yCAAyC;CAC1C,CAAC;AAEF;;8DAE8D;AAC9D,MAAM,UAAU,OAAO,CAAC,SAA4B,OAAO,CAAC,GAAG;IAC7D,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,iBAAiB;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B;6EAC6E;AAC7E,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC;;;;uCAIuC;AACvC,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED;;yDAEyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAY,EAAE,MAAc;IACxE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aACnD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aACvE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,YAAY,CAAC,IAY5B;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;IACtC,OAAO;QACL,GAAG,EAAE,KAAK,EACR,IAAc,EACd,MAAmB,EACnB,MAAqC,EACf,EAAE;YACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBACvC,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC1D,QAAQ,EAAE,CAAC;iBACZ,CAAC;YACJ,IAAI,KAAuB,CAAC;YAC5B,IAAI,CAAC;gBACH,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC3F,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;gBAC7C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,0BAA0B,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACrF,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YAE3F,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACH,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC;oBACH,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,4CAA4C,MAAM,CAAC,GAAG,CAAC,EAAE;wBACjE,QAAQ,EAAE,CAAC;qBACZ,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG;oBACX,GAAG,GAAG,CAAC,MAAM;oBACb,QAAQ;oBACR,MAAM;oBACN,IAAI;oBACJ,cAAc;oBACd,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,aAAa;oBACb,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC;oBACjE,WAAW;iBACZ,CAAC;gBACF,IAAI,KAAK,CAAC,KAAK;oBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACnD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxE,oEAAoE;gBACpE,iEAAiE;gBACjE,oBAAoB;gBACpB,IAAI,UAA8B,CAAC;gBACnC,IAAI,YAAY,GAAkB,IAAI,CAAC;gBACvC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;oBACrC,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACpC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;wBACzC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACzE,MAAM,KAAK,GAAG,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;wBAC/E,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC5C,IAAI,KAAK;4BAAE,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;wBAC9E,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;wBACvC,UAAU,GAAG,GAAG,CAAC;wBACjB,YAAY,GAAG,EAAE,CAAC;oBACpB,CAAC;oBAAC,MAAM,CAAC;wBACP,UAAU,GAAG,SAAS,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAQ,EAAE;oBACnC,IAAI,YAAY,KAAK,IAAI;wBAAE,OAAO;oBAClC,IAAI,CAAC;wBACH,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBACtC,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY,GAAG,IAAI,CAAC;wBACpB,UAAU,GAAG,SAAS,CAAC;oBACzB,CAAC;gBACH,CAAC,CAAC;gBACF,MAAM,cAAc,GAAG,CAAwB,CAAI,EAAK,EAAE,CACxD,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC;gBACtD,OAAO,MAAM,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;oBAChD,IAAI,MAAM,GAAG,EAAE,CAAC;oBAChB,IAAI,MAAM,GAAG,EAAE,CAAC;oBAChB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAQ,EAAE;wBACpC,IAAI,CAAC;4BACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjC,CAAC;wBAAC,MAAM,CAAC;4BACP,gEAAgE;wBAClE,CAAC;oBACH,CAAC,CAAC;oBACF,IAAI,KAA0B,CAAC;oBAC/B,IAAI,CAAC;wBACH,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE;4BAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;4BACb,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;4BACtB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;yBAClC,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC;4BACN,EAAE,EAAE,KAAK;4BACT,MAAM,EAAE,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;4BACjF,QAAQ,EAAE,CAAC;yBACZ,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,MAAM,IAAI,GAAG,GAAS,EAAE;wBACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACtB,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;oBACtE,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBACvD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;wBAC7C,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACnB,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;wBACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;wBAC3B,KAAK,MAAM,CAAC,IAAI,KAAK;4BAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;gCAAE,MAAM,CAAC,CAAC,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;oBACH,oEAAoE;oBACpE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;wBAC7C,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;oBAC7D,CAAC,CAAC,CAAC;oBACH,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,MAAM,MAAM,GAAG,CAAC,OAAoB,EAAQ,EAAE;wBAC5C,IAAI,OAAO;4BAAE,OAAO;wBACpB,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wBAC1C,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnC,CAAC,CAAC;oBACF,gEAAgE;oBAChE,gEAAgE;oBAChE,MAAM,KAAK,GAAG,GAAkB,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CACxB,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CACrF,CAAC;oBACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;wBACzB,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;4BAAE,MAAM,CAAC,MAAM,CAAC,CAAC;wBACzC,IAAI,MAAM,CAAC,OAAO;4BAAE,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;wBACvF,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;4BACf,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;4BACnC,OAAO,MAAM,CAAC;gCACZ,EAAE,EAAE,KAAK;gCACT,MAAM,EAAE,aAAa,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gCACrD,QAAQ,EAAE,KAAK,EAAE;6BAClB,CAAC,CAAC;wBACL,CAAC;wBACD,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;4BAC1B,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC3E,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;4BAC7B,OAAO,MAAM,CAAC;gCACZ,EAAE,EAAE,KAAK;gCACT,MAAM,EAAE,6BAA6B;gCACrC,QAAQ,EAAE,KAAK,EAAE;6BAClB,CAAC,CAAC;wBACL,MAAM,CAAC;4BACL,EAAE,EAAE,IAAI;4BACR,MAAM,EAAE,OAAO,CAAC,KAAK;4BACrB,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE;4BACzB,KAAK,EAAE,OAAO,CAAC,KAAK;yBACrB,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"caserunner.js","sourceRoot":"","sources":["../../../src/setup/caserunner.ts"],"names":[],"mappings":"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"}